Changeset View
Changeset View
Standalone View
Standalone View
applets/kicker/plugin/recentusagemodel.cpp
Show All 16 Lines | |||||
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * | 17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * | ||
18 | ***************************************************************************/ | 18 | ***************************************************************************/ | ||
19 | 19 | | |||
20 | #include "recentusagemodel.h" | 20 | #include "recentusagemodel.h" | ||
21 | #include "actionlist.h" | 21 | #include "actionlist.h" | ||
22 | #include "appsmodel.h" | 22 | #include "appsmodel.h" | ||
23 | #include "appentry.h" | 23 | #include "appentry.h" | ||
24 | #include "kastatsfavoritesmodel.h" | 24 | #include "kastatsfavoritesmodel.h" | ||
25 | #include <kio_version.h> | ||||
25 | 26 | | |||
26 | #include <config-X11.h> | 27 | #include <config-X11.h> | ||
27 | 28 | | |||
28 | #include <QIcon> | 29 | #include <QIcon> | ||
29 | #include <QMimeDatabase> | 30 | #include <QMimeDatabase> | ||
30 | #include <QQmlEngine> | 31 | #include <QQmlEngine> | ||
31 | #include <QTimer> | 32 | #include <QTimer> | ||
32 | #if HAVE_X11 | 33 | #if HAVE_X11 | ||
▲ Show 20 Lines • Show All 205 Lines • ▼ Show 20 Line(s) | |||||
238 | QVariant RecentUsageModel::docData(const QString &resource, int role) const | 239 | QVariant RecentUsageModel::docData(const QString &resource, int role) const | ||
239 | { | 240 | { | ||
240 | QUrl url(resource); | 241 | QUrl url(resource); | ||
241 | 242 | | |||
242 | if (url.scheme().isEmpty()) { | 243 | if (url.scheme().isEmpty()) { | ||
243 | url.setScheme(QStringLiteral("file")); | 244 | url.setScheme(QStringLiteral("file")); | ||
244 | } | 245 | } | ||
245 | 246 | | |||
247 | #if KIO_VERSION >= QT_VERSION_CHECK(5,57,0) | ||||
248 | // Avoid calling QT_LSTAT and accessing recent documents | ||||
249 | const KFileItem fileItem(url, KFileItem::SkipMimeTypeFromContent); | ||||
250 | #else | ||||
246 | const KFileItem fileItem(url); | 251 | const KFileItem fileItem(url); | ||
252 | #endif | ||||
247 | 253 | | |||
248 | if (!url.isValid() || !(fileItem.isFile() || fileItem.isDir())) { | 254 | if (!url.isValid()) { | ||
dfaure: How do you expect isFile() and isDir() to work without a QT_LSTAT call? | |||||
hoffmannrobert: A document should always be a file, so not needed. | |||||
249 | return QVariant(); | 255 | return QVariant(); | ||
250 | } | 256 | } | ||
251 | 257 | | |||
252 | if (role == Qt::DisplayRole) { | 258 | if (role == Qt::DisplayRole) { | ||
253 | return fileItem.text(); | 259 | return fileItem.text(); | ||
This looks very much like a workaround. How about adding an argument to the KFileItem to skip the stat if it's a desirable behaviour? apol: This looks very much like a workaround. How about adding an argument to the KFileItem to skip… | |||||
254 | } else if (role == Qt::DecorationRole) { | 260 | } else if (role == Qt::DecorationRole) { | ||
255 | return QIcon::fromTheme(fileItem.iconName(), QIcon::fromTheme(QStringLiteral("unknown"))); | 261 | return QIcon::fromTheme(fileItem.iconName(), QIcon::fromTheme(QStringLiteral("unknown"))); | ||
256 | } else if (role == Kicker::GroupRole) { | 262 | } else if (role == Kicker::GroupRole) { | ||
257 | return i18n("Documents"); | 263 | return i18n("Documents"); | ||
258 | } else if (role == Kicker::FavoriteIdRole || role == Kicker::UrlRole) { | 264 | } else if (role == Kicker::FavoriteIdRole || role == Kicker::UrlRole) { | ||
259 | return url.toString(); | 265 | return url.toString(); | ||
260 | } else if (role == Kicker::UrlRole) { | 266 | } else if (role == Kicker::UrlRole) { | ||
261 | return url; | 267 | return url; | ||
262 | } else if (role == Kicker::HasActionListRole) { | 268 | } else if (role == Kicker::HasActionListRole) { | ||
263 | return true; | 269 | return true; | ||
264 | } else if (role == Kicker::ActionListRole) { | 270 | } else if (role == Kicker::ActionListRole) { | ||
apol: url.isLocalFile() | |||||
265 | QVariantList actionList = Kicker::createActionListForFileItem(fileItem); | 271 | QVariantList actionList = Kicker::createActionListForFileItem(fileItem); | ||
266 | 272 | | |||
267 | actionList << Kicker::createSeparatorActionItem(); | 273 | actionList << Kicker::createSeparatorActionItem(); | ||
268 | 274 | | |||
269 | const QVariantMap &forgetAction = Kicker::createActionItem(i18n("Forget Document"), QStringLiteral("forget")); | 275 | const QVariantMap &forgetAction = Kicker::createActionItem(i18n("Forget Document"), QStringLiteral("forget")); | ||
270 | actionList << forgetAction; | 276 | actionList << forgetAction; | ||
271 | 277 | | |||
272 | const QVariantMap &forgetAllAction = Kicker::createActionItem(forgetAllActionName(), QStringLiteral("forgetAll")); | 278 | const QVariantMap &forgetAllAction = Kicker::createActionItem(forgetAllActionName(), QStringLiteral("forgetAll")); | ||
▲ Show 20 Lines • Show All 213 Lines • Show Last 20 Lines |
How do you expect isFile() and isDir() to work without a QT_LSTAT call?