Development Team/Almanac/Sugar.presence.presenceservice
Class: PresenceService (gobject.GObject)
The standard Sugar.activity.activity#Class:_ActivityToolbar_.28gtk.Toolbar.29 sugar ActivityToolbar already contains a dropdown menu that allows users to make their activities public or private on the mesh network. To use this toolbar, you can simply use the Sugar.activity.activity#Class:_ActivityToolbox_.28Toolbox.29 ActivityToolbox in your activity, which adds the ActivityToolbar by default. You can see code on how to do this by reading the entry on Sugar.activity.activity#What_is_the_standard_toolbox_needed_in_most_activities_and_how_do_I_create_it.3F creating a standard toolbox.
In your activity, you may want users to be able to control the public/private share settings outside of just using the standard ActivityToolbar menu. To see how to do this programmatically, it is best to use the sharing code ActivityToolbar uses to make an activity public or private. Below is the relevant source code from the ActivityToolbar class:
How do I get a list of buddies that are presently available on my mesh network?
The PresenceService class has a helper method called get_buddies() that will return a list of sugar.presence.buddy.Buddy objects. The code below shows how you can get a list of available buddies and print out some relevant properties for each.
from sugar.presence import presenceservice ... #### Method: _print_buddy_info, which finds all the buddies detected for this # XO and then prints their relevant properties. def _print_buddy_info(self): ps = presenceservice.PresenceService() buddies = ps.get_buddies() for currBuddy in buddies: print '----------------------- ' + currBuddy.get_property('nick') + ': ' print currBuddy.get_property('key') print currBuddy.get_property('color') print currBuddy.get_property('current-activity') print currBuddy.get_property('owner') print currBuddy.get_property('ip4-address') print ''