]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/panels/folders/folderspanel.cpp
Respect Shift- and Control-key for the rubberband selection
[dolphin.git] / src / panels / folders / folderspanel.cpp
index 45da8d8a201a818fde8ae2208a3c29ce044fbfe4..340e79d30794f8e754bc933059e91a0a02a272ac 100644 (file)
@@ -25,9 +25,9 @@
 #include "paneltreeview.h"
 #include "treeviewcontextmenu.h"
 
-#include <kfileplacesmodel.h>
-#include <kdirlister.h>
-#include <kfileitem.h>
+#include <KFilePlacesModel>
+#include <KDirLister>
+#include <KFileItem>
 #include <konq_operations.h>
 
 #include <QApplication>
@@ -39,9 +39,6 @@
 #include <QScrollBar>
 #include <QTimer>
 
-#include <views/draganddrophelper.h>
-#include <views/dolphinmodel.h>
-#include <views/dolphinsortfilterproxymodel.h>
 #include <views/dolphinview.h>
 #include <views/folderexpander.h>
 #include <views/renamedialog.h>
@@ -51,8 +48,8 @@ FoldersPanel::FoldersPanel(QWidget* parent) :
     m_setLeafVisible(false),
     m_mouseButtons(Qt::NoButton),
     m_dirLister(0),
-    m_dolphinModel(0),
-    m_proxyModel(0),
+    //m_dolphinModel(0),
+    //m_proxyModel(0),
     m_treeView(0),
     m_leafDir()
 {
@@ -63,30 +60,26 @@ FoldersPanel::~FoldersPanel()
 {
     FoldersPanelSettings::self()->writeConfig();
 
-    delete m_proxyModel;
-    m_proxyModel = 0;
-    delete m_dolphinModel;
-    m_dolphinModel = 0;
-    m_dirLister = 0; // deleted by m_dolphinModel
+    //delete m_proxyModel;
+    //m_proxyModel = 0;
+    //delete m_dolphinModel;
+    //m_dolphinModel = 0;
+    delete m_dirLister;
+    m_dirLister = 0;
 }
 
-QSize FoldersPanel::sizeHint() const
+void FoldersPanel::setHiddenFilesShown(bool show)
 {
-    return QSize(200, 400);
-}
-
-void FoldersPanel::setShowHiddenFiles(bool show)
-{
-    FoldersPanelSettings::setShowHiddenFiles(show);
-    if (m_dirLister != 0) {
+    FoldersPanelSettings::setHiddenFilesShown(show);
+    if (m_dirLister) {
         m_dirLister->setShowingDotFiles(show);
         m_dirLister->openUrl(m_dirLister->url(), KDirLister::Reload);
     }
 }
 
-bool FoldersPanel::showHiddenFiles() const
+bool FoldersPanel::hiddenFilesShown() const
 {
-    return FoldersPanelSettings::showHiddenFiles();
+    return FoldersPanelSettings::hiddenFilesShown();
 }
 
 void FoldersPanel::setAutoScrolling(bool enable)
@@ -103,9 +96,9 @@ bool FoldersPanel::autoScrolling() const
 void FoldersPanel::rename(const KFileItem& item)
 {
     if (DolphinSettings::instance().generalSettings()->renameInline()) {
-        const QModelIndex dirIndex = m_dolphinModel->indexForItem(item);
-        const QModelIndex proxyIndex = m_proxyModel->mapFromSource(dirIndex);
-        m_treeView->edit(proxyIndex);
+        //const QModelIndex dirIndex = m_dolphinModel->indexForItem(item);
+        //const QModelIndex proxyIndex = m_proxyModel->mapFromSource(dirIndex);
+        //m_treeView->edit(proxyIndex);
     } else {
         RenameDialog* dialog = new RenameDialog(this, KFileItemList() << item);
         dialog->setAttribute(Qt::WA_DeleteOnClose);
@@ -123,7 +116,7 @@ bool FoldersPanel::urlChanged()
         return false;
     }
 
-    if (m_dirLister != 0) {
+    if (m_dirLister) {
         m_setLeafVisible = true;
         loadTree(url());
     }
@@ -138,7 +131,7 @@ void FoldersPanel::showEvent(QShowEvent* event)
         return;
     }
 
-    if (m_dirLister == 0) {
+    if (!m_dirLister) {
         // Postpone the creating of the dir lister to the first show event.
         // This assures that no performance and memory overhead is given when the TreeView is not
         // used at all (see FoldersPanel::setUrl()).
@@ -148,21 +141,21 @@ void FoldersPanel::showEvent(QShowEvent* event)
         m_dirLister->setMainWindow(window());
         m_dirLister->setDelayedMimeTypes(true);
         m_dirLister->setAutoErrorHandlingEnabled(false, this);
-        m_dirLister->setShowingDotFiles(FoldersPanelSettings::showHiddenFiles());
+        m_dirLister->setShowingDotFiles(FoldersPanelSettings::hiddenFilesShown());
         connect(m_dirLister, SIGNAL(completed()), this, SLOT(slotDirListerCompleted()));
 
-        Q_ASSERT(m_dolphinModel == 0);
+        /*Q_ASSERT(!m_dolphinModel);
         m_dolphinModel = new DolphinModel(this);
         m_dolphinModel->setDirLister(m_dirLister);
         m_dolphinModel->setDropsAllowed(DolphinModel::DropOnDirectory);
-        connect(m_dolphinModel, SIGNAL(expand(const QModelIndex&)),
-                this, SLOT(expandToDir(const QModelIndex&)));
+        connect(m_dolphinModel, SIGNAL(expand(QModelIndex)),
+                this, SLOT(expandToDir(QModelIndex)));
 
-        Q_ASSERT(m_proxyModel == 0);
+        Q_ASSERT(!m_proxyModel);
         m_proxyModel = new DolphinSortFilterProxyModel(this);
         m_proxyModel->setSourceModel(m_dolphinModel);
 
-        Q_ASSERT(m_treeView == 0);
+        Q_ASSERT(!m_treeView);
         m_treeView = new PanelTreeView(this);
         m_treeView->setModel(m_proxyModel);
         m_proxyModel->setSorting(DolphinView::SortByName);
@@ -171,23 +164,21 @@ void FoldersPanel::showEvent(QShowEvent* event)
 
         new FolderExpander(m_treeView, m_proxyModel);
 
-        connect(m_treeView, SIGNAL(clicked(const QModelIndex&)),
-                this, SLOT(updateActiveView(const QModelIndex&)));
-        connect(m_treeView, SIGNAL(urlsDropped(const QModelIndex&, QDropEvent*)),
-                this, SLOT(dropUrls(const QModelIndex&, QDropEvent*)));
-        connect(m_treeView, SIGNAL(pressed(const QModelIndex&)),
+        connect(m_treeView, SIGNAL(clicked(QModelIndex)),
+                this, SLOT(updateActiveView(QModelIndex)));
+        connect(m_treeView, SIGNAL(urlsDropped(QModelIndex,QDropEvent*)),
+                this, SLOT(dropUrls(QModelIndex,QDropEvent*)));
+        connect(m_treeView, SIGNAL(pressed(QModelIndex)),
                 this, SLOT(updateMouseButtons()));
 
         connect(m_treeView->horizontalScrollBar(), SIGNAL(sliderMoved(int)),
                 this, SLOT(slotHorizontalScrollBarMoved(int)));
-        connect(m_treeView->verticalScrollBar(), SIGNAL(sliderMoved(int)),
-                this, SLOT(slotVerticalScrollBarMoved(int)));
         connect(m_treeView->verticalScrollBar(), SIGNAL(valueChanged(int)),
                 this, SLOT(slotVerticalScrollBarMoved(int)));
 
         QVBoxLayout* layout = new QVBoxLayout(this);
         layout->setMargin(0);
-        layout->addWidget(m_treeView);
+        layout->addWidget(m_treeView);*/
     }
 
     loadTree(url());
@@ -199,11 +190,11 @@ void FoldersPanel::contextMenuEvent(QContextMenuEvent* event)
     Panel::contextMenuEvent(event);
 
     KFileItem item;
-    const QModelIndex index = m_treeView->indexAt(event->pos());
+    /*const QModelIndex index = m_treeView->indexAt(event->pos());
     if (index.isValid()) {
         const QModelIndex dolphinModelIndex = m_proxyModel->mapToSource(index);
         item = m_dolphinModel->itemForIndex(dolphinModelIndex);
-    }
+    }*/
 
     QPointer<TreeViewContextMenu> contextMenu = new TreeViewContextMenu(this, item);
     contextMenu->open();
@@ -223,22 +214,25 @@ void FoldersPanel::keyPressEvent(QKeyEvent* event)
 
 void FoldersPanel::updateActiveView(const QModelIndex& index)
 {
-    const QModelIndex dirIndex = m_proxyModel->mapToSource(index);
+    Q_UNUSED(index);
+    /*const QModelIndex dirIndex = m_proxyModel->mapToSource(index);
     const KFileItem item = m_dolphinModel->itemForIndex(dirIndex);
     if (!item.isNull()) {
         emit changeUrl(item.url(), m_mouseButtons);
-    }
+    }*/
 }
 
 void FoldersPanel::dropUrls(const QModelIndex& index, QDropEvent* event)
 {
+    Q_UNUSED(event);
     if (index.isValid()) {
-        const QModelIndex dirIndex = m_proxyModel->mapToSource(index);
+        /*const QModelIndex dirIndex = m_proxyModel->mapToSource(index);
         KFileItem item = m_dolphinModel->itemForIndex(dirIndex);
         Q_ASSERT(!item.isNull());
         if (item.isDir()) {
-            DragAndDropHelper::instance().dropUrls(item, item.url(), event, this);
-        }
+            Q_UNUSED(event);
+            //DragAndDropHelper::instance().dropUrls(item, item.url(), event, this);
+        }*/
     }
 }
 
@@ -250,11 +244,11 @@ void FoldersPanel::expandToDir(const QModelIndex& index)
 
 void FoldersPanel::scrollToLeaf()
 {
-    const QModelIndex dirIndex = m_dolphinModel->indexForUrl(m_leafDir);
+    /*const QModelIndex dirIndex = m_dolphinModel->indexForUrl(m_leafDir);
     const QModelIndex proxyIndex = m_proxyModel->mapFromSource(dirIndex);
     if (proxyIndex.isValid()) {
         m_treeView->scrollTo(proxyIndex);
-    }
+    }*/
 }
 
 void FoldersPanel::updateMouseButtons()
@@ -264,15 +258,7 @@ void FoldersPanel::updateMouseButtons()
 
 void FoldersPanel::slotDirListerCompleted()
 {
-    m_treeView->resizeColumnToContents(DolphinModel::Name);
-
-    if (m_setLeafVisible) {
-        // Invoke scrollToLeaf() asynchronously. This assures that
-        // the horizontal scrollbar is shown after resizing the column
-        // (otherwise the scrollbar might hide the leaf).
-        QTimer::singleShot(0, this, SLOT(scrollToLeaf()));
-        m_setLeafVisible = false;
-    }
+//    m_treeView->resizeColumnToContents(DolphinModel::Name);
 }
 
 void FoldersPanel::slotHorizontalScrollBarMoved(int value)
@@ -293,7 +279,7 @@ void FoldersPanel::slotVerticalScrollBarMoved(int value)
 
 void FoldersPanel::loadTree(const KUrl& url)
 {
-    Q_ASSERT(m_dirLister != 0);
+    Q_ASSERT(m_dirLister);
     m_leafDir = url;
 
     KUrl baseUrl;
@@ -310,17 +296,26 @@ void FoldersPanel::loadTree(const KUrl& url)
         m_dirLister->stop();
         m_dirLister->openUrl(baseUrl, KDirLister::Reload);
     }
-    m_dolphinModel->expandToUrl(m_leafDir);
+    //m_dolphinModel->expandToUrl(m_leafDir);
 }
 
 void FoldersPanel::selectLeafDirectory()
 {
-    const QModelIndex dirIndex = m_dolphinModel->indexForUrl(m_leafDir);
+    /*const QModelIndex dirIndex = m_dolphinModel->indexForUrl(m_leafDir);
     const QModelIndex proxyIndex = m_proxyModel->mapFromSource(dirIndex);
+
     if (proxyIndex.isValid()) {
         QItemSelectionModel* selModel = m_treeView->selectionModel();
         selModel->setCurrentIndex(proxyIndex, QItemSelectionModel::ClearAndSelect);
-    }
+
+        if (m_setLeafVisible) {
+            // Invoke scrollToLeaf() asynchronously. This assures that
+            // the horizontal scrollbar is shown after resizing the column
+            // (otherwise the scrollbar might hide the leaf).
+            QTimer::singleShot(0, this, SLOT(scrollToLeaf()));
+            m_setLeafVisible = false;
+        }
+    }*/
 }
 
 #include "folderspanel.moc"