File indexing completed on 2024-04-21 03:50:03

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2013 Mihail Ivchenko <ematirov@gmail.com>
0004 // SPDX-FileCopyrightText: 2014 Sanjiban Bairagya <sanjiban22393@gmail.com>
0005 // SPDX-FileCopyrightText: 2014 Illya Kovalevskyy <illya.kovalevskyy@gmail.com>
0006 //
0007 
0008 #include "WaitEditWidget.h"
0009 
0010 #include <QHBoxLayout>
0011 #include <QLabel>
0012 #include <QToolButton>
0013 #include <QDoubleSpinBox>
0014 
0015 #include "MarblePlacemarkModel.h"
0016 #include "GeoDataTourControl.h"
0017 #include "geodata/data/GeoDataWait.h"
0018 
0019 namespace Marble
0020 {
0021 
0022 WaitEditWidget::WaitEditWidget( const QModelIndex &index, QWidget *parent ) :
0023     QWidget( parent ),
0024     m_index( index ),
0025     m_spinBox( new QDoubleSpinBox ),
0026     m_button( new QToolButton )
0027 {
0028     QHBoxLayout *layout = new QHBoxLayout;
0029     layout->setSpacing( 5 );
0030 
0031     QLabel* iconLabel = new QLabel;
0032     iconLabel->setPixmap(QPixmap(QStringLiteral(":/marble/player-time.png")));
0033     layout->addWidget( iconLabel );
0034 
0035     QLabel *waitLabel = new QLabel;
0036     waitLabel->setText( tr( "Wait duration:" ) );
0037     layout->addWidget( waitLabel );
0038 
0039     layout->addWidget( m_spinBox );
0040     m_spinBox->setValue( waitElement()->duration() );
0041     m_spinBox->setSuffix( tr(" s", "seconds") );
0042 
0043     m_button->setIcon(QIcon(QStringLiteral(":/marble/document-save.png")));
0044     connect(m_button, SIGNAL(clicked()), this, SLOT(save()));
0045     layout->addWidget( m_button );
0046 
0047     setLayout( layout );
0048 }
0049 
0050 bool WaitEditWidget::editable() const
0051 {
0052     return m_button->isEnabled();
0053 }
0054 
0055 void WaitEditWidget::setEditable( bool editable )
0056 {
0057     m_button->setEnabled( editable );
0058 }
0059 
0060 void WaitEditWidget::save()
0061 {
0062     waitElement()->setDuration( m_spinBox->value() );
0063     emit editingDone(m_index);
0064 }
0065 
0066 GeoDataWait* WaitEditWidget::waitElement()
0067 {
0068     GeoDataObject *object = qvariant_cast<GeoDataObject*>(m_index.data( MarblePlacemarkModel::ObjectPointerRole ) );
0069     Q_ASSERT( object );
0070     auto wait = geodata_cast<GeoDataWait>(object);
0071     Q_ASSERT(wait);
0072     return wait;
0073 }
0074 
0075 } // namespace Marble
0076 
0077 #include "moc_WaitEditWidget.cpp"