#define DOLPHIN_MAINWINDOW_H
#include "config-dolphin.h"
+#include "disabledactionnotifier.h"
#include "dolphintabwidget.h"
#include "selectionmode/bottombar.h"
+#include <KActionMenu>
#include <KFileItemActions>
#include <kio/fileundomanager.h>
#include <kxmlguiwindow.h>
#include "panels/information/informationpanel.h"
#endif
+#include <QFutureWatcher>
#include <QIcon>
#include <QList>
#include <QMenu>
class PlacesPanel;
class TerminalPanel;
+/** Used to identify that a custom command should be triggered on a view background double-click.*/
+constexpr QLatin1String customCommand{"CUSTOM_COMMAND"};
+
namespace KIO
{
class OpenUrlJob;
+class CommandLauncherJob;
}
namespace SelectionMode
{
*/
void setViewsToHomeIfMountPathOpen(const QString &mountPath);
+ /**
+ * Enables or disables the session autosaving feature.
+ *
+ * @param enable If true, saves the session automatically after a fixed
+ * time interval from the last state change.
+ */
+ void setSessionAutoSaveEnabled(bool enable);
+
bool isFoldersPanelEnabled() const;
bool isInformationPanelEnabled() const;
bool isSplitViewEnabledInCurrentTab() const;
+ /**
+ * Activates a user set action when double clicking the view's background.
+ */
+ void slotDoubleClickViewBackground(Qt::MouseButton button);
+
public Q_SLOTS:
/**
* Opens each directory in \p dirs in a separate tab. If \a splitView is set,
*/
void toggleSplitView();
+ /**
+ * Pops out a split view.
+ * The active view will be popped out, unless the view is not split,
+ * in which case nothing will happen.
+ */
+ void popoutSplitView();
+
/** Dedicated action to open the stash:/ ioslave in split view. */
void toggleSplitStash();
*/
void slotKeyBindings();
+ /**
+ * Saves the session.
+ */
+ void slotSaveSession();
+
private:
/**
* Sets up the various menus and actions and connects them.
* otherwise the text is set to "Join". The icon
* is updated to match with the text and the currently active view.
*/
- void updateSplitAction();
+ void updateSplitActions();
/**
* Sets the window sides the toolbar may be moved to based on toolbar contents.
QPointer<DolphinSettingsDialog> m_settingsDialog;
DolphinBookmarkHandler *m_bookmarkHandler;
SelectionMode::ActionTextHelper *m_actionTextHelper;
+ DisabledActionNotifier *m_disabledActionNotifier;
KIO::OpenUrlJob *m_lastHandleUrlOpenJob;
KToolBarPopupAction *m_backAction;
KToolBarPopupAction *m_forwardAction;
+ KActionMenu *m_splitViewAction;
+ QAction *m_splitViewMenuAction;
QMenu m_searchTools;
KFileItemActions m_fileItemActions;
+ QTimer *m_sessionSaveTimer;
+ QFutureWatcher<void> *m_sessionSaveWatcher;
+ bool m_sessionSaveScheduled;
+
+ KIO::CommandLauncherJob *m_job;
+
friend class DolphinMainWindowTest;
};