[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [krusader] krusader: Panel: Added columns for changed and access time;
From:       Alexander Bikadorov <null () kde ! org>
Date:       2017-05-31 19:23:13
Message-ID: E1dG9D7-00015r-0S () code ! kde ! org
[Download RAW message or body]

Git commit 68a1889b56a7d0c4f856447bac79ed141b343391 by Alexander Bikadorov.
Committed on 30/05/2017 at 16:26.
Pushed by abikadorov into branch 'master'.

Panel: Added columns for changed and access time;

+ Added to tooltip
+ New global config version parameter

FIXED: [ 173655 ] Added changed and access time in detailed view
BUG: 173655

M  +2    -0    krusader/Panel/krinterbriefview.cpp
M  +9    -0    krusader/Panel/krinterdetailedview.cpp
M  +11   -3    krusader/Panel/krsort.cpp
M  +1    -0    krusader/Panel/krsort.h
M  +3    -1    krusader/Panel/krviewproperties.h
M  +11   -3    krusader/Panel/listmodel.cpp
M  +26   -28   krusader/UserAction/expander.cpp
M  +2    -0    krusader/krglobal.cpp
M  +4    -0    krusader/krglobal.h
M  +14   -26   krusader/krusader.cpp

https://commits.kde.org/krusader/68a1889b56a7d0c4f856447bac79ed141b343391

diff --git a/krusader/Panel/krinterbriefview.cpp \
b/krusader/Panel/krinterbriefview.cpp index 57d342d0..9b387060 100644
--- a/krusader/Panel/krinterbriefview.cpp
+++ b/krusader/Panel/krinterbriefview.cpp
@@ -132,6 +132,8 @@ void KrInterBriefView::setup()
     _header->hideSection(KrViewProperties::KrPermissions);
     _header->hideSection(KrViewProperties::Owner);
     _header->hideSection(KrViewProperties::Group);
+    _header->hideSection(KrViewProperties::Changed);
+    _header->hideSection(KrViewProperties::Accessed);
     _header->setStretchLastSection(true);
     _header->setSectionResizeMode(QHeaderView::Fixed);
     _header->setSectionsClickable(true);
diff --git a/krusader/Panel/krinterdetailedview.cpp \
b/krusader/Panel/krinterdetailedview.cpp index 63326e06..8c9090ff 100644
--- a/krusader/Panel/krinterdetailedview.cpp
+++ b/krusader/Panel/krinterdetailedview.cpp
@@ -112,6 +112,8 @@ void KrInterDetailedView::doRestoreSettings(KConfigGroup grp)
         hideColumn(KrViewProperties::Permissions);
         hideColumn(KrViewProperties::Owner);
         hideColumn(KrViewProperties::Group);
+        hideColumn(KrViewProperties::Changed);
+        hideColumn(KrViewProperties::Accessed);
         header()->resizeSection(KrViewProperties::Ext, \
                QFontMetrics(_viewFont).width("tar.bz2  "));
         header()->resizeSection(KrViewProperties::KrPermissions, \
                QFontMetrics(_viewFont).width("rwx  "));
         header()->resizeSection(KrViewProperties::Size, \
QFontMetrics(_viewFont).width("9") * 10); @@ -122,6 +124,13 @@ void \
                KrInterDetailedView::doRestoreSettings(KConfigGroup grp)
         header()->resizeSection(KrViewProperties::Modified, \
QFontMetrics(_viewFont).width(desc));  } else {
         header()->restoreState(savedState);
+
+        // do not show new columns by default; restoreState() shows columns not \
saved +        if (KrGlobal::sCurrentConfigVersion < KrGlobal::sConfigVersion) {
+            hideColumn(KrViewProperties::Changed);
+            hideColumn(KrViewProperties::Accessed);
+        }
+
         _model->setExtensionEnabled(!isColumnHidden(KrViewProperties::Ext));
     }
 
diff --git a/krusader/Panel/krsort.cpp b/krusader/Panel/krsort.cpp
index 3a754b55..ca0c7fbe 100644
--- a/krusader/Panel/krsort.cpp
+++ b/krusader/Panel/krsort.cpp
@@ -280,9 +280,11 @@ bool itemLessThan(SortProps *sp, SortProps *sp2)
             return compareTexts(sp->name(), sp2->name(), sp->properties(), \
sp->isAscending(), true);  return file1->getSize() < file2->getSize();
     case KrViewProperties::Modified:
-        if (file1->getTime_t() == file2->getTime_t())
-            return compareTexts(sp->name(), sp2->name(), sp->properties(), \
                sp->isAscending(), true);
-        return file1->getTime_t() < file2->getTime_t();
+            return compareTime(file1->getTime_t(), file2->getTime_t(), sp, sp2);
+    case KrViewProperties::Changed:
+            return compareTime(file1->getChangedTime(), file2->getChangedTime(), sp, \
sp2); +    case KrViewProperties::Accessed:
+            return compareTime(file1->getAccessTime(), file2->getAccessTime(), sp, \
sp2);  case KrViewProperties::Type:
     case KrViewProperties::Permissions:
     case KrViewProperties::KrPermissions:
@@ -295,6 +297,12 @@ bool itemLessThan(SortProps *sp, SortProps *sp2)
     return sp->name() < sp2->name();
 }
 
+bool compareTime(time_t time1, time_t time2, SortProps *sp, SortProps *sp2)
+{
+    return time1 != time2 ? time1 < time2 :
+           compareTexts(sp->name(), sp2->name(), sp->properties(), \
sp->isAscending(), true); +}
+
 bool itemGreaterThan(SortProps *sp, SortProps *sp2)
 {
     return !itemLessThan(sp, sp2);
diff --git a/krusader/Panel/krsort.h b/krusader/Panel/krsort.h
index 21d79d2c..c06f05f9 100644
--- a/krusader/Panel/krsort.h
+++ b/krusader/Panel/krsort.h
@@ -92,6 +92,7 @@ private:
 bool compareTexts(QString aS1, QString aS2, const KrViewProperties * \
_viewProperties, bool asc, bool isName);  bool itemLessThan(SortProps *sp, SortProps \
*sp2);  bool itemGreaterThan(SortProps *sp, SortProps *sp2);
+bool compareTime(time_t time1, time_t time2, SortProps *sp, SortProps *sp2);
 
 typedef bool(*LessThanFunc)(SortProps*, SortProps*);
 
diff --git a/krusader/Panel/krviewproperties.h b/krusader/Panel/krviewproperties.h
index 7c6cc8c8..2dd6ce4d 100644
--- a/krusader/Panel/krviewproperties.h
+++ b/krusader/Panel/krviewproperties.h
@@ -61,7 +61,9 @@ public:
         KrPermissions = 0x6,
         Owner = 0x7,
         Group = 0x8,
-        MAX_COLUMNS = 0x09
+        Changed = 0x9,
+        Accessed = 0xa,
+        MAX_COLUMNS = 0x0b
     };
     enum SortOptions {
         Descending = 0x200,
diff --git a/krusader/Panel/listmodel.cpp b/krusader/Panel/listmodel.cpp
index 21ad8328..9c705c0d 100644
--- a/krusader/Panel/listmodel.cpp
+++ b/krusader/Panel/listmodel.cpp
@@ -150,9 +150,13 @@ QVariant ListModel::data(const QModelIndex& index, int role) \
const  return mimeType.isEmpty() ? QVariant() : mimeType;
         }
         case KrViewProperties::Modified: {
-            if (fileitem == _dummyFileItem)
-                return QVariant();
-            return dateText(fileitem->getTime_t());
+            return fileitem == _dummyFileItem ? QVariant() : \
dateText(fileitem->getTime_t()); +        }
+        case KrViewProperties::Changed: {
+            return fileitem == _dummyFileItem ? QVariant() : \
dateText(fileitem->getChangedTime()); +        }
+        case KrViewProperties::Accessed: {
+            return fileitem == _dummyFileItem ? QVariant() : \
dateText(fileitem->getAccessTime());  }
         case KrViewProperties::Permissions: {
             if (fileitem == _dummyFileItem)
@@ -406,6 +410,8 @@ QVariant ListModel::headerData(int section, Qt::Orientation \
orientation, int rol  case KrViewProperties::Size: return i18nc("File property", \
"Size");  case KrViewProperties::Type: return i18nc("File property", "Type");
     case KrViewProperties::Modified: return i18nc("File property", "Modified");
+    case KrViewProperties::Changed: return i18nc("File property", "Changed");
+    case KrViewProperties::Accessed: return i18nc("File property", "Accessed");
     case KrViewProperties::Permissions: return i18nc("File property", "Perms");
     case KrViewProperties::KrPermissions: return i18nc("File property", "rwx");
     case KrViewProperties::Owner: return i18nc("File property", "Owner");
@@ -516,6 +522,8 @@ QString ListModel::toolTipText(FileItem *fileItem) const
     }
     text += i18nc("File property", "Type: %1", KrView::mimeTypeText(fileItem));
     text += "<br>" + i18nc("File property", "Modified: %1", \
dateText(fileItem->getTime_t())); +    text += "<br>" + i18nc("File property", \
"Changed: %1", dateText(fileItem->getChangedTime())); +    text += "<br>" + \
i18nc("File property", "Last Access: %1", dateText(fileItem->getAccessTime()));  text \
+= "<br>" + i18nc("File property", "Permissions: %1",  \
                KrView::permissionsText(properties(), fileItem));
     text += "<br>" + i18nc("File property", "Owner: %1", fileItem->getOwner());
diff --git a/krusader/UserAction/expander.cpp b/krusader/UserAction/expander.cpp
index 84a85eaa..e40de596 100644
--- a/krusader/UserAction/expander.cpp
+++ b/krusader/UserAction/expander.cpp
@@ -802,34 +802,32 @@ TagString exp_ColSort::expFunc(const KrPanel* panel, const \
QStringList& paramete  
     if (parameter[0].toLower() == "name") {
         column = KrViewProperties::Name;
-    } else
-        if (parameter[0].toLower() == "ext") {
-            column = KrViewProperties::Ext;
-        } else
-            if (parameter[0].toLower() == "type") {
-                column = KrViewProperties::Type;
-            } else
-                if (parameter[0].toLower() == "size") {
-                    column = KrViewProperties::Size;
-                } else
-                    if (parameter[0].toLower() == "modified") {
-                        column = KrViewProperties::Modified;
-                    } else
-                        if (parameter[0].toLower() == "perms") {
-                            column = KrViewProperties::Permissions;
-                        } else
-                            if (parameter[0].toLower() == "rwx") {
-                                column = KrViewProperties::KrPermissions;
-                            } else
-                                if (parameter[0].toLower() == "owner") {
-                                    column = KrViewProperties::Owner;
-                                } else
-                                    if (parameter[0].toLower() == "group") {
-                                        column = KrViewProperties::Group;
-                                    } else {
-                                        setError(exp, Error(Error::exp_S_WARNING, \
Error::exp_C_ARGUMENT, i18n("Expander: unknown column specified for %_ColSort(%1)%", \
                parameter[0])));
-                                        return QString();
-                                    }
+    } else if (parameter[0].toLower() == "ext") {
+        column = KrViewProperties::Ext;
+    } else if (parameter[0].toLower() == "type") {
+        column = KrViewProperties::Type;
+    } else if (parameter[0].toLower() == "size") {
+        column = KrViewProperties::Size;
+    } else if (parameter[0].toLower() == "modified") {
+        column = KrViewProperties::Modified;
+    } else if (parameter[0].toLower() == "changed") {
+        column = KrViewProperties::Changed;
+    } else if (parameter[0].toLower() == "accessed") {
+        column = KrViewProperties::Accessed;
+    } else if (parameter[0].toLower() == "perms") {
+        column = KrViewProperties::Permissions;
+    } else if (parameter[0].toLower() == "rwx") {
+        column = KrViewProperties::KrPermissions;
+    } else if (parameter[0].toLower() == "owner") {
+        column = KrViewProperties::Owner;
+    } else if (parameter[0].toLower() == "group") {
+        column = KrViewProperties::Group;
+    } else {
+        setError(exp, Error(Error::exp_S_WARNING, Error::exp_C_ARGUMENT,
+                            i18n("Expander: unknown column specified for \
%_ColSort(%1)%", +                                 parameter[0])));
+        return QString();
+    }
 
     bool descending = panel->view->properties()->sortOptions & \
KrViewProperties::Descending;  
diff --git a/krusader/krglobal.cpp b/krusader/krglobal.cpp
index 60e29ced..89b38c11 100644
--- a/krusader/krglobal.cpp
+++ b/krusader/krglobal.cpp
@@ -51,6 +51,8 @@ JobMan *KrGlobal::jobMan = 0;
 // ListPanel *KrGlobal::activePanel = 0;
 QKeySequence KrGlobal::copyShortcut;
 
+const int KrGlobal::sConfigVersion;
+int KrGlobal::sCurrentConfigVersion;
 
 KrPanel *KrGlobal::activePanel()
 {
diff --git a/krusader/krglobal.h b/krusader/krglobal.h
index d7ab9eb8..b15cf0cc 100644
--- a/krusader/krglobal.h
+++ b/krusader/krglobal.h
@@ -74,6 +74,10 @@ public:
 
 //     static void enableAction(const char *name, bool enable);
 //     static QAction *getAction(const char *name);
+
+    /** Version of saved configuration. Use this to detect configuration updates. */
+    static const int sConfigVersion = 1;
+    static int sCurrentConfigVersion;
 };
 
 #define krConfig     KrGlobal::config
diff --git a/krusader/krusader.cpp b/krusader/krusader.cpp
index f28f2ac5..3e572ab4 100644
--- a/krusader/krusader.cpp
+++ b/krusader/krusader.cpp
@@ -128,7 +128,7 @@ Krusader::Krusader(const QCommandLineParser &parser) : \
KParts::MainWindow(0,  
     plzWait = new KRPleaseWaitHandler(this);
 
-    bool runKonfig = versionControl();
+    const bool runKonfig = versionControl();
 
     QString message;
     switch (krConfig->accessMode()) {
@@ -329,42 +329,27 @@ void Krusader::setTray(bool forceCreation)
 
 bool Krusader::versionControl()
 {
-#define FIRST_RUN "First Time"
-    bool retval = false;
     // create config file
     krConfig = KSharedConfig::openConfig().data();
     KConfigGroup nogroup(krConfig, QString());
-
-    bool firstRun = nogroup.readEntry(FIRST_RUN, true);
-
-#if 0
-    QString oldVerText = nogroup.readEntry("Version", "10.0");
-    oldVerText.truncate(oldVerText.lastIndexOf("."));     // remove the third dot
-    float oldVer = oldVerText.toFloat();
-    // older icompatible version
-    if (oldVer <= 0.9) {
-        KMessageBox::information(krApp, i18n("A configuration of 1.51 or older was \
detected. Krusader has to reset your configuration to default values.\nNote: your \
bookmarks and keybindings will remain intact.\nKrusader will now run \
                Konfigurator."));
-        /*if ( !QDir::home().remove( ".kde/share/config/krusaderrc" ) ) {
-           KMessageBox::error( krApp, i18n( "Unable to remove your krusaderrc file. \
                Please remove it manually and rerun Krusader." ) );
-           exit( 1 );
-        }*/
-        retval = true;
-        krConfig->reparseConfiguration();
-    }
-#endif
+    const bool firstRun = nogroup.readEntry("First Time", true);
+    KrGlobal::sCurrentConfigVersion = nogroup.readEntry("Config Version", -1);
 
     // first installation of krusader
     if (firstRun) {
-        KMessageBox::information(krApp, i18n("<qt><b>Welcome to Krusader.</b><p>As \
this is your first run, your machine will now be checked for external applications. \
Then the Konfigurator will be launched where you can customize Krusader to your \
                needs.</p></qt>"));
-        retval = true;
+        KMessageBox::information(
+            krApp, i18n("<qt><b>Welcome to Krusader.</b><p>As this is your first \
run, your machine " +                        "will now be checked for external \
applications. Then the Konfigurator will " +                        "be launched \
where you can customize Krusader to your needs.</p></qt>"));  }
     nogroup.writeEntry("Version", VERSION);
-    nogroup.writeEntry(FIRST_RUN, false);
+    nogroup.writeEntry("First Time", false);
     krConfig->sync();
 
-    QDir().mkpath(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) \
+ QStringLiteral("/krusader/")); +    \
QDir().mkpath(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + \
+                  QStringLiteral("/krusader/"));  
-    return retval;
+    return firstRun;
 }
 
 void Krusader::statusBarUpdate(const QString& mess)
@@ -425,6 +410,9 @@ void Krusader::saveSettings() {
         MAIN_VIEW->setTerminalEmulator(false, true);
     }
 
+    KConfigGroup noGroup(krConfig, QString());
+    noGroup.writeEntry("Config Version", KrGlobal::sConfigVersion);
+
     // save toolbar settings
     KConfigGroup cfg(krConfig, "Main Toolbar");
     toolBar()->saveSettings(cfg);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic