]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/panels/information/informationpanel.cpp
Add settings page for Panels
[dolphin.git] / src / panels / information / informationpanel.cpp
index a0dff0d5e25adacc97c3c6055ce980e45c3eb862..02fe3e308ae4f58bea4c56139a353c051832ef6a 100644 (file)
@@ -9,7 +9,7 @@
 #include "informationpanelcontent.h"
 
 #include <KDirNotify>
-#include <KIO/Job>
+#include <KIO/StatJob>
 #include <KJobWidgets>
 #include <KLocalizedString>
 
@@ -62,13 +62,13 @@ void InformationPanel::setSelection(const KFileItemList &selection)
         if ((count == 1) && !selection.first().url().isEmpty()) {
             m_urlCandidate = selection.first().url();
         }
-        m_infoTimer->start();
+        showItemInfo();
     }
 }
 
 void InformationPanel::requestDelayedItemInfo(const KFileItem &item)
 {
-    if (!isVisible()) {
+    if (!isVisible() || !InformationPanelSettings::showHovered()) {
         return;
     }
 
@@ -160,7 +160,12 @@ void InformationPanel::showContextMenu(const QPoint &pos)
     previewAutoPlayAction->setCheckable(true);
     previewAutoPlayAction->setChecked(InformationPanelSettings::previewsAutoPlay());
 
-    QAction *configureAction = popup.addAction(i18nc("@action:inmenu", "Configure..."));
+    QAction *showHoveredAction = popup.addAction(i18nc("@action:inmenu", "Show item on hover"));
+    showHoveredAction->setIcon(QIcon::fromTheme(QStringLiteral("followmouse")));
+    showHoveredAction->setCheckable(true);
+    showHoveredAction->setChecked(InformationPanelSettings::showHovered());
+
+    QAction *configureAction = popup.addAction(i18nc("@action:inmenu", "Configure…"));
     configureAction->setIcon(QIcon::fromTheme(QStringLiteral("configure")));
     if (m_inConfigurationMode) {
         configureAction->setEnabled(false);
@@ -188,18 +193,23 @@ void InformationPanel::showContextMenu(const QPoint &pos)
     if (action == previewAction) {
         InformationPanelSettings::setPreviewsShown(isChecked);
         m_content->refreshPreview();
+    } else if (action == previewAutoPlayAction) {
+        InformationPanelSettings::setPreviewsAutoPlay(isChecked);
+        m_content->setPreviewAutoPlay(isChecked);
+    } else if (action == showHoveredAction) {
+        InformationPanelSettings::setShowHovered(isChecked);
+        if (!isChecked) {
+            m_hoveredItem = KFileItem();
+            showItemInfo();
+        }
     } else if (action == configureAction) {
         m_inConfigurationMode = true;
         m_content->configureShownProperties();
-    }
-    if (action == dateformatAction) {
+    } else if (action == dateformatAction) {
         int dateFormat = static_cast<int>(isChecked ? Baloo::DateFormats::ShortFormat : Baloo::DateFormats::LongFormat);
 
         InformationPanelSettings::setDateFormat(dateFormat);
         m_content->refreshMetaData();
-    } else if (action == previewAutoPlayAction) {
-        InformationPanelSettings::setPreviewsAutoPlay(isChecked);
-        m_content->setPreviewAutoPlay(isChecked);
     }
 }
 
@@ -218,7 +228,7 @@ void InformationPanel::showItemInfo()
     } else {
         // The information for exactly one item should be shown
         KFileItem item;
-        if (!m_hoveredItem.isNull()) {
+        if (!m_hoveredItem.isNull() && InformationPanelSettings::showHovered()) {
             item = m_hoveredItem;
         } else if (!m_selection.isEmpty()) {
             Q_ASSERT(m_selection.count() == 1);
@@ -234,7 +244,7 @@ void InformationPanel::showItemInfo()
         // No item is hovered and no selection has been done: provide
         // an item for the currently shown directory.
         m_shownUrl = url();
-        m_folderStatJob = KIO::statDetails(m_shownUrl, KIO::StatJob::SourceSide, KIO::StatDefaultDetails | KIO::StatRecursiveSize, KIO::HideProgressInfo);
+        m_folderStatJob = KIO::stat(m_shownUrl, KIO::StatJob::SourceSide, KIO::StatDefaultDetails | KIO::StatRecursiveSize, KIO::HideProgressInfo);
         if (m_folderStatJob->uiDelegate()) {
             KJobWidgets::setWindow(m_folderStatJob, this);
         }
@@ -281,8 +291,6 @@ void InformationPanel::slotFileRenamed(const QString &source, const QString &des
             // item is selected, as the name of the item is shown. If this should change
             // in future: Before parsing the whole selection take care to test possible
             // performance bottlenecks when renaming several hundreds of files.
-        } else {
-            m_hoveredItem = KFileItem(destUrl);
         }
 
         showItemInfo();
@@ -370,6 +378,14 @@ void InformationPanel::markUrlAsInvalid()
     m_resetUrlTimer->start();
 }
 
+void InformationPanel::readSettings()
+{
+    if (m_initialized) {
+        m_content->refreshPreview();
+        m_content->refreshMetaData();
+    }
+}
+
 void InformationPanel::init()
 {
     m_infoTimer = new QTimer(this);
@@ -411,3 +427,5 @@ void InformationPanel::init()
 
     m_initialized = true;
 }
+
+#include "moc_informationpanel.cpp"