2 * Copyright (C) 2014-2016 Canonical, Ltd.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17#include <QDBusConnection>
18#include <QDBusPendingCall>
22#include "SystemImage.h"
24#define SYSTEMIMAGE_SERVICE QStringLiteral("com.canonical.SystemImage")
25#define SYSTEMIMAGE_PATH QStringLiteral("/Service")
26#define SYSTEMIMAGE_IFACE QStringLiteral("com.canonical.SystemImage")
28SystemImage::SystemImage(QObject *parent)
31 QDBusConnection::systemBus().connect(SYSTEMIMAGE_SERVICE, SYSTEMIMAGE_PATH, SYSTEMIMAGE_IFACE, QStringLiteral("UpdateAvailableStatus"),
32 this, SLOT(onUpdateAvailableStatus(bool,bool,QString,int,QString,QString)));
33 QDBusConnection::systemBus().connect(SYSTEMIMAGE_SERVICE, SYSTEMIMAGE_PATH, SYSTEMIMAGE_IFACE, QStringLiteral("UpdateDownloaded"),
34 this, SLOT(onUpdateDownloaded(bool)));
35 QDBusConnection::systemBus().connect(SYSTEMIMAGE_SERVICE, SYSTEMIMAGE_PATH, SYSTEMIMAGE_IFACE, QStringLiteral("UpdateFailed"),
36 this, SLOT(onUpdateFailed(int,QString)));
37 QDBusConnection::systemBus().connect(SYSTEMIMAGE_SERVICE, SYSTEMIMAGE_PATH, SYSTEMIMAGE_IFACE, QStringLiteral("Applied"),
38 this, SLOT(onUpdateApplied(bool)));
41void SystemImage::checkForUpdate()
43 const QDBusMessage msg = QDBusMessage::createMethodCall(SYSTEMIMAGE_SERVICE, SYSTEMIMAGE_PATH, SYSTEMIMAGE_IFACE,
44 QStringLiteral("CheckForUpdate"));
45 QDBusConnection::systemBus().asyncCall(msg);
48void SystemImage::applyUpdate()
50 const QDBusMessage msg = QDBusMessage::createMethodCall(SYSTEMIMAGE_SERVICE, SYSTEMIMAGE_PATH, SYSTEMIMAGE_IFACE,
51 QStringLiteral("ApplyUpdate"));
52 QDBusConnection::systemBus().asyncCall(msg);
55void SystemImage::factoryReset()
57 const QDBusMessage msg = QDBusMessage::createMethodCall(SYSTEMIMAGE_SERVICE, SYSTEMIMAGE_PATH, SYSTEMIMAGE_IFACE,
58 QStringLiteral("FactoryReset"));
59 QDBusConnection::systemBus().asyncCall(msg);
62void SystemImage::onUpdateAvailableStatus(bool is_available, bool downloading, const QString &available_version, int update_size,
63 const QString &last_update_date, const QString &error_reason)
65 qDebug() << Q_FUNC_INFO << "A new update is" << (is_available ? "" : "NOT") << "available";
67 if (is_available == m_updateAvailable) {
71 m_updateAvailable = is_available;
72 m_downloading = downloading;
73 m_availableVersion = available_version;
74 m_updateSize = update_size;
75 m_lastUpdateDate = last_update_date;
76 m_errorReason = error_reason;
77 Q_EMIT updateAvailableStatus();
80void SystemImage::onUpdateDownloaded(bool downloaded)
82 if (downloaded != m_downloaded) {
83 m_downloaded = downloaded;
84 Q_EMIT updateDownloadedChanged();
88void SystemImage::onUpdateFailed(int consecutive_failure_count, const QString &last_reason)
90 Q_UNUSED(consecutive_failure_count)
91 qWarning() << Q_FUNC_INFO << "System Update failed:" << last_reason;
94void SystemImage::onUpdateApplied(bool applied)
96 qDebug() << Q_FUNC_INFO << "System Update applied with status:" << applied;
99 Q_EMIT updateAvailableStatus();
103void SystemImage::resetUpdateStatus()
105 m_updateAvailable = false;
106 m_downloading = false;
107 m_downloaded = false;
108 m_availableVersion.clear();
110 m_lastUpdateDate.clear();
111 m_errorReason.clear();
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list