File indexing completed on 2024-12-08 12:53:31

0001 /*
0002    SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "commandsmodel.h"
0008 
0009 CommandsModel::CommandsModel(QObject *parent)
0010     : QAbstractListModel(parent)
0011 {
0012 }
0013 
0014 CommandsModel::~CommandsModel() = default;
0015 
0016 int CommandsModel::rowCount(const QModelIndex &parent) const
0017 {
0018     if (parent.isValid()) {
0019         return 0; // flat model
0020     }
0021     return mCommands.count();
0022 }
0023 
0024 QVariant CommandsModel::data(const QModelIndex &index, int role) const
0025 {
0026     if (index.row() < 0 || index.row() >= mCommands.count()) {
0027         return {};
0028     }
0029     const Command &command = mCommands.at(index.row());
0030     switch (role) {
0031     case Description:
0032         return command.description();
0033     case Parameters:
0034         return command.params();
0035     case CompleterName:
0036         return command.commandName().mid(1);
0037     case TranslatedDescription:
0038         return command.translatedDescription();
0039     case TranslatedParams:
0040         return command.translatedParams();
0041     case CommandName:
0042     case Qt::DisplayRole: // for the completion popup (until we have a delegate)
0043         return command.commandName();
0044     case Permissions:
0045         return command.permissions();
0046     }
0047 
0048     return {};
0049 }
0050 
0051 Commands CommandsModel::commands() const
0052 {
0053     return mCommands;
0054 }
0055 
0056 void CommandsModel::clear()
0057 {
0058     if (!mCommands.isEmpty()) {
0059         beginResetModel();
0060         mCommands.clear();
0061         endResetModel();
0062     }
0063 }
0064 
0065 void CommandsModel::setCommands(const Commands &commands)
0066 {
0067     clear();
0068     if (!commands.isEmpty()) {
0069         beginInsertRows(QModelIndex(), 0, commands.count() - 1);
0070         mCommands = commands;
0071         endInsertRows();
0072     }
0073 }
0074 
0075 #include "moc_commandsmodel.cpp"