File: verifynewversionwidget.cpp

package info (click to toggle)
ktextaddons 1.9.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 17,856 kB
  • sloc: cpp: 62,045; ansic: 6,520; xml: 2,630; sh: 11; makefile: 7
file content (118 lines) | stat: -rw-r--r-- 3,933 bytes parent folder | download
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"