From 73a6bf4e10dc5d49b5752a9bd23fc332075da244 Mon Sep 17 00:00:00 2001 From: Spencer Brown Date: Sat, 3 Dec 2016 15:58:39 +0100 Subject: Fix 5 clazy warnings This bumps the minimum Qt version to 5.5 (because of Q_ENUM usage). REVIEW: 129604 --- src/tests/kfileitemmodeltest.cpp | 6 +++--- src/tests/kitemsettest.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/tests') diff --git a/src/tests/kfileitemmodeltest.cpp b/src/tests/kfileitemmodeltest.cpp index 6c45e114b..ac15693b6 100644 --- a/src/tests/kfileitemmodeltest.cpp +++ b/src/tests/kfileitemmodeltest.cpp @@ -154,9 +154,9 @@ void KFileItemModelTest::testDefaultSortRole() QVERIFY(itemsInsertedSpy.wait()); QCOMPARE(m_model->count(), 3); - QCOMPARE(m_model->data(0)["text"].toString(), QString("a.txt")); - QCOMPARE(m_model->data(1)["text"].toString(), QString("b.txt")); - QCOMPARE(m_model->data(2)["text"].toString(), QString("c.txt")); + QCOMPARE(m_model->data(0).value("text").toString(), QString("a.txt")); + QCOMPARE(m_model->data(1).value("text").toString(), QString("b.txt")); + QCOMPARE(m_model->data(2).value("text").toString(), QString("c.txt")); } void KFileItemModelTest::testDefaultGroupedSorting() diff --git a/src/tests/kitemsettest.cpp b/src/tests/kitemsettest.cpp index 0d14e20fa..f559475a6 100644 --- a/src/tests/kitemsettest.cpp +++ b/src/tests/kitemsettest.cpp @@ -72,14 +72,14 @@ QVector KItemRangeList2QVector(const KItemRangeList& itemRanges) static QSet KItemSet2QSet(const KItemSet& itemSet) { QSet result; - foreach (int i, itemSet) { + for (int i : itemSet) { result.insert(i); } // Check that the conversion was successful. Q_ASSERT(itemSet.count() == result.count()); - foreach (int i, itemSet) { + for (int i : itemSet) { Q_ASSERT(result.contains(i)); } @@ -239,7 +239,7 @@ void KItemSetTest::testIterators() QCOMPARE(testQVector, itemsQVector); testQVector.clear(); - foreach (int i, itemSet) { + for (int i : itemSet) { testQVector.append(i); } QCOMPARE(testQVector, itemsQVector); -- cgit v1.3 From abb7799f7e007601a5f75ea85d9081bdb4d06a0a Mon Sep 17 00:00:00 2001 From: Elvis Angelaccio Date: Sat, 3 Dec 2016 18:04:24 +0100 Subject: Fix viewpropertiestest when GlobalViewProps is true The test was not saving its changes to the global settings, so it was passing on the CI only because the default value of GlobalViewProps is already false. If GlobalViewProps was set to true instead, testAutoSave() would fail because save() was not called and GlobalViewProps was not --- src/tests/viewpropertiestest.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/tests') diff --git a/src/tests/viewpropertiestest.cpp b/src/tests/viewpropertiestest.cpp index 482e4127d..114afdc33 100644 --- a/src/tests/viewpropertiestest.cpp +++ b/src/tests/viewpropertiestest.cpp @@ -44,6 +44,7 @@ void ViewPropertiesTest::init() { m_globalViewProps = GeneralSettings::self()->globalViewProps(); GeneralSettings::self()->setGlobalViewProps(false); + GeneralSettings::self()->save(); // It is mandatory to create the test-directory inside the home-directory // of the user: ViewProperties does not write inside directories @@ -58,6 +59,7 @@ void ViewPropertiesTest::cleanup() m_testDir = 0; GeneralSettings::self()->setGlobalViewProps(m_globalViewProps); + GeneralSettings::self()->save(); } /** -- cgit v1.3 From 67c007889ecc4eada434cbe390110b2e7566aa41 Mon Sep 17 00:00:00 2001 From: Ilya Bizyaev Date: Tue, 3 Jan 2017 11:23:03 +0100 Subject: Add missing Q_OBJECT macros REVIEW: 129738 --- src/tests/kitemlistcontrollertest.cpp | 1 + src/tests/kitemlistselectionmanagertest.cpp | 1 + 2 files changed, 2 insertions(+) (limited to 'src/tests') diff --git a/src/tests/kitemlistcontrollertest.cpp b/src/tests/kitemlistcontrollertest.cpp index e170e7b5b..92d05c4d4 100644 --- a/src/tests/kitemlistcontrollertest.cpp +++ b/src/tests/kitemlistcontrollertest.cpp @@ -37,6 +37,7 @@ */ class KItemListControllerTestStyle : public QProxyStyle { + Q_OBJECT public: KItemListControllerTestStyle(QStyle* style) : QProxyStyle(style), diff --git a/src/tests/kitemlistselectionmanagertest.cpp b/src/tests/kitemlistselectionmanagertest.cpp index b183de302..5dce57f3c 100644 --- a/src/tests/kitemlistselectionmanagertest.cpp +++ b/src/tests/kitemlistselectionmanagertest.cpp @@ -26,6 +26,7 @@ class DummyModel : public KItemModelBase { + Q_OBJECT public: DummyModel(); void setCount(int count); -- cgit v1.3 From 726515cfd43e3a1af61ab624d08f509e8e5f0a9f Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Tue, 3 Jan 2017 13:17:54 +0100 Subject: Add missing Q_DECL_OVERRIDE --- src/dolphindockwidget.cpp | 4 ++-- src/kitemviews/kitemlistcontainer.cpp | 2 +- src/kitemviews/private/kfileitemmodeldirlister.h | 2 +- src/kitemviews/private/kitemlistheaderwidget.h | 16 ++++++++-------- src/kitemviews/private/kitemlistroleeditor.h | 6 +++--- src/kitemviews/private/kitemlistselectiontoggle.h | 4 ++-- src/kitemviews/private/kitemlistsmoothscroller.h | 2 +- src/panels/information/phononwidget.cpp | 2 +- src/tests/kitemlistselectionmanagertest.cpp | 4 ++-- 9 files changed, 21 insertions(+), 21 deletions(-) (limited to 'src/tests') diff --git a/src/dolphindockwidget.cpp b/src/dolphindockwidget.cpp index 82cf91186..ccbecb0d6 100644 --- a/src/dolphindockwidget.cpp +++ b/src/dolphindockwidget.cpp @@ -38,13 +38,13 @@ public: DolphinDockTitleBar(QWidget* parent = 0) : QWidget(parent) {} virtual ~DolphinDockTitleBar() {} - virtual QSize minimumSizeHint() const + QSize minimumSizeHint() const Q_DECL_OVERRIDE { const int border = style()->pixelMetric(QStyle::PM_DockWidgetTitleBarButtonMargin); return QSize(border, border); } - virtual QSize sizeHint() const + QSize sizeHint() const Q_DECL_OVERRIDE { return minimumSizeHint(); } diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index 6a0c5756c..b4ea62fac 100644 --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -48,7 +48,7 @@ class KItemListContainerViewport : public QGraphicsView public: KItemListContainerViewport(QGraphicsScene* scene, QWidget* parent); protected: - virtual void wheelEvent(QWheelEvent* event); + void wheelEvent(QWheelEvent* event) Q_DECL_OVERRIDE; }; KItemListContainerViewport::KItemListContainerViewport(QGraphicsScene* scene, QWidget* parent) : diff --git a/src/kitemviews/private/kfileitemmodeldirlister.h b/src/kitemviews/private/kfileitemmodeldirlister.h index c2c621aed..5aa2b6303 100644 --- a/src/kitemviews/private/kfileitemmodeldirlister.h +++ b/src/kitemviews/private/kfileitemmodeldirlister.h @@ -48,7 +48,7 @@ signals: void urlIsFileError(const QUrl& url); protected: - virtual void handleError(KIO::Job* job); + void handleError(KIO::Job* job) Q_DECL_OVERRIDE; }; #endif diff --git a/src/kitemviews/private/kitemlistheaderwidget.h b/src/kitemviews/private/kitemlistheaderwidget.h index 2a80c205d..2342b4907 100644 --- a/src/kitemviews/private/kitemlistheaderwidget.h +++ b/src/kitemviews/private/kitemlistheaderwidget.h @@ -64,7 +64,7 @@ public: qreal minimumColumnWidth() const; - virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0); + void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0) Q_DECL_OVERRIDE; signals: /** @@ -104,13 +104,13 @@ signals: void sortRoleChanged(const QByteArray& current, const QByteArray& previous); protected: - virtual void mousePressEvent(QGraphicsSceneMouseEvent* event); - virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent* event); - virtual void mouseMoveEvent(QGraphicsSceneMouseEvent* event); - virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event); - virtual void hoverEnterEvent(QGraphicsSceneHoverEvent* event); - virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent* event); - virtual void hoverMoveEvent(QGraphicsSceneHoverEvent* event); + void mousePressEvent(QGraphicsSceneMouseEvent* event) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QGraphicsSceneMouseEvent* event) Q_DECL_OVERRIDE; + void mouseMoveEvent(QGraphicsSceneMouseEvent* event) Q_DECL_OVERRIDE; + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) Q_DECL_OVERRIDE; + void hoverEnterEvent(QGraphicsSceneHoverEvent* event) Q_DECL_OVERRIDE; + void hoverLeaveEvent(QGraphicsSceneHoverEvent* event) Q_DECL_OVERRIDE; + void hoverMoveEvent(QGraphicsSceneHoverEvent* event) Q_DECL_OVERRIDE; private slots: void slotSortRoleChanged(const QByteArray& current, const QByteArray& previous); diff --git a/src/kitemviews/private/kitemlistroleeditor.h b/src/kitemviews/private/kitemlistroleeditor.h index 3b8f96865..f889ea4f4 100644 --- a/src/kitemviews/private/kitemlistroleeditor.h +++ b/src/kitemviews/private/kitemlistroleeditor.h @@ -44,15 +44,15 @@ public: void setRole(const QByteArray& role); QByteArray role() const; - virtual bool eventFilter(QObject* watched, QEvent* event); + bool eventFilter(QObject* watched, QEvent* event) Q_DECL_OVERRIDE; signals: void roleEditingFinished(const QByteArray& role, const QVariant& value); void roleEditingCanceled(const QByteArray& role, const QVariant& value); protected: - virtual bool event(QEvent* event); - virtual void keyPressEvent(QKeyEvent* event); + bool event(QEvent* event) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent* event) Q_DECL_OVERRIDE; private slots: /** diff --git a/src/kitemviews/private/kitemlistselectiontoggle.h b/src/kitemviews/private/kitemlistselectiontoggle.h index d058ee988..e3f5bb63c 100644 --- a/src/kitemviews/private/kitemlistselectiontoggle.h +++ b/src/kitemviews/private/kitemlistselectiontoggle.h @@ -42,10 +42,10 @@ public: void setHovered(bool hovered); - virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0); + void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0) Q_DECL_OVERRIDE; protected: - virtual void resizeEvent(QGraphicsSceneResizeEvent* event); + void resizeEvent(QGraphicsSceneResizeEvent* event) Q_DECL_OVERRIDE; private: void updatePixmap(); diff --git a/src/kitemviews/private/kitemlistsmoothscroller.h b/src/kitemviews/private/kitemlistsmoothscroller.h index a3576a3fd..7d01a6b62 100644 --- a/src/kitemviews/private/kitemlistsmoothscroller.h +++ b/src/kitemviews/private/kitemlistsmoothscroller.h @@ -83,7 +83,7 @@ public: void handleWheelEvent(QWheelEvent* event); protected: - virtual bool eventFilter(QObject* obj, QEvent* event); + bool eventFilter(QObject* obj, QEvent* event) Q_DECL_OVERRIDE; private slots: void slotAnimationStateChanged(QAbstractAnimation::State newState, diff --git a/src/panels/information/phononwidget.cpp b/src/panels/information/phononwidget.cpp index e4885ab76..ac4a32506 100644 --- a/src/panels/information/phononwidget.cpp +++ b/src/panels/information/phononwidget.cpp @@ -52,7 +52,7 @@ class EmbeddedVideoPlayer : public Phonon::VideoWidget updateGeometry(); } - virtual QSize sizeHint() const + QSize sizeHint() const Q_DECL_OVERRIDE { return m_sizeHint.isValid() ? m_sizeHint : Phonon::VideoWidget::sizeHint(); } diff --git a/src/tests/kitemlistselectionmanagertest.cpp b/src/tests/kitemlistselectionmanagertest.cpp index 5dce57f3c..18a79bd3f 100644 --- a/src/tests/kitemlistselectionmanagertest.cpp +++ b/src/tests/kitemlistselectionmanagertest.cpp @@ -30,8 +30,8 @@ class DummyModel : public KItemModelBase public: DummyModel(); void setCount(int count); - virtual int count() const; - virtual QHash data(int index) const; + int count() const Q_DECL_OVERRIDE; + QHash data(int index) const Q_DECL_OVERRIDE; private: int m_count; -- cgit v1.3 From 97b5435b6b3debc443f8fa815d0f2adcef61f492 Mon Sep 17 00:00:00 2001 From: Elvis Angelaccio Date: Wed, 18 Jan 2017 23:49:41 +0100 Subject: Remove extra semicolon GIT_SILENT --- src/tests/kitemsettest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/tests') diff --git a/src/tests/kitemsettest.cpp b/src/tests/kitemsettest.cpp index f559475a6..d31993947 100644 --- a/src/tests/kitemsettest.cpp +++ b/src/tests/kitemsettest.cpp @@ -22,7 +22,7 @@ #include #include -Q_DECLARE_METATYPE(KItemRangeList); +Q_DECLARE_METATYPE(KItemRangeList) /** * Converts a KItemRangeList to a KItemSet. -- cgit v1.3 From 0aed243bebae72d85aa06032bdf2d6ba2b58141d Mon Sep 17 00:00:00 2001 From: Don Nguyen Date: Sat, 21 Jan 2017 00:04:38 +0100 Subject: Change "Date" to "Modified" and allow access to new "Accessed" time field This is merge of #128964 and #128942. This will impelement changing the "Date" field to "Modified" and allow a new "Accessed" time field to be available. This also includes changes to update configuration files. REVIEW: 129077 --- src/kitemviews/kfileitemlistwidget.cpp | 2 +- src/kitemviews/kfileitemmodel.cpp | 58 ++++++++++++++++++++-------------- src/kitemviews/kfileitemmodel.h | 4 +-- src/panels/places/placesitemmodel.cpp | 2 +- src/settings/viewpropertiesdialog.cpp | 2 +- src/tests/kfileitemmodeltest.cpp | 8 ++--- src/views/viewproperties.cpp | 31 ++++++++++++++++-- src/views/viewproperties.h | 6 ++++ 8 files changed, 78 insertions(+), 35 deletions(-) (limited to 'src/tests') diff --git a/src/kitemviews/kfileitemlistwidget.cpp b/src/kitemviews/kfileitemlistwidget.cpp index 7e5b4bb13..e0548ab2a 100644 --- a/src/kitemviews/kfileitemlistwidget.cpp +++ b/src/kitemviews/kfileitemlistwidget.cpp @@ -80,7 +80,7 @@ QString KFileItemListWidgetInformant::roleText(const QByteArray& role, const KIO::filesize_t size = roleValue.value(); text = KFormat().formatByteSize(size); } - } else if (role == "date") { + } else if (role == "modificationtime" || role == "accesstime") { const QDateTime dateTime = roleValue.toDateTime(); text = QLocale().toString(dateTime, QLocale::ShortFormat); } else { diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index aaa628102..7e14baff0 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -328,7 +328,8 @@ QList > KFileItemModel::groups() const switch (typeForRole(sortRole())) { case NameRole: m_groups = nameRoleGroups(); break; case SizeRole: m_groups = sizeRoleGroups(); break; - case DateRole: m_groups = dateRoleGroups(); break; + case ModificationTimeRole: m_groups = timeRoleGroups(KFileItem::ModificationTime); break; + case AccessTimeRole: m_groups = timeRoleGroups(KFileItem::AccessTime); break; case PermissionsRole: m_groups = permissionRoleGroups(); break; case RatingRole: m_groups = ratingRoleGroups(); break; default: m_groups = genericStringRoleGroups(sortRole()); break; @@ -1532,12 +1533,20 @@ QHash KFileItemModel::retrieveData(const KFileItem& item, data.insert(sharedValue("size"), item.size()); } - if (m_requestRole[DateRole]) { + if (m_requestRole[ModificationTimeRole]) { // Don't use KFileItem::timeString() as this is too expensive when // having several thousands of items. Instead the formatting of the // date-time will be done on-demand by the view when the date will be shown. const QDateTime dateTime = item.time(KFileItem::ModificationTime); - data.insert(sharedValue("date"), dateTime); + data.insert(sharedValue("modificationtime"), dateTime); + } + + if (m_requestRole[AccessTimeRole]) { + // Don't use KFileItem::timeString() as this is too expensive when + // having several thousands of items. Instead the formatting of the + // date-time will be done on-demand by the view when the date will be shown. + const QDateTime dateTime = item.time(KFileItem::AccessTime); + data.insert(sharedValue("accesstime"), dateTime); } if (m_requestRole[PermissionsRole]) { @@ -1762,7 +1771,7 @@ int KFileItemModel::sortRoleCompare(const ItemData* a, const ItemData* b, const break; } - case DateRole: { + case ModificationTimeRole: { const QDateTime dateTimeA = itemA.time(KFileItem::ModificationTime); const QDateTime dateTimeB = itemB.time(KFileItem::ModificationTime); if (dateTimeA < dateTimeB) { @@ -1942,7 +1951,7 @@ QList > KFileItemModel::sizeRoleGroups() const return groups; } -QList > KFileItemModel::dateRoleGroups() const +QList > KFileItemModel::timeRoleGroups(KFileItem::FileTimes which) const { Q_ASSERT(!m_itemData.isEmpty()); @@ -1951,26 +1960,26 @@ QList > KFileItemModel::dateRoleGroups() const const QDate currentDate = QDate::currentDate(); - QDate previousModifiedDate; + QDate previousFileDate; QString groupValue; for (int i = 0; i <= maxIndex; ++i) { if (isChildItem(i)) { continue; } - const QDateTime modifiedTime = m_itemData.at(i)->item.time(KFileItem::ModificationTime); - const QDate modifiedDate = modifiedTime.date(); - if (modifiedDate == previousModifiedDate) { + const QDateTime fileTime = m_itemData.at(i)->item.time(which); + const QDate fileDate = fileTime.date(); + if (fileDate == previousFileDate) { // The current item is in the same group as the previous item continue; } - previousModifiedDate = modifiedDate; + previousFileDate = fileDate; - const int daysDistance = modifiedDate.daysTo(currentDate); + const int daysDistance = fileDate.daysTo(currentDate); QString newGroupValue; - if (currentDate.year() == modifiedDate.year() && - currentDate.month() == modifiedDate.month()) { + if (currentDate.year() == fileDate.year() && + currentDate.month() == fileDate.month()) { switch (daysDistance / 7) { case 0: @@ -1978,7 +1987,7 @@ QList > KFileItemModel::dateRoleGroups() const case 0: newGroupValue = i18nc("@title:group Date", "Today"); break; case 1: newGroupValue = i18nc("@title:group Date", "Yesterday"); break; default: - newGroupValue = modifiedTime.toString( + newGroupValue = fileTime.toString( i18nc("@title:group Date: The week day name: dddd", "dddd")); newGroupValue = i18nc("Can be used to script translation of \"dddd\"" "with context @title:group Date", "%1", newGroupValue); @@ -2002,18 +2011,18 @@ QList > KFileItemModel::dateRoleGroups() const } } else { const QDate lastMonthDate = currentDate.addMonths(-1); - if (lastMonthDate.year() == modifiedDate.year() && - lastMonthDate.month() == modifiedDate.month()) { + if (lastMonthDate.year() == fileDate.year() && + lastMonthDate.month() == fileDate.month()) { if (daysDistance == 1) { - newGroupValue = modifiedTime.toString(i18nc("@title:group Date: " + newGroupValue = fileTime.toString(i18nc("@title:group Date: " "MMMM is full month name in current locale, and yyyy is " "full year number", "'Yesterday' (MMMM, yyyy)")); newGroupValue = i18nc("Can be used to script translation of " "\"'Yesterday' (MMMM, yyyy)\" with context @title:group Date", "%1", newGroupValue); } else if (daysDistance <= 7) { - newGroupValue = modifiedTime.toString(i18nc("@title:group Date: " + newGroupValue = fileTime.toString(i18nc("@title:group Date: " "The week day name: dddd, MMMM is full month name " "in current locale, and yyyy is full year number", "dddd (MMMM, yyyy)")); @@ -2021,28 +2030,28 @@ QList > KFileItemModel::dateRoleGroups() const "\"dddd (MMMM, yyyy)\" with context @title:group Date", "%1", newGroupValue); } else if (daysDistance <= 7 * 2) { - newGroupValue = modifiedTime.toString(i18nc("@title:group Date: " + newGroupValue = fileTime.toString(i18nc("@title:group Date: " "MMMM is full month name in current locale, and yyyy is " "full year number", "'One Week Ago' (MMMM, yyyy)")); newGroupValue = i18nc("Can be used to script translation of " "\"'One Week Ago' (MMMM, yyyy)\" with context @title:group Date", "%1", newGroupValue); } else if (daysDistance <= 7 * 3) { - newGroupValue = modifiedTime.toString(i18nc("@title:group Date: " + newGroupValue = fileTime.toString(i18nc("@title:group Date: " "MMMM is full month name in current locale, and yyyy is " "full year number", "'Two Weeks Ago' (MMMM, yyyy)")); newGroupValue = i18nc("Can be used to script translation of " "\"'Two Weeks Ago' (MMMM, yyyy)\" with context @title:group Date", "%1", newGroupValue); } else if (daysDistance <= 7 * 4) { - newGroupValue = modifiedTime.toString(i18nc("@title:group Date: " + newGroupValue = fileTime.toString(i18nc("@title:group Date: " "MMMM is full month name in current locale, and yyyy is " "full year number", "'Three Weeks Ago' (MMMM, yyyy)")); newGroupValue = i18nc("Can be used to script translation of " "\"'Three Weeks Ago' (MMMM, yyyy)\" with context @title:group Date", "%1", newGroupValue); } else { - newGroupValue = modifiedTime.toString(i18nc("@title:group Date: " + newGroupValue = fileTime.toString(i18nc("@title:group Date: " "MMMM is full month name in current locale, and yyyy is " "full year number", "'Earlier on' MMMM, yyyy")); newGroupValue = i18nc("Can be used to script translation of " @@ -2050,7 +2059,7 @@ QList > KFileItemModel::dateRoleGroups() const "%1", newGroupValue); } } else { - newGroupValue = modifiedTime.toString(i18nc("@title:group " + newGroupValue = fileTime.toString(i18nc("@title:group " "The month and year: MMMM is full month name in current locale, " "and yyyy is full year number", "MMMM, yyyy")); newGroupValue = i18nc("Can be used to script translation of " @@ -2221,7 +2230,8 @@ const KFileItemModel::RoleInfoMap* KFileItemModel::rolesInfoMap(int& count) { 0, NoRole, 0, 0, 0, 0, false, false }, { "text", NameRole, I18N_NOOP2_NOSTRIP("@label", "Name"), 0, 0, false, false }, { "size", SizeRole, I18N_NOOP2_NOSTRIP("@label", "Size"), 0, 0, false, false }, - { "date", DateRole, I18N_NOOP2_NOSTRIP("@label", "Date"), 0, 0, false, false }, + { "modificationtime", ModificationTimeRole, I18N_NOOP2_NOSTRIP("@label", "Modified"), 0, 0, false, false }, + { "accesstime", AccessTimeRole, I18N_NOOP2_NOSTRIP("@label", "Accessed"), 0, 0, false, false }, { "type", TypeRole, I18N_NOOP2_NOSTRIP("@label", "Type"), 0, 0, false, false }, { "rating", RatingRole, I18N_NOOP2_NOSTRIP("@label", "Rating"), 0, 0, true, false }, { "tags", TagsRole, I18N_NOOP2_NOSTRIP("@label", "Tags"), 0, 0, true, false }, diff --git a/src/kitemviews/kfileitemmodel.h b/src/kitemviews/kfileitemmodel.h index 717afb9a7..dc5746a89 100644 --- a/src/kitemviews/kfileitemmodel.h +++ b/src/kitemviews/kfileitemmodel.h @@ -280,7 +280,7 @@ private slots: private: enum RoleType { // User visible roles: - NoRole, NameRole, SizeRole, DateRole, PermissionsRole, OwnerRole, + NoRole, NameRole, SizeRole, ModificationTimeRole, AccessTimeRole, PermissionsRole, OwnerRole, GroupRole, TypeRole, DestinationRole, PathRole, // User visible roles available with Baloo: CommentRole, TagsRole, RatingRole, ImageSizeRole, OrientationRole, @@ -383,7 +383,7 @@ private: QList > nameRoleGroups() const; QList > sizeRoleGroups() const; - QList > dateRoleGroups() const; + QList > timeRoleGroups(KFileItem::FileTimes which) const; QList > permissionRoleGroups() const; QList > ratingRoleGroups() const; QList > genericStringRoleGroups(const QByteArray& typeForRole) const; diff --git a/src/panels/places/placesitemmodel.cpp b/src/panels/places/placesitemmodel.cpp index 25c4d51f6..8a02ead01 100644 --- a/src/panels/places/placesitemmodel.cpp +++ b/src/panels/places/placesitemmodel.cpp @@ -872,7 +872,7 @@ PlacesItem* PlacesItemModel::createSystemPlacesItem(const SystemBookmarkData& da props.setVisibleRoles({"text"}); } else if (data.url.scheme() == QLatin1String("timeline")) { props.setViewMode(DolphinView::DetailsView); - props.setVisibleRoles({"text", "date"}); + props.setVisibleRoles({"text", "modificationtime"}); } } } diff --git a/src/settings/viewpropertiesdialog.cpp b/src/settings/viewpropertiesdialog.cpp index 7407042d7..c317ed052 100644 --- a/src/settings/viewpropertiesdialog.cpp +++ b/src/settings/viewpropertiesdialog.cpp @@ -303,7 +303,7 @@ void ViewPropertiesDialog::configureAdditionalInfo() visibleRoles.clear(); visibleRoles.append("text"); visibleRoles.append("size"); - visibleRoles.append("date"); + visibleRoles.append("modificationtime"); m_viewProps->setVisibleRoles(visibleRoles); } diff --git a/src/tests/kfileitemmodeltest.cpp b/src/tests/kfileitemmodeltest.cpp index ac15693b6..59ff63069 100644 --- a/src/tests/kfileitemmodeltest.cpp +++ b/src/tests/kfileitemmodeltest.cpp @@ -882,8 +882,8 @@ void KFileItemModelTest::testSorting() // Sort by Date, descending m_model->setSortDirectoriesFirst(true); - m_model->setSortRole("date"); - QCOMPARE(m_model->sortRole(), QByteArray("date")); + m_model->setSortRole("modificationtime"); + QCOMPARE(m_model->sortRole(), QByteArray("modificationtime")); QCOMPARE(m_model->sortOrder(), Qt::DescendingOrder); QCOMPARE(itemsInModel(), QStringList() << "c" << "c-2" << "c-3" << "c-1" << "b" << "d" << "a" << "e"); QCOMPARE(itemsMovedSpy.count(), 1); @@ -892,7 +892,7 @@ void KFileItemModelTest::testSorting() // Sort by Date, ascending m_model->setSortOrder(Qt::AscendingOrder); - QCOMPARE(m_model->sortRole(), QByteArray("date")); + QCOMPARE(m_model->sortRole(), QByteArray("modificationtime")); QCOMPARE(m_model->sortOrder(), Qt::AscendingOrder); QCOMPARE(itemsInModel(), QStringList() << "c" << "c-2" << "c-3" << "c-1" << "e" << "a" << "d" << "b"); QCOMPARE(itemsMovedSpy.count(), 1); @@ -901,7 +901,7 @@ void KFileItemModelTest::testSorting() // Sort by Date, ascending, 'Sort Folders First' disabled m_model->setSortDirectoriesFirst(false); - QCOMPARE(m_model->sortRole(), QByteArray("date")); + QCOMPARE(m_model->sortRole(), QByteArray("modificationtime")); QCOMPARE(m_model->sortOrder(), Qt::AscendingOrder); QVERIFY(!m_model->sortDirectoriesFirst()); QCOMPARE(itemsInModel(), QStringList() << "e" << "a" << "c" << "c-1" << "c-2" << "c-3" << "d" << "b"); diff --git a/src/views/viewproperties.cpp b/src/views/viewproperties.cpp index 597baa293..ca52be890 100644 --- a/src/views/viewproperties.cpp +++ b/src/views/viewproperties.cpp @@ -35,7 +35,8 @@ namespace { const int AdditionalInfoViewPropertiesVersion = 1; const int NameRolePropertiesVersion = 2; - const int CurrentViewPropertiesVersion = 3; + const int DateRolePropertiesVersion = 4; + const int CurrentViewPropertiesVersion = 4; // String representation to mark the additional properties of // the details view as customized by the user. See @@ -123,6 +124,11 @@ ViewProperties::ViewProperties(const QUrl& url) : Q_ASSERT(m_node->version() == NameRolePropertiesVersion); } + if (m_node->version() < DateRolePropertiesVersion) { + convertDateRoleToModificationTimeRole(); + Q_ASSERT(m_node->version() == DateRolePropertiesVersion); + } + m_node->setVersion(CurrentViewPropertiesVersion); } } @@ -309,7 +315,7 @@ QList ViewProperties::visibleRoles() const && !visibleRoles.contains(CustomizedDetailsString); if (useDefaultValues) { roles.append("size"); - roles.append("date"); + roles.append("modificationtime"); } return roles; @@ -448,6 +454,27 @@ void ViewProperties::convertNameRoleToTextRole() update(); } +void ViewProperties::convertDateRoleToModificationTimeRole() +{ + QStringList visibleRoles = m_node->visibleRoles(); + for (int i = 0; i < visibleRoles.count(); ++i) { + if (visibleRoles[i].endsWith(QLatin1String("_date"))) { + const int leftLength = visibleRoles[i].length() - 5; + visibleRoles[i] = visibleRoles[i].left(leftLength) + "_modificationtime"; + } + } + + QString sortRole = m_node->sortRole(); + if (sortRole == QLatin1String("date")) { + sortRole = QStringLiteral("modificationtime"); + } + + m_node->setVisibleRoles(visibleRoles); + m_node->setSortRole(sortRole); + m_node->setVersion(DateRolePropertiesVersion); + update(); +} + bool ViewProperties::isPartOfHome(const QString& filePath) { // For performance reasons cache the path in a static QString diff --git a/src/views/viewproperties.h b/src/views/viewproperties.h index dc118e2d7..05b80f455 100644 --- a/src/views/viewproperties.h +++ b/src/views/viewproperties.h @@ -153,6 +153,12 @@ private: */ void convertNameRoleToTextRole(); + /** + * Provides backward compatibility with .directory files created with + * Dolphin < 16.11.70: Converts the old name-role "date" to "modificationtime" + */ + + void convertDateRoleToModificationTimeRole(); /** * Returns true, if \a filePath is part of the home-path (see QDir::homePath()). */ -- cgit v1.3