diff --git a/jni/dc_wrapper.c b/jni/dc_wrapper.c index f82dd9a27..6fe99ba11 100644 --- a/jni/dc_wrapper.c +++ b/jni/dc_wrapper.c @@ -738,6 +738,12 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcContext_imexHasBackup(JNIEnv *env, j } +JNIEXPORT void Java_com_b44t_messenger_DcContext_emptyServer(JNIEnv *env, jobject obj, jint flags) +{ + dc_empty_server(get_dc_context(env, obj), flags); +} + + JNIEXPORT jint Java_com_b44t_messenger_DcContext_addAddressBook(JNIEnv *env, jobject obj, jstring adrbook) { CHAR_REF(adrbook); diff --git a/res/layout/empty_folder_options.xml b/res/layout/empty_folder_options.xml new file mode 100644 index 000000000..d1930c3e3 --- /dev/null +++ b/res/layout/empty_folder_options.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/res/xml/preferences_advanced.xml b/res/xml/preferences_advanced.xml index 771fae720..f5594c55f 100644 --- a/res/xml/preferences_advanced.xml +++ b/res/xml/preferences_advanced.xml @@ -42,16 +42,16 @@ - + + + - - diff --git a/src/com/b44t/messenger/DcContext.java b/src/com/b44t/messenger/DcContext.java index 6d8f3f42a..228123ff5 100644 --- a/src/com/b44t/messenger/DcContext.java +++ b/src/com/b44t/messenger/DcContext.java @@ -69,6 +69,9 @@ public class DcContext { public final static int DC_SHOW_EMAILS_ACCEPTED_CONTACTS = 1; public final static int DC_SHOW_EMAILS_ALL = 2; + public final static int DC_EMPTY_MVBOX = 0x01; + public final static int DC_EMPTY_INBOX = 0x02; + public DcContext(String osName) { handleEvent(0,0,0); // call handleEvent() to make sure it is not optimized away and JNI won't find it contextCPtr = createContextCPtr(osName); @@ -105,6 +108,7 @@ public class DcContext { public native boolean continueKeyTransfer (int msg_id, String setup_code); public native void imex (int what, String dir); public native String imexHasBackup (String dir); + public native void emptyServer (int flags); public native int checkPassword (String pw); public native boolean mayBeValidAddr (String addr); public native int lookupContactIdByAddr(String addr); diff --git a/src/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java b/src/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java index 179fc2fec..6e384ce66 100644 --- a/src/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java +++ b/src/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java @@ -288,20 +288,23 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment public boolean onPreferenceClick(Preference preference) { View gl = View.inflate(getActivity(), R.layout.empty_folder_options, null); new AlertDialog.Builder(getActivity()) - .setTitle("Empty folders on server") - .setMessage("This will delete all messages in the given folders on the server.") + .setTitle("Empty server folders") + .setMessage("This function helps to free space on your server by deleting messages in the given folders. Messages on this device will not be deleted.") .setView(gl) .setNegativeButton(R.string.cancel, null) - .setPositiveButton(R.string.ok, (dialog, which) -> { + .setPositiveButton("Delete messages", (dialog, which) -> { int flags = 0; - CheckBox cb = gl.findViewById(R.id.empty_inbox_chat_folder); + CheckBox cb = gl.findViewById(R.id.empty_inbox_folder); if (cb!=null && cb.isChecked()) { - flags |= DC_EMPTY_INBOX; + flags |= DcContext.DC_EMPTY_INBOX; } + cb = gl.findViewById(R.id.empty_deltachat_folder); if (cb!=null && cb.isChecked()) { - flags |= DC_EMPTY_MVBOX; + flags |= DcContext.DC_EMPTY_MVBOX; + } + if (flags!=0) { + dcContext.emptyServer(flags); } - }) .show(); return true;