diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9c36f7e55b..7ce064a67a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4,6 +4,7 @@
Yes
No
Delete
+ Please wait...
Currently: %s
@@ -155,6 +156,8 @@
Group avatar
Create group
Creating %1$s…
+ Updating %1$s...
+ Loading group details
Cannot add non-TextSecure contacts to an existing TextSecure group
diff --git a/src/org/thoughtcrime/securesms/GroupCreateActivity.java b/src/org/thoughtcrime/securesms/GroupCreateActivity.java
index daafff0112..af8098dbe3 100644
--- a/src/org/thoughtcrime/securesms/GroupCreateActivity.java
+++ b/src/org/thoughtcrime/securesms/GroupCreateActivity.java
@@ -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 {
+ private class FillExistingGroupInfoAsyncTask extends ProgressDialogAsyncTask {
- @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 recipientList = recipients.getRecipientsList();
if (recipientList != null) {
if (existingContacts == null)
- existingContacts = new HashSet(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();