]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinitemlistview.cpp
Provide ability to configure size cut-off for local file previews
[dolphin.git] / src / views / dolphinitemlistview.cpp
index eb61ccb21fa4986eff79fe6645379b0d1f473ff5..9e8fda650e37149f1a6d051d1514a2825ebbdb1d 100644 (file)
 
 #include "dolphinitemlistview.h"
 
+#include "dolphin_compactmodesettings.h"
+#include "dolphin_detailsmodesettings.h"
 #include "dolphin_generalsettings.h"
 #include "dolphin_iconsmodesettings.h"
-#include "dolphin_detailsmodesettings.h"
-#include "dolphin_compactmodesettings.h"
 #include "dolphinfileitemlistwidget.h"
-
-#include <kitemviews/kfileitemlistview.h>
-#include <kitemviews/kfileitemmodel.h>
-#include <kitemviews/kitemlistcontroller.h>
-#include <kitemviews/kitemliststyleoption.h>
-
-#include <KGlobalSettings>
-
-#include <views/viewmodecontroller.h>
-
+#include "kitemviews/kfileitemmodel.h"
+#include "kitemviews/kitemlistcontroller.h"
+#include "views/viewmodecontroller.h"
 #include "zoomlevelinfo.h"
 
+#include <KIO/PreviewJob>
+
 
 DolphinItemListView::DolphinItemListView(QGraphicsWidget* parent) :
     KFileItemListView(parent),
@@ -94,21 +89,17 @@ void DolphinItemListView::readSettings()
     updateFont();
     updateGridSize();
 
-    const KConfigGroup globalConfig(KGlobal::config(), "PreviewSettings");
-    const QStringList plugins = globalConfig.readEntry("Plugins", QStringList()
-                                                       << "directorythumbnail"
-                                                       << "imagethumbnail"
-                                                       << "jpegthumbnail");
-    setEnabledPlugins(plugins);
-
+    const KConfigGroup globalConfig(KSharedConfig::openConfig(), "PreviewSettings");
+    setEnabledPlugins(globalConfig.readEntry("Plugins", KIO::PreviewJob::defaultPlugins()));
+    setLocalFileSizePreviewLimit(globalConfig.readEntry("MaximumSize", 0));
     endTransaction();
 }
 
 void DolphinItemListView::writeSettings()
 {
-    IconsModeSettings::self()->writeConfig();
-    CompactModeSettings::self()->writeConfig();
-    DetailsModeSettings::self()->writeConfig();
+    IconsModeSettings::self()->save();
+    CompactModeSettings::self()->save();
+    DetailsModeSettings::self()->save();
 }
 
 KItemListWidgetCreatorBase* DolphinItemListView::defaultWidgetCreator() const
@@ -133,7 +124,7 @@ void DolphinItemListView::onItemLayoutChanged(ItemLayout current, ItemLayout pre
 
 void DolphinItemListView::onPreviewsShownChanged(bool shown)
 {
-    Q_UNUSED(shown);
+    Q_UNUSED(shown)
     updateGridSize();
 }
 
@@ -180,36 +171,23 @@ void DolphinItemListView::updateGridSize()
     // Calculate the item-width and item-height
     int itemWidth;
     int itemHeight;
-    QSize maxTextSize;
+    int maxTextLines = 0;
+    int maxTextWidth = 0;
 
     switch (itemLayout()) {
     case KFileItemListView::IconsLayout: {
         const int minItemWidth = 48;
         itemWidth = minItemWidth + IconsModeSettings::textWidthIndex() * 64;
 
-        if (previewsShown()) {
-            // Optimize the width for previews with a 3:2 aspect ratio instead
-            // of a 1:1 ratio to avoid wasting too much vertical space when
-            // showing photos.
-            const int minWidth = iconSize * 3 / 2;
-            itemWidth = qMax(itemWidth, minWidth);
-        }
-
         if (itemWidth < iconSize + padding * 2) {
             itemWidth = iconSize + padding * 2;
         }
 
         itemHeight = padding * 3 + iconSize + option.fontMetrics.lineSpacing();
-        if (IconsModeSettings::maximumTextLines() > 0) {
-            // A restriction is given for the maximum number of textlines (0 means
-            // having no restriction)
-            const int additionalInfoCount = visibleRoles().count() - 1;
-            const int maxAdditionalLines = additionalInfoCount + IconsModeSettings::maximumTextLines();
-            maxTextSize.rheight() = option.fontMetrics.lineSpacing() * maxAdditionalLines;
-        }
 
         horizontalMargin = 4;
         verticalMargin = 8;
+        maxTextLines = IconsModeSettings::maximumTextLines();
         break;
     }
     case KFileItemListView::CompactLayout: {
@@ -220,8 +198,7 @@ void DolphinItemListView::updateGridSize()
         if (CompactModeSettings::maximumTextWidthIndex() > 0) {
             // A restriction is given for the maximum width of the text (0 means
             // having no restriction)
-            maxTextSize.rwidth() = option.fontMetrics.height() * 10 *
-                                   CompactModeSettings::maximumTextWidthIndex();
+            maxTextWidth = option.fontMetrics.height() * 10 * CompactModeSettings::maximumTextWidthIndex();
         }
 
         horizontalMargin = 8;
@@ -244,7 +221,8 @@ void DolphinItemListView::updateGridSize()
     option.horizontalMargin = horizontalMargin;
     option.verticalMargin = verticalMargin;
     option.iconSize = iconSize;
-    option.maxTextSize = maxTextSize;
+    option.maxTextLines = maxTextLines;
+    option.maxTextWidth = maxTextWidth;
     beginTransaction();
     setStyleOption(option);
     setItemSize(QSizeF(itemWidth, itemHeight));
@@ -267,4 +245,3 @@ ViewModeSettings::ViewMode DolphinItemListView::viewMode() const
     return mode;
 }
 
-#include "dolphinitemlistview.moc"