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) (unidiff)
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 @@
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 )