diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml index 0bb07db5ca30e7ef6ae0ce2db76c5196e59e6384..6df393ec04e0da895387f0ff1e3414a785011eb4 100644 --- a/briar-android/src/main/AndroidManifest.xml +++ b/briar-android/src/main/AndroidManifest.xml @@ -179,7 +179,7 @@ android:name=".android.forum.CreateForumActivity" android:label="@string/create_forum_title" android:parentActivityName=".android.navdrawer.NavDrawerActivity" - android:windowSoftInputMode="stateVisible"> + android:windowSoftInputMode="adjustResize"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".android.navdrawer.NavDrawerActivity" diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java index 60ed47f5ab6c9a118439e07a4f324e4c255816ef..7b9bb80ce2dae32d1bc490f64e3191147f66e869 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java @@ -39,7 +39,7 @@ import org.briarproject.briar.android.privategroup.conversation.GroupConversatio import org.briarproject.briar.android.privategroup.creation.CreateGroupActivity; import org.briarproject.briar.android.privategroup.creation.CreateGroupFragment; import org.briarproject.briar.android.privategroup.creation.CreateGroupMessageFragment; -import org.briarproject.briar.android.privategroup.creation.GroupCreateModule; +import org.briarproject.briar.android.privategroup.creation.CreateGroupModule; import org.briarproject.briar.android.privategroup.creation.GroupInviteActivity; import org.briarproject.briar.android.privategroup.creation.GroupInviteFragment; import org.briarproject.briar.android.privategroup.invitation.GroupInvitationActivity; @@ -71,7 +71,7 @@ import dagger.Component; @Component( modules = {ActivityModule.class, ForumModule.class, SharingModule.class, BlogModule.class, ContactModule.class, GroupListModule.class, - GroupCreateModule.class, GroupInvitationModule.class, + CreateGroupModule.class, GroupInvitationModule.class, GroupConversationModule.class, GroupMemberModule.class, GroupRevealModule.class}, dependencies = AndroidComponent.class) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/BaseGroupInviteActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/BaseGroupInviteActivity.java deleted file mode 100644 index 315aed855bb74453e3b82f86488287aecc8d47ca..0000000000000000000000000000000000000000 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/BaseGroupInviteActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.briarproject.briar.android.privategroup.creation; - -import org.briarproject.bramble.api.contact.ContactId; -import org.briarproject.bramble.api.db.DbException; -import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; -import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; -import org.briarproject.briar.android.contactselection.ContactSelectorActivity; -import org.briarproject.briar.android.controller.handler.UiResultExceptionHandler; -import org.briarproject.briar.android.sharing.BaseMessageFragment.MessageFragmentListener; - -import java.util.Collection; - -import javax.inject.Inject; - -import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_INVITATION_MSG_LENGTH; - -@MethodsNotNullByDefault -@ParametersNotNullByDefault -public abstract class BaseGroupInviteActivity - extends ContactSelectorActivity implements MessageFragmentListener { - - @Inject - CreateGroupController controller; - - @Override - public void contactsSelected(Collection<ContactId> contacts) { - super.contactsSelected(contacts); - - showNextFragment(new CreateGroupMessageFragment()); - } - - @Override - public boolean onButtonClick(String message) { - if (groupId == null) - throw new IllegalStateException("GroupId was not initialized"); - controller.sendInvitation(groupId, contacts, message, - new UiResultExceptionHandler<Void, DbException>(this) { - @Override - public void onResultUi(Void result) { - setResult(RESULT_OK); - supportFinishAfterTransition(); - } - - @Override - public void onExceptionUi(DbException exception) { - setResult(RESULT_CANCELED); - handleDbException(exception); - } - }); - return true; - } - - @Override - public int getMaximumMessageLength() { - return MAX_GROUP_INVITATION_MSG_LENGTH; - } - -} diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupActivity.java index 30e80f8298a4ea6012b5e1e1470720729af0469d..6cc0c6e5774e690611956a9e2836ed83a2e78e8b 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupActivity.java @@ -9,16 +9,20 @@ import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; +import org.briarproject.briar.android.activity.BriarActivity; import org.briarproject.briar.android.controller.handler.UiResultExceptionHandler; import org.briarproject.briar.android.privategroup.conversation.GroupActivity; -import org.briarproject.briar.android.sharing.BaseMessageFragment.MessageFragmentListener; import javax.annotation.Nullable; +import javax.inject.Inject; @MethodsNotNullByDefault @ParametersNotNullByDefault -public class CreateGroupActivity extends BaseGroupInviteActivity implements - CreateGroupListener, MessageFragmentListener { +public class CreateGroupActivity extends BriarActivity + implements CreateGroupListener { + + @Inject + CreateGroupController controller; @Override public void injectActivity(ActivityComponent component) { @@ -29,32 +33,20 @@ public class CreateGroupActivity extends BaseGroupInviteActivity implements public void onCreate(@Nullable Bundle bundle) { super.onCreate(bundle); + setContentView(R.layout.activity_fragment_container); + if (bundle == null) { showInitialFragment(new CreateGroupFragment()); } } - @Override - public void onBackPressed() { - if (getSupportFragmentManager().getBackStackEntryCount() == 1) { - // At this point, the group had been created already, - // so don't allow to create it again. - openNewGroup(); - overridePendingTransition(R.anim.screen_old_in, - R.anim.screen_new_out); - } else { - super.onBackPressed(); - } - } - @Override public void onGroupNameChosen(String name) { controller.createGroup(name, new UiResultExceptionHandler<GroupId, DbException>(this) { @Override public void onResultUi(GroupId g) { - groupId = g; - switchToContactSelectorFragment(g); + openNewGroup(g); } @Override @@ -64,16 +56,10 @@ public class CreateGroupActivity extends BaseGroupInviteActivity implements }); } - private void switchToContactSelectorFragment(GroupId g) { - showNextFragment(GroupInviteFragment.newInstance(g)); - } - - private void openNewGroup() { + private void openNewGroup(GroupId g) { Intent i = new Intent(this, GroupActivity.class); - i.putExtra(GROUP_ID, groupId.getBytes()); + i.putExtra(GROUP_ID, g.getBytes()); startActivity(i); - // finish this activity, so we can't come back to it finish(); } - } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupCreateModule.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupModule.java similarity index 91% rename from briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupCreateModule.java rename to briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupModule.java index fc51ac8e914779bb4ad7eae556e674baf36237fc..9399958fe87aab56af861375e2a023297fe4d393 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupCreateModule.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupModule.java @@ -6,7 +6,7 @@ import dagger.Module; import dagger.Provides; @Module -public class GroupCreateModule { +public class CreateGroupModule { @ActivityScope @Provides diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteActivity.java index 9f6a092f51cdab6013b0ea407e13061498a76e8e..3da66f7cbebceba44233afe0043e716c228d1b26 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteActivity.java @@ -3,25 +3,43 @@ package org.briarproject.briar.android.privategroup.creation; import android.content.Intent; import android.os.Bundle; +import org.briarproject.bramble.api.contact.ContactId; +import org.briarproject.bramble.api.db.DbException; +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.briar.android.activity.ActivityComponent; +import org.briarproject.briar.android.contactselection.ContactSelectorActivity; +import org.briarproject.briar.android.controller.handler.UiResultExceptionHandler; import org.briarproject.briar.android.sharing.BaseMessageFragment.MessageFragmentListener; -public class GroupInviteActivity extends BaseGroupInviteActivity +import java.util.Collection; + +import javax.annotation.Nullable; +import javax.inject.Inject; + +import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_INVITATION_MSG_LENGTH; + +@MethodsNotNullByDefault +@ParametersNotNullByDefault +public class GroupInviteActivity extends ContactSelectorActivity implements MessageFragmentListener { + @Inject + CreateGroupController controller; + @Override public void injectActivity(ActivityComponent component) { component.inject(this); } @Override - public void onCreate(Bundle bundle) { + public void onCreate(@Nullable Bundle bundle) { super.onCreate(bundle); Intent i = getIntent(); byte[] g = i.getByteArrayExtra(GROUP_ID); - if (g == null) throw new IllegalStateException("No GroupId in intent."); + if (g == null) throw new IllegalStateException("No GroupId in intent"); groupId = new GroupId(g); if (bundle == null) { @@ -29,4 +47,36 @@ public class GroupInviteActivity extends BaseGroupInviteActivity } } + @Override + public void contactsSelected(Collection<ContactId> contacts) { + super.contactsSelected(contacts); + + showNextFragment(new CreateGroupMessageFragment()); + } + + @Override + public boolean onButtonClick(String message) { + if (groupId == null) + throw new IllegalStateException("GroupId was not initialized"); + controller.sendInvitation(groupId, contacts, message, + new UiResultExceptionHandler<Void, DbException>(this) { + @Override + public void onResultUi(Void result) { + setResult(RESULT_OK); + supportFinishAfterTransition(); + } + + @Override + public void onExceptionUi(DbException exception) { + setResult(RESULT_CANCELED); + handleDbException(exception); + } + }); + return true; + } + + @Override + public int getMaximumMessageLength() { + return MAX_GROUP_INVITATION_MSG_LENGTH; + } } diff --git a/briar-android/src/main/res/menu/group_actions.xml b/briar-android/src/main/res/menu/group_actions.xml index 2f4315a75220103e7fc590f3b112213753f50dea..1336c01de3136b635394fe7ea74fe769fc847cba 100644 --- a/briar-android/src/main/res/menu/group_actions.xml +++ b/briar-android/src/main/res/menu/group_actions.xml @@ -9,18 +9,18 @@ android:title="@string/groups_member_list" app:showAsAction="ifRoom"/> - <item - android:id="@+id/action_group_reveal" - android:icon="@drawable/ic_visibility_white" - android:title="@string/groups_reveal_contacts" - app:showAsAction="ifRoom"/> - <item android:id="@+id/action_group_invite" - android:icon="@drawable/ic_add_white" + android:icon="@drawable/social_share_white" android:title="@string/groups_invite_members" app:showAsAction="ifRoom"/> + <item + android:id="@+id/action_group_reveal" + android:icon="@drawable/ic_visibility_white" + android:title="@string/groups_reveal_contacts" + app:showAsAction="never"/> + <item android:id="@+id/action_group_leave" android:icon="@drawable/action_delete_white" diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 6e2bbd8eb95c2fd5e1443ab12580e91c0bc11687..8a652f477cca26c9e4a5fbf977ae505c1e7f52d9 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -204,7 +204,7 @@ <!-- Forums --> <string name="no_forums">You don\'t have any forums yet.\n\nWhy don\'t you create a new one yourself by tapping the + icon at the top?\n\nYou can also ask your contacts to share forums with you.</string> - <string name="create_forum_title">New Forum</string> + <string name="create_forum_title">Create Forum</string> <string name="choose_forum_hint">Choose a name for your forum</string> <string name="create_forum_button">Create Forum</string> <string name="forum_created_toast">Forum created</string>