blob: e514adda8cf3327fda73c5db77e837849c1883f6 (
plain)
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
|
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from __future__ import annotations
import sys
import logging
from PySide6.QtCore import QCoreApplication, QDir, QFile, QStandardPaths
from PySide6.QtGui import QGuiApplication
from PySide6.QtQml import QQmlApplicationEngine
from PySide6.QtSql import QSqlDatabase
# We import the file just to trigger the QmlElement type registration.
import sqlDialog # noqa E703
logging.basicConfig(filename="chat.log", level=logging.DEBUG)
logger = logging.getLogger("logger")
def connectToDatabase():
database = QSqlDatabase.database()
if not database.isValid():
database = QSqlDatabase.addDatabase("QSQLITE")
if not database.isValid():
logger.error("Cannot add database")
app_data = QStandardPaths.writableLocation(QStandardPaths.StandardLocation.AppDataLocation)
write_dir = QDir(app_data)
if not write_dir.mkpath("."):
logger.error(f"Failed to create writable directory {app_data}")
# Ensure that we have a writable location on all devices.
abs_path = write_dir.absolutePath()
filename = f"{abs_path}/chat-database.sqlite3"
# When using the SQLite driver, open() will create the SQLite
# database if it doesn't exist.
database.setDatabaseName(filename)
if not database.open():
logger.error("Cannot open database")
QFile.remove(filename)
if __name__ == "__main__":
app = QGuiApplication()
QCoreApplication.setOrganizationName("QtProject")
QCoreApplication.setApplicationName("Chat Tutorial")
connectToDatabase()
engine = QQmlApplicationEngine()
engine.addImportPath(sys.path[0])
engine.loadFromModule("App", "Main")
if not engine.rootObjects():
sys.exit(-1)
exit_code = app.exec()
del engine
sys.exit(exit_code)
|