summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/volumeapplet/volume.cpp1
-rw-r--r--core/applets/volumeapplet/volumeappletimpl.cpp10
2 files changed, 7 insertions, 4 deletions
diff --git a/core/applets/volumeapplet/volume.cpp b/core/applets/volumeapplet/volume.cpp
index e8921f0..069f8ab 100644
--- a/core/applets/volumeapplet/volume.cpp
+++ b/core/applets/volumeapplet/volume.cpp
@@ -1,240 +1,241 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "volume.h"
#include <qpe/resource.h>
#include <qpe/qpeapplication.h>
#include <qpe/config.h>
#if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP)
#include <qpe/qcopenvelope_qws.h>
#endif
#include <qpainter.h>
#include <qcheckbox.h>
#include <qslider.h>
#include <qlayout.h>
#include <qframe.h>
#include <qpixmap.h>
#include <qlabel.h>
#include <qpushbutton.h>
#include <qtimer.h>
#define RATE_TIMER_INTERVAL 100
// Ten times per second is fine (RATE_TIMER_INTERVAL 100). A shorter time
// results in "hanging" buttons on the iPAQ due to quite high CPU consumption.
VolumeControl::VolumeControl( bool showMic, QWidget *parent, const char *name )
: QFrame( parent, name, WDestructiveClose | WStyle_StaysOnTop | WType_Popup )
{
+ QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE; //mute
setFrameStyle( QFrame::PopupPanel | QFrame::Raised );
createView(showMic);
}
void VolumeControl::createView(bool showMic)
{
Config cfg("qpe");
cfg.setGroup("Volume");
//showMic = TRUE;
QHBoxLayout *hboxLayout = new QHBoxLayout(this);
hboxLayout->setMargin( 3 );
hboxLayout->setSpacing( 0);
QVBoxLayout *vboxButtons = new QVBoxLayout(this);
upButton = new QPushButton( this );
upButton->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Expanding ) );
upButton->setPixmap( Resource::loadPixmap( "up" ) );
downButton = new QPushButton( this );
downButton->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Expanding ) );
downButton->setPixmap( Resource::loadPixmap( "down" ) );
vboxButtons->setSpacing( 2 );
upButton->setFixedHeight(26);
downButton->setFixedHeight(26);
vboxButtons->addWidget( upButton );
vboxButtons->addWidget( downButton );
QVBoxLayout *vbox = new QVBoxLayout( this );
QHBoxLayout *hbox = NULL;
slider = new QSlider( this );
slider->setRange( 0, 100 );
slider->setTickmarks( QSlider::Both );
slider->setTickInterval( 20 );
slider->setFocusPolicy( QWidget::NoFocus );
slider->setValue(cfg.readNumEntry("VolumePercent"));
QVBoxLayout *sbox = new QVBoxLayout(this);
sbox->setMargin( 3 );
sbox->setSpacing( 3 );
sbox->addWidget( new QLabel("Vol", this) , 0, Qt::AlignVCenter | Qt::AlignHCenter );
sbox->addWidget( slider, 0, Qt::AlignVCenter | Qt::AlignHCenter );
// if (showMic == TRUE) {
mic = new QSlider(this);
mic->setRange( 0, 100 );
mic->setTickmarks( QSlider::Both );
mic->setTickInterval( 20 );
mic->setFocusPolicy( QWidget::NoFocus );
mic->setValue(cfg.readNumEntry("Mic"));
QVBoxLayout *mbox = new QVBoxLayout(this);
mbox->setMargin( 3 );
mbox->setSpacing( 3 );
mbox->addWidget( new QLabel("Mic", this) , 0, Qt::AlignVCenter | Qt::AlignHCenter );
mbox->addWidget( mic, 0, Qt::AlignVCenter | Qt::AlignHCenter );
hbox = new QHBoxLayout( this );
hbox->setMargin( 3 );
hbox->setSpacing( 3 );
hbox->addLayout( sbox, 1);
hbox->addLayout( mbox, 1);
// }
muteBox = new QCheckBox( tr("Mute"), this );
muteBox->setFocusPolicy( QWidget::NoFocus );
QVBoxLayout *klbox = new QVBoxLayout(this);
QLabel *Label1;
Label1 = new QLabel( this, "Label1" );
Label1->setText( tr( "Enable Sounds for:" ));
alarmSound = new QCheckBox( tr("Alarm Sound"), this );
alarmSound->setFocusPolicy( QWidget::NoFocus );
keyclicks = new QCheckBox( tr("Key Clicks"), this );
keyclicks->setFocusPolicy( QWidget::NoFocus );
screentaps = new QCheckBox( tr("Screen taps"), this );
screentaps->setFocusPolicy( QWidget::NoFocus );
keyclicks->setChecked( cfg.readBoolEntry("KeySound",0));
screentaps->setChecked( cfg.readBoolEntry("TouchSound",0));
alarmSound->setChecked( cfg.readBoolEntry("AlarmSound",1));
klbox->setMargin( 3 );
klbox->setSpacing( 0 );
klbox->addWidget( Label1, 1);
klbox->addWidget( alarmSound, 1);
klbox->addWidget( keyclicks, 1);
klbox->addWidget( screentaps, 1);
vbox->setMargin( 3 );
vbox->setSpacing( 0 );
// if (showMic == TRUE)
vbox->addLayout( hbox, 1 );
// else
// vbox->addLayout( sbox, 1);
vbox->addWidget( muteBox, 0, Qt::AlignVCenter | Qt::AlignHCenter );
hboxLayout->addLayout( vboxButtons );
hboxLayout->addLayout( vbox);
hboxLayout->addLayout( klbox);
setFixedHeight( 120);
// setFixedWidth( sizeHint().width() );
setFocusPolicy(QWidget::NoFocus);
connect( upButton, SIGNAL( pressed() ), this, SLOT( ButtonChanged() ) );
connect( upButton, SIGNAL( released() ), this, SLOT( ButtonChanged() ) );
connect( downButton, SIGNAL( pressed() ), this, SLOT( ButtonChanged() ) );
connect( downButton, SIGNAL( released() ), this, SLOT( ButtonChanged() ) );
rateTimer = new QTimer(this);
connect( rateTimer, SIGNAL( timeout() ), this, SLOT( rateTimerDone() ) );
}
void VolumeControl::keyPressEvent( QKeyEvent *e)
{
switch(e->key())
{
case Key_Up:
slider->subtractStep();
break;
case Key_Down:
slider->addStep();
break;
case Key_Space:
muteBox->toggle();
break;
case Key_Escape:
close();
break;
}
}
void VolumeControl::ButtonChanged()
{
if ( upButton->isDown() || downButton->isDown() )
{
rateTimerDone(); // Call it one time manually, otherwise it wont get
// called at all when a button is pressed for a time
// shorter than RATE_TIMER_INTERVAL.
rateTimer->start( RATE_TIMER_INTERVAL, false );
}
else
rateTimer->stop();
}
void VolumeControl::rateTimerDone()
{
if ( upButton->isDown() )
slider->setValue( slider->value() - 2 );
else // downButton->isDown()
slider->setValue( slider->value() + 2 );
}
//===========================================================================
VolumeApplet::VolumeApplet( QWidget *parent, const char *name )
: QWidget( parent, name )
{
Config cfg("qpe");
cfg.setGroup("Volume");
setFixedHeight( 18 );
setFixedWidth( 14 );
volumePixmap = Resource::loadPixmap( "volume" );
volumePercent = cfg.readNumEntry("VolumePercent",50);
micPercent = cfg.readNumEntry("Mic", 50);
muted = FALSE; // ### read from pref
micMuted = FALSE; // ### read from pref
advancedTimer = new QTimer(this);
connect( qApp, SIGNAL( volumeChanged(bool) ), this, SLOT( volumeChanged(bool) ) );
connect( qApp, SIGNAL( micChanged(bool) ), this, SLOT ( micChanged(bool) ) );
connect( advancedTimer, SIGNAL( timeout() ),this, SLOT( advVolControl()) );
writeSystemVolume();
writeSystemMic();
}
VolumeApplet::~VolumeApplet()
{
}
void VolumeApplet::keyPressEvent ( QKeyEvent * e )
diff --git a/core/applets/volumeapplet/volumeappletimpl.cpp b/core/applets/volumeapplet/volumeappletimpl.cpp
index 676ab61..fb2b79f 100644
--- a/core/applets/volumeapplet/volumeappletimpl.cpp
+++ b/core/applets/volumeapplet/volumeappletimpl.cpp
@@ -1,64 +1,66 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "volume.h"
#include "volumeappletimpl.h"
+#include <qpe/qcopenvelope_qws.h>
VolumeAppletImpl::VolumeAppletImpl()
: volume(0), ref(0)
{
}
VolumeAppletImpl::~VolumeAppletImpl()
{
delete volume;
}
QWidget *VolumeAppletImpl::applet( QWidget *parent )
{
if ( !volume )
- volume = new VolumeApplet( parent );
+ volume = new VolumeApplet( parent );
+ QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE; //mute
return volume;
}
int VolumeAppletImpl::position() const
{
return 6;
}
QRESULT VolumeAppletImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface )
{
*iface = 0;
if ( uuid == IID_QUnknown )
- *iface = this;
+ *iface = this;
else if ( uuid == IID_TaskbarApplet )
- *iface = this;
+ *iface = this;
if ( *iface )
- (*iface)->addRef();
+ (*iface)->addRef();
return QS_OK;
}
Q_EXPORT_INTERFACE()
{
Q_CREATE_INSTANCE( VolumeAppletImpl )
}