diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java index c590eaddb..c2e4f113c 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java @@ -3,10 +3,16 @@ package org.briarproject.briar.android.activity; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Build; +import android.transition.Slide; +import android.transition.Transition; +import android.view.Gravity; +import android.view.Window; +import org.briarproject.briar.R; import org.briarproject.briar.android.controller.BriarController; import org.briarproject.briar.android.controller.DbController; import org.briarproject.briar.android.controller.handler.UiResultHandler; +import org.briarproject.briar.android.fragment.BaseFragment; import org.briarproject.briar.android.login.PasswordActivity; import org.briarproject.briar.android.panic.ExitActivity; @@ -44,7 +50,7 @@ public abstract class BriarActivity extends BaseActivity { super.onActivityResult(request, result, data); if (request == REQUEST_PASSWORD) { if (result == RESULT_OK) briarController.startAndBindService(); - else finish(); + else supportFinishAfterTransition(); } } @@ -53,11 +59,41 @@ public abstract class BriarActivity extends BaseActivity { super.onStart(); if (!briarController.hasEncryptionKey() && !isFinishing()) { Intent i = new Intent(this, PasswordActivity.class); - i.setFlags(FLAG_ACTIVITY_NO_ANIMATION | FLAG_ACTIVITY_SINGLE_TOP); + i.setFlags(FLAG_ACTIVITY_SINGLE_TOP); startActivityForResult(i, REQUEST_PASSWORD); } } + protected void showInitialFragment(BaseFragment f) { + getSupportFragmentManager().beginTransaction() + .replace(R.id.fragmentContainer, f, f.getUniqueTag()) + .commit(); + } + + public void showNextFragment(BaseFragment f) { + getSupportFragmentManager().beginTransaction() + .setCustomAnimations(R.anim.step_next_in, + R.anim.step_previous_out, R.anim.step_previous_in, + R.anim.step_next_out) + .replace(R.id.fragmentContainer, f, f.getUniqueTag()) + .addToBackStack(f.getUniqueTag()) + .commit(); + } + + public void setSceneTransitionAnimation() { + if (Build.VERSION.SDK_INT < 21) return; + Transition slide = new Slide(Gravity.RIGHT); + slide.excludeTarget(android.R.id.statusBarBackground, true); + slide.excludeTarget(android.R.id.navigationBarBackground, true); + Window window = getWindow(); + window.requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); + window.setExitTransition(slide); + window.setEnterTransition(slide); + window.setTransitionBackgroundFadeDuration(getResources() + .getInteger(android.R.integer.config_longAnimTime)); + window.setBackgroundDrawableResource(android.R.color.transparent); + } + protected void signOut(final boolean removeFromRecentApps) { briarController.signOut(new UiResultHandler(this) { @Override @@ -83,7 +119,7 @@ public abstract class BriarActivity extends BaseActivity { private void finishAndExit() { if (Build.VERSION.SDK_INT >= 21) finishAndRemoveTask(); - else finish(); + else supportFinishAfterTransition(); LOG.info("Exiting"); System.exit(0); } @@ -98,7 +134,7 @@ public abstract class BriarActivity extends BaseActivity { runOnUiThreadUnlessDestroyed(new Runnable() { @Override public void run() { - finish(); + supportFinishAfterTransition(); } }); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarFragmentActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarFragmentActivity.java index 5b18421df..fa211156d 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarFragmentActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarFragmentActivity.java @@ -1,8 +1,6 @@ package org.briarproject.briar.android.activity; -import android.support.annotation.AnimRes; import android.support.v4.app.FragmentTransaction; -import android.support.v7.app.AlertDialog; import org.briarproject.briar.R; import org.briarproject.briar.android.contact.ContactListFragment; @@ -49,31 +47,15 @@ public abstract class BriarFragmentActivity extends BriarActivity { else startFragment(fragment, true); } - protected void showMessageDialog(int titleStringId, int msgStringId) { - // TODO replace with custom dialog fragment ? - AlertDialog.Builder builder = new AlertDialog.Builder(this, - R.style.BriarDialogTheme); - builder.setTitle(titleStringId); - builder.setMessage(msgStringId); - builder.setPositiveButton(R.string.ok, null); - AlertDialog dialog = builder.create(); - dialog.show(); - } - - public void startFragment(BaseFragment fragment, - boolean isAddedToBackStack) { - startFragment(fragment, 0, 0, isAddedToBackStack); - } - - private void startFragment(BaseFragment fragment, - @AnimRes int inAnimation, @AnimRes int outAnimation, + protected void startFragment(BaseFragment fragment, boolean isAddedToBackStack) { FragmentTransaction trans = - getSupportFragmentManager().beginTransaction(); - if (inAnimation != 0 && outAnimation != 0) { - trans.setCustomAnimations(inAnimation, 0, 0, outAnimation); - } - trans.replace(R.id.content_fragment, fragment, fragment.getUniqueTag()); + getSupportFragmentManager().beginTransaction() + .setCustomAnimations(R.anim.dialog_in, + R.anim.dialog_out, R.anim.dialog_in, + R.anim.dialog_out) + .replace(R.id.fragmentContainer, fragment, + fragment.getUniqueTag()); if (isAddedToBackStack) { trans.addToBackStack(fragment.getUniqueTag()); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogActivity.java index ab6c7cc0c..d6234db3c 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogActivity.java @@ -57,10 +57,7 @@ public class BlogActivity extends BriarActivity implements } if (state == null) { - BlogFragment f = BlogFragment.newInstance(groupId); - getSupportFragmentManager().beginTransaction() - .replace(R.id.fragmentContainer, f, f.getUniqueTag()) - .commit(); + showInitialFragment(BlogFragment.newInstance(groupId)); } } @@ -72,10 +69,7 @@ public class BlogActivity extends BriarActivity implements @Override public void onBlogPostClick(BlogPostItem post) { BlogPostFragment f = BlogPostFragment.newInstance(post.getId()); - getSupportFragmentManager().beginTransaction() - .replace(R.id.fragmentContainer, f, f.getUniqueTag()) - .addToBackStack(f.getUniqueTag()) - .commit(); + showNextFragment(f); } @Override diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java index 587a46ba0..d00b7e0ac 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java @@ -142,30 +142,25 @@ public class BlogFragment extends BaseFragment @Override public boolean onOptionsItemSelected(final MenuItem item) { - ActivityOptionsCompat options = - makeCustomAnimation(getActivity(), - android.R.anim.slide_in_left, - android.R.anim.slide_out_right); switch (item.getItemId()) { case R.id.action_write_blog_post: Intent i = new Intent(getActivity(), WriteBlogPostActivity.class); i.putExtra(GROUP_ID, groupId.getBytes()); - startActivityForResult(i, REQUEST_WRITE_POST, - options.toBundle()); + startActivityForResult(i, REQUEST_WRITE_POST); return true; case R.id.action_blog_share: Intent i2 = new Intent(getActivity(), ShareBlogActivity.class); i2.setFlags(FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP); i2.putExtra(GROUP_ID, groupId.getBytes()); - startActivityForResult(i2, REQUEST_SHARE, options.toBundle()); + startActivityForResult(i2, REQUEST_SHARE); return true; case R.id.action_blog_sharing_status: Intent i3 = new Intent(getActivity(), BlogSharingStatusActivity.class); i3.setFlags(FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP); i3.putExtra(GROUP_ID, groupId.getBytes()); - startActivity(i3, options.toBundle()); + startActivity(i3); return true; case R.id.action_blog_delete: showDeleteDialog(); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java index 5187537d9..ba1d11e68 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java @@ -137,15 +137,14 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder { i.putExtra(GROUP_ID, item.getGroupId().getBytes()); i.putExtra(POST_ID, item.getId().getBytes()); - // work-around for android bug #224270 if (Build.VERSION.SDK_INT >= 23) { ActivityOptionsCompat options = makeSceneTransitionAnimation((Activity) ctx, layout, getTransitionName(item.getId())); - ActivityCompat - .startActivity((Activity) ctx, i, - options.toBundle()); + ActivityCompat.startActivity((Activity) ctx, i, + options.toBundle()); } else { + // work-around for android bug #224270 ctx.startActivity(i); } } @@ -167,6 +166,7 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder { reblogger.setDate(item.getTimestamp()); reblogger.setBlogLink(item.getGroupId()); reblogger.setVisibility(VISIBLE); + reblogger.setPersona(AuthorView.REBLOGGER); author.setPersona(AuthorView.COMMENTER); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java index 0eee3cd8b..42eadebbd 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java @@ -4,7 +4,6 @@ import android.content.Intent; import android.os.Bundle; import android.support.annotation.UiThread; import android.support.design.widget.Snackbar; -import android.support.v4.app.ActivityOptionsCompat; import android.support.v4.content.ContextCompat; import android.support.v7.widget.LinearLayoutManager; import android.view.LayoutInflater; @@ -36,7 +35,6 @@ import javax.inject.Inject; import static android.app.Activity.RESULT_OK; import static android.support.design.widget.Snackbar.LENGTH_LONG; -import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation; import static org.briarproject.briar.android.activity.BriarActivity.GROUP_ID; import static org.briarproject.briar.android.blog.BlogActivity.REQUEST_WRITE_POST; @@ -169,28 +167,24 @@ public class FeedFragment extends BaseFragment implements @Override public boolean onOptionsItemSelected(final MenuItem item) { if (personalBlog == null) return false; - ActivityOptionsCompat options = - makeCustomAnimation(getActivity(), android.R.anim.slide_in_left, - android.R.anim.slide_out_right); switch (item.getItemId()) { case R.id.action_write_blog_post: Intent i1 = new Intent(getActivity(), WriteBlogPostActivity.class); i1.putExtra(GROUP_ID, personalBlog.getId().getBytes()); - startActivityForResult(i1, REQUEST_WRITE_POST, - options.toBundle()); + startActivityForResult(i1, REQUEST_WRITE_POST); return true; case R.id.action_rss_feeds_import: Intent i2 = new Intent(getActivity(), RssFeedImportActivity.class); i2.putExtra(GROUP_ID, personalBlog.getId().getBytes()); - startActivity(i2, options.toBundle()); + startActivity(i2); return true; case R.id.action_rss_feeds_manage: Intent i3 = new Intent(getActivity(), RssFeedManageActivity.class); i3.putExtra(GROUP_ID, personalBlog.getId().getBytes()); - startActivity(i3, options.toBundle()); + startActivity(i3); return true; default: return super.onOptionsItemSelected(item); @@ -225,10 +219,7 @@ public class FeedFragment extends BaseFragment implements public void onBlogPostClick(BlogPostItem post) { FeedPostFragment f = FeedPostFragment.newInstance(post.getGroupId(), post.getId()); - getActivity().getSupportFragmentManager().beginTransaction() - .replace(R.id.content_fragment, f, f.getUniqueTag()) - .addToBackStack(f.getUniqueTag()) - .commit(); + showNextFragment(f); } @Override diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogActivity.java index 94194d682..27e8f19ad 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogActivity.java @@ -1,11 +1,7 @@ package org.briarproject.briar.android.blog; -import android.annotation.TargetApi; import android.content.Intent; -import android.os.Build; import android.os.Bundle; -import android.transition.Fade; -import android.transition.Transition; import android.view.MenuItem; import org.briarproject.bramble.api.sync.GroupId; @@ -23,10 +19,7 @@ public class ReblogActivity extends BriarActivity implements @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - if (Build.VERSION.SDK_INT >= 21) { - setTransition(); - } + setSceneTransitionAnimation(); Intent intent = getIntent(); byte[] groupId = intent.getByteArrayExtra(GROUP_ID); @@ -41,10 +34,7 @@ public class ReblogActivity extends BriarActivity implements if (savedInstanceState == null) { ReblogFragment f = ReblogFragment .newInstance(new GroupId(groupId), new MessageId(postId)); - getSupportFragmentManager() - .beginTransaction() - .add(R.id.fragmentContainer, f) - .commit(); + showInitialFragment(f); } } @@ -69,13 +59,4 @@ public class ReblogActivity extends BriarActivity implements } - @TargetApi(21) - private void setTransition() { - Transition fade = new Fade(); - fade.excludeTarget(android.R.id.statusBarBackground, true); - fade.excludeTarget(R.id.action_bar_container, true); - fade.excludeTarget(android.R.id.navigationBarBackground, true); - getWindow().setExitTransition(fade); - getWindow().setEnterTransition(fade); - } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedManageActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedManageActivity.java index 522901857..10e37d6f2 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedManageActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedManageActivity.java @@ -3,8 +3,6 @@ package org.briarproject.briar.android.blog; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.Snackbar; -import android.support.v4.app.ActivityCompat; -import android.support.v4.app.ActivityOptionsCompat; import android.support.v7.widget.LinearLayoutManager; import android.view.Menu; import android.view.MenuInflater; @@ -26,7 +24,6 @@ import java.util.logging.Logger; import javax.inject.Inject; import static android.support.design.widget.Snackbar.LENGTH_LONG; -import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation; import static java.util.logging.Level.WARNING; public class RssFeedManageActivity extends BriarActivity @@ -89,13 +86,9 @@ public class RssFeedManageActivity extends BriarActivity onBackPressed(); return true; case R.id.action_rss_feeds_import: - Intent i = - new Intent(this, RssFeedImportActivity.class); + Intent i = new Intent(this, RssFeedImportActivity.class); i.putExtra(GROUP_ID, groupId.getBytes()); - ActivityOptionsCompat options = - makeCustomAnimation(this, android.R.anim.slide_in_left, - android.R.anim.slide_out_right); - ActivityCompat.startActivity(this, i, options.toBundle()); + startActivity(i); return true; default: return super.onOptionsItemSelected(item); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java index af242e945..a8e7dd1f0 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java @@ -120,7 +120,6 @@ public class ContactListFragment extends BaseFragment implements EventListener { ContactId contactId = item.getContact().getId(); i.putExtra(CONTACT_ID, contactId.getInt()); - // work-around for android bug #224270 if (Build.VERSION.SDK_INT >= 23) { ContactListItemViewHolder holder = (ContactListItemViewHolder) list @@ -140,7 +139,8 @@ public class ContactListFragment extends BaseFragment implements EventListener { ActivityCompat.startActivity(getActivity(), i, options.toBundle()); } else { - getActivity().startActivity(i); + // work-around for android bug #224270 + startActivity(i); } } }; diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java index 7d832eff8..11780653a 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java @@ -5,10 +5,7 @@ import android.content.Intent; import android.os.Bundle; import android.support.annotation.UiThread; import android.support.design.widget.Snackbar; -import android.support.v4.app.ActivityCompat; -import android.support.v4.app.ActivityOptionsCompat; import android.support.v4.content.ContextCompat; -import android.support.v4.view.ViewCompat; import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; import android.support.v7.widget.ActionMenuView; @@ -55,7 +52,6 @@ import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.activity.BriarActivity; import org.briarproject.briar.android.contact.ConversationAdapter.ConversationListener; import org.briarproject.briar.android.introduction.IntroductionActivity; -import org.briarproject.briar.android.util.UiUtils; import org.briarproject.briar.android.view.BriarRecyclerView; import org.briarproject.briar.android.view.TextInputView; import org.briarproject.briar.android.view.TextInputView.TextInputListener; @@ -100,12 +96,14 @@ import im.delight.android.identicons.IdenticonDrawable; import uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt; import uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt.OnHidePromptListener; -import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation; +import static android.support.v4.view.ViewCompat.setTransitionName; import static android.support.v7.util.SortedList.INVALID_POSITION; import static android.widget.Toast.LENGTH_SHORT; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; import static org.briarproject.briar.android.settings.SettingsFragment.SETTINGS_NAMESPACE; +import static org.briarproject.briar.android.util.UiUtils.getAvatarTransitionName; +import static org.briarproject.briar.android.util.UiUtils.getBulbTransitionName; import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_BODY_LENGTH; @MethodsNotNullByDefault @@ -117,7 +115,7 @@ public class ConversationActivity extends BriarActivity private static final Logger LOG = Logger.getLogger(ConversationActivity.class.getName()); - private static final int REQUEST_CODE_INTRODUCTION = 1; + private static final int REQUEST_CODE_INTRODUCTION = 2; private static final String SHOW_ONBOARDING_INTRODUCTION = "showOnboardingIntroduction"; @@ -168,6 +166,7 @@ public class ConversationActivity extends BriarActivity @Override public void onCreate(@Nullable Bundle state) { super.onCreate(state); + setSceneTransitionAnimation(); Intent i = getIntent(); int id = i.getIntExtra(CONTACT_ID, -1); @@ -194,10 +193,8 @@ public class ConversationActivity extends BriarActivity ab.setDisplayShowTitleEnabled(false); } - ViewCompat.setTransitionName(toolbarAvatar, - UiUtils.getAvatarTransitionName(contactId)); - ViewCompat.setTransitionName(toolbarStatus, - UiUtils.getBulbTransitionName(contactId)); + setTransitionName(toolbarAvatar, getAvatarTransitionName(contactId)); + setTransitionName(toolbarStatus, getBulbTransitionName(contactId)); adapter = new ConversationAdapter(this, this); list = (BriarRecyclerView) findViewById(R.id.conversationView); @@ -267,13 +264,8 @@ public class ConversationActivity extends BriarActivity case R.id.action_introduction: if (contactId == null) return false; Intent intent = new Intent(this, IntroductionActivity.class); - intent.putExtra(IntroductionActivity.CONTACT_ID, - contactId.getInt()); - ActivityOptionsCompat options = - makeCustomAnimation(this, android.R.anim.slide_in_left, - android.R.anim.slide_out_right); - ActivityCompat.startActivityForResult(this, intent, - REQUEST_CODE_INTRODUCTION, options.toBundle()); + intent.putExtra(CONTACT_ID, contactId.getInt()); + startActivityForResult(intent, REQUEST_CODE_INTRODUCTION); return true; case R.id.action_social_remove_person: askToRemoveContact(); @@ -283,13 +275,6 @@ public class ConversationActivity extends BriarActivity } } - @Override - public void onBackPressed() { - // FIXME disabled exit transition, because it doesn't work for some reason #318 - //supportFinishAfterTransition(); - finish(); - } - private void loadContactDetails() { runOnDbThread(new Runnable() { @Override @@ -714,7 +699,7 @@ public class ConversationActivity extends BriarActivity String deleted = getString(R.string.contact_deleted_toast); Toast.makeText(ConversationActivity.this, deleted, LENGTH_SHORT) .show(); - finish(); + supportFinishAfterTransition(); } }); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java index 1c9294fe2..ec318ebe3 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java @@ -1,11 +1,9 @@ package org.briarproject.briar.android.contactselection; import android.content.Context; -import android.os.Build; import android.os.Bundle; import android.support.annotation.CallSuper; import android.support.v7.widget.LinearLayoutManager; -import android.transition.Fade; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -69,10 +67,6 @@ public abstract class BaseContactSelectorFragment= 21) { - setExitTransition(new Fade()); - } - list = (BriarRecyclerView) contentView.findViewById(R.id.list); list.setLayoutManager(new LinearLayoutManager(getActivity())); list.setEmptyText(getString(R.string.no_contacts_selector)); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorActivity.java index 2eaaecbaf..809e8f66f 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorActivity.java @@ -1,11 +1,9 @@ package org.briarproject.briar.android.contactselection; -import android.os.Build; import android.os.Bundle; import android.support.annotation.CallSuper; import android.support.annotation.LayoutRes; import android.support.annotation.UiThread; -import android.transition.Fade; import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; @@ -39,10 +37,6 @@ public abstract class ContactSelectorActivity setContentView(getLayout()); - if (Build.VERSION.SDK_INT >= 21) { - getWindow().setExitTransition(new Fade()); - } - if (bundle != null) { // restore group ID if it was saved byte[] groupBytes = bundle.getByteArray(GROUP_ID); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/CreateForumActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/CreateForumActivity.java index 86822c7a2..396746b21 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/forum/CreateForumActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/CreateForumActivity.java @@ -158,7 +158,7 @@ public class CreateForumActivity extends BriarActivity startActivity(i); Toast.makeText(CreateForumActivity.this, R.string.forum_created_toast, LENGTH_LONG).show(); - finish(); + supportFinishAfterTransition(); } }); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java index bf079bbf0..95c80e49c 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java @@ -6,8 +6,6 @@ import android.content.Intent; import android.os.Bundle; import android.support.annotation.LayoutRes; import android.support.annotation.StringRes; -import android.support.v4.app.ActivityCompat; -import android.support.v4.app.ActivityOptionsCompat; import android.support.v7.app.AlertDialog; import android.support.v7.widget.LinearLayoutManager; import android.view.Menu; @@ -37,7 +35,6 @@ import javax.inject.Inject; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; import static android.content.Intent.FLAG_ACTIVITY_SINGLE_TOP; -import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation; import static android.widget.Toast.LENGTH_SHORT; import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_BODY_LENGTH; @@ -124,8 +121,6 @@ public class ForumActivity extends @Override public boolean onOptionsItemSelected(final MenuItem item) { - ActivityOptionsCompat options = makeCustomAnimation(this, - android.R.anim.slide_in_left, android.R.anim.slide_out_right); // Handle presses on the action bar items switch (item.getItemId()) { case R.id.action_forum_compose_post: @@ -135,14 +130,13 @@ public class ForumActivity extends Intent i2 = new Intent(this, ShareForumActivity.class); i2.setFlags(FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP); i2.putExtra(GROUP_ID, groupId.getBytes()); - ActivityCompat.startActivityForResult(this, i2, - REQUEST_FORUM_SHARED, options.toBundle()); + startActivityForResult(i2, REQUEST_FORUM_SHARED); return true; case R.id.action_forum_sharing_status: Intent i3 = new Intent(this, ForumSharingStatusActivity.class); i3.setFlags(FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP); i3.putExtra(GROUP_ID, groupId.getBytes()); - ActivityCompat.startActivity(this, i3, options.toBundle()); + startActivity(i3); return true; case R.id.action_forum_delete: showUnsubscribeDialog(); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java index 8a5923119..4a3821aa1 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java @@ -71,6 +71,9 @@ public abstract class BaseFragment extends Fragment @UiThread ActivityComponent getActivityComponent(); + @UiThread + void showNextFragment(BaseFragment f); + @UiThread void onFragmentCreated(String tag); } @@ -92,4 +95,9 @@ public abstract class BaseFragment extends Fragment }); } } + + protected void showNextFragment(BaseFragment f) { + listener.showNextFragment(f); + } + } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/fragment/SignOutFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/fragment/SignOutFragment.java new file mode 100644 index 000000000..7999679ae --- /dev/null +++ b/briar-android/src/main/java/org/briarproject/briar/android/fragment/SignOutFragment.java @@ -0,0 +1,33 @@ +package org.briarproject.briar.android.fragment; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import org.briarproject.briar.R; +import org.briarproject.briar.android.activity.ActivityComponent; + +public class SignOutFragment extends BaseFragment { + + private static final String TAG = SignOutFragment.class.getName(); + + @Override + public View onCreateView(LayoutInflater inflater, + @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_sign_out, container, false); + } + + @Override + public String getUniqueTag() { + return TAG; + } + + @Override + public void injectFragment(ActivityComponent component) { + // no need to inject + } + +} diff --git a/briar-android/src/main/java/org/briarproject/briar/android/introduction/ContactChooserFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/introduction/ContactChooserFragment.java index 79f78b7cb..7bfa80f96 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/introduction/ContactChooserFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/introduction/ContactChooserFragment.java @@ -1,10 +1,8 @@ package org.briarproject.briar.android.introduction; import android.content.Context; -import android.os.Build; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; -import android.transition.Fade; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -31,13 +29,13 @@ import java.util.logging.Logger; import javax.inject.Inject; import static java.util.logging.Level.WARNING; +import static org.briarproject.briar.android.contact.ConversationActivity.CONTACT_ID; public class ContactChooserFragment extends BaseFragment { public static final String TAG = ContactChooserFragment.class.getName(); private static final Logger LOG = Logger.getLogger(TAG); - private IntroductionActivity introductionActivity; private BriarRecyclerView list; private ContactListAdapter adapter; private ContactId contactId; @@ -51,11 +49,12 @@ public class ContactChooserFragment extends BaseFragment { @Inject volatile ConnectionRegistry connectionRegistry; - public static ContactChooserFragment newInstance() { + public static ContactChooserFragment newInstance(ContactId id) { Bundle args = new Bundle(); ContactChooserFragment fragment = new ContactChooserFragment(); + args.putInt(CONTACT_ID, id.getInt()); fragment.setArguments(args); return fragment; } @@ -63,7 +62,6 @@ public class ContactChooserFragment extends BaseFragment { @Override public void onAttach(Context context) { super.onAttach(context); - introductionActivity = (IntroductionActivity) context; } @Override @@ -72,17 +70,13 @@ public class ContactChooserFragment extends BaseFragment { View contentView = inflater.inflate(R.layout.list, container, false); - if (Build.VERSION.SDK_INT >= 21) { - setExitTransition(new Fade()); - } - OnContactClickListener onContactClickListener = new OnContactClickListener() { @Override public void onItemClick(View view, ContactListItem item) { if (c1 == null) throw new IllegalStateException(); Contact c2 = item.getContact(); - introductionActivity.showMessageScreen(view, c1, c2); + showMessageScreen(c1, c2); } }; adapter = new ContactListAdapter(getActivity(), onContactClickListener); @@ -92,7 +86,7 @@ public class ContactChooserFragment extends BaseFragment { list.setAdapter(adapter); list.setEmptyText(getString(R.string.no_contacts)); - contactId = introductionActivity.getContactId(); + contactId = new ContactId(getArguments().getInt(CONTACT_ID)); return contentView; } @@ -121,7 +115,7 @@ public class ContactChooserFragment extends BaseFragment { } private void loadContacts() { - introductionActivity.runOnDbThread(new Runnable() { + listener.runOnDbThread(new Runnable() { @Override public void run() { try { @@ -149,7 +143,7 @@ public class ContactChooserFragment extends BaseFragment { } private void displayContacts(final List contacts) { - introductionActivity.runOnUiThreadUnlessDestroyed(new Runnable() { + runOnUiThreadUnlessDestroyed(new Runnable() { @Override public void run() { if (contacts.isEmpty()) list.showData(); @@ -158,4 +152,11 @@ public class ContactChooserFragment extends BaseFragment { }); } + private void showMessageScreen(Contact c1, Contact c2) { + IntroductionMessageFragment messageFragment = + IntroductionMessageFragment + .newInstance(c1.getId().getInt(), c2.getId().getInt()); + showNextFragment(messageFragment); + } + } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionActivity.java index 2b66f8e2e..05c07d4b1 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionActivity.java @@ -1,28 +1,19 @@ package org.briarproject.briar.android.introduction; import android.content.Intent; -import android.os.Build; import android.os.Bundle; -import android.support.v4.app.FragmentManager; -import android.transition.ChangeBounds; -import android.transition.Fade; -import android.view.MenuItem; -import android.view.View; -import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.activity.BriarActivity; import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener; +import static org.briarproject.briar.android.contact.ConversationActivity.CONTACT_ID; + public class IntroductionActivity extends BriarActivity implements BaseFragmentListener { - public static final String CONTACT_ID = "briar.CONTACT_ID"; - - private ContactId contactId; - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -30,16 +21,12 @@ public class IntroductionActivity extends BriarActivity Intent intent = getIntent(); int id = intent.getIntExtra(CONTACT_ID, -1); if (id == -1) throw new IllegalStateException("No ContactId"); - contactId = new ContactId(id); + ContactId contactId = new ContactId(id); setContentView(R.layout.activity_fragment_container); if (savedInstanceState == null) { - getSupportFragmentManager() - .beginTransaction() - .add(R.id.fragmentContainer, - ContactChooserFragment.newInstance()) - .commit(); + showInitialFragment(ContactChooserFragment.newInstance(contactId)); } } @@ -53,55 +40,4 @@ public class IntroductionActivity extends BriarActivity } - @Override - public boolean onOptionsItemSelected(final MenuItem item) { - // Handle presses on the action bar items - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - @Override - public void onBackPressed() { - FragmentManager fm = getSupportFragmentManager(); - if (fm.getBackStackEntryCount() == 1) { - fm.popBackStack(); - } else { - super.onBackPressed(); - } - } - - ContactId getContactId() { - return contactId; - } - - void showMessageScreen(View view, Contact c1, Contact c2) { - - IntroductionMessageFragment messageFragment = - IntroductionMessageFragment - .newInstance(c1.getId().getInt(), c2.getId().getInt()); - - if (Build.VERSION.SDK_INT >= 21) { - messageFragment.setSharedElementEnterTransition(new ChangeBounds()); - messageFragment.setEnterTransition(new Fade()); - messageFragment.setSharedElementReturnTransition( - new ChangeBounds()); - } - - getSupportFragmentManager() - .beginTransaction() - .setCustomAnimations(android.R.anim.fade_in, - android.R.anim.fade_out, - android.R.anim.slide_in_left, - android.R.anim.slide_out_right) - .addSharedElement(view, "avatar") - .replace(R.id.fragmentContainer, messageFragment, - ContactChooserFragment.TAG) - .addToBackStack(null) - .commit(); - } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java index c50db5a15..e5a624cb0 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java @@ -4,6 +4,7 @@ import android.content.Context; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; @@ -92,8 +93,6 @@ public class IntroductionMessageFragment extends BaseFragment // inflate view View v = inflater.inflate(R.layout.introduction_message, container, false); - - // show progress bar until contacts have been loaded ui = new ViewHolder(v); ui.text.setVisibility(GONE); ui.message.setSendButtonEnabled(false); @@ -174,6 +173,18 @@ public class IntroductionMessageFragment extends BaseFragment }); } + @Override + public boolean onOptionsItemSelected(final MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + introductionActivity.hideSoftKeyboard(ui.message); + introductionActivity.onBackPressed(); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + @Override public void onSendClick(String text) { // disable button to prevent accidental double invitations diff --git a/briar-android/src/main/java/org/briarproject/briar/android/invitation/AddContactActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/invitation/AddContactActivity.java index b3e42e085..fbb2c9d3b 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/invitation/AddContactActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/invitation/AddContactActivity.java @@ -151,7 +151,7 @@ public class AddContactActivity extends BriarActivity String format = getString(R.string.contact_added_toast); String text = String.format(format, contactName); Toast.makeText(this, text, LENGTH_LONG).show(); - finish(); + supportFinishAfterTransition(); } @Override diff --git a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/KeyAgreementActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/KeyAgreementActivity.java index 7d786bf2c..9637668a0 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/KeyAgreementActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/KeyAgreementActivity.java @@ -21,6 +21,7 @@ import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.activity.BriarFragmentActivity; +import org.briarproject.briar.android.fragment.BaseFragment; import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener; import org.briarproject.briar.android.keyagreement.IntroFragment.IntroScreenSeenListener; @@ -41,9 +42,6 @@ public class KeyAgreementActivity extends BriarFragmentActivity implements private static final Logger LOG = Logger.getLogger(KeyAgreementActivity.class.getName()); - private static final int STEP_INTRO = 1; - private static final int STEP_QR = 2; - @Inject EventBus eventBus; @@ -70,18 +68,8 @@ public class KeyAgreementActivity extends BriarFragmentActivity implements getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setTitle(R.string.add_contact_title); - if (state == null) showStep(STEP_INTRO); - } - - private void showStep(int step) { - switch (step) { - case STEP_QR: - startFragment(ShowQrCodeFragment.newInstance(), true); - break; - case STEP_INTRO: - default: - startFragment(IntroFragment.newInstance(), true); - break; + if (state == null) { + showInitialFragment(IntroFragment.newInstance()); } } @@ -108,18 +96,15 @@ public class KeyAgreementActivity extends BriarFragmentActivity implements } } - @Override - public void onBackPressed() { - if (getSupportFragmentManager().getBackStackEntryCount() == 1) { - supportFinishAfterTransition(); - } else { - super.onBackPressed(); - } - } - @Override public void showNextScreen() { - showStep(STEP_QR); + // FIXME with #288 +// showNextFragment(ShowQrCodeFragment.newInstance()); + BaseFragment f = ShowQrCodeFragment.newInstance(); + getSupportFragmentManager().beginTransaction() + .replace(R.id.fragmentContainer, f, f.getUniqueTag()) + .addToBackStack(f.getUniqueTag()) + .commit(); } @Override @@ -173,7 +158,7 @@ public class KeyAgreementActivity extends BriarFragmentActivity implements String text = String.format(format, contactName); Toast.makeText(KeyAgreementActivity.this, text, LENGTH_LONG) .show(); - finish(); + supportFinishAfterTransition(); } }); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/ChangePasswordActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/login/ChangePasswordActivity.java index 6b6c717fe..6bd309d5c 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/login/ChangePasswordActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/login/ChangePasswordActivity.java @@ -139,7 +139,7 @@ public class ChangePasswordActivity extends BaseActivity R.string.password_changed, Toast.LENGTH_LONG).show(); setResult(RESULT_OK); - finish(); + supportFinishAfterTransition(); } else { tryAgain(); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java index 3606f077f..a67ac56de 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java @@ -42,6 +42,7 @@ public class PasswordActivity extends BaseActivity { @Override public void onCreate(Bundle state) { super.onCreate(state); + overridePendingTransition(R.anim.dialog_in, R.anim.dialog_out); if (!passwordController.accountExists()) { deleteAccount(); @@ -97,7 +98,7 @@ public class PasswordActivity extends BaseActivity { passwordController.deleteAccount(this); setResult(RESULT_CANCELED); startActivity(new Intent(this, SetupActivity.class)); - finish(); + supportFinishAfterTransition(); } public void onSignInClick(View v) { @@ -132,7 +133,9 @@ public class PasswordActivity extends BaseActivity { public void onResultUi(@NonNull Boolean result) { if (result) { setResult(RESULT_OK); - finish(); + supportFinishAfterTransition(); + overridePendingTransition(R.anim.screen_new_in, + R.anim.screen_old_out); } else { tryAgain(); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/SetupActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/login/SetupActivity.java index be3627dc8..1c2ad3c17 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/login/SetupActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/login/SetupActivity.java @@ -50,6 +50,7 @@ public class SetupActivity extends BaseActivity implements OnClickListener, @Override public void onCreate(Bundle state) { super.onCreate(state); + overridePendingTransition(R.anim.dialog_in, R.anim.dialog_out); setContentView(R.layout.activity_setup); nicknameEntryWrapper = @@ -149,6 +150,7 @@ public class SetupActivity extends BaseActivity implements OnClickListener, Intent i = new Intent(this, NavDrawerActivity.class); i.setFlags(FLAG_ACTIVITY_NEW_TASK); startActivity(i); - finish(); + supportFinishAfterTransition(); + overridePendingTransition(R.anim.screen_new_in, R.anim.screen_old_out); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java index e2edf7c98..25a02e6e5 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java @@ -1,13 +1,11 @@ package org.briarproject.briar.android.navdrawer; -import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; import android.content.res.Configuration; -import android.content.res.Resources; import android.os.Bundle; import android.support.design.widget.NavigationView; import android.support.design.widget.NavigationView.OnNavigationItemSelectedListener; +import android.support.v4.content.ContextCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; @@ -32,6 +30,7 @@ import org.briarproject.briar.android.blog.FeedFragment; import org.briarproject.briar.android.contact.ContactListFragment; import org.briarproject.briar.android.forum.ForumListFragment; import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener; +import org.briarproject.briar.android.fragment.SignOutFragment; import org.briarproject.briar.android.privategroup.list.GroupListFragment; import org.briarproject.briar.android.settings.SettingsActivity; @@ -56,16 +55,13 @@ public class NavDrawerActivity extends BriarFragmentActivity implements private static final Logger LOG = Logger.getLogger(NavDrawerActivity.class.getName()); - private final static String PREF_SEEN_WELCOME_MESSAGE = "welcome_message"; - private ActionBarDrawerToggle drawerToggle; @Inject NavDrawerController controller; private DrawerLayout drawerLayout; - private TextView progressTitle; - private ViewGroup progressViewGroup; + private NavigationView navigation; private List transports; private BaseAdapter transportsAdapter; @@ -101,11 +97,8 @@ public class NavDrawerActivity extends BriarFragmentActivity implements Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); - NavigationView navigation = - (NavigationView) findViewById(R.id.navigation); + navigation = (NavigationView) findViewById(R.id.navigation); GridView transportsView = (GridView) findViewById(R.id.transportsView); - progressTitle = (TextView) findViewById(R.id.title_progress_bar); - progressViewGroup = (ViewGroup) findViewById(R.id.container_progress); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); @@ -120,8 +113,6 @@ public class NavDrawerActivity extends BriarFragmentActivity implements initializeTransports(getLayoutInflater()); transportsView.setAdapter(transportsAdapter); - welcomeMessageCheck(); - if (state == null) { navigation.setCheckedItem(R.id.nav_btn_contacts); startFragment(ContactListFragment.newInstance()); @@ -131,15 +122,6 @@ public class NavDrawerActivity extends BriarFragmentActivity implements } } - private void welcomeMessageCheck() { - SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE); - if (!prefs.getBoolean(PREF_SEEN_WELCOME_MESSAGE, false)) { - showMessageDialog(R.string.dialog_title_welcome, - R.string.dialog_welcome_message); - prefs.edit().putBoolean(PREF_SEEN_WELCOME_MESSAGE, true).apply(); - } - } - @Override public void onStart() { super.onStart(); @@ -155,7 +137,7 @@ public class NavDrawerActivity extends BriarFragmentActivity implements } private void loadFragment(int fragmentId) { - // TODO re-use fragments from the manager when possible + // TODO re-use fragments from the manager when possible (#606) switch (fragmentId) { case R.id.nav_btn_contacts: startFragment(ContactListFragment.newInstance()); @@ -202,7 +184,7 @@ public class NavDrawerActivity extends BriarFragmentActivity implements clearBackStack(); loadFragment(item.getItemId()); //Don't display the Settings Item as checked - if(item.getItemId() == R.id.nav_btn_settings){ + if (item.getItemId() == R.id.nav_btn_settings){ return false; } return true; @@ -216,8 +198,7 @@ public class NavDrawerActivity extends BriarFragmentActivity implements return; } // Check the Contacts item because we always return to Contacts here - NavigationView navigation = (NavigationView) findViewById(R.id.navigation); - navigation.getMenu().findItem(R.id.nav_btn_contacts).setChecked(true); + navigation.setCheckedItem(R.id.nav_btn_contacts); super.onBackPressed(); } @@ -235,10 +216,8 @@ public class NavDrawerActivity extends BriarFragmentActivity implements @Override protected void signOut() { - // Disable navigation drawer slide to open drawerLayout.setDrawerLockMode(LOCK_MODE_LOCKED_CLOSED); - progressTitle.setText(R.string.progress_title_logout); - progressViewGroup.setVisibility(View.VISIBLE); + startFragment(new SignOutFragment()); super.signOut(); } @@ -285,21 +264,25 @@ public class NavDrawerActivity extends BriarFragmentActivity implements @Override public View getView(int position, View convertView, ViewGroup parent) { - ViewGroup view = (ViewGroup) inflater.inflate( - R.layout.list_item_transport, parent, false); + View view; + if (convertView != null) view = convertView; + else view = + inflater.inflate(R.layout.list_item_transport, parent, + false); Transport t = getItem(position); - Resources r = getResources(); - int c; if (t.enabled) { - c = r.getColor(R.color.briar_green_light); + c = ContextCompat.getColor(NavDrawerActivity.this, + R.color.briar_green_light); } else { - c = r.getColor(android.R.color.tertiary_text_light); + c = ContextCompat.getColor(NavDrawerActivity.this, + android.R.color.tertiary_text_light); } ImageView icon = (ImageView) view.findViewById(R.id.imageView); - icon.setImageDrawable(r.getDrawable(t.iconId)); + icon.setImageDrawable(ContextCompat + .getDrawable(NavDrawerActivity.this, t.iconId)); icon.setColorFilter(c); TextView text = (TextView) view.findViewById(R.id.textView); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicPreferencesFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicPreferencesFragment.java index 9251b85b3..b08e48d17 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicPreferencesFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicPreferencesFragment.java @@ -126,7 +126,7 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse( "market://details?id=info.guardianproject.ripple")); - getActivity().startActivity(intent); + startActivity(intent); return true; } }); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java index e0502432f..fb4d4dfed 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java @@ -6,8 +6,6 @@ import android.content.Intent; import android.os.Bundle; import android.support.annotation.LayoutRes; import android.support.annotation.StringRes; -import android.support.v4.app.ActivityCompat; -import android.support.v4.app.ActivityOptionsCompat; import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; import android.support.v7.widget.LinearLayoutManager; @@ -37,7 +35,6 @@ import org.briarproject.briar.api.privategroup.Visibility; import javax.annotation.Nullable; import javax.inject.Inject; -import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation; import static android.view.View.GONE; import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_POST_BODY_LENGTH; @@ -152,9 +149,6 @@ public class GroupActivity extends @Override public boolean onOptionsItemSelected(final MenuItem item) { - ActivityOptionsCompat options = - makeCustomAnimation(this, android.R.anim.slide_in_left, - android.R.anim.slide_out_right); switch (item.getItemId()) { case R.id.action_group_compose_message: showTextInput(null); @@ -162,18 +156,17 @@ public class GroupActivity extends case R.id.action_group_member_list: Intent i1 = new Intent(this, GroupMemberListActivity.class); i1.putExtra(GROUP_ID, groupId.getBytes()); - ActivityCompat.startActivity(this, i1, options.toBundle()); + startActivity(i1); return true; case R.id.action_group_reveal: Intent i2 = new Intent(this, RevealContactsActivity.class); i2.putExtra(GROUP_ID, groupId.getBytes()); - ActivityCompat.startActivity(this, i2, options.toBundle()); + startActivity(i2); return true; case R.id.action_group_invite: Intent i3 = new Intent(this, GroupInviteActivity.class); i3.putExtra(GROUP_ID, groupId.getBytes()); - ActivityCompat.startActivityForResult(this, i3, REQUEST_INVITE, - options.toBundle()); + startActivityForResult(i3, REQUEST_INVITE); return true; case R.id.action_group_leave: showLeaveGroupDialog(); 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 index d115020db..30d64e95a 100644 --- 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 @@ -4,7 +4,6 @@ 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.R; import org.briarproject.briar.android.contactselection.ContactSelectorActivity; import org.briarproject.briar.android.controller.handler.UiResultExceptionHandler; import org.briarproject.briar.android.sharing.BaseMessageFragment.MessageFragmentListener; @@ -27,15 +26,7 @@ public abstract class BaseGroupInviteActivity public void contactsSelected(Collection contacts) { super.contactsSelected(contacts); - CreateGroupMessageFragment fragment = new CreateGroupMessageFragment(); - getSupportFragmentManager().beginTransaction() - .setCustomAnimations(android.R.anim.fade_in, - android.R.anim.fade_out, - android.R.anim.slide_in_left, - android.R.anim.slide_out_right) - .replace(R.id.fragmentContainer, fragment) - .addToBackStack(fragment.getUniqueTag()) - .commit(); + showNextFragment(new CreateGroupMessageFragment()); } @Override 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 df6c24539..e65875892 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 @@ -2,8 +2,7 @@ package org.briarproject.briar.android.privategroup.creation; import android.content.Intent; import android.os.Bundle; -import android.support.v4.app.ActivityCompat; -import android.support.v4.app.ActivityOptionsCompat; +import android.support.annotation.Nullable; import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; @@ -15,10 +14,6 @@ import org.briarproject.briar.android.controller.handler.UiResultExceptionHandle import org.briarproject.briar.android.privategroup.conversation.GroupActivity; import org.briarproject.briar.android.sharing.BaseMessageFragment.MessageFragmentListener; -import javax.annotation.Nullable; - -import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation; - @MethodsNotNullByDefault @ParametersNotNullByDefault public class CreateGroupActivity extends BaseGroupInviteActivity implements @@ -34,10 +29,7 @@ public class CreateGroupActivity extends BaseGroupInviteActivity implements super.onCreate(bundle); if (bundle == null) { - CreateGroupFragment fragment = new CreateGroupFragment(); - getSupportFragmentManager().beginTransaction() - .add(R.id.fragmentContainer, fragment) - .commit(); + showInitialFragment(new CreateGroupFragment()); } } @@ -72,25 +64,13 @@ public class CreateGroupActivity extends BaseGroupInviteActivity implements private void switchToContactSelectorFragment(GroupId g) { setTitle(R.string.groups_invite_members); - GroupInviteFragment fragment = - GroupInviteFragment.newInstance(g); - getSupportFragmentManager().beginTransaction() - .setCustomAnimations(android.R.anim.fade_in, - android.R.anim.fade_out, - android.R.anim.slide_in_left, - android.R.anim.slide_out_right) - .replace(R.id.fragmentContainer, fragment) - .addToBackStack(fragment.getUniqueTag()) - .commit(); + showNextFragment(GroupInviteFragment.newInstance(g)); } private void openNewGroup() { Intent i = new Intent(this, GroupActivity.class); i.putExtra(GROUP_ID, groupId.getBytes()); - ActivityOptionsCompat options = - makeCustomAnimation(this, android.R.anim.fade_in, - android.R.anim.fade_out); - ActivityCompat.startActivity(this, i, options.toBundle()); + 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/GroupInviteActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteActivity.java index 794a12069..9f6a092f5 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 @@ -4,7 +4,6 @@ import android.content.Intent; import android.os.Bundle; import org.briarproject.bramble.api.sync.GroupId; -import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.sharing.BaseMessageFragment.MessageFragmentListener; @@ -26,11 +25,7 @@ public class GroupInviteActivity extends BaseGroupInviteActivity groupId = new GroupId(g); if (bundle == null) { - GroupInviteFragment fragment = - GroupInviteFragment.newInstance(groupId); - getSupportFragmentManager().beginTransaction() - .replace(R.id.fragmentContainer, fragment) - .commit(); + showInitialFragment(GroupInviteFragment.newInstance(groupId)); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java index 2c7e29b5a..ccb0c5acf 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java @@ -4,7 +4,6 @@ import android.content.Intent; import android.os.Bundle; import android.support.annotation.UiThread; import android.support.design.widget.Snackbar; -import android.support.v4.app.ActivityOptionsCompat; import android.support.v4.content.ContextCompat; import android.support.v7.widget.LinearLayoutManager; import android.view.LayoutInflater; @@ -38,7 +37,6 @@ import javax.annotation.Nullable; import javax.inject.Inject; import static android.support.design.widget.Snackbar.LENGTH_INDEFINITE; -import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -117,11 +115,7 @@ public class GroupListFragment extends BaseFragment implements switch (item.getItemId()) { case R.id.action_add_group: Intent i = new Intent(getContext(), CreateGroupActivity.class); - ActivityOptionsCompat options = - makeCustomAnimation(getActivity(), - android.R.anim.slide_in_left, - android.R.anim.slide_out_right); - startActivity(i, options.toBundle()); + startActivity(i); return true; default: return super.onOptionsItemSelected(item); @@ -240,11 +234,7 @@ public class GroupListFragment extends BaseFragment implements @Override public void onClick(View v) { Intent i = new Intent(getContext(), GroupInvitationActivity.class); - ActivityOptionsCompat options = - makeCustomAnimation(getActivity(), - android.R.anim.slide_in_left, - android.R.anim.slide_out_right); - startActivity(i, options.toBundle()); + startActivity(i); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupViewHolder.java index af676fc01..c137ad072 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupViewHolder.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupViewHolder.java @@ -2,7 +2,6 @@ package org.briarproject.briar.android.privategroup.list; import android.content.Context; import android.content.Intent; -import android.support.v4.app.ActivityOptionsCompat; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.View.OnClickListener; @@ -19,7 +18,6 @@ import org.briarproject.briar.android.util.UiUtils; import org.briarproject.briar.android.view.TextAvatarView; import static android.support.v4.content.ContextCompat.getColor; -import static android.support.v4.content.ContextCompat.startActivities; import static android.view.View.GONE; import static android.view.View.VISIBLE; import static org.briarproject.briar.android.activity.BriarActivity.GROUP_ID; @@ -126,11 +124,7 @@ class GroupViewHolder extends RecyclerView.ViewHolder { GroupId id = group.getId(); i.putExtra(GROUP_ID, id.getBytes()); i.putExtra(GROUP_NAME, group.getName()); - ActivityOptionsCompat options = ActivityOptionsCompat - .makeCustomAnimation(ctx, android.R.anim.fade_in, - android.R.anim.fade_out); - Intent[] intents = {i}; - startActivities(ctx, intents, options.toBundle()); + ctx.startActivity(i); } }); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsActivity.java index db6236a1d..450b6e4ff 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsActivity.java @@ -58,11 +58,7 @@ public class RevealContactsActivity extends ContactSelectorActivity button.setEnabled(false); if (bundle == null) { - RevealContactsFragment fragment = - RevealContactsFragment.newInstance(groupId); - getSupportFragmentManager().beginTransaction() - .replace(R.id.fragmentContainer, fragment) - .commit(); + showInitialFragment(RevealContactsFragment.newInstance(groupId)); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java index 6db3a0694..2d0c4f0af 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java @@ -10,7 +10,6 @@ import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.briar.R; import org.briarproject.briar.android.contactselection.ContactSelectorActivity; -import org.briarproject.briar.android.contactselection.ContactSelectorFragment; import org.briarproject.briar.android.sharing.BaseMessageFragment.MessageFragmentListener; import java.util.Collection; @@ -36,17 +35,7 @@ public abstract class ShareActivity extends ContactSelectorActivity @Override public void contactsSelected(Collection contacts) { super.contactsSelected(contacts); - - BaseMessageFragment messageFragment = getMessageFragment(); - getSupportFragmentManager().beginTransaction() - .setCustomAnimations(android.R.anim.fade_in, - android.R.anim.fade_out, - android.R.anim.slide_in_left, - android.R.anim.slide_out_right) - .replace(R.id.fragmentContainer, messageFragment, - ContactSelectorFragment.TAG) - .addToBackStack(null) - .commit(); + showNextFragment(getMessageFragment()); } abstract BaseMessageFragment getMessageFragment(); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java index f395eda7b..1d6581e6b 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java @@ -41,10 +41,7 @@ public class ShareBlogActivity extends ShareActivity { super.onCreate(bundle); if (bundle == null) { - ShareBlogFragment fragment = ShareBlogFragment.newInstance(groupId); - getSupportFragmentManager().beginTransaction() - .add(R.id.fragmentContainer, fragment) - .commit(); + showInitialFragment(ShareBlogFragment.newInstance(groupId)); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java index f32a49cc8..dc16a239f 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java @@ -41,11 +41,7 @@ public class ShareForumActivity extends ShareActivity { super.onCreate(bundle); if (bundle == null) { - ShareForumFragment fragment = - ShareForumFragment.newInstance(groupId); - getSupportFragmentManager().beginTransaction() - .add(R.id.fragmentContainer, fragment) - .commit(); + showInitialFragment(ShareForumFragment.newInstance(groupId)); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java index 6b40803d0..7bae16458 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java @@ -1,12 +1,14 @@ package org.briarproject.briar.android.splash; import android.content.Intent; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.StrictMode; import android.os.StrictMode.ThreadPolicy; import android.os.StrictMode.VmPolicy; import android.support.v7.preference.PreferenceManager; +import android.transition.Fade; import org.briarproject.bramble.api.system.AndroidExecutor; import org.briarproject.briar.R; @@ -45,6 +47,10 @@ public class SplashScreenActivity extends BaseActivity { public void onCreate(Bundle state) { super.onCreate(state); + if (Build.VERSION.SDK_INT >= 21) { + getWindow().setExitTransition(new Fade()); + } + setPreferencesDefaults(); setContentView(R.layout.splash); @@ -53,7 +59,7 @@ public class SplashScreenActivity extends BaseActivity { @Override public void run() { startNextActivity(); - finish(); + supportFinishAfterTransition(); } }, 500); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java index 3e65fc642..24c25b491 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java @@ -1,6 +1,7 @@ package org.briarproject.briar.android.util; import android.content.Context; +import android.support.annotation.Nullable; import android.support.design.widget.TextInputLayout; import android.support.v4.app.FragmentManager; import android.support.v4.content.ContextCompat; @@ -36,7 +37,7 @@ public class UiUtils { public static final int TEASER_LENGTH = 320; public static final float GREY_OUT = 0.5f; - public static void setError(TextInputLayout til, String error, + public static void setError(TextInputLayout til, @Nullable String error, boolean set) { if (set) { if (til.getError() == null) til.setError(error); @@ -116,4 +117,5 @@ public class UiUtils { public static String getBulbTransitionName(ContactId c) { return "bulb" + c.getInt(); } + } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java b/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java index 4c3ee5944..82442185e 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java @@ -6,8 +6,6 @@ import android.content.res.TypedArray; import android.graphics.Typeface; import android.support.annotation.DimenRes; import android.support.annotation.UiThread; -import android.support.v4.app.ActivityOptionsCompat; -import android.support.v4.content.ContextCompat; import android.util.AttributeSet; import android.util.TypedValue; import android.view.LayoutInflater; @@ -31,7 +29,6 @@ import im.delight.android.identicons.IdenticonDrawable; import static android.content.Context.LAYOUT_INFLATER_SERVICE; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; import static android.graphics.Typeface.BOLD; -import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation; import static android.util.TypedValue.COMPLEX_UNIT_PX; import static org.briarproject.bramble.api.identity.Author.Status.OURSELVES; import static org.briarproject.briar.android.activity.BriarActivity.GROUP_ID; @@ -116,13 +113,7 @@ public class AuthorView extends RelativeLayout { Intent i = new Intent(getContext(), BlogActivity.class); i.putExtra(GROUP_ID, groupId.getBytes()); i.setFlags(FLAG_ACTIVITY_CLEAR_TOP); - ActivityOptionsCompat options = - makeCustomAnimation(getContext(), - android.R.anim.slide_in_left, - android.R.anim.slide_out_right); - Intent[] intents = {i}; - ContextCompat.startActivities(getContext(), intents, - options.toBundle()); + getContext().startActivity(i); } }); } @@ -135,9 +126,19 @@ public class AuthorView extends RelativeLayout { public void setPersona(int persona) { switch (persona) { + case NORMAL: + avatarIcon.setVisibility(VISIBLE); + date.setVisibility(VISIBLE); + setAvatarSize(R.dimen.blogs_avatar_normal_size); + setTextSize(authorName, R.dimen.text_size_small); + setCenterVertical(authorName, false); + setCenterVertical(trustIndicator, false); + break; case REBLOGGER: avatarIcon.setVisibility(VISIBLE); date.setVisibility(VISIBLE); + setAvatarSize(R.dimen.blogs_avatar_normal_size); + setTextSize(authorName, R.dimen.text_size_small); setCenterVertical(authorName, false); setCenterVertical(trustIndicator, false); break; @@ -162,8 +163,7 @@ public class AuthorView extends RelativeLayout { private void setAvatarSize(@DimenRes int res) { LayoutParams params = (LayoutParams) avatar.getLayoutParams(); - int size = getResources().getDimensionPixelSize( - res); + int size = getResources().getDimensionPixelSize(res); params.height = size; params.width = size; avatar.setLayoutParams(params); diff --git a/briar-android/src/main/res/anim/dialog_in.xml b/briar-android/src/main/res/anim/dialog_in.xml new file mode 100644 index 000000000..4d3bef4a3 --- /dev/null +++ b/briar-android/src/main/res/anim/dialog_in.xml @@ -0,0 +1,7 @@ + + diff --git a/briar-android/src/main/res/anim/dialog_out.xml b/briar-android/src/main/res/anim/dialog_out.xml new file mode 100644 index 000000000..84bad946f --- /dev/null +++ b/briar-android/src/main/res/anim/dialog_out.xml @@ -0,0 +1,7 @@ + + diff --git a/briar-android/src/main/res/anim/screen_new_in.xml b/briar-android/src/main/res/anim/screen_new_in.xml new file mode 100644 index 000000000..6bdf53b16 --- /dev/null +++ b/briar-android/src/main/res/anim/screen_new_in.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/briar-android/src/main/res/anim/screen_new_out.xml b/briar-android/src/main/res/anim/screen_new_out.xml new file mode 100644 index 000000000..5411fa11b --- /dev/null +++ b/briar-android/src/main/res/anim/screen_new_out.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/briar-android/src/main/res/anim/screen_old_in.xml b/briar-android/src/main/res/anim/screen_old_in.xml new file mode 100644 index 000000000..2360d85b5 --- /dev/null +++ b/briar-android/src/main/res/anim/screen_old_in.xml @@ -0,0 +1,7 @@ + + diff --git a/briar-android/src/main/res/anim/screen_old_out.xml b/briar-android/src/main/res/anim/screen_old_out.xml new file mode 100644 index 000000000..84bad946f --- /dev/null +++ b/briar-android/src/main/res/anim/screen_old_out.xml @@ -0,0 +1,7 @@ + + diff --git a/briar-android/src/main/res/anim/step_next_in.xml b/briar-android/src/main/res/anim/step_next_in.xml new file mode 100644 index 000000000..6bdf53b16 --- /dev/null +++ b/briar-android/src/main/res/anim/step_next_in.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/briar-android/src/main/res/anim/step_next_out.xml b/briar-android/src/main/res/anim/step_next_out.xml new file mode 100644 index 000000000..5411fa11b --- /dev/null +++ b/briar-android/src/main/res/anim/step_next_out.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/briar-android/src/main/res/anim/step_previous_in.xml b/briar-android/src/main/res/anim/step_previous_in.xml new file mode 100644 index 000000000..2360d85b5 --- /dev/null +++ b/briar-android/src/main/res/anim/step_previous_in.xml @@ -0,0 +1,7 @@ + + diff --git a/briar-android/src/main/res/anim/step_previous_out.xml b/briar-android/src/main/res/anim/step_previous_out.xml new file mode 100644 index 000000000..84bad946f --- /dev/null +++ b/briar-android/src/main/res/anim/step_previous_out.xml @@ -0,0 +1,7 @@ + + diff --git a/briar-android/src/main/res/layout/activity_nav_drawer.xml b/briar-android/src/main/res/layout/activity_nav_drawer.xml index ad4465680..2c2ea0402 100644 --- a/briar-android/src/main/res/layout/activity_nav_drawer.xml +++ b/briar-android/src/main/res/layout/activity_nav_drawer.xml @@ -6,8 +6,30 @@ android:layout_height="match_parent"> - + + + + + + + + + + + - \ No newline at end of file + diff --git a/briar-android/src/main/res/layout/activity_plain.xml b/briar-android/src/main/res/layout/activity_plain.xml index 4c7bae06e..887c14a61 100644 --- a/briar-android/src/main/res/layout/activity_plain.xml +++ b/briar-android/src/main/res/layout/activity_plain.xml @@ -18,7 +18,7 @@ diff --git a/briar-android/src/main/res/layout/activity_with_loading.xml b/briar-android/src/main/res/layout/activity_with_loading.xml deleted file mode 100644 index 2c797c36c..000000000 --- a/briar-android/src/main/res/layout/activity_with_loading.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/briar-android/src/main/res/layout/fragment_blog_post_pager.xml b/briar-android/src/main/res/layout/fragment_blog_post_pager.xml deleted file mode 100644 index 626dcaf26..000000000 --- a/briar-android/src/main/res/layout/fragment_blog_post_pager.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/briar-android/src/main/res/layout/fragment_reblog.xml b/briar-android/src/main/res/layout/fragment_reblog.xml index c0305e250..1d5f553e2 100644 --- a/briar-android/src/main/res/layout/fragment_reblog.xml +++ b/briar-android/src/main/res/layout/fragment_reblog.xml @@ -4,6 +4,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@color/window_background" android:orientation="vertical"> + app:hint="@string/blogs_reblog_comment_hint" + app:maxLines="5"/> diff --git a/briar-android/src/main/res/layout/fragment_sign_out.xml b/briar-android/src/main/res/layout/fragment_sign_out.xml new file mode 100644 index 000000000..aafc7be54 --- /dev/null +++ b/briar-android/src/main/res/layout/fragment_sign_out.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/briar-android/src/main/res/layout/introduction_message.xml b/briar-android/src/main/res/layout/introduction_message.xml index 61531fd22..3ca9cfa51 100644 --- a/briar-android/src/main/res/layout/introduction_message.xml +++ b/briar-android/src/main/res/layout/introduction_message.xml @@ -77,7 +77,6 @@ android:layout_marginLeft="@dimen/listitem_horizontal_margin" android:layout_marginRight="@dimen/listitem_horizontal_margin" android:layout_marginStart="@dimen/listitem_horizontal_margin" - android:transitionName="avatar" tools:src="@drawable/ic_launcher"/> - - - - - - - - - - - - - - - - diff --git a/briar-android/src/main/res/layout/list_item_revealable_contact.xml b/briar-android/src/main/res/layout/list_item_revealable_contact.xml index c9606b5ec..040410f70 100644 --- a/briar-android/src/main/res/layout/list_item_revealable_contact.xml +++ b/briar-android/src/main/res/layout/list_item_revealable_contact.xml @@ -25,7 +25,6 @@ android:layout_alignParentStart="true" android:layout_marginEnd="@dimen/listitem_horizontal_margin" android:layout_marginRight="@dimen/listitem_horizontal_margin" - android:transitionName="avatar" tools:src="@drawable/ic_launcher"/> Passwort zu schwach Passwörter stimmen nicht überein Konto anlegen - Bitte warten ... Passwort eingeben: Passwort falsch, bitte erneut versuchen @@ -24,8 +23,6 @@ Deine Briar-Datenbank ist korrupt. Briar-Konto, Daten und alle Verbindungen zu Kontakten können nicht mehr wiederhergestellt werden. Deinstalliere Briar und erstelle nach Installation der aktuellen Briar-Version ein neues Konto. Briar konnte ein benötigtes Plugin nicht starten. Normalerweise kann das Problem durch eine Neuinstallation von Briar gelöst werden. Eine Neuinstallation führt jedoch zum Verlust des Kontos und aller dazugehörigen Daten, da Briar deine Daten nicht auf zentralen Servern speichert Diese Version von Briar ist nicht mehr aktuell.\nBitte installiere eine neuere Version. - Willkommen bei Briar - Füge einen Kontakt hinzu, um mit verschlüsselter Kommunikation zu beginnen oder wähle das Icon in der oberen linken Ecke für mehr Optionen. Navigationsleiste öffnen Navigationsleiste schliessen @@ -87,7 +84,6 @@ Suche nach Kontakt mit Einladungs-Code %06d\u2026 Verbindung fehlgeschlagen Briar kann Deinen Kontakt nicht innerhalb der Reichweite finden - Es konnte nicht auf die Kamera zugegriffen werden. Bitte versuche es erneut. Noch einmal versuchen Mit Kontakt verbunden Bestätigungscode wird berechnet\u2026 @@ -116,7 +112,6 @@ Deine Kontaktempfehlung wurde verschickt Es gab einen Fehler beim Versuch, die Kontaktempfehlung zu verschicken Fehler bei Antwort auf Kontaktempfehlung - Als Kontakt empfehlen Du wolltest %1$s an %2$s als Kontakt empfehlen %1$s schlägt vor, dich als Kontakt an %2$s zu empfehlen. Möchtest Du %2$s zu deiner Kontaktliste hinzufügen? %1$s schlägt vor, dich als Kontakt an %2$s zu empfehlen. %2$s ist allerdings bereits in deiner Kontaktliste. Da %1$s das vielleicht nicht weiss, kannst du trotzdem antworten: @@ -140,7 +135,6 @@ Diese Gruppe ist leer. Entfernen Private Gruppe erstellen - Diese Gruppe hat keine Teilnehmer.\n\nErstelle die erste Nachricht über das Stift-Symbol am oberen Rand. Gruppe erstellen Einladung schicken Gebe Deiner privaten Gruppe einen Namen @@ -240,7 +234,6 @@ %1$s hat das persönliche Blog von %2$s mit dir geteilt. Du hast das persönliche Blog von %1$s mit %2$s geteilt. Blogeinladungen - Du hast dieses Blog bereits abonniert. Ein neues Abo anzunehmen kann dazu führen, dass neue Einträge schneller verfügbar werden. Blog abonniert Blogeinladung abgelehnt diff --git a/briar-android/src/main/res/values-es/strings.xml b/briar-android/src/main/res/values-es/strings.xml index 6eb9c8e5f..26ff73a98 100644 --- a/briar-android/src/main/res/values-es/strings.xml +++ b/briar-android/src/main/res/values-es/strings.xml @@ -10,7 +10,6 @@ La contraseña es demasiado débil Las contraseñas no coinciden Registrar una nueva cuenta - Espera, por favor Introduce tu contraseña: Contraseña incorrecta, inténtalo de nuevo @@ -24,8 +23,6 @@ Por alguna razón, la base de datos de Briar ha sufrido daños irreparables. Tu cuenta, tus datos y todos tus contactos se han perdido. Desafortunadamente, tendrás que reinstalar Briar y registrar una nueva cuenta. Briar no pudo iniciar un complemento necesario. Reinstalar Briar suele solucionar el problema. Sin embargo, ten en cuenta que perderás tu cuenta y todos los datos asociados ya que Briar no almacena esta información en ningún servidor centrar. Esta versión ha caducado.\nInstala una más reciente, por favor. - Bienvenido a Briar - Añade un contacto para empezar a comunicarte de forma segura o pulsa el icono de la esquina superior izquierda de la pantalla para otras opciones. Abrir el panel de navegación Cierra el panel de navegación @@ -94,7 +91,6 @@ Buscando el contacto con el código de invitación %06d\u2026 La conexión falló Briar no pudo encontrar a tu contacto cerca - No se pudo acceder a la cámara. ¡Prueba de nuevo, por favor! Prueba de nuevo Conectado con el contacto Calculando código de confirmación\u2026 @@ -124,7 +120,6 @@ Tu presentación se ha mandado. Ocurrió un error realizando la presentación. Error al responder a la presentación - Presentar Has pedido presentar a %1$s a %2$s. %1$s ha pedido presentarte a %2$s. ¿Quieres añadir a %2$s a tu lista de contactos? %1$s ha pedido presentarte a %2$s, pero %2$s ya está en tu lista de contactos. %1$s puede no saberlo, así que puedes responderle de todas maneras: @@ -149,7 +144,6 @@ Este grupo ha sido disuelto Eliminar Crear grupo privado - Este grupo está vacío.\n\nPuedes usar el icono del lápiz arriba para escribir el primer mensaje. Crear grupo Enviar invitación Dar nombre al grupo privado @@ -277,7 +271,6 @@ %1$s ha compartido el blog personal de %2$s contigo. Has compartido el blog personal de %1$s con %2$s. Invitaciones a blogs - Ya estás suscrito a este blog. Aceptar la invitación de nuevo conllevará una mejora de la velocidad en la recepción de los artículos. Suscrito al blog Rechazada invitación al blog diff --git a/briar-android/src/main/res/values-fr/strings.xml b/briar-android/src/main/res/values-fr/strings.xml index 9b29a4b0e..7682fd664 100644 --- a/briar-android/src/main/res/values-fr/strings.xml +++ b/briar-android/src/main/res/values-fr/strings.xml @@ -10,7 +10,6 @@ Le mot de passe est trop faible Les mots de passes ne correspondent pas Créer un compte - Veuillez patienter ... Tapez votre mot de passe : Mot de passe incorrecte, essayer à nouveau @@ -24,8 +23,6 @@ Pour une raison indéterminée, votre base de donnée Briar est corrompue et irrécupérable. Vos comptes, données et contacts sont perdus. Vous devez malheureusement réinstaller Briar et configurer un nouveau compte. Briar n\'a pas pu démarrer un module nécessaire. Réinstaller Briar résout généralement ce problème. Veuillez noter que vous perdrez votre compte et toutes les données associées puisque Briar n\'utilise pas de serveurs centralisés pour enregistrer les données. Ce logiciel est arrivé à expiration.\n Veuillez installer une version plus récente. - Bienvenue sur Briar - Ajouter un contact pour communiquer de manière sécurisée ou toucher l\'icône en haut à gauche pour plus d\'options. Ouvrir le panneau de navigation Fermer le panneau de navigation @@ -95,7 +92,6 @@ Recherche de contacts avec le code d\'invitation %06d\u2026 Échec de connexion Briar n\'a pas trouvé de contacts à proximité - Appareil photo inaccessible. Essayez à nouveau ! Essayer à nouveau Connecté au contact Calcul du code de confirmation\u2026 @@ -125,7 +121,6 @@ Votre admission a été envoyée. Une erreur s\'est produite lors de l\'admission. Erreur lors de la réponse à l\'admission - Introduire Vous avez demandé à %2$s d\'admettre %1$s. %1$s vous a demandé l\'admission de %2$s. Souhaitez-vous ajouter %2$s à votre liste de contacts ? %1$s vous a demandé l\'admission de %2$s mais %2$s est déjà dans votre liste de contacts. Puisque %1$s ne le sait pas, vous pouvez tout de même répondre : @@ -150,7 +145,6 @@ Ce groupe a été supprimé Supprimer Créer un groupe privé - Ce groupe est vide. \n\nUtilisez l\'icône crayon, en haut, pour composer le premier message. Créer un groupe Envoyer invitation Ajouter un nom au groupe privé @@ -278,7 +272,6 @@ %1$s a partagé le blog personnel de %2$s avec vous. Vous avez partagé le blog personnel de %1$s avec %2$s. Invitations au blog - Vous êtes déjà inscrit à ce blog. Accepter à nouveau peut conduire à une de post de blog. Abonné au Blog Invitation au blog refusée diff --git a/briar-android/src/main/res/values-it/strings.xml b/briar-android/src/main/res/values-it/strings.xml index b06253170..832c0f850 100644 --- a/briar-android/src/main/res/values-it/strings.xml +++ b/briar-android/src/main/res/values-it/strings.xml @@ -10,7 +10,6 @@ La password è troppo debole La password non corrisponde Creare Account - Attendi per favore... Inserisci la tua password: Password sbagliata, riprova @@ -23,8 +22,6 @@ Fallimento Avvio Briar Per alcune reagioni, il tuo database Briar si è corrotto in modo irreparabile. Il tuo account, i tuoi dati e tutte le connessioni ai tuoi contatti sono andati persi. Sfortunatamente, devi reinstallare Briar per creare un nuovo account. Questo software è scaduto.\nSi prega di installare una nuova versione. - Benvenuti su Briar - Aggiungi un contatto per iniziare a comunicare in modo sicuro oppure premi l\'icona in alto a sinistra dello schermo per vedere le altre opzioni. Contatti Gruppi privati @@ -81,7 +78,6 @@ Sto cercando i contatti con codice di invito %06d\u2026 Connessione fallita Briar non è stato in grado di trovare il vostro contatto vicino - Impossibile accedere alla tua fotocamera. Si prega di ritentare! Riprova Connesso al contatto Calcolazione codice di conferma\u2026 @@ -103,7 +99,6 @@ Crea l\'introduzione La tua introduzione è stata inviata. C\'è stato un errore nella creazione dell\'introduzione - Introduci Hai richiesto di introdurre %1$s a %2$s. %1$s ha richiesto di introdurti a %2$s. Hai accettato l\'introduzione a %1$s. diff --git a/briar-android/src/main/res/values-pt-rBR/strings.xml b/briar-android/src/main/res/values-pt-rBR/strings.xml index 6c90202bf..5971391bc 100644 --- a/briar-android/src/main/res/values-pt-rBR/strings.xml +++ b/briar-android/src/main/res/values-pt-rBR/strings.xml @@ -10,7 +10,6 @@ A senha está muito fraca As senhas não conferem Criar conta - Por favor, aguarde Insira sua senha: Senha Incorreta, tente novamente @@ -24,8 +23,6 @@ Por alguma razão, seus dados do Briar estão corrompidos e não podem ser reparados. Sua conta, seus dados e todas suas conexões com contatos estão perdidas. Infelizmente você terá que resintalar o Briar e criar uma nova conta. O Briar não pode iniciar devido a um plugin. Reinstalar o Briar geralmente resolve esse problema. Porém, note que ao fazer isso você perderá sua conta e todos os dados associados a ela, já que o Briar não usa um servidor central para armazenar seus dados. Esse programa expirou.\nPor favor instale uma versão mais recente. - Bem-vindo ao Briar - Adicione um contato para começar uma comunicação segura ou pressione o ícone na parte superior direita da tela para mais opções. Abrir aba de navegação Fechar aba de navegação @@ -95,7 +92,6 @@ Procurando por contato com código de convite %06d\u2026 Conexão incompleta Briar não conseguiu achar nenhum contato por perto - Não foi possível acessar sua câmera. Por favor tente novamente! Tente novamente Conectado ao contato Calculando código de confirmação\u2026 @@ -125,7 +121,6 @@ Sua Introdução foi enviada. Houve um erro ao fazer a apresentação Erro ao responder à apresentação - Apresentar Você recebeu um pedido para apresentar %1$s a %2$s. %1$s pediu para apresentar você a %2$s. Você quer adicionar %2$s a sua lista de contatos? %1$s pediu para apresentar você a %2$s, mas %2$s já está na sua lista de contatos. Já que %1$s não sabe disso, você ainda pode responder: @@ -150,7 +145,6 @@ Esse grupo foi dissolvido Remover Criar Grupo Privado - Esse grupo está vazio.\n\nVocê pode usar o ícone da caneta no topo para escrever a primeira mensagem. Criar Grupo Enviar Convite Adicionar um nome para seu grupo privado @@ -278,7 +272,6 @@ %1$s compartilhou o blog %2$s com você. Você compartilhou o blog de %1$s com %2$s. Convites para Fóruns - Você já está inscrito neste blog. Aceitando novamente pode tornar mais rápida a entrega dos posts. Inscrito neste Blog Convite do Blog recusado diff --git a/briar-android/src/main/res/values-sq/strings.xml b/briar-android/src/main/res/values-sq/strings.xml index 38c463fbb..60266f10d 100644 --- a/briar-android/src/main/res/values-sq/strings.xml +++ b/briar-android/src/main/res/values-sq/strings.xml @@ -10,7 +10,6 @@ Fjalëkalimi është shumë i dobët Fjalëkalimet nuk përputhen Krijoje Llogarinë - Ju lutemi, prisni… Jepni fjalëkalimin tuaj: Fjalëkalim i gabuar, riprovoni @@ -24,8 +23,6 @@ Për ndonjë arsye, baza e të dhënave e Briar-it tuaj është aq e dëmtuar, sa s’mund të ndreqet. Llogaria juaj, të dhënat tuaja dhe krejt lidhjet tuaja me kontaktet kanë humbur. Mjerisht lypset të ri-instaloni Briar-in dhe të rregulloni një llogari të re. Briar-i s’arriti të nisë një shtojcë të domosdoshme. Ri-instalimi i Briar-it zakonisht e zgjidh këtë problem. Por, ju lutemi, kini parasysh se me të do të humbni llogarinë tuaj dhe krejt të dhënat e lidhura me të, ngaqë Briar nuk përdor shërbyes qendrorë për të depozituar në ta të dhënat tuaja. Ky software ka skaduar.\nJu lutemi, instaloni një version më të ri. - Mirë se vini në Briar - Shtoni një kontakt që të filloni të komunikoni në mënyrë të sigurt, ose shtypni ikonën në cepin e sipërm majtas të ekranit për më tepër mundësi. Hap sirtarin e lëvizjeve Mbylle sirtarin e lëvizjeve @@ -95,7 +92,6 @@ Po kërkohet për kontakt me kod ftese %06d\u2026 Lidhja dështoi Briar-i s’e gjeti dot kontaktin tuaj këtej pari - S’u hy dot te kamera juaj. Ju lutemi, riprovoni! Riprovoni U lidh me kontaktin Po përllogaritet kodi i ripohimit\u2026 @@ -125,7 +121,6 @@ Prezantimi juaj u dërgua. Pati një gabim me bërjen e prezantimit. Gabim në përgjigjen ndaj prezantimit - Prezantoje Keni kërkuar të prezantoni %1$s te %2$s. %1$s ka kërkuar t’ju prezantojë te %2$s. Doni të shtohet %2$s te lista juaj e kontakteve? %1$s ka kërkuar t’ju prezantojë te %2$s, por %2$s gjendet tashmë te lista juaj e kontakteve. Meqë %1$s mund të mos ta dijë këtë gjë, mundeni prapëseprapë t’i përgjigjeni: @@ -150,7 +145,6 @@ Ky grup është shkrirë Hiqe Krijoni Grup Privat - Ky grup është i zbrazët.\n\nMund të përdorni ikonën penë në krye që të hartoni mesazhin e parë. Krijoje Grupin Dërgoje Ftesën Shtoni një emër për grupin tuaj privat @@ -278,7 +272,6 @@ %1$s ka ndarë me ju blogun personal të %2$s. Keni ndarë me %2$s blogun personal të %1$s. Ftesa Blogu - Jeni i pajtuar te ky blog një herë. Pranimi sërish mund të shpjerë te shpërndarje më e shpejtë postimesh blogu. U pajtuat te Blogu Ftesa e Blogut u Hodh Poshtë diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 4fde00b0f..f9fad4a27 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -12,7 +12,6 @@ Password is too weak Passwords do not match Create Account - Please wait.. Enter your password: @@ -27,8 +26,6 @@ For some reason, your Briar database is corrupted beyond repair. Your account, your data and all your contact connections are lost. Unfortunately, you need to reinstall Briar und set up a new account. Briar was unable to start a required plugin. Reinstalling Briar usually solves this problem. However, please note that you will then lose your account and all data associated with it since Briar is not using central servers to store your data on. This software has expired.\nPlease install a newer version. - Welcome to Briar - Add a contact to start communicating securely or press the icon in the upper left corner of the screen for more options. Open the navigation drawer @@ -105,7 +102,6 @@ Searching for contact with invitation code %06d\u2026 Connection failed Briar could not find your contact nearby - Could not access your camera. Please try again! Try Again Connected to contact Calculating confirmation code\u2026 @@ -136,7 +132,6 @@ Your introduction has been sent. There was an error making the introduction. Error when responding to introduction - Introduce You have asked to introduce %1$s to %2$s. %1$s has asked to introduce you to %2$s. Do you want to add %2$s to your contact list? %1$s has asked to introduce you to %2$s, but %2$s is already in your contact list. Since %1$s might not know that, you can still respond: @@ -162,7 +157,6 @@ This group has been dissolved Remove Create Private Group - This group is empty.\n\nYou can use the pen icon at the top to compose the first message. Create Group Send Invitation Add a name for your private group @@ -296,7 +290,6 @@ %1$s has shared the personal blog of %2$s with you. You have shared the personal blog of %1$s with %2$s. Blog Invitations - You are subscribed to this blog already. Accepting again can lead to faster blog post delivery. Subscribed to Blog Blog Invitation Declined diff --git a/briar-android/src/main/res/values/themes.xml b/briar-android/src/main/res/values/themes.xml index 71bd3c9d5..6f6c98aa8 100644 --- a/briar-android/src/main/res/values/themes.xml +++ b/briar-android/src/main/res/values/themes.xml @@ -13,6 +13,7 @@ @color/briar_text_tertiary @color/briar_text_tertiary_inverse @color/briar_text_link + @style/ActivityAnimation + +