玉兔远程控制 0.1.0-bate5
载入中...
搜索中...
未找到
ParameterDlgSettings.cpp
1// Author: Kang Lin <kl222@126.com>
2
3#include <QScrollArea>
4#include <QFileDialog>
5#include <QLoggingCategory>
6#include <QScreen>
7#include <QApplication>
8
9#include "ParameterDlgSettings.h"
10#include "ui_ParameterDlgSettings.h"
11#include "mainwindow.h"
12#include "RabbitCommonDir.h"
13
14#ifdef HAVE_ICE
15#include "Ice.h"
16#endif
17
18static Q_LOGGING_CATEGORY(log, "App.MainWindow.Parameter")
19
21 QList<QWidget *> wViewer,
22 QWidget *parent) :
23 QDialog(parent),
25 m_pParameters(pPara)
26{
27 ui->setupUi(this);
28
29 int nWidth = 0;
30 int nHeigth = 0;
31 foreach(auto p, wViewer) {
32 if(!p) continue;
33 nWidth = qMax(nWidth, p->frameSize().width());
34 nHeigth = qMax(nHeigth, p->frameSize().height());
35 }
36 bool bScroll = false;
37 QScreen* pScreen = QApplication::primaryScreen();
38 QSize size = pScreen->availableGeometry().size();
39 if(nWidth > size.width() * 3 / 4 || nHeigth > size.height() * 3 / 4)
40 bScroll = true;
41 // [connect accepted to slotAccept of widget]
42 foreach(auto p, wViewer)
43 {
44 QString szMsg;
45 QWidget* pView = p;
46 if(bScroll)
47 {
48 QScrollArea* pScroll = new QScrollArea(ui->tabWidget);
49 if(!pScroll) continue;
50 pScroll->setWidget(p);
51 pView = pScroll;
52 }
53 ui->tabWidget->addTab(pView, p->windowIcon(), p->windowTitle());
54 bool check = false;
55 check = connect(this, SIGNAL(accepted()), p, SLOT(slotAccept()));
56 if(!check)
57 {
58 szMsg = "Class" + QString(p->metaObject()->className())
59 + "must has slot slotAccept(), please add it. "
60 + "Or the class derived from CParameterUI";
61 qCritical(log) << szMsg;
62 }
63 Q_ASSERT_X(check, "CParameterDlgSettings", szMsg.toStdString().c_str());
64 }
65 // [connect accepted to slotAccept of widget]
66
67#ifdef HAVE_ICE
68 QWidget* pWidget = CICE::Instance()->GetParameterWidget(this);
69 if(pWidget)
70 {
71 ui->tabWidget->addTab(pWidget, pWidget->windowTitle());
72 bool check = false;
73 check = connect(this, SIGNAL(accepted()), pWidget, SLOT(slotAccept()));
74 if(!check)
75 {
76 szMsg = "Class" + QString(p->metaObject()->className())
77 + "must has slot slotAccept(), please add it."
78 + "Or the class derived from CParameterUI";
79 qCritical(log) << szMsg;
80 }
81 Q_ASSERT_X(check, "CParameterDlgSettings", szMsg.toStdString().c_str());
82 }
83#endif
84
85 ui->cbReciverShortCut->setChecked(m_pParameters->GetReceiveShortCut());
86 ui->cbSaveMainWindowStatus->setChecked(m_pParameters->GetSaveMainWindowStatus());
87 ui->cbResumLasterClose->setChecked(m_pParameters->GetOpenLasterClose());
88 ui->cbStartByType->setChecked(m_pParameters->GetStartByType());
89
90 switch (m_pParameters->GetTabPosition()) {
91 case QTabWidget::North:
92 ui->rbNorth->setChecked(true);
93 break;
94 case QTabWidget::South:
95 ui->rbSouth->setChecked(true);
96 break;
97 case QTabWidget::West:
98 ui->rbWest->setChecked(true);
99 break;
100 case QTabWidget::East:
101 ui->rbEast->setChecked(true);
102 break;
103 }
104 ui->cbTabToolTip->setChecked(m_pParameters->GetEnableTabToolTip());
105 ui->cbTabIcon->setChecked(m_pParameters->GetEnableTabIcon());
106 ui->cbElided->setChecked(m_pParameters->GetTabElided());
107
108 ui->sbRecentMenuMaxCount->setValue(m_pParameters->GetRecentMenuMaxCount());
109
110 switch (m_pParameters->GetSystemTrayIconMenuType()) {
111 case CParameterApp::SystemTrayIconMenuType::No:
112 ui->rbSystemTrayIconNo->setChecked(true);
113 break;
114 case CParameterApp::SystemTrayIconMenuType::MenuBar:
115 ui->rbMenuBar->setChecked(true);
116 break;
117 case CParameterApp::SystemTrayIconMenuType::RecentOpen:
118 ui->rbSystemTrayIconRecentOpen->setChecked(true);
119 break;
120 case CParameterApp::SystemTrayIconMenuType::Operate:
121 ui->rbSystemTrayIconOperate->setChecked(true);
122 break;
123 default:
124 break;
125 }
126 ui->cbShowSystemTrayIcon->setChecked(m_pParameters->GetEnableSystemTrayIcon());
127
128 ui->cbFavoriteDoubleEdit->setChecked(m_pParameters->GetFavoriteEdit());
129 ui->cbMessageBoxDisplayInfo->setChecked(m_pParameters->GetMessageBoxDisplayInformation());
130 ui->cbKeepSplitView->setChecked(m_pParameters->GetKeepSplitViewWhenFullScreen());
131}
132
133CParameterDlgSettings::~CParameterDlgSettings()
134{
135 delete ui;
136}
137
138void CParameterDlgSettings::on_pbOk_clicked()
139{
140 if(!m_pParameters) return;
141
142 m_pParameters->SetReceiveShortCut(ui->cbReciverShortCut->isChecked());
143 m_pParameters->SetSaveMainWindowStatus(ui->cbSaveMainWindowStatus->isChecked());
144 m_pParameters->SetOpenLasterClose(ui->cbResumLasterClose->isChecked());
145 m_pParameters->SetStartByType(ui->cbStartByType->isChecked());
146
147 if(ui->rbNorth->isChecked()) m_pParameters->SetTabPosition(QTabWidget::North);
148 if(ui->rbSouth->isChecked()) m_pParameters->SetTabPosition(QTabWidget::South);
149 if(ui->rbEast->isChecked()) m_pParameters->SetTabPosition(QTabWidget::East);
150 if(ui->rbWest->isChecked()) m_pParameters->SetTabPosition(QTabWidget::West);
151 m_pParameters->SetEnableTabToolTip(ui->cbTabToolTip->isChecked());
152 m_pParameters->SetEnableTabIcon(ui->cbTabIcon->isChecked());
153 m_pParameters->SetTabElided(ui->cbElided->isChecked());
154
155 m_pParameters->SetRecentMenuMaxCount(ui->sbRecentMenuMaxCount->value());
156
157 //NOTE: The order cannot be changed
158 m_pParameters->SetEnableSystemTrayIcon(ui->cbShowSystemTrayIcon->isChecked());
159 if(ui->rbSystemTrayIconNo->isChecked())
160 m_pParameters->SetSystemTrayIconMenuType(CParameterApp::SystemTrayIconMenuType::No);
161 if(ui->rbMenuBar->isChecked())
162 m_pParameters->SetSystemTrayIconMenuType(CParameterApp::SystemTrayIconMenuType::MenuBar);
163 if(ui->rbSystemTrayIconRecentOpen->isChecked())
164 m_pParameters->SetSystemTrayIconMenuType(CParameterApp::SystemTrayIconMenuType::RecentOpen);
165 if(ui->rbSystemTrayIconOperate->isChecked())
166 m_pParameters->SetSystemTrayIconMenuType(CParameterApp::SystemTrayIconMenuType::Operate);
167
168 m_pParameters->SetFavoriteEdit(ui->cbFavoriteDoubleEdit->isChecked());
169 m_pParameters->SetMessageBoxDisplayInformation(ui->cbMessageBoxDisplayInfo->isChecked());
170
171 m_pParameters->SetKeepSplitViewWhenFullScreen(ui->cbKeepSplitView->isChecked());
172 accept();
173}
174
175void CParameterDlgSettings::on_pbNo_clicked()
176{
177 reject();
178}
179
180void CParameterDlgSettings::on_cbShowSystemTrayIcon_toggled(bool checked)
181{
182 ui->gbSystemTrayIconContextMenu->setEnabled(checked);
183}
static CICE * Instance()
Single instance
Definition Ice.cpp:55