-rw-r--r-- | noncore/applets/volumeapplet2/volumeapplet.cpp | 58 | ||||
-rw-r--r-- | noncore/applets/volumeapplet2/volumeapplet.h | 15 |
2 files changed, 60 insertions, 13 deletions
diff --git a/noncore/applets/volumeapplet2/volumeapplet.cpp b/noncore/applets/volumeapplet2/volumeapplet.cpp index 2f61f48..2122007 100644 --- a/noncore/applets/volumeapplet2/volumeapplet.cpp +++ b/noncore/applets/volumeapplet2/volumeapplet.cpp @@ -38,6 +38,7 @@ _;:, .> :=|. This program is free software; you can #include <opie2/oresource.h> #include <qpe/applnk.h> +#include <qpe/qpeapplication.h> using namespace Opie::Core; using namespace Opie::MM; @@ -88,7 +89,8 @@ void VolumeAppletControl::build() OSoundSystem* sound = OSoundSystem::instance(); OSoundSystem::CardIterator it = sound->iterator(); - OMixerInterface* mixer = new OMixerInterface( this, "/dev/mixer" ); +// OMixerInterface* + mixer = new OMixerInterface( this, "/dev/mixer" ); QStringList channels = mixer->allChannels(); @@ -97,8 +99,11 @@ void VolumeAppletControl::build() for ( QStringList::Iterator it = channels.begin(); it != channels.end(); ++it ) { - odebug << "OSSDEMO: Mixer has channel " << *it << "" << oendl; - odebug << "OSSDEMO: +--- volume " << ( mixer->volume( *it ) & 0xff ) + if((*it) == mixer->volume( "Vol")) { + m_vol_percent=mixer->volume( *it ) >> 8; + } + owarn << "OSSDEMO: Mixer has channel " << *it << "" << oendl; + owarn << "OSSDEMO: +--- volume " << ( mixer->volume( *it ) & 0xff ) << " (left) | " << ( mixer->volume( *it ) >> 8 ) << " (right)" << oendl; l->addWidget( new Channel( mixer, this, *it ), 0, x++, AlignCenter ); @@ -111,6 +116,16 @@ VolumeAppletControl::~VolumeAppletControl() { } +int VolumeAppletControl::volPercent ( ) const +{ + return m_vol_percent; +} + +bool VolumeAppletControl::volMuted ( ) const +{ + return m_vol_muted; +} + void VolumeAppletControl::showEvent( QShowEvent* e ) { @@ -126,18 +141,19 @@ void VolumeAppletControl::hideEvent( QHideEvent* e ) } -QSize VolumeAppletControl::sizeHint() const -{ - return QSize( 200, 200 ); //QFrame::sizeHint(); + QSize VolumeAppletControl::sizeHint() const + { + int wd = QPEApplication::desktop()->width(); + return QSize( wd, 200 ); //QFrame::sizeHint(); } VolumeApplet::VolumeApplet( QWidget *parent, const char *name ) :OTaskbarApplet( parent, name ) { - setFixedHeight( AppLnk::smallIconSize() ); + setFixedHeight( AppLnk::smallIconSize() +4); setFixedWidth( AppLnk::smallIconSize() ); - _pixmap = Opie::Core::OResource::loadPixmap( "volume", Opie::Core::OResource::SmallIcon ); + _pixmap = new QPixmap (Opie::Core::OResource::loadPixmap( "volume", Opie::Core::OResource::SmallIcon )); _control = new VolumeAppletControl( this, "control" ); } @@ -155,8 +171,30 @@ int VolumeApplet::position() void VolumeApplet::paintEvent( QPaintEvent* ) { - QPainter p(this); - p.drawPixmap(0, 2, _pixmap ); + QPainter p ( this ); + + p. drawPixmap ( (width()- _pixmap->width())/2, QMAX( (height()-4-_pixmap->height() )/2, 1), *_pixmap ); + p. setPen ( darkGray ); + p. drawRect ( 1, height() - 4, width() - 2, 4 ); + + OMixerInterface* mixer = new OMixerInterface( this, "/dev/mixer" ); + + int volPercent = mixer->volume( "Vol" ) >> 8; + + int pixelsWide = volPercent * ( width() - 4 ) / 100; + p. fillRect ( 2, height() - 3, pixelsWide, 2, red ); + p. fillRect ( pixelsWide + 2, height() - 3, width() - 4 - pixelsWide, 2, lightGray ); + +// if ( _control-> volMuted ( )) { +// p. setPen ( red ); +// p. drawLine ( 1, 2, width() - 2, height() - 5 ); +// p. drawLine ( 1, 3, width() - 2, height() - 4 ); +// p. drawLine ( width() - 2, 2, 1, height() - 5 ); +// p. drawLine ( width() - 2, 3, 1, height() - 4 ); +// } + +// QPainter p(this); + // p.drawPixmap(0, 2, _pixmap ); } diff --git a/noncore/applets/volumeapplet2/volumeapplet.h b/noncore/applets/volumeapplet2/volumeapplet.h index c1f1a3a..953c305 100644 --- a/noncore/applets/volumeapplet2/volumeapplet.h +++ b/noncore/applets/volumeapplet2/volumeapplet.h @@ -32,15 +32,17 @@ #define VOLUMEAPPLET_H #include <opie2/otaskbarapplet.h> +#include <opie2/osoundsystem.h> #include <qframe.h> #include <qstring.h> #include <qvbox.h> #include <qpixmap.h> +//using namespace Opie::MM; namespace Opie { namespace Ui { class OLedBox; } - namespace MM { class OMixerInterface; } +// namespace MM { class OMixerInterface; } } class QLabel; class QSlider; @@ -69,6 +71,13 @@ class VolumeAppletControl : public QFrame public: VolumeAppletControl( Opie::Ui::OTaskbarApplet* parent, const char* name = 0 ); ~VolumeAppletControl(); + bool volMuted() const; + int volPercent() const; + + int m_vol_percent; + bool m_vol_muted; + + Opie::MM::OMixerInterface* mixer; virtual QSize sizeHint() const; @@ -78,8 +87,8 @@ class VolumeAppletControl : public QFrame void build(); private: + QGridLayout* l; - }; @@ -96,7 +105,7 @@ class VolumeApplet : public Opie::Ui::OTaskbarApplet private: VolumeAppletControl* _control; - QPixmap _pixmap; + QPixmap* _pixmap; }; #endif |