aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRosemary Witchaven <32779090+in1tiate@users.noreply.github.com>2021-08-30 21:23:11 -0500
committerGitHub <noreply@github.com>2021-08-30 21:23:11 -0500
commit7ce4dd6f618b64341c9d9520dfc98ede5a7500a7 (patch)
treed309b9b6bb6d0a1c6478b5f4787efbf9f076f7ce /src
parent8b82f5d592a9f76b1edbaa1efdf09366e41b266c (diff)
Use event filters instead of subclassing QLineEdit and QPlainTextEdit (#587)
* replace aolineedit and aotextedit with event filters * use a button to make evidence editable instead of double click
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt2
-rw-r--r--src/aolayer.cpp12
-rw-r--r--src/aolineedit.cpp22
-rw-r--r--src/aotextedit.cpp17
-rw-r--r--src/courtroom.cpp6
-rw-r--r--src/evidence.cpp67
6 files changed, 50 insertions, 76 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b04db8b3..32e924a7 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -10,13 +10,11 @@ aoevidencebutton.cpp
aoevidencedisplay.cpp
aoimage.cpp
aolayer.cpp
-aolineedit.cpp
aomusicplayer.cpp
aooptionsdialog.cpp
aopacket.cpp
aosfxplayer.cpp
aotextarea.cpp
-aotextedit.cpp
charselect.cpp
chatlogpiece.cpp
courtroom.cpp
diff --git a/src/aolayer.cpp b/src/aolayer.cpp
index 30ff652b..201c724c 100644
--- a/src/aolayer.cpp
+++ b/src/aolayer.cpp
@@ -52,7 +52,7 @@ StickerLayer::StickerLayer(QWidget *p_parent, AOApplication *p_ao_app)
QString AOLayer::find_image(QStringList p_list)
{
QString image_path;
- for (QString path : p_list) {
+ for (const QString &path : p_list) {
#ifdef DEBUG_MOVIE
qDebug() << "checking path " << path;
#endif
@@ -461,14 +461,14 @@ void CharLayer::play_frame_effect(int p_frame)
if (p_frame < max_frames) {
foreach (QString effect, movie_effects[p_frame]) {
if (effect == "shake") {
- shake();
+ emit shake();
#ifdef DEBUG_MOVIE
qDebug() << "[CharLayer::play_frame_effect] Attempting to play shake on frame" << frame;
#endif
}
if (effect == "flash") {
- flash();
+ emit flash();
#ifdef DEBUG_MOVIE
qDebug() << "[CharLayer::play_frame_effect] Attempting to play flash on frame" << frame;
#endif
@@ -476,7 +476,7 @@ void CharLayer::play_frame_effect(int p_frame)
if (effect.startsWith("sfx^")) {
QString sfx = effect.section("^", 1);
- play_sfx(sfx);
+ emit play_sfx(sfx);
#ifdef DEBUG_MOVIE
qDebug() << "[CharLayer::play_frame_effect] Attempting to play sfx" << sfx << "on frame" << frame;
#endif
@@ -576,7 +576,7 @@ void AOLayer::preanim_done()
{
ticker->stop();
preanim_timer->stop();
- done();
+ emit done();
}
void AOLayer::shfx_timer_done()
@@ -586,5 +586,5 @@ void AOLayer::shfx_timer_done()
qDebug() << "shfx timer signaled done";
#endif
// signal connected to courtroom object, let it figure out what to do
- done();
+ emit done();
}
diff --git a/src/aolineedit.cpp b/src/aolineedit.cpp
deleted file mode 100644
index d80fa014..00000000
--- a/src/aolineedit.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "aolineedit.h"
-
-AOLineEdit::AOLineEdit(QWidget *parent) : QLineEdit(parent) {}
-
-void AOLineEdit::mouseDoubleClickEvent(QMouseEvent *e)
-{
- QLineEdit::mouseDoubleClickEvent(e);
-
- double_clicked();
-}
-void AOLineEdit::focusOutEvent(QFocusEvent *ev)
-{
- int start = selectionStart();
-#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
- int len = selectionLength();
-#else
- int len = selectedText().length();
-#endif
- QLineEdit::focusOutEvent(ev);
- if (p_selection && start != -1 && len != -1)
- this->setSelection(start, len);
-}
diff --git a/src/aotextedit.cpp b/src/aotextedit.cpp
deleted file mode 100644
index 22d9a62e..00000000
--- a/src/aotextedit.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-#include "aotextedit.h"
-
-AOTextEdit::AOTextEdit(QWidget *parent) : QPlainTextEdit(parent)
-{
- this->setReadOnly(true);
-
- // connect(this, SIGNAL(returnPressed()), this, SLOT(on_enter_pressed()));
-}
-
-void AOTextEdit::mouseDoubleClickEvent(QMouseEvent *e)
-{
- QPlainTextEdit::mouseDoubleClickEvent(e);
-
- this->setReadOnly(false);
-}
-
-void AOTextEdit::on_enter_pressed() { this->setReadOnly(true); }
diff --git a/src/courtroom.cpp b/src/courtroom.cpp
index 25f256ae..389dd74f 100644
--- a/src/courtroom.cpp
+++ b/src/courtroom.cpp
@@ -164,10 +164,12 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
ui_ic_chat_name->setText(p_ao_app->get_default_showname());
ui_ic_chat_name->setObjectName("ui_ic_chat_name");
- ui_ic_chat_message = new AOLineEdit(this);
+ ui_ic_chat_message = new QLineEdit(this);
ui_ic_chat_message->setFrame(false);
ui_ic_chat_message->setPlaceholderText(tr("Message"));
- ui_ic_chat_message->preserve_selection(true);
+ ui_ic_chat_message_filter = new AOLineEditFilter();
+ ui_ic_chat_message_filter->preserve_selection = true;
+ ui_ic_chat_message->installEventFilter(ui_ic_chat_message_filter);
ui_ic_chat_message->setObjectName("ui_ic_chat_message");
ui_vp_sticker = new StickerLayer(ui_viewport, ao_app);
diff --git a/src/evidence.cpp b/src/evidence.cpp
index 2cc1d75a..d34ba4f5 100644
--- a/src/evidence.cpp
+++ b/src/evidence.cpp
@@ -6,7 +6,9 @@ void Courtroom::initialize_evidence()
ui_evidence->setObjectName("ui_evidence");
// ui_evidence_name = new QLabel(ui_evidence);
- ui_evidence_name = new AOLineEdit(ui_evidence);
+ ui_evidence_name = new QLineEdit(ui_evidence);
+ ui_evidence_name_filter = new AOLineEditFilter();
+ ui_evidence_name->installEventFilter(ui_evidence_name_filter);
ui_evidence_name->setAlignment(Qt::AlignCenter);
ui_evidence_name->setFrame(false);
ui_evidence_name->setObjectName("ui_evidence_name");
@@ -41,11 +43,14 @@ void Courtroom::initialize_evidence()
ui_evidence_delete = new AOButton(ui_evidence_overlay, ao_app);
ui_evidence_delete->setToolTip(tr("Destroy this piece of evidence"));
ui_evidence_delete->setObjectName("ui_evidence_delete");
- ui_evidence_image_name = new AOLineEdit(ui_evidence_overlay);
+ ui_evidence_image_name = new QLineEdit(ui_evidence_overlay);
+ ui_evidence_image_name_filter = new AOLineEditFilter();
+ ui_evidence_image_name->installEventFilter(ui_evidence_image_name_filter);
ui_evidence_image_name->setObjectName("ui_evidence_image_name");
ui_evidence_image_button = new AOButton(ui_evidence_overlay, ao_app);
ui_evidence_image_button->setText(tr("Choose.."));
ui_evidence_image_button->setObjectName("ui_evidence_image_button");
+ ui_evidence_image_button->setDisabled(true);
ui_evidence_x = new AOButton(ui_evidence_overlay, ao_app);
ui_evidence_x->setToolTip(
tr("Close the evidence display/editing overlay.\n"
@@ -56,16 +61,18 @@ void Courtroom::initialize_evidence()
"evidence and send them to server."));
ui_evidence_ok->setObjectName("ui_evidence_ok");
- ui_evidence_description = new AOTextEdit(ui_evidence_overlay);
+ ui_evidence_description = new QPlainTextEdit(ui_evidence_overlay);
ui_evidence_description->setFrameStyle(QFrame::NoFrame);
ui_evidence_description->setToolTip(
- tr("Double-click to edit. Press [X] to update your changes."));
+ tr("Click the pencil icon to edit. Press [X] to update your changes."));
ui_evidence_description->setObjectName("ui_evidence_description");
+ ui_evidence_edit = new AOButton(ui_evidence_overlay, ao_app);
+ ui_evidence_edit->setToolTip(tr("Edit this piece of evidence."));
+ ui_evidence_edit->setObjectName("ui_evidence_edit");
+
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,
@@ -85,8 +92,6 @@ void Courtroom::initialize_evidence()
SLOT(on_evidence_delete_clicked()));
connect(ui_evidence_image_name, SIGNAL(returnPressed()), this,
SLOT(on_evidence_image_name_edited()));
- connect(ui_evidence_image_name, SIGNAL(double_clicked()), this,
- SLOT(on_evidence_image_name_double_clicked()));
connect(ui_evidence_image_button, SIGNAL(clicked()), this,
SLOT(on_evidence_image_button_clicked()));
connect(ui_evidence_x, SIGNAL(clicked()), this,
@@ -100,6 +105,7 @@ void Courtroom::initialize_evidence()
SLOT(on_evidence_edited()));
connect(ui_evidence_description, SIGNAL(textChanged()), this,
SLOT(on_evidence_edited()));
+ connect(ui_evidence_edit, SIGNAL(clicked()), this, SLOT(on_evidence_edit_clicked()));
ui_evidence->hide();
}
@@ -156,6 +162,9 @@ void Courtroom::refresh_evidence()
set_size_and_pos(ui_evidence_ok, "evidence_ok");
ui_evidence_ok->set_image("evidence_ok");
+ set_size_and_pos(ui_evidence_edit, "evidence_edit");
+ ui_evidence_edit->set_image("evidence_edit");
+
set_size_and_pos(ui_evidence_switch, "evidence_switch");
if (current_evidence_global) {
ui_evidence_switch->set_image("evidence_global");
@@ -368,26 +377,10 @@ void Courtroom::set_evidence_page()
void Courtroom::on_evidence_name_edited()
{
- ui_evidence_name->setReadOnly(true);
if (current_evidence >= local_evidence_list.size())
return;
}
-void Courtroom::on_evidence_name_double_clicked()
-{
- if (ui_evidence_overlay->isVisible()) {
- ui_evidence_name->setReadOnly(false);
- }
- else {
- ui_evidence_name->setReadOnly(true);
- }
-}
-
-void Courtroom::on_evidence_image_name_double_clicked()
-{
- ui_evidence_image_name->setReadOnly(false);
-}
-
void Courtroom::on_evidence_image_name_edited()
{
ui_evidence_image_name->setReadOnly(true);
@@ -469,14 +462,14 @@ void Courtroom::on_evidence_double_clicked(int p_id)
ui_evidence_description->clear();
ui_evidence_description->appendPlainText(f_evi.description);
ui_evidence_description->setReadOnly(true);
- ui_evidence_description->setToolTip(tr("Double-click to edit..."));
+ ui_evidence_description->setToolTip(tr("Click the pencil to edit..."));
ui_evidence_name->setText(f_evi.name);
ui_evidence_name->setReadOnly(true);
- ui_evidence_name->setToolTip(tr("Double-click to edit..."));
+ ui_evidence_name->setToolTip(tr("Click the pencil to edit..."));
ui_evidence_image_name->setText(f_evi.image);
ui_evidence_image_name->setReadOnly(true);
- ui_evidence_image_name->setToolTip(tr("Double-click to edit..."));
+ ui_evidence_image_name->setToolTip(tr("Click the pencil to edit..."));
ui_evidence_overlay->show();
ui_evidence_ok->hide();
@@ -598,6 +591,8 @@ void Courtroom::on_evidence_ok_clicked()
ui_evidence_name->setReadOnly(true);
ui_evidence_description->setReadOnly(true);
ui_evidence_image_name->setReadOnly(true);
+ ui_evidence_edit->show();
+ ui_evidence_image_button->setDisabled(true);
if (current_evidence < local_evidence_list.size()) {
evi_type f_evi = local_evidence_list.at(current_evidence);
if (current_evidence_global) {
@@ -680,6 +675,22 @@ void Courtroom::on_evidence_transfer_clicked()
msgBox->exec();
}
+void Courtroom::on_evidence_edit_clicked()
+{
+ if (!ui_evidence_overlay->isVisible())
+ return;
+ if (!ui_evidence_edit->isHidden()) {
+ ui_evidence_name->setReadOnly(false);
+ ui_evidence_image_name->setReadOnly(false);
+ ui_evidence_description->setReadOnly(false);
+ ui_evidence_image_button->setDisabled(false);
+ ui_evidence_edit->hide();
+ }
+ else {
+ return;
+ }
+}
+
void Courtroom::on_evidence_edited()
{
if (current_evidence >=
@@ -704,6 +715,8 @@ void Courtroom::evidence_close()
ui_evidence_name->setToolTip("");
ui_evidence_image_name->setReadOnly(true);
ui_evidence_image_name->setToolTip("");
+ ui_evidence_edit->show();
+ ui_evidence_image_button->setDisabled(true);
ui_evidence_overlay->hide();
ui_ic_chat_message->setFocus();
}