diff options
Diffstat (limited to 'tderadio3/plugins/streaming/streaming-configuration.cpp')
-rw-r--r-- | tderadio3/plugins/streaming/streaming-configuration.cpp | 567 |
1 files changed, 0 insertions, 567 deletions
diff --git a/tderadio3/plugins/streaming/streaming-configuration.cpp b/tderadio3/plugins/streaming/streaming-configuration.cpp deleted file mode 100644 index ab57bea..0000000 --- a/tderadio3/plugins/streaming/streaming-configuration.cpp +++ /dev/null @@ -1,567 +0,0 @@ -/*************************************************************************** - streaming-configuration.cpp - description - ------------------- - begin : Thu Sep 30 2004 - copyright : (C) 2004 by Martin Witte - 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. * - * * - ***************************************************************************/ - -#include <tqcheckbox.h> - -#include <kurlrequester.h> -#include <knuminput.h> -#include <tdelistview.h> -#include <kcombobox.h> -#include <knuminput.h> - -#include <tdelocale.h> - -#include "streaming-configuration.h" -#include "streaming.h" - -StreamingConfiguration::StreamingConfiguration (TQWidget *parent, StreamingDevice *streamer) - : StreamingConfigurationUI(parent), - m_ignore_updates(false), - m_dirty(true), - m_StreamingDevice(streamer) -{ - connect(m_pbNewPlaybackURL, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotNewPlaybackChannel())); - connect(m_pbDeletePlaybackURL, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotDeletePlaybackChannel())); - connect(m_pbUpPlaybackURL, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotUpPlaybackChannel())); - connect(m_pbDownPlaybackURL, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotDownPlaybackChannel())); - connect(m_ListPlaybackURLs, TQT_SIGNAL(selectionChanged()), this, TQT_SLOT(slotPlaybackSelectionChanged())); - connect(m_ListPlaybackURLs, TQT_SIGNAL(itemRenamed(TQListViewItem *)), this, TQT_SLOT(slotSetDirty())); - - connect(m_pbNewCaptureURL, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotNewCaptureChannel())); - connect(m_pbDeleteCaptureURL, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotDeleteCaptureChannel())); - connect(m_pbUpCaptureURL, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotUpCaptureChannel())); - connect(m_pbDownCaptureURL, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotDownCaptureChannel())); - connect(m_ListCaptureURLs, TQT_SIGNAL(selectionChanged()), this, TQT_SLOT(slotCaptureSelectionChanged())); - connect(m_ListCaptureURLs, TQT_SIGNAL(itemRenamed(TQListViewItem *)), this, TQT_SLOT(slotSetDirty())); - - connect(m_cbBits, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotUpdateSoundFormat())); - connect(m_cbChannels, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotUpdateSoundFormat())); - connect(m_cbEndianess, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotUpdateSoundFormat())); - connect(m_cbFormat, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotUpdateSoundFormat())); - connect(m_cbRate, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotUpdateSoundFormat())); - connect(m_cbSign, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotUpdateSoundFormat())); - connect(m_sbBufferSize, TQT_SIGNAL(valueChanged(int)), this, TQT_SLOT(slotUpdateSoundFormat())); - - m_ListPlaybackURLs->setAllColumnsShowFocus(true); - m_ListPlaybackURLs->setSorting(-1); - m_ListCaptureURLs->setAllColumnsShowFocus(true); - m_ListCaptureURLs->setSorting(-1); - - slotCancel(); -} - - -StreamingConfiguration::~StreamingConfiguration () -{ -} - - -void StreamingConfiguration::slotOK() -{ - if (!m_dirty) - return; - - m_StreamingDevice->resetPlaybackStreams(false); - m_StreamingDevice->resetCaptureStreams(false); - - TQListViewItem *item = m_ListPlaybackURLs->firstChild(); - for (int i = 0; item; ++i, item = item->nextSibling()) { - m_StreamingDevice->addPlaybackStream(item->text(1), m_PlaybackSoundFormats[i], m_PlaybackBufferSizes[i], !item->nextSibling()); - } - - item = m_ListCaptureURLs->firstChild(); - for (int i = 0; item; ++i, item = item->nextSibling()) { - m_StreamingDevice->addCaptureStream(item->text(1), m_CaptureSoundFormats[i], m_CaptureBufferSizes[i], !item->nextSibling()); - } - - m_dirty = false; -} - - -void StreamingConfiguration::slotCancel() -{ - if (!m_dirty) - return; - - const TQStringList &playbackChannels = m_StreamingDevice->getPlaybackChannels(); - const TQStringList &captureChannels = m_StreamingDevice->getCaptureChannels(); - - m_ListPlaybackURLs->clear(); - m_PlaybackBufferSizes.clear(); - m_PlaybackSoundFormats.clear(); - - for (unsigned int i = 0; i < playbackChannels.size(); ++i) { - SoundFormat sf; - size_t buffer_size; - TQString url; - m_StreamingDevice->getPlaybackStreamOptions(playbackChannels[i], url, sf, buffer_size); - m_PlaybackSoundFormats.append(sf); - m_PlaybackBufferSizes.append(buffer_size); - - TQListViewItem *item = new TQListViewItem(m_ListPlaybackURLs, m_ListPlaybackURLs->lastChild()); - item->setText(0, TQString::number(m_ListPlaybackURLs->childCount())); - item->setText(1, url); - item->setRenameEnabled(1, true); - } - - m_ListCaptureURLs->clear(); - m_CaptureBufferSizes.clear(); - m_CaptureSoundFormats.clear(); - - for (unsigned int i = 0; i < captureChannels.size(); ++i) { - SoundFormat sf; - size_t buffer_size; - TQString url; - m_StreamingDevice->getCaptureStreamOptions(captureChannels[i], url, sf, buffer_size); - m_CaptureSoundFormats.append(sf); - m_CaptureBufferSizes.append(buffer_size); - - TQListViewItem *item = new TQListViewItem(m_ListCaptureURLs, m_ListCaptureURLs->lastChild()); - item->setText(0, TQString::number(m_ListCaptureURLs->childCount())); - item->setText(1, url); - item->setRenameEnabled(1, true); - } - slotPlaybackSelectionChanged(); - slotCaptureSelectionChanged(); - - m_dirty = false; -} - -void StreamingConfiguration::slotUpdateConfig() -{ - slotSetDirty(); - slotCancel(); -} - -void StreamingConfiguration::slotNewPlaybackChannel() -{ - slotSetDirty(); - TQListViewItem *item = new TQListViewItem(m_ListPlaybackURLs, m_ListPlaybackURLs->lastChild()); - item->setText(0, TQString::number(m_ListPlaybackURLs->childCount())); - item->setText(1, i18n("new channel")); - item->setRenameEnabled(1,true); - item->startRename(1); - - m_PlaybackSoundFormats.append(SoundFormat()); - m_PlaybackBufferSizes.append(64*1024); - int n = m_PlaybackSoundFormats.size(); - setStreamOptions(m_PlaybackSoundFormats[n-1], m_PlaybackBufferSizes[n-1]); -} - - -void StreamingConfiguration::slotDeletePlaybackChannel() -{ - slotSetDirty(); - TQListViewItem *item = m_ListPlaybackURLs->selectedItem(); - if (item) { - int idx = 0; - TQListViewItem *i = m_ListPlaybackURLs->firstChild(), - *prev = NULL, - *next = item->nextSibling(); - for (; i && i != item; i = i->nextSibling()) { - prev = i; - ++idx; - } - if(next) { - m_ListPlaybackURLs->setSelected(next, true); - } else if (prev){ - m_ListPlaybackURLs->setSelected(prev, true); - } - int x = item->text(0).toUInt(); - for (i = next; i; i = i->nextSibling(), ++x) { - i->setText(0, TQString::number(x)); - } - m_ListPlaybackURLs->takeItem(item); - delete item; - - int n = m_PlaybackSoundFormats.size(); - m_PlaybackSoundFormats.remove(m_PlaybackSoundFormats.at(idx)); - m_PlaybackBufferSizes .remove(m_PlaybackBufferSizes.at(idx)); - idx = idx < n - 1 ? idx : n - 1; - setStreamOptions( m_PlaybackSoundFormats[idx], m_PlaybackBufferSizes[idx]); - slotPlaybackSelectionChanged(); - } -} - - -void StreamingConfiguration::slotUpPlaybackChannel() -{ - slotSetDirty(); - TQListViewItem *prev = NULL; - TQListViewItem *i = m_ListPlaybackURLs->firstChild(); - TQListViewItem *item = m_ListPlaybackURLs->selectedItem(); - int idx = 0; - for (; i && i != item; i = i->nextSibling(), ++idx) { - prev = i; - } - if (prev && item) { - TQString s = prev->text(1); - prev->setText(1, item->text(1)); - item->setText(1, s); - SoundFormat sf = m_PlaybackSoundFormats[idx]; - m_PlaybackSoundFormats[idx] = m_PlaybackSoundFormats[idx-1]; - m_PlaybackSoundFormats[idx-1] = sf; - size_t size = m_PlaybackBufferSizes[idx]; - m_PlaybackBufferSizes[idx] = m_PlaybackBufferSizes[idx-1]; - m_PlaybackBufferSizes[idx-1] = size; - m_ListPlaybackURLs->setSelected(prev, true); - } - m_ListPlaybackURLs->ensureItemVisible(prev); -} - - -void StreamingConfiguration::slotDownPlaybackChannel() -{ - slotSetDirty(); - TQListViewItem *item = m_ListPlaybackURLs->selectedItem(); - TQListViewItem *next = item ? item->nextSibling() : NULL; - TQListViewItem *i = m_ListPlaybackURLs->firstChild(); - int idx = 0; - for (; i && i != item; i = i->nextSibling()) { - ++idx; - } - if (next && item) { - TQString s = next->text(1); - next->setText(1, item->text(1)); - item->setText(1, s); - SoundFormat sf = m_PlaybackSoundFormats[idx]; - m_PlaybackSoundFormats[idx] = m_PlaybackSoundFormats[idx+1]; - m_PlaybackSoundFormats[idx+1] = sf; - size_t size = m_PlaybackBufferSizes[idx]; - m_PlaybackBufferSizes[idx] = m_PlaybackBufferSizes[idx+1]; - m_PlaybackBufferSizes[idx+1] = size; - m_ListPlaybackURLs->setSelected(next, true); - } - m_ListPlaybackURLs->ensureItemVisible(next); -} - - - -void StreamingConfiguration::slotNewCaptureChannel() -{ - slotSetDirty(); - TQListViewItem *item = new TQListViewItem(m_ListCaptureURLs, m_ListCaptureURLs->lastChild()); - item->setText(0, TQString::number(m_ListCaptureURLs->childCount())); - item->setText(1, i18n("new channel")); - item->setRenameEnabled(1,true); - item->startRename(1); - - m_CaptureSoundFormats.append(SoundFormat()); - m_CaptureBufferSizes.append(64*1024); - int n = m_CaptureSoundFormats.size(); - setStreamOptions(m_CaptureSoundFormats[n-1], m_CaptureBufferSizes[n-1]); -} - - -void StreamingConfiguration::slotDeleteCaptureChannel() -{ - slotSetDirty(); - TQListViewItem *item = m_ListCaptureURLs->selectedItem(); - if (item) { - int idx = 0; - TQListViewItem *i = m_ListCaptureURLs->firstChild(), - *prev = NULL, - *next = item->nextSibling(); - for (; i && i != item; i = i->nextSibling()) { - prev = i; - ++idx; - } - if (next) { - m_ListCaptureURLs->setSelected(next, true); - } else if (prev){ - m_ListCaptureURLs->setSelected(prev, true); - } - int x = item->text(0).toUInt(); - for (i = next; i; i = i->nextSibling(), ++x) { - i->setText(0, TQString::number(x)); - } - m_ListCaptureURLs->takeItem(item); - delete item; - - int n = m_CaptureSoundFormats.size(); - m_CaptureSoundFormats.remove(m_CaptureSoundFormats.at(idx)); - m_CaptureBufferSizes .remove(m_CaptureBufferSizes.at(idx)); - idx = idx < n - 1 ? idx : n - 1; - setStreamOptions( m_CaptureSoundFormats[idx], m_CaptureBufferSizes[idx]); - slotCaptureSelectionChanged(); - } -} - - -void StreamingConfiguration::slotUpCaptureChannel() -{ - slotSetDirty(); - TQListViewItem *prev = NULL; - TQListViewItem *i = m_ListCaptureURLs->firstChild(); - TQListViewItem *item = m_ListCaptureURLs->selectedItem(); - int idx = 0; - for (; i && i != item; i = i->nextSibling(), ++idx) { - prev = i; - } - if (prev && item) { - TQString s = prev->text(1); - prev->setText(1, item->text(1)); - item->setText(1, s); - SoundFormat sf = m_CaptureSoundFormats[idx]; - m_CaptureSoundFormats[idx] = m_CaptureSoundFormats[idx-1]; - m_CaptureSoundFormats[idx-1] = sf; - size_t size = m_CaptureBufferSizes[idx]; - m_CaptureBufferSizes[idx] = m_CaptureBufferSizes[idx-1]; - m_CaptureBufferSizes[idx-1] = size; - m_ListCaptureURLs->setSelected(prev, true); - } - m_ListCaptureURLs->ensureItemVisible(prev); -} - - -void StreamingConfiguration::slotDownCaptureChannel() -{ - slotSetDirty(); - TQListViewItem *item = m_ListCaptureURLs->selectedItem(); - TQListViewItem *next = item ? item->nextSibling() : NULL; - TQListViewItem *i = m_ListCaptureURLs->firstChild(); - int idx = 0; - for (; i && i != item; i = i->nextSibling()) { - ++idx; - } - if (next && item) { - TQString s = next->text(1); - next->setText(1, item->text(1)); - item->setText(1, s); - SoundFormat sf = m_CaptureSoundFormats[idx]; - m_CaptureSoundFormats[idx] = m_CaptureSoundFormats[idx+1]; - m_CaptureSoundFormats[idx+1] = sf; - size_t size = m_CaptureBufferSizes[idx]; - m_CaptureBufferSizes[idx] = m_CaptureBufferSizes[idx+1]; - m_CaptureBufferSizes[idx+1] = size; - m_ListCaptureURLs->setSelected(next, true); - } - m_ListCaptureURLs->ensureItemVisible(next); -} - - - - - -void StreamingConfiguration::slotPlaybackSelectionChanged() -{ - TQListViewItem *item = m_ListPlaybackURLs->selectedItem(); - bool up_possible = false; - bool down_possible = false; - if (item) { - int idx = 0; - TQListViewItem *i = m_ListPlaybackURLs->firstChild(); - for (; i && i != item; i = i->nextSibling()) { - ++idx; - } - up_possible = idx > 0; - down_possible = idx < m_ListPlaybackURLs->childCount() - 1; - setStreamOptions(m_PlaybackSoundFormats[idx], m_PlaybackBufferSizes[idx]); - - item = m_ListCaptureURLs->selectedItem(); - if (item) - m_ListCaptureURLs->setSelected(item, false); - } - TQListViewItem *playback_item = m_ListPlaybackURLs->selectedItem(); - TQListViewItem *capture_item = m_ListCaptureURLs->selectedItem(); - bool e = (playback_item || capture_item); - m_cbFormat ->setEnabled(e); - m_cbRate ->setEnabled(e); - m_cbBits ->setEnabled(e); - m_cbSign ->setEnabled(e); - m_cbChannels ->setEnabled(e); - m_cbEndianess ->setEnabled(e); - m_sbBufferSize->setEnabled(e); - m_pbUpPlaybackURL ->setEnabled(up_possible); - m_pbDownPlaybackURL->setEnabled(down_possible); -} - - -void StreamingConfiguration::slotCaptureSelectionChanged() -{ - TQListViewItem *item = m_ListCaptureURLs->selectedItem(); - bool up_possible = false; - bool down_possible = false; - if (item) { - int idx = 0; - TQListViewItem *i = m_ListCaptureURLs->firstChild(); - for (; i && i != item; i = i->nextSibling()) { - ++idx; - } - up_possible = idx > 0; - down_possible = idx < m_ListCaptureURLs->childCount() - 1; - setStreamOptions(m_CaptureSoundFormats[idx], m_CaptureBufferSizes[idx]); - - item = m_ListPlaybackURLs->selectedItem(); - if (item) - m_ListPlaybackURLs->setSelected(item, false); - } - TQListViewItem *playback_item = m_ListPlaybackURLs->selectedItem(); - TQListViewItem *capture_item = m_ListCaptureURLs->selectedItem(); - bool e = (playback_item || capture_item); - m_cbFormat ->setEnabled(e); - m_cbRate ->setEnabled(e); - m_cbBits ->setEnabled(e); - m_cbSign ->setEnabled(e); - m_cbChannels ->setEnabled(e); - m_cbEndianess ->setEnabled(e); - m_sbBufferSize->setEnabled(e); - m_pbUpCaptureURL ->setEnabled(up_possible); - m_pbDownCaptureURL->setEnabled(down_possible); -} - -void StreamingConfiguration::slotSetDirty() -{ - m_dirty = true; -} - -void StreamingConfiguration::slotUpdateSoundFormat() -{ - if (m_ignore_updates) - return; - - slotSetDirty(); - TQListViewItem *playback_item = m_ListPlaybackURLs->selectedItem(); - TQListViewItem *capture_item = m_ListCaptureURLs->selectedItem(); - if (playback_item) { - int idx = 0; - TQListViewItem *i = m_ListPlaybackURLs->firstChild(); - for (; i && i != playback_item; i = i->nextSibling()) { - ++idx; - } - getStreamOptions(m_PlaybackSoundFormats[idx], m_PlaybackBufferSizes[idx]); - } - else if (capture_item) { - int idx = 0; - TQListViewItem *i = m_ListCaptureURLs->firstChild(); - for (; i && i != capture_item; i = i->nextSibling()) { - ++idx; - } - getStreamOptions(m_CaptureSoundFormats[idx], m_CaptureBufferSizes[idx]); - } -} - - -void StreamingConfiguration::setStreamOptions(const SoundFormat &sf, int BufferSize) -{ - m_ignore_updates = true; - - int idx_Format = FORMAT_RAW_IDX; - int idx_Rate = RATE_44100_IDX; - int idx_Bits = BITS_16_IDX; - int idx_Sign = SIGN_SIGNED_IDX; - int idx_Channels = CHANNELS_STEREO_IDX; - int idx_Endianess = ENDIAN_LITTLE_IDX; - - if (sf.m_Encoding == "raw") { - idx_Format = FORMAT_RAW_IDX; - } - else { - // ... - } - - switch(sf.m_SampleRate) { - case 48000 : idx_Rate = RATE_48000_IDX; break; - case 44100 : idx_Rate = RATE_44100_IDX; break; - case 22050 : idx_Rate = RATE_22050_IDX; break; - case 11025 : idx_Rate = RATE_11025_IDX; break; - } - - switch(sf.m_SampleBits) { - case 8 : idx_Bits = BITS_8_IDX; break; - case 16 : idx_Bits = BITS_16_IDX; break; - } - - switch(sf.m_IsSigned) { - case true : idx_Sign = SIGN_SIGNED_IDX; break; - case false : idx_Sign = SIGN_UNSIGNED_IDX; break; - } - - switch(sf.m_Channels) { - case 2: idx_Channels = CHANNELS_STEREO_IDX; break; - case 1: idx_Channels = CHANNELS_MONO_IDX; break; - } - - switch(sf.m_Endianess) { - case LITTLE_ENDIAN: idx_Endianess = ENDIAN_LITTLE_IDX; break; - case BIG_ENDIAN: idx_Endianess = ENDIAN_BIG_IDX; break; - } - - m_cbFormat ->setCurrentItem(idx_Format); - m_cbRate ->setCurrentItem(idx_Rate); - m_cbBits ->setCurrentItem(idx_Bits); - m_cbSign ->setCurrentItem(idx_Sign); - m_cbChannels ->setCurrentItem(idx_Channels); - m_cbEndianess ->setCurrentItem(idx_Endianess); - m_sbBufferSize->setValue(BufferSize / 1024); - - m_ignore_updates = false; -} - - -void StreamingConfiguration::getStreamOptions(SoundFormat &sf, int &BufferSize) const -{ - int idx_Format = m_cbFormat ->currentItem(); - int idx_Rate = m_cbRate ->currentItem(); - int idx_Bits = m_cbBits ->currentItem(); - int idx_Sign = m_cbSign ->currentItem(); - int idx_Channels = m_cbChannels ->currentItem(); - int idx_Endianess = m_cbEndianess ->currentItem(); - - BufferSize = m_sbBufferSize->value() * 1024; - - if (idx_Format == FORMAT_RAW_IDX) { - sf.m_Encoding = "raw"; - } - else { - // ... - } - - switch(idx_Rate) { - case RATE_48000_IDX : sf.m_SampleRate = 48000; break; - case RATE_44100_IDX : sf.m_SampleRate = 44100; break; - case RATE_22050_IDX : sf.m_SampleRate = 22050; break; - case RATE_11025_IDX : sf.m_SampleRate = 11025; break; - default : sf.m_SampleRate = 44100; break; - } - - switch(idx_Bits) { - case BITS_8_IDX : sf.m_SampleBits = 8; break; - case BITS_16_IDX : sf.m_SampleBits = 16; break; - default : sf.m_SampleBits = 16; break; - } - - switch(idx_Sign) { - case SIGN_SIGNED_IDX : sf.m_IsSigned = true; break; - case SIGN_UNSIGNED_IDX : sf.m_IsSigned = false; break; - default : sf.m_IsSigned = true; break; - } - - switch(idx_Channels) { - case CHANNELS_STEREO_IDX : sf.m_Channels = 2; break; - case CHANNELS_MONO_IDX : sf.m_Channels = 1; break; - default : sf.m_Channels = 2; break; - } - - switch(idx_Endianess) { - case ENDIAN_LITTLE_IDX : sf.m_Endianess = LITTLE_ENDIAN; break; - case ENDIAN_BIG_IDX : sf.m_Endianess = BIG_ENDIAN; break; - default : sf.m_Endianess = BYTE_ORDER; break; - } -} - -#include "streaming-configuration.moc" |