RabbitCommon v2.3.3
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 74 of file FrmUpdater.h.

Member Enumeration Documentation

◆ CONFIG_TYPE

enum class CFrmUpdater::CONFIG_TYPE
strongprivate

Definition at line 181 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 112 of file FrmUpdater.cpp.

◆ ~CFrmUpdater()

CFrmUpdater::~CFrmUpdater ( )
overridevirtual

Definition at line 134 of file FrmUpdater.cpp.

Member Function Documentation

◆ CheckPrompt()

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

Definition at line 1703 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": [
"https://github.com/kanglin/rabbitcommon/windows/update_windows.json",
"https://gitlab.com/kl222/rabbitcommon/windows/update_windows.json"
]
}
]
},
{
"version": "v0.0.5",
"files": [
{
"os": "windows",
"arch": "x86",
"urls": [
"https://github.com/kanglin/rabbitcommon/windows/update_windows.json",
"https://gitlab.com/kl222/rabbitcommon/windows/update_windows.json"
]
},
{
"os": "ubuntu",
"arch": "x86_64",
"urls": [
"https://github.com/kanglin/rabbitcommon/windows/update_ubuntu.json",
"https://gitlab.com/kl222/rabbitcommon/windows/update_ubuntu.json"
]
}
]
}
]
}

Definition at line 444 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 584 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 1166 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 1305 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 1278 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 1286 of file FrmUpdater.cpp.

◆ GenerateUpdateXml() [1/2]

int CFrmUpdater::GenerateUpdateXml ( )

Update XML file used only to generate programs.

Returns

Definition at line 1463 of file FrmUpdater.cpp.

◆ GenerateUpdateXml() [2/2]

int CFrmUpdater::GenerateUpdateXml ( QCommandLineParser &  parser)

Definition at line 1471 of file FrmUpdater.cpp.

◆ GenerateUpdateXmlFile()

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

Definition at line 1365 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 1491 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": [
"https://github.com/kanglin/rabbitcommon/windows",
"https://gitlab.com/kl222/rabbitcommon/windows"
]
},
{
"os": "ubuntu",
"os_min_version": "22.06",
"arch": "x86",
"arch_min_version": "1",
"name": "rabbitcommon_setup.deb",
"md5": "",
"urls": [
"https://github.com/kanglin/rabbitcommon/ubuntu",
"https://gitlab.com/kl222/rabbitcommon/ubuntu"
]
}
]
}
See also
GenerateJsonFile GetConfigFromCommandLine

Definition at line 818 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": [
"https://github.com/kanglin/rabbitcommon/windows/update_windows.json",
"https://gitlab.com/kl222/rabbitcommon/windows/update_windows.json"
]
}
]
},
{
"version": "v0.0.5",
"files": [
{
"os": "windows",
"arch": "x86",
"urls": [
"https://github.com/kanglin/rabbitcommon/windows/update_windows.json",
"https://gitlab.com/kl222/rabbitcommon/windows/update_windows.json"
]
},
{
"os": "ubuntu",
"arch": "x86_64",
"urls": [
"https://github.com/kanglin/rabbitcommon/windows/update_ubuntu.json",
"https://gitlab.com/kl222/rabbitcommon/windows/update_ubuntu.json"
]
}
]
}
]
}
See also
CheckRedirectConfigFile

Definition at line 698 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 196 of file FrmUpdater.cpp.

◆ InstallScript()

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

Definition at line 1119 of file FrmUpdater.cpp.

◆ IsDownLoad()

bool CFrmUpdater::IsDownLoad ( )
private

Check file is exist.

Returns

Definition at line 1210 of file FrmUpdater.cpp.

◆ on_cbHomePage_clicked

void CFrmUpdater::on_cbHomePage_clicked ( bool  checked)
privateslot

Definition at line 1724 of file FrmUpdater.cpp.

◆ on_cbPrompt_clicked

void CFrmUpdater::on_cbPrompt_clicked ( bool  checked)
privateslot

Definition at line 1717 of file FrmUpdater.cpp.

◆ on_pbClose_clicked

void CFrmUpdater::on_pbClose_clicked ( )
protectedslot

Definition at line 1257 of file FrmUpdater.cpp.

◆ on_pbOK_clicked

void CFrmUpdater::on_pbOK_clicked ( )
protectedslot

Definition at line 1247 of file FrmUpdater.cpp.

◆ SetInstallAutoStartup()

int CFrmUpdater::SetInstallAutoStartup ( bool  bAutoStart = true)

Set install and automation startup.

Parameters
bAutoStart
Returns

Definition at line 1731 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 253 of file FrmUpdater.cpp.

◆ SetVersion()

int CFrmUpdater::SetVersion ( const QString &  szVersion)

Definition at line 267 of file FrmUpdater.cpp.

◆ showEvent()

void CFrmUpdater::showEvent ( QShowEvent *  event)
overrideprotectedvirtual

Definition at line 1685 of file FrmUpdater.cpp.

◆ slotButtonClickd

void CFrmUpdater::slotButtonClickd ( int  id)
protectedslot

Definition at line 1272 of file FrmUpdater.cpp.

◆ slotCheck

void CFrmUpdater::slotCheck ( )
protectedslot

Definition at line 282 of file FrmUpdater.cpp.

◆ slotCheckConfigFile

void CFrmUpdater::slotCheckConfigFile ( )
protectedvirtualslot

Definition at line 408 of file FrmUpdater.cpp.

◆ slotDownloadError

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

Definition at line 310 of file FrmUpdater.cpp.

◆ slotDownloadFile

void CFrmUpdater::slotDownloadFile ( )
protectedslot

Definition at line 386 of file FrmUpdater.cpp.

◆ slotDownloadFileFinished

void CFrmUpdater::slotDownloadFileFinished ( const QString  szFile)
protectedslot

Definition at line 323 of file FrmUpdater.cpp.

◆ slotDownloadProgress

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

Definition at line 363 of file FrmUpdater.cpp.

◆ slotDownloadSetupFile

void CFrmUpdater::slotDownloadSetupFile ( )
protectedslot

Definition at line 891 of file FrmUpdater.cpp.

◆ slotShowWindow

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

Definition at line 1692 of file FrmUpdater.cpp.

◆ slotStateFinished

void CFrmUpdater::slotStateFinished ( )
protectedslot

Definition at line 275 of file FrmUpdater.cpp.

◆ slotUpdate

void CFrmUpdater::slotUpdate ( )
protectedslot

Definition at line 905 of file FrmUpdater.cpp.

Member Data Documentation

◆ m_bDownload

bool CFrmUpdater::m_bDownload
private

Definition at line 172 of file FrmUpdater.h.

◆ m_ButtonGroup

QButtonGroup CFrmUpdater::m_ButtonGroup
private

Definition at line 167 of file FrmUpdater.h.

◆ m_ConfigFile

CONFIG_FILE CFrmUpdater::m_ConfigFile
private

Definition at line 217 of file FrmUpdater.h.

◆ m_Download

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

Definition at line 175 of file FrmUpdater.h.

◆ m_DownloadFile

QFile CFrmUpdater::m_DownloadFile
private

Definition at line 171 of file FrmUpdater.h.

◆ m_InstallAutoStartupType

bool CFrmUpdater::m_InstallAutoStartupType
private

Definition at line 163 of file FrmUpdater.h.

◆ m_pStateDownloadSetupFile

QState* CFrmUpdater::m_pStateDownloadSetupFile
private

Definition at line 179 of file FrmUpdater.h.

◆ m_StateMachine

QStateMachine* CFrmUpdater::m_StateMachine
private

Definition at line 178 of file FrmUpdater.h.

◆ m_szCurrentVersion

QString CFrmUpdater::m_szCurrentVersion
private

Definition at line 169 of file FrmUpdater.h.

◆ m_TrayIcon

QSystemTrayIcon CFrmUpdater::m_TrayIcon
private

Definition at line 165 of file FrmUpdater.h.

◆ m_Urls

QVector<QUrl> CFrmUpdater::m_Urls
private

Definition at line 173 of file FrmUpdater.h.

◆ ui

Ui::CFrmUpdater* CFrmUpdater::ui
private

Definition at line 162 of file FrmUpdater.h.


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