]> cloud.milkyroute.net Git - dolphin.git/blob - src/dolphinviewactionhandler.cpp
SVN_SILENT made messages (.desktop file)
[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 return additionalInfoGroup;
253 }
254
255 Q_DECLARE_METATYPE(DolphinView::Sorting)
256
257 QActionGroup* DolphinViewActionHandler::createSortByActionGroup()
258 {
259 QActionGroup* sortByActionGroup = new QActionGroup(m_actionCollection);
260 sortByActionGroup->setExclusive(true);
261
262 KToggleAction* sortByName = m_actionCollection->add<KToggleAction>("sort_by_name");
263 sortByName->setText(i18nc("@action:inmenu Sort By", "Name"));
264 sortByName->setData(QVariant::fromValue(DolphinView::SortByName));
265 sortByActionGroup->addAction(sortByName);
266
267 KToggleAction* sortBySize = m_actionCollection->add<KToggleAction>("sort_by_size");
268 sortBySize->setText(i18nc("@action:inmenu Sort By", "Size"));
269 sortBySize->setData(QVariant::fromValue(DolphinView::SortBySize));
270 sortByActionGroup->addAction(sortBySize);
271
272 KToggleAction* sortByDate = m_actionCollection->add<KToggleAction>("sort_by_date");
273 sortByDate->setText(i18nc("@action:inmenu Sort By", "Date"));
274 sortByDate->setData(QVariant::fromValue(DolphinView::SortByDate));
275 sortByActionGroup->addAction(sortByDate);
276
277 KToggleAction* sortByPermissions = m_actionCollection->add<KToggleAction>("sort_by_permissions");
278 sortByPermissions->setText(i18nc("@action:inmenu Sort By", "Permissions"));
279 sortByPermissions->setData(QVariant::fromValue(DolphinView::SortByPermissions));
280 sortByActionGroup->addAction(sortByPermissions);
281
282 KToggleAction* sortByOwner = m_actionCollection->add<KToggleAction>("sort_by_owner");
283 sortByOwner->setText(i18nc("@action:inmenu Sort By", "Owner"));
284 sortByOwner->setData(QVariant::fromValue(DolphinView::SortByOwner));
285 sortByActionGroup->addAction(sortByOwner);
286
287 KToggleAction* sortByGroup = m_actionCollection->add<KToggleAction>("sort_by_group");
288 sortByGroup->setText(i18nc("@action:inmenu Sort By", "Group"));
289 sortByGroup->setData(QVariant::fromValue(DolphinView::SortByGroup));
290 sortByActionGroup->addAction(sortByGroup);
291
292 KToggleAction* sortByType = m_actionCollection->add<KToggleAction>("sort_by_type");
293 sortByType->setText(i18nc("@action:inmenu Sort By", "Type"));
294 sortByType->setData(QVariant::fromValue(DolphinView::SortByType));
295 sortByActionGroup->addAction(sortByType);
296
297 return sortByActionGroup;
298 }
299
300 void DolphinViewActionHandler::slotViewModeActionTriggered(QAction* action)
301 {
302 const DolphinView::Mode mode = action->data().value<DolphinView::Mode>();
303 m_currentView->setMode(mode);
304
305 QAction* viewModeMenu = m_actionCollection->action("view_mode");
306 viewModeMenu->setIcon(KIcon(action->icon()));
307 }
308
309 void DolphinViewActionHandler::slotRename()
310 {
311 emit actionBeingHandled();
312 m_currentView->renameSelectedItems();
313 }
314
315 void DolphinViewActionHandler::slotTrashActivated(Qt::MouseButtons, Qt::KeyboardModifiers modifiers)
316 {
317 emit actionBeingHandled();
318 // Note: kde3's konq_mainwindow.cpp used to check
319 // reason == KAction::PopupMenuActivation && ...
320 // but this isn't supported anymore
321 if (modifiers & Qt::ShiftModifier)
322 m_currentView->deleteSelectedItems();
323 else
324 m_currentView->trashSelectedItems();
325 }
326
327 void DolphinViewActionHandler::slotDeleteItems()
328 {
329 emit actionBeingHandled();
330 m_currentView->deleteSelectedItems();
331 }
332
333 void DolphinViewActionHandler::togglePreview(bool show)
334 {
335 emit actionBeingHandled();
336 m_currentView->setShowPreview(show);
337 }
338
339 void DolphinViewActionHandler::slotShowPreviewChanged()
340 {
341 // It is not enough to update the 'Show Preview' action, also
342 // the 'Zoom In' and 'Zoom Out' actions must be adapted.
343 updateViewActions();
344 }
345
346 QString DolphinViewActionHandler::currentViewModeActionName() const
347 {
348 switch (m_currentView->mode()) {
349 case DolphinView::IconsView:
350 return "icons";
351 case DolphinView::DetailsView:
352 return "details";
353 case DolphinView::ColumnView:
354 return "columns";
355 }
356 return QString(); // can't happen
357 }
358
359 KActionCollection* DolphinViewActionHandler::actionCollection()
360 {
361 return m_actionCollection;
362 }
363
364 void DolphinViewActionHandler::updateViewActions()
365 {
366 QAction* viewModeAction = m_actionCollection->action(currentViewModeActionName());
367 if (viewModeAction != 0) {
368 viewModeAction->setChecked(true);
369
370 QAction* viewModeMenu = m_actionCollection->action("view_mode");
371 viewModeMenu->setIcon(KIcon(viewModeAction->icon()));
372 }
373
374 QAction* showPreviewAction = m_actionCollection->action("show_preview");
375 showPreviewAction->setChecked(m_currentView->showPreview());
376
377 slotSortOrderChanged(m_currentView->sortOrder());
378 slotSortFoldersFirstChanged(m_currentView->sortFoldersFirst());
379 slotAdditionalInfoChanged();
380 slotCategorizedSortingChanged();
381 slotSortingChanged(m_currentView->sorting());
382 slotZoomLevelChanged(m_currentView->zoomLevel());
383
384 QAction* showHiddenFilesAction = m_actionCollection->action("show_hidden_files");
385 showHiddenFilesAction->setChecked(m_currentView->showHiddenFiles());
386 }
387
388 void DolphinViewActionHandler::zoomIn()
389 {
390 const int level = m_currentView->zoomLevel();
391 m_currentView->setZoomLevel(level + 1);
392 updateViewActions();
393 }
394
395 void DolphinViewActionHandler::zoomOut()
396 {
397 const int level = m_currentView->zoomLevel();
398 m_currentView->setZoomLevel(level - 1);
399 updateViewActions();
400 }
401
402 void DolphinViewActionHandler::toggleSortOrder()
403 {
404 m_currentView->toggleSortOrder();
405 }
406
407 void DolphinViewActionHandler::toggleSortFoldersFirst()
408 {
409 m_currentView->toggleSortFoldersFirst();
410 }
411
412 void DolphinViewActionHandler::slotSortOrderChanged(Qt::SortOrder order)
413 {
414 QAction* descending = m_actionCollection->action("descending");
415 const bool sortDescending = (order == Qt::DescendingOrder);
416 descending->setChecked(sortDescending);
417 }
418
419 void DolphinViewActionHandler::slotSortFoldersFirstChanged(bool foldersFirst)
420 {
421 m_actionCollection->action("folders_first")->setChecked(foldersFirst);
422 }
423
424 void DolphinViewActionHandler::toggleAdditionalInfo(QAction* action)
425 {
426 emit actionBeingHandled();
427 m_currentView->toggleAdditionalInfo(action);
428 }
429
430 void DolphinViewActionHandler::slotAdditionalInfoChanged()
431 {
432 m_currentView->updateAdditionalInfoActions(m_actionCollection);
433 }
434
435 void DolphinViewActionHandler::toggleSortCategorization(bool categorizedSorting)
436 {
437 m_currentView->setCategorizedSorting(categorizedSorting);
438 }
439
440 void DolphinViewActionHandler::slotCategorizedSortingChanged()
441 {
442 QAction* showInGroupsAction = m_actionCollection->action("show_in_groups");
443 showInGroupsAction->setChecked(m_currentView->categorizedSorting());
444 showInGroupsAction->setEnabled(m_currentView->supportsCategorizedSorting());
445 }
446
447 void DolphinViewActionHandler::toggleShowHiddenFiles(bool show)
448 {
449 emit actionBeingHandled();
450 m_currentView->setShowHiddenFiles(show);
451 }
452
453 void DolphinViewActionHandler::slotShowHiddenFilesChanged()
454 {
455 QAction* showHiddenFilesAction = m_actionCollection->action("show_hidden_files");
456 showHiddenFilesAction->setChecked(m_currentView->showHiddenFiles());
457 }
458
459
460 KToggleAction* DolphinViewActionHandler::iconsModeAction()
461 {
462 KToggleAction* iconsView = m_actionCollection->add<KToggleAction>("icons");
463 iconsView->setText(i18nc("@action:inmenu View Mode", "Icons"));
464 iconsView->setToolTip(i18nc("@info", "Icons view mode"));
465 iconsView->setShortcut(Qt::CTRL | Qt::Key_1);
466 iconsView->setIcon(KIcon("view-list-icons"));
467 iconsView->setData(QVariant::fromValue(DolphinView::IconsView));
468 return iconsView;
469 }
470
471 KToggleAction* DolphinViewActionHandler::detailsModeAction()
472 {
473 KToggleAction* detailsView = m_actionCollection->add<KToggleAction>("details");
474 detailsView->setText(i18nc("@action:inmenu View Mode", "Details"));
475 detailsView->setToolTip(i18nc("@info", "Details view mode"));
476 detailsView->setShortcut(Qt::CTRL | Qt::Key_2);
477 detailsView->setIcon(KIcon("view-list-details"));
478 detailsView->setData(QVariant::fromValue(DolphinView::DetailsView));
479 return detailsView;
480 }
481
482 KToggleAction* DolphinViewActionHandler::columnsModeAction()
483 {
484 KToggleAction* columnView = m_actionCollection->add<KToggleAction>("columns");
485 columnView->setText(i18nc("@action:inmenu View Mode", "Columns"));
486 columnView->setToolTip(i18nc("@info", "Columns view mode"));
487 columnView->setShortcut(Qt::CTRL | Qt::Key_3);
488 columnView->setIcon(KIcon("view-file-columns"));
489 columnView->setData(QVariant::fromValue(DolphinView::ColumnView));
490 return columnView;
491 }
492
493 void DolphinViewActionHandler::slotSortingChanged(DolphinView::Sorting sorting)
494 {
495 QAction* action = 0;
496 switch (sorting) {
497 case DolphinView::SortByName:
498 action = m_actionCollection->action("sort_by_name");
499 break;
500 case DolphinView::SortBySize:
501 action = m_actionCollection->action("sort_by_size");
502 break;
503 case DolphinView::SortByDate:
504 action = m_actionCollection->action("sort_by_date");
505 break;
506 case DolphinView::SortByPermissions:
507 action = m_actionCollection->action("sort_by_permissions");
508 break;
509 case DolphinView::SortByOwner:
510 action = m_actionCollection->action("sort_by_owner");
511 break;
512 case DolphinView::SortByGroup:
513 action = m_actionCollection->action("sort_by_group");
514 break;
515 case DolphinView::SortByType:
516 action = m_actionCollection->action("sort_by_type");
517 break;
518 default:
519 break;
520 }
521
522 if (action != 0) {
523 action->setChecked(true);
524
525 QAction* sortByMenu = m_actionCollection->action("sort");
526 sortByMenu->setIcon(KIcon(action->icon()));
527 }
528 }
529
530 void DolphinViewActionHandler::slotZoomLevelChanged(int level)
531 {
532 QAction* zoomInAction = m_actionCollection->action(KStandardAction::name(KStandardAction::ZoomIn));
533 if (zoomInAction != 0) {
534 zoomInAction->setEnabled(level < ZoomLevelInfo::maximumLevel());
535 }
536
537 QAction* zoomOutAction = m_actionCollection->action(KStandardAction::name(KStandardAction::ZoomOut));
538 if (zoomOutAction != 0) {
539 zoomOutAction->setEnabled(level > ZoomLevelInfo::minimumLevel());
540 }
541 }
542
543 void DolphinViewActionHandler::slotSortTriggered(QAction* action)
544 {
545 const DolphinView::Sorting sorting = action->data().value<DolphinView::Sorting>();
546 m_currentView->setSorting(sorting);
547 }
548
549 void DolphinViewActionHandler::slotAdjustViewProperties()
550 {
551 emit actionBeingHandled();
552 QPointer<ViewPropertiesDialog> dialog = new ViewPropertiesDialog(m_currentView);
553 dialog->exec();
554 delete dialog;
555 }
556
557 void DolphinViewActionHandler::slotFindFile()
558 {
559 KRun::run("kfind %u", m_currentView->url(), m_currentView->window());
560 }
561
562 void DolphinViewActionHandler::slotProperties()
563 {
564 KPropertiesDialog* dialog = 0;
565 const KFileItemList list = m_currentView->selectedItems();
566 if (list.isEmpty()) {
567 const KUrl url = m_currentView->url();
568 dialog = new KPropertiesDialog(url, m_currentView);
569 } else {
570 dialog = new KPropertiesDialog(list, m_currentView);
571 }
572
573 dialog->setAttribute(Qt::WA_DeleteOnClose);
574 dialog->show();
575 dialog->raise();
576 dialog->activateWindow();
577 }