X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/45a1074b0a38f38cfebde8bb65d5a6520b2db3e8..613a132a3697db603bca593a36f91ee3f9ccafdd:/src/dolphinmainwindow.cpp diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index c1d6cef39..d4276d492 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -26,6 +26,7 @@ #include #include "dolphinapplication.h" +#include "dolphinfileplacesview.h" #include "dolphinnewmenu.h" #include "dolphinsettings.h" #include "dolphinsettingsdialog.h" @@ -36,11 +37,8 @@ #include "mainwindowadaptor.h" #include "terminalsidebarpage.h" #include "treeviewsidebarpage.h" -#include "kurlnavigator.h" #include "viewpropertiesdialog.h" #include "viewproperties.h" -#include "kfileplacesmodel.h" -#include "kfileplacesview.h" #include "dolphin_generalsettings.h" #include "dolphin_iconsmodesettings.h" @@ -51,6 +49,7 @@ #include #include #include +#include #include #include #include @@ -60,6 +59,7 @@ #include #include #include +#include #include #include #include @@ -177,51 +177,11 @@ void DolphinMainWindow::changeSelection(const KFileItemList& selection) activeViewContainer()->view()->changeSelection(selection); } -void DolphinMainWindow::slotViewModeChanged() +void DolphinMainWindow::slotEditableStateChanged(bool editable) { - updateViewActions(); -} - -void DolphinMainWindow::slotSortingChanged(DolphinView::Sorting sorting) -{ - QAction* action = 0; - switch (sorting) { - case DolphinView::SortByName: - action = actionCollection()->action("sort_by_name"); - break; - case DolphinView::SortBySize: - action = actionCollection()->action("sort_by_size"); - break; - case DolphinView::SortByDate: - action = actionCollection()->action("sort_by_date"); - break; - case DolphinView::SortByPermissions: - action = actionCollection()->action("sort_by_permissions"); - break; - case DolphinView::SortByOwner: - action = actionCollection()->action("sort_by_owner"); - break; - case DolphinView::SortByGroup: - action = actionCollection()->action("sort_by_group"); - break; - case DolphinView::SortByType: - action = actionCollection()->action("sort_by_type"); - break; -#ifdef HAVE_NEPOMUK - case DolphinView::SortByRating: - action = actionCollection()->action("sort_by_rating"); - break; - case DolphinView::SortByTags: - action = actionCollection()->action("sort_by_tags"); - break; -#endif - default: - break; - } - - if (action != 0) { - action->setChecked(true); - } + KToggleAction* editableLocationAction = + static_cast(actionCollection()->action("editable_location")); + editableLocationAction->setChecked(editable); } void DolphinMainWindow::slotSelectionChanged(const KFileItemList& selection) @@ -368,7 +328,7 @@ void DolphinMainWindow::slotHandlePlacesError(const QString &message) void DolphinMainWindow::slotUndoAvailable(bool available) { - QAction* undoAction = actionCollection()->action(KStandardAction::stdName(KStandardAction::Undo)); + QAction* undoAction = actionCollection()->action(KStandardAction::name(KStandardAction::Undo)); if (undoAction != 0) { undoAction->setEnabled(available); } @@ -412,7 +372,7 @@ void DolphinMainWindow::slotUndoAvailable(bool available) void DolphinMainWindow::slotUndoTextChanged(const QString& text) { - QAction* undoAction = actionCollection()->action(KStandardAction::stdName(KStandardAction::Undo)); + QAction* undoAction = actionCollection()->action(KStandardAction::name(KStandardAction::Undo)); if (undoAction != 0) { undoAction->setText(text); } @@ -441,7 +401,7 @@ void DolphinMainWindow::paste() void DolphinMainWindow::updatePasteAction() { - QAction* pasteAction = actionCollection()->action(KStandardAction::stdName(KStandardAction::Paste)); + QAction* pasteAction = actionCollection()->action(KStandardAction::name(KStandardAction::Paste)); if (pasteAction == 0) { return; } @@ -475,61 +435,6 @@ void DolphinMainWindow::invertSelection() m_activeViewContainer->view()->invertSelection(); } -void DolphinMainWindow::setViewMode(QAction* action) -{ - const DolphinView::Mode mode = action->data().value(); - m_activeViewContainer->view()->setMode(mode); -} - -void DolphinMainWindow::sortByName() -{ - m_activeViewContainer->view()->setSorting(DolphinView::SortByName); -} - -void DolphinMainWindow::sortBySize() -{ - m_activeViewContainer->view()->setSorting(DolphinView::SortBySize); -} - -void DolphinMainWindow::sortByDate() -{ - m_activeViewContainer->view()->setSorting(DolphinView::SortByDate); -} - -void DolphinMainWindow::sortByPermissions() -{ - m_activeViewContainer->view()->setSorting(DolphinView::SortByPermissions); -} - -void DolphinMainWindow::sortByOwner() -{ - m_activeViewContainer->view()->setSorting(DolphinView::SortByOwner); -} - -void DolphinMainWindow::sortByGroup() -{ - m_activeViewContainer->view()->setSorting(DolphinView::SortByGroup); -} - -void DolphinMainWindow::sortByType() -{ - m_activeViewContainer->view()->setSorting(DolphinView::SortByType); -} - -void DolphinMainWindow::sortByRating() -{ -#ifdef HAVE_NEPOMUK - m_activeViewContainer->view()->setSorting(DolphinView::SortByRating); -#endif -} - -void DolphinMainWindow::sortByTags() -{ -#ifdef HAVE_NEPOMUK - m_activeViewContainer->view()->setSorting(DolphinView::SortByTags); -#endif -} - void DolphinMainWindow::toggleSplitView() { if (m_viewContainer[SecondaryView] == 0) { @@ -701,23 +606,26 @@ void DolphinMainWindow::editSettings() void DolphinMainWindow::init() { + DolphinSettings& settings = DolphinSettings::instance(); + // Check whether Dolphin runs the first time. If yes then // a proper default window size is given at the end of DolphinMainWindow::init(). - GeneralSettings* generalSettings = DolphinSettings::instance().generalSettings(); + GeneralSettings* generalSettings = settings.generalSettings(); const bool firstRun = generalSettings->firstRun(); if (firstRun) { generalSettings->setViewPropsTimestamp(QDateTime::currentDateTime()); + Q_ASSERT(generalSettings->homeUrl().isEmpty()); + const KUrl homeUrl(QDir::homePath()); + generalSettings->setHomeUrl(homeUrl.prettyUrl()); } setAcceptDrops(true); m_splitter = new QSplitter(this); - DolphinSettings& settings = DolphinSettings::instance(); - setupActions(); - const KUrl& homeUrl = settings.generalSettings()->homeUrl(); + const KUrl& homeUrl = generalSettings->homeUrl(); setCaption(homeUrl.fileName()); m_actionHandler = new DolphinViewActionHandler(actionCollection(), this); connect(m_actionHandler, SIGNAL(actionBeingHandled()), SLOT(clearStatusBar())); @@ -815,8 +723,8 @@ void DolphinMainWindow::setupActions() SLOT(undo()), actionCollection()); - //Need to remove shift+del from cut action, else the shortcut for deletejob - //doesn't work + // 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); @@ -835,86 +743,7 @@ void DolphinMainWindow::setupActions() connect(invertSelection, SIGNAL(triggered()), this, SLOT(invertSelection())); // setup 'View' menu - - KToggleAction* iconsView = DolphinView::iconsModeAction(actionCollection()); - KToggleAction* detailsView = DolphinView::detailsModeAction(actionCollection()); - KToggleAction* columnView = DolphinView::columnsModeAction(actionCollection()); - - QActionGroup* viewModeGroup = new QActionGroup(this); - viewModeGroup->addAction(iconsView); - viewModeGroup->addAction(detailsView); - viewModeGroup->addAction(columnView); - connect(viewModeGroup, SIGNAL(triggered(QAction*)), this, SLOT(setViewMode(QAction*))); - - //QActionGroup* sortActionGroup = DolphinView::createSortActionGroup(actionCollection()); - //connect(sortActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(sortActionGroupTriggered(QAction*))); - - // TODO use a QActionGroup - - KToggleAction* sortByName = actionCollection()->add("sort_by_name"); - sortByName->setText(i18nc("@action:inmenu Sort By", "Name")); - connect(sortByName, SIGNAL(triggered()), this, SLOT(sortByName())); - - KToggleAction* sortBySize = actionCollection()->add("sort_by_size"); - sortBySize->setText(i18nc("@action:inmenu Sort By", "Size")); - connect(sortBySize, SIGNAL(triggered()), this, SLOT(sortBySize())); - - KToggleAction* sortByDate = actionCollection()->add("sort_by_date"); - sortByDate->setText(i18nc("@action:inmenu Sort By", "Date")); - connect(sortByDate, SIGNAL(triggered()), this, SLOT(sortByDate())); - - KToggleAction* sortByPermissions = actionCollection()->add("sort_by_permissions"); - sortByPermissions->setText(i18nc("@action:inmenu Sort By", "Permissions")); - connect(sortByPermissions, SIGNAL(triggered()), this, SLOT(sortByPermissions())); - - KToggleAction* sortByOwner = actionCollection()->add("sort_by_owner"); - sortByOwner->setText(i18nc("@action:inmenu Sort By", "Owner")); - connect(sortByOwner, SIGNAL(triggered()), this, SLOT(sortByOwner())); - - KToggleAction* sortByGroup = actionCollection()->add("sort_by_group"); - sortByGroup->setText(i18nc("@action:inmenu Sort By", "Group")); - connect(sortByGroup, SIGNAL(triggered()), this, SLOT(sortByGroup())); - - KToggleAction* sortByType = actionCollection()->add("sort_by_type"); - sortByType->setText(i18nc("@action:inmenu Sort By", "Type")); - connect(sortByType, SIGNAL(triggered()), this, SLOT(sortByType())); - - // TODO: Hided "sort by rating" and "sort by tags" as without caching the performance - // is too slow currently (Nepomuk will support caching in future releases). - // - // KToggleAction* sortByRating = actionCollection()->add("sort_by_rating"); - // sortByRating->setText(i18nc("@action:inmenu Sort By", "Rating")); - // - // KToggleAction* sortByTags = actionCollection()->add("sort_by_tags"); - // sortByTags->setText(i18nc("@action:inmenu Sort By", "Tags")); - // -#ifdef HAVE_NEPOMUK - // if (MetaDataWidget::metaDataAvailable()) { - // connect(sortByRating, SIGNAL(triggered()), this, SLOT(sortByRating())); - // connect(sortByTags, SIGNAL(triggered()), this, SLOT(sortByTags())); - // } - // else { - // sortByRating->setEnabled(false); - // sortByTags->setEnabled(false); - // } -#else - // sortByRating->setEnabled(false); - // sortByTags->setEnabled(false); -#endif - - QActionGroup* sortGroup = new QActionGroup(this); - sortGroup->addAction(sortByName); - sortGroup->addAction(sortBySize); - sortGroup->addAction(sortByDate); - sortGroup->addAction(sortByPermissions); - sortGroup->addAction(sortByOwner); - sortGroup->addAction(sortByGroup); - sortGroup->addAction(sortByType); - - // TODO: Hided "sort by rating" and "sort by tags" as without caching the performance - // is too slow currently (Nepomuk will support caching in future releases). - //sortGroup->addAction(sortByRating); - //sortGroup->addAction(sortByTags); + // (note that most of it is set up in DolphinViewActionHandler) KAction* split = actionCollection()->addAction("split_view"); split->setShortcut(Qt::Key_F3); @@ -932,9 +761,7 @@ void DolphinMainWindow::setupActions() stop->setIcon(KIcon("process-stop")); connect(stop, SIGNAL(triggered()), this, SLOT(stopLoading())); - // TODO: the URL navigator must emit a signal if the editable state has been - // changed, so that the corresponding showFullLocation action is updated. Also - // the naming "Show full Location" is currently confusing... + // TODO: the naming "Show full Location" is currently confusing... KToggleAction* showFullLocation = actionCollection()->add("editable_location"); showFullLocation->setText(i18nc("@action:inmenu Navigation Bar", "Show Full Location")); showFullLocation->setShortcut(Qt::CTRL | Qt::Key_L); @@ -1051,7 +878,8 @@ void DolphinMainWindow::setupDockWidgets() QDockWidget* placesDock = new QDockWidget(i18nc("@title:window", "Places")); placesDock->setObjectName("placesDock"); placesDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); - KFilePlacesView* placesView = new KFilePlacesView(placesDock); + + DolphinFilePlacesView* placesView = new DolphinFilePlacesView(placesDock); placesDock->setWidget(placesView); placesView->setModel(DolphinSettings::instance().placesModel()); placesView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); @@ -1119,14 +947,6 @@ void DolphinMainWindow::updateViewActions() { m_actionHandler->updateViewActions(); - const DolphinView* view = m_activeViewContainer->view(); - QAction* action = actionCollection()->action(view->currentViewModeActionName()); - if (action != 0) { - action->setChecked(true); - } - - slotSortingChanged(view->sorting()); - QAction* showFilterBarAction = actionCollection()->action("show_filter_bar"); showFilterBarAction->setChecked(m_activeViewContainer->isFilterBarVisible()); @@ -1139,7 +959,7 @@ void DolphinMainWindow::updateViewActions() void DolphinMainWindow::updateGoActions() { - QAction* goUpAction = actionCollection()->action(KStandardAction::stdName(KStandardAction::Up)); + QAction* goUpAction = actionCollection()->action(KStandardAction::name(KStandardAction::Up)); const KUrl& currentUrl = m_activeViewContainer->url(); goUpAction->setEnabled(currentUrl.upUrl() != currentUrl); } @@ -1156,10 +976,6 @@ void DolphinMainWindow::connectViewSignals(int viewIndex) this, SLOT(updateFilterBarAction(bool))); DolphinView* view = container->view(); - connect(view, SIGNAL(modeChanged()), - this, SLOT(slotViewModeChanged())); - connect(view, SIGNAL(sortingChanged(DolphinView::Sorting)), - this, SLOT(slotSortingChanged(DolphinView::Sorting))); connect(view, SIGNAL(selectionChanged(KFileItemList)), this, SLOT(slotSelectionChanged(KFileItemList))); connect(view, SIGNAL(requestItemInfo(KFileItem)), @@ -1174,6 +990,8 @@ void DolphinMainWindow::connectViewSignals(int viewIndex) this, SLOT(changeUrl(const KUrl&))); connect(navigator, SIGNAL(historyChanged()), this, SLOT(slotHistoryChanged())); + connect(navigator, SIGNAL(editableStateChanged(bool)), + this, SLOT(slotEditableStateChanged(bool))); } void DolphinMainWindow::updateSplitAction()