Changes

Jump to navigation Jump to search
→‎Mini Profiles: More details!
Line 15: Line 15:  
==== BuddyModel ====
 
==== BuddyModel ====
 
* Each Buddy used to have properties like nick, color and current activity
 
* Each Buddy used to have properties like nick, color and current activity
* We add another property `social_ids` to the BaseBuddyModel which are populated initially from all webservice accounts.
+
* We add another property <code>social_ids</code> to the <code>BaseBuddyModel</code> which are populated initially from all webservice accounts.
* social_ids is a dictionary of `service name`: `public id` pairs. E.g. {'gmoksaya': 'a454', 'gpaste': 'adsfq524325'}
+
* social_ids is a dictionary of `service name`: `public id` pairs. E.g.<code> {'gmoksaya': 'a454', 'gpaste': 'adsfq524325'}</code>
 
* As are other properties like color, serialized social_ids are broadcasted to other online Sugar users via Telepathy.
 
* As are other properties like color, serialized social_ids are broadcasted to other online Sugar users via Telepathy.
    
==== WebServices Account Interface ====
 
==== WebServices Account Interface ====
* Two new methods: `get_public_id()` and `get_latest_post()` are added to Account class. (webservice.account.Account)
+
* Two new methods: <code>get_public_id()</code> and <code>get_latest_post()</code> are added to Account class. (webservice.account.Account)
* `get_public_id` returns the public id associated with that account.
+
* <code>get_public_id</code> returns the public id associated with that account.
 
** It is used to populate social_ids property initially
 
** It is used to populate social_ids property initially
 
** Public ids are used to fetch posts from the external webservice, e.g. latest project uploaded on Project Sharing Website. (This is implemented in the service specific extension.)
 
** Public ids are used to fetch posts from the external webservice, e.g. latest project uploaded on Project Sharing Website. (This is implemented in the service specific extension.)
* `get_latest_post` returns the latest post on the service.
+
* <code>get_latest_post</code> returns the latest post on the service.
    
=== New Classes ===
 
=== New Classes ===
    
==== WebServicePost ====
 
==== WebServicePost ====
* This is an abstract class for WebService posts returned by `get_latest_post`
+
* This is an abstract class for WebService posts returned by <code>get_latest_post</code>
 
* Has unimplemented methods for title, message, image and hyperlink.
 
* Has unimplemented methods for title, message, image and hyperlink.
   Line 55: Line 55:     
==== Technical details for the cloud content implementation ====
 
==== Technical details for the cloud content implementation ====
* Small cloud icon inherits `sugar3.graphics.icon.CanvasIcon` which gives it the color matching that of the buddy.
+
* SmallCloudIcon inherits <code>sugar3.graphics.icon.CanvasIcon</code> which gives it the color matching that of the buddy.
 
* CloudContent is placed on top of the LargeCloudIcon using Gtk.Overlay
 
* CloudContent is placed on top of the LargeCloudIcon using Gtk.Overlay
* LargeCloudIcon inherits `sugar3.graphics.icon.EventIcon`
+
* LargeCloudIcon inherits <code>sugar3.graphics.icon.EventIcon</code>
 
* The button-release-event is bound to SmallCloudIcon, whose callback draws the Gtk.Overlay containing LargeCloudIcon and CloudContent.
 
* The button-release-event is bound to SmallCloudIcon, whose callback draws the Gtk.Overlay containing LargeCloudIcon and CloudContent.
 
* Cloud content consists of a VBox of service icon, a label and HBox containing close and pause icons.
 
* Cloud content consists of a VBox of service icon, a label and HBox containing close and pause icons.
 +
 +
 +
=== Sugar-GMoksaya ===
 +
 +
Sugar-GMoksaya is a webservice extension which allows us to post journal projects to Moksaya, the Project Sharing Website. Addition of Mini Profile code allows us to view latest projects from our friends in Group View.
 +
 +
==== Details ====
 +
 +
* Moksaya needs username and api key for any request. Also, we need public id of the moksaya user to fetch latest projects.
 +
** We ask for username and password from the user in Settings > WebService.
 +
** These are used to fetch the api key and public id.
 +
** api key, username and public id are stored in GConf for future use. Passwords are not stored.
 +
* Sharing is same as in webservice extension, from Journal > Copy to > GMoksaya
 +
* If Gmoksaya account is also configured in your friends' Sugar, then they will send you their public ids.
 +
* Our extension fetches latest post from friends account and keeps it in memory.
 +
** If the cloud is expanded, the latest post is displayed followed by <code>get_latest_post()</code> calls to other services and looping back to this service.
 +
** Powered by [https://github.com/axitkhurana/gmoksaya GMoksaya] and [https://github.com/axitkhurana/grestful gRESTful]
 +
 +
==== Videos ====
 +
 +
* Setup and sharing journal projects:
 +
 +
* View latest projects in Group View:
 +
 +
=== Code ===
 +
social-sugar branch on:
 +
 +
* [https://github.com/axitkhurana/sugar Sugar]
 +
* [https://github.com/axitkhurana/sugar-toolkit-gtk3 Sugar Toolkit GTK 3]
 +
* [https://github.com/axitkhurana/sugar-artwork Sugar Artwork]
 +
 +
master branch on:
 +
* [https://github.com/axitkhurana/sugar-gmoksaya Sugar GMoksaya]
 +
 +
(Requires moksaya setup on local machine, social-sugar branch will use Rahul's deployed server making it easy to set up)
    
=== Testing ===
 
=== Testing ===
86

edits

Navigation menu