]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinview.cpp
* align labels on the right like suggested in the KDE 4 HIG
[dolphin.git] / src / dolphinview.cpp
index 24b331d84b9607a0940f56b79722131979aaf508..45fdfebaf858050ed19f8853347824b4a8a647be 100644 (file)
 #include "dolphincontroller.h"
 #include "dolphinsortfilterproxymodel.h"
 #include "dolphindetailsview.h"
+#include "dolphin_detailsmodesettings.h"
 #include "dolphiniconsview.h"
 #include "dolphinsettings.h"
 #include "dolphin_generalsettings.h"
+#include "folderexpander.h"
 #include "iconmanager.h"
 #include "renamedialog.h"
 #include "tooltipmanager.h"
 #include "viewproperties.h"
+#include "zoomlevelinfo.h"
 
 DolphinView::DolphinView(QWidget* parent,
                          const KUrl& url,
@@ -362,10 +365,10 @@ QPoint DolphinView::contentsPosition() const
 
 void DolphinView::setZoomLevel(int level)
 {
-    if (level < zoomLevelMinimum()) {
-        level = zoomLevelMinimum();
-    } else if (level > zoomLevelMaximum()) {
-        level = zoomLevelMaximum();
+    if (level < ZoomLevelInfo::minimumLevel()) {
+        level = ZoomLevelInfo::minimumLevel();
+    } else if (level > ZoomLevelInfo::maximumLevel()) {
+        level = ZoomLevelInfo::maximumLevel();
     }
     
     if (level != zoomLevel()) {
@@ -380,16 +383,6 @@ int DolphinView::zoomLevel() const
     return m_controller->zoomLevel();
 }
 
-int DolphinView::zoomLevelMinimum() const
-{
-    return m_controller->zoomLevelMinimum();
-}
-
-int DolphinView::zoomLevelMaximum() const
-{
-    return m_controller->zoomLevelMaximum();
-}
-
 void DolphinView::setSorting(Sorting sorting)
 {
     if (sorting != this->sorting()) {
@@ -603,12 +596,13 @@ void DolphinView::renameSelectedItems()
 void DolphinView::trashSelectedItems()
 {
     emit doingOperation(KIO::FileUndoManager::Trash);
-    KonqOperations::del(this, KonqOperations::TRASH, selectedUrls());
+    const KUrl::List list = simplifiedSelectedUrls();
+    KonqOperations::del(this, KonqOperations::TRASH, list);
 }
 
 void DolphinView::deleteSelectedItems()
 {
-    const KUrl::List list = selectedUrls();
+    const KUrl::List list = simplifiedSelectedUrls();
     const bool del = KonqOperations::askDeleteConfirmation(list,
                      KonqOperations::DEL,
                      KonqOperations::DEFAULT_CONFIRMATION,
@@ -624,7 +618,7 @@ void DolphinView::deleteSelectedItems()
 void DolphinView::cutSelectedItems()
 {
     QMimeData* mimeData = new QMimeData();
-    const KUrl::List kdeUrls = selectedUrls();
+    const KUrl::List kdeUrls = simplifiedSelectedUrls();
     const KUrl::List mostLocalUrls;
     KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, true);
     QApplication::clipboard()->setMimeData(mimeData);
@@ -741,7 +735,6 @@ void DolphinView::toggleAdditionalInfo(QAction* action)
     }
 }
 
-
 void DolphinView::mouseReleaseEvent(QMouseEvent* event)
 {
     QWidget::mouseReleaseEvent(event);
@@ -1155,6 +1148,20 @@ void DolphinView::createView()
     Q_ASSERT(view != 0);
     view->installEventFilter(this);
 
+    if (m_mode != ColumnView) {
+        // Give the view the ability to auto-expand its directories on hovering
+        // (the column view takes care about this itself). If the details view
+        // uses expandable folders, the auto-expanding should be used always.
+        DolphinSettings& settings = DolphinSettings::instance();
+        const bool enabled = settings.generalSettings()->autoExpandFolders() ||
+                            ((m_detailsView != 0) && settings.detailsModeSettings()->expandableFolders());
+
+        FolderExpander* folderExpander = new FolderExpander(view, m_proxyModel);
+        folderExpander->setEnabled(enabled);
+        connect(folderExpander, SIGNAL(enterDir(const QModelIndex&)),
+                m_controller, SLOT(triggerItem(const QModelIndex&)));
+    }
+
     m_controller->setItemView(view);
 
     m_fileItemDelegate = new KFileItemDelegate(view);
@@ -1260,11 +1267,20 @@ void DolphinView::pasteToUrl(const KUrl& url)
 
 void DolphinView::updateZoomLevel(int oldZoomLevel)
 {       
-    const int newZoomLevel = DolphinController::zoomLevelForIconSize(itemView()->iconSize());
+    const int newZoomLevel = ZoomLevelInfo::zoomLevelForIconSize(itemView()->iconSize());
     if (oldZoomLevel != newZoomLevel) {
         m_controller->setZoomLevel(newZoomLevel);
         emit zoomLevelChanged(newZoomLevel);
     }
 }
 
+KUrl::List DolphinView::simplifiedSelectedUrls() const
+{
+    KUrl::List list = selectedUrls();
+    if ((m_detailsView != 0) && m_detailsView->itemsExpandable()) {
+        list = KonqOperations::simplifiedUrlList(list);
+    }
+    return list;
+}
+
 #include "dolphinview.moc"