UI for Sharing Blogs

This commit refactors the code for sharing forums,
so it can be used for sharing blogs as well.

It does not yet include code for responding to blog invitations.
This commit is contained in:
Torsten Grote
2016-08-01 20:13:12 -03:00
parent 4a4366078a
commit 2f7d188a07
19 changed files with 220 additions and 89 deletions

View File

@@ -32,6 +32,7 @@ public class BlogActivity extends BriarActivity implements BlogPostListener,
OnBlogPostClickListener, BaseFragmentListener {
static final int REQUEST_WRITE_POST = 1;
static final int REQUEST_SHARE = 2;
static final String BLOG_NAME = "briar.BLOG_NAME";
static final String IS_MY_BLOG = "briar.IS_MY_BLOG";
static final String IS_NEW_BLOG = "briar.IS_NEW_BLOG";
@@ -185,6 +186,7 @@ public class BlogActivity extends BriarActivity implements BlogPostListener,
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// The BlogPostAddedEvent arrives when the controller is not listening,
// so we need to manually reload the blog posts :(

View File

@@ -23,6 +23,8 @@ import org.briarproject.android.blogs.BlogController.BlogPostListener;
import org.briarproject.android.blogs.BlogPostAdapter.OnBlogPostClickListener;
import org.briarproject.android.controller.handler.UiResultHandler;
import org.briarproject.android.fragment.BaseFragment;
import org.briarproject.android.sharing.ShareActivity;
import org.briarproject.android.sharing.SharingStatusActivity;
import org.briarproject.android.util.BriarRecyclerView;
import org.briarproject.api.sync.GroupId;
@@ -30,6 +32,9 @@ import java.util.Collection;
import javax.inject.Inject;
import static android.app.Activity.RESULT_OK;
import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
import static android.content.Intent.FLAG_ACTIVITY_SINGLE_TOP;
import static android.support.design.widget.Snackbar.LENGTH_LONG;
import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation;
import static android.widget.Toast.LENGTH_SHORT;
@@ -37,7 +42,10 @@ import static org.briarproject.android.BriarActivity.GROUP_ID;
import static org.briarproject.android.blogs.BlogActivity.BLOG_NAME;
import static org.briarproject.android.blogs.BlogActivity.IS_MY_BLOG;
import static org.briarproject.android.blogs.BlogActivity.IS_NEW_BLOG;
import static org.briarproject.android.blogs.BlogActivity.REQUEST_SHARE;
import static org.briarproject.android.blogs.BlogActivity.REQUEST_WRITE_POST;
import static org.briarproject.android.sharing.ShareActivity.BLOG;
import static org.briarproject.android.sharing.ShareActivity.SHAREABLE;
public class BlogFragment extends BaseFragment implements BlogPostListener {
@@ -136,12 +144,18 @@ public class BlogFragment extends BaseFragment implements BlogPostListener {
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
if (myBlog) {
inflater.inflate(R.menu.blogs_my_blog_actions, menu);
} else {
inflater.inflate(R.menu.blogs_blog_actions, menu);
}
super.onCreateOptionsMenu(menu, inflater);
}
@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 android.R.id.home:
getActivity().onBackPressed();
@@ -151,18 +165,37 @@ public class BlogFragment extends BaseFragment implements BlogPostListener {
new Intent(getActivity(), WriteBlogPostActivity.class);
i.putExtra(GROUP_ID, groupId.getBytes());
i.putExtra(BLOG_NAME, blogName);
ActivityOptionsCompat options =
makeCustomAnimation(getActivity(),
android.R.anim.slide_in_left,
android.R.anim.slide_out_right);
ActivityCompat.startActivityForResult(getActivity(), i,
REQUEST_WRITE_POST, options.toBundle());
return true;
case R.id.action_blog_share:
Intent i2 = new Intent(getActivity(), ShareActivity.class);
i2.setFlags(FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP);
i2.putExtra(GROUP_ID, groupId.getBytes());
i2.putExtra(SHAREABLE, BLOG);
startActivityForResult(i2, REQUEST_SHARE, options.toBundle());
return true;
case R.id.action_blog_sharing_status:
Intent i3 =
new Intent(getActivity(), SharingStatusActivity.class);
i3.setFlags(FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP);
i3.putExtra(GROUP_ID, groupId.getBytes());
startActivity(i3, options.toBundle());
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onActivityResult(int request, int result, Intent data) {
super.onActivityResult(request, result, data);
if (request == REQUEST_SHARE && result == RESULT_OK) {
displaySnackbar(R.string.blogs_sharing_snackbar);
}
}
@Override
public String getUniqueTag() {
return TAG;
@@ -202,6 +235,13 @@ public class BlogFragment extends BaseFragment implements BlogPostListener {
loadData(true);
}
private void displaySnackbar(int stringId) {
Snackbar snackbar =
Snackbar.make(list, stringId, Snackbar.LENGTH_SHORT);
snackbar.getView().setBackgroundResource(R.color.briar_primary);
snackbar.show();
}
private void showDeleteDialog() {
DialogInterface.OnClickListener okListener =
new DialogInterface.OnClickListener() {