~feng-kylin/youker-assistant/youker-assistant

« back to all changes in this revision

Viewing changes to info/computerpage.cpp

  • Committer: lixiang
  • Date: 2018-03-06 03:13:06 UTC
  • Revision ID: lixiang@kylinos.cn-20180306031306-fd7qnru3vm4a1xjd
Rewrite with Qt5, and add system monitor

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (C) 2013 ~ 2015 National University of Defense Technology(NUDT) & Kylin Ltd.
3
 
 *
4
 
 * Authors:
5
 
 *  Kobe Lee    xiangli@ubuntukylin.com/kobe24_lixiang@126.com
6
 
 *
7
 
 * This program is free software; you can redistribute it and/or modify
8
 
 * it under the terms of the GNU General Public License as published by
9
 
 * the Free Software Foundation; version 3.
10
 
 *
11
 
 * This program is distributed in the hope that it will be useful,
12
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 
 * GNU General Public License for more details.
15
 
 *
16
 
 * You should have received a copy of the GNU General Public License
17
 
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
 
 */
19
 
 
20
 
#include "computerpage.h"
21
 
#include "../component/utils.h"
22
 
#include <QDebug>
23
 
#include <QLabel>
24
 
#include <QComboBox>
25
 
#include <QGroupBox>
26
 
#include <QFormLayout>
27
 
#include <QBitmap>
28
 
#include <QRadioButton>
29
 
 
30
 
ComputerPage::ComputerPage(QWidget *parent, QString title/*, QString manufacturer*/) :
31
 
    QWidget(parent), title_context(title)/*, vendor(manufacturer)*/
32
 
{
33
 
//    this->setWindowFlags(Qt::FramelessWindowHint);
34
 
    sensor = false;
35
 
    page_height = 0;
36
 
    title_label = NULL;
37
 
    time_label = NULL;
38
 
    logo_label = NULL;
39
 
    group_box = NULL;
40
 
    form_layout = NULL;
41
 
    ondemand_radio = NULL;
42
 
    powersave_radio = NULL;
43
 
    performance_radio = NULL;
44
 
    layout = NULL;
45
 
 
46
 
    in0_label = NULL;
47
 
    in2_label = NULL;
48
 
    in3_label = NULL;
49
 
    in5_label = NULL;
50
 
    in6_label = NULL;
51
 
    tr1_label = NULL;
52
 
    tr2_label = NULL;
53
 
    tr3_label = NULL;
54
 
    tr4_label = NULL;
55
 
    tr5_label = NULL;
56
 
    tr6_label = NULL;
57
 
    fanin1_label = NULL;
58
 
}
59
 
 
60
 
ComputerPage::~ComputerPage()
61
 
{
62
 
    for(int i=0; i<label_list.count(); i++)
63
 
    {
64
 
        QLabel *label = label_list.at(i);
65
 
        delete label;
66
 
        label = NULL;
67
 
    }
68
 
    label_list.clear();
69
 
    page_height = 0;
70
 
    if(title_label != NULL)
71
 
    {
72
 
        delete title_label;
73
 
        title_label = NULL;
74
 
    }
75
 
    if(time_label != NULL)
76
 
    {
77
 
        delete time_label;
78
 
        time_label = NULL;
79
 
    }
80
 
    if(logo_label != NULL)
81
 
    {
82
 
        delete logo_label;
83
 
        logo_label = NULL;
84
 
    }
85
 
    if(ondemand_radio != NULL)
86
 
    {
87
 
        delete ondemand_radio;
88
 
        ondemand_radio = NULL;
89
 
    }
90
 
    if(powersave_radio != NULL)
91
 
    {
92
 
        delete powersave_radio;
93
 
        powersave_radio = NULL;
94
 
    }
95
 
    if(performance_radio != NULL)
96
 
    {
97
 
        delete performance_radio;
98
 
        performance_radio = NULL;
99
 
    }
100
 
    if(layout != NULL)
101
 
    {
102
 
        delete layout;
103
 
        layout = NULL;
104
 
    }
105
 
    if(in0_label != NULL)
106
 
    {
107
 
        delete in0_label;
108
 
        in0_label = NULL;
109
 
    }
110
 
    if(in2_label != NULL)
111
 
    {
112
 
        delete in2_label;
113
 
        in2_label = NULL;
114
 
    }
115
 
    if(in3_label != NULL)
116
 
    {
117
 
        delete in3_label;
118
 
        in3_label = NULL;
119
 
    }
120
 
    if(in5_label != NULL)
121
 
    {
122
 
        delete in5_label;
123
 
        in5_label = NULL;
124
 
    }
125
 
    if(in6_label != NULL)
126
 
    {
127
 
        delete in6_label;
128
 
        in6_label = NULL;
129
 
    }
130
 
    if(tr1_label != NULL)
131
 
    {
132
 
        delete tr1_label;
133
 
        tr1_label = NULL;
134
 
    }
135
 
    if(tr2_label != NULL)
136
 
    {
137
 
        delete tr2_label;
138
 
        tr2_label = NULL;
139
 
    }
140
 
    if(tr3_label != NULL)
141
 
    {
142
 
        delete tr3_label;
143
 
        tr3_label = NULL;
144
 
    }
145
 
    if(tr4_label != NULL)
146
 
    {
147
 
        delete tr4_label;
148
 
        tr4_label = NULL;
149
 
    }
150
 
    if(tr5_label != NULL)
151
 
    {
152
 
        delete tr5_label;
153
 
        tr5_label = NULL;
154
 
    }
155
 
    if(tr6_label != NULL)
156
 
    {
157
 
        delete tr6_label;
158
 
        tr6_label = NULL;
159
 
    }
160
 
    if(fanin1_label != NULL)
161
 
    {
162
 
        delete fanin1_label;
163
 
        fanin1_label = NULL;
164
 
    }
165
 
    if(form_layout != NULL)
166
 
    {
167
 
        delete form_layout;
168
 
        form_layout = NULL;
169
 
    }
170
 
    if(group_box != NULL)
171
 
    {
172
 
        delete group_box;
173
 
        group_box = NULL;
174
 
    }
175
 
}
176
 
 
177
 
void ComputerPage::setLanguage() {
178
 
    group_box->setTitle(tr("%1").arg(title_context));
179
 
}
180
 
 
181
 
void ComputerPage::initUI(bool cpu)
182
 
{
183
 
    group_box = new QGroupBox();
184
 
    group_box->setStyleSheet("QGroupBox{border: 1px solid #e0e0e0;border-radius: 2px;margin-top: 15px;font-size:14px;}QGroupBox:title{subcontrol-origin: margin;subcontrol-position: top left;padding: 6px 3px;color: #00609a;font-family: 方正黑体_GBK;font-weight:bold;}");
185
 
 
186
 
    QFont group_box_font = group_box->font();
187
 
    group_box_font.setBold(true);
188
 
    group_box->setFont(group_box_font);
189
 
    group_box->setFixedWidth(720);
190
 
 
191
 
    form_layout = new QFormLayout();
192
 
//    form_layout->setSizeConstraint(QLayout::SetFixedSize);//frame will fixed with content's width
193
 
    form_layout->setSpacing(ITEMVSPACE);
194
 
    form_layout->setHorizontalSpacing(ITEMHSPACE);
195
 
    form_layout->setRowWrapPolicy(QFormLayout::DontWrapRows);
196
 
    form_layout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
197
 
    QMap<QString,QVariant>::iterator it; //遍历map
198
 
    if (sensor) {
199
 
        in0_label = new QLabel();
200
 
        in2_label = new QLabel();
201
 
        in3_label = new QLabel();
202
 
        in5_label = new QLabel();
203
 
        in6_label = new QLabel();
204
 
        tr1_label = new QLabel();
205
 
        tr2_label = new QLabel();
206
 
        tr3_label = new QLabel();
207
 
        tr4_label = new QLabel();
208
 
        tr5_label = new QLabel();
209
 
        tr6_label = new QLabel();
210
 
        fanin1_label = new QLabel();
211
 
        in0_label->setFixedHeight(ITEMHEIGHT);
212
 
        in2_label->setFixedHeight(ITEMHEIGHT);
213
 
        in3_label->setFixedHeight(ITEMHEIGHT);
214
 
        in5_label->setFixedHeight(ITEMHEIGHT);
215
 
        in6_label->setFixedHeight(ITEMHEIGHT);
216
 
        tr1_label->setFixedHeight(ITEMHEIGHT);
217
 
        tr2_label->setFixedHeight(ITEMHEIGHT);
218
 
        tr3_label->setFixedHeight(ITEMHEIGHT);
219
 
        tr4_label->setFixedHeight(ITEMHEIGHT);
220
 
        tr5_label->setFixedHeight(ITEMHEIGHT);
221
 
        tr6_label->setFixedHeight(ITEMHEIGHT);
222
 
        fanin1_label->setFixedHeight(ITEMHEIGHT);
223
 
        for (it = info_map.begin(); it != info_map.end(); ++it ) {
224
 
            if(it.key() == "IN0") {
225
 
                in0_label->setText(it.value().toString());
226
 
                form_layout->addRow(tr("%1").arg(this->translatorSwitch(it.key())), in0_label);
227
 
                page_height += in0_label->height();
228
 
            }
229
 
            else if(it.key() == "IN2") {
230
 
                in2_label->setText(it.value().toString());
231
 
                form_layout->addRow(tr("%1").arg(this->translatorSwitch(it.key())), in2_label);
232
 
                page_height += in2_label->height();
233
 
            }
234
 
            else if(it.key() == "IN3") {
235
 
                in3_label->setText(it.value().toString());
236
 
                form_layout->addRow(tr("%1").arg(this->translatorSwitch(it.key())), in3_label);
237
 
                page_height += in3_label->height();
238
 
            }
239
 
            else if(it.key() == "IN5") {
240
 
                in5_label->setText(it.value().toString());
241
 
                form_layout->addRow(tr("%1").arg(this->translatorSwitch(it.key())), in5_label);
242
 
                page_height += in5_label->height();
243
 
            }
244
 
            else if(it.key() == "IN6") {
245
 
                in6_label->setText(it.value().toString());
246
 
                form_layout->addRow(tr("%1").arg(this->translatorSwitch(it.key())), in6_label);
247
 
                page_height += in6_label->height();
248
 
            }
249
 
            else if(it.key() == "TR1") {
250
 
                tr1_label->setText(it.value().toString());
251
 
                form_layout->addRow("ATX_3V3", tr1_label);
252
 
                page_height += tr1_label->height();
253
 
            }
254
 
            else if(it.key() == "TR2") {
255
 
                tr2_label->setText(it.value().toString());
256
 
                form_layout->addRow("ATX_5V", tr2_label);
257
 
                page_height += tr2_label->height();
258
 
            }
259
 
            else if(it.key() == "TR3") {
260
 
                tr3_label->setText(it.value().toString());
261
 
                form_layout->addRow("ATX_12V", tr3_label);
262
 
                page_height += tr3_label->height();
263
 
            }
264
 
            else if(it.key() == "TR4") {
265
 
                tr4_label->setText(it.value().toString());
266
 
                form_layout->addRow(tr("%1").arg(this->translatorSwitch(it.key())), tr4_label);
267
 
                page_height += tr4_label->height();
268
 
            }
269
 
            else if(it.key() == "TR5") {
270
 
                tr5_label->setText(it.value().toString());
271
 
                form_layout->addRow(tr("%1").arg(this->translatorSwitch(it.key())), tr5_label);
272
 
                page_height += tr5_label->height();
273
 
            }
274
 
            else if(it.key() == "TR6") {
275
 
                tr6_label->setText(it.value().toString());
276
 
                form_layout->addRow(tr("%1").arg(this->translatorSwitch(it.key())), tr6_label);
277
 
                page_height += tr6_label->height();
278
 
            }
279
 
            else if(it.key() == "FANIN1") {
280
 
                fanin1_label->setText(it.value().toString());
281
 
                form_layout->addRow(tr("%1").arg(this->translatorSwitch(it.key())), fanin1_label);
282
 
                page_height += fanin1_label->height();
283
 
            }
284
 
            page_height += ITEMVSPACE;
285
 
        }
286
 
    }
287
 
    else {
288
 
        for (it = info_map.begin(); it != info_map.end(); ++it ) {
289
 
            if(it.key() == "uptime")
290
 
            {
291
 
                time_label = new QLabel();
292
 
                int time_value = it.value().toInt();
293
 
                int hour_value = time_value/60;
294
 
                int minutes_value =time_value%60;
295
 
                if(hour_value < 1)
296
 
                {
297
 
                    time_label->setText(QString::number(minutes_value) + tr(" Minutes"));//分钟
298
 
                }
299
 
                else
300
 
                {
301
 
                    time_label->setText(QString::number(hour_value) + tr(" Hours ") + QString::number(minutes_value) + tr(" Minutes"));//小时 分钟
302
 
                }
303
 
                time_label->setFixedHeight(ITEMHEIGHT);
304
 
                form_layout->addRow(tr("%1").arg(this->translatorSwitch(it.key())), time_label);
305
 
                page_height += time_label->height();
306
 
            }
307
 
            else {
308
 
                QString valueStr = it.value().toString().trimmed();
309
 
                if (QString::compare(valueStr, "UNKOWN", Qt::CaseInsensitive) == 0 || QString::compare(valueStr, "UNKNOWN", Qt::CaseInsensitive) == 0) {//for arm memory
310
 
                    //do nothing
311
 
                }
312
 
                else if (it.key().length() > 0 && valueStr.length() > 0) {//20161228
313
 
                    QLabel *label = new QLabel();
314
 
                    label_list.append(label);
315
 
                    if (it.key() == "cpu_cores") {
316
 
                        label->setText(tr("%1 ").arg(valueStr));
317
 
                    }
318
 
                    else if (it.key() == "CpuVersion" && valueStr.contains("v1.0")) {
319
 
                        label->setText(tr("%1 64bit").arg(valueStr));
320
 
                    }
321
 
                    else {
322
 
                        if (QString::compare(valueStr, "1500a v1.0 64 bits", Qt::CaseInsensitive) == 0)//2017
323
 
                            label->setText(tr("%1").arg(this->translatorSwitch(valueStr)));
324
 
                        else if (QString::compare(valueStr, "phytium", Qt::CaseInsensitive) == 0)//2017
325
 
                            label->setText(tr("%1").arg(this->translatorSwitch(valueStr)));
326
 
                        else if (QString::compare(valueStr, "4 cores", Qt::CaseInsensitive) == 0)//2017
327
 
                            label->setText(tr("%1").arg(this->translatorSwitch(valueStr)));
328
 
                        else if (QString::compare(valueStr, "4 thread/core", Qt::CaseInsensitive) == 0)//2017
329
 
                            label->setText(tr("%1").arg(this->translatorSwitch(valueStr)));
330
 
                        else if (QString::compare(valueStr, "32bit", Qt::CaseInsensitive) == 0)//2017
331
 
                            label->setText(tr("%1").arg(this->translatorSwitch(valueStr)));
332
 
                        else if (QString::compare(valueStr, "64bit", Qt::CaseInsensitive) == 0)//2017
333
 
                            label->setText(tr("%1").arg(this->translatorSwitch(valueStr)));
334
 
                        else if (QString::compare(valueStr, "Ethernet interface", Qt::CaseInsensitive) == 0) {
335
 
                            label->setText(tr("%1").arg(this->translatorSwitch(valueStr)));
336
 
                        }
337
 
                        else if (QString::compare(valueStr, "Wireless interface", Qt::CaseInsensitive)  == 0) {
338
 
                            label->setText(tr("%1").arg(this->translatorSwitch(valueStr)));
339
 
                        }
340
 
                        else if (QString::compare(valueStr, "YHKylin community", Qt::CaseInsensitive)  == 0) {
341
 
                            label->setText(tr("%1").arg(this->translatorSwitch(valueStr)));
342
 
                        }
343
 
                        else
344
 
                        {
345
 
                            QFont ft;
346
 
                            QFontMetrics fm(ft);
347
 
                            QString elided_text = fm.elidedText(tr("%1").arg(valueStr), Qt::ElideRight, 400);
348
 
                            label->setText(elided_text);
349
 
                            if(elided_text.endsWith("…"))
350
 
                                label->setToolTip(tr("%1").arg(valueStr));
351
 
//                            label->setText(tr("%1").arg(valueStr));
352
 
                        }
353
 
                    }
354
 
                    label->setFixedHeight(ITEMHEIGHT); 
355
 
                    form_layout->addRow(tr("%1").arg(this->translatorSwitch(it.key())), label);
356
 
                    page_height += label->height();
357
 
                }
358
 
            }
359
 
            page_height += ITEMVSPACE;
360
 
        }
361
 
    }
362
 
 
363
 
 
364
 
    if (cpu) {
365
 
        if (systemProxy) {
366
 
            QStringList cpulist = systemProxy->get_cpufreq_scaling_governer_list_qt();
367
 
            if (cpulist.length() > 0) {
368
 
                ondemand_radio = new QRadioButton();
369
 
                ondemand_radio->setFocusPolicy(Qt::NoFocus);
370
 
                ondemand_radio->setFixedHeight(ITEMHEIGHT);
371
 
                ondemand_radio->setText(tr("Ondemand"));
372
 
                ondemand_radio->setObjectName("ondemandradio");
373
 
                ondemand_radio->setChecked(false);
374
 
                ondemand_radio->hide();
375
 
                powersave_radio = new QRadioButton();
376
 
                powersave_radio->setFixedHeight(ITEMHEIGHT);
377
 
                powersave_radio->setFocusPolicy(Qt::NoFocus);
378
 
                powersave_radio->setText(tr("Powersave"));
379
 
                powersave_radio->setObjectName("powersaveradio");
380
 
                powersave_radio->setChecked(false);
381
 
                powersave_radio->hide();
382
 
                performance_radio = new QRadioButton();
383
 
                performance_radio->setFixedHeight(ITEMHEIGHT);
384
 
                performance_radio->setFocusPolicy(Qt::NoFocus);
385
 
                performance_radio->setText(tr("Performance"));
386
 
                performance_radio->setObjectName("performanceradio");
387
 
                performance_radio->setChecked(false);
388
 
                performance_radio->hide();
389
 
                connect(ondemand_radio, SIGNAL(clicked()), this, SLOT(setRadioButtonRowStatus()));
390
 
                connect(powersave_radio, SIGNAL(clicked()), this, SLOT(setRadioButtonRowStatus()));
391
 
                connect(performance_radio, SIGNAL(clicked()), this, SLOT(setRadioButtonRowStatus()));
392
 
                layout = new QHBoxLayout();
393
 
                layout->setSpacing(10);
394
 
                layout->addWidget(ondemand_radio);
395
 
                layout->addWidget(powersave_radio);
396
 
                layout->addWidget(performance_radio);
397
 
                layout->addStretch();
398
 
 
399
 
                QString cur_cpu = systemProxy->get_current_cpufreq_scaling_governer_qt();
400
 
                QList<QString>::Iterator it = cpulist.begin(), itend = cpulist.end();
401
 
                bool showed = false;
402
 
                for(;it != itend; it++)
403
 
                {
404
 
                    if(*it == "ondemand") {
405
 
                        if (cur_cpu == *it) {
406
 
                            ondemand_radio->setChecked(true);
407
 
                            powersave_radio->setChecked(false);
408
 
                            performance_radio->setChecked(false);
409
 
                        }
410
 
                        ondemand_radio->show();
411
 
                        showed = true;
412
 
                    }
413
 
                    else if(*it == "powersave") {
414
 
                        if (cur_cpu == *it) {
415
 
                            powersave_radio->setChecked(true);
416
 
                            ondemand_radio->setChecked(false);
417
 
                            performance_radio->setChecked(false);
418
 
                        }
419
 
                        powersave_radio->show();
420
 
                        showed = true;
421
 
                    }
422
 
                    else if(*it == "performance") {
423
 
                        if (cur_cpu == *it) {
424
 
                            performance_radio->setChecked(true);
425
 
                            ondemand_radio->setChecked(false);
426
 
                            powersave_radio->setChecked(false);
427
 
                        }
428
 
                        performance_radio->show();
429
 
                        showed = true;
430
 
                    }
431
 
                }
432
 
                if (showed) {
433
 
                    form_layout->addRow(tr("CPU FM mode"), layout);
434
 
                    page_height += ITEMHEIGHT;
435
 
                }
436
 
            }
437
 
        }
438
 
    }
439
 
 
440
 
    page_height += ITEMVSPACE*2;//every groupbox has tow separate line
441
 
    page_height += 30;
442
 
    page_height += ITEMHSPACE;//ContentsMargin's height
443
 
    info_map.clear(); //清空map
444
 
 
445
 
    group_box->setLayout(form_layout);
446
 
    QVBoxLayout *layout = new QVBoxLayout();
447
 
    layout->addWidget(group_box);
448
 
    layout->setMargin(0);
449
 
    layout->setContentsMargins(ITEMHSPACE, ITEMHSPACE, 0, 0);
450
 
    setLayout(layout);
451
 
 
452
 
    if(!vendor.isEmpty())
453
 
    {
454
 
        logo_label = new QLabel(this);
455
 
        logo_label->setAutoFillBackground(true);
456
 
        logo_label->setScaledContents(true);//自动缩放,显示图像大小自动调整为Qlabel大小
457
 
        QPixmap label_pixmap(":/vendor/res/manufacturer/" + vendor + ".jpg");
458
 
        if (label_pixmap.isNull())
459
 
        {
460
 
//            label_pixmap = QPixmap(":/vendor/res/manufacturer/UBUNTUKYLIN.jpg");
461
 
            label_pixmap = QPixmap("");
462
 
        }
463
 
        logo_label->setPixmap(label_pixmap);
464
 
        logo_label->setFixedSize(label_pixmap.size());
465
 
        logo_label->setGeometry(QRect(720 - logo_label->width(), 40, logo_label->width(), logo_label->height()));
466
 
        logo_label->setMask(label_pixmap.mask());
467
 
//        QImage image(":/vendor/res/manufacturer/UBUNTUKYLIN.jpg");
468
 
//        if (!image.isNull()) {
469
 
//            image = image.scaled(logo_label->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
470
 
//            logo_label->setPixmap(QPixmap::fromImage(image));
471
 
//        }
472
 
//        logo_label->setGeometry(QRect(720 - logo_label->width(), 40, logo_label->width(), logo_label->height()));
473
 
    }
474
 
 
475
 
    this->setLanguage();
476
 
}
477
 
 
478
 
void ComputerPage::setRadioButtonRowStatus()
479
 
{
480
 
    QObject *obj = sender(); //返回发出信号的对象,用QObject类型接收
481
 
    QRadioButton* pbtn = qobject_cast<QRadioButton*>(obj);
482
 
    QString obj_name = pbtn->objectName();
483
 
    if(obj_name == "ondemandradio") {
484
 
        systemProxy->adjust_cpufreq_scaling_governer_qt("ondemand");
485
 
    }
486
 
    else if(obj_name == "powersaveradio") {
487
 
        systemProxy->adjust_cpufreq_scaling_governer_qt("powersave");
488
 
    }
489
 
    else if(obj_name == "performanceradio") {
490
 
        systemProxy->adjust_cpufreq_scaling_governer_qt("performance");
491
 
    }
492
 
}
493
 
 
494
 
 
495
 
void ComputerPage::resetTimeValue(QString value)
496
 
{
497
 
    time_label->setText(value);
498
 
}
499
 
 
500
 
void ComputerPage::resetSensor(QMap<QString, QVariant> sensormap)
501
 
{
502
 
    if (sensor) {
503
 
        QMap<QString,QVariant>::iterator it; //遍历map
504
 
        for (it = sensormap.begin(); it != sensormap.end(); ++it ) {
505
 
            if(it.key() == "IN0") {
506
 
                if (in0_label)
507
 
                    in0_label->setText(it.value().toString());
508
 
            }
509
 
            else if(it.key() == "IN2") {
510
 
                if (in2_label)
511
 
                    in2_label->setText(it.value().toString());
512
 
            }
513
 
            else if(it.key() == "IN3") {
514
 
                if (in3_label)
515
 
                    in3_label->setText(it.value().toString());
516
 
            }
517
 
            else if(it.key() == "IN5") {
518
 
                if (in5_label)
519
 
                    in5_label->setText(it.value().toString());
520
 
            }
521
 
            else if(it.key() == "IN6") {
522
 
                if (in6_label)
523
 
                    in6_label->setText(it.value().toString());
524
 
            }
525
 
            else if(it.key() == "TR1") {
526
 
                if (tr1_label)
527
 
                    tr1_label->setText(it.value().toString());
528
 
            }
529
 
            else if(it.key() == "TR2") {
530
 
                if (tr2_label)
531
 
                    tr2_label->setText(it.value().toString());
532
 
            }
533
 
            else if(it.key() == "TR3") {
534
 
                if (tr3_label)
535
 
                    tr3_label->setText(it.value().toString());
536
 
            }
537
 
            else if(it.key() == "TR4") {
538
 
                if (tr4_label)
539
 
                    tr4_label->setText(it.value().toString());
540
 
            }
541
 
            else if(it.key() == "TR5") {
542
 
                if (tr5_label)
543
 
                    tr5_label->setText(it.value().toString());
544
 
            }
545
 
            else if(it.key() == "TR6") {
546
 
                if (tr6_label)
547
 
                    tr6_label->setText(it.value().toString());
548
 
            }
549
 
            else if(it.key() == "FANIN1") {
550
 
                if (fanin1_label)
551
 
                    fanin1_label->setText(it.value().toString());
552
 
            }
553
 
        }
554
 
    }
555
 
}
556
 
 
557
 
QString ComputerPage::translatorSwitch(QString orgStr)
558
 
{
559
 
    if(orgStr == "MulProduct")//声卡型号
560
 
        return tr("Audio Model");
561
 
    else if(orgStr == "MulVendor")//制造商
562
 
        return tr("Vendor");
563
 
    else if(orgStr == "MulBusinfo")//总线地址
564
 
        return tr("Bus Address");
565
 
    else if(orgStr == "MulDrive")//声卡驱动
566
 
        return tr("Audio Driver");
567
 
 
568
 
    else if(orgStr == "POWER_SUPPLY_NAME")//设备名
569
 
        return tr("Device Name");
570
 
    else if(orgStr == "POWER_SUPPLY_MANUFACTURER")//发行商
571
 
        return tr("Manufacturer");
572
 
//    else if(orgStr == "POWER_SUPPLY_CAPACITY")//
573
 
//        return tr("POWER_SUPPLY_CAPACITY");
574
 
//    else if(orgStr == "POWER_SUPPLY_CYCLE_COUNT")//
575
 
//        return tr("POWER_SUPPLY_CYCLE_COUNT");
576
 
//    else if(orgStr == "POWER_SUPPLY_POWER_NOW")//
577
 
//        return tr("POWER_SUPPLY_POWER_NOW");
578
 
//    else if(orgStr == "POWER_SUPPLY_PRESENT")//
579
 
//        return tr("POWER_SUPPLY_PRESENT");
580
 
//    else if(orgStr == "POWER_SUPPLY_STATUS")//
581
 
//        return tr("POWER_SUPPLY_STATUS");
582
 
//    else if(orgStr == "POWER_SUPPLY_VOLTAGE_MIN_DESIGN")//
583
 
//        return tr("POWER_SUPPLY_VOLTAGE_MIN_DESIGN");
584
 
    //    POWER_SUPPLY_CAPACITY_LEVEL
585
 
    //    POWER_SUPPLY_CHARGE_FULL
586
 
    //    POWER_SUPPLY_CHARGE_FULL_DESIGN
587
 
    //    POWER_SUPPLY_CHARGE_NOW
588
 
    //    POWER_SUPPLY_CURRENT_NOW
589
 
    //    POWER_SUPPLY_PROP_STATUS
590
 
    //    POWER_SUPPLY_PROP_CHARGE_TYPE
591
 
    //    POWER_SUPPLY_PROP_HEALTH
592
 
    //    POWER_SUPPLY_PROP_PRESENT,
593
 
    //    POWER_SUPPLY_PROP_TECHNOLOGY,
594
 
    //    POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN,
595
 
    //    POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN,
596
 
    //    POWER_SUPPLY_PROP_VOLTAGE_NOW,
597
 
    //    POWER_SUPPLY_PROP_CAPACITY,
598
 
    //    POWER_SUPPLY_PROP_CURRENT_NOW,
599
 
    //    POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
600
 
    //    POWER_SUPPLY_PROP_TEMP,
601
 
    //    POWER_SUPPLY_PROP_SYSTEM_TEMP_LEVEL
602
 
    //    POWER_SUPPLY_ATTR
603
 
    //    POWER_SUPPLY_CURRENT_MAX
604
 
    //    SEQNUM
605
 
    //    POWER_SUPPLY_CHARGING_ENABLED
606
 
    //    POWER_SUPPLY_CHARGE_TYPE
607
 
    //    POWER_SUPPLY_HEALTH
608
 
    //    POWER_SUPPLY_VOLTAGE_MAX_DESIGN
609
 
    //    POWER_SUPPLY_TEMP
610
 
    //    POWER_SUPPLY_SYSTEM_TEMP_LEVEL
611
 
    else if(orgStr == "POWER_SUPPLY_MODEL_NAME")//型号
612
 
        return tr("Model");
613
 
    else if(orgStr == "POWER_SUPPLY_TECHNOLOGY")//技术
614
 
        return tr("Technology");
615
 
    else if(orgStr == "POWER_SUPPLY_VOLTAGE_NOW")//电压
616
 
        return tr("Voltage");
617
 
    else if(orgStr == "POWER_SUPPLY_ENERGY_FULL_DESIGN")//能量(设计)
618
 
        return tr("Energy Designed");
619
 
    else if(orgStr == "POWER_SUPPLY_ENERGY_FULL")//满时能量
620
 
        return tr("Energy Full");
621
 
    else if(orgStr == "POWER_SUPPLY_ENERGY_NOW")//能量
622
 
        return tr("Energy Now");
623
 
    else if(orgStr == "POWER_SUPPLY_SERIAL_NUMBER")//序列号
624
 
        return tr("Serial Number");
625
 
 
626
 
    else if(orgStr == "BoaVendor")//主板型号
627
 
        return tr("Motherboard Model");
628
 
    else if(orgStr == "BoaProduct")//主板产商
629
 
        return tr("Motherboard Vendor");
630
 
    else if(orgStr == "BoaSerial")//序列号
631
 
        return tr("Serial Number");
632
 
    else if(orgStr == "BioVendor")//BIOS产商
633
 
        return tr("BIOS Vendor");
634
 
    else if(orgStr == "BioVersion")//BIOS版本
635
 
        return tr("BIOS Version");
636
 
    else if(orgStr == "BioRelease")//发布日期
637
 
        return tr("Release Date");
638
 
 
639
 
    else if(orgStr == "DvdProduct")//光驱型号
640
 
        return tr("CD-ROM Model");
641
 
    else if(orgStr == "DvdVendor")//制造商
642
 
        return tr("Vendor");
643
 
    else if(orgStr == "DvdName")//设备名称
644
 
        return tr("Device Name");
645
 
    else if(orgStr == "DvdFw")//固件版本
646
 
        return tr("Firmware Version");
647
 
    else if(orgStr == "DvdSerial")//序列号
648
 
        return tr("Serial Number");
649
 
 
650
 
 
651
 
 
652
 
    else if(orgStr == "CpuVersion")//处理器:
653
 
        return tr("CPU");
654
 
    else if(orgStr == "CpuVendor")//制造商:
655
 
        return tr("Vendor");
656
 
    else if(orgStr == "CpuSerial")//序列号:
657
 
        return tr("Serial Number");
658
 
    else if(orgStr == "CpuSlot")//插座/插槽:
659
 
        return tr("Socket/Slot");
660
 
    else if(orgStr == "CpuCapacity")//最大主频:
661
 
        return tr("Maximum Frequency");
662
 
    else if(orgStr == "CpuSize")//当前主频:
663
 
        return tr("Current Frequency");
664
 
    else if(orgStr == "CpuClock")//前端总线:
665
 
        return tr("FSB");
666
 
    else if(orgStr == "cpu_cores")//核心数目:
667
 
        return tr("Core Number");
668
 
    else if(orgStr == "cpu_siblings")//线程
669
 
        return tr("Thread");
670
 
    else if(orgStr == "clflush_size")//一级缓存:
671
 
        return tr("L1 Cache");
672
 
    else if(orgStr == "cache_size")//二级缓存:
673
 
        return tr("L2 Cache");
674
 
 
675
 
 
676
 
//    else if(orgStr == "1500a v1.0 64 bits")//1500a v1.0 64位
677
 
//        return tr("1500a v1.0 64 bits");
678
 
    else if(orgStr == "phytium")//飞腾
679
 
        return tr("phytium");
680
 
    else if(orgStr == "4 cores")//4核
681
 
        return tr("4 cores");
682
 
    else if(orgStr == "4 thread/core")//4线程/核
683
 
        return tr("4 thread/core");
684
 
 
685
 
 
686
 
    else if(orgStr == "desktopenvironment")//桌面环境
687
 
        return tr("Desktop Environment");
688
 
    else if(orgStr == "cpu")
689
 
        return tr("CPU");
690
 
    else if(orgStr == "hostname")
691
 
        return tr("Host Name");
692
 
    else if(orgStr == "ram")
693
 
        return tr("Memery Capacity");
694
 
    else if(orgStr == "terminal")
695
 
        return tr("Terminal");
696
 
    else if(orgStr == "distribution")//发行版
697
 
        return tr("Distribution");
698
 
    else if(orgStr == "language")//语言
699
 
        return tr("Language");
700
 
    else if(orgStr == "currrent_user")//当前用户
701
 
        return tr("User");
702
 
    else if(orgStr == "home_path")//用户主目录
703
 
        return tr("Home Folder");
704
 
 
705
 
    else if(orgStr == "Host bridge")//主桥
706
 
        return tr("Host bridge");
707
 
    else if(orgStr == "VGA compatible controller")//VGA兼容控制器
708
 
        return tr("VGA Model");
709
 
    else if(orgStr == "USB controller")//USB控制器
710
 
        return tr("USB Model");
711
 
    else if(orgStr == "Communication controller")//通信控制器
712
 
        return tr("Communication Model");
713
 
    else if(orgStr == "Ethernet controller")//以太网控制器
714
 
        return tr("Ethernet Model");
715
 
    else if(orgStr == "Audio device")//音频设备
716
 
        return tr("Audio Model");
717
 
    else if(orgStr == "PCI bridge")//PCI桥
718
 
        return tr("PCI bridge");
719
 
    else if(orgStr == "ISA bridge")//ISA桥
720
 
        return tr("ISA bridge");
721
 
    else if(orgStr == "SATA controller")//SATA控制器
722
 
        return tr("SATA Model");
723
 
    else if(orgStr == "SMBus")//系统管理总线
724
 
        return tr("SMBus");
725
 
    else if(orgStr == "System peripheral")//系统外围
726
 
        return tr("System peripheral");
727
 
    else if(orgStr == "driver in use")//使用的驱动
728
 
        return tr("Driver in use");
729
 
    else if(orgStr == "existing drivers")//可选的驱动
730
 
        return tr("existing drivers");
731
 
    else if(orgStr == "IDE interface")//IDE接口
732
 
        return tr("IDE interface");
733
 
    else if(orgStr == "Signal processing controller")//信号处理控制器
734
 
        return tr("SP controller");
735
 
    else if(orgStr == "Network controller")//网络控制器
736
 
        return tr("Network controller");
737
 
    else if(orgStr == "Multimedia audio controller")//多媒体音频控制器
738
 
        return tr("Multimedia audio controller");
739
 
 
740
 
 
741
 
    else if(orgStr == "DiskProduct")//硬盘型号:
742
 
        return tr("HDD Model");
743
 
    else if(orgStr == "DiskVendor")//硬盘厂商:
744
 
        return tr("HDD Vendor");
745
 
    else if(orgStr == "DiskCapacity")//硬盘容量:
746
 
        return tr("HDD Capacity");
747
 
    else if(orgStr == "DiskName")//设备名称:
748
 
        return tr("Device Name");
749
 
    else if(orgStr == "DiskFw")//固件版本:
750
 
        return tr("Firmware Version");
751
 
    else if(orgStr == "DiskSerial")//序列号:
752
 
        return tr("Serial Number");
753
 
 
754
 
    else if(orgStr == "MemSlot")//插槽号:
755
 
        return tr("Slot Number");
756
 
    else if(orgStr == "MemProduct")//内存型号:
757
 
        return tr("Memory Model");
758
 
    else if(orgStr == "MemVendor")//制造商:
759
 
        return tr("Vendor");
760
 
    else if(orgStr == "MemSerial")//序列号:
761
 
        return tr("Serial Number");
762
 
    else if(orgStr == "MemSize")//内存大小:
763
 
        return tr("Memory Size");
764
 
    else if(orgStr == "MemWidth")//数据宽度:
765
 
        return tr("Data Width");
766
 
    else if(orgStr == "MemInfo")//内存条信息:
767
 
        return tr("Memory Info");
768
 
 
769
 
    else if(orgStr == "Vga_product")//显卡型号:
770
 
        return tr("Graphics Card Model");
771
 
    else if(orgStr == "Mon_chip")//当前显卡:
772
 
        return tr("Current Graphics Card");
773
 
    else if(orgStr == "Vga_vendor")//显卡制造商:
774
 
        return tr("Graphics Card Vendor");
775
 
    else if(orgStr == "Vga_Drive")//显卡驱动:
776
 
        return tr("Graphics Driver");
777
 
    else if(orgStr == "Vga_businfo")//显卡总线地址:
778
 
        return tr("Bus Address");
779
 
    else if(orgStr == "Mon_gamma")//伽马值
780
 
        return tr("Gamma");
781
 
    else if(orgStr == "Mon_in")//屏幕尺寸(英寸)
782
 
        return tr("Screen Size(inch)");
783
 
    else if(orgStr == "Mon_maxmode")//最大分辨率
784
 
        return tr("Max Resolution");
785
 
    else if(orgStr == "Mon_output")//当前接口
786
 
        return tr("Current Interface");
787
 
    else if(orgStr == "Mon_product")//显示器型号:
788
 
        return tr("Monitor Model");
789
 
    else if(orgStr == "Mon_size")//可视面积
790
 
        return tr("Visual Area");
791
 
    else if(orgStr == "Mon_support")//支持接口
792
 
        return tr("Support Interface");
793
 
    else if(orgStr == "Mon_vendor")//显示器制造商
794
 
        return tr("Monitor Manufacturers");
795
 
    else if(orgStr == "Mon_week")//生产日期_周
796
 
        return tr("Date of production/Week");
797
 
    else if(orgStr == "Mon_year")//生产日期_年
798
 
        return tr("Date of production/Year");
799
 
 
800
 
 
801
 
    else if(orgStr == "NetVendor")//制造商:
802
 
        return tr("Vendor");
803
 
    else if(orgStr == "NetProduct")//网卡型号:
804
 
        return tr("NIC Model");
805
 
    else if(orgStr == "NetDrive")//有线网卡驱动:
806
 
        return tr("NIC Driver");
807
 
    else if(orgStr == "NetBusinfo")//总线地址:
808
 
        return tr("Bus Address");
809
 
    else if(orgStr == "NetLogicalname")//设备名称:
810
 
        return tr("Device Name");
811
 
    else if(orgStr == "NetIp")//IP地址:
812
 
        return tr("IP Address");
813
 
    else if(orgStr == "NetSerial")//MAC地址:
814
 
        return tr("Mac Address");
815
 
    else if(orgStr == "NetLink")//连接状态:
816
 
        return tr("Connection Status");
817
 
    else if(orgStr == "NetCapacity")//最大带宽:
818
 
        return tr("Max Bandwidth");
819
 
    else if(orgStr == "WlanVendor")//制造商:
820
 
        return tr("Vendor");
821
 
    else if(orgStr == "WlanDrive")//无线网卡驱动:
822
 
        return tr("WLan NIC Driver");
823
 
    else if(orgStr == "WlanProduct")//网卡型号:
824
 
        return tr("WLan NIC Model");
825
 
    else if(orgStr == "WlanBusinfo")//总线地址:
826
 
        return tr("Bus Address");
827
 
    else if(orgStr == "WlanLogicalname")//设备名称:
828
 
        return tr("Device Name:");
829
 
    else if(orgStr == "WlanSerial")//序列号:
830
 
        return tr("Serial Number");
831
 
    else if(orgStr == "WlanIp")//IP地址:
832
 
        return tr("IP Address");
833
 
    else if (orgStr == "VNIC") {
834
 
        return tr("VNIC");
835
 
    }
836
 
    else if (orgStr == "NetType") {
837
 
        return tr("NetType");
838
 
    }
839
 
    else if (orgStr == "Ethernet interface") {
840
 
        return tr("Ethernet interface");
841
 
    }
842
 
    else if (orgStr == "Wireless interface") {
843
 
        return tr("Wireless interface");
844
 
    }
845
 
 
846
 
    else if(orgStr == "ComVendor")//制造商:
847
 
        return tr("Vendor");
848
 
    else if(orgStr == "ComProduct")//电脑型号:
849
 
        return tr("Model");
850
 
    else if(orgStr == "ComVersion")//电脑版本:
851
 
        return tr("Version");
852
 
    else if(orgStr == "ComSerial")//序列号:
853
 
        return tr("Serial Number");
854
 
    else if(orgStr == "node")//主机名:
855
 
        return tr("Hostname");
856
 
    else if(orgStr == "uptime")//持续运行时间:
857
 
        return tr("Running Time");
858
 
    else if(orgStr == "system")//操作系统类型:
859
 
        return tr("OS Types");
860
 
    else if(orgStr == "osname")//操作系统版本:
861
 
        return tr("OS Version");
862
 
    else if(orgStr == "architecture")//系统位数:
863
 
        return tr("Kernel Bit");
864
 
    else if(orgStr == "release")//内核版本:
865
 
        return tr("Kernel Version");
866
 
    else if(orgStr == "machine")//内核架构:
867
 
        return tr("Kernel Arch");
868
 
    else if (orgStr == "32bit")
869
 
        return tr("32bit");
870
 
    else if (orgStr == "64bit" || orgStr == "64 bits")
871
 
        return tr("64bit");
872
 
    else if (orgStr == "YHKylin community")
873
 
        return tr("YHKylin community");
874
 
 
875
 
    else if(orgStr == "IN0")//内存参考电压
876
 
        return tr("Memory reference voltage");
877
 
    else if(orgStr == "IN2")//SATA控制器电压
878
 
        return tr("SATA controller voltage");
879
 
    else if(orgStr == "IN3")//内存电压
880
 
        return tr("Memory voltage");
881
 
    else if(orgStr == "IN5")//CPU管脚电压
882
 
        return tr("CPU pin voltage");
883
 
    else if(orgStr == "IN6")//桥片电压
884
 
        return tr("Bridge voltage");
885
 
    else if(orgStr == "TR4")//CPU核电压
886
 
        return tr("CPU core voltage");
887
 
    else if(orgStr == "TR5")//CPU温度
888
 
        return tr("CPU temperature");
889
 
    else if(orgStr == "TR6")//主板温度
890
 
        return tr("Motherboard temperature");
891
 
    else if(orgStr == "FANIN1")//CPU风扇转速
892
 
        return tr("CPU fan speed");
893
 
    else
894
 
        return orgStr;
895
 
}
896
 
 
897
 
//void ComputerPage::resizeEvent(QResizeEvent *event)
898
 
//{
899
 
//    //获取当前窗口高度
900
 
////    this->resize(700, page_height);
901
 
////    page_height = height();
902
 
//    QWidget::resizeEvent(event);
903
 
//}
904
 
 
905