]> cloud.milkyroute.net Git - dolphin.git/blob - src/dolphinviewactionhandler.cpp
Depend directly on kcmutils.
[dolphin.git] / src / dolphinviewactionhandler.cpp
1 /***************************************************************************
2 * Copyright (C) 2008 by David Faure <faure@kde.org> *
3 * *
4 * This program is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
8 * *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
13 * *
14 * You should have received a copy of the GNU General Public License *
15 * along with this program; if not, write to the *
16 * Free Software Foundation, Inc., *
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
18 ***************************************************************************/
19
20 #include "dolphinviewactionhandler.h"
21
22 #include "settings/viewpropertiesdialog.h"
23 #include "dolphinview.h"
24 #include "zoomlevelinfo.h"
25 #include <konq_operations.h>
26
27 #include <kaction.h>
28 #include <kactioncollection.h>
29 #include <kactionmenu.h>
30 #include <kselectaction.h>
31 #include <klocale.h>
32 #include <knewmenu.h>
33 #include <ktoggleaction.h>
34 #include <krun.h>
35 #include <kpropertiesdialog.h>
36
37
38 DolphinViewActionHandler::DolphinViewActionHandler(KActionCollection* collection, QObject* parent)
39 : QObject(parent),
40 m_actionCollection(collection),
41 m_currentView(0)
42 {
43 Q_ASSERT(m_actionCollection);
44 createActions();
45 }
46
47 void DolphinViewActionHandler::setCurrentView(DolphinView* view)
48 {
49 Q_ASSERT(view);
50
51 if (m_currentView)
52 disconnect(m_currentView, 0, this, 0);
53
54 m_currentView = view;
55
56 connect(view, SIGNAL(modeChanged()),
57 this, SLOT(updateViewActions()));
58 connect(view, SIGNAL(showPreviewChanged()),
59 this, SLOT(slotShowPreviewChanged()));
60 connect(view, SIGNAL(sortOrderChanged(Qt::SortOrder)),
61 this, SLOT(slotSortOrderChanged(Qt::SortOrder)));
62 connect(view, SIGNAL(sortFoldersFirstChanged(bool)),
63 this, SLOT(slotSortFoldersFirstChanged(bool)));
64 connect(view, SIGNAL(additionalInfoChanged()),
65 this, SLOT(slotAdditionalInfoChanged()));
66 connect(view, SIGNAL(categorizedSortingChanged()),
67 this, SLOT(slotCategorizedSortingChanged()));
68 connect(view, SIGNAL(showHiddenFilesChanged()),
69 this, SLOT(slotShowHiddenFilesChanged()));
70 connect(view, SIGNAL(sortingChanged(DolphinView::Sorting)),
71 this, SLOT(slotSortingChanged(DolphinView::Sorting)));
72 connect(view, SIGNAL(zoomLevelChanged(int)),
73 this, SLOT(slotZoomLevelChanged(int)));
74 }
75
76 DolphinView* DolphinViewActionHandler::currentView()
77 {
78 return m_currentView;
79 }
80
81 void DolphinViewActionHandler::createActions()
82 {
83 // This action doesn't appear in the GUI, it's for the shortcut only.
84 // KNewFileMenu takes care of the GUI stuff.
85 KAction* newDirAction = m_actionCollection->addAction("create_dir");
86 newDirAction->setText(i18nc("@action", "Create Folder..."));
87 newDirAction->setShortcut(Qt::Key_F10);
88 newDirAction->setIcon(KIcon("folder-new"));
89 connect(newDirAction, SIGNAL(triggered()), this, SIGNAL(createDirectory()));
90
91 // File menu
92
93 KAction* rename = m_actionCollection->addAction("rename");
94 rename->setText(i18nc("@action:inmenu File", "Rename..."));
95 rename->setShortcut(Qt::Key_F2);
96 rename->setIcon(KIcon("edit-rename"));
97 connect(rename, SIGNAL(triggered()), this, SLOT(slotRename()));
98
99 KAction* moveToTrash = m_actionCollection->addAction("move_to_trash");
100 moveToTrash->setText(i18nc("@action:inmenu File", "Move to Trash"));
101 moveToTrash->setIcon(KIcon("user-trash"));
102 moveToTrash->setShortcut(QKeySequence::Delete);
103 connect(moveToTrash, SIGNAL(triggered(Qt::MouseButtons, Qt::KeyboardModifiers)),
104 this, SLOT(slotTrashActivated(Qt::MouseButtons, Qt::KeyboardModifiers)));
105
106 KAction* deleteAction = m_actionCollection->addAction("delete");
107 deleteAction->setIcon(KIcon("edit-delete"));
108 deleteAction->setText(i18nc("@action:inmenu File", "Delete"));
109 deleteAction->setShortcut(Qt::SHIFT | Qt::Key_Delete);
110 connect(deleteAction, SIGNAL(triggered()), this, SLOT(slotDeleteItems()));
111
112 // This action is useful for being enabled when "move_to_trash" should be
113 // disabled and "delete" is enabled (e.g. non-local files), so that Key_Del
114 // can be used for deleting the file (#76016). It needs to be a separate action
115 // so that the Edit menu isn't affected.
116 KAction* deleteWithTrashShortcut = m_actionCollection->addAction("delete_shortcut");
117 // The descriptive text is just for the shortcuts editor.
118 deleteWithTrashShortcut->setText(i18nc("@action:inmenu File", "Delete (using shortcut for Trash)"));
119 deleteWithTrashShortcut->setShortcut(QKeySequence::Delete);
120 deleteWithTrashShortcut->setEnabled(false);
121 connect(deleteWithTrashShortcut, SIGNAL(triggered()), this, SLOT(slotDeleteItems()));
122
123 KAction *propertiesAction = m_actionCollection->addAction( "properties" );
124 // Well, it's the File menu in dolphinmainwindow and the Edit menu in dolphinpart... :)
125 propertiesAction->setText( i18nc("@action:inmenu File", "Properties") );
126 propertiesAction->setIcon(KIcon("document-properties"));
127 propertiesAction->setShortcut(Qt::ALT | Qt::Key_Return);
128 connect(propertiesAction, SIGNAL(triggered()), SLOT(slotProperties()));
129
130 // View menu
131 KToggleAction* iconsAction = iconsModeAction();
132 KToggleAction* detailsAction = detailsModeAction();
133 KToggleAction* columnsAction = columnsModeAction();
134
135 KSelectAction* viewModeActions = m_actionCollection->add<KSelectAction>("view_mode");
136 viewModeActions->setText(i18nc("@action:intoolbar", "View Mode"));
137 viewModeActions->addAction(iconsAction);
138 viewModeActions->addAction(detailsAction);
139 viewModeActions->addAction(columnsAction);
140 viewModeActions->setToolBarMode(KSelectAction::MenuMode);
141 connect(viewModeActions, SIGNAL(triggered(QAction*)), this, SLOT(slotViewModeActionTriggered(QAction*)));
142
143 KStandardAction::zoomIn(this,
144 SLOT(zoomIn()),
145 m_actionCollection);
146
147 KStandardAction::zoomOut(this,
148 SLOT(zoomOut()),
149 m_actionCollection);
150
151 KToggleAction* showPreview = m_actionCollection->add<KToggleAction>("show_preview");
152 showPreview->setText(i18nc("@action:intoolbar", "Preview"));
153 showPreview->setToolTip(i18nc("@info", "Show preview of files and folders"));
154 showPreview->setIcon(KIcon("view-preview"));
155 connect(showPreview, SIGNAL(triggered(bool)), this, SLOT(togglePreview(bool)));
156
157 KToggleAction* sortDescending = m_actionCollection->add<KToggleAction>("descending");
158 sortDescending->setText(i18nc("@action:inmenu Sort", "Descending"));
159 connect(sortDescending, SIGNAL(triggered()), this, SLOT(toggleSortOrder()));
160
161 KToggleAction* sortFoldersFirst = m_actionCollection->add<KToggleAction>("folders_first");
162 sortFoldersFirst->setText(i18nc("@action:inmenu Sort", "Folders First"));
163 connect(sortFoldersFirst, SIGNAL(triggered()), this, SLOT(toggleSortFoldersFirst()));
164
165 // View -> Sort By
166 QActionGroup* sortByActionGroup = createSortByActionGroup();
167 connect(sortByActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(slotSortTriggered(QAction*)));
168
169 KActionMenu* sortByActionMenu = m_actionCollection->add<KActionMenu>("sort");
170 sortByActionMenu->setText(i18nc("@action:inmenu View", "Sort By"));
171 sortByActionMenu->setDelayed(false);
172
173 foreach (QAction* action, sortByActionGroup->actions()) {
174 sortByActionMenu->addAction(action);
175 }
176 sortByActionMenu->addSeparator();
177 sortByActionMenu->addAction(sortDescending);
178 sortByActionMenu->addAction(sortFoldersFirst);
179
180 // View -> Additional Information
181 QActionGroup* additionalInfoGroup = createAdditionalInformationActionGroup();
182 connect(additionalInfoGroup, SIGNAL(triggered(QAction*)), this, SLOT(toggleAdditionalInfo(QAction*)));
183
184 KActionMenu* additionalInfoMenu = m_actionCollection->add<KActionMenu>("additional_info");
185 additionalInfoMenu->setText(i18nc("@action:inmenu View", "Additional Information"));
186 additionalInfoMenu->setDelayed(false);
187 foreach (QAction* action, additionalInfoGroup->actions()) {
188 additionalInfoMenu->addAction(action);
189 }
190
191 KToggleAction* showInGroups = m_actionCollection->add<KToggleAction>("show_in_groups");
192 showInGroups->setText(i18nc("@action:inmenu View", "Show in Groups"));
193 connect(showInGroups, SIGNAL(triggered(bool)), this, SLOT(toggleSortCategorization(bool)));
194
195 KToggleAction* showHiddenFiles = m_actionCollection->add<KToggleAction>("show_hidden_files");
196 showHiddenFiles->setText(i18nc("@action:inmenu View", "Show Hidden Files"));
197 showHiddenFiles->setShortcuts(QList<QKeySequence>() << Qt::ALT + Qt::Key_Period << Qt::Key_F8);
198 connect(showHiddenFiles, SIGNAL(triggered(bool)), this, SLOT(toggleShowHiddenFiles(bool)));
199
200 KAction* adjustViewProps = m_actionCollection->addAction("view_properties");
201 adjustViewProps->setText(i18nc("@action:inmenu View", "Adjust View Properties..."));
202 connect(adjustViewProps, SIGNAL(triggered()), this, SLOT(slotAdjustViewProperties()));
203
204 // Tools menu
205
206 KAction* findFile = m_actionCollection->addAction("find_file");
207 findFile->setText(i18nc("@action:inmenu Tools", "Find File..."));
208 findFile->setShortcut(Qt::CTRL | Qt::Key_F);
209 findFile->setIcon(KIcon("edit-find"));
210 connect(findFile, SIGNAL(triggered()), this, SLOT(slotFindFile()));
211 }
212
213 QActionGroup* DolphinViewActionHandler::createAdditionalInformationActionGroup()
214 {
215 QActionGroup* additionalInfoGroup = new QActionGroup(m_actionCollection);
216 additionalInfoGroup->setExclusive(false);
217
218 KActionMenu* showInformationMenu = m_actionCollection->add<KActionMenu>("additional_info");
219 showInformationMenu->setText(i18nc("@action:inmenu View", "Additional Information"));
220 showInformationMenu->setDelayed(false);
221
222 KToggleAction* showSizeInfo = m_actionCollection->add<KToggleAction>("show_size_info");
223 showSizeInfo->setText(i18nc("@action:inmenu Additional information", "Size"));
224 showSizeInfo->setData(KFileItemDelegate::Size);
225 showSizeInfo->setActionGroup(additionalInfoGroup);
226
227 KToggleAction* showDateInfo = m_actionCollection->add<KToggleAction>("show_date_info");
228 showDateInfo->setText(i18nc("@action:inmenu Additional information", "Date"));
229 showDateInfo->setData(KFileItemDelegate::ModificationTime);
230 showDateInfo->setActionGroup(additionalInfoGroup);
231
232 KToggleAction* showPermissionsInfo = m_actionCollection->add<KToggleAction>("show_permissions_info");
233 showPermissionsInfo->setText(i18nc("@action:inmenu Additional information", "Permissions"));
234 showPermissionsInfo->setData(KFileItemDelegate::Permissions);
235 showPermissionsInfo->setActionGroup(additionalInfoGroup);
236
237 KToggleAction* showOwnerInfo = m_actionCollection->add<KToggleAction>("show_owner_info");
238 showOwnerInfo->setText(i18nc("@action:inmenu Additional information", "Owner"));
239 showOwnerInfo->setData(KFileItemDelegate::Owner);
240 showOwnerInfo->setActionGroup(additionalInfoGroup);
241
242 KToggleAction* showGroupInfo = m_actionCollection->add<KToggleAction>("show_group_info");
243 showGroupInfo->setText(i18nc("@action:inmenu Additional information", "Group"));
244 showGroupInfo->setData(KFileItemDelegate::OwnerAndGroup);
245 showGroupInfo->setActionGroup(additionalInfoGroup);
246
247 KToggleAction* showMimeInfo = m_actionCollection->add<KToggleAction>("show_mime_info");
248 showMimeInfo->setText(i18nc("@action:inmenu Additional information", "Type"));
249 showMimeInfo->setData(KFileItemDelegate::FriendlyMimeType);
250 showMimeInfo->setActionGroup(additionalInfoGroup);
251
252 KToggleAction* showPathOrUrlInfo = m_actionCollection->add<KToggleAction>("show_path_or_url_info");
253 showPathOrUrlInfo->setText(i18nc("@action:inmenu Additional information", "Path"));
254 showPathOrUrlInfo->setData(KFileItemDelegate::LocalPathOrUrl);
255 showPathOrUrlInfo->setActionGroup(additionalInfoGroup);
256
257 return additionalInfoGroup;
258 }
259
260 Q_DECLARE_METATYPE(DolphinView::Sorting)
261
262 QActionGroup* DolphinViewActionHandler::createSortByActionGroup()
263 {
264 QActionGroup* sortByActionGroup = new QActionGroup(m_actionCollection);
265 sortByActionGroup->setExclusive(true);
266
267 KToggleAction* sortByName = m_actionCollection->add<KToggleAction>("sort_by_name");
268 sortByName->setText(i18nc("@action:inmenu Sort By", "Name"));
269 sortByName->setData(QVariant::fromValue(DolphinView::SortByName));
270 sortByActionGroup->addAction(sortByName);
271
272 KToggleAction* sortBySize = m_actionCollection->add<KToggleAction>("sort_by_size");
273 sortBySize->setText(i18nc("@action:inmenu Sort By", "Size"));
274 sortBySize->setData(QVariant::fromValue(DolphinView::SortBySize));
275 sortByActionGroup->addAction(sortBySize);
276
277 KToggleAction* sortByDate = m_actionCollection->add<KToggleAction>("sort_by_date");
278 sortByDate->setText(i18nc("@action:inmenu Sort By", "Date"));
279 sortByDate->setData(QVariant::fromValue(DolphinView::SortByDate));
280 sortByActionGroup->addAction(sortByDate);
281
282 KToggleAction* sortByPermissions = m_actionCollection->add<KToggleAction>("sort_by_permissions");
283 sortByPermissions->setText(i18nc("@action:inmenu Sort By", "Permissions"));
284 sortByPermissions->setData(QVariant::fromValue(DolphinView::SortByPermissions));
285 sortByActionGroup->addAction(sortByPermissions);
286
287 KToggleAction* sortByOwner = m_actionCollection->add<KToggleAction>("sort_by_owner");
288 sortByOwner->setText(i18nc("@action:inmenu Sort By", "Owner"));
289 sortByOwner->setData(QVariant::fromValue(DolphinView::SortByOwner));
290 sortByActionGroup->addAction(sortByOwner);
291
292 KToggleAction* sortByGroup = m_actionCollection->add<KToggleAction>("sort_by_group");
293 sortByGroup->setText(i18nc("@action:inmenu Sort By", "Group"));
294 sortByGroup->setData(QVariant::fromValue(DolphinView::SortByGroup));
295 sortByActionGroup->addAction(sortByGroup);
296
297 KToggleAction* sortByType = m_actionCollection->add<KToggleAction>("sort_by_type");
298 sortByType->setText(i18nc("@action:inmenu Sort By", "Type"));
299 sortByType->setData(QVariant::fromValue(DolphinView::SortByType));
300 sortByActionGroup->addAction(sortByType);
301
302 return sortByActionGroup;
303 }
304
305 void DolphinViewActionHandler::slotViewModeActionTriggered(QAction* action)
306 {
307 const DolphinView::Mode mode = action->data().value<DolphinView::Mode>();
308 m_currentView->setMode(mode);
309
310 QAction* viewModeMenu = m_actionCollection->action("view_mode");
311 viewModeMenu->setIcon(KIcon(action->icon()));
312 }
313
314 void DolphinViewActionHandler::slotRename()
315 {
316 emit actionBeingHandled();
317 m_currentView->renameSelectedItems();
318 }
319
320 void DolphinViewActionHandler::slotTrashActivated(Qt::MouseButtons, Qt::KeyboardModifiers modifiers)
321 {
322 emit actionBeingHandled();
323 // Note: kde3's konq_mainwindow.cpp used to check
324 // reason == KAction::PopupMenuActivation && ...
325 // but this isn't supported anymore
326 if (modifiers & Qt::ShiftModifier)
327 m_currentView->deleteSelectedItems();
328 else
329 m_currentView->trashSelectedItems();
330 }
331
332 void DolphinViewActionHandler::slotDeleteItems()
333 {
334 emit actionBeingHandled();
335 m_currentView->deleteSelectedItems();
336 }
337
338 void DolphinViewActionHandler::togglePreview(bool show)
339 {
340 emit actionBeingHandled();
341 m_currentView->setShowPreview(show);
342 }
343
344 void DolphinViewActionHandler::slotShowPreviewChanged()
345 {
346 // It is not enough to update the 'Show Preview' action, also
347 // the 'Zoom In' and 'Zoom Out' actions must be adapted.
348 updateViewActions();
349 }
350
351 QString DolphinViewActionHandler::currentViewModeActionName() const
352 {
353 switch (m_currentView->mode()) {
354 case DolphinView::IconsView:
355 return "icons";
356 case DolphinView::DetailsView:
357 return "details";
358 case DolphinView::ColumnView:
359 return "columns";
360 }
361 return QString(); // can't happen
362 }
363
364 KActionCollection* DolphinViewActionHandler::actionCollection()
365 {
366 return m_actionCollection;
367 }
368
369 void DolphinViewActionHandler::updateViewActions()
370 {
371 QAction* viewModeAction = m_actionCollection->action(currentViewModeActionName());
372 if (viewModeAction != 0) {
373 viewModeAction->setChecked(true);
374
375 QAction* viewModeMenu = m_actionCollection->action("view_mode");
376 viewModeMenu->setIcon(KIcon(viewModeAction->icon()));
377 }
378
379 QAction* showPreviewAction = m_actionCollection->action("show_preview");
380 showPreviewAction->setChecked(m_currentView->showPreview());
381
382 slotSortOrderChanged(m_currentView->sortOrder());
383 slotSortFoldersFirstChanged(m_currentView->sortFoldersFirst());
384 slotAdditionalInfoChanged();
385 slotCategorizedSortingChanged();
386 slotSortingChanged(m_currentView->sorting());
387 slotZoomLevelChanged(m_currentView->zoomLevel());
388
389 QAction* showHiddenFilesAction = m_actionCollection->action("show_hidden_files");
390 showHiddenFilesAction->setChecked(m_currentView->showHiddenFiles());
391 }
392
393 void DolphinViewActionHandler::zoomIn()
394 {
395 const int level = m_currentView->zoomLevel();
396 m_currentView->setZoomLevel(level + 1);
397 updateViewActions();
398 }
399
400 void DolphinViewActionHandler::zoomOut()
401 {
402 const int level = m_currentView->zoomLevel();
403 m_currentView->setZoomLevel(level - 1);
404 updateViewActions();
405 }
406
407 void DolphinViewActionHandler::toggleSortOrder()
408 {
409 m_currentView->toggleSortOrder();
410 }
411
412 void DolphinViewActionHandler::toggleSortFoldersFirst()
413 {
414 m_currentView->toggleSortFoldersFirst();
415 }
416
417 void DolphinViewActionHandler::slotSortOrderChanged(Qt::SortOrder order)
418 {
419 QAction* descending = m_actionCollection->action("descending");
420 const bool sortDescending = (order == Qt::DescendingOrder);
421 descending->setChecked(sortDescending);
422 }
423
424 void DolphinViewActionHandler::slotSortFoldersFirstChanged(bool foldersFirst)
425 {
426 m_actionCollection->action("folders_first")->setChecked(foldersFirst);
427 }
428
429 void DolphinViewActionHandler::toggleAdditionalInfo(QAction* action)
430 {
431 emit actionBeingHandled();
432 m_currentView->toggleAdditionalInfo(action);
433 }
434
435 void DolphinViewActionHandler::slotAdditionalInfoChanged()
436 {
437 m_currentView->updateAdditionalInfoActions(m_actionCollection);
438 }
439
440 void DolphinViewActionHandler::toggleSortCategorization(bool categorizedSorting)
441 {
442 m_currentView->setCategorizedSorting(categorizedSorting);
443 }
444
445 void DolphinViewActionHandler::slotCategorizedSortingChanged()
446 {
447 QAction* showInGroupsAction = m_actionCollection->action("show_in_groups");
448 showInGroupsAction->setChecked(m_currentView->categorizedSorting());
449 showInGroupsAction->setEnabled(m_currentView->supportsCategorizedSorting());
450 }
451
452 void DolphinViewActionHandler::toggleShowHiddenFiles(bool show)
453 {
454 emit actionBeingHandled();
455 m_currentView->setShowHiddenFiles(show);
456 }
457
458 void DolphinViewActionHandler::slotShowHiddenFilesChanged()
459 {
460 QAction* showHiddenFilesAction = m_actionCollection->action("show_hidden_files");
461 showHiddenFilesAction->setChecked(m_currentView->showHiddenFiles());
462 }
463
464
465 KToggleAction* DolphinViewActionHandler::iconsModeAction()
466 {
467 KToggleAction* iconsView = m_actionCollection->add<KToggleAction>("icons");
468 iconsView->setText(i18nc("@action:inmenu View Mode", "Icons"));
469 iconsView->setToolTip(i18nc("@info", "Icons view mode"));
470 iconsView->setShortcut(Qt::CTRL | Qt::Key_1);
471 iconsView->setIcon(KIcon("view-list-icons"));
472 iconsView->setData(QVariant::fromValue(DolphinView::IconsView));
473 return iconsView;
474 }
475
476 KToggleAction* DolphinViewActionHandler::detailsModeAction()
477 {
478 KToggleAction* detailsView = m_actionCollection->add<KToggleAction>("details");
479 detailsView->setText(i18nc("@action:inmenu View Mode", "Details"));
480 detailsView->setToolTip(i18nc("@info", "Details view mode"));
481 detailsView->setShortcut(Qt::CTRL | Qt::Key_2);
482 detailsView->setIcon(KIcon("view-list-details"));
483 detailsView->setData(QVariant::fromValue(DolphinView::DetailsView));
484 return detailsView;
485 }
486
487 KToggleAction* DolphinViewActionHandler::columnsModeAction()
488 {
489 KToggleAction* columnView = m_actionCollection->add<KToggleAction>("columns");
490 columnView->setText(i18nc("@action:inmenu View Mode", "Columns"));
491 columnView->setToolTip(i18nc("@info", "Columns view mode"));
492 columnView->setShortcut(Qt::CTRL | Qt::Key_3);
493 columnView->setIcon(KIcon("view-file-columns"));
494 columnView->setData(QVariant::fromValue(DolphinView::ColumnView));
495 return columnView;
496 }
497
498 void DolphinViewActionHandler::slotSortingChanged(DolphinView::Sorting sorting)
499 {
500 QAction* action = 0;
501 switch (sorting) {
502 case DolphinView::SortByName:
503 action = m_actionCollection->action("sort_by_name");
504 break;
505 case DolphinView::SortBySize:
506 action = m_actionCollection->action("sort_by_size");
507 break;
508 case DolphinView::SortByDate:
509 action = m_actionCollection->action("sort_by_date");
510 break;
511 case DolphinView::SortByPermissions:
512 action = m_actionCollection->action("sort_by_permissions");
513 break;
514 case DolphinView::SortByOwner:
515 action = m_actionCollection->action("sort_by_owner");
516 break;
517 case DolphinView::SortByGroup:
518 action = m_actionCollection->action("sort_by_group");
519 break;
520 case DolphinView::SortByType:
521 action = m_actionCollection->action("sort_by_type");
522 break;
523 default:
524 break;
525 }
526
527 if (action != 0) {
528 action->setChecked(true);
529
530 QAction* sortByMenu = m_actionCollection->action("sort");
531 sortByMenu->setIcon(KIcon(action->icon()));
532 }
533 }
534
535 void DolphinViewActionHandler::slotZoomLevelChanged(int level)
536 {
537 QAction* zoomInAction = m_actionCollection->action(KStandardAction::name(KStandardAction::ZoomIn));
538 if (zoomInAction != 0) {
539 zoomInAction->setEnabled(level < ZoomLevelInfo::maximumLevel());
540 }
541
542 QAction* zoomOutAction = m_actionCollection->action(KStandardAction::name(KStandardAction::ZoomOut));
543 if (zoomOutAction != 0) {
544 zoomOutAction->setEnabled(level > ZoomLevelInfo::minimumLevel());
545 }
546 }
547
548 void DolphinViewActionHandler::slotSortTriggered(QAction* action)
549 {
550 const DolphinView::Sorting sorting = action->data().value<DolphinView::Sorting>();
551 m_currentView->setSorting(sorting);
552 }
553
554 void DolphinViewActionHandler::slotAdjustViewProperties()
555 {
556 emit actionBeingHandled();
557 QPointer<ViewPropertiesDialog> dialog = new ViewPropertiesDialog(m_currentView);
558 dialog->exec();
559 delete dialog;
560 }
561
562 void DolphinViewActionHandler::slotFindFile()
563 {
564 KRun::run("kfind %u", m_currentView->url(), m_currentView->window());
565 }
566
567 void DolphinViewActionHandler::slotProperties()
568 {
569 KPropertiesDialog* dialog = 0;
570 const KFileItemList list = m_currentView->selectedItems();
571 if (list.isEmpty()) {
572 const KUrl url = m_currentView->url();
573 dialog = new KPropertiesDialog(url, m_currentView);
574 } else {
575 dialog = new KPropertiesDialog(list, m_currentView);
576 }
577
578 dialog->setAttribute(Qt::WA_DeleteOnClose);
579 dialog->show();
580 dialog->raise();
581 dialog->activateWindow();
582 }