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="no">No</string>
<string name="delete">Delete</string>
<string name="please_wait">Please wait...</string>
<!-- ApplicationPreferencesActivity -->
<string name="ApplicationPreferencesActivity_currently_s">Currently: %s</string>
@ -155,6 +156,8 @@
<string name="GroupCreateActivity_avatar_content_description">Group avatar</string>
<string name="GroupCreateActivity_menu_create_title">Create group</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>
<!-- GroupMembersDialog -->

View File

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