You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kvirc/src/modules/options/optw_sound.cpp

311 lines
8.4 KiB

//=============================================================================
//
// File : optw_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-2006 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 "optw_sound.h"
#include "kvi_settings.h"
#include "kvi_locale.h"
#include "kvi_options.h"
#include "kvi_modulemanager.h"
#include "kvi_pointerlist.h"
#include "kvi_string.h"
#include <tqlabel.h>
#include <tqpushbutton.h>
#include "kvi_tal_hbox.h"
#ifdef COMPILE_INFO_TIPS
#include "kvi_tal_tooltip.h"
#endif
// FIXME: This module doesn't Cancel properly when auto-detection is performed!
KviSoundOptionsWidget::KviSoundOptionsWidget(TQWidget * pParent)
: KviOptionsWidget(pParent)
{
}
KviSoundOptionsWidget::~KviSoundOptionsWidget()
{
}
KviSoundGeneralOptionsWidget::KviSoundGeneralOptionsWidget(TQWidget * parent)
: KviOptionsWidget(parent,"sound_system_options_widget")
{
#ifdef COMPILE_ON_WINDOWS
createLayout(4,1);
#else
createLayout(3,1);
#endif
KviTalGroupBox * g = addGroupBox(0,0,0,0,1,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 TQComboBox(false,h);
m_pSoundAutoDetectButton = new TQPushButton(__tr2qs_ctx("Auto-detect","options"),h);
connect(m_pSoundAutoDetectButton,TQT_SIGNAL(clicked()),this,TQT_SLOT(soundAutoDetect()));
m_pSoundTestButton = new TQPushButton(__tr2qs_ctx("Test","options"),h);
connect(m_pSoundTestButton,TQT_SIGNAL(clicked()),this,TQT_SLOT(soundTest()));
g = addGroupBox(0,1,0,1,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 TQComboBox(false,h);
m_pMediaAutoDetectButton = new TQPushButton(__tr2qs_ctx("Auto-detect","options"),h);
connect(m_pMediaAutoDetectButton,TQT_SIGNAL(clicked()),this,TQT_SLOT(mediaAutoDetect()));
m_pMediaTestButton = new TQPushButton(__tr2qs_ctx("Test","options"),h);
connect(m_pMediaTestButton,TQT_SIGNAL(clicked()),this,TQT_SLOT(mediaTest()));
addRowSpacer(0,2,0,2);
soundFillBox();
mediaFillBox();
// FIXME!
m_pSoundTestButton->setEnabled(false);
m_pMediaTestButton->setEnabled(false);
g = addGroupBox(0,2,0,2,1,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 TQComboBox(false,h);
m_pTagsEncodingCombo->insertItem(__tr2qs_ctx("Use Language Encoding","options"));
int i = 0;
int iMatch = 0;
KviLocale::EncodingDescription * d = KviLocale::encodingDescription(i);
while(d->szName)
{
if(KviTQString::equalCI(d->szName,KVI_OPTION_STRING(KviOption_stringMp3TagsEncoding)))iMatch = i + 1;
m_pTagsEncodingCombo->insertItem(d->szName);
i++;
d = KviLocale::encodingDescription(i);
}
m_pTagsEncodingCombo->setCurrentItem(iMatch);
#ifdef COMPILE_ON_WINDOWS
g = addGroupBox(0,3,0,3,1,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 TQComboBox(false,h);
m_pWinampEncodingCombo->insertItem(__tr2qs_ctx("Use Language Encoding","options"));
i = 0;
iMatch = 0;
d = KviLocale::encodingDescription(i);
while(d->szName)
{
if(KviTQString::equalCI(d->szName,KVI_OPTION_STRING(KviOption_stringWinampTextEncoding)))iMatch = i + 1;
m_pWinampEncodingCombo->insertItem(d->szName);
i++;
d = KviLocale::encodingDescription(i);
}
m_pWinampEncodingCombo->setCurrentItem(iMatch);
#endif
}
KviSoundGeneralOptionsWidget::~KviSoundGeneralOptionsWidget()
{
}
void KviSoundGeneralOptionsWidget::soundTest()
{
}
void KviSoundGeneralOptionsWidget::mediaTest()
{
}
void KviSoundGeneralOptionsWidget::soundAutoDetect()
{
KviModule * m = g_pModuleManager->getModule("snd");
if(!m)return;
m->ctrl("detectSoundSystem",0);
soundFillBox();
}
void KviSoundGeneralOptionsWidget::mediaAutoDetect()
{
KviModule * m = g_pModuleManager->getModule("mediaplayer");
if(!m)return;
m->ctrl("detectMediaPlayer",0);
mediaFillBox();
}
void KviSoundGeneralOptionsWidget::soundFillBox()
{
TQStringList l;
TQStringList::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->insertItem(*it);
}
cnt = m_pSoundSystemBox->count();
for(i=0;i<cnt;i++)
{
TQString t = m_pSoundSystemBox->text(i);
if(KviTQString::equalCI(t,KVI_OPTION_STRING(KviOption_stringSoundSystem)))
{
m_pSoundSystemBox->setCurrentItem(i);
break;
}
}
return;
disable:
m_pSoundSystemBox->clear();
m_pSoundSystemBox->setEnabled(false);
m_pSoundTestButton->setEnabled(false);
m_pSoundAutoDetectButton->setEnabled(false);
}
void KviSoundGeneralOptionsWidget::mediaFillBox()
{
TQStringList l;
TQStringList::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->insertItem(*it);
}
cnt = m_pMediaPlayerBox->count();
for(i=0;i<cnt;i++)
{
TQString t = m_pMediaPlayerBox->text(i);
if(KviTQString::equalCI(t,KVI_OPTION_STRING(KviOption_stringPreferredMediaPlayer)))
{
m_pMediaPlayerBox->setCurrentItem(i);
break;
}
}
return;
disable:
m_pMediaPlayerBox->clear();
m_pMediaPlayerBox->setEnabled(false);
m_pMediaTestButton->setEnabled(false);
m_pMediaAutoDetectButton->setEnabled(false);
}
void KviSoundGeneralOptionsWidget::commit()
{
KviOptionsWidget::commit();
KVI_OPTION_STRING(KviOption_stringSoundSystem) = m_pSoundSystemBox->currentText();
KVI_OPTION_STRING(KviOption_stringPreferredMediaPlayer) = m_pMediaPlayerBox->currentText();
int idx = m_pTagsEncodingCombo->currentItem();
if(idx <= 0)
{
// guess from locale
KVI_OPTION_STRING(KviOption_stringMp3TagsEncoding) = "";
} else {
KVI_OPTION_STRING(KviOption_stringMp3TagsEncoding) = m_pTagsEncodingCombo->text(idx);
}
#ifdef COMPILE_ON_WINDOWS
idx = m_pWinampEncodingCombo->currentItem();
if(idx <= 0)
{
// guess from locale
KVI_OPTION_STRING(KviOption_stringWinampTextEncoding) = "";
} else {
KVI_OPTION_STRING(KviOption_stringWinampTextEncoding) = m_pWinampEncodingCombo->text(idx);
}
#endif
}
KviSoundsOptionsWidget::KviSoundsOptionsWidget(TQWidget * parent)
: KviOptionsWidget(parent,"sound_options_widget")
{
createLayout(5,2);
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);
}
KviSoundsOptionsWidget::~KviSoundsOptionsWidget()
{
}
#include "m_optw_sound.moc"