diff --git a/briar-android/res/menu/blogs_my_blog_actions.xml b/briar-android/res/menu/blogs_my_blog_actions.xml
index 5c9052edb..95cb880e7 100644
--- a/briar-android/res/menu/blogs_my_blog_actions.xml
+++ b/briar-android/res/menu/blogs_my_blog_actions.xml
@@ -9,4 +9,10 @@
android:title="@string/blogs_write_blog_post"
app:showAsAction="ifRoom"/>
+
+
\ No newline at end of file
diff --git a/briar-android/res/values/strings.xml b/briar-android/res/values/strings.xml
index d283c5c97..0c5bfab93 100644
--- a/briar-android/res/values/strings.xml
+++ b/briar-android/res/values/strings.xml
@@ -269,6 +269,11 @@
Publish
Blog failed to load
Blog Post failed to load
+ Delete Blog
+ Are you sure that you want to delete this Blog and all posts?\nNote that this will not delete the blog from other people\'s devices.
+ Delete Blog
+ Keep
+ Remove Blog
Blog List
Available Blogs
diff --git a/briar-android/res/values/themes.xml b/briar-android/res/values/themes.xml
index e87077f03..49c05904f 100644
--- a/briar-android/res/values/themes.xml
+++ b/briar-android/res/values/themes.xml
@@ -42,6 +42,8 @@
- @color/briar_primary
- @color/briar_primary_dark
- @color/briar_accent
+ - @style/BriarButtonFlat.Positive
+ - @style/BriarButtonFlat.Negative
- @color/briar_text_primary
- @color/briar_text_primary_inverse
- @color/briar_text_secondary
@@ -49,6 +51,12 @@
- @color/briar_text_tertiary
- @color/briar_text_tertiary_inverse
- @color/briar_text_link
+ - @style/DialogAnimation
+
+
+
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogController.java b/briar-android/src/org/briarproject/android/blogs/BlogController.java
index ba9d085c2..a805c2d34 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogController.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogController.java
@@ -22,6 +22,8 @@ public interface BlogController extends ActivityLifecycleController {
@Nullable
MessageId getBlogPostId(int position);
+ void deleteBlog(final UiResultHandler resultHandler);
+
interface BlogPostListener {
void onBlogPostAdded(final BlogPostItem post, final boolean local);
}
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java b/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java
index f90a93095..eca0bd340 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java
@@ -5,6 +5,7 @@ import android.support.annotation.Nullable;
import org.briarproject.android.controller.DbControllerImpl;
import org.briarproject.android.controller.handler.UiResultHandler;
+import org.briarproject.api.blogs.Blog;
import org.briarproject.api.blogs.BlogManager;
import org.briarproject.api.blogs.BlogPostHeader;
import org.briarproject.api.db.DbException;
@@ -168,4 +169,25 @@ public class BlogControllerImpl extends DbControllerImpl
return null;
}
+ @Override
+ public void deleteBlog(final UiResultHandler resultHandler) {
+ runOnDbThread(new Runnable() {
+ @Override
+ public void run() {
+ if (data.getGroupId() == null) {
+ resultHandler.onResult(false);
+ return;
+ }
+ try {
+ Blog b = blogManager.getBlog(data.getGroupId());
+ blogManager.removeBlog(b);
+ } catch (DbException e) {
+ if (LOG.isLoggable(WARNING))
+ LOG.log(WARNING, e.toString(), e);
+ resultHandler.onResult(false);
+ }
+ }
+ });
+ }
+
}
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogFragment.java b/briar-android/src/org/briarproject/android/blogs/BlogFragment.java
index 430cc611a..ba142cf4e 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogFragment.java
@@ -1,11 +1,13 @@
package org.briarproject.android.blogs;
+import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.Snackbar;
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.LayoutInflater;
import android.view.Menu;
@@ -144,6 +146,9 @@ public class BlogFragment extends BaseFragment implements BlogPostListener {
ActivityCompat.startActivityForResult(getActivity(), i,
REQUEST_WRITE_POST, options.toBundle());
return true;
+ case R.id.action_delete_blog:
+ showDeleteDialog();
+ return true;
default:
return super.onOptionsItemSelected(item);
}
@@ -188,4 +193,34 @@ public class BlogFragment extends BaseFragment implements BlogPostListener {
loadData(true);
}
+ private void showDeleteDialog() {
+ DialogInterface.OnClickListener okListener =
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ deleteBlog();
+ }
+ };
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(),
+ R.style.BriarDialogTheme);
+ builder.setTitle(getString(R.string.blogs_delete_blog));
+ builder.setMessage(getString(R.string.blogs_delete_blog_dialog_message));
+ builder.setPositiveButton(R.string.blogs_delete_blog_cancel, null);
+ builder.setNegativeButton(R.string.blogs_delete_blog_ok, okListener);
+ builder.show();
+ }
+
+ private void deleteBlog() {
+ blogController.deleteBlog(
+ new UiResultHandler(getActivity()) {
+ @Override
+ public void onResultUi(Boolean result) {
+ if (!result) return;
+ Toast.makeText(getActivity(), R.string.forum_left_toast,
+ LENGTH_SHORT).show();
+ getActivity().supportFinishAfterTransition();
+ }
+ });
+ }
+
}