summaryrefslogtreecommitdiff
path: root/noncore/applets/volumeapplet2/volumeapplet.cpp
authormickeyl <mickeyl>2005-01-12 17:03:21 (UTC)
committer mickeyl <mickeyl>2005-01-12 17:03:21 (UTC)
commit5f267ae8b540c229201edb8d65fe40786ac8ec5d (patch) (side-by-side diff)
tree4d7f01cb50270b2ab6a0da850556b353882296e9 /noncore/applets/volumeapplet2/volumeapplet.cpp
parent8de401df8b396877a47cccb191098ce43bea4e0e (diff)
downloadopie-5f267ae8b540c229201edb8d65fe40786ac8ec5d.zip
opie-5f267ae8b540c229201edb8d65fe40786ac8ec5d.tar.gz
opie-5f267ae8b540c229201edb8d65fe40786ac8ec5d.tar.bz2
just playin' :D
Diffstat (limited to 'noncore/applets/volumeapplet2/volumeapplet.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/applets/volumeapplet2/volumeapplet.cpp170
1 files changed, 170 insertions, 0 deletions
diff --git a/noncore/applets/volumeapplet2/volumeapplet.cpp b/noncore/applets/volumeapplet2/volumeapplet.cpp
new file mode 100644
index 0000000..f82dc63
--- a/dev/null
+++ b/noncore/applets/volumeapplet2/volumeapplet.cpp
@@ -0,0 +1,170 @@
+/*
+                 This file is part of the Opie Project
+
+ =. (C) 2005 Michael 'Mickey' Lauer <mickey@Vanille.de>
+ .=l.
+           .>+-=
+ _;:,     .>    :=|. This program is free software; you can
+.> <`_,   >  .   <= redistribute it and/or modify it under
+:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
+.="- .-=="i,     .._ License as published by the Free Software
+ - .   .-<_>     .<> Foundation; either version 2 of the License,
+     ._= =}       : or (at your option) any later version.
+    .%`+i>       _;_.
+    .i_,=:_.      -<s. 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
+..}^=.=       =       ; Library General Public License for more
+++=   -.     .`     .: details.
+ :     =  ...= . :.=-
+ -.   .:....=;==+<; You should have received a copy of the GNU
+  -_. . .   )=.  = Library General Public License along with
+    --        :-=` this library; see the file COPYING.LIB.
+ If not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+*/
+
+#include "volumeapplet.h"
+
+/* OPIE */
+#include <opie2/odebug.h>
+#include <opie2/otaskbarapplet.h>
+#include <opie2/osoundsystem.h>
+#include <opie2/oledbox.h>
+#include <qpe/applnk.h>
+#include <qpe/resource.h>
+using namespace Opie::Core;
+using namespace Opie::MM;
+using namespace Opie::Ui;
+
+/* QT */
+#include <qpainter.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qslider.h>
+
+/* STD */
+#include <assert.h>
+
+Channel::Channel( OMixerInterface* mixer, QWidget* parent, const char* name )
+ :QVBox( parent, name )
+{
+ _name = new QLabel( name, this );
+ _volume = new QSlider( 0, 100, 10, mixer->volume( name ), QSlider::Vertical, this );
+ _mute = new OLedBox( green, this );
+ _mute->setFocusPolicy( QWidget::NoFocus );
+ _mute->setFixedSize( AppLnk::smallIconSize(), AppLnk::smallIconSize() );
+ _name->show();
+ _volume->show();
+ _mute->show();
+}
+
+
+Channel::~Channel()
+{
+}
+
+
+VolumeAppletControl::VolumeAppletControl( OTaskbarApplet* parent, const char* name )
+ :QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), l(0)
+{
+ setFrameStyle( QFrame::PopupPanel | QFrame::Raised );
+ l = new QGridLayout( this );
+}
+
+
+void VolumeAppletControl::build()
+{
+ OSoundSystem* sound = OSoundSystem::instance();
+ OSoundSystem::CardIterator it = sound->iterator();
+
+ OMixerInterface* mixer = new OMixerInterface( this, "/dev/mixer" );
+
+ QStringList channels = mixer->allChannels();
+
+ int x = 0;
+ int y = 0;
+
+ for ( QStringList::Iterator it = channels.begin(); it != channels.end(); ++it )
+ {
+ odebug << "OSSDEMO: Mixer has channel " << *it << "" << oendl;
+ odebug << "OSSDEMO: +--- volume " << ( mixer->volume( *it ) & 0xff )
+ << " (left) | " << ( mixer->volume( *it ) >> 8 ) << " (right)" << oendl;
+
+ l->addWidget( new Channel( mixer, this, *it ), x++, y );
+ }
+
+}
+
+
+VolumeAppletControl::~VolumeAppletControl()
+{
+}
+
+
+void VolumeAppletControl::showEvent( QShowEvent* e )
+{
+ odebug << "showEvent" << oendl;
+ build();
+ QWidget::showEvent( e );
+}
+
+
+void VolumeAppletControl::hideEvent( QHideEvent* e )
+{
+ odebug << "hideEvent" << oendl;
+ QWidget::hideEvent( e );
+}
+
+
+QSize VolumeAppletControl::sizeHint() const
+{
+ return QFrame::sizeHint();
+}
+
+
+VolumeApplet::VolumeApplet( QWidget *parent, const char *name )
+ :OTaskbarApplet( parent, name )
+{
+ setFixedHeight( AppLnk::smallIconSize() );
+ setFixedWidth( AppLnk::smallIconSize() );
+ _pixmap.convertFromImage( Resource::loadImage( "volumeapplet/volume" ).smoothScale( height(), width() ) );
+ _control = new VolumeAppletControl( this, "control" );
+}
+
+
+VolumeApplet::~VolumeApplet()
+{
+}
+
+
+int VolumeApplet::position()
+{
+ return 4;
+}
+
+
+void VolumeApplet::paintEvent( QPaintEvent* )
+{
+ QPainter p(this);
+ p.drawPixmap(0, 2, _pixmap );
+}
+
+
+void VolumeApplet::mousePressEvent( QMouseEvent* )
+{
+ if ( !_control->isVisible() )
+ {
+ popup( _control );
+ }
+ else
+ {
+ _control->hide();
+ }
+}
+
+EXPORT_OPIE_APPLET_v1( VolumeApplet )