#include "dolphinmainwindow.h"
-#include "dolphinapplication.h"
+#include "global.h"
#include "dolphindockwidget.h"
#include "dolphincontextmenu.h"
#include "dolphinnewfilemenu.h"
#include <KActionCollection>
#include <KActionMenu>
#include <KConfig>
-#include <kdeversion.h>
#include <kdualaction.h>
-#include <KDialog>
#include <KJobWidgets>
#include <QLineEdit>
#include <KToolBar>
-#include <KIO/NetAccess>
#include <KIO/JobUiDelegate>
#include <KLocalizedString>
#include <KProtocolManager>
#include <KToolInvocation>
#include <KUrlComboBox>
+#include <QApplication>
#include <QMenuBar>
#include <QClipboard>
#include <QToolButton>
#include <QPushButton>
#include <QCloseEvent>
#include <QShowEvent>
+#include <QDialog>
namespace {
// Used for GeneralSettings::version() to determine whether
{
}
-void DolphinMainWindow::openDirectories(const QList<QUrl>& dirs)
+void DolphinMainWindow::openDirectories(const QList<QUrl>& dirs, bool splitView)
{
- m_tabWidget->openDirectories(dirs);
+ m_tabWidget->openDirectories(dirs, splitView);
}
-void DolphinMainWindow::openFiles(const QList<QUrl>& files)
+void DolphinMainWindow::openFiles(const QList<QUrl>& files, bool splitView)
{
- m_tabWidget->openFiles(files);
+ m_tabWidget->openFiles(files, splitView);
}
void DolphinMainWindow::showCommand(CommandType command)
m_tabWidget->openNewTab(url);
}
-void DolphinMainWindow::openNewActivatedTab(const QUrl& url)
-{
- m_tabWidget->openNewActivatedTab(url);
-}
-
void DolphinMainWindow::openInNewTab()
{
const KFileItemList& list = m_activeViewContainer->view()->selectedItems();
// Find out if Dolphin is closed directly by the user or
// by the session manager because the session is closed
bool closedByUser = true;
- DolphinApplication *application = qobject_cast<DolphinApplication*>(qApp);
- if (application && application->sessionSaving()) {
+ if (qApp->isSavingSession()) {
closedByUser = false;
}
if (m_tabWidget->count() > 1 && GeneralSettings::confirmClosingMultipleTabs() && closedByUser) {
// Ask the user if he really wants to quit and close all tabs.
// Open a confirmation dialog with 3 buttons:
- // KDialog::Yes -> Quit
- // KDialog::No -> Close only the current tab
- // KDialog::Cancel -> do nothing
+ // QDialogButtonBox::Yes -> Quit
+ // QDialogButtonBox::No -> Close only the current tab
+ // QDialogButtonBox::Cancel -> do nothing
QDialog *dialog = new QDialog(this, Qt::Dialog);
dialog->setWindowTitle(i18nc("@title:window", "Confirmation"));
dialog->setModal(true);
{
// The default case (left button pressed) is handled in goHome().
if (buttons == Qt::MiddleButton) {
- openNewTab(GeneralSettings::self()->homeUrl());
+ openNewTab(Dolphin::homeUrl());
}
}
// If the given directory is not local, it can still be the URL of an
// ioslave using UDS_LOCAL_PATH which to be converted first.
- QUrl url = KIO::NetAccess::mostLocalUrl(m_activeViewContainer->url(), this);
+ KIO::StatJob* statJob = KIO::mostLocalUrl(m_activeViewContainer->url());
+ KJobWidgets::setWindow(statJob, this);
+ statJob->exec();
+ QUrl url = statJob->mostLocalUrl();
//If the URL is local after the above conversion, set the directory.
if (url.isLocalFile()) {
const QUrl& url,
const QList<QAction*>& customActions)
{
- QWeakPointer<DolphinContextMenu> contextMenu = new DolphinContextMenu(this, pos, item, url);
+ QPointer<DolphinContextMenu> contextMenu = new DolphinContextMenu(this, pos, item, url);
contextMenu.data()->setCustomActions(customActions);
const DolphinContextMenu::Command command = contextMenu.data()->open();
break;
}
- delete contextMenu.data();
+ // Delete the menu, unless it has been deleted in its own nested event loop already.
+ if (contextMenu) {
+ contextMenu->deleteLater();
+ }
}
void DolphinMainWindow::updateControlMenu()
QMenu* menu = qobject_cast<QMenu*>(sender());
Q_ASSERT(menu);
- // All actions get cleared by QMenu::clear(). The sub-menus are deleted
- // by connecting to the aboutToHide() signal from the parent-menu.
+ // All actions get cleared by QMenu::clear(). This includes the sub-menus
+ // because 'menu' is their parent.
menu->clear();
KActionCollection* ac = actionCollection();
// Add "Go" menu
QMenu* goMenu = new QMenu(i18nc("@action:inmenu", "Go"), menu);
- connect(menu, &QMenu::aboutToHide, goMenu, &QMenu::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
QMenu* toolsMenu = new QMenu(i18nc("@action:inmenu", "Tools"), menu);
- connect(menu, &QMenu::aboutToHide, toolsMenu, &QMenu::deleteLater);
toolsMenu->addAction(ac->action("show_filter_bar"));
toolsMenu->addAction(ac->action("compare_files"));
toolsMenu->addAction(ac->action("open_terminal"));
// Add "Help" menu
QMenu* helpMenu = new QMenu(i18nc("@action:inmenu", "Help"), menu);
- connect(menu, &QMenu::aboutToHide, helpMenu, &QMenu::deleteLater);
helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::HelpContents)));
helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::WhatsThis)));
helpMenu->addSeparator();
caption.append(fileName);
- setCaption(caption);
+ setWindowTitle(caption);
}
void DolphinMainWindow::setupActions()
Q_ASSERT(!m_controlButton);
m_controlButton = new QToolButton(this);
- m_controlButton->setIcon(QIcon::fromTheme("applications-system"));
+ m_controlButton->setIcon(QIcon::fromTheme("application-menu"));
m_controlButton->setText(i18nc("@action", "Control"));
m_controlButton->setPopupMode(QToolButton::InstantPopup);
m_controlButton->setToolButtonStyle(toolBar()->toolButtonStyle());