#define DOLPHIN_MAINWINDOW_H
#include "dolphintabwidget.h"
-#include <config-baloo.h>
+#include "selectionmode/bottombar.h"
+#include "config-dolphin.h"
#include <KFileItemActions>
#include <kio/fileundomanager.h>
#include <kxmlguiwindow.h>
-#ifdef HAVE_BALOO
+#if HAVE_BALOO
#include "panels/information/informationpanel.h"
#endif
class KFileItemList;
class KJob;
class KNewFileMenu;
-class KHelpMenu;
class KToolBarPopupAction;
class QToolButton;
class PlacesPanel;
namespace KIO {
class OpenUrlJob;
}
+namespace SelectionMode {
+ class ActionTextHelper;
+}
/**
* @short Main window for Dolphin.
*/
KNewFileMenu* newFileMenu() const;
+ /**
+ * Augments Qt's build-in QMainWindow context menu to add
+ * Dolphin-specific actions, such as "unlock panels".
+ */
+ QMenu *createPopupMenu() override;
+
/**
* Switch the window's view containers' locations to display the home path
* for any which are currently displaying a location corresponding to or
/**
* Tries to raise/activate the Dolphin window.
*/
- void activateWindow();
+ void activateWindow(const QString &activationToken);
+
+ bool isActiveWindow();
/**
* Determines if a URL is open in any tab.
*/
bool isUrlOpen(const QString &url);
+ /**
+ * @return Whether the item with @p url can be found in any view only by switching
+ * between already open tabs and scrolling in their primary or secondary view.
+ * @note Use of QString instead of QUrl is required to be callable via DBus.
+ */
+ bool isItemVisibleInAnyView(const QString &urlOfItem);
+
/**
* Pastes the clipboard data into the currently selected folder
*/
void openNewTab(const QUrl& url);
+ /**
+ * Opens a new tab showing the URL \a url and activate it.
+ */
+ void openNewTabAndActivate(const QUrl &url);
+
+ /**
+ * Opens a new window showing the URL \a url.
+ */
+ void openNewWindow(const QUrl &url);
+
+ /** @see GeneralSettings::splitViewChanged() */
+ void slotSplitViewChanged();
+
Q_SIGNALS:
/**
* Is sent if the selection of the currently active view has
/** @see KMainWindow::readProperties() */
void readProperties(const KConfigGroup& group) override;
- /** Handles QWhatsThisClickedEvent and passes all others on. */
- bool event(QEvent* event) override;
- /** Handles QWhatsThisClickedEvent and passes all others on. */
- bool eventFilter(QObject*, QEvent*) override;
-
/** Sets a sane initial window size **/
QSize sizeHint() const override;
*/
void updatePasteAction();
+ /** Calls DolphinViewContainer::setSelectionMode() for m_activeViewContainer. */
+ void slotSetSelectionMode(bool enabled, SelectionMode::BottomBar::Contents bottomBarContents);
+
/** Selects all items from the active view. */
void selectAll();
/** Dedicated action to open the stash:/ ioslave in split view. */
void toggleSplitStash();
+ /** Copies all selected items to the inactive view. */
+ void copyToInactiveSplitView();
+
+ /** Moves all selected items to the inactive view. */
+ void moveToInactiveSplitView();
+
/** Reloads the currently active view. */
void reloadView();
void enableStopAction();
void disableStopAction();
+ void toggleSelectionMode();
+
void showFilterBar();
void toggleFilterBar();
/** Opens a terminal window for the current location. */
void openTerminal();
+ /** Opens terminal windows for the selected items' locations. */
+ void openTerminalHere();
+
+ /** Opens a terminal window for the URL. */
+ void openTerminalJob(const QUrl& url);
+
/** Focus a Terminal Panel. */
void focusTerminalPanel();
* @pos Position in screen coordinates.
* @item File item context. If item is null, the context menu
* should be applied to \a url.
+ * @selectedItems The selected items for which the context menu
+ * is opened. This list generally includes \a item.
* @url URL which contains \a item.
- * @customActions Actions that should be added to the context menu,
- * if the file item is null.
*/
- void openContextMenu(const QPoint& pos,
- const KFileItem& item,
- const QUrl& url,
- const QList<QAction*>& customActions);
+ void openContextMenu(const QPoint& pos, const KFileItem& item, const KFileItemList &selectedItems, const QUrl& url);
/**
* Updates the menu that is by default at the right end of the toolbar.
* to go to.
*/
void slotGoForward(QAction* action);
+
+ /**
+ * Is called when configuring the keyboard shortcuts
+ */
+ void slotKeyBindings();
+
private:
/**
* Sets up the various menus and actions and connects them.
*/
bool addHamburgerMenuToToolbar();
+ /** Creates an action representing an item in the URL navigator history */
+ static QAction *urlNavigatorHistoryAction(const KUrlNavigator *urlNavigator, int historyIndex, QObject *parent = nullptr);
+
private:
/**
* Implements a custom error handling for the undo manager. This
};
KNewFileMenu* m_newFileMenu;
- KHelpMenu* m_helpMenu;
DolphinTabWidget* m_tabWidget;
DolphinViewContainer* m_activeViewContainer;
DolphinRemoteEncoding* m_remoteEncoding;
QPointer<DolphinSettingsDialog> m_settingsDialog;
DolphinBookmarkHandler* m_bookmarkHandler;
-
- // Members for the toolbar menu that is shown when the menubar is hidden:
- QToolButton* m_controlButton;
- QTimer* m_updateToolBarTimer;
+ SelectionMode::ActionTextHelper* m_actionTextHelper;
KIO::OpenUrlJob *m_lastHandleUrlOpenJob;
QMenu m_searchTools;
KFileItemActions m_fileItemActions;
+ friend class DolphinMainWindowTest;
};
inline DolphinViewContainer* DolphinMainWindow::activeViewContainer() const