From kde-commits Wed May 31 19:23:13 2017 From: Alexander Bikadorov Date: Wed, 31 May 2017 19:23:13 +0000 To: kde-commits Subject: [krusader] krusader: Panel: Added columns for changed and access time; Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=149625860725428 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/krinterbr= iefview.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/krinte= rdetailedview.cpp index 63326e06..8c9090ff 100644 --- a/krusader/Panel/krinterdetailedview.cpp +++ b/krusader/Panel/krinterdetailedview.cpp @@ -112,6 +112,8 @@ void KrInterDetailedView::doRestoreSettings(KConfigGrou= p grp) hideColumn(KrViewProperties::Permissions); hideColumn(KrViewProperties::Owner); hideColumn(KrViewProperties::Group); + hideColumn(KrViewProperties::Changed); + hideColumn(KrViewProperties::Accessed); header()->resizeSection(KrViewProperties::Ext, QFontMetrics(_viewF= ont).width("tar.bz2 ")); header()->resizeSection(KrViewProperties::KrPermissions, QFontMetr= ics(_viewFont).width("rwx ")); header()->resizeSection(KrViewProperties::Size, QFontMetrics(_view= Font).width("9") * 10); @@ -122,6 +124,13 @@ void KrInterDetailedView::doRestoreSettings(KConfigGro= up grp) header()->resizeSection(KrViewProperties::Modified, QFontMetrics(_= viewFont).width(desc)); } else { header()->restoreState(savedState); + + // do not show new columns by default; restoreState() shows column= s 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() =3D=3D 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->getChangedT= ime(), sp, sp2); + case KrViewProperties::Accessed: + return compareTime(file1->getAccessTime(), file2->getAccessTim= e(), 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 !=3D time2 ? time1 < time2 : + compareTexts(sp->name(), sp2->name(), sp->properties(), sp->isA= scending(), 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 * _view= Properties, 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/krviewprope= rties.h index 7c6cc8c8..2dd6ce4d 100644 --- a/krusader/Panel/krviewproperties.h +++ b/krusader/Panel/krviewproperties.h @@ -61,7 +61,9 @@ public: KrPermissions =3D 0x6, Owner =3D 0x7, Group =3D 0x8, - MAX_COLUMNS =3D 0x09 + Changed =3D 0x9, + Accessed =3D 0xa, + MAX_COLUMNS =3D 0x0b }; enum SortOptions { Descending =3D 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 =3D=3D _dummyFileItem) - return QVariant(); - return dateText(fileitem->getTime_t()); + return fileitem =3D=3D _dummyFileItem ? QVariant() : dateText(= fileitem->getTime_t()); + } + case KrViewProperties::Changed: { + return fileitem =3D=3D _dummyFileItem ? QVariant() : dateText(= fileitem->getChangedTime()); + } + case KrViewProperties::Accessed: { + return fileitem =3D=3D _dummyFileItem ? QVariant() : dateText(= fileitem->getAccessTime()); } case KrViewProperties::Permissions: { if (fileitem =3D=3D _dummyFileItem) @@ -406,6 +410,8 @@ QVariant ListModel::headerData(int section, Qt::Orienta= tion 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", "Modifi= ed"); + case KrViewProperties::Changed: return i18nc("File property", "Changed= "); + case KrViewProperties::Accessed: return i18nc("File property", "Access= ed"); case KrViewProperties::Permissions: return i18nc("File property", "Per= ms"); case KrViewProperties::KrPermissions: return i18nc("File property", "r= wx"); case KrViewProperties::Owner: return i18nc("File property", "Owner"); @@ -516,6 +522,8 @@ QString ListModel::toolTipText(FileItem *fileItem) const } text +=3D i18nc("File property", "Type: %1", KrView::mimeTypeText(file= Item)); text +=3D "
" + i18nc("File property", "Modified: %1", dateText(fil= eItem->getTime_t())); + text +=3D "
" + i18nc("File property", "Changed: %1", dateText(file= Item->getChangedTime())); + text +=3D "
" + i18nc("File property", "Last Access: %1", dateText(= fileItem->getAccessTime())); text +=3D "
" + i18nc("File property", "Permissions: %1", KrView::permissionsText(properties(), fileItem)); text +=3D "
" + i18nc("File property", "Owner: %1", fileItem->getOw= ner()); diff --git a/krusader/UserAction/expander.cpp b/krusader/UserAction/expande= r.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() =3D=3D "name") { column =3D KrViewProperties::Name; - } else - if (parameter[0].toLower() =3D=3D "ext") { - column =3D KrViewProperties::Ext; - } else - if (parameter[0].toLower() =3D=3D "type") { - column =3D KrViewProperties::Type; - } else - if (parameter[0].toLower() =3D=3D "size") { - column =3D KrViewProperties::Size; - } else - if (parameter[0].toLower() =3D=3D "modified") { - column =3D KrViewProperties::Modified; - } else - if (parameter[0].toLower() =3D=3D "perms") { - column =3D KrViewProperties::Permissions; - } else - if (parameter[0].toLower() =3D=3D "rwx") { - column =3D KrViewProperties::KrPermissions; - } else - if (parameter[0].toLower() =3D=3D "owner")= { - column =3D KrViewProperties::Owner; - } else - if (parameter[0].toLower() =3D=3D "gro= up") { - column =3D KrViewProperties::Group; - } else { - setError(exp, Error(Error::exp_S_W= ARNING, Error::exp_C_ARGUMENT, i18n("Expander: unknown column specified for= %_ColSort(%1)%", parameter[0]))); - return QString(); - } + } else if (parameter[0].toLower() =3D=3D "ext") { + column =3D KrViewProperties::Ext; + } else if (parameter[0].toLower() =3D=3D "type") { + column =3D KrViewProperties::Type; + } else if (parameter[0].toLower() =3D=3D "size") { + column =3D KrViewProperties::Size; + } else if (parameter[0].toLower() =3D=3D "modified") { + column =3D KrViewProperties::Modified; + } else if (parameter[0].toLower() =3D=3D "changed") { + column =3D KrViewProperties::Changed; + } else if (parameter[0].toLower() =3D=3D "accessed") { + column =3D KrViewProperties::Accessed; + } else if (parameter[0].toLower() =3D=3D "perms") { + column =3D KrViewProperties::Permissions; + } else if (parameter[0].toLower() =3D=3D "rwx") { + column =3D KrViewProperties::KrPermissions; + } else if (parameter[0].toLower() =3D=3D "owner") { + column =3D KrViewProperties::Owner; + } else if (parameter[0].toLower() =3D=3D "group") { + column =3D 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 =3D panel->view->properties()->sortOptions & KrViewPro= perties::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 =3D 0; // ListPanel *KrGlobal::activePanel =3D 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 u= pdates. */ + static const int sConfigVersion =3D 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 =3D new KRPleaseWaitHandler(this); = - bool runKonfig =3D versionControl(); + const bool runKonfig =3D 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 =3D false; // create config file krConfig =3D KSharedConfig::openConfig().data(); KConfigGroup nogroup(krConfig, QString()); - - bool firstRun =3D nogroup.readEntry(FIRST_RUN, true); - -#if 0 - QString oldVerText =3D nogroup.readEntry("Version", "10.0"); - oldVerText.truncate(oldVerText.lastIndexOf(".")); // remove the th= ird dot - float oldVer =3D oldVerText.toFloat(); - // older icompatible version - if (oldVer <=3D 0.9) { - KMessageBox::information(krApp, i18n("A configuration of 1.51 or o= lder was detected. Krusader has to reset your configuration to default valu= es.\nNote: your bookmarks and keybindings will remain intact.\nKrusader wil= l now run Konfigurator.")); - /*if ( !QDir::home().remove( ".kde/share/config/krusaderrc" ) ) { - KMessageBox::error( krApp, i18n( "Unable to remove your krusade= rrc file. Please remove it manually and rerun Krusader." ) ); - exit( 1 ); - }*/ - retval =3D true; - krConfig->reparseConfiguration(); - } -#endif + const bool firstRun =3D nogroup.readEntry("First Time", true); + KrGlobal::sCurrentConfigVersion =3D nogroup.readEntry("Config Version"= , -1); = // first installation of krusader if (firstRun) { - KMessageBox::information(krApp, i18n("Welcome to Krusader.<= /b>

As this is your first run, your machine will now be checked for exter= nal applications. Then the Konfigurator will be launched where you can cust= omize Krusader to your needs.

")); - retval =3D true; + KMessageBox::information( + krApp, i18n("Welcome to Krusader.

As this is your= first run, your machine " + "will now be checked for external applications. Th= en the Konfigurator will " + "be launched where you can customize Krusader to y= our needs.

")); } nogroup.writeEntry("Version", VERSION); - nogroup.writeEntry(FIRST_RUN, false); + nogroup.writeEntry("First Time", false); krConfig->sync(); = - QDir().mkpath(QStandardPaths::writableLocation(QStandardPaths::Generic= DataLocation) + QStringLiteral("/krusader/")); + QDir().mkpath(QStandardPaths::writableLocation(QStandardPaths::Generic= DataLocation) + + 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);