summaryrefslogtreecommitdiff
path: root/src/plugins/studiowelcome/userpresets.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/studiowelcome/userpresets.h')
-rw-r--r--src/plugins/studiowelcome/userpresets.h51
1 files changed, 44 insertions, 7 deletions
diff --git a/src/plugins/studiowelcome/userpresets.h b/src/plugins/studiowelcome/userpresets.h
index 4f6053ef26..3f614f4ea0 100644
--- a/src/plugins/studiowelcome/userpresets.h
+++ b/src/plugins/studiowelcome/userpresets.h
@@ -25,8 +25,10 @@
#pragma once
+#include <memory>
#include <vector>
-#include <QSettings>
+#include <QFile>
+#include <QDebug>
namespace StudioWelcome {
@@ -68,24 +70,59 @@ inline bool operator==(const UserPresetData &lhs, const UserPresetData &rhs)
return lhs.categoryId == rhs.categoryId && lhs.wizardName == rhs.wizardName
&& lhs.name == rhs.name && lhs.screenSize == rhs.screenSize
&& lhs.useQtVirtualKeyboard == rhs.useQtVirtualKeyboard && lhs.qtVersion == rhs.qtVersion
- && lhs.styleName == rhs.styleName;
+ && lhs.styleName == rhs.styleName;;
}
+enum class StorePolicy {UniqueNames, UniqueValues};
+
+class StoreIo
+{
+public:
+ virtual ~StoreIo() {}
+
+ virtual QByteArray read() const = 0;
+ virtual void write(const QByteArray &bytes) = 0;
+};
+
+class FileStoreIo : public StoreIo
+{
+public:
+ explicit FileStoreIo(const QString &fileName);
+ FileStoreIo(FileStoreIo &&other): m_file{std::move(other.m_file)} {}
+ FileStoreIo& operator=(FileStoreIo &&other) { m_file = std::move(other.m_file); return *this; }
+
+ QByteArray read() const override;
+ void write(const QByteArray &data) override;
+
+private:
+ QString fullFilePath(const QString &fileName) const;
+
+ std::unique_ptr<QFile> m_file;
+
+ Q_DISABLE_COPY(FileStoreIo)
+};
+
class UserPresetsStore
{
public:
- UserPresetsStore();
- UserPresetsStore(std::unique_ptr<QSettings> &&settings);
+ UserPresetsStore(const QString &fileName, StorePolicy policy);
+ UserPresetsStore(std::unique_ptr<StoreIo> &&store, StorePolicy policy);
bool save(const UserPresetData &preset);
- void remove(const QString &category, const QString &name);
std::vector<UserPresetData> fetchAll() const;
+ void remove(const QString &category, const QString &name);
+ std::vector<UserPresetData> remove(const UserPresetData &preset);
+
+ void setMaximum(int maximum) { m_maximum = maximum; }
+ void setReverseOrder() { m_reverse = true; }
private:
- QString fullFilePath() const;
void savePresets(const std::vector<UserPresetData> &presets);
- std::unique_ptr<QSettings> m_settings;
+ std::unique_ptr<StoreIo> m_store;
+ StorePolicy m_policy = StorePolicy::UniqueNames;
+ bool m_reverse = false;
+ int m_maximum = -1;
};
} // namespace StudioWelcome