File indexing completed on 2024-05-19 07:37:37
0001 #ifndef ROUTEITEMDELEGATE_H 0002 #define ROUTEITEMDELEGATE_H 0003 0004 #include <QStyledItemDelegate> 0005 0006 class QListView; 0007 0008 namespace Marble { 0009 class CloudRouteModel; 0010 0011 class RouteItemDelegate : public QStyledItemDelegate { 0012 Q_OBJECT 0013 0014 public: 0015 RouteItemDelegate( QListView *view, CloudRouteModel *model ); 0016 0017 void paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const override; 0018 QSize sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const override; 0019 bool editorEvent(QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option, const QModelIndex& index) override; 0020 0021 0022 Q_SIGNALS: 0023 void downloadButtonClicked( const QString& timestamp ); 0024 void openButtonClicked( const QString& timestamp ); 0025 void deleteButtonClicked( const QString& timestamp ); 0026 void removeFromCacheButtonClicked( const QString& timestamp ); 0027 void uploadToCloudButtonClicked( const QString& timestamp ); 0028 0029 private: 0030 enum Element { 0031 Text, 0032 OpenButton, 0033 DownloadButton, 0034 RemoveFromCacheButton, 0035 RemoveFromCloudButton, 0036 Progressbar, 0037 Preview, 0038 UploadToCloudButton 0039 }; 0040 0041 int buttonWidth( const QStyleOptionViewItem &option ) const; 0042 QStyleOptionButton button( Element element, const QStyleOptionViewItem &option ) const; 0043 static QString text( const QModelIndex &index ); 0044 QRect position( Element element, const QStyleOptionViewItem &option ) const; 0045 0046 QListView *m_view; 0047 CloudRouteModel *m_model; 0048 mutable int m_buttonWidth; 0049 int const m_iconSize; 0050 int const m_previewSize; 0051 int const m_margin; 0052 }; 0053 0054 } 0055 0056 #endif