From b2bd9cc0bce00ea4a7f87060cb3eaa5ea19d526f Mon Sep 17 00:00:00 2001 From: NekoInverter <42698724+nekoinverter@users.noreply.github.com> Date: Sun, 26 Apr 2020 14:50:44 +0800 Subject: [PATCH] Support filter emoticon --- .../messenger/MessagesController.java | 1 + .../telegram/messenger/MessagesStorage.java | 26 +++++++++++++++---- .../java/org/telegram/ui/DialogsActivity.java | 13 +++++++++- .../src/main/res/values/strings_neko.xml | 4 --- 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java index ae807bc4f..0cf0a6703 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java @@ -375,6 +375,7 @@ public class MessagesController extends BaseController implements NotificationCe public ArrayList neverShow = new ArrayList<>(); public LongSparseArray pinnedDialogs = new LongSparseArray<>(); public ArrayList dialogs = new ArrayList<>(); + public String emoticon; } private DialogFilter sortingDialogFilter; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java index 3c61f2f8d..e7281bf77 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java @@ -304,7 +304,7 @@ public class MessagesStorage extends BaseController { database.executeFast("CREATE INDEX IF NOT EXISTS folder_id_idx_dialogs ON dialogs(folder_id);").stepThis().dispose(); database.executeFast("CREATE INDEX IF NOT EXISTS flags_idx_dialogs ON dialogs(flags);").stepThis().dispose(); - database.executeFast("CREATE TABLE dialog_filter(id INTEGER PRIMARY KEY, ord INTEGER, unread_count INTEGER, flags INTEGER, title TEXT)").stepThis().dispose(); + database.executeFast("CREATE TABLE dialog_filter_neko(id INTEGER PRIMARY KEY, ord INTEGER, unread_count INTEGER, flags INTEGER, title TEXT, emoticon TEXT)").stepThis().dispose(); database.executeFast("CREATE TABLE dialog_filter_ep(id INTEGER, peer INTEGER, PRIMARY KEY (id, peer))").stepThis().dispose(); database.executeFast("CREATE TABLE dialog_filter_pin_v2(id INTEGER, peer INTEGER, pin INTEGER, PRIMARY KEY (id, peer))").stepThis().dispose(); @@ -420,6 +420,11 @@ public class MessagesStorage extends BaseController { FileLog.e(e2); } } + try { + database.executeFast("CREATE TABLE IF NOT EXISTS dialog_filter_neko(id INTEGER PRIMARY KEY, ord INTEGER, unread_count INTEGER, flags INTEGER, title TEXT, emoticon TEXT)").stepThis().dispose(); + } catch (Exception e) { + FileLog.e(e); + } if (version < LAST_DB_VERSION) { updateDbToLastVersion(version); } @@ -1593,7 +1598,7 @@ public class MessagesStorage extends BaseController { usersToLoad.add(getUserConfig().getClientUserId()); - SQLiteCursor filtersCursor = database.queryFinalized("SELECT id, ord, unread_count, flags, title FROM dialog_filter WHERE 1"); + SQLiteCursor filtersCursor = database.queryFinalized("SELECT id, ord, unread_count, flags, title, emoticon FROM dialog_filter_neko WHERE 1"); boolean updateCounters = false; while (filtersCursor.next()) { @@ -1603,6 +1608,7 @@ public class MessagesStorage extends BaseController { filter.pendingUnreadCount = filter.unreadCount = -1;//filtersCursor.intValue(2); filter.flags = filtersCursor.intValue(3); filter.name = filtersCursor.stringValue(4); + filter.emoticon = filtersCursor.stringValue(5); dialogFilters.add(filter); dialogFiltersMap.put(filter.id, filter); filtersById.put(filter.id, filter); @@ -2063,12 +2069,17 @@ public class MessagesStorage extends BaseController { dialogFiltersMap.put(filter.id, filter); } - SQLitePreparedStatement state = database.executeFast("REPLACE INTO dialog_filter VALUES(?, ?, ?, ?, ?)"); + SQLitePreparedStatement state = database.executeFast("REPLACE INTO dialog_filter_neko VALUES(?, ?, ?, ?, ?, ?)"); state.bindInteger(1, filter.id); state.bindInteger(2, filter.order); state.bindInteger(3, filter.unreadCount); state.bindInteger(4, filter.flags); state.bindString(5, filter.name); + if (filter.emoticon != null) { + state.bindString(6, filter.emoticon); + } else { + state.bindNull(6); + } state.step(); state.dispose(); if (peers) { @@ -2169,6 +2180,10 @@ public class MessagesStorage extends BaseController { changed = true; filter.name = newFilter.title; } + if (!TextUtils.equals(filter.emoticon, newFilter.emoticon)) { + changed = true; + filter.emoticon = newFilter.emoticon; + } if (filter.flags != newFlags) { filter.flags = newFlags; changed = true; @@ -2315,6 +2330,7 @@ public class MessagesStorage extends BaseController { filter.id = newFilter.id; filter.flags = newFlags; filter.name = newFilter.title; + filter.emoticon = newFilter.emoticon; filter.pendingUnreadCount = -1; for (int c = 0; c < 2; c++) { if (c == 0) { @@ -2477,7 +2493,7 @@ public class MessagesStorage extends BaseController { try { dialogFilters.remove(filter); dialogFiltersMap.remove(filter.id); - database.executeFast("DELETE FROM dialog_filter WHERE id = " + filter.id).stepThis().dispose(); + database.executeFast("DELETE FROM dialog_filter_neko WHERE id = " + filter.id).stepThis().dispose(); database.executeFast("DELETE FROM dialog_filter_ep WHERE id = " + filter.id).stepThis().dispose(); database.executeFast("DELETE FROM dialog_filter_pin_v2 WHERE id = " + filter.id).stepThis().dispose(); } catch (Exception e) { @@ -2507,7 +2523,7 @@ public class MessagesStorage extends BaseController { public void saveDialogFiltersOrderInternal() { try { - SQLitePreparedStatement state = database.executeFast("UPDATE dialog_filter SET ord = ?, flags = ? WHERE id = ?"); + SQLitePreparedStatement state = database.executeFast("UPDATE dialog_filter_neko SET ord = ?, flags = ? WHERE id = ?"); for (int a = 0, N = dialogFilters.size(); a < N ;a++) { MessagesController.DialogFilter filter = dialogFilters.get(a); state.requery(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java index 34c1b86c7..3c2c105df 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java @@ -3000,7 +3000,18 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. filterTabsView.removeTabs(); if (!NekoConfig.hideAllTab) filterTabsView.addTab(Integer.MAX_VALUE, LocaleController.getString("FilterAllChats", R.string.FilterAllChats)); for (int a = 0, N = filters.size(); a < N; a++) { - filterTabsView.addTab(a, filters.get(a).name); + MessagesController.DialogFilter dialogFilter = filters.get(a); + switch (NekoConfig.tabsTitleType) { + case NekoConfig.TITLE_TYPE_TEXT: + filterTabsView.addTab(a, dialogFilter.name); + break; + case NekoConfig.TITLE_TYPE_ICON: + filterTabsView.addTab(a, dialogFilter.emoticon != null ? dialogFilter.emoticon : "📂"); + break; + case NekoConfig.TITLE_TYPE_MIX: + filterTabsView.addTab(a, dialogFilter.emoticon != null ? dialogFilter.emoticon + " " + dialogFilter.name : "📂 " + dialogFilter.name); + break; + } } id = filterTabsView.getCurrentTabId(); if (id >= 0) { diff --git a/TMessagesProj/src/main/res/values/strings_neko.xml b/TMessagesProj/src/main/res/values/strings_neko.xml index a83729a58..15ef3bd28 100644 --- a/TMessagesProj/src/main/res/values/strings_neko.xml +++ b/TMessagesProj/src/main/res/values/strings_neko.xml @@ -96,8 +96,4 @@ Titles Emoticons Emoticons with titles - Confirm sending video/voice message - Ask before calling - Confirm calling - Call to **%1$s**? \ No newline at end of file