Marble

TimeControlWidget.cpp
1 // SPDX-License-Identifier: LGPL-2.1-or-later
2 //
3 // SPDX-FileCopyrightText: 2010 Harshit Jain <[email protected]>
4 //
5 
6 // Own
7 #include "TimeControlWidget.h"
8 #include "ui_TimeControlWidget.h"
9 
10 // Qt
11 #include <QPushButton>
12 #include <QShowEvent>
13 
14 // Marble
15 #include "MarbleClock.h"
16 #include "MarbleDebug.h"
17 
18 using namespace Marble;
19 /* TRANSLATOR Marble::TimeControlWidget */
20 
21 TimeControlWidget::TimeControlWidget( MarbleClock* clock, QWidget* parent )
22  : QDialog( parent ),
23  m_uiWidget( new Ui::TimeControlWidget ),
24  m_clock( clock ),
25  m_lastDateTime()
26 {
27  m_uiWidget->setupUi( this );
28 
29  connect( m_uiWidget->speedSlider, SIGNAL(valueChanged(int)), this, SLOT(updateSpeedLabel(int)) );
30  connect( m_uiWidget->nowToolButton, SIGNAL(clicked()), this, SLOT(nowClicked()) );
31  connect( m_uiWidget->buttonBox->button(QDialogButtonBox::Apply), SIGNAL(clicked()), this, SLOT(apply()) );
32  connect( m_uiWidget->buttonBox, SIGNAL(rejected()), this, SLOT(reject()) );
33  connect( m_uiWidget->buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(apply()) );
34  connect( m_uiWidget->buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(accept()) );
35  connect( m_clock, SIGNAL(timeChanged()), this, SLOT(updateDateTime()) );
36  connect( m_clock, SIGNAL(updateIntervalChanged(int)), this, SLOT(updateRefreshRate(int)) );
37 
38  setModal( false );
39 
40 }
41 
42 TimeControlWidget::~TimeControlWidget()
43 {
44  delete m_uiWidget;
45 }
46 
47 void TimeControlWidget::updateSpeedLabel( int speed )
48 {
49  m_uiWidget->speedLabel->setText( QString( "%1x" ).arg( speed ) );
50 }
51 
52 void TimeControlWidget::updateRefreshRate( int seconds )
53 {
54  m_uiWidget->refreshIntervalSpinBox->setValue( seconds );
55 }
56 
57 void TimeControlWidget::updateDateTime()
58 {
59  m_uiWidget->currentDateTimeEdit->setDateTime( m_clock->dateTime().addSecs( m_clock->timezone() ) );
60 }
61 
62 void TimeControlWidget::nowClicked()
63 {
64  m_uiWidget->newDateTimeEdit->setDateTime( QDateTime::currentDateTime().toUTC().addSecs( m_clock->timezone() ) );
65 }
66 
67 void TimeControlWidget::apply()
68 {
69  if( m_lastDateTime != m_uiWidget->newDateTimeEdit->dateTime() )
70  {
71  m_lastDateTime = m_uiWidget->newDateTimeEdit->dateTime();
72  m_clock->setDateTime( m_lastDateTime.toUTC() );
73  }
74  m_clock->setUpdateInterval( m_uiWidget->refreshIntervalSpinBox->value() );
75  m_clock->setSpeed( m_uiWidget->speedSlider->value() );
76 }
77 
78 void TimeControlWidget::showEvent(QShowEvent* event)
79 {
80  if( !event->spontaneous() )
81  {
82  // Loading all options
83  m_uiWidget->refreshIntervalSpinBox->setValue( m_clock->updateInterval() );
84  m_uiWidget->speedSlider->setValue( m_clock->speed() );
85  m_uiWidget->speedLabel->setText( QString( "%1x" ).arg( m_clock->speed() ) );
86  updateDateTime();
87  m_lastDateTime = m_clock->dateTime();
88  m_uiWidget->newDateTimeEdit->setDateTime( m_lastDateTime.addSecs( m_clock->timezone() ) );
89  }
90 }
91 
92 #include "moc_TimeControlWidget.cpp"
QDateTime currentDateTime()
Binds a QML item to a specific geodetic location in screen coordinates.
AKONADI_CALENDAR_EXPORT KCalendarCore::Event::Ptr event(const Akonadi::Item &item)
void setupUi(QWidget *widget)
KGuiItem apply()
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Oct 2 2023 03:52:10 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.