-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclient_window.h
153 lines (119 loc) · 5.39 KB
/
client_window.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#ifndef CLIENT_WINDOW_H
#define CLIENT_WINDOW_H
#include "window_setting.h"
#include "tab_template.h"
#include "windows.h"
#include <QApplication>
#include <QEventLoop>
#include <QMainWindow>
#include <QToolButton>
#include <QTabBar>
#include <QStatusBar>
#include <QLineEdit>
#include <QLabel>
#include <QPushButton>
#include <QBoxLayout>
#include <QMessageBox>
#include <QStyle>
#include <QString>
#include <QPalette> //для заполнения фона создаём объект палитры
#include <QBrush> //для заполнения фона класс кисти (тип заполнения)
#include <QPixmap> //для создания объекта изображения
#include <QShortcut>
#include <QKeySequence>
#include <QMovie>
#include <QFile>
#include <QSettings>
#include <QDataStream>
#include <QDragEnterEvent> //для реализации перетаскивания
#include <QMimeData> //для перетаскивания Mime-файлов
#include <QDir> //Для определения текущей директории файла изображения
#include <QVector> //для вектора строк с путями к файлам
#include <QStringList>
#include <QtSql>
#include <QSqlDatabase>
//взаимодействие с меню
#include <QAction>
#include <QActionGroup>
#include <QMenu>
#include <QMenuBar>
const int max_tabs=31; //Максимальное количество вкладок+1 (30 шт)
class Client_window : public QMainWindow
{
Q_OBJECT
public:
explicit Client_window(QWidget *parent = nullptr);
~Client_window() override;
void readSettings();
protected:
#ifndef QT_NO_CONTEXTMENU
void contextMenuEvent(QContextMenuEvent* event) override;
#endif // QT_NO_CONTEXTMENU
void closeEvent(QCloseEvent* event) override;
bool eventFilter(QObject *obj, QEvent *event) override;
//Обработка событий нажатия, перестакивания и отпускания для установки изображения для фона
void dragEnterEvent(QDragEnterEvent* event) override;
void dragLeaveEvent(QDragLeaveEvent* event) override;
void dragMoveEvent(QDragMoveEvent* event) override;
void dropEvent(QDropEvent* event) override;
void resizeEvent(QResizeEvent*) override;
private slots:
//Функции для действий от кнопок подменю
void save();
void redo();
void addTab();
void closeTab();
void about();
void search_tabs();
void writeData(); //Запись данных в БД активной вкладки
void writeData_null(); //для записи БД 0 вкладки
void writeAllData(); //запись данных всех вкладок
private:
void readData(); //чтение данных приложения при открытии
void writeChangedData(); //запись данных тех вкладок на которых происходили изменения
//void deleteDataTab(int&);
void dialog_message();
void show_progressBar(bool);
void createActions();
void createMenus();
void set_bg_image(QPalette&, Qt::AspectRatioMode); //установка фона вкладок при открытии приложения
void set_default_bg_image(QPalette&, int); //установка стандартногот фона вкладки при добавлении новой
void readAllPathImages(QVector<QString>&, QVector<QString>&);
void writeAllPathImages(QVector<QString>&, QVector<QString>&);
void writeOnePathImage(QString&, QString&);
QTabWidget* MyGlobalWindow;
Tab_template* tab_widget[max_tabs]; //массив шаблонов вкладок (интерфейсы вкладок одинаковы)
QPixmap pixmap_default; //изображение вкладок
Window_setting* setting_window; //окно настроек приложения
QSettings* settings;
QWidget* widgetButtonAddTab;
QToolButton* button_addTab;
QToolButton* button_delTab[max_tabs];
QPixmap closeBtn;
int tabs_counter;
//Кнопки меню
QMenu* fileMenu;
QMenu* editMenu;
QMenu* helpMenu;
//Кнопки подменю с действиями
QAction* saveAct;
QAction* exitAct;
QAction* redoAct;
QAction* adding_tabs; //Добавление вкладок
QAction* delete_tabs; //Удаление вкладок
QAction* aboutAct;
//Угловой виджет поиска
QLineEdit* search_line;
QPushButton* search_button;
QWidget* search_widget;
QShortcut* key_search;
QHBoxLayout* layoutCornerWidget;
QSqlDatabase db;
//Для перетаскивания
QFile file_for_paths_bg; //текстовый файл с путями для изображений вкладок
int counterBackgroundsSaves; //счётчик изменений фона
//Виджет загрузки
QLabel wait_widget;
QMovie* movie;
};
#endif // CLIENT_WINDOW_H