diff options
| author | in1tiate <32779090+in1tiate@users.noreply.github.com> | 2024-02-10 05:23:34 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-10 12:23:34 +0100 |
| commit | 27726c9ce1fd6ff1e581bade5911e3bf05bc59f2 (patch) | |
| tree | 5e2c01731e8baaa9ee7705b2916944c10a8ae85e /src | |
| parent | ff577255d3aa92ad104d674af9c789bf3be2d31f (diff) | |
Add integer-based theme scaling (#935)
Configurable over the options menu,
Diffstat (limited to 'src')
| -rw-r--r-- | src/aocharbutton.cpp | 17 | ||||
| -rw-r--r-- | src/charselect.cpp | 13 | ||||
| -rw-r--r-- | src/courtroom.cpp | 9 | ||||
| -rw-r--r-- | src/main.cpp | 8 | ||||
| -rw-r--r-- | src/options.cpp | 13 | ||||
| -rw-r--r-- | src/text_file_functions.cpp | 15 | ||||
| -rw-r--r-- | src/widgets/aooptionsdialog.cpp | 9 |
7 files changed, 62 insertions, 22 deletions
diff --git a/src/aocharbutton.cpp b/src/aocharbutton.cpp index 0c4ff129..1c9193c9 100644 --- a/src/aocharbutton.cpp +++ b/src/aocharbutton.cpp @@ -12,24 +12,28 @@ AOCharButton::AOCharButton(QWidget *parent, AOApplication *p_ao_app, int x_pos, taken = is_taken; - this->resize(60, 60); + int size = 60 * Options::getInstance().themeScalingFactor(); + int selector_size = 62 * Options::getInstance().themeScalingFactor(); + + this->resize(size, size); this->move(x_pos, y_pos); ui_taken = new AOImage(this, ao_app, true); - ui_taken->resize(60, 60); + ui_taken->resize(size, size); ui_taken->set_image("char_taken"); ui_taken->setAttribute(Qt::WA_TransparentForMouseEvents); ui_taken->hide(); ui_passworded = new AOImage(this, ao_app, true); - ui_passworded->resize(60, 60); + ui_passworded->resize(size, size); ui_passworded->set_image("char_passworded"); ui_passworded->setAttribute(Qt::WA_TransparentForMouseEvents); ui_passworded->hide(); ui_selector = new AOImage(parent, ao_app, true); - ui_selector->resize(62, 62); - ui_selector->move(x_pos - 1, y_pos - 1); + ui_selector->resize(selector_size, selector_size); + int offset = Options::getInstance().themeScalingFactor(); + ui_selector->move(x_pos - offset, y_pos - offset); ui_selector->set_image("char_selector"); ui_selector->setAttribute(Qt::WA_TransparentForMouseEvents); ui_selector->hide(); @@ -84,7 +88,8 @@ void AOCharButton::enterEvent(QEvent *e) void AOCharButton::enterEvent(QEnterEvent *e) #endif { - ui_selector->move(this->x() - 1, this->y() - 1); + int offset = Options::getInstance().themeScalingFactor(); + ui_selector->move(this->x() - offset, this->y() - offset); ui_selector->raise(); ui_selector->show(); diff --git a/src/charselect.cpp b/src/charselect.cpp index 31cf4711..3fc96546 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -151,11 +151,13 @@ void Courtroom::set_char_select_page() QPoint f_spacing = ao_app->get_button_spacing("char_button_spacing", "courtroom_design.ini"); + int s_button_size = button_width * Options::getInstance().themeScalingFactor(); + char_columns = - ((ui_char_buttons->width() - button_width) / (f_spacing.x() + button_width)) + + ((ui_char_buttons->width() - s_button_size) / (f_spacing.x() + s_button_size)) + 1; - char_rows = ((ui_char_buttons->height() - button_height) / - (f_spacing.y() + button_height)) + + char_rows = ((ui_char_buttons->height() - s_button_size) / + (f_spacing.y() + s_button_size)) + 1; max_chars_on_page = char_columns * char_rows; @@ -255,9 +257,10 @@ void Courtroom::put_button_in_place(int starting, int chars_on_this_page) int y_mod_count = 0; int startout = starting; + int size = button_width * Options::getInstance().themeScalingFactor(); for (int n = starting; n < startout + chars_on_this_page; ++n) { - int x_pos = (button_width + f_spacing.x()) * x_mod_count; - int y_pos = (button_height + f_spacing.y()) * y_mod_count; + int x_pos = (size + f_spacing.x()) * x_mod_count; + int y_pos = (size + f_spacing.y()) * y_mod_count; ui_char_button_list_filtered.at(n)->move(x_pos, y_pos); ui_char_button_list_filtered.at(n)->show(); diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 6786aacc..0e4ac25e 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -612,7 +612,7 @@ void Courtroom::set_courtroom_size() m_courtroom_width = f_courtroom.width; m_courtroom_height = f_courtroom.height; - this->setFixedSize(f_courtroom.width, f_courtroom.height); + this->setFixedSize(m_courtroom_width, m_courtroom_height); } ui_background->move(0, 0); ui_background->resize(m_courtroom_width, m_courtroom_height); @@ -1137,6 +1137,11 @@ void Courtroom::set_widgets() void Courtroom::set_fonts(QString p_char) { + QFont new_font = ao_app->default_font; + int new_font_size = new_font.pointSize() * Options::getInstance().themeScalingFactor(); + new_font.setPointSize(new_font_size); + ao_app->setFont(new_font); + set_font(ui_vp_showname, "", "showname", p_char); set_font(ui_vp_message, "", "message", p_char); set_font(ui_ic_chatlog, "", "ic_chatlog", p_char); @@ -1159,7 +1164,7 @@ void Courtroom::set_font(QWidget *widget, QString class_name, QString design_file = "courtroom_fonts.ini"; if (f_pointsize <= 0) f_pointsize = - ao_app->get_design_element(p_identifier, design_file, ao_app->get_chat(p_char)).toInt(); + ao_app->get_design_element(p_identifier, design_file, ao_app->get_chat(p_char)).toInt() * Options::getInstance().themeScalingFactor(); if (font_name == "") font_name = ao_app->get_design_element(p_identifier + "_font", design_file, ao_app->get_chat(p_char)); diff --git a/src/main.cpp b/src/main.cpp index 4528bc46..2c36c53c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,6 +26,14 @@ int main(int argc, char *argv[]) AOApplication::addLibraryPath(AOApplication::applicationDirPath() + "/lib"); QResource::registerResource(main_app.get_asset("themes/" + Options::getInstance().theme() + ".rcc")); + QFont main_font = main_app.font(); + main_app.default_font = main_font; + + QFont new_font = main_font; + int new_font_size = main_app.default_font.pointSize() * Options::getInstance().themeScalingFactor(); + new_font.setPointSize(new_font_size); + main_app.setFont(new_font); + QFontDatabase fontDatabase; QDirIterator it(get_base_path() + "fonts", QDirIterator::Subdirectories); diff --git a/src/options.cpp b/src/options.cpp index 4c32e963..d1822eec 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -87,6 +87,17 @@ QString Options::theme() const void Options::setTheme(QString value) { config.setValue("theme", value); } +int Options::themeScalingFactor() const +{ + int value = config.value("theme_scaling_factor", "1").toInt(); + if (value <= 0) { + value = 1; + } + return value; +} + +void Options::setThemeScalingFactor(int value) { config.setValue("theme_scaling_factor", value); } + int Options::blipRate() const { return config.value("blip_rate", 2).toInt(); } void Options::setBlipRate(int value) { config.setValue("blip_rate", value); } @@ -480,7 +491,7 @@ void Options::setServerSubTheme(QString value) { m_server_subtheme = value; } bool Options::animatedThemeEnabled() const { - return config.value("animated_theme", true).toBool(); + return config.value("animated_theme", false).toBool(); } void Options::setAnimatedThemeEnabled(bool value) diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp index 8aba93fd..51dc95ad 100644 --- a/src/text_file_functions.cpp +++ b/src/text_file_functions.cpp @@ -173,9 +173,8 @@ QPoint AOApplication::get_button_spacing(QString p_identifier, QString p_file) if (sub_line_elements.size() < 2) return return_value; - - return_value.setX(sub_line_elements.at(0).toInt()); - return_value.setY(sub_line_elements.at(1).toInt()); + return_value.setX(sub_line_elements.at(0).toInt() * Options::getInstance().themeScalingFactor()); + return_value.setY(sub_line_elements.at(1).toInt() * Options::getInstance().themeScalingFactor()); return return_value; } @@ -196,10 +195,12 @@ pos_size_type AOApplication::get_element_dimensions(QString p_identifier, if (sub_line_elements.size() < 4) return return_value; - return_value.x = sub_line_elements.at(0).toInt(); - return_value.y = sub_line_elements.at(1).toInt(); - return_value.width = sub_line_elements.at(2).toInt(); - return_value.height = sub_line_elements.at(3).toInt(); + int scale = Options::getInstance().themeScalingFactor(); + + return_value.x = sub_line_elements.at(0).toInt() * scale; + return_value.y = sub_line_elements.at(1).toInt() * scale; + return_value.width = sub_line_elements.at(2).toInt() * scale; + return_value.height = sub_line_elements.at(3).toInt() * scale; return return_value; } diff --git a/src/widgets/aooptionsdialog.cpp b/src/widgets/aooptionsdialog.cpp index 6f121b3b..e25b3805 100644 --- a/src/widgets/aooptionsdialog.cpp +++ b/src/widgets/aooptionsdialog.cpp @@ -216,7 +216,10 @@ void AOOptionsDialog::updateValues() void AOOptionsDialog::savePressed() { - bool l_reload_theme_required = (ui_theme_combobox->currentText() != Options::getInstance().theme()); + bool l_reload_theme_required = + (ui_theme_combobox->currentText() != Options::getInstance().theme()) || + (ui_theme_scaling_factor_sb->value() != + Options::getInstance().themeScalingFactor()); for (const OptionEntry &entry : qAsConst(optionEntries)) { entry.save(); } @@ -337,6 +340,7 @@ void AOOptionsDialog::setupUI() QDesktopServices::openUrl(QUrl::fromLocalFile(p_path)); }); + FROM_UI(QSpinBox, theme_scaling_factor_sb) FROM_UI(QCheckBox, animated_theme_cb) FROM_UI(QSpinBox, stay_time_spinbox) FROM_UI(QCheckBox, instant_objection_cb) @@ -363,6 +367,9 @@ void AOOptionsDialog::setupUI() FROM_UI(QCheckBox, sfx_on_idle_cb) FROM_UI(QCheckBox, evidence_double_click_cb) + registerOption<QSpinBox, int>("theme_scaling_factor_sb", + &Options::themeScalingFactor, + &Options::setThemeScalingFactor); registerOption<QCheckBox, bool>("animated_theme_cb", &Options::animatedThemeEnabled, &Options::setAnimatedThemeEnabled); |
