TimeDatePage::TimeDatePage( QWidget* parent ) :
    PageWidget( parent ),
    ui( new Ui::PageTimeDate ),
    m_timeDateService( new TimeDateService ),
    m_timeFieldsTimer ( new QTimer ( this ) )
{
    ui->setupUi( this );
    setTitle( TimeDateCommon::getTitle() );
    setIcon( QPixmap( ":/images/resources/timedate.png" ) );
    setShowApplyButton( true );
    setName( TimeDateCommon::getName() );

    connect( m_timeFieldsTimer, &QTimer::timeout,
             [this] ()
    {
        TimeDateCommon::updateTimeFields( ui, m_timeDateService, m_isTimeEdited, m_isDateEdited );
    } );

    connect( ui->isNtpEnabledCheckBox, &QCheckBox::toggled,
             [this] ( bool checked )
    {
        ui->timeEdit->setEnabled( !checked );
        ui->dateEdit->setEnabled( !checked );
        this -> setApplyEnabled( this, true );
    } );

    connect( ui->timeZonePushButton, &QPushButton::clicked,
             [this] ()
    {
        QString newTimeZone = TimeDateCommon::showTimeZoneSelector( m_timeZone );
        if ( !newTimeZone.isEmpty() )
        {
            m_timeZone = newTimeZone;
            TimeDateCommon::updateUi( ui, m_timeDateService, m_isTimeEdited, m_isDateEdited, m_timeZone );
            this -> setApplyEnabled( this, true );
        }
    } );

    connect( ui->timeEdit, &QTimeEdit::timeChanged,
             [this] ()
    {
        m_isTimeEdited = true;
        this -> setApplyEnabled( this, true );
    } );

    connect( ui->dateEdit, &QTimeEdit::dateChanged,
             [this] ()
    {
        m_isDateEdited = true;
        this -> setApplyEnabled( this, true );
    } );

    connect( ui->isRtcLocalCheckBox, &QCheckBox::toggled,
             [this] ()
    {
        this -> setApplyEnabled( this, true );
    } );
}
Page_Keyboard::Page_Keyboard(QWidget *parent) :
    PageWidget(parent),
    ui(new Ui::Page_Keyboard)
{
    ui->setupUi(this);
    setTitel(tr("Keyboard Settings"));
    setIcon(QPixmap(":/images/resources/keyboard.png"));
    setShowApplyButton(true);

    // Keyboard Preview
    ui->KBPreviewLayout->addWidget(&keyboardPreview);

    // Connect signals and slots
    connect(ui->listLayout, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*))   ,   this, SLOT(listLayout_currentItemChanged(QListWidgetItem*,QListWidgetItem*)));
    connect(ui->listVariant, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*))   ,   this, SLOT(listVariant_currentItemChanged(QListWidgetItem*,QListWidgetItem*)));
    connect(ui->buttonRestore, SIGNAL(clicked())  ,   this, SLOT(buttonRestore_clicked()));
}