aboutsummaryrefslogtreecommitdiff
path: root/include
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 /include
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 'include')
-rw-r--r--include/CMakeLists.txt3
-rw-r--r--include/aolineedit.h26
-rw-r--r--include/aotextedit.h21
-rw-r--r--include/courtroom.h19
-rw-r--r--include/eventfilters.h36
5 files changed, 48 insertions, 57 deletions
diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
index 18cf23ba..e74a49bf 100644
--- a/include/CMakeLists.txt
+++ b/include/CMakeLists.txt
@@ -10,13 +10,11 @@ aoevidencebutton.h
aoevidencedisplay.h
aoimage.h
aolayer.h
-aolineedit.h
aomusicplayer.h
aooptionsdialog.h
aopacket.h
aosfxplayer.h
aotextarea.h
-aotextedit.h
bass.h
bassopus.h
chatlogpiece.h
@@ -28,6 +26,7 @@ discord-rpc.h
discord_register.h
discord_rich_presence.h
discord_rpc.h
+eventfilters.h
file_functions.h
hardware_functions.h
lobby.h
diff --git a/include/aolineedit.h b/include/aolineedit.h
deleted file mode 100644
index 5dce3aaa..00000000
--- a/include/aolineedit.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef AOLINEEDIT_H
-#define AOLINEEDIT_H
-
-#include <QLineEdit>
-#include <QMouseEvent>
-
-class AOLineEdit : public QLineEdit {
- Q_OBJECT
-
-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();
-};
-
-#endif // AOLINEEDIT_H
diff --git a/include/aotextedit.h b/include/aotextedit.h
deleted file mode 100644
index 8d876f17..00000000
--- a/include/aotextedit.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef AOTEXTEDIT_H
-#define AOTEXTEDIT_H
-
-#include <QPlainTextEdit>
-
-class AOTextEdit : public QPlainTextEdit {
- Q_OBJECT
-public:
- AOTextEdit(QWidget *parent);
-
-protected:
- void mouseDoubleClickEvent(QMouseEvent *e);
-
-signals:
- void double_clicked();
-
-private slots:
- void on_enter_pressed();
-};
-
-#endif // AOTEXTEDIT_H
diff --git a/include/courtroom.h b/include/courtroom.h
index e8145140..09ec486a 100644
--- a/include/courtroom.h
+++ b/include/courtroom.h
@@ -11,13 +11,11 @@
#include "aoevidencedisplay.h"
#include "aoimage.h"
#include "aolayer.h"
-#include "aolineedit.h"
#include "aomusicplayer.h"
#include "aooptionsdialog.h"
#include "aopacket.h"
#include "aosfxplayer.h"
#include "aotextarea.h"
-#include "aotextedit.h"
#include "chatlogpiece.h"
#include "datatypes.h"
#include "debug_functions.h"
@@ -25,6 +23,7 @@
#include "hardware_functions.h"
#include "lobby.h"
#include "scrolltext.h"
+#include "eventfilters.h"
#include <QCheckBox>
#include <QCloseEvent>
@@ -648,7 +647,8 @@ private:
QComboBox *ui_pair_order_dropdown;
- AOLineEdit *ui_ic_chat_message;
+ QLineEdit *ui_ic_chat_message;
+ AOLineEditFilter *ui_ic_chat_message_filter;
QLineEdit *ui_ic_chat_name;
QLineEdit *ui_ooc_chat_message;
@@ -730,7 +730,8 @@ private:
AOButton *ui_evidence_button;
AOImage *ui_evidence;
- AOLineEdit *ui_evidence_name;
+ QLineEdit *ui_evidence_name;
+ AOLineEditFilter *ui_evidence_name_filter;
QWidget *ui_evidence_buttons;
QVector<AOEvidenceButton *> ui_evidence_list;
AOButton *ui_evidence_left;
@@ -738,7 +739,8 @@ private:
AOButton *ui_evidence_present;
AOImage *ui_evidence_overlay;
AOButton *ui_evidence_delete;
- AOLineEdit *ui_evidence_image_name;
+ QLineEdit *ui_evidence_image_name;
+ AOLineEditFilter *ui_evidence_image_name_filter;
AOButton *ui_evidence_image_button;
AOButton *ui_evidence_x;
AOButton *ui_evidence_ok;
@@ -746,7 +748,9 @@ private:
AOButton *ui_evidence_transfer;
AOButton *ui_evidence_save;
AOButton *ui_evidence_load;
- AOTextEdit *ui_evidence_description;
+ AOButton *ui_evidence_edit;
+ QPlainTextEdit *ui_evidence_description;
+
AOImage *ui_char_select_background;
@@ -873,6 +877,7 @@ private slots:
void on_evidence_image_button_clicked();
void on_evidence_clicked(int p_id);
void on_evidence_double_clicked(int p_id);
+ void on_evidence_edit_clicked();
void on_evidence_hover(int p_id, bool p_state);
@@ -928,8 +933,6 @@ private slots:
void on_showname_enable_clicked();
- void on_evidence_name_double_clicked();
- void on_evidence_image_name_double_clicked();
void on_evidence_button_clicked();
void on_evidence_delete_clicked();
diff --git a/include/eventfilters.h b/include/eventfilters.h
new file mode 100644
index 00000000..7847608d
--- /dev/null
+++ b/include/eventfilters.h
@@ -0,0 +1,36 @@
+#ifndef EVENTFILTERS_H
+#define EVENTFILTERS_H
+
+#include <QEvent>
+#include <QLineEdit>
+
+class AOLineEditFilter : public QObject
+{
+ Q_OBJECT
+public:
+ bool preserve_selection = false;
+
+protected:
+ bool eventFilter(QObject *obj, QEvent *event) override {
+ QLineEdit *lineEdit = qobject_cast<QLineEdit *>(obj);
+ if (event->type() == QEvent::FocusOut && lineEdit != nullptr && preserve_selection) { // lost focus
+ int start = lineEdit->selectionStart();
+ #if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
+ int len = lineEdit->selectionLength();
+ #else
+ int len = lineEdit->selectedText().length();
+ #endif
+ if (start != -1 && len != -1) {
+ lineEdit->setSelection(start, len);\
+ return true;
+ }
+ }
+ return false;
+ }
+signals:
+ void double_clicked();
+};
+
+
+
+#endif // EVENTFILTERS_H