From 3f97df61744a402eeee3e820cbe860d9a21c8750 Mon Sep 17 00:00:00 2001 From: OmniTroid Date: Mon, 24 Apr 2017 15:10:07 +0200 Subject: [PATCH] started implementing evidence functionality --- Attorney_Online_remake.pro | 6 ++++-- aoevidencebutton.cpp | 25 +++++++++++++++++++++---- aoevidencebutton.h | 3 +++ aolineedit.cpp | 21 +++++++++++++++++++++ aolineedit.h | 26 ++++++++++++++++++++++++++ courtroom.h | 5 ++++- evidence.cpp | 11 ++++++++--- text_file_functions.cpp | 1 - 8 files changed, 87 insertions(+), 11 deletions(-) create mode 100644 aolineedit.cpp create mode 100644 aolineedit.h diff --git a/Attorney_Online_remake.pro b/Attorney_Online_remake.pro index 7dc77c1..7cb2c01 100644 --- a/Attorney_Online_remake.pro +++ b/Attorney_Online_remake.pro @@ -44,7 +44,8 @@ SOURCES += main.cpp\ evidence.cpp \ aoevidencebutton.cpp \ charselect.cpp \ - aotextarea.cpp + aotextarea.cpp \ + aolineedit.cpp HEADERS += lobby.h \ aoimage.h \ @@ -70,7 +71,8 @@ HEADERS += lobby.h \ aomusicplayer.h \ aoblipplayer.h \ aoevidencebutton.h \ - aotextarea.h + aotextarea.h \ + aolineedit.h unix:LIBS += -L$$PWD -lbass win32:LIBS += "$$PWD/bass.dll" diff --git a/aoevidencebutton.cpp b/aoevidencebutton.cpp index 5aff369..4fd8475 100644 --- a/aoevidencebutton.cpp +++ b/aoevidencebutton.cpp @@ -2,10 +2,23 @@ #include "file_functions.h" +#include + AOEvidenceButton::AOEvidenceButton(QWidget *p_parent, AOApplication *p_ao_app, int p_x, int p_y) : QPushButton(p_parent) { ao_app = p_ao_app; + qDebug() << "constructing ui_selected"; + + ui_selected = new AOImage(p_parent, ao_app); + ui_selected->resize(70, 70); + ui_selected->move(p_x, p_y); + ui_selected->set_image("evidence_selected.png"); + ui_selected->setAttribute(Qt::WA_TransparentForMouseEvents); + ui_selected->hide(); + + qDebug() << "ui_selected constructed"; + ui_selector = new AOImage(p_parent, ao_app); ui_selector->resize(71, 71); ui_selector->move(p_x - 1, p_y - 1); @@ -40,9 +53,9 @@ void AOEvidenceButton::set_selected(bool p_selected) m_selected = p_selected; if (!m_selected) - ui_selector->hide(); + ui_selected->hide(); else - ui_selector->show(); + ui_selected->show(); } void AOEvidenceButton::on_clicked() @@ -50,6 +63,11 @@ void AOEvidenceButton::on_clicked() evidence_clicked(m_id); } +void AOEvidenceButton::mouseDoubleClickEvent(QMouseEvent *e) { + QPushButton::mouseDoubleClickEvent(e); + evidence_double_clicked(m_id); +} + void AOEvidenceButton::enterEvent(QEvent * e) { ui_selector->show(); @@ -62,8 +80,7 @@ void AOEvidenceButton::enterEvent(QEvent * e) void AOEvidenceButton::leaveEvent(QEvent * e) { - if (!m_selected) - ui_selector->hide(); + ui_selector->hide(); on_hover(m_id, false); QPushButton::leaveEvent(e); diff --git a/aoevidencebutton.h b/aoevidencebutton.h index df5f38b..2a630b8 100644 --- a/aoevidencebutton.h +++ b/aoevidencebutton.h @@ -22,6 +22,7 @@ public: private: AOApplication *ao_app; + AOImage *ui_selected; AOImage *ui_selector; bool m_selected = false; @@ -31,9 +32,11 @@ private: protected: void enterEvent(QEvent *e); void leaveEvent(QEvent *e); + void mouseDoubleClickEvent(QMouseEvent *e); signals: void evidence_clicked(int p_id); + void evidence_double_clicked(int p_id); void on_hover(int p_id, bool p_state); private slots: diff --git a/aolineedit.cpp b/aolineedit.cpp new file mode 100644 index 0000000..f6026e1 --- /dev/null +++ b/aolineedit.cpp @@ -0,0 +1,21 @@ +#include "aolineedit.h" + +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); +} + +void AOLineEdit::on_enter_pressed() +{ + this->setReadOnly(true); +} diff --git a/aolineedit.h b/aolineedit.h new file mode 100644 index 0000000..ce17680 --- /dev/null +++ b/aolineedit.h @@ -0,0 +1,26 @@ +#ifndef AOLINEEDIT_H +#define AOLINEEDIT_H + +#include +#include + +class AOLineEdit : public QLineEdit +{ + Q_OBJECT + +public: + AOLineEdit(QWidget *parent); + +protected: + void mouseDoubleClickEvent(QMouseEvent *e); + +signals: + void double_clicked(); + +private slots: + void on_enter_pressed(); + + +}; + +#endif // AOLINEEDIT_H diff --git a/courtroom.h b/courtroom.h index ac14656..e41ae28 100644 --- a/courtroom.h +++ b/courtroom.h @@ -14,6 +14,7 @@ #include "aoblipplayer.h" #include "aoevidencebutton.h" #include "aotextarea.h" +#include "aolineedit.h" #include "datatypes.h" #include @@ -294,7 +295,8 @@ private: AOButton *ui_evidence_button; AOImage *ui_evidence; - QLabel *ui_evidence_name; + //QLabel *ui_evidence_name; + AOLineEdit *ui_evidence_name; QWidget *ui_evidence_buttons; QVector ui_evidence_list; AOButton *ui_evidence_left; @@ -369,6 +371,7 @@ private slots: void on_emote_dropdown_changed(int p_index); void on_evidence_clicked(int p_id); + void on_evidence_double_clicked(int p_id); void on_evidence_hover(int p_id, bool p_state); diff --git a/evidence.cpp b/evidence.cpp index 1c504a3..e653a34 100644 --- a/evidence.cpp +++ b/evidence.cpp @@ -6,7 +6,8 @@ void Courtroom::construct_evidence() { ui_evidence = new AOImage(this, ao_app); - ui_evidence_name = new QLabel(ui_evidence); + //ui_evidence_name = new QLabel(ui_evidence); + ui_evidence_name = new AOLineEdit(ui_evidence); ui_evidence_name->setAlignment(Qt::AlignCenter); ui_evidence_name->setFont(QFont("Arial", 14, QFont::Bold)); ui_evidence_name->setStyleSheet("background-color: rgba(0, 0, 0, 0);" @@ -57,6 +58,7 @@ void Courtroom::construct_evidence() f_evidence->set_id(n); connect(f_evidence, SIGNAL(evidence_clicked(int)), this, SLOT(on_evidence_clicked(int))); + connect(f_evidence, SIGNAL(evidence_double_clicked(int)), this, SLOT(on_evidence_double_clicked(int))); connect(f_evidence, SIGNAL(on_hover(int, bool)), this, SLOT(on_evidence_hover(int, bool))); ++x_mod_count; @@ -163,9 +165,12 @@ void Courtroom::on_evidence_clicked(int p_id) ui_evidence_list.at(p_id)->set_selected(true); current_evidence = p_id + max_evidence_on_page * current_evidence_page; +} +void Courtroom::on_evidence_double_clicked(int p_id) +{ ui_evidence_description->clear(); - ui_evidence_description->appendPlainText(local_evidence_list.at(current_evidence).description); + ui_evidence_description->appendPlainText(local_evidence_list.at(p_id).description); ui_evidence_overlay->show(); } @@ -179,7 +184,7 @@ void Courtroom::on_evidence_hover(int p_id, bool p_state) ui_evidence_name->setText(local_evidence_list.at(final_id).name); } else - ui_evidence_name->setText(""); + ui_evidence_name->setText(local_evidence_list.at(current_evidence).name); } void Courtroom::on_evidence_left_clicked() diff --git a/text_file_functions.cpp b/text_file_functions.cpp index e4bc2a1..891e13c 100644 --- a/text_file_functions.cpp +++ b/text_file_functions.cpp @@ -153,7 +153,6 @@ QString AOApplication::read_design_ini(QString p_identifier, QString p_design_pa if (!design_ini.open(QIODevice::ReadOnly)) { - qDebug() << "Could not find design ini " + p_design_path; return ""; } QTextStream in(&design_ini);