m_id(id)
{
setObjectName("Dolphin");
- m_viewContainer[PrimaryIdx] = 0;
- m_viewContainer[SecondaryIdx] = 0;
+ m_viewContainer[PrimaryView] = 0;
+ m_viewContainer[SecondaryView] = 0;
new MainWindowAdaptor(this);
QDBusConnection::sessionBus().registerObject(QString("/dolphin/MainWindow%1").arg(m_id), this);
DolphinApplication::app()->removeMainWindow(this);
}
-void DolphinMainWindow::setActiveView(DolphinViewContainer* view)
+void DolphinMainWindow::toggleViews()
{
- Q_ASSERT((view == m_viewContainer[PrimaryIdx]) || (view == m_viewContainer[SecondaryIdx]));
- if (m_activeViewContainer == view) {
+ if (m_viewContainer[SecondaryView] == 0) {
return;
}
- m_activeViewContainer->setActive(false);
- m_activeViewContainer = view;
- m_activeViewContainer->setActive(true);
+ // move secondary view from the last position of the splitter
+ // to the first position
+ m_splitter->insertWidget(0, m_viewContainer[SecondaryView]);
- updateHistory();
- updateEditActions();
- updateViewActions();
- updateGoActions();
+ DolphinViewContainer* container = m_viewContainer[PrimaryView];
+ m_viewContainer[PrimaryView] = m_viewContainer[SecondaryView];
+ m_viewContainer[SecondaryView] = container;
+}
- setCaption(m_activeViewContainer->url().fileName());
+void DolphinMainWindow::rename(const KUrl& oldUrl, const KUrl& newUrl)
+{
+ clearStatusBar();
+ KonqOperations::rename(this, oldUrl, newUrl);
+ m_undoCommandTypes.append(KonqUndoManager::RENAME);
+}
- emit activeViewChanged();
+void DolphinMainWindow::refreshViews()
+{
+ Q_ASSERT(m_viewContainer[PrimaryView] != 0);
+
+ // remember the current active view, as because of
+ // the refreshing the active view might change to
+ // the secondary view
+ DolphinViewContainer* activeViewContainer = m_activeViewContainer;
+
+ m_viewContainer[PrimaryView]->view()->refresh();
+ if (m_viewContainer[SecondaryView] != 0) {
+ m_viewContainer[SecondaryView]->view()->refresh();
+ }
+
+ setActiveViewContainer(activeViewContainer);
}
void DolphinMainWindow::dropUrls(const KUrl::List& urls,
}
}
-void DolphinMainWindow::rename(const KUrl& oldUrl, const KUrl& newUrl)
-{
- clearStatusBar();
- KonqOperations::rename(this, oldUrl, newUrl);
- m_undoCommandTypes.append(KonqUndoManager::RENAME);
-}
-
-void DolphinMainWindow::refreshViews()
-{
- Q_ASSERT(m_viewContainer[PrimaryIdx] != 0);
-
- // remember the current active view, as because of
- // the refreshing the active view might change to
- // the secondary view
- DolphinViewContainer* activeViewContainer = m_activeViewContainer;
-
- m_viewContainer[PrimaryIdx]->view()->refresh();
- if (m_viewContainer[SecondaryIdx] != 0) {
- m_viewContainer[SecondaryIdx]->view()->refresh();
- }
-
- setActiveView(activeViewContainer);
-}
-
void DolphinMainWindow::changeUrl(const KUrl& url)
{
if (activeViewContainer() != 0) {
{
updateEditActions();
- Q_ASSERT(m_viewContainer[PrimaryIdx] != 0);
- int selectedUrlsCount = m_viewContainer[PrimaryIdx]->view()->selectedUrls().count();
- if (m_viewContainer[SecondaryIdx] != 0) {
- selectedUrlsCount += m_viewContainer[SecondaryIdx]->view()->selectedUrls().count();
+ Q_ASSERT(m_viewContainer[PrimaryView] != 0);
+ int selectedUrlsCount = m_viewContainer[PrimaryView]->view()->selectedUrls().count();
+ if (m_viewContainer[SecondaryView] != 0) {
+ selectedUrlsCount += m_viewContainer[SecondaryView]->view()->selectedUrls().count();
}
QAction* compareFilesAction = actionCollection()->action("compare_files");
void DolphinMainWindow::toggleActiveView()
{
- if (m_activeViewContainer == m_viewContainer[PrimaryIdx]) {
- setActiveView(m_viewContainer[SecondaryIdx]);
+ if (m_activeViewContainer == m_viewContainer[PrimaryView]) {
+ setActiveViewContainer(m_viewContainer[SecondaryView]);
} else {
- setActiveView(m_viewContainer[PrimaryIdx]);
+ setActiveViewContainer(m_viewContainer[PrimaryView]);
}
}
void DolphinMainWindow::saveProperties(KConfig* config)
{
KConfigGroup primaryView = config->group("Primary view");
- primaryView.writeEntry("Url", m_viewContainer[PrimaryIdx]->url().url());
- primaryView.writeEntry("Editable Url", m_viewContainer[PrimaryIdx]->isUrlEditable());
- if (m_viewContainer[SecondaryIdx] != 0) {
+ primaryView.writeEntry("Url", m_viewContainer[PrimaryView]->url().url());
+ primaryView.writeEntry("Editable Url", m_viewContainer[PrimaryView]->isUrlEditable());
+ if (m_viewContainer[SecondaryView] != 0) {
KConfigGroup secondaryView = config->group("Secondary view");
- secondaryView.writeEntry("Url", m_viewContainer[SecondaryIdx]->url().url());
- secondaryView.writeEntry("Editable Url", m_viewContainer[SecondaryIdx]->isUrlEditable());
+ secondaryView.writeEntry("Url", m_viewContainer[SecondaryView]->url().url());
+ secondaryView.writeEntry("Editable Url", m_viewContainer[SecondaryView]->isUrlEditable());
}
}
void DolphinMainWindow::readProperties(KConfig* config)
{
const KConfigGroup primaryViewGroup = config->group("Primary view");
- m_viewContainer[PrimaryIdx]->setUrl(primaryViewGroup.readEntry("Url"));
+ m_viewContainer[PrimaryView]->setUrl(primaryViewGroup.readEntry("Url"));
bool editable = primaryViewGroup.readEntry("Editable Url", false);
- m_viewContainer[PrimaryIdx]->urlNavigator()->setUrlEditable(editable);
+ m_viewContainer[PrimaryView]->urlNavigator()->setUrlEditable(editable);
if (config->hasGroup("Secondary view")) {
const KConfigGroup secondaryViewGroup = config->group("Secondary view");
- if (m_viewContainer[PrimaryIdx] == 0) {
+ if (m_viewContainer[PrimaryView] == 0) {
toggleSplitView();
}
- m_viewContainer[PrimaryIdx]->setUrl(secondaryViewGroup.readEntry("Url"));
+ m_viewContainer[PrimaryView]->setUrl(secondaryViewGroup.readEntry("Url"));
editable = secondaryViewGroup.readEntry("Editable Url", false);
- m_viewContainer[PrimaryIdx]->urlNavigator()->setUrlEditable(editable);
- } else if (m_viewContainer[SecondaryIdx] != 0) {
+ m_viewContainer[PrimaryView]->urlNavigator()->setUrlEditable(editable);
+ } else if (m_viewContainer[SecondaryView] != 0) {
toggleSplitView();
}
}
void DolphinMainWindow::toggleSplitView()
{
- if (m_viewContainer[SecondaryIdx] == 0) {
- const int newWidth = (m_viewContainer[PrimaryIdx]->width() - m_splitter->handleWidth()) / 2;
+ if (m_viewContainer[SecondaryView] == 0) {
+ const int newWidth = (m_viewContainer[PrimaryView]->width() - m_splitter->handleWidth()) / 2;
// create a secondary view
- const DolphinView* view = m_viewContainer[PrimaryIdx]->view();
- m_viewContainer[SecondaryIdx] = new DolphinViewContainer(this,
+ const DolphinView* view = m_viewContainer[PrimaryView]->view();
+ m_viewContainer[SecondaryView] = new DolphinViewContainer(this,
0,
view->rootUrl(),
view->mode(),
view->showHiddenFiles());
- connectViewSignals(SecondaryIdx);
- m_splitter->addWidget(m_viewContainer[SecondaryIdx]);
+ connectViewSignals(SecondaryView);
+ m_splitter->addWidget(m_viewContainer[SecondaryView]);
m_splitter->setSizes(QList<int>() << newWidth << newWidth);
- m_viewContainer[SecondaryIdx]->view()->reload();
- m_viewContainer[SecondaryIdx]->setActive(false);
- m_viewContainer[SecondaryIdx]->show();
+ m_viewContainer[SecondaryView]->view()->reload();
+ m_viewContainer[SecondaryView]->setActive(false);
+ m_viewContainer[SecondaryView]->show();
} else {
// remove secondary view
- m_viewContainer[SecondaryIdx]->close();
- m_viewContainer[SecondaryIdx]->deleteLater();
- m_viewContainer[SecondaryIdx] = 0;
+ m_viewContainer[SecondaryView]->close();
+ m_viewContainer[SecondaryView]->deleteLater();
+ m_viewContainer[SecondaryView] = 0;
}
- setActiveView(m_viewContainer[PrimaryIdx]);
+ setActiveViewContainer(m_viewContainer[PrimaryView]);
updateViewActions();
emit activeViewChanged();
}
}
void DolphinMainWindow::stopLoading()
-{}
+{
+}
void DolphinMainWindow::togglePreview()
{
// - both in the secondary view
// - one in the primary view and the other in the secondary
// view
- Q_ASSERT(m_viewContainer[PrimaryIdx] != 0);
+ Q_ASSERT(m_viewContainer[PrimaryView] != 0);
KUrl urlA;
KUrl urlB;
- KUrl::List urls = m_viewContainer[PrimaryIdx]->view()->selectedUrls();
+ KUrl::List urls = m_viewContainer[PrimaryView]->view()->selectedUrls();
switch (urls.count()) {
case 0: {
- Q_ASSERT(m_viewContainer[SecondaryIdx] != 0);
- urls = m_viewContainer[SecondaryIdx]->view()->selectedUrls();
+ Q_ASSERT(m_viewContainer[SecondaryView] != 0);
+ urls = m_viewContainer[SecondaryView]->view()->selectedUrls();
Q_ASSERT(urls.count() == 2);
urlA = urls[0];
urlB = urls[1];
case 1: {
urlA = urls[0];
- Q_ASSERT(m_viewContainer[SecondaryIdx] != 0);
- urls = m_viewContainer[SecondaryIdx]->view()->selectedUrls();
+ Q_ASSERT(m_viewContainer[SecondaryView] != 0);
+ urls = m_viewContainer[SecondaryView]->view()->selectedUrls();
Q_ASSERT(urls.count() == 1);
urlB = urls[0];
break;
const KUrl& homeUrl = settings.generalSettings()->homeUrl();
setCaption(homeUrl.fileName());
ViewProperties props(homeUrl);
- m_viewContainer[PrimaryIdx] = new DolphinViewContainer(this,
+ m_viewContainer[PrimaryView] = new DolphinViewContainer(this,
m_splitter,
homeUrl,
props.viewMode(),
props.showHiddenFiles());
- m_activeViewContainer = m_viewContainer[PrimaryIdx];
- connectViewSignals(PrimaryIdx);
- m_viewContainer[PrimaryIdx]->view()->reload();
- m_viewContainer[PrimaryIdx]->show();
+ m_activeViewContainer = m_viewContainer[PrimaryView];
+ connectViewSignals(PrimaryView);
+ m_viewContainer[PrimaryView]->view()->reload();
+ m_viewContainer[PrimaryView]->show();
setCentralWidget(m_splitter);
setupDockWidgets();
updateViewActions();
}
+void DolphinMainWindow::setActiveViewContainer(DolphinViewContainer* view)
+{
+ Q_ASSERT((view == m_viewContainer[PrimaryView]) || (view == m_viewContainer[SecondaryView]));
+ if (m_activeViewContainer == view) {
+ return;
+ }
+
+ m_activeViewContainer->setActive(false);
+ m_activeViewContainer = view;
+ m_activeViewContainer->setActive(true);
+
+ updateHistory();
+ updateEditActions();
+ updateViewActions();
+ updateGoActions();
+
+ setCaption(m_activeViewContainer->url().fileName());
+
+ emit activeViewChanged();
+}
+
void DolphinMainWindow::setupActions()
{
// setup 'File' menu
static_cast<KToggleAction*>(actionCollection()->action("show_hidden_files"));
showHiddenFilesAction->setChecked(view->showHiddenFiles());
- updateSplitAction(m_viewContainer[SecondaryIdx] != 0);
+ updateSplitAction(m_viewContainer[SecondaryView] != 0);
KToggleAction* editableLocactionAction =
static_cast<KToggleAction*>(actionCollection()->action("editable_location"));
virtual ~DolphinMainWindow();
/**
- * Activates the given view, which means that
- * all menu actions are applied to this view. When
- * having a split view setup the nonactive view
+ * Returns the currently active view.
+ * All menu actions are applied to this view. When
+ * having a split view setup, the nonactive view
* is usually shown in darker colors.
*/
- void setActiveView(DolphinViewContainer* view);
+ inline DolphinViewContainer* activeViewContainer() const;
/**
- * Returns the currently active view. See
- * DolphinMainWindow::setActiveView() for more details.
+ * Returns true, if the main window contains two instances
+ * of a view container. The active view constainer can be
+ * accessed by DolphinMainWindow::activeViewContainer().
*/
- DolphinViewContainer* activeViewContainer() const
- {
- return m_activeViewContainer;
- }
+ inline bool isSplit() const;
+
+ /**
+ * If the main window contains two instances of a view container
+ * (DolphinMainWindow::isSplit() returns true), then the
+ * two views get toggled (the right view is on the left, the left
+ * view on the right).
+ */
+ void toggleViews();
/** Renames the item represented by \a oldUrl to \a newUrl. */
void rename(const KUrl& oldUrl, const KUrl& newUrl);
* Returns the 'Create New...' sub menu which also can be shared
* with other menus (e. g. a context menu).
*/
- KNewMenu* newMenu() const
- {
- return m_newMenu;
- }
+ inline KNewMenu* newMenu() const;
public slots:
/**
/**
* Returns the main window ID used through DBus.
*/
- int getId() const
- {
- return m_id;
- }
+ inline int getId() const;
/**
* Inform all affected dolphin components (sidebars, views) of an URL
void init();
void loadSettings();
- void setupAccel();
+ /**
+ * Activates the given view, which means that
+ * all menu actions are applied to this view. When
+ * having a split view setup, the nonactive view
+ * is usually shown in darker colors.
+ */
+ void setActiveViewContainer(DolphinViewContainer* view);
+
void setupActions();
void setupDockWidgets();
void updateHistory();
private:
/**
- * DolphinMainWindowsupports only one or two views, which
- * are handled internally as primary and secondary view.
+ * DolphinMainWindow supports up to two views beside each other.
*/
enum ViewIndex
{
- PrimaryIdx = 0,
- SecondaryIdx = 1
+ PrimaryView = 0, ///< View shown on the left side of the main window.
+ SecondaryView = 1 ///< View shown on the left side of the main window.
};
/**
* assures that all errors are shown in the status bar of Dolphin
* instead as modal error dialog with an OK button.
*/
-class UndoUiInterface : public KonqUndoManager::UiInterface
+ class UndoUiInterface : public KonqUndoManager::UiInterface
{
public:
UndoUiInterface(DolphinMainWindow* mainWin);
DolphinViewContainer* m_activeViewContainer;
int m_id;
- DolphinViewContainer* m_viewContainer[SecondaryIdx + 1];
+ DolphinViewContainer* m_viewContainer[SecondaryView + 1];
/// remember pending undo operations until they are finished
QList<KonqUndoManager::CommandType> m_undoCommandTypes;
};
+DolphinViewContainer* DolphinMainWindow::activeViewContainer() const
+{
+ return m_activeViewContainer;
+}
+
+bool DolphinMainWindow::isSplit() const
+{
+ return m_viewContainer[SecondaryView] != 0;
+}
+
+KNewMenu* DolphinMainWindow::newMenu() const
+{
+ return m_newMenu;
+}
+
+int DolphinMainWindow::getId() const
+{
+ return m_id;
+}
+
#endif // DOLPHIN_MAINWINDOW_H