File indexing completed on 2024-06-23 05:45:41
0001 /* 0002 * Copyright 2020 Han Young <hanyoung@protonmail.com> 0003 * Copyright 2020-2021 Devin Lin <devin@kde.org> 0004 * Copyright 2021 Nicolas Fella <nicolas.fella@gmx.de> 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #pragma once 0010 0011 #include <QAbstractListModel> 0012 #include <QSettings> 0013 #include <QTimeZone> 0014 0015 class SavedLocationsModel : public QAbstractListModel 0016 { 0017 Q_OBJECT 0018 0019 public: 0020 static SavedLocationsModel *instance(); 0021 0022 enum Roles { 0023 NameRole = Qt::DisplayRole, 0024 TimeStringRole = Qt::UserRole + 1, 0025 RelativeTimeRole, 0026 CityRole, 0027 IdRole, 0028 }; 0029 0030 explicit SavedLocationsModel(QObject *parent = nullptr); 0031 0032 Q_INVOKABLE void removeLocation(int index); 0033 0034 int rowCount(const QModelIndex &parent) const override; 0035 QVariant data(const QModelIndex &index, int role) const override; 0036 QHash<int, QByteArray> roleNames() const override; 0037 0038 public Q_SLOTS: 0039 void load(); 0040 0041 private: 0042 std::vector<QTimeZone> m_timeZones; 0043 QSettings m_settings; 0044 };