From aba6b7405265a66a0149813104a26bfeb86573e9 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Wed, 17 Feb 2016 04:02:53 +0100 Subject: [PATCH] Bugfix: Hidden events now stay really hidden. --- .../de/kuschku/libquassel/localtypes/BacklogFilter.java | 3 +++ .../de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java | 4 ++-- .../kuschku/quasseldroid_ng/ui/chat/drawer/BufferItem.java | 2 +- .../kuschku/quasseldroid_ng/ui/chat/drawer/NetworkItem.java | 6 +++++- .../kuschku/util/buffermetadata/BufferMetaDataHelper.java | 5 +++-- .../java/de/kuschku/util/irc/format/IrcFormatHelper.java | 3 ++- 6 files changed, 16 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/BacklogFilter.java b/app/src/main/java/de/kuschku/libquassel/localtypes/BacklogFilter.java index 9a2fce8c1..ffe87c6a6 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/BacklogFilter.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/BacklogFilter.java @@ -23,6 +23,7 @@ package de.kuschku.libquassel.localtypes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.util.Log; import org.joda.time.DateTime; import org.joda.time.DateTimeUtils; @@ -187,6 +188,8 @@ public class BacklogFilter implements UICallback { public void setFilters(int filters) { setFiltersInternal(filters); client.metaDataManager().setHiddendata(client.coreId(), bufferId, filters); + int after = client.metaDataManager().hiddendata(client.coreId(), bufferId); + Log.e("DEBUG", filters + ":" + after); } private void setFiltersInternal(int filters) { diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java index 03d030be9..10f3142a6 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java @@ -233,13 +233,12 @@ public class MainActivity extends BoundActivity { public void onConnectionChange(ConnectionChangeEvent.Status status) { if (status == ConnectionChangeEvent.Status.CONNECTED) { - replaceFragment(new ChatFragment()); updateBufferViewConfigs(); context.client().backlogManager().open(this.status.bufferId); accountHeader.setActiveProfile(this.status.bufferViewConfigId, true); + replaceFragment(new ChatFragment()); } else if (status == ConnectionChangeEvent.Status.DISCONNECTED) { Toast.makeText(getApplication(), context.themeUtil().translations.statusDisconnected, Toast.LENGTH_LONG).show(); - reauth(); } } @@ -282,6 +281,7 @@ public class MainActivity extends BoundActivity { } } } + drawerLeft.setSelection(id, false); } private void selectBufferViewConfig(@IntRange(from = -1) int bufferViewConfigId) { diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferItem.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferItem.java index 60514b98f..dd27587a6 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferItem.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferItem.java @@ -139,7 +139,7 @@ public class BufferItem extends SecondaryDrawerItem { @Override public long getIdentifier() { - return buffer.getInfo().id() + buffer.getInfo().networkId() << 16; + return buffer.getInfo().id(); } @Override diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/NetworkItem.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/NetworkItem.java index a0b65a947..9a21ffcfc 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/NetworkItem.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/NetworkItem.java @@ -81,7 +81,11 @@ public class NetworkItem extends PrimaryDrawerItem implements IObservable<Drawer List<IDrawerItem> bufferItems = new ArrayList<>(); for (int id : config.bufferList()) { if (client.bufferManager().byNetwork(network.networkId()).contains(id)) { - bufferItems.add(manager.get(id)); + if (config.allowedBufferTypes() == 0 || + config.allowedBufferTypes() == -1 || + (config.allowedBufferTypes() & client.bufferManager().buffer(id).getInfo().type().id) != 0) + + bufferItems.add(manager.get(id)); } } return bufferItems; diff --git a/app/src/main/java/de/kuschku/util/buffermetadata/BufferMetaDataHelper.java b/app/src/main/java/de/kuschku/util/buffermetadata/BufferMetaDataHelper.java index bfd1e38bc..4f77c91bc 100644 --- a/app/src/main/java/de/kuschku/util/buffermetadata/BufferMetaDataHelper.java +++ b/app/src/main/java/de/kuschku/util/buffermetadata/BufferMetaDataHelper.java @@ -82,11 +82,11 @@ public class BufferMetaDataHelper extends SQLiteOpenHelper { public void onCreate(SQLiteDatabase db) { // Why do we use String.format and not prepared statements? Because we can’t bind table or // column names in prepared statements - String statement = String.format("CREATE TABLE %s (%s, %s, %s, %s, PRIMARY KEY (%s, %s), UNIQUE(%s));", + String statement = String.format("CREATE TABLE %s (%s, %s, %s, %s, PRIMARY KEY (%s, %s), UNIQUE(%s, %s));", TABLE_ACCOUNTS, KEY_CORE, KEY_BUFFER, KEY_HIDDEN, KEY_MARKERLINE, KEY_CORE, KEY_BUFFER, - KEY_CORE); + KEY_CORE, KEY_BUFFER); db.execSQL(statement); } @@ -159,6 +159,7 @@ public class BufferMetaDataHelper extends SQLiteOpenHelper { } public int hiddenData(String coreid, int bufferid) { + ensureExisting(coreid, bufferid); Cursor cursor = cursorFindData(coreid); if (cursor.moveToFirst()) { do { diff --git a/app/src/main/java/de/kuschku/util/irc/format/IrcFormatHelper.java b/app/src/main/java/de/kuschku/util/irc/format/IrcFormatHelper.java index d1776edb3..ad2ecb6ef 100644 --- a/app/src/main/java/de/kuschku/util/irc/format/IrcFormatHelper.java +++ b/app/src/main/java/de/kuschku/util/irc/format/IrcFormatHelper.java @@ -94,7 +94,8 @@ public class IrcFormatHelper { while (channelMatcher.find()) { QIrcChannel channel = client.networkManager().network(message.bufferInfo.networkId()).ircChannel(channelMatcher.group()); Buffer buffer = client.bufferManager().channel(channel); - spans.add(new FutureClickableSpan(new ChannelSpan(client, buffer.getInfo().id()), channelMatcher.start(), channelMatcher.end())); + if (buffer != null) + spans.add(new FutureClickableSpan(new ChannelSpan(client, buffer.getInfo().id()), channelMatcher.start(), channelMatcher.end())); } for (FutureClickableSpan span : spans) { str.setSpan(span.span, span.start, span.end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); -- GitLab