diff --git a/MessengerProj/jni/mrwrapper.c b/MessengerProj/jni/mrwrapper.c
index 3716da5e5..b41f632fe 100644
--- a/MessengerProj/jni/mrwrapper.c
+++ b/MessengerProj/jni/mrwrapper.c
@@ -379,6 +379,12 @@ JNIEXPORT jint Java_com_b44t_messenger_MrMailbox_marknoticedChat(JNIEnv *env, jc
}
+JNIEXPORT jint Java_com_b44t_messenger_MrMailbox_archiveChat(JNIEnv *env, jclass cls, jint chat_id, jint archive)
+{
+ return (jlong)mrmailbox_archive_chat(get_mrmailbox_t(env, cls), chat_id, archive);
+}
+
+
JNIEXPORT jint Java_com_b44t_messenger_MrMailbox_createChatByContactId(JNIEnv *env, jclass cls, jint contact_id)
{
return (jint)mrmailbox_create_chat_by_contact_id(get_mrmailbox_t(env, cls), contact_id);
@@ -668,6 +674,13 @@ JNIEXPORT jint Java_com_b44t_messenger_MrChat_getType(JNIEnv *env, jclass cls)
}
+JNIEXPORT jint Java_com_b44t_messenger_MrChat_getArchived(JNIEnv *env, jclass cls)
+{
+ mrchat_t* ths = get_mrchat_t(env, cls); if( ths == NULL ) { return 0; }
+ return ths->m_archived;
+}
+
+
JNIEXPORT jstring Java_com_b44t_messenger_MrChat_getName(JNIEnv *env, jclass cls)
{
mrchat_t* ths = get_mrchat_t(env, cls); if( ths == NULL ) { return JSTRING_NEW(NULL); }
diff --git a/MessengerProj/src/main/java/com/b44t/messenger/ChatlistActivity.java b/MessengerProj/src/main/java/com/b44t/messenger/ChatlistActivity.java
index 274c4bf46..c65310e81 100644
--- a/MessengerProj/src/main/java/com/b44t/messenger/ChatlistActivity.java
+++ b/MessengerProj/src/main/java/com/b44t/messenger/ChatlistActivity.java
@@ -420,6 +420,29 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
}
});
+ listView.setOnItemLongClickListener(new RecyclerListView.OnItemLongClickListener() {
+ @Override
+ public boolean onItemClick(View view, int position) {
+ RecyclerView.Adapter adapter = listView.getAdapter();
+ if (adapter == chatlistAdapter) {
+ final MrChat mrChat = chatlistAdapter.getItem(position);
+ if (mrChat != null) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
+ CharSequence[] items = new CharSequence[]{context.getString(mrChat.getArchived()==0? R.string.ArchiveChat : R.string.UnarchiveChat)};
+ builder.setItems(items, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialogInterface, int i) {
+ MrMailbox.archiveChat(mrChat.getId(), mrChat.getArchived()==0? 1: 0);
+ MrMailbox.MrCallback(MrMailbox.MR_EVENT_MSGS_CHANGED, 0, 0);
+ }
+ });
+ showDialog(builder.create());
+ }
+ }
+ return false;
+ }
+ });
+
searchEmptyView = new EmptyTextProgressView(context);
searchEmptyView.setVisibility(View.GONE);
searchEmptyView.setShowAtCenter(true);
diff --git a/MessengerProj/src/main/java/com/b44t/messenger/MrChat.java b/MessengerProj/src/main/java/com/b44t/messenger/MrChat.java
index b03ffa6bd..4b0a5f085 100644
--- a/MessengerProj/src/main/java/com/b44t/messenger/MrChat.java
+++ b/MessengerProj/src/main/java/com/b44t/messenger/MrChat.java
@@ -48,6 +48,7 @@ public class MrChat {
public native int getId();
public native int getType();
+ public native int getArchived();
public native String getName();
public native String getSubtitle();
diff --git a/MessengerProj/src/main/java/com/b44t/messenger/MrMailbox.java b/MessengerProj/src/main/java/com/b44t/messenger/MrMailbox.java
index ee200122e..56b5492b5 100644
--- a/MessengerProj/src/main/java/com/b44t/messenger/MrMailbox.java
+++ b/MessengerProj/src/main/java/com/b44t/messenger/MrMailbox.java
@@ -125,6 +125,7 @@ public class MrMailbox {
public native static int markseenMsgs (int msg_ids[]);
public native static int marknoticedChat (int chat_id);
+ public native static int archiveChat (int chat_id, int archive);
public native static int getChatIdByContactId (int contact_id);
public native static int createChatByContactId(int contact_id); // returns chat_id
@@ -372,6 +373,7 @@ public class MrMailbox {
case 35: s = ""+ApplicationLoader.applicationContext.getString(R.string.EncrinfoNoE2EExplain)+""; break;
case 36: s = ""+ApplicationLoader.applicationContext.getString(R.string.E2eeOffBecauseOfUser)+""; break;
case 37: s = ""+ApplicationLoader.applicationContext.getString(R.string.E2eeOffBecauseOfRecipient)+""; break;
+ case 40: s = ApplicationLoader.applicationContext.getString(R.string.ArchivedChats); break;
}
return String2CPtr(s);
diff --git a/MessengerProj/src/main/res/values/strings.xml b/MessengerProj/src/main/res/values/strings.xml
index a415c55b6..7fd621125 100644
--- a/MessengerProj/src/main/res/values/strings.xml
+++ b/MessengerProj/src/main/res/values/strings.xml
@@ -408,4 +408,7 @@
To enable end-to-end-encryption, check the corresponding option in your settings.
Encryption will switch to end-to-end if the contact enables the corresponding option.
Not now
+ Archive chat
+ Unarchive chat
+ Archived chats