X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/ae338af47408467c6ba481ff015ef18ad401f046..85bc196887fbed01187e3830cd28c2500cb01cb2:/src/dolphinview.cpp diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index 6dfdd3d7b..17bbd608d 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -51,6 +51,7 @@ #include "renamedialog.h" #include "urlnavigator.h" #include "viewproperties.h" +#include "dolphinsettings.h" DolphinView::DolphinView(DolphinMainWindow* mainWindow, QWidget* parent, @@ -90,7 +91,7 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow, connect(clipboard, SIGNAL(dataChanged()), this, SLOT(updateCutItems())); - m_urlNavigator = new UrlNavigator(url, this); + m_urlNavigator = new UrlNavigator(DolphinSettings::instance().bookmarkManager(), url, this); m_urlNavigator->setShowHiddenFiles(showHiddenFiles); connect(m_urlNavigator, SIGNAL(urlChanged(const KUrl&)), this, SLOT(loadDirectory(const KUrl&))); @@ -164,8 +165,6 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow, m_topLayout->addWidget(itemView()); m_topLayout->addWidget(m_filterBar); m_topLayout->addWidget(m_statusBar); - - loadDirectory(m_urlNavigator->url()); } DolphinView::~DolphinView() @@ -455,11 +454,6 @@ void DolphinView::setUrlEditable(bool editable) m_urlNavigator->editUrl(editable); } -const QLinkedList DolphinView::urlHistory(int& index) const -{ - return m_urlNavigator->history(index); -} - bool DolphinView::hasSelection() const { return itemView()->selectionModel()->hasSelection(); @@ -596,6 +590,10 @@ DolphinMainWindow* DolphinView::mainWindow() const void DolphinView::loadDirectory(const KUrl& url) { + if(!isActive()) { + requestActivation(); + } + const ViewProperties props(url); const Mode mode = props.viewMode(); @@ -768,16 +766,12 @@ void DolphinView::showPreview(const KFileItem* item, const QPixmap& pixmap) void DolphinView::restoreContentsPos() { - int index = 0; - const QLinkedList history = urlHistory(index); - if (!history.isEmpty()) { + UrlNavigator::HistoryElem historyItem = m_urlNavigator->currentHistoryItem(); + if (!historyItem.url().isEmpty()) { QAbstractItemView* view = itemView(); - // TODO: view->setCurrentItem(history[index].currentFileName()); - - QLinkedList::const_iterator it = history.begin(); - it += index; - view->horizontalScrollBar()->setValue((*it).contentsX()); - view->verticalScrollBar()->setValue((*it).contentsY()); + // TODO: view->setCurrentItem(historyItem.currentFileName()); + view->horizontalScrollBar()->setValue(historyItem.contentsX()); + view->verticalScrollBar()->setValue(historyItem.contentsY()); } } @@ -793,7 +787,7 @@ void DolphinView::showErrorMessage(const QString& msg) void DolphinView::emitSelectionChangedSignal() { - emit selectionChanged(); + emit selectionChanged(DolphinView::selectedItems()); } void DolphinView::closeFilterBar() @@ -922,6 +916,27 @@ void DolphinView::requestActivation() m_mainWindow->setActiveView(this); } +void DolphinView::changeSelection(const KFileItemList& selection) +{ + clearSelection(); + if (selection.isEmpty()) { + return; + } + KUrl baseUrl = url(); + KUrl url; + QItemSelection new_selection; + foreach (KFileItem* item, selection) { + url = item->url().upUrl(); + if (baseUrl.equals(url, KUrl::CompareWithoutTrailingSlash)) { + QModelIndex index = m_proxyModel->mapFromSource(m_dirModel->indexForItem(*item)); + new_selection.select(index, index); + } + } + itemView()->selectionModel()->select(new_selection, + QItemSelectionModel::ClearAndSelect + | QItemSelectionModel::Current); +} + void DolphinView::changeNameFilter(const QString& nameFilter) { // The name filter of KDirLister does a 'hard' filtering, which @@ -1021,6 +1036,10 @@ void DolphinView::emitContentsMoved() void DolphinView::updateActivationState() { m_urlNavigator->setActive(isActive()); + if(isActive()) { + emit urlChanged(url()); + emit selectionChanged(selectedItems()); + } } void DolphinView::updateCutItems()