X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/a5cf21ff06aff44cde563eaceae3c6cef452ee48..ca5d3fde114dfdb280e46995e8a425d3ec558596:/src/views/dolphinviewactionhandler.cpp diff --git a/src/views/dolphinviewactionhandler.cpp b/src/views/dolphinviewactionhandler.cpp index d2eaa4d51..6046abc8c 100644 --- a/src/views/dolphinviewactionhandler.cpp +++ b/src/views/dolphinviewactionhandler.cpp @@ -25,17 +25,16 @@ #include "views/zoomlevelinfo.h" #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include DolphinViewActionHandler::DolphinViewActionHandler(KActionCollection* collection, QObject* parent) : QObject(parent), @@ -215,8 +214,8 @@ QActionGroup* DolphinViewActionHandler::createAdditionalInformationActionGroup() const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance(); - const KFileItemDelegate::InformationList infos = infoAccessor.keys(); - foreach (KFileItemDelegate::Information info, infos) { + const KFileItemDelegate::InformationList infoKeys = infoAccessor.keys(); + foreach (KFileItemDelegate::Information info, infoKeys) { const QString name = infoAccessor.actionCollectionName(info, AdditionalInfoAccessor::AdditionalInfoType); KToggleAction* action = m_actionCollection->add(name); action->setText(infoAccessor.translation(info)); @@ -240,8 +239,8 @@ QActionGroup* DolphinViewActionHandler::createSortByActionGroup() sortByActionGroup->addAction(sortByName); const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance(); - const KFileItemDelegate::InformationList infos = infoAccessor.keys(); - foreach (KFileItemDelegate::Information info, infos) { + const KFileItemDelegate::InformationList infoKeys = infoAccessor.keys(); + foreach (KFileItemDelegate::Information info, infoKeys) { const QString name = infoAccessor.actionCollectionName(info, AdditionalInfoAccessor::SortByType); KToggleAction* action = m_actionCollection->add(name); action->setText(infoAccessor.translation(info)); @@ -321,7 +320,7 @@ KActionCollection* DolphinViewActionHandler::actionCollection() void DolphinViewActionHandler::updateViewActions() { QAction* viewModeAction = m_actionCollection->action(currentViewModeActionName()); - if (viewModeAction != 0) { + if (viewModeAction) { viewModeAction->setChecked(true); QAction* viewModeMenu = m_actionCollection->action("view_mode"); @@ -358,12 +357,16 @@ void DolphinViewActionHandler::zoomOut() void DolphinViewActionHandler::toggleSortOrder() { - m_currentView->toggleSortOrder(); + const Qt::SortOrder order = (m_currentView->sortOrder() == Qt::AscendingOrder) ? + Qt::DescendingOrder : + Qt::AscendingOrder; + m_currentView->setSortOrder(order); } void DolphinViewActionHandler::toggleSortFoldersFirst() { - m_currentView->toggleSortFoldersFirst(); + const bool sortFirst = m_currentView->sortFoldersFirst(); + m_currentView->setSortFoldersFirst(!sortFirst); } void DolphinViewActionHandler::slotSortOrderChanged(Qt::SortOrder order) @@ -381,7 +384,24 @@ void DolphinViewActionHandler::slotSortFoldersFirstChanged(bool foldersFirst) void DolphinViewActionHandler::toggleAdditionalInfo(QAction* action) { emit actionBeingHandled(); - m_currentView->toggleAdditionalInfo(action); + + const KFileItemDelegate::Information info = + static_cast(action->data().toInt()); + + KFileItemDelegate::InformationList list = m_currentView->additionalInfo(); + + const bool show = action->isChecked(); + + const int index = list.indexOf(info); + const bool containsInfo = (index >= 0); + if (show && !containsInfo) { + list.append(info); + m_currentView->setAdditionalInfo(list); + } else if (!show && containsInfo) { + list.removeAt(index); + m_currentView->setAdditionalInfo(list); + Q_ASSERT(list.indexOf(info) < 0); + } } void DolphinViewActionHandler::slotAdditionalInfoChanged() @@ -449,14 +469,13 @@ KToggleAction* DolphinViewActionHandler::columnsModeAction() void DolphinViewActionHandler::slotSortingChanged(DolphinView::Sorting sorting) { - const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance(); - const KFileItemDelegate::InformationList infos = infoAccessor.keys(); - QAction* action = 0; if (sorting == DolphinView::SortByName) { action = m_actionCollection->action("sort_by_name"); } else { - foreach (const KFileItemDelegate::Information info, infos) { + const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance(); + const KFileItemDelegate::InformationList infoKeys = infoAccessor.keys(); + foreach (const KFileItemDelegate::Information info, infoKeys) { if (sorting == infoAccessor.sorting(info)) { const QString name = infoAccessor.actionCollectionName(info, AdditionalInfoAccessor::SortByType); action = m_actionCollection->action(name); @@ -465,7 +484,7 @@ void DolphinViewActionHandler::slotSortingChanged(DolphinView::Sorting sorting) } } - if (action != 0) { + if (action) { action->setChecked(true); QAction* sortByMenu = m_actionCollection->action("sort"); @@ -476,12 +495,12 @@ void DolphinViewActionHandler::slotSortingChanged(DolphinView::Sorting sorting) void DolphinViewActionHandler::slotZoomLevelChanged(int level) { QAction* zoomInAction = m_actionCollection->action(KStandardAction::name(KStandardAction::ZoomIn)); - if (zoomInAction != 0) { + if (zoomInAction) { zoomInAction->setEnabled(level < ZoomLevelInfo::maximumLevel()); } QAction* zoomOutAction = m_actionCollection->action(KStandardAction::name(KStandardAction::ZoomOut)); - if (zoomOutAction != 0) { + if (zoomOutAction) { zoomOutAction->setEnabled(level > ZoomLevelInfo::minimumLevel()); } }