20 if (!settings.contains(key))
23 QVariantList vl = settings.value(key).toList();
25 mPaths.reserve(
static_cast<size_t>(vl.size()));
29 Q_FOREACH(QVariant v, vl) {
30 QVariantMap m = v.toMap();
32 entry.path = m.value(
"path").toString();
33 if (entry.path.isEmpty()) {
37 entry.enabled = m.value(
"enabled", QVariant{
true}).toBool();
38 mPaths.push_back(entry);
49 for (
const auto &e : mPaths) {
52 v[
"enabled"] = e.enabled;
57 settings.setValue(key, vl);
63 if (!settings.contains(settingsKey))
67 QVariantList vl = settings.value(settingsKey).toList();
68 Q_FOREACH(QVariant v, vl) {
69 QVariantMap m = v.toMap();
70 if (!m.value(
"enabled").toBool())
73 result.append(m.value(
"path").toString());
82 for (
const auto& e : mPaths) {
84 result.append(e.path);
92 return static_cast<int>(mPaths.size());
98 return static_cast<int>(mPaths.size());
103 int row = index.row();
104 const auto& entry = mPaths.at(
static_cast<size_t>(row));
106 case Qt::DisplayRole:
111 return entry.enabled;
122 int row = index.row();
123 auto& entry = mPaths.at(
static_cast<size_t>(row));
125 entry.enabled = value.toBool();
136 QHash<int, QByteArray> result = QAbstractListModel::roleNames();
137 result[Qt::DisplayRole] =
"path";
144 if ((index < 0) || (index >=
static_cast<int>(mPaths.size()))) {
145 qWarning() << Q_FUNC_INFO <<
"index invalid:" << index;
149 beginRemoveRows({}, index, index);
150 auto it = mPaths.begin() + index;
161 entry.enabled =
true;
162 const int newRow =
static_cast<int>(mPaths.size());
163 beginInsertRows({}, newRow, newRow);
164 mPaths.push_back(entry);
172 if ((indexA < 0) || (indexA >=
static_cast<int>(mPaths.size()))) {
173 qWarning() << Q_FUNC_INFO <<
"index invalid:" << indexA;
177 if ((indexB < 0) || (indexB >=
static_cast<int>(mPaths.size()))) {
178 qWarning() << Q_FUNC_INFO <<
"index invalid:" << indexB;
182 std::swap(mPaths[
static_cast<size_t>(indexA)],
183 mPaths[
static_cast<size_t>(indexB)]);
184 emit dataChanged(index(indexA), index(indexA));
185 emit dataChanged(index(indexB), index(indexB));
const int PathEnabledRole
static QStringList readEnabledPaths(QString settingsKey)
void removePath(int index)
void swapIndices(int indexA, int indexB)
PathListModel(QObject *pr)
QHash< int, QByteArray > roleNames() const override
void enabledPathsChanged()
~PathListModel() override
void saveToSettings(QString key) const
void loadFromSettings(QString key)
void appendPath(QString path)
QStringList enabledPaths() const
QVariant data(const QModelIndex &index, int role) const override
int rowCount(const QModelIndex &parent) const override
bool setData(const QModelIndex &index, const QVariant &value, int role) override