File indexing completed on 2024-04-28 15:40:29
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"