File indexing completed on 2024-04-28 04:21:28

0001 // SPDX-FileCopyrightText: 2003-2020 Jesper K. Pedersen <blackie@kde.org>
0002 // SPDX-FileCopyrightText: 2021-2022 Johannes Zarl-Zierl <johannes@zarl-zierl.at>
0003 //
0004 // SPDX-License-Identifier: GPL-2.0-or-later
0005 
0006 #include "VisibleOptionsMenu.h"
0007 
0008 #include <DB/Category.h>
0009 #include <DB/CategoryCollection.h>
0010 #include <DB/ImageDB.h>
0011 #include <kpabase/SettingsData.h>
0012 
0013 #include <KActionCollection>
0014 #include <KLocalizedString>
0015 #include <KToggleAction>
0016 #include <QCheckBox>
0017 #include <QDebug>
0018 #include <QList>
0019 
0020 Viewer::VisibleOptionsMenu::VisibleOptionsMenu(QWidget *parent, KActionCollection *actions)
0021     : QMenu(i18n("Show..."), parent)
0022 {
0023     setTearOffEnabled(true);
0024     setTitle(i18n("Show"));
0025     connect(this, &VisibleOptionsMenu::aboutToShow, this, &VisibleOptionsMenu::updateState);
0026 
0027     m_showInfoBox = actions->add<KToggleAction>(QString::fromLatin1("viewer-show-infobox"));
0028     m_showInfoBox->setText(i18n("Show Info Box"));
0029     actions->setDefaultShortcut(m_showInfoBox, Qt::CTRL + Qt::Key_I);
0030     m_showInfoBox->setChecked(Settings::SettingsData::instance()->showInfoBox());
0031     connect(m_showInfoBox, &KToggleAction::toggled, this, &VisibleOptionsMenu::toggleShowInfoBox);
0032     addAction(m_showInfoBox);
0033 
0034     m_showLabel = actions->add<KToggleAction>(QString::fromLatin1("viewer-show-label"));
0035     m_showLabel->setText(i18n("Show Label"));
0036     connect(m_showLabel, &KToggleAction::toggled, this, &VisibleOptionsMenu::toggleShowLabel);
0037     addAction(m_showLabel);
0038 
0039     m_showDescription = actions->add<KToggleAction>(QString::fromLatin1("viewer-show-description"));
0040     m_showDescription->setText(i18n("Show Description"));
0041     connect(m_showDescription, &KToggleAction::toggled, this, &VisibleOptionsMenu::toggleShowDescription);
0042     addAction(m_showDescription);
0043 
0044     m_showDate = actions->add<KToggleAction>(QString::fromLatin1("viewer-show-date"));
0045     m_showDate->setText(i18n("Show Date"));
0046     connect(m_showDate, &KToggleAction::toggled, this, &VisibleOptionsMenu::toggleShowDate);
0047     addAction(m_showDate);
0048 
0049     m_showTime = actions->add<KToggleAction>(QString::fromLatin1("viewer-show-time"));
0050     m_showTime->setText(i18n("Show Time"));
0051     connect(m_showTime, &KToggleAction::toggled, this, &VisibleOptionsMenu::toggleShowTime);
0052     addAction(m_showTime);
0053     m_showTime->setVisible(m_showDate->isChecked());
0054 
0055     m_showFileName = actions->add<KToggleAction>(QString::fromLatin1("viewer-show-filename"));
0056     m_showFileName->setText(i18n("Show Filename"));
0057     connect(m_showFileName, &KToggleAction::toggled, this, &VisibleOptionsMenu::toggleShowFilename);
0058     addAction(m_showFileName);
0059 
0060     m_showExif = actions->add<KToggleAction>(QString::fromLatin1("viewer-show-exif"));
0061     m_showExif->setText(i18n("Show Exif"));
0062     connect(m_showExif, &KToggleAction::toggled, this, &VisibleOptionsMenu::toggleShowEXIF);
0063     addAction(m_showExif);
0064 
0065     m_showImageSize = actions->add<KToggleAction>(QString::fromLatin1("viewer-show-imagesize"));
0066     m_showImageSize->setText(i18n("Show Image Size"));
0067     connect(m_showImageSize, &KToggleAction::toggled, this, &VisibleOptionsMenu::toggleShowImageSize);
0068     addAction(m_showImageSize);
0069 
0070     m_showRating = actions->add<KToggleAction>(QString::fromLatin1("viewer-show-rating"));
0071     m_showRating->setText(i18n("Show Rating"));
0072     connect(m_showRating, &KToggleAction::toggled, this, &VisibleOptionsMenu::toggleShowRating);
0073     addAction(m_showRating);
0074 
0075     const QList<DB::CategoryPtr> categories = DB::ImageDB::instance()->categoryCollection()->categories();
0076     for (const auto &category : categories) {
0077         KToggleAction *taction = actions->add<KToggleAction>(category->name());
0078         m_actionList.append(taction);
0079         taction->setText(category->name());
0080         taction->setData(category->name());
0081         addAction(taction);
0082         connect(taction, &KToggleAction::toggled, this, &VisibleOptionsMenu::toggleShowCategory);
0083     }
0084 }
0085 
0086 void Viewer::VisibleOptionsMenu::toggleShowCategory(bool b)
0087 {
0088     QAction *action = qobject_cast<QAction *>(sender());
0089     DB::ImageDB::instance()->categoryCollection()->categoryForName(action->data().value<QString>())->setDoShow(b);
0090     Q_EMIT visibleOptionsChanged();
0091 }
0092 
0093 void Viewer::VisibleOptionsMenu::toggleShowLabel(bool b)
0094 {
0095     Settings::SettingsData::instance()->setShowLabel(b);
0096     Q_EMIT visibleOptionsChanged();
0097 }
0098 
0099 void Viewer::VisibleOptionsMenu::toggleShowDescription(bool b)
0100 {
0101     Settings::SettingsData::instance()->setShowDescription(b);
0102     Q_EMIT visibleOptionsChanged();
0103 }
0104 
0105 void Viewer::VisibleOptionsMenu::toggleShowDate(bool b)
0106 {
0107     Settings::SettingsData::instance()->setShowDate(b);
0108     m_showTime->setVisible(b);
0109     Q_EMIT visibleOptionsChanged();
0110 }
0111 
0112 void Viewer::VisibleOptionsMenu::toggleShowFilename(bool b)
0113 {
0114     Settings::SettingsData::instance()->setShowFilename(b);
0115     Q_EMIT visibleOptionsChanged();
0116 }
0117 
0118 void Viewer::VisibleOptionsMenu::toggleShowTime(bool b)
0119 {
0120     Settings::SettingsData::instance()->setShowTime(b);
0121     Q_EMIT visibleOptionsChanged();
0122 }
0123 
0124 void Viewer::VisibleOptionsMenu::toggleShowEXIF(bool b)
0125 {
0126     Settings::SettingsData::instance()->setShowEXIF(b);
0127     Q_EMIT visibleOptionsChanged();
0128 }
0129 
0130 void Viewer::VisibleOptionsMenu::toggleShowImageSize(bool b)
0131 {
0132     Settings::SettingsData::instance()->setShowImageSize(b);
0133     Q_EMIT visibleOptionsChanged();
0134 }
0135 
0136 void Viewer::VisibleOptionsMenu::toggleShowRating(bool b)
0137 {
0138     Settings::SettingsData::instance()->setShowRating(b);
0139     Q_EMIT visibleOptionsChanged();
0140 }
0141 
0142 void Viewer::VisibleOptionsMenu::toggleShowInfoBox(bool b)
0143 {
0144     Settings::SettingsData::instance()->setShowInfoBox(b);
0145     Q_EMIT visibleOptionsChanged();
0146 }
0147 
0148 void Viewer::VisibleOptionsMenu::updateState()
0149 {
0150     m_showInfoBox->setChecked(Settings::SettingsData::instance()->showInfoBox());
0151     m_showLabel->setChecked(Settings::SettingsData::instance()->showLabel());
0152     m_showDescription->setChecked(Settings::SettingsData::instance()->showDescription());
0153     m_showDate->setChecked(Settings::SettingsData::instance()->showDate());
0154     m_showTime->setChecked(Settings::SettingsData::instance()->showTime());
0155     m_showFileName->setChecked(Settings::SettingsData::instance()->showFilename());
0156     m_showExif->setChecked(Settings::SettingsData::instance()->showEXIF());
0157     m_showImageSize->setChecked(Settings::SettingsData::instance()->showImageSize());
0158     m_showRating->setChecked(Settings::SettingsData::instance()->showRating());
0159 
0160     const auto categoryCollection = DB::ImageDB::instance()->categoryCollection();
0161     for (KToggleAction *action : qAsConst(m_actionList)) {
0162         const auto category = categoryCollection->categoryForName(action->data().value<QString>());
0163         action->setChecked(category->doShow());
0164     }
0165 }
0166 
0167 // vi:expandtab:tabstop=4 shiftwidth=4:
0168 
0169 #include "moc_VisibleOptionsMenu.cpp"