diff --git a/aoapplication.h b/aoapplication.h index be72622..7934dbb 100644 --- a/aoapplication.h +++ b/aoapplication.h @@ -99,7 +99,8 @@ public: QString read_user_theme(); void write_to_serverlist_txt(QString p_line); QVector read_serverlist_txt(); - pos_size_type get_pos_and_size(QString p_identifier, QString p_design_path); + pos_size_type get_element_dimensions(QString p_identifier, QString p_file); + int get_font_size(QString p_identifier, QString p_file); QString read_char_ini(QString p_char, QString p_search_line, QString target_tag, QString terminator_tag); QString get_char_side(QString p_char); QString get_showname(QString p_char); @@ -116,6 +117,8 @@ public: int get_sfx_delay(QString p_char, int p_emote); int get_emote_mod(QString p_char, int p_emote); QString get_gender(QString p_char); + QString read_design_ini(QString p_identifier, QString p_design_path); + private: const int RELEASE = 2; diff --git a/courtroom.cpp b/courtroom.cpp index e6b6d7a..ebb180e 100644 --- a/courtroom.cpp +++ b/courtroom.cpp @@ -328,25 +328,25 @@ void Courtroom::set_mute_list() void Courtroom::set_widgets() { - QString design_ini_path = ao_app->get_theme_path() + "courtroom_design.ini"; - QString default_ini_path = ao_app->get_base_path() + "themes/default/courtroom_design.ini"; + QString filename = "courtroom_design.ini"; - pos_size_type f_courtroom = ao_app->get_pos_and_size("courtroom", design_ini_path); + pos_size_type f_courtroom = ao_app->get_element_dimensions("courtroom", filename); if (f_courtroom.width < 0 || f_courtroom.height < 0) { - f_courtroom = ao_app->get_pos_and_size("courtroom", default_ini_path); - if (f_courtroom.width < 0 || f_courtroom.height < 0) - { - qDebug() << "ERROR: did not find courtroom width or height in courtroom_design.ini!"; - //T0D0: add error box then quit application, this is not recoverable - } + qDebug() << "W: did not find courtroom width or height in " << filename; + + this->resize(714, 668); + } + else + { + m_courtroom_width = f_courtroom.width; + m_courtroom_height = f_courtroom.height; + + this->resize(f_courtroom.width, f_courtroom.height); } - m_courtroom_width = f_courtroom.width; - m_courtroom_height = f_courtroom.height; - - this->resize(m_courtroom_width, m_courtroom_height); + set_fonts(); ui_background->move(0, 0); ui_background->resize(m_courtroom_width, m_courtroom_height); @@ -391,11 +391,6 @@ void Courtroom::set_widgets() set_size_and_pos(ui_vp_message, "message"); ui_vp_message->setTextInteractionFlags(Qt::NoTextInteraction); - #if (defined (_WIN32) || defined (_WIN64)) - ui_vp_message->setFont(pt_10); - #else - ui_vp_message->setFont(pt_9); - #endif ui_vp_message->setStyleSheet("background-color: rgba(0, 0, 0, 0);" "color: white"); @@ -416,11 +411,6 @@ void Courtroom::set_widgets() ui_vp_objection->combo_resize(ui_viewport->width(), ui_viewport->height()); set_size_and_pos(ui_ic_chatlog, "ic_chatlog"); - #if (defined (_WIN32) || defined (_WIN64)) - ui_ic_chatlog->setFont(pt_10); - #else - ui_ic_chatlog->setFont(pt_9); - #endif ui_ic_chatlog->setStyleSheet("QPlainTextEdit{ background-color: rgba(0, 0, 0, 0);" "color: white; }"); @@ -573,6 +563,22 @@ void Courtroom::set_widgets() } +void Courtroom::set_font(QWidget *widget, int weight) +{ + widget->setFont(QFont("Sans", weight)); +} + +void Courtroom::set_fonts() +{ + QString design_file = "courtroom_fonts.ini"; + + set_font(ui_vp_showname, ao_app->get_font_size("showname", design_file)); + set_font(ui_vp_message, ao_app->get_font_size("message", design_file)); + set_font(ui_ic_chatlog, ao_app->get_font_size("ic_chatlog", design_file)); + set_font(ui_ms_chatlog, ao_app->get_font_size("ms_chatlog", design_file)); + set_font(ui_server_chatlog, ao_app->get_font_size("server_chatlog", design_file)); +} + void Courtroom::set_window_title(QString p_title) { this->setWindowTitle(p_title); @@ -580,23 +586,20 @@ void Courtroom::set_window_title(QString p_title) void Courtroom::set_size_and_pos(QWidget *p_widget, QString p_identifier) { - QString design_ini_path = ao_app->get_theme_path() + "courtroom_design.ini"; - QString default_ini_path = ao_app->get_base_path() + "themes/default/courtroom_design.ini"; + QString filename = "courtroom_design.ini"; - pos_size_type design_ini_result = ao_app->get_pos_and_size(p_identifier, design_ini_path); + pos_size_type design_ini_result = ao_app->get_element_dimensions(p_identifier, filename); if (design_ini_result.width < 0 || design_ini_result.height < 0) { - design_ini_result = ao_app->get_pos_and_size(p_identifier, default_ini_path); - - if (design_ini_result.width < 0 || design_ini_result.height < 0) - { - qDebug() << "W: could not find \"" << p_identifier << "\" in courtroom_design.ini"; - } + qDebug() << "W: could not find \"" << p_identifier << "\" in " << filename; + p_widget->hide(); + } + else + { + p_widget->move(design_ini_result.x, design_ini_result.y); + p_widget->resize(design_ini_result.width, design_ini_result.height); } - - p_widget->move(design_ini_result.x, design_ini_result.y); - p_widget->resize(design_ini_result.width, design_ini_result.height); } void Courtroom::set_taken(int n_char, bool p_taken) @@ -638,27 +641,19 @@ void Courtroom::done_received() void Courtroom::set_char_select() { - QString design_ini_path = ao_app->get_theme_path() + "courtroom_design.ini"; - QString default_ini_path = ao_app->get_base_path() + "themes/default/courtroom_design.ini"; + QString filename = "courtroom_design.ini"; - pos_size_type f_charselect = ao_app->get_pos_and_size("char_select", design_ini_path); + pos_size_type f_charselect = ao_app->get_element_dimensions("char_select", filename); if (f_charselect.width < 0 || f_charselect.height < 0) { - f_charselect = ao_app->get_pos_and_size("char_select", default_ini_path); - if (f_charselect.width < 0 || f_charselect.height < 0) - { - qDebug() << "W: did not find courtroom width or height in courtroom_design.ini!"; - } + qDebug() << "W: did not find courtroom width or height in courtroom_design.ini!"; + this->resize(714, 668); } - - this->resize(f_charselect.width, f_charselect.height); - - ui_char_select_background->resize(f_charselect.width, f_charselect.height); + else + this->resize(f_charselect.width, f_charselect.height); ui_char_select_background->set_image("charselect_background.png"); - ui_char_select_background->move(0, 0); - } void Courtroom::set_char_select_page() diff --git a/courtroom.h b/courtroom.h index 1154de9..10d387e 100644 --- a/courtroom.h +++ b/courtroom.h @@ -40,6 +40,8 @@ public: void append_music(QString f_music){music_list.append(f_music);} void set_widgets(); + void set_font(QWidget *widget, int weight); + void set_fonts(); void set_window_title(QString p_title); void set_size_and_pos(QWidget *p_widget, QString p_identifier); void set_taken(int n_char, bool p_taken); diff --git a/lobby.cpp b/lobby.cpp index cfcc8bf..5d69e9c 100644 --- a/lobby.cpp +++ b/lobby.cpp @@ -131,23 +131,20 @@ void Lobby::set_widgets() void Lobby::set_size_and_pos(QWidget *p_widget, QString p_identifier) { - QString design_ini_path = ao_app->get_theme_path() + "lobby_design.ini"; - QString default_ini_path = ao_app->get_base_path() + "themes/default/lobby_design.ini"; + QString filename = "lobby_design.ini"; - pos_size_type design_ini_result = ao_app->get_pos_and_size(p_identifier, design_ini_path); + pos_size_type design_ini_result = ao_app->get_element_dimensions(p_identifier, filename); if (design_ini_result.width < 0 || design_ini_result.height < 0) { - design_ini_result = ao_app->get_pos_and_size(p_identifier, default_ini_path); - - if (design_ini_result.width < 0 || design_ini_result.height < 0) - { - qDebug() << "W: could not find " << p_identifier << " in lobby_design.ini"; - } + qDebug() << "W: could not find " << p_identifier << " in " << filename; + p_widget->hide(); + } + else + { + p_widget->move(design_ini_result.x, design_ini_result.y); + p_widget->resize(design_ini_result.width, design_ini_result.height); } - - p_widget->move(design_ini_result.x, design_ini_result.y); - p_widget->resize(design_ini_result.width, design_ini_result.height); } void Lobby::set_loading_text(QString p_text) diff --git a/text_file_functions.cpp b/text_file_functions.cpp index 706078c..857201a 100644 --- a/text_file_functions.cpp +++ b/text_file_functions.cpp @@ -85,26 +85,23 @@ QVector AOApplication::read_serverlist_txt() return f_server_list; } -pos_size_type AOApplication::get_pos_and_size(QString p_identifier, QString p_design_path) +QString AOApplication::read_design_ini(QString p_identifier, QString p_design_path) { QFile design_ini; - pos_size_type return_value; - design_ini.setFileName(p_design_path); if (!design_ini.open(QIODevice::ReadOnly)) { qDebug() << "W: Could not open or read " << p_design_path; - //caller should deal with the result properly(check width and height of output for negatives) - return_value.height = -1; - return_value.width = -1; - return return_value; + return ""; } QTextStream in(&design_ini); + QString result = ""; + while (!in.atEnd()) { QString f_line = in.readLine(); @@ -114,29 +111,72 @@ pos_size_type AOApplication::get_pos_and_size(QString p_identifier, QString p_de QStringList line_elements = f_line.split("="); + if (line_elements.at(0).trimmed() != p_identifier) + continue; + if (line_elements.size() < 2) continue; - QStringList sub_line_elements = line_elements.at(1).split(","); - - if (sub_line_elements.size() < 4) - continue; - - //T0D0 check if integer conversion actually succeeded - 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(); - - return return_value; + result = line_elements.at(1).trimmed(); + break; } - //caller should deal with the result properly(check width and height of output for negatives) - return_value.height = -1; + + design_ini.close(); + + return result; +} + +pos_size_type AOApplication::get_element_dimensions(QString p_identifier, QString p_file) +{ + QString design_ini_path = get_theme_path() + p_file; + QString default_path = get_default_theme_path() + p_file; + QString f_result = read_design_ini(p_identifier, design_ini_path); + + pos_size_type return_value; + + return_value.x = 0; + return_value.y = 0; return_value.width = -1; + return_value.height = -1; + + if (f_result == "") + { + f_result = read_design_ini(p_identifier, default_path); + + if (f_result == "") + return return_value; + } + + QStringList sub_line_elements = f_result.split(","); + + 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(); return return_value; } +int AOApplication::get_font_size(QString p_identifier, QString p_file) +{ + QString design_ini_path = get_theme_path() + p_file; + QString default_path = get_default_theme_path() + p_file; + QString f_result = read_design_ini(p_identifier, design_ini_path); + + if (f_result == "") + { + f_result = read_design_ini(p_identifier, default_path); + + if (f_result == "") + return 10; + } + + return f_result.toInt(); +} + //returns whatever is to the right of "search_line =" within target_tag and terminator_tag, trimmed //returns the empty string if the search line couldnt be found QString AOApplication::read_char_ini(QString p_char, QString p_search_line, QString target_tag, QString terminator_tag)