aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/aoapplication.h5
-rw-r--r--include/courtroom.h12
-rw-r--r--src/charselect.cpp10
-rw-r--r--src/courtroom.cpp120
-rw-r--r--src/packet_distribution.cpp2
-rw-r--r--src/text_file_functions.cpp21
6 files changed, 141 insertions, 29 deletions
diff --git a/include/aoapplication.h b/include/aoapplication.h
index c33130f4..f26c8161 100644
--- a/include/aoapplication.h
+++ b/include/aoapplication.h
@@ -202,6 +202,9 @@ public:
//Returns the list of words in callwords.ini
QStringList get_call_words();
+ //returns all of the file's lines in a QStringList
+ QStringList get_list_file(QString p_file);
+
//Process a file and return its text as a QString
QString read_file(QString filename);
@@ -259,6 +262,8 @@ public:
//Returns a QStringList of all key=value definitions on a given tag.
QStringList read_char_ini_tag(QString p_char, QString target_tag);
+ //Sets the char.ini p_search_line key under tag target_tag to value.
+ void set_char_ini(QString p_char, QString value, QString p_search_line, QString target_tag);
//Returns the text between target_tag and terminator_tag in p_file
QString get_stylesheet(QString p_file);
diff --git a/include/courtroom.h b/include/courtroom.h
index 0a7002bc..91f1f9ac 100644
--- a/include/courtroom.h
+++ b/include/courtroom.h
@@ -184,8 +184,11 @@ public:
QString get_current_char() {return current_char;}
QString get_current_background() {return current_background;}
+ //updates character to p_cid and updates necessary ui elements
+ void update_character(int p_cid);
+
//properly sets up some varibles: resets user state
- void enter_courtroom(int p_cid);
+ void enter_courtroom();
//helper function that populates ui_music_list with the contents of music_list
void list_music();
@@ -461,6 +464,9 @@ private:
QComboBox *ui_emote_dropdown;
QComboBox *ui_pos_dropdown;
+ QComboBox *ui_iniswap_dropdown;
+ AOButton *ui_iniswap_remove;
+
AOImage *ui_defense_bar;
AOImage *ui_prosecution_bar;
@@ -602,6 +608,10 @@ private slots:
void on_emote_dropdown_changed(int p_index);
void on_pos_dropdown_changed(int p_index);
+ void on_iniswap_dropdown_changed(int p_index);
+
+ void set_iniswap_dropdown();
+ void on_iniswap_remove_clicked();
void on_evidence_name_edited(QString text);
void on_evidence_image_name_edited();
diff --git a/src/charselect.cpp b/src/charselect.cpp
index 23b05134..972a17a3 100644
--- a/src/charselect.cpp
+++ b/src/charselect.cpp
@@ -64,7 +64,7 @@ void Courtroom::set_char_select()
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 char_select width or height in courtroom_design.ini!";
this->resize(714, 668);
}
else
@@ -129,15 +129,13 @@ void Courtroom::char_clicked(int n_char)
return;
}
- if (n_char == m_cid)
- {
- enter_courtroom(m_cid);
- }
- else
+ if (n_char != m_cid)
{
ao_app->send_server_packet(new AOPacket("PW#" + ui_char_password->text() + "#%"));
ao_app->send_server_packet(new AOPacket("CC#" + QString::number(ao_app->s_pv) + "#" + QString::number(n_char) + "#" + get_hdid() + "#%"));
}
+ update_character(n_char);
+ enter_courtroom();
ui_ic_chat_name->setPlaceholderText(char_list.at(n_char).name);
}
diff --git a/src/courtroom.cpp b/src/courtroom.cpp
index a179fb88..2b8f218a 100644
--- a/src/courtroom.cpp
+++ b/src/courtroom.cpp
@@ -163,6 +163,9 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
ui_pos_dropdown->addItem("jur");
ui_pos_dropdown->addItem("sea");
+ ui_iniswap_dropdown = new QComboBox(this);
+ ui_iniswap_remove = new AOButton(this, ao_app);
+
ui_defense_bar = new AOImage(this, ao_app);
ui_prosecution_bar = new AOImage(this, ao_app);
@@ -282,6 +285,9 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
connect(ui_emote_dropdown, SIGNAL(activated(int)), this, SLOT(on_emote_dropdown_changed(int)));
connect(ui_pos_dropdown, SIGNAL(currentIndexChanged(int)), this, SLOT(on_pos_dropdown_changed(int)));
+ connect(ui_iniswap_dropdown, SIGNAL(activated(int)), this, SLOT(on_iniswap_dropdown_changed(int)));
+ connect(ui_iniswap_remove, SIGNAL(clicked()), this, SLOT(on_iniswap_remove_clicked()));
+
connect(ui_mute_list, SIGNAL(clicked(QModelIndex)), this, SLOT(on_mute_list_clicked(QModelIndex)));
connect(ui_ic_chat_message, SIGNAL(returnPressed()), this, SLOT(on_chat_return_pressed()));
@@ -571,6 +577,13 @@ void Courtroom::set_widgets()
set_size_and_pos(ui_emote_dropdown, "emote_dropdown");
set_size_and_pos(ui_pos_dropdown, "pos_dropdown");
+ set_size_and_pos(ui_iniswap_dropdown, "iniswap_dropdown");
+ ui_iniswap_dropdown->setEditable(true);
+ ui_iniswap_dropdown->setInsertPolicy(QComboBox::InsertAtBottom);
+ set_size_and_pos(ui_iniswap_remove, "iniswap_remove");
+// ui_iniswap_remove->setText("X");
+ ui_iniswap_remove->set_image("evidencex");
+
set_size_and_pos(ui_defense_bar, "defense_bar");
ui_defense_bar->set_image("defensebar" + QString::number(defense_bar_state));
@@ -585,10 +598,15 @@ void Courtroom::set_widgets()
ui_blip_label->setText(tr("Blips"));
set_size_and_pos(ui_hold_it, "hold_it");
+// ui_hold_it->setText(tr("Hold It!"));
ui_hold_it->set_image("holdit");
+
set_size_and_pos(ui_objection, "objection");
+// ui_objection->setText(tr("Objection!"));
ui_objection->set_image("objection");
+
set_size_and_pos(ui_take_that, "take_that");
+// ui_take_that->setText(tr("Take That!"));
ui_take_that->set_image("takethat");
set_size_and_pos(ui_ooc_toggle, "ooc_toggle");
@@ -876,8 +894,10 @@ void Courtroom::set_background(QString p_background)
}
}
-void Courtroom::enter_courtroom(int p_cid)
+void Courtroom::update_character(int p_cid)
{
+ bool newchar = m_cid != p_cid;
+
m_cid = p_cid;
QString f_char;
@@ -909,11 +929,6 @@ void Courtroom::enter_courtroom(int p_cid)
set_emote_page();
set_emote_dropdown();
- current_evidence_page = 0;
- current_evidence = 0;
-
- set_evidence_page();
-
QString side = ao_app->get_char_side(f_char);
if (side == "jud")
@@ -947,6 +962,21 @@ void Courtroom::enter_courtroom(int p_cid)
else
ui_custom_objection->hide();
+ ui_char_select_background->hide();
+ ui_ic_chat_message->setEnabled(m_cid != -1);
+ ui_ic_chat_message->setFocus();
+
+ if (newchar)
+ set_iniswap_dropdown();
+}
+
+void Courtroom::enter_courtroom()
+{
+ current_evidence_page = 0;
+ current_evidence = 0;
+
+ set_evidence_page();
+
if (ao_app->flipping_enabled)
ui_flip->show();
else
@@ -975,11 +1005,6 @@ void Courtroom::enter_courtroom(int p_cid)
set_widgets();
//ui_server_chatlog->setHtml(ui_server_chatlog->toHtml());
-
- ui_char_select_background->hide();
-
- ui_ic_chat_message->setEnabled(m_cid != -1);
- ui_ic_chat_message->setFocus();
}
void Courtroom::list_music()
@@ -3224,6 +3249,70 @@ void Courtroom::on_pos_dropdown_changed(int p_index)
ao_app->send_server_packet(new AOPacket("CT#" + ui_ooc_chat_name->text() + "#/pos " + f_pos + "#%"));
}
+void Courtroom::set_iniswap_dropdown()
+{
+ ui_iniswap_dropdown->clear();
+ if (m_cid == -1)
+ {
+ ui_iniswap_dropdown->hide();
+ return;
+ }
+ QStringList iniswaps = ao_app->get_list_file(ao_app->get_character_path(char_list.at(m_cid).name, "iniswaps.ini"));
+ iniswaps.prepend(char_list.at(m_cid).name);
+ if (iniswaps.size() <= 0)
+ {
+ ui_iniswap_dropdown->hide();
+ return;
+ }
+ ui_iniswap_dropdown->show();
+ ui_iniswap_dropdown->addItems(iniswaps);
+
+ for (int i = 0; i < iniswaps.size(); ++i)
+ {
+ if (iniswaps.at(i) == current_char)
+ {
+ ui_iniswap_dropdown->setCurrentIndex(i);
+ if (i != 0)
+ ui_iniswap_remove->show();
+ else
+ ui_iniswap_remove->hide();
+ break;
+ }
+ }
+}
+
+void Courtroom::on_iniswap_dropdown_changed(int p_index)
+{
+ ui_ic_chat_message->setFocus();
+ QString iniswap = ui_iniswap_dropdown->itemText(p_index);
+ ao_app->set_char_ini(char_list.at(m_cid).name, iniswap, "name", "Options");
+
+ QStringList swaplist;
+ for (int i = 0; i < ui_iniswap_dropdown->count(); ++i)
+ {
+ QString entry = ui_iniswap_dropdown->itemText(i);
+ if (!swaplist.contains(entry) && entry != char_list.at(m_cid).name)
+ swaplist.append(entry);
+ }
+ ao_app->write_to_file(swaplist.join("\n"), ao_app->get_character_path(char_list.at(m_cid).name, "iniswaps.ini"));
+ ui_iniswap_dropdown->setCurrentIndex(p_index);
+ update_character(m_cid);
+ if (p_index != 0)
+ ui_iniswap_remove->show();
+ else
+ ui_iniswap_remove->hide();
+}
+
+void Courtroom::on_iniswap_remove_clicked()
+{
+ if (ui_iniswap_dropdown->itemText(ui_iniswap_dropdown->currentIndex()) != char_list.at(m_cid).name)
+ {
+ ui_iniswap_dropdown->removeItem(ui_iniswap_dropdown->currentIndex());
+ on_iniswap_dropdown_changed(0); //Reset back to original
+ update_character(m_cid);
+ }
+}
+
void Courtroom::on_mute_list_clicked(QModelIndex p_index)
{
QListWidgetItem *f_item = ui_mute_list->item(p_index.row());
@@ -3607,7 +3696,8 @@ void Courtroom::on_reload_theme_clicked()
//to update status on the background
set_background(current_background);
- enter_courtroom(m_cid);
+ update_character(m_cid);
+ enter_courtroom();
anim_state = 4;
text_state = 3;
@@ -3633,11 +3723,7 @@ void Courtroom::on_char_select_right_clicked()
void Courtroom::on_spectator_clicked()
{
- enter_courtroom(-1);
-
- ui_emotes->hide();
-
- ui_char_select_background->hide();
+ update_character(-1);
}
void Courtroom::on_call_mod_clicked()
diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp
index ff43f273..9eea1797 100644
--- a/src/packet_distribution.cpp
+++ b/src/packet_distribution.cpp
@@ -601,7 +601,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
goto end;
if (courtroom_constructed)
- w_courtroom->enter_courtroom(f_contents.at(2).toInt());
+ w_courtroom->update_character(f_contents.at(2).toInt());
}
else if (header == "MS")
{
diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp
index a70fdc50..f22bc748 100644
--- a/src/text_file_functions.cpp
+++ b/src/text_file_functions.cpp
@@ -75,16 +75,21 @@ QString AOApplication::get_audio_output_device()
QStringList AOApplication::get_call_words()
{
+ return get_list_file(get_base_path() + "callwords.ini");
+}
+
+QStringList AOApplication::get_list_file(QString p_file)
+{
QStringList return_value;
- QFile callwords_ini;
+ QFile p_ini;
- callwords_ini.setFileName(get_base_path() + "callwords.ini");
+ p_ini.setFileName(p_file);
- if (!callwords_ini.open(QIODevice::ReadOnly))
+ if (!p_ini.open(QIODevice::ReadOnly))
return return_value;
- QTextStream in(&callwords_ini);
+ QTextStream in(&p_ini);
while (!in.atEnd())
{
@@ -555,6 +560,14 @@ QString AOApplication::read_char_ini(QString p_char, QString p_search_line, QStr
return value;
}
+void AOApplication::set_char_ini(QString p_char, QString value, QString p_search_line, QString target_tag)
+{
+ QSettings settings(get_character_path(p_char, "char.ini"), QSettings::IniFormat);
+ settings.beginGroup(target_tag);
+ settings.setValue(p_search_line, value);
+ settings.endGroup();
+}
+
//returns all the values of target_tag
QStringList AOApplication::read_char_ini_tag(QString p_char, QString target_tag)
{