diff --git a/src/jarabe/model/shell.py b/src/jarabe/model/shell.py
index 437ff90..b0ef267 100644
a
|
b
|
class ShellModel(GObject.GObject): |
351 | 351 | ZOOM_HOME = 2 |
352 | 352 | ZOOM_ACTIVITY = 3 |
353 | 353 | |
| 354 | _ZOOM_LEVELS = [ZOOM_MESH, ZOOM_GROUP, ZOOM_HOME, ZOOM_ACTIVITY] |
| 355 | |
354 | 356 | def __init__(self): |
355 | 357 | GObject.GObject.__init__(self) |
356 | 358 | |
… |
… |
class ShellModel(GObject.GObject): |
430 | 432 | |
431 | 433 | zoom_level = property(_get_zoom_level) |
432 | 434 | |
| 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 | |
433 | 448 | def _get_activities_with_window(self): |
434 | 449 | ret = [] |
435 | 450 | for i in self._activities: |
diff --git a/src/jarabe/view/gesturehandler.py b/src/jarabe/view/gesturehandler.py
index 47b9f8f..a2ca9bd 100644
a
|
b
|
|
14 | 14 | # along with this program; if not, write to the Free Software |
15 | 15 | # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
16 | 16 | |
| 17 | import logging |
| 18 | |
17 | 19 | from gi.repository import Gdk |
18 | 20 | |
19 | 21 | from gi.repository import SugarExt |
… |
… |
from gi.repository import SugarGestures |
21 | 23 | |
22 | 24 | from sugar3.graphics import style |
23 | 25 | |
| 26 | from jarabe.model import shell |
| 27 | |
24 | 28 | _instance = None |
25 | 29 | |
26 | 30 | |
| 31 | |
| 32 | |
27 | 33 | class GestureHandler(object): |
28 | 34 | '''Handling gestures to show/hide the frame |
29 | 35 | |
… |
… |
class GestureHandler(object): |
36 | 42 | |
37 | 43 | def __init__(self, frame): |
38 | 44 | self._frame = frame |
| 45 | self._shell_model = shell.get_model() |
39 | 46 | |
40 | 47 | self._gesture_grabber = SugarExt.GestureGrabber() |
41 | 48 | self._controller = [] |
… |
… |
class GestureHandler(object): |
52 | 59 | for controller in self._controller: |
53 | 60 | self._gesture_grabber.remove(controller) |
54 | 61 | |
55 | | self._track_gesture_for_area(SugarGestures.SwipeDirectionFlags.DOWN, |
| 62 | self._track_gesture_for_area(SugarGestures.SwipeDirectionFlags.DOWN | |
| 63 | SugarGestures.SwipeDirectionFlags.LEFT | |
| 64 | SugarGestures.SwipeDirectionFlags.RIGHT, |
56 | 65 | 0, 0, Gdk.Screen.width(), |
57 | 66 | style.GRID_CELL_SIZE) |
58 | 67 | |
… |
… |
class GestureHandler(object): |
68 | 77 | self._controller.append(swipe) |
69 | 78 | |
70 | 79 | def __swipe_ended_cb(self, controller, event_direction): |
71 | | if self._frame.is_visible(): |
72 | | self._frame.hide() |
73 | | else: |
74 | | self._frame.show() |
| 80 | if event_direction == SugarGestures.SwipeDirection.DOWN: |
| 81 | if self._frame.is_visible(): |
| 82 | self._frame.hide() |
| 83 | else: |
| 84 | self._frame.show() |
| 85 | |
| 86 | elif event_direction == SugarGestures.SwipeDirection.LEFT: |
| 87 | self._shell_model.set_previous_zoom_level() |
| 88 | |
| 89 | elif event_direction == SugarGestures.SwipeDirection.RIGHT: |
| 90 | self._shell_model.set_next_zoom_level() |
| 91 | |
75 | 92 | |
76 | 93 | |
77 | 94 | def setup(frame): |