diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml
index 0677e45db..2feaa4e95 100644
--- a/.idea/codeStyleSettings.xml
+++ b/.idea/codeStyleSettings.xml
@@ -37,6 +37,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/briar-android/src/org/briarproject/android/blogs/BaseController.java b/briar-android/src/org/briarproject/android/blogs/BaseController.java
index e81c44d60..a7cf1e424 100644
--- a/briar-android/src/org/briarproject/android/blogs/BaseController.java
+++ b/briar-android/src/org/briarproject/android/blogs/BaseController.java
@@ -13,8 +13,10 @@ import java.util.Collection;
public interface BaseController {
+ @UiThread
void onStart();
+ @UiThread
void onStop();
void loadBlogPosts(GroupId g,
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogActivity.java b/briar-android/src/org/briarproject/android/blogs/BlogActivity.java
index 7e14c9d8e..249d0ff7c 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogActivity.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogActivity.java
@@ -67,11 +67,11 @@ public class BlogActivity extends BriarActivity implements
groupId = new GroupId(b);
blogController.setGroupId(groupId);
- // Name of the Blog from Intent
+ // Name of the blog
blogName = i.getStringExtra(BLOG_NAME);
if (blogName != null) setTitle(blogName);
- // Is this our blog and was it just created?
+ // Was this blog just created?
isNew = i.getBooleanExtra(IS_NEW_BLOG, false);
setContentView(R.layout.activity_blog);
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogCommentItem.java b/briar-android/src/org/briarproject/android/blogs/BlogCommentItem.java
index f499d1246..b3dea0b8c 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogCommentItem.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogCommentItem.java
@@ -13,13 +13,16 @@ import java.util.List;
@UiThread
class BlogCommentItem extends BlogPostItem {
+ private static final BlogCommentComparator COMPARATOR =
+ new BlogCommentComparator();
+
private final BlogPostHeader postHeader;
private final List comments = new ArrayList<>();
BlogCommentItem(BlogCommentHeader header) {
super(header, null);
postHeader = collectComments(header);
- Collections.sort(comments, new BlogCommentComparator());
+ Collections.sort(comments, COMPARATOR);
}
private BlogPostHeader collectComments(BlogPostHeader header) {
@@ -54,10 +57,9 @@ class BlogCommentItem extends BlogPostItem {
private static class BlogCommentComparator
implements Comparator {
@Override
- public int compare(org.briarproject.api.blogs.BlogCommentHeader h1,
- org.briarproject.api.blogs.BlogCommentHeader h2) {
+ public int compare(BlogCommentHeader h1, BlogCommentHeader h2) {
// re-use same comparator used for blog posts, but reverse it
- return BlogCommentItem.compare(h2, h1);
+ return BlogPostItem.compare(h2, h1);
}
}
}
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java b/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java
index a85b48734..d70779e34 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java
@@ -38,20 +38,20 @@ public class BlogControllerImpl extends BaseControllerImpl
} else {
throw new IllegalStateException(
"An activity that injects the BlogController must " +
- "implement the BlogPostListener");
+ "implement the OnBlogPostAddedListener");
}
}
@Override
public void onActivityResume() {
- super.onStart();
+ super.onStart(); // TODO: Should be called when activity starts. #609
notificationManager.blockNotification(groupId);
notificationManager.clearBlogPostNotification(groupId);
}
@Override
public void onActivityPause() {
- super.onStop();
+ super.onStop(); // TODO: Should be called when activity stops. #609
notificationManager.unblockNotification(groupId);
}
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogPostItem.java b/briar-android/src/org/briarproject/android/blogs/BlogPostItem.java
index 5d83843f5..747b66159 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogPostItem.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogPostItem.java
@@ -2,6 +2,7 @@ package org.briarproject.android.blogs;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.annotation.UiThread;
import org.briarproject.api.blogs.BlogPostHeader;
import org.briarproject.api.identity.Author;
@@ -9,7 +10,7 @@ import org.briarproject.api.identity.Author.Status;
import org.briarproject.api.sync.GroupId;
import org.briarproject.api.sync.MessageId;
-// This class is not thread-safe
+@UiThread
class BlogPostItem implements Comparable {
private final BlogPostHeader header;
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java b/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java
index 71fff2203..378b3993b 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java
@@ -3,6 +3,7 @@ package org.briarproject.android.blogs;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
+import android.support.annotation.UiThread;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.view.ViewCompat;
@@ -28,11 +29,10 @@ import static org.briarproject.android.BriarActivity.GROUP_ID;
import static org.briarproject.android.blogs.BlogActivity.POST_ID;
import static org.briarproject.api.blogs.MessageType.POST;
-public class BlogPostViewHolder extends RecyclerView.ViewHolder {
+@UiThread
+class BlogPostViewHolder extends RecyclerView.ViewHolder {
private final Context ctx;
- private OnBlogPostClickListener listener;
-
private final ViewGroup layout;
private final AuthorView reblogger;
private final AuthorView author;
@@ -40,6 +40,8 @@ public class BlogPostViewHolder extends RecyclerView.ViewHolder {
private final TextView body;
private final ViewGroup commentContainer;
+ private OnBlogPostClickListener listener;
+
BlogPostViewHolder(View v) {
super(v);
diff --git a/briar-android/src/org/briarproject/android/blogs/ReblogActivity.java b/briar-android/src/org/briarproject/android/blogs/ReblogActivity.java
index 1df967c61..923d520a6 100644
--- a/briar-android/src/org/briarproject/android/blogs/ReblogActivity.java
+++ b/briar-android/src/org/briarproject/android/blogs/ReblogActivity.java
@@ -2,6 +2,7 @@ package org.briarproject.android.blogs;
import android.annotation.TargetApi;
import android.content.Intent;
+import android.os.Build;
import android.os.Bundle;
import android.transition.Fade;
import android.transition.Transition;
@@ -14,8 +15,6 @@ import org.briarproject.android.fragment.BaseFragment.BaseFragmentListener;
import org.briarproject.api.sync.GroupId;
import org.briarproject.api.sync.MessageId;
-import static android.os.Build.VERSION.SDK_INT;
-import static android.os.Build.VERSION_CODES.LOLLIPOP;
import static org.briarproject.android.blogs.BlogActivity.POST_ID;
public class ReblogActivity extends BriarActivity implements
@@ -25,7 +24,7 @@ public class ReblogActivity extends BriarActivity implements
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (SDK_INT >= LOLLIPOP) {
+ if (Build.VERSION.SDK_INT >= 21) {
setTransition();
}
@@ -80,7 +79,7 @@ public class ReblogActivity extends BriarActivity implements
}
- @TargetApi(LOLLIPOP)
+ @TargetApi(21)
private void setTransition() {
Transition fade = new Fade();
fade.excludeTarget(android.R.id.statusBarBackground, true);
diff --git a/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java b/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java
index 119290bb2..1fee6c647 100644
--- a/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java
@@ -33,7 +33,6 @@ public class ReblogFragment extends BaseFragment {
public static final String TAG = ReblogFragment.class.getName();
-
private BaseFragmentListener listener;
private ViewHolder ui;
private GroupId blogId;
@@ -104,6 +103,7 @@ public class ReblogFragment extends BaseFragment {
public void onStart() {
super.onStart();
+ // TODO: Load blog post when fragment is created. #631
feedController.loadBlogPost(blogId, postId,
new UiResultExceptionHandler(
getActivity()) {
@@ -112,6 +112,7 @@ public class ReblogFragment extends BaseFragment {
item = result;
bindViewHolder();
}
+
@Override
public void onExceptionUi(DbException exception) {
// TODO
@@ -123,6 +124,8 @@ public class ReblogFragment extends BaseFragment {
private void bindViewHolder() {
if (item == null) return;
+ hideProgressBar();
+
ui.post.bindItem(item);
ui.post.hideReblogButton();
@@ -134,7 +137,6 @@ public class ReblogFragment extends BaseFragment {
}
});
ui.publish.setEnabled(true);
- hideProgressBar();
ui.scrollView.post(new Runnable() {
@Override
public void run() {
@@ -151,6 +153,7 @@ public class ReblogFragment extends BaseFragment {
public void onResultUi(Void result) {
// do nothing, this fragment is gone already
}
+
@Override
public void onExceptionUi(DbException exception) {
// do nothing, this fragment is gone already
@@ -177,6 +180,7 @@ public class ReblogFragment extends BaseFragment {
}
private static class ViewHolder {
+
private final ScrollView scrollView;
private final ProgressBar progressBar;
private final BlogPostViewHolder post;
diff --git a/briar-android/src/org/briarproject/android/fragment/BaseFragment.java b/briar-android/src/org/briarproject/android/fragment/BaseFragment.java
index a2cf53646..c19bcf1ee 100644
--- a/briar-android/src/org/briarproject/android/fragment/BaseFragment.java
+++ b/briar-android/src/org/briarproject/android/fragment/BaseFragment.java
@@ -3,6 +3,7 @@ package org.briarproject.android.fragment;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
+import android.support.annotation.UiThread;
import android.support.v4.app.Fragment;
import org.briarproject.android.ActivityComponent;
@@ -39,22 +40,27 @@ public abstract class BaseFragment extends Fragment {
listener.onFragmentCreated(getUniqueTag());
}
+ @UiThread
protected void finish() {
getActivity().supportFinishAfterTransition();
}
public interface BaseFragmentListener {
+ @UiThread
void showLoadingScreen(boolean isBlocking, int stringId);
+ @UiThread
void hideLoadingScreen();
void runOnUiThread(Runnable runnable);
void runOnDbThread(Runnable runnable);
+ @UiThread
ActivityComponent getActivityComponent();
+ @UiThread
void onFragmentCreated(String tag);
}
}
diff --git a/briar-android/src/org/briarproject/android/util/AuthorView.java b/briar-android/src/org/briarproject/android/util/AuthorView.java
index d84fb7f1b..c98c889a3 100644
--- a/briar-android/src/org/briarproject/android/util/AuthorView.java
+++ b/briar-android/src/org/briarproject/android/util/AuthorView.java
@@ -3,7 +3,6 @@ package org.briarproject.android.util;
import android.content.Context;
import android.content.Intent;
import android.content.res.TypedArray;
-import android.graphics.Typeface;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.content.ContextCompat;
@@ -25,6 +24,8 @@ import org.briarproject.api.sync.GroupId;
import de.hdodenhof.circleimageview.CircleImageView;
import im.delight.android.identicons.IdenticonDrawable;
+import static android.content.Context.LAYOUT_INFLATER_SERVICE;
+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.android.BriarActivity.GROUP_ID;
@@ -42,9 +43,8 @@ public class AuthorView extends RelativeLayout {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater) context
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- inflater
- .inflate(R.layout.author_view, this, true);
+ .getSystemService(LAYOUT_INFLATER_SERVICE);
+ inflater.inflate(R.layout.author_view, this, true);
avatar = (CircleImageView) findViewById(R.id.avatar);
avatarIcon = (ImageView) findViewById(R.id.avatarIcon);
@@ -75,7 +75,7 @@ public class AuthorView extends RelativeLayout {
public void setAuthorStatus(Status status) {
trustIndicator.setTrustLevel(status);
if (status == OURSELVES) {
- authorName.setTypeface(authorName.getTypeface(), Typeface.BOLD);
+ authorName.setTypeface(authorName.getTypeface(), BOLD);
}
invalidate();
@@ -92,9 +92,8 @@ public class AuthorView extends RelativeLayout {
public void setBlogLink(final GroupId groupId) {
setClickable(true);
TypedValue outValue = new TypedValue();
- getContext().getTheme()
- .resolveAttribute(android.R.attr.selectableItemBackground,
- outValue, true);
+ getContext().getTheme().resolveAttribute(
+ android.R.attr.selectableItemBackground, outValue, true);
setBackgroundResource(outValue.resourceId);
setOnClickListener(new OnClickListener() {
@Override
@@ -106,8 +105,7 @@ public class AuthorView extends RelativeLayout {
android.R.anim.slide_in_left,
android.R.anim.slide_out_right);
Intent[] intents = {i};
- ContextCompat
- .startActivities(getContext(), intents,
+ ContextCompat.startActivities(getContext(), intents,
options.toBundle());
}
});