[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/utils/dolphin/src
From: Peter Penz <peter.penz () gmx ! at>
Date: 2007-02-06 6:43:35
Message-ID: 1170744215.971839.28626.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 630740 by ppenz:
If the user changes the sorting by clicking on a header section, the resulting \
sorting state must be synchronized with the Dolphin menu.
M +46 -7 dolphindetailsview.cpp
M +8 -1 dolphindetailsview.h
--- trunk/playground/utils/dolphin/src/dolphindetailsview.cpp #630739:630740
@@ -20,15 +20,17 @@
#include "dolphindetailsview.h"
-#include <assert.h>
#include "dolphinmainwindow.h"
#include "dolphinview.h"
#include "viewproperties.h"
+
+#include <assert.h>
+#include <kdirmodel.h>
#include <QHeaderView>
DolphinDetailsView::DolphinDetailsView(DolphinView* parent) :
QTreeView(parent),
- m_parentView(parent)
+ m_dolphinView(parent)
{
assert(parent != 0);
@@ -41,6 +43,9 @@
setSortIndicatorSection(props.sorting());
setSortIndicatorOrder(props.sortOrder());
+ connect(header(), SIGNAL(sectionClicked(int)),
+ this, SLOT(synchronizeSortingState(int)));
+
connect(parent, SIGNAL(sortingChanged(DolphinView::Sorting)),
this, SLOT(setSortIndicatorSection(DolphinView::Sorting)));
connect(parent, SIGNAL(sortOrderChanged(Qt::SortOrder)),
@@ -88,16 +93,16 @@
const QModelIndex index = indexAt(event->pos());
if (index.isValid()) {
- item = m_parentView->fileItem(index);
+ item = m_dolphinView->fileItem(index);
}
- m_parentView->openContextMenu(item, event->globalPos());
+ m_dolphinView->openContextMenu(item, event->globalPos());
}
void DolphinDetailsView::mouseReleaseEvent(QMouseEvent* event)
{
QTreeView::mouseReleaseEvent(event);
- m_parentView->declareViewActive();
+ m_dolphinView->declareViewActive();
}
void DolphinDetailsView::dragEnterEvent(QDragEnterEvent* event)
@@ -115,8 +120,8 @@
// TODO: handle dropping above a directory
- const KUrl& destination = m_parentView->url();
- m_parentView->mainWindow()->dropUrls(urls, destination);
+ const KUrl& destination = m_dolphinView->url();
+ m_dolphinView->mainWindow()->dropUrls(urls, destination);
}
}
@@ -132,4 +137,38 @@
headerView->setSortIndicator(headerView->sortIndicatorSection(), sortOrder);
}
+void DolphinDetailsView::synchronizeSortingState(int column)
+{
+ // The sorting has already been changed in QTreeView if this slot is
+ // invoked, but Dolphin was not informed about this. This is bypassed by \
changing + // the sorting and sort order to a temporary other value and readjust \
it again. + const bool update = (column == KDirModel::Name) || (column == \
KDirModel::Size) || + (column == KDirModel::ModifiedTime);
+ if (update) {
+ DolphinView::Sorting sorting = DolphinView::SortByName;
+ switch (column) {
+ case KDirModel::Size: sorting = DolphinView::SortBySize; break;
+ case KDirModel::ModifiedTime: sorting = DolphinView::SortByDate; break;
+ case KDirModel::Name:
+ default: break;
+ }
+
+ const Qt::SortOrder sortOrder = header()->sortIndicatorOrder();
+
+ // temporary adjust the sorting and sort order to different values...
+ const DolphinView::Sorting tempSorting = (sorting == \
DolphinView::SortByName) ? + \
DolphinView::SortBySize : + \
DolphinView::SortByName; + m_dolphinView->setSorting(tempSorting);
+ const Qt::SortOrder tempSortOrder = (sortOrder == Qt::Ascending) ?
+ Qt::Descending : Qt::Ascending;
+ m_dolphinView->setSortOrder(tempSortOrder);
+
+ // ... so that setting them again results in storing the new setting.
+ m_dolphinView->setSorting(sorting);
+ m_dolphinView->setSortOrder(sortOrder);
+ }
+
+}
+
#include "dolphindetailsview.moc"
--- trunk/playground/utils/dolphin/src/dolphindetailsview.h #630739:630740
@@ -61,8 +61,15 @@
*/
void setSortIndicatorOrder(Qt::SortOrder sortOrder);
+ /**
+ * Synchronizes the sorting state of the Dolphin menu 'View -> Sort'
+ * with the current state of the details view.
+ * @param column Index of the current sorting column.
+ */
+ void synchronizeSortingState(int column);
+
private:
- DolphinView* m_parentView;
+ DolphinView* m_dolphinView;
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic