File indexing completed on 2024-05-05 03:49:15

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