File indexing completed on 2024-05-12 16:21:31
0001 /** 0002 * SPDX-FileCopyrightText: 2021 Bart De Vries <bart@mogwai.be> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #pragma once 0008 0009 #include <QFile> 0010 #include <QObject> 0011 #include <QString> 0012 #include <QUrl> 0013 0014 #include <KFormat> 0015 0016 #include "error.h" 0017 0018 class StorageManager : public QObject 0019 { 0020 Q_OBJECT 0021 0022 Q_PROPERTY(int storageMoveProgress MEMBER m_storageMoveProgress NOTIFY storageMoveProgressChanged) 0023 Q_PROPERTY(int storageMoveTotal MEMBER m_storageMoveTotal NOTIFY storageMoveTotalChanged) 0024 Q_PROPERTY(QString storagePath READ storagePath NOTIFY storagePathChanged) 0025 Q_PROPERTY(qint64 enclosureDirSize READ enclosureDirSize NOTIFY enclosureDirSizeChanged) 0026 Q_PROPERTY(qint64 imageDirSize READ imageDirSize NOTIFY imageDirSizeChanged) 0027 Q_PROPERTY(QString formattedEnclosureDirSize READ formattedEnclosureDirSize NOTIFY enclosureDirSizeChanged) 0028 Q_PROPERTY(QString formattedImageDirSize READ formattedImageDirSize NOTIFY imageDirSizeChanged) 0029 0030 public: 0031 static StorageManager &instance() 0032 { 0033 static StorageManager _instance; 0034 return _instance; 0035 } 0036 0037 static const int maxFilenameLength = 200; 0038 0039 QString storagePath() const; 0040 Q_INVOKABLE void setStoragePath(QUrl url); 0041 0042 QString imageDirPath() const; 0043 QString imagePath(const QString &url) const; 0044 0045 QString enclosureDirPath() const; 0046 QString enclosureDirPath(const QString &feedname) const; 0047 QString enclosurePath(const QString &name, const QString &url, const QString &feedname) const; 0048 0049 qint64 enclosureDirSize() const; 0050 qint64 imageDirSize() const; 0051 QString formattedEnclosureDirSize() const; 0052 QString formattedImageDirSize() const; 0053 0054 void removeImage(const QString &url); 0055 Q_INVOKABLE void clearImageCache(); 0056 0057 QString passwordFilePath(const QString &username) const; 0058 0059 QString sanitizedFilePath(const QString &path) const; 0060 0061 Q_SIGNALS: 0062 void error(Error::Type type, const QString &url, const QString &id, const int errorId, const QString &errorString, const QString &title); 0063 0064 void storagePathChanged(QString path); 0065 void storageMoveStarted(); 0066 void storageMoveFinished(); 0067 void storageMoveProgressChanged(int progress); 0068 void storageMoveTotalChanged(int nrOfFeeds); 0069 void cancelStorageMove(); 0070 0071 void enclosureDirSizeChanged(); 0072 void imageDirSizeChanged(); 0073 0074 private: 0075 StorageManager(); 0076 0077 qint64 dirSize(const QString &path) const; 0078 0079 int m_storageMoveProgress; 0080 int m_storageMoveTotal; 0081 KFormat m_kformat; 0082 };