18 #include "SessionsModel.h" 19 #include <QtCore/QFile> 20 #include <QtCore/QSortFilterProxyModel> 22 QHash<int, QByteArray> SessionsModel::roleNames()
const 27 int SessionsModel::rowCount(
const QModelIndex& parent)
const 29 return m_model->rowCount(parent);
32 QList<QUrl> SessionsModel::iconSearchDirectories()
const 34 return m_iconSearchDirectories;
37 void 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();
50 QUrl SessionsModel::iconUrl(
const QString sessionName)
const 52 Q_FOREACH(
const QUrl& searchDirectory, m_iconSearchDirectories)
55 QString customIconUrl = searchDirectory.toString(QUrl::StripTrailingSlash) +
56 "/custom_" + sessionName +
"_badge.png";
57 QString iconUrl = searchDirectory.toString(QUrl::StripTrailingSlash) +
58 "/" + sessionName +
"_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 if (sessionName ==
"ubuntu" || sessionName ==
"ubuntu-2d") {
70 path +=
"ubuntu_badge.png";
72 sessionName ==
"gnome-classic" ||
73 sessionName ==
"gnome-flashback-compiz" ||
74 sessionName ==
"gnome-flashback-metacity" ||
75 sessionName ==
"gnome-shell" ||
76 sessionName ==
"gnome-wayland" ||
77 sessionName ==
"gnome" 79 path +=
"gnome_badge.png";
80 }
else if (sessionName ==
"plasma") {
81 path +=
"kde_badge.png";
82 }
else if (sessionName ==
"xterm") {
83 path +=
"recovery_console_badge.png";
84 }
else if (sessionName ==
"remote-login") {
85 path +=
"remote_login_help.png";
88 if (QFile(path).exists()) {
95 return QUrl(
"./graphics/session_icons/unknown_badge.png");
98 QVariant SessionsModel::data(
const QModelIndex& index,
int role)
const 101 case SessionsModel::IconRole:
102 return iconUrl(m_model->data(index, Qt::DisplayRole).toString());
104 return m_model->data(index, role);
108 SessionsModel::SessionsModel(QObject* parent)
109 : UnitySortFilterProxyModelQML(parent)
112 m_model =
new QLightDM::SessionsModel(
this);
113 m_roleNames = m_model->roleNames();
114 m_roleNames[IconRole] =
"icon_url";
117 setSourceModel(m_model);
118 setSortCaseSensitivity(Qt::CaseInsensitive);
119 setSortLocaleAware(
true);
120 setSortRole(Qt::DisplayRole);