File indexing completed on 2024-05-26 05:23:03

0001 /*
0002   This file is part of KOrganizer.
0003 
0004   SPDX-FileCopyrightText: 2011 Sérgio Martins <iamsergio@gmail.com>
0005 
0006   SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 
0009 #include "kitemiconcheckcombo.h"
0010 
0011 #include <KLocalizedString>
0012 
0013 KItemIconCheckCombo::KItemIconCheckCombo(ViewType viewType, QWidget *parent)
0014     : KPIM::KCheckComboBox(parent)
0015 {
0016     addItem(i18n("Calendar's custom icon"));
0017     addItem(QIcon::fromTheme(QStringLiteral("view-calendar-tasks")), i18n("To-do"));
0018     addItem(QIcon::fromTheme(QStringLiteral("view-pim-journal")), i18n("Journal"));
0019     addItem(QIcon::fromTheme(QStringLiteral("appointment-recurring")), i18n("Recurring"));
0020     addItem(QIcon::fromTheme(QStringLiteral("appointment-reminder")), i18n("Alarm"));
0021     addItem(QIcon::fromTheme(QStringLiteral("object-locked")), i18n("Read Only"));
0022     addItem(QIcon::fromTheme(QStringLiteral("mail-reply-sender")), i18n("Needs Reply"));
0023     addItem(QIcon::fromTheme(QStringLiteral("meeting-attending")), i18n("Attending"));
0024     addItem(QIcon::fromTheme(QStringLiteral("meeting-attending-tentative")), i18n("Maybe Attending"));
0025     addItem(QIcon::fromTheme(QStringLiteral("meeting-organizer")), i18n("Organizer"));
0026 
0027     // Agenda view doesn't support journals yet
0028     setItemEnabled(EventViews::EventView::JournalIcon, viewType != AgendaType);
0029     setItemEnabled(EventViews::EventView::ReplyIcon, viewType == AgendaType);
0030     setItemEnabled(EventViews::EventView::AttendingIcon, viewType == AgendaType);
0031     setItemEnabled(EventViews::EventView::TentativeIcon, viewType == AgendaType);
0032     setItemEnabled(EventViews::EventView::OrganizerIcon, viewType == AgendaType);
0033 
0034     setDefaultText(i18nc("@item:inlistbox", "Icons to use"));
0035     setAlwaysShowDefaultText(true);
0036 }
0037 
0038 KItemIconCheckCombo::~KItemIconCheckCombo() = default;
0039 
0040 void KItemIconCheckCombo::setCheckedIcons(const QSet<EventViews::EventView::ItemIcon> &icons)
0041 {
0042     const int itemCount = count();
0043     for (int i = 0; i < itemCount; ++i) {
0044         if (itemEnabled(i)) {
0045             setItemCheckState(i, icons.contains(static_cast<EventViews::EventView::ItemIcon>(i)) ? Qt::Checked : Qt::Unchecked);
0046         } else {
0047             setItemCheckState(i, Qt::Unchecked);
0048         }
0049     }
0050 }
0051 
0052 QSet<EventViews::EventView::ItemIcon> KItemIconCheckCombo::checkedIcons() const
0053 {
0054     QSet<EventViews::EventView::ItemIcon> icons;
0055     const int itemCount = count();
0056     for (int i = 0; i < itemCount; ++i) {
0057         const QVariant value = itemCheckState(i);
0058         if (value.toBool()) {
0059             icons.insert(static_cast<EventViews::EventView::ItemIcon>(i));
0060         }
0061     }
0062     return icons;
0063 }
0064 
0065 #include "moc_kitemiconcheckcombo.cpp"