void DolphinMainWindow::dropUrls(const KUrl::List& urls,
const KUrl& destination)
{
+ kDebug() << "Source" << urls;
+ kDebug() << "Destination:" << destination;
+
Qt::DropAction action = Qt::CopyAction;
Qt::KeyboardModifiers modifier = QApplication::keyboardModifiers();
descending->setChecked(sortDescending);
}
-void DolphinMainWindow::slotAdditionalInfoChanged(KFileItemDelegate::AdditionalInformation info)
+void DolphinMainWindow::slotAdditionalInfoChanged(KFileItemDelegate::InformationList list)
{
QAction* action = 0;
+ KFileItemDelegate::Information info = list.isEmpty() ? KFileItemDelegate::NoInformation : list.first();
+
switch (info) {
case KFileItemDelegate::FriendlyMimeType:
action = actionCollection()->action("show_mime_info");
void DolphinMainWindow::properties()
{
const KFileItemList list = m_activeViewContainer->view()->selectedItems();
+
KPropertiesDialog dialog(list, this);
dialog.exec();
}
void DolphinMainWindow::toggleSplitView()
{
if (m_viewContainer[SecondaryView] == 0) {
- const int newWidth = (m_viewContainer[PrimaryView]->width() - m_splitter->handleWidth()) / 2;
// create a secondary view
+ const int newWidth = (m_viewContainer[PrimaryView]->width() - m_splitter->handleWidth()) / 2;
+
const DolphinView* view = m_viewContainer[PrimaryView]->view();
- m_viewContainer[SecondaryView] = new DolphinViewContainer(this,
- 0,
- view->rootUrl());
+ m_viewContainer[SecondaryView] = new DolphinViewContainer(this, 0, view->rootUrl());
connectViewSignals(SecondaryView);
m_splitter->addWidget(m_viewContainer[SecondaryView]);
m_splitter->setSizes(QList<int>() << newWidth << newWidth);
m_viewContainer[SecondaryView]->view()->reload();
m_viewContainer[SecondaryView]->setActive(false);
m_viewContainer[SecondaryView]->show();
- } else {
+ } else if (m_activeViewContainer == m_viewContainer[PrimaryView]) {
// remove secondary view
m_viewContainer[SecondaryView]->close();
m_viewContainer[SecondaryView]->deleteLater();
m_viewContainer[SecondaryView] = 0;
+ } else {
+ // The secondary view is active, hence from a users point of view
+ // the content of the secondary view should be moved to the primary view.
+ // From an implementation point of view it is more efficient to close
+ // the primary view and exchange the internal pointers afterwards.
+ m_viewContainer[PrimaryView]->close();
+ m_viewContainer[PrimaryView]->deleteLater();
+ m_viewContainer[PrimaryView] = m_viewContainer[SecondaryView];
+ m_viewContainer[SecondaryView] = 0;
}
setActiveViewContainer(m_viewContainer[PrimaryView]);
updatePasteAction();
updateGoActions();
- const bool split = generalSettings->splitView();
- if (split) {
+ if (generalSettings->splitView()) {
toggleSplitView();
}
- updateSplitAction(split);
updateViewActions();
if (firstRun) {
QAction* split = actionCollection()->addAction("split_view");
split->setShortcut(Qt::Key_F10);
- updateSplitAction(false);
+ updateSplitAction();
connect(split, SIGNAL(triggered()), this, SLOT(toggleSplitView()));
QAction* reload = actionCollection()->addAction("reload");
connect(adjustViewProps, SIGNAL(triggered()), this, SLOT(adjustViewProperties()));
// setup 'Go' menu
- KStandardAction::back(this, SLOT(goBack()), actionCollection());
+ KAction* backAction = KStandardAction::back(this, SLOT(goBack()), actionCollection());
+ KShortcut backShortcut = backAction->shortcut();
+ backShortcut.setAlternate(Qt::Key_Backspace);
+ backAction->setShortcut(backShortcut);
+
KStandardAction::forward(this, SLOT(goForward()), actionCollection());
KStandardAction::up(this, SLOT(goUp()), actionCollection());
KStandardAction::home(this, SLOT(goHome()), actionCollection());
infoDock->setWidget(infoWidget);
infoDock->toggleViewAction()->setText(i18nc("@title:window", "Information"));
- infoDock->toggleViewAction()->setShortcut(Qt::Key_F8);
+ infoDock->toggleViewAction()->setShortcut(Qt::Key_F11);
actionCollection()->addAction("show_info_panel", infoDock->toggleViewAction());
addDockWidget(Qt::RightDockWidgetArea, infoDock);
treeViewDock->setWidget(treeWidget);
treeViewDock->toggleViewAction()->setText(i18nc("@title:window", "Folders"));
- treeViewDock->toggleViewAction()->setShortcut(Qt::Key_F9);
+ treeViewDock->toggleViewAction()->setShortcut(Qt::Key_F7);
actionCollection()->addAction("show_folders_panel", treeViewDock->toggleViewAction());
addDockWidget(Qt::LeftDockWidgetArea, treeViewDock);
terminalDock->toggleViewAction()->setShortcut(Qt::Key_F4);
actionCollection()->addAction("show_terminal_panel", terminalDock->toggleViewAction());
- addDockWidget(Qt::RightDockWidgetArea, terminalDock);
+ addDockWidget(Qt::BottomDockWidgetArea, terminalDock);
connect(this, SIGNAL(urlChanged(KUrl)),
terminalWidget, SLOT(setUrl(KUrl)));
listView->setModel(DolphinSettings::instance().placesModel());
placesDock->toggleViewAction()->setText(i18nc("@title:window", "Places"));
- placesDock->toggleViewAction()->setShortcut(Qt::Key_F7);
+ placesDock->toggleViewAction()->setShortcut(Qt::Key_F9);
actionCollection()->addAction("show_places_panel", placesDock->toggleViewAction());
addDockWidget(Qt::LeftDockWidgetArea, placesDock);
KFileItemList::const_iterator it = list.begin();
const KFileItemList::const_iterator end = list.end();
while (it != end) {
- KFileItem* item = *it;
- const KUrl& url = item->url();
+ const KUrl& url = (*it).url();
// only enable the 'Move to Trash' action for local files
if (!url.isLocalFile()) {
enableMoveToTrash = false;
static_cast<KToggleAction*>(actionCollection()->action("show_hidden_files"));
showHiddenFilesAction->setChecked(view->showHiddenFiles());
- updateSplitAction(m_viewContainer[SecondaryView] != 0);
+ updateSplitAction();
KToggleAction* editableLocactionAction =
static_cast<KToggleAction*>(actionCollection()->action("editable_location"));
this, SLOT(slotSortingChanged(DolphinView::Sorting)));
connect(view, SIGNAL(sortOrderChanged(Qt::SortOrder)),
this, SLOT(slotSortOrderChanged(Qt::SortOrder)));
- connect(view, SIGNAL(additionalInfoChanged(KFileItemDelegate::AdditionalInformation)),
- this, SLOT(slotAdditionalInfoChanged(KFileItemDelegate::AdditionalInformation)));
+ connect(view, SIGNAL(additionalInfoChanged(KFileItemDelegate::InformationList)),
+ this, SLOT(slotAdditionalInfoChanged(KFileItemDelegate::InformationList)));
connect(view, SIGNAL(selectionChanged(KFileItemList)),
this, SLOT(slotSelectionChanged(KFileItemList)));
connect(view, SIGNAL(requestItemInfo(KFileItem)),
this, SLOT(slotHistoryChanged()));
}
-void DolphinMainWindow::updateSplitAction(bool isSplit)
+void DolphinMainWindow::updateSplitAction()
{
QAction* splitAction = actionCollection()->action("split_view");
- if (isSplit) {
- splitAction->setText(i18nc("@action:intoolbar Join views", "Join"));
- splitAction->setIcon(KIcon("fileview-join"));
+ if (m_viewContainer[SecondaryView] != 0) {
+ if (m_activeViewContainer == m_viewContainer[PrimaryView]) {
+ splitAction->setText(i18nc("@action:intoolbar Close right view", "Close"));
+ splitAction->setIcon(KIcon("fileview-close-right"));
+ } else {
+ splitAction->setText(i18nc("@action:intoolbar Close left view", "Close"));
+ splitAction->setIcon(KIcon("fileview-close-left"));
+ }
} else {
splitAction->setText(i18nc("@action:intoolbar Split view", "Split"));
splitAction->setIcon(KIcon("fileview-split"));