File indexing completed on 2024-04-14 03:48:09

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2010 Harshit Jain <hjain.itbhu@gmail.com>
0004 //
0005 
0006 // Own
0007 #include "TimeControlWidget.h"
0008 #include "ui_TimeControlWidget.h"
0009 
0010 // Qt
0011 #include <QPushButton>
0012 #include <QShowEvent>
0013 
0014 // Marble
0015 #include "MarbleClock.h"
0016 #include "MarbleDebug.h"
0017 
0018 using namespace Marble;
0019 /* TRANSLATOR Marble::TimeControlWidget */
0020 
0021 TimeControlWidget::TimeControlWidget( MarbleClock* clock, QWidget* parent )
0022     : QDialog( parent ),
0023       m_uiWidget( new Ui::TimeControlWidget ),
0024       m_clock( clock ),
0025       m_lastDateTime()
0026 {
0027     m_uiWidget->setupUi( this );
0028 
0029     connect( m_uiWidget->speedSlider, SIGNAL(valueChanged(int)), this, SLOT(updateSpeedLabel(int)) );
0030     connect( m_uiWidget->nowToolButton, SIGNAL(clicked()), this, SLOT(nowClicked()) );
0031     connect( m_uiWidget->buttonBox->button(QDialogButtonBox::Apply), SIGNAL(clicked()), this, SLOT(apply()) );
0032     connect( m_uiWidget->buttonBox, SIGNAL(rejected()), this, SLOT(reject()) );
0033     connect( m_uiWidget->buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(apply()) );
0034     connect( m_uiWidget->buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(accept()) );
0035     connect( m_clock, SIGNAL(timeChanged()), this, SLOT(updateDateTime()) );
0036     connect( m_clock, SIGNAL(updateIntervalChanged(int)), this, SLOT(updateRefreshRate(int)) );
0037 
0038     setModal( false );
0039 
0040 }
0041 
0042 TimeControlWidget::~TimeControlWidget()
0043 {
0044     delete m_uiWidget;
0045 }
0046 
0047 void TimeControlWidget::updateSpeedLabel( int speed )
0048 {
0049     m_uiWidget->speedLabel->setText( QString( "%1x" ).arg( speed ) );
0050 }
0051 
0052 void TimeControlWidget::updateRefreshRate( int seconds )
0053 {
0054     m_uiWidget->refreshIntervalSpinBox->setValue( seconds );
0055 }
0056 
0057 void TimeControlWidget::updateDateTime()
0058 {
0059     m_uiWidget->currentDateTimeEdit->setDateTime( m_clock->dateTime().addSecs( m_clock->timezone() ) );
0060 }
0061 
0062 void TimeControlWidget::nowClicked()
0063 {
0064     m_uiWidget->newDateTimeEdit->setDateTime( QDateTime::currentDateTime().toUTC().addSecs( m_clock->timezone() ) );
0065 }
0066 
0067 void TimeControlWidget::apply()
0068 {
0069     if( m_lastDateTime !=  m_uiWidget->newDateTimeEdit->dateTime() )
0070     {
0071         m_lastDateTime = m_uiWidget->newDateTimeEdit->dateTime();
0072         m_clock->setDateTime( m_lastDateTime.toUTC() );
0073     }
0074     m_clock->setUpdateInterval( m_uiWidget->refreshIntervalSpinBox->value() );
0075     m_clock->setSpeed( m_uiWidget->speedSlider->value() );
0076 }
0077 
0078 void TimeControlWidget::showEvent(QShowEvent* event)
0079 {
0080     if( !event->spontaneous() ) 
0081     {
0082         // Loading all options
0083         m_uiWidget->refreshIntervalSpinBox->setValue( m_clock->updateInterval() );
0084         m_uiWidget->speedSlider->setValue( m_clock->speed() );
0085         m_uiWidget->speedLabel->setText( QString( "%1x" ).arg( m_clock->speed() ) );
0086         updateDateTime();
0087         m_lastDateTime = m_clock->dateTime();
0088         m_uiWidget->newDateTimeEdit->setDateTime( m_lastDateTime.addSecs( m_clock->timezone() ) );
0089     }
0090 }
0091 
0092 #include "moc_TimeControlWidget.cpp"