1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
/*
SPDX-FileCopyrightText: 2024-2026 Laurent Montel <montel@kde.org>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#include "verifynewversionwidget.h"
#include "textaddonswidgets_debug.h"
#include "verifynewversion/checknewversiondialog.h"
#include "verifynewversionutils.h"
#include <KLocalizedString>
#include <QAction>
#include <QDesktopServices>
#include <QUrl>
using namespace TextAddonsWidgets;
using namespace Qt::Literals::StringLiterals;
VerifyNewVersionWidget::VerifyNewVersionWidget(QObject *parent)
: QObject{parent}
{
}
VerifyNewVersionWidget::~VerifyNewVersionWidget() = default;
bool VerifyNewVersionWidget::canVerifyNewVersion() const
{
return VerifyNewVersionUtils::canVerifyNewVersion();
}
QAction *VerifyNewVersionWidget::verifyNewVersionAction()
{
if (!mVerifyNewVersionAction) {
mVerifyNewVersionAction = new QAction(QIcon::fromTheme(u"view-refresh"_s), i18n("Check New Version"), this);
connect(mVerifyNewVersionAction, &QAction::triggered, this, &VerifyNewVersionWidget::slotVerifyNewVersion);
}
return mVerifyNewVersionAction;
}
void VerifyNewVersionWidget::generateUrlInfo([[maybe_unused]] const QString &stableBranchVersion,
[[maybe_unused]] const QString &url,
[[maybe_unused]] bool stable)
{
#if defined(Q_OS_WIN) || defined(Q_OS_MACOS)
const VerifyNewVersionWidget::VerifyNewVersionInfo info = generateVerifyNewVersionInfo(stableBranchVersion, url, stable);
addOsUrlInfo(info.osVersion, info.generatedUrl);
#endif
}
VerifyNewVersionWidget::VerifyNewVersionInfo VerifyNewVersionWidget::generateVerifyNewVersionInfo([[maybe_unused]] const QString &stableBranchVersion,
[[maybe_unused]] const QString &url,
[[maybe_unused]] bool stable) const
{
VerifyNewVersionWidget::VerifyNewVersionInfo info;
#if defined(Q_OS_WIN) || defined(Q_OS_MACOS)
const QString defaultUrlPath = url;
const QString stableBranch = stableBranchVersion;
QString osName;
TextAddonsWidgets::VerifyNewVersionWidget::OsVersion osVersion = TextAddonsWidgets::VerifyNewVersionWidget::OsVersion::Unknown;
#if defined(Q_OS_WIN)
osName = u"windows"_s;
osVersion = TextAddonsWidgets::VerifyNewVersionWidget::OsVersion::Windows;
#elif defined(Q_OS_MACOS)
#ifdef Q_PROCESSOR_ARM_64
osName = u"macos-arm64"_s;
osVersion = TextAddonsWidgets::VerifyNewVersionWidget::OsVersion::MacOsArm64;
#else
osName = u"macos-x86_64"_s;
osVersion = TextAddonsWidgets::VerifyNewVersionWidget::OsVersion::MacOs;
#endif
#endif
QString generatedUrl;
if (stable) {
generatedUrl = defaultUrlPath + u"/%1/%2/"_s.arg(stableBranch, osName);
} else {
generatedUrl = defaultUrlPath + u"/master/%1/"_s.arg(osName);
}
info.generatedUrl = generatedUrl;
info.osVersion = osVersion;
#endif
return info;
}
#if TEXTADDONSWIDGETS_ENABLE_DEPRECATED_SINCE(1, 9)
void VerifyNewVersionWidget::addOsUrlInfo(OsVersion os, const QString &url)
{
mUrls.insert(os, url);
}
#endif
void VerifyNewVersionWidget::slotVerifyNewVersion()
{
QUrl url;
#ifdef Q_OS_WIN
url = QUrl(mUrls.value(VerifyNewVersionWidget::OsVersion::Windows));
#endif
#ifdef Q_OS_MACOS
#ifdef Q_PROCESSOR_ARM_64
url = QUrl(mUrls.value(VerifyNewVersionWidget::OsVersion::MacOsArm64));
#else
url = QUrl(mUrls.value(VerifyNewVersionWidget::OsVersion::MacOs));
#endif
#endif
if (!url.isEmpty()) {
CheckNewVersionDialog dlg(nullptr);
dlg.setUrl(url);
dlg.checkNewVersion();
dlg.exec();
} else {
qCWarning(TEXTADDONSWIDGETS_LOG) << " url is empty. It seems to be a bug";
}
}
#include "moc_verifynewversionwidget.cpp"
|