]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Merge branch 'master' into frameworks
authorLuca Beltrame <luca.beltrame@marionegri.it>
Wed, 16 Jul 2014 08:13:57 +0000 (10:13 +0200)
committerLuca Beltrame <luca.beltrame@marionegri.it>
Wed, 16 Jul 2014 08:13:57 +0000 (10:13 +0200)
Conflicts:
kdepasswd/kcm/kcm_useraccount.desktop [deleted in frameworks branch]
plasma/applets/folderview/plasma-applet-folderview.desktop [deleted in frameworks branch]

1  2 
src/dolphinmainwindow.cpp

index 3b084ac8b486e1ae43ba608742e380232e88b05d,b51389fd402cc23f11f85eb8404d0bccf5b2934a..fce99bb587e48c68be6d3bf59baf9a209db4c60f
  #include <kdualaction.h>
  #include <KFileDialog>
  #include <KGlobal>
 +#include <KDialog>
 +#include <KJobWidgets>
  #include <KLineEdit>
  #include <KToolBar>
 -#include <KIcon>
  #include <KIconLoader>
  #include <KIO/NetAccess>
  #include <KIO/JobUiDelegate>
@@@ -79,6 -78,7 +79,6 @@@
  #include <KStandardAction>
  #include <KToggleAction>
  #include <KUrlNavigator>
 -#include <KUrl>
  #include <KUrlComboBox>
  #include <KToolInvocation>
  
@@@ -87,9 -87,6 +87,9 @@@
  #include <QKeyEvent>
  #include <QClipboard>
  #include <QToolButton>
 +#include <QSplitter>
 +#include <QTimer>
 +#include <QPushButton>
  
  namespace {
      // Used for GeneralSettings::version() to determine whether
@@@ -114,20 -111,20 +114,20 @@@ DolphinMainWindow::DolphinMainWindow() 
  {
      setObjectName("Dolphin#");
  
 -    connect(&DolphinNewFileMenuObserver::instance(), SIGNAL(errorMessage(QString)),
 -            this, SLOT(showErrorMessage(QString)));
 +    connect(&DolphinNewFileMenuObserver::instance(), &DolphinNewFileMenuObserver::errorMessage,
 +            this, &DolphinMainWindow::showErrorMessage);
  
      KIO::FileUndoManager* undoManager = KIO::FileUndoManager::self();
      undoManager->setUiInterface(new UndoUiInterface());
  
 -    connect(undoManager, SIGNAL(undoAvailable(bool)),
 -            this, SLOT(slotUndoAvailable(bool)));
 -    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(undoManager, static_cast<void(KIO::FileUndoManager::*)(bool)>(&KIO::FileUndoManager::undoAvailable),
 +            this, &DolphinMainWindow::slotUndoAvailable);
 +    connect(undoManager, &KIO::FileUndoManager::undoTextChanged,
 +            this, &DolphinMainWindow::slotUndoTextChanged);
 +    connect(undoManager, &KIO::FileUndoManager::jobRecordingStarted,
 +            this, &DolphinMainWindow::clearStatusBar);
 +    connect(undoManager, &KIO::FileUndoManager::jobRecordingFinished,
 +            this, &DolphinMainWindow::showCommand);
  
      GeneralSettings* generalSettings = GeneralSettings::self();
      const bool firstRun = (generalSettings->version() < 200);
      setupActions();
  
      m_actionHandler = new DolphinViewActionHandler(actionCollection(), this);
 -    connect(m_actionHandler, SIGNAL(actionBeingHandled()), SLOT(clearStatusBar()));
 -    connect(m_actionHandler, SIGNAL(createDirectory()), SLOT(createDirectory()));
 +    connect(m_actionHandler, &DolphinViewActionHandler::actionBeingHandled, this, &DolphinMainWindow::clearStatusBar);
 +    connect(m_actionHandler, &DolphinViewActionHandler::createDirectory, this, &DolphinMainWindow::createDirectory);
  
      m_remoteEncoding = new DolphinRemoteEncoding(this, m_actionHandler);
 -    connect(this, SIGNAL(urlChanged(KUrl)),
 -            m_remoteEncoding, SLOT(slotAboutToOpenUrl()));
 +    connect(this, &DolphinMainWindow::urlChanged,
 +            m_remoteEncoding, &DolphinRemoteEncoding::slotAboutToOpenUrl);
  
      m_tabBar = new DolphinTabBar(this);
      connect(m_tabBar, SIGNAL(currentChanged(int)),
      stateChanged("new_file");
  
      QClipboard* clipboard = QApplication::clipboard();
 -    connect(clipboard, SIGNAL(dataChanged()),
 -            this, SLOT(updatePasteAction()));
 +    connect(clipboard, &QClipboard::dataChanged,
 +            this, &DolphinMainWindow::updatePasteAction);
  
      QAction* showFilterBarAction = actionCollection()->action("show_filter_bar");
      showFilterBarAction->setChecked(generalSettings->filterBar());
@@@ -299,8 -296,8 +299,8 @@@ void DolphinMainWindow::changeUrl(cons
          updateGoActions();
          setUrlAsCaption(url);
  
 -        const QString iconName = KMimeType::iconNameForUrl(url);
 -        m_tabBar->setTabIcon(m_tabIndex, KIcon(iconName));
 +        const QString iconName = KIO::iconNameForUrl(url);
 +        m_tabBar->setTabIcon(m_tabIndex, QIcon::fromTheme(iconName));
          m_tabBar->setTabText(m_tabIndex, squeezedText(tabName(view->url())));
  
          emit urlChanged(url);
@@@ -416,7 -413,7 +416,7 @@@ void DolphinMainWindow::openNewTab(cons
  
      tabPage->hide();
  
 -    m_tabBar->addTab(KIcon(KMimeType::iconNameForUrl(primaryUrl)),
 +    m_tabBar->addTab(QIcon::fromTheme(KIO::iconNameForUrl(primaryUrl)),
                       squeezedText(tabName(primaryUrl)));
  
      if (m_viewTab.count() > 1) {
@@@ -494,7 -491,7 +494,7 @@@ void DolphinMainWindow::openInNewWindow
      }
  
      if (!newWindowUrl.isEmpty()) {
 -        KRun::run("dolphin %u", KUrl::List() << newWindowUrl, this);
 +        KRun::run("dolphin %u", QList<QUrl>() << newWindowUrl, this);
      }
  }
  
@@@ -529,19 -526,18 +529,19 @@@ void DolphinMainWindow::closeEvent(QClo
          // KDialog::Yes    -> Quit
          // KDialog::No     -> Close only the current tab
          // KDialog::Cancel -> do nothing
 -        KDialog *dialog = new KDialog(this, Qt::Dialog);
 -        dialog->setCaption(i18nc("@title:window", "Confirmation"));
 -        dialog->setButtons(KDialog::Yes | KDialog::No | KDialog::Cancel);
 +        QDialog *dialog = new QDialog(this, Qt::Dialog);
 +        dialog->setWindowTitle(i18nc("@title:window", "Confirmation"));
          dialog->setModal(true);
 -        dialog->setButtonGuiItem(KDialog::Yes, KStandardGuiItem::quit());
 -        dialog->setButtonGuiItem(KDialog::No, KGuiItem(i18n("C&lose Current Tab"), KIcon("tab-close")));
 -        dialog->setButtonGuiItem(KDialog::Cancel, KStandardGuiItem::cancel());
 -        dialog->setDefaultButton(KDialog::Yes);
 +        QDialogButtonBox* buttons = new QDialogButtonBox(QDialogButtonBox::Yes | QDialogButtonBox::No | QDialogButtonBox::Cancel);
 +        KGuiItem::assign(buttons->button(QDialogButtonBox::Yes), KStandardGuiItem::quit());
 +        KGuiItem::assign(buttons->button(QDialogButtonBox::No), KGuiItem(i18n("C&lose Current Tab"), QIcon::fromTheme("tab-close")));
 +        KGuiItem::assign(buttons->button(QDialogButtonBox::Cancel), KStandardGuiItem::cancel());
 +        buttons->button(QDialogButtonBox::Yes)->setDefault(true);
  
          bool doNotAskAgainCheckboxResult = false;
  
          const int result = KMessageBox::createKMessageBox(dialog,
 +            buttons,
              QMessageBox::Warning,
              i18n("You have multiple tabs open in this window, are you sure you want to quit?"),
              QStringList(),
          }
  
          switch (result) {
 -            case KDialog::Yes:
 +            case QDialogButtonBox::Yes:
                  // Quit
                  break;
 -            case KDialog::No:
 +            case QDialogButtonBox::No:
                  // Close only the current tab
                  closeTab();
              default:
@@@ -775,7 -771,8 +775,8 @@@ void DolphinMainWindow::togglePanelLock
  void DolphinMainWindow::slotPlacesPanelVisibilityChanged(bool visible)
  {
      foreach (DolphinTabPage* tabPage, m_viewTab) {
-         tabPage->setPlacesSelectorVisible(visible);
+         // The Places selector in the location bar should be shown if and only if the Places panel is hidden.
+         tabPage->setPlacesSelectorVisible(!visible);
      }
  }
  
@@@ -897,7 -894,7 +898,7 @@@ void DolphinMainWindow::editSettings(
  
          const KUrl url = container->url();
          DolphinSettingsDialog* settingsDialog = new DolphinSettingsDialog(url, this);
 -        connect(settingsDialog, SIGNAL(settingsChanged()), this, SLOT(refreshViews()));
 +        connect(settingsDialog, &DolphinSettingsDialog::settingsChanged, this, &DolphinMainWindow::refreshViews);
          settingsDialog->setAttribute(Qt::WA_DeleteOnClose);
          settingsDialog->show();
          m_settingsDialog = settingsDialog;
@@@ -1022,10 -1019,10 +1023,10 @@@ void DolphinMainWindow::handleUrl(cons
          // stat the URL to see if it is a dir or not
          m_lastHandleUrlStatJob = KIO::stat(url, KIO::HideProgressInfo);
          if (m_lastHandleUrlStatJob->ui()) {
 -            m_lastHandleUrlStatJob->ui()->setWindow(this);
 +            KJobWidgets::setWindow(m_lastHandleUrlStatJob, this);
          }
 -        connect(m_lastHandleUrlStatJob, SIGNAL(result(KJob*)),
 -                this, SLOT(slotHandleUrlStatFinished(KJob*)));
 +        connect(m_lastHandleUrlStatJob, &KIO::Job::result,
 +                this, &DolphinMainWindow::slotHandleUrlStatFinished);
  
      } else {
          new KRun(url, this); // Automatically deletes itself after being finished
@@@ -1074,13 -1071,12 +1075,13 @@@ void DolphinMainWindow::openContextMenu
  
      switch (command) {
      case DolphinContextMenu::OpenParentFolderInNewWindow: {
 -        KRun::run("dolphin %u", KUrl::List() << item.url().upUrl(), this);
 +
 +        KRun::run("dolphin %u", QList<QUrl>() << KIO::upUrl(item.url()), this);
          break;
      }
  
      case DolphinContextMenu::OpenParentFolderInNewTab:
 -        openNewTab(item.url().upUrl());
 +        openNewTab(KIO::upUrl(item.url()));
          break;
  
      case DolphinContextMenu::None:
@@@ -1147,7 -1143,7 +1148,7 @@@ void DolphinMainWindow::updateControlMe
  
      // Add "Go" menu
      KMenu* goMenu = new KMenu(i18nc("@action:inmenu", "Go"), menu);
 -    connect(menu, SIGNAL(aboutToHide()), goMenu, SLOT(deleteLater()));
 +    connect(menu, &KMenu::aboutToHide, goMenu, &KMenu::deleteLater);
      goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Back)));
      goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Forward)));
      goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Up)));
  
      // Add "Tool" menu
      KMenu* toolsMenu = new KMenu(i18nc("@action:inmenu", "Tools"), menu);
 -    connect(menu, SIGNAL(aboutToHide()), toolsMenu, SLOT(deleteLater()));
 +    connect(menu, &KMenu::aboutToHide, toolsMenu, &KMenu::deleteLater);
      toolsMenu->addAction(ac->action("show_filter_bar"));
      toolsMenu->addAction(ac->action("compare_files"));
      toolsMenu->addAction(ac->action("open_terminal"));
  
      // Add "Help" menu
      KMenu* helpMenu = new KMenu(i18nc("@action:inmenu", "Help"), menu);
 -    connect(menu, SIGNAL(aboutToHide()), helpMenu, SLOT(deleteLater()));
 +    connect(menu, &KMenu::aboutToHide, helpMenu, &KMenu::deleteLater);
      helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::HelpContents)));
      helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::WhatsThis)));
      helpMenu->addSeparator();
@@@ -1245,7 -1241,7 +1246,7 @@@ void DolphinMainWindow::setActiveViewCo
      const KUrl url = m_activeViewContainer->url();
      setUrlAsCaption(url);
      m_tabBar->setTabText(m_tabIndex, squeezedText(tabName(url)));
 -    m_tabBar->setTabIcon(m_tabIndex, KIcon(KMimeType::iconNameForUrl(url)));
 +    m_tabBar->setTabIcon(m_tabIndex, QIcon::fromTheme(KIO::iconNameForUrl(url)));
  
      emit urlChanged(url);
  }
@@@ -1254,31 -1250,31 +1255,31 @@@ void DolphinMainWindow::setupActions(
  {
      // setup 'File' menu
      m_newFileMenu = new DolphinNewFileMenu(actionCollection(), this);
 -    KMenu* menu = m_newFileMenu->menu();
 +    QMenu* menu = m_newFileMenu->menu();
      menu->setTitle(i18nc("@title:menu Create new folder, file, link, etc.", "Create New"));
 -    menu->setIcon(KIcon("document-new"));
 +    menu->setIcon(QIcon::fromTheme("document-new"));
      m_newFileMenu->setDelayed(false);
 -    connect(menu, SIGNAL(aboutToShow()),
 -            this, SLOT(updateNewMenu()));
 +    connect(menu, &QMenu::aboutToShow,
 +            this, &DolphinMainWindow::updateNewMenu);
  
 -    KAction* newWindow = actionCollection()->addAction("new_window");
 -    newWindow->setIcon(KIcon("window-new"));
 +    QAction* newWindow = actionCollection()->addAction("new_window");
 +    newWindow->setIcon(QIcon::fromTheme("window-new"));
      newWindow->setText(i18nc("@action:inmenu File", "New &Window"));
      newWindow->setShortcut(Qt::CTRL | Qt::Key_N);
 -    connect(newWindow, SIGNAL(triggered()), this, SLOT(openNewMainWindow()));
 +    connect(newWindow, &QAction::triggered, this, &DolphinMainWindow::openNewMainWindow);
  
 -    KAction* newTab = actionCollection()->addAction("new_tab");
 -    newTab->setIcon(KIcon("tab-new"));
 +    QAction* newTab = actionCollection()->addAction("new_tab");
 +    newTab->setIcon(QIcon::fromTheme("tab-new"));
      newTab->setText(i18nc("@action:inmenu File", "New Tab"));
 -    newTab->setShortcut(KShortcut(Qt::CTRL | Qt::Key_T, Qt::CTRL | Qt::SHIFT | Qt::Key_N));
 -    connect(newTab, SIGNAL(triggered()), this, SLOT(openNewTab()));
 +    newTab->setShortcuts(QList<QKeySequence>() << QKeySequence(Qt::CTRL | Qt::Key_T) << QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_N));
 +    connect(newTab, &QAction::triggered, this, static_cast<void(DolphinMainWindow::*)()>(&DolphinMainWindow::openNewTab));
  
 -    KAction* closeTab = actionCollection()->addAction("close_tab");
 -    closeTab->setIcon(KIcon("tab-close"));
 +    QAction* closeTab = actionCollection()->addAction("close_tab");
 +    closeTab->setIcon(QIcon::fromTheme("tab-close"));
      closeTab->setText(i18nc("@action:inmenu File", "Close Tab"));
      closeTab->setShortcut(Qt::CTRL | Qt::Key_W);
      closeTab->setEnabled(false);
 -    connect(closeTab, SIGNAL(triggered()), this, SLOT(closeTab()));
 +    connect(closeTab, &QAction::triggered, this, static_cast<void(DolphinMainWindow::*)()>(&DolphinMainWindow::closeTab));
  
      KStandardAction::quit(this, SLOT(quit()), actionCollection());
  
  
      // need to remove shift+del from cut action, else the shortcut for deletejob
      // doesn't work
 -    KAction* cut = KStandardAction::cut(this, SLOT(cut()), actionCollection());
 -    KShortcut cutShortcut = cut->shortcut();
 -    cutShortcut.remove(Qt::SHIFT | Qt::Key_Delete, KShortcut::KeepEmpty);
 -    cut->setShortcut(cutShortcut);
 +    QAction* cut = KStandardAction::cut(this, SLOT(cut()), actionCollection());
 +    auto cutShortcuts = cut->shortcuts();
 +    cutShortcuts.removeAll(QKeySequence(Qt::SHIFT | Qt::Key_Delete));
 +    cut->setShortcuts(cutShortcuts);
      KStandardAction::copy(this, SLOT(copy()), actionCollection());
 -    KAction* paste = KStandardAction::paste(this, SLOT(paste()), actionCollection());
 +    QAction* paste = KStandardAction::paste(this, SLOT(paste()), actionCollection());
      // The text of the paste-action is modified dynamically by Dolphin
      // (e. g. to "Paste One Folder"). To prevent that the size of the toolbar changes
      // due to the long text, the text "Paste" is used:
  
      KStandardAction::find(this, SLOT(find()), actionCollection());
  
 -    KAction* selectAll = actionCollection()->addAction("select_all");
 +    QAction* selectAll = actionCollection()->addAction("select_all");
      selectAll->setText(i18nc("@action:inmenu Edit", "Select All"));
      selectAll->setShortcut(Qt::CTRL | Qt::Key_A);
 -    connect(selectAll, SIGNAL(triggered()), this, SLOT(selectAll()));
 +    connect(selectAll, &QAction::triggered, this, &DolphinMainWindow::selectAll);
  
 -    KAction* invertSelection = actionCollection()->addAction("invert_selection");
 +    QAction* invertSelection = actionCollection()->addAction("invert_selection");
      invertSelection->setText(i18nc("@action:inmenu Edit", "Invert Selection"));
      invertSelection->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_A);
 -    connect(invertSelection, SIGNAL(triggered()), this, SLOT(invertSelection()));
 +    connect(invertSelection, &QAction::triggered, this, &DolphinMainWindow::invertSelection);
  
      // setup 'View' menu
      // (note that most of it is set up in DolphinViewActionHandler)
  
 -    KAction* split = actionCollection()->addAction("split_view");
 +    QAction* split = actionCollection()->addAction("split_view");
      split->setShortcut(Qt::Key_F3);
 -    connect(split, SIGNAL(triggered()), this, SLOT(toggleSplitView()));
 +    connect(split, &QAction::triggered, this, &DolphinMainWindow::toggleSplitView);
  
 -    KAction* reload = actionCollection()->addAction("reload");
 +    QAction* reload = actionCollection()->addAction("reload");
      reload->setText(i18nc("@action:inmenu View", "Reload"));
      reload->setShortcut(Qt::Key_F5);
 -    reload->setIcon(KIcon("view-refresh"));
 -    connect(reload, SIGNAL(triggered()), this, SLOT(reloadView()));
 +    reload->setIcon(QIcon::fromTheme("view-refresh"));
 +    connect(reload, &QAction::triggered, this, &DolphinMainWindow::reloadView);
  
 -    KAction* stop = actionCollection()->addAction("stop");
 +    QAction* stop = actionCollection()->addAction("stop");
      stop->setText(i18nc("@action:inmenu View", "Stop"));
      stop->setToolTip(i18nc("@info", "Stop loading"));
 -    stop->setIcon(KIcon("process-stop"));
 -    connect(stop, SIGNAL(triggered()), this, SLOT(stopLoading()));
 +    stop->setIcon(QIcon::fromTheme("process-stop"));
 +    connect(stop, &QAction::triggered, this, &DolphinMainWindow::stopLoading);
  
      KToggleAction* editableLocation = actionCollection()->add<KToggleAction>("editable_location");
      editableLocation->setText(i18nc("@action:inmenu Navigation Bar", "Editable Location"));
      editableLocation->setShortcut(Qt::Key_F6);
 -    connect(editableLocation, SIGNAL(triggered()), this, SLOT(toggleEditLocation()));
 +    connect(editableLocation, &KToggleAction::triggered, this, &DolphinMainWindow::toggleEditLocation);
  
 -    KAction* replaceLocation = actionCollection()->addAction("replace_location");
 +    QAction* replaceLocation = actionCollection()->addAction("replace_location");
      replaceLocation->setText(i18nc("@action:inmenu Navigation Bar", "Replace Location"));
      replaceLocation->setShortcut(Qt::CTRL | Qt::Key_L);
 -    connect(replaceLocation, SIGNAL(triggered()), this, SLOT(replaceLocation()));
 +    connect(replaceLocation, &QAction::triggered, this, &DolphinMainWindow::replaceLocation);
  
      // setup 'Go' menu
 -    KAction* backAction = KStandardAction::back(this, SLOT(goBack()), actionCollection());
 -    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);
 +    QAction* backAction = KStandardAction::back(this, SLOT(goBack()), actionCollection());
 +    auto backShortcuts = backAction->shortcuts();
 +    backShortcuts.append(QKeySequence(Qt::Key_Backspace));
 +    backAction->setShortcuts(backShortcuts);
  
      DolphinRecentTabsMenu* recentTabsMenu = new DolphinRecentTabsMenu(this);
      actionCollection()->addAction("closed_tabs", recentTabsMenu);
      connect(recentTabsMenu, SIGNAL(restoreClosedTab(KUrl,KUrl)),
              this, SLOT(openNewActivatedTab(KUrl,KUrl)));
  
 -    KAction* forwardAction = KStandardAction::forward(this, SLOT(goForward()), actionCollection());
 -    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)));
 -
 -    KAction* homeAction = KStandardAction::home(this, SLOT(goHome()), actionCollection());
 -    connect(homeAction, SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)), this, SLOT(goHome(Qt::MouseButtons)));
 +    KStandardAction::forward(this, SLOT(goForward()), actionCollection());
 +    KStandardAction::up(this, SLOT(goUp()), actionCollection());
 +    KStandardAction::home(this, SLOT(goHome()), actionCollection());
  
      // setup 'Tools' menu
 -    KAction* showFilterBar = actionCollection()->addAction("show_filter_bar");
 +    QAction* showFilterBar = actionCollection()->addAction("show_filter_bar");
      showFilterBar->setText(i18nc("@action:inmenu Tools", "Show Filter Bar"));
 -    showFilterBar->setIcon(KIcon("view-filter"));
 +    showFilterBar->setIcon(QIcon::fromTheme("view-filter"));
      showFilterBar->setShortcut(Qt::CTRL | Qt::Key_I);
 -    connect(showFilterBar, SIGNAL(triggered()), this, SLOT(showFilterBar()));
 +    connect(showFilterBar, &QAction::triggered, this, &DolphinMainWindow::showFilterBar);
  
 -    KAction* compareFiles = actionCollection()->addAction("compare_files");
 +    QAction* compareFiles = actionCollection()->addAction("compare_files");
      compareFiles->setText(i18nc("@action:inmenu Tools", "Compare Files"));
 -    compareFiles->setIcon(KIcon("kompare"));
 +    compareFiles->setIcon(QIcon::fromTheme("kompare"));
      compareFiles->setEnabled(false);
 -    connect(compareFiles, SIGNAL(triggered()), this, SLOT(compareFiles()));
 +    connect(compareFiles, &QAction::triggered, this, &DolphinMainWindow::compareFiles);
  
 -    KAction* openTerminal = actionCollection()->addAction("open_terminal");
 +    QAction* openTerminal = actionCollection()->addAction("open_terminal");
      openTerminal->setText(i18nc("@action:inmenu Tools", "Open Terminal"));
 -    openTerminal->setIcon(KIcon("utilities-terminal"));
 +    openTerminal->setIcon(QIcon::fromTheme("utilities-terminal"));
      openTerminal->setShortcut(Qt::SHIFT | Qt::Key_F4);
 -    connect(openTerminal, SIGNAL(triggered()), this, SLOT(openTerminal()));
 +    connect(openTerminal, &QAction::triggered, this, &DolphinMainWindow::openTerminal);
  
      // setup 'Settings' menu
      KToggleAction* showMenuBar = KStandardAction::showMenubar(0, 0, actionCollection());
 -    connect(showMenuBar, SIGNAL(triggered(bool)),                   // Fixes #286822
 -            this, SLOT(toggleShowMenuBar()), Qt::QueuedConnection);
 +    connect(showMenuBar, &KToggleAction::triggered,                   // Fixes #286822
 +            this, &DolphinMainWindow::toggleShowMenuBar, Qt::QueuedConnection);
      KStandardAction::preferences(this, SLOT(editSettings()), actionCollection());
  
      // not in menu actions
      QList<QKeySequence> nextTabKeys;
 -    nextTabKeys.append(KStandardShortcut::tabNext().primary());
 +    nextTabKeys.append(KStandardShortcut::tabNext().first()); //TODO: is this correct
      nextTabKeys.append(QKeySequence(Qt::CTRL | Qt::Key_Tab));
  
      QList<QKeySequence> prevTabKeys;
 -    prevTabKeys.append(KStandardShortcut::tabPrev().primary());
 +    prevTabKeys.append(KStandardShortcut::tabPrev().first()); //TODO: is this correct
      prevTabKeys.append(QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_Tab));
  
 -    KAction* activateNextTab = actionCollection()->addAction("activate_next_tab");
 +    QAction* activateNextTab = actionCollection()->addAction("activate_next_tab");
      activateNextTab->setIconText(i18nc("@action:inmenu", "Next Tab"));
      activateNextTab->setText(i18nc("@action:inmenu", "Activate Next Tab"));
      activateNextTab->setEnabled(false);
 -    connect(activateNextTab, SIGNAL(triggered()), SLOT(activateNextTab()));
 +    connect(activateNextTab, &QAction::triggered, this, &DolphinMainWindow::activateNextTab);
      activateNextTab->setShortcuts(QApplication::isRightToLeft() ? prevTabKeys : nextTabKeys);
  
 -    KAction* activatePrevTab = actionCollection()->addAction("activate_prev_tab");
 +    QAction* activatePrevTab = actionCollection()->addAction("activate_prev_tab");
      activatePrevTab->setIconText(i18nc("@action:inmenu", "Previous Tab"));
      activatePrevTab->setText(i18nc("@action:inmenu", "Activate Previous Tab"));
      activatePrevTab->setEnabled(false);
 -    connect(activatePrevTab, SIGNAL(triggered()), SLOT(activatePrevTab()));
 +    connect(activatePrevTab, &QAction::triggered, this, &DolphinMainWindow::activatePrevTab);
      activatePrevTab->setShortcuts(QApplication::isRightToLeft() ? nextTabKeys : prevTabKeys);
  
      // for context menu
 -    KAction* openInNewTab = actionCollection()->addAction("open_in_new_tab");
 +    QAction* openInNewTab = actionCollection()->addAction("open_in_new_tab");
      openInNewTab->setText(i18nc("@action:inmenu", "Open in New Tab"));
 -    openInNewTab->setIcon(KIcon("tab-new"));
 -    connect(openInNewTab, SIGNAL(triggered()), this, SLOT(openInNewTab()));
 +    openInNewTab->setIcon(QIcon::fromTheme("tab-new"));
 +    connect(openInNewTab, &QAction::triggered, this, &DolphinMainWindow::openInNewTab);
  
 -    KAction* openInNewTabs = actionCollection()->addAction("open_in_new_tabs");
 +    QAction* openInNewTabs = actionCollection()->addAction("open_in_new_tabs");
      openInNewTabs->setText(i18nc("@action:inmenu", "Open in New Tabs"));
 -    openInNewTabs->setIcon(KIcon("tab-new"));
 -    connect(openInNewTabs, SIGNAL(triggered()), this, SLOT(openInNewTab()));
 +    openInNewTabs->setIcon(QIcon::fromTheme("tab-new"));
 +    connect(openInNewTabs, &QAction::triggered, this, &DolphinMainWindow::openInNewTab);
  
 -    KAction* openInNewWindow = actionCollection()->addAction("open_in_new_window");
 +    QAction* openInNewWindow = actionCollection()->addAction("open_in_new_window");
      openInNewWindow->setText(i18nc("@action:inmenu", "Open in New Window"));
 -    openInNewWindow->setIcon(KIcon("window-new"));
 -    connect(openInNewWindow, SIGNAL(triggered()), this, SLOT(openInNewWindow()));
 +    openInNewWindow->setIcon(QIcon::fromTheme("window-new"));
 +    connect(openInNewWindow, &QAction::triggered, this, &DolphinMainWindow::openInNewWindow);
  }
  
  void DolphinMainWindow::setupDockWidgets()
  
      KDualAction* lockLayoutAction = actionCollection()->add<KDualAction>("lock_panels");
      lockLayoutAction->setActiveText(i18nc("@action:inmenu Panels", "Unlock Panels"));
 -    lockLayoutAction->setActiveIcon(KIcon("object-unlocked"));
 +    lockLayoutAction->setActiveIcon(QIcon::fromTheme("object-unlocked"));
      lockLayoutAction->setInactiveText(i18nc("@action:inmenu Panels", "Lock Panels"));
 -    lockLayoutAction->setInactiveIcon(KIcon("object-locked"));
 +    lockLayoutAction->setInactiveIcon(QIcon::fromTheme("object-locked"));
      lockLayoutAction->setActive(lock);
 -    connect(lockLayoutAction, SIGNAL(triggered()), this, SLOT(togglePanelLockState()));
 +    connect(lockLayoutAction, &KDualAction::triggered, this, &DolphinMainWindow::togglePanelLockState);
  
      // Setup "Information"
      DolphinDockWidget* infoDock = new DolphinDockWidget(i18nc("@title:window", "Information"));
      infoDock->setLocked(lock);
      infoDock->setObjectName("infoDock");
      infoDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
 -    Panel* infoPanel = new InformationPanel(infoDock);
 +    InformationPanel* infoPanel = new InformationPanel(infoDock);
      infoPanel->setCustomContextMenuActions(QList<QAction*>() << lockLayoutAction);
 -    connect(infoPanel, SIGNAL(urlActivated(KUrl)), this, SLOT(handleUrl(KUrl)));
 +    connect(infoPanel, &InformationPanel::urlActivated, this, &DolphinMainWindow::handleUrl);
      infoDock->setWidget(infoPanel);
  
      QAction* infoAction = infoDock->toggleViewAction();
 -    createPanelAction(KIcon("dialog-information"), Qt::Key_F11, infoAction, "show_information_panel");
 +    createPanelAction(QIcon::fromTheme("dialog-information"), Qt::Key_F11, infoAction, "show_information_panel");
  
      addDockWidget(Qt::RightDockWidgetArea, infoDock);
 -    connect(this, SIGNAL(urlChanged(KUrl)),
 -            infoPanel, SLOT(setUrl(KUrl)));
 -    connect(this, SIGNAL(selectionChanged(KFileItemList)),
 -            infoPanel, SLOT(setSelection(KFileItemList)));
 -    connect(this, SIGNAL(requestItemInfo(KFileItem)),
 -            infoPanel, SLOT(requestDelayedItemInfo(KFileItem)));
 +    connect(this, &DolphinMainWindow::urlChanged,
 +            infoPanel, &InformationPanel::setUrl);
 +    connect(this, &DolphinMainWindow::selectionChanged,
 +            infoPanel, &InformationPanel::setSelection);
 +    connect(this, &DolphinMainWindow::requestItemInfo,
 +            infoPanel, &InformationPanel::requestDelayedItemInfo);
  
      // Setup "Folders"
      DolphinDockWidget* foldersDock = new DolphinDockWidget(i18nc("@title:window", "Folders"));
      foldersDock->setWidget(foldersPanel);
  
      QAction* foldersAction = foldersDock->toggleViewAction();
 -    createPanelAction(KIcon("folder"), Qt::Key_F7, foldersAction, "show_folders_panel");
 +    createPanelAction(QIcon::fromTheme("folder"), Qt::Key_F7, foldersAction, "show_folders_panel");
  
      addDockWidget(Qt::LeftDockWidgetArea, foldersDock);
 -    connect(this, SIGNAL(urlChanged(KUrl)),
 -            foldersPanel, SLOT(setUrl(KUrl)));
 -    connect(foldersPanel, SIGNAL(folderActivated(KUrl)),
 -            this, SLOT(changeUrl(KUrl)));
 +    connect(this, &DolphinMainWindow::urlChanged,
 +            foldersPanel, &FoldersPanel::setUrl);
 +    connect(foldersPanel, &FoldersPanel::folderActivated,
 +            this, &DolphinMainWindow::changeUrl);
      connect(foldersPanel, SIGNAL(folderMiddleClicked(KUrl)),
              this, SLOT(openNewTab(KUrl)));
 -    connect(foldersPanel, SIGNAL(errorMessage(QString)),
 -            this, SLOT(slotPanelErrorMessage(QString)));
 +    connect(foldersPanel, &FoldersPanel::errorMessage,
 +            this, &DolphinMainWindow::slotPanelErrorMessage);
  
      // Setup "Terminal"
  #ifndef Q_OS_WIN
      terminalDock->setLocked(lock);
      terminalDock->setObjectName("terminalDock");
      terminalDock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
 -    Panel* terminalPanel = new TerminalPanel(terminalDock);
 +    TerminalPanel* terminalPanel = new TerminalPanel(terminalDock);
      terminalPanel->setCustomContextMenuActions(QList<QAction*>() << lockLayoutAction);
      terminalDock->setWidget(terminalPanel);
  
 -    connect(terminalPanel, SIGNAL(hideTerminalPanel()), terminalDock, SLOT(hide()));
 -    connect(terminalPanel, SIGNAL(changeUrl(KUrl)), this, SLOT(slotTerminalDirectoryChanged(KUrl)));
 -    connect(terminalDock, SIGNAL(visibilityChanged(bool)),
 -            terminalPanel, SLOT(dockVisibilityChanged()));
 +    connect(terminalPanel, &TerminalPanel::hideTerminalPanel, terminalDock, &DolphinDockWidget::hide);
 +    connect(terminalPanel, &TerminalPanel::changeUrl, this, &DolphinMainWindow::slotTerminalDirectoryChanged);
 +    connect(terminalDock, &DolphinDockWidget::visibilityChanged,
 +            terminalPanel, &TerminalPanel::dockVisibilityChanged);
  
      QAction* terminalAction = terminalDock->toggleViewAction();
 -    createPanelAction(KIcon("utilities-terminal"), Qt::Key_F4, terminalAction, "show_terminal_panel");
 +    createPanelAction(QIcon::fromTheme("utilities-terminal"), Qt::Key_F4, terminalAction, "show_terminal_panel");
  
      addDockWidget(Qt::BottomDockWidgetArea, terminalDock);
 -    connect(this, SIGNAL(urlChanged(KUrl)),
 -            terminalPanel, SLOT(setUrl(KUrl)));
 +    connect(this, &DolphinMainWindow::urlChanged,
 +            terminalPanel, &TerminalPanel::setUrl);
  #endif
  
      if (GeneralSettings::version() < 200) {
      placesDock->setWidget(placesPanel);
  
      QAction* placesAction = placesDock->toggleViewAction();
 -    createPanelAction(KIcon("bookmarks"), Qt::Key_F9, placesAction, "show_places_panel");
 +    createPanelAction(QIcon::fromTheme("bookmarks"), Qt::Key_F9, placesAction, "show_places_panel");
  
      addDockWidget(Qt::LeftDockWidgetArea, placesDock);
 -    connect(placesPanel, SIGNAL(placeActivated(KUrl)),
 -            this, SLOT(slotPlaceActivated(KUrl)));
 +    connect(placesPanel, &PlacesPanel::placeActivated,
 +            this, &DolphinMainWindow::slotPlaceActivated);
      connect(placesPanel, SIGNAL(placeMiddleClicked(KUrl)),
              this, SLOT(openNewTab(KUrl)));
 -    connect(placesPanel, SIGNAL(errorMessage(QString)),
 -            this, SLOT(slotPanelErrorMessage(QString)));
 -    connect(this, SIGNAL(urlChanged(KUrl)),
 -            placesPanel, SLOT(setUrl(KUrl)));
 -    connect(placesDock, SIGNAL(visibilityChanged(bool)),
 -            this, SLOT(slotPlacesPanelVisibilityChanged(bool)));
 -    connect(this, SIGNAL(settingsChanged()),
 -          placesPanel, SLOT(readSettings()));
 +    connect(placesPanel, &PlacesPanel::errorMessage,
 +            this, &DolphinMainWindow::slotPanelErrorMessage);
 +    connect(this, &DolphinMainWindow::urlChanged,
 +            placesPanel, &PlacesPanel::setUrl);
 +    connect(placesDock, &DolphinDockWidget::visibilityChanged,
 +            this, &DolphinMainWindow::slotPlacesPanelVisibilityChanged);
 +    connect(this, &DolphinMainWindow::settingsChanged,
 +          placesPanel, &PlacesPanel::readSettings);
  
      // Add actions into the "Panels" menu
      KActionMenu* panelsMenu = new KActionMenu(i18nc("@action:inmenu View", "Panels"), this);
@@@ -1606,29 -1608,29 +1607,29 @@@ void DolphinMainWindow::createControlBu
      Q_ASSERT(!m_controlButton);
  
      m_controlButton = new QToolButton(this);
 -    m_controlButton->setIcon(KIcon("applications-system"));
 +    m_controlButton->setIcon(QIcon::fromTheme("applications-system"));
      m_controlButton->setText(i18nc("@action", "Control"));
      m_controlButton->setPopupMode(QToolButton::InstantPopup);
      m_controlButton->setToolButtonStyle(toolBar()->toolButtonStyle());
  
      KMenu* controlMenu = new KMenu(m_controlButton);
 -    connect(controlMenu, SIGNAL(aboutToShow()), this, SLOT(updateControlMenu()));
 +    connect(controlMenu, &KMenu::aboutToShow, this, &DolphinMainWindow::updateControlMenu);
  
      m_controlButton->setMenu(controlMenu);
  
      toolBar()->addWidget(m_controlButton);
 -    connect(toolBar(), SIGNAL(iconSizeChanged(QSize)),
 -            m_controlButton, SLOT(setIconSize(QSize)));
 -    connect(toolBar(), SIGNAL(toolButtonStyleChanged(Qt::ToolButtonStyle)),
 -            m_controlButton, SLOT(setToolButtonStyle(Qt::ToolButtonStyle)));
 +    connect(toolBar(), &KToolBar::iconSizeChanged,
 +            m_controlButton, &QToolButton::setIconSize);
 +    connect(toolBar(), &KToolBar::toolButtonStyleChanged,
 +            m_controlButton, &QToolButton::setToolButtonStyle);
  
      // The added widgets are owned by the toolbar and may get deleted when e.g. the toolbar
      // gets edited. In this case we must add them again. The adding is done asynchronously by
      // m_updateToolBarTimer.
 -    connect(m_controlButton, SIGNAL(destroyed()), this, SLOT(slotControlButtonDeleted()));
 +    connect(m_controlButton, &QToolButton::destroyed, this, &DolphinMainWindow::slotControlButtonDeleted);
      m_updateToolBarTimer = new QTimer(this);
      m_updateToolBarTimer->setInterval(500);
 -    connect(m_updateToolBarTimer, SIGNAL(timeout()), this, SLOT(updateToolBar()));
 +    connect(m_updateToolBarTimer, &QTimer::timeout, this, &DolphinMainWindow::updateToolBar);
  }
  
  void DolphinMainWindow::deleteControlButton()
@@@ -1680,36 -1682,36 +1681,36 @@@ void DolphinMainWindow::clearStatusBar(
  
  void DolphinMainWindow::connectViewSignals(DolphinViewContainer* container)
  {
 -    connect(container, SIGNAL(showFilterBarChanged(bool)),
 -            this, SLOT(updateFilterBarAction(bool)));
 -    connect(container, SIGNAL(writeStateChanged(bool)),
 -            this, SLOT(slotWriteStateChanged(bool)));
 +    connect(container, &DolphinViewContainer::showFilterBarChanged,
 +            this, &DolphinMainWindow::updateFilterBarAction);
 +    connect(container, &DolphinViewContainer::writeStateChanged,
 +            this, &DolphinMainWindow::slotWriteStateChanged);
  
      const DolphinView* view = container->view();
 -    connect(view, SIGNAL(selectionChanged(KFileItemList)),
 -            this, SLOT(slotSelectionChanged(KFileItemList)));
 -    connect(view, SIGNAL(requestItemInfo(KFileItem)),
 -            this, SLOT(slotRequestItemInfo(KFileItem)));
 +    connect(view, &DolphinView::selectionChanged,
 +            this, &DolphinMainWindow::slotSelectionChanged);
 +    connect(view, &DolphinView::requestItemInfo,
 +            this, &DolphinMainWindow::slotRequestItemInfo);
      connect(view, SIGNAL(tabRequested(KUrl)),
              this, SLOT(openNewTab(KUrl)));
 -    connect(view, SIGNAL(requestContextMenu(QPoint,KFileItem,KUrl,QList<QAction*>)),
 -            this, SLOT(openContextMenu(QPoint,KFileItem,KUrl,QList<QAction*>)));
 -    connect(view, SIGNAL(directoryLoadingStarted()),
 -            this, SLOT(enableStopAction()));
 -    connect(view, SIGNAL(directoryLoadingCompleted()),
 -            this, SLOT(disableStopAction()));
 -    connect(view, SIGNAL(goBackRequested()),
 -            this, SLOT(goBack()));
 -    connect(view, SIGNAL(goForwardRequested()),
 -            this, SLOT(goForward()));
 +    connect(view, &DolphinView::requestContextMenu,
 +            this, &DolphinMainWindow::openContextMenu);
 +    connect(view, &DolphinView::directoryLoadingStarted,
 +            this, &DolphinMainWindow::enableStopAction);
 +    connect(view, &DolphinView::directoryLoadingCompleted,
 +            this, &DolphinMainWindow::disableStopAction);
 +    connect(view, &DolphinView::goBackRequested,
 +            this, static_cast<void(DolphinMainWindow::*)()>(&DolphinMainWindow::goBack));
 +    connect(view, &DolphinView::goForwardRequested,
 +            this, static_cast<void(DolphinMainWindow::*)()>(&DolphinMainWindow::goForward));
  
      const KUrlNavigator* navigator = container->urlNavigator();
 -    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, &KUrlNavigator::urlChanged,
 +            this, &DolphinMainWindow::changeUrl);
 +    connect(navigator, &KUrlNavigator::historyChanged,
 +            this, &DolphinMainWindow::updateHistory);
 +    connect(navigator, &KUrlNavigator::editableStateChanged,
 +            this, &DolphinMainWindow::slotEditableStateChanged);
      connect(navigator, SIGNAL(tabRequested(KUrl)),
              this, SLOT(openNewTab(KUrl)));
  }
@@@ -1731,7 -1733,7 +1732,7 @@@ void DolphinMainWindow::updateSplitActi
      } else {
          splitAction->setText(i18nc("@action:intoolbar Split view", "Split"));
          splitAction->setToolTip(i18nc("@info", "Split view"));
 -        splitAction->setIcon(KIcon("view-right-new"));
 +        splitAction->setIcon(QIcon::fromTheme("view-right-new"));
      }
  }
  
@@@ -1788,20 -1790,20 +1789,20 @@@ QString DolphinMainWindow::squeezedText
      return fm.elidedText(text, Qt::ElideMiddle, fm.maxWidth() * 10);
  }
  
 -void DolphinMainWindow::createPanelAction(const KIcon& icon,
 +void DolphinMainWindow::createPanelAction(const QIcon& icon,
                                            const QKeySequence& shortcut,
                                            QAction* dockAction,
                                            const QString& actionName)
  {
 -    KAction* panelAction = actionCollection()->addAction(actionName);
 +    QAction* panelAction = actionCollection()->addAction(actionName);
      panelAction->setCheckable(true);
      panelAction->setChecked(dockAction->isChecked());
      panelAction->setText(dockAction->text());
      panelAction->setIcon(icon);
      panelAction->setShortcut(shortcut);
  
 -    connect(panelAction, SIGNAL(triggered()), dockAction, SLOT(trigger()));
 -    connect(dockAction, SIGNAL(toggled(bool)), panelAction, SLOT(setChecked(bool)));
 +    connect(panelAction, &QAction::triggered, dockAction, &QAction::trigger);
 +    connect(dockAction, &QAction::toggled, panelAction, &QAction::setChecked);
  }
  
  DolphinMainWindow::UndoUiInterface::UndoUiInterface() :
@@@ -1824,3 -1826,4 +1825,3 @@@ void DolphinMainWindow::UndoUiInterface
      }
  }
  
 -#include "dolphinmainwindow.moc"