X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/6b42e7ba3b87af93d17f714d05ff2ddb09d13519..ec00f379dc42b00a64ab1af25bb4bb1a06bd7449:/src/dolphinmainwindow.cpp
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index ddf7b19b1..db79f4165 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -176,17 +176,20 @@ void DolphinMainWindow::dropUrls(const KUrl::List& urls,
QString seq = QKeySequence(Qt::ShiftModifier).toString();
seq.chop(1); // chop superfluous '+'
QAction* moveAction = popup.addAction(KIcon("goto-page"),
- i18nc("@action:inmenu", "&Move Here") + '\t' + seq);
+ i18nc("@action:inmenu",
+ "&Move Here\t%1", seq));
seq = QKeySequence(Qt::ControlModifier).toString();
seq.chop(1);
QAction* copyAction = popup.addAction(KIcon("edit-copy"),
- i18nc("@action:inmenu", "&Copy Here") + '\t' + seq);
+ i18nc("@action:inmenu",
+ "&Copy Here\t%1", seq));
seq = QKeySequence(Qt::ControlModifier + Qt::ShiftModifier).toString();
seq.chop(1);
QAction* linkAction = popup.addAction(KIcon("www"),
- i18nc("@action:inmenu", "&Link Here") + '\t' + seq);
+ i18nc("@action:inmenu",
+ "&Link Here\t%1", seq));
popup.addSeparator();
popup.addAction(KIcon("process-stop"), i18nc("@action:inmenu", "Cancel"));
@@ -234,7 +237,7 @@ void DolphinMainWindow::changeUrl(const KUrl& url)
}
}
-void DolphinMainWindow::changeSelection(const KFileItemList& selection)
+void DolphinMainWindow::changeSelection(const QList& selection)
{
activeViewContainer()->view()->changeSelection(selection);
}
@@ -273,32 +276,32 @@ void DolphinMainWindow::slotSortingChanged(DolphinView::Sorting sorting)
QAction* action = 0;
switch (sorting) {
case DolphinView::SortByName:
- action = actionCollection()->action("by_name");
+ action = actionCollection()->action("sort_by_name");
break;
case DolphinView::SortBySize:
- action = actionCollection()->action("by_size");
+ action = actionCollection()->action("sort_by_size");
break;
case DolphinView::SortByDate:
- action = actionCollection()->action("by_date");
+ action = actionCollection()->action("sort_by_date");
break;
case DolphinView::SortByPermissions:
- action = actionCollection()->action("by_permissions");
+ action = actionCollection()->action("sort_by_permissions");
break;
case DolphinView::SortByOwner:
- action = actionCollection()->action("by_owner");
+ action = actionCollection()->action("sort_by_owner");
break;
case DolphinView::SortByGroup:
- action = actionCollection()->action("by_group");
+ action = actionCollection()->action("sort_by_group");
break;
case DolphinView::SortByType:
- action = actionCollection()->action("by_type");
+ action = actionCollection()->action("sort_by_type");
break;
#ifdef HAVE_NEPOMUK
case DolphinView::SortByRating:
- action = actionCollection()->action("by_rating");
+ action = actionCollection()->action("sort_by_rating");
break;
case DolphinView::SortByTags:
- action = actionCollection()->action("by_tags");
+ action = actionCollection()->action("sort_by_tags");
break;
#endif
default:
@@ -348,7 +351,7 @@ void DolphinMainWindow::slotAdditionalInfoChanged(KFileItemDelegate::AdditionalI
}
}
-void DolphinMainWindow::slotSelectionChanged(const KFileItemList& selection)
+void DolphinMainWindow::slotSelectionChanged(const QList& selection)
{
updateEditActions();
@@ -366,9 +369,9 @@ void DolphinMainWindow::slotSelectionChanged(const KFileItemList& selection)
emit selectionChanged(selection);
}
-void DolphinMainWindow::slotRequestItemInfo(const KUrl& url)
+void DolphinMainWindow::slotRequestItemInfo(const KFileItem& item)
{
- emit requestItemInfo(url);
+ emit requestItemInfo(item);
}
void DolphinMainWindow::slotHistoryChanged()
@@ -487,8 +490,14 @@ void DolphinMainWindow::deleteItems()
void DolphinMainWindow::properties()
{
- const KFileItemList list = m_activeViewContainer->view()->selectedItems();
- KPropertiesDialog dialog(list, this);
+ QList list = m_activeViewContainer->view()->selectedItems();
+ // ### KPropertiesDialog still uses pointer-based KFileItemList
+ KFileItemList lst;
+ // Can't be a const_iterator :(
+ for ( QList::iterator it = list.begin(), end = list.end() ; it != end ; ++it ) {
+ lst << & *it; // ugly!
+ }
+ KPropertiesDialog dialog(lst, this);
dialog.exec();
}
@@ -649,7 +658,7 @@ void DolphinMainWindow::updatePasteAction()
if (!urls.isEmpty()) {
pasteAction->setEnabled(true);
- pasteAction->setText(i18np("Paste One File", "Paste %1 Files", urls.count()));
+ pasteAction->setText(i18ncp("@action:inmenu", "Paste One File", "Paste %1 Files", urls.count()));
} else {
pasteAction->setEnabled(false);
pasteAction->setText(i18nc("@action:inmenu", "Paste"));
@@ -793,23 +802,31 @@ void DolphinMainWindow::showDateInfo()
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() << 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]);
@@ -1025,11 +1042,9 @@ void DolphinMainWindow::init()
updatePasteAction();
updateGoActions();
- const bool split = generalSettings->splitView();
- if (split) {
+ if (generalSettings->splitView()) {
toggleSplitView();
}
- updateSplitAction(split);
updateViewActions();
if (firstRun) {
@@ -1163,39 +1178,39 @@ void DolphinMainWindow::setupActions()
viewModeGroup->addAction(detailsView);
viewModeGroup->addAction(columnView);
- KToggleAction* sortByName = actionCollection()->add("by_name");
- sortByName->setText(i18nc("@action:inmenu Sort", "By Name"));
+ KToggleAction* sortByName = actionCollection()->add("sort_by_name");
+ sortByName->setText(i18nc("@action:inmenu Sort By", "Name"));
connect(sortByName, SIGNAL(triggered()), this, SLOT(sortByName()));
- KToggleAction* sortBySize = actionCollection()->add("by_size");
- sortBySize->setText(i18nc("@action:inmenu Sort", "By Size"));
+ KToggleAction* sortBySize = actionCollection()->add("sort_by_size");
+ sortBySize->setText(i18nc("@action:inmenu Sort By", "Size"));
connect(sortBySize, SIGNAL(triggered()), this, SLOT(sortBySize()));
- KToggleAction* sortByDate = actionCollection()->add("by_date");
- sortByDate->setText(i18nc("@action:inmenu Sort", "By Date"));
+ KToggleAction* sortByDate = actionCollection()->add("sort_by_date");
+ sortByDate->setText(i18nc("@action:inmenu Sort By", "Date"));
connect(sortByDate, SIGNAL(triggered()), this, SLOT(sortByDate()));
- KToggleAction* sortByPermissions = actionCollection()->add("by_permissions");
- sortByPermissions->setText(i18nc("@action:inmenu Sort", "By Permissions"));
+ KToggleAction* sortByPermissions = actionCollection()->add("sort_by_permissions");
+ sortByPermissions->setText(i18nc("@action:inmenu Sort By", "Permissions"));
connect(sortByPermissions, SIGNAL(triggered()), this, SLOT(sortByPermissions()));
- KToggleAction* sortByOwner = actionCollection()->add("by_owner");
- sortByOwner->setText(i18nc("@action:inmenu Sort", "By Owner"));
+ KToggleAction* sortByOwner = actionCollection()->add("sort_by_owner");
+ sortByOwner->setText(i18nc("@action:inmenu Sort By", "Owner"));
connect(sortByOwner, SIGNAL(triggered()), this, SLOT(sortByOwner()));
- KToggleAction* sortByGroup = actionCollection()->add("by_group");
- sortByGroup->setText(i18nc("@action:inmenu Sort", "By Group"));
+ KToggleAction* sortByGroup = actionCollection()->add("sort_by_group");
+ sortByGroup->setText(i18nc("@action:inmenu Sort By", "Group"));
connect(sortByGroup, SIGNAL(triggered()), this, SLOT(sortByGroup()));
- KToggleAction* sortByType = actionCollection()->add("by_type");
- sortByType->setText(i18nc("@action:inmenu Sort", "By Type"));
+ KToggleAction* sortByType = actionCollection()->add("sort_by_type");
+ sortByType->setText(i18nc("@action:inmenu Sort By", "Type"));
connect(sortByType, SIGNAL(triggered()), this, SLOT(sortByType()));
- KToggleAction* sortByRating = actionCollection()->add("by_rating");
- sortByRating->setText(i18nc("@action:inmenu Sort", "By Rating"));
+ KToggleAction* sortByRating = actionCollection()->add("sort_by_rating");
+ sortByRating->setText(i18nc("@action:inmenu Sort By", "Rating"));
- KToggleAction* sortByTags = actionCollection()->add("by_tags");
- sortByTags->setText(i18nc("@action:inmenu Sort", "By Tags"));
+ KToggleAction* sortByTags = actionCollection()->add("sort_by_tags");
+ sortByTags->setText(i18nc("@action:inmenu Sort By", "Tags"));
#ifdef HAVE_NEPOMUK
if (MetaDataWidget::metaDataAvailable()) {
@@ -1264,7 +1279,7 @@ void DolphinMainWindow::setupActions()
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");
@@ -1333,15 +1348,16 @@ void DolphinMainWindow::setupDockWidgets()
infoDock->setWidget(infoWidget);
infoDock->toggleViewAction()->setText(i18nc("@title:window", "Information"));
+ infoDock->toggleViewAction()->setShortcut(Qt::Key_F8);
actionCollection()->addAction("show_info_panel", infoDock->toggleViewAction());
addDockWidget(Qt::RightDockWidgetArea, infoDock);
connect(this, SIGNAL(urlChanged(KUrl)),
infoWidget, SLOT(setUrl(KUrl)));
- connect(this, SIGNAL(selectionChanged(KFileItemList)),
- infoWidget, SLOT(setSelection(KFileItemList)));
- connect(this, SIGNAL(requestItemInfo(KUrl)),
- infoWidget, SLOT(requestDelayedItemInfo(KUrl)));
+ connect(this, SIGNAL(selectionChanged(QList)),
+ infoWidget, SLOT(setSelection(QList)));
+ connect(this, SIGNAL(requestItemInfo(KFileItem)),
+ infoWidget, SLOT(requestDelayedItemInfo(KFileItem)));
// setup "Tree View"
QDockWidget* treeViewDock = new QDockWidget(i18nc("@title:window", "Folders"));
@@ -1351,6 +1367,7 @@ void DolphinMainWindow::setupDockWidgets()
treeViewDock->setWidget(treeWidget);
treeViewDock->toggleViewAction()->setText(i18nc("@title:window", "Folders"));
+ treeViewDock->toggleViewAction()->setShortcut(Qt::Key_F7);
actionCollection()->addAction("show_folders_panel", treeViewDock->toggleViewAction());
addDockWidget(Qt::LeftDockWidgetArea, treeViewDock);
@@ -1358,8 +1375,8 @@ void DolphinMainWindow::setupDockWidgets()
treeWidget, SLOT(setUrl(KUrl)));
connect(treeWidget, SIGNAL(changeUrl(KUrl)),
this, SLOT(changeUrl(KUrl)));
- connect(treeWidget, SIGNAL(changeSelection(KFileItemList)),
- this, SLOT(changeSelection(KFileItemList)));
+ connect(treeWidget, SIGNAL(changeSelection(QList)),
+ this, SLOT(changeSelection(QList)));
connect(treeWidget, SIGNAL(urlsDropped(KUrl::List, KUrl)),
this, SLOT(dropUrls(KUrl::List, KUrl)));
@@ -1371,9 +1388,10 @@ void DolphinMainWindow::setupDockWidgets()
terminalDock->setWidget(terminalWidget);
terminalDock->toggleViewAction()->setText(i18nc("@title:window", "Terminal"));
+ 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)));
@@ -1392,6 +1410,7 @@ void DolphinMainWindow::setupDockWidgets()
listView->setModel(DolphinSettings::instance().placesModel());
placesDock->toggleViewAction()->setText(i18nc("@title:window", "Places"));
+ placesDock->toggleViewAction()->setShortcut(Qt::Key_F9);
actionCollection()->addAction("show_places_panel", placesDock->toggleViewAction());
addDockWidget(Qt::LeftDockWidgetArea, placesDock);
@@ -1419,7 +1438,7 @@ void DolphinMainWindow::updateHistory()
void DolphinMainWindow::updateEditActions()
{
- const KFileItemList list = m_activeViewContainer->view()->selectedItems();
+ const QList list = m_activeViewContainer->view()->selectedItems();
if (list.isEmpty()) {
stateChanged("has_no_selection");
} else {
@@ -1432,11 +1451,10 @@ void DolphinMainWindow::updateEditActions()
bool enableMoveToTrash = true;
- KFileItemList::const_iterator it = list.begin();
- const KFileItemList::const_iterator end = list.end();
+ QList::const_iterator it = list.begin();
+ const QList::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;
@@ -1500,7 +1518,7 @@ void DolphinMainWindow::updateViewActions()
static_cast(actionCollection()->action("show_hidden_files"));
showHiddenFilesAction->setChecked(view->showHiddenFiles());
- updateSplitAction(m_viewContainer[SecondaryView] != 0);
+ updateSplitAction();
KToggleAction* editableLocactionAction =
static_cast(actionCollection()->action("editable_location"));
@@ -1559,10 +1577,10 @@ void DolphinMainWindow::connectViewSignals(int viewIndex)
this, SLOT(slotSortOrderChanged(Qt::SortOrder)));
connect(view, SIGNAL(additionalInfoChanged(KFileItemDelegate::AdditionalInformation)),
this, SLOT(slotAdditionalInfoChanged(KFileItemDelegate::AdditionalInformation)));
- connect(view, SIGNAL(selectionChanged(KFileItemList)),
- this, SLOT(slotSelectionChanged(KFileItemList)));
- connect(view, SIGNAL(requestItemInfo(KUrl)),
- this, SLOT(slotRequestItemInfo(KUrl)));
+ connect(view, SIGNAL(selectionChanged(QList)),
+ this, SLOT(slotSelectionChanged(QList)));
+ connect(view, SIGNAL(requestItemInfo(KFileItem)),
+ this, SLOT(slotRequestItemInfo(KFileItem)));
connect(view, SIGNAL(activated()),
this, SLOT(toggleActiveView()));
@@ -1573,12 +1591,17 @@ void DolphinMainWindow::connectViewSignals(int viewIndex)
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"));