File indexing completed on 2024-05-05 03:50:41
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2012 Rene Kuettner <rene@bitkanal.net> 0004 // 0005 0006 #include "EclipsesBrowserDialog.h" 0007 0008 #include "MarbleModel.h" 0009 #include "MarbleClock.h" 0010 #include "MarbleDebug.h" 0011 0012 #include "EclipsesModel.h" 0013 #include "EclipsesItem.h" 0014 0015 #include "ui_EclipsesBrowserDialog.h" 0016 0017 namespace Marble { 0018 0019 EclipsesBrowserDialog::EclipsesBrowserDialog( const MarbleModel *model, 0020 QWidget *parent ) 0021 : QDialog( parent ), 0022 m_marbleModel( model ), 0023 m_browserWidget(nullptr) 0024 { 0025 initialize(); 0026 } 0027 0028 EclipsesBrowserDialog::~EclipsesBrowserDialog() 0029 { 0030 delete m_eclModel; 0031 delete m_browserWidget; 0032 } 0033 0034 void EclipsesBrowserDialog::setYear( int year ) 0035 { 0036 m_browserWidget->spinBoxYear->setValue( year ); 0037 } 0038 0039 int EclipsesBrowserDialog::year() const 0040 { 0041 return m_browserWidget->spinBoxYear->value(); 0042 } 0043 0044 void EclipsesBrowserDialog::setWithLunarEclipses( const bool enable ) 0045 { 0046 if( m_eclModel->withLunarEclipses() != enable ) { 0047 m_eclModel->setWithLunarEclipses( enable ); 0048 m_eclModel->update(); 0049 } 0050 } 0051 0052 bool EclipsesBrowserDialog::withLunarEclipses() const 0053 { 0054 return m_eclModel->withLunarEclipses(); 0055 } 0056 0057 void EclipsesBrowserDialog::accept() 0058 { 0059 QItemSelectionModel *s = m_browserWidget->treeView->selectionModel(); 0060 QModelIndex selected = s->currentIndex(); 0061 0062 if( selected.isValid() ) { 0063 EclipsesItem *item = static_cast<EclipsesItem*>( selected.internalPointer() ); 0064 emit buttonShowClicked( m_eclModel->year(), item->index() ); 0065 } 0066 0067 QDialog::accept(); 0068 } 0069 0070 void EclipsesBrowserDialog::updateEclipsesForYear( int year ) 0071 { 0072 m_eclModel->setYear( year ); 0073 updateButtonStates(); 0074 } 0075 0076 void EclipsesBrowserDialog::updateButtonStates() 0077 { 0078 QItemSelectionModel *s = m_browserWidget->treeView->selectionModel(); 0079 m_browserWidget->buttonShow->setEnabled( s->hasSelection() ); 0080 } 0081 0082 void EclipsesBrowserDialog::initialize() 0083 { 0084 delete m_browserWidget; 0085 m_browserWidget = new Ui::EclipsesBrowserDialog(); 0086 m_browserWidget->setupUi( this ); 0087 0088 m_browserWidget->treeView->setExpandsOnDoubleClick( false ); 0089 0090 m_eclModel = new EclipsesModel( m_marbleModel ); 0091 m_browserWidget->treeView->setModel( m_eclModel ); 0092 0093 connect( m_browserWidget->buttonShow, SIGNAL(clicked()), 0094 this, SLOT(accept()) ); 0095 connect( m_browserWidget->buttonClose, SIGNAL(clicked()), 0096 this, SLOT(reject()) ); 0097 connect( m_browserWidget->spinBoxYear, SIGNAL(valueChanged(int)), 0098 this, SLOT(updateEclipsesForYear(int)) ); 0099 connect( m_browserWidget->treeView->selectionModel(), 0100 SIGNAL(selectionChanged(const QItemSelection&, 0101 const QItemSelection&)), 0102 this, SLOT(updateButtonStates()) ); 0103 connect( m_browserWidget->buttonSettings, SIGNAL(clicked()), 0104 SIGNAL(buttonSettingsClicked()) ); 0105 0106 setYear( m_marbleModel->clock()->dateTime().date().year() ); 0107 0108 update(); 0109 0110 m_browserWidget->treeView->resizeColumnToContents(2); 0111 m_browserWidget->treeView->resizeColumnToContents(3); 0112 } 0113 0114 } // namespace Marble 0115 0116 #include "moc_EclipsesBrowserDialog.cpp" 0117