Placefile URL readability updates

This commit is contained in:
Dan Paulat 2023-07-23 00:36:08 -05:00
parent 014ea9d39e
commit 36dd2945b0
5 changed files with 92 additions and 3 deletions

View file

@ -159,6 +159,7 @@ set(HDR_UI source/scwx/qt/ui/about_dialog.hpp
source/scwx/qt/ui/flow_layout.hpp source/scwx/qt/ui/flow_layout.hpp
source/scwx/qt/ui/imgui_debug_dialog.hpp source/scwx/qt/ui/imgui_debug_dialog.hpp
source/scwx/qt/ui/imgui_debug_widget.hpp source/scwx/qt/ui/imgui_debug_widget.hpp
source/scwx/qt/ui/left_elided_item_delegate.hpp
source/scwx/qt/ui/level2_products_widget.hpp source/scwx/qt/ui/level2_products_widget.hpp
source/scwx/qt/ui/level2_settings_widget.hpp source/scwx/qt/ui/level2_settings_widget.hpp
source/scwx/qt/ui/level3_products_widget.hpp source/scwx/qt/ui/level3_products_widget.hpp
@ -175,6 +176,7 @@ set(SRC_UI source/scwx/qt/ui/about_dialog.cpp
source/scwx/qt/ui/flow_layout.cpp source/scwx/qt/ui/flow_layout.cpp
source/scwx/qt/ui/imgui_debug_dialog.cpp source/scwx/qt/ui/imgui_debug_dialog.cpp
source/scwx/qt/ui/imgui_debug_widget.cpp source/scwx/qt/ui/imgui_debug_widget.cpp
source/scwx/qt/ui/left_elided_item_delegate.cpp
source/scwx/qt/ui/level2_products_widget.cpp source/scwx/qt/ui/level2_products_widget.cpp
source/scwx/qt/ui/level2_settings_widget.cpp source/scwx/qt/ui/level2_settings_widget.cpp
source/scwx/qt/ui/level3_products_widget.cpp source/scwx/qt/ui/level3_products_widget.cpp

View file

@ -3,6 +3,9 @@
#include <scwx/qt/types/qt_types.hpp> #include <scwx/qt/types/qt_types.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <QApplication>
#include <QFontMetrics>
namespace scwx namespace scwx
{ {
namespace qt namespace qt
@ -79,6 +82,7 @@ QVariant PlacefileModel::data(const QModelIndex& index, int role) const
const auto& placefileName = p->placefileNames_.at(index.row()); const auto& placefileName = p->placefileNames_.at(index.row());
if (role == Qt::ItemDataRole::DisplayRole || if (role == Qt::ItemDataRole::DisplayRole ||
role == Qt::ItemDataRole::ToolTipRole ||
role == types::ItemDataRole::SortRole) role == types::ItemDataRole::SortRole)
{ {
switch (index.column()) switch (index.column())
@ -152,6 +156,27 @@ QVariant PlacefileModel::headerData(int section,
} }
} }
} }
else if (role == Qt::ItemDataRole::SizeHintRole)
{
static const QFontMetrics fontMetrics(QApplication::font());
QSize contentsSize {};
switch (section)
{
case static_cast<int>(Column::Url):
contentsSize = fontMetrics.size(0, QString(15, 'W'));
break;
default:
break;
}
if (contentsSize != QSize {})
{
return contentsSize;
}
}
return QVariant(); return QVariant();
} }

View file

@ -0,0 +1,28 @@
#include <scwx/qt/ui/left_elided_item_delegate.hpp>
namespace scwx
{
namespace qt
{
namespace ui
{
LeftElidedItemDelegate::LeftElidedItemDelegate(QObject* parent) :
QStyledItemDelegate(parent)
{
}
LeftElidedItemDelegate::~LeftElidedItemDelegate() {}
void LeftElidedItemDelegate::paint(QPainter* painter,
const QStyleOptionViewItem& option,
const QModelIndex& index) const
{
QStyleOptionViewItem newOption = option;
newOption.textElideMode = Qt::TextElideMode::ElideLeft;
QStyledItemDelegate::paint(painter, newOption, index);
}
} // namespace ui
} // namespace qt
} // namespace scwx

View file

@ -0,0 +1,25 @@
#pragma once
#include <QStyledItemDelegate>
namespace scwx
{
namespace qt
{
namespace ui
{
class LeftElidedItemDelegate : public QStyledItemDelegate
{
public:
explicit LeftElidedItemDelegate(QObject* parent = nullptr);
~LeftElidedItemDelegate();
void paint(QPainter* painter,
const QStyleOptionViewItem& option,
const QModelIndex& index) const override;
};
} // namespace ui
} // namespace qt
} // namespace scwx

View file

@ -3,6 +3,7 @@
#include <scwx/qt/model/placefile_model.hpp> #include <scwx/qt/model/placefile_model.hpp>
#include <scwx/qt/types/qt_types.hpp> #include <scwx/qt/types/qt_types.hpp>
#include <scwx/qt/ui/left_elided_item_delegate.hpp>
#include <scwx/qt/ui/open_url_dialog.hpp> #include <scwx/qt/ui/open_url_dialog.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
@ -25,7 +26,8 @@ public:
self_ {self}, self_ {self},
openUrlDialog_ {new OpenUrlDialog(QObject::tr("Add Placefile"), self_)}, openUrlDialog_ {new OpenUrlDialog(QObject::tr("Add Placefile"), self_)},
placefileModel_ {new model::PlacefileModel(self_)}, placefileModel_ {new model::PlacefileModel(self_)},
placefileProxyModel_ {new QSortFilterProxyModel(self_)} placefileProxyModel_ {new QSortFilterProxyModel(self_)},
leftElidedItemDelegate_ {new LeftElidedItemDelegate(self_)}
{ {
placefileProxyModel_->setSourceModel(placefileModel_); placefileProxyModel_->setSourceModel(placefileModel_);
placefileProxyModel_->setSortRole(types::SortRole); placefileProxyModel_->setSortRole(types::SortRole);
@ -39,8 +41,9 @@ public:
PlacefileSettingsWidget* self_; PlacefileSettingsWidget* self_;
OpenUrlDialog* openUrlDialog_; OpenUrlDialog* openUrlDialog_;
model::PlacefileModel* placefileModel_; model::PlacefileModel* placefileModel_;
QSortFilterProxyModel* placefileProxyModel_; QSortFilterProxyModel* placefileProxyModel_;
LeftElidedItemDelegate* leftElidedItemDelegate_;
}; };
PlacefileSettingsWidget::PlacefileSettingsWidget(QWidget* parent) : PlacefileSettingsWidget::PlacefileSettingsWidget(QWidget* parent) :
@ -58,6 +61,12 @@ PlacefileSettingsWidget::PlacefileSettingsWidget(QWidget* parent) :
static_cast<int>(model::PlacefileModel::Column::Enabled)); static_cast<int>(model::PlacefileModel::Column::Enabled));
ui->placefileView->resizeColumnToContents( ui->placefileView->resizeColumnToContents(
static_cast<int>(model::PlacefileModel::Column::Thresholds)); static_cast<int>(model::PlacefileModel::Column::Thresholds));
ui->placefileView->resizeColumnToContents(
static_cast<int>(model::PlacefileModel::Column::Url));
ui->placefileView->setItemDelegateForColumn(
static_cast<int>(model::PlacefileModel::Column::Url),
p->leftElidedItemDelegate_);
p->ConnectSignals(); p->ConnectSignals();
} }