qt/LedOK/mtitlebar.cpp
2022-01-04 18:11:48 +08:00

240 lines
8.1 KiB
C++

#include "mtitlebar.h"
#include "LoUIClass/aboutdlg.h"
#include "LoUIClass/updaterdialog.h"
#include "LoUIClass/updaterfirmwaredialog.h"
#include "LoUIClass/SoftConfigDialog.h"
#include "LoUIClass/x_uimsgboxok.h"
#include "globaldefine.h"
#include <QDesktopServices>
#include "wDevicesManager/upgradeapkdialog.h"
//标题工具栏
static const QString DEFS_URL = "https://www.ledok.cn/download/definitions/updates.json";
mTitleBar::mTitleBar(QWidget *parent) :
LoQTitleBar(parent)
{
bn_Setting = new QPushButton(this);
bn_Setting->setObjectName("bnSetting");
//水平布局,放置配置按钮,最小化,最大化,关闭按钮
QHBoxLayout *pLayout = new QHBoxLayout(this);
pLayout->addStretch();
pLayout->addWidget(bn_Setting);
pLayout->addWidget(bn_Minimize);
pLayout->addWidget(bn_Maximize);
pLayout->addWidget(bn_Close);
pLayout->setContentsMargins(0, 3, 3, 0);
setLayout(pLayout);
QMenu *menu_setting = new QMenu(this);
act_lang = new QAction(tr("Language"));
// QAction *act_radio = new QAction(tr("Radio Setting"));
// QAction *act_custom = new QAction(tr("Custom Server"));
// QAction *act_dhcp = new QAction(tr("DHCP Setting"));
// act_setting= new QAction(tr("Setting"));
act_help = new QAction(tr("Help"));
act_update = new QAction(tr("Check for updates"));
act_updatefirmware= new QAction(tr("firmware manager"));
act_softconfiguration= new QAction(tr("Software Configuration"));
act_about = new QAction(tr("About"));
//act_setting->setObjectName("Setting");
act_help->setObjectName("Help");
act_update->setObjectName("Update");
act_updatefirmware->setObjectName("Update firmware");
act_softconfiguration->setObjectName("Software Configuration");
act_about->setObjectName("About");
menu_setting->addAction(act_lang);
//menu_setting->addAction(act_radio);
// menu_setting->addAction(act_custom);
// menu_setting->addAction(act_dhcp);
//menu_setting->addAction(act_setting);
menu_setting->addAction(act_softconfiguration);
menu_setting->addAction(act_update);
menu_setting->addAction(act_updatefirmware);
menu_setting->addAction(act_help);
menu_setting->addAction(act_about);
bn_Setting->setMenu(menu_setting);//按钮上添加下拉菜单
//创建语言菜单的子菜单栏
QMenu *menu_lang = new QMenu(this);
QActionGroup *actg_lang = new QActionGroup(this);
actg_lang->setObjectName("Language");
QAction *lang_zhCN = new QAction(tr("中文"), actg_lang);
QAction *lang_zhTH = new QAction(tr("中文繁体"), actg_lang);
QAction *lang_enUS = new QAction(tr("English"), actg_lang);
QAction *lang_jaJP = new QAction(tr("日本語"), actg_lang);
lang_zhCN->setCheckable(true);
lang_zhTH->setCheckable(true);
lang_enUS->setCheckable(true);
lang_jaJP->setCheckable(true);
lang_zhCN->setObjectName("zhCN");
lang_zhTH->setObjectName("zhTH");
lang_enUS->setObjectName("enUS");
lang_jaJP->setObjectName("jaJP");
menu_lang->addAction(lang_zhCN);
menu_lang->addAction(lang_zhTH);
menu_lang->addAction(lang_enUS);
menu_lang->addAction(lang_jaJP);
act_lang->setMenu(menu_lang);
//获取当前的语言选型
QAction *lang_cur;
LoAppConfig *cfg = LoAppConfig::getInstance();
QSettings *settings = new QSettings(cfg->OrganizationName(), cfg->ApplicationName());
if(settings->value("MainSetting/Language").isValid())
{
QString lang = settings->value("MainSetting/Language").toString();
if(lang == "enUS")
{
lang_cur = lang_enUS;
}
else if(lang == "jaJP")
{
lang_cur = lang_jaJP;
}
else if(lang == "zhTH")
{
lang_cur = lang_zhTH;
}
else
{
lang_cur = lang_zhCN;
}
}
else
{
lang_cur = lang_zhCN;
}
if(lang_cur) {
lang_cur->setChecked(true);
m_lang = lang_cur->objectName();
}
bn_Setting->setToolTip(tr("Setting"));
//语言菜单的信号和槽函数
connect(menu_lang, SIGNAL(triggered(QAction*)), this, SLOT(onLanguageChanged(QAction*)));
connect(menu_setting, SIGNAL(triggered(QAction*)), this, SLOT(onMainMenuChanged(QAction*)));
QSimpleUpdater *m_updater1=QSimpleUpdater::getInstance();
m_updater=m_updater1;
connect(m_updater1,SIGNAL(checkingFinished(QString)),this,SLOT(updateChangelog(QString)));
m_updater1->getInstance()->setModuleVersion(DEFS_URL,APP_VERSION);
m_updater1->getInstance()->setNotifyOnUpdate(DEFS_URL,false);
m_updater1->getInstance()->setNotifyOnFinish(DEFS_URL,false);
m_updater1->getInstance()->checkForUpdates(DEFS_URL);
}
mTitleBar::~mTitleBar()
{
//关闭的时候保存当前语言的选项
QActionGroup *ag = this->findChild<QActionGroup*>("Language");
if(ag) {
LoAppConfig *cfg = LoAppConfig::getInstance();
QSettings *settings = new QSettings(cfg->OrganizationName(), cfg->ApplicationName());
QString lang = ag->checkedAction()->objectName();
if(lang.isEmpty()) lang = "zhCN";
settings->setValue("MainSetting/Language", lang);
}
}
void mTitleBar::setupLang()
{
emit sigLanguageChanged(m_lang);
}
void mTitleBar::onLanguageChanged(QAction* act)
{
QActionGroup *ag = this->findChild<QActionGroup*>("Language");
if(ag) {
LoAppConfig *cfg = LoAppConfig::getInstance();
QSettings *settings = new QSettings(cfg->OrganizationName(), cfg->ApplicationName());
settings->setValue("MainSetting/Language", act->objectName());
}
emit sigLanguageChanged(act->objectName());
}
void mTitleBar::onMainMenuChanged(QAction* act)
{
if(act->objectName()=="About")
{
AboutDlg *pDlg=new AboutDlg(this);
pDlg->exec();
}
else if(act->objectName()=="Help")
{
QString qexeFullPath = QCoreApplication::applicationDirPath();
QString qtManulFile=qexeFullPath+"/help/"+m_lang+".pdf";
QDesktopServices::openUrl(QUrl::fromLocalFile(qtManulFile));
}
else if(act->objectName()=="Update")
{
UpdaterDialog *pDlg=new UpdaterDialog(this);
pDlg->exec();
}
else if(act->objectName()=="Update firmware")
{
//UpdaterFirmwareDialog *pDlg=new UpdaterFirmwareDialog(this);
// pDlg->exec();
UpgradeApkDialog *pDlg=new UpgradeApkDialog(this,"","");
pDlg->exec();
}
else if(act->objectName()=="Software Configuration")
{
SoftConfigDialog *pDlg=new SoftConfigDialog(this);
pDlg->exec();
emit sigGuangYingPinChanged();
}
//emit sigLanguageChanged(act->objectName());
}
void mTitleBar::refreshLable()
{
act_lang->setText(tr("Language"));
// act_radio->setText(tr("Radio Setting"));
// act_custom->setText(tr("Custom Server"));
// act_dhcp->setText(tr("DHCP Setting"));
//act_setting->setText(tr("Setting"));
act_help->setText(tr("Help"));
act_about->setText(tr("About"));
act_update->setText(tr("Check for updates"));
act_updatefirmware->setText(tr("firmware manager"));
act_softconfiguration->setText(tr("Software Configuration"));
bn_Setting->setToolTip(tr("Setting"));
LoQTitleBar::refreshLable();
}
void mTitleBar::updateChangelog(QString strTip)
{
Q_UNUSED(strTip)
// X_UIMsgBoxOk *pDlg=new X_UIMsgBoxOk(tr("Tip"),tr("updateChangelog!"),this,1);
// pDlg->exec();
if(m_updater->getInstance()->getUpdateAvailable(DEFS_URL))//如果版本大于
{
if(m_updater->getInstance()->getUpdateSameVersionAvailable(DEFS_URL))//如果同样的版本,不显示红点提示
{
bn_Setting->setStyleSheet("image: url(:/res/AppSetting.png);");
}
else//如果不同
{
bn_Setting->setStyleSheet("image: url(:/res/AppSettingTip.png);");
QIcon icon(":/res/reddot.png");
act_update->setIcon(icon);
}
}
else {
bn_Setting->setStyleSheet("image: url(:/res/AppSetting.png);");
}
// disconnect(m_updater,SIGNAL(checkingFinished(QString)),this,SLOT(updateChangelog(QString)));
}
void mTitleBar::Close()
{
bn_Close->click();
}