18#include "SessionsModel.h"
19#include <QtCore/QFile>
20#include <QtCore/QSortFilterProxyModel>
22QHash<int, QByteArray> SessionsModel::roleNames()
const
27int SessionsModel::rowCount(
const QModelIndex& parent)
const
29 return m_model->rowCount(parent);
32QList<QUrl> SessionsModel::iconSearchDirectories()
const
34 return m_iconSearchDirectories;
37void SessionsModel::setIconSearchDirectories(
const QList<QUrl> searchDirectories)
41 QList<QUrl> localList = {};
42 Q_FOREACH(
const QUrl& searchDirectory, searchDirectories)
44 localList.append(searchDirectory.toLocalFile());
46 m_iconSearchDirectories = localList;
47 Q_EMIT iconSearchDirectoriesChanged();
50QUrl SessionsModel::iconUrl(
const QString sessionKey)
const
52 Q_FOREACH(
const QUrl& searchDirectory, m_iconSearchDirectories)
55 QString customIconUrl = searchDirectory.toString(QUrl::StripTrailingSlash) +
56 "/custom_" + sessionKey +
"_badge.png";
57 QString iconUrl = searchDirectory.toString(QUrl::StripTrailingSlash) +
58 "/" + sessionKey +
"_badge.png";
60 QFile customIconFile(customIconUrl);
61 QFile iconFile(iconUrl);
62 if (customIconFile.exists()) {
63 return QUrl(customIconUrl);
64 }
else if (iconFile.exists()) {
68 QString path = searchDirectory.toString(QUrl::StripTrailingSlash) +
"/";
69 bool iconFound =
false;
70 if (sessionKey ==
"ubuntu" || sessionKey ==
"ubuntu-2d") {
71 path +=
"ubuntu_badge.png";
74 sessionKey ==
"gnome-classic" ||
75 sessionKey ==
"gnome-flashback-compiz" ||
76 sessionKey ==
"gnome-flashback-metacity" ||
77 sessionKey ==
"gnome-shell" ||
78 sessionKey ==
"gnome-wayland" ||
81 path +=
"gnome_badge.png";
83 }
else if (sessionKey ==
"plasma") {
84 path +=
"kde_badge.png";
86 }
else if (sessionKey ==
"xterm") {
87 path +=
"recovery_console_badge.png";
89 }
else if (sessionKey ==
"remote-login") {
90 path +=
"remote_login_help.png";
94 if (QFile(path).exists() && iconFound) {
101 return QUrl(
"./graphics/session_icons/unknown_badge.png");
104QVariant SessionsModel::data(
const QModelIndex& index,
int role)
const
107 case SessionsModel::IconRole:
108 return iconUrl(m_model->data(index, QLightDM::SessionsModel::KeyRole).toString());
110 return m_model->data(index, role);
114SessionsModel::SessionsModel(QObject* parent)
115 : LomiriSortFilterProxyModelQML(parent)
118 m_model =
new QLightDM::SessionsModel(
this);
119 m_roleNames = m_model->roleNames();
120 m_roleNames[IconRole] =
"icon_url";
123 auto snapRoot = QFile::decodeName(qgetenv(
"SNAP"));
124 if (!snapRoot.isEmpty()) {
125 for (
int i = 0; i < m_iconSearchDirectories.size(); i++) {
126 m_iconSearchDirectories[i] = snapRoot + m_iconSearchDirectories[i].path();
131 setSortCaseSensitivity(Qt::CaseInsensitive);
132 setSortLocaleAware(
true);
133 setSortRole(Qt::DisplayRole);