X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/ae4d11d918938fd9087f2035dac247969c1f2313..af27d5735c77c825799c570151a85a230a91e8ed:/src/kitemviews/kstandarditemlistwidget.h diff --git a/src/kitemviews/kstandarditemlistwidget.h b/src/kitemviews/kstandarditemlistwidget.h index 1bd44e2f6..cb7364795 100644 --- a/src/kitemviews/kstandarditemlistwidget.h +++ b/src/kitemviews/kstandarditemlistwidget.h @@ -20,7 +20,7 @@ #ifndef KSTANDARDITEMLISTWIDGET_H #define KSTANDARDITEMLISTWIDGET_H -#include +#include "dolphin_export.h" #include @@ -32,18 +32,34 @@ class KItemListRoleEditor; class KItemListStyleOption; class KItemListView; -class LIBDOLPHINPRIVATE_EXPORT KStandardItemListWidgetInformant : public KItemListWidgetInformant +class DOLPHIN_EXPORT KStandardItemListWidgetInformant : public KItemListWidgetInformant { public: KStandardItemListWidgetInformant(); virtual ~KStandardItemListWidgetInformant(); - virtual QSizeF itemSizeHint(int index, const KItemListView* view) const; + virtual void calculateItemSizeHints(QVector& logicalHeightHints, qreal& logicalWidthHint, const KItemListView* view) const Q_DECL_OVERRIDE; virtual qreal preferredRoleColumnWidth(const QByteArray& role, int index, - const KItemListView* view) const; + const KItemListView* view) const Q_DECL_OVERRIDE; protected: + /** + * @return The value of the "text" role. The default implementation returns + * view->model()->data(index)["text"]. If a derived class can + * prevent the (possibly expensive) construction of the + * QHash returned by KItemModelBase::data(int), + * it can reimplement this function. + */ + virtual QString itemText(int index, const KItemListView* view) const; + + /** + * @return The value of the "isLink" role. The default implementation returns false. + * The derived class should reimplement this function, when information about + * links is available and in usage. + */ + virtual bool itemIsLink(int index, const KItemListView* view) const; + /** * @return String representation of the role \a role. The representation of * a role might depend on other roles, so the values of all roles @@ -52,13 +68,22 @@ protected: virtual QString roleText(const QByteArray& role, const QHash& values) const; + /** + * @return A font based on baseFont which is customized for symlinks. + */ + virtual QFont customizedFontForLinks(const QFont& baseFont) const; + + void calculateIconsLayoutItemSizeHints(QVector& logicalHeightHints, qreal& logicalWidthHint, const KItemListView* view) const; + void calculateCompactLayoutItemSizeHints(QVector& logicalHeightHints, qreal& logicalWidthHint, const KItemListView* view) const; + void calculateDetailsLayoutItemSizeHints(QVector& logicalHeightHints, qreal& logicalWidthHint, const KItemListView* view) const; + friend class KStandardItemListWidget; // Accesses roleText() }; /** * @brief Itemlist widget implementation for KStandardItemView and KStandardItemModel. */ -class LIBDOLPHINPRIVATE_EXPORT KStandardItemListWidget : public KItemListWidget +class DOLPHIN_EXPORT KStandardItemListWidget : public KItemListWidget { Q_OBJECT @@ -79,13 +104,15 @@ public: void setSupportsItemExpanding(bool supportsItemExpanding); bool supportsItemExpanding() const; - virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0); + virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0) override; - virtual QRectF iconRect() const; - virtual QRectF textRect() const; - virtual QRectF textFocusRect() const; - virtual QRectF expansionToggleRect() const; - virtual QRectF selectionToggleRect() const; + virtual QRectF iconRect() const Q_DECL_OVERRIDE; + virtual QRectF textRect() const Q_DECL_OVERRIDE; + virtual QRectF textFocusRect() const Q_DECL_OVERRIDE; + virtual QRectF selectionRect() const Q_DECL_OVERRIDE; + virtual QRectF expansionToggleRect() const Q_DECL_OVERRIDE; + virtual QRectF selectionToggleRect() const Q_DECL_OVERRIDE; + virtual QPixmap createDragPixmap(const QStyleOptionGraphicsItem* option, QWidget* widget = 0) Q_DECL_OVERRIDE; static KItemListWidgetInformant* createInformant(); @@ -108,6 +135,19 @@ protected: */ virtual bool isRoleRightAligned(const QByteArray& role) const; + /** + * @return True if the item should be visually marked as hidden item. Per default + * false is returned. + */ + virtual bool isHidden() const; + + /** + * @return A font based on baseFont which is customized according to the data shown in the widget. + */ + virtual QFont customizedFont(const QFont& baseFont) const; + + virtual QPalette::ColorRole normalTextColorRole() const; + void setTextColor(const QColor& color); QColor textColor() const; @@ -119,22 +159,39 @@ protected: */ QString roleText(const QByteArray& role, const QHash& values) const; - virtual void dataChanged(const QHash& current, const QSet& roles = QSet()); - virtual void visibleRolesChanged(const QList& current, const QList& previous); - virtual void columnWidthChanged(const QByteArray& role, qreal current, qreal previous); - virtual void styleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous); - virtual void hoveredChanged(bool hovered); - virtual void selectedChanged(bool selected); - virtual void siblingsInformationChanged(const QBitArray& current, const QBitArray& previous); - virtual void editedRoleChanged(const QByteArray& current, const QByteArray& previous); - virtual void resizeEvent(QGraphicsSceneResizeEvent* event); - virtual void showEvent(QShowEvent* event); - virtual void hideEvent(QHideEvent* event); + /** + * Fixes: + * Select the text without MIME-type extension + * This is file-item-specific and should be moved + * into KFileItemListWidget. + * + * Inherited classes can define, if the MIME-type extension + * should be selected or not. + * + * @return Selection length (with or without MIME-type extension) + */ + virtual int selectionLength(const QString& text) const; + + virtual void dataChanged(const QHash& current, const QSet& roles = QSet()) Q_DECL_OVERRIDE; + virtual void visibleRolesChanged(const QList& current, const QList& previous) Q_DECL_OVERRIDE; + virtual void columnWidthChanged(const QByteArray& role, qreal current, qreal previous) Q_DECL_OVERRIDE; + virtual void styleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous) Q_DECL_OVERRIDE; + virtual void hoveredChanged(bool hovered) Q_DECL_OVERRIDE; + virtual void selectedChanged(bool selected) Q_DECL_OVERRIDE; + virtual void siblingsInformationChanged(const QBitArray& current, const QBitArray& previous) Q_DECL_OVERRIDE; + virtual void editedRoleChanged(const QByteArray& current, const QByteArray& previous) Q_DECL_OVERRIDE; + virtual void resizeEvent(QGraphicsSceneResizeEvent* event) Q_DECL_OVERRIDE; + virtual void showEvent(QShowEvent* event) Q_DECL_OVERRIDE; + virtual void hideEvent(QHideEvent* event) Q_DECL_OVERRIDE; + bool event(QEvent *event) Q_DECL_OVERRIDE; + +public slots: + void finishRoleEditing(); private slots: void slotCutItemsChanged(); - void slotRoleEditingCanceled(int index, const QByteArray& role, const QVariant& value); - void slotRoleEditingFinished(int index, const QByteArray& role, const QVariant& value); + void slotRoleEditingCanceled(const QByteArray& role, const QVariant& value); + void slotRoleEditingFinished(const QByteArray& role, const QVariant& value); private: void triggerCacheRefreshing(); @@ -153,9 +210,13 @@ private: QRectF roleEditingRect(const QByteArray &role) const; - static QPixmap pixmapForIcon(const QString& name, int size); - static void applyCutEffect(QPixmap& pixmap); - static void applyHiddenEffect(QPixmap& pixmap); + /** + * Closes the role editor and returns the focus back + * to the KItemListContainer. + */ + void closeRoleEditor(); + + static QPixmap pixmapForIcon(const QString& name, const QStringList& overlays, int size, QIcon::Mode mode); /** * @return Preferred size of the rating-image based on the given @@ -173,6 +234,8 @@ private: private: bool m_isCut; bool m_isHidden; + QFont m_customizedFont; + QFontMetrics m_customizedFontMetrics; bool m_isExpandable; bool m_supportsItemExpanding; @@ -183,7 +246,7 @@ private: Layout m_layout; QPointF m_pixmapPos; QPixmap m_pixmap; - QSize m_scaledPixmapSize; + QSize m_scaledPixmapSize; //Size of the pixmap in device independent pixels QRectF m_iconRect; // Cache for KItemListWidget::iconRect() QPixmap m_hoverPixmap; // Cache for modified m_pixmap when hovering the item @@ -208,11 +271,10 @@ private: QPixmap m_rating; KItemListRoleEditor* m_roleEditor; + KItemListRoleEditor* m_oldRoleEditor; friend class KStandardItemListWidgetInformant; // Accesses private static methods to be able to // share a common layout calculation }; #endif - -