Browse Source

support sorting items by clicking the column header

Le Tan 7 years ago
parent
commit
47b4cc88aa
5 changed files with 15 additions and 7 deletions
  1. 3 0
      src/dialog/vsortdialog.cpp
  2. 6 3
      src/utils/vutils.cpp
  3. 3 1
      src/utils/vutils.h
  4. 1 1
      src/vdirectorytree.cpp
  5. 2 2
      src/vfilelist.cpp

+ 3 - 0
src/dialog/vsortdialog.cpp

@@ -117,6 +117,9 @@ void VSortDialog::treeUpdated()
         QTreeWidgetItem *item = m_treeWidget->topLevelItem(i);
         item->setFlags(item->flags() & ~Qt::ItemIsDropEnabled);
     }
+
+    m_treeWidget->sortByColumn(-1);
+    m_treeWidget->setSortingEnabled(true);
 }
 
 void VSortDialog::handleMoveOperation(MoveOperation p_op)

+ 6 - 3
src/utils/vutils.cpp

@@ -1119,10 +1119,13 @@ QVector<VElementRegion> VUtils::fetchImageRegionsUsingParser(const QString &p_co
     return regs;
 }
 
-QString VUtils::displayDateTime(const QDateTime &p_dateTime)
+QString VUtils::displayDateTime(const QDateTime &p_dateTime,
+                                bool p_uniformNum)
 {
-    QString res = p_dateTime.date().toString(Qt::DefaultLocaleLongDate);
-    res += " " + p_dateTime.time().toString();
+    QString res = p_dateTime.date().toString(p_uniformNum ? Qt::ISODate
+                                                          : Qt::DefaultLocaleLongDate);
+    res += " " + p_dateTime.time().toString(p_uniformNum ? Qt::ISODate
+                                                         : Qt::TextDate);
     return res;
 }
 

+ 3 - 1
src/utils/vutils.h

@@ -261,7 +261,9 @@ public:
     // Delete file specified by @p_path.
     static bool deleteFile(const QString &p_path);
 
-    static QString displayDateTime(const QDateTime &p_dateTime);
+    // @p_uniformNum: if true, we use YYYY/MM/DD HH:mm:ss form, which is good for
+    // sorting.
+    static QString displayDateTime(const QDateTime &p_dateTime, bool p_uniformNum = false);
 
     // Check if file @p_name exists in @p_dir.
     // @p_forceCaseInsensitive: if true, will check the name ignoring the case.

+ 1 - 1
src/vdirectorytree.cpp

@@ -1166,7 +1166,7 @@ void VDirectoryTree::sortItems(VDirectory *p_dir)
     for (int i = 0; i < dirs.size(); ++i) {
         const VDirectory *dir = dirs[i];
         Q_ASSERT(dir->isOpened());
-        QString createdTime = VUtils::displayDateTime(dir->getCreatedTimeUtc().toLocalTime());
+        QString createdTime = VUtils::displayDateTime(dir->getCreatedTimeUtc().toLocalTime(), true);
         QStringList cols;
         cols << dir->getName() << createdTime;
         QTreeWidgetItem *item = new QTreeWidgetItem(tree, cols);

+ 2 - 2
src/vfilelist.cpp

@@ -1041,8 +1041,8 @@ void VFileList::sortItems()
 
     for (int i = 0; i < files.size(); ++i) {
         const VNoteFile *file = files[i];
-        QString createdTime = VUtils::displayDateTime(file->getCreatedTimeUtc().toLocalTime());
-        QString modifiedTime = VUtils::displayDateTime(file->getModifiedTimeUtc().toLocalTime());
+        QString createdTime = VUtils::displayDateTime(file->getCreatedTimeUtc().toLocalTime(), true);
+        QString modifiedTime = VUtils::displayDateTime(file->getModifiedTimeUtc().toLocalTime(), true);
         QStringList cols;
         cols << file->getName() << createdTime << modifiedTime;
         QTreeWidgetItem *item = new QTreeWidgetItem(tree, cols);