File indexing completed on 2025-03-02 05:10:50
0001 // SPDX-FileCopyrightText: 2014 Kai Uwe Broulik <kde@privat.broulik.de> 0002 // SPDX-FileCopyrightText: 2014 Martin Klapetek <mklapetek@kde.org> 0003 // SPDX-FileCopyrightText: 2023 Devin Lin <devin@kde.org> 0004 // SPDX-License-Identifier: GPL-2.0-or-later 0005 0006 #pragma once 0007 0008 #include <QAbstractListModel> 0009 #include <QSortFilterProxyModel> 0010 #include <QTimeZone> 0011 0012 class TimeZoneFilterProxy : public QSortFilterProxyModel 0013 { 0014 Q_OBJECT 0015 Q_PROPERTY(QString filterString WRITE setFilterString MEMBER m_filterString NOTIFY filterStringChanged) 0016 0017 public: 0018 explicit TimeZoneFilterProxy(QObject *parent = nullptr); 0019 bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override; 0020 0021 void setFilterString(const QString &filterString); 0022 0023 Q_SIGNALS: 0024 void filterStringChanged(); 0025 0026 private: 0027 QString m_filterString; 0028 QStringMatcher m_stringMatcher; 0029 }; 0030 0031 class TimeZoneModel : public QAbstractListModel 0032 { 0033 Q_OBJECT 0034 0035 public: 0036 explicit TimeZoneModel(QObject *parent = nullptr); 0037 ~TimeZoneModel() override; 0038 0039 enum Roles { TimeZoneIdRole = Qt::UserRole + 1 }; 0040 0041 int rowCount(const QModelIndex &parent) const override; 0042 QVariant data(const QModelIndex &index, int role) const override; 0043 0044 void update(); 0045 0046 protected: 0047 QHash<int, QByteArray> roleNames() const override; 0048 0049 private: 0050 QList<QString> m_data; 0051 };