From 5bad493e795dbd9c036ecd0dc7cba5de7a0f400c Mon Sep 17 00:00:00 2001 From: Tim Su Date: Fri, 17 Sep 2010 15:58:13 +0800 Subject: [PATCH] Delayed loading of portions of task edit activity to speed up percieved UI responsiveness --- .../astrid/activity/TaskEditActivity.java | 99 +++++++++++-------- 1 file changed, 57 insertions(+), 42 deletions(-) diff --git a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java index a80e03195..0045d8a63 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java @@ -228,55 +228,70 @@ public final class TaskEditActivity extends TabActivity { // populate control set title = (EditText) findViewById(R.id.title); - controls.add(new EditTextControlSet(Task.TITLE, R.id.title)); controls.add(new ImportanceControlSet(R.id.importance_container)); controls.add(new UrgencyControlSet(R.id.urgency)); - controls.add(new HideUntilControlSet(R.id.hideUntil)); - controls.add(new EditTextControlSet(Task.NOTES, R.id.notes)); - - controls.add( new ReminderControlSet(R.id.reminder_due, - R.id.reminder_overdue, R.id.reminder_alarm)); - controls.add( new RandomReminderControlSet(R.id.reminder_random, - R.id.reminder_random_interval)); - controls.add(new TagsControlSet(this, R.id.tags_container)); - // internal add-ins - LinearLayout extrasAddons = (LinearLayout) findViewById(R.id.tab_extra_addons); - controls.add(new RepeatControlSet(this, extrasAddons)); - - LinearLayout addonsAddons = (LinearLayout) findViewById(R.id.tab_addons_addons); + new Thread() { + @Override + public void run() { + AndroidUtilities.sleepDeep(500L); + controls.add( new ReminderControlSet(R.id.reminder_due, + R.id.reminder_overdue, R.id.reminder_alarm)); + controls.add( new RandomReminderControlSet(R.id.reminder_random, + R.id.reminder_random_interval)); + + runOnUiThread(new Runnable() { + public void run() { + // internal add-ins + controls.add(new HideUntilControlSet(R.id.hideUntil)); + controls.add(new EditTextControlSet(Task.NOTES, R.id.notes)); + controls.add(new TagsControlSet(TaskEditActivity.this, R.id.tags_container)); + + LinearLayout extrasAddons = (LinearLayout) findViewById(R.id.tab_extra_addons); + controls.add(new RepeatControlSet(TaskEditActivity.this, extrasAddons)); + + LinearLayout addonsAddons = (LinearLayout) findViewById(R.id.tab_addons_addons); + + try { + if(ProducteevUtilities.INSTANCE.isLoggedIn()) { + controls.add(new ProducteevControlSet(TaskEditActivity.this, addonsAddons)); + ((TextView)findViewById(R.id.notes)).setHint(R.string.producteev_TEA_notes); + ((TextView)findViewById(R.id.notes_label)).setHint(R.string.producteev_TEA_notes); + } + } catch (Exception e) { + Log.e("astrid-error", "loading-control-set", e); //$NON-NLS-1$ //$NON-NLS-2$ + } + + if(addOnService.hasPowerPack()) { + controls.add(new GCalControlSet(TaskEditActivity.this, addonsAddons)); + controls.add(new TimerControlSet(TaskEditActivity.this, addonsAddons)); + controls.add(new AlarmControlSet(TaskEditActivity.this, addonsAddons)); + } + + // show add-on help if necessary + if(addonsAddons.getChildCount() == 0) { + ((View)addonsAddons.getParent()).setVisibility(View.GONE); + findViewById(R.id.addons_empty).setVisibility(View.VISIBLE); + ((Button)findViewById(R.id.addons_button)).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + startActivity(new Intent(TaskEditActivity.this, AddOnActivity.class)); + } + }); + } + + // re-read all + for(TaskEditControlSet controlSet : controls) + controlSet.readFromTask(model); + } + }); - try { - if(ProducteevUtilities.INSTANCE.isLoggedIn()) { - controls.add(new ProducteevControlSet(this, addonsAddons)); - ((TextView)findViewById(R.id.notes)).setHint(R.string.producteev_TEA_notes); - ((TextView)findViewById(R.id.notes_label)).setHint(R.string.producteev_TEA_notes); + // set up listeners + setUpListeners(); } - } catch (Exception e) { - Log.e("astrid-error", "loading-control-set", e); //$NON-NLS-1$ //$NON-NLS-2$ - } - - if(addOnService.hasPowerPack()) { - controls.add(new GCalControlSet(this, addonsAddons)); - controls.add(new TimerControlSet(this, addonsAddons)); - controls.add(new AlarmControlSet(this, addonsAddons)); - } - - // show add-on help if necessary - if(addonsAddons.getChildCount() == 0) { - ((View)addonsAddons.getParent()).setVisibility(View.GONE); - findViewById(R.id.addons_empty).setVisibility(View.VISIBLE); - ((Button)findViewById(R.id.addons_button)).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - startActivity(new Intent(TaskEditActivity.this, AddOnActivity.class)); - } - }); - } + }.start(); - // set up listeners - setUpListeners(); } /** Set up button listeners */