|
|
|
/****************************************************************************
|
|
|
|
|
|
|
|
KHotKeys
|
|
|
|
|
|
|
|
Copyright (C) 2005 Olivier Goffart < ogoffart @ kde.org >
|
|
|
|
|
|
|
|
Distributed under the terms of the GNU General Public License version 2.
|
|
|
|
|
|
|
|
****************************************************************************/
|
|
|
|
|
|
|
|
#include <tqwidget.h>
|
|
|
|
#include <tqlabel.h>
|
|
|
|
#include <tqpushbutton.h>
|
|
|
|
#include <klineedit.h>
|
|
|
|
#include <kstandarddirs.h>
|
|
|
|
|
|
|
|
#include <tdelocale.h>
|
|
|
|
#include <tdemessagebox.h>
|
|
|
|
|
|
|
|
#include "voicerecordpage.h"
|
|
|
|
#include "voicerecorder.h"
|
|
|
|
#include "voicesignature.h"
|
|
|
|
#include "voices.h"
|
|
|
|
|
|
|
|
namespace KHotKeys
|
|
|
|
{
|
|
|
|
|
|
|
|
VoiceRecordPage::VoiceRecordPage( const TQString &voiceid_P, TQWidget *parent, const char *name)
|
|
|
|
: TQVBox(parent, name) , _original_voiceId(voiceid_P)
|
|
|
|
{
|
|
|
|
_message = i18n("Enter a code for the sound (e.g. the word you are saying) and record the same word twice.");
|
|
|
|
|
|
|
|
_label = new TQLabel(_message, this, "label");
|
|
|
|
_label->setAlignment(TQLabel::AlignLeft | TQLabel::WordBreak |
|
|
|
|
TQLabel::AlignVCenter);
|
|
|
|
|
|
|
|
_lineEdit = new KLineEdit( this );
|
|
|
|
_lineEdit->setText(voiceid_P);
|
|
|
|
|
|
|
|
|
|
|
|
Sound s;
|
|
|
|
if(voiceid_P!=TQString::null)
|
|
|
|
{
|
|
|
|
TQString fileName = locateLocal( "data", "khotkeys/" + voiceid_P + "1.wav" );
|
|
|
|
s.load(fileName);
|
|
|
|
}
|
|
|
|
_recorder1 = new VoiceRecorder(s, voiceid_P, this, "recorder");
|
|
|
|
if(voiceid_P!=TQString::null)
|
|
|
|
{
|
|
|
|
TQString fileName = locateLocal( "data", "khotkeys/" + voiceid_P + "2.wav" );
|
|
|
|
s.load(fileName);
|
|
|
|
}
|
|
|
|
_recorder2 = new VoiceRecorder(s, voiceid_P, this, "recorder");
|
|
|
|
|
|
|
|
//_recorder->setMinimumHeight(150);
|
|
|
|
//setStretchFactor(_recorder, 1);
|
|
|
|
|
|
|
|
TQWidget *spacer = new TQWidget(this, "spacer");
|
|
|
|
setStretchFactor(spacer, 1);
|
|
|
|
|
|
|
|
|
|
|
|
connect(_recorder1, TQT_SIGNAL(recorded(bool)) , this, TQT_SLOT(slotChanged()));
|
|
|
|
connect(_recorder2, TQT_SIGNAL(recorded(bool)) , this, TQT_SLOT(slotChanged()));
|
|
|
|
connect(_lineEdit , TQT_SIGNAL( textChanged (const TQString&)) , this , TQT_SLOT(slotChanged()));
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
VoiceRecordPage::~VoiceRecordPage()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void VoiceRecordPage::slotChanged()
|
|
|
|
{
|
|
|
|
bool voiceCodeOK=!_lineEdit->text().isEmpty();
|
|
|
|
if( voiceCodeOK && _lineEdit->text() != _original_voiceId)
|
|
|
|
{
|
|
|
|
voiceCodeOK=!voice_handler->doesVoiceCodeExists(_lineEdit->text());
|
|
|
|
if(!voiceCodeOK)
|
|
|
|
{
|
|
|
|
_label->setText(i18n("<qt>%1<br><font color='red'>The sound code already exists</font></qt>").arg(_message));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if( voiceCodeOK )
|
|
|
|
{
|
|
|
|
voiceCodeOK=_recorder1->state()!=VoiceRecorder::sIncorrect && _recorder2->state()!=VoiceRecorder::sIncorrect;
|
|
|
|
if(!voiceCodeOK)
|
|
|
|
{
|
|
|
|
_label->setText(i18n("<qt>%1<br><font color='red'>One of the sound references is not correct</font></qt>").arg(_message));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if( voiceCodeOK )
|
|
|
|
_label->setText(_message);
|
|
|
|
|
|
|
|
emit voiceRecorded( voiceCodeOK &&
|
|
|
|
( ( (_recorder1->state()==VoiceRecorder::sModified || _recorder2->state()==VoiceRecorder::sModified || _lineEdit->text() != _original_voiceId)
|
|
|
|
&& !_original_voiceId.isEmpty())
|
|
|
|
|| (_recorder1->state()==VoiceRecorder::sModified && _recorder2->state()==VoiceRecorder::sModified ) ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
TQString VoiceRecordPage::getVoiceId() const
|
|
|
|
{
|
|
|
|
return _lineEdit->text();
|
|
|
|
}
|
|
|
|
|
|
|
|
VoiceSignature VoiceRecordPage::getVoiceSignature(int ech) const
|
|
|
|
{
|
|
|
|
VoiceRecorder *recorder= (ech==1) ? _recorder1 : _recorder2 ;
|
|
|
|
TQString fileName = locateLocal( "data", "khotkeys/" + getVoiceId() + TQString::number(ech) + ".wav" );
|
|
|
|
Sound s=recorder->sound();
|
|
|
|
s.save(fileName);
|
|
|
|
return VoiceSignature(s);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool VoiceRecordPage::isModifiedSignature(int ech) const
|
|
|
|
{
|
|
|
|
VoiceRecorder *recorder= (ech==1) ? _recorder1 : _recorder2 ;
|
|
|
|
return recorder->state()==VoiceRecorder::sModified;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} // namespace KHotKeys
|
|
|
|
|
|
|
|
#include "voicerecordpage.moc"
|