]> cloud.milkyroute.net Git - dolphin.git/blob - src/dolphinviewactionhandler.cpp
Allow to add menu groups like "View Mode", "Sort By"... to be added as toolbar item...
[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 QActionGroup* sortByActionGroup = createSortByActionGroup();
166 connect(sortByActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(slotSortTriggered(QAction*)));
167
168 KActionMenu* sortActionMenu = m_actionCollection->add<KActionMenu>("sort");
169 sortActionMenu->setText(i18nc("@action:inmenu View", "Sort By"));
170 sortActionMenu->setDelayed(false);
171
172 foreach(QAction* actionItem, sortByActionGroup->actions()) {
173 sortActionMenu->addAction(actionItem);
174 }
175 sortActionMenu->addSeparator();
176 sortActionMenu->addAction(sortDescending);
177 sortActionMenu->addAction(sortFoldersFirst);
178
179 KActionMenu* showInformationActionMenu = createAdditionalInformationActionMenu();
180 connect(showInformationActionMenu, SIGNAL(triggered(QAction*)), this, SLOT(toggleAdditionalInfo(QAction*)));
181
182 KToggleAction* showInGroups = m_actionCollection->add<KToggleAction>("show_in_groups");
183 showInGroups->setText(i18nc("@action:inmenu View", "Show in Groups"));
184 connect(showInGroups, SIGNAL(triggered(bool)), this, SLOT(toggleSortCategorization(bool)));
185
186 KToggleAction* showHiddenFiles = m_actionCollection->add<KToggleAction>("show_hidden_files");
187 showHiddenFiles->setText(i18nc("@action:inmenu View", "Show Hidden Files"));
188 showHiddenFiles->setShortcuts(QList<QKeySequence>() << Qt::ALT + Qt::Key_Period << Qt::Key_F8);
189 connect(showHiddenFiles, SIGNAL(triggered(bool)), this, SLOT(toggleShowHiddenFiles(bool)));
190
191 KAction* adjustViewProps = m_actionCollection->addAction("view_properties");
192 adjustViewProps->setText(i18nc("@action:inmenu View", "Adjust View Properties..."));
193 connect(adjustViewProps, SIGNAL(triggered()), this, SLOT(slotAdjustViewProperties()));
194
195 // Tools menu
196
197 KAction* findFile = m_actionCollection->addAction("find_file");
198 findFile->setText(i18nc("@action:inmenu Tools", "Find File..."));
199 findFile->setShortcut(Qt::CTRL | Qt::Key_F);
200 findFile->setIcon(KIcon("edit-find"));
201 connect(findFile, SIGNAL(triggered()), this, SLOT(slotFindFile()));
202 }
203
204 KActionMenu* DolphinViewActionHandler::createAdditionalInformationActionMenu()
205 {
206 KActionMenu* showInformationMenu = m_actionCollection->add<KActionMenu>("additional_info");
207 showInformationMenu->setText(i18nc("@action:inmenu View", "Additional Information"));
208 showInformationMenu->setDelayed(false);
209
210 KToggleAction* showSizeInfo = m_actionCollection->add<KToggleAction>("show_size_info");
211 showSizeInfo->setText(i18nc("@action:inmenu Additional information", "Size"));
212 showSizeInfo->setData(KFileItemDelegate::Size);
213 showInformationMenu->addAction(showSizeInfo);
214
215 KToggleAction* showDateInfo = m_actionCollection->add<KToggleAction>("show_date_info");
216 showDateInfo->setText(i18nc("@action:inmenu Additional information", "Date"));
217 showDateInfo->setData(KFileItemDelegate::ModificationTime);
218 showInformationMenu->addAction(showDateInfo);
219
220 KToggleAction* showPermissionsInfo = m_actionCollection->add<KToggleAction>("show_permissions_info");
221 showPermissionsInfo->setText(i18nc("@action:inmenu Additional information", "Permissions"));
222 showPermissionsInfo->setData(KFileItemDelegate::Permissions);
223 showInformationMenu->addAction(showPermissionsInfo);
224
225 KToggleAction* showOwnerInfo = m_actionCollection->add<KToggleAction>("show_owner_info");
226 showOwnerInfo->setText(i18nc("@action:inmenu Additional information", "Owner"));
227 showOwnerInfo->setData(KFileItemDelegate::Owner);
228 showInformationMenu->addAction(showOwnerInfo);
229
230 KToggleAction* showGroupInfo = m_actionCollection->add<KToggleAction>("show_group_info");
231 showGroupInfo->setText(i18nc("@action:inmenu Additional information", "Group"));
232 showGroupInfo->setData(KFileItemDelegate::OwnerAndGroup);
233 showInformationMenu->addAction(showGroupInfo);
234
235 KToggleAction* showMimeInfo = m_actionCollection->add<KToggleAction>("show_mime_info");
236 showMimeInfo->setText(i18nc("@action:inmenu Additional information", "Type"));
237 showMimeInfo->setData(KFileItemDelegate::FriendlyMimeType);;
238 showInformationMenu->addAction(showMimeInfo);
239
240 return showInformationMenu;
241 }
242
243 Q_DECLARE_METATYPE(DolphinView::Sorting)
244
245 QActionGroup* DolphinViewActionHandler::createSortByActionGroup()
246 {
247 QActionGroup* sortByActionGroup = new QActionGroup(m_actionCollection);
248 sortByActionGroup->setExclusive(true);
249
250 KToggleAction* sortByName = m_actionCollection->add<KToggleAction>("sort_by_name");
251 sortByName->setText(i18nc("@action:inmenu Sort By", "Name"));
252 sortByName->setData(QVariant::fromValue(DolphinView::SortByName));
253 sortByActionGroup->addAction(sortByName);
254
255 KToggleAction* sortBySize = m_actionCollection->add<KToggleAction>("sort_by_size");
256 sortBySize->setText(i18nc("@action:inmenu Sort By", "Size"));
257 sortBySize->setData(QVariant::fromValue(DolphinView::SortBySize));
258 sortByActionGroup->addAction(sortBySize);
259
260 KToggleAction* sortByDate = m_actionCollection->add<KToggleAction>("sort_by_date");
261 sortByDate->setText(i18nc("@action:inmenu Sort By", "Date"));
262 sortByDate->setData(QVariant::fromValue(DolphinView::SortByDate));
263 sortByActionGroup->addAction(sortByDate);
264
265 KToggleAction* sortByPermissions = m_actionCollection->add<KToggleAction>("sort_by_permissions");
266 sortByPermissions->setText(i18nc("@action:inmenu Sort By", "Permissions"));
267 sortByPermissions->setData(QVariant::fromValue(DolphinView::SortByPermissions));
268 sortByActionGroup->addAction(sortByPermissions);
269
270 KToggleAction* sortByOwner = m_actionCollection->add<KToggleAction>("sort_by_owner");
271 sortByOwner->setText(i18nc("@action:inmenu Sort By", "Owner"));
272 sortByOwner->setData(QVariant::fromValue(DolphinView::SortByOwner));
273 sortByActionGroup->addAction(sortByOwner);
274
275 KToggleAction* sortByGroup = m_actionCollection->add<KToggleAction>("sort_by_group");
276 sortByGroup->setText(i18nc("@action:inmenu Sort By", "Group"));
277 sortByGroup->setData(QVariant::fromValue(DolphinView::SortByGroup));
278 sortByActionGroup->addAction(sortByGroup);
279
280 KToggleAction* sortByType = m_actionCollection->add<KToggleAction>("sort_by_type");
281 sortByType->setText(i18nc("@action:inmenu Sort By", "Type"));
282 sortByType->setData(QVariant::fromValue(DolphinView::SortByType));
283 sortByActionGroup->addAction(sortByType);
284
285 return sortByActionGroup;
286 }
287
288 void DolphinViewActionHandler::slotViewModeActionTriggered(QAction* action)
289 {
290 const DolphinView::Mode mode = action->data().value<DolphinView::Mode>();
291 m_currentView->setMode(mode);
292
293 QAction* viewModeMenu = m_actionCollection->action("view_mode");
294 viewModeMenu->setIcon(KIcon(action->icon()));
295 }
296
297 void DolphinViewActionHandler::slotRename()
298 {
299 emit actionBeingHandled();
300 m_currentView->renameSelectedItems();
301 }
302
303 void DolphinViewActionHandler::slotTrashActivated(Qt::MouseButtons, Qt::KeyboardModifiers modifiers)
304 {
305 emit actionBeingHandled();
306 // Note: kde3's konq_mainwindow.cpp used to check
307 // reason == KAction::PopupMenuActivation && ...
308 // but this isn't supported anymore
309 if (modifiers & Qt::ShiftModifier)
310 m_currentView->deleteSelectedItems();
311 else
312 m_currentView->trashSelectedItems();
313 }
314
315 void DolphinViewActionHandler::slotDeleteItems()
316 {
317 emit actionBeingHandled();
318 m_currentView->deleteSelectedItems();
319 }
320
321 void DolphinViewActionHandler::togglePreview(bool show)
322 {
323 emit actionBeingHandled();
324 m_currentView->setShowPreview(show);
325 }
326
327 void DolphinViewActionHandler::slotShowPreviewChanged()
328 {
329 // It is not enough to update the 'Show Preview' action, also
330 // the 'Zoom In' and 'Zoom Out' actions must be adapted.
331 updateViewActions();
332 }
333
334 QString DolphinViewActionHandler::currentViewModeActionName() const
335 {
336 switch (m_currentView->mode()) {
337 case DolphinView::IconsView:
338 return "icons";
339 case DolphinView::DetailsView:
340 return "details";
341 case DolphinView::ColumnView:
342 return "columns";
343 }
344 return QString(); // can't happen
345 }
346
347 KActionCollection* DolphinViewActionHandler::actionCollection()
348 {
349 return m_actionCollection;
350 }
351
352 void DolphinViewActionHandler::updateViewActions()
353 {
354 QAction* viewModeAction = m_actionCollection->action(currentViewModeActionName());
355 if (viewModeAction != 0) {
356 viewModeAction->setChecked(true);
357
358 QAction* viewModeMenu = m_actionCollection->action("view_mode");
359 viewModeMenu->setIcon(KIcon(viewModeAction->icon()));
360 }
361
362 QAction* showPreviewAction = m_actionCollection->action("show_preview");
363 showPreviewAction->setChecked(m_currentView->showPreview());
364
365 slotSortOrderChanged(m_currentView->sortOrder());
366 slotSortFoldersFirstChanged(m_currentView->sortFoldersFirst());
367 slotAdditionalInfoChanged();
368 slotCategorizedSortingChanged();
369 slotSortingChanged(m_currentView->sorting());
370 slotZoomLevelChanged(m_currentView->zoomLevel());
371
372 QAction* showHiddenFilesAction = m_actionCollection->action("show_hidden_files");
373 showHiddenFilesAction->setChecked(m_currentView->showHiddenFiles());
374 }
375
376 void DolphinViewActionHandler::zoomIn()
377 {
378 const int level = m_currentView->zoomLevel();
379 m_currentView->setZoomLevel(level + 1);
380 updateViewActions();
381 }
382
383 void DolphinViewActionHandler::zoomOut()
384 {
385 const int level = m_currentView->zoomLevel();
386 m_currentView->setZoomLevel(level - 1);
387 updateViewActions();
388 }
389
390 void DolphinViewActionHandler::toggleSortOrder()
391 {
392 m_currentView->toggleSortOrder();
393 }
394
395 void DolphinViewActionHandler::toggleSortFoldersFirst()
396 {
397 m_currentView->toggleSortFoldersFirst();
398 }
399
400 void DolphinViewActionHandler::slotSortOrderChanged(Qt::SortOrder order)
401 {
402 QAction* descending = m_actionCollection->action("descending");
403 const bool sortDescending = (order == Qt::DescendingOrder);
404 descending->setChecked(sortDescending);
405 }
406
407 void DolphinViewActionHandler::slotSortFoldersFirstChanged(bool foldersFirst)
408 {
409 m_actionCollection->action("folders_first")->setChecked(foldersFirst);
410 }
411
412 void DolphinViewActionHandler::toggleAdditionalInfo(QAction* action)
413 {
414 emit actionBeingHandled();
415 m_currentView->toggleAdditionalInfo(action);
416 }
417
418 void DolphinViewActionHandler::slotAdditionalInfoChanged()
419 {
420 m_currentView->updateAdditionalInfoActions(m_actionCollection);
421 }
422
423 void DolphinViewActionHandler::toggleSortCategorization(bool categorizedSorting)
424 {
425 m_currentView->setCategorizedSorting(categorizedSorting);
426 }
427
428 void DolphinViewActionHandler::slotCategorizedSortingChanged()
429 {
430 QAction* showInGroupsAction = m_actionCollection->action("show_in_groups");
431 showInGroupsAction->setChecked(m_currentView->categorizedSorting());
432 showInGroupsAction->setEnabled(m_currentView->supportsCategorizedSorting());
433 }
434
435 void DolphinViewActionHandler::toggleShowHiddenFiles(bool show)
436 {
437 emit actionBeingHandled();
438 m_currentView->setShowHiddenFiles(show);
439 }
440
441 void DolphinViewActionHandler::slotShowHiddenFilesChanged()
442 {
443 QAction* showHiddenFilesAction = m_actionCollection->action("show_hidden_files");
444 showHiddenFilesAction->setChecked(m_currentView->showHiddenFiles());
445 }
446
447
448 KToggleAction* DolphinViewActionHandler::iconsModeAction()
449 {
450 KToggleAction* iconsView = m_actionCollection->add<KToggleAction>("icons");
451 iconsView->setText(i18nc("@action:inmenu View Mode", "Icons"));
452 iconsView->setToolTip(i18nc("@info", "Icons view mode"));
453 iconsView->setShortcut(Qt::CTRL | Qt::Key_1);
454 iconsView->setIcon(KIcon("view-list-icons"));
455 iconsView->setData(QVariant::fromValue(DolphinView::IconsView));
456 return iconsView;
457 }
458
459 KToggleAction* DolphinViewActionHandler::detailsModeAction()
460 {
461 KToggleAction* detailsView = m_actionCollection->add<KToggleAction>("details");
462 detailsView->setText(i18nc("@action:inmenu View Mode", "Details"));
463 detailsView->setToolTip(i18nc("@info", "Details view mode"));
464 detailsView->setShortcut(Qt::CTRL | Qt::Key_2);
465 detailsView->setIcon(KIcon("view-list-details"));
466 detailsView->setData(QVariant::fromValue(DolphinView::DetailsView));
467 return detailsView;
468 }
469
470 KToggleAction* DolphinViewActionHandler::columnsModeAction()
471 {
472 KToggleAction* columnView = m_actionCollection->add<KToggleAction>("columns");
473 columnView->setText(i18nc("@action:inmenu View Mode", "Columns"));
474 columnView->setToolTip(i18nc("@info", "Columns view mode"));
475 columnView->setShortcut(Qt::CTRL | Qt::Key_3);
476 columnView->setIcon(KIcon("view-file-columns"));
477 columnView->setData(QVariant::fromValue(DolphinView::ColumnView));
478 return columnView;
479 }
480
481 void DolphinViewActionHandler::slotSortingChanged(DolphinView::Sorting sorting)
482 {
483 QAction* action = 0;
484 switch (sorting) {
485 case DolphinView::SortByName:
486 action = m_actionCollection->action("sort_by_name");
487 break;
488 case DolphinView::SortBySize:
489 action = m_actionCollection->action("sort_by_size");
490 break;
491 case DolphinView::SortByDate:
492 action = m_actionCollection->action("sort_by_date");
493 break;
494 case DolphinView::SortByPermissions:
495 action = m_actionCollection->action("sort_by_permissions");
496 break;
497 case DolphinView::SortByOwner:
498 action = m_actionCollection->action("sort_by_owner");
499 break;
500 case DolphinView::SortByGroup:
501 action = m_actionCollection->action("sort_by_group");
502 break;
503 case DolphinView::SortByType:
504 action = m_actionCollection->action("sort_by_type");
505 break;
506 default:
507 break;
508 }
509
510 if (action != 0) {
511 action->setChecked(true);
512
513 QAction* sortByMenu = m_actionCollection->action("sort");
514 sortByMenu->setIcon(KIcon(action->icon()));
515 }
516 }
517
518 void DolphinViewActionHandler::slotZoomLevelChanged(int level)
519 {
520 QAction* zoomInAction = m_actionCollection->action(KStandardAction::name(KStandardAction::ZoomIn));
521 if (zoomInAction != 0) {
522 zoomInAction->setEnabled(level < ZoomLevelInfo::maximumLevel());
523 }
524
525 QAction* zoomOutAction = m_actionCollection->action(KStandardAction::name(KStandardAction::ZoomOut));
526 if (zoomOutAction != 0) {
527 zoomOutAction->setEnabled(level > ZoomLevelInfo::minimumLevel());
528 }
529 }
530
531 void DolphinViewActionHandler::slotSortTriggered(QAction* action)
532 {
533 const DolphinView::Sorting sorting = action->data().value<DolphinView::Sorting>();
534 m_currentView->setSorting(sorting);
535 }
536
537 void DolphinViewActionHandler::slotAdjustViewProperties()
538 {
539 emit actionBeingHandled();
540 QPointer<ViewPropertiesDialog> dialog = new ViewPropertiesDialog(m_currentView);
541 dialog->exec();
542 delete dialog;
543 }
544
545 void DolphinViewActionHandler::slotFindFile()
546 {
547 KRun::run("kfind %u", m_currentView->url(), m_currentView->window());
548 }
549
550 void DolphinViewActionHandler::slotProperties()
551 {
552 KPropertiesDialog* dialog = 0;
553 const KFileItemList list = m_currentView->selectedItems();
554 if (list.isEmpty()) {
555 const KUrl url = m_currentView->url();
556 dialog = new KPropertiesDialog(url, m_currentView);
557 } else {
558 dialog = new KPropertiesDialog(list, m_currentView);
559 }
560
561 dialog->setAttribute(Qt::WA_DeleteOnClose);
562 dialog->show();
563 dialog->raise();
564 dialog->activateWindow();
565 }