summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore 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 @@
1*moc
2*.~
3Makefile*
4moc_*
5opieobj
6obj
7moc_
8.moc
9.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 @@
1 config VOLUMEAPPLET2
2 boolean "opie-volumeapplet2 (control mixer volume on-the-fly)"
3 default "n"
4 depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && LIBOPIE2UI && LIBOPIE2MM
5 comment "Volume applet needs a libqpe and libopie2 (core, ui, mm)"
6 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 @@
1/*
2                 This file is part of the Opie Project
3
4 =. (C) 2005 Michael 'Mickey' Lauer <mickey@Vanille.de>
5 .=l.
6           .>+-=
7 _;:,     .>    :=|. This program is free software; you can
8.> <`_,   >  .   <= redistribute it and/or modify it under
9:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
10.="- .-=="i,     .._ License as published by the Free Software
11 - .   .-<_>     .<> Foundation; either version 2 of the License,
12     ._= =}       : or (at your option) any later version.
13    .%`+i>       _;_.
14    .i_,=:_.      -<s. This program is distributed in the hope that
15     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
16    : ..    .:,     . . . without even the implied warranty of
17    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
19..}^=.=       =       ; Library General Public License for more
20++=   -.     .`     .: details.
21 :     =  ...= . :.=-
22 -.   .:....=;==+<; You should have received a copy of the GNU
23  -_. . .   )=.  = Library General Public License along with
24    --        :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA.
28
29*/
30
31#include "volumeapplet.h"
32
33/* OPIE */
34#include <opie2/odebug.h>
35#include <opie2/otaskbarapplet.h>
36#include <opie2/osoundsystem.h>
37#include <opie2/oledbox.h>
38#include <qpe/applnk.h>
39#include <qpe/resource.h>
40using namespace Opie::Core;
41using namespace Opie::MM;
42using namespace Opie::Ui;
43
44/* QT */
45#include <qpainter.h>
46#include <qlabel.h>
47#include <qlayout.h>
48#include <qslider.h>
49
50/* STD */
51#include <assert.h>
52
53Channel::Channel( OMixerInterface* mixer, QWidget* parent, const char* name )
54 :QVBox( parent, name )
55{
56 _name = new QLabel( name, this );
57 _volume = new QSlider( 0, 100, 10, mixer->volume( name ), QSlider::Vertical, this );
58 _mute = new OLedBox( green, this );
59 _mute->setFocusPolicy( QWidget::NoFocus );
60 _mute->setFixedSize( AppLnk::smallIconSize(), AppLnk::smallIconSize() );
61 _name->show();
62 _volume->show();
63 _mute->show();
64}
65
66
67Channel::~Channel()
68{
69}
70
71
72VolumeAppletControl::VolumeAppletControl( OTaskbarApplet* parent, const char* name )
73 :QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), l(0)
74{
75 setFrameStyle( QFrame::PopupPanel | QFrame::Raised );
76 l = new QGridLayout( this );
77}
78
79
80void VolumeAppletControl::build()
81{
82 OSoundSystem* sound = OSoundSystem::instance();
83 OSoundSystem::CardIterator it = sound->iterator();
84
85 OMixerInterface* mixer = new OMixerInterface( this, "/dev/mixer" );
86
87 QStringList channels = mixer->allChannels();
88
89 int x = 0;
90 int y = 0;
91
92 for ( QStringList::Iterator it = channels.begin(); it != channels.end(); ++it )
93 {
94 odebug << "OSSDEMO: Mixer has channel " << *it << "" << oendl;
95 odebug << "OSSDEMO: +--- volume " << ( mixer->volume( *it ) & 0xff )
96 << " (left) | " << ( mixer->volume( *it ) >> 8 ) << " (right)" << oendl;
97
98 l->addWidget( new Channel( mixer, this, *it ), x++, y );
99 }
100
101}
102
103
104VolumeAppletControl::~VolumeAppletControl()
105{
106}
107
108
109void VolumeAppletControl::showEvent( QShowEvent* e )
110{
111 odebug << "showEvent" << oendl;
112 build();
113 QWidget::showEvent( e );
114}
115
116
117void VolumeAppletControl::hideEvent( QHideEvent* e )
118{
119 odebug << "hideEvent" << oendl;
120 QWidget::hideEvent( e );
121}
122
123
124QSize VolumeAppletControl::sizeHint() const
125{
126 return QFrame::sizeHint();
127}
128
129
130VolumeApplet::VolumeApplet( QWidget *parent, const char *name )
131 :OTaskbarApplet( parent, name )
132{
133 setFixedHeight( AppLnk::smallIconSize() );
134 setFixedWidth( AppLnk::smallIconSize() );
135 _pixmap.convertFromImage( Resource::loadImage( "volumeapplet/volume" ).smoothScale( height(), width() ) );
136 _control = new VolumeAppletControl( this, "control" );
137}
138
139
140VolumeApplet::~VolumeApplet()
141{
142}
143
144
145int VolumeApplet::position()
146{
147 return 4;
148}
149
150
151void VolumeApplet::paintEvent( QPaintEvent* )
152{
153 QPainter p(this);
154 p.drawPixmap(0, 2, _pixmap );
155}
156
157
158void VolumeApplet::mousePressEvent( QMouseEvent* )
159{
160 if ( !_control->isVisible() )
161 {
162 popup( _control );
163 }
164 else
165 {
166 _control->hide();
167 }
168}
169
170EXPORT_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 @@
1/*
2                 This file is part of the Opie Project
3
4 =. (C) 2005 Michael 'Mickey' Lauer <mickey@Vanille.de>
5 .=l.
6           .>+-=
7 _;:,     .>    :=|. This program is free software; you can
8.> <`_,   >  .   <= redistribute it and/or modify it under
9:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
10.="- .-=="i,     .._ License as published by the Free Software
11 - .   .-<_>     .<> Foundation; either version 2 of the License,
12     ._= =}       : or (at your option) any later version.
13    .%`+i>       _;_.
14    .i_,=:_.      -<s. This program is distributed in the hope that
15     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
16    : ..    .:,     . . . without even the implied warranty of
17    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
19..}^=.=       =       ; Library General Public License for more
20++=   -.     .`     .: details.
21 :     =  ...= . :.=-
22 -.   .:....=;==+<; You should have received a copy of the GNU
23  -_. . .   )=.  = Library General Public License along with
24    --        :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA.
28
29*/
30
31#ifndef VOLUMEAPPLET_H
32#define VOLUMEAPPLET_H
33
34#include <opie2/otaskbarapplet.h>
35#include <qframe.h>
36#include <qstring.h>
37#include <qvbox.h>
38#include <qpixmap.h>
39
40namespace Opie
41{
42 namespace Ui { class OLedBox; }
43 namespace MM { class OMixerInterface; }
44}
45class QLabel;
46class QSlider;
47class QShowEvent;
48class QHideEvent;
49class QGridLayout;
50
51class Channel : public QVBox
52{
53 public:
54 Channel( Opie::MM::OMixerInterface* mixer, QWidget* parent, const char* name );
55 virtual ~Channel();
56
57 // public slots:
58 // virtual void clicked();
59
60 private:
61 QLabel* _name;
62 QSlider* _volume;
63 Opie::Ui::OLedBox* _mute;
64 Opie::MM::OMixerInterface* _mixer;
65};
66
67class VolumeAppletControl : public QFrame
68{
69 public:
70 VolumeAppletControl( Opie::Ui::OTaskbarApplet* parent, const char* name = 0 );
71 ~VolumeAppletControl();
72
73 virtual QSize sizeHint() const;
74
75 protected:
76 virtual void showEvent( QShowEvent* );
77 virtual void hideEvent( QHideEvent* );
78 void build();
79
80 private:
81 QGridLayout* l;
82
83};
84
85
86class VolumeApplet : public Opie::Ui::OTaskbarApplet
87{
88 public:
89 VolumeApplet( QWidget* parent = 0, const char* name = 0 );
90 ~VolumeApplet();
91
92 static int position();
93 protected:
94 virtual void paintEvent( QPaintEvent* );
95 virtual void mousePressEvent( QMouseEvent* );
96
97 private:
98 VolumeAppletControl* _control;
99 QPixmap _pixmap;
100};
101
102#endif
103
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 @@
1TEMPLATE = lib
2CONFIG += qt plugin warn_on
3HEADERS = volumeapplet.h
4SOURCES = volumeapplet.cpp
5TARGET = volumeapplet2
6DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += $(OPIEDIR)/include
9LIBS += -lqpe -lopiecore2 -lopieui2 -lopiemm2
10VERSION = 0.1.0
11
12include( $(OPIEDIR)/include.pro )
diff --git a/packages b/packages
index 4002d3f..77ff70a 100644
--- a/packages
+++ b/packages
@@ -231,2 +231,3 @@ CONFIG_VMEMO core/applets/vmemo vmemo.pro
231 CONFIG_VOLUMEAPPLET core/applets/volumeappletvolumeapplet.pro 231 CONFIG_VOLUMEAPPLET core/applets/volumeappletvolumeapplet.pro
232 CONFIG_VOLUMEAPPLET2 noncore/applets/volumeapplet2volumeapplet2.pro
232 CONFIG_VTAPPLET core/applets/vtappletvtapplet.pro 233 CONFIG_VTAPPLET core/applets/vtappletvtapplet.pro