File indexing completed on 2024-05-19 04:50:19

0001 /****************************************************************************************
0002  * Copyright (c) 2007 Nikolaj Hald Nielsen <nhn@kde.org>                                *
0003  *                                                                                      *
0004  * This program is free software; you can redistribute it and/or modify it under        *
0005  * the terms of the GNU General Public License as published by the Free Software        *
0006  * Foundation; either version 2 of the License, or (at your option) version 3 or        *
0007  * any later version accepted by the membership of KDE e.V. (or its successor approved  *
0008  * by the membership of KDE e.V.), which shall act as a proxy defined in Section 14 of  *
0009  * version 3 of the license.                                                            *
0010  *                                                                                      *
0011  * This program is distributed in the hope that it will be useful, but WITHOUT ANY      *
0012  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A      *
0013  * PARTICULAR PURPOSE. See the GNU General Public License for more details.             *
0014  *                                                                                      *
0015  * You should have received a copy of the GNU General Public License along with         *
0016  * this program.  If not, see <http://www.gnu.org/licenses/>.                           *
0017  ****************************************************************************************/
0018 
0019 #include "MagnatuneSettingsModule.h"
0020 #include "MagnatuneMeta.h"
0021 #include "ui_MagnatuneConfigWidget.h"
0022 
0023 #include <KPluginFactory>
0024 
0025 
0026 K_PLUGIN_FACTORY_WITH_JSON( MagnatuneSettingsModuleFactory, "amarok_service_magnatunestore_config.json", registerPlugin<MagnatuneSettingsModule>(); )
0027 
0028 MagnatuneSettingsModule::MagnatuneSettingsModule( QWidget *parent, const QVariantList &args )
0029     : KCModule( parent, args )
0030 {
0031     m_configDialog = new Ui::MagnatuneConfigWidget;
0032     m_configDialog->setupUi( this );
0033 
0034     m_configDialog->passwordEdit->setEchoMode( QLineEdit::Password );
0035     connect ( m_configDialog->usernameEdit, &QLineEdit::textChanged, this, &MagnatuneSettingsModule::settingsChanged );
0036     connect ( m_configDialog->passwordEdit, &QLineEdit::textChanged, this, &MagnatuneSettingsModule::settingsChanged );
0037     connect ( m_configDialog->emailEdit, &QLineEdit::textChanged, this, &MagnatuneSettingsModule::settingsChanged );
0038     connect ( m_configDialog->typeComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &MagnatuneSettingsModule::settingsChanged );
0039     connect ( m_configDialog->isMemberCheckbox, &QCheckBox::stateChanged, this, &MagnatuneSettingsModule::settingsChanged );
0040     connect ( m_configDialog->streamTypeComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &MagnatuneSettingsModule::settingsChanged );
0041     connect ( m_configDialog->autoUpdateDatabase, &QCheckBox::stateChanged, this, &MagnatuneSettingsModule::settingsChanged );
0042 
0043     load();
0044 }
0045 
0046 
0047 MagnatuneSettingsModule::~MagnatuneSettingsModule()
0048 {
0049     delete m_configDialog;
0050 }
0051 
0052 void MagnatuneSettingsModule::save()
0053 {
0054     m_config.setIsMember( m_configDialog->isMemberCheckbox->checkState() == Qt::Checked );
0055     m_config.setAutoUpdateDatabase( m_configDialog->autoUpdateDatabase->checkState() == Qt::Checked );
0056 
0057 
0058     int typeIndex = m_configDialog->typeComboBox->currentIndex();
0059     if( typeIndex == 0 )
0060         m_config.setMembershipType( MagnatuneConfig::STREAM );
0061     else
0062         m_config.setMembershipType( MagnatuneConfig::DOWNLOAD );
0063     
0064     m_config.setUsername( m_configDialog->usernameEdit->text() );
0065     m_config.setPassword( m_configDialog->passwordEdit->text() );
0066     m_config.setEmail( m_configDialog->emailEdit->text() );
0067 
0068 
0069     m_config.setStreamType( m_configDialog->streamTypeComboBox->currentIndex() );
0070 
0071     m_config.save();
0072     KCModule::save();
0073 }
0074 
0075 void MagnatuneSettingsModule::load()
0076 {
0077     if ( m_config.isMember() )
0078         m_configDialog->isMemberCheckbox->setCheckState( Qt::Checked );
0079     else
0080         m_configDialog->isMemberCheckbox->setCheckState( Qt::Unchecked );
0081 
0082     m_configDialog->autoUpdateDatabase->setCheckState( m_config.autoUpdateDatabase()?
0083                                                        Qt::Checked : Qt::Unchecked );
0084 
0085     int index = 0;
0086     if ( m_config.membershipType() == MagnatuneConfig::STREAM ) index = 0;
0087     else if ( m_config.membershipType() == MagnatuneConfig::DOWNLOAD ) index = 1;
0088     
0089     m_configDialog->typeComboBox->setCurrentIndex( index );
0090     m_configDialog->usernameEdit->setText( m_config.username() );
0091     m_configDialog->passwordEdit->setText( m_config.password() );
0092     m_configDialog->emailEdit->setText( m_config.email() );
0093 
0094     m_configDialog->streamTypeComboBox->setCurrentIndex( m_config.streamType() );
0095 
0096     KCModule::load();
0097 }
0098 
0099 void MagnatuneSettingsModule::defaults()
0100 {
0101 }
0102 
0103 void MagnatuneSettingsModule::settingsChanged()
0104 {
0105     Q_EMIT changed( true );
0106 }
0107 
0108 #include <MagnatuneSettingsModule.moc>