msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-20 17:18-0700\n"
+"POT-Creation-Date: 2022-01-22 14:47-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/privacybrowserpcview.cpp:44
-#, kde-format
-msgid "This project is %1 days old"
-msgstr ""
-
-#: src/mainwindow.cpp:38
+#: src/mainwindow.cpp:46
#, kde-format
msgctxt "@action"
msgid "Switch Colors"
msgstr ""
-#: src/mainwindow.cpp:74
+#: src/mainwindow.cpp:80
#, kde-format
msgctxt "@title:tab"
msgid "General"
msgid "A web browser that respects your privacy."
msgstr ""
+#: src/mainview.cpp:44
+#, kde-format
+msgid "This project is %1 days old"
+msgstr ""
+
#: rc.cpp:3
#, kde-format
msgid "Background color:"
#: rc.cpp:45
#, kde-format
-msgid "hello, world"
+msgid "Main Toolbar"
msgstr ""
#: rc.cpp:48
#, kde-format
-msgid "Main Toolbar"
+msgid "hello, world"
msgstr ""
#: rc.cpp:49
# Create the executable and add the resources.
-add_executable(privacybrowser resources.qrc)
+add_executable(privacy-browser resources.qrc)
# List the sources to include in the executable.
-target_sources(privacybrowser PRIVATE
+target_sources(privacy-browser PRIVATE
main.cpp
mainwindow.cpp
- privacybrowserpcview.cpp
+ mainview.cpp
)
-# Add the Qt logging category.
-ecm_qt_declare_logging_category(privacybrowser
+# Add the Qt logging category. This will create the `privacybrowserdebug.h` header file.
+ecm_qt_declare_logging_category(privacy-browser
HEADER privacybrowserdebug.h
IDENTIFIER PRIVACYBROWSER
CATEGORY_NAME "privacybrowser"
)
# Include the KConfig controller file.
-kconfig_add_kcfg_files(privacybrowser settings.kcfgc)
+kconfig_add_kcfg_files(privacy-browser settings.kcfgc)
# Use KDE Frameworks to handle internationalization of the following UI files.
-ki18n_wrap_ui(privacybrowser
- privacybrowserpcview.ui
+ki18n_wrap_ui(privacy-browser
+ mainview.ui
settings.ui
)
-
-target_link_libraries(privacybrowser
+# Link the following libraries.
+target_link_libraries(privacy-browser
+ KF5::ConfigWidgets
KF5::CoreAddons
+ KF5::Crash
+ KF5::DBusAddons
KF5::I18n
KF5::XmlGui
- KF5::ConfigWidgets
- KF5::DBusAddons
- KF5::Crash
Qt5::Widgets
)
-install(TARGETS privacybrowser ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
-install(PROGRAMS com.stoutner.privacybrowser DESTINATION ${KDE_INSTALL_APPDIR})
-install(FILES com.stounter.privacybrowser.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
-install(FILES privacybrowserpcui.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/privacybrowser) # TODO
+# Install Privacy Browser using the default KDE arguments.
+install(TARGETS privacy-browser ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
+
+# Install Privacy Browser according to the instructions in the desktop file, specifying the permissions.
+install(PROGRAMS com.stoutner.privacybrowser.desktop DESTINATION ${KDE_INSTALL_APPDIR} PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
+
+# Install Privacy Browser's metadata file.
+install(FILES com.stoutner.privacybrowser.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
+
+# Install Privacy Browser's RC (Runtime Configuration) file.
+install(FILES privacybrowserui.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/privacybrowser)
+
+# Install Privacy Browser's icon.
+ecm_install_icons(ICONS icons/sc-apps-privacy_browser.svg DESTINATION ${KDE_INSTALL_ICONDIR})
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-android>.
+
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+
+ You should have received a copy of the GNU Free Documentation License
+ along with Privacy Browser PC. If not, see <http://www.gnu.org/licenses/>. -->
+
+<!-- The XML specification can be found at <https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html>. -->
+<component type="desktop-application">
+ <id>com.stoutner.privacybrowser</id>
+
+ <metadata_license>GFDL-1.3</metadata_license>
+
+ <name>Privacy Browser</name>
+
+ <summary>A web browser that respects your privacy.</summary>
+
+ <categories>
+ <category>Network</category>
+ <category>WebBrowser</category>
+ </categories>
+
+ <url type="homepage">https://www.stoutner.com/privacy-browser-pc/</url>
+ <url type="bugtracker">https://redmine.stoutner.com/projects/privacy-browser-pc/issues</url>
+ <url type="donation">https://www.stoutner.com/donations/</url>
+ <url type="contact">https://redmine.stoutner.com/projects/privacy-browser-pc/boards</url>
+
+ <launchable type="desktop-id">com.stoutner.privacybrowser.desktop</launchable>
+
+ <releases>
+ <release version="0.1.1" date="2022-03-01"/>
+ <release version="0.1" date="2022-01-22"/>
+ </releases>
+
+ <provides>
+ <binary>privacy-browser</binary>
+ </provides>
+
+ <project_license>GPL-3.0-or-later</project_license>
+
+ <developer_name>Soren Stoutner</developer_name>
+
+ <!-- TODO -->
+ <screenshots>
+ <screenshot type="default">
+ <image> https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-screenshots </image>
+ </screenshot>
+ </screenshots>
+
+ <update_contact>soren@stoutner.com</update_contact>
+</component>
--- /dev/null
+# Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+#
+# This file is part of Privacy Browser PC <https://www.stoutner.com/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 <http://www.gnu.org/licenses/>.
+
+# The specification for the .desktop file can be found at <https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html>.
+[Desktop Entry]
+# Set the type.
+Type=Application
+
+# Set the name.
+Name=Privacy Browser
+
+# Set the generic name, which is displayed next to the name in the menu.
+GenericName=Web Browser
+
+# Set the categories. These are used to organize the application in the menu.
+Categories=Network;WebBrowser;
+
+# Set the icon.
+Icon=privacy_browser.svg
+
+# Set the executable.
+Exec=privacy-browser
+
+# TODO. Check if this is needed.
+StartupWMClass=privacy-browser
+
+# TODO. Set the document path.
+X-DocPath=privacybrowser/index.html
+
+# TODO. Add MIME types.
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-
-<!--
- Copyright © 2016-2017,2021-2022 Soren Stoutner <soren@stoutner.com>.
-
- This file is derived from `security` and `language`, which are part of the Android Material icon set. They are released under the Apache License 2.0. <https://fonts.google.com/icons>
-
- This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-android>.
-
- 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 <http://www.gnu.org/licenses/>. -->
-
-<svg
- xmlns="http://www.w3.org/2000/svg"
- viewBox="0 0 256 256" >
-
- <!-- Inner Shield. -->
- <g transform="translate(0,160)" >
- <path
- style="fill:#0d47a1"
- d="m 128,-147.2 -94.254546,41.89091 v 62.836368 c 0,58.123635 40.215273,112.477091 94.254546,125.672721 54.03928,-13.19563 94.25454,-67.549086 94.25454,-125.672721 v -62.836368 z" />
- </g>
-
- <!-- Outer Shield. -->
- <g transform="translate(0,160)" >
- <path
- style="fill:#1976d2"
- d="m 128,-160 -104.727273,46.54546 v 69.818182 C 23.272727,20.945459 67.956363,81.338188 128,95.999999 188.04364,81.338188 232.72727,20.945459 232.72727,-43.636358 v -69.818182 z m 0,127.883641 h 81.45454 C 203.28728,15.825464 171.28727,58.530919 128,71.912739 V -31.999996 H 46.545455 V -98.327268 L 128,-134.51636 Z" />
- </g>
-
- <!-- Globe. -->
- <g transform="translate(0,232)" >
- <path
- style="fill:#ffffff"
- d="m 127.92021,-183.78553 c -44.041614,0 -79.705747,35.74391 -79.705747,79.78553 0,44.041617 35.664133,79.785537 79.705747,79.785537 44.1214,0 79.86533,-35.74392 79.86533,-79.785537 0,-44.04162 -35.74393,-79.78553 -79.86533,-79.78553 z m 55.29138,47.87132 h -23.53674 c -2.55313,-9.9732 -6.22326,-19.54746 -11.0104,-28.40365 14.68055,5.02648 26.88773,15.23903 34.54714,28.40365 z M 128,-167.50929 c 6.6222,9.57427 11.80825,20.18574 15.23903,31.59508 h -30.47807 c 3.43078,-11.40934 8.61684,-22.02081 15.23904,-31.59508 z M 66.245993,-88.042889 C 64.969425,-93.149168 64.171571,-98.494798 64.171571,-104 c 0,-5.5052 0.797855,-10.85083 2.074422,-15.95711 h 26.96751 c -0.63829,5.26585 -1.117,10.5317 -1.117,15.95711 0,5.425417 0.47872,10.691263 1.117,15.957111 z m 6.542412,15.957108 H 96.32514 c 2.553137,9.973191 6.22327,19.547449 11.0104,28.403644 C 92.655006,-48.708619 80.44782,-58.841391 72.788405,-72.085781 Z M 96.32514,-135.91421 H 72.788405 c 7.659415,-13.2444 19.866601,-23.37717 34.547135,-28.40365 -4.78713,8.85619 -8.457263,18.43045 -11.0104,28.40365 z M 128,-40.49071 c -6.6222,-9.574268 -11.80826,-20.185747 -15.23904,-31.595071 h 30.47807 C 139.80825,-60.676457 134.6222,-50.064978 128,-40.49071 Z m 18.66982,-47.552179 h -37.33964 c -0.71801,-5.265848 -1.27656,-10.531694 -1.27656,-15.957111 0,-5.42541 0.55854,-10.77105 1.27656,-15.95711 h 37.33964 c 0.71811,5.18606 1.27656,10.5317 1.27656,15.95711 0,5.425417 -0.55844,10.691263 -1.27656,15.957111 z m 1.99463,44.360752 c 4.78714,-8.856195 8.45727,-18.430453 11.0104,-28.403644 h 23.53674 c -7.65941,13.164605 -19.86659,23.377162 -34.54714,28.403644 z m 14.12204,-44.360752 c 0.63828,-5.265848 1.117,-10.531694 1.117,-15.957111 0,-5.42541 -0.47871,-10.69126 -1.117,-15.95711 h 26.96752 c 1.27656,5.10628 2.07441,10.45191 2.07441,15.95711 0,5.505202 -0.79784,10.850832 -2.07441,15.957111 z" />
- </g>
-</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<!--
+ Copyright © 2016-2017,2021-2022 Soren Stoutner <soren@stoutner.com>.
+
+ This file is derived from `security` and `language`, which are part of the Android Material icon set. They are released under the Apache License 2.0. <https://fonts.google.com/icons>
+
+ This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-android>.
+
+ 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 <http://www.gnu.org/licenses/>. -->
+
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ viewBox="0 0 256 256" >
+
+ <!-- Inner Shield. -->
+ <g transform="translate(0,160)" >
+ <path
+ style="fill:#0d47a1"
+ d="m 128,-147.2 -94.254546,41.89091 v 62.836368 c 0,58.123635 40.215273,112.477091 94.254546,125.672721 54.03928,-13.19563 94.25454,-67.549086 94.25454,-125.672721 v -62.836368 z" />
+ </g>
+
+ <!-- Outer Shield. -->
+ <g transform="translate(0,160)" >
+ <path
+ style="fill:#1976d2"
+ d="m 128,-160 -104.727273,46.54546 v 69.818182 C 23.272727,20.945459 67.956363,81.338188 128,95.999999 188.04364,81.338188 232.72727,20.945459 232.72727,-43.636358 v -69.818182 z m 0,127.883641 h 81.45454 C 203.28728,15.825464 171.28727,58.530919 128,71.912739 V -31.999996 H 46.545455 V -98.327268 L 128,-134.51636 Z" />
+ </g>
+
+ <!-- Globe. -->
+ <g transform="translate(0,232)" >
+ <path
+ style="fill:#ffffff"
+ d="m 127.92021,-183.78553 c -44.041614,0 -79.705747,35.74391 -79.705747,79.78553 0,44.041617 35.664133,79.785537 79.705747,79.785537 44.1214,0 79.86533,-35.74392 79.86533,-79.785537 0,-44.04162 -35.74393,-79.78553 -79.86533,-79.78553 z m 55.29138,47.87132 h -23.53674 c -2.55313,-9.9732 -6.22326,-19.54746 -11.0104,-28.40365 14.68055,5.02648 26.88773,15.23903 34.54714,28.40365 z M 128,-167.50929 c 6.6222,9.57427 11.80825,20.18574 15.23903,31.59508 h -30.47807 c 3.43078,-11.40934 8.61684,-22.02081 15.23904,-31.59508 z M 66.245993,-88.042889 C 64.969425,-93.149168 64.171571,-98.494798 64.171571,-104 c 0,-5.5052 0.797855,-10.85083 2.074422,-15.95711 h 26.96751 c -0.63829,5.26585 -1.117,10.5317 -1.117,15.95711 0,5.425417 0.47872,10.691263 1.117,15.957111 z m 6.542412,15.957108 H 96.32514 c 2.553137,9.973191 6.22327,19.547449 11.0104,28.403644 C 92.655006,-48.708619 80.44782,-58.841391 72.788405,-72.085781 Z M 96.32514,-135.91421 H 72.788405 c 7.659415,-13.2444 19.866601,-23.37717 34.547135,-28.40365 -4.78713,8.85619 -8.457263,18.43045 -11.0104,28.40365 z M 128,-40.49071 c -6.6222,-9.574268 -11.80826,-20.185747 -15.23904,-31.595071 h 30.47807 C 139.80825,-60.676457 134.6222,-50.064978 128,-40.49071 Z m 18.66982,-47.552179 h -37.33964 c -0.71801,-5.265848 -1.27656,-10.531694 -1.27656,-15.957111 0,-5.42541 0.55854,-10.77105 1.27656,-15.95711 h 37.33964 c 0.71811,5.18606 1.27656,10.5317 1.27656,15.95711 0,5.425417 -0.55844,10.691263 -1.27656,15.957111 z m 1.99463,44.360752 c 4.78714,-8.856195 8.45727,-18.430453 11.0104,-28.403644 h 23.53674 c -7.65941,13.164605 -19.86659,23.377162 -34.54714,28.403644 z m 14.12204,-44.360752 c 0.63828,-5.265848 1.117,-10.531694 1.117,-15.957111 0,-5.42541 -0.47871,-10.69126 -1.117,-15.95711 h 26.96752 c 1.27656,5.10628 2.07441,10.45191 2.07441,15.95711 0,5.505202 -0.79784,10.850832 -2.07441,15.957111 z" />
+ </g>
+</svg>
// Initialize KCrash.
KCrash::initialize();
- // Instantiate about data.
- KAboutData aboutData(QStringLiteral("privacybrowser"), i18n("Privacy Browser"), QStringLiteral("0.1"));
+ // Instantiate about data, setting the component name, the display name, and the version.
+ KAboutData aboutData(QStringLiteral("privacy-browser"), i18n("Privacy Browser"), QStringLiteral("0.1"));
- // Add the author information.
+ // Add the author name, job description, email address, and website.
aboutData.addAuthor(i18n("Soren Stoutner"),i18n("Principal developer"), QStringLiteral("soren@stoutner.com"), QStringLiteral("https://www.stoutner.com/"));
// Populate additional about data info.
KAboutData::setApplicationData(aboutData);
// Set the window icon.
- application.setWindowIcon(QIcon::fromTheme(QStringLiteral("privacybrowser"), QIcon(":/icons/privacy_browser.svg")));
+ application.setWindowIcon(QIcon::fromTheme(QStringLiteral("privacy-browser"), QIcon(":/icons/sc-apps-privacy_browser.svg")));
// Create a command line parser.
QCommandLineParser commandLineParser;
--- /dev/null
+/*
+ SPDX-FileCopyrightText: %{CURRENT_YEAR} %{AUTHOR} <%{EMAIL}>
+
+ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
+*/
+
+// application headers
+#include "mainview.h"
+
+#include "settings.h"
+#include "privacybrowserdebug.h"
+
+
+MainView::MainView(QWidget *parent)
+ : QWidget(parent)
+{
+ m_ui.setupUi(this);
+ handleSettingsChanged();
+}
+
+MainView::~MainView()
+{
+}
+
+void MainView::switchColors()
+{
+ // switch the foreground/background colors of the label
+ QColor color = Settings::colorBackground();
+ Settings::setColorBackground(Settings::colorForeground());
+ Settings::setColorForeground(color);
+
+ handleSettingsChanged();
+}
+
+void MainView::handleSettingsChanged()
+{
+ qCDebug(PRIVACYBROWSER) << "MainView::handleSettingsChanged()";
+ QPalette palette = m_ui.templateLabel->palette();
+ palette.setColor(QPalette::Window, Settings::colorBackground());
+ palette.setColor(QPalette::WindowText, Settings::colorForeground());
+ m_ui.templateLabel->setPalette(palette);
+
+ // i18n : internationalization
+ m_ui.templateLabel->setText(i18n("This project is %1 days old", Settings::ageInDays()));
+}
--- /dev/null
+/*
+ SPDX-FileCopyrightText: %{CURRENT_YEAR} %{AUTHOR} <%{EMAIL}>
+
+ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
+*/
+
+#ifndef MAINVIEW_H
+#define MAINVIEW_H
+
+#include "ui_mainview.h"
+
+
+/**
+ * This class serves as the main window for privacybrowserpc. It handles the
+ * menus, toolbars and status bars.
+ *
+ * @short Main window class
+ * @author %{AUTHOR} <%{EMAIL}>
+ * @version %{VERSION}
+ */
+class MainView : public QWidget
+{
+ Q_OBJECT
+public:
+ /**
+ * Default Constructor
+ */
+ explicit MainView(QWidget *parent);
+
+ /**
+ * Default Destructor
+ */
+ ~MainView() override;
+
+public Q_SLOTS:
+ void switchColors();
+ void handleSettingsChanged();
+
+private:
+ // this is the name of the root widget inside our Ui file
+ // you can rename it in designer and then change it here
+ Ui::MainView m_ui;
+};
+
+#endif
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainView</class>
+ <widget class="QWidget" name="MainView">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>315</width>
+ <height>233</height>
+ </rect>
+ </property>
+ <property name="autoFillBackground">
+ <bool>true</bool>
+ </property>
+ <layout class="QGridLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QLabel" name="templateLabel">
+ <property name="palette">
+ <palette>
+ <active>
+ <colorrole role="WindowText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Button">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Base">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="AlternateBase">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </active>
+ <inactive>
+ <colorrole role="WindowText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Button">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Base">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="AlternateBase">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </inactive>
+ <disabled>
+ <colorrole role="WindowText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>119</red>
+ <green>119</green>
+ <blue>119</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Button">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Base">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="AlternateBase">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </disabled>
+ </palette>
+ </property>
+ <property name="font">
+ <font>
+ <family>Sans Serif</family>
+ <pointsize>12</pointsize>
+ </font>
+ </property>
+ <property name="autoFillBackground">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>hello, world</string>
+ </property>
+ <property name="scaledContents">
+ <bool>true</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
*/
// Application headers.
+#include "mainview.h"
#include "mainwindow.h"
-#include "privacybrowserpcview.h"
#include "privacybrowserdebug.h"
#include "settings.h"
#include <KActionCollection>
#include <KConfigDialog>
-
MainWindow::MainWindow() : KXmlGuiWindow()
{
- m_privacybrowserpcView = new PrivacyBrowserPCView(this);
- setCentralWidget(m_privacybrowserpcView);
+ // Instantiate the main view pointer.
+ mainViewPointer = new MainView(this);
- KActionCollection* actionCollection = this->actionCollection();
- m_switchAction = actionCollection->addAction(QStringLiteral("switch_action"));
- m_switchAction->setText(i18nc("@action", "Switch Colors"));
- m_switchAction->setIcon(QIcon::fromTheme(QStringLiteral("fill-color")));
- connect(m_switchAction, &QAction::triggered, m_privacybrowserpcView, &PrivacyBrowserPCView::switchColors);
+ // Set the main view as the central widget.
+ setCentralWidget(mainViewPointer);
- KStandardAction::openNew(this, SLOT(fileNew()), actionCollection);
- KStandardAction::quit(qApp, SLOT(closeAllWindows()), actionCollection);
- KStandardAction::preferences(this, SLOT(settingsConfigure()), actionCollection);
+ // Get a handle for the action collectoin.
+ KActionCollection *actionCollectionPointer = this->actionCollection();
- setupGUI();
-}
+ // Create a switch colorsaction pointer.
+ QAction *switchColorsActionPointer;
-MainWindow::~MainWindow()
-{
+ // Populate the switch colors action pointer.
+ switchColorsActionPointer = actionCollectionPointer->addAction(QStringLiteral("switch_action"));
+ switchColorsActionPointer->setText(i18nc("@action", "Switch Colors"));
+ switchColorsActionPointer->setIcon(QIcon::fromTheme(QStringLiteral("fill-color")));
+
+ // Connect the signals to the slots.
+ connect(switchColorsActionPointer, &QAction::triggered, mainViewPointer, &MainView::switchColors);
+
+ KStandardAction::openNew(this, SLOT(fileNew()), actionCollectionPointer);
+ KStandardAction::quit(qApp, SLOT(closeAllWindows()), actionCollectionPointer);
+ KStandardAction::preferences(this, SLOT(settingsConfigure()), actionCollectionPointer);
+
+ setupGUI();
}
void MainWindow::fileNew()
{
- qCDebug(PRIVACYBROWSER) << "PrivacyBrowserPCWindow::fileNew()";
+ qCDebug(PRIVACYBROWSER) << "MainWindow::fileNew()";
(new MainWindow)->show();
}
KConfigDialog *dialog = new KConfigDialog(this, QStringLiteral("settings"), Settings::self());
QWidget *generalSettingsPage = new QWidget;
- m_settings.setupUi(generalSettingsPage);
+ settingsWidget.setupUi(generalSettingsPage);
dialog->addPage(generalSettingsPage, i18nc("@title:tab", "General"), QStringLiteral("package_setting"));
- connect(dialog, &KConfigDialog::settingsChanged, m_privacybrowserpcView, &PrivacyBrowserPCView::handleSettingsChanged);
+ connect(dialog, &KConfigDialog::settingsChanged, mainViewPointer, &MainView::handleSettingsChanged);
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->show();
}
#define MAINWINDOW_H
// Application headers.
-#include "ui_settings.h" // TODO. Can probably be removed. Does not appear to exist.
-#include "PrivacyBrowserPCSettings.h" // TODO. Can probably be removed. Doe snot appear to exist.
+#include "settings.h"
+#include "ui_settings.h"
// KDE Frameworks headers.
#include <KXmlGuiWindow>
-// TODO. What is this doing here?
-class PrivacyBrowserPCView;
+class MainView;
-/** TODO. Remove.
- * This class serves as the main window for privacybrowserpc. It handles the
- * menus, toolbars and status bars.
- *
- * @short Main window class
- * @author %{AUTHOR} <%{EMAIL}>
- * @version %{VERSION}
- */
-class MainWindow : public KXmlGuiWindow // TODO. Checkout documentation.
+class MainWindow : public KXmlGuiWindow
{
// Include the Q_OBJECT macro.
Q_OBJECT
// The default constructor.
MainWindow();
-
- // The default destructor. TODO, this could probably be removed.
- ~MainWindow() override;
-
private Q_SLOTS:
- /**
- * Create a new window
- */
+ // Define the private slots.
void fileNew();
-
- /**
- * Open the settings dialog
- */
void settingsConfigure();
private:
- // this is the name of the root widget inside our Ui file
- // you can rename it in designer and then change it here
- Ui::Settings m_settings;
- QAction *m_switchAction;
- PrivacyBrowserPCView *m_privacybrowserpcView;
+ // Define the private variables.
+ Ui::Settings settingsWidget;
+ MainView *mainViewPointer;
};
#endif
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<component type="desktop-application">
- <id>org.example.privacybrowserpc.desktop</id>
- <metadata_license>CC0-1.0</metadata_license>
- <project_license> https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-metadata_license </project_license>
- <name>PrivacyBrowserPC</name>
- <summary> https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-summary </summary>
- <description>
- <p> https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-description </p>
- </description>
- <url type="homepage">https://www.example.org</url>
- <url type="bugtracker">https://bugs.example.org</url>
- <url type="donation">https://www.example.org/community/donations</url>
- <screenshots>
- <screenshot type="default">
- <image> https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-screenshots </image>
- </screenshot>
- </screenshots>
- <provides>
- <binary>privacybrowserpc</binary>
- </provides>
- <project_group>KDE</project_group>
- <releases>
- <release version="0.1.21080" date="2021-08-12"/>
- <release version="0.1.21043" date="2021-07-08"/>
- <release version="0.1.21042" date="2021-06-10"/>
- <release version="0.1.21041" date="2021-05-13"/>
- </releases>
-</component>
+++ /dev/null
-[Desktop Entry]
-Type=Application
-
-Name=PrivacyBrowserPC
-GenericName=A Simple Application written with KDE Frameworks
-Icon=privacybrowserpc
-
-Exec=privacybrowserpc
-StartupWMClass=privacybrowserpc
-X-DocPath=privacybrowserpc/index.html
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<gui name="privacybrowserpc"
- version="1"
- xmlns="http://www.kde.org/standards/kxmlgui/1.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.kde.org/standards/kxmlgui/1.0
- http://www.kde.org/standards/kxmlgui/1.0/kxmlgui.xsd">
-<MenuBar>
- <Menu name="edit">
- <Action name="switch_action"/>
- </Menu>
-</MenuBar>
-
-<ToolBar name="mainToolBar" noMerge="1">
- <text>Main Toolbar</text>
- <Action name="switch_action"/>
- <Separator/>
- <Action name="options_configure"/>
-</ToolBar>
-</gui>
+++ /dev/null
-/*
- SPDX-FileCopyrightText: %{CURRENT_YEAR} %{AUTHOR} <%{EMAIL}>
-
- SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
-*/
-
-// application headers
-#include "privacybrowserpcview.h"
-
-#include "settings.h"
-#include "privacybrowserdebug.h"
-
-
-PrivacyBrowserPCView::PrivacyBrowserPCView(QWidget *parent)
- : QWidget(parent)
-{
- m_ui.setupUi(this);
- handleSettingsChanged();
-}
-
-PrivacyBrowserPCView::~PrivacyBrowserPCView()
-{
-}
-
-void PrivacyBrowserPCView::switchColors()
-{
- // switch the foreground/background colors of the label
- QColor color = Settings::colorBackground();
- Settings::setColorBackground(Settings::colorForeground());
- Settings::setColorForeground(color);
-
- handleSettingsChanged();
-}
-
-void PrivacyBrowserPCView::handleSettingsChanged()
-{
- qCDebug(PRIVACYBROWSER) << "PrivacyBrowserPCView::handleSettingsChanged()";
- QPalette palette = m_ui.templateLabel->palette();
- palette.setColor(QPalette::Window, Settings::colorBackground());
- palette.setColor(QPalette::WindowText, Settings::colorForeground());
- m_ui.templateLabel->setPalette(palette);
-
- // i18n : internationalization
- m_ui.templateLabel->setText(i18n("This project is %1 days old", Settings::ageInDays()));
-}
-
+++ /dev/null
-/*
- SPDX-FileCopyrightText: %{CURRENT_YEAR} %{AUTHOR} <%{EMAIL}>
-
- SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
-*/
-
-#ifndef PRIVACYBROWSERPCVIEW_H
-#define PRIVACYBROWSERPCVIEW_H
-
-#include "ui_privacybrowserpcview.h"
-
-
-/**
- * This class serves as the main window for privacybrowserpc. It handles the
- * menus, toolbars and status bars.
- *
- * @short Main window class
- * @author %{AUTHOR} <%{EMAIL}>
- * @version %{VERSION}
- */
-class PrivacyBrowserPCView : public QWidget
-{
- Q_OBJECT
-public:
- /**
- * Default Constructor
- */
- explicit PrivacyBrowserPCView(QWidget *parent);
-
- /**
- * Default Destructor
- */
- ~PrivacyBrowserPCView() override;
-
-public Q_SLOTS:
- void switchColors();
- void handleSettingsChanged();
-
-private:
- // this is the name of the root widget inside our Ui file
- // you can rename it in designer and then change it here
- Ui::PrivacyBrowserPCView m_ui;
-};
-
-#endif // PRIVACYBROWSERPCVIEW_H
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>PrivacyBrowserPCView</class>
- <widget class="QWidget" name="PrivacyBrowserPCView">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>315</width>
- <height>233</height>
- </rect>
- </property>
- <property name="autoFillBackground">
- <bool>true</bool>
- </property>
- <layout class="QGridLayout">
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item row="0" column="0">
- <widget class="QLabel" name="templateLabel">
- <property name="palette">
- <palette>
- <active>
- <colorrole role="WindowText">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>255</red>
- <green>255</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Button">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Base">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Window">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="AlternateBase">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- </active>
- <inactive>
- <colorrole role="WindowText">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>255</red>
- <green>255</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Button">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Base">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Window">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="AlternateBase">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- </inactive>
- <disabled>
- <colorrole role="WindowText">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>119</red>
- <green>119</green>
- <blue>119</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Button">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Base">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Window">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="AlternateBase">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </brush>
- </colorrole>
- </disabled>
- </palette>
- </property>
- <property name="font">
- <font>
- <family>Sans Serif</family>
- <pointsize>12</pointsize>
- </font>
- </property>
- <property name="autoFillBackground">
- <bool>true</bool>
- </property>
- <property name="text">
- <string>hello, world</string>
- </property>
- <property name="scaledContents">
- <bool>true</bool>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- <property name="wordWrap">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<gui name="privacybrowser"
+ version="1"
+ xmlns="http://www.kde.org/standards/kxmlgui/1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.kde.org/standards/kxmlgui/1.0
+ http://www.kde.org/standards/kxmlgui/1.0/kxmlgui.xsd">
+<MenuBar>
+ <Menu name="edit">
+ <Action name="switch_action"/>
+ </Menu>
+</MenuBar>
+
+<ToolBar name="mainToolBar" noMerge="1">
+ <text>Main Toolbar</text>
+ <Action name="switch_action"/>
+ <Separator/>
+ <Action name="options_configure"/>
+</ToolBar>
+</gui>
<!DOCTYPE RCC>
<RCC version="1.0">
<qresource>
- <file>icons/privacy_browser.svg</file>
+ <file>icons/sc-apps-privacy_browser.svg</file>
<file>licenses/GPLv3+.txt</file>
</qresource>
</RCC>