Create a interface for the web synchronization code

Bug #549643 reported by Benoit Garret
20
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Tomdroid
Fix Released
Medium
Rodja

Bug Description

The current code doesn't provide many cues about what's happening behind the scenes and may confuse the user. It could use some work in order to be able to tell the user about the state of the authentication/sync.

It could be divided in two subtasks:
 * The first one is the design of the interface with its flow. I don't think it is a good idea to rush blindly without a bit of prior planning, it requires some thought
 * The second one is some code refactoring to be able to extract useful information about the running sync process (http download progress, etc)

Related branches

Revision history for this message
Rodja (trappe) wrote :

I've done some work in the lp:~trappe/tomdroid/sync-ui branch. It's not all done but you can see where I've been hadded.

Revision history for this message
Benoit Garret (benoit.garret) wrote :

Yep, I saw you linked this bug to your branch. I won't have time to take a look at your work this week, but I'll try to check this out this weekend and give you some feedback. Thanks a lot for tackling this!

Changed in tomdroid:
assignee: nobody → Rodja (trappe)
status: New → In Progress
Revision history for this message
Benoit Garret (benoit.garret) wrote :

Sorry for the delay. I played a bit with your code, it looks quite nice and unobstrusive (which is good!).

I have a few nitpick though, from a user perspective as I haven't looked at the code:
 * Launching two sync operation in a short period produces strange results. This isn't your fault but I should have put a lock to prevent the user from doing the mistake.
 * When on a slow connection (ie. GPRS), the icon rotates so slowly that it is easy to believe nothing is happening. I can't really see how far along the sync operation has advanced, so wouldn't it be better to rotate the icon constantly?
 * Nothing really happens when syncing from the SD Card, the icon moves a little bit at the very beginning, then nothing. It doesn't change colors like it does with the webservice.

You may already be aware of these but I don't know if you're planning to do further work on this, so I'm throwing them here just in case.

And again nice work, I'm really looking forward to merge your work.

Revision history for this message
Rodja (trappe) wrote :

Thank you for the review! I just worked on some of your valuable comments.

1. sd card syncing does now send correct sync progress infos to the UI
2. I've now added a pulsing dot when sync is in progress to have an indication when using a slow connection. I decided against constant rotation because I like to have the angle of the sync icon to sbtile indicate the progress (just started, half done, two-third done, ...). Unfortunately my sync-Icon is not perfectly centered so the dot is not always in the center. Maybe I can fix this in a few days.

The sync button in the Actionbar is already deactivated when sync is in progress. I would suggest to remove the sync-menu icon completly in favor for the action bar.

Revision history for this message
Benoit Garret (benoit.garret) wrote :

Much better, I can now at least see that something is happening.

I took a quick look at your animation code, but couldn't spot any obvious mistake. I'm afraid I won't be of much help here.

I'm against removing the sync menu icon for two reasons:

 * Your bar is only actionable through a touchscreen. My understanding is that it's important for accessibility reasons that the sync can be initiated by a hardware key. I'm not a usability or accessibility expert, if any lurker has experience in any of those fields, their opinion will be much appreciated.

 * I prefer to follow the guidelines and tools provided by Google concerning interface design, there's a whole chapter on the development guide dedicated to them.

Feel free to disagree though ;-) . I may not have completely understood your reasons and I would gladly be proven wrong.

One last thing, I'm curious about the reasons that led you to use a custom notification. There are at least two feedback mechanisms that are already implemented by system applications:

 * Use the progress bar in the window title : http://developer.android.com/guide/appendix/faq/commontasks.html#progressbar . It is already used by the web browser and looks like super easy to implement.

 * Use a status bar notification: http://developer.android.com/guide/topics/ui/notifiers/notifications.html . Something along the lines of what the market app does, it requires a bit more work than the previous one but has the advantage of notifying the user even when the application is hidden.

I'm not trying to downplay your work, I'm really, really glad that you stepped up to get in charge of this. I'm just trying to get an understanding of the reasons that led you to your UI choices.

Revision history for this message
Rodja (trappe) wrote :

I've now fixed the animation problem and decided to keep the additional sync menu button for now. It was'nt too difficult to make it work correctly.

About your arguments to keep the menu item:

1. Accessibility
The menu items are also only accessable via touch. There may be a hardware button to launch the menu, but the menu it self is always represended on the display.

2. Follow the guidelines
Me too! Have you seen the recent blog article about the Twitter App: http://android-developers.blogspot.com/2010/05/twitter-for-android-closer-look-at.html ?
Google recommends to use the Action bar for common and often used global actions. See http://code.google.com/intl/de-DE/events/io/2010/sessions/android-ui-design-patterns.html at minute 12:40 for the whole Action bar talking, and note at 14:35: "What are the actions the user should not have to press menu to get at".

About my decision to use a custom notification:

Using the standard progress bar would mean to have some dedicated UI real estade whre it could be placed. I think it's not worth the space plus it would be decupled from the sync button and hence unclear to the user how synchronisation and a orange bar somewhere else in the UI are related.

Status bar notifications are fine and I think we should implement it sometime. Currently we do not have a background service and I think this a essential precondition.

Revision history for this message
Sandy Armstrong (sanfordarmstrong) wrote : Re: [Bug 549643] Re: Create a interface for the web synchronization code

On Fri, Jun 11, 2010 at 1:18 AM, Rodja <email address hidden> wrote:
> 1. Accessibility
> The menu items are also only accessable via touch. There may be a hardware button to launch the menu, but the menu it self is always represended on the display.

Once the menu button appears, it is accessible via the scroll ball (or
whatever navigational hardware is on the device).

Revision history for this message
Benoit Garret (benoit.garret) wrote :

If the Google designers say it's allowed, then who am I to question this? ;-) . On a more serious note, I agree with your arguments against the window progress bar. I would say your work is ready to be merged in a very near future, please request a merge when you think your work is finished.

I checked the Twitter app and the item in the ActionBar can be used through the trackball. If you manage to do it in Tomdroid, feel free to remove the menu item as it would remove the last objection I had against this.

Revision history for this message
Rodja (trappe) wrote :

Done!

The focus indication could be better, but for now it's good enough. Also there are some glitches when leaving the activity while sync is in progress. This should be fixed by doing the actual sync in a dedicated Android Service which is tracked in #549646.

Changed in tomdroid:
status: In Progress → Fix Committed
Revision history for this message
Kev (ukev) wrote :

Hi Rodja,

as in the mailinglist promised, I've tested your code on my nexus one with my ~410 (production) notes and will give you some feedback. I'm really impressed how good it works already.

_positive_:
• Syncronized more than 410 notes in a reasonable time (~10-15 sec. first time sync)
• Already really useful, works as expected in all main parts (Hey it does sync my notes to my android phone - really great :)! )
• It didn't delete my notes :)

_negative_: (only some small fine-tuning related stuff)
* The icon is not intuitive enough. It took some time for me to get it (I didn't read the comments here before testing because I want to be impartial on testing). It should say "Hey, touch me if you want to sync". Actually it says more "Hey, you can sync and I may show you the progress of it" to me. It looks more like a status indicator than a button. But that may be subjective. Maybe you can put the sync icon on top of a button?
• The icon is a little bit to small to hit responsible
• Icon and point looks a bit aliased
• Sometimes the UI is freezing when the orientation is switched during sync. After the sync is complete the freeze finishes.
• Slow re-sync of the notes (more than 30-100 seconds)
• If a note is open and sync is started, the open note does not auto reload if it is updated, need to turn the device 90° or re-open the note manually.

Please don't be depressed because my "negative" list has more entrys than my "positive" one. The positive points are the significant ones!
Thanks for your code and I'm already pleased to see your next contributions :).

Revision history for this message
Rodja (trappe) wrote :

Thanks for testing and the good feedback!

1. sync icon not intuitvely understand as "button"
The action bar "design pattern" from Google is very new. After your objection I looked closer to the Twitter App. They are using 1px vertical lines to frame each button in the action bar. Would be great if you can find the time to enhance our action bar with this, too. I've changed the owner of the sync-ui branch to Tomdroid Developers, so you can push your changes right into the branch.

2. sync button to small + 3. graphics aliased
I did bad scaling and pixel pushing with Gimp for the icons as a first shot. Also they are too small and not as high as the action bar itself. They need to be redone properly with inkscape as SVG-graphics. I just filed this as bug #593351 because this will take some time and does not block this ticket in general.

4. freezing ui when orientation is changed
I could not reproduce this behaviour on my DROID, but there is indeed a sync button update issue when orientation is changed. It's not so important for me to invest a lot of time into this right now. Maybe you can have a look...

5. slow re-sync
I do not have as many notes as you have. Maybe it would be good to file a bug for this because I do not think it's caused by the UI changes I introduced.

6. This should also be a seperate bug. I have not invested a lot of time in the Note view because I guess this part will be modified a log when note editing is implemented.

Olivier Bilodeau (plaxx)
Changed in tomdroid:
importance: Undecided → Medium
Revision history for this message
Olivier Bilodeau (plaxx) wrote :

Can I mark this as 'fix released'? Can you file valid remaining tasks into separate bugs if any?

Thanks,

Revision history for this message
Rodja (trappe) wrote :

Ok. Moved all remaining informations to other bugs. I consider this issue as fixed. The 0.4.1 gets great feedback.

Changed in tomdroid:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.