diff options
Diffstat (limited to 'kradio3/plugins/radio/radio-configuration.cpp')
-rw-r--r-- | kradio3/plugins/radio/radio-configuration.cpp | 592 |
1 files changed, 0 insertions, 592 deletions
diff --git a/kradio3/plugins/radio/radio-configuration.cpp b/kradio3/plugins/radio/radio-configuration.cpp deleted file mode 100644 index eda1083..0000000 --- a/kradio3/plugins/radio/radio-configuration.cpp +++ /dev/null @@ -1,592 +0,0 @@ -/*************************************************************************** - radio-configuration.cpp - description - ------------------- - begin : Son Aug 3 2003 - copyright : (C) 2003 by Martin Witte - email : witte@kawo1.rwth-aachen.de - ***************************************************************************/ - -/*************************************************************************** - * * - * 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. * - * * - ***************************************************************************/ - -#include "../../src/include/radiostation.h" -#include "../../src/include/stationlist.h" -#include "../../src/include/plugins.h" -#include "../../src/include/radiodevice_interfaces.h" -#include "../../src/include/standardscandialog.h" -#include "../../src/include/radiostation-listview.h" -#include "../../src/include/radiostation-config.h" -#include "../../src/include/errorlog-interfaces.h" - -#include "radio-configuration.h" - -#include <math.h> - -#include <tqlistbox.h> -#include <klistbox.h> -#include <tqdatetimeedit.h> -#include <tqlineedit.h> -#include <tqlabel.h> -#include <tqspinbox.h> -#include <tqpushbutton.h> -#include <tqpopupmenu.h> -#include <tqtoolbutton.h> -#include <tqwidgetstack.h> -#include <tqimage.h> - -#include <tdefiledialog.h> -#include <kstandarddirs.h> -#include <kurllabel.h> -#include <tqregexp.h> -#include <krun.h> -#include <kurlrequester.h> -#include <klocale.h> - -RadioConfiguration::RadioConfiguration (TQWidget *parent, const IErrorLogClient &logger) - : RadioConfigurationUI(parent), - ignoreChanges(false), - devicePopup(NULL), - m_logger(logger), - m_dirty(true) -{ - TQObject::connect(listStations, TQT_SIGNAL(sigCurrentStationChanged(int)), - this, TQT_SLOT(slotStationSelectionChanged(int))); - TQObject::connect(buttonSelectPixmapFile, TQT_SIGNAL(clicked()), - this, TQT_SLOT(slotSelectPixmap())); - TQObject::connect(buttonNewStation, TQT_SIGNAL(clicked()), - this, TQT_SLOT(slotNewStation())); - TQObject::connect(buttonDeleteStation, TQT_SIGNAL(clicked()), - this, TQT_SLOT(slotDeleteStation())); - TQObject::connect(editPixmapFile, TQT_SIGNAL(textChanged(const TQString &)), - this, TQT_SLOT(slotPixmapChanged(const TQString &))); - TQObject::connect(editStationName, TQT_SIGNAL(textChanged(const TQString &)), - this, TQT_SLOT(slotStationNameChanged(const TQString &))); - TQObject::connect(editStationShortName, TQT_SIGNAL(textChanged(const TQString &)), - this, TQT_SLOT(slotStationShortNameChanged(const TQString &))); - TQObject::connect(editVolumePreset, TQT_SIGNAL(valueChanged(int)), - this, TQT_SLOT(slotVolumePresetChanged(int))); - TQObject::connect(buttonStationUp, TQT_SIGNAL(clicked()), - this, TQT_SLOT(slotStationUp())); - TQObject::connect(buttonStationDown, TQT_SIGNAL(clicked()), - this, TQT_SLOT(slotStationDown())); - TQObject::connect(listStations, TQT_SIGNAL(sigStationActivated(int)), - this, TQT_SLOT(slotActivateStation( int ))); - TQObject::connect(buttonLoadPresets, TQT_SIGNAL(clicked()), - this, TQT_SLOT(slotLoadPresets())); - TQObject::connect(buttonStorePresets, TQT_SIGNAL(clicked()), - this, TQT_SLOT(slotStorePresets())); - TQObject::connect(buttonLastChangeNow, TQT_SIGNAL(clicked()), - this, TQT_SLOT(slotLastChangeNow())); - - connect(editMaintainer, TQT_SIGNAL(textChanged(const TQString &)), TQT_SLOT(slotSetDirty())); - connect(editLastChange, TQT_SIGNAL(valueChanged(const TQDateTime &)), TQT_SLOT(slotSetDirty())); - connect(editCountry, TQT_SIGNAL(textChanged(const TQString &)), TQT_SLOT(slotSetDirty())); - connect(editCity, TQT_SIGNAL(textChanged(const TQString &)), TQT_SLOT(slotSetDirty())); - connect(editMedia, TQT_SIGNAL(textChanged(const TQString &)), TQT_SLOT(slotSetDirty())); - connect(editComment, TQT_SIGNAL(textChanged(const TQString &)), TQT_SLOT(slotSetDirty())); - connect(editPresetFile, TQT_SIGNAL(textChanged(const TQString &)), TQT_SLOT(slotSetDirty())); - - mailLabel->setText("mailto:witte-presets@kawo1.rwth-aachen.de"); - mailLabel->setURL ("mailto:witte-presets@kawo1.rwth-aachen.de"); - TQObject::connect(mailLabel, TQT_SIGNAL(leftClickedURL(const TQString &)), - this, TQT_SLOT(slotSendPresetsByMail(const TQString &))); - - TQObject::connect(buttonSearchStations, TQT_SIGNAL(clicked()), - this, TQT_SLOT(slotSearchStations0())); - - devicePopup = new TQPopupMenu(buttonSearchStations); - buttonSearchStations->setPopup(devicePopup); - TQObject::connect(devicePopup, TQT_SIGNAL(activated(int)), - this, TQT_SLOT(slotSearchStations(int))); -} - - -RadioConfiguration::~RadioConfiguration () -{ -} - - -bool RadioConfiguration::connectI (Interface *i) -{ - bool a = IRadioClient::connectI(i); - bool b = IRadioDevicePoolClient::connectI(i); - - return a || b; -} - -bool RadioConfiguration::disconnectI (Interface *i) -{ - bool a = IRadioClient::disconnectI(i); - bool b = IRadioDevicePoolClient::disconnectI(i); - - return a || b; -} - -// IRadioDevicePoolClient - -bool RadioConfiguration::noticeDevicesChanged(const TQPtrList<IRadioDevice> &l) -{ - TQPtrListIterator<IRadioDevice> it(l); - devices.clear(); - devicePopup->clear(); - int id = 0; - for (; it.current(); ++it) { - IRadioDevice *d = it.current(); - if (dynamic_cast<ISeekRadio*>(d)) { - devicePopup->insertItem(d->getDescription(), id++); - devices.append(d); - } - } - return true; -} - - -bool RadioConfiguration::noticeDeviceDescriptionChanged(const TQString &) -{ - noticeDevicesChanged(queryDevices()); - return true; -} - - -// IRadioClient - -bool RadioConfiguration::noticeStationsChanged(const StationList &sl) -{ - ignoreChanges = true; - - m_stations = sl; - - listStations->setStations(sl); - - StationListMetaData &info = m_stations.metaData(); - - editMaintainer->setText(info.maintainer); - editLastChange->setDateTime(info.lastChange); - editCountry->setText(info.country); - editCity->setText(info.city); - editMedia->setText(info.media); - editComment->setText(info.comment); - - ignoreChanges = false; - - slotStationSelectionChanged(listStations->currentStationIndex()); - - return true; -} - - -bool RadioConfiguration::noticePresetFileChanged(const TQString &f) -{ - ignoreChanges = true; - editPresetFile->setURL(f); - ignoreChanges = false; - return true; -} - - -void RadioConfiguration::slotStationSelectionChanged(int idx) -{ - RadioStation *s = NULL; - - if (idx >= 0 && idx < m_stations.count()) { - s = &m_stations.at(idx); - } - - editStationName ->setDisabled(!s); - labelStationName ->setDisabled(!s); - editPixmapFile ->setDisabled(!s); - labelPixmapFile ->setDisabled(!s); - editStationShortName ->setDisabled(!s); - labelStationShortName ->setDisabled(!s); - editVolumePreset ->setDisabled(!s); - labelVolumePreset ->setDisabled(!s); - buttonSelectPixmapFile->setDisabled(!s); - buttonDeleteStation ->setDisabled(!s); - - buttonStationUp ->setDisabled(!s || idx == 0); - buttonStationDown ->setDisabled(!s || idx == m_stations.count()-1); - - if (ignoreChanges) return; - ignoreChanges = true; - - editStationName ->setText (s ? s->name() : TQString()); - editStationShortName ->setText (s ? s->shortName() : TQString()); - editPixmapFile ->setText (s ? s->iconName() : TQString()); - editVolumePreset ->setValue (s ? (int)rint(s->initialVolume()*100) : -1); - - TQPixmap pixmap(s ? s->iconName() : TQString()); - if (!pixmap.isNull()) { - pixmapStation->setPixmap(pixmap); - } else { - pixmapStation->setText(""); - } - - - stackStationEdit->setDisabled(!s); - if (s) { - RadioStationConfig *c = stationEditors.find(s->getClassName()); - if (!c) { - c = s->createEditor(); - if (c) { - c->reparent(this, TQPoint(0,0), true); - TQObject::connect(c, TQT_SIGNAL(changed(RadioStationConfig*)), - this, TQT_SLOT(slotStationEditorChanged(RadioStationConfig*))); - stationEditors.insert(s->getClassName(), c); - stackStationEdit->addWidget(c); - } - } - if (c) { - c->setStationData(*s); - stackStationEdit->raiseWidget(c); - } - } - - ignoreChanges = false; -} - - -void RadioConfiguration::slotNewStation() -{ - slotSetDirty(); - const RadioStation *st = &queryCurrentStation(); - int n = m_stations.count(); - m_stations.all().append(st); - if (m_stations.count() == n) { - st = st->copyNewID(); - m_stations.all().append(st); - } - if (m_stations.count() > n) { - listStations->appendStation(*st); - listStations->setCurrentStation (listStations->count()-1); - slotStationSelectionChanged(listStations->count()-1); - listStations->ensureItemVisible(listStations->selectedItem()); - } -} - - -void RadioConfiguration::slotDeleteStation() -{ - int idx = listStations->currentStationIndex(); - - if (idx >= 0 && idx < m_stations.count()) { - slotSetDirty(); - m_stations.all().remove(idx); - listStations->removeStation(idx); - } -} - - -void RadioConfiguration::slotStationEditorChanged(RadioStationConfig *c) -{ - if (!c) return; - if (ignoreChanges) return; - - - int idx = listStations->currentStationIndex(); - if (idx >= 0 && idx < m_stations.count()) { - slotSetDirty(); - RadioStation &st = m_stations.at(idx); - - ignoreChanges = true; - bool o = listStations->signalsBlocked(); - listStations->blockSignals(true); - - c->storeStationData(st); - listStations->setStation(idx, st); - - listStations->blockSignals(o); - ignoreChanges = false; - } -} - - -void RadioConfiguration::slotStationNameChanged( const TQString & s) -{ - if (ignoreChanges) return; - - int idx = listStations->currentStationIndex(); - if (idx >= 0 && idx < m_stations.count()) { - slotSetDirty(); - RadioStation &st = m_stations.at(idx); - st.setName(s); - ignoreChanges = true; - bool o = listStations->signalsBlocked(); - listStations->blockSignals(true); - listStations->setStation(idx, st); - listStations->blockSignals(o); - ignoreChanges = false; - } -} - - -void RadioConfiguration::slotStationShortNameChanged( const TQString & sn) -{ - if (ignoreChanges) return; - - int idx = listStations->currentStationIndex(); - if (idx >= 0 && idx < m_stations.count()) { - slotSetDirty(); - RadioStation &st = m_stations.at(idx); - st.setShortName(sn); - ignoreChanges = true; - bool o = listStations->signalsBlocked(); - listStations->blockSignals(true); - listStations->setStation(idx, st); - listStations->blockSignals(o); - ignoreChanges = false; - } -} - - -void RadioConfiguration::slotSelectPixmap() -{ - KURL url = KFileDialog::getImageOpenURL(TQString(), this, - i18n("Image Selection")); - if (!url.isEmpty()) { - if (url.isLocalFile()) { - editPixmapFile->setText(url.path()); - } else { - m_logger.logWarning(i18n("ignoring non-local image")); - } - } -} - - -void RadioConfiguration::slotPixmapChanged( const TQString &s ) -{ - if (ignoreChanges) return; - - int idx = listStations->currentStationIndex(); - if (idx >= 0 && idx < m_stations.count()) { - slotSetDirty(); - RadioStation &st = m_stations.at(idx); - st.setIconName(s); - ignoreChanges = true; - pixmapStation->setPixmap(TQPixmap(s)); - bool o = listStations->signalsBlocked(); - listStations->blockSignals(true); - listStations->setStation(idx, st); - listStations->blockSignals(o); - ignoreChanges = false; - } -} - - -void RadioConfiguration::slotVolumePresetChanged(int v) -{ - int idx = listStations->currentStationIndex(); - if (idx >= 0 && idx < m_stations.count()) { - slotSetDirty(); - RadioStation &s = m_stations.at(idx); - s.setInitialVolume(0.01 * (double)v); - } -} - - - -void RadioConfiguration::slotStationUp() -{ - int idx = listStations->currentStationIndex(); - if (idx > 0 && idx < m_stations.count()) { - slotSetDirty(); - RawStationList &sl = m_stations.all(); - - RadioStation *st = sl.take(idx-1); - sl.insert(idx, st); - delete st; - - ignoreChanges = true; -// bool o = listStations->signalsBlocked(); -// listStations->blockSignals(true); - listStations->setStation(idx-1, *sl.at(idx-1)); - listStations->setStation(idx, *sl.at(idx)); - listStations->setCurrentStation(idx-1); -// listStations->blockSignals(o); - ignoreChanges = false; - } -} - - -void RadioConfiguration::slotStationDown() -{ - int idx = listStations->currentStationIndex(); - if (idx >= 0 && idx < m_stations.count() - 1) { - slotSetDirty(); - RawStationList &sl = m_stations.all(); - - RadioStation *st = sl.take(idx); - sl.insert(idx+1, st); - delete st; - - ignoreChanges = true; -// bool o = listStations->signalsBlocked(); -// listStations->blockSignals(true); - listStations->setStation(idx, *sl.at(idx)); - listStations->setStation(idx+1, *sl.at(idx+1)); - listStations->setCurrentStation(idx+1); -// listStations->blockSignals(o); - ignoreChanges = false; - } -} - - -void RadioConfiguration::slotActivateStation(int idx) -{ - if (idx >= 0 && idx < m_stations.count()) { - sendActivateStation(m_stations.at(idx)); - sendPowerOn(); - } -} - -void RadioConfiguration::slotLoadPresets() -{ - KFileDialog fd(locate("data", "kradio/presets/"), - ("*.krp|" + i18n("TDERadio Preset Files")).ascii(), - this, - i18n("Preset File Selection").ascii(), - true); - fd.setMode(KFile::File | KFile::ExistingOnly); - fd.setCaption (i18n("Select Preset File")); - - if (fd.exec() == TQDialog::Accepted) { - slotSetDirty(); - StationList sl; - if (sl.readXML(fd.selectedURL(), m_logger)) { - noticeStationsChanged(sl); - } - } -} - - -void RadioConfiguration::slotStorePresets() -{ - KFileDialog fd("", - ("*.krp|" + i18n("TDERadio Preset Files")).ascii(), - this, - i18n("Preset File Selection").ascii(), - true); - fd.setMode(KFile::File); - fd.setCaption (i18n("Store Preset File")); - - if (fd.exec() == TQDialog::Accepted) { - editPresetFile->setURL(fd.selectedURL().url()); - m_stations.writeXML(fd.selectedURL(), m_logger); - } -} - - -void RadioConfiguration::slotLastChangeNow() -{ - slotSetDirty(); - editLastChange->setDateTime(TQDateTime::currentDateTime()); -} - - -static TQString &urlEscapes(TQString &s) -{ - s.replace(TQRegExp("%"), "%25"); - s.replace(TQRegExp("\t"), "%09"); - s.replace(TQRegExp("\n"), "%0A"); - s.replace(TQRegExp("\n"), "%0D"); - s.replace(TQRegExp(" "), "%20"); - s.replace(TQRegExp("\\!"), "%21"); - s.replace(TQRegExp("\""), "%22"); - s.replace(TQRegExp("#"), "%23"); - s.replace(TQRegExp("\\$"), "%24"); - s.replace(TQRegExp("\\&"), "%26"); - s.replace(TQRegExp("'"), "%27"); - s.replace(TQRegExp(","), "%2C"); - s.replace(TQRegExp(":"), "%3A"); - s.replace(TQRegExp(";"), "%3B"); - s.replace(TQRegExp("="), "%3D"); - s.replace(TQRegExp("\\?"), "%3F"); - return s; -} - -void RadioConfiguration::slotSendPresetsByMail( const TQString &url ) -{ - TQString presets = m_stations.writeXML(m_logger); - - urlEscapes(presets); - - // documentation says, krun object deletes itself, - // so we do not need to store the pointer - - TQString country = m_stations.metaData().country; - TQString city = m_stations.metaData().city; - TQString location = city + "/" + country; - urlEscapes(location); - - TQString cmd = url + "?subject=station preset file for " + location + "&body="; - - cmd += presets; - new KRun (cmd); -} - - -void RadioConfiguration::slotSearchStations(int idev) -{ - if (idev >= 0 && (unsigned)idev < devices.count()) { - IRadioDevice *dev = devices.at(idev); - - StandardScanDialog *x = new StandardScanDialog(NULL); - x->connectI(dev); // connect device - x->connectI(IRadioDevicePoolClient::iConnections.at(0)); // connect radio to get verbous station information - sendActiveDevice(dev); - x->show(); - x->start(); - if (x->exec() == TQDialog::Accepted) { - slotSetDirty(); - m_stations.merge(x->getStations()); - noticeStationsChanged(m_stations); - } - delete x; -// logDebug("scan finished"); - } -// logDebug("scan finished completely"); -} - - -void RadioConfiguration::slotOK() -{ - if (m_dirty) { - StationListMetaData &i = m_stations.metaData(); - - i.maintainer = editMaintainer->text(); - i.lastChange = editLastChange->dateTime(); - i.country = editCountry->text(); - i.city = editCity->text(); - i.media = editMedia->text(); - i.comment = editComment->text(); - - sendStations(m_stations); - sendPresetFile(editPresetFile->url()); - m_dirty = false; - } -} - -void RadioConfiguration::slotCancel() -{ - if (m_dirty) { - noticeStationsChanged(queryStations()); - noticePresetFileChanged(queryPresetFile()); - m_dirty = false; - } -} - - -void RadioConfiguration::slotSetDirty() -{ - if (!ignoreChanges) { - m_dirty = true; - } -} - - -#include "radio-configuration.moc" |