X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/81fcd720a2cc095262e52b8a40dd1472d774a415..b5eca6dc2aaa6f90d7dc2fe27ab9ccc45aee77f2:/src/dolphinmainwindow.cpp diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 5657a2c8c..a7cbc527a 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -150,6 +150,9 @@ void DolphinMainWindow::refreshViews() void DolphinMainWindow::dropUrls(const KUrl::List& urls, const KUrl& destination) { + kDebug() << "Source" << urls; + kDebug() << "Destination:" << destination; + Qt::DropAction action = Qt::CopyAction; Qt::KeyboardModifiers modifier = QApplication::keyboardModifiers(); @@ -237,7 +240,7 @@ void DolphinMainWindow::changeUrl(const KUrl& url) } } -void DolphinMainWindow::changeSelection(const QList& selection) +void DolphinMainWindow::changeSelection(const KFileItemList& selection) { activeViewContainer()->view()->changeSelection(selection); } @@ -321,37 +324,41 @@ void DolphinMainWindow::slotSortOrderChanged(Qt::SortOrder order) descending->setChecked(sortDescending); } -void DolphinMainWindow::slotAdditionalInfoChanged(KFileItemDelegate::AdditionalInformation info) +void DolphinMainWindow::slotAdditionalInfoChanged(KFileItemDelegate::InformationList list) { - QAction* action = 0; - switch (info) { - case KFileItemDelegate::FriendlyMimeType: - action = actionCollection()->action("show_mime_info"); - break; - case KFileItemDelegate::Size: - action = actionCollection()->action("show_size_info"); - break; - case KFileItemDelegate::ModificationTime: - action = actionCollection()->action("show_date_info"); - break; - case KFileItemDelegate::NoInformation: - default: - action = actionCollection()->action("clear_info"); - break; - } + QAction* showMimeInfo = actionCollection()->action("show_mime_info"); + QAction* showSizeInfo = actionCollection()->action("show_size_info"); + QAction* showDateInfo = actionCollection()->action("show_date_info"); - if (action != 0) { - KToggleAction* toggleAction = static_cast(action); - toggleAction->setChecked(true); + showMimeInfo->setChecked(false); + showSizeInfo->setChecked(false); + showDateInfo->setChecked(false); - QActionGroup* group = toggleAction->actionGroup(); - Q_ASSERT(group != 0); - const DolphinView* view = m_activeViewContainer->view(); - group->setEnabled(view->mode() == DolphinView::IconsView); + const DolphinView* view = m_activeViewContainer->view(); + // currently only the icons view supports additional information + const bool enable = (view->mode() == DolphinView::IconsView); + showMimeInfo->setEnabled(enable); + showSizeInfo->setEnabled(enable); + showDateInfo->setEnabled(enable); + + foreach (KFileItemDelegate::Information info, list) { + switch (info) { + case KFileItemDelegate::FriendlyMimeType: + showMimeInfo->setChecked(true); + break; + case KFileItemDelegate::Size: + showSizeInfo->setChecked(true); + break; + case KFileItemDelegate::ModificationTime: + showDateInfo->setChecked(true); + break; + default: + break; + } } } -void DolphinMainWindow::slotSelectionChanged(const QList& selection) +void DolphinMainWindow::slotSelectionChanged(const KFileItemList& selection) { updateEditActions(); @@ -490,14 +497,9 @@ void DolphinMainWindow::deleteItems() void DolphinMainWindow::properties() { - QList list = m_activeViewContainer->view()->selectedItems(); - // ### KPropertiesDialog still uses pointer-based KFileItemList - KFileItemList lst; - // Can't be a const_iterator :( - for ( QList::iterator it = list.begin(), end = list.end() ; it != end ; ++it ) { - lst << & *it; // ugly! - } - KPropertiesDialog dialog(lst, this); + const KFileItemList list = m_activeViewContainer->view()->selectedItems(); + + KPropertiesDialog dialog(list, this); dialog.exec(); } @@ -776,27 +778,19 @@ void DolphinMainWindow::toggleSortCategorization() view->setCategorizedSorting(!categorizedSorting); } -void DolphinMainWindow::clearInfo() +void DolphinMainWindow::toggleMimeInfo() { - m_activeViewContainer->view()->setAdditionalInfo(KFileItemDelegate::NoInformation); + toggleAdditionalInfo("show_mime_info", KFileItemDelegate::FriendlyMimeType); } -void DolphinMainWindow::showMimeInfo() +void DolphinMainWindow::toggleSizeInfo() { - clearStatusBar(); - m_activeViewContainer->view()->setAdditionalInfo(KFileItemDelegate::FriendlyMimeType); + toggleAdditionalInfo("show_size_info", KFileItemDelegate::Size); } -void DolphinMainWindow::showSizeInfo() +void DolphinMainWindow::toggleDateInfo() { - clearStatusBar(); - m_activeViewContainer->view()->setAdditionalInfo(KFileItemDelegate::Size); -} - -void DolphinMainWindow::showDateInfo() -{ - clearStatusBar(); - m_activeViewContainer->view()->setAdditionalInfo(KFileItemDelegate::ModificationTime); + toggleAdditionalInfo("show_date_info", KFileItemDelegate::ModificationTime); } void DolphinMainWindow::toggleSplitView() @@ -1245,27 +1239,17 @@ void DolphinMainWindow::setupActions() showInGroups->setText(i18nc("@action:inmenu View", "Show in Groups")); connect(showInGroups, SIGNAL(triggered()), this, SLOT(toggleSortCategorization())); - KToggleAction* clearInfo = actionCollection()->add("clear_info"); - clearInfo->setText(i18nc("@action:inmenu Additional information", "No Information")); - connect(clearInfo, SIGNAL(triggered()), this, SLOT(clearInfo())); - KToggleAction* showMimeInfo = actionCollection()->add("show_mime_info"); showMimeInfo->setText(i18nc("@action:inmenu Additional information", "Type")); - connect(showMimeInfo, SIGNAL(triggered()), this, SLOT(showMimeInfo())); + connect(showMimeInfo, SIGNAL(triggered()), this, SLOT(toggleMimeInfo())); KToggleAction* showSizeInfo = actionCollection()->add("show_size_info"); showSizeInfo->setText(i18nc("@action:inmenu Additional information", "Size")); - connect(showSizeInfo, SIGNAL(triggered()), this, SLOT(showSizeInfo())); + connect(showSizeInfo, SIGNAL(triggered()), this, SLOT(toggleSizeInfo())); KToggleAction* showDateInfo = actionCollection()->add("show_date_info"); showDateInfo->setText(i18nc("@action:inmenu Additional information", "Date")); - connect(showDateInfo, SIGNAL(triggered()), this, SLOT(showDateInfo())); - - QActionGroup* infoGroup = new QActionGroup(this); - infoGroup->addAction(clearInfo); - infoGroup->addAction(showMimeInfo); - infoGroup->addAction(showSizeInfo); - infoGroup->addAction(showDateInfo); + connect(showDateInfo, SIGNAL(triggered()), this, SLOT(toggleDateInfo())); KToggleAction* showPreview = actionCollection()->add("show_preview"); showPreview->setText(i18nc("@action:intoolbar", "Preview")); @@ -1311,7 +1295,11 @@ void DolphinMainWindow::setupActions() connect(adjustViewProps, SIGNAL(triggered()), this, SLOT(adjustViewProperties())); // setup 'Go' menu - KStandardAction::back(this, SLOT(goBack()), actionCollection()); + KAction* backAction = KStandardAction::back(this, SLOT(goBack()), actionCollection()); + KShortcut backShortcut = backAction->shortcut(); + backShortcut.setAlternate(Qt::Key_Backspace); + backAction->setShortcut(backShortcut); + KStandardAction::forward(this, SLOT(goForward()), actionCollection()); KStandardAction::up(this, SLOT(goUp()), actionCollection()); KStandardAction::home(this, SLOT(goHome()), actionCollection()); @@ -1348,14 +1336,14 @@ void DolphinMainWindow::setupDockWidgets() infoDock->setWidget(infoWidget); infoDock->toggleViewAction()->setText(i18nc("@title:window", "Information")); - infoDock->toggleViewAction()->setShortcut(Qt::Key_F8); + infoDock->toggleViewAction()->setShortcut(Qt::Key_F11); actionCollection()->addAction("show_info_panel", infoDock->toggleViewAction()); addDockWidget(Qt::RightDockWidgetArea, infoDock); connect(this, SIGNAL(urlChanged(KUrl)), infoWidget, SLOT(setUrl(KUrl))); - connect(this, SIGNAL(selectionChanged(QList)), - infoWidget, SLOT(setSelection(QList))); + connect(this, SIGNAL(selectionChanged(KFileItemList)), + infoWidget, SLOT(setSelection(KFileItemList))); connect(this, SIGNAL(requestItemInfo(KFileItem)), infoWidget, SLOT(requestDelayedItemInfo(KFileItem))); @@ -1367,7 +1355,7 @@ void DolphinMainWindow::setupDockWidgets() treeViewDock->setWidget(treeWidget); treeViewDock->toggleViewAction()->setText(i18nc("@title:window", "Folders")); - treeViewDock->toggleViewAction()->setShortcut(Qt::Key_F9); + treeViewDock->toggleViewAction()->setShortcut(Qt::Key_F7); actionCollection()->addAction("show_folders_panel", treeViewDock->toggleViewAction()); addDockWidget(Qt::LeftDockWidgetArea, treeViewDock); @@ -1375,8 +1363,8 @@ void DolphinMainWindow::setupDockWidgets() treeWidget, SLOT(setUrl(KUrl))); connect(treeWidget, SIGNAL(changeUrl(KUrl)), this, SLOT(changeUrl(KUrl))); - connect(treeWidget, SIGNAL(changeSelection(QList)), - this, SLOT(changeSelection(QList))); + connect(treeWidget, SIGNAL(changeSelection(KFileItemList)), + this, SLOT(changeSelection(KFileItemList))); connect(treeWidget, SIGNAL(urlsDropped(KUrl::List, KUrl)), this, SLOT(dropUrls(KUrl::List, KUrl))); @@ -1410,7 +1398,7 @@ void DolphinMainWindow::setupDockWidgets() listView->setModel(DolphinSettings::instance().placesModel()); placesDock->toggleViewAction()->setText(i18nc("@title:window", "Places")); - placesDock->toggleViewAction()->setShortcut(Qt::Key_F7); + placesDock->toggleViewAction()->setShortcut(Qt::Key_F9); actionCollection()->addAction("show_places_panel", placesDock->toggleViewAction()); addDockWidget(Qt::LeftDockWidgetArea, placesDock); @@ -1438,7 +1426,7 @@ void DolphinMainWindow::updateHistory() void DolphinMainWindow::updateEditActions() { - const QList list = m_activeViewContainer->view()->selectedItems(); + const KFileItemList list = m_activeViewContainer->view()->selectedItems(); if (list.isEmpty()) { stateChanged("has_no_selection"); } else { @@ -1451,8 +1439,8 @@ void DolphinMainWindow::updateEditActions() bool enableMoveToTrash = true; - QList::const_iterator it = list.begin(); - const QList::const_iterator end = list.end(); + KFileItemList::const_iterator it = list.begin(); + const KFileItemList::const_iterator end = list.end(); while (it != end) { const KUrl& url = (*it).url(); // only enable the 'Move to Trash' action for local files @@ -1575,10 +1563,10 @@ void DolphinMainWindow::connectViewSignals(int viewIndex) this, SLOT(slotSortingChanged(DolphinView::Sorting))); connect(view, SIGNAL(sortOrderChanged(Qt::SortOrder)), this, SLOT(slotSortOrderChanged(Qt::SortOrder))); - connect(view, SIGNAL(additionalInfoChanged(KFileItemDelegate::AdditionalInformation)), - this, SLOT(slotAdditionalInfoChanged(KFileItemDelegate::AdditionalInformation))); - connect(view, SIGNAL(selectionChanged(QList)), - this, SLOT(slotSelectionChanged(QList))); + connect(view, SIGNAL(additionalInfoChanged(KFileItemDelegate::InformationList)), + this, SLOT(slotAdditionalInfoChanged(KFileItemDelegate::InformationList))); + connect(view, SIGNAL(selectionChanged(KFileItemList)), + this, SLOT(slotSelectionChanged(KFileItemList))); connect(view, SIGNAL(requestItemInfo(KFileItem)), this, SLOT(slotRequestItemInfo(KFileItem))); connect(view, SIGNAL(activated()), @@ -1595,12 +1583,12 @@ void DolphinMainWindow::updateSplitAction() { QAction* splitAction = actionCollection()->action("split_view"); if (m_viewContainer[SecondaryView] != 0) { - splitAction->setText(i18nc("@action:intoolbar Join views", "Join")); if (m_activeViewContainer == m_viewContainer[PrimaryView]) { - splitAction->setIcon(KIcon("fileview-join")); + splitAction->setText(i18nc("@action:intoolbar Close right view", "Close")); + splitAction->setIcon(KIcon("fileview-close-right")); } else { - // TODO: replace by alternative icon as soon as it is available in Oxygen - splitAction->setIcon(KIcon("fileview-join")); + splitAction->setText(i18nc("@action:intoolbar Close left view", "Close")); + splitAction->setIcon(KIcon("fileview-close-left")); } } else { splitAction->setText(i18nc("@action:intoolbar Split view", "Split")); @@ -1608,6 +1596,28 @@ void DolphinMainWindow::updateSplitAction() } } +void DolphinMainWindow::toggleAdditionalInfo(const char* actionName, + KFileItemDelegate::Information info) +{ + clearStatusBar(); + + DolphinView* view = m_activeViewContainer->view(); + KFileItemDelegate::InformationList list = view->additionalInfo(); + + const bool show = actionCollection()->action(actionName)->isChecked(); + + const int index = list.indexOf(info); + const bool containsInfo = (index >= 0); + if (show && !containsInfo) { + list.append(info); + view->setAdditionalInfo(list); + } else if (!show && containsInfo) { + list.removeAt(index); + view->setAdditionalInfo(list); + Q_ASSERT(list.indexOf(info) < 0); + } +} + DolphinMainWindow::UndoUiInterface::UndoUiInterface(DolphinMainWindow* mainWin) : KonqUndoManager::UiInterface(mainWin), m_mainWin(mainWin)