File indexing completed on 2024-05-19 11:32:00
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"