mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 19:29:06 +01:00
@@ -9,4 +9,10 @@
|
|||||||
android:title="@string/blogs_write_blog_post"
|
android:title="@string/blogs_write_blog_post"
|
||||||
app:showAsAction="ifRoom"/>
|
app:showAsAction="ifRoom"/>
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_delete_blog"
|
||||||
|
android:icon="@drawable/action_delete_white"
|
||||||
|
android:title="@string/blogs_delete_blog"
|
||||||
|
app:showAsAction="never"/>
|
||||||
|
|
||||||
</menu>
|
</menu>
|
||||||
@@ -269,6 +269,11 @@
|
|||||||
<string name="blogs_publish_blog_post">Publish</string>
|
<string name="blogs_publish_blog_post">Publish</string>
|
||||||
<string name="blogs_blog_failed_to_load">Blog failed to load</string>
|
<string name="blogs_blog_failed_to_load">Blog failed to load</string>
|
||||||
<string name="blogs_blog_post_failed_to_load">Blog Post failed to load</string>
|
<string name="blogs_blog_post_failed_to_load">Blog Post failed to load</string>
|
||||||
|
<string name="blogs_delete_blog">Delete Blog</string>
|
||||||
|
<string name="blogs_delete_blog_dialog_message">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.</string>
|
||||||
|
<string name="blogs_delete_blog_ok">Delete Blog</string>
|
||||||
|
<string name="blogs_delete_blog_cancel">Keep</string>
|
||||||
|
<string name="blogs_remove_blog">Remove Blog</string>
|
||||||
|
|
||||||
<string name="blogs_blog_list">Blog List</string>
|
<string name="blogs_blog_list">Blog List</string>
|
||||||
<string name="blogs_available_blogs">Available Blogs</string>
|
<string name="blogs_available_blogs">Available Blogs</string>
|
||||||
|
|||||||
@@ -42,6 +42,8 @@
|
|||||||
<item name="colorPrimary">@color/briar_primary</item>
|
<item name="colorPrimary">@color/briar_primary</item>
|
||||||
<item name="colorPrimaryDark">@color/briar_primary_dark</item>
|
<item name="colorPrimaryDark">@color/briar_primary_dark</item>
|
||||||
<item name="colorAccent">@color/briar_accent</item>
|
<item name="colorAccent">@color/briar_accent</item>
|
||||||
|
<item name="buttonBarPositiveButtonStyle">@style/BriarButtonFlat.Positive</item>
|
||||||
|
<item name="buttonBarNegativeButtonStyle">@style/BriarButtonFlat.Negative</item>
|
||||||
<item name="android:textColorPrimary">@color/briar_text_primary</item>
|
<item name="android:textColorPrimary">@color/briar_text_primary</item>
|
||||||
<item name="android:textColorPrimaryInverse">@color/briar_text_primary_inverse</item>
|
<item name="android:textColorPrimaryInverse">@color/briar_text_primary_inverse</item>
|
||||||
<item name="android:textColorSecondary">@color/briar_text_secondary</item>
|
<item name="android:textColorSecondary">@color/briar_text_secondary</item>
|
||||||
@@ -49,6 +51,12 @@
|
|||||||
<item name="android:textColorTertiary">@color/briar_text_tertiary</item>
|
<item name="android:textColorTertiary">@color/briar_text_tertiary</item>
|
||||||
<item name="android:textColorTertiaryInverse">@color/briar_text_tertiary_inverse</item>
|
<item name="android:textColorTertiaryInverse">@color/briar_text_tertiary_inverse</item>
|
||||||
<item name="android:textColorLink">@color/briar_text_link</item>
|
<item name="android:textColorLink">@color/briar_text_link</item>
|
||||||
|
<item name="android:windowAnimationStyle">@style/DialogAnimation</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="DialogAnimation" parent="@android:style/Animation.Dialog">
|
||||||
|
<item name="android:windowEnterAnimation">@android:anim/fade_in</item>
|
||||||
|
<item name="android:windowExitAnimation">@android:anim/fade_out</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<!-- This fixes a UI bug in the support preference library -->
|
<!-- This fixes a UI bug in the support preference library -->
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ public interface BlogController extends ActivityLifecycleController {
|
|||||||
@Nullable
|
@Nullable
|
||||||
MessageId getBlogPostId(int position);
|
MessageId getBlogPostId(int position);
|
||||||
|
|
||||||
|
void deleteBlog(final UiResultHandler<Boolean> resultHandler);
|
||||||
|
|
||||||
interface BlogPostListener {
|
interface BlogPostListener {
|
||||||
void onBlogPostAdded(final BlogPostItem post, final boolean local);
|
void onBlogPostAdded(final BlogPostItem post, final boolean local);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import android.support.annotation.Nullable;
|
|||||||
|
|
||||||
import org.briarproject.android.controller.DbControllerImpl;
|
import org.briarproject.android.controller.DbControllerImpl;
|
||||||
import org.briarproject.android.controller.handler.UiResultHandler;
|
import org.briarproject.android.controller.handler.UiResultHandler;
|
||||||
|
import org.briarproject.api.blogs.Blog;
|
||||||
import org.briarproject.api.blogs.BlogManager;
|
import org.briarproject.api.blogs.BlogManager;
|
||||||
import org.briarproject.api.blogs.BlogPostHeader;
|
import org.briarproject.api.blogs.BlogPostHeader;
|
||||||
import org.briarproject.api.db.DbException;
|
import org.briarproject.api.db.DbException;
|
||||||
@@ -168,4 +169,25 @@ public class BlogControllerImpl extends DbControllerImpl
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteBlog(final UiResultHandler<Boolean> 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
package org.briarproject.android.blogs;
|
package org.briarproject.android.blogs;
|
||||||
|
|
||||||
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.design.widget.Snackbar;
|
import android.support.design.widget.Snackbar;
|
||||||
import android.support.v4.app.ActivityCompat;
|
import android.support.v4.app.ActivityCompat;
|
||||||
import android.support.v4.app.ActivityOptionsCompat;
|
import android.support.v4.app.ActivityOptionsCompat;
|
||||||
|
import android.support.v7.app.AlertDialog;
|
||||||
import android.support.v7.widget.LinearLayoutManager;
|
import android.support.v7.widget.LinearLayoutManager;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
@@ -144,6 +146,9 @@ public class BlogFragment extends BaseFragment implements BlogPostListener {
|
|||||||
ActivityCompat.startActivityForResult(getActivity(), i,
|
ActivityCompat.startActivityForResult(getActivity(), i,
|
||||||
REQUEST_WRITE_POST, options.toBundle());
|
REQUEST_WRITE_POST, options.toBundle());
|
||||||
return true;
|
return true;
|
||||||
|
case R.id.action_delete_blog:
|
||||||
|
showDeleteDialog();
|
||||||
|
return true;
|
||||||
default:
|
default:
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
@@ -188,4 +193,34 @@ public class BlogFragment extends BaseFragment implements BlogPostListener {
|
|||||||
loadData(true);
|
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<Boolean>(getActivity()) {
|
||||||
|
@Override
|
||||||
|
public void onResultUi(Boolean result) {
|
||||||
|
if (!result) return;
|
||||||
|
Toast.makeText(getActivity(), R.string.forum_left_toast,
|
||||||
|
LENGTH_SHORT).show();
|
||||||
|
getActivity().supportFinishAfterTransition();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user