]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinitemlistcontainer.cpp
Show file size when hovering an item
[dolphin.git] / src / views / dolphinitemlistcontainer.cpp
index 9e7a15f742683da6b72cb702253419a9e553fc45..c687ede4d4a4702393ee542bcc483800806c2547 100644 (file)
@@ -52,16 +52,15 @@ DolphinItemListContainer::DolphinItemListContainer(KDirLister* dirLister,
     m_fileItemListView->setEnabledSelectionToggles(GeneralSettings::showSelectionToggle());
     controller()->setView(m_fileItemListView);
 
+    updateAutoActivationDelay();
     updateFont();
     updateGridSize();
 }
 
 DolphinItemListContainer::~DolphinItemListContainer()
 {
-    IconsModeSettings::self()->writeConfig();
-    CompactModeSettings::self()->writeConfig();
-    DetailsModeSettings::self()->writeConfig();
-
+    writeSettings();
+    
     controller()->setView(0);
     delete m_fileItemListView;
     m_fileItemListView = 0;
@@ -169,11 +168,15 @@ void DolphinItemListContainer::endTransaction()
     m_fileItemListView->endTransaction();
 }
 
-void DolphinItemListContainer::refresh()
+void DolphinItemListContainer::readSettings()
 {
     ViewModeSettings settings(viewMode());
     settings.readConfig();
 
+    beginTransaction();
+
+    m_fileItemListView->setEnabledSelectionToggles(GeneralSettings::showSelectionToggle());
+    updateAutoActivationDelay();
     updateFont();
     updateGridSize();
 
@@ -183,6 +186,15 @@ void DolphinItemListContainer::refresh()
                                                        << "imagethumbnail"
                                                        << "jpegthumbnail");
     m_fileItemListView->setEnabledPlugins(plugins);
+
+    endTransaction();
+}
+
+void DolphinItemListContainer::writeSettings()
+{  
+    IconsModeSettings::self()->writeConfig();
+    CompactModeSettings::self()->writeConfig();
+    DetailsModeSettings::self()->writeConfig();
 }
 
 void DolphinItemListContainer::updateGridSize()
@@ -202,7 +214,7 @@ void DolphinItemListContainer::updateGridSize()
     switch (itemLayout()) {
     case KFileItemListView::IconsLayout: {
         const int minItemWidth = 64;
-        itemWidth = minItemWidth + IconsModeSettings::textWidthIndex() * 64; // TODO:
+        itemWidth = minItemWidth + IconsModeSettings::textWidthIndex() * 64;
         if (itemWidth < iconSize + innerMargin * 2) {
             itemWidth = iconSize + innerMargin * 2;
         }
@@ -210,7 +222,7 @@ void DolphinItemListContainer::updateGridSize()
         break;
     }
     case KFileItemListView::CompactLayout: {
-        itemWidth = innerMargin * 2;
+        itemWidth = innerMargin * 4 + iconSize + styleOption.fontMetrics.height() * 5;
         const int textLinesCount = m_fileItemListView->visibleRoles().count();
         itemHeight = innerMargin * 2 + qMax(iconSize, textLinesCount * styleOption.fontMetrics.height());
         break;
@@ -220,7 +232,11 @@ void DolphinItemListContainer::updateGridSize()
         itemHeight = innerMargin * 2 + qMax(iconSize, styleOption.fontMetrics.height());
         break;
     }
-    default: Q_ASSERT(false); break;
+    default:
+        itemWidth = -1;
+        itemHeight = -1;
+        Q_ASSERT(false);
+        break;
     }
 
     // Apply the calculated values
@@ -247,6 +263,12 @@ void DolphinItemListContainer::updateFont()
     m_fileItemListView->setStyleOption(styleOption);
 }
 
+void DolphinItemListContainer::updateAutoActivationDelay()
+{
+    const int delay = GeneralSettings::autoExpandFolders() ? 750 : -1;
+    controller()->setAutoActivationDelay(delay);
+}
+
 ViewModeSettings::ViewMode DolphinItemListContainer::viewMode() const
 {
     ViewModeSettings::ViewMode mode;
@@ -255,7 +277,9 @@ ViewModeSettings::ViewMode DolphinItemListContainer::viewMode() const
     case KFileItemListView::IconsLayout:   mode = ViewModeSettings::IconsMode; break;
     case KFileItemListView::CompactLayout: mode = ViewModeSettings::CompactMode; break;
     case KFileItemListView::DetailsLayout: mode = ViewModeSettings::DetailsMode; break;
-    default: Q_ASSERT(false); break;
+    default:                               mode = ViewModeSettings::IconsMode;
+                                           Q_ASSERT(false);
+                                           break;
     }
 
     return mode;