diff --git a/src/panels/information/informationpanel.h b/src/panels/information/informationpanel.h --- a/src/panels/information/informationpanel.h +++ b/src/panels/information/informationpanel.h @@ -128,6 +128,12 @@ */ void markUrlAsInvalid(); + /** + * Opens a menu which allows to configure which meta information + * should be shown. + */ + void showContextMenu(const QPoint &point); + void init(); private: diff --git a/src/panels/information/informationpanel.cpp b/src/panels/information/informationpanel.cpp --- a/src/panels/information/informationpanel.cpp +++ b/src/panels/information/informationpanel.cpp @@ -25,11 +25,18 @@ #include #include #include +#include + +#include #include #include #include #include +#include + +#include "dolphin_informationpanelsettings.h" +#include "filemetadataconfigurationdialog.h" InformationPanel::InformationPanel(QWidget* parent) : Panel(parent), @@ -157,11 +164,59 @@ void InformationPanel::contextMenuEvent(QContextMenuEvent* event) { - // TODO: Move code from InformationPanelContent::configureSettings() here - m_content->configureSettings(customContextMenuActions(), event->globalPos()); + showContextMenu(event->globalPos()); Panel::contextMenuEvent(event); } +void InformationPanel::showContextMenu(const QPoint &pos) { + QMenu popup(this); + + QAction* previewAction = popup.addAction(i18nc("@action:inmenu", "Preview")); + previewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-preview"))); + previewAction->setCheckable(true); + previewAction->setChecked(InformationPanelSettings::previewsShown()); + + QAction* configureAction = popup.addAction(i18nc("@action:inmenu", "Configure...")); + configureAction->setIcon(QIcon::fromTheme(QStringLiteral("configure"))); + + QAction* dateformatAction = popup.addAction(i18nc("@action:inmenu", "Condensed Date")); + dateformatAction->setIcon(QIcon::fromTheme(QStringLiteral("change-date-symbolic"))); + dateformatAction->setCheckable(true); + dateformatAction->setChecked(InformationPanelSettings::dateFormat() == static_cast(Baloo::DateFormats::ShortFormat)); + + popup.addSeparator(); + foreach (QAction* action, customContextMenuActions()) { + popup.addAction(action); + } + + // Open the popup and adjust the settings for the + // selected action. + QAction* action = popup.exec(pos); + if (!action) { + return; + } + + const bool isChecked = action->isChecked(); + if (action == previewAction) { + m_content->setPreviewVisible(isChecked); + InformationPanelSettings::setPreviewsShown(isChecked); + } else if (action == configureAction) { + FileMetaDataConfigurationDialog* dialog = new FileMetaDataConfigurationDialog(this); + dialog->setDescription(i18nc("@label::textbox", + "Select which data should be shown in the information panel:")); + dialog->setItems(m_content->items()); + dialog->setAttribute(Qt::WA_DeleteOnClose); + dialog->show(); + connect(dialog, &FileMetaDataConfigurationDialog::destroyed, m_content, &InformationPanelContent::refreshMetaData); + } + if (action == dateformatAction) { + int dateFormat = static_cast(isChecked ? Baloo::DateFormats::ShortFormat : Baloo::DateFormats::LongFormat); + + InformationPanelSettings::setDateFormat(dateFormat); + m_content->refreshMetaData(); + } +} + void InformationPanel::showItemInfo() { if (!isVisible()) { diff --git a/src/panels/information/informationpanelcontent.h b/src/panels/information/informationpanelcontent.h --- a/src/panels/information/informationpanelcontent.h +++ b/src/panels/information/informationpanelcontent.h @@ -72,17 +72,20 @@ */ void showItems(const KFileItemList& items); - /** - * Opens a menu which allows to configure which meta information - * should be shown. - * - * TODO: Move this code to the class InformationPanel - */ - void configureSettings(const QList& customContextMenuActions, const QPointF& pos); + void setPreviewVisible(bool visible); + + KFileItemList items(); signals: void urlActivated( const QUrl& url ); +public slots: + /** + * Is invoked after the file meta data configuration dialog has been + * closed and refreshes the visibility of the meta data. + */ + void refreshMetaData(); + protected: /** @see QObject::eventFilter() */ bool eventFilter(QObject* obj, QEvent* event) override; @@ -108,12 +111,6 @@ void slotHasVideoChanged(bool hasVideo); - /** - * Is invoked after the file meta data configuration dialog has been - * closed and refreshes the visibility of the meta data. - */ - void refreshMetaData(); - private: /** * Sets the text for the label \a m_nameLabel and assures that the diff --git a/src/panels/information/informationpanelcontent.cpp b/src/panels/information/informationpanelcontent.cpp --- a/src/panels/information/informationpanelcontent.cpp +++ b/src/panels/information/informationpanelcontent.cpp @@ -29,7 +29,6 @@ #include #include -#include #include #include @@ -48,7 +47,6 @@ #include #include "dolphin_informationpanelsettings.h" -#include "filemetadataconfigurationdialog.h" #include "phononwidget.h" #include "pixmapviewer.h" @@ -264,56 +262,6 @@ return QWidget::eventFilter(obj, event); } -void InformationPanelContent::configureSettings(const QList& customContextMenuActions, const QPointF& pos) -{ - QMenu popup(this); - - QAction* previewAction = popup.addAction(i18nc("@action:inmenu", "Preview")); - previewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-preview"))); - previewAction->setCheckable(true); - previewAction->setChecked(InformationPanelSettings::previewsShown()); - - QAction* configureAction = popup.addAction(i18nc("@action:inmenu", "Configure...")); - configureAction->setIcon(QIcon::fromTheme(QStringLiteral("configure"))); - - QAction* dateformatAction = popup.addAction(i18nc("@action:inmenu", "Condensed Date")); - dateformatAction->setIcon(QIcon::fromTheme(QStringLiteral("change-date-symbolic"))); - dateformatAction->setCheckable(true); - dateformatAction->setChecked(InformationPanelSettings::dateFormat() == static_cast(Baloo::DateFormats::ShortFormat)); - - popup.addSeparator(); - foreach (QAction* action, customContextMenuActions) { - popup.addAction(action); - } - - // Open the popup and adjust the settings for the - // selected action. - QAction* action = popup.exec(pos.toPoint()); - if (!action) { - return; - } - - const bool isChecked = action->isChecked(); - if (action == previewAction) { - m_preview->setVisible(isChecked); - InformationPanelSettings::setPreviewsShown(isChecked); - } else if (action == configureAction) { - FileMetaDataConfigurationDialog* dialog = new FileMetaDataConfigurationDialog(this); - dialog->setDescription(i18nc("@label::textbox", - "Select which data should be shown in the information panel:")); - dialog->setItems(m_metaDataWidget->items()); - dialog->setAttribute(Qt::WA_DeleteOnClose); - dialog->show(); - connect(dialog, &FileMetaDataConfigurationDialog::destroyed, this, &InformationPanelContent::refreshMetaData); - } - if (action == dateformatAction) { - int dateFormat = static_cast(isChecked ? Baloo::DateFormats::ShortFormat : Baloo::DateFormats::LongFormat); - - InformationPanelSettings::setDateFormat(dateFormat); - refreshMetaData(); - } -} - void InformationPanelContent::showIcon(const KFileItem& item) { m_outdatedPreviewTimer->stop(); @@ -342,6 +290,14 @@ m_preview->setPixmap(disabledPixmap); } +void InformationPanelContent::setPreviewVisible(bool visible) { + m_preview->setVisible(visible); +} + +KFileItemList InformationPanelContent::items() { + return m_metaDataWidget->items(); +} + void InformationPanelContent::slotHasVideoChanged(bool hasVideo) { m_preview->setVisible(!hasVideo);