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 }