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
This commit is contained in:
		
							parent
							
								
									8b82f5d592
								
							
						
					
					
						commit
						7ce4dd6f61
					
				@ -10,13 +10,11 @@ aoevidencebutton.h
 | 
				
			|||||||
aoevidencedisplay.h
 | 
					aoevidencedisplay.h
 | 
				
			||||||
aoimage.h
 | 
					aoimage.h
 | 
				
			||||||
aolayer.h
 | 
					aolayer.h
 | 
				
			||||||
aolineedit.h
 | 
					 | 
				
			||||||
aomusicplayer.h
 | 
					aomusicplayer.h
 | 
				
			||||||
aooptionsdialog.h
 | 
					aooptionsdialog.h
 | 
				
			||||||
aopacket.h
 | 
					aopacket.h
 | 
				
			||||||
aosfxplayer.h
 | 
					aosfxplayer.h
 | 
				
			||||||
aotextarea.h
 | 
					aotextarea.h
 | 
				
			||||||
aotextedit.h
 | 
					 | 
				
			||||||
bass.h
 | 
					bass.h
 | 
				
			||||||
bassopus.h
 | 
					bassopus.h
 | 
				
			||||||
chatlogpiece.h
 | 
					chatlogpiece.h
 | 
				
			||||||
@ -28,6 +26,7 @@ discord-rpc.h
 | 
				
			|||||||
discord_register.h
 | 
					discord_register.h
 | 
				
			||||||
discord_rich_presence.h
 | 
					discord_rich_presence.h
 | 
				
			||||||
discord_rpc.h
 | 
					discord_rpc.h
 | 
				
			||||||
 | 
					eventfilters.h
 | 
				
			||||||
file_functions.h
 | 
					file_functions.h
 | 
				
			||||||
hardware_functions.h
 | 
					hardware_functions.h
 | 
				
			||||||
lobby.h
 | 
					lobby.h
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
					 | 
				
			||||||
@ -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
 | 
					 | 
				
			||||||
@ -11,13 +11,11 @@
 | 
				
			|||||||
#include "aoevidencedisplay.h"
 | 
					#include "aoevidencedisplay.h"
 | 
				
			||||||
#include "aoimage.h"
 | 
					#include "aoimage.h"
 | 
				
			||||||
#include "aolayer.h"
 | 
					#include "aolayer.h"
 | 
				
			||||||
#include "aolineedit.h"
 | 
					 | 
				
			||||||
#include "aomusicplayer.h"
 | 
					#include "aomusicplayer.h"
 | 
				
			||||||
#include "aooptionsdialog.h"
 | 
					#include "aooptionsdialog.h"
 | 
				
			||||||
#include "aopacket.h"
 | 
					#include "aopacket.h"
 | 
				
			||||||
#include "aosfxplayer.h"
 | 
					#include "aosfxplayer.h"
 | 
				
			||||||
#include "aotextarea.h"
 | 
					#include "aotextarea.h"
 | 
				
			||||||
#include "aotextedit.h"
 | 
					 | 
				
			||||||
#include "chatlogpiece.h"
 | 
					#include "chatlogpiece.h"
 | 
				
			||||||
#include "datatypes.h"
 | 
					#include "datatypes.h"
 | 
				
			||||||
#include "debug_functions.h"
 | 
					#include "debug_functions.h"
 | 
				
			||||||
@ -25,6 +23,7 @@
 | 
				
			|||||||
#include "hardware_functions.h"
 | 
					#include "hardware_functions.h"
 | 
				
			||||||
#include "lobby.h"
 | 
					#include "lobby.h"
 | 
				
			||||||
#include "scrolltext.h"
 | 
					#include "scrolltext.h"
 | 
				
			||||||
 | 
					#include "eventfilters.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <QCheckBox>
 | 
					#include <QCheckBox>
 | 
				
			||||||
#include <QCloseEvent>
 | 
					#include <QCloseEvent>
 | 
				
			||||||
@ -648,7 +647,8 @@ private:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  QComboBox *ui_pair_order_dropdown;
 | 
					  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_ic_chat_name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  QLineEdit *ui_ooc_chat_message;
 | 
					  QLineEdit *ui_ooc_chat_message;
 | 
				
			||||||
@ -730,7 +730,8 @@ private:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  AOButton *ui_evidence_button;
 | 
					  AOButton *ui_evidence_button;
 | 
				
			||||||
  AOImage *ui_evidence;
 | 
					  AOImage *ui_evidence;
 | 
				
			||||||
  AOLineEdit *ui_evidence_name;
 | 
					  QLineEdit *ui_evidence_name;
 | 
				
			||||||
 | 
					  AOLineEditFilter *ui_evidence_name_filter;
 | 
				
			||||||
  QWidget *ui_evidence_buttons;
 | 
					  QWidget *ui_evidence_buttons;
 | 
				
			||||||
  QVector<AOEvidenceButton *> ui_evidence_list;
 | 
					  QVector<AOEvidenceButton *> ui_evidence_list;
 | 
				
			||||||
  AOButton *ui_evidence_left;
 | 
					  AOButton *ui_evidence_left;
 | 
				
			||||||
@ -738,7 +739,8 @@ private:
 | 
				
			|||||||
  AOButton *ui_evidence_present;
 | 
					  AOButton *ui_evidence_present;
 | 
				
			||||||
  AOImage *ui_evidence_overlay;
 | 
					  AOImage *ui_evidence_overlay;
 | 
				
			||||||
  AOButton *ui_evidence_delete;
 | 
					  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_image_button;
 | 
				
			||||||
  AOButton *ui_evidence_x;
 | 
					  AOButton *ui_evidence_x;
 | 
				
			||||||
  AOButton *ui_evidence_ok;
 | 
					  AOButton *ui_evidence_ok;
 | 
				
			||||||
@ -746,7 +748,9 @@ private:
 | 
				
			|||||||
  AOButton *ui_evidence_transfer;
 | 
					  AOButton *ui_evidence_transfer;
 | 
				
			||||||
  AOButton *ui_evidence_save;
 | 
					  AOButton *ui_evidence_save;
 | 
				
			||||||
  AOButton *ui_evidence_load;
 | 
					  AOButton *ui_evidence_load;
 | 
				
			||||||
  AOTextEdit *ui_evidence_description;
 | 
					  AOButton *ui_evidence_edit;
 | 
				
			||||||
 | 
					  QPlainTextEdit *ui_evidence_description;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  AOImage *ui_char_select_background;
 | 
					  AOImage *ui_char_select_background;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -873,6 +877,7 @@ private slots:
 | 
				
			|||||||
  void on_evidence_image_button_clicked();
 | 
					  void on_evidence_image_button_clicked();
 | 
				
			||||||
  void on_evidence_clicked(int p_id);
 | 
					  void on_evidence_clicked(int p_id);
 | 
				
			||||||
  void on_evidence_double_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);
 | 
					  void on_evidence_hover(int p_id, bool p_state);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -928,8 +933,6 @@ private slots:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  void on_showname_enable_clicked();
 | 
					  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_button_clicked();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void on_evidence_delete_clicked();
 | 
					  void on_evidence_delete_clicked();
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										36
									
								
								include/eventfilters.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								include/eventfilters.h
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
				
			||||||
@ -10,13 +10,11 @@ aoevidencebutton.cpp
 | 
				
			|||||||
aoevidencedisplay.cpp
 | 
					aoevidencedisplay.cpp
 | 
				
			||||||
aoimage.cpp
 | 
					aoimage.cpp
 | 
				
			||||||
aolayer.cpp
 | 
					aolayer.cpp
 | 
				
			||||||
aolineedit.cpp
 | 
					 | 
				
			||||||
aomusicplayer.cpp
 | 
					aomusicplayer.cpp
 | 
				
			||||||
aooptionsdialog.cpp
 | 
					aooptionsdialog.cpp
 | 
				
			||||||
aopacket.cpp
 | 
					aopacket.cpp
 | 
				
			||||||
aosfxplayer.cpp
 | 
					aosfxplayer.cpp
 | 
				
			||||||
aotextarea.cpp
 | 
					aotextarea.cpp
 | 
				
			||||||
aotextedit.cpp
 | 
					 | 
				
			||||||
charselect.cpp
 | 
					charselect.cpp
 | 
				
			||||||
chatlogpiece.cpp
 | 
					chatlogpiece.cpp
 | 
				
			||||||
courtroom.cpp
 | 
					courtroom.cpp
 | 
				
			||||||
 | 
				
			|||||||
@ -52,7 +52,7 @@ StickerLayer::StickerLayer(QWidget *p_parent, AOApplication *p_ao_app)
 | 
				
			|||||||
QString AOLayer::find_image(QStringList p_list)
 | 
					QString AOLayer::find_image(QStringList p_list)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  QString image_path;
 | 
					  QString image_path;
 | 
				
			||||||
  for (QString path : p_list) {
 | 
					  for (const QString &path : p_list) {
 | 
				
			||||||
#ifdef DEBUG_MOVIE
 | 
					#ifdef DEBUG_MOVIE
 | 
				
			||||||
    qDebug() << "checking path " << path;
 | 
					    qDebug() << "checking path " << path;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -461,14 +461,14 @@ void CharLayer::play_frame_effect(int p_frame)
 | 
				
			|||||||
  if (p_frame < max_frames) {
 | 
					  if (p_frame < max_frames) {
 | 
				
			||||||
    foreach (QString effect, movie_effects[p_frame]) {
 | 
					    foreach (QString effect, movie_effects[p_frame]) {
 | 
				
			||||||
      if (effect == "shake") {
 | 
					      if (effect == "shake") {
 | 
				
			||||||
        shake();
 | 
					        emit shake();
 | 
				
			||||||
#ifdef DEBUG_MOVIE
 | 
					#ifdef DEBUG_MOVIE
 | 
				
			||||||
        qDebug() << "[CharLayer::play_frame_effect] Attempting to play shake on frame" << frame;
 | 
					        qDebug() << "[CharLayer::play_frame_effect] Attempting to play shake on frame" << frame;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (effect == "flash") {
 | 
					      if (effect == "flash") {
 | 
				
			||||||
        flash();
 | 
					        emit flash();
 | 
				
			||||||
#ifdef DEBUG_MOVIE
 | 
					#ifdef DEBUG_MOVIE
 | 
				
			||||||
        qDebug() << "[CharLayer::play_frame_effect] Attempting to play flash on frame" << frame;
 | 
					        qDebug() << "[CharLayer::play_frame_effect] Attempting to play flash on frame" << frame;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -476,7 +476,7 @@ void CharLayer::play_frame_effect(int p_frame)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      if (effect.startsWith("sfx^")) {
 | 
					      if (effect.startsWith("sfx^")) {
 | 
				
			||||||
        QString sfx = effect.section("^", 1);
 | 
					        QString sfx = effect.section("^", 1);
 | 
				
			||||||
        play_sfx(sfx);
 | 
					        emit play_sfx(sfx);
 | 
				
			||||||
#ifdef DEBUG_MOVIE
 | 
					#ifdef DEBUG_MOVIE
 | 
				
			||||||
        qDebug() << "[CharLayer::play_frame_effect] Attempting to play sfx" << sfx << "on frame" << frame;
 | 
					        qDebug() << "[CharLayer::play_frame_effect] Attempting to play sfx" << sfx << "on frame" << frame;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -576,7 +576,7 @@ void AOLayer::preanim_done()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  ticker->stop();
 | 
					  ticker->stop();
 | 
				
			||||||
  preanim_timer->stop();
 | 
					  preanim_timer->stop();
 | 
				
			||||||
  done();
 | 
					  emit done();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void AOLayer::shfx_timer_done()
 | 
					void AOLayer::shfx_timer_done()
 | 
				
			||||||
@ -586,5 +586,5 @@ void AOLayer::shfx_timer_done()
 | 
				
			|||||||
  qDebug() << "shfx timer signaled done";
 | 
					  qDebug() << "shfx timer signaled done";
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
  // signal connected to courtroom object, let it figure out what to do
 | 
					  // signal connected to courtroom object, let it figure out what to do
 | 
				
			||||||
  done();
 | 
					  emit done();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -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);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -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); }
 | 
					 | 
				
			||||||
@ -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->setText(p_ao_app->get_default_showname());
 | 
				
			||||||
  ui_ic_chat_name->setObjectName("ui_ic_chat_name");
 | 
					  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->setFrame(false);
 | 
				
			||||||
  ui_ic_chat_message->setPlaceholderText(tr("Message"));
 | 
					  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_ic_chat_message->setObjectName("ui_ic_chat_message");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ui_vp_sticker = new StickerLayer(ui_viewport, ao_app);
 | 
					  ui_vp_sticker = new StickerLayer(ui_viewport, ao_app);
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,9 @@ void Courtroom::initialize_evidence()
 | 
				
			|||||||
  ui_evidence->setObjectName("ui_evidence");
 | 
					  ui_evidence->setObjectName("ui_evidence");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // ui_evidence_name = new QLabel(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->setAlignment(Qt::AlignCenter);
 | 
				
			||||||
  ui_evidence_name->setFrame(false);
 | 
					  ui_evidence_name->setFrame(false);
 | 
				
			||||||
  ui_evidence_name->setObjectName("ui_evidence_name");
 | 
					  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 = new AOButton(ui_evidence_overlay, ao_app);
 | 
				
			||||||
  ui_evidence_delete->setToolTip(tr("Destroy this piece of evidence"));
 | 
					  ui_evidence_delete->setToolTip(tr("Destroy this piece of evidence"));
 | 
				
			||||||
  ui_evidence_delete->setObjectName("ui_evidence_delete");
 | 
					  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_name->setObjectName("ui_evidence_image_name");
 | 
				
			||||||
  ui_evidence_image_button = new AOButton(ui_evidence_overlay, ao_app);
 | 
					  ui_evidence_image_button = new AOButton(ui_evidence_overlay, ao_app);
 | 
				
			||||||
  ui_evidence_image_button->setText(tr("Choose.."));
 | 
					  ui_evidence_image_button->setText(tr("Choose.."));
 | 
				
			||||||
  ui_evidence_image_button->setObjectName("ui_evidence_image_button");
 | 
					  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 = new AOButton(ui_evidence_overlay, ao_app);
 | 
				
			||||||
  ui_evidence_x->setToolTip(
 | 
					  ui_evidence_x->setToolTip(
 | 
				
			||||||
      tr("Close the evidence display/editing overlay.\n"
 | 
					      tr("Close the evidence display/editing overlay.\n"
 | 
				
			||||||
@ -56,16 +61,18 @@ void Courtroom::initialize_evidence()
 | 
				
			|||||||
                                "evidence and send them to server."));
 | 
					                                "evidence and send them to server."));
 | 
				
			||||||
  ui_evidence_ok->setObjectName("ui_evidence_ok");
 | 
					  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->setFrameStyle(QFrame::NoFrame);
 | 
				
			||||||
  ui_evidence_description->setToolTip(
 | 
					  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_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,
 | 
					  connect(ui_evidence_name, SIGNAL(returnPressed()), this,
 | 
				
			||||||
          SLOT(on_evidence_name_edited()));
 | 
					          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,
 | 
					  connect(ui_evidence_left, SIGNAL(clicked()), this,
 | 
				
			||||||
          SLOT(on_evidence_left_clicked()));
 | 
					          SLOT(on_evidence_left_clicked()));
 | 
				
			||||||
  connect(ui_evidence_right, SIGNAL(clicked()), this,
 | 
					  connect(ui_evidence_right, SIGNAL(clicked()), this,
 | 
				
			||||||
@ -85,8 +92,6 @@ void Courtroom::initialize_evidence()
 | 
				
			|||||||
          SLOT(on_evidence_delete_clicked()));
 | 
					          SLOT(on_evidence_delete_clicked()));
 | 
				
			||||||
  connect(ui_evidence_image_name, SIGNAL(returnPressed()), this,
 | 
					  connect(ui_evidence_image_name, SIGNAL(returnPressed()), this,
 | 
				
			||||||
          SLOT(on_evidence_image_name_edited()));
 | 
					          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,
 | 
					  connect(ui_evidence_image_button, SIGNAL(clicked()), this,
 | 
				
			||||||
          SLOT(on_evidence_image_button_clicked()));
 | 
					          SLOT(on_evidence_image_button_clicked()));
 | 
				
			||||||
  connect(ui_evidence_x, SIGNAL(clicked()), this,
 | 
					  connect(ui_evidence_x, SIGNAL(clicked()), this,
 | 
				
			||||||
@ -100,6 +105,7 @@ void Courtroom::initialize_evidence()
 | 
				
			|||||||
          SLOT(on_evidence_edited()));
 | 
					          SLOT(on_evidence_edited()));
 | 
				
			||||||
  connect(ui_evidence_description, SIGNAL(textChanged()), this,
 | 
					  connect(ui_evidence_description, SIGNAL(textChanged()), this,
 | 
				
			||||||
          SLOT(on_evidence_edited()));
 | 
					          SLOT(on_evidence_edited()));
 | 
				
			||||||
 | 
					  connect(ui_evidence_edit, SIGNAL(clicked()), this, SLOT(on_evidence_edit_clicked()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ui_evidence->hide();
 | 
					  ui_evidence->hide();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -156,6 +162,9 @@ void Courtroom::refresh_evidence()
 | 
				
			|||||||
  set_size_and_pos(ui_evidence_ok, "evidence_ok");
 | 
					  set_size_and_pos(ui_evidence_ok, "evidence_ok");
 | 
				
			||||||
  ui_evidence_ok->set_image("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");
 | 
					  set_size_and_pos(ui_evidence_switch, "evidence_switch");
 | 
				
			||||||
  if (current_evidence_global) {
 | 
					  if (current_evidence_global) {
 | 
				
			||||||
    ui_evidence_switch->set_image("evidence_global");
 | 
					    ui_evidence_switch->set_image("evidence_global");
 | 
				
			||||||
@ -368,26 +377,10 @@ void Courtroom::set_evidence_page()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void Courtroom::on_evidence_name_edited()
 | 
					void Courtroom::on_evidence_name_edited()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ui_evidence_name->setReadOnly(true);
 | 
					 | 
				
			||||||
  if (current_evidence >= local_evidence_list.size())
 | 
					  if (current_evidence >= local_evidence_list.size())
 | 
				
			||||||
    return;
 | 
					    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()
 | 
					void Courtroom::on_evidence_image_name_edited()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ui_evidence_image_name->setReadOnly(true);
 | 
					  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->clear();
 | 
				
			||||||
  ui_evidence_description->appendPlainText(f_evi.description);
 | 
					  ui_evidence_description->appendPlainText(f_evi.description);
 | 
				
			||||||
  ui_evidence_description->setReadOnly(true);
 | 
					  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->setText(f_evi.name);
 | 
				
			||||||
  ui_evidence_name->setReadOnly(true);
 | 
					  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->setText(f_evi.image);
 | 
				
			||||||
  ui_evidence_image_name->setReadOnly(true);
 | 
					  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_overlay->show();
 | 
				
			||||||
  ui_evidence_ok->hide();
 | 
					  ui_evidence_ok->hide();
 | 
				
			||||||
@ -598,6 +591,8 @@ void Courtroom::on_evidence_ok_clicked()
 | 
				
			|||||||
  ui_evidence_name->setReadOnly(true);
 | 
					  ui_evidence_name->setReadOnly(true);
 | 
				
			||||||
  ui_evidence_description->setReadOnly(true);
 | 
					  ui_evidence_description->setReadOnly(true);
 | 
				
			||||||
  ui_evidence_image_name->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()) {
 | 
					  if (current_evidence < local_evidence_list.size()) {
 | 
				
			||||||
    evi_type f_evi = local_evidence_list.at(current_evidence);
 | 
					    evi_type f_evi = local_evidence_list.at(current_evidence);
 | 
				
			||||||
    if (current_evidence_global) {
 | 
					    if (current_evidence_global) {
 | 
				
			||||||
@ -680,6 +675,22 @@ void Courtroom::on_evidence_transfer_clicked()
 | 
				
			|||||||
  msgBox->exec();
 | 
					  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()
 | 
					void Courtroom::on_evidence_edited()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (current_evidence >=
 | 
					  if (current_evidence >=
 | 
				
			||||||
@ -704,6 +715,8 @@ void Courtroom::evidence_close()
 | 
				
			|||||||
  ui_evidence_name->setToolTip("");
 | 
					  ui_evidence_name->setToolTip("");
 | 
				
			||||||
  ui_evidence_image_name->setReadOnly(true);
 | 
					  ui_evidence_image_name->setReadOnly(true);
 | 
				
			||||||
  ui_evidence_image_name->setToolTip("");
 | 
					  ui_evidence_image_name->setToolTip("");
 | 
				
			||||||
 | 
					  ui_evidence_edit->show();
 | 
				
			||||||
 | 
					  ui_evidence_image_button->setDisabled(true);
 | 
				
			||||||
  ui_evidence_overlay->hide();
 | 
					  ui_evidence_overlay->hide();
 | 
				
			||||||
  ui_ic_chat_message->setFocus();
 | 
					  ui_ic_chat_message->setFocus();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user