X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=src%2Fmain.cpp;h=0c499f2750e19f01ea294c011c6e7701542f72b4;hb=HEAD;hp=d9accc7079946332a69a82db31b1d8ff79b5f445;hpb=5f747e35e3555da6a0f89f0444163d578ab1db22;p=PrivacyBrowserPC.git diff --git a/src/main.cpp b/src/main.cpp index d9accc7..9b41069 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,38 +1,46 @@ -/* - * Copyright 2022-2023 Soren Stoutner . +/* SPDX-License-Identifier: GPL-3.0-or-later + * SPDX-FileCopyrightText: 2022-2025 Soren Stoutner * - * This file is part of Privacy Browser PC . + * 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. + * This program 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. + * This program 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 . + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . */ // 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" // KDE Frameworks headers. #include #include -#include #include +#include // Qt headers. #include #include #include +// Declare the global variables. +bool globalChromiumInstalled; +FilterListHelper *globalFilterListHelperPointer; +bool globalFirefoxInstalled; + int main(int argc, char *argv[]) { // Create the application. @@ -45,19 +53,19 @@ int main(int argc, char *argv[]) KCrash::initialize(); // Instantiate about data, setting the component name, the display name, and the version. - KAboutData aboutData(QStringLiteral("privacybrowser"), i18nc("Program Name", "Privacy Browser"), QStringLiteral("0.1")); + KAboutData aboutData(QLatin1String("privacybrowser"), i18nc("Program Name", "Privacy Browser"), QLatin1String("0.8")); // 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(i18nc("Developer Information", "Soren Stoutner"),i18nc("Developer Information", "Principal developer"), QLatin1String("soren@stoutner.com"), + QLatin1String("https://www.stoutner.com/")); // Populate additional about data info. aboutData.setBugAddress("https://redmine.stoutner.com/projects/privacy-browser-pc/issues"); - aboutData.setCopyrightStatement(i18nc("Copyright", "Copyright 2016-2017,2021-2023 Soren Stoutner ")); - aboutData.setDesktopFileName(QStringLiteral("com.stoutner.privacybrowser")); - aboutData.setHomepage(QStringLiteral("https://www.stoutner.com/privacy-browser-pc/")); + aboutData.setCopyrightStatement(i18nc("Copyright", "Copyright 2016-2017, 2021-2025 Soren Stoutner ")); + aboutData.setDesktopFileName(QLatin1String("com.stoutner.privacybrowser")); + aboutData.setHomepage(QLatin1String("https://www.stoutner.com/privacy-browser-pc/")); //aboutData.setLicense(KAboutLicense::GPL_V3, KAboutLicense::OrLaterVersions); - aboutData.setLicenseTextFile(QStringLiteral(":/licenses/GPLv3+.txt")); + aboutData.setLicenseTextFile(QLatin1String(":/licenses/GPLv3+.txt")); aboutData.setOrganizationDomain("stoutner.com"); aboutData.setShortDescription(i18nc("Tagline", "A web browser that respects your privacy.")); @@ -65,7 +73,7 @@ int main(int argc, char *argv[]) KAboutData::setApplicationData(aboutData); // Set the window icon. - application.setWindowIcon(QIcon::fromTheme(QStringLiteral("privacy-browser"), QIcon(QStringLiteral(":/icons/sc-apps-privacy-browser.svg")))); + application.setWindowIcon(QIcon::fromTheme(QLatin1String("privacy-browser"), QIcon(QLatin1String(":/icons/sc-apps-privacybrowser.svg")))); // Create a command line parser. QCommandLineParser commandLineParser; @@ -82,9 +90,21 @@ int main(int argc, char *argv[]) // 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); + // 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. - DomainsDatabase::addDatabase(); + BookmarksDatabase::addDatabase(); CookiesDatabase::addDatabase(); + DomainsDatabase::addDatabase(); + + // Populate the global filter list helper. + globalFilterListHelperPointer = new FilterListHelper; + + // Check if other browsers are installed and store the result in the global variables + globalChromiumInstalled = (system("chromium --version > /dev/null 2> /dev/null") == 0); + globalFirefoxInstalled = (system("firefox -v > /dev/null 2> /dev/null") == 0); // Create the main window. BrowserWindow *browserWindowPointer = new BrowserWindow();