diff options
| author | Rosemary Witchaven <32779090+in1tiate@users.noreply.github.com> | 2021-08-30 21:23:11 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-30 21:23:11 -0500 |
| commit | 7ce4dd6f618b64341c9d9520dfc98ede5a7500a7 (patch) | |
| tree | d309b9b6bb6d0a1c6478b5f4787efbf9f076f7ce /src | |
| parent | 8b82f5d592a9f76b1edbaa1efdf09366e41b266c (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.txt | 2 | ||||
| -rw-r--r-- | src/aolayer.cpp | 12 | ||||
| -rw-r--r-- | src/aolineedit.cpp | 22 | ||||
| -rw-r--r-- | src/aotextedit.cpp | 17 | ||||
| -rw-r--r-- | src/courtroom.cpp | 6 | ||||
| -rw-r--r-- | src/evidence.cpp | 67 |
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(); } |
