1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
#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
};
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;
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
|