mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 03:20:05 +00:00 
			
		
		
		
	Placefile URL readability updates
This commit is contained in:
		
							parent
							
								
									014ea9d39e
								
							
						
					
					
						commit
						36dd2945b0
					
				
					 5 changed files with 92 additions and 3 deletions
				
			
		|  | @ -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 | ||||||
|  |  | ||||||
|  | @ -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(); | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										28
									
								
								scwx-qt/source/scwx/qt/ui/left_elided_item_delegate.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								scwx-qt/source/scwx/qt/ui/left_elided_item_delegate.cpp
									
										
									
									
									
										Normal 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
 | ||||||
							
								
								
									
										25
									
								
								scwx-qt/source/scwx/qt/ui/left_elided_item_delegate.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								scwx-qt/source/scwx/qt/ui/left_elided_item_delegate.hpp
									
										
									
									
									
										Normal 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
 | ||||||
|  | @ -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(); | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat