#include "dolphinnewmenu.h"
#include "settings/dolphinsettings.h"
#include "settings/dolphinsettingsdialog.h"
+#include "dolphinsearchbox.h"
#include "dolphinstatusbar.h"
#include "dolphinviewcontainer.h"
#include "panels/folders/folderspanel.h"
#include <kfiledialog.h>
#include <kfileplacesmodel.h>
#include <kglobal.h>
+#include <klineedit.h>
+#include <ktoolbar.h>
#include <kicon.h>
#include <kiconloader.h>
#include <kio/netaccess.h>
m_tabBar(0),
m_activeViewContainer(0),
m_centralWidgetLayout(0),
+ m_searchBox(0),
m_id(id),
m_tabIndex(0),
m_viewTab(),
emit selectionChanged(selection);
}
+void DolphinMainWindow::slotWheelMoved(int wheelDelta)
+{
+ if (wheelDelta > 0) {
+ activatePrevTab();
+ } else {
+ activateNextTab();
+ }
+}
+
void DolphinMainWindow::slotRequestItemInfo(const KFileItem& item)
{
emit requestItemInfo(item);
void DolphinMainWindow::editSettings()
{
if (m_settingsDialog == 0) {
- m_settingsDialog = new DolphinSettingsDialog(this);
+ const KUrl& url = activeViewContainer()->url();
+ m_settingsDialog = new DolphinSettingsDialog(url, this);
m_settingsDialog->setAttribute(Qt::WA_DeleteOnClose);
m_settingsDialog->show();
} else {
canDecode = KUrl::List::canDecode(event->mimeData());
}
+void DolphinMainWindow::searchItems(const KUrl& url)
+{
+ m_activeViewContainer->setUrl(url);
+}
+
+
void DolphinMainWindow::init()
{
DolphinSettings& settings = DolphinSettings::instance();
this, SLOT(openNewTab()));
connect(m_tabBar, SIGNAL(testCanDecode(const QDragMoveEvent*, bool&)),
this, SLOT(slotTestCanDecode(const QDragMoveEvent*, bool&)));
+ connect(m_tabBar, SIGNAL(wheelDelta(int)),
+ this, SLOT(slotWheelMoved(int)));
+ connect(m_tabBar, SIGNAL(mouseMiddleClick(int)),
+ this, SLOT(closeTab(int)));
+
m_tabBar->blockSignals(true); // signals get unblocked after at least 2 tabs are open
QWidget* centralWidget = new QWidget(this);
setupGUI(Keys | Save | Create | ToolBar);
+ m_searchBox->setParent(toolBar("searchToolBar"));
+ m_searchBox->show();
+
stateChanged("new_file");
QClipboard* clipboard = QApplication::clipboard();
KAction* newTab = actionCollection()->addAction("new_tab");
newTab->setIcon(KIcon("tab-new"));
newTab->setText(i18nc("@action:inmenu File", "New Tab"));
- newTab->setShortcut(KShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_N, Qt::CTRL | Qt::Key_T));
+ newTab->setShortcut(KShortcut(Qt::CTRL | Qt::Key_T, Qt::CTRL | Qt::SHIFT | Qt::Key_N));
connect(newTab, SIGNAL(triggered()), this, SLOT(openNewTab()));
QAction* closeTab = actionCollection()->addAction("close_tab");
KStandardAction::home(this, SLOT(goHome()), actionCollection());
// setup 'Tools' menu
+ KToggleAction* showSearchBar = actionCollection()->add<KToggleAction>("show_search_bar");
+ showSearchBar->setText(i18nc("@action:inmenu Tools", "Show Search Bar"));
+ showSearchBar->setShortcut(Qt::CTRL | Qt::Key_S);
+ connect(showSearchBar, SIGNAL(triggered(bool)), this, SLOT(toggleFilterBarVisibility(bool)));
+
KToggleAction* showFilterBar = actionCollection()->add<KToggleAction>("show_filter_bar");
showFilterBar->setText(i18nc("@action:inmenu Tools", "Show Filter Bar"));
showFilterBar->setShortcut(Qt::CTRL | Qt::Key_I);
openInNewWindow->setText(i18nc("@action:inmenu", "Open in New Window"));
openInNewWindow->setIcon(KIcon("window-new"));
connect(openInNewWindow, SIGNAL(triggered()), this, SLOT(openInNewWindow()));
+
+ // 'Search' toolbar
+ m_searchBox = new DolphinSearchBox(this);
+ connect(m_searchBox, SIGNAL(search(KUrl)), this, SLOT(searchItems(KUrl)));
+
+ KAction* search = new KAction(this);
+ actionCollection()->addAction("search_bar", search);
+ search->setText(i18nc("@action:inmenu", "Search Bar"));
+ search->setDefaultWidget(m_searchBox);
+ search->setShortcutConfigurable(false);
}
void DolphinMainWindow::setupDockWidgets()
Panel* infoPanel = new InformationPanel(infoDock);
infoDock->setWidget(infoPanel);
- infoDock->toggleViewAction()->setText(i18nc("@title:window", "Information"));
- infoDock->toggleViewAction()->setShortcut(Qt::Key_F11);
+ QAction* infoAction = infoDock->toggleViewAction();
+ infoAction->setText(i18nc("@title:window", "Information"));
+ infoAction->setShortcut(Qt::Key_F11);
+ infoAction->setIcon(KIcon("dialog-information"));
actionCollection()->addAction("show_info_panel", infoDock->toggleViewAction());
addDockWidget(Qt::RightDockWidgetArea, infoDock);
connect(this, SIGNAL(requestItemInfo(KFileItem)),
infoPanel, SLOT(requestDelayedItemInfo(KFileItem)));
- // setup "Tree View"
+ // setup "Folders"
QDockWidget* foldersDock = new QDockWidget(i18nc("@title:window", "Folders"));
foldersDock->setObjectName("foldersDock");
foldersDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
FoldersPanel* foldersPanel = new FoldersPanel(foldersDock);
foldersDock->setWidget(foldersPanel);
- foldersDock->toggleViewAction()->setText(i18nc("@title:window", "Folders"));
- foldersDock->toggleViewAction()->setShortcut(Qt::Key_F7);
+ QAction* foldersAction = foldersDock->toggleViewAction();
+ foldersAction->setText(i18nc("@title:window", "Folders"));
+ foldersAction->setShortcut(Qt::Key_F7);
+ foldersAction->setIcon(KIcon("folder"));
actionCollection()->addAction("show_folders_panel", foldersDock->toggleViewAction());
addDockWidget(Qt::LeftDockWidgetArea, foldersDock);
connect(terminalPanel, SIGNAL(hideTerminalPanel()), terminalDock, SLOT(hide()));
- terminalDock->toggleViewAction()->setText(i18nc("@title:window Shell terminal", "Terminal"));
- terminalDock->toggleViewAction()->setShortcut(Qt::Key_F4);
+ QAction* terminalAction = terminalDock->toggleViewAction();
+ terminalAction->setText(i18nc("@title:window Shell terminal", "Terminal"));
+ terminalAction->setShortcut(Qt::Key_F4);
+ terminalAction->setIcon(KIcon("terminal"));
actionCollection()->addAction("show_terminal_panel", terminalDock->toggleViewAction());
addDockWidget(Qt::BottomDockWidgetArea, terminalDock);
placesPanel->setModel(DolphinSettings::instance().placesModel());
placesPanel->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- placesDock->toggleViewAction()->setText(i18nc("@title:window", "Places"));
- placesDock->toggleViewAction()->setShortcut(Qt::Key_F9);
+ QAction* placesAction = placesDock->toggleViewAction();
+ placesAction->setText(i18nc("@title:window", "Places"));
+ placesAction->setShortcut(Qt::Key_F9);
+ placesAction->setIcon(KIcon("bookmarks"));
actionCollection()->addAction("show_places_panel", placesDock->toggleViewAction());
addDockWidget(Qt::LeftDockWidgetArea, placesDock);
name = url.fileName();
if (name.isEmpty()) {
name = url.protocol();
+ } else {
+ // Make sure that a '&' inside the directory name is displayed correctly
+ // and not misinterpreted as a keyboard shortcut in QTabBar::setTabText()
+ name.replace('&', "&&");
}
}
return name;