File indexing completed on 2024-05-05 17:33:57

0001 /*
0002  *   SPDX-FileCopyrightText: 2012 Matthias Fuchs <mat69@gmx.net>
0003  *
0004  *   SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "comicinfo.h"
0008 
0009 #include <KConfigGroup>
0010 // Qt
0011 #include <QDir>
0012 #include <QStandardPaths>
0013 
0014 class SavingDir::SavingDirPrivate
0015 {
0016 public:
0017     SavingDirPrivate(const KConfigGroup &cfg);
0018 
0019     void init();
0020 
0021     QString getDir() const;
0022     void setDir(const QString &dir);
0023 
0024 private:
0025     void load();
0026     void save();
0027     bool isValid();
0028 
0029 private:
0030     KConfigGroup mCfg;
0031     QString mDir;
0032 };
0033 
0034 SavingDir::SavingDirPrivate::SavingDirPrivate(const KConfigGroup &cfg)
0035     : mCfg(cfg)
0036 {
0037 }
0038 
0039 void SavingDir::SavingDirPrivate::init()
0040 {
0041     load();
0042     save();
0043 }
0044 
0045 QString SavingDir::SavingDirPrivate::getDir() const
0046 {
0047     return mDir;
0048 }
0049 
0050 void SavingDir::SavingDirPrivate::setDir(const QString &dir)
0051 {
0052     mDir = dir;
0053     save();
0054 }
0055 
0056 void SavingDir::SavingDirPrivate::load()
0057 {
0058     mDir = mCfg.readEntry("savingDir", QString());
0059     if (!isValid()) {
0060         mDir = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
0061     }
0062     if (!isValid()) {
0063         mDir = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation);
0064     }
0065     if (!isValid()) {
0066         mDir = QDir::homePath();
0067     }
0068 }
0069 
0070 void SavingDir::SavingDirPrivate::save()
0071 {
0072     mCfg.writeEntry("savingDir", mDir);
0073 }
0074 
0075 bool SavingDir::SavingDirPrivate::isValid()
0076 {
0077     QDir dir;
0078     return (!mDir.isEmpty() && dir.exists(mDir));
0079 }
0080 
0081 SavingDir::SavingDir(const KConfigGroup &cfg)
0082     : d(new SavingDirPrivate(cfg))
0083 {
0084     d->init();
0085 }
0086 
0087 SavingDir::~SavingDir()
0088 {
0089     delete d;
0090 }
0091 
0092 QString SavingDir::getDir() const
0093 {
0094     return d->getDir();
0095 }
0096 
0097 void SavingDir::setDir(const QString &dir)
0098 {
0099     d->setDir(dir);
0100 }