00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
#include <qwidget.h>
00013
#include <qlayout.h>
00014
#include <qpixmap.h>
00015
#include <qapplication.h>
00016
#include <qtooltip.h>
00017
#include <qpushbutton.h>
00018
00019
00020
#include "configuration.h"
00021
#include "configurationWidget.h"
00022
#include "groupsWidget.h"
00023
#include "groupIcon.h"
00024
#include "layoutSettingsWidget.h"
00025
#include "loadingSavingWidget.h"
00026
#include "alertsWidget.h"
00027
#include "../config.h"
00028
00029
00030 ConfigurationWidget::ConfigurationWidget(
Configuration* config,
00031
QWidget *parent,
00032
const char* name ) :
00033
QDialog(parent,name)
00034 {
00035
00036 this->config = config;
00037
00038
00039 setCaption( tr(
"Settings"));
00040
00041
00042
currentPseudoSelection = NULL;
00043
00044
00045
layoutWidget =
new LayoutSettingsWidget(config,
this);
00046
loadingSavingWidget =
new LoadingSavingWidget(config,
this);
00047
alertsWidget =
new AlertsWidget( config,
this );
00048
00049
00050
groups =
new GroupsWidget(
this );
00051
groups->setItemTextPos( QIconView::Right );
00052
00053
00054
00055 QString labels[3];
00056 labels[0] = tr(
"Appearance");
00057 labels[1] = tr(
"Load/Save");
00058 labels[2] = tr(
"Alerts");
00059
00060
00061
int maxLabelWidth = 0;
00062
int i;
00063 QFontMetrics fm( qApp->font() );
00064
for(i=0; i<3; i++)
00065 {
00066
if( fm.width( labels[i] ) > maxLabelWidth )
00067 maxLabelWidth = fm.width( labels[i] );
00068 }
00069
groups->
setTextWidth( maxLabelWidth );
00070
00071
00072
layoutIcon =
new GroupIcon(
groups, QPixmap(QString(
IMAGE_PATH)+
"settingsIcons/layout.png" ),
00073 labels[0],
layoutWidget );
00074
layoutIcon->setDragEnabled(
false);
00075
00076
loadingSavingIcon =
new GroupIcon(
groups, QPixmap(QString(
IMAGE_PATH)+
"settingsIcons/loadsave.png" ),
00077 labels[1],
loadingSavingWidget );
00078
loadingSavingIcon->setDragEnabled(
false);
00079
00080
alertsIcon =
new GroupIcon(
groups, QPixmap(QString(
IMAGE_PATH)+
"settingsIcons/alerts.png" ),
00081 labels[2],
alertsWidget );
00082
alertsIcon->setDragEnabled(
false);
00083
00084
00085
currentSettingsWidget =
layoutWidget;
00086
layoutIcon->setSelected(
true);
00087
loadingSavingWidget->hide();
00088
alertsWidget->hide();
00089
00090
00091 connect(
groups, SIGNAL(selectionChanged(
QIconViewItem*)),
00092 SLOT(
updateDialogue(
QIconViewItem*)) );
00093
00094
00095 connect(
groups, SIGNAL(onItem(
QIconViewItem*)),
00096 SLOT(
repaintGroup(
QIconViewItem*)) );
00097
00098
00099 connect(
groups, SIGNAL(onViewport()),
00100 SLOT(
clearPseudoSelection()) );
00101
00102
00103
00104
buttonsFrame =
new QFrame(
this );
00105
okButton =
new QPushButton( tr(
"Apply"),
buttonsFrame );
00106
okButton->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
00107
okButton->setDefault(
true);
00108 connect(
okButton, SIGNAL(clicked()), SLOT(
saveSettings()) );
00109
cancelButton =
new QPushButton( tr(
"Cancel"),
buttonsFrame );
00110
cancelButton->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
00111 connect(
cancelButton, SIGNAL(clicked()), SLOT(
reject()) );
00112
buttonsGrid =
new QGridLayout(
buttonsFrame, 1, 5, 0 );
00113
buttonsGrid->setColStretch( 0, 1 );
00114
buttonsGrid->addWidget(
okButton, 0, 1 );
00115
buttonsGrid->addColSpacing( 2, 10 );
00116
buttonsGrid->addWidget(
cancelButton, 0, 3 );
00117
buttonsGrid->setColStretch( 4, 1 );
00118
00119
00120
grid =
new QGridLayout(
this, 5, 5, 0 );
00121
00122
grid->setRowSpacing(0,8);
00123
00124
grid->addWidget(
groups, 1, 1);
00125
grid->addWidget(
alertsWidget, 1, 3);
00126
grid->addWidget( layoutWidget, 1, 3);
00127
grid->addWidget(
loadingSavingWidget, 1, 3);
00128
grid->setRowStretch( 1, 1 );
00129
grid->setColStretch( 3, 1 );
00130
00131
grid->setRowSpacing(2,8);
00132
00133
grid->addMultiCellWidget(
buttonsFrame, 3, 3, 0, 4);
00134
00135
grid->setRowSpacing(4,8);
00136
00137
grid->setColSpacing(0,8);
00138
grid->setColSpacing(2,8);
00139
grid->setColSpacing(4,8);
00140
00141
groups->setGridX(1);
00142
groups->arrangeItemsInGrid();
00143
00144
int maxWidth = 0;
00145
int maxHeight = 0;
00146
00147 layoutWidget->constPolish();
00148
loadingSavingWidget->constPolish();
00149
alertsWidget->constPolish();
00150
groups->constPolish();
00151
00152 QSize s = layoutWidget->minimumSizeHint();
00153
if(maxWidth < s.width()) maxWidth = s.width();
00154
if(maxHeight < s.height()) maxHeight = s.height();
00155
00156 s =
loadingSavingWidget->minimumSizeHint();
00157
if(maxWidth < s.width()) maxWidth = s.width();
00158
if(maxHeight < s.height()) maxHeight = s.height();
00159
00160 s =
alertsWidget->minimumSizeHint();
00161
if(maxWidth < s.width()) maxWidth = s.width();
00162
if(maxHeight < s.height()) maxHeight = s.height();
00163
00164 s =
groups->minimumSizeHint();
00165
if(maxHeight < s.height()) maxHeight = s.height();
00166
00167 maxWidth = maxWidth + s.width();
00168 maxHeight +=
okButton->minimumSizeHint().height();
00169
00170 maxWidth += 3*8;
00171 maxHeight += 3*8;
00172
00173
00174 maxWidth += 100;
00175
00176 resize( maxWidth, maxHeight );
00177
00178 show();
00179 setFixedSize(size());
00180
00181
00182 layoutWidget->loadSettings();
00183
loadingSavingWidget->
loadSettings();
00184
alertsWidget->
loadSettings();
00185
00186 }
00187
00188 void ConfigurationWidget::updateDialogue(
QIconViewItem* selection)
00189 {
00190
00191
currentSettingsWidget->hide();
00192
00193
00194
currentSettingsWidget = ((
GroupIcon*)selection)->getSettingsWidget();
00195
currentSettingsWidget->show();
00196 }
00197
00198 void ConfigurationWidget::repaintGroup(
QIconViewItem* pseudoSelection)
00199 {
00200
00201
clearPseudoSelection();
00202
00203
00204
currentPseudoSelection = (
GroupIcon*)pseudoSelection;
00205
currentPseudoSelection->
setMousedOver(
true);
00206
groups->repaintItem(
currentPseudoSelection);
00207 }
00208
00209 void ConfigurationWidget::clearPseudoSelection()
00210 {
00211
00212
if(
currentPseudoSelection != NULL)
00213 {
00214
currentPseudoSelection->
setMousedOver(
false);
00215
groups->repaintItem(
currentPseudoSelection);
00216
currentPseudoSelection = NULL;
00217 }
00218 }
00219
00220 void ConfigurationWidget::saveSettings()
00221 {
00222
layoutWidget->
saveSettings();
00223
loadingSavingWidget->
saveSettings();
00224
alertsWidget->
saveSettings();
00225 close();
00226 }
00227
00228 void ConfigurationWidget::closeEvent( QCloseEvent* e)
00229 {
00230 QWidget::closeEvent( e );
00231 emit
closed();
00232 }
00233
00234 void ConfigurationWidget::reject()
00235 {
00236 QDialog::reject();
00237 emit
closed();
00238 }
00239