KDirLister* dirLister,
KDirModel* dirModel,
DolphinSortFilterProxyModel* proxyModel,
- Mode mode,
- bool showHiddenFiles) :
+ Mode mode) :
QWidget(parent),
m_active(true),
m_blockContentsMovedSignal(false),
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&)),
return m_iconsView != 0;
}
-void DolphinView::renameSelectedItems()
+void DolphinView::selectAll()
{
- // TODO: temporary deactivate due to DolphinView/DolphinViewController split
-
- /*DolphinView* view = 0; //mainWindow()->activeView();
- const KUrl::List urls = selectedUrls();
- if (urls.count() > 1) {
- // More than one item has been selected for renaming. Open
- // a rename dialog and rename all items afterwards.
- RenameDialog dialog(urls);
- if (dialog.exec() == QDialog::Rejected) {
- return;
- }
+ selectAll(QItemSelectionModel::Select);
+}
- const QString& newName = dialog.newName();
- if (newName.isEmpty()) {
- view->statusBar()->setMessage(dialog.errorString(),
- DolphinStatusBar::Error);
- } else {
- // TODO: check how this can be integrated into KonqUndoManager/KonqOperations
- // as one operation instead of n rename operations like it is done now...
- Q_ASSERT(newName.contains('#'));
-
- // iterate through all selected items and rename them...
- const int replaceIndex = newName.indexOf('#');
- Q_ASSERT(replaceIndex >= 0);
- int index = 1;
-
- KUrl::List::const_iterator it = urls.begin();
- KUrl::List::const_iterator end = urls.end();
- while (it != end) {
- const KUrl& oldUrl = *it;
- QString number;
- number.setNum(index++);
-
- QString name(newName);
- name.replace(replaceIndex, 1, number);
-
- if (oldUrl.fileName() != name) {
- KUrl newUrl = oldUrl;
- newUrl.setFileName(name);
- m_mainWindow->rename(oldUrl, newUrl);
- }
- ++it;
- }
- }
- } else {
- // Only one item has been selected for renaming. Use the custom
- // renaming mechanism from the views.
- Q_ASSERT(urls.count() == 1);
-
- // TODO: Think about using KFileItemDelegate as soon as it supports editing.
- // Currently the RenameDialog is used, but I'm not sure whether inline renaming
- // is a benefit for the user at all -> let's wait for some input first...
- RenameDialog dialog(urls);
- if (dialog.exec() == QDialog::Rejected) {
- return;
- }
+void DolphinView::invertSelection()
+{
+ selectAll(QItemSelectionModel::Toggle);
+}
- const QString& newName = dialog.newName();
- if (newName.isEmpty()) {
- view->statusBar()->setMessage(dialog.errorString(),
- DolphinStatusBar::Error);
- } else {
- const KUrl& oldUrl = urls.first();
- KUrl newUrl = oldUrl;
- newUrl.setFileName(newName);
- m_mainWindow->rename(oldUrl, newUrl);
+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;
}
-void DolphinView::selectAll()
+KUrl::List DolphinView::selectedUrls() const
{
- selectAll(QItemSelectionModel::Select);
+ 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;
}
-void DolphinView::invertSelection()
+KFileItem* DolphinView::fileItem(const QModelIndex index) const
{
- selectAll(QItemSelectionModel::Toggle);
+ const QModelIndex dirModelIndex = m_proxyModel->mapToSource(index);
+ return m_dirModel->itemForIndex(dirModelIndex);
}
-int DolphinView::contentsX() const
+void DolphinView::setContentsPosition(int x, int y)
{
- return itemView()->horizontalScrollBar()->value();
+ QAbstractItemView* view = itemView();
+ view->horizontalScrollBar()->setValue(x);
+ view->verticalScrollBar()->setValue(y);
+
+ m_blockContentsMovedSignal = false;
}
-int DolphinView::contentsY() const
+QPoint DolphinView::contentsPosition() const
{
- return itemView()->verticalScrollBar()->value();
+ const int x = itemView()->horizontalScrollBar()->value();
+ const int y = itemView()->verticalScrollBar()->value();
+ return QPoint(x, y);
}
void DolphinView::zoomIn()
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::rename(const KUrl& source, const QString& newName)
-{
- bool ok = false;
-
- if (newName.isEmpty() || (source.fileName() == newName)) {
- return;
- }
-
- KUrl dest(source.upUrl());
- dest.addPath(newName);
-
- const bool destExists = KIO::NetAccess::exists(dest, false, this);
- if (destExists) {
- // the destination already exists, hence ask the user
- // how to proceed...
- KIO::RenameDialog renameDialog(this,
- i18n("File Already Exists"),
- source.path(),
- dest.path(),
- KIO::M_OVERWRITE);
- switch (renameDialog.exec()) {
- case KIO::R_OVERWRITE:
- // the destination should be overwritten
- ok = KIO::NetAccess::file_move(source, dest, -1, true);
- break;
-
- case KIO::R_RENAME: {
- // a new name for the destination has been used
- KUrl newDest(renameDialog.newDestUrl());
- ok = KIO::NetAccess::file_move(source, newDest);
- break;
- }
-
- default:
- // the renaming operation has been canceled
- return;
- }
- } else {
- // no destination exists, hence just move the file to
- // do the renaming
- ok = KIO::NetAccess::file_move(source, dest);
- }
-
- const QString destFileName = dest.fileName();
- if (ok) {
- // XYDZ
- //m_statusBar->setMessage(i18n("Renamed file '%1' to '%2'.", source.fileName(), destFileName),
- // DolphinStatusBar::OperationCompleted);
-
- KonqOperations::rename(this, source, destFileName);
- } else {
- // XYDZ
- //m_statusBar->setMessage(i18n("Renaming of file '%1' to '%2' failed.", source.fileName(), destFileName),
- // DolphinStatusBar::Error);
- }
-}
-
void DolphinView::reload()
{
setUrl(url());
}
}
-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());
void DolphinView::startDirLister(const KUrl& url, bool reload)
{
if (!url.isValid()) {
- // TODO: temporary deactivated due to DolphinView/DolphinViewController split
-
- //const QString location(url.pathOrUrl());
- //if (location.isEmpty()) {
- // m_statusBar->setMessage(i18n("The location is empty."), DolphinStatusBar::Error);
- //} else {
- // m_statusBar->setMessage(i18n("The location '%1' is invalid.", location),
- // DolphinStatusBar::Error);
- //}
+ const QString location(url.pathOrUrl());
+ if (location.isEmpty()) {
+ emit errorMessage(i18n("The location is empty."));
+ } else {
+ emit errorMessage(i18n("The location '%1' is invalid.", location));
+ }
return;
}
- // Only show the directory loading progress if the status bar does
- // not contain another progress information. This means that
- // the directory loading progress information has the lowest priority.
-
- // TODO: temporary deactivated due to DolphinView/DolphinViewController split
- //const QString progressText(m_statusBar->progressText());
- //m_showProgress = progressText.isEmpty() ||
- // (progressText == i18n("Loading folder..."));
- //if (m_showProgress) {
- // m_statusBar->setProgressText(i18n("Loading folder..."));
- // m_statusBar->setProgress(0);
- //}
-
m_cutItemsCache.clear();
m_blockContentsMovedSignal = true;
+
m_dirLister->stop();
bool openDir = true;
startDirLister(url);
emit urlChanged(url);
-
- // TODO: temporary deactivated due to DolphinView/DolphinViewController split
- //m_statusBar->clear();
}
void DolphinView::changeSelection(const KFileItemList& selection)
void DolphinView::emitContentsMoved()
{
if (!m_blockContentsMovedSignal) {
- emit contentsMoved(contentsX(), contentsY());
+ const QPoint pos(contentsPosition());
+ emit contentsMoved(pos.x(), pos.y());
}
}
const KFileItem* item = fileItem(index);
if (item != 0) {
- // TODO: temporary deactivated due to DolphinView/DolphinViewController split
- //m_statusBar->setMessage(item->getStatusBarInfo(), DolphinStatusBar::Default);
emit requestItemInfo(item->url());
}
}
void DolphinView::clearHoverInformation()
{
- // TODO: temporary deactivated due to DolphinView/DolphinViewController split
- //m_statusBar->clear();
emit requestItemInfo(KUrl());
}