115 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
This file is part of Kotatogram Desktop,
 | 
						|
the unofficial app based on Telegram Desktop.
 | 
						|
 | 
						|
For license and copyright information please follow this link:
 | 
						|
https://github.com/kotatogram/kotatogram-desktop/blob/dev/LEGAL
 | 
						|
*/
 | 
						|
#pragma once
 | 
						|
 | 
						|
#include <rpl/producer.h>
 | 
						|
 | 
						|
#include <QtCore/QVariant>
 | 
						|
#include <QtCore/QJsonArray>
 | 
						|
 | 
						|
namespace Kotato {
 | 
						|
namespace JsonSettings {
 | 
						|
 | 
						|
void Start();
 | 
						|
void Load();
 | 
						|
void Write();
 | 
						|
void Finish();
 | 
						|
 | 
						|
[[nodiscard]] QVariant Get(
 | 
						|
	const QString &key,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false);
 | 
						|
[[nodiscard]] QVariant GetWithPending(
 | 
						|
	const QString &key,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false);
 | 
						|
[[nodiscard]] rpl::producer<QString> Events(
 | 
						|
	const QString &key,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false);
 | 
						|
[[nodiscard]] rpl::producer<QString> EventsWithPending(
 | 
						|
	const QString &key,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false);
 | 
						|
void Set(
 | 
						|
	const QString &key,
 | 
						|
	QVariant value,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false);
 | 
						|
void SetAfterRestart(
 | 
						|
	const QString &key,
 | 
						|
	QVariant value,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false);
 | 
						|
void Reset(
 | 
						|
	const QString &key,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false);
 | 
						|
void ResetAfterRestart(
 | 
						|
	const QString &key,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false);
 | 
						|
 | 
						|
inline bool GetBool(
 | 
						|
	const QString &key,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false) {
 | 
						|
	return Get(key, accountId, isTestAccount).toBool();
 | 
						|
}
 | 
						|
 | 
						|
inline int GetInt(
 | 
						|
	const QString &key,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false) {
 | 
						|
	return Get(key, accountId, isTestAccount).toInt();
 | 
						|
}
 | 
						|
 | 
						|
inline QString GetString(
 | 
						|
	const QString &key,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false) {
 | 
						|
	return Get(key, accountId, isTestAccount).toString();
 | 
						|
}
 | 
						|
 | 
						|
inline QJsonArray GetJsonArray(
 | 
						|
	const QString &key,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false) {
 | 
						|
	return Get(key, accountId, isTestAccount).toJsonArray();
 | 
						|
}
 | 
						|
 | 
						|
inline bool GetBoolWithPending(
 | 
						|
	const QString &key,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false) {
 | 
						|
	return GetWithPending(key, accountId, isTestAccount).toBool();
 | 
						|
}
 | 
						|
 | 
						|
inline int GetIntWithPending(
 | 
						|
	const QString &key,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false) {
 | 
						|
	return GetWithPending(key, accountId, isTestAccount).toInt();
 | 
						|
}
 | 
						|
 | 
						|
inline QString GetStringWithPending(
 | 
						|
	const QString &key,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false) {
 | 
						|
	return GetWithPending(key, accountId, isTestAccount).toString();
 | 
						|
}
 | 
						|
 | 
						|
inline QJsonArray GetJsonArrayWithPending(
 | 
						|
	const QString &key,
 | 
						|
	uint64 accountId = 0,
 | 
						|
	bool isTestAccount = false) {
 | 
						|
	return GetWithPending(key, accountId, isTestAccount).toJsonArray();
 | 
						|
}
 | 
						|
 | 
						|
} // namespace JsonSettings
 | 
						|
} // namespace Kotato
 |