]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinmainwindow.cpp
Fixed bug for selecting files with --select parameter.
[dolphin.git] / src / dolphinmainwindow.cpp
index 0f075a11cb4d0456eb60f989b6b56e2fbc0043a2..6ca6e59f7900233268a63773c20956222ada038a 100644 (file)
@@ -42,7 +42,6 @@
 #include "statusbar/dolphinstatusbar.h"
 #include "views/dolphinviewactionhandler.h"
 #include "views/dolphinremoteencoding.h"
-#include "views/draganddrophelper.h"
 #include "views/viewproperties.h"
 
 #ifndef Q_OS_WIN
@@ -50,7 +49,6 @@
 #endif
 
 #include "dolphin_generalsettings.h"
-#include "dolphin_iconsmodesettings.h"
 #include "dolphin_searchsettings.h"
 
 #include <KAcceleratorManager>
 #include <QToolButton>
 #include <QSplitter>
 
+namespace {
+    // Used for GeneralSettings::version() to determine whether
+    // an updated version of Dolphin is running.
+    const int CurrentDolphinVersion = 200;
+};
+
 /*
  * Menu shown when pressing the configure-button in the toolbar.
  */
@@ -153,21 +157,21 @@ DolphinMainWindow::DolphinMainWindow() :
 
     connect(undoManager, SIGNAL(undoAvailable(bool)),
             this, SLOT(slotUndoAvailable(bool)));
-    connect(undoManager, SIGNAL(undoTextChanged(const QString&)),
-            this, SLOT(slotUndoTextChanged(const QString&)));
+    connect(undoManager, SIGNAL(undoTextChanged(QString)),
+            this, SLOT(slotUndoTextChanged(QString)));
     connect(undoManager, SIGNAL(jobRecordingStarted(CommandType)),
             this, SLOT(clearStatusBar()));
     connect(undoManager, SIGNAL(jobRecordingFinished(CommandType)),
             this, SLOT(showCommand(CommandType)));
-    connect(DolphinSettings::instance().placesModel(), SIGNAL(errorMessage(const QString&)),
-            this, SLOT(showErrorMessage(const QString&)));
-    connect(&DragAndDropHelper::instance(), SIGNAL(errorMessage(const QString&)),
-            this, SLOT(showErrorMessage(const QString&)));
+    connect(DolphinSettings::instance().placesModel(), SIGNAL(errorMessage(QString)),
+            this, SLOT(showErrorMessage(QString)));
+    //connect(&DragAndDropHelper::instance(), SIGNAL(errorMessage(QString)),
+    //        this, SLOT(showErrorMessage(QString)));
 
     const DolphinSettings& settings = DolphinSettings::instance();
 
     GeneralSettings* generalSettings = settings.generalSettings();
-    const bool firstRun = generalSettings->firstRun();
+    const bool firstRun = (generalSettings->version() < 200);
     if (firstRun) {
         generalSettings->setViewPropsTimestamp(QDateTime::currentDateTime());
     }
@@ -194,7 +198,7 @@ DolphinMainWindow::DolphinMainWindow() :
     m_actionHandler->setCurrentView(view);
 
     m_remoteEncoding = new DolphinRemoteEncoding(this, m_actionHandler);
-    connect(this, SIGNAL(urlChanged(const KUrl&)),
+    connect(this, SIGNAL(urlChanged(KUrl)),
             m_remoteEncoding, SLOT(slotAboutToOpenUrl()));
 
     m_tabBar = new KTabBar(this);
@@ -204,18 +208,18 @@ DolphinMainWindow::DolphinMainWindow() :
             this, SLOT(setActiveTab(int)));
     connect(m_tabBar, SIGNAL(tabCloseRequested(int)),
             this, SLOT(closeTab(int)));
-    connect(m_tabBar, SIGNAL(contextMenu(int, const QPoint&)),
-            this, SLOT(openTabContextMenu(int, const QPoint&)));
+    connect(m_tabBar, SIGNAL(contextMenu(int,QPoint)),
+            this, SLOT(openTabContextMenu(int,QPoint)));
     connect(m_tabBar, SIGNAL(newTabRequest()),
             this, SLOT(openNewTab()));
-    connect(m_tabBar, SIGNAL(testCanDecode(const QDragMoveEvent*, bool&)),
-            this, SLOT(slotTestCanDecode(const QDragMoveEvent*, bool&)));
+    connect(m_tabBar, SIGNAL(testCanDecode(const QDragMoveEvent*,bool&)),
+            this, SLOT(slotTestCanDecode(const QDragMoveEvent*,bool&)));
     connect(m_tabBar, SIGNAL(mouseMiddleClick(int)),
             this, SLOT(closeTab(int)));
-    connect(m_tabBar, SIGNAL(tabMoved(int, int)),
-            this, SLOT(slotTabMoved(int, int)));
-    connect(m_tabBar, SIGNAL(receivedDropEvent(int, QDropEvent*)),
-            this, SLOT(tabDropEvent(int, QDropEvent*)));
+    connect(m_tabBar, SIGNAL(tabMoved(int,int)),
+            this, SLOT(slotTabMoved(int,int)));
+    connect(m_tabBar, SIGNAL(receivedDropEvent(int,QDropEvent*)),
+            this, SLOT(tabDropEvent(int,QDropEvent*)));
 
     m_tabBar->blockSignals(true);  // signals get unblocked after at least 2 tabs are open
 
@@ -326,8 +330,10 @@ void DolphinMainWindow::openFiles(const QList<KUrl>& files)
     const int tabCount = m_viewTab.count();
     for (int i = 0; i < tabCount; ++i) {
         m_viewTab[i].primaryView->view()->markUrlsAsSelected(files);
+        m_viewTab[i].primaryView->view()->markUrlAsCurrent(files.at(0));
         if (m_viewTab[i].secondaryView) {
             m_viewTab[i].secondaryView->view()->markUrlsAsSelected(files);
+            m_viewTab[i].secondaryView->view()->markUrlAsCurrent(files.at(0));
         }
     }
 }
@@ -647,8 +653,7 @@ void DolphinMainWindow::closeEvent(QCloseEvent* event)
         }
     }
 
-    generalSettings->setFirstRun(false);
-
+    generalSettings->setVersion(CurrentDolphinVersion);
     settings.save();
 
     if (m_searchDockIsTemporaryVisible) {
@@ -725,14 +730,14 @@ void DolphinMainWindow::readProperties(const KConfigGroup& group)
 
 void DolphinMainWindow::updateNewMenu()
 {
-    m_newFileMenu->setViewShowsHiddenFiles(activeViewContainer()->view()->showHiddenFiles());
+    m_newFileMenu->setViewShowsHiddenFiles(activeViewContainer()->view()->hiddenFilesShown());
     m_newFileMenu->checkUpToDate();
     m_newFileMenu->setPopupFiles(activeViewContainer()->url());
 }
 
 void DolphinMainWindow::createDirectory()
 {
-    m_newFileMenu->setViewShowsHiddenFiles(activeViewContainer()->view()->showHiddenFiles());
+    m_newFileMenu->setViewShowsHiddenFiles(activeViewContainer()->view()->hiddenFilesShown());
     m_newFileMenu->setPopupFiles(activeViewContainer()->url());
     m_newFileMenu->createDirectory();
 }
@@ -1313,7 +1318,8 @@ void DolphinMainWindow::tabDropEvent(int tab, QDropEvent* event)
     if (!urls.isEmpty() && tab != -1) {
         const ViewTab& viewTab = m_viewTab[tab];
         const KUrl destPath = viewTab.isPrimaryViewActive ? viewTab.primaryView->url() : viewTab.secondaryView->url();
-        DragAndDropHelper::instance().dropUrls(KFileItem(), destPath, event, m_tabBar);
+        Q_UNUSED(destPath);
+        //DragAndDropHelper::instance().dropUrls(KFileItem(), destPath, event, m_tabBar);
     }
 }
 
@@ -1479,8 +1485,11 @@ void DolphinMainWindow::updateToolBarMenu()
     connect(menu, SIGNAL(aboutToHide()), helpMenu, SLOT(deleteLater()));
     helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::HelpContents)));
     helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::WhatsThis)));
+    helpMenu->addSeparator();
     helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::ReportBug)));
+    helpMenu->addSeparator();
     helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::SwitchApplicationLanguage)));
+    helpMenu->addSeparator();
     helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::AboutApp)));
     helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::AboutKDE)));
     menu->addMenu(helpMenu);
@@ -1656,7 +1665,7 @@ void DolphinMainWindow::setupActions()
 
     // setup 'Go' menu
     KAction* backAction = KStandardAction::back(this, SLOT(goBack()), actionCollection());
-    connect(backAction, SIGNAL(triggered(Qt::MouseButtons, Qt::KeyboardModifiers)), this, SLOT(goBack(Qt::MouseButtons)));
+    connect(backAction, SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)), this, SLOT(goBack(Qt::MouseButtons)));
     KShortcut backShortcut = backAction->shortcut();
     backShortcut.setAlternate(Qt::Key_Backspace);
     backAction->setShortcut(backShortcut);
@@ -1664,8 +1673,8 @@ void DolphinMainWindow::setupActions()
     m_recentTabsMenu = new KActionMenu(i18n("Recently Closed Tabs"), this);
     m_recentTabsMenu->setIcon(KIcon("edit-undo"));
     actionCollection()->addAction("closed_tabs", m_recentTabsMenu);
-    connect(m_recentTabsMenu->menu(), SIGNAL(triggered(QAction *)),
-            this, SLOT(restoreClosedTab(QAction *)));
+    connect(m_recentTabsMenu->menu(), SIGNAL(triggered(QAction*)),
+            this, SLOT(restoreClosedTab(QAction*)));
 
     QAction* action = new QAction(i18n("Empty Recently Closed Tabs"), m_recentTabsMenu);
     action->setIcon(KIcon("edit-clear-list"));
@@ -1675,10 +1684,10 @@ void DolphinMainWindow::setupActions()
     m_recentTabsMenu->setEnabled(false);
 
     KAction* forwardAction = KStandardAction::forward(this, SLOT(goForward()), actionCollection());
-    connect(forwardAction, SIGNAL(triggered(Qt::MouseButtons, Qt::KeyboardModifiers)), this, SLOT(goForward(Qt::MouseButtons)));
+    connect(forwardAction, SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)), this, SLOT(goForward(Qt::MouseButtons)));
 
     KAction* upAction = KStandardAction::up(this, SLOT(goUp()), actionCollection());
-    connect(upAction, SIGNAL(triggered(Qt::MouseButtons, Qt::KeyboardModifiers)), this, SLOT(goUp(Qt::MouseButtons)));
+    connect(upAction, SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)), this, SLOT(goUp(Qt::MouseButtons)));
 
     KStandardAction::home(this, SLOT(goHome()), actionCollection());
 
@@ -1788,8 +1797,8 @@ void DolphinMainWindow::setupDockWidgets()
     addDockWidget(Qt::LeftDockWidgetArea, foldersDock);
     connect(this, SIGNAL(urlChanged(KUrl)),
             foldersPanel, SLOT(setUrl(KUrl)));
-    connect(foldersPanel, SIGNAL(changeUrl(KUrl, Qt::MouseButtons)),
-            this, SLOT(handlePlacesClick(KUrl, Qt::MouseButtons)));
+    connect(foldersPanel, SIGNAL(changeUrl(KUrl,Qt::MouseButtons)),
+            this, SLOT(handlePlacesClick(KUrl,Qt::MouseButtons)));
 
     // Setup "Terminal"
 #ifndef Q_OS_WIN
@@ -1835,8 +1844,7 @@ void DolphinMainWindow::setupDockWidgets()
             searchPanel, SLOT(setUrl(KUrl)));
 #endif
 
-    const bool firstRun = DolphinSettings::instance().generalSettings()->firstRun();
-    if (firstRun) {
+    if (DolphinSettings::instance().generalSettings()->version() < 200) {
         infoDock->hide();
         foldersDock->hide();
 #ifndef Q_OS_WIN
@@ -1870,8 +1878,8 @@ void DolphinMainWindow::setupDockWidgets()
     addActionCloneToCollection(placesAction, "show_places_panel");
 
     addDockWidget(Qt::LeftDockWidgetArea, placesDock);
-    connect(placesPanel, SIGNAL(urlChanged(KUrl, Qt::MouseButtons)),
-            this, SLOT(handlePlacesClick(KUrl, Qt::MouseButtons)));
+    connect(placesPanel, SIGNAL(urlChanged(KUrl,Qt::MouseButtons)),
+            this, SLOT(handlePlacesClick(KUrl,Qt::MouseButtons)));
     connect(this, SIGNAL(urlChanged(KUrl)),
             placesPanel, SLOT(setUrl(KUrl)));
     connect(placesDock, SIGNAL(visibilityChanged(bool)),
@@ -2101,23 +2109,23 @@ void DolphinMainWindow::connectViewSignals(DolphinViewContainer* container)
             this, SLOT(slotRequestItemInfo(KFileItem)));
     connect(view, SIGNAL(activated()),
             this, SLOT(toggleActiveView()));
-    connect(view, SIGNAL(tabRequested(const KUrl&)),
-            this, SLOT(openNewTab(const KUrl&)));
-    connect(view, SIGNAL(requestContextMenu(KFileItem, const KUrl&, const QList<QAction*>&)),
-            this, SLOT(openContextMenu(KFileItem, const KUrl&, const QList<QAction*>&)));
+    connect(view, SIGNAL(tabRequested(KUrl)),
+            this, SLOT(openNewTab(KUrl)));
+    connect(view, SIGNAL(requestContextMenu(KFileItem,KUrl,QList<QAction*>)),
+            this, SLOT(openContextMenu(KFileItem,KUrl,QList<QAction*>)));
     connect(view, SIGNAL(startedPathLoading(KUrl)),
             this, SLOT(enableStopAction()));
     connect(view, SIGNAL(finishedPathLoading(KUrl)),
             this, SLOT(disableStopAction()));
 
     const KUrlNavigator* navigator = container->urlNavigator();
-    connect(navigator, SIGNAL(urlChanged(const KUrl&)),
-            this, SLOT(changeUrl(const KUrl&)));
+    connect(navigator, SIGNAL(urlChanged(KUrl)),
+            this, SLOT(changeUrl(KUrl)));
     connect(navigator, SIGNAL(historyChanged()),
             this, SLOT(updateHistory()));
     connect(navigator, SIGNAL(editableStateChanged(bool)),
             this, SLOT(slotEditableStateChanged(bool)));
-    connect(navigator, SIGNAL(tabRequested(const KUrl&)),
+    connect(navigator, SIGNAL(tabRequested(KUrl)),
             this, SLOT(openNewTab(KUrl)));
 }
 
@@ -2178,7 +2186,7 @@ void DolphinMainWindow::createSecondaryView(int tabIndex)
     const int newWidth = (m_viewTab[tabIndex].primaryView->width() - splitter->handleWidth()) / 2;
 
     const DolphinView* view = m_viewTab[tabIndex].primaryView->view();
-    m_viewTab[tabIndex].secondaryView = createViewContainer(view->rootUrl(), 0);
+    m_viewTab[tabIndex].secondaryView = createViewContainer(view->url(), 0);
     splitter->addWidget(m_viewTab[tabIndex].secondaryView);
     splitter->setSizes(QList<int>() << newWidth << newWidth);
     connectViewSignals(m_viewTab[tabIndex].secondaryView);