+ const KUrl::List urls = KUrl::List::fromMimeData(event->mimeData());
+ if (!urls.isEmpty() && tab != -1) {
+ const ViewTab& viewTab = m_viewTab[tab];
+ const DolphinView* view = viewTab.isPrimaryViewActive ? viewTab.primaryView->view()
+ : viewTab.secondaryView->view();
+ const QString error = DragAndDropHelper::dropUrls(view->rootItem(), view->url(), event);
+ if (!error.isEmpty()) {
+ activeViewContainer()->showMessage(error, DolphinViewContainer::Error);
+ }
+ }
+}
+
+void DolphinMainWindow::slotWriteStateChanged(bool isFolderWritable)
+{
+ newFileMenu()->setEnabled(isFolderWritable);
+}
+
+void DolphinMainWindow::openContextMenu(const QPoint& pos,
+ const KFileItem& item,
+ const KUrl& url,
+ const QList<QAction*>& customActions)
+{
+ QWeakPointer<DolphinContextMenu> contextMenu = new DolphinContextMenu(this, pos, item, url);
+ contextMenu.data()->setCustomActions(customActions);
+ const DolphinContextMenu::Command command = contextMenu.data()->open();
+
+ switch (command) {
+ case DolphinContextMenu::OpenParentFolderInNewWindow: {
+ KRun::run("dolphin %u", KUrl::List() << item.url().upUrl(), this);
+ break;
+ }
+
+ case DolphinContextMenu::OpenParentFolderInNewTab:
+ openNewTab(item.url().upUrl());
+ break;
+
+ case DolphinContextMenu::None:
+ default:
+ break;
+ }
+
+ delete contextMenu.data();
+}
+
+void DolphinMainWindow::updateControlMenu()
+{
+ KMenu* menu = qobject_cast<KMenu*>(sender());
+ Q_ASSERT(menu);
+
+ // All actions get cleared by KMenu::clear(). The sub-menus are deleted
+ // by connecting to the aboutToHide() signal from the parent-menu.
+ menu->clear();
+
+ KActionCollection* ac = actionCollection();
+
+ // Add "Edit" actions
+ bool added = addActionToMenu(ac->action(KStandardAction::name(KStandardAction::Undo)), menu) |
+ addActionToMenu(ac->action(KStandardAction::name(KStandardAction::Find)), menu) |
+ addActionToMenu(ac->action("select_all"), menu) |
+ addActionToMenu(ac->action("invert_selection"), menu);
+
+ if (added) {
+ menu->addSeparator();
+ }
+
+ // Add "View" actions
+ if (!GeneralSettings::showZoomSlider()) {
+ addActionToMenu(ac->action(KStandardAction::name(KStandardAction::ZoomIn)), menu);
+ addActionToMenu(ac->action(KStandardAction::name(KStandardAction::ZoomOut)), menu);
+ menu->addSeparator();
+ }
+
+ added = addActionToMenu(ac->action("view_mode"), menu) |
+ addActionToMenu(ac->action("sort"), menu) |
+ addActionToMenu(ac->action("additional_info"), menu) |
+ addActionToMenu(ac->action("show_preview"), menu) |
+ addActionToMenu(ac->action("show_in_groups"), menu) |
+ addActionToMenu(ac->action("show_hidden_files"), menu);
+
+ if (added) {
+ menu->addSeparator();
+ }
+
+ added = addActionToMenu(ac->action("split_view"), menu) |
+ addActionToMenu(ac->action("reload"), menu) |
+ addActionToMenu(ac->action("view_properties"), menu);
+ if (added) {
+ menu->addSeparator();
+ }
+
+ addActionToMenu(ac->action("panels"), menu);
+ KMenu* locationBarMenu = new KMenu(i18nc("@action:inmenu", "Location Bar"), menu);
+ locationBarMenu->addAction(ac->action("editable_location"));
+ locationBarMenu->addAction(ac->action("replace_location"));
+ menu->addMenu(locationBarMenu);
+
+ menu->addSeparator();
+
+ // Add "Go" menu
+ KMenu* goMenu = new KMenu(i18nc("@action:inmenu", "Go"), menu);
+ connect(menu, SIGNAL(aboutToHide()), goMenu, SLOT(deleteLater()));
+ goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Back)));
+ goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Forward)));
+ goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Up)));
+ goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Home)));
+ goMenu->addAction(ac->action("closed_tabs"));
+ menu->addMenu(goMenu);
+
+ // Add "Tool" menu
+ KMenu* toolsMenu = new KMenu(i18nc("@action:inmenu", "Tools"), menu);
+ connect(menu, SIGNAL(aboutToHide()), toolsMenu, SLOT(deleteLater()));
+ toolsMenu->addAction(ac->action("show_filter_bar"));
+ toolsMenu->addAction(ac->action("compare_files"));
+ toolsMenu->addAction(ac->action("open_terminal"));
+ toolsMenu->addAction(ac->action("change_remote_encoding"));
+ menu->addMenu(toolsMenu);
+
+ // Add "Settings" menu entries
+ addActionToMenu(ac->action(KStandardAction::name(KStandardAction::KeyBindings)), menu);
+ addActionToMenu(ac->action(KStandardAction::name(KStandardAction::ConfigureToolbars)), menu);
+ addActionToMenu(ac->action(KStandardAction::name(KStandardAction::Preferences)), menu);
+
+ // Add "Help" menu
+ KMenu* helpMenu = new KMenu(i18nc("@action:inmenu", "Help"), menu);
+ connect(menu, SIGNAL(aboutToHide()), helpMenu, SLOT(deleteLater()));
+ helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::HelpContents)));
+ helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::WhatsThis)));
+ helpMenu->addSeparator();
+ helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::ReportBug)));
+ helpMenu->addSeparator();
+ helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::SwitchApplicationLanguage)));
+ helpMenu->addSeparator();
+ helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::AboutApp)));
+ helpMenu->addAction(ac->action(KStandardAction::name(KStandardAction::AboutKDE)));
+ menu->addMenu(helpMenu);
+
+ menu->addSeparator();
+ addActionToMenu(ac->action(KStandardAction::name(KStandardAction::ShowMenubar)), menu);
+}
+
+void DolphinMainWindow::updateToolBar()
+{
+ if (!menuBar()->isVisible()) {
+ createControlButton();
+ }
+}
+
+void DolphinMainWindow::slotControlButtonDeleted()
+{
+ m_controlButton = 0;
+ m_updateToolBarTimer->start();
+}
+
+void DolphinMainWindow::slotPanelErrorMessage(const QString& error)
+{
+ activeViewContainer()->showMessage(error, DolphinViewContainer::Error);
+}
+
+void DolphinMainWindow::setActiveViewContainer(DolphinViewContainer* viewContainer)
+{
+ Q_ASSERT(viewContainer);
+ Q_ASSERT((viewContainer == m_viewTab[m_tabIndex].primaryView) ||
+ (viewContainer == m_viewTab[m_tabIndex].secondaryView));
+ if (m_activeViewContainer == viewContainer) {
+ return;
+ }
+
+ m_activeViewContainer->setActive(false);
+ m_activeViewContainer = viewContainer;
+
+ // Activating the view container might trigger a recursive setActiveViewContainer() call
+ // inside DolphinMainWindow::toggleActiveView() when having a split view. Temporary
+ // disconnect the activated() signal in this case:
+ disconnect(m_activeViewContainer->view(), SIGNAL(activated()), this, SLOT(toggleActiveView()));
+ m_activeViewContainer->setActive(true);
+ connect(m_activeViewContainer->view(), SIGNAL(activated()), this, SLOT(toggleActiveView()));
+
+ m_actionHandler->setCurrentView(viewContainer->view());
+
+ updateHistory();
+ updateEditActions();
+ updateViewActions();
+ updateGoActions();