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"