#include "dolphinmainwindow.h"
-#include <config-kmetadata.h>
+#include "config-nepomuk.h"
#include "dolphinapplication.h"
#include "dolphinnewmenu.h"
#include "dolphinsettings.h"
#include "dolphinsettingsdialog.h"
#include "dolphinstatusbar.h"
+#include "dolphinviewcontainer.h"
#include "infosidebarpage.h"
#include "metadatawidget.h"
#include "mainwindowadaptor.h"
KXmlGuiWindow(0),
m_newMenu(0),
m_splitter(0),
- m_activeView(0),
+ m_activeViewContainer(0),
m_id(id)
{
setObjectName("Dolphin");
- m_view[PrimaryIdx] = 0;
- m_view[SecondaryIdx] = 0;
+ m_viewContainer[PrimaryView] = 0;
+ m_viewContainer[SecondaryView] = 0;
new MainWindowAdaptor(this);
QDBusConnection::sessionBus().registerObject(QString("/dolphin/MainWindow%1").arg(m_id), this);
this, SLOT(slotUndoAvailable(bool)));
connect(undoManager, SIGNAL(undoTextChanged(const QString&)),
this, SLOT(slotUndoTextChanged(const QString&)));
+ connect(DolphinSettings::instance().placesModel(), SIGNAL(errorMessage(const QString&)),
+ this, SLOT(slotHandlePlacesError(const QString&)));
}
DolphinMainWindow::~DolphinMainWindow()
DolphinApplication::app()->removeMainWindow(this);
}
-void DolphinMainWindow::setActiveView(DolphinView* view)
+void DolphinMainWindow::toggleViews()
{
- Q_ASSERT((view == m_view[PrimaryIdx]) || (view == m_view[SecondaryIdx]));
- if (m_activeView == view) {
+ if (m_viewContainer[SecondaryView] == 0) {
return;
}
- m_activeView = view;
+ // move secondary view from the last position of the splitter
+ // to the first position
+ m_splitter->insertWidget(0, m_viewContainer[SecondaryView]);
- updateHistory();
- updateEditActions();
- updateViewActions();
- updateGoActions();
+ DolphinViewContainer* container = m_viewContainer[PrimaryView];
+ m_viewContainer[PrimaryView] = m_viewContainer[SecondaryView];
+ m_viewContainer[SecondaryView] = container;
+}
- setCaption(m_activeView->url().fileName());
+void DolphinMainWindow::rename(const KUrl& oldUrl, const KUrl& newUrl)
+{
+ clearStatusBar();
+ KonqOperations::rename(this, oldUrl, newUrl);
+ m_undoCommandTypes.append(KonqUndoManager::RENAME);
+}
- emit activeViewChanged();
+void DolphinMainWindow::refreshViews()
+{
+ Q_ASSERT(m_viewContainer[PrimaryView] != 0);
+
+ // remember the current active view, as because of
+ // the refreshing the active view might change to
+ // the secondary view
+ DolphinViewContainer* activeViewContainer = m_activeViewContainer;
+
+ m_viewContainer[PrimaryView]->view()->refresh();
+ if (m_viewContainer[SecondaryView] != 0) {
+ m_viewContainer[SecondaryView]->view()->refresh();
+ }
+
+ setActiveViewContainer(activeViewContainer);
}
void DolphinMainWindow::dropUrls(const KUrl::List& urls,
}
}
-void DolphinMainWindow::rename(const KUrl& oldUrl, const KUrl& newUrl)
-{
- clearStatusBar();
- KonqOperations::rename(this, oldUrl, newUrl);
- m_undoCommandTypes.append(KonqUndoManager::RENAME);
-}
-
-void DolphinMainWindow::refreshViews()
-{
- Q_ASSERT(m_view[PrimaryIdx] != 0);
-
- // remember the current active view, as because of
- // the refreshing the active view might change to
- // the secondary view
- DolphinView* activeView = m_activeView;
-
- m_view[PrimaryIdx]->refresh();
- if (m_view[SecondaryIdx] != 0) {
- m_view[SecondaryIdx]->refresh();
- }
-
- setActiveView(activeView);
-}
-
void DolphinMainWindow::changeUrl(const KUrl& url)
{
- if (activeView() != 0) {
- activeView()->setUrl(url);
+ DolphinViewContainer* view = activeViewContainer();
+ if (view != 0) {
+ view->setUrl(url);
updateEditActions();
updateViewActions();
updateGoActions();
void DolphinMainWindow::changeSelection(const KFileItemList& selection)
{
- activeView()->changeSelection(selection);
+ activeViewContainer()->view()->changeSelection(selection);
}
void DolphinMainWindow::slotViewModeChanged()
{
KToggleAction* showHiddenFilesAction =
static_cast<KToggleAction*>(actionCollection()->action("show_hidden_files"));
- showHiddenFilesAction->setChecked(m_activeView->showHiddenFiles());
+ const DolphinView* view = m_activeViewContainer->view();
+ showHiddenFilesAction->setChecked(view->showHiddenFiles());
}
void DolphinMainWindow::slotCategorizedSortingChanged()
{
- KToggleAction* categorizedSortingAction =
- static_cast<KToggleAction*>(actionCollection()->action("categorized"));
- categorizedSortingAction->setChecked(m_activeView->categorizedSorting());
- categorizedSortingAction->setEnabled(m_activeView->supportsCategorizedSorting());
+ KToggleAction* showInGroupsAction =
+ static_cast<KToggleAction*>(actionCollection()->action("show_in_groups"));
+ const DolphinView* view = m_activeViewContainer->view();
+ showInGroupsAction->setChecked(view->categorizedSorting());
+ showInGroupsAction->setEnabled(view->supportsCategorizedSorting());
}
void DolphinMainWindow::slotSortingChanged(DolphinView::Sorting sorting)
QActionGroup* group = toggleAction->actionGroup();
Q_ASSERT(group != 0);
- group->setEnabled(m_activeView->mode() == DolphinView::IconsView);
+ const DolphinView* view = m_activeViewContainer->view();
+ group->setEnabled(view->mode() == DolphinView::IconsView);
}
}
{
updateEditActions();
- Q_ASSERT(m_view[PrimaryIdx] != 0);
- int selectedUrlsCount = m_view[PrimaryIdx]->selectedUrls().count();
- if (m_view[SecondaryIdx] != 0) {
- selectedUrlsCount += m_view[SecondaryIdx]->selectedUrls().count();
+ Q_ASSERT(m_viewContainer[PrimaryView] != 0);
+ int selectedUrlsCount = m_viewContainer[PrimaryView]->view()->selectedUrls().count();
+ if (m_viewContainer[SecondaryView] != 0) {
+ selectedUrlsCount += m_viewContainer[SecondaryView]->view()->selectedUrls().count();
}
QAction* compareFilesAction = actionCollection()->action("compare_files");
compareFilesAction->setEnabled(selectedUrlsCount == 2);
- m_activeView->updateStatusBar();
+ m_activeViewContainer->updateStatusBar();
emit selectionChanged(selection);
}
DolphinApplication::app()->createMainWindow()->show();
}
+void DolphinMainWindow::toggleActiveView()
+{
+ if (m_activeViewContainer == m_viewContainer[PrimaryView]) {
+ setActiveViewContainer(m_viewContainer[SecondaryView]);
+ } else {
+ setActiveViewContainer(m_viewContainer[PrimaryView]);
+ }
+}
+
void DolphinMainWindow::closeEvent(QCloseEvent* event)
{
DolphinSettings& settings = DolphinSettings::instance();
void DolphinMainWindow::saveProperties(KConfig* config)
{
KConfigGroup primaryView = config->group("Primary view");
- primaryView.writeEntry("Url", m_view[PrimaryIdx]->url().url());
- primaryView.writeEntry("Editable Url", m_view[PrimaryIdx]->isUrlEditable());
- if (m_view[SecondaryIdx] != 0) {
+ primaryView.writeEntry("Url", m_viewContainer[PrimaryView]->url().url());
+ primaryView.writeEntry("Editable Url", m_viewContainer[PrimaryView]->isUrlEditable());
+ if (m_viewContainer[SecondaryView] != 0) {
KConfigGroup secondaryView = config->group("Secondary view");
- secondaryView.writeEntry("Url", m_view[SecondaryIdx]->url().url());
- secondaryView.writeEntry("Editable Url", m_view[SecondaryIdx]->isUrlEditable());
+ secondaryView.writeEntry("Url", m_viewContainer[SecondaryView]->url().url());
+ secondaryView.writeEntry("Editable Url", m_viewContainer[SecondaryView]->isUrlEditable());
}
}
void DolphinMainWindow::readProperties(KConfig* config)
{
- const KConfigGroup primaryView = config->group("Primary view");
- m_view[PrimaryIdx]->setUrl(primaryView.readEntry("Url"));
- m_view[PrimaryIdx]->setUrlEditable(primaryView.readEntry("Editable Url", false));
+ const KConfigGroup primaryViewGroup = config->group("Primary view");
+ m_viewContainer[PrimaryView]->setUrl(primaryViewGroup.readEntry("Url"));
+ bool editable = primaryViewGroup.readEntry("Editable Url", false);
+ m_viewContainer[PrimaryView]->urlNavigator()->setUrlEditable(editable);
+
if (config->hasGroup("Secondary view")) {
- const KConfigGroup secondaryView = config->group("Secondary view");
- if (m_view[SecondaryIdx] == 0) {
+ const KConfigGroup secondaryViewGroup = config->group("Secondary view");
+ if (m_viewContainer[PrimaryView] == 0) {
toggleSplitView();
}
- m_view[SecondaryIdx]->setUrl(secondaryView.readEntry("Url"));
- m_view[SecondaryIdx]->setUrlEditable(secondaryView.readEntry("Editable Url", false));
- } else if (m_view[SecondaryIdx] != 0) {
+ m_viewContainer[PrimaryView]->setUrl(secondaryViewGroup.readEntry("Url"));
+ editable = secondaryViewGroup.readEntry("Editable Url", false);
+ m_viewContainer[PrimaryView]->urlNavigator()->setUrlEditable(editable);
+ } else if (m_viewContainer[SecondaryView] != 0) {
toggleSplitView();
}
}
void DolphinMainWindow::updateNewMenu()
{
m_newMenu->slotCheckUpToDate();
- m_newMenu->setPopupFiles(activeView()->url());
+ m_newMenu->setPopupFiles(activeViewContainer()->url());
}
void DolphinMainWindow::rename()
{
clearStatusBar();
- m_activeView->renameSelectedItems();
+ m_activeViewContainer->renameSelectedItems();
}
void DolphinMainWindow::moveToTrash()
{
clearStatusBar();
- const KUrl::List selectedUrls = m_activeView->selectedUrls();
+ const KUrl::List selectedUrls = m_activeViewContainer->view()->selectedUrls();
KonqOperations::del(this, KonqOperations::TRASH, selectedUrls);
m_undoCommandTypes.append(KonqUndoManager::TRASH);
}
{
clearStatusBar();
- const KUrl::List list = m_activeView->selectedUrls();
+ const KUrl::List list = m_activeViewContainer->view()->selectedUrls();
const bool del = KonqOperations::askDeleteConfirmation(list,
KonqOperations::DEL,
KonqOperations::DEFAULT_CONFIRMATION,
void DolphinMainWindow::properties()
{
- const KFileItemList list = m_activeView->selectedItems();
+ const KFileItemList list = m_activeViewContainer->view()->selectedItems();
KPropertiesDialog dialog(list, this);
dialog.exec();
}
close();
}
+void DolphinMainWindow::slotHandlePlacesError(const QString &message)
+{
+ if (!message.isEmpty()) {
+ DolphinStatusBar* statusBar = m_activeViewContainer->statusBar();
+ statusBar->setMessage(message, DolphinStatusBar::Error);
+ }
+}
+
void DolphinMainWindow::slotHandleJobError(KJob* job)
{
if (job->error() != 0) {
- DolphinStatusBar* statusBar = m_activeView->statusBar();
+ DolphinStatusBar* statusBar = m_activeViewContainer->statusBar();
statusBar->setMessage(job->errorString(),
DolphinStatusBar::Error);
}
void DolphinMainWindow::slotDeleteFileFinished(KJob* job)
{
if (job->error() == 0) {
- DolphinStatusBar* statusBar = m_activeView->statusBar();
+ DolphinStatusBar* statusBar = m_activeViewContainer->statusBar();
statusBar->setMessage(i18n("Delete operation completed."),
DolphinStatusBar::OperationCompleted);
}
if (available && (m_undoCommandTypes.count() > 0)) {
const KonqUndoManager::CommandType command = m_undoCommandTypes.takeFirst();
- DolphinStatusBar* statusBar = m_activeView->statusBar();
+ DolphinStatusBar* statusBar = m_activeViewContainer->statusBar();
switch (command) {
case KonqUndoManager::COPY:
statusBar->setMessage(i18n("Copy operation completed."),
void DolphinMainWindow::cut()
{
QMimeData* mimeData = new QMimeData();
- const KUrl::List kdeUrls = m_activeView->selectedUrls();
+ const KUrl::List kdeUrls = m_activeViewContainer->view()->selectedUrls();
const KUrl::List mostLocalUrls;
KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, true);
QApplication::clipboard()->setMimeData(mimeData);
void DolphinMainWindow::copy()
{
QMimeData* mimeData = new QMimeData();
- const KUrl::List kdeUrls = m_activeView->selectedUrls();
+ const KUrl::List kdeUrls = m_activeViewContainer->view()->selectedUrls();
const KUrl::List mostLocalUrls;
KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, false);
const KUrl::List sourceUrls = KUrl::List::fromMimeData(mimeData);
// per default the pasting is done into the current Url of the view
- KUrl destUrl(m_activeView->url());
+ KUrl destUrl(m_activeViewContainer->url());
// check whether the pasting should be done into a selected directory
- KUrl::List selectedUrls = m_activeView->selectedUrls();
+ KUrl::List selectedUrls = m_activeViewContainer->view()->selectedUrls();
if (selectedUrls.count() == 1) {
const KFileItem fileItem(S_IFDIR,
KFileItem::Unknown,
}
if (pasteAction->isEnabled()) {
- KUrl::List urls = m_activeView->selectedUrls();
+ KUrl::List urls = m_activeViewContainer->view()->selectedUrls();
const uint count = urls.count();
if (count > 1) {
// pasting should not be allowed when more than one file
// Only one file is selected. Pasting is only allowed if this
// file is a directory.
// TODO: this doesn't work with remote protocols; instead we need a
- // m_activeView->selectedFileItems() to get the real KFileItems
+ // m_activeViewContainer->selectedFileItems() to get the real KFileItems
const KFileItem fileItem(S_IFDIR,
KFileItem::Unknown,
urls.first(),
void DolphinMainWindow::selectAll()
{
clearStatusBar();
- m_activeView->selectAll();
+ m_activeViewContainer->view()->selectAll();
}
void DolphinMainWindow::invertSelection()
{
clearStatusBar();
- m_activeView->invertSelection();
+ m_activeViewContainer->view()->invertSelection();
}
void DolphinMainWindow::setIconsView()
{
- m_activeView->setMode(DolphinView::IconsView);
+ m_activeViewContainer->view()->setMode(DolphinView::IconsView);
}
void DolphinMainWindow::setDetailsView()
{
- m_activeView->setMode(DolphinView::DetailsView);
+ m_activeViewContainer->view()->setMode(DolphinView::DetailsView);
}
void DolphinMainWindow::setColumnView()
{
- m_activeView->setMode(DolphinView::ColumnView);
+ m_activeViewContainer->view()->setMode(DolphinView::ColumnView);
}
void DolphinMainWindow::sortByName()
{
- m_activeView->setSorting(DolphinView::SortByName);
+ m_activeViewContainer->view()->setSorting(DolphinView::SortByName);
}
void DolphinMainWindow::sortBySize()
{
- m_activeView->setSorting(DolphinView::SortBySize);
+ m_activeViewContainer->view()->setSorting(DolphinView::SortBySize);
}
void DolphinMainWindow::sortByDate()
{
- m_activeView->setSorting(DolphinView::SortByDate);
+ m_activeViewContainer->view()->setSorting(DolphinView::SortByDate);
}
void DolphinMainWindow::sortByPermissions()
{
- m_activeView->setSorting(DolphinView::SortByPermissions);
+ m_activeViewContainer->view()->setSorting(DolphinView::SortByPermissions);
}
void DolphinMainWindow::sortByOwner()
{
- m_activeView->setSorting(DolphinView::SortByOwner);
+ m_activeViewContainer->view()->setSorting(DolphinView::SortByOwner);
}
void DolphinMainWindow::sortByGroup()
{
- m_activeView->setSorting(DolphinView::SortByGroup);
+ m_activeViewContainer->view()->setSorting(DolphinView::SortByGroup);
}
void DolphinMainWindow::sortByType()
{
- m_activeView->setSorting(DolphinView::SortByType);
+ m_activeViewContainer->view()->setSorting(DolphinView::SortByType);
}
void DolphinMainWindow::toggleSortOrder()
{
- const Qt::SortOrder order = (m_activeView->sortOrder() == Qt::AscendingOrder) ?
+ DolphinView* view = m_activeViewContainer->view();
+ const Qt::SortOrder order = (view->sortOrder() == Qt::AscendingOrder) ?
Qt::DescendingOrder :
Qt::AscendingOrder;
- m_activeView->setSortOrder(order);
+ view->setSortOrder(order);
}
void DolphinMainWindow::toggleSortCategorization()
{
- const bool categorizedSorting = m_activeView->categorizedSorting();
- m_activeView->setCategorizedSorting(!categorizedSorting);
+ DolphinView* view = m_activeViewContainer->view();
+ const bool categorizedSorting = view->categorizedSorting();
+ view->setCategorizedSorting(!categorizedSorting);
}
void DolphinMainWindow::clearInfo()
{
- m_activeView->setAdditionalInfo(KFileItemDelegate::NoInformation);
+ m_activeViewContainer->view()->setAdditionalInfo(KFileItemDelegate::NoInformation);
}
void DolphinMainWindow::showMimeInfo()
{
clearStatusBar();
- m_activeView->setAdditionalInfo(KFileItemDelegate::FriendlyMimeType);
+ m_activeViewContainer->view()->setAdditionalInfo(KFileItemDelegate::FriendlyMimeType);
}
void DolphinMainWindow::showSizeInfo()
{
clearStatusBar();
- m_activeView->setAdditionalInfo(KFileItemDelegate::Size);
+ m_activeViewContainer->view()->setAdditionalInfo(KFileItemDelegate::Size);
}
void DolphinMainWindow::showDateInfo()
{
clearStatusBar();
- m_activeView->setAdditionalInfo(KFileItemDelegate::ModificationTime);
+ m_activeViewContainer->view()->setAdditionalInfo(KFileItemDelegate::ModificationTime);
}
void DolphinMainWindow::toggleSplitView()
{
- if (m_view[SecondaryIdx] == 0) {
- const int newWidth = (m_view[PrimaryIdx]->width() - m_splitter->handleWidth()) / 2;
+ if (m_viewContainer[SecondaryView] == 0) {
+ const int newWidth = (m_viewContainer[PrimaryView]->width() - m_splitter->handleWidth()) / 2;
// create a secondary view
- m_view[SecondaryIdx] = new DolphinView(this,
- 0,
- m_view[PrimaryIdx]->rootUrl(),
- m_view[PrimaryIdx]->mode(),
- m_view[PrimaryIdx]->showHiddenFiles());
- connectViewSignals(SecondaryIdx);
- m_splitter->addWidget(m_view[SecondaryIdx]);
+ const DolphinView* view = m_viewContainer[PrimaryView]->view();
+ 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_view[SecondaryIdx]->reload();
- m_view[SecondaryIdx]->show();
+ m_viewContainer[SecondaryView]->view()->reload();
+ m_viewContainer[SecondaryView]->setActive(false);
+ m_viewContainer[SecondaryView]->show();
} else {
// remove secondary view
- m_view[SecondaryIdx]->close();
- m_view[SecondaryIdx]->deleteLater();
- m_view[SecondaryIdx] = 0;
+ m_viewContainer[SecondaryView]->close();
+ m_viewContainer[SecondaryView]->deleteLater();
+ m_viewContainer[SecondaryView] = 0;
}
- setActiveView(m_view[PrimaryIdx]);
+
+ setActiveViewContainer(m_viewContainer[PrimaryView]);
+ updateViewActions();
emit activeViewChanged();
}
void DolphinMainWindow::reloadView()
{
clearStatusBar();
- m_activeView->reload();
+ m_activeViewContainer->view()->reload();
}
void DolphinMainWindow::stopLoading()
-{}
+{
+}
void DolphinMainWindow::togglePreview()
{
const KToggleAction* showPreviewAction =
static_cast<KToggleAction*>(actionCollection()->action("show_preview"));
const bool show = showPreviewAction->isChecked();
- m_activeView->setShowPreview(show);
+ m_activeViewContainer->view()->setShowPreview(show);
}
void DolphinMainWindow::toggleShowHiddenFiles()
const KToggleAction* showHiddenFilesAction =
static_cast<KToggleAction*>(actionCollection()->action("show_hidden_files"));
const bool show = showHiddenFilesAction->isChecked();
- m_activeView->setShowHiddenFiles(show);
+ m_activeViewContainer->view()->setShowHiddenFiles(show);
}
void DolphinMainWindow::toggleFilterBarVisibility()
const KToggleAction* showFilterBarAction =
static_cast<KToggleAction*>(actionCollection()->action("show_filter_bar"));
const bool show = showFilterBarAction->isChecked();
- m_activeView->showFilterBar(show);
+ m_activeViewContainer->showFilterBar(show);
}
void DolphinMainWindow::zoomIn()
{
- m_activeView->zoomIn();
+ m_activeViewContainer->view()->zoomIn();
updateViewActions();
}
void DolphinMainWindow::zoomOut()
{
- m_activeView->zoomOut();
+ m_activeViewContainer->view()->zoomOut();
updateViewActions();
}
KToggleAction* action = static_cast<KToggleAction*>(actionCollection()->action("editable_location"));
bool editOrBrowse = action->isChecked();
- m_activeView->setUrlEditable(editOrBrowse);
+ KUrlNavigator* urlNavigator = m_activeViewContainer->urlNavigator();
+ urlNavigator->setUrlEditable(editOrBrowse);
}
void DolphinMainWindow::editLocation()
{
- m_activeView->setUrlEditable(true);
+ m_activeViewContainer->urlNavigator()->setUrlEditable(true);
}
void DolphinMainWindow::adjustViewProperties()
{
clearStatusBar();
- ViewPropertiesDialog dlg(m_activeView);
+ ViewPropertiesDialog dlg(m_activeViewContainer->view());
dlg.exec();
}
void DolphinMainWindow::goBack()
{
clearStatusBar();
- m_activeView->goBack();
+ m_activeViewContainer->urlNavigator()->goBack();
}
void DolphinMainWindow::goForward()
{
clearStatusBar();
- m_activeView->goForward();
+ m_activeViewContainer->urlNavigator()->goForward();
}
void DolphinMainWindow::goUp()
{
clearStatusBar();
- m_activeView->goUp();
+ m_activeViewContainer->urlNavigator()->goUp();
}
void DolphinMainWindow::goHome()
{
clearStatusBar();
- m_activeView->goHome();
+ m_activeViewContainer->urlNavigator()->goHome();
}
void DolphinMainWindow::findFile()
{
- KRun::run("kfind", m_activeView->url(), this);
+ KRun::run("kfind", m_activeViewContainer->url(), this);
}
void DolphinMainWindow::compareFiles()
// - both in the secondary view
// - one in the primary view and the other in the secondary
// view
- Q_ASSERT(m_view[PrimaryIdx] != 0);
+ Q_ASSERT(m_viewContainer[PrimaryView] != 0);
KUrl urlA;
KUrl urlB;
- KUrl::List urls = m_view[PrimaryIdx]->selectedUrls();
+ KUrl::List urls = m_viewContainer[PrimaryView]->view()->selectedUrls();
switch (urls.count()) {
case 0: {
- Q_ASSERT(m_view[SecondaryIdx] != 0);
- urls = m_view[SecondaryIdx]->selectedUrls();
+ Q_ASSERT(m_viewContainer[SecondaryView] != 0);
+ urls = m_viewContainer[SecondaryView]->view()->selectedUrls();
Q_ASSERT(urls.count() == 2);
urlA = urls[0];
urlB = urls[1];
case 1: {
urlA = urls[0];
- Q_ASSERT(m_view[SecondaryIdx] != 0);
- urls = m_view[SecondaryIdx]->selectedUrls();
+ Q_ASSERT(m_viewContainer[SecondaryView] != 0);
+ urls = m_viewContainer[SecondaryView]->view()->selectedUrls();
Q_ASSERT(urls.count() == 1);
urlB = urls[0];
break;
const KUrl& homeUrl = settings.generalSettings()->homeUrl();
setCaption(homeUrl.fileName());
ViewProperties props(homeUrl);
- m_view[PrimaryIdx] = new DolphinView(this,
- m_splitter,
- homeUrl,
- props.viewMode(),
- props.showHiddenFiles());
+ m_viewContainer[PrimaryView] = new DolphinViewContainer(this,
+ m_splitter,
+ homeUrl);
- m_activeView = m_view[PrimaryIdx];
- connectViewSignals(PrimaryIdx);
- m_view[PrimaryIdx]->reload();
- m_view[PrimaryIdx]->show();
+ m_activeViewContainer = m_viewContainer[PrimaryView];
+ connectViewSignals(PrimaryView);
+ m_viewContainer[PrimaryView]->view()->reload();
+ m_viewContainer[PrimaryView]->show();
setCentralWidget(m_splitter);
setupDockWidgets();
if (firstRun) {
// assure a proper default size if Dolphin runs the first time
- resize(640, 480);
+ resize(700, 500);
}
-#ifdef HAVE_KMETADATA
+#ifdef HAVE_NEPOMUK
if (!MetaDataWidget::metaDataAvailable())
- activeView()->statusBar()->setMessage(i18n("Failed to contact Nepomuk service, annotation and tagging are disabled."), DolphinStatusBar::Error);
+ activeViewContainer()->statusBar()->setMessage(i18n("Failed to contact Nepomuk service, annotation and tagging are disabled."), DolphinStatusBar::Error);
#endif
emit urlChanged(homeUrl);
void DolphinMainWindow::loadSettings()
{
GeneralSettings* settings = DolphinSettings::instance().generalSettings();
+ updateSplitAction(settings->splitView());
+ updateViewActions();
+}
- KToggleAction* splitAction = static_cast<KToggleAction*>(actionCollection()->action("split_view"));
- const bool isSplit = settings->splitView();
- if (isSplit) {
- splitAction->setChecked(true);
- toggleSplitView();
+void DolphinMainWindow::setActiveViewContainer(DolphinViewContainer* view)
+{
+ Q_ASSERT((view == m_viewContainer[PrimaryView]) || (view == m_viewContainer[SecondaryView]));
+ if (m_activeViewContainer == view) {
+ return;
}
- const KIcon splitIcon(isSplit ? "fileview-join" : "fileview-split");
- splitAction->setIcon(splitIcon);
+ m_activeViewContainer->setActive(false);
+ m_activeViewContainer = view;
+ m_activeViewContainer->setActive(true);
+
+ updateHistory();
+ updateEditActions();
updateViewActions();
+ updateGoActions();
+
+ const KUrl& url = m_activeViewContainer->url();
+ setCaption(url.fileName());
+
+ emit activeViewChanged();
+ emit urlChanged(url);
}
void DolphinMainWindow::setupActions()
sortDescending->setText(i18n("Descending"));
connect(sortDescending, SIGNAL(triggered()), this, SLOT(toggleSortOrder()));
- KToggleAction* sortCategorized = actionCollection()->add<KToggleAction>("categorized");
- sortCategorized->setText(i18n("Show in Groups"));
- connect(sortCategorized, SIGNAL(triggered()), this, SLOT(toggleSortCategorization()));
+ KToggleAction* showInGroups = actionCollection()->add<KToggleAction>("show_in_groups");
+ showInGroups->setText(i18n("Show in Groups"));
+ connect(showInGroups, SIGNAL(triggered()), this, SLOT(toggleSortCategorization()));
KToggleAction* clearInfo = actionCollection()->add<KToggleAction>("clear_info");
clearInfo->setText(i18n("No Information"));
KToggleAction* showPreview = actionCollection()->add<KToggleAction>("show_preview");
showPreview->setText(i18n("Preview"));
- showPreview->setIcon(KIcon("thumbnail-show"));
+ showPreview->setIcon(KIcon("fileview-preview"));
connect(showPreview, SIGNAL(triggered()), this, SLOT(togglePreview()));
KToggleAction* showHiddenFiles = actionCollection()->add<KToggleAction>("show_hidden_files");
showHiddenFiles->setShortcut(Qt::ALT | Qt::Key_Period);
connect(showHiddenFiles, SIGNAL(triggered()), this, SLOT(toggleShowHiddenFiles()));
- KToggleAction* split = actionCollection()->add<KToggleAction>("split_view");
- split->setText(i18n("Split"));
+ QAction* split = actionCollection()->addAction("split_view");
split->setShortcut(Qt::Key_F10);
- split->setIcon(KIcon("fileview-split"));
+ updateSplitAction(false);
connect(split, SIGNAL(triggered()), this, SLOT(toggleSplitView()));
QAction* reload = actionCollection()->addAction("reload");
void DolphinMainWindow::updateHistory()
{
- const KUrlNavigator* urlNavigator = m_activeView->urlNavigator();
+ const KUrlNavigator* urlNavigator = m_activeViewContainer->urlNavigator();
const int index = urlNavigator->historyIndex();
QAction* backAction = actionCollection()->action("go_back");
void DolphinMainWindow::updateEditActions()
{
- const KFileItemList list = m_activeView->selectedItems();
+ const KFileItemList list = m_activeViewContainer->view()->selectedItems();
if (list.isEmpty()) {
stateChanged("has_no_selection");
} else {
void DolphinMainWindow::updateViewActions()
{
+ const DolphinView* view = m_activeViewContainer->view();
QAction* zoomInAction = actionCollection()->action(KStandardAction::stdName(KStandardAction::ZoomIn));
if (zoomInAction != 0) {
- zoomInAction->setEnabled(m_activeView->isZoomInPossible());
+ zoomInAction->setEnabled(view->isZoomInPossible());
}
QAction* zoomOutAction = actionCollection()->action(KStandardAction::stdName(KStandardAction::ZoomOut));
if (zoomOutAction != 0) {
- zoomOutAction->setEnabled(m_activeView->isZoomOutPossible());
+ zoomOutAction->setEnabled(view->isZoomOutPossible());
}
QAction* action = 0;
- switch (m_activeView->mode()) {
+ switch (view->mode()) {
case DolphinView::IconsView:
action = actionCollection()->action("icons");
break;
toggleAction->setChecked(true);
}
- slotSortingChanged(m_activeView->sorting());
- slotSortOrderChanged(m_activeView->sortOrder());
+ slotSortingChanged(view->sorting());
+ slotSortOrderChanged(view->sortOrder());
slotCategorizedSortingChanged();
- slotAdditionalInfoChanged(m_activeView->additionalInfo());
+ slotAdditionalInfoChanged(view->additionalInfo());
KToggleAction* showFilterBarAction =
static_cast<KToggleAction*>(actionCollection()->action("show_filter_bar"));
- showFilterBarAction->setChecked(m_activeView->isFilterBarVisible());
+ showFilterBarAction->setChecked(m_activeViewContainer->isFilterBarVisible());
KToggleAction* showPreviewAction =
static_cast<KToggleAction*>(actionCollection()->action("show_preview"));
- showPreviewAction->setChecked(m_activeView->showPreview());
+ showPreviewAction->setChecked(view->showPreview());
KToggleAction* showHiddenFilesAction =
static_cast<KToggleAction*>(actionCollection()->action("show_hidden_files"));
- showHiddenFilesAction->setChecked(m_activeView->showHiddenFiles());
+ showHiddenFilesAction->setChecked(view->showHiddenFiles());
- KToggleAction* splitAction = static_cast<KToggleAction*>(actionCollection()->action("split_view"));
- const bool isSplit = (m_view[SecondaryIdx] != 0);
- splitAction->setChecked(isSplit);
- const KIcon splitIcon(isSplit ? "fileview-join" : "fileview-split");
- splitAction->setIcon(splitIcon);
+ updateSplitAction(m_viewContainer[SecondaryView] != 0);
KToggleAction* editableLocactionAction =
static_cast<KToggleAction*>(actionCollection()->action("editable_location"));
- editableLocactionAction->setChecked(m_activeView->isUrlEditable());
+ const KUrlNavigator* urlNavigator = m_activeViewContainer->urlNavigator();
+ editableLocactionAction->setChecked(urlNavigator->isUrlEditable());
}
void DolphinMainWindow::updateGoActions()
{
QAction* goUpAction = actionCollection()->action(KStandardAction::stdName(KStandardAction::Up));
- const KUrl& currentUrl = m_activeView->url();
+ const KUrl& currentUrl = m_activeViewContainer->url();
goUpAction->setEnabled(currentUrl.upUrl() != currentUrl);
}
void DolphinMainWindow::clearStatusBar()
{
- m_activeView->statusBar()->clear();
+ m_activeViewContainer->statusBar()->clear();
}
void DolphinMainWindow::connectViewSignals(int viewIndex)
{
- DolphinView* view = m_view[viewIndex];
+ DolphinViewContainer* container = m_viewContainer[viewIndex];
+ connect(container, SIGNAL(showFilterBarChanged(bool)),
+ this, SLOT(updateFilterBarAction(bool)));
+
+ DolphinView* view = container->view();
connect(view, SIGNAL(modeChanged()),
this, SLOT(slotViewModeChanged()));
connect(view, SIGNAL(showPreviewChanged()),
this, SLOT(slotSelectionChanged(KFileItemList)));
connect(view, SIGNAL(requestItemInfo(KUrl)),
this, SLOT(slotRequestItemInfo(KUrl)));
- connect(view, SIGNAL(showFilterBarChanged(bool)),
- this, SLOT(updateFilterBarAction(bool)));
- connect(view, SIGNAL(urlChanged(KUrl)),
- this, SLOT(changeUrl(KUrl)));
+ connect(view, SIGNAL(activated()),
+ this, SLOT(toggleActiveView()));
- const KUrlNavigator* navigator = view->urlNavigator();
+ const KUrlNavigator* navigator = container->urlNavigator();
connect(navigator, SIGNAL(urlChanged(const KUrl&)),
this, SLOT(changeUrl(const KUrl&)));
connect(navigator, SIGNAL(historyChanged()),
this, SLOT(slotHistoryChanged()));
}
+void DolphinMainWindow::updateSplitAction(bool isSplit)
+{
+ QAction* splitAction = actionCollection()->action("split_view");
+ if (isSplit) {
+ splitAction->setText(i18n("Join"));
+ splitAction->setIcon(KIcon("fileview-join"));
+ } else {
+ splitAction->setText(i18n("Split"));
+ splitAction->setIcon(KIcon("fileview-split"));
+ }
+}
+
DolphinMainWindow::UndoUiInterface::UndoUiInterface(DolphinMainWindow* mainWin) :
KonqUndoManager::UiInterface(mainWin),
m_mainWin(mainWin)
void DolphinMainWindow::UndoUiInterface::jobError(KIO::Job* job)
{
- DolphinStatusBar* statusBar = m_mainWin->activeView()->statusBar();
+ DolphinStatusBar* statusBar = m_mainWin->activeViewContainer()->statusBar();
statusBar->setMessage(job->errorString(), DolphinStatusBar::Error);
}