File indexing completed on 2024-05-12 05:06:13

0001 /*
0002     SPDX-FileCopyrightText: 2020 Thomas Baumgart <tbaumgart@kde.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "selectedobjects.h"
0007 
0008 SelectedObjects::SelectedObjects()
0009 {
0010 }
0011 
0012 void SelectedObjects::addSelection(SelectedObjects::Object_t type, const QString& id)
0013 {
0014     addSelections(type, QStringList(id));
0015 }
0016 
0017 void SelectedObjects::addSelections(SelectedObjects::Object_t type, const QStringList& ids)
0018 {
0019     for(const auto& id : qAsConst(ids)) {
0020         if (!id.isEmpty()) {
0021             if (!m_selections[type].contains(id)) {
0022                 m_selections[type].append(id);
0023             }
0024         }
0025     }
0026 }
0027 
0028 void SelectedObjects::removeSelection(SelectedObjects::Object_t type, const QString& id)
0029 {
0030     m_selections[type].removeAll(id);
0031     if (m_selections[type].isEmpty()) {
0032         m_selections.remove(type);
0033     }
0034 }
0035 
0036 void SelectedObjects::setSelection(SelectedObjects::Object_t type, const QString& id)
0037 {
0038     setSelection(type, QStringList(id));
0039 }
0040 
0041 void SelectedObjects::setSelection(SelectedObjects::Object_t type, const QStringList& ids)
0042 {
0043     if (ids.isEmpty()) {
0044         m_selections.remove(type);
0045     } else {
0046         m_selections[type] = ids;
0047     }
0048 }
0049 
0050 void SelectedObjects::clearSelections(SelectedObjects::Object_t type)
0051 {
0052     m_selections.remove(type);
0053 }
0054 
0055 void SelectedObjects::clearSelections()
0056 {
0057     m_selections.clear();
0058 }
0059 
0060 int SelectedObjects::count(SelectedObjects::Object_t type) const
0061 {
0062     return m_selections[type].count();
0063 }
0064 
0065 bool SelectedObjects::isEmpty(SelectedObjects::Object_t type) const
0066 {
0067     return m_selections[type].isEmpty();
0068 }
0069 
0070 QStringList SelectedObjects::selection(SelectedObjects::Object_t type) const
0071 {
0072     return m_selections[type];
0073 }
0074 
0075 QString SelectedObjects::firstSelection(SelectedObjects::Object_t type) const
0076 {
0077     if (!m_selections[type].isEmpty()) {
0078         return m_selections[type].first();
0079     }
0080     return {};
0081 }
0082 
0083 bool SelectedObjects::isEmpty() const
0084 {
0085     return m_selections.isEmpty();
0086 }
0087 
0088 bool SelectedObjects::operator!=(const SelectedObjects& right) const
0089 {
0090     return m_selections != right.m_selections;
0091 }