X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/4af3a2dcb43d053865af282c2492cc60c4b438d2..85bc196887fbed01187e3830cd28c2500cb01cb2:/src/dolphinmainwindow.cpp diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index a2bb16b8a..e86ad13fa 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -244,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(); @@ -338,7 +348,7 @@ void DolphinMainWindow::slotAdditionalInfoChanged(KFileItemDelegate::AdditionalI } } -void DolphinMainWindow::slotSelectionChanged() +void DolphinMainWindow::slotSelectionChanged(const KFileItemList& selection) { updateEditActions(); @@ -353,7 +363,7 @@ void DolphinMainWindow::slotSelectionChanged() m_activeView->updateStatusBar(); - emit selectionChanged(); + emit selectionChanged(selection); } void DolphinMainWindow::slotHistoryChanged() @@ -361,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 = @@ -585,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() @@ -797,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 { @@ -1031,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(); @@ -1061,6 +1044,8 @@ void DolphinMainWindow::init() 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() @@ -1313,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) { @@ -1355,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"); @@ -1500,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) :