diff --git a/kcmkwin/kwintabbox/layoutpreview.cpp b/kcmkwin/kwintabbox/layoutpreview.cpp index 87ed1baea1..1575c4b1a2 100644 --- a/kcmkwin/kwintabbox/layoutpreview.cpp +++ b/kcmkwin/kwintabbox/layoutpreview.cpp @@ -29,7 +29,7 @@ along with this program. If not, see . #include #include #include -#include +#include namespace KWin { @@ -132,14 +132,21 @@ ExampleClientModel::~ExampleClientModel() void ExampleClientModel::init() { - QList applications; - applications << "konqbrowser" << "KMail2" << "systemsettings" << "dolphin"; - - foreach (const QString& application, applications) { - KService::Ptr service = KService::serviceByStorageId("kde4-" + application + ".desktop"); - if (service) { - m_nameList << service->entryPath(); - } + if (const auto s = KMimeTypeTrader::self()->preferredService(QStringLiteral("inode/directory"))) { + m_services << s; + m_fileManager = s; + } + if (const auto s = KMimeTypeTrader::self()->preferredService(QStringLiteral("text/html"))) { + m_services << s; + m_browser = s; + } + if (const auto s = KMimeTypeTrader::self()->preferredService(QStringLiteral("message/rfc822"))) { + m_services << s; + m_email = s; + } + if (const auto s = KService::serviceByDesktopName(QStringLiteral("kdesystemsettings"))) { + m_services << s; + m_systemSettings = s; } } @@ -151,22 +158,22 @@ QVariant ExampleClientModel::data(const QModelIndex &index, int role) const switch (role) { case Qt::DisplayRole: case Qt::UserRole: - return KDesktopFile(m_nameList.at(index.row())).readName(); + return m_services.at(index.row())->name(); case Qt::UserRole+1: return false; case Qt::UserRole+2: return i18nc("An example Desktop Name", "Desktop 1"); case Qt::UserRole+3: - return QIcon::fromTheme(KDesktopFile(m_nameList.at(index.row())).readIcon()); + return m_services.at(index.row())->icon(); case Qt::UserRole+4: - const QString desktopFile = KDesktopFile(m_nameList.at(index.row())).fileName().split('/').last(); - if (desktopFile == "konqbrowser.desktop") { + const auto s = m_services.at(index.row()); + if (s == m_browser) { return WindowThumbnailItem::Konqueror; - } else if (desktopFile == "KMail2.desktop") { + } else if (s == m_email) { return WindowThumbnailItem::KMail; - } else if (desktopFile == "systemsettings.desktop") { + } else if (s == m_systemSettings) { return WindowThumbnailItem::Systemsettings; - } else if (desktopFile == "dolphin.desktop") { + } else if (s == m_fileManager) { return WindowThumbnailItem::Dolphin; } return 0; @@ -177,8 +184,8 @@ QVariant ExampleClientModel::data(const QModelIndex &index, int role) const QString ExampleClientModel::longestCaption() const { QString caption; - for (QString item : m_nameList) { - QString name = KDesktopFile(item).readName(); + for (const auto item : m_services) { + const QString name = item->name(); if (name.size() > caption.size()) { caption = name; } @@ -189,7 +196,7 @@ QString ExampleClientModel::longestCaption() const int ExampleClientModel::rowCount(const QModelIndex &parent) const { Q_UNUSED(parent) - return m_nameList.size(); + return m_services.size(); } SwitcherItem::SwitcherItem(QObject *parent) diff --git a/kcmkwin/kwintabbox/layoutpreview.h b/kcmkwin/kwintabbox/layoutpreview.h index 8180d34589..9a7d65ef5a 100644 --- a/kcmkwin/kwintabbox/layoutpreview.h +++ b/kcmkwin/kwintabbox/layoutpreview.h @@ -20,6 +20,7 @@ along with this program. If not, see . #ifndef KWIN_TABBOX_LAYOUTPREVIEW_H #define KWIN_TABBOX_LAYOUTPREVIEW_H +#include #include #include #include @@ -57,7 +58,11 @@ public: private: void init(); - QStringList m_nameList; + QList m_services; + KService::Ptr m_fileManager; + KService::Ptr m_browser; + KService::Ptr m_email; + KService::Ptr m_systemSettings; };