]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinitemlistcontainer.cpp
Assure that the general settings are refreshed
[dolphin.git] / src / views / dolphinitemlistcontainer.cpp
index 6a6a51fb5833f4c178f8c97c5447c1d8b14fe5b8..870043bc4cf556ef40a836d77dd494412600121f 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "dolphinitemlistcontainer.h"
 
+#include "dolphin_generalsettings.h"
 #include "dolphin_iconsmodesettings.h"
 #include "dolphin_detailsmodesettings.h"
 #include "dolphin_compactmodesettings.h"
@@ -48,58 +49,11 @@ DolphinItemListContainer::DolphinItemListContainer(KDirLister* dirLister,
 
     m_fileItemListView = new KFileItemListView();
     m_fileItemListView->setWidgetCreator(new KItemListWidgetCreator<DolphinFileItemListWidget>());    
+    m_fileItemListView->setEnabledSelectionToggles(GeneralSettings::showSelectionToggle());
     controller()->setView(m_fileItemListView);
 
-    KItemListStyleOption option;
-
-    // TODO:
-    option.font = parent->font();
-    option.fontMetrics = QFontMetrics(parent->font());
-
+    updateFont();
     updateGridSize();
-/*
-    connect(this, SIGNAL(clicked(QModelIndex)),
-            dolphinViewController, SLOT(requestTab(QModelIndex)));*/
-/*
-    connect(this, SIGNAL(entered(QModelIndex)),
-            dolphinViewController, SLOT(emitItemEntered(QModelIndex)));
-    connect(this, SIGNAL(viewportEntered()),
-            dolphinViewController, SLOT(emitViewportEntered()));*/
-
-    // apply the icons mode settings to the widget
-    //const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings();
-    //Q_ASSERT(settings);
-
-    /*if (settings->useSystemFont()) {
-        m_font = KGlobalSettings::generalFont();
-    } else {
-        m_font = QFont(settings->fontFamily(),
-                       qRound(settings->fontSize()),
-                       settings->fontWeight(),
-                       settings->italicFont());
-        m_font.setPointSizeF(settings->fontSize());
-    }
-
-    setWordWrap(settings->numberOfTextlines() > 1);
-
-    if (settings->arrangement() == QListView::TopToBottom) {
-        setFlow(QListView::LeftToRight);
-        m_decorationPosition = QStyleOptionViewItem::Top;
-        m_displayAlignment = Qt::AlignHCenter;
-    } else {
-        setFlow(QListView::TopToBottom);
-        m_decorationPosition = QStyleOptionViewItem::Left;
-        m_displayAlignment = Qt::AlignLeft | Qt::AlignVCenter;
-    }
-
-    connect(m_categoryDrawer, SIGNAL(actionRequested(int,QModelIndex)), this, SLOT(categoryDrawerActionRequested(int,QModelIndex)));
-    setCategoryDrawer(m_categoryDrawer);
-
-    connect(KGlobalSettings::self(), SIGNAL(settingsChanged(int)),
-            this, SLOT(slotGlobalSettingsChanged(int)));*/
-
-    //updateGridSize(dolphinView->showPreview(), 0);
-    /*m_extensionsFactory = new ViewExtensionsFactory(this, dolphinViewController, viewModeController);*/
 }
 
 DolphinItemListContainer::~DolphinItemListContainer()
@@ -108,9 +62,9 @@ DolphinItemListContainer::~DolphinItemListContainer()
     CompactModeSettings::self()->writeConfig();
     DetailsModeSettings::self()->writeConfig();
 
-    KItemListView* view = controller()->view();
     controller()->setView(0);
-    delete view;
+    delete m_fileItemListView;
+    m_fileItemListView = 0;
 }
 
 void DolphinItemListContainer::setPreviewsShown(bool show)
@@ -151,23 +105,13 @@ void DolphinItemListContainer::setZoomLevel(int level)
 
     m_zoomLevel = level;
 
+    ViewModeSettings settings(viewMode());
     if (previewsShown()) {
         const int previewSize = ZoomLevelInfo::iconSizeForZoomLevel(level);
-
-        switch (itemLayout()) {
-        case KFileItemListView::IconsLayout:   IconsModeSettings::setPreviewSize(previewSize); break;
-        case KFileItemListView::CompactLayout: CompactModeSettings::setPreviewSize(previewSize); break;
-        case KFileItemListView::DetailsLayout: DetailsModeSettings::setPreviewSize(previewSize); break;
-        default: Q_ASSERT(false); break;
-        }
+        settings.setPreviewSize(previewSize);
     } else {
         const int iconSize = ZoomLevelInfo::iconSizeForZoomLevel(level);
-        switch (itemLayout()) {
-        case KFileItemListView::IconsLayout:   IconsModeSettings::setIconSize(iconSize); break;
-        case KFileItemListView::CompactLayout: CompactModeSettings::setIconSize(iconSize); break;
-        case KFileItemListView::DetailsLayout: DetailsModeSettings::setIconSize(iconSize); break;
-        default: Q_ASSERT(false); break;
-        }
+        settings.setIconSize(iconSize);
     }
 
     updateGridSize();
@@ -205,6 +149,7 @@ void DolphinItemListContainer::setItemLayout(KFileItemListView::Layout layout)
         break;
     }
 
+    updateFont();
     updateGridSize();
     endTransaction();
 }
@@ -224,26 +169,21 @@ void DolphinItemListContainer::endTransaction()
     m_fileItemListView->endTransaction();
 }
 
+void DolphinItemListContainer::refresh()
+{
+    ViewModeSettings settings(viewMode());
+    settings.readConfig();
+
+    updateFont();
+    updateGridSize();
+}
+
 void DolphinItemListContainer::updateGridSize()
 {
-    // Calculate the size of the icon
-    int iconSize;
-    if (previewsShown()) {
-        switch (itemLayout()) {
-        case KFileItemListView::IconsLayout:   iconSize = IconsModeSettings::previewSize(); break;
-        case KFileItemListView::CompactLayout: iconSize = CompactModeSettings::previewSize(); break;
-        case KFileItemListView::DetailsLayout: iconSize = DetailsModeSettings::previewSize(); break;
-        default: Q_ASSERT(false); break;
-        }
-    } else {
-        switch (itemLayout()) {
-        case KFileItemListView::IconsLayout:   iconSize = IconsModeSettings::iconSize(); break;
-        case KFileItemListView::CompactLayout: iconSize = CompactModeSettings::iconSize(); break;
-        case KFileItemListView::DetailsLayout: iconSize = DetailsModeSettings::iconSize(); break;
-        default: Q_ASSERT(false); break;
-        }
-    }
+    const ViewModeSettings settings(viewMode());
 
+    // Calculate the size of the icon
+    const int iconSize = previewsShown() ? settings.previewSize() : settings.iconSize();
     m_zoomLevel = ZoomLevelInfo::zoomLevelForIconSize(QSize(iconSize, iconSize));
     KItemListStyleOption styleOption = m_fileItemListView->styleOption();
 
@@ -283,4 +223,35 @@ void DolphinItemListContainer::updateGridSize()
     m_fileItemListView->setItemSize(QSizeF(itemWidth, itemHeight));
 }
 
+void DolphinItemListContainer::updateFont()
+{
+    KItemListStyleOption styleOption = m_fileItemListView->styleOption();
+
+    const ViewModeSettings settings(viewMode());
+
+    QFont font(settings.fontFamily(), qRound(settings.fontSize()));
+    font.setItalic(settings.italicFont());
+    font.setWeight(settings.fontWeight());
+    font.setPointSizeF(settings.fontSize());
+
+    styleOption.font = font;
+    styleOption.fontMetrics = QFontMetrics(font);
+
+    m_fileItemListView->setStyleOption(styleOption);
+}
+
+ViewModeSettings::ViewMode DolphinItemListContainer::viewMode() const
+{
+    ViewModeSettings::ViewMode mode;
+
+    switch (itemLayout()) {
+    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;
+    }
+
+    return mode;
+}
+
 #include "dolphinitemlistcontainer.moc"