#include <KIO/JobUiDelegate>
#include <KJobWidgets>
#include <KDirNotify>
+#include <KLocalizedString>
+
+#include <Baloo/FileMetaDataWidget>
#include <QApplication>
#include <QShowEvent>
#include <QVBoxLayout>
#include <QTimer>
+#include <QMenu>
+
+#include "dolphin_informationpanelsettings.h"
+#include "filemetadataconfigurationdialog.h"
InformationPanel::InformationPanel(QWidget* parent) :
Panel(parent),
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<int>(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<int>(isChecked ? Baloo::DateFormats::ShortFormat : Baloo::DateFormats::LongFormat);
+
+ InformationPanelSettings::setDateFormat(dateFormat);
+ m_content->refreshMetaData();
+ }
+}
+
void InformationPanel::showItemInfo()
{
if (!isVisible()) {
*/
void markUrlAsInvalid();
+ /**
+ * Opens a menu which allows to configure which meta information
+ * should be shown.
+ */
+ void showContextMenu(const QPoint &point);
+
void init();
private:
#include <KStringHandler>
#include <QIcon>
-#include <QMenu>
#include <QTextDocument>
#include <Baloo/FileMetaDataWidget>
#include <QStyle>
#include "dolphin_informationpanelsettings.h"
-#include "filemetadataconfigurationdialog.h"
#include "phononwidget.h"
#include "pixmapviewer.h"
return QWidget::eventFilter(obj, event);
}
-void InformationPanelContent::configureSettings(const QList<QAction*>& 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<int>(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<int>(isChecked ? Baloo::DateFormats::ShortFormat : Baloo::DateFormats::LongFormat);
-
- InformationPanelSettings::setDateFormat(dateFormat);
- refreshMetaData();
- }
-}
-
void InformationPanelContent::showIcon(const KFileItem& item)
{
m_outdatedPreviewTimer->stop();
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);
*/
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<QAction*>& 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;
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