Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/activity.py
diff options
context:
space:
mode:
Diffstat (limited to 'activity.py')
-rw-r--r--activity.py61
1 files changed, 54 insertions, 7 deletions
diff --git a/activity.py b/activity.py
index 1ca1070..0be3b1d 100644
--- a/activity.py
+++ b/activity.py
@@ -18,17 +18,26 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from gi.repository import Gtk
+from gi.repository import GObject
from sugar3.activity import activity
from sugar3.activity.widgets import ActivityToolbarButton
from sugar3.activity.widgets import StopButton
-from sugar3.graphics.toolbutton import ToolButton
+from sugar3.graphics.radiotoolbutton import RadioToolButton
from sugar3.graphics.toolbarbox import ToolbarBox
from widgets import DeviceList
+from widgets import EmptyWidgets
from bt import Bluetooth
-#from gettext import gettext as _
+from gettext import gettext as _
+
+import logging
+
+# Logging
+_logger = logging.getLogger('bluetooth-activity')
+_logger.setLevel(logging.DEBUG)
+logging.basicConfig()
class ActivityBluetooth(activity.Activity):
@@ -43,7 +52,7 @@ class ActivityBluetooth(activity.Activity):
# Canvas
self._notebook = Gtk.Notebook()
- #self._notebook.set_show_tabs(False)
+ self._notebook.set_show_tabs(False)
self.set_canvas(self._notebook)
scroll = Gtk.ScrolledWindow()
@@ -57,12 +66,24 @@ class ActivityBluetooth(activity.Activity):
scroll = Gtk.ScrolledWindow()
scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
- self._notebook.append_page(scroll, Gtk.Label())
self._nbdevices = DeviceList()
scroll.add(self._nbdevices)
scroll.show_all()
+ self.progressbar = Gtk.ProgressBar()
+
+ nbbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
+ nbbox.pack_start(scroll, True, True, 0)
+ nbbox.pack_start(self.progressbar, False, True, 0)
+
+ self._notebook.append_page(nbbox, Gtk.Label())
+
+ self._ew = EmptyWidgets()
+ self._ew.connect('search-again', self._find_devices)
+
+ self._notebook.append_page(self._ew, Gtk.Label())
+
# Toolbars
toolbarbox = ToolbarBox()
@@ -71,7 +92,16 @@ class ActivityBluetooth(activity.Activity):
toolbarbox.toolbar.insert(Gtk.SeparatorToolItem(), -1)
- search_btn = ToolButton(icon_name='system-search')
+ pdevices_btn = RadioToolButton()
+ pdevices_btn.set_tooltip(_("Paired devices"))
+ pdevices_btn.props.icon_name = 'paired-devices'
+ pdevices_btn.connect('clicked', lambda w: self._notebook.set_current_page(0))
+ toolbarbox.toolbar.insert(pdevices_btn, -1)
+
+ search_btn = RadioToolButton()
+ search_btn.set_tooltip(_("Search devices"))
+ search_btn.props.icon_name = 'system-search'
+ search_btn.props.group = pdevices_btn
search_btn.connect('clicked', self._find_devices)
toolbarbox.toolbar.insert(search_btn, -1)
@@ -82,14 +112,31 @@ class ActivityBluetooth(activity.Activity):
stopbtn = StopButton(self)
toolbarbox.toolbar.insert(stopbtn, -1)
+
+ self._notebook.set_current_page(0)
self.set_toolbar_box(toolbarbox)
self.show_all()
def _find_devices(self, widget):
self._notebook.set_current_page(1)
+ self._times = 0
+ GObject.timeout_add(100, self._update_bar)
self.bluetooth.find_devices()
- self.nbdevices.model.clear()
+ self._nbdevices.model.clear()
def _device_found(self, bluetooth, deviceprops):
- self.nbdevices.add_device(deviceprops) \ No newline at end of file
+ self._nbdevices.add_device(deviceprops)
+
+ def _update_bar(self):
+ self._times += 0.1
+ self.progressbar.set_fraction(self._times / 20.0)
+
+ if self._times >= 20.0:
+ self.bluetooth.stop_search()
+ if not self.bluetooth.nearby_devices:
+ self._notebook.set_current_page(2)
+ return False
+ else:
+ return True
+