From 4d415947db16c9f00edc41caa22b07695fef3980 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Wed, 24 Feb 2016 01:23:38 +0100 Subject: [PATCH] Fixed crash of channel topic screen --- .../syncables/types/impl/IrcChannel.java | 14 ++--- .../ui/chat/ChannelDetailActivity.java | 39 ++++++++------ .../kuschku/util/irc/chanmodes/ChanMode.java | 6 ++- .../irc/chanmodes/IrcModeProviderFactory.java | 15 +++++- .../chanmodes/impl/BewareIrcModeProvider.java | 34 +++++++++++-- .../impl/CharybdisIrcModeProvider.java | 50 ++++++++++++++++-- .../chanmodes/impl/DalIrcModeProvider.java | 40 +++++++++++++-- .../chanmodes/impl/DancerIrcModeProvider.java | 38 ++++++++++++-- .../irc/chanmodes/impl/FqIrcModeProvider.java | 39 ++++++++++++-- .../chanmodes/impl/HybridIrcModeProvider.java | 38 ++++++++++++-- .../impl/HyperionIrcModeProvider.java | 36 +++++++++++-- .../impl/InspireIrcModeProvider.java | 46 +++++++++++++++-- .../chanmodes/impl/NeoIrcModeProvider.java | 40 +++++++++++++-- .../impl/NightstarIrcModeProvider.java | 34 +++++++++++-- .../chanmodes/impl/RfcIrcModeProvider.java | 32 ++++++++++-- .../chanmodes/impl/ShadowIrcModeProvider.java | 51 +++++++++++++++++-- .../chanmodes/impl/SolidIrcModeProvider.java | 48 +++++++++++++++-- .../impl/UndernetIrcModeProvider.java | 32 ++++++++++-- .../chanmodes/impl/UnrealIrcModeProvider.java | 50 ++++++++++++++++-- .../res/layout/activity_channel_detail.xml | 5 +- app/src/main/res/values/attrs.xml | 8 +-- app/src/main/res/values/styles.xml | 4 ++ 22 files changed, 607 insertions(+), 92 deletions(-) diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcChannel.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcChannel.java index c6a994a3c..5e3fd2cac 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcChannel.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcChannel.java @@ -23,7 +23,6 @@ package de.kuschku.libquassel.syncables.types.impl; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.util.Log; import com.google.common.base.Joiner; @@ -53,12 +52,6 @@ public class IrcChannel extends AIrcChannel<IrcChannel> { @NonNull private final Map<String, Set<Character>> userModes = new HashMap<>(); private final ObservableSet<String> users = new ObservableSet<>(); - private String topic; - private String password; - private boolean encrypted; - private QNetwork network; - private String codecForEncoding; - private String codecForDecoding; @NonNull public Map<Character, List<String>> A_channelModes = new HashMap<>(); @NonNull @@ -67,6 +60,12 @@ public class IrcChannel extends AIrcChannel<IrcChannel> { public Map<Character, String> C_channelModes = new HashMap<>(); @NonNull public Set<Character> D_channelModes = new HashSet<>(); + private String topic; + private String password; + private boolean encrypted; + private QNetwork network; + private String codecForEncoding; + private String codecForDecoding; // Because we don’t have networks at the beginning yet @Nullable private Map<String, String> cachedUserModes; @@ -522,6 +521,7 @@ public class IrcChannel extends AIrcChannel<IrcChannel> { modes.addAll(D_channelModes); modes.addAll(C_channelModes.keySet()); modes.addAll(B_channelModes.keySet()); + modes.addAll(A_channelModes.keySet()); return modes; } } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChannelDetailActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChannelDetailActivity.java index 83101e46a..d2913478a 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChannelDetailActivity.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChannelDetailActivity.java @@ -38,6 +38,7 @@ import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.events.GeneralErrorEvent; import de.kuschku.libquassel.localtypes.buffers.ChannelBuffer; import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel; +import de.kuschku.libquassel.syncables.types.interfaces.QNetwork; import de.kuschku.quasseldroid_ng.R; import de.kuschku.quasseldroid_ng.service.ClientBackgroundThread; import de.kuschku.util.irc.chanmodes.ChanMode; @@ -110,28 +111,36 @@ public class ChannelDetailActivity extends BoundActivity { boolean topicEditable = true; for (char c : channel.modeList()) { ChanMode mode = provider.modeFromChar(c); + QNetwork.ChannelModeType type = channel.network().channelModeType(c); if (mode != null) { - View v = getLayoutInflater().inflate(R.layout.widget_channel_mode, modes, false); - TextView name = (TextView) v.findViewById(R.id.name); - TextView description = (TextView) v.findViewById(R.id.description); - TextView value = (TextView) v.findViewById(R.id.value); + if (type == QNetwork.ChannelModeType.A_CHANMODE) { + // TODO: Implement a proper display for these + // Log.e("DEBUG", String.valueOf(c) + ": " + String.valueOf(channel.modeValueList(c))); + } else if (type == QNetwork.ChannelModeType.B_CHANMODE || type == QNetwork.ChannelModeType.C_CHANMODE || type == QNetwork.ChannelModeType.D_CHANMODE) { + View v = getLayoutInflater().inflate(R.layout.widget_channel_mode, modes, false); + TextView name = (TextView) v.findViewById(R.id.name); + TextView description = (TextView) v.findViewById(R.id.description); + TextView value = (TextView) v.findViewById(R.id.value); - String modeName = context.themeUtil().chanModes.chanModeToName(mode); - name.setText(String.format("%s (+%s)", modeName, c)); + String modeName = context.themeUtil().chanModes.chanModeToName(mode); + name.setText(String.format("%s (+%s)", modeName, c)); - String modeDescription = context.themeUtil().chanModes.chanModeToDescription(mode); - description.setText(modeDescription); + String modeDescription = context.themeUtil().chanModes.chanModeToDescription(mode); + description.setText(modeDescription); - String modeValue = channel.modeValue(c); + String modeValue = channel.modeValue(c); - if (modeValue != null && !modeValue.isEmpty()) { - value.setText(modeValue); - value.setVisibility(View.VISIBLE); - } + if (modeValue != null && !modeValue.isEmpty()) { + value.setText(modeValue); + value.setVisibility(View.VISIBLE); + } - modes.addView(v); + modes.addView(v); - if (mode == ChanMode.RESTRICT_TOPIC) topicEditable = isOp; + if (mode == ChanMode.RESTRICT_TOPIC) topicEditable = isOp; + } + } else { + Log.d("libquassel", "Couldn’t find mode " + c + " for IRCd" + provider.getClass().getSimpleName()); } } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/ChanMode.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/ChanMode.java index 46d60c2ab..da14888e4 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/ChanMode.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/ChanMode.java @@ -60,5 +60,9 @@ public enum ChanMode { RESTRICT_TOPIC, STRIP_COLOR, UNLISTED, - FORWARD + FORWARD, + BAN, + BAN_EXCEPTION, + INVITE_EXCEPTION, + MUTE } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProviderFactory.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProviderFactory.java index a7b65c9c9..836dd0513 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProviderFactory.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProviderFactory.java @@ -21,13 +21,23 @@ package de.kuschku.util.irc.chanmodes; -import de.kuschku.util.irc.chanmodes.impl.*; - import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; +import de.kuschku.util.irc.chanmodes.impl.CharybdisIrcModeProvider; +import de.kuschku.util.irc.chanmodes.impl.DalIrcModeProvider; +import de.kuschku.util.irc.chanmodes.impl.DancerIrcModeProvider; +import de.kuschku.util.irc.chanmodes.impl.FqIrcModeProvider; +import de.kuschku.util.irc.chanmodes.impl.HybridIrcModeProvider; +import de.kuschku.util.irc.chanmodes.impl.HyperionIrcModeProvider; +import de.kuschku.util.irc.chanmodes.impl.InspireIrcModeProvider; +import de.kuschku.util.irc.chanmodes.impl.NeoIrcModeProvider; +import de.kuschku.util.irc.chanmodes.impl.ShadowIrcModeProvider; +import de.kuschku.util.irc.chanmodes.impl.SolidIrcModeProvider; +import de.kuschku.util.irc.chanmodes.impl.UnrealIrcModeProvider; + public class IrcModeProviderFactory { private static List<IrcModeProvider> servers = Arrays.asList( new CharybdisIrcModeProvider(), @@ -44,6 +54,7 @@ public class IrcModeProviderFactory { ); private static Set<Character> toModeSet(String chanModes) { + if (chanModes == null) chanModes = ""; String replaced = chanModes.replaceAll(",",""); Set<Character> modeSet = new HashSet<>(); for (char c : replaced.toCharArray()) { diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/BewareIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/BewareIrcModeProvider.java index 08f297d2b..c38a11405 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/BewareIrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/BewareIrcModeProvider.java @@ -21,15 +21,27 @@ package de.kuschku.util.irc.chanmodes.impl; -import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; -import de.kuschku.util.irc.chanmodes.ChanMode; - import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import static de.kuschku.util.irc.chanmodes.ChanMode.*; +import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; +import de.kuschku.util.irc.chanmodes.ChanMode; + +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CTCP; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL; +import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT; +import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID; +import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD; +import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC; +import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED; public class BewareIrcModeProvider extends AbstractIrcModeProvider { @@ -55,6 +67,13 @@ public class BewareIrcModeProvider extends AbstractIrcModeProvider { case 'p': return PARANOID; case 's': return UNLISTED; case 't': return RESTRICT_TOPIC; + + case 'b': + return BAN; + case 'e': + return BAN_EXCEPTION; + case 'I': + return INVITE_EXCEPTION; } return null; } @@ -72,6 +91,13 @@ public class BewareIrcModeProvider extends AbstractIrcModeProvider { case PARANOID: return 'p'; case UNLISTED: return 's'; case RESTRICT_TOPIC: return 't'; + + case BAN: + return 'b'; + case BAN_EXCEPTION: + return 'e'; + case INVITE_EXCEPTION: + return 'I'; } return ' '; } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/CharybdisIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/CharybdisIrcModeProvider.java index c0e23656c..788f00244 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/CharybdisIrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/CharybdisIrcModeProvider.java @@ -21,15 +21,40 @@ package de.kuschku.util.irc.chanmodes.impl; -import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; -import de.kuschku.util.irc.chanmodes.ChanMode; - import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import static de.kuschku.util.irc.chanmodes.ChanMode.*; +import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; +import de.kuschku.util.irc.chanmodes.ChanMode; + +import static de.kuschku.util.irc.chanmodes.ChanMode.ALLOW_FORWARD; +import static de.kuschku.util.irc.chanmodes.ChanMode.ALLOW_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CTCP; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_FORWARDING; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NOTICE; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.FORWARD; +import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.JOIN_THROTTLE; +import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT; +import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED; +import static de.kuschku.util.irc.chanmodes.ChanMode.MUTE; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_ADMIN; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL; +import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID; +import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD; +import static de.kuschku.util.irc.chanmodes.ChanMode.PERMANENT; +import static de.kuschku.util.irc.chanmodes.ChanMode.REDUCED_MODERATION; +import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC; +import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED; public class CharybdisIrcModeProvider extends AbstractIrcModeProvider { @@ -63,6 +88,14 @@ public class CharybdisIrcModeProvider extends AbstractIrcModeProvider { case 't': return RESTRICT_TOPIC; case 'z': return REDUCED_MODERATION; + case 'b': + return BAN; + case 'e': + return BAN_EXCEPTION; + case 'I': + return INVITE_EXCEPTION; + case 'q': + return MUTE; } return null; } @@ -92,6 +125,15 @@ public class CharybdisIrcModeProvider extends AbstractIrcModeProvider { case UNLISTED: return 's'; case RESTRICT_TOPIC: return 't'; case REDUCED_MODERATION: return 'z'; + + case BAN: + return 'b'; + case BAN_EXCEPTION: + return 'e'; + case INVITE_EXCEPTION: + return 'I'; + case MUTE: + return 'q'; } return ' '; } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DalIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DalIrcModeProvider.java index 2a912eb69..fa4b49dbd 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DalIrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DalIrcModeProvider.java @@ -21,15 +21,33 @@ package de.kuschku.util.irc.chanmodes.impl; -import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; -import de.kuschku.util.irc.chanmodes.ChanMode; - import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import static de.kuschku.util.irc.chanmodes.ChanMode.*; +import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; +import de.kuschku.util.irc.chanmodes.ChanMode; + +import static de.kuschku.util.irc.chanmodes.ChanMode.AUDITORIUM; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.JOIN_THROTTLE; +import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT; +import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL; +import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID; +import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD; +import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.REGISTERED; +import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC; +import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED; public class DalIrcModeProvider extends AbstractIrcModeProvider { @@ -56,6 +74,13 @@ public class DalIrcModeProvider extends AbstractIrcModeProvider { case 'r': return REGISTERED; case 's': return UNLISTED; case 't': return RESTRICT_TOPIC; + + case 'b': + return BAN; + case 'e': + return BAN_EXCEPTION; + case 'I': + return INVITE_EXCEPTION; } return null; } @@ -79,6 +104,13 @@ public class DalIrcModeProvider extends AbstractIrcModeProvider { case REGISTERED: return 'r'; case UNLISTED: return 's'; case RESTRICT_TOPIC: return 't'; + + case BAN: + return 'b'; + case BAN_EXCEPTION: + return 'e'; + case INVITE_EXCEPTION: + return 'I'; } return ' '; } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DancerIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DancerIrcModeProvider.java index 42cb3667b..5b6e898a9 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DancerIrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DancerIrcModeProvider.java @@ -21,15 +21,31 @@ package de.kuschku.util.irc.chanmodes.impl; -import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; -import de.kuschku.util.irc.chanmodes.ChanMode; - import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import static de.kuschku.util.irc.chanmodes.ChanMode.*; +import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; +import de.kuschku.util.irc.chanmodes.ChanMode; + +import static de.kuschku.util.irc.chanmodes.ChanMode.ALLOW_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_FORWARDING; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.JOIN_THROTTLE; +import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT; +import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD; +import static de.kuschku.util.irc.chanmodes.ChanMode.PERMANENT; +import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.REDUCED_MODERATION; +import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED; public class DancerIrcModeProvider extends AbstractIrcModeProvider { @@ -54,6 +70,13 @@ public class DancerIrcModeProvider extends AbstractIrcModeProvider { case 'r': return BLOCK_UNIDENTIFIED; case 's': return UNLISTED; case 'z': return REDUCED_MODERATION; + + case 'b': + return BAN; + case 'e': + return BAN_EXCEPTION; + case 'I': + return INVITE_EXCEPTION; } return null; } @@ -75,6 +98,13 @@ public class DancerIrcModeProvider extends AbstractIrcModeProvider { case BLOCK_UNIDENTIFIED: return 'r'; case UNLISTED: return 's'; case REDUCED_MODERATION: return 'z'; + + case BAN: + return 'b'; + case BAN_EXCEPTION: + return 'e'; + case INVITE_EXCEPTION: + return 'I'; } return ' '; } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/FqIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/FqIrcModeProvider.java index 3dcf74165..0a2edf5aa 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/FqIrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/FqIrcModeProvider.java @@ -21,15 +21,32 @@ package de.kuschku.util.irc.chanmodes.impl; -import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; -import de.kuschku.util.irc.chanmodes.ChanMode; - import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import static de.kuschku.util.irc.chanmodes.ChanMode.*; +import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; +import de.kuschku.util.irc.chanmodes.ChanMode; + +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.JOIN_THROTTLE; +import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT; +import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL; +import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID; +import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD; +import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.REGISTERED; +import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC; +import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED; public class FqIrcModeProvider extends AbstractIrcModeProvider { @@ -56,6 +73,13 @@ public class FqIrcModeProvider extends AbstractIrcModeProvider { case 'r': return REGISTERED; case 's': return UNLISTED; case 't': return RESTRICT_TOPIC; + + case 'b': + return BAN; + case 'e': + return BAN_EXCEPTION; + case 'I': + return INVITE_EXCEPTION; } return null; } @@ -78,6 +102,13 @@ public class FqIrcModeProvider extends AbstractIrcModeProvider { case REGISTERED: return 'r'; case UNLISTED: return 's'; case RESTRICT_TOPIC: return 't'; + + case BAN: + return 'b'; + case BAN_EXCEPTION: + return 'e'; + case INVITE_EXCEPTION: + return 'I'; } return ' '; } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HybridIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HybridIrcModeProvider.java index bcb461f6d..f25971420 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HybridIrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HybridIrcModeProvider.java @@ -21,15 +21,31 @@ package de.kuschku.util.irc.chanmodes.impl; -import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; -import de.kuschku.util.irc.chanmodes.ChanMode; - import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import static de.kuschku.util.irc.chanmodes.ChanMode.*; +import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; +import de.kuschku.util.irc.chanmodes.ChanMode; + +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT; +import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL; +import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID; +import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD; +import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.REGISTERED; +import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC; +import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED; public class HybridIrcModeProvider extends AbstractIrcModeProvider { @@ -54,6 +70,13 @@ public class HybridIrcModeProvider extends AbstractIrcModeProvider { case 'r': return REGISTERED; case 's': return UNLISTED; case 't': return RESTRICT_TOPIC; + + case 'b': + return BAN; + case 'e': + return BAN_EXCEPTION; + case 'I': + return INVITE_EXCEPTION; } return null; } @@ -75,6 +98,13 @@ public class HybridIrcModeProvider extends AbstractIrcModeProvider { case REGISTERED: return 'r'; case UNLISTED: return 's'; case RESTRICT_TOPIC: return 't'; + + case BAN: + return 'b'; + case BAN_EXCEPTION: + return 'e'; + case INVITE_EXCEPTION: + return 'I'; } return ' '; } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HyperionIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HyperionIrcModeProvider.java index 56e5150bb..28c2c12d4 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HyperionIrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HyperionIrcModeProvider.java @@ -21,15 +21,29 @@ package de.kuschku.util.irc.chanmodes.impl; -import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; -import de.kuschku.util.irc.chanmodes.ChanMode; - import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import static de.kuschku.util.irc.chanmodes.ChanMode.*; +import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; +import de.kuschku.util.irc.chanmodes.ChanMode; + +import static de.kuschku.util.irc.chanmodes.ChanMode.ALLOW_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_FORWARDING; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT; +import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD; +import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.REDUCED_MODERATION; +import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED; public class HyperionIrcModeProvider extends AbstractIrcModeProvider { @@ -52,6 +66,13 @@ public class HyperionIrcModeProvider extends AbstractIrcModeProvider { case 'r': return BLOCK_UNIDENTIFIED; case 's': return UNLISTED; case 'z': return REDUCED_MODERATION; + + case 'b': + return BAN; + case 'e': + return BAN_EXCEPTION; + case 'I': + return INVITE_EXCEPTION; } return null; } @@ -71,6 +92,13 @@ public class HyperionIrcModeProvider extends AbstractIrcModeProvider { case BLOCK_UNIDENTIFIED: return 'r'; case UNLISTED: return 's'; case REDUCED_MODERATION: return 'z'; + + case BAN: + return 'b'; + case BAN_EXCEPTION: + return 'e'; + case INVITE_EXCEPTION: + return 'I'; } return ' '; } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/InspireIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/InspireIrcModeProvider.java index 928074ac8..98a7d6f03 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/InspireIrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/InspireIrcModeProvider.java @@ -21,15 +21,46 @@ package de.kuschku.util.irc.chanmodes.impl; -import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; -import de.kuschku.util.irc.chanmodes.ChanMode; - import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import static de.kuschku.util.irc.chanmodes.ChanMode.*; +import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; +import de.kuschku.util.irc.chanmodes.ChanMode; + +import static de.kuschku.util.irc.chanmodes.ChanMode.ALLOW_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.ANTIFLOOD; +import static de.kuschku.util.irc.chanmodes.ChanMode.AUDITORIUM; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CAPS; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CTCP; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KICK; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KNOCK; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NICKCHANGE; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NOTICE; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.CENSOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.FORWARD; +import static de.kuschku.util.irc.chanmodes.ChanMode.HIDE_JOINS; +import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.JOIN_THROTTLE; +import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT; +import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL; +import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID; +import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD; +import static de.kuschku.util.irc.chanmodes.ChanMode.PERMANENT; +import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.REGISTERED; +import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC; +import static de.kuschku.util.irc.chanmodes.ChanMode.STRIP_COLOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED; public class InspireIrcModeProvider extends AbstractIrcModeProvider { @@ -69,6 +100,13 @@ public class InspireIrcModeProvider extends AbstractIrcModeProvider { case 't': return RESTRICT_TOPIC; case 'u': return AUDITORIUM; case 'z': return ONLY_SSL; + + case 'b': + return BAN; + case 'e': + return BAN_EXCEPTION; + case 'I': + return INVITE_EXCEPTION; } return null; } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NeoIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NeoIrcModeProvider.java index c4d28f615..7e4a27f82 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NeoIrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NeoIrcModeProvider.java @@ -21,15 +21,33 @@ package de.kuschku.util.irc.chanmodes.impl; -import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; -import de.kuschku.util.irc.chanmodes.ChanMode; - import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import static de.kuschku.util.irc.chanmodes.ChanMode.*; +import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; +import de.kuschku.util.irc.chanmodes.ChanMode; + +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KICK; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NICKCHANGE; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.DISABLE_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT; +import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL; +import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD; +import static de.kuschku.util.irc.chanmodes.ChanMode.PERMANENT; +import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.REGISTERED; +import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC; +import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED; public class NeoIrcModeProvider extends AbstractIrcModeProvider { @@ -56,6 +74,13 @@ public class NeoIrcModeProvider extends AbstractIrcModeProvider { case 's': return UNLISTED; case 't': return RESTRICT_TOPIC; case 'z': return ONLY_SSL; + + case 'b': + return BAN; + case 'e': + return BAN_EXCEPTION; + case 'I': + return INVITE_EXCEPTION; } return null; } @@ -79,6 +104,13 @@ public class NeoIrcModeProvider extends AbstractIrcModeProvider { case UNLISTED: return 's'; case RESTRICT_TOPIC: return 't'; case ONLY_SSL: return 'z'; + + case BAN: + return 'b'; + case BAN_EXCEPTION: + return 'e'; + case INVITE_EXCEPTION: + return 'I'; } return ' '; } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NightstarIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NightstarIrcModeProvider.java index b2bae9198..2d7ce7777 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NightstarIrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NightstarIrcModeProvider.java @@ -21,15 +21,27 @@ package de.kuschku.util.irc.chanmodes.impl; -import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; -import de.kuschku.util.irc.chanmodes.ChanMode; - import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import static de.kuschku.util.irc.chanmodes.ChanMode.*; +import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; +import de.kuschku.util.irc.chanmodes.ChanMode; + +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL; +import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT; +import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID; +import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD; +import static de.kuschku.util.irc.chanmodes.ChanMode.REGISTERED; +import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC; +import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED; public class NightstarIrcModeProvider extends AbstractIrcModeProvider { @@ -55,6 +67,13 @@ public class NightstarIrcModeProvider extends AbstractIrcModeProvider { case 'r': return REGISTERED; case 's': return UNLISTED; case 't': return RESTRICT_TOPIC; + + case 'b': + return BAN; + case 'e': + return BAN_EXCEPTION; + case 'I': + return INVITE_EXCEPTION; } return null; } @@ -72,6 +91,13 @@ public class NightstarIrcModeProvider extends AbstractIrcModeProvider { case REGISTERED: return 'r'; case UNLISTED: return 's'; case RESTRICT_TOPIC: return 't'; + + case BAN: + return 'b'; + case BAN_EXCEPTION: + return 'e'; + case INVITE_EXCEPTION: + return 'I'; } return ' '; } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/RfcIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/RfcIrcModeProvider.java index 76cd66513..67e8062b5 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/RfcIrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/RfcIrcModeProvider.java @@ -21,15 +21,25 @@ package de.kuschku.util.irc.chanmodes.impl; -import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; -import de.kuschku.util.irc.chanmodes.ChanMode; - import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import static de.kuschku.util.irc.chanmodes.ChanMode.*; +import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; +import de.kuschku.util.irc.chanmodes.ChanMode; + +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL; +import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT; +import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID; +import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD; +import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC; +import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED; public class RfcIrcModeProvider extends AbstractIrcModeProvider { @@ -48,6 +58,13 @@ public class RfcIrcModeProvider extends AbstractIrcModeProvider { case 'm': return MODERATED; case 'l': return LIMIT; case 'k': return PASSWORD; + + case 'b': + return BAN; + case 'e': + return BAN_EXCEPTION; + case 'I': + return INVITE_EXCEPTION; } return null; } @@ -63,6 +80,13 @@ public class RfcIrcModeProvider extends AbstractIrcModeProvider { case MODERATED: return 'm'; case LIMIT: return 'l'; case PASSWORD: return 'k'; + + case BAN: + return 'b'; + case BAN_EXCEPTION: + return 'e'; + case INVITE_EXCEPTION: + return 'I'; } return ' '; } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/ShadowIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/ShadowIrcModeProvider.java index b78647b78..54af40869 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/ShadowIrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/ShadowIrcModeProvider.java @@ -21,15 +21,44 @@ package de.kuschku.util.irc.chanmodes.impl; -import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; -import de.kuschku.util.irc.chanmodes.ChanMode; - import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import static de.kuschku.util.irc.chanmodes.ChanMode.*; +import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; +import de.kuschku.util.irc.chanmodes.ChanMode; + +import static de.kuschku.util.irc.chanmodes.ChanMode.ALLOW_FORWARD; +import static de.kuschku.util.irc.chanmodes.ChanMode.ALLOW_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_ACTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_AUTOREJOIN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CAPS; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CTCP; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_FORWARDING; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KICK; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NICKCHANGE; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NOTICE; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_REPEAT; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.JOIN_THROTTLE; +import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT; +import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_ADMIN; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL; +import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID; +import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD; +import static de.kuschku.util.irc.chanmodes.ChanMode.PERMANENT; +import static de.kuschku.util.irc.chanmodes.ChanMode.REDUCED_MODERATION; +import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC; +import static de.kuschku.util.irc.chanmodes.ChanMode.STRIP_COLOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED; public class ShadowIrcModeProvider extends AbstractIrcModeProvider { @@ -67,6 +96,13 @@ public class ShadowIrcModeProvider extends AbstractIrcModeProvider { case 's': return UNLISTED; case 't': return RESTRICT_TOPIC; case 'z': return REDUCED_MODERATION; + + case 'b': + return BAN; + case 'e': + return BAN_EXCEPTION; + case 'I': + return INVITE_EXCEPTION; } return null; } @@ -101,6 +137,13 @@ public class ShadowIrcModeProvider extends AbstractIrcModeProvider { case UNLISTED: return 's'; case RESTRICT_TOPIC: return 't'; case REDUCED_MODERATION: return 'z'; + + case BAN: + return 'b'; + case BAN_EXCEPTION: + return 'e'; + case INVITE_EXCEPTION: + return 'I'; } return ' '; } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/SolidIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/SolidIrcModeProvider.java index 97acd327b..e33255f68 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/SolidIrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/SolidIrcModeProvider.java @@ -21,15 +21,41 @@ package de.kuschku.util.irc.chanmodes.impl; -import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; -import de.kuschku.util.irc.chanmodes.ChanMode; - import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import static de.kuschku.util.irc.chanmodes.ChanMode.*; +import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; +import de.kuschku.util.irc.chanmodes.ChanMode; + +import static de.kuschku.util.irc.chanmodes.ChanMode.ANTIFLOOD; +import static de.kuschku.util.irc.chanmodes.ChanMode.AUDITORIUM; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CAPS; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CTCP; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KICK; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KNOCK; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NICKCHANGE; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NOTICE; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.CENSOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.DISABLE_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT; +import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL; +import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID; +import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD; +import static de.kuschku.util.irc.chanmodes.ChanMode.PERMANENT; +import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC; +import static de.kuschku.util.irc.chanmodes.ChanMode.STRIP_COLOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED; public class SolidIrcModeProvider extends AbstractIrcModeProvider { @@ -64,6 +90,13 @@ public class SolidIrcModeProvider extends AbstractIrcModeProvider { case 't': return RESTRICT_TOPIC; case 'u': return AUDITORIUM; case 'z': return ONLY_SSL; + + case 'b': + return BAN; + case 'e': + return BAN_EXCEPTION; + case 'I': + return INVITE_EXCEPTION; } return null; } @@ -95,6 +128,13 @@ public class SolidIrcModeProvider extends AbstractIrcModeProvider { case RESTRICT_TOPIC: return 't'; case AUDITORIUM: return 'u'; case ONLY_SSL: return 'z'; + + case BAN: + return 'b'; + case BAN_EXCEPTION: + return 'e'; + case INVITE_EXCEPTION: + return 'I'; } return ' '; } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UndernetIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UndernetIrcModeProvider.java index d7efd24f6..0dca5c0a6 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UndernetIrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UndernetIrcModeProvider.java @@ -21,15 +21,25 @@ package de.kuschku.util.irc.chanmodes.impl; -import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; -import de.kuschku.util.irc.chanmodes.ChanMode; - import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import static de.kuschku.util.irc.chanmodes.ChanMode.*; +import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; +import de.kuschku.util.irc.chanmodes.ChanMode; + +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL; +import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT; +import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID; +import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD; +import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC; +import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED; public class UndernetIrcModeProvider extends AbstractIrcModeProvider { @@ -53,6 +63,13 @@ public class UndernetIrcModeProvider extends AbstractIrcModeProvider { case 'p': return PARANOID; case 's': return UNLISTED; case 't': return RESTRICT_TOPIC; + + case 'b': + return BAN; + case 'e': + return BAN_EXCEPTION; + case 'I': + return INVITE_EXCEPTION; } return null; } @@ -68,6 +85,13 @@ public class UndernetIrcModeProvider extends AbstractIrcModeProvider { case PARANOID: return 'p'; case UNLISTED: return 's'; case RESTRICT_TOPIC: return 't'; + + case BAN: + return 'b'; + case BAN_EXCEPTION: + return 'e'; + case INVITE_EXCEPTION: + return 'I'; } return ' '; } diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UnrealIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UnrealIrcModeProvider.java index 04db02db6..deffc9a8e 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UnrealIrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UnrealIrcModeProvider.java @@ -21,15 +21,43 @@ package de.kuschku.util.irc.chanmodes.impl; -import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; -import de.kuschku.util.irc.chanmodes.ChanMode; - import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import static de.kuschku.util.irc.chanmodes.ChanMode.*; +import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider; +import de.kuschku.util.irc.chanmodes.ChanMode; + +import static de.kuschku.util.irc.chanmodes.ChanMode.ANTIFLOOD; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN; +import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CTCP; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KICK; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KNOCK; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NICKCHANGE; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NOTICE; +import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.CENSOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.DISABLE_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.FORWARD; +import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION; +import static de.kuschku.util.irc.chanmodes.ChanMode.IS_SECURE; +import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT; +import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER; +import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL; +import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID; +import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD; +import static de.kuschku.util.irc.chanmodes.ChanMode.PERMANENT; +import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED; +import static de.kuschku.util.irc.chanmodes.ChanMode.REGISTERED; +import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC; +import static de.kuschku.util.irc.chanmodes.ChanMode.STRIP_COLOR; +import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED; public class UnrealIrcModeProvider extends AbstractIrcModeProvider { @@ -66,6 +94,13 @@ public class UnrealIrcModeProvider extends AbstractIrcModeProvider { case 's': return UNLISTED; case 't': return RESTRICT_TOPIC; case 'z': return ONLY_SSL; + + case 'b': + return BAN; + case 'e': + return BAN_EXCEPTION; + case 'I': + return INVITE_EXCEPTION; } return null; } @@ -99,6 +134,13 @@ public class UnrealIrcModeProvider extends AbstractIrcModeProvider { case UNLISTED: return 's'; case RESTRICT_TOPIC: return 't'; case ONLY_SSL: return 'z'; + + case BAN: + return 'b'; + case BAN_EXCEPTION: + return 'e'; + case INVITE_EXCEPTION: + return 'I'; } return ' '; } diff --git a/app/src/main/res/layout/activity_channel_detail.xml b/app/src/main/res/layout/activity_channel_detail.xml index 90a6edf60..19eabf0f7 100644 --- a/app/src/main/res/layout/activity_channel_detail.xml +++ b/app/src/main/res/layout/activity_channel_detail.xml @@ -46,7 +46,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> - <TextView style="@style/TextAppearance.AppCompat.Button" android:layout_width="match_parent" @@ -71,7 +70,7 @@ style="@style/Widget.AppCompat.Button.Colored" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="right" + android:layout_gravity="end" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" android:text="Edit Topic" /> @@ -80,7 +79,7 @@ android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginTop="16dp" - android:background="?attr/material_drawer_divider" /> + android:background="?attr/colorDivider" /> <TextView style="@style/TextAppearance.AppCompat.Button" diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index f1689d169..b006f4508 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -21,9 +21,6 @@ --> <resources> - <attr name="colorAccentFocus" format="color" /> - <attr name="formatBarTheme" format="reference" /> - <!-- sender colors --> <attr name="senderColor0" format="color" /> @@ -69,6 +66,9 @@ <attr name="colorForegroundSecondary" format="color" /> <attr name="colorForegroundAction" /> + <attr name="colorAccentFocus" format="color" /> + <attr name="colorDivider" format="color" /> + <attr name="colorBackground" format="color" /> <attr name="colorBackgroundHighlight" format="color" /> <attr name="colorBackgroundSecondary" format="color" /> @@ -93,6 +93,6 @@ <attr name="iconDelete" format="reference" /> <attr name="iconModify" format="reference" /> <attr name="iconAdd" format="reference" /> - + <attr name="formatBarTheme" format="reference" /> <attr name="cardStyle" format="reference" /> </resources> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 09c7e6f85..3b826b53e 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -33,6 +33,8 @@ <item name="windowActionModeOverlay">true</item> <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item> + <item name="colorDivider">#1FFFFFFF</item> + <!-- <item name="material_drawer_background">?attr/colorBackground</item> <item name="material_drawer_primary_text">?attr/colorForeground</item> @@ -63,6 +65,8 @@ <item name="windowActionModeOverlay">true</item> <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item> + <item name="colorDivider">#1F000000</item> + <!-- <item name="material_drawer_background">?attr/colorBackground</item> <item name="material_drawer_primary_text">?attr/colorForeground</item> -- GitLab