Enable progress indicator on group update

Closes #1165
This commit is contained in:
3xo 2014-03-15 01:23:39 +01:00 committed by Jake McGinty
parent 4e98c350a5
commit ff05642f3e
2 changed files with 31 additions and 26 deletions

View File

@ -4,6 +4,7 @@
<string name="yes">Yes</string> <string name="yes">Yes</string>
<string name="no">No</string> <string name="no">No</string>
<string name="delete">Delete</string> <string name="delete">Delete</string>
<string name="please_wait">Please wait...</string>
<!-- ApplicationPreferencesActivity --> <!-- ApplicationPreferencesActivity -->
<string name="ApplicationPreferencesActivity_currently_s">Currently: %s</string> <string name="ApplicationPreferencesActivity_currently_s">Currently: %s</string>
@ -155,6 +156,8 @@
<string name="GroupCreateActivity_avatar_content_description">Group avatar</string> <string name="GroupCreateActivity_avatar_content_description">Group avatar</string>
<string name="GroupCreateActivity_menu_create_title">Create group</string> <string name="GroupCreateActivity_menu_create_title">Create group</string>
<string name="GroupCreateActivity_creating_group">Creating %1$s&#8230;</string> <string name="GroupCreateActivity_creating_group">Creating %1$s&#8230;</string>
<string name="GroupCreateActivity_updating_group">Updating %1$s...</string>
<string name="GroupCreateActivity_loading_group_details">Loading group details</string>
<string name="GroupCreateActivity_cannot_add_non_push_to_existing_group">Cannot add non-TextSecure contacts to an existing TextSecure group</string> <string name="GroupCreateActivity_cannot_add_non_push_to_existing_group">Cannot add non-TextSecure contacts to an existing TextSecure group</string>
<!-- GroupMembersDialog --> <!-- GroupMembersDialog -->

View File

@ -58,6 +58,7 @@ import org.thoughtcrime.securesms.util.BitmapUtil;
import org.thoughtcrime.securesms.util.DynamicLanguage; import org.thoughtcrime.securesms.util.DynamicLanguage;
import org.thoughtcrime.securesms.util.DynamicTheme; import org.thoughtcrime.securesms.util.DynamicTheme;
import org.thoughtcrime.securesms.util.GroupUtil; import org.thoughtcrime.securesms.util.GroupUtil;
import org.thoughtcrime.securesms.util.ProgressDialogAsyncTask;
import org.thoughtcrime.securesms.util.SelectedRecipientsAdapter; import org.thoughtcrime.securesms.util.SelectedRecipientsAdapter;
import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.Util;
@ -107,7 +108,6 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity {
private PushRecipientsPanel recipientsPanel; private PushRecipientsPanel recipientsPanel;
private ImageView avatar; private ImageView avatar;
private TextView creatingText; private TextView creatingText;
private ProgressDialog pd;
private Recipients groupRecipient = null; private Recipients groupRecipient = null;
private long groupThread = -1; private long groupThread = -1;
@ -161,10 +161,11 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity {
avatar.setEnabled(true); avatar.setEnabled(true);
groupName.setEnabled(true); groupName.setEnabled(true);
final CharSequence groupNameText = groupName.getText(); final CharSequence groupNameText = groupName.getText();
if (groupNameText != null && groupNameText.length() > 0) if (groupNameText != null && groupNameText.length() > 0) {
getSupportActionBar().setTitle(groupNameText); getSupportActionBar().setTitle(groupNameText);
else } else {
getSupportActionBar().setTitle(R.string.GroupCreateActivity_actionbar_title); getSupportActionBar().setTitle(R.string.GroupCreateActivity_actionbar_title);
}
} }
private static boolean isActiveInDirectory(Context context, Recipient recipient) { private static boolean isActiveInDirectory(Context context, Recipient recipient) {
@ -247,13 +248,13 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity {
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { } public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { }
@Override @Override
public void afterTextChanged(Editable editable) { public void afterTextChanged(Editable editable) {
final int prefixResId = (groupId != null)
? R.string.GroupCreateActivity_actionbar_update_title
: R.string.GroupCreateActivity_actionbar_title;
if (editable.length() > 0) { if (editable.length() > 0) {
final int prefixResId = (groupId != null)
? R.string.GroupCreateActivity_actionbar_update_title
: R.string.GroupCreateActivity_actionbar_title;
getSupportActionBar().setTitle(getString(prefixResId) + ": " + editable.toString()); getSupportActionBar().setTitle(getString(prefixResId) + ": " + editable.toString());
} else { } else {
getSupportActionBar().setTitle(R.string.GroupCreateActivity_actionbar_title); getSupportActionBar().setTitle(prefixResId);
} }
} }
}); });
@ -324,7 +325,7 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity {
return; return;
} }
if (whisperGroupUiEnabled()) { if (whisperGroupUiEnabled()) {
enableWhisperGroupCreatingUi(); enableWhisperGroupProgressUi(false);
new CreateWhisperGroupAsyncTask().execute(); new CreateWhisperGroupAsyncTask().execute();
} else { } else {
new CreateMmsGroupAsyncTask().execute(); new CreateMmsGroupAsyncTask().execute();
@ -332,19 +333,25 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity {
} }
private void handleGroupUpdate() { private void handleGroupUpdate() {
Log.w("GroupCreateActivity", "Creating..."); if (whisperGroupUiEnabled()) {
enableWhisperGroupProgressUi(true);
}
new UpdateWhisperGroupAsyncTask().execute(); new UpdateWhisperGroupAsyncTask().execute();
} }
private void enableWhisperGroupCreatingUi() { private void enableWhisperGroupProgressUi(boolean isGroupUpdate) {
findViewById(R.id.group_details_layout).setVisibility(View.GONE); findViewById(R.id.group_details_layout).setVisibility(View.GONE);
findViewById(R.id.creating_group_layout).setVisibility(View.VISIBLE); findViewById(R.id.creating_group_layout).setVisibility(View.VISIBLE);
findViewById(R.id.menu_create_group).setVisibility(View.GONE); findViewById(R.id.menu_create_group).setVisibility(View.GONE);
if (groupName.getText() != null) if (groupName.getText() != null) {
creatingText.setText(getString(R.string.GroupCreateActivity_creating_group, groupName.getText().toString())); final int titleResId = isGroupUpdate
? R.string.GroupCreateActivity_updating_group
: R.string.GroupCreateActivity_creating_group;
creatingText.setText(getString(titleResId, groupName.getText().toString()));
}
} }
private void disableWhisperGroupCreatingUi() { private void disableWhisperGroupProgressUi() {
findViewById(R.id.group_details_layout).setVisibility(View.VISIBLE); findViewById(R.id.group_details_layout).setVisibility(View.VISIBLE);
findViewById(R.id.creating_group_layout).setVisibility(View.GONE); findViewById(R.id.creating_group_layout).setVisibility(View.GONE);
findViewById(R.id.menu_create_group).setVisibility(View.VISIBLE); findViewById(R.id.menu_create_group).setVisibility(View.VISIBLE);
@ -593,7 +600,7 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity {
finish(); finish();
} else if (threadId == RES_BAD_NUMBER) { } else if (threadId == RES_BAD_NUMBER) {
Toast.makeText(getApplicationContext(), R.string.GroupCreateActivity_contacts_invalid_number, Toast.LENGTH_LONG).show(); Toast.makeText(getApplicationContext(), R.string.GroupCreateActivity_contacts_invalid_number, Toast.LENGTH_LONG).show();
disableWhisperGroupCreatingUi(); disableWhisperGroupProgressUi();
} else if (threadId == RES_MMS_EXCEPTION) { } else if (threadId == RES_MMS_EXCEPTION) {
Toast.makeText(getApplicationContext(), R.string.GroupCreateActivity_contacts_mms_exception, Toast.LENGTH_LONG).show(); Toast.makeText(getApplicationContext(), R.string.GroupCreateActivity_contacts_mms_exception, Toast.LENGTH_LONG).show();
setResult(RESULT_CANCELED); setResult(RESULT_CANCELED);
@ -641,7 +648,7 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity {
finish(); finish();
} else if (threadId == RES_BAD_NUMBER) { } else if (threadId == RES_BAD_NUMBER) {
Toast.makeText(getApplicationContext(), R.string.GroupCreateActivity_contacts_invalid_number, Toast.LENGTH_LONG).show(); Toast.makeText(getApplicationContext(), R.string.GroupCreateActivity_contacts_invalid_number, Toast.LENGTH_LONG).show();
disableWhisperGroupCreatingUi(); disableWhisperGroupProgressUi();
} else if (threadId == RES_MMS_EXCEPTION) { } else if (threadId == RES_MMS_EXCEPTION) {
Toast.makeText(getApplicationContext(), R.string.GroupCreateActivity_contacts_mms_exception, Toast.LENGTH_LONG).show(); Toast.makeText(getApplicationContext(), R.string.GroupCreateActivity_contacts_mms_exception, Toast.LENGTH_LONG).show();
finish(); finish();
@ -654,16 +661,12 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity {
} }
} }
private class FillExistingGroupInfoAsyncTask extends AsyncTask<Void,Void,Void> { private class FillExistingGroupInfoAsyncTask extends ProgressDialogAsyncTask<Void,Void,Void> {
@Override public FillExistingGroupInfoAsyncTask() {
protected void onPreExecute() { super(GroupCreateActivity.this,
pd = new ProgressDialog(GroupCreateActivity.this); R.string.GroupCreateActivity_loading_group_details,
pd.setTitle("Loading group details..."); R.string.please_wait);
pd.setMessage("Please wait.");
pd.setCancelable(false);
pd.setIndeterminate(true);
pd.show();
} }
@Override @Override
@ -674,7 +677,7 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity {
final List<Recipient> recipientList = recipients.getRecipientsList(); final List<Recipient> recipientList = recipients.getRecipientsList();
if (recipientList != null) { if (recipientList != null) {
if (existingContacts == null) if (existingContacts == null)
existingContacts = new HashSet<Recipient>(recipientList.size()); existingContacts = new HashSet<>(recipientList.size());
existingContacts.addAll(recipientList); existingContacts.addAll(recipientList);
} }
} }
@ -694,7 +697,6 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity {
protected void onPostExecute(Void aVoid) { protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid); super.onPostExecute(aVoid);
if (pd != null) pd.dismiss();
if (existingTitle != null) groupName.setText(existingTitle); if (existingTitle != null) groupName.setText(existingTitle);
if (existingAvatarBmp != null) avatar.setImageBitmap(existingAvatarBmp); if (existingAvatarBmp != null) avatar.setImageBitmap(existingAvatarBmp);
if (existingContacts != null) syncAdapterWithSelectedContacts(); if (existingContacts != null) syncAdapterWithSelectedContacts();