summaryrefslogtreecommitdiffstats
path: root/libkcddb/kcmcddb/kcmcddb.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libkcddb/kcmcddb/kcmcddb.cpp')
-rw-r--r--libkcddb/kcmcddb/kcmcddb.cpp132
1 files changed, 132 insertions, 0 deletions
diff --git a/libkcddb/kcmcddb/kcmcddb.cpp b/libkcddb/kcmcddb/kcmcddb.cpp
new file mode 100644
index 00000000..d5ca04a7
--- /dev/null
+++ b/libkcddb/kcmcddb/kcmcddb.cpp
@@ -0,0 +1,132 @@
+/*
+ Copyright (C) 2002 Rik Hemsley (rikkus) <rik@kde.org>
+ Copyright (C) 2002 Benjamin Meyer <ben-devel@meyerhome.net>
+ Copyright (C) 2003 Richard Lärkäng <nouseforaname@home.se>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+#include <qlayout.h>
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qspinbox.h>
+#include <qlineedit.h>
+#include <qradiobutton.h>
+#include <qlistbox.h>
+#include <qlabel.h>
+#include <qbuttongroup.h>
+
+#include <kconfig.h>
+#include <klocale.h>
+#include <kglobal.h>
+#include <kgenericfactory.h>
+#include <kmessagebox.h>
+#include <kconfigdialogmanager.h>
+
+#include "cddbconfigwidget.h"
+
+#include "kcmcddb.h"
+#include "libkcddb/lookup.h"
+#include "libkcddb/cache.h"
+#include "libkcddb/submit.h"
+
+typedef KGenericFactory<CDDBModule, QWidget> KCDDBFactory;
+K_EXPORT_COMPONENT_FACTORY ( kcm_cddb, KCDDBFactory( "kcmcddb" ) )
+
+CDDBModule::CDDBModule(QWidget *parent, const char *name, const QStringList &)
+ : KCModule(parent, name)
+{
+ KGlobal::locale()->insertCatalogue("libkcddb");
+ setButtons(Default | Apply);
+
+ widget_ = new CDDBConfigWidget(this);
+
+ KCDDB::Config* cfg = new KCDDB::Config();
+ cfg->readConfig();
+
+ addConfig(cfg, widget_);
+
+ QVBoxLayout * layout = new QVBoxLayout(this, 0);
+
+ layout->addWidget(widget_);
+ layout->addStretch();
+
+ setQuickHelp(i18n("CDDB is used to get information like artist, title and song-names in CD's"));
+
+ load();
+}
+
+ void
+CDDBModule::defaults()
+{
+ KCModule::defaults();
+
+ updateWidgetsFromConfig(KCDDB::Config());
+}
+
+ void
+CDDBModule::checkSettings() const
+{
+ KCDDB::Config config;
+
+ config.readConfig();
+
+ if (config.smtpHostname().isEmpty() || config.emailAddress().isEmpty()
+ || !config.emailAddress().contains("@") ||
+ (!config.replyTo().isEmpty() && !config.replyTo().contains("@")))
+
+ {
+ if (config.submitTransport() == KCDDB::Submit::SMTP)
+ {
+ KMessageBox::sorry(widget_, i18n("freedb has been set to use HTTP for submissions "
+ "because the email details you have entered are "
+ "incomplete. Please review your email settings "
+ "and try again."), i18n("Incorrect Email Settings"));
+ config.setSubmitTransport(KCDDB::Submit::HTTP);
+
+ config.writeConfig();
+ }
+ }
+}
+
+ void
+CDDBModule::updateWidgetsFromConfig(const KCDDB::Config & config)
+{
+ bool smtpUserIsEmpty = config.smtpUsername().isEmpty();
+ widget_->needsAuthenticationBox->setChecked(!smtpUserIsEmpty);
+ widget_->kcfg_smtpUsername->setEnabled(!smtpUserIsEmpty);
+}
+
+ void
+CDDBModule::save()
+{
+ KCModule::save();
+
+ checkSettings();
+}
+
+ void
+CDDBModule::load()
+{
+ KCModule::load();
+
+ KCDDB::Config config;
+ config.readConfig();
+ updateWidgetsFromConfig(config);
+}
+
+// vim:tabstop=2:shiftwidth=2:expandtab:cinoptions=(s,U1,m1
+
+#include "kcmcddb.moc"