[-]
[+]
|
Changed |
_service:tar_git:patchmanager.changes
|
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager.spec
^
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -2,7 +2,7 @@
<service name="tar_git">
<param name="url">https://github.com/sailfishos-patches/patchmanager.git</param>
<param name="branch">master</param>
- <param name="revision">3.2.4</param>
+ <param name="revision">3.2.6</param>
<param name="token"/>
<param name="debian">N</param>
<param name="dumb">N</param>
|
[-]
[+]
|
Deleted |
_service:tar_git:patchmanager-3.2.4.tar.gz/.github/workflows/build.yml
^
|
@@ -1,67 +0,0 @@
-name: Github CI build
-
-on:
- push:
- tags:
- - '*'
- pull_request:
- branches:
- - master
- - patchmanager3
-
-env:
- RELEASE: 4.0.1.45
-
-jobs:
- build:
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v2
-
- - name: Prepare
- run: mkdir output
-
- - name: Build armv7hl
- run: docker run --rm --privileged -v $PWD:/share coderus/sailfishos-platform-sdk:$RELEASE /bin/bash -c "
- mkdir -p build ;
- cd build ;
- cp -r /share/* . ;
- mb2 -t SailfishOS-$RELEASE-armv7hl build --enable-debug ;
- sudo cp -r RPMS/*.rpm /share/output"
-
- - name: Build aarch64
- run: docker run --rm --privileged -v $PWD:/share coderus/sailfishos-platform-sdk:$RELEASE /bin/bash -c "
- mkdir -p build ;
- cd build ;
- cp -r /share/* . ;
- mb2 -t SailfishOS-$RELEASE-aarch64 build --enable-debug ;
- sudo cp -r RPMS/*.rpm /share/output"
-
- - name: Build i486
- run: docker run --rm --privileged -v $PWD:/share coderus/sailfishos-platform-sdk:$RELEASE /bin/bash -c "
- mkdir -p build ;
- cd build ;
- cp -r /share/* . ;
- mb2 -t SailfishOS-$RELEASE-i486 build --enable-debug ;
- sudo cp -r RPMS/*.rpm /share/output"
-
- - name: Upload build result
- uses: actions/upload-artifact@v2
- with:
- name: output-rpms
- path: output
-
- - name: Create release
- if: contains(github.ref, 'release')
- run: |
- set -x
- assets=()
- for asset in output/*.rpm; do
- assets+=("-a" "$asset")
- done
- tag_name="${GITHUB_REF##*/}"
- hub release create "${assets[@]}" -m "$tag_name" "$tag_name"
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
|
[-]
[+]
|
Added |
_service:tar_git:patchmanager-3.2.6.tar.gz/.github/workflows/ci_sfos-latest-aarch64-armv7hl-i486.yml
^
|
@@ -0,0 +1,76 @@
+name: CI on SFOS-latest (aarch64,armv7hl,i486)
+
+on:
+ push:
+ tags:
+ - '*'
+
+env:
+ RELEASE: 4.4.0.72
+
+jobs:
+ build:
+ runs-on: ubuntu-22.04
+ env:
+ SEGMENT_DOWNLOAD_TIMEOUT_MINS: 3
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Prepare
+ run: mkdir output
+
+ # Caching Docker images is not ready yet, see
+ # https://github.com/storeman-developers/harbour-storeman-installer/blob/devel/cache-docker-images_github-ci.md
+ #- name: Cache Docker images of the Sailfish-SDK
+ # id: cache-sdk
+ # uses: actions/cache@v3
+ # with:
+ # path: $GITHUB_WORKSPACE/…
+ # key: cache
+
+ - name: Build aarch64
+ # mb2 wants bash: https://github.com/sailfishos/sdk-setup/blob/master/sdk-setup/src/mb2#L1
+ run: docker run --rm --privileged -v $PWD:/share coderus/sailfishos-platform-sdk:$RELEASE /bin/bash -c "
+ mkdir -p build ;
+ cd build ;
+ cp -r /share/* . ;
+ mb2 -t SailfishOS-$RELEASE-aarch64 build --enable-debug ;
+ sudo cp -r RPMS/*.rpm /share/output"
+
+ - name: Build armv7hl
+ # mb2 wants bash: https://github.com/sailfishos/sdk-setup/blob/master/sdk-setup/src/mb2#L1
+ run: docker run --rm --privileged -v $PWD:/share coderus/sailfishos-platform-sdk:$RELEASE /bin/bash -c "
+ mkdir -p build ;
+ cd build ;
+ cp -r /share/* . ;
+ mb2 -t SailfishOS-$RELEASE-armv7hl build --enable-debug ;
+ sudo cp -r RPMS/*.rpm /share/output"
+
+ - name: Build i486
+ # mb2 wants bash: https://github.com/sailfishos/sdk-setup/blob/master/sdk-setup/src/mb2#L1
+ run: docker run --rm --privileged -v $PWD:/share coderus/sailfishos-platform-sdk:$RELEASE /bin/bash -c "
+ mkdir -p build ;
+ cd build ;
+ cp -r /share/* . ;
+ mb2 -t SailfishOS-$RELEASE-i486 build --enable-debug ;
+ sudo cp -r RPMS/*.rpm /share/output"
+
+ - name: Upload build result
+ uses: actions/upload-artifact@v3
+ with:
+ name: output-rpms
+ path: output/
+
+ - name: Create release
+ if: contains(github.ref, 'release')
+ run: |
+ set -x
+ assets=""
+ for asset in output/*.rpm; do
+ assets="$assets -a $asset"
+ done
+ tag_name="${GITHUB_REF##*/}"
+ hub release create"$assets" -m "$tag_name" "$tag_name"
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
[-]
[+]
|
Added |
_service:tar_git:patchmanager-3.2.6.tar.gz/.github/workflows/ci_sfos3.4.0-armv7hl.yml
^
|
@@ -0,0 +1,62 @@
+name: CI on SFOS 3.4.0 (armv7hl)
+
+on:
+ push:
+ tags:
+ - '*'
+ pull_request:
+ branches:
+ - master
+ - patchmanager3
+
+env:
+ RELEASE: 3.4.0.24
+
+jobs:
+ build:
+ runs-on: ubuntu-22.04
+ env:
+ SEGMENT_DOWNLOAD_TIMEOUT_MINS: 1
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Prepare
+ run: mkdir output
+
+ # Caching Docker images is not ready yet, see
+ # https://github.com/storeman-developers/harbour-storeman-installer/blob/devel/cache-docker-images_github-ci.md
+ #- name: Cache Docker images of the Sailfish-SDK
+ # id: cache-sdk
+ # uses: actions/cache@v3
+ # with:
+ # path: $GITHUB_WORKSPACE/…
+ # key: cache
+
+ - name: Build armv7hl
+ # mb2 wants bash: https://github.com/sailfishos/sdk-setup/blob/master/sdk-setup/src/mb2#L1
+ run: docker run --rm --privileged -v $PWD:/share coderus/sailfishos-platform-sdk:$RELEASE /bin/bash -c "
+ mkdir -p build ;
+ cd build ;
+ cp -r /share/* . ;
+ mb2 -t SailfishOS-$RELEASE-armv7hl build --enable-debug ;
+ sudo cp -r RPMS/*.rpm /share/output"
+
+ - name: Upload build result
+ uses: actions/upload-artifact@v3
+ with:
+ name: output-rpms
+ path: output/
+
+ - name: Create release
+ if: contains(github.ref, 'release')
+ run: |
+ set -x
+ assets=""
+ for asset in output/*.rpm; do
+ assets="$assets -a $asset"
+ done
+ tag_name="${GITHUB_REF##*/}"
+ hub release create"$assets" -m "$tag_name" "$tag_name"
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
[-]
[+]
|
Added |
_service:tar_git:patchmanager-3.2.6.tar.gz/.github/workflows/ci_sfos3.4.0-i486.yml
^
|
@@ -0,0 +1,58 @@
+name: CI on SFOS 3.4.0 (i486)
+
+on:
+ push:
+ tags:
+ - '*'
+
+env:
+ RELEASE: 3.4.0.24
+
+jobs:
+ build:
+ runs-on: ubuntu-22.04
+ env:
+ SEGMENT_DOWNLOAD_TIMEOUT_MINS: 3
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Prepare
+ run: mkdir output
+
+ # Caching Docker images is not ready yet, see
+ # https://github.com/storeman-developers/harbour-storeman-installer/blob/devel/cache-docker-images_github-ci.md
+ #- name: Cache Docker images of the Sailfish-SDK
+ # id: cache-sdk
+ # uses: actions/cache@v3
+ # with:
+ # path: $GITHUB_WORKSPACE/…
+ # key: cache
+
+ - name: Build i486
+ # mb2 wants bash: https://github.com/sailfishos/sdk-setup/blob/master/sdk-setup/src/mb2#L1
+ run: docker run --rm --privileged -v $PWD:/share coderus/sailfishos-platform-sdk:$RELEASE /bin/bash -c "
+ mkdir -p build ;
+ cd build ;
+ cp -r /share/* . ;
+ mb2 -t SailfishOS-$RELEASE-i486 build --enable-debug ;
+ sudo cp -r RPMS/*.rpm /share/output"
+
+ - name: Upload build result
+ uses: actions/upload-artifact@v3
+ with:
+ name: output-rpms
+ path: output/
+
+ - name: Create release
+ if: contains(github.ref, 'release')
+ run: |
+ set -x
+ assets=""
+ for asset in output/*.rpm; do
+ assets="$assets -a $asset"
+ done
+ tag_name="${GITHUB_REF##*/}"
+ hub release create"$assets" -m "$tag_name" "$tag_name"
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
[-]
[+]
|
Added |
_service:tar_git:patchmanager-3.2.6.tar.gz/.github/workflows/ci_sfos4.0.1-aarch64.yml
^
|
@@ -0,0 +1,58 @@
+name: CI on SFOS 4.0.1 (aarch64)
+
+on:
+ push:
+ tags:
+ - '*'
+
+env:
+ RELEASE: 4.0.1.45
+
+jobs:
+ build:
+ runs-on: ubuntu-22.04
+ env:
+ SEGMENT_DOWNLOAD_TIMEOUT_MINS: 3
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Prepare
+ run: mkdir output
+
+ # Caching Docker images is not ready yet, see
+ # https://github.com/storeman-developers/harbour-storeman-installer/blob/devel/cache-docker-images_github-ci.md
+ #- name: Cache Docker images of the Sailfish-SDK
+ # id: cache-sdk
+ # uses: actions/cache@v3
+ # with:
+ # path: $GITHUB_WORKSPACE/…
+ # key: cache
+
+ - name: Build aarch64
+ # mb2 wants bash: https://github.com/sailfishos/sdk-setup/blob/master/sdk-setup/src/mb2#L1
+ run: docker run --rm --privileged -v $PWD:/share coderus/sailfishos-platform-sdk:$RELEASE /bin/bash -c "
+ mkdir -p build ;
+ cd build ;
+ cp -r /share/* . ;
+ mb2 -t SailfishOS-$RELEASE-aarch64 build --enable-debug ;
+ sudo cp -r RPMS/*.rpm /share/output"
+
+ - name: Upload build result
+ uses: actions/upload-artifact@v3
+ with:
+ name: output-rpms
+ path: output/
+
+ - name: Create release
+ if: contains(github.ref, 'release')
+ run: |
+ set -x
+ assets=""
+ for asset in output/*.rpm; do
+ assets="$assets -a $asset"
+ done
+ tag_name="${GITHUB_REF##*/}"
+ hub release create"$assets" -m "$tag_name" "$tag_name"
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/patchmanager.pro
^
|
@@ -1,6 +1,6 @@
+QMAKE_CXXFLAGS += -Werror
TEMPLATE = subdirs
SUBDIRS = src tests
-
OTHER_FILES += rpm/patchmanager.spec
TRANSLATIONS += $$files(translations/settings-$${TARGET}-*.ts)
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/bin/dialog/dialog.pro
^
|
@@ -1,26 +1,27 @@
-TEMPLATE = app
-TARGET = patchmanager-dialog
-
-QT += dbus network
-CONFIG += sailfishapp c++11
-
-dbus.files = dbus/org.SfietKonstantin.patchmanager.service
-dbus.path = /usr/share/dbus-1/services
-INSTALLS += dbus
-
-systemd.files = \
- systemd/dbus-org.SfietKonstantin.patchmanager.service \
- systemd/lipstick-patchmanager.service
-systemd.path = /usr/lib/systemd/user
-INSTALLS += systemd
-
-icons.files = patchmanager-icon.svg
-icons.path = /usr/share/patchmanager/data
-INSTALLS += icons
-
-gui.files = dialog.qml
-gui.path = /usr/share/patchmanager/data
-INSTALLS += gui
-
-SOURCES += \
- main.cpp
+TEMPLATE = app
+TARGET = patchmanager-dialog
+
+QT += dbus network
+CONFIG += sailfishapp c++11
+QMAKE_CXXFLAGS += -Werror
+
+dbus.files = dbus/org.SfietKonstantin.patchmanager.service
+dbus.path = /usr/share/dbus-1/services
+INSTALLS += dbus
+
+systemd.files = \
+ systemd/dbus-org.SfietKonstantin.patchmanager.service \
+ systemd/lipstick-patchmanager.service
+systemd.path = /usr/lib/systemd/user
+INSTALLS += systemd
+
+icons.files = patchmanager-icon.svg
+icons.path = /usr/share/patchmanager/data
+INSTALLS += icons
+
+gui.files = dialog.qml
+gui.path = /usr/share/patchmanager/data
+INSTALLS += gui
+
+SOURCES += \
+ main.cpp
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/bin/patchmanager-daemon/main.cpp
^
|
@@ -1,8 +1,13 @@
/*
* Copyright (C) 2013 Lucien XU <sfietkonstantin@free.fr>
* Copyright (C) 2016 Andrey Kozhevnikov <coderusinbox@gmail.com>
+ * Copyright (c) 2021, Patchmanager for SailfishOS contributors:
+ * - olf "Olf0" <https://github.com/Olf0>
+ * - Peter G. "nephros" <sailfish@nephros.org>
+ * - Vlad G. "b100dian" <https://github.com/b100dian>
*
- * You may use this file under the terms of the BSD license as follows:
+ * You may use this file under the terms of the 3-clause BSD license,
+ * as follows:
*
* "Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -48,11 +53,11 @@
std::cout << "patchmanager" << std::endl;
std::cout << std::endl;
std::cout << "Usage:" << std::endl;
- std::cout << " patchmanager : run as daemon" << std::endl;
- std::cout << " patchmanager -a <patch> : apply a patch" << std::endl;
- std::cout << " patchmanager -u <patch> : unapply a patch" << std::endl;
- std::cout << " patchmanager --unapply-all : unapply all patches" << std::endl;
- std::cout << " patchmanager --daemon : daemonize" << std::endl;
+ std::cout << " patchmanager [--help] : Print this help text" << std::endl;
+ std::cout << " patchmanager -a <Patch> : Enable and activate a Patch" << std::endl;
+ std::cout << " patchmanager -u <Patch> : Deactivate and disable (unapply) a Patch" << std::endl;
+ std::cout << " patchmanager --unapply-all : Deactivate and disable (unapply) all Patches" << std::endl;
+ std::cout << " patchmanager --daemon : Start Patchmanager as daemon" << std::endl;
}
int main(int argc, char **argv)
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/bin/patchmanager-daemon/patch/patch.json
^
|
@@ -1,6 +1,6 @@
{
- "name": "Unapply all patches on Upgrade",
- "description": "Patch for unapplying all patches when upgrading SailfishOS version. Do not unapply this patch manually, unless you want to completely uninstall Patchmanager.",
+ "name": "Deactivate and disable (unapply) all Patches on upgrade",
+ "description": "Patch for unapplying all Patches when upgrading SailfishOS. Do not unapply this Patch manually, unless you want to remove (uninstall) Patchmanager completely.",
"category": "settings",
"infos": {
"maintainer": "coderus"
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/bin/patchmanager-daemon/patchmanager-daemon.pro
^
|
@@ -9,6 +9,7 @@
PKGCONFIG += popt
INCLUDEPATH += /usr/include/rpm
+QMAKE_CXXFLAGS += -Werror
QMAKE_CFLAGS += -fPIE
QMAKE_CXXFLAGS += -fPIE
QMAKE_LFLAGS += -pie
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/bin/patchmanager-daemon/patchmanagerobject.cpp
^
|
@@ -116,7 +116,7 @@
static const QString BIN_UNZIP = QStringLiteral("/usr/bin/unzip");
static const QString BIN_TAR = QStringLiteral("/bin/tar");
static const QString BIN_PKCON = QStringLiteral("/usr/bin/pkcon");
-static const QString BIN_SYSTEMCTL_U = QStringLiteral("/bin/systemctl-user");
+static const QString BIN_SYSTEMCTL_U = QStringLiteral("/usr/bin/systemctl-user");
static const QString BIN_RPM = QStringLiteral("/bin/rpm");
static const QString BROWSER_CODE = QStringLiteral("browser");
@@ -243,7 +243,7 @@
break;
case NotifyActionSuccessUnapply:
summary = qApp->translate("", "Patch deactivated");
- body = qApp->translate("", "Patch %1 deactivated.").arg(patch);
+ body = qApp->translate("", "Patch %1 is now inactive.").arg(patch);
if (getToggleServices()) {
body.append( ", " );
body.append( qApp->translate("", "some service(s) should be restarted.") );
@@ -333,7 +333,7 @@
QFile file (AUSMT_INSTALLED_LIST_FILE);
if (file.exists()) {
- qWarning() << Q_FUNC_INFO << "Found extant AUSMT package list, importing list as Patches marked active.";
+ qWarning() << Q_FUNC_INFO << "Found extant AUSMT package list, importing list as enabled Patches.";
if (file.open(QFile::ReadOnly)) {
while (!file.atEnd()) {
const QString line = QString::fromLatin1(file.readLine());
@@ -824,7 +824,6 @@
qWarning() << Q_FUNC_INFO << "Error sending message";
qDebug() << Q_FUNC_INFO << "Invoking systemctl:" <<
QProcess::execute(BIN_SYSTEMCTL_U, { QStringLiteral("--no-block"), QStringLiteral("restart"), serviceName });
- QProcess::execute(QStringLiteral("/bin/systemctl-user"), { QStringLiteral("--no-block"), QStringLiteral("restart"), serviceName });
}
}
@@ -938,13 +937,19 @@
{
const QStringList args = QCoreApplication::arguments();
- if (args.count() == 2 && args[1] == QStringLiteral("--daemon")) {
- initialize();
- } else if (args[1] == QStringLiteral("--reset-system")) {
- resetSystem();
- QCoreApplication::exit(2);
- return;
- } else if (args.count() > 1) {
+ if (args.count() == 1) {
+ return; // Prints help text.
+ } else if (args.count() == 2) {
+ if (args[1] == QStringLiteral("--help")) {
+ return; // Also prints help text.
+ } else if (args[1] == QStringLiteral("--daemon")) {
+ initialize();
+ } else if (args[1] == QStringLiteral("--reset-system")) {
+ resetSystem();
+ QCoreApplication::exit(2);
+ return;
+ }
+ } else if (args.count() > 1) { // Must be "> 1", not "> 2" for "--unapply-all"
QDBusConnection connection = QDBusConnection::systemBus();
qDebug() << Q_FUNC_INFO << "Has arguments, sending D-Bus message and quit.";
@@ -1374,7 +1379,7 @@
qDebug() << Q_FUNC_INFO << state;
if (!getLoaded() && !m_failed && !getSettings(QStringLiteral("applyOnBoot"), false).toBool()) {
- qDebug() << Q_FUNC_INFO << "Automatically activating all Patches marked active after SailfishOS booted.";
+ qDebug() << Q_FUNC_INFO << "Automatically activate all enabled Patches when SailfishOS starts.";
QTimer::singleShot(20000, this, [this](){
QDBusMessage showPatcher = QDBusMessage::createMethodCall(QStringLiteral("org.SfietKonstantin.patchmanager"),
QStringLiteral("/"),
@@ -1451,10 +1456,10 @@
const QString activeState = changedProperties.value(QStringLiteral("ActiveState"), QStringLiteral("unknown")).toString();
qDebug() << Q_FUNC_INFO << activeState;
if (activeState == QStringLiteral("failed")) {
- qInfo() << Q_FUNC_INFO << "Detected lipstick crash, hence deactivating all Patches.";
+ qInfo() << Q_FUNC_INFO << "Detected lipstick crash, hence deactivating and disabling all Patches.";
unapplyAllPatches();
} else if (activeState == QStringLiteral("active") && !getLoaded() && !m_failed && !getSettings(QStringLiteral("applyOnBoot"), false).toBool()) {
- qInfo() << Q_FUNC_INFO << "Automatically activating all Patches marked active.";
+ qInfo() << Q_FUNC_INFO << "Automatically activating all enabled Patches.";
QTimer::singleShot(5000, this, [this](){
QDBusMessage showPatcher = QDBusMessage::createMethodCall(QStringLiteral("org.SfietKonstantin.patchmanager"),
QStringLiteral("/"),
@@ -1471,7 +1476,7 @@
return;
}
- qInfo() << Q_FUNC_INFO << "Detected SailfishOS update in progress, hence deactivating all Patches.";
+ qInfo() << Q_FUNC_INFO << "Detected SailfishOS update in progress, hence deactivating and disabling all Patches.";
unapplyAllPatches();
}
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/preload/preload.pro
^
|
@@ -4,7 +4,7 @@
CONFIG += link_pkgconfig
PKGCONFIG += libshadowutils
INCLUDEPATH += /usr/include/libshadowutils
-QMAKE_CFLAGS += -std=c11
+QMAKE_CFLAGS += -std=c11 -Werror
LIBS = -ldl
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/preload/src/preloadpatchmanager.c
^
|
@@ -96,17 +96,14 @@
close(sockfd);
}
-static uid_t user_uid()
-{
- return getdef_num("UID_MIN", 100000);
-}
-
static int pm_validate_uid(uid_t uid)
{
#ifdef ALLOW_ALL_USERS
+ (void)uid; // avoid -Wunused-parameter warning
return 1;
#else // #ifdef ALLOW_ALL_USERS
- return uid >= user_uid();
+ uid_t user_uid = getdef_num("UID_MIN", 100000);
+ return uid >= user_uid;
#endif // #ifdef ALLOW_ALL_USERS
}
@@ -165,7 +162,8 @@
#ifndef NO_INTERCEPT
char new_name[PATH_MAX];
- realpath(pathname, new_name);
+ // suppress -Wunused-result warning, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425#c34
+ (void) !realpath(pathname, new_name);
const int d_no_preload = no_preload();
const int d_pm_validate_uid = pm_validate_uid(getuid());
@@ -209,7 +207,8 @@
#ifndef NO_INTERCEPT
char new_name[PATH_MAX];
- realpath(pathname, new_name);
+ // suppress -Wunused-result warning, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425#c34
+ (void) !realpath(pathname, new_name);
const int d_no_preload = no_preload();
const int d_pm_validate_uid = pm_validate_uid(getuid());
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/qml/PatchManagerPage.qml
^
|
@@ -159,7 +159,7 @@
*/
MenuItem {
- text: qsTranslate("", "Deactivate all Patches")
+ text: qsTranslate("", "Disable and deactivate all Patches")
onClicked: menuRemorse.execute( text, function() { PatchManager.call(PatchManager.unapplyAllPatches()) } )
visible: uisettings.showUnapplyAll
}
@@ -376,7 +376,7 @@
function doPatch() {
view.model.saveLayout()
if (!patchObject.details.patched) {
- if (PatchManager.developerMode || patchObject.details.isCompatible) {
+ if ((PatchManager.sfosVersionCheck !== VersionCheck.Strict) || patchObject.details.isCompatible) {
patchObject.apply()
} else {
errorMessageComponent.createObject(background, {text: qsTranslate("", "This Patch is incompatible with the installed SailfishOS version.")})
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/qml/SettingsPage.qml
^
|
@@ -55,11 +55,22 @@
property bool showUnapplyAll: false
}
+ Component.onCompleted: migrateDevModeSettings()
+ function migrateDevModeSettings() {
+ if (PatchManager.developerMode === true) {
+ console.info("Migrating settings from deprecated developerMode setting.")
+ PatchManager.patchDevelMode = true
+ PatchManager.sfosVersionCheck = VersionCheck.NoCheck
+ PatchManager.developerMode = false
+ }
+ }
+
SilicaFlickable {
id: flick
anchors.fill: parent
+ contentHeight: content.height
- Column {
+ Column { id: content
width: parent.width
spacing: Theme.paddingMedium
@@ -78,10 +89,8 @@
automaticCheck: false
}
- SectionHeader { text: qsTranslate("", "Advanced") }
-
TextSwitch {
- text: qsTranslate("", "Activate Patches when booting")
+ text: qsTranslate("", "Activate enabled Patches when booting")
description: qsTranslate("", "Automatically activate all enabled Patches when SailfishOS starts.")
checked: PatchManager.applyOnBoot
onClicked: PatchManager.applyOnBoot = !PatchManager.applyOnBoot
@@ -89,20 +98,51 @@
}
TextSwitch {
- text: qsTranslate("", "Show 'Deactivate all Patches' pulley menu entry")
- description: qsTranslate("", "Enable an additional pulley menu entry for Patchmanager's main page to deactivate all Patches.")
+ text: qsTranslate("", "Show 'Disable and deactivate all Patches' pulley menu entry")
+ description: qsTranslate("", "Enable an additional pulley menu entry for Patchmanager's main page to disable and deactivate all Patches.")
checked: uisettings.showUnapplyAll
onClicked: uisettings.showUnapplyAll = !uisettings.showUnapplyAll
automaticCheck: false
}
+ SectionHeader { text: qsTranslate("", "Advanced") }
+
+ ComboBox {
+ anchors {
+ leftMargin: Theme.paddingLarge*2 // align to TextSwitch labels
+ right: parent.right
+ left: parent.left
+ }
+ label: qsTranslate("", "Version Check") + ":"
+ description: qsTranslate("", "Allow to enable Patches, which are not marked as compatible with the installed SailfishOS version. Note that Patches, which are actually incompatible, will not work.")
+ onCurrentIndexChanged: PatchManager.sfosVersionCheck = currentIndex
+ currentIndex: (PatchManager.sfosVersionCheck) ? PatchManager.sfosVersionCheck : VersionCheck.Strict
+ menu: ContextMenu {
+ // FIXME: Use the PatchManager::VersionCheck enum, however, how to map enum to text?
+ MenuItem { text: qsTranslate("", "Strict") }
+ MenuItem { text: qsTranslate("", "No check") }
+ //MenuItem { text: qsTranslate("", "Relaxed") } // TODO, see `src/qml/patchmanager.h`, line 68
+ }
+ }
+
+ TextSwitch {
+ text: qsTranslate("", "Mode for Patch developers")
+ description: qsTranslate("", "Enable various functions to be used by Patch developers. Among other things, it shows debug log files for applying the patch file when a Patch is activated on its details page.")
+ checked: PatchManager.patchDevelMode
+ onClicked: PatchManager.patchDevelMode = !PatchManager.patchDevelMode
+ automaticCheck: false
+ }
+
+ /*
+ * legacy/deprecated Developer mode. See Issue #333 & MR #334
TextSwitch {
- text: qsTranslate("", "Allow incompatible Patches")
- description: qsTranslate("", "Enable activating Patches, which are not marked as compatible with the installed SailfishOS version. Note that Patches, which are actually incompatible, will not work.")
+ text: qsTranslate("", "Developer mode")
+ description: qsTranslate("", "Enable various functions to be used by Patch developers. Among other things, it shows debug log files for applying the patch file when a Patch is activated on its details page.")
checked: PatchManager.developerMode
onClicked: PatchManager.developerMode = !PatchManager.developerMode
automaticCheck: false
}
+ */
TextSwitch {
id: fixBitSwitch
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/qml/WebCatalogPage.qml
^
|
@@ -170,11 +170,7 @@
onClicked: {
pageStack.push(Qt.resolvedUrl("WebPatchPage.qml"),
- {
- modelData: model,
- delegate: background,
- versions: versions
- })
+ { modelData: model, versions: versions })
}
Column {
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/qml/WebPatchPage.qml
^
|
@@ -80,6 +80,15 @@
text: fetching ? qsTranslate("", "Fetching patch data") : qsTranslate("", "Failed to fetch Patch data")
}
+ PullDownMenu {
+ visible: PatchManager.patchDevelMode
+ MenuItem {
+ text: qsTranslate("", "Open Project Page")
+ // FIXME: do not hardcode location:
+ onClicked: Qt.openUrlExternally("https://coderus.openrepos.net/pm2/project/" + patchData.name)
+ }
+ }
+
Column {
id: content
width: parent.width
@@ -105,7 +114,7 @@
Item {
width: parent.width
height: Theme.itemSizeSmall
- visible: patchData
+ visible: !!patchData
Image {
id: activationsIcon
@@ -120,7 +129,7 @@
anchors.left: activationsIcon.right
anchors.leftMargin: Theme.paddingSmall
anchors.verticalCenter: parent.verticalCenter
- text: patchData && patchData.total_activations ? patchData.total_activations : "0"
+ text: !!patchData && patchData.total_activations ? patchData.total_activations : "0"
}
Image {
@@ -136,7 +145,7 @@
anchors.left: likeIcon.right
anchors.leftMargin: Theme.paddingSmall
anchors.verticalCenter: parent.verticalCenter
- text: patchData && patchData.rating ? patchData.rating : "0"
+ text: !!patchData && patchData.rating ? patchData.rating : "0"
}
IconButton {
@@ -190,7 +199,7 @@
verticalCenter: parent.verticalCenter
}
font.pixelSize: Theme.fontSizeSmall
- text: patchData && patchData.author ? qsTranslate("", "Author: %1").arg(patchData.author) : ""
+ text: !!patchData && patchData.author ? qsTranslate("", "Author: %1").arg(patchData.author) : ""
}
}
@@ -202,18 +211,18 @@
margins: Theme.horizontalPageMargin
}
wrapMode: Text.WordWrap
- text: patchData && patchData.description ? patchData.description : ""
+ text: !!patchData && patchData.description ? patchData.description : ""
}
SectionHeader {
text: qsTranslate("", "Links")
- visible: patchData && (!!patchData.discussion || !!patchData.donations || !!patchData.sources)
+ visible: !!patchData && (!!patchData.discussion || !!patchData.donations || !!patchData.sources)
}
BackgroundItem {
width: parent.width
height: Theme.itemSizeExtraSmall
- visible: patchData && !!patchData.discussion
+ visible: !!patchData && !!patchData.discussion
onClicked: {
Qt.openUrlExternally(patchData.discussion)
@@ -227,14 +236,14 @@
margins: Theme.horizontalPageMargin
verticalCenter: parent.verticalCenter
}
- text: patchData && patchData.discussion ? qsTranslate("", "Open discussion link") : ""
+ text: !!patchData && patchData.discussion ? qsTranslate("", "Open discussion link") : ""
}
}
BackgroundItem {
width: parent.width
height: Theme.itemSizeExtraSmall
- visible: patchData && !!patchData.donations
+ visible: !!patchData && !!patchData.donations
onClicked: {
Qt.openUrlExternally(patchData.donations)
@@ -248,14 +257,14 @@
margins: Theme.horizontalPageMargin
verticalCenter: parent.verticalCenter
}
- text: patchData && patchData.donations ? qsTranslate("", "Donate") : ""
+ text: !!patchData && patchData.donations ? qsTranslate("", "Donate") : ""
}
}
BackgroundItem {
width: parent.width
height: Theme.itemSizeExtraSmall
- visible: patchData && patchData.sources
+ visible: !!patchData && patchData.sources
onClicked: {
Qt.openUrlExternally(patchData.value.sources)
@@ -269,13 +278,13 @@
margins: Theme.horizontalPageMargin
verticalCenter: parent.verticalCenter
}
- text: patchData && patchData.sources ? qsTranslate("", "Sources") : ""
+ text: !!patchData && patchData.sources ? qsTranslate("", "Sources") : ""
}
}
SectionHeader {
text: qsTranslate("", "Screenshots")
- visible: patchData && !!patchData.screenshots && patchData.screenshots.length > 0
+ visible: !!patchData && !!patchData.screenshots && patchData.screenshots.length > 0
}
Flickable {
@@ -284,14 +293,14 @@
contentHeight: height
contentWidth: contentRow.width
flickableDirection: Flickable.HorizontalFlick
- visible: patchData && patchData.screenshots && patchData.screenshots.length > 0
+ visible: !!patchData && patchData.screenshots && patchData.screenshots.length > 0
boundsBehavior: Flickable.StopAtBounds
Row {
id: contentRow
height: Screen.height / 4
Repeater {
- model: patchData && patchData.screenshots ? patchData.screenshots : 0
+ model: !!patchData && patchData.screenshots ? patchData.screenshots : 0
delegate: MouseArea {
anchors.verticalCenter: parent.verticalCenter
width: imgItem.width * imgItem.scale
@@ -321,11 +330,11 @@
SectionHeader {
text: qsTranslate("", "Files")
- visible: patchData && patchData.files
+ visible: !!patchData && patchData.files
}
Repeater {
- model: patchData && patchData.files ? patchData.files : 0
+ model: !!patchData && patchData.files ? patchData.files : 0
delegate: ListItem {
id: fileDelegate
width: parent.width
@@ -335,7 +344,7 @@
property bool isReinstallable: isInstalled && isCompatible
onClicked: {
- if (!PatchManager.developerMode && !isCompatible) {
+ if ((PatchManager.sfosVersionCheck !== VersionCheck.Strict) && !isCompatible) {
errorMessageComponent.createObject(fileDelegate, {text: qsTranslate("", "This Patch is incompatible with the installed SailfishOS version.")})
} else if (!fileDelegate.isInstalled) {
remorseAction(qsTranslate("", "Install Patch %1").arg(patchData.display_name), installPatch)
@@ -395,10 +404,10 @@
color: Theme.highlightColor
text: fileDelegate.isInstalled
? ( fileDelegate.isReinstallable
- ? qsTranslate("", "[click to re-install]")
+ ? qsTranslate("", "[tap to re-install]")
: qsTranslate("", "[installed]")
)
- : qsTranslate("", "[click to install]")
+ : qsTranslate("", "[tap to install]")
}
Label {
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/qml/patchmanager.cpp
^
|
@@ -188,16 +188,42 @@
bool PatchManager::developerMode() const
{
+ qWarning() << Q_FUNC_INFO << "read from deprecated property developerMode";
return getSettingsSync(QStringLiteral("developerMode"), false).toBool();
}
void PatchManager::setDeveloperMode(bool developerMode)
{
+ qWarning() << Q_FUNC_INFO << "write to deprecated property developerMode";
if (putSettingsSync(QStringLiteral("developerMode"), developerMode)) {
emit developerModeChanged(developerMode);
}
}
+bool PatchManager::patchDevelMode() const
+{
+ return getSettingsSync(QStringLiteral("patchDevelMode"), false).toBool();
+}
+
+void PatchManager::setPatchDevelMode(bool patchDevelMode)
+{
+ if (putSettingsSync(QStringLiteral("patchDevelMode"), patchDevelMode)) {
+ emit patchDevelModeChanged(patchDevelMode);
+ }
+}
+
+int PatchManager::sfosVersionCheck() const
+{
+ return getSettingsSync(QStringLiteral("sfosVersionCheck"), 0).toInt();
+}
+
+void PatchManager::setSfosVersionCheck(int sfosVersionCheck)
+{
+ if (putSettingsSync(QStringLiteral("sfosVersionCheck"), sfosVersionCheck)) {
+ emit sfosVersionCheckChanged(sfosVersionCheck);
+ }
+}
+
bool PatchManager::applyOnBoot() const
{
return getSettingsSync(QStringLiteral("applyOnBoot"), false).toBool();
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/qml/patchmanager.h
^
|
@@ -58,6 +58,22 @@
};
+class PatchManagerVersionCheck
+{
+ Q_GADGET
+
+public:
+ enum CheckMode {
+ Strict,
+ NoCheck,
+ //Relaxed, // TODO, Issue #322, also see https://github.com/sailfishos-patches/patchmanager/issues/333#issuecomment-1374118045
+ };
+ Q_ENUM(CheckMode)
+private:
+ explicit PatchManagerVersionCheck() {}
+};
+typedef PatchManagerVersionCheck::CheckMode VersionCheck;
+
class QDBusPendingCallWatcher;
class PatchManagerInterface;
class PatchManager: public QObject
@@ -65,10 +81,12 @@
Q_OBJECT
Q_PROPERTY(QString serverMediaUrl READ serverMediaUrl CONSTANT)
Q_PROPERTY(bool developerMode READ developerMode WRITE setDeveloperMode NOTIFY developerModeChanged)
+ Q_PROPERTY(bool patchDevelMode READ patchDevelMode WRITE setPatchDevelMode NOTIFY patchDevelModeChanged)
+ Q_PROPERTY(int sfosVersionCheck READ sfosVersionCheck WRITE setSfosVersionCheck NOTIFY sfosVersionCheckChanged)
Q_PROPERTY(bool applyOnBoot READ applyOnBoot WRITE setApplyOnBoot NOTIFY applyOnBootChanged)
Q_PROPERTY(bool notifyOnSuccess READ notifyOnSuccess WRITE setNotifyOnSuccess NOTIFY notifyOnSuccessChanged)
Q_PROPERTY(bool bitnessMangle READ bitnessMangle WRITE setBitnessMangle NOTIFY bitnessMangleChanged)
- Q_PROPERTY(QStringList mangleCandidates READ mangleCandidates)
+ Q_PROPERTY(QStringList mangleCandidates READ mangleCandidates NOTIFY mangleCandidatesChanged)
Q_PROPERTY(PatchManagerModel *installedModel READ installedModel CONSTANT)
Q_PROPERTY(QVariantMap updates READ getUpdates NOTIFY updatesChanged)
Q_PROPERTY(QStringList updatesNames READ getUpdatesNames NOTIFY updatesChanged)
@@ -85,6 +103,10 @@
QString serverMediaUrl() const;
bool developerMode() const;
void setDeveloperMode(bool developerMode);
+ bool patchDevelMode() const;
+ void setPatchDevelMode(bool patchDevelMode);
+ int sfosVersionCheck() const;
+ void setSfosVersionCheck(int sfosVersionCheck);
bool applyOnBoot() const;
bool notifyOnSuccess() const;
void setApplyOnBoot(bool applyOnBoot);
@@ -165,9 +187,12 @@
signals:
void easterReceived(const QString & easterText);
void developerModeChanged(bool developerMode);
+ void patchDevelModeChanged(bool patchDevelMode);
+ void sfosVersionCheckChanged(bool sfosVersionCheck);
void applyOnBootChanged(bool applyOnBoot);
void notifyOnSuccessChanged(bool notifyOnSuccess);
void bitnessMangleChanged(bool bitnessMangle);
+ void mangleCandidatesChanged(const QStringList &mangleCandidates);
void updatesChanged();
void toggleServicesChanged(bool toggleServices);
void failureChanged(bool failed);
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/qml/plugin.cpp
^
|
@@ -73,6 +73,8 @@
qmlRegisterSingletonType<PatchManagerTranslator>(uri, 2, 0, "PatchManagerTranslator", patchmanagertransalator_singleton);
qmlRegisterType<WebPatchesModel>(uri, 2, 0, "WebPatchesModel");
qmlRegisterUncreatableType<QDBusPendingCallWatcher>(uri, 2, 0, "QDBusPendingCallWatcher", "Compatibility import");
+ qmlRegisterUncreatableType<PatchManagerVersionCheck>(uri, 2, 0, "VersionCheck", "Not creatable as it is an enum type.");
+
}
};
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/qml/qml.pro
^
|
@@ -4,6 +4,7 @@
TEMPLATE = lib
QT = core qml network dbus gui
CONFIG += qt plugin hide_symbols
+QMAKE_CXXFLAGS += -Werror
HEADERS += \
patchmanager.h \
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/tools/pm_apply
^
|
@@ -23,7 +23,7 @@
PATCH_PATH="$PATCH_DIR/$PATCH_NAME"
PATCH_EDITED_NAME="unified_diff_${SYS_BITNESS}bit.patch"
-# list of candidate paths to attempt 32/64bit library path correction
+# list of candidate paths to attempt 32-/64-bit library path correction
MANGLE_CANDIDATES=""
if [ -z "$DISABLE_MANGLING" ] && [ -r "/etc/patchmanager/manglelist.conf" ] ; then
source /etc/patchmanager/manglelist.conf
@@ -78,13 +78,13 @@
fi
}
-# see issue #71: https://github.com/sailfishos-patches/patchmanager/issues/71
+# For details see issue #71: https://github.com/sailfishos-patches/patchmanager/issues/71
mangle_libpath() {
if [ -f "$PATCH_PATH" ]; then
log
log "----------------------------------"
- [ $SYS_BITNESS -eq 32 ] && log "Checking paths for 32->64bit conversion"
- [ $SYS_BITNESS -eq 64 ] && log "Checking paths for 64->32bit conversion"
+ [ $SYS_BITNESS -eq 32 ] && log "Checking paths for 32-bit --> 64-bit conversion"
+ [ $SYS_BITNESS -eq 64 ] && log "Checking paths for 64-bit --> 32-bit conversion"
log "----------------------------------"
log
@@ -149,7 +149,7 @@
if [ -f "$PATCH_PATH" ]; then
log
log "----------------------------------"
- log "Dry running patch"
+ log "Dry running patch file"
log "----------------------------------"
log
@@ -164,7 +164,7 @@
if [ -f "$PATCH_PATH" ]; then
log
log "----------------------------------"
- log "Applying text patch"
+ log "Applying patch file"
log "----------------------------------"
log
@@ -175,11 +175,13 @@
create_backup_patch() {
log
log "----------------------------------"
- log "Creating backup patch"
+ log "Creating backup of patch file"
log "----------------------------------"
log
mkdir -p "$PM_PATCH_BACKUP_DIR" > /dev/null 2>&1
+ # Backup the original patch file, NOT $PATCH_PATH, which might be altered by 32-/64-bit mangling in line 143.
+ # If mangling was performed successfully, it already wrote its patched $PATCH_EDITED_NAME to $PM_PATCH_BACKUP_DIR in line 134.
cp -f "$PATCH_DIR/$PATCH_NAME" "$PM_PATCH_BACKUP_DIR" > /dev/null 2>&1
log "Created backup: $PM_PATCH_BACKUP_DIR"
log
@@ -202,7 +204,7 @@
log
if [ -z "$PARAMETER" ]; then
- log "ERROR: A parameter must be provided for applying!"
+ log "ERROR: A parameter must be provided for the pm_apply script!"
failure
fi
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/src/tools/pm_unapply
^
|
@@ -82,7 +82,7 @@
if [ -f "$PATCH_FILE" ]; then
log
log "----------------------------------"
- log "Unapplying text patch"
+ log "Reverting (unapplying) applied patch file"
log "----------------------------------"
log
@@ -93,7 +93,7 @@
clean_backup_patch() {
log
log "----------------------------------"
- log "Cleaning backup patch"
+ log "Deleting backup of patch file"
log "----------------------------------"
log
@@ -117,7 +117,7 @@
log
if [ -z "$PARAMETER" ]; then
- log "ERROR: A parameter must be provided for unapplying!"
+ log "ERROR: A parameter must be provided for the pm_unapply script!"
failure
fi
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/translations/settings-patchmanager-de.ts
^
|
@@ -34,7 +34,7 @@
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="54"/>
- <location filename="../src/qml/PatchManagerPage.qml" line="147"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="168"/>
<source>About Patchmanager</source>
<translation>Über Patchmanager</translation>
</message>
@@ -88,22 +88,22 @@
<translation>Wenn du aus irgendeinem Grund nicht an Openrepos spenden möchtest, so schätzen wir auch eine Spende an die Free Software Foundation Europe (FSFE).</translation>
</message>
<message>
- <location filename="../src/qml/WebPatchPage.qml" line="251"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="260"/>
<source>Donate</source>
<translation>Spenden</translation>
</message>
<message>
- <location filename="../src/qml/DevelopersPage.qml" line="162"/>
+ <location filename="../src/qml/DevelopersPage.qml" line="152"/>
<source>Developers</source>
<translation>Entwickler</translation>
</message>
<message>
- <location filename="../src/qml/DevelopersPage.qml" line="201"/>
+ <location filename="../src/qml/DevelopersPage.qml" line="191"/>
<source>%1's webpage</source>
<translation>%1's Webseite</translation>
</message>
<message>
- <location filename="../src/qml/DevelopersPage.qml" line="206"/>
+ <location filename="../src/qml/DevelopersPage.qml" line="196"/>
<source>%1's %2 account</source>
<translation>%1's %2-Account</translation>
</message>
@@ -209,91 +209,91 @@
<translation>Es existiert noch kein Log</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="152"/>
- <source>Deactivate all Patches</source>
- <translation>Deaktiviere alle Patches</translation>
+ <location filename="../src/qml/PatchManagerPage.qml" line="162"/>
+ <source>Disable and deactivate all Patches</source>
+ <translation>Alle Patches abschalten und deaktivieren</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="158"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="178"/>
<source>Start Patchmanager's daemon</source>
<translation>Starte den Patchmanager-Daemon</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="164"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="184"/>
<source>Updates available</source>
<translation>Updates verfügbar</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="164"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="184"/>
<location filename="../src/qml/WebCatalogPage.qml" line="106"/>
<source>Web Catalog</source>
<translation>Web Katalog</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="170"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="190"/>
<source>Restart preloaded services</source>
<translation>Vorinstallierte Dienste neu starten</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="176"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="196"/>
<source>Resolve failure</source>
<translation>Fehler beheben</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="183"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="203"/>
<source>Installed Patches</source>
<translation>Installierte Patches</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="362"/>
- <location filename="../src/qml/WebPatchPage.qml" line="338"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="382"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="348"/>
<source>This Patch is incompatible with the installed SailfishOS version.</source>
<translation>Dieser Patch ist inkompatibel mit der installierten SailfishOS Version.</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="370"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="390"/>
<source>Removing Patch %1</source>
<translation>Patch %1 wird entfernt</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="475"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="495"/>
<source>Compatible with:</source>
<translation>Kompatibel mit:</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="490"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="510"/>
<source>May conflict with another Patch, see %1</source>
<translation>Könnte mit einem anderen Patch kollidieren, siehe %1</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="491"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="511"/>
<source>May conflict with %2 other Patches, see %1</source>
<translation>Könnte mit %2 anderen Patches kollidieren, siehe %1</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="495"/>
- <location filename="../src/qml/WebPatchPage.qml" line="90"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="515"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="99"/>
<source>Patch details</source>
<translation>Patch-Details</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="499"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="519"/>
<source>Deactivate</source>
<translation>Deaktiviere</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="499"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="519"/>
<source>Activate</source>
<translation>Aktiviere</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="504"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="524"/>
<source>Remove</source>
<translation>Entferne</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="518"/>
- <location filename="../src/qml/WebCatalogPage.qml" line="253"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="538"/>
+ <location filename="../src/qml/WebCatalogPage.qml" line="249"/>
<source>No Patches available</source>
<translation>Keine Patches verfügbar</translation>
</message>
@@ -329,7 +329,7 @@
</message>
<message>
<location filename="../src/qml/ScreenshotsPage.qml" line="71"/>
- <location filename="../src/qml/WebPatchPage.qml" line="277"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="286"/>
<source>Screenshots</source>
<translation>Screenshots</translation>
</message>
@@ -374,7 +374,7 @@
<translation>Antippen zum Suchen</translation>
</message>
<message>
- <location filename="../src/qml/WebCatalogPage.qml" line="240"/>
+ <location filename="../src/qml/WebCatalogPage.qml" line="236"/>
<source>Update available: %1</source>
<translation>Aktualisierung verfügbar: %1</translation>
</message>
@@ -389,49 +389,64 @@
<translation>Hole Patch-Daten</translation>
</message>
<message>
- <location filename="../src/qml/WebPatchPage.qml" line="193"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="86"/>
+ <source>Open Project Page</source>
+ <translation>Projektseite öffnen</translation>
+ </message>
+ <message>
+ <location filename="../src/qml/WebPatchPage.qml" line="202"/>
<source>Author: %1</source>
<translation>Autor: %1</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="190"/>
- <location filename="../src/qml/WebPatchPage.qml" line="209"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="218"/>
<source>Links</source>
<translation>Links</translation>
</message>
<message>
- <location filename="../src/qml/WebPatchPage.qml" line="230"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="239"/>
<source>Open discussion link</source>
<translation>Link zur Diskussion</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="208"/>
- <location filename="../src/qml/WebPatchPage.qml" line="272"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="281"/>
<source>Sources</source>
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/translations/settings-patchmanager-sv.ts
^
|
@@ -5,12 +5,12 @@
<location filename="../src/bin/dialog/dialog.qml" line="63"/>
<location filename="../src/bin/dialog/dialog.qml" line="80"/>
<source>Activate all enabled Patches</source>
- <translation>Tillämpa alla aktiva korrigeringar</translation>
+ <translation>Aktivera alla påslagna korrigeringar</translation>
</message>
<message>
<location filename="../src/bin/dialog/dialog.qml" line="89"/>
<source>Patchmanager will start to activate all enabled Patches in 10 seconds.</source>
- <translation>Patchmanager tillämpar alla aktiva korrigeringar om 10 sekunder.</translation>
+ <translation>Patchmanager aktiverar alla påslagna korrigeringar om 10 sekunder.</translation>
</message>
<message>
<location filename="../src/bin/dialog/dialog.qml" line="102"/>
@@ -20,21 +20,21 @@
<message>
<location filename="../src/bin/dialog/dialog.qml" line="177"/>
<source>Activating all enabled Patches took %L1 seconds.</source>
- <translation>Tillämpning av alla aktiva korrigeringar tog %L1 sekunder.</translation>
+ <translation>Aktivering av alla påslagna korrigeringar tog %L1 sekunder.</translation>
</message>
<message>
<location filename="../src/bin/dialog/dialog.qml" line="179"/>
<source>Successfully activated all enabled Patches.</source>
- <translation>Tillämpade alla aktiva korrigeringar.</translation>
+ <translation>Aktiverade alla påslagna korrigeringar.</translation>
</message>
<message>
<location filename="../src/bin/dialog/dialog.qml" line="180"/>
<source>Failed to activate all enabled Patches!</source>
- <translation>Kunde inte tillämpade alla aktiva korrigeringar!</translation>
+ <translation>Kunde inte aktivera alla påslagna korrigeringar!</translation>
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="54"/>
- <location filename="../src/qml/PatchManagerPage.qml" line="147"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="168"/>
<source>About Patchmanager</source>
<translation>Om Patchmanager</translation>
</message>
@@ -54,7 +54,7 @@
<message>
<location filename="../src/qml/AboutPage.qml" line="87"/>
<source>Patchmanager allows to automatically modify system files via Patches. It provides a daemon which performs the activation of Patches, plus a GUI to configure these operations and to install or remove Patches.</source>
- <translation>Patchmanager möjliggör automatiska systemändringar via korrigeringsfiler. Den tillhandahåller en systemtjänst som utför aktivering av korrigeringarna, samt ett grafiskt gränssnitt för att konfigurera dessa åtgärder och installera eller avinstallera korrigeringsfiler.</translation>
+ <translation>Patchmanager möjliggör automatisk ändring av systemfiler, via korrigeringar (patchar). Den tillhandahåller en systemtjänst som utför aktivering av korrigeringarna, samt ett grafiskt gränssnitt för att konfigurera dessa åtgärder och installera eller avinstallera korrigeringar.</translation>
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="101"/>
@@ -88,22 +88,22 @@
<translation>Om du av någon anledning inte kan donera till Openrepos uppskattar vi också donationer till Free Software Foundation Europe (FSFE).</translation>
</message>
<message>
- <location filename="../src/qml/WebPatchPage.qml" line="251"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="260"/>
<source>Donate</source>
<translation>Donera</translation>
</message>
<message>
- <location filename="../src/qml/DevelopersPage.qml" line="162"/>
+ <location filename="../src/qml/DevelopersPage.qml" line="152"/>
<source>Developers</source>
<translation>Utvecklare</translation>
</message>
<message>
- <location filename="../src/qml/DevelopersPage.qml" line="201"/>
+ <location filename="../src/qml/DevelopersPage.qml" line="191"/>
<source>%1's webpage</source>
<translation>%1s webbsida</translation>
</message>
<message>
- <location filename="../src/qml/DevelopersPage.qml" line="206"/>
+ <location filename="../src/qml/DevelopersPage.qml" line="196"/>
<source>%1's %2 account</source>
<translation>%1's %2-konto</translation>
</message>
@@ -145,7 +145,7 @@
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="112"/>
<source>This Patch is not available anymore. You will not be able to reinstall it.</source>
- <translation>Denna korrigeringsfil finns inte längre tillgänglig. Du kommer inte att kunna installera om den.</translation>
+ <translation>Denna korrigering finns inte längre tillgänglig. Du kommer inte att kunna installera om den.</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="121"/>
@@ -181,7 +181,7 @@
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="170"/>
<source>This Patch uses the legacy format for its patch.json file. If you are its maintainer, please do consider updating to the new format; if you are using the Web Catalog you shall not include a patch.json file in your upload!<br />See the developer section in the <a href="%1">README</a> for details.</source>
- <translation>Denna korrigering använder det äldre formatet för filen patch.json. Om du är dess utvecklare bör du överväga att uppdatera till det nya formatet. Om du använder webbkatalogen skall du inte inkludera en patch.json alls i uppladdningen. <br />Se utvecklaravsnittet i <a href="%1">README</a> för mer information.</translation>
+ <translation>Denna korrigering använder det äldre formatet för filen patch.json. Om du är dess utvecklare bör du överväga att uppdatera till det nya formatet. Om du använder webbkatalogen skall du inte inkludera en patch.json i uppladdningen. <br />Se utvecklaravsnittet i <a href="%1">README</a> för mer information.</translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="176"/>
@@ -209,93 +209,93 @@
<translation>Det finns ännu inga loggar</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="152"/>
- <source>Deactivate all Patches</source>
- <translation>Avaktivera alla korrigeringsfiler</translation>
+ <location filename="../src/qml/PatchManagerPage.qml" line="162"/>
+ <source>Disable and deactivate all Patches</source>
+ <translation>Stäng av och avaktivera alla korrigeringar</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="158"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="178"/>
<source>Start Patchmanager's daemon</source>
<translation>Starta Patchmanagers systemtjänst</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="164"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="184"/>
<source>Updates available</source>
<translation>Uppdateringar tillgängliga</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="164"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="184"/>
<location filename="../src/qml/WebCatalogPage.qml" line="106"/>
<source>Web Catalog</source>
<translation>Webbkatalog</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="170"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="190"/>
<source>Restart preloaded services</source>
<translation>Starta om förinlästa tjänster</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="176"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="196"/>
<source>Resolve failure</source>
<translation>Lösningsfel</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="183"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="203"/>
<source>Installed Patches</source>
- <translation>Installerade korrigeringsfiler</translation>
+ <translation>Installerade korrigeringar</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="362"/>
- <location filename="../src/qml/WebPatchPage.qml" line="338"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="382"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="348"/>
<source>This Patch is incompatible with the installed SailfishOS version.</source>
- <translation>Denna korrigeringsfil är inte kompatibel med den installerade versionen av SailfishOS.</translation>
+ <translation>Denna korrigering är inte kompatibel med den installerade versionen av SailfishOS.</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="370"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="390"/>
<source>Removing Patch %1</source>
<translation>Tar bort korrigering %1</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="475"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="495"/>
<source>Compatible with:</source>
<translation>Kompatibel med:</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="490"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="510"/>
<source>May conflict with another Patch, see %1</source>
<translation>Kan komma i konflikt med en annan korrigering, se %1</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="491"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="511"/>
<source>May conflict with %2 other Patches, see %1</source>
<translation>Kan komma i konflikt med %2 andra korrigeringar, se %1</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="495"/>
- <location filename="../src/qml/WebPatchPage.qml" line="90"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="515"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="99"/>
<source>Patch details</source>
<translation>Detaljerad korrigeringsinformation</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="499"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="519"/>
<source>Deactivate</source>
<translation>Avaktivera</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="499"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="519"/>
<source>Activate</source>
<translation>Aktivera</translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="504"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="524"/>
|
[-]
[+]
|
Changed |
_service:tar_git:patchmanager-3.2.6.tar.gz/translations/settings-patchmanager.ts
^
|
@@ -36,7 +36,7 @@
</message>
<message>
<location filename="../src/qml/AboutPage.qml" line="54"/>
- <location filename="../src/qml/PatchManagerPage.qml" line="147"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="168"/>
<source>About Patchmanager</source>
<translation type="unfinished"></translation>
</message>
@@ -90,22 +90,22 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/WebPatchPage.qml" line="251"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="260"/>
<source>Donate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/DevelopersPage.qml" line="162"/>
+ <location filename="../src/qml/DevelopersPage.qml" line="152"/>
<source>Developers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/DevelopersPage.qml" line="201"/>
+ <location filename="../src/qml/DevelopersPage.qml" line="191"/>
<source>%1's webpage</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/DevelopersPage.qml" line="206"/>
+ <location filename="../src/qml/DevelopersPage.qml" line="196"/>
<source>%1's %2 account</source>
<translation type="unfinished"></translation>
</message>
@@ -211,91 +211,91 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="152"/>
- <source>Deactivate all Patches</source>
+ <location filename="../src/qml/PatchManagerPage.qml" line="162"/>
+ <source>Disable and deactivate all Patches</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="158"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="178"/>
<source>Start Patchmanager's daemon</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="164"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="184"/>
<source>Updates available</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="164"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="184"/>
<location filename="../src/qml/WebCatalogPage.qml" line="106"/>
<source>Web Catalog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="170"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="190"/>
<source>Restart preloaded services</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="176"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="196"/>
<source>Resolve failure</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="183"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="203"/>
<source>Installed Patches</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="362"/>
- <location filename="../src/qml/WebPatchPage.qml" line="338"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="382"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="348"/>
<source>This Patch is incompatible with the installed SailfishOS version.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="370"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="390"/>
<source>Removing Patch %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="475"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="495"/>
<source>Compatible with:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="490"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="510"/>
<source>May conflict with another Patch, see %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="491"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="511"/>
<source>May conflict with %2 other Patches, see %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="495"/>
- <location filename="../src/qml/WebPatchPage.qml" line="90"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="515"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="99"/>
<source>Patch details</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="499"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="519"/>
<source>Deactivate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="499"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="519"/>
<source>Activate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="504"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="524"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/PatchManagerPage.qml" line="518"/>
- <location filename="../src/qml/WebCatalogPage.qml" line="253"/>
+ <location filename="../src/qml/PatchManagerPage.qml" line="538"/>
+ <location filename="../src/qml/WebCatalogPage.qml" line="249"/>
<source>No Patches available</source>
<translation type="unfinished"></translation>
</message>
@@ -331,7 +331,7 @@
</message>
<message>
<location filename="../src/qml/ScreenshotsPage.qml" line="71"/>
- <location filename="../src/qml/WebPatchPage.qml" line="277"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="286"/>
<source>Screenshots</source>
<translation type="unfinished"></translation>
</message>
@@ -376,7 +376,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/WebCatalogPage.qml" line="240"/>
+ <location filename="../src/qml/WebCatalogPage.qml" line="236"/>
<source>Update available: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -391,49 +391,64 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/WebPatchPage.qml" line="193"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="86"/>
+ <source>Open Project Page</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/qml/WebPatchPage.qml" line="202"/>
<source>Author: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="190"/>
- <location filename="../src/qml/WebPatchPage.qml" line="209"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="218"/>
<source>Links</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/qml/WebPatchPage.qml" line="230"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="239"/>
<source>Open discussion link</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/qml/UnifiedPatchPage.qml" line="208"/>
- <location filename="../src/qml/WebPatchPage.qml" line="272"/>
+ <location filename="../src/qml/WebPatchPage.qml" line="281"/>
<source>Sources</source>
<translation type="unfinished"></translation>
|