X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/d9ac44e08f8d2abe7104c20e308d05038e1896da..85bc196887fbed01187e3830cd28c2500cb01cb2:/src/dolphinmainwindow.cpp diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 5183f993d..e86ad13fa 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -29,7 +29,7 @@ #include "dolphinsettingsdialog.h" #include "dolphinstatusbar.h" #include "infosidebarpage.h" -#include "metadataloader.h" +#include "metadatawidget.h" #include "mainwindowadaptor.h" #include "treeviewsidebarpage.h" #include "urlnavigator.h" @@ -204,6 +204,7 @@ 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); } @@ -243,13 +244,23 @@ void DolphinMainWindow::refreshViews() emit activeViewChanged(); } -void DolphinMainWindow::changeUrl(const QString& url) +void DolphinMainWindow::changeUrl(const KUrl& url) { if (activeView() != 0) { - activeView()->setUrl(KUrl(url)); + activeView()->setUrl(url); + updateEditActions(); + updateViewActions(); + updateGoActions(); + setCaption(url.fileName()); + emit urlChanged(url); } } +void DolphinMainWindow::changeSelection(const KFileItemList& selection) +{ + activeView()->changeSelection(selection); +} + void DolphinMainWindow::slotViewModeChanged() { updateViewActions(); @@ -337,7 +348,7 @@ void DolphinMainWindow::slotAdditionalInfoChanged(KFileItemDelegate::AdditionalI } } -void DolphinMainWindow::slotSelectionChanged() +void DolphinMainWindow::slotSelectionChanged(const KFileItemList& selection) { updateEditActions(); @@ -352,7 +363,7 @@ void DolphinMainWindow::slotSelectionChanged() m_activeView->updateStatusBar(); - emit selectionChanged(); + emit selectionChanged(selection); } void DolphinMainWindow::slotHistoryChanged() @@ -360,14 +371,6 @@ void DolphinMainWindow::slotHistoryChanged() updateHistory(); } -void DolphinMainWindow::slotUrlChanged(const KUrl& url) -{ - updateEditActions(); - updateViewActions(); - updateGoActions(); - setCaption(url.fileName()); -} - void DolphinMainWindow::updateFilterBarAction(bool show) { KToggleAction* showFilterBarAction = @@ -456,17 +459,29 @@ void DolphinMainWindow::deleteItems() { clearStatusBar(); + // TODO: if KonqOperations::askDeleteConfirmation() would indicate when + // the operation has been finished, this method should be used. + KUrl::List list = m_activeView->selectedUrls(); const uint itemCount = list.count(); Q_ASSERT(itemCount >= 1); QString text; if (itemCount > 1) { - text = i18n("Do you really want to delete the %1 selected items?",itemCount); + text = i18n("Do you really want to delete the %1 selected items?", itemCount); } else { const KUrl& url = list.first(); - text = i18n("Do you really want to delete '%1'?",url.fileName()); + QString itemName; + if (url.protocol() == "trash" ) { + itemName = url.path(); + // TODO: check comment in konq_undo.cc in the method askDeleteConfirmation() + itemName.remove(QRegExp("^/[0-9]*-")); + } + else { + itemName = url.pathOrUrl(); + } + text = i18n("Do you really want to delete '%1'?", itemName); } const bool del = KMessageBox::warningContinueCancel(this, @@ -544,7 +559,7 @@ void DolphinMainWindow::slotUndoAvailable(bool available) DolphinStatusBar::OperationCompleted); break; - case KonqUndoManager::MKDIR: + case KonqUndoManager::MKDIR: statusBar->setMessage(i18n("Created directory."), DolphinStatusBar::OperationCompleted); break; @@ -572,32 +587,11 @@ void DolphinMainWindow::undo() void DolphinMainWindow::cut() { - QClipboard* clipboard = QApplication::clipboard(); - const QMimeData* currentMimeData = clipboard->mimeData(); - const bool hadCutSelection = KonqMimeData::decodeIsCutSelection(currentMimeData); - QMimeData* mimeData = new QMimeData(); const KUrl::List kdeUrls = m_activeView->selectedUrls(); const KUrl::List mostLocalUrls; KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, true); QApplication::clipboard()->setMimeData(mimeData); - - if (hadCutSelection) { - // If an old cut selection has been applied, the view must - // be reloaded to get the original icons of the items without an - // applied item effect. - m_view[PrimaryIdx]->reload(); - if (m_view[SecondaryIdx] != 0) { - m_view[SecondaryIdx]->reload(); - } - } - else { - // apply an item effect for the icons of all cut items - m_view[PrimaryIdx]->updateCutItems(); - if (m_view[SecondaryIdx] != 0) { - m_view[SecondaryIdx]->updateCutItems(); - } - } } void DolphinMainWindow::copy() @@ -784,6 +778,7 @@ void DolphinMainWindow::toggleSplitView() connectViewSignals(SecondaryIdx); m_splitter->addWidget(m_view[SecondaryIdx]); m_splitter->setSizes(QList() << newWidth << newWidth); + m_view[SecondaryIdx]->reload(); m_view[SecondaryIdx]->show(); } else { @@ -1018,10 +1013,11 @@ void DolphinMainWindow::init() homeUrl, props.viewMode(), props.showHiddenFiles()); - connectViewSignals(PrimaryIdx); - m_view[PrimaryIdx]->show(); m_activeView = m_view[PrimaryIdx]; + connectViewSignals(PrimaryIdx); + m_view[PrimaryIdx]->reload(); + m_view[PrimaryIdx]->show(); setCentralWidget(m_splitter); setupDockWidgets(); @@ -1045,9 +1041,11 @@ void DolphinMainWindow::init() resize(640, 480); } #ifdef HAVE_KMETADATA - if (!DolphinApplication::app()->metadataLoader()->storageUp()) + if ( !MetaDataWidget::metaDataAvailable() ) activeView()->statusBar()->setMessage(i18n("Failed to contact Nepomuk service, annotation and tagging are disabled."), DolphinStatusBar::Error); #endif + + emit urlChanged(homeUrl); } void DolphinMainWindow::loadSettings() @@ -1300,37 +1298,45 @@ void DolphinMainWindow::setupDockWidgets() // after the dock concept has been finalized. // setup "Bookmarks" - QDockWidget* shortcutsDock = new QDockWidget(i18n("Bookmarks")); + QDockWidget* shortcutsDock = new QDockWidget(i18n("Bookmarks"), this); shortcutsDock->setObjectName("bookmarksDock"); shortcutsDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); - shortcutsDock->setWidget(new BookmarksSidebarPage(this)); + SidebarPage* shortcutsWidget = new BookmarksSidebarPage(shortcutsDock); + shortcutsDock->setWidget(shortcutsWidget); + shortcutsDock->toggleViewAction()->setText(i18n("Show Bookmarks Panel")); actionCollection()->addAction("show_bookmarks_panel", shortcutsDock->toggleViewAction()); addDockWidget(Qt::LeftDockWidgetArea, shortcutsDock); + connectSidebarPage(shortcutsWidget); // setup "Information" - QDockWidget* infoDock = new QDockWidget(i18n("Information")); + QDockWidget* infoDock = new QDockWidget(i18n("Information"), this); infoDock->setObjectName("infoDock"); infoDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); - infoDock->setWidget(new InfoSidebarPage(this)); + SidebarPage* infoWidget = new InfoSidebarPage(infoDock); + infoDock->setWidget(infoWidget); + infoDock->toggleViewAction()->setText(i18n("Show Information Panel")); actionCollection()->addAction("show_info_panel", infoDock->toggleViewAction()); addDockWidget(Qt::RightDockWidgetArea, infoDock); + connectSidebarPage(infoWidget); // 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)); + TreeViewSidebarPage* treeWidget = new TreeViewSidebarPage(treeViewDock); + treeViewDock->setWidget(treeWidget); treeViewDock->toggleViewAction()->setText(i18n("Show Folders Panel")); actionCollection()->addAction("show_folders_panel", treeViewDock->toggleViewAction()); addDockWidget(Qt::LeftDockWidgetArea, treeViewDock); + connectSidebarPage(treeWidget); const bool firstRun = DolphinSettings::instance().generalSettings()->firstRun(); if (firstRun) { @@ -1342,11 +1348,10 @@ void DolphinMainWindow::setupDockWidgets() void DolphinMainWindow::updateHistory() { int index = 0; - const QLinkedList list = m_activeView->urlHistory(index); QAction* backAction = actionCollection()->action("go_back"); if (backAction != 0) { - backAction->setEnabled(index < static_cast(list.count()) - 1); + backAction->setEnabled(index < m_activeView->urlNavigator()->historySize() - 1); } QAction* forwardAction = actionCollection()->action("go_forward"); @@ -1487,17 +1492,32 @@ void DolphinMainWindow::connectViewSignals(int viewIndex) this, SLOT(slotSortOrderChanged(Qt::SortOrder))); connect(view, SIGNAL(additionalInfoChanged(KFileItemDelegate::AdditionalInformation)), this, SLOT(slotAdditionalInfoChanged(KFileItemDelegate::AdditionalInformation))); - connect(view, SIGNAL(selectionChanged()), - this, SLOT(slotSelectionChanged())); + connect(view, SIGNAL(selectionChanged(KFileItemList)), + this, SLOT(slotSelectionChanged(KFileItemList))); connect(view, SIGNAL(showFilterBarChanged(bool)), this, SLOT(updateFilterBarAction(bool))); + connect(view, SIGNAL(urlChanged(KUrl)), + this, SLOT(changeUrl(KUrl))); const UrlNavigator* navigator = view->urlNavigator(); connect(navigator, SIGNAL(urlChanged(const KUrl&)), - this, SLOT(slotUrlChanged(const KUrl&))); + this, SLOT(changeUrl(const KUrl&))); connect(navigator, SIGNAL(historyChanged()), this, SLOT(slotHistoryChanged())); +} +void DolphinMainWindow::connectSidebarPage(SidebarPage* page) +{ + connect(page, SIGNAL(changeUrl(KUrl)), + this, SLOT(changeUrl(KUrl))); + connect(page, SIGNAL(changeSelection(KFileItemList)), + this, SLOT(changeSelection(KFileItemList))); + connect(page, SIGNAL(urlsDropped(KUrl::List,KUrl)), + this, SLOT(dropUrls(KUrl::List,KUrl))); + connect(this, SIGNAL(urlChanged(KUrl)), + page, SLOT(setUrl(KUrl))); + connect(this, SIGNAL(selectionChanged(KFileItemList)), + page, SLOT(setSelection(KFileItemList))); } DolphinMainWindow::UndoUiInterface::UndoUiInterface(DolphinMainWindow* mainWin) :