mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-11 18:29:05 +01:00
Removed blog post pagers
This commit is contained in:
@@ -5,10 +5,8 @@ import android.app.Activity;
|
||||
import org.briarproject.android.blogs.BlogActivity;
|
||||
import org.briarproject.android.blogs.BlogFragment;
|
||||
import org.briarproject.android.blogs.BlogPostFragment;
|
||||
import org.briarproject.android.blogs.BlogPostPagerFragment;
|
||||
import org.briarproject.android.blogs.FeedFragment;
|
||||
import org.briarproject.android.blogs.FeedPostFragment;
|
||||
import org.briarproject.android.blogs.FeedPostPagerFragment;
|
||||
import org.briarproject.android.blogs.ReblogActivity;
|
||||
import org.briarproject.android.blogs.ReblogFragment;
|
||||
import org.briarproject.android.blogs.RssFeedImportActivity;
|
||||
@@ -113,10 +111,6 @@ public interface ActivityComponent {
|
||||
|
||||
void inject(FeedPostFragment fragment);
|
||||
|
||||
void inject(BlogPostPagerFragment fragment);
|
||||
|
||||
void inject(FeedPostPagerFragment fragment);
|
||||
|
||||
void inject(ReblogFragment fragment);
|
||||
|
||||
void inject(ReblogActivity activity);
|
||||
|
||||
@@ -11,7 +11,6 @@ import android.widget.ProgressBar;
|
||||
|
||||
import org.briarproject.R;
|
||||
import org.briarproject.android.fragment.BaseFragment;
|
||||
import org.briarproject.api.db.DbException;
|
||||
import org.briarproject.api.nullsafety.MethodsNotNullByDefault;
|
||||
import org.briarproject.api.nullsafety.ParametersNotNullByDefault;
|
||||
|
||||
@@ -26,6 +25,8 @@ import static org.briarproject.android.util.AndroidUtils.MIN_RESOLUTION;
|
||||
@ParametersNotNullByDefault
|
||||
abstract class BasePostFragment extends BaseFragment {
|
||||
|
||||
static final String POST_ID = "briar.POST_ID";
|
||||
|
||||
private static final Logger LOG =
|
||||
Logger.getLogger(BasePostFragment.class.getName());
|
||||
|
||||
@@ -39,7 +40,8 @@ abstract class BasePostFragment extends BaseFragment {
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater,
|
||||
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
@Nullable ViewGroup container,
|
||||
@Nullable Bundle savedInstanceState) {
|
||||
view = inflater.inflate(R.layout.fragment_blog_post, container,
|
||||
false);
|
||||
progressBar = (ProgressBar) view.findViewById(R.id.progressBar);
|
||||
@@ -69,12 +71,6 @@ abstract class BasePostFragment extends BaseFragment {
|
||||
ui.bindItem(post);
|
||||
}
|
||||
|
||||
@UiThread
|
||||
protected void onBlogPostLoadException(DbException exception) {
|
||||
// TODO: Decide how to handle errors in the UI
|
||||
finish();
|
||||
}
|
||||
|
||||
private void startPeriodicUpdate() {
|
||||
refresher = new Runnable() {
|
||||
@Override
|
||||
|
||||
@@ -1,182 +0,0 @@
|
||||
package org.briarproject.android.blogs;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.UiThread;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentStatePagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ProgressBar;
|
||||
|
||||
import org.briarproject.R;
|
||||
import org.briarproject.android.blogs.BaseController.BlogListener;
|
||||
import org.briarproject.android.fragment.BaseFragment;
|
||||
import org.briarproject.api.blogs.BlogPostHeader;
|
||||
import org.briarproject.api.nullsafety.MethodsNotNullByDefault;
|
||||
import org.briarproject.api.nullsafety.ParametersNotNullByDefault;
|
||||
import org.briarproject.api.sync.GroupId;
|
||||
import org.briarproject.api.sync.MessageId;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static android.view.View.INVISIBLE;
|
||||
import static android.view.View.VISIBLE;
|
||||
import static org.briarproject.android.blogs.BasePostPagerFragment.BlogPostPagerAdapter.INVALID_POSITION;
|
||||
|
||||
@UiThread
|
||||
@MethodsNotNullByDefault
|
||||
@ParametersNotNullByDefault
|
||||
abstract class BasePostPagerFragment extends BaseFragment
|
||||
implements BlogListener {
|
||||
|
||||
static final String POST_ID = "briar.POST_ID";
|
||||
|
||||
private ViewPager pager;
|
||||
private ProgressBar progressBar;
|
||||
private BlogPostPagerAdapter postPagerAdapter;
|
||||
private MessageId postId;
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater,
|
||||
@Nullable ViewGroup container, @Nullable Bundle state) {
|
||||
|
||||
Bundle args;
|
||||
if (state == null) args = getArguments();
|
||||
else args = state;
|
||||
byte[] p = args.getByteArray(POST_ID);
|
||||
if (p == null)
|
||||
throw new IllegalStateException("No post ID in args");
|
||||
postId = new MessageId(p);
|
||||
|
||||
View v = inflater.inflate(R.layout.fragment_blog_post_pager, container,
|
||||
false);
|
||||
progressBar = (ProgressBar) v.findViewById(R.id.progressBar);
|
||||
progressBar.setVisibility(VISIBLE);
|
||||
|
||||
pager = (ViewPager) v.findViewById(R.id.pager);
|
||||
postPagerAdapter = new BlogPostPagerAdapter(getChildFragmentManager());
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
loadBlogPosts();
|
||||
}
|
||||
|
||||
protected void loadBlogPosts() {
|
||||
if (postId == null) {
|
||||
MessageId selected = getSelectedPost();
|
||||
if (selected != null) loadBlogPosts(selected);
|
||||
} else {
|
||||
loadBlogPosts(postId);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
MessageId selected = getSelectedPost();
|
||||
if (selected != null)
|
||||
outState.putByteArray(POST_ID, selected.getBytes());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlogPostAdded(BlogPostHeader header, boolean local) {
|
||||
loadBlogPost(header);
|
||||
}
|
||||
|
||||
abstract Fragment createFragment(GroupId g, MessageId m);
|
||||
|
||||
abstract void loadBlogPosts(MessageId select);
|
||||
|
||||
abstract void loadBlogPost(BlogPostHeader header);
|
||||
|
||||
protected void onBlogPostsLoaded(MessageId select,
|
||||
Collection<BlogPostItem> posts) {
|
||||
postId = null;
|
||||
postPagerAdapter.setPosts(posts);
|
||||
selectPost(select);
|
||||
}
|
||||
|
||||
protected void onBlogPostLoaded(BlogPostItem post) {
|
||||
MessageId selected = getSelectedPost();
|
||||
postPagerAdapter.addPost(post);
|
||||
if (selected != null) selectPost(selected);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private MessageId getSelectedPost() {
|
||||
if (postPagerAdapter.getCount() == 0) return null;
|
||||
int position = pager.getCurrentItem();
|
||||
return postPagerAdapter.getPost(position).getId();
|
||||
}
|
||||
|
||||
private void selectPost(MessageId m) {
|
||||
int pos = postPagerAdapter.getPostPosition(m);
|
||||
if (pos != INVALID_POSITION) {
|
||||
progressBar.setVisibility(INVISIBLE);
|
||||
pager.setAdapter(postPagerAdapter);
|
||||
pager.setCurrentItem(pos);
|
||||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
class BlogPostPagerAdapter extends FragmentStatePagerAdapter {
|
||||
|
||||
static final int INVALID_POSITION = -1;
|
||||
|
||||
private final List<BlogPostItem> posts = new ArrayList<>();
|
||||
|
||||
private BlogPostPagerAdapter(FragmentManager fm) {
|
||||
super(fm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return posts.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
BlogPostItem post = posts.get(position);
|
||||
return createFragment(post.getGroupId(), post.getId());
|
||||
}
|
||||
|
||||
private BlogPostItem getPost(int position) {
|
||||
return posts.get(position);
|
||||
}
|
||||
|
||||
private void setPosts(Collection<BlogPostItem> posts) {
|
||||
this.posts.clear();
|
||||
this.posts.addAll(posts);
|
||||
Collections.sort(this.posts);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
private void addPost(BlogPostItem post) {
|
||||
posts.add(post);
|
||||
Collections.sort(posts);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
private int getPostPosition(MessageId m) {
|
||||
int count = getCount();
|
||||
for (int i = 0; i < count; i++) {
|
||||
if (getPost(i).getId().equals(m)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return INVALID_POSITION;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,7 +49,7 @@ public class BlogActivity extends BriarActivity implements
|
||||
|
||||
@Override
|
||||
public void onBlogPostClick(BlogPostItem post) {
|
||||
BlogPostPagerFragment f = BlogPostPagerFragment.newInstance(post.getId());
|
||||
BlogPostFragment f = BlogPostFragment.newInstance(post.getId());
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.replace(R.id.fragmentContainer, f, f.getUniqueTag())
|
||||
.addToBackStack(f.getUniqueTag())
|
||||
|
||||
@@ -16,14 +16,12 @@ import org.briarproject.api.sync.MessageId;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import static org.briarproject.android.blogs.BasePostPagerFragment.POST_ID;
|
||||
|
||||
@UiThread
|
||||
@MethodsNotNullByDefault
|
||||
@ParametersNotNullByDefault
|
||||
public class BlogPostFragment extends BasePostFragment {
|
||||
|
||||
public final static String TAG = BlogPostFragment.class.getName();
|
||||
private static final String TAG = BlogPostFragment.class.getName();
|
||||
|
||||
private MessageId postId;
|
||||
|
||||
@@ -74,9 +72,11 @@ public class BlogPostFragment extends BasePostFragment {
|
||||
public void onResultUi(BlogPostItem post) {
|
||||
onBlogPostLoaded(post);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExceptionUi(DbException exception) {
|
||||
onBlogPostLoadException(exception);
|
||||
// TODO: Decide how to handle errors in the UI
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
package org.briarproject.android.blogs;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.UiThread;
|
||||
import android.support.v4.app.Fragment;
|
||||
|
||||
import org.briarproject.android.ActivityComponent;
|
||||
import org.briarproject.android.controller.handler.UiResultExceptionHandler;
|
||||
import org.briarproject.api.blogs.BlogPostHeader;
|
||||
import org.briarproject.api.db.DbException;
|
||||
import org.briarproject.api.nullsafety.MethodsNotNullByDefault;
|
||||
import org.briarproject.api.nullsafety.ParametersNotNullByDefault;
|
||||
import org.briarproject.api.sync.GroupId;
|
||||
import org.briarproject.api.sync.MessageId;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@UiThread
|
||||
@MethodsNotNullByDefault
|
||||
@ParametersNotNullByDefault
|
||||
public class BlogPostPagerFragment extends BasePostPagerFragment {
|
||||
|
||||
private static final String TAG = BlogPostPagerFragment.class.getName();
|
||||
|
||||
@Inject
|
||||
BlogController blogController;
|
||||
|
||||
static BlogPostPagerFragment newInstance(MessageId postId) {
|
||||
BlogPostPagerFragment f = new BlogPostPagerFragment();
|
||||
|
||||
Bundle args = new Bundle();
|
||||
args.putByteArray(POST_ID, postId.getBytes());
|
||||
f.setArguments(args);
|
||||
|
||||
return f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void injectFragment(ActivityComponent component) {
|
||||
component.inject(this);
|
||||
blogController.setBlogListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUniqueTag() {
|
||||
return TAG;
|
||||
}
|
||||
|
||||
@Override
|
||||
Fragment createFragment(final GroupId g, final MessageId m) {
|
||||
return BlogPostFragment.newInstance(m);
|
||||
}
|
||||
|
||||
@Override
|
||||
void loadBlogPosts(final MessageId select) {
|
||||
blogController.loadBlogPosts(
|
||||
new UiResultExceptionHandler<Collection<BlogPostItem>, DbException>(
|
||||
this) {
|
||||
@Override
|
||||
public void onResultUi(Collection<BlogPostItem> posts) {
|
||||
onBlogPostsLoaded(select, posts);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExceptionUi(DbException exception) {
|
||||
// TODO: Decide how to handle errors in the UI
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
void loadBlogPost(BlogPostHeader header) {
|
||||
blogController.loadBlogPost(header,
|
||||
new UiResultExceptionHandler<BlogPostItem, DbException>(
|
||||
this) {
|
||||
@Override
|
||||
public void onResultUi(BlogPostItem post) {
|
||||
onBlogPostLoaded(post);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExceptionUi(DbException exception) {
|
||||
// TODO: Decide how to handle errors in the UI
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlogRemoved() {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@ import static android.support.v4.app.ActivityOptionsCompat.makeSceneTransitionAn
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.VISIBLE;
|
||||
import static org.briarproject.android.BriarActivity.GROUP_ID;
|
||||
import static org.briarproject.android.blogs.BasePostPagerFragment.POST_ID;
|
||||
import static org.briarproject.android.blogs.BasePostFragment.POST_ID;
|
||||
import static org.briarproject.android.util.AndroidUtils.TEASER_LENGTH;
|
||||
import static org.briarproject.android.util.AndroidUtils.getSpanned;
|
||||
import static org.briarproject.android.util.AndroidUtils.getTeaser;
|
||||
|
||||
@@ -223,8 +223,8 @@ public class FeedFragment extends BaseFragment implements
|
||||
|
||||
@Override
|
||||
public void onBlogPostClick(BlogPostItem post) {
|
||||
FeedPostPagerFragment f = FeedPostPagerFragment
|
||||
.newInstance(post.getId());
|
||||
FeedPostFragment f =
|
||||
FeedPostFragment.newInstance(post.getGroupId(), post.getId());
|
||||
getActivity().getSupportFragmentManager().beginTransaction()
|
||||
.replace(R.id.content_fragment, f, f.getUniqueTag())
|
||||
.addToBackStack(f.getUniqueTag())
|
||||
|
||||
@@ -18,14 +18,13 @@ import org.briarproject.api.sync.MessageId;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import static org.briarproject.android.BriarActivity.GROUP_ID;
|
||||
import static org.briarproject.android.blogs.BasePostPagerFragment.POST_ID;
|
||||
|
||||
@UiThread
|
||||
@MethodsNotNullByDefault
|
||||
@ParametersNotNullByDefault
|
||||
public class FeedPostFragment extends BasePostFragment {
|
||||
|
||||
public final static String TAG = FeedPostFragment.class.getName();
|
||||
private static final String TAG = FeedPostFragment.class.getName();
|
||||
|
||||
private MessageId postId;
|
||||
private GroupId blogId;
|
||||
@@ -62,6 +61,11 @@ public class FeedPostFragment extends BasePostFragment {
|
||||
return super.onCreateView(inflater, container, savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUniqueTag() {
|
||||
return TAG;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void injectFragment(ActivityComponent component) {
|
||||
component.inject(this);
|
||||
@@ -77,16 +81,12 @@ public class FeedPostFragment extends BasePostFragment {
|
||||
public void onResultUi(BlogPostItem post) {
|
||||
onBlogPostLoaded(post);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExceptionUi(DbException exception) {
|
||||
onBlogPostLoadException(exception);
|
||||
// TODO: Decide how to handle errors in the UI
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUniqueTag() {
|
||||
return TAG;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,113 +0,0 @@
|
||||
package org.briarproject.android.blogs;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.UiThread;
|
||||
import android.support.v4.app.Fragment;
|
||||
|
||||
import org.briarproject.android.ActivityComponent;
|
||||
import org.briarproject.android.blogs.FeedController.FeedListener;
|
||||
import org.briarproject.android.controller.handler.UiResultExceptionHandler;
|
||||
import org.briarproject.api.blogs.BlogPostHeader;
|
||||
import org.briarproject.api.db.DbException;
|
||||
import org.briarproject.api.nullsafety.MethodsNotNullByDefault;
|
||||
import org.briarproject.api.nullsafety.ParametersNotNullByDefault;
|
||||
import org.briarproject.api.sync.GroupId;
|
||||
import org.briarproject.api.sync.MessageId;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@UiThread
|
||||
@MethodsNotNullByDefault
|
||||
@ParametersNotNullByDefault
|
||||
public class FeedPostPagerFragment extends BasePostPagerFragment
|
||||
implements FeedListener {
|
||||
|
||||
private static final String TAG = FeedPostPagerFragment.class.getName();
|
||||
|
||||
@Inject
|
||||
FeedController feedController;
|
||||
|
||||
static FeedPostPagerFragment newInstance(MessageId postId) {
|
||||
FeedPostPagerFragment f = new FeedPostPagerFragment();
|
||||
|
||||
Bundle args = new Bundle();
|
||||
args.putByteArray(POST_ID, postId.getBytes());
|
||||
f.setArguments(args);
|
||||
|
||||
return f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void injectFragment(ActivityComponent component) {
|
||||
component.inject(this);
|
||||
feedController.setFeedListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUniqueTag() {
|
||||
return TAG;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
feedController.onStart();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
feedController.onStop();
|
||||
}
|
||||
|
||||
@Override
|
||||
Fragment createFragment(GroupId g, MessageId m) {
|
||||
return FeedPostFragment.newInstance(g, m);
|
||||
}
|
||||
|
||||
@Override
|
||||
void loadBlogPosts(final MessageId select) {
|
||||
feedController.loadBlogPosts(
|
||||
new UiResultExceptionHandler<Collection<BlogPostItem>, DbException>(
|
||||
this) {
|
||||
@Override
|
||||
public void onResultUi(Collection<BlogPostItem> posts) {
|
||||
onBlogPostsLoaded(select, posts);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExceptionUi(DbException exception) {
|
||||
// TODO: Decide how to handle errors in the UI
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
void loadBlogPost(BlogPostHeader header) {
|
||||
feedController.loadBlogPost(header,
|
||||
new UiResultExceptionHandler<BlogPostItem, DbException>(
|
||||
this) {
|
||||
@Override
|
||||
public void onResultUi(BlogPostItem post) {
|
||||
onBlogPostLoaded(post);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExceptionUi(DbException exception) {
|
||||
// TODO: Decide how to handle errors in the UI
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlogAdded() {
|
||||
loadBlogPosts();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlogRemoved() {
|
||||
loadBlogPosts();
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@ import org.briarproject.android.fragment.BaseFragment.BaseFragmentListener;
|
||||
import org.briarproject.api.sync.GroupId;
|
||||
import org.briarproject.api.sync.MessageId;
|
||||
|
||||
import static org.briarproject.android.blogs.BasePostPagerFragment.POST_ID;
|
||||
import static org.briarproject.android.blogs.BasePostFragment.POST_ID;
|
||||
|
||||
public class ReblogActivity extends BriarActivity implements
|
||||
BaseFragmentListener {
|
||||
|
||||
@@ -28,7 +28,7 @@ import static android.view.View.GONE;
|
||||
import static android.view.View.INVISIBLE;
|
||||
import static android.view.View.VISIBLE;
|
||||
import static org.briarproject.android.BriarActivity.GROUP_ID;
|
||||
import static org.briarproject.android.blogs.BasePostPagerFragment.POST_ID;
|
||||
import static org.briarproject.android.blogs.BasePostFragment.POST_ID;
|
||||
|
||||
@MethodsNotNullByDefault
|
||||
@ParametersNotNullByDefault
|
||||
|
||||
Reference in New Issue
Block a user