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.
177 lines
5.3 KiB
177 lines
5.3 KiB
/* |
|
kmfawidgets.cpp - KMFilterAction parameter widgets |
|
Copyright: (c) 2001 Marc Mutz <mutz@kde.org> |
|
|
|
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. |
|
|
|
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 "kmfawidgets.h" |
|
|
|
#include <kabc/addresseedialog.h> // for the button in KMFilterActionWithAddress |
|
#include <kiconloader.h> |
|
#include <klocale.h> |
|
#include <kurlrequester.h> |
|
#include <kfiledialog.h> |
|
#include <kstandarddirs.h> |
|
#include <Phonon/MediaObject> |
|
|
|
#include <QHBoxLayout> |
|
|
|
//============================================================================= |
|
// |
|
// class KMFilterActionWithAddressWidget |
|
// |
|
//============================================================================= |
|
|
|
KMFilterActionWithAddressWidget::KMFilterActionWithAddressWidget( QWidget* parent, const char* name ) |
|
: QWidget( parent ) |
|
{ |
|
setObjectName( name ); |
|
QHBoxLayout *hbl = new QHBoxLayout(this); |
|
hbl->setSpacing(4); |
|
hbl->setMargin( 0 ); |
|
mLineEdit = new KLineEdit(this); |
|
hbl->addWidget( mLineEdit, 1 /*stretch*/ ); |
|
mBtn = new QPushButton( QString() ,this ); |
|
mBtn->setIcon( KIcon( "help-contents" ) ); |
|
mBtn->setIconSize( QSize( KIconLoader::SizeSmall, KIconLoader::SizeSmall ) ); |
|
mBtn->setFixedHeight( mLineEdit->sizeHint().height() ); |
|
hbl->addWidget( mBtn ); |
|
|
|
connect( mBtn, SIGNAL(clicked()), |
|
this, SLOT(slotAddrBook()) ); |
|
} |
|
|
|
void KMFilterActionWithAddressWidget::slotAddrBook() |
|
{ |
|
KABC::Addressee::List lst = KABC::AddresseeDialog::getAddressees( this ); |
|
|
|
if ( lst.empty() ) |
|
return; |
|
|
|
QStringList addrList; |
|
|
|
for( KABC::Addressee::List::const_iterator it = lst.begin(); it != lst.end(); ++it ) |
|
addrList << (*it).fullEmail(); |
|
|
|
QString txt = mLineEdit->text().trimmed(); |
|
|
|
if ( !txt.isEmpty() ) { |
|
if ( !txt.endsWith( ',' ) ) |
|
txt += ", "; |
|
else |
|
txt += ' '; |
|
} |
|
|
|
mLineEdit->setText( txt + addrList.join(",") ); |
|
} |
|
|
|
KMSoundTestWidget::KMSoundTestWidget(QWidget *parent, const char *name) |
|
: QWidget( parent ) |
|
{ |
|
setObjectName( name ); |
|
QHBoxLayout *lay1 = new QHBoxLayout( this ); |
|
lay1->setMargin( 0 ); |
|
m_playButton = new QPushButton( this ); |
|
m_playButton->setObjectName( "m_playButton" ); |
|
m_playButton->setIcon( KIcon( "arrow-right" ) ); |
|
m_playButton->setIconSize( QSize( KIconLoader::SizeSmall, KIconLoader::SizeSmall ) ); |
|
connect( m_playButton, SIGNAL( clicked() ), SLOT( playSound() )); |
|
lay1->addWidget( m_playButton ); |
|
|
|
m_urlRequester = new KUrlRequester( this ); |
|
lay1->addWidget( m_urlRequester ); |
|
connect( m_urlRequester, SIGNAL( openFileDialog( KUrlRequester * )), |
|
SLOT( openSoundDialog( KUrlRequester * ))); |
|
connect( m_urlRequester->lineEdit(), SIGNAL( textChanged ( const QString & )), SLOT( slotUrlChanged(const QString & ))); |
|
slotUrlChanged(m_urlRequester->lineEdit()->text() ); |
|
} |
|
|
|
KMSoundTestWidget::~KMSoundTestWidget() |
|
{ |
|
} |
|
|
|
void KMSoundTestWidget::slotUrlChanged(const QString &_text ) |
|
{ |
|
m_playButton->setEnabled( !_text.isEmpty()); |
|
} |
|
|
|
void KMSoundTestWidget::openSoundDialog( KUrlRequester * ) |
|
{ |
|
static bool init = true; |
|
if ( !init ) |
|
return; |
|
|
|
init = false; |
|
|
|
KFileDialog *fileDialog = m_urlRequester->fileDialog(); |
|
fileDialog->setCaption( i18n("Select Sound File") ); |
|
QStringList filters; |
|
filters << "audio/x-wav" << "audio/mpeg" << "application/ogg" |
|
<< "audio/x-adpcm"; |
|
fileDialog->setMimeFilter( filters ); |
|
|
|
QStringList soundDirs = KGlobal::dirs()->resourceDirs( "sound" ); |
|
|
|
if ( !soundDirs.isEmpty() ) { |
|
KUrl soundURL; |
|
QDir dir; |
|
dir.setFilter( QDir::Files | QDir::Readable ); |
|
QStringList::ConstIterator it = soundDirs.begin(); |
|
while ( it != soundDirs.end() ) { |
|
dir = *it; |
|
if ( dir.isReadable() && dir.count() > 2 ) { |
|
soundURL.setPath( *it ); |
|
fileDialog->setUrl( soundURL ); |
|
break; |
|
} |
|
++it; |
|
} |
|
} |
|
|
|
} |
|
|
|
void KMSoundTestWidget::playSound() |
|
{ |
|
QString parameter= m_urlRequester->lineEdit()->text(); |
|
if ( parameter.isEmpty() ) |
|
return ; |
|
QString play = parameter; |
|
QString file = QString::fromLatin1("file:"); |
|
if (parameter.startsWith(file)) |
|
play = parameter.mid(file.length()); |
|
Phonon::MediaObject* player = Phonon::createPlayer( Phonon::NotificationCategory, play ); |
|
player->play(); |
|
connect( player, SIGNAL( finished() ), player, SLOT( deleteLater() ) ); |
|
} |
|
|
|
|
|
QString KMSoundTestWidget::url() const |
|
{ |
|
return m_urlRequester->lineEdit()->text(); |
|
} |
|
|
|
void KMSoundTestWidget::setUrl(const QString & url) |
|
{ |
|
m_urlRequester->lineEdit()->setText(url); |
|
} |
|
|
|
void KMSoundTestWidget::clear() |
|
{ |
|
m_urlRequester->lineEdit()->clear(); |
|
} |
|
|
|
//-------------------------------------------- |
|
#include "kmfawidgets.moc"
|
|
|