Cleanup zoom level management
This commit is contained in:
parent
7024f93a43
commit
41af921826
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
import wnck
|
||||||
import gobject
|
import gobject
|
||||||
|
|
||||||
from sugar.presence import presenceservice
|
from sugar.presence import presenceservice
|
||||||
@ -37,9 +38,12 @@ class ShellModel(gobject.GObject):
|
|||||||
ZOOM_ACTIVITY = 3
|
ZOOM_ACTIVITY = 3
|
||||||
|
|
||||||
__gproperties__ = {
|
__gproperties__ = {
|
||||||
'state' : (int, None, None,
|
'state' : (int, None, None,
|
||||||
0, 2, STATE_RUNNING,
|
0, 2, STATE_RUNNING,
|
||||||
gobject.PARAM_READWRITE)
|
gobject.PARAM_READWRITE),
|
||||||
|
'zoom-level' : (int, None, None,
|
||||||
|
0, 3, ZOOM_HOME,
|
||||||
|
gobject.PARAM_READABLE)
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -47,6 +51,7 @@ class ShellModel(gobject.GObject):
|
|||||||
|
|
||||||
self._current_activity = None
|
self._current_activity = None
|
||||||
self._state = self.STATE_RUNNING
|
self._state = self.STATE_RUNNING
|
||||||
|
self._zoom_level = self.ZOOM_HOME
|
||||||
|
|
||||||
self._pservice = presenceservice.get_instance()
|
self._pservice = presenceservice.get_instance()
|
||||||
|
|
||||||
@ -57,6 +62,19 @@ class ShellModel(gobject.GObject):
|
|||||||
self._home = HomeModel()
|
self._home = HomeModel()
|
||||||
self._devices = DevicesModel()
|
self._devices = DevicesModel()
|
||||||
|
|
||||||
|
self._screen = wnck.screen_get_default()
|
||||||
|
self._screen.connect('showing-desktop-changed',
|
||||||
|
self._showing_desktop_changed_cb)
|
||||||
|
|
||||||
|
def set_zoom_level(self, level):
|
||||||
|
self._zoom_level = level
|
||||||
|
|
||||||
|
def get_zoom_level(self):
|
||||||
|
if self._screen.get_showing_desktop():
|
||||||
|
return self._zoom_level
|
||||||
|
else:
|
||||||
|
return self.ZOOM_ACTIVITY
|
||||||
|
|
||||||
def do_set_property(self, pspec, value):
|
def do_set_property(self, pspec, value):
|
||||||
if pspec.name == 'state':
|
if pspec.name == 'state':
|
||||||
self._state = value
|
self._state = value
|
||||||
@ -64,6 +82,8 @@ class ShellModel(gobject.GObject):
|
|||||||
def do_get_property(self, pspec):
|
def do_get_property(self, pspec):
|
||||||
if pspec.name == 'state':
|
if pspec.name == 'state':
|
||||||
return self._state
|
return self._state
|
||||||
|
elif pspec.name == 'zoom-level':
|
||||||
|
return self.get_zoom_level()
|
||||||
|
|
||||||
def get_mesh(self):
|
def get_mesh(self):
|
||||||
return self._mesh
|
return self._mesh
|
||||||
@ -82,3 +102,6 @@ class ShellModel(gobject.GObject):
|
|||||||
|
|
||||||
def get_devices(self):
|
def get_devices(self):
|
||||||
return self._devices
|
return self._devices
|
||||||
|
|
||||||
|
def _showing_desktop_changed_cb(self, screen):
|
||||||
|
self.notify('zoom-level')
|
||||||
|
@ -59,6 +59,9 @@ class Shell(gobject.GObject):
|
|||||||
|
|
||||||
self._zoom_level = ShellModel.ZOOM_HOME
|
self._zoom_level = ShellModel.ZOOM_HOME
|
||||||
|
|
||||||
|
self._model.connect('notify::zoom-level',
|
||||||
|
self._zoom_level_changed_cb)
|
||||||
|
|
||||||
home_model = self._model.get_home()
|
home_model = self._model.get_home()
|
||||||
home_model.connect('activity-started', self._activity_started_cb)
|
home_model.connect('activity-started', self._activity_started_cb)
|
||||||
home_model.connect('activity-removed', self._activity_removed_cb)
|
home_model.connect('activity-removed', self._activity_removed_cb)
|
||||||
@ -99,12 +102,6 @@ class Shell(gobject.GObject):
|
|||||||
|
|
||||||
self._current_host = host
|
self._current_host = host
|
||||||
|
|
||||||
if self._current_host:
|
|
||||||
self._current_host.set_active(True)
|
|
||||||
self.set_zoom_level(ShellModel.ZOOM_ACTIVITY)
|
|
||||||
else:
|
|
||||||
self.set_zoom_level(ShellModel.ZOOM_HOME)
|
|
||||||
|
|
||||||
def get_model(self):
|
def get_model(self):
|
||||||
return self._model
|
return self._model
|
||||||
|
|
||||||
@ -150,25 +147,20 @@ class Shell(gobject.GObject):
|
|||||||
self._activities_starting.add(activity_type)
|
self._activities_starting.add(activity_type)
|
||||||
activityfactory.create(activity_type)
|
activityfactory.create(activity_type)
|
||||||
|
|
||||||
def set_zoom_level(self, level):
|
def _zoom_level_changed_cb(self, model, pspec):
|
||||||
if self._zoom_level == level:
|
if model.get_zoom_level() == ShellModel.ZOOM_HOME:
|
||||||
return
|
|
||||||
if len(self._hosts) == 0 and level == ShellModel.ZOOM_ACTIVITY:
|
|
||||||
return
|
|
||||||
|
|
||||||
self._zoom_level = level
|
|
||||||
|
|
||||||
if self._zoom_level == ShellModel.ZOOM_ACTIVITY:
|
|
||||||
self._screen.toggle_showing_desktop(False)
|
|
||||||
else:
|
|
||||||
self._screen.toggle_showing_desktop(True)
|
|
||||||
self._home_window.set_zoom_level(self._zoom_level)
|
|
||||||
|
|
||||||
if self._zoom_level == ShellModel.ZOOM_HOME:
|
|
||||||
self._frame.show()
|
self._frame.show()
|
||||||
else:
|
else:
|
||||||
self._frame.hide()
|
self._frame.hide()
|
||||||
|
|
||||||
|
def set_zoom_level(self, level):
|
||||||
|
if level == ShellModel.ZOOM_ACTIVITY:
|
||||||
|
self._screen.toggle_showing_desktop(False)
|
||||||
|
else:
|
||||||
|
self._model.set_zoom_level(level)
|
||||||
|
self._screen.toggle_showing_desktop(True)
|
||||||
|
self._home_window.set_zoom_level(level)
|
||||||
|
|
||||||
def get_current_activity(self):
|
def get_current_activity(self):
|
||||||
return self._current_host
|
return self._current_host
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user