Skip to content

Commit 97d2c64

Browse files
committed
* simpler & improved management of window geometry
1 parent e7159b4 commit 97d2c64

File tree

3 files changed

+47
-59
lines changed

3 files changed

+47
-59
lines changed

mchelper/trunk/include/Inspector.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ private slots:
4848
MainWindow *mainWindow;
4949
QTimer infoTimer;
5050
void setLabelsRole(QPalette::ColorRole role);
51+
void closeEvent(QCloseEvent *e);
5152
};
5253

5354
#endif // INSPECTOR_H

mchelper/trunk/source/Inspector.cpp

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@
1818
#include "Inspector.h"
1919
#include <QSettings>
2020

21+
#define INSPECTOR_GEOM "inspector/geometry"
22+
2123
/*
2224
A dialog for getting/setting general info about a Make Controller
2325
*/
24-
Inspector::Inspector(MainWindow *mainWindow) : QDialog( 0 )
26+
Inspector::Inspector(MainWindow *mainWindow) : QDialog(0)
2527
{
2628
this->mainWindow = mainWindow;
2729
setupUi(this);
@@ -42,10 +44,7 @@ Inspector::Inspector(MainWindow *mainWindow) : QDialog( 0 )
4244
connect(dhcpBox, SIGNAL(clicked(bool)), this, SLOT(onAnyValueEdited()));
4345

4446
QSettings settings;
45-
QPoint inspectorPos = settings.value("inspector_pos").toPoint();
46-
if(!inspectorPos.isNull())
47-
move(inspectorPos);
48-
47+
restoreGeometry(settings.value(INSPECTOR_GEOM).toByteArray());
4948
resize(gridLayout->sizeHint());
5049
}
5150

@@ -56,6 +55,13 @@ void Inspector::loadAndShow( )
5655
show();
5756
}
5857

58+
void Inspector::closeEvent(QCloseEvent *e)
59+
{
60+
QSettings settings;
61+
settings.setValue(INSPECTOR_GEOM, saveGeometry());
62+
e->accept();
63+
}
64+
5965
/*
6066
Populate the line edits with the board's info.
6167
This should only be called when there's new info for the board,
@@ -82,16 +88,16 @@ void Inspector::setData(Board* board)
8288
*/
8389
void Inspector::clear( )
8490
{
85-
nameEdit->setText("");
86-
serialEdit->setText("");
87-
versionEdit->setText("");
88-
freememEdit->setText("");
89-
ipEdit->setText("");
90-
netmaskEdit->setText("");
91-
gatewayEdit->setText("");
92-
listenPortEdit->setText("");
93-
sendPortEdit->setText("");
94-
dhcpBox->setCheckState( Qt::Unchecked );
91+
nameEdit->text().clear();
92+
serialEdit->text().clear();
93+
versionEdit->text().clear();
94+
freememEdit->text().clear();
95+
ipEdit->text().clear();
96+
netmaskEdit->text().clear();
97+
gatewayEdit->text().clear();
98+
listenPortEdit->text().clear();
99+
sendPortEdit->text().clear();
100+
dhcpBox->setChecked(false);
95101
}
96102

97103
/*
@@ -110,7 +116,7 @@ void Inspector::onFinished()
110116
void Inspector::getBoardInfo()
111117
{
112118
Board *board = mainWindow->getCurrentBoard();
113-
if(board)
119+
if (board)
114120
board->sendMessage("/system/info-internal");
115121
}
116122

@@ -121,15 +127,14 @@ void Inspector::getBoardInfo()
121127
*/
122128
void Inspector::onApply()
123129
{
124-
Board* board = mainWindow->getCurrentBoard( );
125-
if( board == NULL )
130+
Board* board = mainWindow->getCurrentBoard();
131+
if (board == NULL)
126132
return;
127133

128134
QStringList msgs;
129135

130136
QString newName = nameEdit->text();
131-
if( !newName.isEmpty() && board->name != newName )
132-
{
137+
if (!newName.isEmpty() && board->name != newName) {
133138
msgs << QString( "/system/name %1" ).arg( QString( "\"%1\"" ).arg( newName ) );
134139
mainWindow->setBoardName( board->key(), QString( "%1 : %2" ).arg(newName).arg(board->key()) );
135140
}
@@ -161,10 +166,9 @@ void Inspector::onApply()
161166
if( !newPort.isEmpty() && board->udp_send_port != newPort )
162167
msgs << QString( "/network/osc_udp_send_port %1" ).arg( newPort );
163168

164-
setLabelsRole( QPalette::WindowText );
165-
if( msgs.size( ) > 0 )
166-
{
167-
board->sendMessage( msgs );
169+
setLabelsRole(QPalette::WindowText);
170+
if (!msgs.isEmpty()) {
171+
board->sendMessage(msgs);
168172
mainWindow->updateBoardInfo(board);
169173
mainWindow->message(msgs, MsgType::Command, board->location());
170174
}
@@ -178,7 +182,7 @@ void Inspector::onRevert()
178182
{
179183
setLabelsRole(QPalette::WindowText);
180184
Board *brd = mainWindow->getCurrentBoard();
181-
if(brd)
185+
if (brd)
182186
setData(brd);
183187
}
184188

@@ -189,16 +193,16 @@ void Inspector::onAnyValueEdited()
189193

190194
void Inspector::setLabelsRole(QPalette::ColorRole role)
191195
{
192-
nameLabel->setForegroundRole( role );
193-
sernumLabel->setForegroundRole( role );
194-
versionLabel->setForegroundRole( role );
195-
freememLabel->setForegroundRole( role );
196-
ipLabel->setForegroundRole( role );
197-
netmaskLabel->setForegroundRole( role );
198-
gatewayLabel->setForegroundRole( role );
199-
listenPortLabel->setForegroundRole( role );
200-
sendPortLabel->setForegroundRole( role );
201-
dhcpBox->setForegroundRole( role ); // how to actually get at the text?
196+
nameLabel->setForegroundRole(role);
197+
sernumLabel->setForegroundRole(role);
198+
versionLabel->setForegroundRole(role);
199+
freememLabel->setForegroundRole(role);
200+
ipLabel->setForegroundRole(role);
201+
netmaskLabel->setForegroundRole(role);
202+
gatewayLabel->setForegroundRole(role);
203+
listenPortLabel->setForegroundRole(role);
204+
sendPortLabel->setForegroundRole(role);
205+
dhcpBox->setForegroundRole(role); // how to actually get at the text?
202206
}
203207

204208

mchelper/trunk/source/MainWindow.cpp

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@
3131
#include "Uploader.h"
3232
#include "About.h"
3333

34+
#define MAINWIN_GEOM "mainwindow/geometry"
35+
#define MAINWIN_SPLITTER "mainwindow/splitter"
36+
3437
/**
3538
MainWindow represents, not surprisingly, the main window of the application.
3639
It handles all the menu items and the UI.
@@ -99,21 +102,8 @@ MainWindow::MainWindow(bool no_ui, QWidget *parent) : QMainWindow(parent)
99102
void MainWindow::readSettings()
100103
{
101104
QSettings settings;
102-
QSize size = settings.value("size").toSize();
103-
if (size.isValid())
104-
resize(size);
105-
106-
QPoint mainWinPos = settings.value("mainwindow_pos").toPoint();
107-
if (!mainWinPos.isNull())
108-
move(mainWinPos);
109-
110-
QList<QVariant> splitterSettings = settings.value("splitterSizes").toList();
111-
if (!splitterSettings.isEmpty()) {
112-
QList<int> splitterSizes;
113-
foreach (const QVariant & setting, splitterSettings)
114-
splitterSizes << setting.toInt();
115-
ui.splitter->setSizes(splitterSizes);
116-
}
105+
restoreGeometry(settings.value(MAINWIN_GEOM).toByteArray());
106+
ui.splitter->restoreState(settings.value(MAINWIN_SPLITTER).toByteArray());
117107

118108
QStringList commands = settings.value( "commands" ).toStringList();
119109
foreach (const QString & cmd, commands)
@@ -141,15 +131,8 @@ void MainWindow::setMaxMessages(int msgs)
141131
void MainWindow::writeSettings()
142132
{
143133
QSettings settings;
144-
settings.setValue("size", size());
145-
settings.setValue("mainwindow_pos", pos());
146-
settings.setValue("inspector_pos", inspector->pos());
147-
148-
QList<QVariant> splitterSettings;
149-
QList<int> splitterSizes = ui.splitter->sizes();
150-
foreach (int splitterSize, splitterSizes)
151-
splitterSettings << splitterSize;
152-
settings.setValue("splitterSizes", splitterSettings);
134+
settings.setValue(MAINWIN_GEOM, saveGeometry());
135+
settings.setValue(MAINWIN_SPLITTER, ui.splitter->saveState());
153136

154137
QStringList commands;
155138
for (int i = 0; i < ui.commandLine->count(); i++)

0 commit comments

Comments
 (0)