适配平板

This commit is contained in:
jishengjie 2022-10-21 15:02:45 +08:00
parent 5357b3187f
commit 7ef05e51c9
44 changed files with 1056 additions and 987 deletions

142
README.md Normal file
View File

@ -0,0 +1,142 @@
## 麒麟计算器
### 项目运行方式
chmod 777 ./run
./run kylin-calculator
### 更新历史
#### 20210611 09:08 cl
1.0.31kord15
解决键盘输入一位数,界面显示两位数的问题
#### 20210519 13:39 jdy
1.0.31kord13
优化n次方/n次方根计算流程:禁止多次连续点击n次方/n次方根连续点击操作
#### 20210419 17:09 cl
1.0.31kord10
创建DBus服务最小化后再次启动应用时拉起主界面
#### 20210419 16:38 jdy
1.0.31kord9
添加新版日志
修复一个debug模式发现的段错误
#### 20210416 11:15 jdy
1.0.31kord8
根据新版设计稿修改应用名称
#### 20210401 11:46 cl
1.0.31kord7
修复bug 34897 44911
实现需求 输入过长时字号变小,删除或清除时字号变大
#### 20210330 09:47 jdy
1.0.31kord6
修复bug 45498 45469
#### 20210127 18:58 jdy
1.0.31
#### 20210126 19:21 cl
修复BUG 27685 27661 32782
重构界面切换逻辑
实现前端组件复用
1.0.30 kord1~rc1
#### 20210125 21:54 jdy
移动翻译文件到translations
删除二进制pm文件
#### 20210123 17:40 jdy
1.0.30
#### 20210116 09:27 jdy
1.0.29
#### 20210115 13:58 cl
1.0.28 Update Desktop
#### 20210114 19:55 cl
Fix bug 33043 汇率模式点击“00”无反应
#### 20210112 10:08 cl
1.0.27
#### 20210109 09:02 jdy
1.0.26
#### 20210108 15:55 jdy
1.0.25
#### 20210108 15:00 jdy
1.0.24
#### 20210107 10:45 cl
1.0.23
增加菜单栏 (不完善未添加gsetting)
#### 20201230 20:19 cl
1.0.23
汇率模式及汇率列表适配主题颜色
#### 20201229 14:45 jdy
1.0.23
#### 20201229 10:23 cl
1.0.22
适配主题颜色和三联按钮样式
#### 20201219 20:57 cl
1.0.21
适配4K屏标题栏按钮样式和三联保持一致
#### 20201214 20:57 jdy
1.0.20
#### 20201205 11:21 jdy
1.0.19
#### 20201204 20:28 jdy
1.0.18
#### 20201202 17:15 jdy
1.0.17~rc
合并dev代码
#### 20201202 13:54 jdy
1.0.16版本
#### 20201127 15:37 jdy
1.0.15版本
#### 20201124 11:03 jdy
生成字符串处理md
合并dev代码
#### 20201124 10:16 cl
生成ts和qm文件
#### 20201119 15:16 cl
适配desktop文件藏文翻译
#### 20201113 20:00 cl
汇率换算历史记录ANS按钮
#### 20201111 17:18 cl
开发2nd按钮和Rad按钮功能实现三角函数和反三角函数替换以及弧度角度替换
#### 20201111 17:25 jdy
合并dev分支代码 解决闪退bug
#### 20201107 15:53 jdy
合并dev分支代码
#### 20201107 15:01 cl
将汇率换算模式下的历史记录转换为相应的历史记录使用unitConvHistory函数对原本的历史记录进行转换。
#### 20201107 09:58 cl
将计算器各个模式下的按钮替换为BasicButton使用图片作为显示重写setText和text函数从而保证按钮显示不受系统字体影响。

View File

@ -154,7 +154,8 @@ int InputProcess::qstrAdd(const QString &text)
QString tempQstr = getNumberFromBack(qstrNow);
if (tempQstr.contains(POINT) || tempQstr.contains(PERCENT) || isCorrectInt(getNumberFromBack(qstrNow)).first != 1 ) {
if (tempQstr.contains(POINT) || tempQstr.contains(PERCENT)
|| isCorrectInt(getNumberFromBack(qstrNow)).first != 1) {
return CANNOT_ADD_POINT;
}
@ -216,7 +217,8 @@ int InputProcess::qstrAdd(const QString &text)
/* trans */
if (TRANS_LIST.contains(text)) {
if ((qstrNow.size() == 1 && qstrNow.left(1) == BRACKET_L) || qstrNow.size() >= 1 && qstrNow.right(1) == BRACKET_L) {
if ((qstrNow.size() == 1 && qstrNow.left(1) == BRACKET_L)
|| qstrNow.size() >= 1 && qstrNow.right(1) == BRACKET_L) {
return CANNOT_ADD_TRANS;
}
@ -249,16 +251,22 @@ int InputProcess::qstrAdd(const QString &text)
if (qstrNow.right(1) == BRACKET_R) {
int index = InputTools::findBracketPair(qstrNow, size - 1);
if (QString("³√") == qstrNow.mid(index - 2, 2)) {
qstrNow = qstrNow.mid(0, index - 2) + BRACKET_L + QString("³√") + qstrNow.mid(index, size - index) + BRACKET_R + temp;
qstrNow = qstrNow.mid(0, index - 2) + BRACKET_L + QString("³√") + qstrNow.mid(index, size - index)
+ BRACKET_R + temp;
return CORRECT_QSTR_ADD;
}
if (QString("") == qstrNow.mid(index - 1, 1) && QString("³√") != qstrNow.mid(index - 2, 2)) {
qstrNow = qstrNow.mid(0, index - 1) + BRACKET_L + QString("") + qstrNow.mid(index, size - index) + BRACKET_R + temp;
qstrNow = qstrNow.mid(0, index - 1) + BRACKET_L + QString("") + qstrNow.mid(index, size - index)
+ BRACKET_R + temp;
return CORRECT_QSTR_ADD;
}
qstrNow = qstrNow + temp;
return CORRECT_QSTR_ADD;
}
if (qstrNow.right(1) == SCI_NUM_END) {
qstrNow = qstrNow + temp;
return CORRECT_QSTR_ADD;
}
int index = InputTools::getNumLastIndex(qstrNow);
qstrNow = qstrNow.mid(0, index) + BRACKET_L + qstrNow.mid(index, size - index) + BRACKET_R + temp;
@ -356,13 +364,15 @@ int InputProcess::qstrNowUpdate(const QString &text)
}
/* 处理 " 3.+ " 这类情况 , 移除小数点*/
if ((qstrNow.size() >= 2) && (isArithmeticOperator(qstrBack2) || qstrBack2 == POINT) && (isArithmeticOperator(qstrBack) || qstrBack == EQUAL)) {
if ((qstrNow.size() >= 2) && (isArithmeticOperator(qstrBack2) || qstrBack2 == POINT)
&& (isArithmeticOperator(qstrBack) || qstrBack == EQUAL)) {
qstrNow.remove(qstrNow.size() - 2, 1);
return CORRECT_QSTR_NOW_UPDATE;
}
// 4.
if ((qstrNow.size() >= 2) && (isArithmeticOperator(qstrBack2) || isBracket(qstrBack2)) && (qstrBack == POINT || qstrBack == PERCENT)) {
if ((qstrNow.size() >= 2) && (isArithmeticOperator(qstrBack2) || isBracket(qstrBack2))
&& (qstrBack == POINT || qstrBack == PERCENT)) {
qstrNow.insert(qstrNow.size() - 1, ZERO);
return CORRECT_QSTR_NOW_UPDATE;
}
@ -441,8 +451,7 @@ void InputProcess::graphNodeUpdate(const QString &text)
|| (G.getStatus(SCIENTIFIC) && (!G.getStatus(ERROR_INF) || !G.getStatus(ERROR_NAN)))) {
// 2.
if ( text == CLEAN
|| text == BACKSPACE ) {
if (text == CLEAN || text == BACKSPACE) {
if (G.getStatus(STANDARD))
G.updateAllSon(STANDARD, 1);
@ -457,15 +466,13 @@ void InputProcess::graphNodeUpdate(const QString &text)
if (G.getStatus(SCIENTIFIC)) {
if (calAns.contains(INF_SYMBOL)) {
G.update(ERROR_INF, false);
}
else if (calAns.contains(NAN_SYMBOL)) {
} else if (calAns.contains(NAN_SYMBOL)) {
G.update(ERROR_NAN, false);
}
}
else if (G.getStatus(STANDARD)) {
if ( calAns.contains(INF_SYMBOL)
|| calAns.contains(NAN_SYMBOL)) {
if (calAns.contains(INF_SYMBOL) || calAns.contains(NAN_SYMBOL)) {
G.update(ERROR, false);
}
@ -477,7 +484,8 @@ void InputProcess::graphNodeUpdate(const QString &text)
QVector<QString> InputProcess::output(const QString &text)
{
if ((i_qstrAddFlag != -1 && i_qstrAddFlag != CORRECT_QSTR_ADD) || (i_qstrNowUpdateFlag != -1 && i_qstrNowUpdateFlag != CORRECT_QSTR_NOW_UPDATE )) {
if ((i_qstrAddFlag != -1 && i_qstrAddFlag != CORRECT_QSTR_ADD)
|| (i_qstrNowUpdateFlag != -1 && i_qstrNowUpdateFlag != CORRECT_QSTR_NOW_UPDATE)) {
QVector<QString> error_res = res;
error_res[DISPLAY_ON_LABEL_PREPARE] = "input Error!";
error_res[LATEST_HISTORY].clear();
@ -498,7 +506,8 @@ QVector<QString> InputProcess::output(const QString &text)
res[DISPLAY_ON_LABEL_NOW] = clearANS_END_and_SCI_NUM_END(labelNow);
res[LABEL_NOW_CAL_QSTR] = clearANS_END_and_SCI_NUM_END(qstrNow);
res[CAL_ANS] = text == EQUAL ? clearANS_END_and_SCI_NUM_END(calAns) : EMPTY;
res[LATEST_HISTORY] = (text == EQUAL && calHistory.size() && i_couldBeCalFlag) ? calHistory.at(calHistory.size()-1) : EMPTY;
res[LATEST_HISTORY] =
(text == EQUAL && calHistory.size() && i_couldBeCalFlag) ? calHistory.at(calHistory.size() - 1) : EMPTY;
res[DISPLAY_ON_LABEL_PREPARE] = clearANS_END_and_SCI_NUM_END(labelPrepare);
res[LABEL_PREPARE_CAL_QSTR] = clearANS_END_and_SCI_NUM_END(qstrPrepare);

View File

@ -317,7 +317,8 @@ QStringList InputTools::formulaSplit(const QString &qstr)
ans.append(ch);
formula.remove(0, 1);
i = 0;
} else if (isArithmeticOperator(ch) || isBracket(ch) || ch == POWER_SYMBOL || ch == END || ch == SCIENTIFIC_NOTATION || ch == FACTORIAL_SYMBOL) {
} else if (isArithmeticOperator(ch) || isBracket(ch) || ch == POWER_SYMBOL || ch == END
|| ch == SCIENTIFIC_NOTATION || ch == FACTORIAL_SYMBOL) {
/* + - * / ( ) ^ $ e 处理 */
if (i) {
ans.append(formula.mid(0, i));
@ -482,8 +483,7 @@ QPair<int, QString> InputTools::isCorrectDouble(const QString &qstr)
qp = isCorrectInt(qstr.right(qstr.size() - idx - 2));
if (!qp.first) {
return qMakePair(0, ERROR);
}
else {
} else {
qp.second = qstr.left(idx) + qp.second;
}
@ -493,12 +493,10 @@ QPair<int, QString> InputTools::isCorrectDouble(const QString &qstr)
if (qp1.first && !qp2.first) {
qp1.second += qstr.right(qstr.size() - idx);
qpairUpdate(qp, qp1);
}
else if (!qp1.first && qp2.first) {
} else if (!qp1.first && qp2.first) {
qp2.second += qstr.right(qstr.size() - idx);
qpairUpdate(qp, qp2);
}
else {
} else {
return qMakePair(0, ERROR);
}
}
@ -510,8 +508,7 @@ QPair<int, QString> InputTools::isCorrectDouble(const QString &qstr)
qp = isCorrectInt(qstr.left(idx));
if (!qp.first) {
return qMakePair(0, ERROR);
}
else {
} else {
qp.second += qstr.right(qstr.size() - idx);
}
foreach (QChar ch, qstr.right(qstr.size() - 1 - idx)) {
@ -549,7 +546,8 @@ QPair<int, QString> InputTools::isCorrectNumber(const QString &qstr)
return qp;
}
if (qstr.contains(POINT) || qstr.contains(SCIENTIFIC_NOTATION) || qstr.contains(INF_SYMBOL) || qstr.contains(NAN_SYMBOL)) {
if (qstr.contains(POINT) || qstr.contains(SCIENTIFIC_NOTATION) || qstr.contains(INF_SYMBOL)
|| qstr.contains(NAN_SYMBOL)) {
qp = isCorrectDouble(qstr);
if (!qp.first) {
return QP_QSTR_ERROR;
@ -595,8 +593,7 @@ bool InputTools::adjacencyJudgment(const QString &x , const QString &y)
// num
if (isNumber(x) || isSciNum(x)) {
if ( y == BRACKET_R || y == POWER_SYMBOL
|| isArithmeticOperator(y) || y == FACTORIAL_SYMBOL) {
if (y == BRACKET_R || y == POWER_SYMBOL || isArithmeticOperator(y) || y == FACTORIAL_SYMBOL) {
return true;
}
@ -624,7 +621,8 @@ QPair<int, QStringList> InputTools::isCorrectFormulaList(const QStringList &form
}
/* 列表第一项不能为 " * / " , 列表最后一项不能为 " + - * / " */
if ((isArithmeticOperator(formulaList[0]) && formulaList[0] != SUB && formulaList[0] != ADD) || (isArithmeticOperator(formulaList.back()))) {
if ((isArithmeticOperator(formulaList[0]) && formulaList[0] != SUB && formulaList[0] != ADD)
|| (isArithmeticOperator(formulaList.back()))) {
return QP_QSTR_LIST_ERROR;
}
@ -764,7 +762,8 @@ int InputTools::formulaTypeCheck(const QString &formula)
}
/* 为数字加结束符 */
if ((isNumber(formula.left(formula.size() - 1)) && formula.right(1) == ANS_END) || (formula[0] == SUB && formulaTypeCheck(formula.right(formula.size() - 1)) == -2 )) {
if ((isNumber(formula.left(formula.size() - 1)) && formula.right(1) == ANS_END)
|| (formula[0] == SUB && formulaTypeCheck(formula.right(formula.size() - 1)) == -2)) {
return -2;
}
@ -832,7 +831,8 @@ QString InputTools::clearSCI_NUM_END(const QString &qstr)
return res;
}
QString InputTools::clearANS_END_and_SCI_NUM_END(const QString &qstr) {
QString InputTools::clearANS_END_and_SCI_NUM_END(const QString &qstr)
{
QString res = qstr;
res = clearANS_END(res);
res = clearSCI_NUM_END(res);
@ -868,9 +868,7 @@ QString InputTools::addComma(const QString &qstr)
int pointIndex;
for (int i = 0; i < s.size(); i++) {
if ( s[i] == POINT[0]
|| s[i] == SCIENTIFIC_NOTATION[0]
|| s[i] == ANS_END[0] ) {
if (s[i] == POINT[0] || s[i] == SCIENTIFIC_NOTATION[0] || s[i] == ANS_END[0]) {
pointFlag = 1;
pointIndex = i;
@ -880,8 +878,7 @@ QString InputTools::addComma(const QString &qstr)
if (pointFlag == 1) {
return addComma(s.mid(0, pointIndex)) + s.mid(pointIndex, s.size() - pointIndex);
}
else {
} else {
QString ans;
for (int i = s.size() - 3; i > 0; i -= 3)
s.insert(i, ",");
@ -899,7 +896,8 @@ int InputTools::couldBeCal(const QString &qstr)
QString ch = qstr.right(1);
if (isArithmeticOperator(ch) || ch == BRACKET_L || ch == POINT || ch == POWER_SYMBOL || FUNCTION_QSTR.contains(ch)) {
if (isArithmeticOperator(ch) || ch == BRACKET_L || ch == POINT || ch == POWER_SYMBOL
|| FUNCTION_QSTR.contains(ch)) {
return COULD_NOT_BE_CAL;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 601 B

After

Width:  |  Height:  |  Size: 638 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 638 B

After

Width:  |  Height:  |  Size: 601 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -5,7 +5,7 @@ Calculator is an efficient and practical desktop computing tool developed by our
### Open mode
"Start menu"![](./image/1.png)>"Calculator" or "taskbar">"Search"![](image/2.png)>"Calculator"
"Start menu">"Calculator" or "taskbar">"Search">"Calculator"
### Basic operation

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 601 B

After

Width:  |  Height:  |  Size: 638 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 638 B

After

Width:  |  Height:  |  Size: 601 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -5,7 +5,7 @@
### 打开方式
“开始菜单”![](image/1.png)>“计算器”或“任务栏”>“搜索”![](image/2.png)>“计算器”
“开始菜单”>“计算器”或“任务栏”>“搜索”>“计算器”
### 基本操作

View File

@ -36,6 +36,9 @@ void DataWarehouse::init(void)
void DataWarehouse::getPlatForm(void)
{
this->platform = "xc-tablet";
return;
char *projectName = kdk_system_get_projectName();
if (projectName == NULL) {
return;

View File

@ -16,7 +16,7 @@ public:
};
/* 运行平台 */
/* 990 , 9a0 , v100 , v101 , inter */
/* 990 , 9a0 , v100 , v101 , inter , xc-tablet*/
QString platform;
/* 启动是否为 intel 小插件方式 , 该变量标识两种状态 0 ---> 正常方式启动 , 1 ---> 小插件启动 */

60
debian/changelog vendored
View File

@ -1,31 +1,57 @@
kylin-calculator (1.2.0.0-ok2~0803) yangtze; urgency=medium
kylin-calculator (1.2.0-5) v101; urgency=medium
* 处理编译卡住问题
* BUG号
* 任务号107837 界面布局按照设计稿调整
* 其他更改说明:无
* 其他改动影响域:无
-- Kevin Duan <duankaiwen@kylinos.cn> Wed, 03 Aug 2022 17:30:29 +0800
-- jishengjie <jishengjie@kylinos.cn> Fri, 30 Sep 2022 00:00:00 +0800
kylin-calculator (1.2.0.0-ok2~0721) yangtze; urgency=medium
kylin-calculator (1.2.0-4) v101; urgency=medium
* build for openKylin
* close-cd 109779 修复用户手册主页图标不是寻光主题图标问题
* close-cd 更换按钮图片
* close-cd 修改编译依赖
* BUG号 :139425 【设计】【计算器】应用关于窗口适配SDK
* 需求号 : 无
* 其他更改说明 : 无
* 其他改动影响域 : 无
-- huheng <huheng@kylinos.cn> Thu, 21 Jul 2022 12:32:08 +0800
-- huheng <huheng@kylinos.cn> Fri, 09 Sep 2022 11:40:05 +0800
kylin-calculator (1.2.0.0-ok2~0718) yangtze; urgency=medium
kylin-calculator (1.2.0.3) v101; urgency=medium
* build for openKylin
* close-cd #127642 更换置顶图标
* close-cd #127644 更换置顶接口
* BUG号 :135924 【计算器】e和π无法进行指数运算
* 需求号 : 无
* 其他更改说明 : 无
* 其他改动影响域 : 无
-- huheng <huheng@kylinos.cn> Mon, 18 Jul 2022 15:30:24 +0800
-- huheng <huheng@kylinos.cn> Wed, 31 Aug 2022 19:51:24 +0800
kylin-calculator (1.2.0.0-ok1) yangtze; urgency=medium
kylin-calculator (1.2.0.2) v101; urgency=medium
* build for openKylin
* BUG号 : 114015 【计算器】英文模式15号字体关于界面字母显示不全
125134 【用户手册】计算器“概述”和“打开方式”中开始菜单图标与系统实际不一致
125544 【用户手册】用户手册中计算器的图标与实际不一致,且实际的计算机无“置顶”功能
125588 【计算器】计算器的置顶按钮不显示
127264 【计算器】关于中的版本跟实际不一致
127284 【计算器】不支持复制负数计算结果
128340 【计算器】【藏文】藏文系统下左侧栏显示不全
123354 【ukui3.20】【设计】计算器-实现细节与设计稿不符
128405 【ukui3.20】【设计】计算器-汇率选择界面没有跟随主题高亮色变化
128407 【ukui3.20】【设计】计算器等号悬停效果不对
109779 【用户手册】用户手册首页传书、计算器的图标icon需替换为寻光主题图标
* 需求号 : 无
* 其他更改说明 : 无
* 其他改动影响域 : 无
-- Xie Wei <xiewei@kylinos.cn> Wed, 22 Jun 2022 18:40:18 +0800
-- songqianpeng <songqianpeng@kylinos.cn> Wed, 27 Jul 2022 11:19:33 +0800
kylin-calculator (1.2.0.1) v101; urgency=medium
* BUG号 : 无
* 需求号 : 无
* 其他更改说明 : 移除 libukui-comm 依赖,改用 libkysdk-sysinfo
* 其他改动影响域 : SP1 和 intel 平台判断逻辑
-- jishengjie <jishengjie@kylinos.cn> Fri, 15 Jul 2022 00:00:00 +0800
kylin-calculator (1.2.0.0) v101; urgency=medium

7
debian/source/local-options vendored Normal file
View File

@ -0,0 +1,7 @@
tar-ignore = build
tar-ignore = build-*
tar-ignore = .vscode
tar-ignore = .git
tar-ignore = .qm
tar-ignore = run
tar-ignore = README.md

View File

@ -1 +0,0 @@
include-binaries

View File

@ -1,7 +1,6 @@
<RCC>
<qresource prefix="/">
<file>translations/kylin-calculator_zh_CN.ts</file>
<file>data/org.kylin-calculator-data.gschema.xml</file>
<file>image/delete.png</file>
<file>image/close.png</file>
<file>image/max.png</file>

View File

@ -2,8 +2,11 @@
Name=Calculator
Name[zh_CN]=计算器
Name[bo_CN]=རྩིས་ཆས།
Name[zh_HK]=計算器
GenericName[bo_CN]=རྩིས་ཆས།
GenericName=Calculator
GenericName[zh_CN]=计算器
GenericName[zh_HK]=計算器
Keywords=calculator
Exec=/usr/bin/kylin-calculator %u
Icon=kylin-calculator

View File

@ -11,7 +11,7 @@ LIBS += -lX11
LIBS += -lgmp
CONFIG += link_pkgconfig c++11 link_pkgconfig lrelease
PKGCONFIG += gsettings-qt gsl kysdk-alm kysdk-ukenv kysdk-log kysdk-diagnostics kysdk-waylandhelper kysdk-sysinfo
PKGCONFIG += gsettings-qt gsl kysdk-alm kysdk-ukenv kysdk-log kysdk-diagnostics kysdk-waylandhelper kysdk-sysinfo kysdk-qtwidgets
message($$system(./translations/generate_translations_qm.sh))
@ -108,9 +108,6 @@ guide.path = /usr/share/kylin-user-guide/data/guide/
lib.files = $$PWD/libkylin-calculator.so
lib.path = /opt/small-plugin/children/bin
schemes.files += $$PWD/data/org.kylin-calculator-data.gschema.xml $$PWD/data/org.ukui.log4qt.kylin-calculator.gschema.xml
schemes.path = /usr/share/glib-2.0/schemas/
desktop.files += $$PWD/kylin-calculator.desktop
desktop.path = /usr/share/applications/
@ -120,7 +117,6 @@ translationsFiles.path = /usr/share/kylin-calculator/translations/
INSTALLS += \
target \
lib \
schemes \
desktop \
translationsFiles \
guide \

View File

@ -19,7 +19,7 @@ int main(int argc, char *argv[])
qInstallMessageHandler(kabase::Log::logOutput);
kabase::WindowManage::setScalingProperties();
kdk::QtSingleApplication a(argc, argv);
a.setApplicationVersion("1.1.0");
a.setApplicationVersion("1.2.0.2");
a.setWindowIcon(QIcon::fromTheme("kylin-calculator"));
if (a.isRunning()) {
qDebug() << "is running";
@ -43,6 +43,19 @@ int main(int argc, char *argv[])
qDebug() << "Waring : load qt translation file fail";
}
// 加载sdk控件翻译
QTranslator trans;
QString locale = QLocale::system().name();
if (locale == "zh_CN") {
if (trans.load(":/translations/gui_zh_CN.qm")) {
a.installTranslator(&trans);
}
} else if (locale == "bo_CN") {
if (trans.load(":/translations/gui_bo_CN.qm")) {
a.installTranslator(&trans);
}
}
/* 实例 */
LogicCenter::getInstance();

View File

@ -216,6 +216,8 @@ void MainWindow::setWidgetUi()
mainLayout->setSpacing(0);
this->mainWid->setLayout(mainLayout);
this->resize(STANDARD_WINDOWW, STANDARD_WINDOWH);
return;
}
@ -276,6 +278,9 @@ void MainWindow::setStandardUi()
this->setMinimumSize(INTEL_STANDARD_WINDOWW, INTEL_STANDARD_WINDOWH);
this->resize(INTEL_STANDARD_WINDOWW, INTEL_STANDARD_WINDOWH);
}
} else if (DataWarehouse::getInstance()->platform == QString("xc-tablet")) {
/* xc 平板 */
this->setMinimumSize(STANDARD_WINDOWW, STANDARD_WINDOWH);
} else {
this->setFixedSize(STANDARD_WINDOWW, STANDARD_WINDOWH);
}
@ -348,6 +353,8 @@ void MainWindow::setScientificUi()
this->setMinimumSize(INTEL_SCIENTIFIC_WINDOWW, INTEL_SCIENTIFIC_WINDOWH);
this->resize(INTEL_SCIENTIFIC_WINDOWW, INTEL_SCIENTIFIC_WINDOWH);
}
} else if (DataWarehouse::getInstance()->platform == QString("xc-tablet")) {
this->setMinimumSize(SCIENTIFIC_WINDOWW, SCIENTIFIC_WINDOWH);
} else {
this->setFixedSize(SCIENTIFIC_WINDOWW, SCIENTIFIC_WINDOWH);
}
@ -439,7 +446,12 @@ void MainWindow::setToolUi()
{
qInfo() << "Switch to exchange rate mode.";
/* 固定窗口大小 */
if (DataWarehouse::getInstance()->platform == QString("xc-tablet")) {
/* xc 平板 */
this->setMinimumSize(STANDARD_WINDOWW, STANDARD_WINDOWH);
} else {
this->setFixedSize(STANDARD_WINDOWW, STANDARD_WINDOWH);
}
// 设置当前模式
this->currentModel = EXCHANGE_RATE;
@ -477,8 +489,6 @@ void MainWindow::setToolUi()
this->lab_now = toolModelOutput->toolLabBef;
toolModelOutput->setWidgetStyle();
toolModelOutput->unitListBef->setWidgetStyle();
toolModelOutput->unitListAft->setWidgetStyle();
mainOutputLayout->addWidget(toolModelOutput);
mainButtonLayout->addWidget(toolModelButton);
@ -503,11 +513,21 @@ void MainWindow::setProgrammerUi()
connect(m_prograModel, &MainWindow::customContextMenuRequested, this,
&MainWindow::myCustomContextMenuRequested);
}
/* xc 平板 */
if (DataWarehouse::getInstance()->platform == QString("xc-tablet")) {
if (!m_prograModel->isBinWinShow()) {
this->setMinimumSize(QSize(PROGRAM_WIN_WIDTH, PROGRAM_WIN_HEIGHT));
} else {
this->setMinimumSize(QSize(PROGRAM_WIN_WIDTH, PROGRAM_WIN_HEIGHT + PROGRAM_BIN_HEIGHT));
}
} else {
if (!m_prograModel->isBinWinShow()) {
this->setFixedSize(QSize(PROGRAM_WIN_WIDTH, PROGRAM_WIN_HEIGHT));
} else {
this->setFixedSize(QSize(PROGRAM_WIN_WIDTH, PROGRAM_WIN_HEIGHT + PROGRAM_BIN_HEIGHT));
}
}
if (WidgetStyle::ThemeColor::LIGHT == WidgetStyle::themeColor) {
m_prograModel->setLightUI();
@ -675,8 +695,6 @@ void MainWindow::changeDarkTheme()
scientificOutput->setWidgetStyle(false);
} else if (label.contains(EXCHANGE_RATE)) {
toolModelOutput->setWidgetStyle(false);
toolModelOutput->unitListBef->setWidgetStyle();
toolModelOutput->unitListAft->setWidgetStyle();
} else if (label.contains(PROGRAMMER)) {
m_prograModel->setDarkUI();
}
@ -715,8 +733,6 @@ void MainWindow::changeLightTheme()
scientificOutput->setWidgetStyle(false);
} else if (label.contains(EXCHANGE_RATE)) {
toolModelOutput->setWidgetStyle(false);
toolModelOutput->unitListBef->setWidgetStyle();
toolModelOutput->unitListAft->setWidgetStyle();
} else if (label.contains(PROGRAMMER)) {
m_prograModel->setLightUI();
}
@ -841,6 +857,9 @@ void MainWindow::btn_merge(const QString &disText)
{
this->inputLongSym = false;
if (this->currentModel == EXCHANGE_RATE && lab_prepare->fontInfo().pixelSize() < 40) {
lab_prepare->setStyleSheet("font-size:40px;font-weight:15px;line-height:50px;");
}
/* 处理屏幕显示字号大小 */
if (disText != BACKSPACE && disText != CLEAN && disText != EQUAL) {
/* 判断是否输入过长 */
@ -852,6 +871,19 @@ void MainWindow::btn_merge(const QString &disText)
&& str.size() >= (DataWarehouse::getInstance()->maxInputNum) - 12)) {
this->lab_prepare->setText(tr("input too long"));
QFont labFont = lab_prepare->font();
QFontMetrics fontMts(labFont);
int dif = fontMts.width(lab_prepare->text()) - lab_prepare->width();
QString fontSizeStr = QString::number(lab_prepare->fontInfo().pixelSize() - 8);
/* 不同模式下需要判断的距离阈值不一样 */
while (this->currentModel == EXCHANGE_RATE && dif > -20) {
lab_prepare->setStyleSheet("font-size:" + fontSizeStr + "px;font-weight:15px;");
labFont.setPixelSize(labFont.pixelSize() - 8);
QFontMetrics fontMts(labFont);
dif = fontMts.width(lab_prepare->text()) - lab_prepare->width();
fontSizeStr = QString::number(labFont.pixelSize() - 8);
}
this->inputLongSym = true;
return;
}
@ -1115,9 +1147,12 @@ void MainWindow::changeModel(QString label)
/* 判断字符串是否为纯数字 */
bool MainWindow::isDigitStr(QString str)
{
str.replace(SUB, "-");
QByteArray byteArray = str.toLatin1();
const char *s = byteArray.data();
if (*s == '-') {
s++;
}
/* 判断是否为纯数字 */
while (*s && *s >= '0' && *s <= '9') {
s++;

View File

@ -34,12 +34,6 @@ void menuModule::init()
void menuModule::initAction()
{
titleText = new QLabel();
bodyAppName = new QLabel();
bodyAppVersion = new QLabel();
bodyAppDesc = new QLabel();
bodySupport = new QLabel();
iconSize = QSize(30, 30);
menuButton = new QToolButton(this);
menuButton->setToolTip(tr("Menu"));
@ -79,69 +73,8 @@ void menuModule::initAction()
<< actionHelp << actionAbout << actionQuit;
m_menu->addActions(actions);
// 互斥按钮组
QMenu *themeMenu = new QMenu;
QActionGroup *themeMenuGroup = new QActionGroup(this);
QAction *autoTheme = new QAction(tr("Auto"), this);
themeMenuGroup->addAction(autoTheme);
themeMenu->addAction(autoTheme);
autoTheme->setCheckable(true);
QAction *lightTheme = new QAction(tr("Light"), this);
themeMenuGroup->addAction(lightTheme);
themeMenu->addAction(lightTheme);
lightTheme->setCheckable(true);
QAction *darkTheme = new QAction(tr("Dark"), this);
themeMenuGroup->addAction(darkTheme);
themeMenu->addAction(darkTheme);
darkTheme->setCheckable(true);
QList<QAction *> themeActions;
themeActions << autoTheme << lightTheme << darkTheme;
// autoTheme->setChecked(true);
actionTheme->setMenu(themeMenu);
menuButton->setMenu(m_menu);
connect(m_menu, &QMenu::triggered, this, &menuModule::triggerMenu);
initGsetting();
setThemeFromLocalThemeSetting(themeActions);
themeUpdate();
connect(themeMenu, &QMenu::triggered, this, &menuModule::triggerThemeMenu);
}
void menuModule::setThemeFromLocalThemeSetting(QList<QAction *> themeActions)
{
m_pGsettingThemeStatus = new QGSettings(confPath.toLocal8Bit());
QString appConf = m_pGsettingThemeStatus->get("thememode").toString();
if ("lightonly" == appConf) {
themeStatus = themeLightOnly;
themeActions[1]->setChecked(true); //程序gsetting中为浅色only的时候就给浅色按钮设置checked
} else if ("darkonly" == appConf) {
themeStatus = themeBlackOnly;
themeActions[2]->setChecked(true);
} else {
themeStatus = themeAuto;
themeActions[0]->setChecked(true);
}
}
void menuModule::themeUpdate()
{
if (themeStatus == themeLightOnly) {
setThemeLight();
} else if (themeStatus == themeBlackOnly) {
setThemeDark();
} else {
setStyleByThemeGsetting();
}
}
void menuModule::setStyleByThemeGsetting()
{
QString nowThemeStyle = m_pGsettingThemeData->get("styleName").toString();
if ("ukui-dark" == nowThemeStyle || "ukui-black" == nowThemeStyle) {
setThemeDark();
} else {
setThemeLight();
}
}
void menuModule::triggerMenu(QAction *act)
@ -164,36 +97,20 @@ void menuModule::triggerMenu(QAction *act)
}
}
void menuModule::triggerThemeMenu(QAction *act)
{
if (!m_pGsettingThemeStatus) {
m_pGsettingThemeStatus =
new QGSettings(confPath.toLocal8Bit()); // m_pGsettingThemeStatus指针重复使用避免占用栈空间
}
QString str = act->text();
if ("Light" == str) {
themeStatus = themeLightOnly;
disconnect(m_pGsettingThemeData, &QGSettings::changed, this, &menuModule::dealSystemGsettingChange);
m_pGsettingThemeStatus->set("thememode", "lightonly");
// disconnect()
setThemeLight();
} else if ("Dark" == str) {
themeStatus = themeBlackOnly;
disconnect(m_pGsettingThemeData, &QGSettings::changed, this, &menuModule::dealSystemGsettingChange);
m_pGsettingThemeStatus->set("thememode", "darkonly");
setThemeDark();
} else {
themeStatus = themeAuto;
m_pGsettingThemeStatus->set("thememode", "auto");
initGsetting();
// updateTheme();
themeUpdate();
}
}
void menuModule::aboutAction()
{
initAbout();
m_aboutWindow = new kdk::KAboutDialog(this, QIcon::fromTheme("kylin-calculator"), QString(tr("Calculator")),
tr("Version: ") + qApp->applicationVersion());
m_aboutWindow->setAttribute(Qt::WA_DeleteOnClose);
m_aboutWindow->setBodyText(
tr("Calculator is a lightweight calculator based on Qt5, which provides standard calculation, "
"scientific calculation and exchange rate conversion."));
m_aboutWindow->setBodyTextVisiable(true);
m_aboutWindow->setWindowModality(Qt::WindowModal);
m_aboutWindow->setWindowModality(Qt::ApplicationModal);
m_aboutWindow->show();
m_aboutWindow->exec();
return;
}
@ -207,126 +124,6 @@ void menuModule::helpAction()
}
}
void menuModule::initAbout()
{
aboutWindow = new QDialog();
kabase::WindowManage::removeHeader(aboutWindow);
aboutWindow->setFixedSize(420, 360);
aboutWindow->setMinimumHeight(324);
QVBoxLayout *mainlyt = new QVBoxLayout();
QHBoxLayout *titleLyt = initTitleBar();
QVBoxLayout *bodylyt = initBody();
mainlyt->setContentsMargins(0, 0, 0, 0);
mainlyt->setSpacing(0);
mainlyt->addLayout(titleLyt);
mainlyt->addLayout(bodylyt);
mainlyt->addStretch();
aboutWindow->setLayout(mainlyt);
/* 关于弹窗应用内居中 */
QRect availableGeometry = this->parentWidget()->parentWidget()->parentWidget()->geometry();
aboutWindow->move(availableGeometry.center() - aboutWindow->rect().center());
dealSystemGsettingChange("styleName");
aboutWindow->exec();
return;
}
QHBoxLayout *menuModule::initTitleBar()
{
titleIconBtn = new QPushButton();
titleIconBtn->setIcon(QIcon::fromTheme("kylin-calculator"));
titleIconBtn->setIconSize(QSize(24, 24));
titleIconBtn->setFixedSize(QSize(24, 24));
QString btnStyle = "QPushButton{border:0px;border-radius:4px;background:transparent;}"
"QPushButton:Hover{border:0px;border-radius:4px;background:transparent;}"
"QPushButton:Pressed{border:0px;border-radius:4px;background:transparent;}";
titleIconBtn->setStyleSheet(btnStyle);
QPushButton *titleBtnClose = new QPushButton;
titleBtnClose->setFixedSize(30, 30);
titleBtnClose->setIcon(QIcon::fromTheme("window-close-symbolic"));
titleBtnClose->setProperty("isWindowButton", 0x2);
titleBtnClose->setProperty("useIconHighlightEffect", 0x8);
titleBtnClose->setFlat(true);
connect(titleBtnClose, &QPushButton::clicked, [=]() {
aboutWindow->close();
});
titleText->setText(tr(appShowingName.toLocal8Bit()));
// titleText->setStyleSheet("font-size:14px;");
QHBoxLayout *hlyt = new QHBoxLayout;
hlyt->setSpacing(0);
hlyt->setContentsMargins(4, 4, 4, 4);
hlyt->addSpacing(4);
hlyt->addWidget(titleIconBtn); //居下显示
hlyt->addSpacing(8);
hlyt->addWidget(titleText);
hlyt->addStretch();
hlyt->addWidget(titleBtnClose);
return hlyt;
}
QVBoxLayout *menuModule::initBody()
{
bodyIcon = new QPushButton();
bodyIcon->setIcon(QIcon::fromTheme("kylin-calculator"));
bodyIcon->setIconSize(QSize(96, 96));
bodyIcon->setFixedSize(QSize(96, 96));
QString btnStyle = "QPushButton{border:0px;border-radius:4px;background:transparent;}"
"QPushButton:Hover{border:0px;border-radius:4px;background:transparent;}"
"QPushButton:Pressed{border:0px;border-radius:4px;background:transparent;}";
bodyIcon->setStyleSheet(btnStyle);
bodyAppName->setFixedHeight(30);
bodyAppName->setText(tr(appShowingName.toLocal8Bit()));
bodyAppVersion->setFixedHeight(30);
bodyAppVersion->setText(tr("Version: ") + appVersion);
bodyAppVersion->setAlignment(Qt::AlignLeft);
bodyAppDesc->setText(tr("Calculator is a lightweight calculator based on Qt5, which provides standard calculation, "
"scientific calculation and exchange rate conversion."));
bodyAppDesc->setWordWrap(true);
bodyAppDesc->setAlignment(Qt::AlignCenter);
connect(bodySupport, &QLabel::linkActivated, this, [=](const QString url) {
QDesktopServices::openUrl(QUrl(url));
});
bodySupport->setContextMenuPolicy(Qt::NoContextMenu);
bodySupport->setFixedHeight(30);
QVBoxLayout *vlyt = new QVBoxLayout;
vlyt->setMargin(0);
vlyt->setSpacing(0);
vlyt->addSpacing(10);
vlyt->addWidget(bodyIcon, 0, Qt::AlignHCenter);
vlyt->addSpacing(8);
vlyt->addWidget(bodyAppName, 0, Qt::AlignHCenter);
vlyt->addSpacing(8);
vlyt->addWidget(bodyAppVersion, 0, Qt::AlignHCenter);
vlyt->addSpacing(8);
vlyt->addWidget(bodyAppDesc, 0, Qt::AlignHCenter);
vlyt->addSpacing(8);
vlyt->addWidget(bodySupport, 0, Qt::AlignHCenter);
vlyt->addStretch();
return vlyt;
}
void menuModule::initGsetting()
{
if (QGSettings::isSchemaInstalled(UKUI_THEME_GSETTING_PATH)) {
m_pGsettingThemeData = new QGSettings(UKUI_THEME_GSETTING_PATH);
connect(m_pGsettingThemeData, &QGSettings::changed, this, &menuModule::dealSystemGsettingChange);
}
}
void menuModule::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_F1) {
@ -335,49 +132,3 @@ void menuModule::keyPressEvent(QKeyEvent *event)
QWidget::keyPressEvent(event);
}
}
void menuModule::dealSystemGsettingChange(const QString key)
{
if (key == "styleName") {
refreshThemeBySystemConf();
}
}
void menuModule::refreshThemeBySystemConf()
{
QString themeNow = m_pGsettingThemeData->get("styleName").toString();
if ("ukui-dark" == themeNow || "ukui-black" == themeNow) {
setThemeDark();
} else {
setThemeLight();
}
}
void menuModule::setThemeDark()
{
if (aboutWindow) {
QPalette palette(this->palette());
palette.setColor(QPalette::Background, QColor::fromRgb(13, 13, 14));
aboutWindow->setPalette(palette);
// aboutWindow->setStyleSheet("background-color:rgba(13,13,14,1);");
}
emit menuModuleSetThemeStyle("dark-theme");
bodySupport->setText(tr("Service & Support: ")
+ "<a href=\"mailto://support@kylinos.cn\""
"style=\"color:rgba(225,225,225,1)\">"
"support@kylinos.cn</a>");
}
void menuModule::setThemeLight()
{
if (aboutWindow) {
QPalette palette(this->palette());
palette.setColor(QPalette::Background, QColor::fromRgb(255, 255, 255));
aboutWindow->setPalette(palette);
}
emit menuModuleSetThemeStyle("light-theme");
bodySupport->setText(tr("Service & Support: ")
+ "<a href=\"mailto://support@kylinos.cn\""
"style=\"color:rgba(0,0,0,1)\">"
"support@kylinos.cn</a>");
}

View File

@ -18,10 +18,6 @@
#ifndef MENUMODULE_H
#define MENUMODULE_H
#ifndef UKUI_THEME_GSETTING_PATH
#define UKUI_THEME_GSETTING_PATH "org.ukui.style"
#endif
#include <QApplication>
#include <QObject>
#include <QWidget>
@ -32,15 +28,10 @@
#include <QDebug>
#include <QString>
#include <QLabel>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QDesktopServices>
#include <QRect>
#include <QUrl>
#include <QScreen>
#include <QGSettings>
#include <QMetaEnum>
#include <QDialog>
#include "kaboutdialog.h"
#include "highlight-effect.h"
@ -49,68 +40,32 @@ class menuModule : public QWidget
Q_OBJECT
public:
explicit menuModule(QWidget *);
void themeUpdate();
signals:
void menuModuleClose();
void menuModuleChanged(QString);
void pullupHelp();
void menuModuleSetThemeStyle(QString);
public:
QToolButton *menuButton = nullptr;
public:
// 程序在实例化的时候需要传递的信息字段,打开debug开关后这些字段会被自动填充
QString appName = "kylin-calculator"; //格式kylin-usb-creator
QString appShowingName = tr("Calculator"); //格式kylin usb creator ,用来在前端展示
QString appVersion = qApp->applicationVersion();
QString appDesc = "kylin calculator";
QString confPath = "org.kylin-calculator-data.settings";
QDialog *aboutWindow = nullptr;
kdk::KAboutDialog *m_aboutWindow = nullptr;
private:
QMenu *m_menu = nullptr;
QMenu *themeMenu = nullptr;
QSize iconSize;
QString appPath = "tools/kylin-calculator"; //拉起帮助菜单时使用appName字段
QGSettings *m_pGsettingThemeData = nullptr;
QGSettings *m_pGsettingThemeStatus = nullptr;
enum typeThemeStatus : int { themeAuto = 0, themeBlackOnly = 1, themeLightOnly = 2 } themeStatus;
public slots:
void dealSystemGsettingChange(const QString);
private:
void keyPressEvent(QKeyEvent *event);
void init();
QHBoxLayout *initTitleBar(); //关于窗口标题栏初始化
QVBoxLayout *initBody(); // 关于窗口body初始化
void initGsetting();
void initAction();
void triggerMenu(QAction *act); //主菜单动作4
void triggerThemeMenu(QAction *act); //主题动作
void aboutAction();
void initAbout(); //关于窗口初始化
void helpAction();
void setThemeFromLocalThemeSetting(QList<QAction *>); //获取本地主题配置
void setStyleByThemeGsetting(); //通过外部主题配置设置主题
void setThemeStyle();
void setThemeLight();
void setThemeDark();
// void updateTheme(); //点击菜单中的主题设置后更新一次主题
QLabel *titleText = nullptr;
QLabel *bodyAppName = nullptr;
QLabel *bodyAppVersion = nullptr;
QLabel *bodyAppDesc = nullptr;
QLabel *bodySupport = nullptr;
QPushButton *titleIconBtn = nullptr;
QPushButton *bodyIcon = nullptr;
void refreshThemeBySystemConf(); //通过系统配置更改主题
};
#endif // MENUMODULE_H

View File

@ -20,11 +20,12 @@ void ProgramKeyboary::init()
}
if (QString("Equal") == m_btnList[i]) {
btn->setProperty("isImportant", true);
} else {
btn->setProperty("useButtonPalette", true);
}
btn->setIcon(QIcon(":/image/programmer/btn" + m_btnList[i] + ".svg"));
btn->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
btn->setFocusPolicy(Qt::NoFocus);
btn->setProperty("useButtonPalette", true);
connect(btn, &QPushButton::clicked, this, &ProgramKeyboary::onClicked);
if (m_btnDecDisList.contains(m_btnList[i])) {
// 该按钮在十进制中需要禁用
@ -32,7 +33,6 @@ void ProgramKeyboary::init()
}
m_btnMap.insert(m_btnList[i], btn);
}
}
void ProgramKeyboary::initLayout()
@ -85,7 +85,7 @@ void ProgramKeyboary::initLayout()
m_layout->setHorizontalSpacing(2);
m_layout->setVerticalSpacing(2);
m_layout->setMargin(2);
m_layout->setMargin(0);
this->setLayout(m_layout);
}

View File

@ -1,3 +1,5 @@
#include "data_warehouse.h"
#include "programmodel.h"
ProgramModel::ProgramModel(QWidget *parent) : QWidget(parent)
@ -21,15 +23,15 @@ ProgramModel::ProgramModel(QWidget *parent) : QWidget(parent)
// 布局
m_layout = new QVBoxLayout();
m_layout->addWidget(m_display);
m_layout->addSpacing(2);
m_layout->addWidget(m_toolbar);
m_layout->addSpacing(6);
m_layout->addWidget(m_binWin);
m_layout->addSpacing(7);
m_layout->addWidget(m_keyboary);
m_layout->setSpacing(0);
m_layout->setMargin(0);
m_layout->addWidget(m_display, 228);
m_layout->addSpacing(2);
m_layout->addWidget(m_toolbar, 60);
m_layout->addSpacing(4);
m_layout->addWidget(m_binWin, 168);
m_layout->addSpacing(4);
m_layout->addWidget(m_keyboary, 572);
m_layout->setContentsMargins(4, 0, 4, 4);
this->setLayout(m_layout);
// 初始隐藏二进制显示
@ -394,14 +396,24 @@ void ProgramModel::slotToolBtnClicked(QString value)
return;
}
if (QString(tr("ShowBinary")) == value) {
if (DataWarehouse::getInstance()->platform == QString("xc-tablet")) {
/* xc 平板 */
this->parentWidget()->window()->setMinimumSize(QSize(PROGRAM_WIN_WIDTH, PROGRAM_WIN_HEIGHT + PROGRAM_BIN_HEIGHT));
} else {
this->parentWidget()->window()->setFixedSize(QSize(PROGRAM_WIN_WIDTH, PROGRAM_WIN_HEIGHT + PROGRAM_BIN_HEIGHT));
}
m_binWinShowState = QString("TRUE");
m_binWin->show();
return;
}
if (QString(tr("HideBinary")) == value) {
m_binWin->hide();
if (DataWarehouse::getInstance()->platform == QString("xc-tablet")) {
/*xc 平板*/
this->parentWidget()->window()->setMinimumSize(QSize(PROGRAM_WIN_WIDTH, PROGRAM_WIN_HEIGHT));
} else {
this->parentWidget()->window()->setFixedSize(QSize(PROGRAM_WIN_WIDTH, PROGRAM_WIN_HEIGHT));
}
m_binWinShowState = QString("FALSE");
return;
}

View File

@ -116,17 +116,15 @@ void ToolBar::initLayout()
m_labBase->setLayout(m_layoutBase);
m_labBase->layout()->setSizeConstraint(QLayout::SetMinimumSize);
m_layout->addSpacing(8);
m_layout->addWidget(m_labCode);
m_layout->addStretch(1);
m_layout->addWidget(m_boxDigit);
m_layout->addStretch(1);
m_layout->addWidget(m_btnBin);
m_layout->addStretch(1);
m_layout->addWidget(m_btnMS);
m_layout->addStretch(1);
m_layout->addWidget(m_labBase);
m_layout->addSpacing(8);
m_layout->addWidget(m_labCode, 367);
m_layout->addStretch(45);
m_layout->addWidget(m_boxDigit, 305);
m_layout->addStretch(45);
m_layout->addWidget(m_btnBin, 283);
m_layout->addStretch(45);
m_layout->addWidget(m_btnMS, 112);
m_layout->addStretch(56);
m_layout->addWidget(m_labBase, 333);
m_layout->setMargin(0);
this->setLayout(m_layout);

View File

@ -231,7 +231,6 @@ void ScientificModel::setWidgetUi()
btnDelete->setProperty("useButtonPalette", true);
btnSub->setProperty("useButtonPalette", true);
btnAdd->setProperty("useButtonPalette", true);
btnEqual->setProperty("useButtonPalette", true);
btnPer->setProperty("useButtonPalette", true);
btnPoint->setProperty("useButtonPalette", true);
@ -447,6 +446,7 @@ void ScientificModel::setWidgetUi()
btnAllLayout->setSpacing(0);
btnAllLayout->setMargin(0);
btnAllLayout->setContentsMargins(4, 0, 4, 4);
// this->setFixedHeight(320);
this->setLayout(btnAllLayout);
@ -1108,7 +1108,6 @@ void ScientificModel::updateBtnRadDisplay()
m_picturetowhite->drawSymbolicColoredPixmap(QPixmap(":/image/newIcon/scientific/btnDeg.svg")));
}
}
}
}

View File

@ -487,7 +487,6 @@ void StandardModel::setWidgetUi()
btnDelete->setProperty("useButtonPalette", true);
btnSub->setProperty("useButtonPalette", true);
btnAdd->setProperty("useButtonPalette", true);
btnEqual->setProperty("useButtonPalette", true);
btnPer->setProperty("useButtonPalette", true);
btnPoint->setProperty("useButtonPalette", true);
@ -525,6 +524,7 @@ void StandardModel::setWidgetUi()
// 设置间距和背景样式
btnLayout->setSpacing(2);
btnLayout->setMargin(1);
btnLayout->setContentsMargins(4, 0, 4, 4);
// this->setFixedHeight(320);
this->setLayout(btnLayout);
}

View File

@ -371,6 +371,11 @@ void TitleBar::setWidgetUi()
/* 主线版本 放大功能暂时不上 , 暂时隐藏按钮 */
this->m_pMaximizeButton->hide();
/* xc 平板 隐藏置顶按钮 */
if (DataWarehouse::getInstance()->platform == QString("xc-tablet")) {
this->m_pTopButton->hide();
}
this->setLayout(pLayout);
// 设置信号和槽函数

View File

@ -4,6 +4,8 @@
#include "toolmodel.h"
#include "cal.h"
const int TAG_INFO = 100;
using namespace std;
ToolModelOutput::ToolModelOutput(QWidget *parent) : QWidget(parent)
@ -26,55 +28,55 @@ void ToolModelOutput::setWidgetUi()
toolLabRate = new QLabel(this);
toolUpdateLayout = new QVBoxLayout(this);
timeRateLayout = new QVBoxLayout(this);
timeRateLayout->addWidget(toolLabTime, 0, Qt::AlignCenter);
timeRateLayout->addWidget(toolLabRate, 0, Qt::AlignCenter);
timeRateLayout->setSpacing(0);
timeRateLayout->setMargin(0);
toolUpdateLayout->addSpacing(15);
toolUpdateLayout->addWidget(toolLabUpdate, 0, Qt::AlignCenter);
toolUpdateLayout->addWidget(toolIconUpdate, 0, Qt::AlignCenter);
toolUpdateLayout->addLayout(timeRateLayout, 0);
toolUpdateLayout->addSpacing(15);
toolUpdateLayout->setMargin(0);
toolUpdateLayout->addStretch(16);
toolUpdateLayout->addWidget(toolLabUpdate, 33, Qt::AlignCenter);
toolUpdateLayout->addStretch(36);
toolUpdateLayout->addWidget(toolIconUpdate, 27, Qt::AlignCenter);
toolUpdateLayout->addStretch(36);
toolUpdateLayout->addWidget(toolLabTime, 16, Qt::AlignCenter);
toolUpdateLayout->addStretch(15);
toolUpdateLayout->addWidget(toolLabRate, 16, Qt::AlignCenter);
toolUpdateLayout->addStretch(23);
toolUpdateWid = new QWidget(this);
toolUpdateWid->setLayout(toolUpdateLayout);
toolUpdateWid->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding);
toolUpdateWid->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
/* 换算前单位标识 */
toolLabUnitBef = new QLabel(this);
toolLabIconBef = new QLabel(this);
toolLabUnitBef->setFixedWidth(64);
toolLabUnitBef->setMinimumWidth(64);
toolLabUnitBef->setWordWrap(true);
toolUnitBefLayout = new QHBoxLayout(this);
toolUnitBefLayout->addWidget(toolLabUnitBef);
toolUnitBefLayout->addWidget(toolLabIconBef);
toolUnitBefLayout->addSpacing(16);
toolUnitBefLayout->setMargin(0);
toolUnitBefLayout->addStretch(15);
toolUnitBefLayout->addWidget(toolLabUnitBef, 72, Qt::AlignCenter);
toolUnitBefLayout->addStretch(240);
toolUnitBefLayout->addWidget(toolLabIconBef, 21, Qt::AlignCenter);
toolUnitBefLayout->addStretch(50);
toolUnitBefWid = new QPushButton(this);
toolUnitBefWid->setLayout(toolUnitBefLayout);
toolUnitBefWid->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding);
toolUnitBefWid->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
/* 换算后单位标识 */
toolLabUnitAft = new QLabel(this);
toolLabIconAft = new QLabel(this);
toolLabUnitAft->setFixedWidth(64);
toolLabUnitAft->setMinimumWidth(64);
toolLabUnitAft->setWordWrap(true);
toolUnitAftLayout = new QHBoxLayout(this);
toolUnitAftLayout->addWidget(toolLabUnitAft);
toolUnitAftLayout->addWidget(toolLabIconAft);
toolUnitAftLayout->addSpacing(16);
toolUnitAftLayout->setMargin(0);
toolUnitAftLayout->addStretch(15);
toolUnitAftLayout->addWidget(toolLabUnitAft, 72, Qt::AlignCenter);
toolUnitAftLayout->addStretch(240);
toolUnitAftLayout->addWidget(toolLabIconAft, 21, Qt::AlignCenter);
toolUnitAftLayout->addStretch(50);
toolUnitAftWid = new QPushButton(this);
toolUnitAftWid->setLayout(toolUnitAftLayout);
toolUnitAftWid->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding);
toolUnitAftWid->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
/* 汇率刷新 */
toolLabUpdate->setText(tr("Rate update"));
@ -95,17 +97,15 @@ void ToolModelOutput::setWidgetUi()
toolRateNameBef = tr("Chinese Yuan");
toolRateSymbBef = "CNY";
toolLabUnitBef->setText(toolRateNameBef + "\n" + toolRateSymbBef);
toolLabUnitBef->setAlignment(Qt::AlignCenter);
toolLabUnitBef->setAlignment(Qt::AlignLeft);
toolLabIconBef->setPixmap(QIcon::fromTheme("ukui-down-symbolic").pixmap(16, 16));
toolLabIconBef->setFixedSize(16, 16);
/* 换算后单位标识 */
toolRateNameAft = tr("US Dollar");
toolRateSymbAft = "USD";
toolLabUnitAft->setText(toolRateNameAft + "\n" + toolRateSymbAft);
toolLabUnitAft->setAlignment(Qt::AlignCenter);
toolLabUnitAft->setAlignment(Qt::AlignLeft);
toolLabIconAft->setPixmap(QIcon::fromTheme("ukui-down-symbolic").pixmap(16, 16));
toolLabIconAft->setFixedSize(16, 16);
connect(toolUnitBefWid, SIGNAL(clicked()), this, SLOT(unitListBefShow()));
connect(toolUnitAftWid, SIGNAL(clicked()), this, SLOT(unitListAftShow()));
@ -142,35 +142,30 @@ void ToolModelOutput::setWidgetUi()
// 将数据输出组件和数据单位列表加入布局
QGridLayout *toolOutputLayout = new QGridLayout(this);
toolOutputLayout->setColumnStretch(0, 398);
toolOutputLayout->setColumnStretch(1, 1208);
toolOutputLayout->setRowStretch(0, 224);
toolOutputLayout->setRowStretch(1, 107);
toolOutputLayout->setRowStretch(2, 107);
toolOutputLayout->addWidget(toolUpdateWid, 0, 0, 1, 1);
toolOutputLayout->addWidget(toolUnitBefWid, 1, 0, 1, 1);
toolOutputLayout->addWidget(toolUnitAftWid, 2, 0, 1, 1);
toolOutputLayout->addWidget(toolLabHis, 0, 1, 1, 3);
toolOutputLayout->addWidget(toolLabBef, 1, 1, 1, 3);
toolOutputLayout->addWidget(toolLabAft, 2, 1, 1, 3);
toolOutputLayout->addWidget(toolUpdateWid, 0, 0);
toolOutputLayout->addWidget(toolUnitBefWid, 1, 0);
toolOutputLayout->addWidget(toolUnitAftWid, 2, 0);
toolOutputLayout->addWidget(toolLabHis, 0, 1);
toolOutputLayout->addWidget(toolLabBef, 1, 1);
toolOutputLayout->addWidget(toolLabAft, 2, 1);
toolOutputLayout->setSpacing(2);
toolOutputLayout->setContentsMargins(1, 1, 1, 0);
toolOutputLayout->setContentsMargins(4, 1, 1, 2);
this->setLayout(toolOutputLayout);
// this->setFixedHeight(270);
// 数据单位列表
this->unitListBef = new UnitListWidget(this->parentWidget(), this->toolUnitBefWid);
this->unitListAft = new UnitListWidget(this->parentWidget(), this->toolUnitAftWid);
this->unitListBef = new UnitListWidget(this->toolUnitBefWid, this->parentWidget());
this->unitListAft = new UnitListWidget(this->toolUnitAftWid, this->parentWidget());
// QString strUnitList = "人民币,美元,欧元,英镑,日元,韩元,澳大利亚元";
// initUnitList(strUnitList);
connect(unitListBef->unitList, SIGNAL(itemClicked(QListWidgetItem *)), this,
SLOT(unitListSelect(QListWidgetItem *)));
connect(unitListAft->unitList, SIGNAL(itemClicked(QListWidgetItem *)), this,
SLOT(unitListSelect(QListWidgetItem *)));
connect(unitListBef->btnCancel, SIGNAL(clicked()), this, SLOT(unitListBefShow()));
connect(unitListAft->btnCancel, SIGNAL(clicked()), this, SLOT(unitListAftShow()));
connect(this->unitListBef, &QListWidget::itemClicked, this, &ToolModelOutput::listItemClicked);
connect(this->unitListAft, &QListWidget::itemClicked, this, &ToolModelOutput::listItemClicked);
this->unitListBef->hide();
this->unitListAft->hide();
@ -343,7 +338,7 @@ void ToolModelOutput::setWidgetStyle(bool resetFontSize)
toolLabRate->setStyleSheet("font-size:10px;color:#272A2D;");
toolUpdateWid->setStyleSheet("background:#F3F3F3;opacity:1;");
QString unitLabStyle = "font-family:SourceHanSansCN-ExtraLight;font-size:18px;color:#272A2D;line-height:22px;";
QString unitLabStyle = "font-family:SourceHanSansCN-ExtraLight;font-size:18px;color:#272A2D;line-height:18px;";
toolLabUnitBef->setStyleSheet(unitLabStyle);
toolLabIconBef->setPixmap(QIcon::fromTheme("ukui-down-symbolic").pixmap(16, 16));
// toolLabIconBef->setStyleSheet("border-image:url(:/image/downward.png);");
@ -356,12 +351,15 @@ void ToolModelOutput::setWidgetStyle(bool resetFontSize)
"QPushButton:hover{background-color:#F3F3F3;}");
// 数据输出界面
this->toolLabHis->setStyleSheet("color:#8C8C8C;font-size:12px;font-weight:15px;line-height:50px;");
this->toolLabAft->setStyleSheet("color:#272A2D;font-size:40px;font-weight:15px;line-height:50px;");
if (resetFontSize) {
this->toolLabAft->setStyleSheet("color:#272A2D;font-size:40px;font-weight:15px;line-height:50px;");
this->toolLabBef->setStyleSheet("color:#272A2D;font-size:48px;font-weight:15px;");
} else {
QString fontSizeStr = QString::number(toolLabBef->font().pixelSize());
QString fontSizeStr = QString::number(toolLabAft->font().pixelSize());
this->toolLabAft->setStyleSheet("color:#272A2D;font-size:" + fontSizeStr
+ "px;font-weight:15px;line-height:50px;");
fontSizeStr = QString::number(toolLabBef->font().pixelSize());
this->toolLabBef->setStyleSheet("color:#272A2D;font-size:" + fontSizeStr + "px;font-weight:15px;");
}
@ -390,21 +388,18 @@ void ToolModelOutput::setWidgetStyle(bool resetFontSize)
// 数据输出界面
this->toolLabHis->setStyleSheet("color:#8C8C8C;font-size:12px;font-weight:15px;line-height:50px;");
this->toolLabAft->setStyleSheet("color:#FFFFFF;font-size:40px;font-weight:15px;line-height:50px;");
if (resetFontSize) {
this->toolLabAft->setStyleSheet("color:#FFFFFF;font-size:40px;font-weight:15px;line-height:50px;");
this->toolLabBef->setStyleSheet("color:#FFFFFF;font-size:48px;font-weight:15px;");
} else {
QString fontSizeStr = QString::number(toolLabBef->font().pixelSize());
QString fontSizeStr = QString::number(toolLabAft->font().pixelSize());
this->toolLabAft->setStyleSheet("color:#FFFFFF;font-size:" + fontSizeStr
+ "px;font-weight:15px;line-height:50px;");
fontSizeStr = QString::number(toolLabBef->font().pixelSize());
this->toolLabBef->setStyleSheet("color:#FFFFFF;font-size:" + fontSizeStr + "px;font-weight:15px;");
}
}
QListWidgetItem *item = unitListBef->getItem();
unitListBef->setSelectItem(unitListBef->unitList->row(item));
item = unitListAft->getItem();
unitListAft->setSelectItem(unitListAft->unitList->row(item));
}
// 初始化单位列表
@ -412,8 +407,8 @@ void ToolModelOutput::initUnitList(QString listStr)
{
QStringList unitStrList = listStr.split(",");
unitListBef->unitList->clear();
unitListAft->unitList->clear();
unitListBef->clear();
unitListAft->clear();
QListWidgetItem *unitBeforeItem[unitStrList.size()];
QListWidgetItem *unitAfterItem[unitStrList.size()];
@ -452,31 +447,25 @@ void ToolModelOutput::initUnitList(QString listStr)
}
}
UnitListItem *listItemBef = new UnitListItem(unitListBef->unitList);
UnitListItem *listItemAft = new UnitListItem(unitListAft->unitList);
unitBeforeItem[i] = new QListWidgetItem(unitListBef, i);
unitAfterItem[i] = new QListWidgetItem(unitListAft, i);
unitBeforeItem[i]->setSizeHint(QSize(240, 36));
unitAfterItem[i]->setSizeHint(QSize(240, 36));
unitBeforeItem[i]->setText(itemName + " " + unitStrList[i]);
unitAfterItem[i]->setText(itemName + " " + unitStrList[i]);
unitBeforeItem[i]->setData(Qt::DisplayRole + TAG_INFO, unitStrList[i]);
unitAfterItem[i]->setData(Qt::DisplayRole + TAG_INFO, unitStrList[i]);
// 设置列表项的单位名称和单位符号
listItemBef->unitItemName->setText(itemName);
listItemAft->unitItemName->setText(itemName);
listItemBef->unitItemSymb->setText(unitStrList[i]);
listItemAft->unitItemSymb->setText(unitStrList[i]);
unitBeforeItem[i] = new QListWidgetItem(unitListBef->unitList, i);
unitAfterItem[i] = new QListWidgetItem(unitListAft->unitList, i);
unitListBef->unitList->setItemWidget(unitBeforeItem[i], listItemBef);
unitListAft->unitList->setItemWidget(unitAfterItem[i], listItemAft);
unitListBef->insertItem(i, unitBeforeItem[i]);
unitListAft->insertItem(i, unitAfterItem[i]);
}
unitListBef->unitList->setSpacing(2);
unitListAft->unitList->setSpacing(2);
unitListBef->setSpacing(2);
unitListAft->setSpacing(2);
// 默认汇率选择人民币和美元
unitListBef->unitList->setCurrentRow(12);
unitListAft->unitList->setCurrentRow(63);
unitListBef->setSelectItem(12);
unitListAft->setSelectItem(63);
unitListBef->setCurrentRow(12);
unitListAft->setCurrentRow(63);
return;
}
@ -579,29 +568,33 @@ void ToolModelOutput::defUpdateRate()
m_firstLoad = false;
QString strRateAll =
"{\"base\":\"CNY\",\"date\":\"2021-06-11\",\"time_last_updated\":1623369601,\"rates\":{\"AED\":0.575,"
"\"AFN\":12.34,\"ALL\":15.77,\"AMD\":81.17,\"ANG\":0.28,\"AOA\":101.21,\"ARS\":14.86,\"AUD\":0.202,\"AWG\":"
"0.28,\"AZN\":0.266,\"BAM\":0.251,\"BBD\":0.313,\"BDT\":13.25,\"BGN\":0.251,\"BHD\":0.0588,\"BIF\":308.3,"
"\"BMD\":0.156,\"BND\":0.207,\"BOB\":1.08,\"BRL\":0.791,\"BSD\":0.156,\"BTN\":11.42,\"BWP\":1.66,\"BYN\":0."
"39,\"BZD\":0.313,\"CAD\":0.189,\"CDF\":312.11,\"CHF\":0.14,\"CLP\":112.58,\"CNY\":1,\"COP\":561.66,"
"\"CRC\":96.53,\"CUC\":0.156,\"CUP\":4.03,\"CVE\":14.17,\"CZK\":3.27,\"DJF\":27.81,\"DKK\":0.959,\"DOP\":8."
"91,\"DZD\":20.95,\"EGP\":2.45,\"ERN\":2.35,\"ETB\":6.78,\"EUR\":0.129,\"FJD\":0.319,\"FKP\":0.111,\"FOK\":"
"0.959,\"GBP\":0.111,\"GEL\":0.493,\"GGP\":0.111,\"GHS\":0.91,\"GIP\":0.111,\"GMD\":8.11,\"GNF\":1537.96,"
"\"GTQ\":1.21,\"GYD\":32.8,\"HKD\":1.21,\"HNL\":3.76,\"HRK\":0.968,\"HTG\":14.3,\"HUF\":44.62,\"IDR\":2233."
"07,\"ILS\":0.51,\"IMP\":0.111,\"INR\":11.42,\"IQD\":228.91,\"IRR\":6534.46,\"ISK\":18.91,\"JMD\":23.21,"
"\"JOD\":0.111,\"JPY\":17.14,\"KES\":16.89,\"KGS\":13.2,\"KHR\":640.25,\"KID\":0.202,\"KMF\":63.23,\"KRW\":"
"174.61,\"KWD\":0.0469,\"KYD\":0.13,\"KZT\":66.88,\"LAK\":1474.08,\"LBP\":235.9,\"LKR\":31,\"LRD\":26.8,"
"\"LSL\":2.13,\"LYD\":0.699,\"MAD\":1.38,\"MDL\":2.76,\"MGA\":593,\"MKD\":7.92,\"MMK\":257.31,\"MNT\":448."
"17,\"MOP\":1.25,\"MRU\":5.67,\"MUR\":6.36,\"MVR\":2.41,\"MWK\":125.78,\"MXN\":3.08,\"MYR\":0.644,\"MZN\":"
"9.9,\"NAD\":2.13,\"NGN\":66.76,\"NIO\":5.46,\"NOK\":1.3,\"NPR\":18.28,\"NZD\":0.218,\"OMR\":0.0602,"
"\"PAB\":0.156,\"PEN\":0.603,\"PGK\":0.549,\"PHP\":7.47,\"PKR\":24.34,\"PLN\":0.576,\"PYG\":1041.92,"
"\"QAR\":0.57,\"RON\":0.633,\"RSD\":15.11,\"RUB\":11.28,\"RWF\":156.52,\"SAR\":0.587,\"SBD\":1.24,\"SCR\":"
"2.57,\"SDG\":67.49,\"SEK\":1.29,\"SGD\":0.207,\"SHP\":0.111,\"SLL\":1606.89,\"SOS\":90.77,\"SRD\":2.21,"
"\"SSP\":27.82,\"STN\":3.15,\"SYP\":197.22,\"SZL\":2.13,\"THB\":4.88,\"TJS\":1.77,\"TMT\":0.547,\"TND\":0."
"427,\"TOP\":0.346,\"TRY\":1.33,\"TTD\":1.06,\"TVD\":0.202,\"TWD\":4.33,\"TZS\":363.16,\"UAH\":4.23,"
"\"UGX\":550.96,\"USD\":0.156,\"UYU\":6.81,\"UZS\":1656.53,\"VES\":490206.01,\"VND\":3583.66,\"VUV\":16.88,"
"\"WST\":0.393,\"XAF\":84.3,\"XCD\":0.422,\"XDR\":0.108,\"XOF\":84.3,\"XPF\":15.34,\"YER\":39.08,\"ZAR\":2."
"13,\"ZMW\":3.53}}";
"{\"base\":\"CNY\",\"date\":\"2022-08-31\",\"time_last_updated\":1661904002,\"rates\":{\"CNY\":1,"
"\"AED\":0.532,\"AFN\":12.79,\"ALL\":16.96,\"AMD\":58.69,\"ANG\":0.259,\"AOA\":63.56,\"ARS\":20.04,\"AUD"
":0.21,\"AWG\":0.259,\"AZN\":0.246,\"BAM\":0.283,\"BBD\":0.29,\"BDT\":13.68,\"BGN\":0.283,\"BHD"
":0.0544,\"BIF\":293.57,\"BMD\":0.145,\"BND\":0.202,\"BOB\":1,\"BRL\":0.73,\"BSD\":0.145,\"BTN\":11.51,"
"\"BWP"
":1.86,\"BYN\":0.368,\"BZD\":0.29,\"CAD\":0.189,\"CDF\":290.88,\"CHF\":0.141,\"CLP\":127.83,\"COP"
":632.2,\"CRC\":91.77,\"CUP\":3.48,\"CVE\":15.94,\"CZK\":3.55,\"DJF\":25.73,\"DKK\":1.08,\"DOP\":7.72,\"DZD"
":20.38,\"EGP\":2.78,\"ERN\":2.17,\"ETB\":7.62,\"EUR\":0.145,\"FJD\":0.32,\"FKP\":0.124,\"FOK\":1.08,\"GBP"
":0.124,\"GEL\":0.422,\"GGP\":0.124,\"GHS\":1.48,\"GIP\":0.124,\"GMD\":7.95,\"GNF\":1248.08,\"GTQ"
":1.12,\"GYD\":30.25,\"HKD\":1.14,\"HNL\":3.56,\"HRK\":1.09,\"HTG\":16.75,\"HUF\":58.34,\"IDR"
":2140.06,\"ILS\":0.479,\"IMP\":0.124,\"INR\":11.51,\"IQD\":211.05,\"IRR\":6107.09,\"ISK\":20.52,\"JEP"
":0.124,\"JMD\":21.82,\"JOD\":0.103,\"JPY\":20.05,\"KES\":17.45,\"KGS\":11.9,\"KHR\":593.1,\"KID"
":0.21,\"KMF\":71.12,\"KRW\":195,\"KWD\":0.0434,\"KYD\":0.121,\"KZT\":68.73,\"LAK\":2520.87,\"LBP"
":218.29,\"\LKR\":51.24,\"LRD\":22.27,\"LSL\":2.45,\"\LYD\":0.714,\"MAD\":1.53,\"\MDL\":2.8,\"MGA"
":594.64,\"MKD\":8.92,\"MMK\":302.63,\"MNT\":461.08,\"MOP\":1.17,\"MRU\":5.45,\"MUR\":6.37,\"MVR"
":2.23,\"MWK\":150.35,\"MXN\":2.9,\"MYR\":0.649,\"MZN\":9.23,\"NAD\":2.45,\"NGN\":61.17,\"NIO\":5.2,\"NOK"
":1.42,\"NPR\":18.42,\"NZD\":0.236,\"OMR\":0.0557,\"PAB\":0.145,\"PEN\":0.554,\"PGK\":0.51,\"PHP"
":8.12,\"PKR\":31.84,\"PLN\":0.682,\"PYG\":995.19,\"QAR\":0.527,\"RON\":0.702,\"RSD\":16.95,\"RUB"
":8.79,\"RWF\":155.47,\"SAR\":0.543,\"SBD\":1.18,\"SCR\":1.87,\"\SDG\":81.92,\"SEK\":1.54,\"SGD\":0.202,"
"\"SHP"
":0.124,\"SLE\":2.07,\"SLL\":2067.73,\"SOS\":82.2,\"SRD\":3.54,\"SSP\":93.98,\"STN\":3.54,\"SYP"
":364.07,\"SZL\":2.45,\"\THB\":5.27,\"TJS\":1.48,\"TMT\":0.507,\"TND\":0.423,\"TOP\":0.341,\"TRY\":2.63,"
"\"TTD"
":0.983,\"TVD\":0.21,\"TWD\":4.4,\"TZS\":337.14,\"UAH\":5.38,\"UGX\":551.16,\"USD\":0.145,\"UYU\":5.85,"
"\"UZS"
":1584.59,\"VES\":1.14,\"VND\":3394.8,\"VUV\":17.16,\"WST\":0.394,\"XAF\":94.82,\"XCD\":0.391,\"XDR"
":0.111,\"XOF\":94.82,\"XPF\":17.25,\"YER\":36.25,\"ZAR\":2.45,\"ZMW\":2.31,\"ZWL\":78.55}}";
// 格式化处理汇率信息字符串键值对
strRateList = strRateAll.split(QRegExp("[{} :,\"\n]"));
@ -678,52 +671,14 @@ void ToolModelOutput::unitListAftShow()
}
}
// 选择换算前的单位列表
void ToolModelOutput::unitListBefSelect(QListWidgetItem *item)
{
unitListBef->hide();
}
// 选择换算后的单位列表
void ToolModelOutput::unitListAftSelect(QListWidgetItem *item)
{
QString rateSymbol = item->text();
QString rateName = rateSymbol;
// 更新汇率比率显示
QString labelRate = toolLabRate->text();
labelRate = labelRate.section("=", 0, 0) + "= " + QString::number(toolDouRate) + " " + rateName;
toolLabRate->setText(labelRate);
toolLabUnitAft->setText(rateSymbol + "\n" + rateName);
unitListAft->hide();
}
/* 选择货币单位列表 */
void ToolModelOutput::unitListSelect(QListWidgetItem *item)
void ToolModelOutput::listItemClicked(QListWidgetItem *item)
{
if (unitListAft->isHidden()) {
// 获取QWidget
QWidget *itemWid = unitListBef->unitList->itemWidget(item);
// 获取所有的QLabel
QList<QLabel *> labelList = itemWid->findChildren<QLabel *>();
unitListBef->setSelectItem(unitListBef->unitList->row(item));
toolRateSymbBef = labelList[1]->text();
toolRateSymbBef = item->data(Qt::DisplayRole + TAG_INFO).toString();
updateRateName();
unitListBef->hide();
} else {
// 获取QWidget
QWidget *itemWid = unitListAft->unitList->itemWidget(item);
// 获取所有的QLabel
QList<QLabel *> labelList = itemWid->findChildren<QLabel *>();
unitListAft->setSelectItem(unitListAft->unitList->row(item));
toolRateSymbAft = labelList[1]->text();
toolRateSymbAft = item->data(Qt::DisplayRole + TAG_INFO).toString();
updateRateName();
unitListAft->hide();
}
@ -929,7 +884,6 @@ void ToolModelButton::setWidgetUi()
btnDelete->setProperty("useButtonPalette", true);
btnSub->setProperty("useButtonPalette", true);
btnAdd->setProperty("useButtonPalette", true);
btnEqual->setProperty("useButtonPalette", true);
btnPer->setProperty("useButtonPalette", true);
btnPoint->setProperty("useButtonPalette", true);
@ -957,6 +911,7 @@ void ToolModelButton::setWidgetUi()
// 设置间距和背景样式
btnLayout->setSpacing(2);
btnLayout->setMargin(1);
btnLayout->setContentsMargins(4, 0, 4, 4);
// this->setFixedHeight(320);
this->setLayout(btnLayout);
@ -1036,216 +991,22 @@ void ToolModelButton::keyPressEvent(QKeyEvent *event)
return;
}
// 换算器单位列表界面
UnitListWidget::UnitListWidget(QWidget *parent, QWidget *pWidget) : QWidget(parent)
UnitListWidget::UnitListWidget(QWidget *win, QWidget *parent) : QListWidget(parent)
{
this->pWidget = pWidget;
// 初始化组件
this->setWidgetUi();
// 设置组件样式
this->setWidgetStyle();
this->verticalScrollBar()->setProperty("drawScrollBarGroove", false);
this->setAutoFillBackground(true);
this->setBackgroundRole(QPalette::Base);
m_win = win;
}
// 初始化组件
void UnitListWidget::setWidgetUi()
void UnitListWidget::focusOutEvent(QFocusEvent *event)
{
// 标题和取消
unitTitle = new QLabel(this);
btnCancel = new QPushButton(this);
unitTitle->setText(tr("currency"));
// unitTitle->setText("货币");
unitTitle->setAlignment(Qt::AlignLeft);
unitTitle->setFixedHeight(20);
// unitTitle->resize(this->width(),20);
btnCancel->setText(tr("cancel"));
// btnCancel->setText("取消");
btnCancel->setFixedSize(QSize(55, 20));
// btnCancel->move(this->x() + 260 - btnCancel->width(), 15);
// 搜索框
// searchEdit = new QLineEdit(this);
// searchEdit->setPlaceholderText(tr("search"));
// searchEdit->setPlaceholderText("搜索");
// 单位列表
unitList = new QListWidget(this);
unitList->setFrameShape(QListWidget::NoFrame);
unitList->verticalScrollBar()->setProperty("drawScrollBarGroove", false);
// unitList->setVerticalScrollMode(QListWidget::ScrollPerPixel);
// 总体布局
m_layout = new QHBoxLayout;
m_layout->addSpacing(8);
m_layout->addWidget(unitTitle);
m_layout->addStretch();
m_layout->addWidget(btnCancel);
m_layout->addSpacing(8);
m_layout->setMargin(0);
m_layout->setSpacing(0);
unitListLayout = new QVBoxLayout(this);
unitListLayout->addLayout(m_layout);
// unitListLayout->addWidget(searchEdit);
unitListLayout->addWidget(unitList);
unitWid = new QWidget(this);
unitWid->setLayout(unitListLayout);
unitWid->setObjectName("unitWid");
QVBoxLayout *unitLayout = new QVBoxLayout(this);
unitLayout->addWidget(unitWid);
this->setLayout(unitLayout);
this->setContentsMargins(0, 0, 0, 0);
this->setFixedHeight(410);
this->setFixedWidth(280);
// this->resize(280,410);
// btnCancel->raise();
// searchEdit->hide();
//绘制阴影
QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect(this);
static const QColor shadowColor = QColor(70, 70, 70); // 阴影颜色
static const int shadowRedius = 10; // 阴影模糊度
effect->setOffset(0, 0); // (0,0)代表向四周发散
effect->setColor(shadowColor); // 设置阴影颜色
effect->setBlurRadius(shadowRedius); // 设定阴影的模糊半径,数值越大越模糊
this->setGraphicsEffect(effect);
}
// 初始化组件样式
void UnitListWidget::setWidgetStyle()
{
if (WidgetStyle::themeColor == WidgetStyle::ThemeColor::LIGHT) {
unitTitle->setStyleSheet(
"width:30px;height:20px;font-size:14px;font-family:Source Han Sans CN;color:#000000;text-align:left;");
btnCancel->setStyleSheet("width:30px;height:20px;border:0px;font-size:14px;"
"font-family:Source Han Sans CN;color:#3D6BE5;");
// searchEdit->setStyleSheet("width:246px;height:32px;background:rgba(231,231,231,0.5);border-radius:4px;");
unitList->setStyleSheet("QListWidget{background-color:#FFFFFF;}"
"QListWidget::item{border-radius:4px;height:31px;}"
"QListWidget::item:selected{background-color:#3D6BE5;color:#FFFFFF;}"
"QListWidget::item:hover{background-color:#E9E9E9;}");
// unitList->verticalScrollBar()->setStyleSheet("width:4px;background:#E9E9E9;border-radius:2px;border:0;");
unitWid->setStyleSheet("#unitWid{background-color:#FFFFFF;border-radius:4px;}");
} else if (WidgetStyle::themeColor == WidgetStyle::ThemeColor::DARK) {
unitTitle->setStyleSheet(
"width:30px;height:20px;font-size:14px;font-family:Source Han Sans CN;color:#FFFFFF;text-align:left;");
btnCancel->setStyleSheet("width:30px;height:20px;border:0px;font-size:14px;"
"font-family:Source Han Sans CN;color:#EE8A18;");
// searchEdit->setStyleSheet("width:246px;height:32px;background:rgba(30,30,32,0.5);border-radius:4px;");
unitList->setStyleSheet("QListWidget{background-color:#121212;}"
"QListWidget::item{border-radius:4px;height:31px;}"
"QListWidget::item:selected{background-color:#FF800F;}"
"QListWidget::item:hover{background-color:#666666;}");
// unitList->verticalScrollBar()->setStyleSheet("width:4px;background:#47474D;border-radius:2px;border:0;");
unitWid->setStyleSheet("#unitWid{background-color:#121212;border-radius:4px;}");
}
}
void UnitListWidget::setSelectItem(int row)
{
m_item = unitList->item(row);
for (int i = 0; i < unitList->count(); i++) {
// 获取QWidget
QWidget *itemWid = this->unitList->itemWidget(unitList->item(i));
// 获取所有的QLabel
QList<QLabel *> labelList = itemWid->findChildren<QLabel *>();
if (i == row) {
labelList[0]->setStyleSheet("color:#FFFFFF");
labelList[1]->setStyleSheet("color:#FFFFFF");
} else {
if (WidgetStyle::themeColor == WidgetStyle::ThemeColor::LIGHT) {
labelList[0]->setStyleSheet("color:#000000");
labelList[1]->setStyleSheet("color:#000000");
} else if (WidgetStyle::themeColor == WidgetStyle::ThemeColor::DARK) {
labelList[0]->setStyleSheet("color:#FFFFFF");
labelList[1]->setStyleSheet("color:#FFFFFF");
}
}
}
}
// 失去焦点窗口隐藏
void UnitListWidget::focusOutEvent(QFocusEvent *e)
{
if (this->btnCancel->hasFocus() || this->unitList->hasFocus() || this->pWidget->hasFocus()) {
if (m_win->hasFocus()) {
return;
}
this->hide();
}
QListWidgetItem *UnitListWidget::getItem() const
{
return m_item;
}
// 单位列表列表项
UnitListItem::UnitListItem(QWidget *parent) : QWidget(parent)
{
// 设置列表项背景透明
this->setAttribute(Qt::WA_TranslucentBackground, true);
// 初始化列表项组件
setWidgetUi();
// 初始化列表项样式
setWidgetStyle();
}
// 初始化列表项组件
void UnitListItem::setWidgetUi()
{
// 初始化组件元素
unitItemName = new QLabel(this);
unitItemSymb = new QLabel(this);
unitItemLayout = new QHBoxLayout(this);
// 文字对齐方式和自适应放缩
unitItemName->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
unitItemSymb->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
// unitItemName->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
// 将组件加入布局
unitItemLayout->addSpacing(8);
unitItemLayout->addWidget(unitItemName);
unitItemLayout->addWidget(unitItemSymb);
unitItemLayout->setSpacing(0);
unitItemLayout->setMargin(0);
this->setLayout(unitItemLayout);
}
// 初始化列表项样式
void UnitListItem::setWidgetStyle()
{
// 单位名称组件样式
QString itemNameStyle = "font-family:SourceHanSansCN-ExtraLight;font-size:16px;background:transparent;";
unitItemName->setStyleSheet(itemNameStyle);
// 单位符号组件样式
QString itemSymbStyle = "font-family:SourceHanSansCN-ExtraLight;font-size:16px;width:30px;background:transparent;";
unitItemSymb->setStyleSheet(itemSymbStyle);
unitItemSymb->setFixedWidth(50);
this->setFixedHeight(32);
}
void UpdateRateThread::run()
{
// 访问汇算换算api

View File

@ -57,9 +57,8 @@
#include "../common/picturetowhite.h"
//#include "cal.h"
class UnitListWidget;
class UnitListItem;
class UpdateRateThread;
class UnitListWidget;
// 换算器输入输出界面
class ToolModelOutput : public QWidget, public InputSymbols
@ -153,8 +152,6 @@ public:
// 默认更新汇率
void defUpdateRate();
// signals:
// void clicked();
public slots:
// 控制换算前的单位列表
@ -163,14 +160,7 @@ public slots:
// 控制换算后的单位列表
void unitListAftShow();
// 选择换算前的单位列表
void unitListBefSelect(QListWidgetItem *);
// 选择换算后的单位列表
void unitListAftSelect(QListWidgetItem *);
// 选择货币单位列表
void unitListSelect(QListWidgetItem *);
void listItemClicked(QListWidgetItem *item);
// 响应线程汇率更新完成
void dealDone(QStringList list);
@ -213,73 +203,17 @@ public slots:
void keyPressEvent(QKeyEvent *event);
};
// 换算器单位列表项
class UnitListItem : public QWidget
class UnitListWidget : public QListWidget
{
Q_OBJECT
public:
explicit UnitListItem(QWidget *parent = 0);
// 初始化列表项组件
void setWidgetUi();
// 初始化列表项样式
void setWidgetStyle();
// 单位名称
QLabel *unitItemName;
// 单位标识
QLabel *unitItemSymb;
// 列表项水平布局
QHBoxLayout *unitItemLayout;
};
// 换算器单位列表界面
class UnitListWidget : public QWidget
{
Q_OBJECT
public:
explicit UnitListWidget(QWidget *parent = 0, QWidget *pWidget = 0);
// 标题和取消
QLabel *unitTitle;
QPushButton *btnCancel;
// 搜索框
// QLineEdit *searchEdit;
// 单位列表
QListWidget *unitList;
QHBoxLayout *unitItemLayout;
QLabel *unitName;
QLabel *unitSign;
// 总体布局
QHBoxLayout *m_layout;
QVBoxLayout *unitListLayout;
// 初始化组件
void setWidgetUi();
// 初始化组件样式
void setWidgetStyle();
void setSelectItem(int row);
QListWidgetItem *getItem() const;
protected:
// 失去焦点窗口隐藏
virtual void focusOutEvent(QFocusEvent *e);
explicit UnitListWidget(QWidget *win, QWidget *parent = nullptr);
private:
QWidget *pWidget;
QWidget *m_win = nullptr;
QWidget *unitWid;
QListWidgetItem *m_item; // 当前所选行
protected:
void focusOutEvent(QFocusEvent *event);
};
class UpdateRateThread : public QThread

View File

@ -37,7 +37,7 @@
</message>
<message>
<source>Right operand error!</source>
<translation type="unfinished"></translation>
<translation>!</translation>
</message>
</context>
<context>
@ -140,7 +140,7 @@
</message>
<message>
<source>ShowBinary</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
</context>
<context>
@ -198,7 +198,7 @@
</message>
<message>
<source>ShowBinary</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
</context>
<context>
@ -217,7 +217,7 @@
</message>
<message>
<source>Error!</source>
<translation type="unfinished">!</translation>
<translation>!</translation>
</message>
</context>
<context>

View File

@ -0,0 +1,424 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh">
<context>
<name>Calc</name>
<message>
<location filename="../calc_programmer/calc/calc.cpp" line="85"/>
<source>The expression is empty!</source>
<translation></translation>
</message>
<message>
<location filename="../calc_programmer/calc/calc.cpp" line="106"/>
<location filename="../calc_programmer/calc/calc.cpp" line="121"/>
<location filename="../calc_programmer/calc/calc.cpp" line="126"/>
<location filename="../calc_programmer/calc/calc.cpp" line="153"/>
<location filename="../calc_programmer/calc/calc.cpp" line="180"/>
<location filename="../calc_programmer/calc/calc.cpp" line="247"/>
<location filename="../calc_programmer/calc/calc.cpp" line="272"/>
<location filename="../calc_programmer/calc/calc.cpp" line="298"/>
<source>Expression error!</source>
<translation></translation>
</message>
<message>
<location filename="../calc_programmer/calc/calc.cpp" line="116"/>
<location filename="../calc_programmer/calc/calc.cpp" line="140"/>
<source>Missing left parenthesis!</source>
<translation></translation>
</message>
<message>
<location filename="../calc_programmer/calc/calc.cpp" line="207"/>
<source>The value is too large!</source>
<translation></translation>
</message>
<message>
<location filename="../calc_programmer/calc/calc.cpp" line="219"/>
<source>Miss operand!</source>
<translation></translation>
</message>
<message>
<location filename="../calc_programmer/calc/calc.cpp" line="328"/>
<location filename="../calc_programmer/calc/calc.cpp" line="386"/>
<source>Operator undefined!</source>
<translation></translation>
</message>
<message>
<location filename="../calc_programmer/calc/calc.cpp" line="350"/>
<source>Divisor cannot be 0!</source>
<translation> 0</translation>
</message>
<message>
<location filename="../calc_programmer/calc/calc.cpp" line="370"/>
<location filename="../calc_programmer/calc/calc.cpp" line="378"/>
<source>Right operand error!</source>
<translation></translation>
</message>
<message>
<source>The shifted right operand is negative!</source>
<translation type="vanished">!</translation>
</message>
</context>
<context>
<name>FuncList</name>
<message>
<location filename="../src/funclist.cpp" line="37"/>
<source>Calculator</source>
<translation></translation>
</message>
<message>
<location filename="../src/funclist.cpp" line="42"/>
<source>standard</source>
<translation></translation>
</message>
<message>
<location filename="../src/funclist.cpp" line="42"/>
<source>scientific</source>
<translation></translation>
</message>
<message>
<location filename="../src/funclist.cpp" line="58"/>
<source>Unit converter</source>
<translation></translation>
</message>
<message>
<location filename="../src/funclist.cpp" line="64"/>
<source>exchange rate</source>
<translation></translation>
</message>
</context>
<context>
<name>IntelModeList</name>
<message>
<location filename="../src/basicbutton.cpp" line="145"/>
<source>standard</source>
<translation></translation>
</message>
<message>
<location filename="../src/basicbutton.cpp" line="148"/>
<source>scientific</source>
<translation></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../src/mainwindow.cpp" line="233"/>
<source>Calculator</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="996"/>
<location filename="../src/mainwindow.cpp" line="1185"/>
<location filename="../src/mainwindow.cpp" line="1201"/>
<source>standard</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="1183"/>
<source>calculator</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="260"/>
<source>Copy</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="261"/>
<source>Paste</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="853"/>
<source>input too long</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="55"/>
<location filename="../src/mainwindow.cpp" line="1185"/>
<location filename="../src/mainwindow.cpp" line="1205"/>
<source>scientific</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="1218"/>
<source>exchange rate</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="748"/>
<location filename="../src/mainwindow.cpp" line="752"/>
<source>Error!</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow.cpp" line="756"/>
<source>Input error!</source>
<translation></translation>
</message>
</context>
<context>
<name>ProgramDisplay</name>
<message>
<location filename="../src/programmer/programdisplay.cpp" line="56"/>
<location filename="../src/programmer/programdisplay.cpp" line="79"/>
<source>input too long!</source>
<translation></translation>
</message>
</context>
<context>
<name>ProgramModel</name>
<message>
<location filename="../src/programmer/programmodel.cpp" line="234"/>
<location filename="../src/programmer/programmodel.cpp" line="318"/>
<source>Input error!</source>
<translation></translation>
</message>
<message>
<location filename="../src/programmer/programmodel.cpp" line="400"/>
<source>ShowBinary</source>
<translation></translation>
</message>
<message>
<source>DisplayBinary</source>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/programmer/programmodel.cpp" line="406"/>
<source>HideBinary</source>
<translation></translation>
</message>
</context>
<context>
<name>TitleBar</name>
<message>
<source>FuncList</source>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/titlebar.cpp" line="280"/>
<source>Standard</source>
<translation></translation>
</message>
<message>
<location filename="../src/titlebar.cpp" line="281"/>
<source>Scientific</source>
<translation></translation>
</message>
<message>
<source>standard </source>
<translation type="vanished"> </translation>
</message>
<message>
<location filename="../src/titlebar.cpp" line="56"/>
<location filename="../src/titlebar.cpp" line="67"/>
<location filename="../src/titlebar.cpp" line="248"/>
<source>standard</source>
<translation></translation>
</message>
<message>
<location filename="../src/titlebar.cpp" line="57"/>
<location filename="../src/titlebar.cpp" line="260"/>
<source>scientific</source>
<translation></translation>
</message>
<message>
<source>scientific </source>
<translation type="vanished"> </translation>
</message>
<message>
<location filename="../src/titlebar.cpp" line="282"/>
<source>Exchange Rate</source>
<translation></translation>
</message>
<message>
<location filename="../src/titlebar.cpp" line="283"/>
<source>Programmer</source>
<translation></translation>
</message>
<message>
<location filename="../src/titlebar.cpp" line="308"/>
<source>StayTop</source>
<translation></translation>
</message>
<message>
<location filename="../src/titlebar.cpp" line="413"/>
<source>Restore</source>
<translation></translation>
</message>
<message>
<location filename="../src/titlebar.cpp" line="112"/>
<location filename="../src/titlebar.cpp" line="309"/>
<source>Minimize</source>
<translation></translation>
</message>
<message>
<location filename="../src/titlebar.cpp" line="113"/>
<location filename="../src/titlebar.cpp" line="310"/>
<location filename="../src/titlebar.cpp" line="404"/>
<source>Maximize</source>
<translation></translation>
</message>
<message>
<location filename="../src/titlebar.cpp" line="114"/>
<location filename="../src/titlebar.cpp" line="311"/>
<source>Close</source>
<translation></translation>
</message>
</context>
<context>
<name>ToolBar</name>
<message>
<source>DisplayBinary</source>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/programmer/toolbar.cpp" line="63"/>
<location filename="../src/programmer/toolbar.cpp" line="219"/>
<location filename="../src/programmer/toolbar.cpp" line="222"/>
<source>ShowBinary</source>
<translation></translation>
</message>
<message>
<location filename="../src/programmer/toolbar.cpp" line="220"/>
<location filename="../src/programmer/toolbar.cpp" line="221"/>
<source>HideBinary</source>
<translation></translation>
</message>
</context>
<context>
<name>ToolModelOutput</name>
<message>
<location filename="../src/toolmodel.cpp" line="80"/>
<source>Rate update</source>
<translation></translation>
</message>
<message>
<location filename="../src/toolmodel.cpp" line="95"/>
<source>Chinese Yuan</source>
<translation></translation>
</message>
<message>
<location filename="../src/toolmodel.cpp" line="103"/>
<source>US Dollar</source>
<translation></translation>
</message>
<message>
<location filename="../src/toolmodel.cpp" line="515"/>
<source>Error!</source>
<translation></translation>
</message>
</context>
<context>
<name>UnitListWidget</name>
<message>
<location filename="../src/toolmodel.cpp" line="1163"/>
<source>currency</source>
<translation></translation>
</message>
<message>
<location filename="../src/toolmodel.cpp" line="1169"/>
<source>cancel</source>
<translation></translation>
</message>
<message>
<source>search</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>menuModule</name>
<message>
<location filename="../src/menumodule/menumodule.cpp" line="44"/>
<source>Menu</source>
<translation></translation>
</message>
<message>
<location filename="../src/menumodule/menumodule.cpp" line="56"/>
<location filename="../src/menumodule/menumodule.cpp" line="155"/>
<source>Standard</source>
<translation></translation>
</message>
<message>
<location filename="../src/menumodule/menumodule.cpp" line="58"/>
<location filename="../src/menumodule/menumodule.cpp" line="157"/>
<source>Scientific</source>
<translation></translation>
</message>
<message>
<location filename="../src/menumodule/menumodule.cpp" line="60"/>
<location filename="../src/menumodule/menumodule.cpp" line="159"/>
<source>Exchange Rate</source>
<translation></translation>
</message>
<message>
<location filename="../src/menumodule/menumodule.cpp" line="62"/>
<location filename="../src/menumodule/menumodule.cpp" line="161"/>
<source>Programmer</source>
<translation></translation>
</message>
<message>
<location filename="../src/menumodule/menumodule.cpp" line="68"/>
<source>Theme</source>
<translation></translation>
</message>
<message>
<location filename="../src/menumodule/menumodule.cpp" line="70"/>
<location filename="../src/menumodule/menumodule.cpp" line="153"/>
<source>Help</source>
<translation></translation>
</message>
<message>
<location filename="../src/menumodule/menumodule.cpp" line="72"/>
<location filename="../src/menumodule/menumodule.cpp" line="151"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="../src/menumodule/menumodule.cpp" line="74"/>
<location filename="../src/menumodule/menumodule.cpp" line="149"/>
<source>Quit</source>
<translation>退</translation>
</message>
<message>
<location filename="../src/menumodule/menumodule.cpp" line="85"/>
<source>Auto</source>
<translation></translation>
</message>
<message>
<location filename="../src/menumodule/menumodule.cpp" line="89"/>
<source>Light</source>
<translation></translation>
</message>
<message>
<location filename="../src/menumodule/menumodule.cpp" line="93"/>
<source>Dark</source>
<translation></translation>
</message>
<message>
<location filename="../src/menumodule/menumodule.cpp" line="302"/>
<source>Version: </source>
<translation> </translation>
</message>
<message>
<location filename="../src/menumodule/menumodule.cpp" line="306"/>
<source>Calculator is a lightweight calculator based on Qt5, which provides standard calculation, scientific calculation and exchange rate conversion.</source>
<translation>Qt5的羽量級計算機</translation>
</message>
<message>
<location filename="../src/menumodule/menumodule.cpp" line="371"/>
<location filename="../src/menumodule/menumodule.cpp" line="379"/>
<source>Service &amp; Support: </source>
<translation> </translation>
</message>
<message>
<source>Support: support@kylinos.cn</source>
<translation type="vanished">support@kylinos.cn</translation>
</message>
<message>
<location filename="../src/menumodule/menumodule.h" line="66"/>
<source>Calculator</source>
<translation></translation>
</message>
</context>
</TS>