kristall/src/kristall.hpp

142 lines
3.1 KiB
C++

#ifndef KRISTALL_HPP
#define KRISTALL_HPP
#include <QDir>
#include <QSettings>
#include <QClipboard>
#include <QSslCertificate>
#include "identitycollection.hpp"
#include "ssltrust.hpp"
#include "favouritecollection.hpp"
#include "protocolsetup.hpp"
#include "documentstyle.hpp"
#include "cachehandler.hpp"
enum class Theme : int
{
os_default = -1,
light = 0,
dark = 1,
};
enum class UIDensity : int
{
compact = 0,
classic = 1
};
enum class RequestState : int
{
None = 0,
Started = 1,
HostFound = 2,
Connected = 3,
StartedWeb = 255,
};
struct GenericSettings
{
enum TextDisplay {
FormattedText,
PlainText,
};
enum RedirectionWarning {
WarnNever = 0,
WarnOnSchemeChange = 1,
WarnOnHostChange = 2,
WarnAlways = -1,
};
QString start_page = "about:favourites";
Theme theme = Theme::light;
UIDensity ui_density = UIDensity::compact;
TextDisplay text_display = FormattedText;
bool enable_text_decoration = false;
bool use_os_scheme_handler = false;
bool show_hidden_files_in_dirs = false;
bool fancy_urlbar = true;
// This is set automatically
QColor fancy_urlbar_dim_colour;
TextDisplay gophermap_display = FormattedText;
int max_redirections = 5;
RedirectionWarning redirection_policy = WarnOnHostChange;
// 5 seconds network timeout
int network_timeout = 5000;
// Additional toolbar items
bool enable_home_btn = false;
// In-memory caching
int cache_limit = 1000;
int cache_threshold = 125;
int cache_life = 15;
void load(QSettings & settings);
void save(QSettings & settings) const;
};
//! Converts the certificate to a standardized fingerprint representation
//! also commonly used in browsers:
//! `:`-separated SHA256 hash
QString toFingerprintString(QSslCertificate const & certificate);
///
/// Kristall directory structure:
/// ~/.cache/kristall/
/// ./offline-pages/${HOST}/${HASHED_URL}
/// : Contains "mime/type\r\n${BLOB}"
/// ~/.config/kristall/
/// ./themes/${THEME_ID}/theme.qss
/// ./styles/${STYLE_ID}.ini
/// ./config.ini
///
namespace kristall
{
extern ProtocolSetup protocols;
extern QSettings * settings;
extern IdentityCollection identities;
extern QClipboard * clipboard;
extern FavouriteCollection favourites;
extern GenericSettings options;
extern DocumentStyle document_style;
extern CacheHandler cache;
namespace trust {
extern SslTrust gemini;
extern SslTrust https;
}
namespace dirs {
extern QDir config_root;
extern QDir cache_root;
//! Contains files per host
extern QDir offline_pages;
//! Contains custom UI themes for kristall
extern QDir themes;
//! Contains custom document styles / presets
extern QDir styles;
}
void saveSettings();
void setTheme(Theme theme);
void setUiDensity(UIDensity density, bool previewing);
extern QString default_font_family, default_font_family_fixed;
}
#endif // KRISTALL_HPP