this, SLOT(zoomIn()));
connect(controller, SIGNAL(zoomOut()),
this, SLOT(zoomOut()));
- connect(controller->dolphinView(), SIGNAL(additionalInfoChanged(const KFileItemDelegate::InformationList&)),
+ connect(controller->dolphinView(), SIGNAL(additionalInfoChanged()),
this, SLOT(updateColumnVisibility()));
// apply the details mode settings to the widget
const DolphinView* view = controller->dolphinView();
connect(view, SIGNAL(showPreviewChanged()),
this, SLOT(slotShowPreviewChanged()));
- connect(view, SIGNAL(additionalInfoChanged(const KFileItemDelegate::InformationList&)),
- this, SLOT(slotAdditionalInfoChanged(const KFileItemDelegate::InformationList&)));
+ connect(view, SIGNAL(additionalInfoChanged()),
+ this, SLOT(slotAdditionalInfoChanged()));
connect(this, SIGNAL(entered(const QModelIndex&)),
this, SLOT(slotEntered(const QModelIndex&)));
updateGridSize(view->showPreview(), additionalInfoCount());
}
-void DolphinIconsView::slotAdditionalInfoChanged(const KFileItemDelegate::InformationList& info)
+void DolphinIconsView::slotAdditionalInfoChanged()
{
- const bool showPreview = m_controller->dolphinView()->showPreview();
- updateGridSize(showPreview, info.count());
+ const DolphinView* view = m_controller->dolphinView();
+ const bool showPreview = view->showPreview();
+ updateGridSize(showPreview, view->additionalInfo().count());
}
void DolphinIconsView::zoomIn()
void triggerItem(const QModelIndex& index);
void slotEntered(const QModelIndex& index);
void slotShowPreviewChanged();
- void slotAdditionalInfoChanged(const KFileItemDelegate::InformationList& info);
+ void slotAdditionalInfoChanged();
void zoomIn();
void zoomOut();
descending->setChecked(sortDescending);
}
-void DolphinMainWindow::slotAdditionalInfoChanged(KFileItemDelegate::InformationList list)
-{
- QAction* showSizeInfo = actionCollection()->action("show_size_info");
- QAction* showDateInfo = actionCollection()->action("show_date_info");
- QAction* showPermissionsInfo = actionCollection()->action("show_permissions_info");
- QAction* showOwnerInfo = actionCollection()->action("show_owner_info");
- QAction* showGroupInfo = actionCollection()->action("show_group_info");
- QAction* showMimeInfo = actionCollection()->action("show_mime_info");
-
- showSizeInfo->setChecked(false);
- showDateInfo->setChecked(false);
- showPermissionsInfo->setChecked(false);
- showOwnerInfo->setChecked(false);
- showGroupInfo->setChecked(false);
- showMimeInfo->setChecked(false);
-
- const DolphinView* view = m_activeViewContainer->view();
-
- const bool enable = (view->mode() == DolphinView::DetailsView) ||
- (view->mode() == DolphinView::IconsView);
-
- showSizeInfo->setEnabled(enable);
- showDateInfo->setEnabled(enable);
- showPermissionsInfo->setEnabled(enable);
- showOwnerInfo->setEnabled(enable);
- showGroupInfo->setEnabled(enable);
- showMimeInfo->setEnabled(enable);
-
- foreach (KFileItemDelegate::Information info, list) {
- switch (info) {
- case KFileItemDelegate::Size:
- showSizeInfo->setChecked(true);
- break;
- case KFileItemDelegate::ModificationTime:
- showDateInfo->setChecked(true);
- break;
- case KFileItemDelegate::Permissions:
- showPermissionsInfo->setChecked(true);
- break;
- case KFileItemDelegate::Owner:
- showOwnerInfo->setChecked(true);
- break;
- case KFileItemDelegate::OwnerAndGroup:
- showGroupInfo->setChecked(true);
- break;
- case KFileItemDelegate::FriendlyMimeType:
- showMimeInfo->setChecked(true);
- break;
- default:
- break;
- }
- }
+void DolphinMainWindow::slotAdditionalInfoChanged()
+{
+ DolphinView* view = m_activeViewContainer->view();
+ view->updateAdditionalInfoActions(actionCollection());
}
void DolphinMainWindow::slotSelectionChanged(const KFileItemList& selection)
view->setCategorizedSorting(!categorizedSorting);
}
-void DolphinMainWindow::toggleSizeInfo()
-{
- toggleAdditionalInfo("show_size_info", KFileItemDelegate::Size);
-}
-
-void DolphinMainWindow::toggleDateInfo()
-{
- toggleAdditionalInfo("show_date_info", KFileItemDelegate::ModificationTime);
-}
-
-void DolphinMainWindow::togglePermissionsInfo()
-{
- toggleAdditionalInfo("show_permissions_info", KFileItemDelegate::Permissions);
-}
-
-void DolphinMainWindow::toggleOwnerInfo()
-{
- toggleAdditionalInfo("show_owner_info", KFileItemDelegate::Owner);
-}
-
-void DolphinMainWindow::toggleGroupInfo()
-{
- toggleAdditionalInfo("show_group_info", KFileItemDelegate::OwnerAndGroup);
-}
-
-void DolphinMainWindow::toggleMimeInfo()
-{
- toggleAdditionalInfo("show_mime_info", KFileItemDelegate::FriendlyMimeType);
-}
-
void DolphinMainWindow::toggleSplitView()
{
if (m_viewContainer[SecondaryView] == 0) {
showInGroups->setText(i18nc("@action:inmenu View", "Show in Groups"));
connect(showInGroups, SIGNAL(triggered()), this, SLOT(toggleSortCategorization()));
- KToggleAction* showSizeInfo = actionCollection()->add<KToggleAction>("show_size_info");
- showSizeInfo->setText(i18nc("@action:inmenu Additional information", "Size"));
- connect(showSizeInfo, SIGNAL(triggered()), this, SLOT(toggleSizeInfo()));
-
- KToggleAction* showDateInfo = actionCollection()->add<KToggleAction>("show_date_info");
- showDateInfo->setText(i18nc("@action:inmenu Additional information", "Date"));
- connect(showDateInfo, SIGNAL(triggered()), this, SLOT(toggleDateInfo()));
-
- KToggleAction* showPermissionsInfo = actionCollection()->add<KToggleAction>("show_permissions_info");
- showPermissionsInfo->setText(i18nc("@action:inmenu Additional information", "Permissions"));
- connect(showPermissionsInfo, SIGNAL(triggered()), this, SLOT(togglePermissionsInfo()));
-
- KToggleAction* showOwnerInfo = actionCollection()->add<KToggleAction>("show_owner_info");
- showOwnerInfo->setText(i18nc("@action:inmenu Additional information", "Owner"));
- connect(showOwnerInfo, SIGNAL(triggered()), this, SLOT(toggleOwnerInfo()));
-
- KToggleAction* showGroupInfo = actionCollection()->add<KToggleAction>("show_group_info");
- showGroupInfo->setText(i18nc("@action:inmenu Additional information", "Group"));
- connect(showGroupInfo, SIGNAL(triggered()), this, SLOT(toggleGroupInfo()));
-
- KToggleAction* showMimeInfo = actionCollection()->add<KToggleAction>("show_mime_info");
- showMimeInfo->setText(i18nc("@action:inmenu Additional information", "Type"));
- connect(showMimeInfo, SIGNAL(triggered()), this, SLOT(toggleMimeInfo()));
+ QActionGroup* showInformationActionGroup = DolphinView::createAdditionalInformationActionGroup(actionCollection());
+ connect(showInformationActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(toggleAdditionalInfo(QAction*)));
KToggleAction* showPreview = actionCollection()->add<KToggleAction>("show_preview");
showPreview->setText(i18nc("@action:intoolbar", "Preview"));
slotSortingChanged(view->sorting());
slotSortOrderChanged(view->sortOrder());
slotCategorizedSortingChanged();
- slotAdditionalInfoChanged(view->additionalInfo());
+ slotAdditionalInfoChanged();
KToggleAction* showFilterBarAction =
static_cast<KToggleAction*>(actionCollection()->action("show_filter_bar"));
this, SLOT(slotSortingChanged(DolphinView::Sorting)));
connect(view, SIGNAL(sortOrderChanged(Qt::SortOrder)),
this, SLOT(slotSortOrderChanged(Qt::SortOrder)));
- connect(view, SIGNAL(additionalInfoChanged(KFileItemDelegate::InformationList)),
- this, SLOT(slotAdditionalInfoChanged(KFileItemDelegate::InformationList)));
+ connect(view, SIGNAL(additionalInfoChanged()),
+ this, SLOT(slotAdditionalInfoChanged()));
connect(view, SIGNAL(selectionChanged(KFileItemList)),
this, SLOT(slotSelectionChanged(KFileItemList)));
connect(view, SIGNAL(requestItemInfo(KFileItem)),
}
}
-void DolphinMainWindow::toggleAdditionalInfo(const char* actionName,
- KFileItemDelegate::Information info)
+void DolphinMainWindow::toggleAdditionalInfo(QAction* action)
{
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);
- }
+ m_activeViewContainer->view()->toggleAdditionalInfo(action);
}
DolphinMainWindow::UndoUiInterface::UndoUiInterface(DolphinMainWindow* mainWin) :
/** Switches between sorting by categories or not. */
void toggleSortCategorization();
- /** Switches between showing the size as additional information for the item or not. */
- void toggleSizeInfo();
-
- /** Switchtes between showing the date as additional information for the item or not. */
- void toggleDateInfo();
-
- /** Switchtes between showing the permissions as additional information for the item or not. */
- void togglePermissionsInfo();
-
- /** Switchtes between showing the owner as additional information for the item or not. */
- void toggleOwnerInfo();
-
- /** Switchtes between showing the group as additional information for the item or not. */
- void toggleGroupInfo();
-
- /** Switches between showing the MIME type as additional information for the item or not. */
- void toggleMimeInfo();
+ /**
+ * Switches on or off the displaying of additional information
+ * as specified by \a action.
+ */
+ void toggleAdditionalInfo(QAction* action);
/**
* Switches between one and two views:
void slotSortOrderChanged(Qt::SortOrder order);
/** Updates the state of the 'Additional Information' actions. */
- void slotAdditionalInfoChanged(KFileItemDelegate::InformationList info);
+ void slotAdditionalInfoChanged();
/**
* Updates the state of the 'Edit' menu actions and emits
*/
void updateSplitAction();
- /**
- * Helper method for the slots toggleDateInfo(), toggleSizeInfo()
- * and toggleMimeInfo(). Applies \a info dependent from the current
- * checked state of the action \a actionName to the file item delegate.
- */
- void toggleAdditionalInfo(const char* actionName,
- KFileItemDelegate::Information info);
-
private:
/**
* DolphinMainWindow supports up to two views beside each other.
this, SLOT(updateViewActions()));
connect(m_view, SIGNAL(sortOrderChanged(Qt::SortOrder)),
this, SLOT(slotSortOrderChanged(Qt::SortOrder)));
+ connect(m_view, SIGNAL(additionalInfoChanged()),
+ this, SLOT(slotAdditionalInfoChanged()));
QClipboard* clipboard = QApplication::clipboard();
connect(clipboard, SIGNAL(dataChanged()),
KAction* sortDescending = DolphinView::createSortDescendingAction(actionCollection());
connect(sortDescending, SIGNAL(triggered()), m_view, SLOT(toggleSortOrder()));
+ QActionGroup* showInformationActionGroup = DolphinView::createAdditionalInformationActionGroup(actionCollection());
+ connect(showInformationActionGroup, SIGNAL(triggered(QAction*)), m_view, SLOT(toggleAdditionalInfo(QAction*)));
+
// Go menu
KAction* newDirAction = DolphinView::createNewDirAction(actionCollection());
descending->setChecked(sortDescending);
}
+void DolphinPart::slotAdditionalInfoChanged()
+{
+ m_view->updateAdditionalInfoActions(actionCollection());
+}
+
#include "dolphinpart.moc"
/** Updates the state of the 'Sort Ascending/Descending' action. */
void slotSortOrderChanged(Qt::SortOrder);
+ /** Updates the state of the 'Additional Information' actions. */
+ void slotAdditionalInfoChanged();
+
private:
void createActions();
void createGoAction(const char* name, const char* iconName,
// additional information manually
const KFileItemDelegate::InformationList infoList = props.additionalInfo();
m_fileItemDelegate->setShowInformation(infoList);
- emit additionalInfoChanged(infoList);
+ emit additionalInfoChanged();
// Not all view modes support categorized sorting. Adjust the sorting model
// if changing the view mode results in a change of the categorized sorting
props.setAdditionalInfo(info);
m_fileItemDelegate->setShowInformation(info);
- emit additionalInfoChanged(info);
+ emit additionalInfoChanged();
if (itemView() != m_detailsView) {
// the details view requires no reloading of the directory, as it maps
KFileItemDelegate::InformationList info = props.additionalInfo();
if (info != m_fileItemDelegate->showInformation()) {
m_fileItemDelegate->setShowInformation(info);
- emit additionalInfoChanged(info);
+ emit additionalInfoChanged();
}
const bool showPreview = props.showPreview();
m_fileItemDelegate->setShowInformation(info);
- emit additionalInfoChanged(info);
+ emit additionalInfoChanged(); // will call updateAdditionalInfoActions just below
+}
+
+void DolphinView::updateAdditionalInfoActions(KActionCollection* collection)
+{
+ const bool enable = (m_mode == DolphinView::DetailsView) ||
+ (m_mode == DolphinView::IconsView);
+
+ QAction* showSizeInfo = collection->action("show_size_info");
+ QAction* showDateInfo = collection->action("show_date_info");
+ QAction* showPermissionsInfo = collection->action("show_permissions_info");
+ QAction* showOwnerInfo = collection->action("show_owner_info");
+ QAction* showGroupInfo = collection->action("show_group_info");
+ QAction* showMimeInfo = collection->action("show_mime_info");
+
+ showSizeInfo->setChecked(false);
+ showDateInfo->setChecked(false);
+ showPermissionsInfo->setChecked(false);
+ showOwnerInfo->setChecked(false);
+ showGroupInfo->setChecked(false);
+ showMimeInfo->setChecked(false);
+
+ showSizeInfo->setEnabled(enable);
+ showDateInfo->setEnabled(enable);
+ showPermissionsInfo->setEnabled(enable);
+ showOwnerInfo->setEnabled(enable);
+ showGroupInfo->setEnabled(enable);
+ showMimeInfo->setEnabled(enable);
+
+ foreach (KFileItemDelegate::Information info, m_fileItemDelegate->showInformation()) {
+ switch (info) {
+ case KFileItemDelegate::Size:
+ showSizeInfo->setChecked(true);
+ break;
+ case KFileItemDelegate::ModificationTime:
+ showDateInfo->setChecked(true);
+ break;
+ case KFileItemDelegate::Permissions:
+ showPermissionsInfo->setChecked(true);
+ break;
+ case KFileItemDelegate::Owner:
+ showOwnerInfo->setChecked(true);
+ break;
+ case KFileItemDelegate::OwnerAndGroup:
+ showGroupInfo->setChecked(true);
+ break;
+ case KFileItemDelegate::FriendlyMimeType:
+ showMimeInfo->setChecked(true);
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+void DolphinView::toggleAdditionalInfo(QAction* action)
+{
+ const KFileItemDelegate::Information info =
+ static_cast<KFileItemDelegate::Information>(action->data().toInt());
+ KFileItemDelegate::InformationList list = additionalInfo();
+
+ const bool show = action->isChecked();
+
+ const int index = list.indexOf(info);
+ const bool containsInfo = (index >= 0);
+ if (show && !containsInfo) {
+ list.append(info);
+ setAdditionalInfo(list);
+ } else if (!show && containsInfo) {
+ list.removeAt(index);
+ setAdditionalInfo(list);
+ Q_ASSERT(list.indexOf(info) < 0);
+ }
}
void DolphinView::emitContentsMoved()
return sortDescending;
}
+QActionGroup* DolphinView::createAdditionalInformationActionGroup(KActionCollection* collection)
+{
+ QActionGroup* showInformationGroup = new QActionGroup(collection);
+ showInformationGroup->setExclusive(false);
+
+ KToggleAction* showSizeInfo = collection->add<KToggleAction>("show_size_info");
+ showSizeInfo->setText(i18nc("@action:inmenu Additional information", "Size"));
+ showSizeInfo->setData(KFileItemDelegate::Size);
+ showSizeInfo->setActionGroup(showInformationGroup);
+
+ KToggleAction* showDateInfo = collection->add<KToggleAction>("show_date_info");
+ showDateInfo->setText(i18nc("@action:inmenu Additional information", "Date"));
+ showDateInfo->setData(KFileItemDelegate::ModificationTime);
+ showDateInfo->setActionGroup(showInformationGroup);
+
+ KToggleAction* showPermissionsInfo = collection->add<KToggleAction>("show_permissions_info");
+ showPermissionsInfo->setText(i18nc("@action:inmenu Additional information", "Permissions"));
+ showPermissionsInfo->setData(KFileItemDelegate::Permissions);
+ showPermissionsInfo->setActionGroup(showInformationGroup);
+
+ KToggleAction* showOwnerInfo = collection->add<KToggleAction>("show_owner_info");
+ showOwnerInfo->setText(i18nc("@action:inmenu Additional information", "Owner"));
+ showOwnerInfo->setData(KFileItemDelegate::Owner);
+ showOwnerInfo->setActionGroup(showInformationGroup);
+
+ KToggleAction* showGroupInfo = collection->add<KToggleAction>("show_group_info");
+ showGroupInfo->setText(i18nc("@action:inmenu Additional information", "Group"));
+ showGroupInfo->setData(KFileItemDelegate::OwnerAndGroup);
+ showGroupInfo->setActionGroup(showInformationGroup);
+
+ KToggleAction* showMimeInfo = collection->add<KToggleAction>("show_mime_info");
+ showMimeInfo->setText(i18nc("@action:inmenu Additional information", "Type"));
+ showMimeInfo->setData(KFileItemDelegate::FriendlyMimeType);
+ showMimeInfo->setActionGroup(showInformationGroup);
+
+ return showInformationGroup;
+}
+
#include "dolphinview.moc"
#include <QListView>
#include <QWidget>
+class QActionGroup;
class DolphinController;
class DolphinColumnView;
class DolphinDetailsView;
*/
static KAction* createSortDescendingAction(KActionCollection* collection);
+ /**
+ * Creates an action group with all the "show additional information" actions in it.
+ * This code is here to share it between the mainwindow and the part
+ */
+ static QActionGroup* createAdditionalInformationActionGroup(KActionCollection* collection);
+
+ /**
+ * Updates the state of the 'Additional Information' actions in \a collection.
+ */
+ void updateAdditionalInfoActions(KActionCollection* collection);
+
/**
* Returns the action name corresponding to the current view mode
*/
/** Switches between an ascending and descending sorting order. */
void toggleSortOrder();
+ /**
+ * Switches on or off the displaying of additional information
+ * as specified by \a action.
+ */
+ void toggleAdditionalInfo(QAction* action);
+
signals:
/**
* Is emitted if the view has been activated by e. g. a mouse click.
/** Is emitted if the sort order (ascending or descending) has been changed. */
void sortOrderChanged(Qt::SortOrder order);
- /** Is emitted if the additional information for an item has been changed. */
- void additionalInfoChanged(const KFileItemDelegate::InformationList& info);
+ /** Is emitted if the additional information shown for this view has been changed. */
+ void additionalInfoChanged();
/**
* Is emitted if information of an item is requested to be shown e. g. in the sidebar.