]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinmainwindow.cpp
replace QList<KFileItem> by KFileItemList, as KFileItemList is not QList<KFileItem...
[dolphin.git] / src / dolphinmainwindow.cpp
index b20beb26b1ff96dc55e236c3f3f3bf24b27ebe78..38408d7bf341b31441f09b3d42204cf4a2e304c5 100644 (file)
@@ -150,6 +150,9 @@ void DolphinMainWindow::refreshViews()
 void DolphinMainWindow::dropUrls(const KUrl::List& urls,
                                  const KUrl& destination)
 {
+    kDebug() << "Source" << urls;
+    kDebug() << "Destination:" << destination;
+
     Qt::DropAction action = Qt::CopyAction;
 
     Qt::KeyboardModifiers modifier = QApplication::keyboardModifiers();
@@ -321,9 +324,11 @@ void DolphinMainWindow::slotSortOrderChanged(Qt::SortOrder order)
     descending->setChecked(sortDescending);
 }
 
-void DolphinMainWindow::slotAdditionalInfoChanged(KFileItemDelegate::AdditionalInformation info)
+void DolphinMainWindow::slotAdditionalInfoChanged(KFileItemDelegate::InformationList list)
 {
     QAction* action = 0;
+    KFileItemDelegate::Information info = list.isEmpty() ? KFileItemDelegate::NoInformation : list.first();
+
     switch (info) {
     case KFileItemDelegate::FriendlyMimeType:
         action = actionCollection()->action("show_mime_info");
@@ -491,6 +496,7 @@ void DolphinMainWindow::deleteItems()
 void DolphinMainWindow::properties()
 {
     const KFileItemList list = m_activeViewContainer->view()->selectedItems();
+
     KPropertiesDialog dialog(list, this);
     dialog.exec();
 }
@@ -796,23 +802,31 @@ void DolphinMainWindow::showDateInfo()
 void DolphinMainWindow::toggleSplitView()
 {
     if (m_viewContainer[SecondaryView] == 0) {
-        const int newWidth = (m_viewContainer[PrimaryView]->width() - m_splitter->handleWidth()) / 2;
         // create a secondary view
+        const int newWidth = (m_viewContainer[PrimaryView]->width() - m_splitter->handleWidth()) / 2;
+
         const DolphinView* view = m_viewContainer[PrimaryView]->view();
-        m_viewContainer[SecondaryView] = new DolphinViewContainer(this,
-                                                                 0,
-                                                                 view->rootUrl());
+        m_viewContainer[SecondaryView] = new DolphinViewContainer(this, 0, view->rootUrl());
         connectViewSignals(SecondaryView);
         m_splitter->addWidget(m_viewContainer[SecondaryView]);
         m_splitter->setSizes(QList<int>() << newWidth << newWidth);
         m_viewContainer[SecondaryView]->view()->reload();
         m_viewContainer[SecondaryView]->setActive(false);
         m_viewContainer[SecondaryView]->show();
-    } else {
+    } else if (m_activeViewContainer == m_viewContainer[PrimaryView]) {
         // remove secondary view
         m_viewContainer[SecondaryView]->close();
         m_viewContainer[SecondaryView]->deleteLater();
         m_viewContainer[SecondaryView] = 0;
+    } else {
+        // The secondary view is active, hence from a users point of view
+        // the content of the secondary view should be moved to the primary view.
+        // From an implementation point of view it is more efficient to close
+        // the primary view and exchange the internal pointers afterwards.
+        m_viewContainer[PrimaryView]->close();
+        m_viewContainer[PrimaryView]->deleteLater();
+        m_viewContainer[PrimaryView] = m_viewContainer[SecondaryView];
+        m_viewContainer[SecondaryView] = 0;
     }
 
     setActiveViewContainer(m_viewContainer[PrimaryView]);
@@ -1028,11 +1042,9 @@ void DolphinMainWindow::init()
     updatePasteAction();
     updateGoActions();
 
-    const bool split = generalSettings->splitView();
-    if (split) {
+    if (generalSettings->splitView()) {
         toggleSplitView();
     }
-    updateSplitAction(split);
     updateViewActions();
 
     if (firstRun) {
@@ -1267,7 +1279,7 @@ void DolphinMainWindow::setupActions()
 
     QAction* split = actionCollection()->addAction("split_view");
     split->setShortcut(Qt::Key_F10);
-    updateSplitAction(false);
+    updateSplitAction();
     connect(split, SIGNAL(triggered()), this, SLOT(toggleSplitView()));
 
     QAction* reload = actionCollection()->addAction("reload");
@@ -1299,7 +1311,11 @@ void DolphinMainWindow::setupActions()
     connect(adjustViewProps, SIGNAL(triggered()), this, SLOT(adjustViewProperties()));
 
     // setup 'Go' menu
-    KStandardAction::back(this, SLOT(goBack()), actionCollection());
+    KAction* backAction = KStandardAction::back(this, SLOT(goBack()), actionCollection());
+    KShortcut backShortcut = backAction->shortcut();
+    backShortcut.setAlternate(Qt::Key_Backspace);
+    backAction->setShortcut(backShortcut);
+
     KStandardAction::forward(this, SLOT(goForward()), actionCollection());
     KStandardAction::up(this, SLOT(goUp()), actionCollection());
     KStandardAction::home(this, SLOT(goHome()), actionCollection());
@@ -1336,7 +1352,7 @@ void DolphinMainWindow::setupDockWidgets()
     infoDock->setWidget(infoWidget);
 
     infoDock->toggleViewAction()->setText(i18nc("@title:window", "Information"));
-    infoDock->toggleViewAction()->setShortcut(Qt::Key_F8);
+    infoDock->toggleViewAction()->setShortcut(Qt::Key_F11);
     actionCollection()->addAction("show_info_panel", infoDock->toggleViewAction());
 
     addDockWidget(Qt::RightDockWidgetArea, infoDock);
@@ -1355,7 +1371,7 @@ void DolphinMainWindow::setupDockWidgets()
     treeViewDock->setWidget(treeWidget);
 
     treeViewDock->toggleViewAction()->setText(i18nc("@title:window", "Folders"));
-    treeViewDock->toggleViewAction()->setShortcut(Qt::Key_F9);
+    treeViewDock->toggleViewAction()->setShortcut(Qt::Key_F7);
     actionCollection()->addAction("show_folders_panel", treeViewDock->toggleViewAction());
 
     addDockWidget(Qt::LeftDockWidgetArea, treeViewDock);
@@ -1379,7 +1395,7 @@ void DolphinMainWindow::setupDockWidgets()
     terminalDock->toggleViewAction()->setShortcut(Qt::Key_F4);
     actionCollection()->addAction("show_terminal_panel", terminalDock->toggleViewAction());
 
-    addDockWidget(Qt::RightDockWidgetArea, terminalDock);
+    addDockWidget(Qt::BottomDockWidgetArea, terminalDock);
     connect(this, SIGNAL(urlChanged(KUrl)),
             terminalWidget, SLOT(setUrl(KUrl)));
 
@@ -1398,7 +1414,7 @@ void DolphinMainWindow::setupDockWidgets()
     listView->setModel(DolphinSettings::instance().placesModel());
 
     placesDock->toggleViewAction()->setText(i18nc("@title:window", "Places"));
-    placesDock->toggleViewAction()->setShortcut(Qt::Key_F7);
+    placesDock->toggleViewAction()->setShortcut(Qt::Key_F9);
     actionCollection()->addAction("show_places_panel", placesDock->toggleViewAction());
 
     addDockWidget(Qt::LeftDockWidgetArea, placesDock);
@@ -1442,8 +1458,7 @@ void DolphinMainWindow::updateEditActions()
         KFileItemList::const_iterator it = list.begin();
         const KFileItemList::const_iterator end = list.end();
         while (it != end) {
-            KFileItem* item = *it;
-            const KUrl& url = item->url();
+            const KUrl& url = (*it).url();
             // only enable the 'Move to Trash' action for local files
             if (!url.isLocalFile()) {
                 enableMoveToTrash = false;
@@ -1507,7 +1522,7 @@ void DolphinMainWindow::updateViewActions()
         static_cast<KToggleAction*>(actionCollection()->action("show_hidden_files"));
     showHiddenFilesAction->setChecked(view->showHiddenFiles());
 
-    updateSplitAction(m_viewContainer[SecondaryView] != 0);
+    updateSplitAction();
 
     KToggleAction* editableLocactionAction =
         static_cast<KToggleAction*>(actionCollection()->action("editable_location"));
@@ -1564,8 +1579,8 @@ void DolphinMainWindow::connectViewSignals(int viewIndex)
             this, SLOT(slotSortingChanged(DolphinView::Sorting)));
     connect(view, SIGNAL(sortOrderChanged(Qt::SortOrder)),
             this, SLOT(slotSortOrderChanged(Qt::SortOrder)));
-    connect(view, SIGNAL(additionalInfoChanged(KFileItemDelegate::AdditionalInformation)),
-            this, SLOT(slotAdditionalInfoChanged(KFileItemDelegate::AdditionalInformation)));
+    connect(view, SIGNAL(additionalInfoChanged(KFileItemDelegate::InformationList)),
+            this, SLOT(slotAdditionalInfoChanged(KFileItemDelegate::InformationList)));
     connect(view, SIGNAL(selectionChanged(KFileItemList)),
             this, SLOT(slotSelectionChanged(KFileItemList)));
     connect(view, SIGNAL(requestItemInfo(KFileItem)),
@@ -1580,12 +1595,17 @@ void DolphinMainWindow::connectViewSignals(int viewIndex)
             this, SLOT(slotHistoryChanged()));
 }
 
-void DolphinMainWindow::updateSplitAction(bool isSplit)
+void DolphinMainWindow::updateSplitAction()
 {
     QAction* splitAction = actionCollection()->action("split_view");
-    if (isSplit) {
-        splitAction->setText(i18nc("@action:intoolbar Join views", "Join"));
-        splitAction->setIcon(KIcon("fileview-join"));
+    if (m_viewContainer[SecondaryView] != 0) {
+        if (m_activeViewContainer == m_viewContainer[PrimaryView]) {
+            splitAction->setText(i18nc("@action:intoolbar Close right view", "Close"));
+            splitAction->setIcon(KIcon("fileview-close-right"));
+        } else {
+            splitAction->setText(i18nc("@action:intoolbar Close left view", "Close"));
+            splitAction->setIcon(KIcon("fileview-close-left"));
+        }
     } else {
         splitAction->setText(i18nc("@action:intoolbar Split view", "Split"));
         splitAction->setIcon(KIcon("fileview-split"));