diff options
Diffstat (limited to 'tderadio3/src/tderadioapp.cpp')
-rw-r--r-- | tderadio3/src/tderadioapp.cpp | 370 |
1 files changed, 0 insertions, 370 deletions
diff --git a/tderadio3/src/tderadioapp.cpp b/tderadio3/src/tderadioapp.cpp deleted file mode 100644 index dfe28e7..0000000 --- a/tderadio3/src/tderadioapp.cpp +++ /dev/null @@ -1,370 +0,0 @@ -/************************************************************************** - tderadioapp.cpp - description - ------------------- - begin : Sa Feb 9 CET 2002 - copyright : (C) 2002 by Klas Kalass / Martin Witte / Frank Schwanz - email : [email protected] - ***************************************************************************/ - -/*************************************************************************** - * * - * 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. * - * * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - - -#include <tdeaboutdata.h> -#include <tdelocale.h> -#include <klibloader.h> -#include <tdeconfig.h> -#include <tdemessagebox.h> -#include <kstandarddirs.h> - -// #include <kprogress.h> - -#include "include/tderadioapp.h" -#include "include/aboutwidget.h" -#include "include/errorlog-interfaces.h" - -#include "include/debug-profiler.h" - -///////////////////////////////////////////////////////////////////////////// -//// TDERadioAbout - -AboutPageInfo TDERadioAbout::createAboutPage () -{ - const char *description = I18N_NOOP( - "TDERadio - The Radio Application for TDE" - "<P>" - "With TDERadio you can listen to radio broadcasts with the help of your " - "V4L/V4L2 compatible radio card." - "<P>" - "The TDERadio Project contains a station preset data database. To complete " - "this database you are encouraged to contribute your station preset file " - "to the project. Just send it to one of the authors. " - "<P>" - "If you like to contribute your ideas, your own plugins or translations, " - "don't hesitate to contact one of the authors." - "<P>" - ); - - TDEAboutData aboutData("tderadio", "TDERadio", - VERSION, - description, - TDEAboutData::License_GPL, - "(c) 2002-2006 Martin Witte, Klas Kalass", - 0, - "http://sourceforge.net/projects/tderadio", - 0); - aboutData.addAuthor("Martin Witte", I18N_NOOP("Preset Database, Remote Control Support, Alarms, Rewrite for TDERadio 0.3.0, Misc"), "[email protected]"); - aboutData.addAuthor("Marcus Camen", I18N_NOOP("Buildsystem, Standards Conformance, Cleanups"), "[email protected]"); - aboutData.addAuthor("Klas Kalass", I18N_NOOP("Miscellaneous"), "[email protected]"); - aboutData.addAuthor("Frank Schwanz", I18N_NOOP("idea, first basic application"), "[email protected]"); - - aboutData.addCredit(I18N_NOOP("Many People around the World ... "), - I18N_NOOP("... which contributed station preset files \n" - "and tested early and unstable snapshots of TDERadio \n" - "with much patience")); - - return AboutPageInfo( - new TDERadioAboutWidget(aboutData, TDERadioAboutWidget::AbtAppStandard), - "TDERadio", - "TDERadio", - "tderadio" - ); -} - - -///////////////////////////////////////////////////////////////////////////// -//// PluginLibraryInfo - -PluginLibraryInfo::PluginLibraryInfo (const TQString &lib_name) - : library (NULL), - init_func(NULL), - info_func(NULL), - libload_func(NULL), - libunload_func(NULL) -{ - library = KLibLoader::self()->library(lib_name.ascii()); - if (library) { - info_func = (t_tderadio_plugin_info_func) library->symbol("TDERadioPlugin_GetAvailablePlugins"); - init_func = (t_tderadio_plugin_init_func) library->symbol("TDERadioPlugin_CreatePlugin"); - libload_func = (t_tderadio_plugin_libload_func) library->symbol("TDERadioPlugin_LoadLibrary"); - libunload_func = (t_tderadio_plugin_libunload_func)library->symbol("TDERadioPlugin_UnloadLibrary"); - if (info_func && init_func && libload_func && libunload_func) { - libload_func(); - info_func(plugins); - } else { - KMessageBox::error(NULL, - i18n("Library %1: Plugin Entry Point is missing\n") - .arg(lib_name), - i18n("Plugin Library Load Error")); - library->unload(); - info_func = NULL; - init_func = NULL; - library = NULL; - } - } else { - KMessageBox::error(NULL, - i18n("Library %1: \n%2") - .arg(lib_name) - .arg(KLibLoader::self()->lastErrorMessage()), - i18n("Plugin Library Load Error")); - } -} - - -///////////////////////////////////////////////////////////////////////////// -//// TDERadioApp - -TDERadioApp::TDERadioApp() - : TDEApplication(), - m_quitting(false) -{ - m_Instances.setAutoDelete(true); - connect(this, TQT_SIGNAL(aboutToQuit()), this, TQT_SLOT(slotAboutToQuit())); -} - - -TDERadioApp::~TDERadioApp() -{ - IErrorLogClient::staticLogDebug("TDERadioApp::~TDERadioApp()"); -} - -void TDERadioApp::saveState() -{ - IErrorLogClient::staticLogDebug(i18n("saveState")); - saveState(TDEGlobal::config()); -} - -void TDERadioApp::saveState (TDEConfig *c) -{ - c->setGroup("Global"); - c->writeEntry("instances", m_Instances.count()); - - int i = 0; - TQDictIterator<PluginManager> it(m_Instances); - for (; it.current(); ++it, ++i) { - c->setGroup("Global"); - c->writeEntry("instance_name_" + TQString::number(i), it.currentKey()); - it.current()->saveState(c); - } - - c->setGroup("Plugin Libraries"); - c->writeEntry("count", m_PluginLibraries.count()); - int idx = 0; - TQMapConstIterator<TQString, PluginLibraryInfo> end = m_PluginLibraries.end(); - for (TQMapConstIterator<TQString, PluginLibraryInfo> it = m_PluginLibraries.begin(); it != end; ++it, ++idx) { - c->writeEntry("library_" + TQString::number(idx), it.key()); - } - - c->sync(); -} - - -void TDERadioApp::restoreState (TDEConfig *c) -{ - BlockProfiler profiler("TDERadioApp::restoreState - loadLibraries"); - - c->setGroup("Plugin Libraries"); - int n_libs = c->readNumEntry("count", 0); - -// KProgressDialog *progress = new KProgressDialog(NULL, NULL, i18n("Loading Plugin Libraries")); -// progress->setMinimumWidth(400); -// progress->setAllowCancel(false); -// progress->TQWidget::setCaption(i18n("TDERadio - Loading Plugin Libraries")); -// progress->show(); - -/* progress->progressBar()->setTotalSteps(n_libs);*/ - for (int idx = 0; idx < n_libs; ++idx) { - TQString lib = c->readEntry("library_" + TQString::number(idx), TQString()); - if (lib.length()) { - LoadLibrary(lib); -// progress->progressBar()->setProgress(idx+1); - } - } - - if (n_libs < 6) { // this seems to be a meaningful minimum value for a working tderadio setup - TQStringList libs - = TDEGlobal::dirs()->findAllResources("lib", "tderadio/plugins/*.so"); - TQValueListIterator<TQString> end = libs.end(); - int idx = 0; -// progress->progressBar()->setTotalSteps(libs.count()); - for (TQValueListIterator<TQString> it = libs.begin(); it != end; ++it, ++idx) { - LoadLibrary(*it); -// progress->progressBar()->setProgress(idx+1); - } - } - -// delete progress; - - profiler.stop(); - - c->setGroup("Global"); - - BlockProfiler rest_profiler("TDERadioApp::restoreState - restore"); - - int n = c->readNumEntry("instances", 1); - if (n < 1 || n > 10) - n = 1; - - for (int i = 0; i < n; ++i) { - c->setGroup("Global"); - TQString name = c->readEntry("instance_name_" + TQString::number(i), - n > 1 ? (i18n("Instance") + " " + TQString::number(i+1)) : TQString("")); - createNewInstance(name)->restoreState(c); - } -} - - -PluginManager *TDERadioApp::createNewInstance(const TQString &_name) -{ - BlockProfiler profiler("TDERadioApp::createNewInstance"); - - TQString instance_name = _name; - TQString title_ext = ""; - TQString id = TQString::number(m_Instances.count()+1); - if (instance_name.length() == 0) { - instance_name = "Instance " + id; - } - if (_name.length() && m_Instances.count() > 0) { - title_ext = " " + instance_name; - } - PluginManager *pm = new PluginManager ( instance_name, - this, - i18n("TDERadio Configuration") + title_ext, - i18n("About TDERadio Components") + title_ext - ); - - m_Instances.insert(instance_name, pm); - - /* Until we don't have library plugins we must instantiate them hard-wired */ - TDERadioAbout *about = new TDERadioAbout ( "tderadio-about-" + instance_name); - pm->insertPlugin(about); - - return pm; -} - - -KLibrary *TDERadioApp::LoadLibrary (const TQString &library) -{ - BlockProfiler profiler("TDERadioApp::LoadLibrary"); - BlockProfiler libprofiler("TDERadioApp::LoadLibrary - " + library); - - PluginLibraryInfo libinfo(library); - if (libinfo.valid()) { - m_PluginLibraries.insert(library, libinfo); - TQMapConstIterator<TQString,TQString> end = libinfo.plugins.end(); - for (TQMapConstIterator<TQString,TQString> it = libinfo.plugins.begin(); it != end; ++it) { - m_PluginInfos.insert(it.key(), PluginClassInfo (it.key(), *it, libinfo.init_func)); - } - } else { - kdDebug() << TQDateTime::currentDateTime().toString(Qt::ISODate) - << " " - << i18n("Error: Loading Library %1 failed: %2") - .arg(library).arg(KLibLoader::self()->lastErrorMessage()) - << endl; - } - - for (TQDictIterator<PluginManager> it_managers(m_Instances); it_managers.current(); ++it_managers) { - it_managers.current()->noticeLibrariesChanged(); - } - - return libinfo.valid() ? libinfo.library : NULL; -} - - -void TDERadioApp::UnloadLibrary (const TQString &library) -{ - if (!m_PluginLibraries.contains(library)) - return; - - PluginLibraryInfo info = m_PluginLibraries[library]; - - TQMapConstIterator<TQString, TQString> end_classes = info.plugins.end(); - for (TQMapConstIterator<TQString, TQString> it_classes = info.plugins.begin(); it_classes != end_classes; ++it_classes) { - for (TQDictIterator<PluginManager> it_managers(m_Instances); it_managers.current(); ++it_managers) { - it_managers.current()->unloadPlugins(it_classes.key()); - } - m_PluginInfos.remove(it_classes.key()); - } - m_PluginLibraries.remove(library); - - info.libunload_func(); - info.library->unload(); - - for (TQDictIterator<PluginManager> it_managers(m_Instances); it_managers.current(); ++it_managers) { - it_managers.current()->noticeLibrariesChanged(); - } -} - - -PluginBase *TDERadioApp::CreatePlugin (PluginManager *manager, const TQString &class_name, const TQString &object_name) -{ - BlockProfiler all_profiler ("TDERadioApp::CreatePlugin"); - BlockProfiler class_profiler("TDERadioApp::CreatePlugin - " + class_name); - - BlockProfiler create_profiler("TDERadioApp::CreatePlugin - create"); - - PluginBase *retval = NULL; - if (m_PluginInfos.contains(class_name)) { - retval = m_PluginInfos[class_name].CreateInstance(object_name); - if (!retval) { - kdDebug() << TQDateTime::currentDateTime().toString(Qt::ISODate) - << " " - << i18n("Error: Creation of instance \"%1\" of class %2 falied.").arg(object_name).arg(class_name) - << endl; - } - } else { - kdDebug() << TQDateTime::currentDateTime().toString(Qt::ISODate) - << " " - << i18n("Error: Cannot create instance \"%1\" of unknown class %2.").arg(object_name).arg(class_name) - << endl; - } - - create_profiler.stop(); - - if (retval) { - - BlockProfiler insert_profiler("TDERadioApp::CreatePlugin - insert"); - manager->insertPlugin(retval); - insert_profiler.stop(); - - //BlockProfiler restore_profiler("TDERadioApp::CreatePlugin - restore"); - //retval->restoreState(TDEGlobal::config()); - } - - return retval; -} - -void TDERadioApp::startPlugins() -{ - TQDictIterator<PluginManager> it(m_Instances); - for (; it.current(); ++it) { - it.current()->startPlugins(); - } -} - -void TDERadioApp::slotAboutToQuit() -{ - IErrorLogClient::staticLogDebug("slotAboutToQuit"); - if (!m_quitting) { - IErrorLogClient::staticLogDebug("slotAboutToQuit, m_quitting = false"); - m_quitting = true; - saveState(); - TQDictIterator<PluginManager> it(m_Instances); - for (; it.current(); ++it) { - it.current()->aboutToQuit(); - } - m_quitting = false; - } -} - -#include "tderadioapp.moc" |