diff options
author | Florian Preinstorfer | 2016-05-03 20:04:58 +0200 |
---|---|---|
committer | Florian Preinstorfer | 2016-05-03 20:04:58 +0200 |
commit | 039b7fd8a8ea3205333a53726a1d7eeddbbff1f5 (patch) | |
tree | c4805b590f05a59e62b65daefec49f048698b3fe | |
parent | d883f2a5d169aea4b53bae26e7c5ae606be737e6 (diff) | |
download | aur-039b7fd8a8ea3205333a53726a1d7eeddbbff1f5.tar.gz |
Release 0.16.0502-2
-rw-r--r-- | .SRCINFO | 11 | ||||
-rw-r--r-- | 0001-Use-QStandardPaths-AppDataLocation-as-base-path.patch | 2 | ||||
-rw-r--r-- | 0002-Remove-autoupdater.patch | 2737 | ||||
-rw-r--r-- | PKGBUILD | 12 |
4 files changed, 2753 insertions, 9 deletions
@@ -1,9 +1,9 @@ # Generated by mksrcinfo v8 -# Mon May 2 20:40:38 UTC 2016 +# Tue May 3 18:04:29 UTC 2016 pkgbase = qrk pkgdesc = A cash register for small companies (mainly for Austrian companies) pkgver = 0.16.0502 - pkgrel = 1 + pkgrel = 2 url = http://www.ckvsoft.at/ arch = i686 arch = x86_64 @@ -14,12 +14,15 @@ pkgbase = qrk source = http://downloads.sourceforge.net/project/qrk-registrier-kasse/source/QRK_0.16.0502.source.tar.gz source = qrk.desktop source = 0001-Use-QStandardPaths-AppDataLocation-as-base-path.patch + source = 0002-Remove-autoupdater.patch md5sums = a784fe919008cd3dd2da61e3210c82ed md5sums = 52c990903894fdecd440e2e2914c2f09 - md5sums = 0b8144d154ae8e14ae8ffb99e2292867 + md5sums = 509dcbe51869181b8dfd9f3b5a754930 + md5sums = 94e130452ec5bbec65e04abe60a77c64 sha256sums = b7874437ed3ce655c0b548b484e28026acf5cb3ab5701553f3a598f99a37d459 sha256sums = f71882aea62bd7c07e4806f0223d1699170ac89d59036f5fd5add1004eb93cd0 - sha256sums = fa91ac9a0e11af077b5806d5c134b0117ca091cbddce5e972b36d5a604b0ad68 + sha256sums = f75d427a6d1969599a26a37e53b3c51a6fa43debf2eac135cc5e4dd71284aae3 + sha256sums = 9297a91e210349d92559efc8f74189542bb63773824252e6aee53be2eb3101f9 pkgname = qrk diff --git a/0001-Use-QStandardPaths-AppDataLocation-as-base-path.patch b/0001-Use-QStandardPaths-AppDataLocation-as-base-path.patch index 852c73ba327a..d8dbd0852654 100644 --- a/0001-Use-QStandardPaths-AppDataLocation-as-base-path.patch +++ b/0001-Use-QStandardPaths-AppDataLocation-as-base-path.patch @@ -1,7 +1,7 @@ From 3067930c16c28e5c3fd0e966990e5cfe92b16028 Mon Sep 17 00:00:00 2001 From: Florian Preinstorfer <nblock@archlinux.us> Date: Mon, 2 May 2016 22:18:17 +0200 -Subject: [PATCH] Use QStandardPaths::AppDataLocation as base path +Subject: [PATCH 1/2] Use QStandardPaths::AppDataLocation as base path --- src/backup.cpp | 9 +++++---- diff --git a/0002-Remove-autoupdater.patch b/0002-Remove-autoupdater.patch new file mode 100644 index 000000000000..e2ce784e85d7 --- /dev/null +++ b/0002-Remove-autoupdater.patch @@ -0,0 +1,2737 @@ +From 5c08272894f604d7c6ebc653fa2aac8de140635c Mon Sep 17 00:00:00 2001 +From: Florian Preinstorfer <nblock@archlinux.us> +Date: Tue, 3 May 2016 19:28:21 +0200 +Subject: [PATCH 2/2] Remove autoupdater + +--- + src/3rdparty/fervor-autoupdate/Fervor.pri | 57 -- + .../fervor-autoupdate/fvavailableupdate.cpp | 119 --- + src/3rdparty/fervor-autoupdate/fvavailableupdate.h | 73 -- + .../fervor-autoupdate/fvignoredversions.cpp | 96 --- + src/3rdparty/fervor-autoupdate/fvignoredversions.h | 41 - + src/3rdparty/fervor-autoupdate/fvplatform.cpp | 232 ----- + src/3rdparty/fervor-autoupdate/fvplatform.h | 40 - + .../fervor-autoupdate/fvupdatedownloadprogress.cpp | 48 -- + .../fervor-autoupdate/fvupdatedownloadprogress.h | 45 - + .../fervor-autoupdate/fvupdatedownloadprogress.ui | 103 --- + src/3rdparty/fervor-autoupdate/fvupdater.cpp | 929 --------------------- + src/3rdparty/fervor-autoupdate/fvupdater.h | 205 ----- + src/3rdparty/fervor-autoupdate/fvupdatewindow.cpp | 112 --- + src/3rdparty/fervor-autoupdate/fvupdatewindow.h | 59 -- + src/3rdparty/fervor-autoupdate/fvupdatewindow.ui | 137 --- + .../fervor-autoupdate/fvversioncomparator.cpp | 186 ----- + .../fervor-autoupdate/fvversioncomparator.h | 58 -- + src/main.cpp | 13 - + src/src.pro | 6 - + 19 files changed, 2559 deletions(-) + delete mode 100644 src/3rdparty/fervor-autoupdate/Fervor.pri + delete mode 100644 src/3rdparty/fervor-autoupdate/fvavailableupdate.cpp + delete mode 100644 src/3rdparty/fervor-autoupdate/fvavailableupdate.h + delete mode 100644 src/3rdparty/fervor-autoupdate/fvignoredversions.cpp + delete mode 100644 src/3rdparty/fervor-autoupdate/fvignoredversions.h + delete mode 100644 src/3rdparty/fervor-autoupdate/fvplatform.cpp + delete mode 100644 src/3rdparty/fervor-autoupdate/fvplatform.h + delete mode 100644 src/3rdparty/fervor-autoupdate/fvupdatedownloadprogress.cpp + delete mode 100644 src/3rdparty/fervor-autoupdate/fvupdatedownloadprogress.h + delete mode 100644 src/3rdparty/fervor-autoupdate/fvupdatedownloadprogress.ui + delete mode 100644 src/3rdparty/fervor-autoupdate/fvupdater.cpp + delete mode 100644 src/3rdparty/fervor-autoupdate/fvupdater.h + delete mode 100644 src/3rdparty/fervor-autoupdate/fvupdatewindow.cpp + delete mode 100644 src/3rdparty/fervor-autoupdate/fvupdatewindow.h + delete mode 100644 src/3rdparty/fervor-autoupdate/fvupdatewindow.ui + delete mode 100644 src/3rdparty/fervor-autoupdate/fvversioncomparator.cpp + delete mode 100644 src/3rdparty/fervor-autoupdate/fvversioncomparator.h + +diff --git a/src/3rdparty/fervor-autoupdate/Fervor.pri b/src/3rdparty/fervor-autoupdate/Fervor.pri +deleted file mode 100644 +index 9bbf7bb..0000000 +--- a/src/3rdparty/fervor-autoupdate/Fervor.pri ++++ /dev/null +@@ -1,57 +0,0 @@ +-# +-# This file is part of QRK - Qt Registrier Kasse +-# +-# Copyright (C) 2015-2016 Christian Kvasny <chris@ckvsoft.at> +-# +-# 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. +-# +-# 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 this program; if not, see <http://www.gnu.org/licenses/>. +-# +-# Button Design, and Idea for the Layout are lean out from LillePOS, Copyright 2010, Martin Koller, kollix@aon.at +-# +-# +- +-QT += core widgets network +-QT += gui +-DEFINES += FV_GUI +- +-win32:INCLUDEPATH += $$[QT_INSTALL_PREFIX]/include/QtZlib +- +-DEFINES += FV_APP_NAME=\\\"$$TARGET\\\" +-DEFINES += FV_APP_VERSION=\\\"$$VERSION\\\" +- +-DEPENDPATH += "$$PWD" +-INCLUDEPATH += "$$PWD" +-SOURCES += $$PWD/fvupdater.cpp \ +- $$PWD/fvversioncomparator.cpp \ +- $$PWD/fvplatform.cpp \ +- $$PWD/fvignoredversions.cpp \ +- $$PWD/fvavailableupdate.cpp +- +-HEADERS += $$PWD/fvupdater.h \ +- $$PWD/fvversioncomparator.h \ +- $$PWD/fvplatform.h \ +- $$PWD/fvignoredversions.h \ +- $$PWD/fvavailableupdate.h +- +- SOURCES += $$PWD/fvupdatewindow.cpp \ +- $$PWD/fvupdatedownloadprogress.cpp +- +- HEADERS += $$PWD/fvupdatewindow.h \ +- $$PWD/fvupdatedownloadprogress.h +- +- FORMS += $$PWD/fvupdatewindow.ui \ +- $$PWD/fvupdatedownloadprogress.ui +- +- +-TRANSLATIONS += fervor_lt.ts +-CODECFORTR = UTF-8 +diff --git a/src/3rdparty/fervor-autoupdate/fvavailableupdate.cpp b/src/3rdparty/fervor-autoupdate/fvavailableupdate.cpp +deleted file mode 100644 +index 201be91..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvavailableupdate.cpp ++++ /dev/null +@@ -1,119 +0,0 @@ +-/* +- * This file is part of QRK - Qt Registrier Kasse +- * +- * Copyright (C) 2015-2016 Christian Kvasny <chris@ckvsoft.at> +- * +- * 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. +- * +- * 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 this program; if not, see <http://www.gnu.org/licenses/>. +- * +- * Button Design, and Idea for the Layout are lean out from LillePOS, Copyright 2010, Martin Koller, kollix@aon.at +- * +-*/ +- +-#include "fvavailableupdate.h" +- +-FvAvailableUpdate::FvAvailableUpdate(QObject *parent) : +- QObject(parent) +-{ +- // noop +-} +- +-QString FvAvailableUpdate::GetTitle() +-{ +- return m_title; +-} +- +-void FvAvailableUpdate::SetTitle(QString title) +-{ +- m_title = title; +-} +- +-QUrl FvAvailableUpdate::GetReleaseNotesLink() +-{ +- return m_releaseNotesLink; +-} +- +-void FvAvailableUpdate::SetReleaseNotesLink(QUrl releaseNotesLink) +-{ +- m_releaseNotesLink = releaseNotesLink; +-} +- +-void FvAvailableUpdate::SetReleaseNotesLink(QString releaseNotesLink) +-{ +- SetReleaseNotesLink(QUrl(releaseNotesLink)); +-} +- +-QString FvAvailableUpdate::GetPubDate() +-{ +- return m_pubDate; +-} +- +-void FvAvailableUpdate::SetPubDate(QString pubDate) +-{ +- m_pubDate = pubDate; +-} +- +-QUrl FvAvailableUpdate::GetEnclosureUrl() +-{ +- return m_enclosureUrl; +-} +- +-void FvAvailableUpdate::SetEnclosureUrl(QUrl enclosureUrl) +-{ +- m_enclosureUrl = enclosureUrl; +-} +- +-void FvAvailableUpdate::SetEnclosureUrl(QString enclosureUrl) +-{ +- SetEnclosureUrl(QUrl(enclosureUrl)); +-} +- +-QString FvAvailableUpdate::GetEnclosureVersion() +-{ +- return m_enclosureVersion; +-} +- +-void FvAvailableUpdate::SetEnclosureVersion(QString enclosureVersion) +-{ +- m_enclosureVersion = enclosureVersion; +-} +- +-QString FvAvailableUpdate::GetEnclosurePlatform() +-{ +- return m_enclosurePlatform; +-} +- +-void FvAvailableUpdate::SetEnclosurePlatform(QString enclosurePlatform) +-{ +- m_enclosurePlatform = enclosurePlatform; +-} +- +-unsigned long FvAvailableUpdate::GetEnclosureLength() +-{ +- return m_enclosureLength; +-} +- +-void FvAvailableUpdate::SetEnclosureLength(unsigned long enclosureLength) +-{ +- m_enclosureLength = enclosureLength; +-} +- +-QString FvAvailableUpdate::GetEnclosureType() +-{ +- return m_enclosureType; +-} +- +-void FvAvailableUpdate::SetEnclosureType(QString enclosureType) +-{ +- m_enclosureType = enclosureType; +-} +diff --git a/src/3rdparty/fervor-autoupdate/fvavailableupdate.h b/src/3rdparty/fervor-autoupdate/fvavailableupdate.h +deleted file mode 100644 +index abdcc90..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvavailableupdate.h ++++ /dev/null +@@ -1,73 +0,0 @@ +-/* +- * This file is part of QRK - Qt Registrier Kasse +- * +- * Copyright (C) 2015-2016 Christian Kvasny <chris@ckvsoft.at> +- * +- * 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. +- * +- * 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 this program; if not, see <http://www.gnu.org/licenses/>. +- * +- * Button Design, and Idea for the Layout are lean out from LillePOS, Copyright 2010, Martin Koller, kollix@aon.at +- * +-*/ +- +-#ifndef FVAVAILABLEUPDATE_H +-#define FVAVAILABLEUPDATE_H +- +-#include <QObject> +-#include <QUrl> +- +-class FvAvailableUpdate : public QObject +-{ +- Q_OBJECT +-public: +- explicit FvAvailableUpdate(QObject *parent = 0); +- +- QString GetTitle(); +- void SetTitle(QString title); +- +- QUrl GetReleaseNotesLink(); +- void SetReleaseNotesLink(QUrl releaseNotesLink); +- void SetReleaseNotesLink(QString releaseNotesLink); +- +- QString GetPubDate(); +- void SetPubDate(QString pubDate); +- +- QUrl GetEnclosureUrl(); +- void SetEnclosureUrl(QUrl enclosureUrl); +- void SetEnclosureUrl(QString enclosureUrl); +- +- QString GetEnclosureVersion(); +- void SetEnclosureVersion(QString enclosureVersion); +- +- QString GetEnclosurePlatform(); +- void SetEnclosurePlatform(QString enclosurePlatform); +- +- unsigned long GetEnclosureLength(); +- void SetEnclosureLength(unsigned long enclosureLength); +- +- QString GetEnclosureType(); +- void SetEnclosureType(QString enclosureType); +- +-private: +- QString m_title; +- QUrl m_releaseNotesLink; +- QString m_pubDate; +- QUrl m_enclosureUrl; +- QString m_enclosureVersion; +- QString m_enclosurePlatform; +- unsigned long m_enclosureLength; +- QString m_enclosureType; +- +-}; +- +-#endif // FVAVAILABLEUPDATE_H +diff --git a/src/3rdparty/fervor-autoupdate/fvignoredversions.cpp b/src/3rdparty/fervor-autoupdate/fvignoredversions.cpp +deleted file mode 100644 +index 0219a0e..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvignoredversions.cpp ++++ /dev/null +@@ -1,96 +0,0 @@ +-/* +- * This file is part of QRK - Qt Registrier Kasse +- * +- * Copyright (C) 2015-2016 Christian Kvasny <chris@ckvsoft.at> +- * +- * 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. +- * +- * 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 this program; if not, see <http://www.gnu.org/licenses/>. +- * +- * Button Design, and Idea for the Layout are lean out from LillePOS, Copyright 2010, Martin Koller, kollix@aon.at +- * +-*/ +- +-#include "fvignoredversions.h" +-#include "fvversioncomparator.h" +-#include <QSettings> +-#include <QCoreApplication> +-#include <string> +- +-// QSettings key for the latest skipped version +-#define FV_IGNORED_VERSIONS_LATEST_SKIPPED_VERSION_KEY "FVLatestSkippedVersion" +- +- +-FVIgnoredVersions::FVIgnoredVersions(QObject *parent) : +-QObject(parent) +-{ +- // noop +-} +- +-bool FVIgnoredVersions::VersionIsIgnored(QString version) +-{ +- // We assume that variable 'version' contains either: +- // 1) The current version of the application (ignore) +- // 2) The version that was skipped before and thus stored in QSettings (ignore) +- // 3) A newer version (don't ignore) +- // 'version' is not likely to contain an older version in any case. +- +- if (version == QCoreApplication::applicationVersion()) { +- return true; +- } +- +- QSettings settings(QSettings::NativeFormat, +- QSettings::UserScope, +- QCoreApplication::organizationDomain(), +- QCoreApplication::applicationName()); +- +- //QSettings settings; +- if (settings.contains(FV_IGNORED_VERSIONS_LATEST_SKIPPED_VERSION_KEY)) { +- QString lastSkippedVersion = settings.value(FV_IGNORED_VERSIONS_LATEST_SKIPPED_VERSION_KEY).toString(); +- if (version == lastSkippedVersion) { +- // Implicitly skipped version - skip +- return true; +- } +- } +- +- std::string currentAppVersion = QCoreApplication::applicationVersion().toStdString(); +- std::string suggestedVersion = std::string(version.toStdString()); +- if (FvVersionComparator::CompareVersions(currentAppVersion, suggestedVersion) == FvVersionComparator::kAscending) { +- // Newer version - do not skip +- return false; +- } +- +- // Fallback - skip +- return true; +-} +- +-void FVIgnoredVersions::IgnoreVersion(QString version) +-{ +- if (version == QCoreApplication::applicationVersion()) { +- // Don't ignore the current version +- return; +- } +- +- if (version.isEmpty()) { +- return; +- } +- +- QSettings settings(QSettings::NativeFormat, +- QSettings::UserScope, +- QCoreApplication::organizationDomain(), +- QCoreApplication::applicationName()); +- +- +- settings.setValue(FV_IGNORED_VERSIONS_LATEST_SKIPPED_VERSION_KEY, version); +- +- return; +-} +diff --git a/src/3rdparty/fervor-autoupdate/fvignoredversions.h b/src/3rdparty/fervor-autoupdate/fvignoredversions.h +deleted file mode 100644 +index e7c37a8..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvignoredversions.h ++++ /dev/null +@@ -1,41 +0,0 @@ +-/* +- * This file is part of QRK - Qt Registrier Kasse +- * +- * Copyright (C) 2015-2016 Christian Kvasny <chris@ckvsoft.at> +- * +- * 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. +- * +- * 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 this program; if not, see <http://www.gnu.org/licenses/>. +- * +- * Button Design, and Idea for the Layout are lean out from LillePOS, Copyright 2010, Martin Koller, kollix@aon.at +- * +-*/ +- +-#ifndef FVIGNOREDVERSIONS_H +-#define FVIGNOREDVERSIONS_H +- +-#include <QObject> +- +-class FVIgnoredVersions : public QObject +-{ +- Q_OBJECT +- +-public: +- static bool VersionIsIgnored(QString version); +- static void IgnoreVersion(QString version); +- +-private: +- explicit FVIgnoredVersions(QObject *parent = 0); +- +-}; +- +-#endif // FVIGNOREDVERSIONS_H +diff --git a/src/3rdparty/fervor-autoupdate/fvplatform.cpp b/src/3rdparty/fervor-autoupdate/fvplatform.cpp +deleted file mode 100644 +index cb383e5..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvplatform.cpp ++++ /dev/null +@@ -1,232 +0,0 @@ +-/* +- * This file is part of QRK - Qt Registrier Kasse +- * +- * Copyright (C) 2015-2016 Christian Kvasny <chris@ckvsoft.at> +- * +- * 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. +- * +- * 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 this program; if not, see <http://www.gnu.org/licenses/>. +- * +- * Button Design, and Idea for the Layout are lean out from LillePOS, Copyright 2010, Martin Koller, kollix@aon.at +- * +-*/ +- +-#include "fvplatform.h" +-#include <QtGlobal> +-#include <QDebug> +- +-FvPlatform::FvPlatform(QObject *parent) : +- QObject(parent) +-{ +- // noop +-} +- +-bool FvPlatform::CurrentlyRunningOnPlatform(QString platform) +-{ +- platform = platform.toUpper().trimmed(); +- if (platform.isEmpty()) { +- return false; +- } +- +- // Defined on AIX. +-#ifdef Q_OS_AIX +- if (platform == "Q_OS_AIX") { +- return true; +- } +-#endif +- +- // Q_OS_BSD4 ("Defined on Any BSD 4.4 system") intentionally skipped. +- +- // Defined on BSD/OS. +-#ifdef Q_OS_BSDI +- if (platform == "Q_OS_BSDI") { +- return true; +- } +-#endif +- +- // Defined on Cygwin. +-#ifdef Q_OS_CYGWIN +- if (platform == "Q_OS_CYGWIN") { +- return true; +- } +-#endif +- +- // Q_OS_DARWIN ("Defined on Darwin OS (synonym for Q_OS_MAC)") intentionally skipped. +- +- // Defined on DG/UX. +-#ifdef Q_OS_DGUX +- if (platform == "Q_OS_DGUX") { +- return true; +- } +-#endif +- +- // Defined on DYNIX/ptx. +-#ifdef Q_OS_DYNIX +- if (platform == "Q_OS_DYNIX") { +- return true; +- } +-#endif +- +- // Defined on FreeBSD. +-#ifdef Q_OS_FREEBSD +- if (platform == "Q_OS_FREEBSD") { +- return true; +- } +-#endif +- +- // Defined on HP-UX. +-#ifdef Q_OS_HPUX +- if (platform == "Q_OS_HPUX") { +- return true; +- } +-#endif +- +- // Defined on GNU Hurd. +-#ifdef Q_OS_HURD +- if (platform == "Q_OS_HURD") { +- return true; +- } +-#endif +- +- // Defined on SGI Irix. +-#ifdef Q_OS_IRIX +- if (platform == "Q_OS_IRIX") { +- return true; +- } +-#endif +- +- // Defined on Linux. +-#ifdef Q_OS_LINUX +- if (platform == "Q_OS_LINUX") { +- return true; +- } +-#endif +- +- // Defined on LynxOS. +-#ifdef Q_OS_LYNX +- if (platform == "Q_OS_LYNX") { +- return true; +- } +-#endif +- +- // Defined on MAC OS (synonym for Darwin). +-#ifdef Q_OS_MAC +- if (platform == "Q_OS_MAC") { +- return true; +- } +-#endif +- +- // Q_OS_MSDOS ("Defined on MS-DOS and Windows") intentionally skipped. +- +- // Defined on NetBSD. +-#ifdef Q_OS_NETBSD +- if (platform == "Q_OS_NETBSD") { +- return true; +- } +-#endif +- +- // Defined on OS/2. +-#ifdef Q_OS_OS2 +- if (platform == "Q_OS_OS2") { +- return true; +- } +-#endif +- +- // Defined on OpenBSD. +-#ifdef Q_OS_OPENBSD +- if (platform == "Q_OS_OPENBSD") { +- return true; +- } +-#endif +- +- // Defined on XFree86 on OS/2 (not PM). +-#ifdef Q_OS_OS2EMX +- if (platform == "Q_OS_OS2EMX") { +- return true; +- } +-#endif +- +- // Defined on HP Tru64 UNIX. +-#ifdef Q_OS_OSF +- if (platform == "Q_OS_OSF") { +- return true; +- } +-#endif +- +- // Defined on QNX Neutrino. +-#ifdef Q_OS_QNX +- if (platform == "Q_OS_QNX") { +- return true; +- } +-#endif +- +- // Defined on Reliant UNIX. +-#ifdef Q_OS_RELIANT +- if (platform == "Q_OS_RELIANT") { +- return true; +- } +-#endif +- +- // Defined on SCO OpenServer 5. +-#ifdef Q_OS_SCO +- if (platform == "Q_OS_SCO") { +- return true; +- } +-#endif +- +- // Defined on Sun Solaris. +-#ifdef Q_OS_SOLARIS +- if (platform == "Q_OS_SOLARIS") { +- return true; +- } +-#endif +- +- // Defined on Symbian. +-#ifdef Q_OS_SYMBIAN +- if (platform == "Q_OS_SYMBIAN") { +- return true; +- } +-#endif +- +- // Defined on DEC Ultrix. +-#ifdef Q_OS_ULTRIX +- if (platform == "Q_OS_ULTRIX") { +- return true; +- } +-#endif +- +- // Q_OS_UNIX ("Defined on Any UNIX BSD/SYSV system") intentionally skipped. +- +- // Defined on UnixWare 7, Open UNIX 8. +-#ifdef Q_OS_UNIXWARE +- if (platform == "Q_OS_UNIXWARE") { +- return true; +- } +-#endif +- +- // Defined on Windows CE (note: goes before Q_OS_WIN32) +-#ifdef Q_OS_WINCE +- if (platform == "Q_OS_WINCE") { +- return true; +- } +-#endif +- +- // Defined on all supported versions of Windows. +-#ifdef Q_OS_WIN32 +- if (platform == "Q_OS_WIN32") { +- return true; +- } +-#endif +- +- // Fallback +- return false; +-} +diff --git a/src/3rdparty/fervor-autoupdate/fvplatform.h b/src/3rdparty/fervor-autoupdate/fvplatform.h +deleted file mode 100644 +index ab1b878..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvplatform.h ++++ /dev/null +@@ -1,40 +0,0 @@ +-/* +- * This file is part of QRK - Qt Registrier Kasse +- * +- * Copyright (C) 2015-2016 Christian Kvasny <chris@ckvsoft.at> +- * +- * 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. +- * +- * 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 this program; if not, see <http://www.gnu.org/licenses/>. +- * +- * Button Design, and Idea for the Layout are lean out from LillePOS, Copyright 2010, Martin Koller, kollix@aon.at +- * +-*/ +- +-#ifndef FVPLATFORM_H +-#define FVPLATFORM_H +- +-#include <QObject> +- +-class FvPlatform : public QObject +-{ +- Q_OBJECT +- +-public: +- static bool CurrentlyRunningOnPlatform(QString platform); +- +-private: +- explicit FvPlatform(QObject *parent = 0); +- +-}; +- +-#endif // FVPLATFORM_H +diff --git a/src/3rdparty/fervor-autoupdate/fvupdatedownloadprogress.cpp b/src/3rdparty/fervor-autoupdate/fvupdatedownloadprogress.cpp +deleted file mode 100644 +index 92dead0..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvupdatedownloadprogress.cpp ++++ /dev/null +@@ -1,48 +0,0 @@ +-/* +- * This file is part of QRK - Qt Registrier Kasse +- * +- * Copyright (C) 2015-2016 Christian Kvasny <chris@ckvsoft.at> +- * +- * 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. +- * +- * 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 this program; if not, see <http://www.gnu.org/licenses/>. +- * +- * Button Design, and Idea for the Layout are lean out from LillePOS, Copyright 2010, Martin Koller, kollix@aon.at +- * +-*/ +- +-#include "fvupdatedownloadprogress.h" +- +-FvUpdateDownloadProgress::FvUpdateDownloadProgress(QWidget *parent) +- : QWidget(parent, Qt::SplashScreen) +-{ +- ui.setupUi(this); +- +- ui.progress->setValue(0); +- +-} +- +-FvUpdateDownloadProgress::~FvUpdateDownloadProgress() +-{ +- +-} +- +-void FvUpdateDownloadProgress::downloadProgress ( qint64 bytesReceived, qint64 bytesTotal ) +-{ +- ui.progress->setValue( ((float)bytesReceived / (float)bytesTotal) * 100 ); +-} +- +-void FvUpdateDownloadProgress::close() +-{ +- this->deleteLater(); +- QWidget::close(); +-} +diff --git a/src/3rdparty/fervor-autoupdate/fvupdatedownloadprogress.h b/src/3rdparty/fervor-autoupdate/fvupdatedownloadprogress.h +deleted file mode 100644 +index 061e268..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvupdatedownloadprogress.h ++++ /dev/null +@@ -1,45 +0,0 @@ +-/* +- * This file is part of QRK - Qt Registrier Kasse +- * +- * Copyright (C) 2015-2016 Christian Kvasny <chris@ckvsoft.at> +- * +- * 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. +- * +- * 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 this program; if not, see <http://www.gnu.org/licenses/>. +- * +- * Button Design, and Idea for the Layout are lean out from LillePOS, Copyright 2010, Martin Koller, kollix@aon.at +- * +-*/ +- +-#ifndef FVUPDATEDOWNLOADPROGRESS_H +-#define FVUPDATEDOWNLOADPROGRESS_H +- +-#include <QWidget> +-#include "ui_fvupdatedownloadprogress.h" +- +-class FvUpdateDownloadProgress : public QWidget +-{ +- Q_OBJECT +- +-public: +- FvUpdateDownloadProgress(QWidget *parent = 0); +- ~FvUpdateDownloadProgress(); +- +-public slots: +- void downloadProgress ( qint64 bytesReceived, qint64 bytesTotal ); +- void close(); +- +-private: +- Ui::FvUpdateDownloadProgress ui; +-}; +- +-#endif // FVUPDATEDOWNLOADPROGRESS_H +diff --git a/src/3rdparty/fervor-autoupdate/fvupdatedownloadprogress.ui b/src/3rdparty/fervor-autoupdate/fvupdatedownloadprogress.ui +deleted file mode 100644 +index c84af0a..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvupdatedownloadprogress.ui ++++ /dev/null +@@ -1,103 +0,0 @@ +-<?xml version="1.0" encoding="UTF-8"?> +-<ui version="4.0"> +- <class>FvUpdateDownloadProgress</class> +- <widget class="QWidget" name="FvUpdateDownloadProgress"> +- <property name="windowModality"> +- <enum>Qt::ApplicationModal</enum> +- </property> +- <property name="geometry"> +- <rect> +- <x>0</x> +- <y>0</y> +- <width>558</width> +- <height>70</height> +- </rect> +- </property> +- <property name="sizePolicy"> +- <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> +- <horstretch>0</horstretch> +- <verstretch>0</verstretch> +- </sizepolicy> +- </property> +- <property name="windowTitle"> +- <string>FvUpdateDownloadProgress</string> +- </property> +- <layout class="QGridLayout" name="gridLayout"> +- <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> +- <property name="spacing"> +- <number>0</number> +- </property> +- <item row="0" column="0"> +- <widget class="QFrame" name="frame"> +- <property name="frameShape"> +- <enum>QFrame::WinPanel</enum> +- </property> +- <property name="frameShadow"> +- <enum>QFrame::Raised</enum> +- </property> +- <layout class="QVBoxLayout" name="verticalLayout"> +- <property name="spacing"> +- <number>8</number> +- </property> +- <item> +- <widget class="QLabel" name="label"> +- <property name="font"> +- <font> +- <pointsize>12</pointsize> +- </font> +- </property> +- <property name="layoutDirection"> +- <enum>Qt::LeftToRight</enum> +- </property> +- <property name="frameShape"> +- <enum>QFrame::NoFrame</enum> +- </property> +- <property name="frameShadow"> +- <enum>QFrame::Plain</enum> +- </property> +- <property name="text"> +- <string>Download der Update-Datei...</string> +- </property> +- <property name="alignment"> +- <set>Qt::AlignCenter</set> +- </property> +- </widget> +- </item> +- <item> +- <widget class="QProgressBar" name="progress"> +- <property name="font"> +- <font> +- <pointsize>8</pointsize> +- </font> +- </property> +- <property name="value"> +- <number>24</number> +- </property> +- <property name="textVisible"> +- <bool>false</bool> +- </property> +- <property name="invertedAppearance"> +- <bool>false</bool> +- </property> +- </widget> +- </item> +- </layout> +- </widget> +- </item> +- </layout> +- </widget> +- <layoutdefault spacing="6" margin="11"/> +- <resources/> +- <connections/> +-</ui> +diff --git a/src/3rdparty/fervor-autoupdate/fvupdater.cpp b/src/3rdparty/fervor-autoupdate/fvupdater.cpp +deleted file mode 100644 +index 319c825..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvupdater.cpp ++++ /dev/null +@@ -1,929 +0,0 @@ +-/* +- * This file is part of QRK - Qt Registrier Kasse +- * +- * Copyright (C) 2015-2016 Christian Kvasny <chris@ckvsoft.at> +- * +- * 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. +- * +- * 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 this program; if not, see <http://www.gnu.org/licenses/>. +- * +- * Button Design, and Idea for the Layout are lean out from LillePOS, Copyright 2010, Martin Koller, kollix@aon.at +- * +-*/ +- +-#include "fvupdater.h" +-#include "fvplatform.h" +-#include "fvignoredversions.h" +-#include "fvavailableupdate.h" +-#include <QApplication> +-#include <QtNetwork> +-#include <QDebug> +-#include <QSettings> +-#include "quazip.h" +-#include "quazipfile.h" +- +-#ifdef Q_WS_MAC +-#include "CoreFoundation/CoreFoundation.h" +-#endif +- +-#ifdef FV_GUI +-#include "fvupdatewindow.h" +-#include "fvupdatedownloadprogress.h" +-#include <QMessageBox> +-#include <QDesktopServices> +-#else +-// QSettings key for automatic update installation +-#define FV_NEW_VERSION_POLICY_KEY "FVNewVersionPolicy" +-#endif +- +- +-#ifdef FV_DEBUG +-// Unit tests +-# include "fvversioncomparatortest.h" +-#endif +- +-extern QSettings* settings; +- +-FvUpdater* FvUpdater::m_Instance = 0; +- +-FvUpdater* FvUpdater::sharedUpdater() +-{ +- static QMutex mutex; +- if (! m_Instance) { +- mutex.lock(); +- +- if (! m_Instance) { +- m_Instance = new FvUpdater; +- } +- +- mutex.unlock(); +- } +- +- return m_Instance; +-} +- +-void FvUpdater::drop() +-{ +- static QMutex mutex; +- mutex.lock(); +- delete m_Instance; +- m_Instance = 0; +- mutex.unlock(); +-} +- +-FvUpdater::FvUpdater() : QObject(0) +-{ +- m_reply = 0; +-#ifdef FV_GUI +- m_updaterWindow = 0; +-#endif +- m_proposedUpdate = 0; +- m_requiredSslFingerprint = ""; +- htAuthUsername = ""; +- htAuthPassword = ""; +- skipVersionAllowed = true; +- remindLaterAllowed = true; +- +- connect(&m_qnam, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)),this, SLOT(authenticationRequired(QNetworkReply*, QAuthenticator*))); +- +- // Translation mechanism +- installTranslator(); +- +-#ifdef FV_DEBUG +- // Unit tests +- FvVersionComparatorTest* test = new FvVersionComparatorTest(); +- test->runAll(); +- delete test; +-#endif +- +-} +- +-FvUpdater::~FvUpdater() +-{ +- if (m_proposedUpdate) { +- delete m_proposedUpdate; +- m_proposedUpdate = 0; +- } +- +-#ifdef FV_GUI +- hideUpdaterWindow(); +-#endif +-} +- +-void FvUpdater::installTranslator() +-{ +- QTranslator translator; +- QString locale = QLocale::system().name(); +- translator.load(QString("fervor_") + locale); +- +-#if QT_VERSION < 0x050000 +- QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8")); +-#endif +- +- qApp->installTranslator(&translator); +-} +- +-#ifdef FV_GUI +-void FvUpdater::showUpdaterWindowUpdatedWithCurrentUpdateProposal() +-{ +- // Destroy window if already exists +- hideUpdaterWindow(); +- +- // Create a new window +- m_updaterWindow = new FvUpdateWindow(NULL, skipVersionAllowed, remindLaterAllowed); +- m_updaterWindow->UpdateWindowWithCurrentProposedUpdate(); +- m_updaterWindow->show(); +-} +- +-void FvUpdater::hideUpdaterWindow() +-{ +- if (m_updaterWindow) { +- if (! m_updaterWindow->close()) { +- qWarning() << "Update window didn't close, leaking memory from now on"; +- } +- +- // not deleting because of Qt::WA_DeleteOnClose +- +- m_updaterWindow = 0; +- } +-} +- +-void FvUpdater::updaterWindowWasClosed() +-{ +- // (Re-)nullify a pointer to a destroyed QWidget or you're going to have a bad time. +- m_updaterWindow = 0; +-} +-#endif +- +-void FvUpdater::SetFeedURL(QUrl feedURL) +-{ +- m_feedURL = feedURL; +-} +- +-void FvUpdater::SetFeedURL(QString feedURL) +-{ +- SetFeedURL(QUrl(feedURL)); +-} +- +-QString FvUpdater::GetFeedURL() +-{ +- return m_feedURL.toString(); +-} +- +-FvAvailableUpdate* FvUpdater::GetProposedUpdate() +-{ +- return m_proposedUpdate; +-} +- +- +-void FvUpdater::InstallUpdate() +-{ +- if(m_proposedUpdate==NULL) +- { +- qWarning() << "Abort Update: No update prososed! This should not happen."; +- return; +- } +- +- // Prepare download +- QUrl url = m_proposedUpdate->GetEnclosureUrl(); +- +- // Check SSL Fingerprint if required +- if(url.scheme()=="https" && !m_requiredSslFingerprint.isEmpty()) +- if( !checkSslFingerPrint(url) ) // check failed +- { +- qWarning() << "Update aborted."; +- return; +- } +- +- // Start Download +- QNetworkReply* reply = m_qnam.get(QNetworkRequest(url)); +- connect(reply, SIGNAL(finished()), this, SLOT(httpUpdateDownloadFinished())); +- +- // Maybe Check request 's return value +- if (reply->error() != QNetworkReply::NoError) +- { +- qDebug()<<"Unable to download the update: "<<reply->errorString(); +- return; +- } +- else +- qDebug()<<"OK"; +- +- // Show download Window +-#ifdef FV_GUI +- FvUpdateDownloadProgress* dlwindow = new FvUpdateDownloadProgress(NULL); +- connect(reply, SIGNAL(downloadProgress(qint64, qint64)), dlwindow, SLOT(downloadProgress(qint64, qint64) )); +- connect(&m_qnam, SIGNAL(finished(QNetworkReply*)), dlwindow, SLOT(close())); +- dlwindow->show(); +-#endif +- +- emit (updatedFinishedSuccessfully()); +- +-#ifdef FV_GUI +- hideUpdaterWindow(); +-#endif +-} +- +-void FvUpdater::httpUpdateDownloadFinished() +-{ +- QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender()); +- if(reply==NULL) +- { +- qWarning()<<"The slot httpUpdateDownloadFinished() should only be invoked by S&S."; +- return; +- } +- +- if(reply->error() == QNetworkReply::NoError) +- { +- int httpstatuscode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toUInt(); +- +- // no error received? +- if (reply->error() == QNetworkReply::NoError) +- { +- if (reply->isReadable()) +- { +-#ifdef Q_WS_MAC +- CFURLRef appURLRef = CFBundleCopyBundleURL(CFBundleGetMainBundle()); +- char path[PATH_MAX]; +- if (!CFURLGetFileSystemRepresentation(appURLRef, TRUE, (UInt8 *)path, PATH_MAX)) { +- // error! +- } +- +- CFRelease(appURLRef); +- QString filePath = QString(path); +- QString rootDirectory = filePath.left(filePath.lastIndexOf("/")); +-#else +- QString rootDirectory = QCoreApplication::applicationDirPath() + "/"; +-#endif +- +- // Write download into File +- QFileInfo fileInfo=reply->url().path(); +- QString fileName = rootDirectory + fileInfo.fileName(); +- //qDebug()<<"Writing downloaded file into "<<fileName; +- +- QFile file(fileName); +- file.open(QIODevice::WriteOnly); +- file.write(reply->readAll()); +- file.close(); +- +- // Retrieve List of updated files (Placed in an extra scope to avoid QuaZIP handles the archive permanently and thus avoids the deletion.) +- { +- QuaZip zip(fileName); +- if (!zip.open(QuaZip::mdUnzip)) { +- qWarning("testRead(): zip.open(): %d", zip.getZipError()); +- return; +- } +- zip.setFileNameCodec("IBM866"); +- QList<QuaZipFileInfo> updateFiles = zip.getFileInfoList(); +- +- // Rename all current files with available update. +- for (int i=0;i<updateFiles.size();i++) +- { +- QString sourceFilePath = rootDirectory + "\\" + updateFiles[i].name; +- QDir appDir( QCoreApplication::applicationDirPath() ); +- +- QFileInfo file( sourceFilePath ); +- if(file.exists()) +- { +- //qDebug()<<tr("Moving file %1 to %2").arg(sourceFilePath).arg(sourceFilePath+".oldversion"); +- appDir.rename( sourceFilePath, sourceFilePath+".oldversion" ); +- } +- } +- } +- +- // Install updated Files +- unzipUpdate(fileName, rootDirectory); +- +- // Delete update archive +- while(QFile::remove(fileName) ) +- { +- }; +- +- // Restart ap to clean up and start usual business +- restartApplication(); +- +- } +- else qDebug()<<"Error: QNetworkReply is not readable!"; +- } +- else +- { +- qDebug()<<"Download errors ocurred! HTTP Error Code:"<<httpstatuscode; +- } +- +- reply->deleteLater(); +- } // If !reply->error END +-} // httpUpdateDownloadFinished END +- +-bool FvUpdater::unzipUpdate(const QString & filePath, const QString & extDirPath, const QString & singleFileName ) +-{ +- QuaZip zip(filePath); +- +- if (!zip.open(QuaZip::mdUnzip)) { +- qWarning()<<tr("Error: Unable to open zip archive %1 for unzipping: %2").arg(filePath).arg(zip.getZipError()); +- return false; +- } +- +- zip.setFileNameCodec("IBM866"); +- +- //qWarning("Update contains %d files\n", zip.getEntriesCount()); +- +- QuaZipFileInfo info; +- QuaZipFile file(&zip); +- QFile out; +- QString name; +- QDir appDir(extDirPath); +- for (bool more = zip.goToFirstFile(); more; more = zip.goToNextFile()) +- { +- if (!zip.getCurrentFileInfo(&info)) { +- qWarning()<<tr("Error: Unable to retrieve fileInfo about the file to extract: %2").arg(zip.getZipError()); +- return false; +- } +- +- if (!singleFileName.isEmpty()) +- if (!info.name.contains(singleFileName)) +- continue; +- +- if (!file.open(QIODevice::ReadOnly)) { +- qWarning()<<tr("Error: Unable to open file %1 for unzipping: %2").arg(filePath).arg(file.getZipError()); +- return false; +- } +- +- name = QString("%1/%2").arg(extDirPath).arg(file.getActualFileName()); +- +- if (file.getZipError() != UNZ_OK) { +- qWarning()<<tr("Error: Unable to retrieve zipped filename to unzip from %1: %2").arg(filePath).arg(file.getZipError()); +- return false; +- } +- +- QFileInfo fi(name); +- appDir.mkpath(fi.absolutePath() ); // Ensure that subdirectories - if required - exist +- out.setFileName(name); +- out.open(QIODevice::WriteOnly); +- out.write( file.readAll() ); +- out.close(); +- +- if (file.getZipError() != UNZ_OK) { +- qWarning()<<tr("Error: Unable to unzip file %1: %2").arg(name).arg(file.getZipError()); +- return false; +- } +- +- if (!file.atEnd()) { +- qWarning()<<tr("Error: Have read all available bytes, but pointer still does not show EOF: %1").arg(file.getZipError()); +- return false; +- } +- +- file.close(); +- +- if (file.getZipError() != UNZ_OK) { +- qWarning()<<tr("Error: Unable to close zipped file %1: %2").arg(name).arg(file.getZipError()); +- return false; +- } +- } +- +- zip.close(); +- +- if (zip.getZipError() != UNZ_OK) { +- qWarning()<<tr("Error: Unable to close zip archive file %1: %2").arg(filePath).arg(file.getZipError()); +- return false; +- } +- +- return true; +-} +- +- +-void FvUpdater::SkipUpdate() +-{ +- qDebug() << "Skip update"; +- +- FvAvailableUpdate* proposedUpdate = GetProposedUpdate(); +- if (! proposedUpdate) { +- qWarning() << "Proposed update is NULL (shouldn't be at this point)"; +- return; +- } +- +- // Start ignoring this particular version +- FVIgnoredVersions::IgnoreVersion(proposedUpdate->GetEnclosureVersion()); +- +-#ifdef FV_GUI +- hideUpdaterWindow(); +-#endif +-} +- +-void FvUpdater::RemindMeLater() +-{ +- //qDebug() << "Remind me later"; +- +-#ifdef FV_GUI +- hideUpdaterWindow(); +-#endif +-} +- +-bool FvUpdater::CheckForUpdates(bool silentAsMuchAsItCouldGet) +-{ +- if (m_feedURL.isEmpty()) { +- qCritical() << "Please set feed URL via setFeedURL() before calling CheckForUpdates()."; +- return false; +- } +- +- m_silentAsMuchAsItCouldGet = silentAsMuchAsItCouldGet; +- +- // Check if application's organization name and domain are set, fail otherwise +- // (nowhere to store QSettings to) +- if (QCoreApplication::organizationName().isEmpty()) { +- qCritical() << "QCoreApplication::organizationName is not set. Please do that."; +- return false; +- } +- if (QCoreApplication::organizationDomain().isEmpty()) { +- qCritical() << "QCoreApplication::organizationDomain is not set. Please do that."; +- return false; +- } +- +- if(QCoreApplication::applicationName().isEmpty()) { +- qCritical() << "QCoreApplication::applicationName is not set. Please do that."; +- return false; +- } +- +- // Set application version is not set yet +- if (QCoreApplication::applicationVersion().isEmpty()) { +- qCritical() << "QCoreApplication::applicationVersion is not set. Please do that."; +- return false; +- } +- +- cancelDownloadFeed(); +- m_httpRequestAborted = false; +- startDownloadFeed(m_feedURL); +- +- return true; +-} +- +-bool FvUpdater::CheckForUpdatesSilent() +-{ +- return CheckForUpdates(true); +-} +- +-bool FvUpdater::CheckForUpdatesNotSilent() +-{ +- return CheckForUpdates(false); +-} +- +- +-void FvUpdater::startDownloadFeed(QUrl url) +-{ +- m_xml.clear(); +- +- // Check SSL Fingerprint if required +- if(url.scheme()=="https" && !m_requiredSslFingerprint.isEmpty()) +- if( !checkSslFingerPrint(url) ) // check failed +- { +- qWarning() << "Update aborted."; +- return; +- } +- +- +- m_reply = m_qnam.get(QNetworkRequest(url)); +- +- connect(m_reply, SIGNAL(readyRead()), this, SLOT(httpFeedReadyRead())); +- connect(m_reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(httpFeedUpdateDataReadProgress(qint64, qint64))); +- connect(m_reply, SIGNAL(finished()), this, SLOT(httpFeedDownloadFinished())); +-} +- +-void FvUpdater::cancelDownloadFeed() +-{ +- if (m_reply) { +- m_httpRequestAborted = true; +- m_reply->abort(); +- } +-} +- +-void FvUpdater::httpFeedReadyRead() +-{ +- // this slot gets called every time the QNetworkReply has new data. +- // We read all of its new data and write it into the file. +- // That way we use less RAM than when reading it at the finished() +- // signal of the QNetworkReply +- m_xml.addData(m_reply->readAll()); +-} +- +-void FvUpdater::httpFeedUpdateDataReadProgress(qint64 bytesRead, +- qint64 totalBytes) +-{ +- Q_UNUSED(bytesRead); +- Q_UNUSED(totalBytes); +- +- if (m_httpRequestAborted) { +- return; +- } +-} +- +-void FvUpdater::httpFeedDownloadFinished() +-{ +- if (m_httpRequestAborted) { +- m_reply->deleteLater(); +- return; +- } +- +- QVariant redirectionTarget = m_reply->attribute(QNetworkRequest::RedirectionTargetAttribute); +- if (m_reply->error()) { +- +- // Error. +- showErrorDialog(tr("Feed download failed: %1.").arg(m_reply->errorString()), false); +- +- } else if (! redirectionTarget.isNull()) { +- QUrl newUrl = m_feedURL.resolved(redirectionTarget.toUrl()); +- +- m_feedURL = newUrl; +- m_reply->deleteLater(); +- +- startDownloadFeed(m_feedURL); +- return; +- +- } else { +- +- // Done. +- xmlParseFeed(); +- +- } +- +- m_reply->deleteLater(); +- m_reply = 0; +-} +- +-bool FvUpdater::xmlParseFeed() +-{ +- QString currentTag, currentQualifiedTag; +- +- QString xmlTitle, xmlLink, xmlReleaseNotesLink, xmlPubDate, xmlEnclosureUrl, +- xmlEnclosureVersion, xmlEnclosurePlatform, xmlEnclosureType; +- unsigned long xmlEnclosureLength; +- +- // Parse +- while (! m_xml.atEnd()) { +- +- m_xml.readNext(); +- +- if (m_xml.isStartElement()) { +- +- currentTag = m_xml.name().toString(); +- currentQualifiedTag = m_xml.qualifiedName().toString(); +- +- if (m_xml.name() == "item") { +- +- xmlTitle.clear(); +- xmlLink.clear(); +- xmlReleaseNotesLink.clear(); +- xmlPubDate.clear(); +- xmlEnclosureUrl.clear(); +- xmlEnclosureVersion.clear(); +- xmlEnclosurePlatform.clear(); +- xmlEnclosureLength = 0; +- xmlEnclosureType.clear(); +- +- } else if (m_xml.name() == "enclosure") { +- +- QXmlStreamAttributes attribs = m_xml.attributes(); +- +- if (attribs.hasAttribute("fervor:platform")) +- { +- xmlEnclosurePlatform = attribs.value("fervor:platform").toString().trimmed(); +- +- if (FvPlatform::CurrentlyRunningOnPlatform(xmlEnclosurePlatform)) +- { +- xmlEnclosureUrl = attribs.hasAttribute("url") ? attribs.value("url").toString().trimmed() : ""; +- +- xmlEnclosureVersion = ""; +- if (attribs.hasAttribute("fervor:version")) +- xmlEnclosureVersion = attribs.value("fervor:version").toString().trimmed(); +- if (attribs.hasAttribute("sparkle:version")) +- xmlEnclosureVersion = attribs.value("sparkle:version").toString().trimmed(); +- +- xmlEnclosureLength = attribs.hasAttribute("length") ? attribs.value("length").toString().toLong() : 0; +- +- xmlEnclosureType = attribs.hasAttribute("type") ? attribs.value("type").toString().trimmed() : ""; +- } +- +- } // if hasAttribute flevor:platform END +- +- } // IF encosure END +- +- } else if (m_xml.isEndElement()) { +- +- if (m_xml.name() == "item") { +- +- // That's it - we have analyzed a single <item> and we'll stop +- // here (because the topmost is the most recent one, and thus +- // the newest version. +- +- return searchDownloadedFeedForUpdates(xmlTitle, +- xmlLink, +- xmlReleaseNotesLink, +- xmlPubDate, +- xmlEnclosureUrl, +- xmlEnclosureVersion, +- xmlEnclosurePlatform, +- xmlEnclosureLength, +- xmlEnclosureType); +- +- } +- +- } else if (m_xml.isCharacters() && ! m_xml.isWhitespace()) { +- +- if (currentTag == "title") { +- xmlTitle += m_xml.text().toString().trimmed(); +- +- } else if (currentTag == "link") { +- xmlLink += m_xml.text().toString().trimmed(); +- +- } else if (currentQualifiedTag == "sparkle:releaseNotesLink") { +- xmlReleaseNotesLink += m_xml.text().toString().trimmed(); +- +- } else if (currentTag == "pubDate") { +- xmlPubDate += m_xml.text().toString().trimmed(); +- +- } +- +- } +- +- if (m_xml.error() && m_xml.error() != QXmlStreamReader::PrematureEndOfDocumentError) { +- +- showErrorDialog(tr("Feed parsing failed: %1 %2.").arg(QString::number(m_xml.lineNumber()), m_xml.errorString()), false); +- return false; +- +- } +- } +- +- return false; +-} +- +- +-bool FvUpdater::searchDownloadedFeedForUpdates(QString xmlTitle, +- QString xmlLink, +- QString xmlReleaseNotesLink, +- QString xmlPubDate, +- QString xmlEnclosureUrl, +- QString xmlEnclosureVersion, +- QString xmlEnclosurePlatform, +- unsigned long xmlEnclosureLength, +- QString xmlEnclosureType) +-{ +- Q_UNUSED(xmlTitle); +- Q_UNUSED(xmlPubDate); +- Q_UNUSED(xmlEnclosureLength); +- Q_UNUSED(xmlEnclosureType); +- +- // Validate +- if (xmlReleaseNotesLink.isEmpty()) { +- if (xmlLink.isEmpty()) { +- showErrorDialog(tr("Feed error: \"release notes\" link is empty"), false); +- return false; +- } else { +- xmlReleaseNotesLink = xmlLink; +- } +- } else { +- xmlLink = xmlReleaseNotesLink; +- } +- if (! (xmlLink.startsWith("http://") || xmlLink.startsWith("https://"))) { +- showErrorDialog(tr("Feed error: invalid \"release notes\" link"), false); +- return false; +- } +- if (xmlEnclosureUrl.isEmpty() || xmlEnclosureVersion.isEmpty() || xmlEnclosurePlatform.isEmpty()) { +- showErrorDialog(tr("Feed error: invalid \"enclosure\" with the download link"), false); +- return false; +- } +- +- // Relevant version? +- if (FVIgnoredVersions::VersionIsIgnored(xmlEnclosureVersion)) { +- qDebug() << "Version '" << xmlEnclosureVersion << "' is ignored, too old or something like that."; +- +- showInformationDialog(tr("No updates were found."), false); +- +- return true; // Things have succeeded when you think of it. +- } +- +- +- // +- // Success! At this point, we have found an update that can be proposed +- // to the user. +- // +- +- if (m_proposedUpdate) { +- delete m_proposedUpdate; m_proposedUpdate = 0; +- } +- m_proposedUpdate = new FvAvailableUpdate(); +- m_proposedUpdate->SetTitle(xmlTitle); +- m_proposedUpdate->SetReleaseNotesLink(xmlReleaseNotesLink); +- m_proposedUpdate->SetPubDate(xmlPubDate); +- m_proposedUpdate->SetEnclosureUrl(xmlEnclosureUrl); +- m_proposedUpdate->SetEnclosureVersion(xmlEnclosureVersion); +- m_proposedUpdate->SetEnclosurePlatform(xmlEnclosurePlatform); +- m_proposedUpdate->SetEnclosureLength(xmlEnclosureLength); +- m_proposedUpdate->SetEnclosureType(xmlEnclosureType); +- +-#ifdef FV_GUI +- // Show "look, there's an update" window +- showUpdaterWindowUpdatedWithCurrentUpdateProposal(); +-#else +- // Decide ourselves what to do +- decideWhatToDoWithCurrentUpdateProposal(); +-#endif +- +- return true; +-} +- +- +-void FvUpdater::showErrorDialog(QString message, bool showEvenInSilentMode) +-{ +- if (m_silentAsMuchAsItCouldGet) { +- if (! showEvenInSilentMode) { +- // Don't show errors in the silent mode +- return; +- } +- } +- +-#ifdef FV_GUI +- QMessageBox dlFailedMsgBox; +- dlFailedMsgBox.setIcon(QMessageBox::Critical); +- dlFailedMsgBox.setText(tr("Error")); +- dlFailedMsgBox.setInformativeText(message); +- dlFailedMsgBox.exec(); +-#else +- qCritical() << message; +-#endif +-} +- +-void FvUpdater::showInformationDialog(QString message, bool showEvenInSilentMode) +-{ +- if (m_silentAsMuchAsItCouldGet) { +- if (! showEvenInSilentMode) { +- // Don't show information dialogs in the silent mode +- return; +- } +- } +- +-#ifdef FV_GUI +- QMessageBox dlInformationMsgBox; +- dlInformationMsgBox.setIcon(QMessageBox::Information); +- dlInformationMsgBox.setText(tr("Information")); +- dlInformationMsgBox.setInformativeText(message); +- dlInformationMsgBox.exec(); +-#else +- qDebug() << message; +-#endif +-} +- +-void FvUpdater::finishUpdate(QString pathToFinish) +-{ +- pathToFinish = pathToFinish.isEmpty() ? QCoreApplication::applicationDirPath() : pathToFinish; +- QDir appDir(pathToFinish); +- appDir.setFilter( QDir::Files | QDir::Dirs ); +- +- QFileInfoList dirEntries = appDir.entryInfoList(); +- foreach (QFileInfo fi, dirEntries) +- { +- if ( fi.isDir() ) +- { +- QString dirname = fi.fileName(); +- if ((dirname==".") || (dirname == "..")) +- continue; +- +- // recursive clean up subdirectory +- finishUpdate(fi.filePath()); +- } +- else +- { +- if(fi.suffix()=="oldversion") +- if( !appDir.remove( fi.absoluteFilePath() ) ) +- qDebug()<<"Error: Unable to clean up file: "<<fi.absoluteFilePath(); +- +- } +- } // For each dir entry END +-} +- +-void FvUpdater::restartApplication() +-{ +- // Spawn a new instance of myApplication: +- QString app = QApplication::applicationFilePath(); +- QStringList arguments = QApplication::arguments(); +- QString wd = QDir::currentPath(); +- qDebug() << app << arguments << wd; +- QProcess::startDetached(app, arguments, wd); +- QApplication::exit(); +-} +- +-void FvUpdater::setRequiredSslFingerPrint(QString md5) +-{ +- m_requiredSslFingerprint = md5.remove(":"); +-} +- +-QString FvUpdater::getRequiredSslFingerPrint() +-{ +- return m_requiredSslFingerprint; +-} +- +-bool FvUpdater::checkSslFingerPrint(QUrl urltoCheck) +-{ +- if(urltoCheck.scheme()!="https") +- { +- qWarning()<<tr("SSL fingerprint check: The url %1 is not a ssl connection!").arg(urltoCheck.toString()); +- return false; +- } +- +- QSslSocket *socket = new QSslSocket(this); +- socket->connectToHostEncrypted(urltoCheck.host(), 443); +- if( !socket->waitForEncrypted(1000)) // waits until ssl emits encrypted(), max 1000msecs +- { +- qWarning()<<"SSL fingerprint check: Unable to connect SSL server: "<<socket->sslErrors(); +- return false; +- } +- +- QSslCertificate cert = socket->peerCertificate(); +- +- if(cert.isNull()) +- { +- qWarning()<<"SSL fingerprint check: Unable to retrieve SSL server certificate."; +- return false; +- } +- +- // COmpare digests +- if(cert.digest().toHex() != m_requiredSslFingerprint) +- { +- qWarning()<<"SSL fingerprint check: FINGERPRINT MISMATCH! Server digest="<<cert.digest().toHex()<<", requiered ssl digest="<<m_requiredSslFingerprint; +- return false; +- } +- +- return true; +-} +- +-void FvUpdater::authenticationRequired ( QNetworkReply * reply, QAuthenticator * authenticator ) +-{ +- if(reply==NULL || authenticator==NULL) +- return; +- +- if(!authenticator->user().isEmpty()) // If there is already a login user set but an authentication is still required: credentials must be wrong -> abort +- { +- reply->abort(); +- qWarning()<<"Http authentication: Wrong credentials!"; +- return; +- } +- +- authenticator->setUser(htAuthUsername); +- authenticator->setPassword(htAuthPassword); +-} +- +-void FvUpdater::setHtAuthCredentials(QString user, QString pass) +-{ +- htAuthUsername = user; +- htAuthPassword = pass; +-} +- +-void FvUpdater::setHtAuthUsername(QString user) +-{ +- htAuthUsername = user; +-} +- +-void FvUpdater::setHtAuthPassword(QString pass) +-{ +- htAuthPassword = pass; +-} +- +-void FvUpdater::setSkipVersionAllowed(bool allowed) +-{ +- skipVersionAllowed = allowed; +-} +- +-void FvUpdater::setRemindLaterAllowed(bool allowed) +-{ +- remindLaterAllowed = allowed; +-} +- +-bool FvUpdater::getSkipVersionAllowed() +-{ +- return skipVersionAllowed; +-} +- +-bool FvUpdater::getRemindLaterAllowed() +-{ +- return remindLaterAllowed; +-} +- +-#ifndef FV_GUI +- +-void FvUpdater::decideWhatToDoWithCurrentUpdateProposal() +-{ +- QString policy = settings->value(FV_NEW_VERSION_POLICY_KEY).toString(); +- if(policy == "install") +- InstallUpdate(); +- else if(policy == "skip") +- SkipUpdate(); +- else +- RemindMeLater(); +-} +- +-#endif +diff --git a/src/3rdparty/fervor-autoupdate/fvupdater.h b/src/3rdparty/fervor-autoupdate/fvupdater.h +deleted file mode 100644 +index 158ecdc..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvupdater.h ++++ /dev/null +@@ -1,205 +0,0 @@ +-/* +- * This file is part of QRK - Qt Registrier Kasse +- * +- * Copyright (C) 2015-2016 Christian Kvasny <chris@ckvsoft.at> +- * +- * 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. +- * +- * 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 this program; if not, see <http://www.gnu.org/licenses/>. +- * +- * Button Design, and Idea for the Layout are lean out from LillePOS, Copyright 2010, Martin Koller, kollix@aon.at +- * +-*/ +- +-#ifndef FVUPDATER_H +-#define FVUPDATER_H +- +-#include <QObject> +-#include <QMutex> +-#include <QNetworkAccessManager> +-#include <QUrl> +-#include <QXmlStreamReader> +-class QNetworkReply; +-class FvUpdateWindow; +-class FvUpdateConfirmDialog; +-class FvAvailableUpdate; +- +- +-class FvUpdater : public QObject +-{ +- Q_OBJECT +- +-public: +- +- // Singleton +- static FvUpdater* sharedUpdater(); +- static void drop(); +- +- // Set / get feed URL +- void SetFeedURL(QUrl feedURL); +- void SetFeedURL(QString feedURL); +- QString GetFeedURL(); +- void finishUpdate(QString pathToFinish = ""); +- void setRequiredSslFingerPrint(QString md5); +- QString getRequiredSslFingerPrint(); // returns md5! +- // HTTP Authentuication - for security reasons no getters are provided, only a setter +- void setHtAuthCredentials(QString user, QString pass); +- void setHtAuthUsername(QString user); +- void setHtAuthPassword(QString pass); +- void setSkipVersionAllowed(bool allowed); +- void setRemindLaterAllowed(bool allowed); +- bool getSkipVersionAllowed(); +- bool getRemindLaterAllowed(); +- +- +-public slots: +- +- // Check for updates +- bool CheckForUpdates(bool silentAsMuchAsItCouldGet = true); +- +- // Aliases +- bool CheckForUpdatesSilent(); +- bool CheckForUpdatesNotSilent(); +- +- +- // +- // --------------------------------------------------- +- // --------------------------------------------------- +- // --------------------------------------------------- +- // --------------------------------------------------- +- // +- +-protected: +- +- friend class FvUpdateWindow; // Uses GetProposedUpdate() and others +- friend class FvUpdateConfirmDialog; // Uses GetProposedUpdate() and others +- FvAvailableUpdate* GetProposedUpdate(); +- +- +-protected slots: +- +- // Update window button slots +- void InstallUpdate(); +- void SkipUpdate(); +- void RemindMeLater(); +- +-private: +- +- // +- // Singleton business +- // +- // (we leave just the declarations, so the compiler will warn us if we try +- // to use those two functions by accident) +- FvUpdater(); // Hide main constructor +- ~FvUpdater(); // Hide main destructor +- FvUpdater(const FvUpdater&); // Hide copy constructor +- FvUpdater& operator=(const FvUpdater&); // Hide assign op +- +- static FvUpdater* m_Instance; // Singleton instance +- +- +- // +- // Windows / dialogs +- // +-#ifdef FV_GUI +- FvUpdateWindow* m_updaterWindow; // Updater window (NULL if not shown) +- void showUpdaterWindowUpdatedWithCurrentUpdateProposal(); // Show updater window +- void hideUpdaterWindow(); // Hide + destroy m_updaterWindow +- void updaterWindowWasClosed(); // Sent by the updater window when it gets closed +-#else +- void decideWhatToDoWithCurrentUpdateProposal(); // Perform an action which is configured in settings +-#endif +- +- // Available update (NULL if not fetched) +- FvAvailableUpdate* m_proposedUpdate; +- +- // If true, don't show the error dialogs and the "no updates." dialog +- // (silentAsMuchAsItCouldGet from CheckForUpdates() goes here) +- // Useful for automatic update checking upon application startup. +- bool m_silentAsMuchAsItCouldGet; +- +- // Dialogs (notifications) +- bool skipVersionAllowed; +- bool remindLaterAllowed; +- +- void showErrorDialog(QString message, bool showEvenInSilentMode = false); // Show an error message +- void showInformationDialog(QString message, bool showEvenInSilentMode = false); // Show an informational message +- +- +- // +- // HTTP feed fetcher infrastructure +- // +- QUrl m_feedURL; // Feed URL that will be fetched +- QNetworkAccessManager m_qnam; +- QNetworkReply* m_reply; +- int m_httpGetId; +- bool m_httpRequestAborted; +- +- void startDownloadFeed(QUrl url); // Start downloading feed +- void cancelDownloadFeed(); // Stop downloading the current feed +- +- // +- // SSL Fingerprint Check infrastructure +- // +- QString m_requiredSslFingerprint; +- +- bool checkSslFingerPrint(QUrl urltoCheck); // true=ssl Fingerprint accepted, false= ssl Fingerprint NOT accepted +- +- // +- // Htauth-Infrastructure +- // +- QString htAuthUsername; +- QString htAuthPassword; +- +- +- // +- // XML parser +- // +- QXmlStreamReader m_xml; // XML data collector and parser +- bool xmlParseFeed(); // Parse feed in m_xml +- bool searchDownloadedFeedForUpdates(QString xmlTitle, +- QString xmlLink, +- QString xmlReleaseNotesLink, +- QString xmlPubDate, +- QString xmlEnclosureUrl, +- QString xmlEnclosureVersion, +- QString xmlEnclosurePlatform, +- unsigned long xmlEnclosureLength, +- QString xmlEnclosureType); +- +- +- // +- // Helpers +- // +- void installTranslator(); // Initialize translation mechanism +- void restartApplication(); // Restarts application after update +- +-private slots: +- +- void authenticationRequired ( QNetworkReply * reply, QAuthenticator * authenticator ); +- void httpFeedReadyRead(); +- void httpFeedUpdateDataReadProgress(qint64 bytesRead, +- qint64 totalBytes); +- void httpFeedDownloadFinished(); +- +- // +- // Download and install Update infrastructure +- // +- void httpUpdateDownloadFinished(); +- bool unzipUpdate(const QString & filePath, const QString & extDirPath, const QString & singleFileName = QString("")); // returns true on success +- +-signals: +- void updatedFinishedSuccessfully(); +- +-}; +- +-#endif // FVUPDATER_H +diff --git a/src/3rdparty/fervor-autoupdate/fvupdatewindow.cpp b/src/3rdparty/fervor-autoupdate/fvupdatewindow.cpp +deleted file mode 100644 +index f8fa92a..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvupdatewindow.cpp ++++ /dev/null +@@ -1,112 +0,0 @@ +-/* +- * This file is part of QRK - Qt Registrier Kasse +- * +- * Copyright (C) 2015-2016 Christian Kvasny <chris@ckvsoft.at> +- * +- * 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. +- * +- * 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 this program; if not, see <http://www.gnu.org/licenses/>. +- * +- * Button Design, and Idea for the Layout are lean out from LillePOS, Copyright 2010, Martin Koller, kollix@aon.at +- * +-*/ +- +-#include "fvupdatewindow.h" +-#include "ui_fvupdatewindow.h" +-#include "fvupdater.h" +-#include "fvavailableupdate.h" +-#include <QApplication> +-#include <QCloseEvent> +-#include <QtNetwork/QNetworkAccessManager> +-#include <QtNetwork/QNetworkRequest> +-#include <QtNetwork/QNetworkReply> +- +-#include <QDebug> +- +- +-FvUpdateWindow::FvUpdateWindow(QWidget *parent, bool skipVersionAllowed, bool remindLaterAllowed) : +- QWidget(parent, Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint | Qt::WindowTitleHint), +- m_ui(new Ui::FvUpdateWindow) +-{ +- m_ui->setupUi(this); +- +- m_appIconScene = 0; +- +- if(!skipVersionAllowed) +- m_ui->skipThisVersionButton->hide(); +- if(!remindLaterAllowed) +- m_ui->remindMeLaterButton->hide(); +- +- // Delete on close +- setAttribute(Qt::WA_DeleteOnClose, true); +- +- // Set the "new version is available" string +- QString newVersString = m_ui->newVersionIsAvailableLabel->text().arg(QApplication::applicationName()); +- m_ui->newVersionIsAvailableLabel->setText(newVersString); +- +- // Connect buttons +- connect(m_ui->installUpdateButton, SIGNAL(clicked()), +- FvUpdater::sharedUpdater(), SLOT(InstallUpdate())); +- connect(m_ui->skipThisVersionButton, SIGNAL(clicked()), +- FvUpdater::sharedUpdater(), SLOT(SkipUpdate())); +- connect(m_ui->remindMeLaterButton, SIGNAL(clicked()), +- FvUpdater::sharedUpdater(), SLOT(RemindMeLater())); +-} +- +-FvUpdateWindow::~FvUpdateWindow() +-{ +- // m_ui->releaseNotesWebView->stop(); +- delete m_ui; +-} +- +-bool FvUpdateWindow::UpdateWindowWithCurrentProposedUpdate() +-{ +- FvAvailableUpdate* proposedUpdate = FvUpdater::sharedUpdater()->GetProposedUpdate(); +- if (! proposedUpdate) { +- return false; +- } +- +- QString downloadString = m_ui->wouldYouLikeToDownloadLabel->text() +- .arg(QApplication::applicationName(), proposedUpdate->GetEnclosureVersion(), QApplication::applicationVersion()); +- m_ui->wouldYouLikeToDownloadLabel->setText(downloadString); +- +- QEventLoop eventLoop; +- +- // "quit()" the event-loop, when the network request "finished()" +- QNetworkAccessManager mgr; +- QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit())); +- +- // the HTTP request +- QNetworkRequest req( proposedUpdate->GetReleaseNotesLink() ); +- QNetworkReply *reply = mgr.get(req); +- eventLoop.exec(); // blocks stack until "finished()" has been called +- +- if (reply->error() == QNetworkReply::NoError) { +- //success +-// qDebug() << "Success" <<reply->readAll(); +- m_ui->releaseNotesWebView->setHtml(reply->readAll()); +- delete reply; +- } +- else { +- //failure +- qDebug() << "Failure" <<reply->errorString(); +- delete reply; +- } +- +- return true; +-} +- +-void FvUpdateWindow::closeEvent(QCloseEvent* event) +-{ +- FvUpdater::sharedUpdater()->updaterWindowWasClosed(); +- event->accept(); +-} +diff --git a/src/3rdparty/fervor-autoupdate/fvupdatewindow.h b/src/3rdparty/fervor-autoupdate/fvupdatewindow.h +deleted file mode 100644 +index 9bed7fd..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvupdatewindow.h ++++ /dev/null +@@ -1,59 +0,0 @@ +-/* +- * This file is part of QRK - Qt Registrier Kasse +- * +- * Copyright (C) 2015-2016 Christian Kvasny <chris@ckvsoft.at> +- * +- * 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. +- * +- * 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 this program; if not, see <http://www.gnu.org/licenses/>. +- * +- * Button Design, and Idea for the Layout are lean out from LillePOS, Copyright 2010, Martin Koller, kollix@aon.at +- * +-*/ +- +-#ifndef FVUPDATEWINDOW_H +-#define FVUPDATEWINDOW_H +- +-#if QT_VERSION >= 0x050000 +- #include <QtWidgets/QWidget> +-#else +- #include <QWidget> +-#endif +- +-class QGraphicsScene; +- +-namespace Ui { +-class FvUpdateWindow; +-} +- +-class FvUpdateWindow : public QWidget +-{ +- Q_OBJECT +- +-public: +- explicit FvUpdateWindow(QWidget *parent, bool skipVersionAllowed, bool remindLaterAllowed); +- ~FvUpdateWindow(); +- +- // Update the current update proposal from FvUpdater +- bool UpdateWindowWithCurrentProposedUpdate(); +- +- void closeEvent(QCloseEvent* event); +- +-private: +- Ui::FvUpdateWindow* m_ui; +- QGraphicsScene* m_appIconScene; +- +-}; +- +-#endif // FVUPDATEWINDOW_H +- +- +diff --git a/src/3rdparty/fervor-autoupdate/fvupdatewindow.ui b/src/3rdparty/fervor-autoupdate/fvupdatewindow.ui +deleted file mode 100644 +index fa56cf0..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvupdatewindow.ui ++++ /dev/null +@@ -1,137 +0,0 @@ +-<?xml version="1.0" encoding="UTF-8"?> +-<ui version="4.0"> +- <class>FvUpdateWindow</class> +- <widget class="QWidget" name="FvUpdateWindow"> +- <property name="windowModality"> +- <enum>Qt::ApplicationModal</enum> +- </property> +- <property name="geometry"> +- <rect> +- <x>0</x> +- <y>0</y> +- <width>655</width> +- <height>481</height> +- </rect> +- </property> +- <property name="contextMenuPolicy"> +- <enum>Qt::PreventContextMenu</enum> +- </property> +- <property name="windowTitle"> +- <string>Software Update</string> +- </property> +- <property name="windowOpacity"> +- <double>1.000000000000000</double> +- </property> +- <layout class="QHBoxLayout" name="horizontalLayout_6"> +- <property name="sizeConstraint"> +- <enum>QLayout::SetFixedSize</enum> +- </property> +- <item> +- <layout class="QVBoxLayout" name="verticalLayout"> +- <item> +- <widget class="QLabel" name="newVersionIsAvailableLabel"> +- <property name="font"> +- <font> +- <weight>75</weight> +- <bold>true</bold> +- </font> +- </property> +- <property name="text"> +- <string>Eine neue Version von %1 steht zum Download bereit!</string> +- </property> +- </widget> +- </item> +- <item> +- <widget class="QLabel" name="wouldYouLikeToDownloadLabel"> +- <property name="text"> +- <string>%1 %2 ist verfügbar - Sie verwenden %3. Möchten Sie diese Version jetzt downloaden?</string> +- </property> +- </widget> +- </item> +- <item> +- <widget class="QGroupBox" name="groupBox"> +- <property name="font"> +- <font> +- <weight>75</weight> +- <bold>true</bold> +- </font> +- </property> +- <property name="title"> +- <string>Versionshinweise</string> +- </property> +- <layout class="QHBoxLayout" name="horizontalLayout_7"> +- <item> +- <widget class="QTextBrowser" name="releaseNotesWebView"/> +- </item> +- </layout> +- </widget> +- </item> +- <item> +- <layout class="QHBoxLayout" name="horizontalLayout_3"> +- <item> +- <widget class="QPushButton" name="skipThisVersionButton"> +- <property name="minimumSize"> +- <size> +- <width>0</width> +- <height>60</height> +- </size> +- </property> +- <property name="text"> +- <string>Diese Version überspringen</string> +- </property> +- </widget> +- </item> +- <item> +- <spacer name="horizontalSpacer"> +- <property name="orientation"> +- <enum>Qt::Horizontal</enum> +- </property> +- <property name="sizeHint" stdset="0"> +- <size> +- <width>40</width> +- <height>20</height> +- </size> +- </property> +- </spacer> +- </item> +- <item> +- <widget class="QPushButton" name="remindMeLaterButton"> +- <property name="minimumSize"> +- <size> +- <width>0</width> +- <height>60</height> +- </size> +- </property> +- <property name="text"> +- <string>Später erinnern</string> +- </property> +- </widget> +- </item> +- <item> +- <widget class="QPushButton" name="installUpdateButton"> +- <property name="minimumSize"> +- <size> +- <width>0</width> +- <height>60</height> +- </size> +- </property> +- <property name="text"> +- <string>Update installieren</string> +- </property> +- <property name="autoDefault"> +- <bool>true</bool> +- </property> +- <property name="default"> +- <bool>true</bool> +- </property> +- </widget> +- </item> +- </layout> +- </item> +- </layout> +- </item> +- </layout> +- </widget> +- <resources/> +- <connections/> +-</ui> +diff --git a/src/3rdparty/fervor-autoupdate/fvversioncomparator.cpp b/src/3rdparty/fervor-autoupdate/fvversioncomparator.cpp +deleted file mode 100644 +index 29ff493..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvversioncomparator.cpp ++++ /dev/null +@@ -1,186 +0,0 @@ +-/* +- * This file is part of QRK - Qt Registrier Kasse +- * +- * Copyright (C) 2015-2016 Christian Kvasny <chris@ckvsoft.at> +- * +- * 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. +- * +- * 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 this program; if not, see <http://www.gnu.org/licenses/>. +- * +- * Button Design, and Idea for the Layout are lean out from LillePOS, Copyright 2010, Martin Koller, kollix@aon.at +- * +-*/ +- +-#include "fvversioncomparator.h" +-#include <string> +-#include <algorithm> +-#include <cctype> +- +-// +-// Clone of Sparkle's SUStandardVersionComparator.m, so here's original author's +-// copyright too: +-// +-// Copyright 2007 Andy Matuschak. All rights reserved. +-// +-// Everything's the same except for TypeOfCharacter() +-// (because who knows how Foundation does isdigit() and such.) +-// +- +- +-FvVersionComparator::FvVersionComparator() +-{ +- // noop +-} +- +-FvVersionComparator::CharacterType FvVersionComparator::TypeOfCharacter(std::string character) +-{ +- if (character == ".") { +- return kSeparatorType; +- } else if (isdigit(character[0])) { +- return kNumberType; +- } else if (isspace(character[0])) { +- return kSeparatorType; +- } else if (ispunct(character[0])) { +- return kSeparatorType; +- } else { +- return kStringType; +- } +- +-} +- +-std::vector<std::string> FvVersionComparator::SplitVersionString(std::string version) +-{ +- std::string character; +- std::string s; +- unsigned long i = 0, n = 0; +- CharacterType oldType, newType; +- std::vector<std::string> parts; +- +- if (version.length() == 0) { +- // Nothing to do here +- return parts; +- } +- +- s = version.substr(0, 1); +- oldType = TypeOfCharacter(s); +- n = version.length() - 1; +- for (i = 1; i <= n; ++i) { +- character = version.substr(i, 1)[0]; +- newType = TypeOfCharacter(character); +- if (oldType != newType || oldType == kSeparatorType) { +- // We've reached a new segment +- std::string aPart = s; +- parts.push_back(aPart); +- s = character; +- } else { +- // Add character to string and continue +- s.append(character); +- } +- oldType = newType; +- } +- +- // Add the last part onto the array +- parts.push_back(s); +- return parts; +-} +- +- +-FvVersionComparator::ComparatorResult FvVersionComparator::CompareVersions(std::string versionA, +- std::string versionB) +-{ +- std::vector<std::string> partsA = SplitVersionString(versionA); +- std::vector<std::string> partsB = SplitVersionString(versionB); +- +- std::string partA = std::string(""), partB = std::string(""); +- unsigned long i = 0, n = 0; +- int intA, intB; +- CharacterType typeA, typeB; +- +- n = std::min(partsA.size(), partsB.size()); +- for (i = 0; i < n; ++i) { +- partA = partsA.at(i); +- partB = partsB.at(i); +- +- typeA = TypeOfCharacter(partA); +- typeB = TypeOfCharacter(partB); +- +- // Compare types +- if (typeA == typeB) { +- // Same type; we can compare +- if (typeA == kNumberType) { +- intA = atoi(partA.c_str()); +- intB = atoi(partB.c_str()); +- +- if (intA > intB) { +- return kDescending; +- } else if (intA < intB) { +- return kAscending; +- } +- } else if (typeA == kStringType) { +- short result = partA.compare(partB); +- switch (result) { +- case -1: return kAscending; break; +- case 1: return kDescending; break; +- case 0: /* do nothing */ break; +- }; +- } +- } else { +- // Not the same type? Now we have to do some validity checking +- if (typeA != kStringType && typeB == kStringType) { +- // typeA wins +- return kDescending; +- } else if (typeA == kStringType && typeB != kStringType) { +- // typeB wins +- return kAscending; +- } else { +- // One is a number and the other is a period. The period is invalid +- if (typeA == kNumberType) { +- return kDescending; +- } else { +- return kAscending; +- } +- } +- } +- } +- // The versions are equal up to the point where they both still have parts +- // Lets check to see if one is larger than the other +- if (partsA.size() != partsB.size()) { +- // Yep. Lets get the next part of the larger +- // n holds the index of the part we want. +- std::string missingPart = std::string(""); +- CharacterType missingType; +- ComparatorResult shorterResult, largerResult; +- +- if (partsA.size() > partsB.size()) { +- missingPart = partsA.at(n); +- shorterResult = kAscending; +- largerResult = kDescending; +- } else { +- missingPart = partsB.at(n); +- shorterResult = kDescending; +- largerResult = kAscending; +- } +- +- missingType = TypeOfCharacter(missingPart); +- // Check the type +- if (missingType == kStringType) { +- // It's a string. Shorter version wins +- return shorterResult; +- } else { +- // It's a number/period. Larger version wins +- return largerResult; +- } +- } +- +- // The 2 strings are identical +- return kSame; +-} +diff --git a/src/3rdparty/fervor-autoupdate/fvversioncomparator.h b/src/3rdparty/fervor-autoupdate/fvversioncomparator.h +deleted file mode 100644 +index 04ce6f2..0000000 +--- a/src/3rdparty/fervor-autoupdate/fvversioncomparator.h ++++ /dev/null +@@ -1,58 +0,0 @@ +-/* +- * This file is part of QRK - Qt Registrier Kasse +- * +- * Copyright (C) 2015-2016 Christian Kvasny <chris@ckvsoft.at> +- * +- * 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. +- * +- * 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 this program; if not, see <http://www.gnu.org/licenses/>. +- * +- * Button Design, and Idea for the Layout are lean out from LillePOS, Copyright 2010, Martin Koller, kollix@aon.at +- * +-*/ +- +-#ifndef FVVERSIONCOMPARATOR_H +-#define FVVERSIONCOMPARATOR_H +- +-#include <iosfwd> +-#include <vector> +- +- +-class FvVersionComparator +-{ +-public: +- +- typedef enum { +- kSame = 0, +- kDescending = 1, +- kAscending = -1 +- } ComparatorResult; +- +- static ComparatorResult CompareVersions(std::string versionA, +- std::string versionB); +- +-private: +- +- FvVersionComparator(); +- +- typedef enum { +- kNumberType, +- kStringType, +- kSeparatorType +- } CharacterType; +- +- static CharacterType TypeOfCharacter(std::string character); +- static std::vector<std::string> SplitVersionString(std::string version); +- +-}; +- +-#endif // FVVERSIONCOMPARATOR_H +diff --git a/src/main.cpp b/src/main.cpp +index aa21ddd..da21087 100644 +--- a/src/main.cpp ++++ b/src/main.cpp +@@ -22,7 +22,6 @@ + + #include "qrk.h" + #include "settingsdialog.h" +-#include "fvupdater.h" + #include "utils/demomode.h" + #include "backup.h" + +@@ -109,18 +108,6 @@ int main(int argc, char *argv[]) + QApplication::setApplicationName("QRK"); + QApplication::setApplicationVersion(QString("%1.%2").arg(QRK_VERSION_MAJOR).arg(QRK_VERSION_MINOR)); + +- // Set feed URL before doing anything else +- FvUpdater::sharedUpdater()->SetFeedURL("http://service.ckvsoft.at/swupdates/Appcast.xml"); +- FvUpdater::sharedUpdater()->setRequiredSslFingerPrint("c3b038cb348c7d06328579fb950a48eb"); // Optional +- FvUpdater::sharedUpdater()->setHtAuthCredentials("swupdates", "updatepw"); // Optional +- FvUpdater::sharedUpdater()->setSkipVersionAllowed(true); // Optional +- FvUpdater::sharedUpdater()->setRemindLaterAllowed(true); // Optional +- // Finish Up old Updates +- FvUpdater::sharedUpdater()->finishUpdate(); +- +- // Check for updates automatically +- FvUpdater::sharedUpdater()->CheckForUpdatesSilent(); +- + /* + QSharedMemory mem("QRK"); + if(!mem.create(1)) +diff --git a/src/src.pro b/src/src.pro +index 3ddc028..dab248b 100644 +--- a/src/src.pro ++++ b/src/src.pro +@@ -134,12 +134,6 @@ TRANSLATIONS += tr/QRK_en.ts \ + <------>error("Unable to include quazip.") + } + +-# Fervor autoupdater +-# (set TARGET and VERSION of your app before including Fervor.pri) +-!include("3rdparty/fervor-autoupdate/Fervor.pri") { +-<------>error("Unable to include Fervor autoupdater.") +-} +- + # LIBS += -lqrencode + # LIBS += -lpthread + +-- +2.8.2 + @@ -3,7 +3,7 @@ pkgname=qrk _pkgname=QRK pkgver=0.16.0502 -pkgrel=1 +pkgrel=2 pkgdesc="A cash register for small companies (mainly for Austrian companies)" arch=('i686' 'x86_64') url="http://www.ckvsoft.at/" @@ -13,19 +13,23 @@ depends=('qrencode' 'crypto++') source=("http://downloads.sourceforge.net/project/qrk-registrier-kasse/source/${_pkgname}_${pkgver}.source.tar.gz" "${pkgname}.desktop" - "0001-Use-QStandardPaths-AppDataLocation-as-base-path.patch") + "0001-Use-QStandardPaths-AppDataLocation-as-base-path.patch" + "0002-Remove-autoupdater.patch") md5sums=('a784fe919008cd3dd2da61e3210c82ed' '52c990903894fdecd440e2e2914c2f09' - '0b8144d154ae8e14ae8ffb99e2292867') + '509dcbe51869181b8dfd9f3b5a754930' + '94e130452ec5bbec65e04abe60a77c64') sha256sums=('b7874437ed3ce655c0b548b484e28026acf5cb3ab5701553f3a598f99a37d459' 'f71882aea62bd7c07e4806f0223d1699170ac89d59036f5fd5add1004eb93cd0' - 'fa91ac9a0e11af077b5806d5c134b0117ca091cbddce5e972b36d5a604b0ad68') + 'f75d427a6d1969599a26a37e53b3c51a6fa43debf2eac135cc5e4dd71284aae3' + '9297a91e210349d92559efc8f74189542bb63773824252e6aee53be2eb3101f9') prepare() { cd "${srcdir}/${_pkgname}_${pkgver}_source" patch -Np1 < "${srcdir}/0001-Use-QStandardPaths-AppDataLocation-as-base-path.patch" + patch -Np1 < "${srcdir}/0002-Remove-autoupdater.patch" } build() { |