mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-24 10:52:52 +00:00
277 lines
8 KiB
C++
277 lines
8 KiB
C++
/*
|
|
Copyright (c) 2012-2013 Montel Laurent <montel@kde.org>
|
|
|
|
This program is free software; you can redistribute it and/or modify it
|
|
under the terms of the GNU General Public License, version 2, as
|
|
published by the Free Software Foundation.
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License along
|
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
#include "archivemailinfo.h"
|
|
|
|
#include <KLocale>
|
|
#include <QDir>
|
|
|
|
ArchiveMailInfo::ArchiveMailInfo()
|
|
: mLastDateSaved(QDate())
|
|
, mArchiveAge( 1 )
|
|
, mArchiveType( MailCommon::BackupJob::Zip )
|
|
, mArchiveUnit( ArchiveMailInfo::ArchiveDays )
|
|
, mSaveCollectionId(-1)
|
|
, mMaximumArchiveCount(0)
|
|
, mSaveSubCollection(false)
|
|
, mIsEnabled(true)
|
|
{
|
|
}
|
|
|
|
ArchiveMailInfo::ArchiveMailInfo(const KConfigGroup &config)
|
|
: mLastDateSaved(QDate())
|
|
, mArchiveAge( 1 )
|
|
, mArchiveType( MailCommon::BackupJob::Zip )
|
|
, mArchiveUnit( ArchiveMailInfo::ArchiveDays )
|
|
, mSaveCollectionId(-1)
|
|
, mMaximumArchiveCount(0)
|
|
, mSaveSubCollection(false)
|
|
, mIsEnabled(true)
|
|
{
|
|
readConfig(config);
|
|
}
|
|
|
|
ArchiveMailInfo::ArchiveMailInfo(const ArchiveMailInfo &info)
|
|
{
|
|
mLastDateSaved = info.lastDateSaved();
|
|
mArchiveAge = info.archiveAge();
|
|
mArchiveType = info.archiveType();
|
|
mArchiveUnit = info.archiveUnit();
|
|
mSaveCollectionId = info.saveCollectionId();
|
|
mMaximumArchiveCount = info.maximumArchiveCount();
|
|
mSaveSubCollection = info.saveSubCollection();
|
|
mPath = info.url();
|
|
mIsEnabled = info.isEnabled();
|
|
}
|
|
|
|
|
|
ArchiveMailInfo::~ArchiveMailInfo()
|
|
{
|
|
}
|
|
|
|
ArchiveMailInfo& ArchiveMailInfo::operator=( const ArchiveMailInfo &old )
|
|
{
|
|
mLastDateSaved = old.lastDateSaved();
|
|
mArchiveAge = old.archiveAge();
|
|
mArchiveType = old.archiveType();
|
|
mArchiveUnit = old.archiveUnit();
|
|
mSaveCollectionId = old.saveCollectionId();
|
|
mMaximumArchiveCount = old.maximumArchiveCount();
|
|
mSaveSubCollection = old.saveSubCollection();
|
|
mPath = old.url();
|
|
mIsEnabled = old.isEnabled();
|
|
return (*this);
|
|
}
|
|
|
|
QString normalizeFolderName(const QString &folderName)
|
|
{
|
|
QString adaptFolderName(folderName);
|
|
adaptFolderName.replace(QLatin1Char('/'),QLatin1Char('_'));
|
|
return adaptFolderName;
|
|
}
|
|
|
|
QString ArchiveMailInfo::dirArchive(bool &dirExit) const
|
|
{
|
|
const QDir dir(url().path());
|
|
QString dirPath = url().path();
|
|
if (!dir.exists()) {
|
|
dirExit = false;
|
|
dirPath = QDir::homePath();
|
|
kDebug()<<" Path doesn't exist"<<dir.path();
|
|
} else {
|
|
dirExit = true;
|
|
}
|
|
return dirPath;
|
|
}
|
|
|
|
KUrl ArchiveMailInfo::realUrl(const QString &folderName, bool &dirExist) const
|
|
{
|
|
const int numExtensions = 4;
|
|
// The extensions here are also sorted, like the enum order of BackupJob::ArchiveType
|
|
const char *extensions[numExtensions] = { ".zip", ".tar", ".tar.bz2", ".tar.gz" };
|
|
const QString dirPath = dirArchive(dirExist);
|
|
|
|
const QString path = dirPath + QLatin1Char( '/' ) + i18nc( "Start of the filename for a mail archive file" , "Archive" )
|
|
+ QLatin1Char( '_' ) + normalizeFolderName(folderName) + QLatin1Char( '_' )
|
|
+ QDate::currentDate().toString( Qt::ISODate ) + QString::fromLatin1(extensions[mArchiveType]);
|
|
KUrl real(path);
|
|
return real;
|
|
}
|
|
|
|
QStringList ArchiveMailInfo::listOfArchive(const QString &folderName, bool &dirExist) const
|
|
{
|
|
const int numExtensions = 4;
|
|
// The extensions here are also sorted, like the enum order of BackupJob::ArchiveType
|
|
const char *extensions[numExtensions] = { ".zip", ".tar", ".tar.bz2", ".tar.gz" };
|
|
const QString dirPath = dirArchive(dirExist);
|
|
|
|
QDir dir(dirPath);
|
|
|
|
QStringList nameFilters;
|
|
nameFilters << i18nc( "Start of the filename for a mail archive file" , "Archive" ) + QLatin1Char( '_' ) +
|
|
normalizeFolderName(folderName) + QLatin1Char( '_' ) + QLatin1String("*") + QString::fromLatin1(extensions[mArchiveType]);
|
|
const QStringList lst = dir.entryList ( nameFilters, QDir::Files|QDir::NoDotAndDotDot, QDir::Time|QDir::Reversed );
|
|
return lst;
|
|
}
|
|
|
|
bool ArchiveMailInfo::isValid() const
|
|
{
|
|
return (mSaveCollectionId!=-1);
|
|
}
|
|
|
|
|
|
void ArchiveMailInfo::setArchiveAge( int age )
|
|
{
|
|
mArchiveAge = age;
|
|
}
|
|
|
|
int ArchiveMailInfo::archiveAge() const
|
|
{
|
|
return mArchiveAge;
|
|
}
|
|
|
|
void ArchiveMailInfo::setArchiveUnit( ArchiveMailInfo::ArchiveUnit unit )
|
|
{
|
|
mArchiveUnit = unit;
|
|
}
|
|
|
|
ArchiveMailInfo::ArchiveUnit ArchiveMailInfo::archiveUnit() const
|
|
{
|
|
return mArchiveUnit;
|
|
}
|
|
|
|
void ArchiveMailInfo::setArchiveType( MailCommon::BackupJob::ArchiveType type )
|
|
{
|
|
mArchiveType = type;
|
|
}
|
|
|
|
MailCommon::BackupJob::ArchiveType ArchiveMailInfo::archiveType() const
|
|
{
|
|
return mArchiveType;
|
|
}
|
|
|
|
void ArchiveMailInfo::setLastDateSaved( const QDate &date )
|
|
{
|
|
mLastDateSaved = date;
|
|
}
|
|
|
|
QDate ArchiveMailInfo::lastDateSaved() const
|
|
{
|
|
return mLastDateSaved;
|
|
}
|
|
|
|
void ArchiveMailInfo::readConfig(const KConfigGroup &config)
|
|
{
|
|
mPath = config.readEntry("storePath", KUrl());
|
|
|
|
if (config.hasKey(QLatin1String("lastDateSaved"))) {
|
|
mLastDateSaved = QDate::fromString(config.readEntry("lastDateSaved"),Qt::ISODate);
|
|
}
|
|
mSaveSubCollection = config.readEntry("saveSubCollection",false);
|
|
mArchiveType = static_cast<MailCommon::BackupJob::ArchiveType>( config.readEntry( "archiveType", ( int )MailCommon::BackupJob::Zip ) );
|
|
mArchiveUnit = static_cast<ArchiveUnit>( config.readEntry( "archiveUnit", ( int )ArchiveDays ) );
|
|
Akonadi::Collection::Id tId = config.readEntry("saveCollectionId",mSaveCollectionId);
|
|
mArchiveAge = config.readEntry("archiveAge",1);
|
|
mMaximumArchiveCount = config.readEntry("maximumArchiveCount",0);
|
|
if ( tId >= 0 ) {
|
|
mSaveCollectionId = tId;
|
|
}
|
|
mIsEnabled = config.readEntry("enabled", true);
|
|
}
|
|
|
|
void ArchiveMailInfo::writeConfig(KConfigGroup & config )
|
|
{
|
|
if (!isValid()) {
|
|
return;
|
|
}
|
|
config.writeEntry("storePath",mPath);
|
|
|
|
if (mLastDateSaved.isValid()) {
|
|
config.writeEntry("lastDateSaved", mLastDateSaved.toString(Qt::ISODate) );
|
|
}
|
|
|
|
config.writeEntry("saveSubCollection",mSaveSubCollection);
|
|
config.writeEntry("archiveType", ( int )mArchiveType );
|
|
config.writeEntry("archiveUnit", ( int )mArchiveUnit );
|
|
config.writeEntry("saveCollectionId",mSaveCollectionId);
|
|
config.writeEntry("archiveAge",mArchiveAge);
|
|
config.writeEntry("maximumArchiveCount",mMaximumArchiveCount);
|
|
config.writeEntry("enabled",mIsEnabled);
|
|
config.sync();
|
|
}
|
|
|
|
KUrl ArchiveMailInfo::url() const
|
|
{
|
|
return mPath;
|
|
}
|
|
|
|
void ArchiveMailInfo::setUrl(const KUrl &url)
|
|
{
|
|
mPath = url;
|
|
}
|
|
|
|
bool ArchiveMailInfo::saveSubCollection() const
|
|
{
|
|
return mSaveSubCollection;
|
|
}
|
|
|
|
void ArchiveMailInfo::setSaveSubCollection( bool saveSubCol )
|
|
{
|
|
mSaveSubCollection = saveSubCol;
|
|
}
|
|
|
|
void ArchiveMailInfo::setSaveCollectionId(Akonadi::Collection::Id collectionId)
|
|
{
|
|
mSaveCollectionId = collectionId;
|
|
}
|
|
|
|
Akonadi::Collection::Id ArchiveMailInfo::saveCollectionId() const
|
|
{
|
|
return mSaveCollectionId;
|
|
}
|
|
|
|
int ArchiveMailInfo::maximumArchiveCount() const
|
|
{
|
|
return mMaximumArchiveCount;
|
|
}
|
|
|
|
void ArchiveMailInfo::setMaximumArchiveCount( int max )
|
|
{
|
|
mMaximumArchiveCount = max;
|
|
}
|
|
|
|
bool ArchiveMailInfo::isEnabled() const
|
|
{
|
|
return mIsEnabled;
|
|
}
|
|
|
|
void ArchiveMailInfo::setEnabled(bool b)
|
|
{
|
|
mIsEnabled = b;
|
|
}
|
|
|
|
bool ArchiveMailInfo::operator==( const ArchiveMailInfo& other ) const
|
|
{
|
|
return saveCollectionId() == other.saveCollectionId() &&
|
|
saveSubCollection() == other.saveSubCollection() &&
|
|
url() == other.url() &&
|
|
archiveType() == other.archiveType() &&
|
|
archiveUnit() == other.archiveUnit() &&
|
|
archiveAge() == other.archiveAge() &&
|
|
lastDateSaved() == other.lastDateSaved() &&
|
|
maximumArchiveCount() == other.maximumArchiveCount() &&
|
|
isEnabled() == other.isEnabled();
|
|
}
|