File indexing completed on 2024-05-05 03:50:47

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2010 Utku Aydın <utkuaydin34@gmail.com>
0004 // SPDX-FileCopyrightText: 2012 Illya Kovalevskyy <illya.kovalevskyy@gmail.com>
0005 //
0006 
0007 #include "OpenDesktopPlugin.h"
0008 #include "OpenDesktopModel.h"
0009 #include "MarbleWidget.h"
0010 
0011 #include "ui_OpenDesktopConfigWidget.h"
0012 
0013 #include <QPushButton>
0014 
0015 using namespace Marble;
0016 
0017 OpenDesktopPlugin::OpenDesktopPlugin()
0018     : AbstractDataPlugin( nullptr ),
0019       m_configDialog( nullptr ),
0020       m_uiConfigWidget( nullptr )
0021 {
0022 }
0023 
0024 OpenDesktopPlugin::OpenDesktopPlugin( const MarbleModel *marbleModel )
0025     : AbstractDataPlugin( marbleModel ),
0026       m_configDialog( nullptr ),
0027       m_uiConfigWidget( nullptr )
0028 {
0029     setEnabled( true ); // Plugin is enabled by default
0030     setVisible( false ); // Plugin is invisible by default
0031 }
0032 
0033 void OpenDesktopPlugin::initialize()
0034 {
0035     setModel( new OpenDesktopModel( marbleModel(), this ) );
0036     setNumberOfItems( defaultItemsOnScreen ); // Setting the number of items on the screen.
0037 }
0038 
0039 QString OpenDesktopPlugin::name() const
0040 {
0041     return tr( "OpenDesktop Items" );
0042 }
0043 
0044 QString OpenDesktopPlugin::guiString() const
0045 {
0046     return tr( "&OpenDesktop Community" );
0047 }
0048 
0049 QString OpenDesktopPlugin::nameId() const
0050 {
0051     return QStringLiteral("opendesktop");
0052 }
0053 
0054 QString OpenDesktopPlugin::version() const
0055 {
0056     return QStringLiteral("1.0");
0057 }
0058 
0059 QString OpenDesktopPlugin::description() const
0060 {
0061     return tr( "Shows OpenDesktop users' avatars and some extra information about them on the map." );
0062 }
0063 
0064 QString OpenDesktopPlugin::copyrightYears() const
0065 {
0066     return QStringLiteral("2010");
0067 }
0068 
0069 QVector<PluginAuthor> OpenDesktopPlugin::pluginAuthors() const
0070 {
0071     return QVector<PluginAuthor>()
0072             << PluginAuthor(QStringLiteral("Utku Aydin"), QStringLiteral("utkuaydin34@gmail.com"));
0073 }
0074 
0075 QIcon OpenDesktopPlugin::icon() const
0076 {
0077     return QIcon(QStringLiteral(":/icons/social.png"));
0078 }
0079 
0080 QDialog *OpenDesktopPlugin::configDialog()
0081 {
0082     if ( !m_configDialog ) {
0083         m_configDialog = new QDialog();
0084         m_uiConfigWidget = new Ui::OpenDesktopConfigWidget;
0085         m_uiConfigWidget->setupUi( m_configDialog );
0086         readSettings();
0087 
0088         connect( m_uiConfigWidget->m_buttonBox, SIGNAL(accepted()),
0089                 SLOT(writeSettings()) );
0090         connect( m_uiConfigWidget->m_buttonBox, SIGNAL(rejected()),
0091                 SLOT(readSettings()) );
0092         QPushButton *applyButton = m_uiConfigWidget->m_buttonBox->button( 
0093                                                          QDialogButtonBox::Apply );
0094         connect( applyButton, SIGNAL(clicked()),
0095                  this,        SLOT(writeSettings()) );
0096     }
0097 
0098     return m_configDialog;
0099 }
0100 
0101 QHash<QString,QVariant> OpenDesktopPlugin::settings() const
0102 {
0103     QHash<QString, QVariant> settings = AbstractDataPlugin::settings();
0104 
0105     settings.insert(QStringLiteral("itemsOnScreen"), numberOfItems());
0106 
0107     return settings;
0108 }
0109 
0110 bool OpenDesktopPlugin::eventFilter(QObject *object, QEvent *event)
0111 {
0112     if ( isInitialized() ) {
0113         OpenDesktopModel *odModel = qobject_cast<OpenDesktopModel*>( model() );
0114         Q_ASSERT(odModel);
0115         MarbleWidget* widget = qobject_cast<MarbleWidget*>( object );
0116         if ( widget ) {
0117             odModel->setMarbleWidget(widget);
0118         }
0119     }
0120 
0121     return AbstractDataPlugin::eventFilter( object, event );
0122 }
0123 
0124 void OpenDesktopPlugin::setSettings( const QHash<QString,QVariant> &settings )
0125 {
0126     AbstractDataPlugin::setSettings( settings );
0127 
0128     setNumberOfItems(settings.value(QStringLiteral("itemsOnScreen"), defaultItemsOnScreen).toInt());
0129 
0130     emit settingsChanged( nameId() );
0131 }
0132 
0133 void OpenDesktopPlugin::readSettings()
0134 {
0135     if ( m_uiConfigWidget ) {
0136         m_uiConfigWidget->m_itemsOnScreenSpin->setValue( numberOfItems() );
0137     }
0138 }
0139 
0140 void OpenDesktopPlugin::writeSettings()
0141 {
0142     if ( m_uiConfigWidget ) {
0143         setNumberOfItems( m_uiConfigWidget->m_itemsOnScreenSpin->value() );
0144     }
0145 
0146     emit settingsChanged( nameId() );
0147 }
0148 
0149 #include "moc_OpenDesktopPlugin.cpp"