[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/apps/plasma/applets/folderview
From: Fredrik Höglund <fredrik () kde ! org>
Date: 2008-09-19 1:12:54
Message-ID: 1221786774.001981.16899.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 862490 by fredrik:
Add a menu option for sorting directories first (enabled by default).
M +23 -1 folderview.cpp
M +2 -0 folderview.h
M +19 -6 proxymodel.cpp
M +9 -5 proxymodel.h
--- trunk/KDE/kdebase/apps/plasma/applets/folderview/folderview.cpp #862489:862490
@@ -295,7 +295,9 @@
m_filterFilesMimeList = cg.readEntry("mimeFilter", QStringList());
m_model->setMimeTypeFilterList(m_filterFilesMimeList);
+ m_sortDirsFirst = cg.readEntry("sortDirsFirst", true);
m_sortColumn = cg.readEntry("sortColumn", int(KDirModel::Name));
+ m_model->setSortDirectoriesFirst(m_sortDirsFirst);
m_model->sort(m_sortColumn != -1 ? m_sortColumn : KDirModel::Name, Qt::AscendingOrder);
KDirLister *lister = new KDirLister(this);
@@ -1246,11 +1248,18 @@
sortByType->setCheckable(true);
sortByDate->setCheckable(true);
+ KAction *dirsFirst = new KAction(i18nc("Sort icons", "Directories First"), this);
+ dirsFirst->setCheckable(true);
+ dirsFirst->setChecked(m_sortDirsFirst);
+ connect(dirsFirst, SIGNAL(toggled(bool)), SLOT(toggleDirectoriesFirst(bool)));
+
QMenu *sortMenu = new QMenu(i18n("Sort Icons"));
sortMenu->addAction(sortByName);
sortMenu->addAction(sortBySize);
sortMenu->addAction(sortByType);
sortMenu->addAction(sortByDate);
+ sortMenu->addSeparator();
+ sortMenu->addAction(dirsFirst);
QMenu *iconsMenu = new QMenu;
iconsMenu->addMenu(sortMenu);
@@ -1429,6 +1438,19 @@
emit configNeedsSaving();
}
+void FolderView::toggleDirectoriesFirst(bool enable)
+{
+ m_sortDirsFirst = enable;
+
+ m_model->setSortDirectoriesFirst(m_sortDirsFirst);
+ if (m_sortColumn != -1) {
+ m_model->invalidate();
+ }
+
+ config().writeEntry("sortDirsFirst", m_sortDirsFirst);
+ emit configNeedsSaving();
+}
+
void FolderView::sortingChanged(QAction *action)
{
int column = KDirModel::Name;
@@ -1444,9 +1466,9 @@
}
if (column != m_sortColumn) {
+ m_model->invalidate();
m_model->sort(column, Qt::AscendingOrder);
m_sortColumn = column;
- m_layoutValid = false;
m_layoutBroken = false;
config().writeEntry("sortColumn", m_sortColumn);
emit configNeedsSaving();
--- trunk/KDE/kdebase/apps/plasma/applets/folderview/folderview.h #862489:862490
@@ -100,6 +100,7 @@
void undoTextChanged(const QString &text);
void toggleIconsLocked(bool locked);
void toggleAlignToGrid(bool align);
+ void toggleDirectoriesFirst(bool enable);
void sortingChanged(QAction *action);
void commitData(QWidget *editor);
@@ -190,6 +191,7 @@
bool m_dragInProgress;
bool m_iconsLocked;
bool m_alignToGrid;
+ bool m_sortDirsFirst;
QString m_customLabel;
int m_customIconSize;
QListView::Flow m_flow;
--- trunk/KDE/kdebase/apps/plasma/applets/folderview/proxymodel.cpp #862489:862490
@@ -25,7 +25,7 @@
ProxyModel::ProxyModel(QObject *parent)
- : QSortFilterProxyModel(parent)
+ : QSortFilterProxyModel(parent), m_sortDirsFirst(true)
{
}
@@ -55,6 +55,16 @@
return m_mimeList;
}
+void ProxyModel::setSortDirectoriesFirst(bool enable)
+{
+ m_sortDirsFirst = enable;
+}
+
+bool ProxyModel::sortDirectoriesFirst() const
+{
+ return m_sortDirsFirst;
+}
+
QModelIndex ProxyModel::indexForUrl(const KUrl &url) const
{
const KDirModel *dirModel = static_cast<KDirModel*>(sourceModel());
@@ -74,12 +84,15 @@
const KFileItem item2 = dirModel->itemForIndex(right);
// Sort directories first
- if (item1.isDir() && !item2.isDir())
- return true;
+ if (m_sortDirsFirst) {
+ if (item1.isDir() && !item2.isDir()) {
+ return true;
+ }
+ if (!item1.isDir() && item2.isDir()) {
+ return false;
+ }
+ }
- if (!item1.isDir() && item2.isDir())
- return false;
-
const QString name1 = dirModel->data(left).toString();
const QString name2 = dirModel->data(right).toString();
--- trunk/KDE/kdebase/apps/plasma/applets/folderview/proxymodel.h #862489:862490
@@ -37,25 +37,29 @@
ProxyModel(QObject *parent = 0);
~ProxyModel();
-
+
void setFilterMode(FilterMode filterMode);
FilterMode filterMode() const;
-
+
void setMimeTypeFilterList(const QStringList &mimeList);
const QStringList &mimeTypeFilterList() const;
-
+
+ void setSortDirectoriesFirst(bool enable);
+ bool sortDirectoriesFirst() const;
+
QModelIndex indexForUrl(const KUrl &url) const;
KFileItem itemForIndex(const QModelIndex &index) const;
bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
-
+
static FilterMode filterModeFromInt(int filterMode);
protected:
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
-
+
private:
FilterMode m_filterMode;
QStringList m_mimeList;
+ bool m_sortDirsFirst;
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic