mirror of
https://github.com/nextcloud/desktop.git
synced 2026-01-14 02:01:28 +00:00
Merge pull request #9312 from Rello/codex/rebuild-settings-screen-with-left-menu-m92x67
feat: adjust settings sidebar layout
This commit is contained in:
@ -49,7 +49,7 @@ public:
|
||||
bool checkAccountExists(bool openSettings);
|
||||
|
||||
static void raiseDialog(QWidget *raiseWidget);
|
||||
static QSize settingsDialogSize() { return {720, 500}; }
|
||||
static QSize settingsDialogSize() { return {680, 500}; }
|
||||
void setupOverlayIcons();
|
||||
#ifdef WITH_LIBCLOUDPROVIDERS
|
||||
void setupCloudProviders();
|
||||
|
||||
@ -38,9 +38,9 @@ namespace {
|
||||
const QString TOOLBAR_CSS()
|
||||
{
|
||||
return QStringLiteral("QToolBar { background: %1; margin: 0; padding: 0; border: none; spacing: 0; } "
|
||||
"QToolBar QToolButton { background: %1; border: none; margin: 2px 8px; padding: 6px 10px; font-size: 14px; border-radius: 10px; } "
|
||||
"QToolBar QAbstractButton { background: %1; border: none; margin: 2px 8px; padding: 6px 10px; font-size: 14px; border-radius: 10px; color: #111111; } "
|
||||
"QToolBar QToolBarExtension { padding:0; } "
|
||||
"QToolBar QToolButton:checked { background: %3; color: %4; }");
|
||||
"QToolBar QAbstractButton:checked { background: %3; color: %4; }");
|
||||
}
|
||||
|
||||
const float buttonSizeRatio = 1.618f; // golden ratio
|
||||
@ -64,7 +64,7 @@ QString shortDisplayNameForSettings(OCC::Account *account, int width)
|
||||
host = fm.elidedText(host, Qt::ElideMiddle, width);
|
||||
user = fm.elidedText(user, Qt::ElideRight, width);
|
||||
}
|
||||
return QStringLiteral("<span style=\"font-weight:600; font-size:13px;\">%1</span><br>"
|
||||
return QStringLiteral("<span style=\"font-weight:600; font-size:13px;\">%1</span><br/>"
|
||||
"<span style=\"font-size:11px;\">%2</span>")
|
||||
.arg(user.toHtmlEscaped(), host.toHtmlEscaped());
|
||||
}
|
||||
@ -88,7 +88,7 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent)
|
||||
_toolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||
_toolBar->setOrientation(Qt::Vertical);
|
||||
_toolBar->setMovable(false);
|
||||
_toolBar->setMinimumWidth(220);
|
||||
_toolBar->setMinimumWidth(260);
|
||||
_toolBar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
|
||||
auto *sidebarContainer = new QWidget(this);
|
||||
sidebarContainer->setObjectName(QLatin1String("settings_sidebar"));
|
||||
@ -100,6 +100,7 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent)
|
||||
sidebarScroll->setFrameShape(QFrame::NoFrame);
|
||||
sidebarScroll->setWidgetResizable(true);
|
||||
sidebarScroll->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||
sidebarScroll->viewport()->setAutoFillBackground(false);
|
||||
sidebarScroll->setWidget(_toolBar);
|
||||
sidebarLayout->addWidget(sidebarScroll);
|
||||
_ui->mainLayout->insertWidget(0, sidebarContainer);
|
||||
@ -139,7 +140,7 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent)
|
||||
_actionGroup->addAction(generalAction);
|
||||
_toolBar->addAction(generalAction);
|
||||
auto *accountSpacer = new QWidget(this);
|
||||
accountSpacer->setFixedHeight(16);
|
||||
accountSpacer->setFixedHeight(24);
|
||||
_toolBar->addWidget(accountSpacer);
|
||||
auto *generalSettings = new GeneralSettings;
|
||||
_ui->stack->addWidget(generalSettings);
|
||||
@ -181,14 +182,18 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent)
|
||||
cfg.restoreGeometry(this);
|
||||
setStyleSheet(QStringLiteral(
|
||||
"#Settings { background: #f2f2f2; }"
|
||||
"#settings_sidebar, #settings_content { background: #e1e1e1; border-radius: 12px; }"
|
||||
"#settings_sidebar { background: #e1e1e1; border-radius: 12px; }"
|
||||
"#settings_content { background: transparent; }"
|
||||
"#settings_sidebar_scroll { background: transparent; }"
|
||||
"#settings_sidebar_scroll > QWidget { background: transparent; }"
|
||||
"#generalGroupBox, #advancedGroupBox, #aboutAndUpdatesGroupBox,"
|
||||
"#accountStatusPanel, #accountStoragePanel, #accountTabsPanel {"
|
||||
" background: #e1e1e1; border-radius: 10px; border: none; }"
|
||||
"#generalGroupBox, #advancedGroupBox, #aboutAndUpdatesGroupBox {"
|
||||
" margin-top: 20px; padding: 12px; }"
|
||||
" margin-top: 22px; padding: 12px; }"
|
||||
"#generalGroupBox::title, #advancedGroupBox::title, #aboutAndUpdatesGroupBox::title {"
|
||||
" subcontrol-origin: margin; left: 12px; top: 0px; padding: 0 4px; font-weight: 600; }"
|
||||
" subcontrol-origin: margin; subcontrol-position: top left; left: 12px; top: -12px;"
|
||||
" padding: 0 4px; font-weight: 600; }"
|
||||
"#accountStatusPanel, #accountStoragePanel, #accountTabsPanel { padding: 12px; }"));
|
||||
}
|
||||
|
||||
@ -371,14 +376,14 @@ void SettingsDialog::customizeStyle()
|
||||
QString highlightColor(palette().highlight().color().name());
|
||||
QString highlightTextColor(QStringLiteral("#ffffff"));
|
||||
QString dark(palette().dark().color().name());
|
||||
QString background(palette().base().color().name());
|
||||
QString background(QStringLiteral("#e1e1e1"));
|
||||
_toolBar->setStyleSheet(TOOLBAR_CSS().arg(background, dark, highlightColor, highlightTextColor));
|
||||
|
||||
const auto &allActions = _actionGroup->actions();
|
||||
for (const auto a : allActions) {
|
||||
QIcon icon = Theme::createColorAwareIcon(a->property("iconPath").toString(), palette());
|
||||
a->setIcon(icon);
|
||||
auto *btn = qobject_cast<QToolButton *>(_toolBar->widgetForAction(a));
|
||||
auto *btn = qobject_cast<QAbstractButton *>(_toolBar->widgetForAction(a));
|
||||
if (btn)
|
||||
btn->setIcon(icon);
|
||||
}
|
||||
@ -403,14 +408,31 @@ public:
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto *btn = new QToolButton(parent);
|
||||
auto *btn = new QPushButton(parent);
|
||||
QString objectName = QLatin1String("settingsdialog_toolbutton_");
|
||||
objectName += text();
|
||||
btn->setObjectName(objectName);
|
||||
|
||||
btn->setDefaultAction(this);
|
||||
btn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||
btn->setFlat(true);
|
||||
btn->setCheckable(true);
|
||||
btn->setChecked(isChecked());
|
||||
btn->setIcon(icon());
|
||||
auto updateText = [this, btn](bool checked) {
|
||||
const auto color = checked ? QStringLiteral("#ffffff") : QStringLiteral("#111111");
|
||||
btn->setText(QStringLiteral("<span style=\"color:%1;\">%2</span>").arg(color, text()));
|
||||
};
|
||||
updateText(isChecked());
|
||||
btn->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
|
||||
btn->setStyleSheet(QStringLiteral("text-align: left;"));
|
||||
|
||||
connect(btn, &QPushButton::clicked, this, [this](bool checked) {
|
||||
if (isCheckable()) {
|
||||
setChecked(checked);
|
||||
}
|
||||
trigger();
|
||||
});
|
||||
connect(this, &QAction::toggled, btn, &QPushButton::setChecked);
|
||||
connect(this, &QAction::toggled, btn, updateText);
|
||||
return btn;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user