File indexing completed on 2024-05-05 04:34:54

0001 /* SPDX-FileCopyrightText: 2022 Noah Davis <noahadvs@gmail.com>
0002  * SPDX-License-Identifier: LGPL-2.0-or-later
0003  */
0004 
0005 #include "RecordingModeModel.h"
0006 
0007 #include <KGlobalAccel>
0008 #include <KLocalizedString>
0009 
0010 #include <QApplication>
0011 #include <QDBusConnection>
0012 #include <QDBusMessage>
0013 #include <QDBusPendingCall>
0014 #include <QDBusPendingReply>
0015 #include <QScreen>
0016 #include <qnamespace.h>
0017 
0018 using namespace Qt::StringLiterals;
0019 
0020 RecordingModeModel::RecordingModeModel(VideoPlatform::RecordingModes modes, QObject *parent)
0021     : QAbstractListModel(parent)
0022     , m_modes(modes)
0023 {
0024     m_roleNames[RecordingModeRole] = "recordingMode"_ba;
0025     m_roleNames[Qt::DisplayRole] = "display"_ba;
0026 
0027     if (modes & VideoPlatform::Region) {
0028         m_data.append({VideoPlatform::Region, i18nc("@item recording mode", "Rectangular Region")});
0029     }
0030     if (modes & VideoPlatform::Region) {
0031         m_data.append({VideoPlatform::Screen, i18nc("@item recording mode", "Full Screen")});
0032     }
0033     if (modes & VideoPlatform::Window) {
0034         m_data.append({VideoPlatform::Window, i18nc("@item recording mode", "Window")});
0035     }
0036 }
0037 
0038 QHash<int, QByteArray> RecordingModeModel::roleNames() const
0039 {
0040     return m_roleNames;
0041 }
0042 
0043 QVariant RecordingModeModel::data(const QModelIndex &index, int role) const
0044 {
0045     int row = index.row();
0046     QVariant ret;
0047     if (!checkIndex(index, CheckIndexOption::IndexIsValid)) {
0048         return ret;
0049     }
0050     if (role == RecordingModeRole) {
0051         ret = m_data.at(row).mode;
0052     } else if (role == Qt::DisplayRole) {
0053         ret = m_data.at(row).label;
0054     }
0055     return ret;
0056 }
0057 
0058 int RecordingModeModel::rowCount(const QModelIndex &parent) const
0059 {
0060     Q_UNUSED(parent)
0061     return m_data.size();
0062 }
0063 
0064 int RecordingModeModel::indexOfRecordingMode(VideoPlatform::RecordingMode mode) const
0065 {
0066     int finalIndex = -1;
0067     for (int i = 0; i < m_data.length(); ++i) {
0068         if (m_data[i].mode == mode) {
0069             finalIndex = i;
0070             break;
0071         }
0072     }
0073     return finalIndex;
0074 }
0075 
0076 #include "moc_RecordingModeModel.cpp"