RabbitCommon v2.2.6
Loading...
Searching...
No Matches
Classes | Signals | Public Member Functions | Protected Slots | Protected Member Functions | Private Types | Private Slots | Private Member Functions | Private Attributes | List of all members
CFrmUpdater Class Reference

Updater. More...

#include <FrmUpdater.h>

Inheritance diagram for CFrmUpdater:

Classes

struct  CONFIG_FILE
 
struct  CONFIG_INFO
 
struct  CONFIG_REDIRECT
 
struct  CONFIG_VERSION
 

Signals

void sigError ()
 
void sigFinished ()
 
void sigDownLoadRedire ()
 

Public Member Functions

 CFrmUpdater (QVector< QUrl > urls=QVector< QUrl >(), QWidget *parent=nullptr)
 CFrmUpdater.
 
int SetVersion (const QString &szVersion)
 
int SetTitle (QImage icon=QImage(), const QString &szTitle=QString())
 SetTitle.
 
Q_DECL_DEPRECATED int GenerateUpdateXml ()
 Update XML file used only to generate programs.
 
Q_DECL_DEPRECATED int GenerateUpdateXml (QCommandLineParser &parser)
 
int GenerateUpdateJson ()
 Generate update json configure file.
 
int GenerateUpdateJson (QCommandLineParser &parser)
 Generate update json configure file.
 
int SetInstallAutoStartup (bool bAutoStart=true)
 Set install and automation startup.
 

Protected Slots

void slotDownloadError (int nErr, const QString szError)
 
void slotDownloadFileFinished (const QString szFile)
 
void slotDownloadProgress (qint64 bytesReceived, qint64 bytesTotal)
 
void slotButtonClickd (int id)
 
void slotCheck ()
 
void slotDownloadFile ()
 
virtual void slotCheckConfigFile ()
 
void slotDownloadSetupFile ()
 
void slotUpdate ()
 
void slotStateFinished ()
 
void on_pbOK_clicked ()
 
void on_pbClose_clicked ()
 
void slotShowWindow (QSystemTrayIcon::ActivationReason reason)
 

Protected Member Functions

virtual void showEvent (QShowEvent *event) override
 

Private Types

enum class  CONFIG_TYPE { VERSION , FILE , VERSION_FILE }
 

Private Slots

void on_cbPrompt_clicked (bool checked)
 
void on_cbHomePage_clicked (bool checked)
 

Private Member Functions

 CFrmUpdater (QWidget *parent)
 
int CompareVersion (const QString &newVersion, const QString &currentVersion)
 CFrmUpdater::CompareVersion.
 
int InitStateMachine ()
 Initialization state machine.
 
bool IsDownLoad ()
 Check file is exist.
 
int CheckRedirectConfigFile ()
 检查重定向配置文件
 
int CheckUpdateConfigFile ()
 检查更新配置文件
 
bool CheckPrompt (const QString &szVersion)
 
QString InstallScript (const QString szDownLoadFile, const QString szApplicationName)
 
int GetRedirectFromFile (const QString &szFile, QVector< CONFIG_REDIRECT > &conf)
 Get redirect configure from file.
 
int GetConfigFromFile (const QString &szFile, CONFIG_INFO &conf)
 json 格式:
 
int GetConfigFromCommandLine (QCommandLineParser &parser, QString &szFile, CONFIG_INFO &info, CONFIG_TYPE &type)
 Get configure from command-line.
 
int GenerateUpdateXmlFile (const QString &szFile, const CONFIG_INFO &info, CONFIG_TYPE &type)
 
int GenerateJsonFile (const QString &szFile, const CONFIG_INFO &info, CONFIG_TYPE type)
 Generate Json File.
 

Private Attributes

Ui::CFrmUpdater * ui
 
bool m_InstallAutoStartupType
 
QSystemTrayIcon m_TrayIcon
 
QButtonGroup m_ButtonGroup
 
QString m_szCurrentVersion
 
QFile m_DownloadFile
 
bool m_bDownload
 
QVector< QUrl > m_Urls
 
QSharedPointer< RabbitCommon::CDownloadm_Download
 
QStateMachine m_StateMachine
 
QState * m_pStateDownloadSetupFile
 
struct CFrmUpdater::CONFIG_INFO m_Info
 
CONFIG_FILE m_ConfigFile
 

Detailed Description

Updater.

See also
RabbitCommon::CDownload

Definition at line 69 of file FrmUpdater.h.

Member Enumeration Documentation

◆ CONFIG_TYPE

enum class CFrmUpdater::CONFIG_TYPE
strongprivate

Definition at line 176 of file FrmUpdater.h.

Constructor & Destructor Documentation

◆ CFrmUpdater()

CFrmUpdater::CFrmUpdater ( QVector< QUrl >  urls = QVector<QUrl>(),
QWidget *  parent = nullptr 
)
explicit

CFrmUpdater.

Parameters
urls重定向配置文件或下载配置文件的下载地址
parent

Definition at line 108 of file FrmUpdater.cpp.

◆ ~CFrmUpdater()

CFrmUpdater::~CFrmUpdater ( )
overridevirtual

Definition at line 130 of file FrmUpdater.cpp.

Member Function Documentation

◆ CheckPrompt()

bool CFrmUpdater::CheckPrompt ( const QString &  szVersion)
private

Definition at line 1634 of file FrmUpdater.cpp.

◆ CheckRedirectConfigFile()

int CFrmUpdater::CheckRedirectConfigFile ( )
private

检查重定向配置文件

Returns
= 2: Don't updater
= 1: Is normal configure file
= 0: Is redirect configure file
< 0: Error

重定向配置文件格式:
json format:

{
"redirect": [
{
"version": "v2.0.0",
"min_update_version": "v0.0.26"
},
{
"version": "v0.0.26",
"min_update_version": "v0.0.20",
"files": [
{
"urls": [
"file:data/update_locale.json"
]
}
]
},
{
"version": "v0.0.20",
"min_update_version": "v0.0.10",
"files": [
{
"os": "windows",
"urls": [
"file:data/update_windows.json"
]
},
{
"os": "ubuntu",
"arch": "x86_64",
"urls": [
"file:data/update_ubuntu.json"
]
},
{
"os": "macos",
"arch": "x86_64",
"urls": [
"file:data/update_macos.json"
]
},
{
"os": "osx",
"arch": "x86_64",
"urls": [
"file:data/update_macos.json"
]
}
]
},
{
"version": "v0.0.10",
"min_update_version": "v0.0.5",
"files": [
{
"os": "XXXX",
"arch": "x86",
"urls": [
"github.com/kanglin/rabbitcommon/windows/update_windows.json",
"gitlab.com/kl222/rabbitcommon/windows/update_windows.json"
]
}
]
},
{
"version": "v0.0.5",
"files": [
{
"os": "windows",
"arch": "x86",
"urls": [
"github.com/kanglin/rabbitcommon/windows/update_windows.json",
"gitlab.com/kl222/rabbitcommon/windows/update_windows.json"
]
},
{
"os": "ubuntu",
"arch": "x86_64",
"urls": [
"github.com/kanglin/rabbitcommon/windows/update_ubuntu.json",
"gitlab.com/kl222/rabbitcommon/windows/update_ubuntu.json"
]
}
]
}
]
}

Definition at line 436 of file FrmUpdater.cpp.

◆ CheckUpdateConfigFile()

int CFrmUpdater::CheckUpdateConfigFile ( )
private

检查更新配置文件

旧的 xml 格式:

<?xml version="1.0" encoding="UTF-8"?>
<UPDATE>
<VERSION>v0.0.1</VERSION>
<TIME>2019-2-24 19:28:50</TIME>
<INFO>v0.0.1 information</INFO>
<HOME>home page</HOME>
<MIN_UPDATE_VERSION>%MIN_UPDATE_VERSION%</MIN_UPDATE_VERSION>
<FORCE>0</FORCE>
<SYSTEM>windows</SYSTEM> <!--windows, linux, android-->
<PLATFORM>x86</PLATFORM> <!--windows, linux, android-->
<ARCHITECTURE>x86</ARCHITECTURE> <!--x86, x86_64, armeabi-v7a arm64_v8a-->
<FILENAME>File name</FILENAME>
<URL>url1</URL>
<URL>url2</URL>
<URL>...</URL>
<MD5SUM>%RABBITIM_MD5SUM%</MD5SUM>
</UPDATE>
See also
GetConfigFromFile

Definition at line 575 of file FrmUpdater.cpp.

◆ CompareVersion()

int CFrmUpdater::CompareVersion ( const QString &  newVersion,
const QString &  currentVersion 
)
private

CFrmUpdater::CompareVersion.

Parameters
newVersion
currentVersion
Returns
> 0: = 0: 相同 < 0
See also
https://semver.org/lang/zh-CN/

Definition at line 1108 of file FrmUpdater.cpp.

◆ GenerateJsonFile()

int CFrmUpdater::GenerateJsonFile ( const QString &  szFile,
const CONFIG_INFO info,
CONFIG_TYPE  type 
)
private

Generate Json File.

Parameters
szFile
info
type
Returns
See also
GetConfigFromFile

Definition at line 1247 of file FrmUpdater.cpp.

◆ GenerateUpdateJson() [1/2]

int CFrmUpdater::GenerateUpdateJson ( )

Generate update json configure file.

Note
If your application hasn't a command-line argument, use it.
See also
GetConfigFromFile

Definition at line 1220 of file FrmUpdater.cpp.

◆ GenerateUpdateJson() [2/2]

int CFrmUpdater::GenerateUpdateJson ( QCommandLineParser &  parser)

Generate update json configure file.

Parameters
parserQCommandLineParser
Note
If your application has a command-line argument, use it.
QCommandLineParser parser;
parser.addHelpOption();
parser.addVersionOption();
QCommandLineOption noexample(QStringList() << "e" << "no-examples",
"no example",
"no example");
parser.addOption(noexample);
#ifdef HAVE_UPDATE
CFrmUpdater* updater = new CFrmUpdater();
if(a.arguments().length() > 1) {
updater->GenerateUpdateJson(parser);
parser.process(QApplication::arguments());
return 0;
}
#endif
See also
GetConfigFromFile

Definition at line 1228 of file FrmUpdater.cpp.

◆ GenerateUpdateXml() [1/2]

int CFrmUpdater::GenerateUpdateXml ( )

Update XML file used only to generate programs.

Returns

Definition at line 1405 of file FrmUpdater.cpp.

◆ GenerateUpdateXml() [2/2]

int CFrmUpdater::GenerateUpdateXml ( QCommandLineParser &  parser)

Definition at line 1413 of file FrmUpdater.cpp.

◆ GenerateUpdateXmlFile()

int CFrmUpdater::GenerateUpdateXmlFile ( const QString &  szFile,
const CONFIG_INFO info,
CONFIG_TYPE &  type 
)
private

Definition at line 1307 of file FrmUpdater.cpp.

◆ GetConfigFromCommandLine()

int CFrmUpdater::GetConfigFromCommandLine ( QCommandLineParser &  parser,
QString &  szFile,
CONFIG_INFO info,
CONFIG_TYPE &  type 
)
private

Get configure from command-line.

Parameters
parser
szFile
info
type
Returns
See also
GetConfigFromFile

Definition at line 1433 of file FrmUpdater.cpp.

◆ GetConfigFromFile()

int CFrmUpdater::GetConfigFromFile ( const QString &  szFile,
CONFIG_INFO conf 
)
private

json 格式:

os architecture platform
windows "i386",x86_64 mingw,cygwin
linux x86,x86_64
android armv7, arm64_v8a, x86,x86_64
macos x86,x86_64
See also
: [static, since 5.4] QString QSysInfo::currentCpuArchitecture()
{
"version": {
"version": "2.0.0",
"min_update_version": "1.0.0",
"time": "",
"information": "RabbitCommon",
"home": "https://github.com/kanglin/rabbitcommon",
"force": false
},
"files": [
{
"os": "windows",
"os_min_version": "7",
"arch": "x86",
"arch_min_version": "1",
"name": "RabbitCommon_setup.exe",
"md5": "",
"urls": [
"github.com/kanglin/rabbitcommon/windows",
"gitlab.com/kl222/rabbitcommon/windows"
]
},
{
"os": "ubuntu",
"os_min_version": "22.06",
"arch": "x86",
"arch_min_version": "1",
"name": "rabbitcommon_setup.deb",
"md5": "",
"urls": [
"github.com/kanglin/rabbitcommon/ubuntu",
"gitlab.com/kl222/rabbitcommon/ubuntu"
]
}
]
}
See also
GenerateJsonFile GetConfigFromCommandLine

Definition at line 798 of file FrmUpdater.cpp.

◆ GetRedirectFromFile()

int CFrmUpdater::GetRedirectFromFile ( const QString &  szFile,
QVector< CONFIG_REDIRECT > &  conf 
)
private

Get redirect configure from file.

Parameters
szFileFile name
confRedirect configure
Returns
> 0: Is normal configure file
= 0: Is redirect configure file
< 0: Error json format:
{
"redirect": [
{
"version": "v2.0.0",
"min_update_version": "v0.0.26"
},
{
"version": "v0.0.26",
"min_update_version": "v0.0.20",
"files": [
{
"urls": [
"file:data/update_locale.json"
]
}
]
},
{
"version": "v0.0.20",
"min_update_version": "v0.0.10",
"files": [
{
"os": "windows",
"urls": [
"file:data/update_windows.json"
]
},
{
"os": "ubuntu",
"arch": "x86_64",
"urls": [
"file:data/update_ubuntu.json"
]
},
{
"os": "macos",
"arch": "x86_64",
"urls": [
"file:data/update_macos.json"
]
},
{
"os": "osx",
"arch": "x86_64",
"urls": [
"file:data/update_macos.json"
]
}
]
},
{
"version": "v0.0.10",
"min_update_version": "v0.0.5",
"files": [
{
"os": "XXXX",
"arch": "x86",
"urls": [
"github.com/kanglin/rabbitcommon/windows/update_windows.json",
"gitlab.com/kl222/rabbitcommon/windows/update_windows.json"
]
}
]
},
{
"version": "v0.0.5",
"files": [
{
"os": "windows",
"arch": "x86",
"urls": [
"github.com/kanglin/rabbitcommon/windows/update_windows.json",
"gitlab.com/kl222/rabbitcommon/windows/update_windows.json"
]
},
{
"os": "ubuntu",
"arch": "x86_64",
"urls": [
"github.com/kanglin/rabbitcommon/windows/update_ubuntu.json",
"gitlab.com/kl222/rabbitcommon/windows/update_ubuntu.json"
]
}
]
}
]
}
See also
CheckRedirectConfigFile

Definition at line 678 of file FrmUpdater.cpp.

◆ InitStateMachine()

int CFrmUpdater::InitStateMachine ( )
private

Initialization state machine.

________
start o ----->|sCheck|----------------------------------|
-------- |
| |
| sigFinished |
| |
V |
-----------------------------------| |sigError
| s | |
|----------------------------------| |
| | |
| |----------------------| | |
| |Download config file | | |
| |(sDownloadConfigFile) |<---| | |
| |----------------------| | | |
| | | | |
| | sigFinished | | |
| | | | |
| V sigDownLoadRedire | | |
| |--------------------| | | |
| |Check config file | | | |
| |(sCheckConfigFile) |------| | |
| |____________________| | |
| | | |
| | sigFinished | |
| | pbOk->clicked | sigFinished V
| V | sigError |------|
| |--------------------| |------------->|sFinal|
| |Download setup file | | |------|
| |(sDownloadSetupFile)| |
| |--------------------| |
| | |
| | sigFinished |
| V |
| |--------------------| |
| |update(sUpdate) | |
| |--------------------| |
|----------------------------------|

Definition at line 190 of file FrmUpdater.cpp.

◆ InstallScript()

QString CFrmUpdater::InstallScript ( const QString  szDownLoadFile,
const QString  szApplicationName 
)
private

Definition at line 1061 of file FrmUpdater.cpp.

◆ IsDownLoad()

bool CFrmUpdater::IsDownLoad ( )
private

Check file is exist.

Returns

Definition at line 1152 of file FrmUpdater.cpp.

◆ on_cbHomePage_clicked

void CFrmUpdater::on_cbHomePage_clicked ( bool  checked)
privateslot

Definition at line 1655 of file FrmUpdater.cpp.

◆ on_cbPrompt_clicked

void CFrmUpdater::on_cbPrompt_clicked ( bool  checked)
privateslot

Definition at line 1648 of file FrmUpdater.cpp.

◆ on_pbClose_clicked

void CFrmUpdater::on_pbClose_clicked ( )
protectedslot

Definition at line 1199 of file FrmUpdater.cpp.

◆ on_pbOK_clicked

void CFrmUpdater::on_pbOK_clicked ( )
protectedslot

Definition at line 1189 of file FrmUpdater.cpp.

◆ SetInstallAutoStartup()

int CFrmUpdater::SetInstallAutoStartup ( bool  bAutoStart = true)

Set install and automation startup.

Parameters
bAutoStart
Returns

Definition at line 1662 of file FrmUpdater.cpp.

◆ SetTitle()

int CFrmUpdater::SetTitle ( QImage  icon = QImage(),
const QString &  szTitle = QString() 
)

SetTitle.

Parameters
icon
szTitledefault is qApp->applicationDisplayName()
Returns

Definition at line 245 of file FrmUpdater.cpp.

◆ SetVersion()

int CFrmUpdater::SetVersion ( const QString &  szVersion)

Definition at line 259 of file FrmUpdater.cpp.

◆ showEvent()

void CFrmUpdater::showEvent ( QShowEvent *  event)
overrideprotectedvirtual

Definition at line 1616 of file FrmUpdater.cpp.

◆ slotButtonClickd

void CFrmUpdater::slotButtonClickd ( int  id)
protectedslot

Definition at line 1214 of file FrmUpdater.cpp.

◆ slotCheck

void CFrmUpdater::slotCheck ( )
protectedslot

Definition at line 274 of file FrmUpdater.cpp.

◆ slotCheckConfigFile

void CFrmUpdater::slotCheckConfigFile ( )
protectedvirtualslot

Definition at line 400 of file FrmUpdater.cpp.

◆ slotDownloadError

void CFrmUpdater::slotDownloadError ( int  nErr,
const QString  szError 
)
protectedslot

Definition at line 302 of file FrmUpdater.cpp.

◆ slotDownloadFile

void CFrmUpdater::slotDownloadFile ( )
protectedslot

Definition at line 378 of file FrmUpdater.cpp.

◆ slotDownloadFileFinished

void CFrmUpdater::slotDownloadFileFinished ( const QString  szFile)
protectedslot

Definition at line 315 of file FrmUpdater.cpp.

◆ slotDownloadProgress

void CFrmUpdater::slotDownloadProgress ( qint64  bytesReceived,
qint64  bytesTotal 
)
protectedslot

Definition at line 355 of file FrmUpdater.cpp.

◆ slotDownloadSetupFile

void CFrmUpdater::slotDownloadSetupFile ( )
protectedslot

Definition at line 871 of file FrmUpdater.cpp.

◆ slotShowWindow

void CFrmUpdater::slotShowWindow ( QSystemTrayIcon::ActivationReason  reason)
protectedslot

Definition at line 1623 of file FrmUpdater.cpp.

◆ slotStateFinished

void CFrmUpdater::slotStateFinished ( )
protectedslot

Definition at line 267 of file FrmUpdater.cpp.

◆ slotUpdate

void CFrmUpdater::slotUpdate ( )
protectedslot

Definition at line 885 of file FrmUpdater.cpp.

Member Data Documentation

◆ m_bDownload

bool CFrmUpdater::m_bDownload
private

Definition at line 167 of file FrmUpdater.h.

◆ m_ButtonGroup

QButtonGroup CFrmUpdater::m_ButtonGroup
private

Definition at line 162 of file FrmUpdater.h.

◆ m_ConfigFile

CONFIG_FILE CFrmUpdater::m_ConfigFile
private

Definition at line 212 of file FrmUpdater.h.

◆ m_Download

QSharedPointer<RabbitCommon::CDownload> CFrmUpdater::m_Download
private

Definition at line 170 of file FrmUpdater.h.

◆ m_DownloadFile

QFile CFrmUpdater::m_DownloadFile
private

Definition at line 166 of file FrmUpdater.h.

◆ m_InstallAutoStartupType

bool CFrmUpdater::m_InstallAutoStartupType
private

Definition at line 158 of file FrmUpdater.h.

◆ m_pStateDownloadSetupFile

QState* CFrmUpdater::m_pStateDownloadSetupFile
private

Definition at line 174 of file FrmUpdater.h.

◆ m_StateMachine

QStateMachine CFrmUpdater::m_StateMachine
private

Definition at line 173 of file FrmUpdater.h.

◆ m_szCurrentVersion

QString CFrmUpdater::m_szCurrentVersion
private

Definition at line 164 of file FrmUpdater.h.

◆ m_TrayIcon

QSystemTrayIcon CFrmUpdater::m_TrayIcon
private

Definition at line 160 of file FrmUpdater.h.

◆ m_Urls

QVector<QUrl> CFrmUpdater::m_Urls
private

Definition at line 168 of file FrmUpdater.h.

◆ ui

Ui::CFrmUpdater* CFrmUpdater::ui
private

Definition at line 157 of file FrmUpdater.h.


The documentation for this class was generated from the following files: