21#include <QAbstractListModel>
30const int IdRole = Qt::UserRole + 1;
31const int SourceRole = Qt::UserRole + 2;
32const int ArgsRole = Qt::UserRole + 3;
39 int rowCount(
const QModelIndex&)
const override
41 return static_cast<int>(
_data.size());
44 QVariant
data(
const QModelIndex& index,
int role)
const override
46 const int row = index.row();
47 if ((row < 0) || (row >=
static_cast<int>(
_data.size()))) {
51 const auto& d =
_data.at(row);
53 case IdRole:
return d.id;
54 case SourceRole:
return d.source;
55 case ArgsRole:
return QVariant::fromValue(d.args);
65 QHash<int, QByteArray> result = QAbstractListModel::roleNames();
66 result[IdRole] =
"id";
67 result[SourceRole] =
"source";
68 result[ArgsRole] =
"args";
78 _data[row].source.clear();
79 const auto idx = index(row, 0);
80 emit dataChanged(idx, idx, {SourceRole});
83 beginRemoveRows({}, row, row);
88 void append(QString
id, QUrl source, QJSValue args)
90 const int newRow =
static_cast<int>(
_data.size());
91 beginInsertRows({}, newRow, newRow);
92 _data.push_back({id, source, args});
132 if ((index < 0) || (index >=
static_cast<int>(_model->_data.size()))) {
135 const auto& d = _model->_data.at(index);
136 qDebug() << Q_FUNC_INFO << index;
147 const auto& d = _model->_data.at(index);
153 if (d.args.property(
"persistent-dismiss").toBool()) {
155 settings.beginGroup(
"dismissed-notifications");
156 settings.setValue(d.id,
true);
159 _model->removeIndex(index);
164 const bool supportsPersistentDismiss = args.property(
"persistent-dismiss").toBool();
165 if (supportsPersistentDismiss) {
167 settings.beginGroup(
"dismissed-notifications");
168 bool alreadyDimissed = settings.value(
id).toBool();
169 if (alreadyDimissed) {
174 _model->append(
id, source, args);
static std::unique_ptr< FavouriteAircraftData > static_instance
void append(QString id, QUrl source, QJSValue args)
void removeIndex(int row)
int rowCount(const QModelIndex &) const override
std::vector< Data > _data
QHash< int, QByteArray > roleNames() const override
QVariant data(const QModelIndex &index, int role) const override
~LauncherNotificationsController()
static LauncherNotificationsController * instance()
QAbstractItemModel * notifications() const
LauncherNotificationsController(QObject *pr, QQmlEngine *qmlEngine)
Q_INVOKABLE QJSValue argsForIndex(int index) const
void postNotification(QString id, QUrl source, QJSValue args={})
void dismissIndex(int index)