X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserPC.git;a=blobdiff_plain;f=src%2Fmain.cpp;h=10ce579ca39829f90c6046fcc0ca560483aaa087;hp=41f54d10aaaba49cbdd23ad2d04e8545ea64845e;hb=refs%2Fheads%2Fmaster;hpb=6b2e1320fae530d918e617bbf2eab7b34e454498 diff --git a/src/main.cpp b/src/main.cpp index 41f54d1..9ff1e4d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,57 +1,111 @@ /* - SPDX-FileCopyrightText: %{CURRENT_YEAR} %{AUTHOR} <%{EMAIL}> + * Copyright 2022-2024 Soren Stoutner . + * + * This file is part of Privacy Browser PC . + * + * Privacy Browser PC is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Privacy Browser PC is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Privacy Browser PC. If not, see . + */ - SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL -*/ +// Application headers. +#include "GlobalVariables.h" +#include "databases/BookmarksDatabase.h" +#include "databases/CookiesDatabase.h" +#include "databases/DomainsDatabase.h" +#include "helpers/FilterListHelper.h" +#include "windows/BrowserWindow.h" -// application header -#include "privacybrowserpcwindow.h" -#include "privacybrowserpcdebug.h" - -// KF headers +// KDE Frameworks headers. +#include #include #include -#include #include -// Qt headers +// Qt headers. #include #include -#include -#include +#include +// Declare the global variables. +FilterListHelper *globalFilterListHelperPointer; -int main(int argc, char **argv) +int main(int argc, char *argv[]) { + // Create the application. QApplication application(argc, argv); - KLocalizedString::setApplicationDomain("privacybrowserpc"); + // Set the localization application domain. + KLocalizedString::setApplicationDomain("privacybrowser"); + + // Initialize KCrash. KCrash::initialize(); - KAboutData aboutData( QStringLiteral("privacybrowserpc"), - i18n("PrivacyBrowserPC"), - QStringLiteral("%{VERSION}"), - i18n("A Simple Application written with KDE Frameworks"), - KAboutLicense::GPL, - i18n("Copyright %{CURRENT_YEAR}, %{AUTHOR} <%{EMAIL}>")); + // Instantiate about data, setting the component name, the display name, and the version. + KAboutData aboutData(QStringLiteral("privacybrowser"), i18nc("Program Name", "Privacy Browser"), QStringLiteral("0.5")); + + // Add the author name, job description, email address, and website. + aboutData.addAuthor(i18nc("Developer Information", "Soren Stoutner"),i18nc("Developer Information", "Principal developer"), QStringLiteral("soren@stoutner.com"), + QStringLiteral("https://www.stoutner.com/")); - aboutData.addAuthor(i18n("%{AUTHOR}"),i18n("Author"), QStringLiteral("%{EMAIL}")); - aboutData.setOrganizationDomain("example.org"); - aboutData.setDesktopFileName(QStringLiteral("org.example.privacybrowserpc")); + // Populate additional about data info. + aboutData.setBugAddress("https://redmine.stoutner.com/projects/privacy-browser-pc/issues"); + aboutData.setCopyrightStatement(i18nc("Copyright", "Copyright 2016-2017,2021-2024 Soren Stoutner ")); + aboutData.setDesktopFileName(QStringLiteral("com.stoutner.privacybrowser")); + aboutData.setHomepage(QStringLiteral("https://www.stoutner.com/privacy-browser-pc/")); + //aboutData.setLicense(KAboutLicense::GPL_V3, KAboutLicense::OrLaterVersions); + aboutData.setLicenseTextFile(QStringLiteral(":/licenses/GPLv3+.txt")); + aboutData.setOrganizationDomain("stoutner.com"); + aboutData.setShortDescription(i18nc("Tagline", "A web browser that respects your privacy.")); + // Set the application data. KAboutData::setApplicationData(aboutData); - application.setWindowIcon(QIcon::fromTheme(QStringLiteral("privacybrowserpc"))); - QCommandLineParser parser; - aboutData.setupCommandLine(&parser); + // Set the window icon. + application.setWindowIcon(QIcon::fromTheme(QStringLiteral("privacy-browser"), QIcon(QStringLiteral(":/icons/sc-apps-privacybrowser.svg")))); + + // Create a command line parser. + QCommandLineParser commandLineParser; - parser.process(application); - aboutData.processCommandLine(&parser); + // Process the command line through about data (this adds --license and --author). + aboutData.setupCommandLine(&commandLineParser); + // Process the application command line options (this adds --version, --help, and --help-all). + commandLineParser.process(application); + + // Make it so. + aboutData.processCommandLine(&commandLineParser); + + // Register with D-Bus, allowing multiple instances and allowing the program to run if for some reason the registration fails. KDBusService appDBusService(KDBusService::Multiple | KDBusService::NoExitOnFailure); - PrivacyBrowserPCWindow *window = new PrivacyBrowserPCWindow; - window->show(); + // Create the app data location directory if it doesn't currently exist. This directory is used to store the databases in the subsequent commands. + // The first directory in the list should be the private, writable location, which on Linux should be `/home/user/.local/share/privacybrowser`. + QDir().mkdir(QStandardPaths::standardLocations(QStandardPaths::AppDataLocation).first()); + + // Add the databases. + BookmarksDatabase::addDatabase(); + CookiesDatabase::addDatabase(); + DomainsDatabase::addDatabase(); + + // Populate the filter lists. + globalFilterListHelperPointer = new FilterListHelper; + + // Create the main window. + BrowserWindow *browserWindowPointer = new BrowserWindow(); + + // Show the main window. + browserWindowPointer->show(); + // Return the application. return application.exec(); }