File indexing completed on 2024-06-09 09:10:17

0001 // SPDX-FileCopyrightText: 2020 Han Young <hanyoung@protonmail.com>
0002 // SPDX-License-Identifier: GPL-2.0-or-later
0003 
0004 #include "savedcommandsmodel.h"
0005 #include "terminalsettings.h"
0006 
0007 SavedCommandsModel::SavedCommandsModel(QObject *parent)
0008     : QAbstractListModel(parent)
0009     , m_actions(TerminalSettings::self()->actions())
0010 {
0011 }
0012 
0013 SavedCommandsModel::~SavedCommandsModel()
0014 {
0015 }
0016 
0017 QVariant SavedCommandsModel::data(const QModelIndex &index, int role) const
0018 {
0019     Q_UNUSED(role)
0020 
0021     if (!index.isValid() || index.row() < 0 || index.row() >= m_actions.count()) {
0022         return false;
0023     }
0024 
0025     return m_actions.at(index.row());
0026 }
0027 
0028 void SavedCommandsModel::save()
0029 {
0030     TerminalSettings::self()->setActions(m_actions);
0031     TerminalSettings::self()->save();
0032 }
0033 
0034 void SavedCommandsModel::addAction(const QString &action)
0035 {
0036     beginInsertRows(QModelIndex(), m_actions.size(), m_actions.size());
0037     m_actions.push_back(action);
0038     endInsertRows();
0039 
0040     save();
0041 }
0042 
0043 bool SavedCommandsModel::removeRow(int row)
0044 {
0045     if (row < 0 || row >= m_actions.size()) {
0046         return false;
0047     }
0048 
0049     beginRemoveRows(QModelIndex(), row, row);
0050     m_actions.erase(m_actions.begin() + row);
0051     endRemoveRows();
0052 
0053     save();
0054     return true;
0055 }