X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/8e4e7ce5b248026d941fc4097cbd92032ef53b19..2e9e908af60000c01bc0f5c17ff9dcdcbb8ec2ff:/src/dolphinmainwindow.cpp diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index ffe1c4e8e..536da2a47 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -19,9 +19,10 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ -#include #include "dolphinmainwindow.h" +#include + #include "dolphinapplication.h" #include "dolphinnewmenu.h" #include "dolphinsettings.h" @@ -207,11 +208,18 @@ void DolphinMainWindow::rename(const KUrl& oldUrl, const KUrl& newUrl) void DolphinMainWindow::refreshViews() { Q_ASSERT(m_view[PrimaryIdx] != 0); - m_view[PrimaryIdx]->refresh(); + // remember the current active view, as because of + // the refreshing the active view might change to + // the secondary view + DolphinView* activeView = m_activeView; + + m_view[PrimaryIdx]->refresh(); if (m_view[SecondaryIdx] != 0) { m_view[SecondaryIdx]->refresh(); } + + setActiveView(activeView); } void DolphinMainWindow::changeUrl(const KUrl& url) @@ -346,6 +354,11 @@ void DolphinMainWindow::slotSelectionChanged(const KFileItemList& selection) emit selectionChanged(selection); } +void DolphinMainWindow::slotRequestItemInfo(const KUrl& url) +{ + emit requestItemInfo(url); +} + void DolphinMainWindow::slotHistoryChanged() { updateHistory(); @@ -445,7 +458,8 @@ void DolphinMainWindow::deleteItems() void DolphinMainWindow::properties() { const KFileItemList list = m_activeView->selectedItems(); - new KPropertiesDialog(list, this); + KPropertiesDialog dialog(list, this); + dialog.exec(); } void DolphinMainWindow::quit() @@ -729,33 +743,21 @@ void DolphinMainWindow::toggleSplitView() // create a secondary view m_view[SecondaryIdx] = new DolphinView(this, 0, - m_view[PrimaryIdx]->url(), + m_view[PrimaryIdx]->rootUrl(), m_view[PrimaryIdx]->mode(), m_view[PrimaryIdx]->showHiddenFiles()); connectViewSignals(SecondaryIdx); - m_splitter->insertWidget(0, m_view[SecondaryIdx]); + m_splitter->addWidget(m_view[SecondaryIdx]); m_splitter->setSizes(QList() << newWidth << newWidth); m_view[SecondaryIdx]->reload(); m_view[SecondaryIdx]->show(); } else { // remove secondary view - if (m_activeView == m_view[PrimaryIdx]) { - m_view[SecondaryIdx]->close(); - m_view[SecondaryIdx]->deleteLater(); - m_view[SecondaryIdx] = 0; - setActiveView(m_view[PrimaryIdx]); - } else { - // The secondary view is active, hence from the users point of view - // the content of the secondary view should be moved to the primary view. - // From an implementation point of view it is more efficient to close - // the primary view and exchange the internal pointers afterwards. - m_view[PrimaryIdx]->close(); - delete m_view[PrimaryIdx]; - m_view[PrimaryIdx] = m_view[SecondaryIdx]; - m_view[SecondaryIdx] = 0; - setActiveView(m_view[PrimaryIdx]); - } + m_view[SecondaryIdx]->close(); + m_view[SecondaryIdx]->deleteLater(); + m_view[SecondaryIdx] = 0; } + setActiveView(m_view[PrimaryIdx]); emit activeViewChanged(); } @@ -984,13 +986,7 @@ void DolphinMainWindow::init() void DolphinMainWindow::loadSettings() { GeneralSettings* settings = DolphinSettings::instance().generalSettings(); - - KToggleAction* splitAction = static_cast(actionCollection()->action("split_view")); - if (settings->splitView()) { - splitAction->setChecked(true); - toggleSplitView(); - } - + updateSplitAction(settings->splitView()); updateViewActions(); } @@ -1065,13 +1061,13 @@ void DolphinMainWindow::setupActions() KToggleAction* iconsView = actionCollection()->add("icons"); iconsView->setText(i18n("Icons")); iconsView->setShortcut(Qt::CTRL | Qt::Key_1); - iconsView->setIcon(KIcon("view-icon")); + iconsView->setIcon(KIcon("fileview-icon")); connect(iconsView, SIGNAL(triggered()), this, SLOT(setIconsView())); KToggleAction* detailsView = actionCollection()->add("details"); detailsView->setText(i18n("Details")); detailsView->setShortcut(Qt::CTRL | Qt::Key_2); - detailsView->setIcon(KIcon("fileview-text")); + detailsView->setIcon(KIcon("fileview-detailed")); connect(detailsView, SIGNAL(triggered()), this, SLOT(setDetailsView())); KToggleAction* columnView = actionCollection()->add("columns"); @@ -1154,7 +1150,7 @@ void DolphinMainWindow::setupActions() KToggleAction* showPreview = actionCollection()->add("show_preview"); showPreview->setText(i18n("Preview")); - showPreview->setIcon(KIcon("thumbnail-show")); + showPreview->setIcon(KIcon("fileview-preview")); connect(showPreview, SIGNAL(triggered()), this, SLOT(togglePreview())); KToggleAction* showHiddenFiles = actionCollection()->add("show_hidden_files"); @@ -1162,10 +1158,9 @@ void DolphinMainWindow::setupActions() showHiddenFiles->setShortcut(Qt::ALT | Qt::Key_Period); connect(showHiddenFiles, SIGNAL(triggered()), this, SLOT(toggleShowHiddenFiles())); - KToggleAction* split = actionCollection()->add("split_view"); - split->setText(i18n("Split")); + QAction* split = actionCollection()->addAction("split_view"); split->setShortcut(Qt::Key_F10); - split->setIcon(KIcon("view-left-right")); + updateSplitAction(false); connect(split, SIGNAL(triggered()), this, SLOT(toggleSplitView())); QAction* reload = actionCollection()->addAction("reload"); @@ -1241,6 +1236,8 @@ void DolphinMainWindow::setupDockWidgets() infoWidget, SLOT(setUrl(KUrl))); connect(this, SIGNAL(selectionChanged(KFileItemList)), infoWidget, SLOT(setSelection(KFileItemList))); + connect(this, SIGNAL(requestItemInfo(KUrl)), + infoWidget, SLOT(requestDelayedItemInfo(KUrl))); // setup "Tree View" QDockWidget* treeViewDock = new QDockWidget(i18n("Folders")); @@ -1398,8 +1395,7 @@ void DolphinMainWindow::updateViewActions() static_cast(actionCollection()->action("show_hidden_files")); showHiddenFilesAction->setChecked(m_activeView->showHiddenFiles()); - KToggleAction* splitAction = static_cast(actionCollection()->action("split_view")); - splitAction->setChecked(m_view[SecondaryIdx] != 0); + updateSplitAction(m_view[SecondaryIdx] != 0); KToggleAction* editableLocactionAction = static_cast(actionCollection()->action("editable_location")); @@ -1455,6 +1451,8 @@ void DolphinMainWindow::connectViewSignals(int viewIndex) this, SLOT(slotAdditionalInfoChanged(KFileItemDelegate::AdditionalInformation))); connect(view, SIGNAL(selectionChanged(KFileItemList)), this, SLOT(slotSelectionChanged(KFileItemList))); + connect(view, SIGNAL(requestItemInfo(KUrl)), + this, SLOT(slotRequestItemInfo(KUrl))); connect(view, SIGNAL(showFilterBarChanged(bool)), this, SLOT(updateFilterBarAction(bool))); connect(view, SIGNAL(urlChanged(KUrl)), @@ -1467,6 +1465,18 @@ void DolphinMainWindow::connectViewSignals(int viewIndex) this, SLOT(slotHistoryChanged())); } +void DolphinMainWindow::updateSplitAction(bool isSplit) +{ + QAction* splitAction = actionCollection()->action("split_view"); + if (isSplit) { + splitAction->setText(i18n("Join")); + splitAction->setIcon(KIcon("fileview-join")); + } else { + splitAction->setText(i18n("Split")); + splitAction->setIcon(KIcon("fileview-split")); + } +} + DolphinMainWindow::UndoUiInterface::UndoUiInterface(DolphinMainWindow* mainWin) : KonqUndoManager::UiInterface(mainWin), m_mainWin(mainWin)