]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincolumnwidget.cpp
I wanted to this for KDE 4.1 already, but well...
[dolphin.git] / src / dolphincolumnwidget.cpp
index 4a6527c1bed6ea3b896e32a7b5d87193504082e7..d80ef1c47bb615e23b70522ce82247223350ea00 100644 (file)
@@ -1,3 +1,5 @@
+Don't compile
+
 /***************************************************************************
  *   Copyright (C) 2007 by Peter Penz <peter.penz@gmx.at>                  *
  *                                                                         *
@@ -32,6 +34,7 @@
 #include "folderexpander.h"
 #include "selectionmanager.h"
 #include "tooltips/tooltipmanager.h"
+#include "versioncontrolobserver.h"
 
 #include <kcolorscheme.h>
 #include <kdirlister.h>
@@ -48,6 +51,8 @@
 #include <QPoint>
 #include <QScrollBar>
 
+#include <kdebug.h>
+
 DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
                                          DolphinColumnView* columnView,
                                          const KUrl& url) :
@@ -95,9 +100,6 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
                        settings->italicFont());
     }
 
-    const int iconSize = settings->iconSize();
-    setDecorationSize(QSize(iconSize, iconSize));
-
     KFileItemDelegate* delegate = new KFileItemDelegate(this);
     delegate->setShowToolTipWhenElided(false);
     setItemDelegate(delegate);
@@ -109,6 +111,18 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
     connect(this, SIGNAL(entered(const QModelIndex&)),
             this, SLOT(slotEntered(const QModelIndex&)));
 
+    const DolphinView* dolphinView = m_view->m_controller->dolphinView();
+    connect(dolphinView, SIGNAL(sortingChanged(DolphinView::Sorting)),
+            this, SLOT(slotSortingChanged(DolphinView::Sorting)));
+    connect(dolphinView, SIGNAL(sortOrderChanged(Qt::SortOrder)),
+            this, SLOT(slotSortOrderChanged(Qt::SortOrder)));
+    connect(dolphinView, SIGNAL(sortFoldersFirstChanged(bool)),
+            this, SLOT(slotSortFoldersFirstChanged(bool)));
+    connect(dolphinView, SIGNAL(showHiddenFilesChanged()),
+            this, SLOT(slotShowHiddenFilesChanged()));
+    connect(dolphinView, SIGNAL(showPreviewChanged()),
+            this, SLOT(slotShowPreviewChanged()));
+
     m_dirLister = new DolphinDirLister();
     m_dirLister->setAutoUpdate(true);
     m_dirLister->setMainWindow(window());
@@ -123,9 +137,10 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
     m_proxyModel = new DolphinSortFilterProxyModel(this);
     m_proxyModel->setSourceModel(m_dolphinModel);
     m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
-    const DolphinView* dolphinView = m_view->m_controller->dolphinView();
+
     m_proxyModel->setSorting(dolphinView->sorting());
     m_proxyModel->setSortOrder(dolphinView->sortOrder());
+    m_proxyModel->setSortFoldersFirst(dolphinView->sortFoldersFirst());
 
     setModel(m_proxyModel);
 
@@ -137,22 +152,26 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
                 m_selectionManager, SLOT(reset()));
     }
 
-    m_previewGenerator = new KFilePreviewGenerator(this);
-    m_previewGenerator->setPreviewShown(m_view->m_controller->dolphinView()->showPreview());
+    //m_previewGenerator = new KFilePreviewGenerator(this);
+    //m_previewGenerator->setPreviewShown(m_view->m_controller->dolphinView()->showPreview());
 
-    if (DolphinSettings::instance().generalSettings()->showToolTips()) {
-        m_toolTipManager = new ToolTipManager(this, m_proxyModel);
-    }
+    //if (DolphinSettings::instance().generalSettings()->showToolTips()) {
+    //    m_toolTipManager = new ToolTipManager(this, m_proxyModel);
+    //}
 
-    m_dirLister->openUrl(url, KDirLister::NoFlags);
+    //m_dirLister->openUrl(url, KDirLister::NoFlags);
 
     connect(KGlobalSettings::self(), SIGNAL(kdisplayFontChanged()),
             this, SLOT(updateFont()));
 
-    FolderExpander* folderExpander = new FolderExpander(this, m_proxyModel);
+    /*FolderExpander* folderExpander = new FolderExpander(this, m_proxyModel);
     folderExpander->setEnabled(DolphinSettings::instance().generalSettings()->autoExpandFolders());
     connect (folderExpander, SIGNAL(enterDir(const QModelIndex&)),
              m_view->m_controller, SLOT(triggerItem(const QModelIndex&)));
+
+    new VersionControlObserver(this);*/
+
+    updateDecorationSize(m_view->m_controller->dolphinView()->showPreview());
 }
 
 DolphinColumnWidget::~DolphinColumnWidget()
@@ -164,19 +183,6 @@ DolphinColumnWidget::~DolphinColumnWidget()
     m_dirLister = 0; // deleted by m_dolphinModel
 }
 
-void DolphinColumnWidget::setDecorationSize(const QSize& size)
-{
-    setIconSize(size);
-    m_decorationSize = size;
-    doItemsLayout();
-    if (m_previewGenerator != 0) {
-        m_previewGenerator->updatePreviews();
-    }
-    if (m_selectionManager != 0) {
-        m_selectionManager->reset();
-    }
-}
-
 void DolphinColumnWidget::setActive(bool active)
 {
     if (active && (m_view->focusProxy() != this)) {
@@ -194,13 +200,13 @@ void DolphinColumnWidget::setActive(bool active)
     }
 }
 
-void DolphinColumnWidget::reload()
+/*void DolphinColumnWidget::reload()
 {
     m_dirLister->stop();
     m_dirLister->openUrl(m_url, KDirLister::Reload);
-}
+}*/
 
-void DolphinColumnWidget::setSorting(DolphinView::Sorting sorting)
+/*void DolphinColumnWidget::setSorting(DolphinView::Sorting sorting)
 {
     m_proxyModel->setSorting(sorting);
 }
@@ -210,6 +216,11 @@ void DolphinColumnWidget::setSortOrder(Qt::SortOrder order)
     m_proxyModel->setSortOrder(order);
 }
 
+void DolphinColumnWidget::setSortFoldersFirst(bool foldersFirst)
+{
+    m_proxyModel->setSortFoldersFirst(foldersFirst);
+}
+
 void DolphinColumnWidget::setShowHiddenFiles(bool show)
 {
     if (show != m_dirLister->showingDotFiles()) {
@@ -225,7 +236,7 @@ void DolphinColumnWidget::setShowPreview(bool show)
 
     m_dirLister->stop();
     m_dirLister->openUrl(m_url, KDirLister::Reload);
-}
+}*/
 
 void DolphinColumnWidget::updateBackground()
 {
@@ -390,7 +401,31 @@ void DolphinColumnWidget::keyPressEvent(QKeyEvent* event)
 {
     QListView::keyPressEvent(event);
     requestActivation();
-    m_view->m_controller->handleKeyPressEvent(event);
+
+    DolphinController* controller = m_view->m_controller;
+    controller->handleKeyPressEvent(event);
+    switch (event->key()) {
+    case Qt::Key_Right: {
+        // Special key handling for the column: A Key_Right should
+        // open a new column for the currently selected folder.
+        const QModelIndex index = currentIndex();
+        const KFileItem item = controller->itemForIndex(index);
+        if (!item.isNull() && item.isDir()) {
+            controller->emitItemTriggered(item);
+        }
+        break;
+    }
+
+    case Qt::Key_Escape:
+        selectionModel()->setCurrentIndex(selectionModel()->currentIndex(),
+                                          QItemSelectionModel::Current |
+                                          QItemSelectionModel::Clear);
+        break;
+
+    default:
+        break;
+    }
+
     if (m_toolTipManager != 0) {
         m_toolTipManager->hideTip();
     }
@@ -412,6 +447,10 @@ void DolphinColumnWidget::contextMenuEvent(QContextMenuEvent* event)
         clearSelection();
     }
 
+    if (m_toolTipManager != 0) {
+        m_toolTipManager->hideTip();
+    }
+
     const QPoint pos = m_view->viewport()->mapFromGlobal(event->globalPos());
     Q_ASSERT(m_view->m_controller->itemView() == this);
     m_view->m_controller->triggerContextMenuRequest(pos);
@@ -450,16 +489,14 @@ void DolphinColumnWidget::selectionChanged(const QItemSelection& selected, const
     QListView::selectionChanged(selected, deselected);
 
     QItemSelectionModel* selModel = m_view->selectionModel();
-    selModel->select(selected, QItemSelectionModel::Select);
-    selModel->select(deselected, QItemSelectionModel::Deselect);
+    //selModel->select(selected, QItemSelectionModel::Select);
+    //selModel->select(deselected, QItemSelectionModel::Deselect);
 }
 
 void DolphinColumnWidget::currentChanged(const QModelIndex& current, const QModelIndex& previous)
 {
     QListView::currentChanged(current, previous);
-    if (current.isValid() && !m_autoScroller->isActive()) {
-        scrollTo(current);
-    }
+    m_autoScroller->handleCurrentIndexChange(current, previous);
 }
 
 void DolphinColumnWidget::slotEntered(const QModelIndex& index)
@@ -489,17 +526,28 @@ void DolphinColumnWidget::updateFont()
     }
 }
 
+void DolphinColumnWidget::slotShowPreviewChanged()
+{
+    kDebug() << "--- slotpreviewchanged";
+    const DolphinView* view = m_view->m_controller->dolphinView();
+    updateDecorationSize(view->showPreview());
+}
+
 void DolphinColumnWidget::activate()
 {
     setFocus(Qt::OtherFocusReason);
 
-    connect(this, SIGNAL(clicked(const QModelIndex&)),
-            m_view->m_controller, SLOT(requestTab(const QModelIndex&)));
-    connect(this, SIGNAL(clicked(const QModelIndex&)),
-            m_view->m_controller, SLOT(triggerItem(const QModelIndex&)));
+    if (KGlobalSettings::singleClick()) {
+        connect(this, SIGNAL(clicked(const QModelIndex&)),
+                m_view->m_controller, SLOT(triggerItem(const QModelIndex&)));
+    } else {
+        connect(this, SIGNAL(doubleClicked(const QModelIndex&)),
+                m_view->m_controller, SLOT(triggerItem(const QModelIndex&)));
+    }
 
-    if (selectionModel() && selectionModel()->currentIndex().isValid())
+    if (selectionModel() && selectionModel()->currentIndex().isValid()) {
         selectionModel()->setCurrentIndex(selectionModel()->currentIndex(), QItemSelectionModel::SelectCurrent);
+    }
 
     updateBackground();
 }
@@ -507,9 +555,13 @@ void DolphinColumnWidget::activate()
 void DolphinColumnWidget::deactivate()
 {
     clearFocus();
-
-    disconnect(this, SIGNAL(clicked(const QModelIndex&)),
-               m_view->m_controller, SLOT(triggerItem(const QModelIndex&)));
+    if (KGlobalSettings::singleClick()) {
+        disconnect(this, SIGNAL(clicked(const QModelIndex&)),
+                   m_view->m_controller, SLOT(triggerItem(const QModelIndex&)));
+    } else {
+        disconnect(this, SIGNAL(doubleClicked(const QModelIndex&)),
+                   m_view->m_controller, SLOT(triggerItem(const QModelIndex&)));
+    }
 
     const QModelIndex current = selectionModel()->currentIndex();
     selectionModel()->clear();
@@ -517,4 +569,20 @@ void DolphinColumnWidget::deactivate()
     updateBackground();
 }
 
+void DolphinColumnWidget::updateDecorationSize(bool showPreview)
+{
+    ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
+    const int iconSize = showPreview ? settings->previewSize() : settings->iconSize();
+    const QSize size(iconSize, iconSize);
+    setIconSize(size);
+
+    m_decorationSize = size;
+
+    if (m_selectionManager != 0) {
+        m_selectionManager->reset();
+    }
+
+    doItemsLayout();
+}
+
 #include "dolphincolumnwidget.moc"