Krita Source Code Documentation
Loading...
Searching...
No Matches
KisRecentDocumentsModelItem Class Reference
+ Inheritance diagram for KisRecentDocumentsModelItem:

Public Member Functions

QVariant data (int role=Qt::UserRole+1) const override
 
 KisRecentDocumentsModelItem (const QUrl &url)
 
void setData (const QVariant &value, int role=Qt::UserRole+1) override
 
 ~KisRecentDocumentsModelItem () override
 

Private Attributes

QIcon m_fileIcon
 
bool m_iconFetched {false}
 
QString m_tooltip
 
QUrl m_url
 

Detailed Description

This class implements lazy-loading of file icons when used by, for example, a QListView via a QStandardItemModel. It can be used by the welcome screen to load the thumbnail icons of recent files on demand as the user scrolls through the list, thus avoiding the need to preload all icons when the user may not even look at the list.

Definition at line 26 of file KisRecentDocumentsModelWrapper.cpp.

Constructor & Destructor Documentation

◆ KisRecentDocumentsModelItem()

KisRecentDocumentsModelItem::KisRecentDocumentsModelItem ( const QUrl & url)
explicit

Definition at line 54 of file KisRecentDocumentsModelWrapper.cpp.

55 : QStandardItem(url.fileName())
56 , m_url(url)
58{
59}
static QString urlToTooltip(const QUrl &url)

◆ ~KisRecentDocumentsModelItem()

KisRecentDocumentsModelItem::~KisRecentDocumentsModelItem ( )
override

Definition at line 61 of file KisRecentDocumentsModelWrapper.cpp.

61{}

Member Function Documentation

◆ data()

QVariant KisRecentDocumentsModelItem::data ( int role = Qt::UserRole + 1) const
override

Definition at line 63 of file KisRecentDocumentsModelWrapper.cpp.

64{
65 switch (role) {
66 case Qt::DecorationRole:
67 if (!m_iconFetched) {
68 m_iconFetched = true;
69 // This lazy-loads the icon if not already cached. Once the real
70 // icon has been loaded, `KisRecentDocumentsModelItem` will be
71 // notified of the icon change and sets it to this item.
73 if (!icon.isNull()) {
74 m_fileIcon = icon;
75 }
76 }
77 if (m_fileIcon.isNull()) {
78 return KisIconUtils::loadIcon("media-floppy");
79 } else {
80 return m_fileIcon;
81 }
82 case Qt::ToolTipRole:
83 return m_tooltip;
84 case Qt::UserRole + 1:
85 return m_url;
86 }
87 return QStandardItem::data(role);
88}
QIcon getOrQueueFileIcon(const QUrl &url)
static KisRecentFileIconCache * instance()
QIcon loadIcon(const QString &name)

References KisRecentFileIconCache::getOrQueueFileIcon(), KisRecentFileIconCache::instance(), KisIconUtils::loadIcon(), m_fileIcon, m_iconFetched, m_tooltip, and m_url.

◆ setData()

void KisRecentDocumentsModelItem::setData ( const QVariant & value,
int role = Qt::UserRole + 1 )
override

Definition at line 90 of file KisRecentDocumentsModelWrapper.cpp.

91{
92 switch (role) {
93 case Qt::DecorationRole:
94 if (value.type() == (QVariant::Type)QMetaType::QIcon) {
95 // `KisRecentDocumentsModelItem` calls `setIcon` to update the
96 // file icon once it has been lazy-loaded or changed.
97 m_iconFetched = true;
98 m_fileIcon = value.value<QIcon>();
99 emitDataChanged();
100 }
101 return;
102 case Qt::ToolTipRole:
103 qWarning() << "KisRecentDocumentsModelItem::setTooltip ignored";
104 return;
105 case Qt::UserRole + 1:
106 qWarning() << "KisRecentDocumentsModelItem::setData ignored";
107 return;
108 }
109 QStandardItem::setData(value, role);
110}
float value(const T *src, size_t ch)

References m_fileIcon, m_iconFetched, and value().

Member Data Documentation

◆ m_fileIcon

QIcon KisRecentDocumentsModelItem::m_fileIcon
mutableprivate

Definition at line 30 of file KisRecentDocumentsModelWrapper.cpp.

◆ m_iconFetched

bool KisRecentDocumentsModelItem::m_iconFetched {false}
mutableprivate

Definition at line 29 of file KisRecentDocumentsModelWrapper.cpp.

29{false};

◆ m_tooltip

QString KisRecentDocumentsModelItem::m_tooltip
private

Definition at line 31 of file KisRecentDocumentsModelWrapper.cpp.

◆ m_url

QUrl KisRecentDocumentsModelItem::m_url
private

Definition at line 28 of file KisRecentDocumentsModelWrapper.cpp.


The documentation for this class was generated from the following file: