.clang-format
.clang-tidy
.gitignore
.vimrc
BrowserTab.cpp
BrowserTab.h
BrowserView.cpp
BrowserView.h
CMakeLists.txt
DatabaseManager.cpp
DatabaseManager.h
DownloadBar.cpp
DownloadBar.h
DownloadWidget.cpp
DownloadWidget.h
MainWindow.cpp
MainWindow.h
Makefile
MasterPasswordDialog.cpp
MasterPasswordDialog.h
PasswordHelper.cpp
PasswordHelper.h
README.md
ThemeConfig.h
VaultManager.cpp
VaultManager.h
browser.desktop
browser.qrc
compile_commands.json
main.cpp
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}