diff options
| author | David Skoland <davidskoland@gmail.com> | 2018-12-26 16:43:08 +0100 |
|---|---|---|
| committer | David Skoland <davidskoland@gmail.com> | 2018-12-26 16:43:08 +0100 |
| commit | 00cfd2750d39795e4c205aee2a33b92b1da2524d (patch) | |
| tree | 839c1129418ca8fefe41e6814917f9dabb6efa4b /src/emotes.cpp | |
| parent | 6f1bce5882676ea7affe717a2f5a00b8c3b7fe12 (diff) | |
moved headers into include and cpp files into src + logo into resource
Diffstat (limited to 'src/emotes.cpp')
| -rw-r--r-- | src/emotes.cpp | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/src/emotes.cpp b/src/emotes.cpp new file mode 100644 index 00000000..b6a217e6 --- /dev/null +++ b/src/emotes.cpp @@ -0,0 +1,174 @@ +#include "courtroom.h" + +#include "aoemotebutton.h" + +void Courtroom::construct_emotes() +{ + ui_emotes = new QWidget(this); + + set_size_and_pos(ui_emotes, "emotes"); + + QPoint f_spacing = ao_app->get_button_spacing("emote_button_spacing", "courtroom_design.ini"); + + const int button_width = 40; + int x_spacing = f_spacing.x(); + int x_mod_count = 0; + + const int button_height = 40; + int y_spacing = f_spacing.y(); + int y_mod_count = 0; + + emote_columns = ((ui_emotes->width() - button_width) / (x_spacing + button_width)) + 1; + emote_rows = ((ui_emotes->height() - button_height) / (y_spacing + button_height)) + 1; + + max_emotes_on_page = emote_columns * emote_rows; + + for (int n = 0 ; n < max_emotes_on_page ; ++n) + { + int x_pos = (button_width + x_spacing) * x_mod_count; + int y_pos = (button_height + y_spacing) * y_mod_count; + + AOEmoteButton *f_emote = new AOEmoteButton(ui_emotes, ao_app, x_pos, y_pos); + + ui_emote_list.append(f_emote); + + f_emote->set_id(n); + + connect(f_emote, SIGNAL(emote_clicked(int)), this, SLOT(on_emote_clicked(int))); + + ++x_mod_count; + + if (x_mod_count == emote_columns) + { + ++y_mod_count; + x_mod_count = 0; + } + } +} + +void Courtroom::set_emote_page() +{ + if (m_cid == -1) + return; + + int total_emotes = ao_app->get_emote_number(current_char); + + ui_emote_left->hide(); + ui_emote_right->hide(); + + for (AOEmoteButton *i_button : ui_emote_list) + { + i_button->hide(); + } + + int total_pages = total_emotes / max_emotes_on_page; + int emotes_on_page = 0; + + if (total_emotes % max_emotes_on_page != 0) + { + ++total_pages; + //i. e. not on the last page + if (total_pages > current_emote_page + 1) + emotes_on_page = max_emotes_on_page; + else + emotes_on_page = total_emotes % max_emotes_on_page; + + } + else + emotes_on_page = max_emotes_on_page; + + if (total_pages > current_emote_page + 1) + ui_emote_right->show(); + + if (current_emote_page > 0) + ui_emote_left->show(); + + for (int n_emote = 0 ; n_emote < emotes_on_page ; ++n_emote) + { + int n_real_emote = n_emote + current_emote_page * max_emotes_on_page; + AOEmoteButton *f_emote = ui_emote_list.at(n_emote); + + if (n_real_emote == current_emote) + f_emote->set_image(current_char, n_real_emote, "_on.png"); + else + f_emote->set_image(current_char, n_real_emote, "_off.png"); + + f_emote->show(); + } + +} + +void Courtroom::set_emote_dropdown() +{ + ui_emote_dropdown->clear(); + + int total_emotes = ao_app->get_emote_number(current_char); + QStringList emote_list; + + for (int n = 0 ; n < total_emotes ; ++n) + { + emote_list.append(ao_app->get_emote_comment(current_char, n)); + } + + ui_emote_dropdown->addItems(emote_list); +} + +void Courtroom::select_emote(int p_id) +{ + int min = current_emote_page * max_emotes_on_page; + int max = (max_emotes_on_page - 1) + current_emote_page * max_emotes_on_page; + + if (current_emote >= min && current_emote <= max) + ui_emote_list.at(current_emote % max_emotes_on_page)->set_image(current_char, current_emote, "_off.png"); + + int old_emote = current_emote; + + current_emote = p_id; + + if (current_emote >= min && current_emote <= max) + ui_emote_list.at(current_emote % max_emotes_on_page)->set_image(current_char, current_emote, "_on.png"); + + int emote_mod = ao_app->get_emote_mod(current_char, current_emote); + + if (old_emote == current_emote) + { + ui_pre->setChecked(!ui_pre->isChecked()); + } + else if (emote_mod == 1) + ui_pre->setChecked(true); + else + ui_pre->setChecked(false); + + ui_emote_dropdown->setCurrentIndex(current_emote); + + ui_ic_chat_message->setFocus(); +} + +void Courtroom::on_emote_clicked(int p_id) +{ + select_emote(p_id + max_emotes_on_page * current_emote_page); +} + +void Courtroom::on_emote_left_clicked() +{ + --current_emote_page; + + set_emote_page(); + + ui_ic_chat_message->setFocus(); +} + +void Courtroom::on_emote_right_clicked() +{ + qDebug() << "emote right clicked"; + ++current_emote_page; + + set_emote_page(); + + ui_ic_chat_message->setFocus(); +} + +void Courtroom::on_emote_dropdown_changed(int p_index) +{ + select_emote(p_index); +} |
