Ticket #4403: 0001-Views-add-a-gesture-handler-that-let-s-you-swipe-thr.patch

File 0001-Views-add-a-gesture-handler-that-let-s-you-swipe-thr.patch, 3.5 KB (added by erikos, 11 years ago)

Views: add a gesture handler that let's you swipe through the views

  • src/jarabe/model/shell.py

    From ca682b6f5eab3d64a9179e29502b5e4bd5b0a30d Mon Sep 17 00:00:00 2001
    From: Simon Schampijer <simon@laptop.org>
    Date: Tue, 12 Feb 2013 15:31:29 +0100
    Subject: [PATCH] Views: add a gesture handler that let's you swipe through the
     views
    
    A left and right swipe in one of the Views (Neighborhood, Group, Home,
    Activity) will transition you to the next view.
    ---
     src/jarabe/model/shell.py         | 15 +++++++++++++++
     src/jarabe/view/gesturehandler.py | 23 +++++++++++++++++++----
     2 files changed, 34 insertions(+), 4 deletions(-)
    
    diff --git a/src/jarabe/model/shell.py b/src/jarabe/model/shell.py
    index 437ff90..b0ef267 100644
    a b class ShellModel(GObject.GObject): 
    351351    ZOOM_HOME = 2
    352352    ZOOM_ACTIVITY = 3
    353353
     354    _ZOOM_LEVELS = [ZOOM_MESH, ZOOM_GROUP, ZOOM_HOME, ZOOM_ACTIVITY]
     355
    354356    def __init__(self):
    355357        GObject.GObject.__init__(self)
    356358
    class ShellModel(GObject.GObject): 
    430432
    431433    zoom_level = property(_get_zoom_level)
    432434
     435    def _get_zoom_level_by_index(self, idx):
     436        # Use the modulo operator to iterate the list as a circular
     437        # list.
     438        return self._ZOOM_LEVELS[(idx) % len(self._ZOOM_LEVELS)]
     439
     440    def set_previous_zoom_level(self):
     441        new_level = self._get_zoom_level_by_index(self.zoom_level - 1)
     442        self.set_zoom_level(new_level)
     443
     444    def set_next_zoom_level(self):
     445        new_level = self._get_zoom_level_by_index(self.zoom_level + 1)
     446        self.set_zoom_level(new_level)
     447
    433448    def _get_activities_with_window(self):
    434449        ret = []
    435450        for i in self._activities:
  • src/jarabe/view/gesturehandler.py

    diff --git a/src/jarabe/view/gesturehandler.py b/src/jarabe/view/gesturehandler.py
    index 47b9f8f..cd996f0 100644
    a b from gi.repository import SugarGestures 
    2121
    2222from sugar3.graphics import style
    2323
     24from jarabe.model import shell
     25
    2426_instance = None
    2527
    2628
    class GestureHandler(object): 
    3638
    3739    def __init__(self, frame):
    3840        self._frame = frame
     41        self._shell_model = shell.get_model()
    3942
    4043        self._gesture_grabber = SugarExt.GestureGrabber()
    4144        self._controller = []
    class GestureHandler(object): 
    5659                                     0, 0, Gdk.Screen.width(),
    5760                                     style.GRID_CELL_SIZE)
    5861
     62        self._track_gesture_for_area(SugarGestures.SwipeDirectionFlags.LEFT |
     63                                     SugarGestures.SwipeDirectionFlags.RIGHT,
     64                                     0, 0, Gdk.Screen.width(),
     65                                     Gdk.Screen.height())
     66
    5967    def _track_gesture_for_area(self, directions, x, y, width, height):
    6068        rectangle = Gdk.Rectangle()
    6169        rectangle.x = x
    class GestureHandler(object): 
    6876        self._controller.append(swipe)
    6977
    7078    def __swipe_ended_cb(self, controller, event_direction):
    71         if self._frame.is_visible():
    72             self._frame.hide()
    73         else:
    74             self._frame.show()
     79        if event_direction == SugarGestures.SwipeDirection.DOWN:
     80            if self._frame.is_visible():
     81                self._frame.hide()
     82            else:
     83                self._frame.show()
     84
     85        elif event_direction == SugarGestures.SwipeDirection.LEFT:
     86            self._shell_model.set_next_zoom_level()
     87
     88        elif event_direction == SugarGestures.SwipeDirection.RIGHT:
     89            self._shell_model.set_previous_zoom_level()
    7590
    7691
    7792def setup(frame):