1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
/*
* Copyright (C) 2015-2016 Canonical Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#pragma once
#include <lomirisortfilterproxymodelqml.h>
#include <QLightDM/SessionsModel>
#include <QtCore/QHash>
#include <QtCore/QObject>
#include <QtCore/QUrl>
class SessionsModel : public LomiriSortFilterProxyModelQML
{
Q_OBJECT
Q_PROPERTY(QList<QUrl> iconSearchDirectories READ iconSearchDirectories
WRITE setIconSearchDirectories NOTIFY iconSearchDirectoriesChanged)
Q_SIGNALS:
void iconSearchDirectoriesChanged();
public:
enum SessionModelRoles {
/* This is tricky / ugly. Since we are ultimately chaining 3 enums together,
* the _first_ value of this enum MUST be the _last_ value of
* QLightDM::SessionsModel::SessionModelRoles and consquently, this must
* also match the last value in the corresponding enum of the integrated lib
*/
TypeRole = QLightDM::SessionsModel::SessionModelRoles::TypeRole,
IconRole
};
Q_ENUM(SessionModelRoles)
explicit SessionsModel(QObject* parent=nullptr);
QHash<int, QByteArray> roleNames() const override;
int rowCount(const QModelIndex& parent) const override;
QVariant data(const QModelIndex& index, int role) const override;
QList<QUrl> iconSearchDirectories() const;
Q_INVOKABLE QUrl iconUrl(const QString sessionName) const;
void setIconSearchDirectories(const QList<QUrl> searchDirectories);
private:
QLightDM::SessionsModel* m_model;
QHash<int, QByteArray> m_roleNames;
QList<QUrl> m_iconSearchDirectories{
QUrl("/usr/local/share/lomiri-greeter"),
QUrl("/usr/share/lomiri-greeter/"),
QUrl("/usr/share/ayatana-greeter/badges"),
QUrl(SHELL_APP_FULL_DIR "/Greeter/graphics/session_icons")
};
};
|