Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/model
diff options
context:
space:
mode:
authorMartin Dengler <martin@martindengler.com>2008-05-30 15:07:09 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2008-06-02 11:02:49 (GMT)
commit5c55340f6d337751ae6e1ec79615108099da0d2c (patch)
tree2d9198f04133473d78f17edb44052d7423d10b70 /src/model
parentb0de0f455dc67f58eeebac40746de05981846bb3 (diff)
Fix #6994 - Add speaker device and icon by default, as in
http://wiki.laptop.org/go/Designs/Frame#07
Diffstat (limited to 'src/model')
-rw-r--r--src/model/devices/Makefile.am4
-rw-r--r--src/model/devices/devicesmodel.py8
-rw-r--r--src/model/devices/speaker.py59
3 files changed, 70 insertions, 1 deletions
diff --git a/src/model/devices/Makefile.am b/src/model/devices/Makefile.am
index 5440eeb..274f1e7 100644
--- a/src/model/devices/Makefile.am
+++ b/src/model/devices/Makefile.am
@@ -3,6 +3,8 @@ SUBDIRS = network
sugardir = $(pkgdatadir)/shell/model/devices
sugar_PYTHON = \
__init__.py \
+ battery.py \
device.py \
devicesmodel.py \
- battery.py
+ speaker.py
+
diff --git a/src/model/devices/devicesmodel.py b/src/model/devices/devicesmodel.py
index 691e19e..6b405ed 100644
--- a/src/model/devices/devicesmodel.py
+++ b/src/model/devices/devicesmodel.py
@@ -23,6 +23,7 @@ from model.devices import device
from model.devices.network import wireless
from model.devices.network import mesh
from model.devices import battery
+from model.devices import speaker
from hardware import hardwaremanager
from hardware import nmclient
@@ -45,6 +46,13 @@ class DevicesModel(gobject.GObject):
self._observe_hal_manager()
self._observe_network_manager()
+ try:
+ self.add_device(speaker.Device())
+ except Exception, speaker_fail_msg:
+ logging.error("could not initialize speaker device: %s" %
+ speaker_fail_msg)
+ logging.debug(traceback.format_exc())
+
def _observe_hal_manager(self):
bus = dbus.Bus(dbus.Bus.TYPE_SYSTEM)
proxy = bus.get_object('org.freedesktop.Hal',
diff --git a/src/model/devices/speaker.py b/src/model/devices/speaker.py
new file mode 100644
index 0000000..8526ea3
--- /dev/null
+++ b/src/model/devices/speaker.py
@@ -0,0 +1,59 @@
+# Copyright (C) 2008 Martin Dengler
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+import gobject
+
+from hardware import hardwaremanager
+from model.devices import device
+
+class Device(device.Device):
+ __gproperties__ = {
+ 'level' : (int, None, None, 0, 100, 0, gobject.PARAM_READWRITE),
+ 'muted' : (bool, None, None, False, gobject.PARAM_READWRITE),
+ }
+
+ def __init__(self):
+ device.Device.__init__(self)
+ self._manager = hardwaremanager.get_manager()
+
+ def _get_level(self):
+ return self._manager.get_volume()
+
+ def _set_level(self, new_volume):
+ self._manager.set_volume(new_volume)
+ self.notify('level')
+
+ def _get_muted(self):
+ return self._manager.get_muted()
+
+ def _set_muted(self, mute):
+ self._manager.set_mute(mute)
+ self.notify('muted')
+
+ def get_type(self):
+ return 'speaker'
+
+ def do_get_property(self, pspec):
+ if pspec.name == "level":
+ return self._get_level()
+ elif pspec.name == "muted":
+ return self._get_muted()
+
+ def do_set_property(self, pspec, value):
+ if pspec.name == "level":
+ self._set_level(value)
+ elif pspec.name == "muted":
+ self._set_muted(value)