#include <kdirlister.h>
#include <kfilepreviewgenerator.h>
#include <kiconeffect.h>
+#include <kfileitem.h>
#include <klocale.h>
#include <kio/deletejob.h>
#include <kio/netaccess.h>
#include <konq_fileitemcapabilities.h>
#include <konq_operations.h>
#include <konqmimedata.h>
+#include <kstringhandler.h>
#include <ktoggleaction.h>
#include <kurl.h>
#include "viewproperties.h"
#include "zoomlevelinfo.h"
+/**
+ * Helper function for sorting items with qSort() in
+ * DolphinView::renameSelectedItems().
+ */
+bool lessThan(const KFileItem& item1, const KFileItem& item2)
+{
+ return KStringHandler::naturalCompare(item1.name(), item2.name()) < 0;
+}
+
DolphinView::DolphinView(QWidget* parent,
const KUrl& url,
KDirLister* dirLister,
++it;
}
- const QString foldersText = i18ncp("@info:status", "1 Folder selected", "%1 Folders selected", folderCount);
- const QString filesText = i18ncp("@info:status", "1 File selected", "%1 Files selected", fileCount);
- if ((folderCount > 0) && (fileCount > 0)) {
- text = i18nc("@info:status folders, files (size)", "%1, %2 (%3)",
- foldersText, filesText, KIO::convertSize(totalFileSize));
- } else if (fileCount > 0) {
- text = i18nc("@info:status files (size)", "%1 (%2)", filesText, KIO::convertSize(totalFileSize));
+ if (folderCount + fileCount == 1) {
+ // if only one item is selected, show the filename
+ const QString name = list.first().name();
+ text = (folderCount == 1) ? i18nc("@info:status", "<filename>%1</filename> selected", name) :
+ i18nc("@info:status", "<filename>%1</filename> selected (%2)",
+ name, KIO::convertSize(totalFileSize));
} else {
- Q_ASSERT(folderCount > 0);
- text = foldersText;
+ // at least 2 items are selected
+ const QString foldersText = i18ncp("@info:status", "1 Folder selected", "%1 Folders selected", folderCount);
+ const QString filesText = i18ncp("@info:status", "1 File selected", "%1 Files selected", fileCount);
+ if ((folderCount > 0) && (fileCount > 0)) {
+ text = i18nc("@info:status folders, files (size)", "%1, %2 (%3)",
+ foldersText, filesText, KIO::convertSize(totalFileSize));
+ } else if (fileCount > 0) {
+ text = i18nc("@info:status files (size)", "%1 (%2)", filesText, KIO::convertSize(totalFileSize));
+ } else {
+ Q_ASSERT(folderCount > 0);
+ text = foldersText;
+ }
}
} else {
calculateItemCount(fileCount, folderCount, totalFileSize);
void DolphinView::renameSelectedItems()
{
- const KFileItemList items = selectedItems();
+ KFileItemList items = selectedItems();
const int itemCount = items.count();
if (itemCount < 1) {
return;
// TODO: check how this can be integrated into KIO::FileUndoManager/KonqOperations
// as one operation instead of n rename operations like it is done now...
Q_ASSERT(newName.contains('#'));
+
+ // currently the items are sorted by the selection order, resort
+ // them by the file name
+ qSort(items.begin(), items.end(), lessThan);
// iterate through all selected items and rename them...
int index = 1;
- foreach (const KFileItem &item, items) {
+ foreach (const KFileItem& item, items) {
const KUrl& oldUrl = item.url();
QString number;
number.setNum(index++);
void DolphinView::cutSelectedItems()
{
- QMimeData* mimeData = new QMimeData();
+ QMimeData* mimeData = selectionMimeData();
const KUrl::List kdeUrls = simplifiedSelectedUrls();
const KUrl::List mostLocalUrls;
KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, true);
void DolphinView::copySelectedItems()
{
- QMimeData* mimeData = new QMimeData();
+ QMimeData* mimeData = selectionMimeData();
const KUrl::List kdeUrls = selectedUrls();
const KUrl::List mostLocalUrls;
KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, false);
return m_tabsForFiles;
}
+bool DolphinView::itemsExpandable() const
+{
+ return (m_detailsView != 0) && m_detailsView->itemsExpandable();
+}
+
void DolphinView::emitContentsMoved()
{
// only emit the contents moved signal if:
m_expandedViews.clear();
}
-bool DolphinView::itemsExpandable() const
+QMimeData* DolphinView::selectionMimeData() const
{
- return (m_detailsView != 0) && m_detailsView->itemsExpandable();
+ if (isColumnViewActive()) {
+ return m_columnView->selectionMimeData();
+ }
+
+ const QAbstractItemView* view = itemView();
+ Q_ASSERT((view != 0) && (view->selectionModel() != 0));
+ const QItemSelection selection = m_proxyModel->mapSelectionToSource(view->selectionModel()->selection());
+ return m_dolphinModel->mimeData(selection.indexes());
}
#include "dolphinview.moc"