diff options
Diffstat (limited to 'src/modules/options/OptionsWidget_sound.cpp')
| -rw-r--r-- | src/modules/options/OptionsWidget_sound.cpp | 356 |
1 files changed, 356 insertions, 0 deletions
diff --git a/src/modules/options/OptionsWidget_sound.cpp b/src/modules/options/OptionsWidget_sound.cpp new file mode 100644 index 000000000..c617a8ca4 --- /dev/null +++ b/src/modules/options/OptionsWidget_sound.cpp @@ -0,0 +1,356 @@ +//============================================================================= +// +// File : OptionsWidget_sound.cpp +// Creation date : Fri Sep 6 02:18:23 2002 GMT by Szymon Stefanek +// +// This file is part of the KVsound sound client distribution +// Copyright (C) 2002-2010 Szymon Stefanek (pragma at kvsound dot net) +// +// 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 opinion) 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// +//============================================================================= + +#include "OptionsWidget_sound.h" + +#include "kvi_settings.h" +#include "KviLocale.h" +#include "KviOptions.h" +#include "KviModuleManager.h" +#include "KviPointerList.h" +#include "KviCString.h" +#include "KviTalHBox.h" +#include "KviTalToolTip.h" +#include "KviApplication.h" + +#include <QLabel> +#include <QPushButton> + + +// FIXME: This module doesn't ???? properly when auto-detection is performed! + + + +OptionsWidget_sound::OptionsWidget_sound(QWidget * pParent) +: KviOptionsWidget(pParent) +{ +} + +OptionsWidget_sound::~OptionsWidget_sound() +{ +} + + +OptionsWidget_soundGeneral::OptionsWidget_soundGeneral(QWidget * parent) +: KviOptionsWidget(parent) +{ + m_bFirstShow = true; + + setObjectName("sound_system_options_widget"); + createLayout(); + + KviTalGroupBox * g = addGroupBox(0,0,0,0,Qt::Horizontal,__tr2qs_ctx("Sound System","options"),true); + + KviTalToolTip::add(g,__tr2qs_ctx("This allows you to select the sound system to be used with KVIrc.","options")); + + KviTalHBox * h = new KviTalHBox(g); + + m_pSoundSystemBox = new QComboBox(h); + + m_pSoundAutoDetectButton = new QPushButton(__tr2qs_ctx("Auto-detect","options"),h); + connect(m_pSoundAutoDetectButton,SIGNAL(clicked()),this,SLOT(soundAutoDetect())); + + m_pSoundTestButton = new QPushButton(__tr2qs_ctx("Test","options"),h); + connect(m_pSoundTestButton,SIGNAL(clicked()),this,SLOT(soundTest())); + + g = addGroupBox(0,1,0,1,Qt::Horizontal,__tr2qs_ctx("Media Player","options"),true); + + KviTalToolTip::add(g,__tr2qs_ctx("This allows you to select the preferred media player to be used with " \ + "the mediaplayer.* module commands and functions.","options")); + + h = new KviTalHBox(g); + + m_pMediaPlayerBox = new QComboBox(h); + + m_pMediaAutoDetectButton = new QPushButton(__tr2qs_ctx("Auto-detect","options"),h); + connect(m_pMediaAutoDetectButton,SIGNAL(clicked()),this,SLOT(mediaAutoDetect())); + + m_pMediaTestButton = new QPushButton(__tr2qs_ctx("Test","options"),h); + connect(m_pMediaTestButton,SIGNAL(clicked()),this,SLOT(mediaTest())); + + m_pMediaTestButton->setEnabled(false); + + g = addGroupBox(0,2,0,2,Qt::Horizontal,__tr2qs_ctx("ID3 tags' encoding","options"),true); + + KviTalToolTip::add(g,__tr2qs_ctx("This allows you to select encoding of mp3 tags.","options")); + + h = new KviTalHBox(g); + + m_pTagsEncodingCombo = new QComboBox(h); + m_pTagsEncodingCombo->addItem(__tr2qs_ctx("Use Language Encoding","options")); + + int i = 0; + int iMatch = 0; + + KviLocale::EncodingDescription * d = KviLocale::encodingDescription(i); + while(d->szName) + { + if(KviQString::equalCI(d->szName,KVI_OPTION_STRING(KviOption_stringMp3TagsEncoding)))iMatch = i + 1; + m_pTagsEncodingCombo->insertItem(m_pTagsEncodingCombo->count(),d->szName); + i++; + d = KviLocale::encodingDescription(i); + } + m_pTagsEncodingCombo->setCurrentIndex(iMatch); + +#if defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW) + g = addGroupBox(0,3,0,3,Qt::Horizontal,__tr2qs_ctx("Winamp messages ecoding","options"),true); + + KviTalToolTip::add(g,__tr2qs_ctx("This allows you to select encoding of winamp messages.","options")); + + h = new KviTalHBox(g); + + m_pWinampEncodingCombo = new QComboBox(h); + + m_pWinampEncodingCombo->addItem(__tr2qs_ctx("Use Language Encoding","options")); + i = 0; + iMatch = 0; + + d = KviLocale::encodingDescription(i); + while(d->szName) + { + if(KviQString::equalCI(d->szName,KVI_OPTION_STRING(KviOption_stringWinampTextEncoding)))iMatch = i + 1; + m_pWinampEncodingCombo->insertItem(m_pWinampEncodingCombo->count(),d->szName); + i++; + d = KviLocale::encodingDescription(i); + } + m_pWinampEncodingCombo->setCurrentIndex(iMatch); + + addRowSpacer(0,4,0,4); +#else + addRowSpacer(0,3,0,3); +#endif +} + + +OptionsWidget_soundGeneral::~OptionsWidget_soundGeneral() +{ +} + +void OptionsWidget_soundGeneral::showEvent(QShowEvent *) +{ + if(!m_bFirstShow) + return; + // We fill these boxes only before the first show since the soundFillBox() + // is likely to trigger sound system-detection which may take time... + + g_pApp->setOverrideCursor(Qt::WaitCursor); + + soundFillBox(); + mediaFillBox(); + + g_pApp->restoreOverrideCursor(); + + m_bFirstShow = false; +} + +void OptionsWidget_soundGeneral::soundTest() +{ + QString szSavedSoundSystem = KVI_OPTION_STRING(KviOption_stringSoundSystem); + KVI_OPTION_STRING(KviOption_stringSoundSystem) = m_pSoundSystemBox->currentText(); + + KviModule * m = g_pModuleManager->getModule("snd"); + + if(!m) + return; // doh + + QString szFileName; + + if(!g_pApp->findAudioFile(szFileName,QString::fromUtf8("jingle.wav"))) + { + qDebug("Can't find the jingle.wav file: was it shipped with your kvirc installation?"); + return; + } + + m->ctrl("play",&szFileName); + + KVI_OPTION_STRING(KviOption_stringSoundSystem) = szSavedSoundSystem; +} + +void OptionsWidget_soundGeneral::mediaTest() +{ +} + +void OptionsWidget_soundGeneral::soundAutoDetect() +{ + KviModule * m = g_pModuleManager->getModule("snd"); + if(!m) + return; + + g_pApp->setOverrideCursor(Qt::WaitCursor); + + m->ctrl("detectSoundSystem",0); + soundFillBox(); + + g_pApp->restoreOverrideCursor(); +} + +void OptionsWidget_soundGeneral::mediaAutoDetect() +{ + KviModule * m = g_pModuleManager->getModule("mediaplayer"); + if(!m) + return; + + g_pApp->setOverrideCursor(Qt::WaitCursor); + + m->ctrl("detectMediaPlayer",0); + mediaFillBox(); + + g_pApp->restoreOverrideCursor(); +} + +void OptionsWidget_soundGeneral::soundFillBox() +{ + QStringList l; + QStringList::Iterator it; + int cnt; + int i; + KviModule * m = g_pModuleManager->getModule("snd"); + + if(!m) + goto disable; + + if(!m->ctrl("getAvailableSoundSystems",&l)) + goto disable; + + m_pSoundSystemBox->clear(); + for ( it = l.begin(); it != l.end(); ++it ) + { + m_pSoundSystemBox->addItem(*it); + } + + cnt = m_pSoundSystemBox->count(); + + for(i=0;i<cnt;i++) + { + QString t = m_pSoundSystemBox->itemText(i); + if(KviQString::equalCI(t,KVI_OPTION_STRING(KviOption_stringSoundSystem))) + { + m_pSoundSystemBox->setCurrentIndex(i); + break; + } + } + + return; +disable: + m_pSoundSystemBox->clear(); + m_pSoundSystemBox->setEnabled(false); + m_pSoundTestButton->setEnabled(false); + m_pSoundAutoDetectButton->setEnabled(false); +} + +void OptionsWidget_soundGeneral::mediaFillBox() +{ + QStringList l; + QStringList::Iterator it; + int cnt; + int i; + KviModule * m = g_pModuleManager->getModule("mediaplayer"); + + if(!m)goto disable; + if(!m->ctrl("getAvailableMediaPlayers",&l))goto disable; + m_pMediaPlayerBox->clear(); + for ( it = l.begin(); it != l.end(); ++it ) + { + m_pMediaPlayerBox->addItem(*it); + } + cnt = m_pMediaPlayerBox->count(); + + for(i=0;i<cnt;i++) + { + QString t = m_pMediaPlayerBox->itemText(i); + if(KviQString::equalCI(t,KVI_OPTION_STRING(KviOption_stringPreferredMediaPlayer))) + { + m_pMediaPlayerBox->setCurrentIndex(i); + break; + } + } + + return; +disable: + m_pMediaPlayerBox->clear(); + m_pMediaPlayerBox->setEnabled(false); + m_pMediaTestButton->setEnabled(false); + m_pMediaAutoDetectButton->setEnabled(false); +} + +void OptionsWidget_soundGeneral::commit() +{ + // avoid to commit if we've never been shown (and initialized) + if(m_bFirstShow) + return; + + KviOptionsWidget::commit(); + KVI_OPTION_STRING(KviOption_stringSoundSystem) = m_pSoundSystemBox->currentText(); + KVI_OPTION_STRING(KviOption_stringPreferredMediaPlayer) = m_pMediaPlayerBox->currentText(); + + int idx = m_pTagsEncodingCombo->currentIndex(); + if(idx <= 0) + { + // guess from locale + KVI_OPTION_STRING(KviOption_stringMp3TagsEncoding) = ""; + } else { + KVI_OPTION_STRING(KviOption_stringMp3TagsEncoding) = m_pTagsEncodingCombo->itemText(idx); + } + + +#if defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW) + idx = m_pWinampEncodingCombo->currentIndex(); + if(idx <= 0) + { + // guess from locale + KVI_OPTION_STRING(KviOption_stringWinampTextEncoding) = ""; + } else { + KVI_OPTION_STRING(KviOption_stringWinampTextEncoding) = m_pWinampEncodingCombo->itemText(idx); + } +#endif +} + +OptionsWidget_sounds::OptionsWidget_sounds(QWidget * parent) +: KviOptionsWidget(parent) +{ + setObjectName("sound_options_widget"); + createLayout(); + addLabel(0,0,0,0,__tr2qs_ctx("New Query opened","options")); + addSoundSelector(1,0,1,0,"",KviOption_stringOnNewQueryOpenedSound); + + addLabel(0,1,0,1,__tr2qs_ctx("New message in inactive query","options")); + addSoundSelector(1,1,1,1,"",KviOption_stringOnQueryMessageSound); + + addLabel(0,2,0,2,__tr2qs_ctx("Highlighted message in inactive window","options")); + addSoundSelector(1,2,1,2,"",KviOption_stringOnHighlightedMessageSound); + + addLabel(0,3,0,3,__tr2qs_ctx("Me have been kicked","options")); + addSoundSelector(1,3,1,3,"",KviOption_stringOnMeKickedSound); + + addRowSpacer(0,4,1,4); + +} + +OptionsWidget_sounds::~OptionsWidget_sounds() +{ +} + +#ifndef COMPILE_USE_STANDALONE_MOC_SOURCES +#include "m_OptionsWidget_sound.moc" +#endif //!COMPILE_USE_STANDALONE_MOC_SOURCES |
