summaryrefslogtreecommitdiff
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
parent8de401df8b396877a47cccb191098ce43bea4e0e (diff)
downloadopie-5f267ae8b540c229201edb8d65fe40786ac8ec5d.zip
opie-5f267ae8b540c229201edb8d65fe40786ac8ec5d.tar.gz
opie-5f267ae8b540c229201edb8d65fe40786ac8ec5d.tar.bz2
just playin' :D
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/applets/volumeapplet2/.cvsignore9
-rw-r--r--noncore/applets/volumeapplet2/config.in6
-rw-r--r--noncore/applets/volumeapplet2/volumeapplet.cpp170
-rw-r--r--noncore/applets/volumeapplet2/volumeapplet.h103
-rw-r--r--noncore/applets/volumeapplet2/volumeapplet2.pro12
-rw-r--r--packages1
6 files changed, 301 insertions, 0 deletions
diff --git a/noncore/applets/volumeapplet2/.cvsignore b/noncore/applets/volumeapplet2/.cvsignore
new file mode 100644
index 0000000..d704947
--- a/dev/null
+++ b/noncore/applets/volumeapplet2/.cvsignore
@@ -0,0 +1,9 @@
+*moc
+*.~
+Makefile*
+moc_*
+opieobj
+obj
+moc_
+.moc
+.obj
diff --git a/noncore/applets/volumeapplet2/config.in b/noncore/applets/volumeapplet2/config.in
new file mode 100644
index 0000000..e91969a
--- a/dev/null
+++ b/noncore/applets/volumeapplet2/config.in
@@ -0,0 +1,6 @@
+ config VOLUMEAPPLET2
+ boolean "opie-volumeapplet2 (control mixer volume on-the-fly)"
+ default "n"
+ depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && LIBOPIE2UI && LIBOPIE2MM
+ comment "Volume applet needs a libqpe and libopie2 (core, ui, mm)"
+ depends !(( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && LIBOPIE2UI && LIBOPIE2MM)
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 )
diff --git a/noncore/applets/volumeapplet2/volumeapplet.h b/noncore/applets/volumeapplet2/volumeapplet.h
new file mode 100644
index 0000000..c1f1a3a
--- a/dev/null
+++ b/noncore/applets/volumeapplet2/volumeapplet.h
@@ -0,0 +1,103 @@
+/*
+                 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.
+
+*/
+
+#ifndef VOLUMEAPPLET_H
+#define VOLUMEAPPLET_H
+
+#include <opie2/otaskbarapplet.h>
+#include <qframe.h>
+#include <qstring.h>
+#include <qvbox.h>
+#include <qpixmap.h>
+
+namespace Opie
+{
+ namespace Ui { class OLedBox; }
+ namespace MM { class OMixerInterface; }
+}
+class QLabel;
+class QSlider;
+class QShowEvent;
+class QHideEvent;
+class QGridLayout;
+
+class Channel : public QVBox
+{
+ public:
+ Channel( Opie::MM::OMixerInterface* mixer, QWidget* parent, const char* name );
+ virtual ~Channel();
+
+ // public slots:
+ // virtual void clicked();
+
+ private:
+ QLabel* _name;
+ QSlider* _volume;
+ Opie::Ui::OLedBox* _mute;
+ Opie::MM::OMixerInterface* _mixer;
+};
+
+class VolumeAppletControl : public QFrame
+{
+ public:
+ VolumeAppletControl( Opie::Ui::OTaskbarApplet* parent, const char* name = 0 );
+ ~VolumeAppletControl();
+
+ virtual QSize sizeHint() const;
+
+ protected:
+ virtual void showEvent( QShowEvent* );
+ virtual void hideEvent( QHideEvent* );
+ void build();
+
+ private:
+ QGridLayout* l;
+
+};
+
+
+class VolumeApplet : public Opie::Ui::OTaskbarApplet
+{
+ public:
+ VolumeApplet( QWidget* parent = 0, const char* name = 0 );
+ ~VolumeApplet();
+
+ static int position();
+ protected:
+ virtual void paintEvent( QPaintEvent* );
+ virtual void mousePressEvent( QMouseEvent* );
+
+ private:
+ VolumeAppletControl* _control;
+ QPixmap _pixmap;
+};
+
+#endif
+
diff --git a/noncore/applets/volumeapplet2/volumeapplet2.pro b/noncore/applets/volumeapplet2/volumeapplet2.pro
new file mode 100644
index 0000000..9a4eb3b
--- a/dev/null
+++ b/noncore/applets/volumeapplet2/volumeapplet2.pro
@@ -0,0 +1,12 @@
+TEMPLATE = lib
+CONFIG += qt plugin warn_on
+HEADERS = volumeapplet.h
+SOURCES = volumeapplet.cpp
+TARGET = volumeapplet2
+DESTDIR = $(OPIEDIR)/plugins/applets
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += $(OPIEDIR)/include
+LIBS += -lqpe -lopiecore2 -lopieui2 -lopiemm2
+VERSION = 0.1.0
+
+include( $(OPIEDIR)/include.pro )
diff --git a/packages b/packages
index 4002d3f..77ff70a 100644
--- a/packages
+++ b/packages
@@ -229,6 +229,7 @@ CONFIG_UNIKEYBOARD inputmethods/unikeyboard unikeyboard.pro
CONFIG_USERMANAGER noncore/settings/usermanager usermanager.pro
CONFIG_VMEMO core/applets/vmemo vmemo.pro
CONFIG_VOLUMEAPPLET core/applets/volumeapplet volumeapplet.pro
+CONFIG_VOLUMEAPPLET2 noncore/applets/volumeapplet2 volumeapplet2.pro
CONFIG_VTAPPLET core/applets/vtapplet vtapplet.pro
CONFIG_WAVPLUGIN core/multimedia/opieplayer/wavplugin wavplugin.pro
CONFIG_WEBSTYLE noncore/styles/web web.pro