aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/aoapplication.h5
-rw-r--r--include/aolineedit.h11
-rw-r--r--include/courtroom.h16
-rw-r--r--include/datatypes.h15
-rw-r--r--src/aolineedit.cpp14
-rw-r--r--src/courtroom.cpp325
-rw-r--r--src/evidence.cpp6
-rw-r--r--src/text_file_functions.cpp49
8 files changed, 226 insertions, 215 deletions
diff --git a/include/aoapplication.h b/include/aoapplication.h
index fef299b2..89bfaa26 100644
--- a/include/aoapplication.h
+++ b/include/aoapplication.h
@@ -242,6 +242,9 @@ public:
//Returns the color with p_identifier from p_file
QColor get_color(QString p_identifier, QString p_file);
+ // Returns the markdown symbol used for specified p_identifier such as colors
+ QString get_chat_markdown(QString p_identifier, QString p_file);
+
// Returns the color from the misc folder.
QColor get_chat_color(QString p_identifier, QString p_chat);
@@ -261,7 +264,7 @@ public:
QString read_char_ini(QString p_char, QString p_search_line, QString target_tag);
//Returns a QStringList of all key=value definitions on a given tag.
- QStringList read_char_ini_tag(QString p_char, QString target_tag);
+ QStringList read_ini_tags(QString p_file, 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);
diff --git a/include/aolineedit.h b/include/aolineedit.h
index ce17680d..09521729 100644
--- a/include/aolineedit.h
+++ b/include/aolineedit.h
@@ -11,16 +11,17 @@ class AOLineEdit : public QLineEdit
public:
AOLineEdit(QWidget *parent);
+ void preserve_selection(bool toggle) {p_selection = toggle;}
+
+private:
+ bool p_selection = false;
+
protected:
void mouseDoubleClickEvent(QMouseEvent *e);
+ void focusOutEvent(QFocusEvent *ev);
signals:
void double_clicked();
-
-private slots:
- void on_enter_pressed();
-
-
};
#endif // AOLINEEDIT_H
diff --git a/include/courtroom.h b/include/courtroom.h
index 5aad1cb4..72dec046 100644
--- a/include/courtroom.h
+++ b/include/courtroom.h
@@ -168,12 +168,6 @@ public:
//sets desk and bg based on pos in chatmessage
void set_scene(QString f_desk_mod, QString f_side);
- //sets text color based on text color in chatmessage
- void set_text_color();
-
- // And gets the color, too!
- QColor get_text_color(QString color);
-
//takes in serverD-formatted IP list as prints a converted version to server OOC
//admittedly poorly named
void set_ip_list(QString p_list);
@@ -213,7 +207,7 @@ public:
//This function filters out the common CC inline text trickery, for appending to
//the IC chatlog.
- QString filter_ic_text(QString p_text, bool colorize = false, int pos = -1, int default_color = WHITE);
+ QString filter_ic_text(QString p_text, bool colorize = false, int pos = -1, int default_color = 0);
//adds text to the IC chatlog. p_name first as bold then p_text then a newlin
//this function keeps the chatlog scrolled to the top unless there's text selected
@@ -360,6 +354,9 @@ private:
int realization_state = 0;
int screenshake_state = 0;
int text_color = 0;
+ static const int max_colors = 12; //How many unique user colors are possible
+ QVector<int> color_row_to_number; //Current color list indexes to real color references
+
bool is_presenting_evidence = false;
QString effect = "";
@@ -440,7 +437,7 @@ private:
QListWidget *ui_pair_list;
QSpinBox *ui_pair_offset_spinbox;
- QLineEdit *ui_ic_chat_message;
+ AOLineEdit *ui_ic_chat_message;
QLineEdit *ui_ic_chat_name;
QLineEdit *ui_ooc_chat_message;
@@ -625,7 +622,7 @@ private slots:
QString get_char_sfx();
int get_char_sfx_delay();
- void on_evidence_name_edited(QString text);
+ void on_evidence_name_edited();
void on_evidence_image_name_edited();
void on_evidence_image_button_clicked();
void on_evidence_clicked(int p_id);
@@ -654,6 +651,7 @@ private slots:
void on_prosecution_plus_clicked();
void on_text_color_changed(int p_color);
+ void set_text_color_dropdown();
void on_music_slider_moved(int p_value);
void on_sfx_slider_moved(int p_value);
diff --git a/include/datatypes.h b/include/datatypes.h
index 1917482a..835cf8f4 100644
--- a/include/datatypes.h
+++ b/include/datatypes.h
@@ -110,19 +110,4 @@ enum CHAT_MESSAGE
EFFECTS
};
-enum COLOR
-{
- WHITE = 0,
- GREEN,
- RED,
- ORANGE,
- BLUE,
- YELLOW,
- RAINBOW,
- PINK,
- CYAN,
- GRAY,
- BLANK
-};
-
#endif // DATATYPES_H
diff --git a/src/aolineedit.cpp b/src/aolineedit.cpp
index 13f87f31..e345de3b 100644
--- a/src/aolineedit.cpp
+++ b/src/aolineedit.cpp
@@ -2,21 +2,19 @@
AOLineEdit::AOLineEdit(QWidget *parent) : QLineEdit(parent)
{
- this->setReadOnly(true);
- this->setFrame(false);
-
- connect(this, SIGNAL(returnPressed()), this, SLOT(on_enter_pressed()));
}
void AOLineEdit::mouseDoubleClickEvent(QMouseEvent *e)
{
QLineEdit::mouseDoubleClickEvent(e);
- this->setReadOnly(false);
double_clicked();
}
-
-void AOLineEdit::on_enter_pressed()
+void AOLineEdit::focusOutEvent(QFocusEvent *ev)
{
- this->setReadOnly(true);
+ int start = selectionStart();
+ int end = selectionEnd();
+ QLineEdit::focusOutEvent(ev);
+ if (p_selection && start != -1 && end != -1)
+ this->setSelection(start, end);
}
diff --git a/src/courtroom.cpp b/src/courtroom.cpp
index 48b88648..3ff1aa23 100644
--- a/src/courtroom.cpp
+++ b/src/courtroom.cpp
@@ -141,9 +141,10 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
ui_ic_chat_name->setFrame(false);
ui_ic_chat_name->setPlaceholderText(tr("Showname"));
- ui_ic_chat_message = new QLineEdit(this);
+ ui_ic_chat_message = new AOLineEdit(this);
ui_ic_chat_message->setFrame(false);
ui_ic_chat_message->setPlaceholderText(tr("Message"));
+ ui_ic_chat_message->preserve_selection(true);
ui_muted = new AOImage(ui_ic_chat_message, ao_app);
ui_muted->hide();
@@ -247,15 +248,6 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
ui_prosecution_minus = new AOButton(this, ao_app);
ui_text_color = new QComboBox(this);
- ui_text_color->addItem(tr("White"));
- ui_text_color->addItem(tr("Green"));
- ui_text_color->addItem(tr("Red"));
- ui_text_color->addItem(tr("Orange"));
- ui_text_color->addItem(tr("Blue"));
- ui_text_color->addItem(tr("Yellow"));
- ui_text_color->addItem(tr("Rainbow"));
- ui_text_color->addItem(tr("Pink"));
- ui_text_color->addItem(tr("Cyan"));
ui_music_slider = new QSlider(Qt::Horizontal, this);
ui_music_slider->setRange(0, 100);
@@ -784,6 +776,7 @@ void Courtroom::set_widgets()
set_size_and_pos(ui_text_color, "text_color");
ui_text_color->setToolTip(tr("Change the text color of the spoken message."));
+ set_text_color_dropdown();
set_size_and_pos(ui_music_slider, "music_slider");
set_size_and_pos(ui_sfx_slider, "sfx_slider");
@@ -1513,7 +1506,7 @@ void Courtroom::on_chat_return_pressed()
packet += f_emote;
if (ao_app->is_frame_network_enabled())
{
- QString sfx_frames = ao_app->read_char_ini_tag(current_char, f_emote.append(f_effect)).join("|");
+ QString sfx_frames = ao_app->read_ini_tags(ao_app->get_character_path(current_char, "char.ini"), f_emote.append(f_effect)).join("|");
if (sfx_frames != "")
packet += "|" + sfx_frames;
}
@@ -1770,7 +1763,6 @@ void Courtroom::handle_chatmessage_2()
this->set_qfont(ui_vp_message, "", QFont(font_name, f_weight), f_color, bold);
set_scene(m_chatmessage[DESK_MOD], m_chatmessage[SIDE]);
- set_text_color();
// Check if the message needs to be centered.
QString f_message = m_chatmessage[MESSAGE];
@@ -2058,38 +2050,6 @@ void Courtroom::handle_chatmessage_3()
}
- int f_anim_state = 0;
- //BLUE is from an enum in datatypes.h
- bool text_is_blue = m_chatmessage[TEXT_COLOR].toInt() == BLUE || m_chatmessage[TEXT_COLOR].toInt() == ORANGE;
-
- if (!text_is_blue && text_state == 1)
- {
- //talking
- f_anim_state = 2;
- }
- else
- {
- //idle
- f_anim_state = 3;
- }
-
- if (f_anim_state <= anim_state)
- return;
-
- ui_vp_player_char->stop();
- QString f_char = m_chatmessage[CHAR_NAME];
- QString f_emote = m_chatmessage[EMOTE];
-
- if (f_anim_state == 2) {
- ui_vp_player_char->play_talking(f_char, f_emote);
- anim_state = 2;
- }
- else
- {
- ui_vp_player_char->play_idle(f_char, f_emote);
- anim_state = 3;
- }
-
QString f_message = m_chatmessage[MESSAGE];
QStringList call_words = ao_app->get_call_words();
@@ -2115,13 +2075,13 @@ QString Courtroom::filter_ic_text(QString p_text, bool colorize, int pos, int de
int check_pos = 0;
bool ic_next_is_not_special = false;
QString f_character = p_text.at(check_pos);
- std::stack<COLOR> ic_color_stack;
+ std::stack<int> ic_color_stack;
if (colorize)
{
- ic_color_stack.push(static_cast<COLOR>(default_color));
+ ic_color_stack.push(default_color);
qDebug() << ic_color_stack.top();
- QString appendage = "<font color=\""+ get_text_color(QString::number(ic_color_stack.top())).name(QColor::HexRgb) +"\">";
+ QString appendage = "<font color=\""+ ao_app->get_chat_color(QString::number(ic_color_stack.top()), m_chatmessage[CHAR_NAME]).name(QColor::HexRgb) +"\">";
p_text.insert(check_pos, appendage);
check_pos += appendage.size();
if (pos > -1)
@@ -2151,84 +2111,91 @@ QString Courtroom::filter_ic_text(QString p_text, bool colorize, int pos, int de
pos -= 1;
}
- //Colors that destroy the character
- else if (f_character == "`")
+ bool is_end = false;
+ bool remove = false;
+ //Parse markdown colors
+ for (int c = 0; c < max_colors; ++c)
{
- if (colorize)
+ QString markdown_start = ao_app->get_chat_markdown("c" + QString::number(c) + "_start", m_chatmessage[CHAR_NAME]);
+ if (markdown_start.isEmpty()) //Not defined
+ continue;
+ QString markdown_end = ao_app->get_chat_markdown("c" + QString::number(c) + "_end", m_chatmessage[CHAR_NAME]);
+ bool markdown_remove = ao_app->get_chat_markdown("c" + QString::number(c) + "_remove", m_chatmessage[CHAR_NAME]) == "1";
+
+ if (markdown_end.isEmpty() || markdown_end == markdown_start) //"toggle switch" type
{
- if (!ic_color_stack.empty() && ic_color_stack.top() == GREEN && default_color != GREEN)
- ic_color_stack.pop(); //Cease our coloring
- else
+ if (f_character == markdown_start)
{
- ic_color_stack.push(GREEN); //Begin our coloring
+ if (colorize)
+ {
+ if (!ic_color_stack.empty() && ic_color_stack.top() == c && default_color != c)
+ ic_color_stack.pop(); //Cease our coloring
+ else
+ {
+ ic_color_stack.push(c); //Begin our coloring
+ }
+ color_update = true;
+ }
+ remove = markdown_remove;
+ break; //Prevent it from looping forward for whatever reason
}
- color_update = true;
}
- else
- p_text.remove(check_pos, 1);
- }
- else if (f_character == "|")
- {
- if (colorize)
+ else if (f_character == markdown_start || (f_character == markdown_end && ic_color_stack.top() == c))
{
- if (!ic_color_stack.empty() && ic_color_stack.top() == ORANGE && default_color != ORANGE)
- ic_color_stack.pop(); //Cease our coloring
- else
+ if (colorize)
{
- ic_color_stack.push(ORANGE); //Begin our coloring
+ if (f_character == markdown_start)
+ {
+ ic_color_stack.push(c); //Begin our coloring
+ }
+ else if (f_character == markdown_end)
+ {
+ ic_color_stack.pop(); //Cease our coloring
+ is_end = true;
+ }
+ color_update = true;
}
- color_update = true;
+ remove = markdown_remove;
+ break; //Prevent it from looping forward for whatever reason
}
- else
- p_text.remove(check_pos, 1);
- }
-
- //Colors that don't destroy the character and use 2 chars for beginning/end
- else if (colorize && f_character == "(")
- {
- ic_color_stack.push(BLUE); //Begin our coloring
- color_update = true;
- }
- else if (colorize && f_character == ")" && ic_color_stack.top() == BLUE)
- {
- ic_color_stack.pop(); //Cease our coloring
- color_update = true;
- }
- else if (colorize && f_character == "[")
- {
- if (colorize)
- ic_color_stack.push(GRAY); //Begin our coloring
- color_update = true;
}
- else if (colorize && f_character == "]" && ic_color_stack.top() == GRAY)
- {
- if (colorize)
- ic_color_stack.pop(); //Cease our coloring
- color_update = true;
- }
-
//Parse the newest color stack
- if (!ic_next_is_not_special && color_update && (pos <= -1 || check_pos < pos)) //Only color text if we haven't reached the "invisible threshold"
+ if (color_update)
{
- QString appendage = "</font>";
+ if (!ic_next_is_not_special && (pos <= -1 || check_pos < pos)) //Only color text if we haven't reached the "invisible threshold"
+ {
+ QString appendage = "</font>";
- if (!ic_color_stack.empty())
- appendage += "<font color=\""+ get_text_color(QString::number(ic_color_stack.top())).name(QColor::HexRgb) +"\">";
+ if (!ic_color_stack.empty())
+ appendage += "<font color=\""+ ao_app->get_chat_color(QString::number(ic_color_stack.top()), m_chatmessage[CHAR_NAME]).name(QColor::HexRgb) +"\">";
- if (f_character == "(" || f_character == "[") //Gotta capture them in the color too
- p_text.insert(check_pos, appendage);
- else if (f_character == ")" || f_character == "]")
- p_text.insert(check_pos+1, appendage);
- else
- {
- p_text.remove(check_pos, 1);
- p_text.insert(check_pos, appendage);
- check_pos -= 1;
- pos -= 1;
+ if (!is_end || remove)
+ {
+ if (remove)
+ p_text.remove(check_pos, 1);
+
+ p_text.insert(check_pos, appendage);
+
+ if (remove)
+ {
+ check_pos -= 1;
+ pos -= 1;
+ }
+ }
+ else
+ {
+ p_text.insert(check_pos+1, appendage);
+ }
+ check_pos += appendage.size();
+ if (pos > -1)
+ pos += appendage.size();
}
- check_pos += appendage.size();
- if (pos > -1)
- pos += appendage.size();
+ }
+ else if (remove) //Simple remove request
+ {
+ p_text.remove(check_pos, 1);
+ check_pos -= 1;
+ pos -= 1;
}
}
else
@@ -2246,8 +2213,8 @@ QString Courtroom::filter_ic_text(QString p_text, bool colorize, int pos, int de
appendage += "</font>";
}
- ic_color_stack.push(BLANK);
- appendage += "<font color=\""+ get_text_color(QString::number(BLANK)).name(QColor::HexArgb) +"\">";
+ ic_color_stack.push(-1); //Dummy colorstack push for maximum </font> appendage
+ appendage += "<font color=\"#00000000\">";
p_text.insert(check_pos, appendage);
}
check_pos += 1;
@@ -2447,9 +2414,6 @@ void Courtroom::start_chat_ticking()
this->do_screenshake();
}
- set_text_color();
-// rainbow_counter = 0;
-
if (chatmessage_is_empty)
{
//since the message is empty, it's technically done ticking
@@ -2457,13 +2421,6 @@ void Courtroom::start_chat_ticking()
return;
}
- // At this point, we'd do well to clear the inline colour stack.
- // This stops it from flowing into next messages.
-// while (!inline_colour_stack.empty())
-// {
-// inline_colour_stack.pop();
-// }
-
ui_vp_chatbox->show();
ui_vp_message->show();
@@ -2486,6 +2443,22 @@ void Courtroom::start_chat_ticking()
//means text is currently ticking
text_state = 1;
+
+ //If this color is talking
+ bool color_is_talking = ao_app->get_chat_markdown("c" + m_chatmessage[TEXT_COLOR] + "_talking", m_chatmessage[CHAR_NAME]) == "1";
+
+ if (color_is_talking && text_state == 1 && anim_state < 2) //Set it to talking as we're not on that already
+ {
+// ui_vp_player_char->stop();
+ ui_vp_player_char->play_talking(m_chatmessage[CHAR_NAME], m_chatmessage[EMOTE]);
+ anim_state = 2;
+ }
+ else if (anim_state < 3) //Set it to idle as we're not on that already
+ {
+// ui_vp_player_char->stop();
+ ui_vp_player_char->play_idle(m_chatmessage[CHAR_NAME], m_chatmessage[EMOTE]);
+ anim_state = 3;
+ }
}
void Courtroom::chat_tick()
@@ -2500,6 +2473,7 @@ void Courtroom::chat_tick()
// Stops blips from playing when we have a formatting option.
bool formatting_char = false;
+ bool is_talking = ao_app->get_chat_markdown("c" + m_chatmessage[TEXT_COLOR] + "_talking", m_chatmessage[CHAR_NAME]) == "1";
if (tick_pos >= f_message.size())
{
@@ -2568,11 +2542,25 @@ void Courtroom::chat_tick()
this->do_flash();
formatting_char = true;
}
-
- //Color memes
- else if (f_character == "`" || f_character == "|")
+ else
{
- formatting_char = true;
+ //Parse markdown colors
+ for (int c = 0; c < max_colors; ++c)
+ {
+ QString markdown_start = ao_app->get_chat_markdown("c" + QString::number(c) + "_start", m_chatmessage[CHAR_NAME]);
+ if (markdown_start.isEmpty())
+ continue;
+ QString markdown_end = ao_app->get_chat_markdown("c" + QString::number(c) + "_end", m_chatmessage[CHAR_NAME]);
+ bool markdown_remove = ao_app->get_chat_markdown("c" + QString::number(c) + "_remove", m_chatmessage[CHAR_NAME]) == "1";
+ bool color_is_talking = ao_app->get_chat_markdown("c" + QString::number(c) + "_talking", m_chatmessage[CHAR_NAME]) == "1";
+
+ if (markdown_remove && (f_character == markdown_start || f_character == markdown_end))
+ {
+ formatting_char = true;
+ is_talking = color_is_talking;
+ break;
+ }
+ }
}
}
else
@@ -2591,12 +2579,12 @@ void Courtroom::chat_tick()
// Keep the speed at bay.
if (current_display_speed < 0)
{
- current_display_speed = 0;
+ current_display_speed = 0;
}
if (current_display_speed > 6)
{
- current_display_speed = 6;
+ current_display_speed = 6;
}
if (!formatting_char && (f_character != ' ' || blank_blip))
@@ -2611,13 +2599,27 @@ void Courtroom::chat_tick()
// If we had a formatting char, we shouldn't wait so long again, as it won't appear!
if (formatting_char)
{
- chat_tick_timer->start(0);
+ chat_tick_timer->start(0);
}
else
{
- chat_tick_timer->start(message_display_speed[current_display_speed]);
- }
+ //If this color is talking
+ if (is_talking && text_state == 1 && anim_state < 2) //Set it to talking as we're not on that already
+ {
+// ui_vp_player_char->stop();
+ ui_vp_player_char->play_talking(m_chatmessage[CHAR_NAME], m_chatmessage[EMOTE]);
+ anim_state = 2;
+ }
+ else if (anim_state < 3) //Set it to idle as we're not on that already
+ {
+// ui_vp_player_char->stop();
+ ui_vp_player_char->play_idle(m_chatmessage[CHAR_NAME], m_chatmessage[EMOTE]);
+ anim_state = 3;
+ }
+ //Continue ticking
+ chat_tick_timer->start(message_display_speed[current_display_speed]);
+ }
}
}
@@ -2722,30 +2724,6 @@ void Courtroom::set_scene(QString f_desk_mod, QString f_side)
}
}
-void Courtroom::set_text_color()
-{
- QColor textcolor = ao_app->get_chat_color(m_chatmessage[TEXT_COLOR], ao_app->get_chat(m_chatmessage[CHAR_NAME]));
-
- ui_vp_message->setTextBackgroundColor(QColor(0,0,0,0));
- ui_vp_message->setTextColor(textcolor);
-
- QString style = "background-color: rgba(0, 0, 0, 0);";
- style.append("color: rgb(");
- style.append(QString::number(textcolor.red()));
- style.append(", ");
- style.append(QString::number(textcolor.green()));
- style.append(", ");
- style.append(QString::number(textcolor.blue()));
- style.append(")");
-
- ui_vp_message->setStyleSheet(style);
-}
-
-QColor Courtroom::get_text_color(QString color)
-{
- return ao_app->get_chat_color(color, ao_app->get_chat(m_chatmessage[CHAR_NAME]));
-}
-
void Courtroom::set_ip_list(QString p_list)
{
QString f_list = p_list.replace("|", ":").replace("*", "\n");
@@ -3830,9 +3808,44 @@ void Courtroom::on_prosecution_plus_clicked()
ao_app->send_server_packet(new AOPacket("HP#2#" + QString::number(f_state) + "#%"));
}
+void Courtroom::set_text_color_dropdown()
+{
+ ui_text_color->clear();
+ color_row_to_number.clear();
+
+ //Set the default color 0
+ QString c0_name = ao_app->get_chat_markdown("c0_name", current_char);
+ if (c0_name.isEmpty())
+ c0_name = tr("Default");
+ ui_text_color->addItem(c0_name);
+ color_row_to_number.append(0);
+
+ //Set the rest of the colors
+ for (int c = 1; c < max_colors; ++c)
+ {
+ QString color_name = ao_app->get_chat_markdown("c" + QString::number(c) + "_name", current_char);
+ if (color_name.isEmpty()) //Not defined
+ continue;
+ ui_text_color->addItem(color_name);
+ color_row_to_number.append(c);
+ }
+}
+
void Courtroom::on_text_color_changed(int p_color)
{
- text_color = p_color;
+ if (ui_ic_chat_message->selectionStart() != -1) //We have a selection!
+ {
+ qDebug() << "Setting color to selection" << ui_ic_chat_message->selectionStart() << ui_ic_chat_message->selectionEnd();
+ ui_ic_chat_message->end(false);
+ ui_text_color->setCurrentIndex(0);
+ }
+ else
+ {
+ if (p_color != -1 && p_color < color_row_to_number.size())
+ text_color = color_row_to_number.at(p_color);
+ else
+ text_color = 0;
+ }
ui_ic_chat_message->setFocus();
}
diff --git a/src/evidence.cpp b/src/evidence.cpp
index b04a9d60..dfbc675f 100644
--- a/src/evidence.cpp
+++ b/src/evidence.cpp
@@ -26,7 +26,7 @@ void Courtroom::initialize_evidence()
ui_evidence_description->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
"color: white;");
- connect(ui_evidence_name, SIGNAL(textEdited(QString)), this, SLOT(on_evidence_name_edited(QString)));
+ connect(ui_evidence_name, SIGNAL(returnPressed()), this, SLOT(on_evidence_name_edited()));
connect(ui_evidence_name, SIGNAL(double_clicked()), this, SLOT(on_evidence_name_double_clicked()));
connect(ui_evidence_left, SIGNAL(clicked()), this, SLOT(on_evidence_left_clicked()));
connect(ui_evidence_right, SIGNAL(clicked()), this, SLOT(on_evidence_right_clicked()));
@@ -179,8 +179,9 @@ void Courtroom::set_evidence_page()
}
}
-void Courtroom::on_evidence_name_edited(QString text)
+void Courtroom::on_evidence_name_edited()
{
+ ui_evidence_name->setReadOnly(true);
if (current_evidence >= local_evidence_list.size())
return;
@@ -206,6 +207,7 @@ void Courtroom::on_evidence_name_double_clicked()
void Courtroom::on_evidence_image_name_edited()
{
+ ui_evidence_image_name->setReadOnly(true);
if (current_evidence >= local_evidence_list.size())
return;
diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp
index 91782a86..b9764343 100644
--- a/src/text_file_functions.cpp
+++ b/src/text_file_functions.cpp
@@ -432,48 +432,57 @@ QString AOApplication::get_tagged_stylesheet(QString target_tag, QString p_file)
return f_text;
}
+QString AOApplication::get_chat_markdown(QString p_identifier, QString p_chat)
+{
+ QString design_ini_path = get_base_path() + "misc/" + p_chat + "/config.ini";
+ QString default_path = get_base_path() + "misc/default/config.ini";
+ QString f_result = read_design_ini(p_identifier, design_ini_path);
+
+ if (f_result == "")
+ f_result = read_design_ini(p_identifier, default_path);
+
+ return f_result;
+}
+
QColor AOApplication::get_chat_color(QString p_identifier, QString p_chat)
{
QColor return_color(255, 255, 255);
switch (p_identifier.toInt()) {
- case WHITE:
- case GREEN:
+ case 0: //White
+ return_color = QColor(255, 255, 255);
+ break;
+ case 1: //Green
return_color = QColor(0, 255, 0);
break;
- case RED:
+ case 2: //Red
return_color = QColor(255, 0, 0);
break;
- case ORANGE:
+ case 3: //Orange
return_color = QColor(255, 165, 0);
break;
- case BLUE:
+ case 4: //Blue
return_color = QColor(45, 150, 255);
break;
- case YELLOW:
+ case 5: //Yellow
return_color = QColor(255, 255, 0);
break;
- case RAINBOW: // 6 is rainbow.
- case PINK:
+ case 6: //Pink
return_color = QColor(255, 192, 203);
break;
- case CYAN:
+ case 7: //Cyan
return_color = QColor(0, 255, 255);
break;
- case GRAY:
+ case 8: //Grey
return_color = QColor(187, 187, 187);
break;
- case BLANK:
- return_color = QColor(0, 0, 0, 0);
- break;
default:
return_color = QColor(255, 255, 255);
break;
}
- p_identifier = p_identifier.prepend("c");
QString design_ini_path = get_base_path() + "misc/" + p_chat + "/config.ini";
QString default_path = get_base_path() + "misc/default/config.ini";
- QString f_result = read_design_ini(p_identifier, design_ini_path);
+ QString f_result = read_design_ini("c" + p_identifier, design_ini_path);
if (f_result == "")
{
@@ -567,18 +576,20 @@ void AOApplication::set_char_ini(QString p_char, QString value, QString p_search
}
//returns all the values of target_tag
-QStringList AOApplication::read_char_ini_tag(QString p_char, QString target_tag)
+QStringList AOApplication::read_ini_tags(QString p_path, QString target_tag)
{
QStringList r_values;
- QSettings settings(get_character_path(p_char, "char.ini"), QSettings::IniFormat);
- settings.beginGroup(target_tag);
+ QSettings settings(p_path, QSettings::IniFormat);
+ if (!target_tag.isEmpty())
+ settings.beginGroup(target_tag);
QStringList keys = settings.allKeys();
foreach (QString key, keys)
{
QString value = settings.value(key).toString();
r_values << key + "=" + value;
}
- settings.endGroup();
+ if (!settings.group().isEmpty())
+ settings.endGroup();
return r_values;
}