-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathwindowsdispatcher.cpp
98 lines (81 loc) · 3.48 KB
/
windowsdispatcher.cpp
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
#include "global.h"
#include "appver.h"
#include "windowsdispatcher.h"
#include "loginwindow.h"
#include "mainwindow.h" // подключать файл нужно именно здесь, по другому компилятор ругается
#include "chooseofficewindow.h"
#include "models/sofficemodel.h"
windowsDispatcher::windowsDispatcher(QObject *parent) :
QObject(parent)
{
setObjectName("windowsDispatcherObj");
debugInitSettings();
appLog = new SAppLog();
appLog->appendRecord(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss") + " Application start");
LoginWindow *windowLogin = new LoginWindow(this);
QObject::connect(windowLogin,SIGNAL(DBConnectOK()),this,SLOT(connectOK()));
QObject::connect(windowLogin,SIGNAL(btnCancelClick()),this,SIGNAL(quit()));
windowLogin->show();
}
windowsDispatcher::~windowsDispatcher()
{
}
void windowsDispatcher::debugInitSettings()
{
QFile file;
QDir appDataDir = QDir(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation)); // C:/Users/user/AppData/Local
file.setFileName(SLocalSettings::appSettingsPath()+"/../debug.ini");
if (file.exists())
{
debugOptions = new QSettings(file.fileName(), QSettings::IniFormat);
debugOptions->setProperty("fileName", file.fileName());
}
}
void windowsDispatcher::connectOK()
{
initSystemObjects();
initUserDbData();
initPermissions();
initCompanies();
initOffices();
QFont f;
f.setFamily(userLocalData->FontFamily.value);
f.setPixelSize(userDbData->fontSize);
QApplication::setFont(f);
userDbData->updateLoginTimestamp();
userActivityLog->appendRecord(tr("Login")); // Заменено на "Login", потому что АСЦ не позволяет запускать два экз. программы, а определение происходит по фразе "Выполнен вход в систему"
userDbData->currentOffice = userDbData->office;
if ((permissions->changeOffice && (officesModel->rowCount() > 1)) || SOfficeModel::current()->id() == 0)
{ // АСЦ успешно логинится с архивным офисом в настройках сотрудника, это неправильно.
createChooseOfficeWindow();
}
else
{
createMainWindow();
}
if(debugLoginOptions)
delete debugLoginOptions;
}
void windowsDispatcher::createChooseOfficeWindow()
{
if(debugLoginOptions)
if(debugLoginOptions->contains("office"))
{
userDbData->currentOffice = debugLoginOptions->value("office").toInt();
if(SOfficeModel::current()->id())
{
createMainWindow();
return;
}
}
chooseOfficeWindow *windowChooseOffice = new chooseOfficeWindow(this);
QObject::connect(windowChooseOffice, SIGNAL(officeChoosed()), this, SLOT(createMainWindow()));
windowChooseOffice->show();
}
void windowsDispatcher::createMainWindow()
{
userDbData->company = SOfficeModel::current()->defaultCompany();
MainWindow *windowMain = MainWindow::getInstance(this); // указатель должен объявляться именно здесь, по другому компилятор ругается
windowMain->show();
windowMain->createTabRepairs(); // по-умолчанию создаём вкладку Ремонты
}