main.cpp raw
 1#include <cstdlib>
 2
 3#include <QApplication>
 4#include <QDir>
 5#include <QGuiApplication>
 6#include <QStyleHints>
 7#include <QWebEngineProfile>
 8
 9#include "DatabaseManager.h"
10#include "MainWindow.h"
11#include "MasterPasswordDialog.h"
12#include "VaultManager.h"
13
14int main(int argc, char *argv[]) {
15	// Must be set before QApplication to ensure QtWebEngineProcess inherits it
16	// Qt WebEngine searches: 1) QTWEBENGINE_DICTIONARIES_PATH  2)
17	// <appdir>/qtwebengine_dictionaries/
18	QByteArray dictPath = (QDir::homePath() + "/.local/share/qtwebengine_dictionaries").toUtf8();
19	setenv("QTWEBENGINE_DICTIONARIES_PATH", dictPath.constData(), 1);
20	setenv("QTWEBENGINE_CHROMIUM_FLAGS", "--enable-spell-checking", 1);
21
22	QApplication app(argc, argv);
23	QGuiApplication::styleHints()->setColorScheme(Qt::ColorScheme::Dark);
24
25	if (!DatabaseManager::instance().init()) {
26		return 1;
27	}
28
29	VaultManager::instance().init();
30
31	auto *profile = QWebEngineProfile::defaultProfile();
32	profile->setSpellCheckLanguages({"en_US"});
33	profile->setSpellCheckEnabled(true);
34
35	// Check if vault needs setup or unlock
36	if (!VaultManager::instance().isUnlocked()) {
37		bool setupMode = !VaultManager::instance().isInitialized();
38		MasterPasswordDialog dlg(setupMode);
39		if (dlg.exec() != QDialog::Accepted) {
40			return 0;	 // User cancelled
41		}
42	}
43
44	auto *browser = new MainWindow();
45	browser->show();
46
47	return app.exec();
48}