-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
60 lines (50 loc) · 2.02 KB
/
main.cpp
File metadata and controls
60 lines (50 loc) · 2.02 KB
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
#include <QDebug>
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include "appstate.h"
#include "clipboardheader.h"
#include "cookieservice.h"
#include "groupmessagemanager.h"
#include "message.h"
#include "networkmanager.h"
#include "websocketclient.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
// App information
app.setOrganizationName("AnonymousChat");
app.setOrganizationDomain("learnqt.guide");
app.setApplicationName("Project_AnonymousChat");
QQmlApplicationEngine engine;
AppState app_state(&app);
// Register the services
qmlRegisterType<CookieService>("cookie.service", 1, 0, "Cookie");
qmlRegisterType<NetworkManager>("network.service", 1, 0, "NetworkManager");
qmlRegisterType<ClipboardHelper>("Helpers", 1, 0, "ClipboardHelper");
qmlRegisterType<GroupMessageManager>("group.message", 1, 0, "GroupMessageManager");
qmlRegisterType<Message>("group.message", 1, 0, "Message");
WebSocketClient socketClient(QUrl("ws://127.0.0.1:8080/ws"));
engine.rootContext()->setContextProperty("app_state", &app_state);
engine.rootContext()->setContextProperty("websocket", &socketClient);
CookieService cookieService;
QVariant user_id = cookieService.loadCookie("user_id");
QVariant user_code = cookieService.loadCookie("user_code");
if (user_id.isNull() || user_id.toString().isEmpty()) {
qDebug() << "No user_id found. Loading HomeScreen...";
engine.loadFromModule("Project_AnonymousChat", "HomeScreen");
} else {
socketClient.setUserCode(user_code.toString());
socketClient.open();
qDebug() << "user_id found:" << user_id.toString() << ". Loading Main...";
engine.loadFromModule("Project_AnonymousChat", "Main");
}
// Handle object creation failures
QObject::connect(
&engine,
&QQmlApplicationEngine::objectCreationFailed,
&app,
[]() { QCoreApplication::exit(-1); },
Qt::QueuedConnection);
return app.exec();
}