File indexing completed on 2024-12-01 13:09:05

0001 /*
0002    SPDX-FileCopyrightText: 2019-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "notificationdesktopsoundpreferencemodel.h"
0008 #include <KLocalizedString>
0009 
0010 NotificationDesktopSoundPreferenceModel::NotificationDesktopSoundPreferenceModel(QObject *parent)
0011     : QAbstractListModel(parent)
0012 {
0013     fillModel();
0014 }
0015 
0016 NotificationDesktopSoundPreferenceModel::~NotificationDesktopSoundPreferenceModel() = default;
0017 
0018 int NotificationDesktopSoundPreferenceModel::rowCount(const QModelIndex &parent) const
0019 {
0020     Q_UNUSED(parent)
0021     return mNotificationDestktopSoundPreferenceList.count();
0022 }
0023 
0024 QVariant NotificationDesktopSoundPreferenceModel::data(const QModelIndex &index, int role) const
0025 {
0026     const int rowIndex = index.row();
0027     if (rowIndex < 0 || rowIndex >= mNotificationDestktopSoundPreferenceList.count()) {
0028         return {};
0029     }
0030     NotificationDesktopSoundPreferenceInfo preferenceInfo = mNotificationDestktopSoundPreferenceList.at(rowIndex);
0031     switch (role) {
0032     case Qt::DisplayRole:
0033     case NotificationPreferenceI18n:
0034         return preferenceInfo.displayText;
0035     case NotificationPreference:
0036         return preferenceInfo.preference;
0037     }
0038 
0039     return {};
0040 }
0041 
0042 void NotificationDesktopSoundPreferenceModel::fillModel()
0043 {
0044     mNotificationDestktopSoundPreferenceList.reserve(8);
0045     // This one must be first one.
0046     {
0047         NotificationDesktopSoundPreferenceInfo preferenceInfo;
0048         preferenceInfo.displayText = i18n("Default");
0049         preferenceInfo.preference = QStringLiteral("default");
0050         mNotificationDestktopSoundPreferenceList.append(std::move(preferenceInfo));
0051     }
0052     {
0053         NotificationDesktopSoundPreferenceInfo preferenceInfo;
0054         preferenceInfo.displayText = i18n("Nothing");
0055         preferenceInfo.preference = QStringLiteral("none");
0056         mNotificationDestktopSoundPreferenceList.append(std::move(preferenceInfo));
0057     }
0058     {
0059         NotificationDesktopSoundPreferenceInfo preferenceInfo;
0060         preferenceInfo.displayText = i18n("Beep");
0061         preferenceInfo.preference = QStringLiteral("beep");
0062         mNotificationDestktopSoundPreferenceList.append(std::move(preferenceInfo));
0063     }
0064     {
0065         NotificationDesktopSoundPreferenceInfo preferenceInfo;
0066         preferenceInfo.displayText = i18n("Chelle");
0067         preferenceInfo.preference = QStringLiteral("chelle");
0068         mNotificationDestktopSoundPreferenceList.append(std::move(preferenceInfo));
0069     }
0070     {
0071         NotificationDesktopSoundPreferenceInfo preferenceInfo;
0072         preferenceInfo.displayText = i18n("Ding");
0073         preferenceInfo.preference = QStringLiteral("ding");
0074         mNotificationDestktopSoundPreferenceList.append(std::move(preferenceInfo));
0075     }
0076     {
0077         NotificationDesktopSoundPreferenceInfo preferenceInfo;
0078         preferenceInfo.displayText = i18n("Droplet");
0079         preferenceInfo.preference = QStringLiteral("droplet");
0080         mNotificationDestktopSoundPreferenceList.append(std::move(preferenceInfo));
0081     }
0082     {
0083         NotificationDesktopSoundPreferenceInfo preferenceInfo;
0084         preferenceInfo.displayText = i18n("Highbell");
0085         preferenceInfo.preference = QStringLiteral("highbell");
0086         mNotificationDestktopSoundPreferenceList.append(std::move(preferenceInfo));
0087     }
0088     {
0089         NotificationDesktopSoundPreferenceInfo preferenceInfo;
0090         preferenceInfo.displayText = i18n("Seasons");
0091         preferenceInfo.preference = QStringLiteral("seasons");
0092         mNotificationDestktopSoundPreferenceList.append(std::move(preferenceInfo));
0093     }
0094 }
0095 
0096 int NotificationDesktopSoundPreferenceModel::setCurrentNotificationPreference(const QString &preference)
0097 {
0098     int newStatusIndex = 0;
0099     for (int i = 0; i < mNotificationDestktopSoundPreferenceList.count(); ++i) {
0100         if (mNotificationDestktopSoundPreferenceList.at(i).preference == preference) {
0101             newStatusIndex = i;
0102             break;
0103         }
0104     }
0105     if (mCurrentPreference != newStatusIndex) {
0106         mCurrentPreference = newStatusIndex;
0107         Q_EMIT currentNotificationPreferenceChanged();
0108     }
0109     return mCurrentPreference;
0110 }
0111 
0112 QString NotificationDesktopSoundPreferenceModel::currentPreference(int index) const
0113 {
0114     const QString str = mNotificationDestktopSoundPreferenceList.at(index).preference;
0115     return str;
0116 }
0117 
0118 #include "moc_notificationdesktopsoundpreferencemodel.cpp"