diff --git a/aoapplication.cpp b/aoapplication.cpp index 35259bc2f..707391c46 100644 --- a/aoapplication.cpp +++ b/aoapplication.cpp @@ -99,6 +99,11 @@ void AOApplication::reload_theme() current_theme = read_theme(); } +void AOApplication::set_theme_variant(QString theme_variant) +{ + this->theme_variant = theme_variant; +} + void AOApplication::set_favorite_list() { favorite_list = read_serverlist_txt(); diff --git a/aoapplication.h b/aoapplication.h index 138a55dae..383d421ba 100644 --- a/aoapplication.h +++ b/aoapplication.h @@ -150,6 +150,8 @@ class AOApplication : public QApplication //Overwrites config.ini with new theme void write_theme(QString theme); + //Set the theme variant + void set_theme_variant(QString theme_variant); //Returns the contents of serverlist.txt QVector read_serverlist_txt(); @@ -268,7 +270,7 @@ class AOApplication : public QApplication const int MINOR_VERSION = 8; QString current_theme = "default"; - QString theme_variant = "dr2"; + QString theme_variant = ""; QVector server_list; QVector favorite_list; diff --git a/courtroom.cpp b/courtroom.cpp index 810c03e93..102f1001f 100644 --- a/courtroom.cpp +++ b/courtroom.cpp @@ -1059,6 +1059,12 @@ void Courtroom::handle_clock(QString time) ui_vp_clock->play(string); } +void Courtroom::handle_theme_variant(QString theme_variant) +{ + ao_app->set_theme_variant(theme_variant); + on_reload_theme_clicked(); +} + void Courtroom::set_window_title(QString p_title) { this->setWindowTitle(p_title); @@ -2968,6 +2974,19 @@ void Courtroom::on_ooc_return_pressed() { m_sfx_player->play(ao_app->get_sfx("coinflip")); } + else if (ooc_message.startsWith("/variant")) + { + int space_location = ooc_message.indexOf(" "); + QString variant; + + if (space_location == -1) + variant = ""; + else + variant = ooc_message.mid(space_location+1); + + handle_theme_variant(variant); + } + QStringList packet_contents; packet_contents.append(ui_ooc_chat_name->text()); packet_contents.append(ooc_message); diff --git a/courtroom.h b/courtroom.h index 5740d9b72..3c0222371 100644 --- a/courtroom.h +++ b/courtroom.h @@ -184,6 +184,9 @@ class Courtroom : public QMainWindow //handle server-side clock animation and display void handle_clock(QString time); + //handle request to change theme variant + void handle_theme_variant(QString theme_variant); + void play_preanim(); QString parse_message(QString message); diff --git a/packet_distribution.cpp b/packet_distribution.cpp index a428a7fde..5e1312f45 100644 --- a/packet_distribution.cpp +++ b/packet_distribution.cpp @@ -665,6 +665,13 @@ void AOApplication::server_packet_received(AOPacket *p_packet) { w_courtroom->handle_clock(f_contents.at(1)); } + else if (header == "VA") + { + if (courtroom_constructed) + { + w_courtroom->handle_theme_variant(f_contents.at(0)); + } + } end: