X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/6dddb2e81c6b7f3cfc2a7e9d26fab407f7bc85e6..293e65797afd44a530df3435a8cc5b1b024aa3bb:/src/dolphinview.cpp diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index ae56c6ea2..65ec4c9d3 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -83,8 +83,6 @@ DolphinView::DolphinView(QWidget* parent, connect(clipboard, SIGNAL(dataChanged()), this, SLOT(updateCutItems())); - connect(m_dirLister, SIGNAL(completed()), - this, SLOT(restoreContentsPos())); connect(m_dirLister, SIGNAL(completed()), this, SLOT(updateCutItems())); connect(m_dirLister, SIGNAL(newItems(const KFileItemList&)), @@ -276,14 +274,77 @@ void DolphinView::invertSelection() selectAll(QItemSelectionModel::Toggle); } -int DolphinView::contentsX() const +bool DolphinView::hasSelection() const +{ + return itemView()->selectionModel()->hasSelection(); +} + +void DolphinView::clearSelection() +{ + itemView()->selectionModel()->clear(); +} + +KFileItemList DolphinView::selectedItems() const +{ + const QAbstractItemView* view = itemView(); + + // Our view has a selection, we will map them back to the DirModel + // and then fill the KFileItemList. + Q_ASSERT((view != 0) && (view->selectionModel() != 0)); + + const QItemSelection selection = m_proxyModel->mapSelectionToSource(view->selectionModel()->selection()); + KFileItemList itemList; + + const QModelIndexList indexList = selection.indexes(); + QModelIndexList::const_iterator end = indexList.end(); + for (QModelIndexList::const_iterator it = indexList.begin(); it != end; ++it) { + Q_ASSERT((*it).isValid()); + + KFileItem* item = m_dirModel->itemForIndex(*it); + if (item != 0) { + itemList.append(item); + } + } + + return itemList; +} + +KUrl::List DolphinView::selectedUrls() const { - return itemView()->horizontalScrollBar()->value(); + KUrl::List urls; + + const KFileItemList list = selectedItems(); + KFileItemList::const_iterator it = list.begin(); + const KFileItemList::const_iterator end = list.end(); + while (it != end) { + KFileItem* item = *it; + urls.append(item->url()); + ++it; + } + + return urls; } -int DolphinView::contentsY() const +KFileItem* DolphinView::fileItem(const QModelIndex index) const { - return itemView()->verticalScrollBar()->value(); + const QModelIndex dirModelIndex = m_proxyModel->mapToSource(index); + return m_dirModel->itemForIndex(dirModelIndex); +} + +void DolphinView::setContentsPosition(int x, int y) +{ + QAbstractItemView* view = itemView(); + view->horizontalScrollBar()->setValue(x); + view->verticalScrollBar()->setValue(y); + + m_blockContentsMovedSignal = false; +} + +QPoint DolphinView::contentsPosition() const +{ + const int x = itemView()->horizontalScrollBar()->value(); + const int y = itemView()->verticalScrollBar()->value(); + return QPoint(x, y); } void DolphinView::zoomIn() @@ -347,63 +408,6 @@ KFileItemDelegate::AdditionalInformation DolphinView::additionalInfo() const return m_fileItemDelegate->additionalInformation(); } -bool DolphinView::hasSelection() const -{ - return itemView()->selectionModel()->hasSelection(); -} - -void DolphinView::clearSelection() -{ - itemView()->selectionModel()->clear(); -} - -KFileItemList DolphinView::selectedItems() const -{ - const QAbstractItemView* view = itemView(); - - // Our view has a selection, we will map them back to the DirModel - // and then fill the KFileItemList. - Q_ASSERT((view != 0) && (view->selectionModel() != 0)); - - const QItemSelection selection = m_proxyModel->mapSelectionToSource(view->selectionModel()->selection()); - KFileItemList itemList; - - const QModelIndexList indexList = selection.indexes(); - QModelIndexList::const_iterator end = indexList.end(); - for (QModelIndexList::const_iterator it = indexList.begin(); it != end; ++it) { - Q_ASSERT((*it).isValid()); - - KFileItem* item = m_dirModel->itemForIndex(*it); - if (item != 0) { - itemList.append(item); - } - } - - return itemList; -} - -KUrl::List DolphinView::selectedUrls() const -{ - KUrl::List urls; - - const KFileItemList list = selectedItems(); - KFileItemList::const_iterator it = list.begin(); - const KFileItemList::const_iterator end = list.end(); - while (it != end) { - KFileItem* item = *it; - urls.append(item->url()); - ++it; - } - - return urls; -} - -KFileItem* DolphinView::fileItem(const QModelIndex index) const -{ - const QModelIndex dirModelIndex = m_proxyModel->mapToSource(index); - return m_dirModel->itemForIndex(dirModelIndex); -} - void DolphinView::reload() { setUrl(url()); @@ -519,20 +523,6 @@ void DolphinView::showPreview(const KFileItem& item, const QPixmap& pixmap) } } -void DolphinView::restoreContentsPos() -{ - m_blockContentsMovedSignal = false; - if (!url().isEmpty()) { - QAbstractItemView* view = itemView(); - // TODO #1: view->setCurrentItem(m_urlNavigator->currentFileName()); - // TODO #2: temporary deactivated due to DolphinView/DolphinViewController split - //QPoint pos = m_urlNavigator->savedPosition(); - QPoint pos(0, 0); - view->horizontalScrollBar()->setValue(pos.x()); - view->verticalScrollBar()->setValue(pos.y()); - } -} - void DolphinView::emitSelectionChangedSignal() { emit selectionChanged(DolphinView::selectedItems()); @@ -552,6 +542,7 @@ void DolphinView::startDirLister(const KUrl& url, bool reload) m_cutItemsCache.clear(); m_blockContentsMovedSignal = true; + m_dirLister->stop(); bool openDir = true; @@ -764,7 +755,8 @@ void DolphinView::updateSortOrder(Qt::SortOrder order) void DolphinView::emitContentsMoved() { if (!m_blockContentsMovedSignal) { - emit contentsMoved(contentsX(), contentsY()); + const QPoint pos(contentsPosition()); + emit contentsMoved(pos.x(), pos.y()); } }