X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/abf17941f7a052d25788d2f2f3c84e5aae935e29..9470a816eb578de47abe39788db5ea73fb22232e:/src/dolphinmainwindow.cpp diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index a25c61038..a2fe72d6e 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -19,24 +19,26 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ +#include #include "dolphinmainwindow.h" #include +#include "bookmarkssidebarpage.h" #include "dolphinapplication.h" #include "dolphinnewmenu.h" #include "dolphinsettings.h" #include "dolphinsettingsdialog.h" #include "dolphinstatusbar.h" -#include "dolphinapplication.h" -#include "urlnavigator.h" -#include "dolphinsettings.h" -#include "bookmarkssidebarpage.h" #include "infosidebarpage.h" -#include "generalsettings.h" +#include "metadataloader.h" +#include "mainwindowadaptor.h" +#include "treeviewsidebarpage.h" +#include "urlnavigator.h" #include "viewpropertiesdialog.h" #include "viewproperties.h" -#include "mainwindowadaptor.h" + +#include "dolphin_generalsettings.h" #include #include @@ -153,17 +155,17 @@ void DolphinMainWindow::dropUrls(const KUrl::List& urls, QString seq = QKeySequence(Qt::ShiftModifier).toString(); seq.chop(1); // chop superfluous '+' QAction* moveAction = popup.addAction(KIcon("goto"), - i18n("&Move Here") + "\t" + seq); + i18n("&Move Here") + '\t' + seq); seq = QKeySequence(Qt::ControlModifier).toString(); seq.chop(1); QAction* copyAction = popup.addAction(KIcon("editcopy"), - i18n("&Copy Here") + "\t" + seq); + i18n("&Copy Here") + '\t' + seq); seq = QKeySequence(Qt::ControlModifier + Qt::ShiftModifier).toString(); seq.chop(1); QAction* linkAction = popup.addAction(KIcon("www"), - i18n("&Link Here") + "\t" + seq); + i18n("&Link Here") + '\t' + seq); popup.addSeparator(); popup.addAction(KIcon("stop"), i18n("Cancel")); @@ -248,6 +250,13 @@ void DolphinMainWindow::slotViewModeChanged() updateViewActions(); } +void DolphinMainWindow::slotShowPreviewChanged() +{ + // It is not enough to update the 'Show Preview' action, also + // the 'Zoom In' and 'Zoom Out' actions must be adapted. + updateViewActions(); +} + void DolphinMainWindow::slotShowHiddenFilesChanged() { KToggleAction* showHiddenFilesAction = @@ -320,6 +329,7 @@ void DolphinMainWindow::slotHistoryChanged() void DolphinMainWindow::slotUrlChanged(const KUrl& url) { updateEditActions(); + updateViewActions(); updateGoActions(); setCaption(url.fileName()); } @@ -360,28 +370,28 @@ void DolphinMainWindow::closeEvent(QCloseEvent* event) void DolphinMainWindow::saveProperties(KConfig* config) { - config->setGroup("Primary view"); - config->writeEntry("Url", m_view[PrimaryIdx]->url().url()); - config->writeEntry("Editable Url", m_view[PrimaryIdx]->isUrlEditable()); + KConfigGroup primaryView = config->group("Primary view"); + primaryView.writeEntry("Url", m_view[PrimaryIdx]->url().url()); + primaryView.writeEntry("Editable Url", m_view[PrimaryIdx]->isUrlEditable()); if (m_view[SecondaryIdx] != 0) { - config->setGroup("Secondary view"); - config->writeEntry("Url", m_view[SecondaryIdx]->url().url()); - config->writeEntry("Editable Url", m_view[SecondaryIdx]->isUrlEditable()); + KConfigGroup secondaryView = config->group("Secondary view"); + secondaryView.writeEntry("Url", m_view[SecondaryIdx]->url().url()); + secondaryView.writeEntry("Editable Url", m_view[SecondaryIdx]->isUrlEditable()); } } void DolphinMainWindow::readProperties(KConfig* config) { - config->setGroup("Primary view"); - m_view[PrimaryIdx]->setUrl(config->readEntry("Url")); - m_view[PrimaryIdx]->setUrlEditable(config->readEntry("Editable Url", false)); + const KConfigGroup primaryView = config->group("Primary view"); + m_view[PrimaryIdx]->setUrl(primaryView.readEntry("Url")); + m_view[PrimaryIdx]->setUrlEditable(primaryView.readEntry("Editable Url", false)); if (config->hasGroup("Secondary view")) { - config->setGroup("Secondary view"); + const KConfigGroup secondaryView = config->group("Secondary view"); if (m_view[SecondaryIdx] == 0) { toggleSplitView(); } - m_view[SecondaryIdx]->setUrl(config->readEntry("Url")); - m_view[SecondaryIdx]->setUrlEditable(config->readEntry("Editable Url", false)); + m_view[SecondaryIdx]->setUrl(secondaryView.readEntry("Url")); + m_view[SecondaryIdx]->setUrlEditable(secondaryView.readEntry("Editable Url", false)); } else if (m_view[SecondaryIdx] != 0) { toggleSplitView(); @@ -427,7 +437,7 @@ void DolphinMainWindow::deleteItems() const bool del = KMessageBox::warningContinueCancel(this, text, - QString::null, + QString(), KGuiItem(i18n("Delete"), KIcon("editdelete")) ) == KMessageBox::Continue; if (del) { @@ -590,7 +600,7 @@ void DolphinMainWindow::updatePasteAction() pasteAction->setText(i18n("Paste 1 File")); } else { - pasteAction->setText(i18n("Paste %1 Files").arg(count)); + pasteAction->setText(i18n("Paste %1 Files", count)); } } else { @@ -918,7 +928,7 @@ void DolphinMainWindow::init() setupActions(); - const KUrl& homeUrl = root.first().url(); + const KUrl& homeUrl = settings.generalSettings()->homeUrl(); setCaption(homeUrl.fileName()); ViewProperties props(homeUrl); m_view[PrimaryIdx] = new DolphinView(this, @@ -952,6 +962,10 @@ void DolphinMainWindow::init() // assure a proper default size if Dolphin runs the first time resize(640, 480); } + #ifdef HAVE_KMETADATA + if (!DolphinApplication::app()->metadataLoader()->storageUp()) + activeView()->statusBar()->setMessage(i18n("Failed to contact Nepomuk service, annotation and tagging are disabled."), DolphinStatusBar::Error); + #endif } void DolphinMainWindow::loadSettings() @@ -988,10 +1002,11 @@ void DolphinMainWindow::setupActions() connect(menu, SIGNAL(aboutToShow()), this, SLOT(updateNewMenu())); - QAction* action = actionCollection()->addAction("new_window"); - action->setIcon(KIcon("window_new")); - action->setText(i18n("New &Window")); - connect(action, SIGNAL(triggered()), this, SLOT(openNewMainWindow())); + QAction* newWindow = actionCollection()->addAction("new_window"); + newWindow->setIcon(KIcon("window_new")); + newWindow->setText(i18n("New &Window")); + newWindow->setShortcut(Qt::CTRL | Qt::Key_N); + connect(newWindow, SIGNAL(triggered()), this, SLOT(openNewMainWindow())); QAction* rename = actionCollection()->addAction("rename"); rename->setText(i18n("Rename")); @@ -1006,7 +1021,7 @@ void DolphinMainWindow::setupActions() QAction* deleteAction = actionCollection()->addAction("delete"); deleteAction->setText(i18n("Delete")); - deleteAction->setShortcut(Qt::ALT | Qt::Key_Delete); + deleteAction->setShortcut(Qt::SHIFT | Qt::Key_Delete); deleteAction->setIcon(KIcon("editdelete")); connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteItems())); @@ -1176,6 +1191,10 @@ void DolphinMainWindow::setupActions() void DolphinMainWindow::setupDockWidgets() { + // TODO: there's a lot copy/paste code here. Provide a generic approach + // after the dock concept has been finalized. + + // setup "Bookmarks" QDockWidget* shortcutsDock = new QDockWidget(i18n("Bookmarks")); shortcutsDock->setObjectName("bookmarksDock"); shortcutsDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); @@ -1186,6 +1205,7 @@ void DolphinMainWindow::setupDockWidgets() addDockWidget(Qt::LeftDockWidgetArea, shortcutsDock); + // setup "Information" QDockWidget* infoDock = new QDockWidget(i18n("Information")); infoDock->setObjectName("infoDock"); infoDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); @@ -1195,6 +1215,23 @@ void DolphinMainWindow::setupDockWidgets() actionCollection()->addAction("show_info_panel", infoDock->toggleViewAction()); addDockWidget(Qt::RightDockWidgetArea, infoDock); + + // setup "Tree View" + QDockWidget* treeViewDock = new QDockWidget(i18n("Folders")); // TODO: naming? + treeViewDock->setObjectName("treeViewDock"); + treeViewDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); + treeViewDock->setWidget(new TreeViewSidebarPage(this)); + + treeViewDock->toggleViewAction()->setText(i18n("Show Folders Panel")); + actionCollection()->addAction("show_folders_panel", treeViewDock->toggleViewAction()); + + addDockWidget(Qt::LeftDockWidgetArea, treeViewDock); + + const bool firstRun = DolphinSettings::instance().generalSettings()->firstRun(); + if (firstRun) { + infoDock->hide(); + treeViewDock->hide(); + } } void DolphinMainWindow::updateHistory() @@ -1283,6 +1320,10 @@ void DolphinMainWindow::updateViewActions() static_cast(actionCollection()->action("show_filter_bar")); showFilterBarAction->setChecked(m_activeView->isFilterBarVisible()); + KToggleAction* showPreviewAction = + static_cast(actionCollection()->action("show_preview")); + showPreviewAction->setChecked(m_activeView->showPreview()); + KToggleAction* showHiddenFilesAction = static_cast(actionCollection()->action("show_hidden_files")); showHiddenFilesAction->setChecked(m_activeView->showHiddenFiles()); @@ -1330,6 +1371,8 @@ void DolphinMainWindow::connectViewSignals(int viewIndex) DolphinView* view = m_view[viewIndex]; connect(view, SIGNAL(modeChanged()), this, SLOT(slotViewModeChanged())); + connect(view, SIGNAL(showPreviewChanged()), + this, SLOT(slotShowPreviewChanged())); connect(view, SIGNAL(showHiddenFilesChanged()), this, SLOT(slotShowHiddenFilesChanged())); connect(view, SIGNAL(sortingChanged(DolphinView::Sorting)),