31#include <QWebEngineProfile>
38 m_brushGreen = QBrush(QColorConstants::Green);
39 m_brushYellow = QBrush(QColorConstants::Yellow);
40 m_brushOrange = QBrush(QColorConstants::Svg::orange);
41 m_brushRed = QBrush(QColorConstants::Red);
42 m_brushBlue = QBrush(QColorConstants::Blue);
44 m_availableOptions = {
49 QSpacerItem *horizontalSpacer_1 =
new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
50 QSpacerItem *horizontalSpacer_2 =
new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
51 auto *layoutTitle =
new QHBoxLayout();
52 auto *modeNameLabel =
new QLabel(
this);
53 QString nameLabelText =
QSL(
"<b>%1</b> <font color='%2'>%3</font>").arg(tr(
"Mode:"));
54 if (
mApp->isPrivate()) {
55 modeNameLabel->setText(nameLabelText.arg(
QSL(
"red"), tr(
"Private")));
58 modeNameLabel->setText(nameLabelText.arg(
QSL(
"lightgreen"), tr(
"Normal")));
60 auto *isWebLabel =
new QLabel(
QSL(
"<b>%1</b> ").arg(tr(
"isWeb:")),
this);
61 m_isWebValue =
new QLabel(
this);
62 auto *buttonRefresh =
new QToolButton(
this);
63 buttonRefresh->setIcon(QIcon::fromTheme(
QSL(
"view-refresh")));
64 buttonRefresh->setToolTip(tr(
"Refresh"));
66 layoutTitle->addWidget(modeNameLabel);
67 layoutTitle->addItem(horizontalSpacer_1);
68 layoutTitle->addWidget(isWebLabel);
69 layoutTitle->addWidget(m_isWebValue);
70 layoutTitle->addItem(horizontalSpacer_2);
71 layoutTitle->addWidget(buttonRefresh);
73 m_attributes =
new QTreeWidget(
this);
74 m_attributes->setColumnCount(4);
75 m_attributes->setHeaderLabels({tr(
"Real"), tr(
"Local"), tr(
"Default"), tr(
"Attributes")});
76 m_attributes->setSortingEnabled(
true);
77 m_attributes->sortByColumn(3, Qt::AscendingOrder);
78 m_attributes->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
79 m_attributes->header()->setSectionsMovable(
false);
80 m_attributes->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);
81 m_attributes->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
83 auto attributes =
mApp->siteSettingsManager()->getSupportedAttribute();
84 for (
auto &attr : attributes) {
85 auto *item =
new QTreeWidgetItem(m_attributes, {
QSL(
""),
QSL(
""),
QSL(
""),
mApp->siteSettingsManager()->getOptionName(attr)});
86 item->setToolTip(3,
mApp->siteSettingsManager()->getOptionName(attr));
87 m_attributeItems.insert(attr, item);
90 m_features =
new QTreeWidget(
this);
91 m_features->setColumnCount(3);
92 m_features->setHeaderLabels({tr(
"Local"), tr(
"Default"), tr(
"Feature")});
93 m_features->setSortingEnabled(
true);
94 m_features->sortByColumn(2, Qt::AscendingOrder);
95 m_features->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
96 m_features->header()->setSectionsMovable(
false);
97 m_features->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);
98 m_features->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
100 auto features =
mApp->siteSettingsManager()->getSupportedFeatures();
101 for (
auto &feature : features) {
102 auto *item =
new QTreeWidgetItem(m_features, {
QSL(
""),
QSL(
""),
mApp->siteSettingsManager()->getOptionName(feature)});
103 item->setToolTip(2,
mApp->siteSettingsManager()->getOptionName(feature));
104 m_featureItems.insert(feature, item);
107 m_options =
new QTreeWidget(
this);
108 m_options->setColumnCount(3);
109 m_options->setHeaderLabels({tr(
"Real"), tr(
"Local"), tr(
"Default"), tr(
"Option")});
110 m_options->setSortingEnabled(
true);
111 m_options->sortByColumn(3, Qt::AscendingOrder);
112 m_options->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
113 m_options->header()->setSectionsMovable(
false);
114 m_options->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);
115 m_options->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
117 for (
auto &option : m_availableOptions) {
118 auto *item =
new QTreeWidgetItem(m_options, {
QSL(
""),
QSL(
""),
QSL(
""),
mApp->siteSettingsManager()->getOptionName(option)});
119 item->setToolTip(3,
mApp->siteSettingsManager()->getOptionName(option));
120 m_optionsItems.insert(option, item);
123 QSpacerItem *verticalSpacer =
new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
125 auto *l =
new QVBoxLayout(
this);
126 l->addItem(layoutTitle);
127 l->addWidget(m_attributes);
128 l->addWidget(m_features);
129 l->addWidget(m_options);
130 l->addItem(verticalSpacer);
134 connect(buttonRefresh, &QToolButton::clicked,
this, &SiteSettingsView_Widget::updateData);
139void SiteSettingsView_Widget::updateData(
int index)
144 if (tab ==
nullptr) {
148 auto url = tab->
url();
151 const bool isWeb = url.scheme() ==
QL1S(
"http") || url.scheme() ==
QL1S(
"https") || url.scheme() ==
QL1S(
"file");
152 const auto siteSettings =
mApp->siteSettingsManager()->getSiteSettings(url);
155 m_isWebValue->setText(
QSL(
"<font color='lightgreen'>%1</font>").arg(tr(
"True")));
158 m_isWebValue->setText(
QSL(
"<font color='red'>%1</font>").arg(tr(
"False")));
161 QHash<QWebEngineSettings::WebAttribute, QTreeWidgetItem*>::iterator it_attr;
162 for (it_attr = m_attributeItems.begin(); it_attr != m_attributeItems.end(); ++it_attr) {
163 auto attr = it_attr.key();
168 if (!siteSettings.attributes.empty() && siteSettings.attributes.contains(attr)) {
169 attrLocal = siteSettings.attributes[attr];
171 auto *item = it_attr.value();
172 item->setText(0,
mApp->siteSettingsManager()->getPermissionName(attrReal));
173 item->setForeground(0, permissionColor(attrReal));
174 item->setText(1,
mApp->siteSettingsManager()->getPermissionName(attrLocal));
175 item->setForeground(1, permissionColor(attrLocal));
176 item->setText(2,
mApp->siteSettingsManager()->getPermissionName(attrDefault));
177 item->setForeground(2, permissionColor(attrDefault));
180 QHash<QWebEnginePage::Feature, QTreeWidgetItem*>::iterator it_ftr;
181 for (it_ftr = m_featureItems.begin(); it_ftr != m_featureItems.end(); ++it_ftr) {
182 auto ftr = it_ftr.key();
183 auto ftrDefault =
mApp->siteSettingsManager()->getDefaultPermission(ftr);
184 auto ftrLocal = siteSettings.features[ftr];
186 auto *item = it_ftr.value();
187 item->setText(0,
mApp->siteSettingsManager()->getPermissionName(ftrLocal));
188 item->setForeground(0, permissionColor(ftrLocal));
189 item->setText(1,
mApp->siteSettingsManager()->getPermissionName(ftrDefault));
190 item->setForeground(1, permissionColor(ftrDefault));
193 QHash<SiteSettingsManager::PageOptions, QTreeWidgetItem*>::iterator it_opt;
194 for (it_opt = m_optionsItems.begin(); it_opt != m_optionsItems.end(); ++it_opt) {
195 QString optRealText, optLocalText, optDefaultText;
196 QBrush optRealColor, optLocalColor, optDefaultColor;
197 const auto option = it_opt.key();
198 auto *item = it_opt.value();
204 optLocalText =
mApp->siteSettingsManager()->getPermissionName(siteSettings.AllowCookies);
205 optLocalColor = permissionColor(siteSettings.AllowCookies);
207 permission =
mApp->siteSettingsManager()->getDefaultPermission(option);
208 optDefaultText =
mApp->siteSettingsManager()->getPermissionName(permission);
209 optDefaultColor = permissionColor(permission);
215 const int realZoomLevel = tab->webView()->zoomLevel();
216 const int defualZoomLevel =
qzSettings->defaultZoomLevel;
217 const int storedZoomLevel = siteSettings.ZoomLevel;
219 optRealText = tr(
"%1 (%2%)").arg(realZoomLevel).arg(zoomLevels[realZoomLevel]);
220 optRealColor = m_brushGreen;
222 if (storedZoomLevel == -1) {
223 optLocalText = tr(
"Default");
224 optLocalColor = m_brushYellow;
227 optLocalText = tr(
"%1 (%2%)").arg(storedZoomLevel).arg(zoomLevels[storedZoomLevel]);
228 optLocalColor = m_brushGreen;
231 optDefaultText = tr(
"%1 (%2%)").arg(defualZoomLevel).arg(zoomLevels[defualZoomLevel]);
232 optDefaultColor = m_brushGreen;
237 qDebug() <<
"Unknown option: " << option;
241 item->setText(0, optRealText);
242 item->setForeground(0, optRealColor);
243 item->setText(1, optLocalText);
244 item->setForeground(1, optLocalColor);
245 item->setText(2, optDefaultText);
246 item->setForeground(2, optDefaultColor);
252 switch (permission) {
254 return m_brushYellow;
260 return m_brushOrange;
269 if (tab ==
nullptr) {
273 if (page == tab->webView()->page()) {
TabWidget * tabWidget() const
static QList< int > zoomLevels()