qTox  Version: nightly | Commit: bc751c8e1cac455f9690654fcfe0f560d2d7dfdd
searchform.h
Go to the documentation of this file.
1 /*
2  Copyright © 2015-2019 by The qTox Project Contributors
3 
4  This file is part of qTox, a Qt-based graphical interface for Tox.
5 
6  qTox is libre software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  qTox is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with qTox. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #pragma once
21 
22 #include <QWidget>
23 #include <QLineEdit>
24 #include "searchtypes.h"
25 
26 class QPushButton;
27 class QLabel;
28 class LineEdit;
29 class SearchSettingsForm;
30 
31 class SearchForm final : public QWidget
32 {
33  Q_OBJECT
34 public:
35  enum class ToolButtonState {
36  Disabled = 0, // Grey
37  Common = 1, // Green
38  Active = 2, // Red
39  };
40 
41  explicit SearchForm(QWidget* parent = nullptr);
42  void removeSearchPhrase();
43  QString getSearchPhrase() const;
45  void setFocusEditor();
46  void insertEditor(const QString &text);
47 
48 protected:
49  void showEvent(QShowEvent* event) final;
50 
51 private:
52  // TODO: Merge with 'createButton' from chatformheader.cpp
53  QPushButton* createButton(const QString& name, const QString& state);
55  void setStateName(QPushButton* btn, ToolButtonState state);
56  void useBeginState();
57 
58  QPushButton* settingsButton;
59  QPushButton* upButton;
60  QPushButton* downButton;
61  QPushButton* hideButton;
62  QPushButton* startButton;
65  QLabel* messageLabel;
66 
67  QString searchPhrase;
69 
70  bool isActiveSettings{false};
71  bool isChangedPhrase{false};
72  bool isSearchInBegin{true};
73  bool isPrevSearch{false};
74 
75 private slots:
76  void changedSearchPhrase(const QString& text);
77  void clickedUp();
78  void clickedDown();
79  void clickedHide();
80  void clickedStart();
81  void clickedSearch();
82  void changedState(bool isUpdate);
83 
84 public slots:
85  void showMessageNotFound(SearchDirection direction);
86  void reloadTheme();
87 
88 signals:
89  void searchInBegin(const QString& phrase, const ParameterSearch& parameter);
90  void searchUp(const QString& phrase, const ParameterSearch& parameter);
91  void searchDown(const QString& phrase, const ParameterSearch& parameter);
92  void visibleChanged();
93 };
94 
95 class LineEdit : public QLineEdit
96 {
97  Q_OBJECT
98 
99 public:
100  LineEdit(QWidget* parent = nullptr);
101 
102 protected:
103  void keyPressEvent(QKeyEvent* event) final;
104 
105 signals:
106  void clickEnter();
107  void clickShiftEnter();
108  void clickEsc();
109 };
SearchForm::getAndCheckParametrSearch
ParameterSearch getAndCheckParametrSearch()
Definition: searchform.cpp:152
SearchForm::changedSearchPhrase
void changedSearchPhrase(const QString &text)
Definition: searchform.cpp:185
SearchForm::clickedHide
void clickedHide()
Definition: searchform.cpp:247
SearchForm::setStateName
void setStateName(QPushButton *btn, ToolButtonState state)
Definition: searchform.cpp:169
SearchForm::hideButton
QPushButton * hideButton
Definition: searchform.h:61
SearchForm::removeSearchPhrase
void removeSearchPhrase()
Definition: searchform.cpp:99
SearchForm::clickedUp
void clickedUp()
Definition: searchform.cpp:211
SearchForm::insertEditor
void insertEditor(const QString &text)
Definition: searchform.cpp:119
SearchDirection
SearchDirection
Definition: searchtypes.h:42
SearchForm::startButton
QPushButton * startButton
Definition: searchform.h:62
SearchForm::createButton
QPushButton * createButton(const QString &name, const QString &state)
Definition: searchform.cpp:141
SearchForm::messageLabel
QLabel * messageLabel
Definition: searchform.h:65
SearchForm::clickedSearch
void clickedSearch()
Definition: searchform.cpp:260
SearchForm::useBeginState
void useBeginState()
Definition: searchform.cpp:177
ParameterSearch
Definition: searchtypes.h:47
SearchForm::reloadTheme
void reloadTheme()
Definition: searchform.cpp:124
SearchForm::isActiveSettings
bool isActiveSettings
Definition: searchform.h:70
SearchForm::searchInBegin
void searchInBegin(const QString &phrase, const ParameterSearch &parameter)
SearchForm::SearchForm
SearchForm(QWidget *parent=nullptr)
Definition: searchform.cpp:39
searchtypes.h
LineEdit::LineEdit
LineEdit(QWidget *parent=nullptr)
Definition: searchform.cpp:311
SearchForm::isChangedPhrase
bool isChangedPhrase
Definition: searchform.h:71
SearchForm::isSearchInBegin
bool isSearchInBegin
Definition: searchform.h:72
SearchForm::downButton
QPushButton * downButton
Definition: searchform.h:60
SearchForm::getSearchPhrase
QString getSearchPhrase() const
Definition: searchform.cpp:104
SearchForm::parameter
ParameterSearch parameter
Definition: searchform.h:68
SearchForm::searchDown
void searchDown(const QString &phrase, const ParameterSearch &parameter)
SearchForm::clickedDown
void clickedDown()
Definition: searchform.cpp:229
SearchForm::showMessageNotFound
void showMessageNotFound(SearchDirection direction)
Definition: searchform.cpp:289
SearchForm::changedState
void changedState(bool isUpdate)
Definition: searchform.cpp:274
LineEdit::keyPressEvent
void keyPressEvent(QKeyEvent *event) final
Definition: searchform.cpp:315
SearchForm::upButton
QPushButton * upButton
Definition: searchform.h:59
SearchForm::isPrevSearch
bool isPrevSearch
Definition: searchform.h:73
SearchForm::ToolButtonState::Active
@ Active
SearchForm::searchLine
LineEdit * searchLine
Definition: searchform.h:63
SearchForm::ToolButtonState::Disabled
@ Disabled
SearchForm::getParameterSearch
ParameterSearch getParameterSearch()
Definition: searchform.cpp:109
SearchForm::searchUp
void searchUp(const QString &phrase, const ParameterSearch &parameter)
LineEdit::clickEnter
void clickEnter()
SearchForm::visibleChanged
void visibleChanged()
SearchForm::setFocusEditor
void setFocusEditor()
Definition: searchform.cpp:114
SearchForm::ToolButtonState::Common
@ Common
SearchSettingsForm
Definition: searchsettingsform.h:29
SearchForm::settingsButton
QPushButton * settingsButton
Definition: searchform.h:58
SearchForm::showEvent
void showEvent(QShowEvent *event) final
Definition: searchform.cpp:135
SearchForm
Definition: searchform.h:31
SearchForm::searchPhrase
QString searchPhrase
Definition: searchform.h:67
SearchForm::ToolButtonState
ToolButtonState
Definition: searchform.h:35
SearchForm::clickedStart
void clickedStart()
Definition: searchform.cpp:253
SearchForm::settings
SearchSettingsForm * settings
Definition: searchform.h:64
LineEdit::clickEsc
void clickEsc()
LineEdit::clickShiftEnter
void clickShiftEnter()
LineEdit
Definition: searchform.h:95