From 6ded3d1c2b7257e2be445da48df3ea4c8997140f Mon Sep 17 00:00:00 2001 From: dismine Date: Sat, 29 Nov 2014 14:12:43 +0200 Subject: [PATCH] Delete local reports older than 30 days. --HG-- branch : develop --- src/app/core/vapplication.cpp | 32 ++++++++++++++++++++++++++++++++ src/app/core/vapplication.h | 3 +++ 2 files changed, 35 insertions(+) diff --git a/src/app/core/vapplication.cpp b/src/app/core/vapplication.cpp index 8353e1ff3..66dd73bd2 100644 --- a/src/app/core/vapplication.cpp +++ b/src/app/core/vapplication.cpp @@ -49,6 +49,7 @@ #include #include #include +#include Q_LOGGING_CATEGORY(vApp, "v.application") @@ -2089,6 +2090,9 @@ void VApplication::StartLogging() CreateLogDir(); BeginLogging(); ClearOldLogs(); +#if defined(Q_OS_WIN) && defined(Q_CC_GNU) + ClearOldReports(); +#endif // defined(Q_OS_WIN) && defined(Q_CC_GNU) } //--------------------------------------------------------------------------------------------------------------------- @@ -2098,6 +2102,34 @@ QTextStream *VApplication::LogFile() } #if defined(Q_OS_WIN) && defined(Q_CC_GNU) +//--------------------------------------------------------------------------------------------------------------------- +void VApplication::ClearOldReports() const +{ + const QString reportsDir = QString("%1/reports").arg(qApp->applicationDirPath()); + QDir reports(reportsDir); + if (reports.exists()) + { + QStringList filters{"*.log", "*.RPT"}; + QDir logsDir(reportsDir); + logsDir.setNameFilters(filters); + logsDir.setCurrent(reportsDir); + + const QStringList allFiles = logsDir.entryList(QDir::NoDotAndDotDot | QDir::Files); + if (allFiles.isEmpty() == false) + { + const QDateTime now = QDateTime::currentDateTime(); + for (int i = 0; i < allFiles.size(); ++i) + { + QFileInfo info(allFiles.at(i)); + if (info.created().daysTo(now) > 30) + { + QFile(allFiles.at(i)).remove(); + } + } + } + } +} + //--------------------------------------------------------------------------------------------------------------------- // Catch exception and create report. Use if program build with Mingw compiler. // See more about catcher https://github.com/jrfonseca/drmingw/blob/master/README.md diff --git a/src/app/core/vapplication.h b/src/app/core/vapplication.h index c9f8d12e1..996559002 100644 --- a/src/app/core/vapplication.h +++ b/src/app/core/vapplication.h @@ -107,9 +107,11 @@ public: static QStringList LabelLanguages(); QString STDescription(const QString &id)const; static bool SafeCopy(const QString &source, const QString &destination, QString &error); + void StartLogging(); QTextStream *LogFile(); + #if defined(Q_OS_WIN) && defined(Q_CC_GNU) static void DrMingw(); void CollectReports() const; @@ -180,6 +182,7 @@ private: void CollectReport(const QString &reportName) const; void SendReport(const QString &reportName) const; QString ReadFileForSending(QFile &file)const; + void ClearOldReports()const; #endif // defined(Q_OS_WIN) && defined(Q_CC_GNU) QString LogDirPath()const;