Settings view fixed.
[qtmeetings] / src / UserInterface / Views / SettingsView.cpp
index 1021d77..5471b0c 100644 (file)
@@ -45,6 +45,9 @@ SettingsView::SettingsView( QWidget *aParent ) :
        iOkButton = new QPushButton;
        iOkButton->setText( tr( "OK" ) );
        buttonLayout->addWidget( iOkButton );
+       iCancelButton = new QPushButton;
+       iCancelButton->setText( tr( "Cancel" ));
+       buttonLayout->addWidget( iCancelButton );
 
        // Handle the main layout
        QVBoxLayout *mainLayout = new QVBoxLayout;
@@ -52,9 +55,11 @@ SettingsView::SettingsView( QWidget *aParent ) :
        mainLayout->addLayout( buttonLayout );
 
        setLayout( mainLayout );
+       setValues();
 
        // Handle component connections
        connect( iOkButton, SIGNAL( clicked() ), this, SLOT( handleOkClicked() ) );
+       connect( iCancelButton, SIGNAL( clicked() ), this, SLOT( handleCancelClicked() ) );
 }
 
 SettingsView::~SettingsView()
@@ -69,6 +74,11 @@ SettingsView::~SettingsView()
                delete iOkButton;
                iOkButton = 0;
        }
+       if ( iCancelButton != 0 )
+       {
+               delete iCancelButton;
+               iCancelButton = 0;
+       }
        if ( iSettingsTab != 0 )
        {
                delete iSettingsTab;
@@ -159,13 +169,6 @@ QWidget *SettingsView::initSettingsTab()
        QIntValidator *qiv = new QIntValidator( 0 );
        iRefreshInterval->setValidator( qiv );
 
-       iUserName->setText( Configuration::instance()->connectionSettings()->username() );
-       iPassword->setText( Configuration::instance()->connectionSettings()->password() );
-       iServerAddress->setText( Configuration::instance()->connectionSettings()->serverUrl().toString() );
-       QString refreshIntervalStr;
-       refreshIntervalStr.setNum( Configuration::instance()->connectionSettings()->refreshInterval() );
-       iRefreshInterval->setText( refreshIntervalStr );
-
        // Create the group boxes
        QGroupBox *userInformationGroup = new QGroupBox( tr( "User Information" ) );
        QGroupBox *serverInformationGroup = new QGroupBox( tr( "Server Information" ) );
@@ -216,19 +219,6 @@ QWidget *SettingsView::initWeekViewTab()
        iDayStartTime = new QTimeEdit;
        iDayEndTime = new QTimeEdit;
 
-       if ( Configuration::instance()->displaySettings()->daysInSchedule() == DisplaySettings::WeekdaysInSchedule )
-       {
-               iFiveDays->setChecked( true );
-               iSevenDays->setChecked( false );
-       }
-       else
-       {
-               iFiveDays->setChecked( false );
-               iSevenDays->setChecked( true );
-       }
-       iDayStartTime->setTime( Configuration::instance()->displaySettings()->dayStartsAt() );
-       iDayEndTime->setTime( Configuration::instance()->displaySettings()->dayEndsAt() );
-
        // Create group box and the grid layout
        QGroupBox *weeklyInformation = new QGroupBox( tr( "Weekly View" ) );
        QGridLayout *wgl = new QGridLayout;
@@ -393,15 +383,47 @@ void SettingsView::handleOkClicked()
        QString userName = iUserName->text();
        QString password = iPassword->text();
        QString serverAddress = iServerAddress->text();
-       QString refreshInterval = iRefreshInterval->text();
+       bool ok;
+       uint refreshInterval = iRefreshInterval->text().toUInt(&ok, 10);
 
        bool fiveDays = iFiveDays->isChecked();
        bool sevenDays = iSevenDays->isChecked();
        bool powerSaveEnabled = iPowerSaveEnabled->isChecked();
 
-       // TODO : Set the values to configuration and save it
+       // set values to Configuration
+       // set user information
+       Configuration::instance()->connectionSettings()->setUsername( userName );
+       Configuration::instance()->connectionSettings()->setPassword( password );
+       
+       // set server information
+       Configuration::instance()->connectionSettings()->setServerUrl( serverAddress );
+       if ( ok )
+       {
+               Configuration::instance()->connectionSettings()->setRefreshInterval( refreshInterval );
+       }
+       
+       // set weekly view settings
+       if ( fiveDays )
+       {
+               Configuration::instance()->displaySettings()->setDaysInSchedule( DisplaySettings::WeekdaysInSchedule );
+       }
+       else if ( sevenDays )
+       {
+               Configuration::instance()->displaySettings()->setDaysInSchedule( DisplaySettings::WholeWeekInSchedule );
+       }
+       Configuration::instance()->displaySettings()->setDayStartsAt( calendarStart );
+       Configuration::instance()->displaySettings()->setDayEndsAt( calendarEnd );
+       
+       // set power save settings
+       Configuration::instance()->startupSettings()->setPowersavingEnabled( powerSaveEnabled );
+       Configuration::instance()->startupSettings()->setTurnOnAt( powerSaveStart );
+       Configuration::instance()->startupSettings()->setTurnOffAt( powerSaveEnd );
+       
+       // save configuration
+       Configuration::instance()->save();
        
        // Emit the signal to notify that ok is pressed and data is saved.
+       setValues();
        emit okClicked();
 }
 
@@ -413,4 +435,46 @@ void SettingsView::viewResized(const QSize &newSize, const QSize &oldSize)
                // the ok button is hidden under the keyboard.
                size().rheight() += iOkButton->size().height();
        }
-}
\ No newline at end of file
+}
+
+void SettingsView::handleCancelClicked()
+{
+       setValues();
+       emit cancelClicked();
+}
+
+void SettingsView::setValues()
+{
+       // set user information
+       iUserName->setText( Configuration::instance()->connectionSettings()->username() );
+       iPassword->setText( Configuration::instance()->connectionSettings()->password() );
+       // set server information
+       iServerAddress->setText( Configuration::instance()->connectionSettings()->serverUrl().toString() );
+       QString refreshIntervalStr;
+       refreshIntervalStr.setNum( Configuration::instance()->connectionSettings()->refreshInterval() );
+       iRefreshInterval->setText( refreshIntervalStr );
+       // set weekly view display settings
+       if ( Configuration::instance()->displaySettings()->daysInSchedule() == DisplaySettings::WeekdaysInSchedule )
+       {
+               iFiveDays->setChecked( true );
+               iSevenDays->setChecked( false );
+       }
+       else
+       {
+               iFiveDays->setChecked( false );
+               iSevenDays->setChecked( true );
+       }
+       iDayStartTime->setTime( Configuration::instance()->displaySettings()->dayStartsAt() );
+       iDayEndTime->setTime( Configuration::instance()->displaySettings()->dayEndsAt() );
+       // set startup settings
+       if ( Configuration::instance()->startupSettings()->isPowersavingEnabled() )
+       {
+               iPowerSaveEnabled->setChecked( true );
+       }
+       else
+       {
+               iPowerSaveEnabled->setChecked( false );
+       }
+       iPowerSaveStartTime->setTime( Configuration::instance()->startupSettings()->turnOnAt() );
+       iPowerSaveEndTime->setTime( Configuration::instance()->startupSettings()->turnOffAt() );
+}