Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAjay Garg <ajay@activitycentral.com>2013-02-13 05:42:29 (GMT)
committer Ajay Garg <ajay@activitycentral.com>2013-02-13 08:13:24 (GMT)
commite4512bce411dc8f0512d6bfc2c8c9221c1505439 (patch)
tree8d8ae06ab614bf97e777d04894f9c1ba33fe28f3
parent974ad3863f506c49305a805c9d9f1f315fc6f9d9 (diff)
sdxo#3030: Left/Right gestures for the toolbar.
Signed-off-by: Ajay Garg <ajay@activitycentral.com>
-rw-r--r--src/jarabe/model/shell.py15
-rw-r--r--src/jarabe/view/gesturehandler.py27
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):