diff options
author | Ajay Garg <ajay@activitycentral.com> | 2013-02-13 05:42:29 (GMT) |
---|---|---|
committer | Ajay Garg <ajay@activitycentral.com> | 2013-02-13 08:13:24 (GMT) |
commit | e4512bce411dc8f0512d6bfc2c8c9221c1505439 (patch) | |
tree | 8d8ae06ab614bf97e777d04894f9c1ba33fe28f3 | |
parent | 974ad3863f506c49305a805c9d9f1f315fc6f9d9 (diff) |
sdxo#3030: Left/Right gestures for the toolbar.
Signed-off-by: Ajay Garg <ajay@activitycentral.com>
-rw-r--r-- | src/jarabe/model/shell.py | 15 | ||||
-rw-r--r-- | src/jarabe/view/gesturehandler.py | 27 |
2 files changed, 37 insertions, 5 deletions
diff --git a/src/jarabe/model/shell.py b/src/jarabe/model/shell.py index 4641b2b..1a2b919 100644 --- a/src/jarabe/model/shell.py +++ b/src/jarabe/model/shell.py @@ -356,6 +356,8 @@ class ShellModel(GObject.GObject): ZOOM_HOME = 2 ZOOM_ACTIVITY = 3 + _ZOOM_LEVELS = [ZOOM_MESH, ZOOM_GROUP, ZOOM_HOME, ZOOM_ACTIVITY] + def __init__(self): GObject.GObject.__init__(self) @@ -435,6 +437,19 @@ class ShellModel(GObject.GObject): zoom_level = property(_get_zoom_level) + def _get_zoom_level_by_index(self, idx): + # Use the modulo operator to iterate the list as a circular + # list. + return self._ZOOM_LEVELS[(idx) % len(self._ZOOM_LEVELS)] + + def set_previous_zoom_level(self): + new_level = self._get_zoom_level_by_index(self.zoom_level - 1) + self.set_zoom_level(new_level) + + def set_next_zoom_level(self): + new_level = self._get_zoom_level_by_index(self.zoom_level + 1) + self.set_zoom_level(new_level) + def _get_activities_with_window(self): ret = [] for i in self._activities: diff --git a/src/jarabe/view/gesturehandler.py b/src/jarabe/view/gesturehandler.py index 47b9f8f..a2ca9bd 100644 --- a/src/jarabe/view/gesturehandler.py +++ b/src/jarabe/view/gesturehandler.py @@ -14,6 +14,8 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +import logging + from gi.repository import Gdk from gi.repository import SugarExt @@ -21,9 +23,13 @@ from gi.repository import SugarGestures from sugar3.graphics import style +from jarabe.model import shell + _instance = None + + class GestureHandler(object): '''Handling gestures to show/hide the frame @@ -36,6 +42,7 @@ class GestureHandler(object): def __init__(self, frame): self._frame = frame + self._shell_model = shell.get_model() self._gesture_grabber = SugarExt.GestureGrabber() self._controller = [] @@ -52,7 +59,9 @@ class GestureHandler(object): for controller in self._controller: self._gesture_grabber.remove(controller) - self._track_gesture_for_area(SugarGestures.SwipeDirectionFlags.DOWN, + self._track_gesture_for_area(SugarGestures.SwipeDirectionFlags.DOWN | + SugarGestures.SwipeDirectionFlags.LEFT | + SugarGestures.SwipeDirectionFlags.RIGHT, 0, 0, Gdk.Screen.width(), style.GRID_CELL_SIZE) @@ -68,10 +77,18 @@ class GestureHandler(object): self._controller.append(swipe) def __swipe_ended_cb(self, controller, event_direction): - if self._frame.is_visible(): - self._frame.hide() - else: - self._frame.show() + if event_direction == SugarGestures.SwipeDirection.DOWN: + if self._frame.is_visible(): + self._frame.hide() + else: + self._frame.show() + + elif event_direction == SugarGestures.SwipeDirection.LEFT: + self._shell_model.set_previous_zoom_level() + + elif event_direction == SugarGestures.SwipeDirection.RIGHT: + self._shell_model.set_next_zoom_level() + def setup(frame): |