From 07505def58ed4f3142653dc391fd7f809e7da750 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Sun, 28 Aug 2016 00:17:41 +0200 Subject: [PATCH] Updated code style, prepared adding contextual actions --- app/build.gradle | 1 + .../libquassel/client/BufferManager.java | 2 - .../de/kuschku/libquassel/client/Client.java | 4 +- .../libquassel/localtypes/BacklogFilter.java | 4 +- .../localtypes/orm/ConnectedDatabase.java | 21 +++ .../orm/converters/BufferTypeConverter.java | 21 +++ .../orm/converters/DateTimeConverter.java | 21 +++ .../orm/converters/MessageFlagsConverter.java | 21 +++ .../orm/converters/MessageTypeConverter.java | 21 +++ .../kuschku/libquassel/message/Message.java | 26 +-- .../primitives/types/BufferInfo.java | 22 +-- .../serializers/IrcUserSerializer.java | 2 +- .../serializers/NetworkSerializer.java | 2 +- .../syncables/types/impl/BacklogManager.java | 1 - .../types/impl/BufferViewConfig.java | 1 - .../types/impl/IgnoreListManager.java | 11 +- .../syncables/types/impl/IrcChannel.java | 1 - .../syncables/types/impl/IrcUser.java | 1 - .../syncables/types/impl/Network.java | 3 - .../types/interfaces/QBacklogManager.java | 2 + .../types/interfaces/QIrcChannel.java | 1 - .../service/QuasselService.java | 2 + .../quasseldroid_ng/ui/LoginActivity.java | 2 - .../quasseldroid_ng/ui/chat/MainActivity.java | 29 ++- .../ui/chat/drawer/ActionModeHandler.java | 116 ++++++++++++ .../chat/drawer/BufferViewConfigAdapter.java | 58 ++++-- .../ui/chat/drawer/BufferViewHolder.java | 37 ++-- .../ui/chat/drawer/NetworkItem.java | 1 - .../drawer/OnBufferLongClickListener.java | 28 +++ .../ui/chat/fragment/ChatFragment.java | 3 +- .../ui/chat/util/ServiceHelper.java | 7 +- .../ui/setup/AccountSelectActivity.java | 40 ++-- .../ui/setup/slides/AccountSelectSlide.java | 2 +- .../setup/slides/AccountSetupCoreSlide.java | 40 ++-- .../setup/slides/AccountSetupNameSlide.java | 35 ++-- .../setup/slides/AccountSetupUserSlide.java | 40 ++-- .../ui/setup/slides/SlideFragment.java | 5 + .../quasseldroid_ng/ui/theme/ThemeUtil.java | 8 +- .../java/de/kuschku/util/ReflectionUtils.java | 1 - .../util/irc/chanmodes/IrcModeProvider.java | 3 + .../irc/chanmodes/IrcModeProviderFactory.java | 2 +- .../chanmodes/impl/BewareIrcModeProvider.java | 60 ++++-- .../impl/CharybdisIrcModeProvider.java | 132 ++++++++----- .../chanmodes/impl/DalIrcModeProvider.java | 96 ++++++---- .../chanmodes/impl/DancerIrcModeProvider.java | 84 ++++++--- .../irc/chanmodes/impl/FqIrcModeProvider.java | 93 ++++++---- .../chanmodes/impl/HybridIrcModeProvider.java | 84 ++++++--- .../impl/HyperionIrcModeProvider.java | 72 +++++--- .../impl/InspireIrcModeProvider.java | 174 ++++++++++++------ .../chanmodes/impl/NeoIrcModeProvider.java | 96 ++++++---- .../impl/NightstarIrcModeProvider.java | 60 ++++-- .../chanmodes/impl/RfcIrcModeProvider.java | 48 +++-- .../chanmodes/impl/ShadowIrcModeProvider.java | 162 ++++++++++------ .../chanmodes/impl/SolidIrcModeProvider.java | 144 ++++++++++----- .../impl/UndernetIrcModeProvider.java | 48 +++-- .../chanmodes/impl/UnrealIrcModeProvider.java | 156 ++++++++++------ .../util/irc/format/IrcFormatHelper.java | 2 +- .../de/kuschku/util/regex/SmartRegEx.java | 10 +- .../util/servicebound/BoundActivity.java | 2 +- .../main/res/layout-w720dp/activity_main.xml | 50 +++-- app/src/main/res/layout/activity_main.xml | 68 ++++--- .../main/res/menu/context_buffer_network.xml | 54 ++++++ app/src/main/res/values/strings.xml | 14 ++ 63 files changed, 1620 insertions(+), 737 deletions(-) create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/ActionModeHandler.java create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/OnBufferLongClickListener.java create mode 100644 app/src/main/res/menu/context_buffer_network.xml diff --git a/app/build.gradle b/app/build.gradle index 18449596d..4fc5bbab8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -156,6 +156,7 @@ dependencies { compile('com.mikepenz:materialdrawer:5.0.3@aar') { transitive = true } compile('com.github.afollestad.material-dialogs:core:0.8.5.3@aar') { transitive = true } compile('com.github.afollestad.material-dialogs:commons:0.8.5.3@aar') { transitive = true } + compile 'com.afollestad:material-cab:0.1.12' // ORM apt "com.github.Raizlabs.DBFlow:dbflow-processor:3.1.1" diff --git a/app/src/main/java/de/kuschku/libquassel/client/BufferManager.java b/app/src/main/java/de/kuschku/libquassel/client/BufferManager.java index 749bc98ef..3befa33e0 100644 --- a/app/src/main/java/de/kuschku/libquassel/client/BufferManager.java +++ b/app/src/main/java/de/kuschku/libquassel/client/BufferManager.java @@ -24,7 +24,6 @@ package de.kuschku.libquassel.client; import android.support.annotation.IntRange; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.util.Log; import java.util.HashMap; import java.util.HashSet; @@ -41,7 +40,6 @@ import de.kuschku.libquassel.localtypes.buffers.ChannelBuffer; import de.kuschku.libquassel.localtypes.buffers.QueryBuffer; import de.kuschku.libquassel.localtypes.buffers.StatusBuffer; import de.kuschku.libquassel.primitives.types.BufferInfo; -import de.kuschku.libquassel.syncables.types.impl.Network; import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig; import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel; import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser; diff --git a/app/src/main/java/de/kuschku/libquassel/client/Client.java b/app/src/main/java/de/kuschku/libquassel/client/Client.java index e11005cd4..0e236662a 100644 --- a/app/src/main/java/de/kuschku/libquassel/client/Client.java +++ b/app/src/main/java/de/kuschku/libquassel/client/Client.java @@ -100,6 +100,7 @@ public class Client extends AClient { private ConnectionChangeEvent.Status connectionStatus; private BufferMetaDataManager metaDataManager; private String coreId; + private int r = 1; public Client(@NonNull BusProvider provider, @NonNull BacklogStorage backlogStorage, @NonNull BufferMetaDataManager metaDataManager, String coreId) { this.coreId = coreId; @@ -439,7 +440,6 @@ public class Client extends AClient { this.globalNetworkConfig = globalNetworkConfig; } - @NonNull public BacklogStorage backlogStorage() { return backlogStorage; @@ -492,6 +492,4 @@ public class Client extends AClient { public String coreId() { return coreId; } - - private int r = 1; } 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 b12ba76f2..681f413f1 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/BacklogFilter.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/BacklogFilter.java @@ -23,7 +23,6 @@ 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; @@ -36,7 +35,6 @@ import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.message.Message; import de.kuschku.libquassel.primitives.types.BufferInfo; import de.kuschku.libquassel.syncables.types.interfaces.QNetwork; -import de.kuschku.util.irc.IrcUserUtils; import de.kuschku.util.observables.callbacks.UICallback; import de.kuschku.util.observables.lists.ObservableComparableSortedList; @@ -53,9 +51,9 @@ public class BacklogFilter implements UICallback { @NonNull private final Set<Message.Type> filteredTypes = new HashSet<>(); + private final EventBus bus = new EventBus(); @Nullable private CharSequence searchQuery; - private final EventBus bus = new EventBus(); @Nullable private DateTime earliestMessage; diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/ConnectedDatabase.java b/app/src/main/java/de/kuschku/libquassel/localtypes/orm/ConnectedDatabase.java index b2205a929..eec59165d 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/ConnectedDatabase.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/orm/ConnectedDatabase.java @@ -1,3 +1,24 @@ +/* + * QuasselDroid - Quassel client for Android + * Copyright (C) 2016 Janne Koschinski + * Copyright (C) 2016 Ken Børge Viktil + * Copyright (C) 2016 Magnus Fjell + * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org> + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + package de.kuschku.libquassel.localtypes.orm; import com.raizlabs.android.dbflow.annotation.Database; diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/BufferTypeConverter.java b/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/BufferTypeConverter.java index 6ce247793..8bfa78dfb 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/BufferTypeConverter.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/BufferTypeConverter.java @@ -1,3 +1,24 @@ +/* + * QuasselDroid - Quassel client for Android + * Copyright (C) 2016 Janne Koschinski + * Copyright (C) 2016 Ken Børge Viktil + * Copyright (C) 2016 Magnus Fjell + * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org> + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + package de.kuschku.libquassel.localtypes.orm.converters; import com.raizlabs.android.dbflow.converter.TypeConverter; diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/DateTimeConverter.java b/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/DateTimeConverter.java index 280ac445c..31ee0fdd8 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/DateTimeConverter.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/DateTimeConverter.java @@ -1,3 +1,24 @@ +/* + * QuasselDroid - Quassel client for Android + * Copyright (C) 2016 Janne Koschinski + * Copyright (C) 2016 Ken Børge Viktil + * Copyright (C) 2016 Magnus Fjell + * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org> + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + package de.kuschku.libquassel.localtypes.orm.converters; import com.raizlabs.android.dbflow.converter.TypeConverter; diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageFlagsConverter.java b/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageFlagsConverter.java index b3f1d9b18..6ae99fa3f 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageFlagsConverter.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageFlagsConverter.java @@ -1,3 +1,24 @@ +/* + * QuasselDroid - Quassel client for Android + * Copyright (C) 2016 Janne Koschinski + * Copyright (C) 2016 Ken Børge Viktil + * Copyright (C) 2016 Magnus Fjell + * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org> + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + package de.kuschku.libquassel.localtypes.orm.converters; import com.raizlabs.android.dbflow.converter.TypeConverter; diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageTypeConverter.java b/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageTypeConverter.java index 3327777ff..54da63107 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageTypeConverter.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageTypeConverter.java @@ -1,3 +1,24 @@ +/* + * QuasselDroid - Quassel client for Android + * Copyright (C) 2016 Janne Koschinski + * Copyright (C) 2016 Ken Børge Viktil + * Copyright (C) 2016 Magnus Fjell + * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org> + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + package de.kuschku.libquassel.localtypes.orm.converters; import com.raizlabs.android.dbflow.converter.TypeConverter; diff --git a/app/src/main/java/de/kuschku/libquassel/message/Message.java b/app/src/main/java/de/kuschku/libquassel/message/Message.java index 3534ac918..a95e8daf1 100644 --- a/app/src/main/java/de/kuschku/libquassel/message/Message.java +++ b/app/src/main/java/de/kuschku/libquassel/message/Message.java @@ -23,6 +23,7 @@ package de.kuschku.libquassel.message; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.util.Log; import com.raizlabs.android.dbflow.annotation.Column; import com.raizlabs.android.dbflow.annotation.ForeignKey; @@ -62,6 +63,18 @@ public class Message extends BaseModel implements ContentComparable<Message> { @Column public String content; + public static Message create(int id, DateTime time, Type type, Flags flags, BufferInfo bufferInfo, String sender, String content) { + Message message = new Message(); + message.id = id; + message.time = time; + message.type = type; + message.flags = flags; + message.bufferInfo = bufferInfo; + message.sender = sender; + message.content = content; + return message; + } + @NonNull @Override public String toString() { @@ -99,18 +112,6 @@ public class Message extends BaseModel implements ContentComparable<Message> { return this.time.compareTo(another.time); } - public static Message create(int id, DateTime time, Type type, Flags flags, BufferInfo bufferInfo, String sender, String content) { - Message message = new Message(); - message.id = id; - message.time = time; - message.type = type; - message.flags = flags; - message.bufferInfo = bufferInfo; - message.sender = sender; - message.content = content; - return message; - } - public enum Type { Plain(0x00001), Notice(0x00002), @@ -227,6 +228,7 @@ public class Message extends BaseModel implements ContentComparable<Message> { output.deleteCharAt(output.length() - 1); output.deleteCharAt(output.length() - 1); output.append("]"); + output.append(flags); return output.toString(); } diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/types/BufferInfo.java b/app/src/main/java/de/kuschku/libquassel/primitives/types/BufferInfo.java index 473325e5a..12ae3b4ff 100644 --- a/app/src/main/java/de/kuschku/libquassel/primitives/types/BufferInfo.java +++ b/app/src/main/java/de/kuschku/libquassel/primitives/types/BufferInfo.java @@ -22,12 +22,10 @@ package de.kuschku.libquassel.primitives.types; import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import com.raizlabs.android.dbflow.annotation.Column; import com.raizlabs.android.dbflow.annotation.PrimaryKey; import com.raizlabs.android.dbflow.annotation.Table; -import com.raizlabs.android.dbflow.converter.TypeConverter; import com.raizlabs.android.dbflow.structure.BaseModel; import de.kuschku.libquassel.localtypes.orm.ConnectedDatabase; @@ -49,6 +47,16 @@ public class BufferInfo extends BaseModel { @Column public String name; + public static BufferInfo create(int id, int networkId, Type type, int groupId, String name) { + BufferInfo info = new BufferInfo(); + info.id = id; + info.networkId = networkId; + info.type = type; + info.groupId = groupId; + info.name = name; + return info; + } + @NonNull @Override public String toString() { @@ -61,16 +69,6 @@ public class BufferInfo extends BaseModel { '}'; } - public static BufferInfo create(int id, int networkId, Type type, int groupId, String name) { - BufferInfo info = new BufferInfo(); - info.id = id; - info.networkId = networkId; - info.type = type; - info.groupId = groupId; - info.name = name; - return info; - } - public enum Type { INVALID(0x00), STATUS(0x01), diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IrcUserSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IrcUserSerializer.java index 7ff0ab262..2c0f6b396 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IrcUserSerializer.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IrcUserSerializer.java @@ -96,7 +96,7 @@ public class IrcUserSerializer implements ObjectSerializer<IrcUser> { (String) map.get("suserHost").data, (String) map.get("nick").data, (String) map.get("realName").data, - (map.get("account") == null) ? "": (String) map.get("account").data, + (map.get("account") == null) ? "" : (String) map.get("account").data, (String) map.get("awayMessage").data, (DateTime) map.get("loginTime").data, (boolean) map.get("encrypted").data, diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java index 20bf3c4fd..0acbfd0ee 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java @@ -47,9 +47,9 @@ import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser; @SuppressWarnings({"unchecked", "ConstantConditions"}) public class NetworkSerializer implements ObjectSerializer<Network> { + public static final DateTime UNIX_EPOCH = new DateTime(0L); @NonNull private static final NetworkSerializer serializer = new NetworkSerializer(); - public static final DateTime UNIX_EPOCH = new DateTime(0L); private NetworkSerializer() { } diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java index 218528838..dd3cac345 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java @@ -23,7 +23,6 @@ package de.kuschku.libquassel.syncables.types.impl; import android.support.annotation.IntRange; import android.support.annotation.NonNull; -import android.util.Log; import com.raizlabs.android.dbflow.sql.language.SQLite; diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java index e21f21901..6167a7527 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java @@ -22,7 +22,6 @@ package de.kuschku.libquassel.syncables.types.impl; import android.support.annotation.NonNull; -import android.util.Log; import java.util.Collections; import java.util.List; diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IgnoreListManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IgnoreListManager.java index 288e7249f..5a4bb36fb 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IgnoreListManager.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IgnoreListManager.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 java.util.ArrayList; import java.util.Arrays; @@ -163,6 +162,11 @@ public class IgnoreListManager extends AIgnoreListManager<IgnoreListManager> { client.setIgnoreListManager(this); } + @Override + public String toString() { + return String.valueOf(ignoreList); + } + public class IgnoreListItem { private final IgnoreType type; @NonNull @@ -235,9 +239,4 @@ public class IgnoreListManager extends AIgnoreListManager<IgnoreListManager> { '}'; } } - - @Override - public String toString() { - return String.valueOf(ignoreList); - } } 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 0bbf2d0f7..d8aaa270e 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 @@ -39,7 +39,6 @@ import de.kuschku.libquassel.BusProvider; import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.events.ConnectionChangeEvent; import de.kuschku.libquassel.localtypes.buffers.ChannelBuffer; -import de.kuschku.libquassel.primitives.types.BufferInfo; import de.kuschku.libquassel.primitives.types.QVariant; import de.kuschku.libquassel.syncables.serializers.IrcChannelSerializer; import de.kuschku.libquassel.syncables.types.abstracts.AIrcChannel; diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcUser.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcUser.java index c00da699f..084fe1b09 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcUser.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcUser.java @@ -23,7 +23,6 @@ package de.kuschku.libquassel.syncables.types.impl; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.v7.widget.LinearLayoutCompat; import android.util.SparseArray; import org.joda.time.DateTime; diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Network.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Network.java index 41fda6a57..f32f15a2a 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Network.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Network.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 java.util.ArrayList; import java.util.Arrays; @@ -37,7 +36,6 @@ import java.util.Observer; import de.kuschku.libquassel.BusProvider; import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.events.ConnectionChangeEvent; -import de.kuschku.libquassel.localtypes.buffers.ChannelBuffer; import de.kuschku.libquassel.localtypes.buffers.StatusBuffer; import de.kuschku.libquassel.objects.types.NetworkServer; import de.kuschku.libquassel.primitives.types.QVariant; @@ -778,7 +776,6 @@ public class Network extends ANetwork<Network> implements Observer { } - @Override public void _update() { super._update(); diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBacklogManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBacklogManager.java index dcbadf289..aaad6894e 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBacklogManager.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBacklogManager.java @@ -66,7 +66,9 @@ public interface QBacklogManager<T extends QSyncableObject<T>> extends QSyncable ObservableComparableSortedList<Message> filtered(int id); void setOpen(int bufferId); + void open(int bufferId); + int open(); void receiveBacklog(Message msg); diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcChannel.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcChannel.java index e4129a152..4eb088f0c 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcChannel.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcChannel.java @@ -25,7 +25,6 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import java.util.List; -import java.util.Set; import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.syncables.Synced; diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.java b/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.java index b4494939c..54ebdc7f3 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.java @@ -74,9 +74,11 @@ public class QuasselService extends Service { public void addCallback(Consumer<ClientBackgroundThread> consumer) { consumers.add(consumer); } + public void removeCallback(Consumer<ClientBackgroundThread> consumer) { consumers.remove(consumer); } + private void notify(ClientBackgroundThread thread) { for (Consumer<ClientBackgroundThread> consumer : consumers) { consumer.apply(thread); diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/LoginActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/LoginActivity.java index 36ad8cf3f..6ea7870fb 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/LoginActivity.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/LoginActivity.java @@ -26,8 +26,6 @@ import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; -import com.raizlabs.android.dbflow.config.FlowManager; - import de.kuschku.libquassel.localtypes.orm.ConnectedDatabase; import de.kuschku.quasseldroid_ng.ui.chat.MainActivity; import de.kuschku.quasseldroid_ng.ui.chat.util.ServiceHelper; 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 a6557621f..ea37f4ce9 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 @@ -39,7 +39,7 @@ import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; -import android.util.Log; +import android.view.ActionMode; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -72,6 +72,7 @@ import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel; import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser; import de.kuschku.quasseldroid_ng.R; import de.kuschku.quasseldroid_ng.service.ClientBackgroundThread; +import de.kuschku.quasseldroid_ng.ui.chat.drawer.ActionModeHandler; import de.kuschku.quasseldroid_ng.ui.chat.drawer.BufferViewConfigAdapter; import de.kuschku.quasseldroid_ng.ui.chat.fragment.ChatFragment; import de.kuschku.quasseldroid_ng.ui.chat.fragment.LoadingFragment; @@ -83,7 +84,6 @@ import de.kuschku.util.certificates.CertificateUtils; import de.kuschku.util.certificates.SQLiteCertificateManager; import de.kuschku.util.servicebound.BoundActivity; import rx.android.schedulers.AndroidSchedulers; -import rx.functions.Action1; import static de.kuschku.util.AndroidAssert.assertNotNull; @@ -148,6 +148,7 @@ public class MainActivity extends BoundActivity { drawerLayout.closeDrawer(GravityCompat.START); } }); + chatListAdapter.setActionModeHandler(new ActionModeHandler(this, R.id.cab_stub)); chatListAdapter.setRecyclerView(chatList); chatList.setItemAnimator(new DefaultItemAnimator()); chatList.setLayoutManager(new LinearLayoutManager(this)); @@ -160,8 +161,30 @@ public class MainActivity extends BoundActivity { switch (item.getItemId()) { case R.id.action_show_all: { item.setChecked(chatListAdapter.toggleShowAll()); - } break; + } + break; case R.id.action_manage_chat_lists: { + chatListToolbar.startActionMode(new ActionMode.Callback() { + @Override + public boolean onCreateActionMode(ActionMode actionMode, Menu menu) { + return false; + } + + @Override + public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) { + return false; + } + + @Override + public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) { + return false; + } + + @Override + public void onDestroyActionMode(ActionMode actionMode) { + + } + }); } } return false; diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/ActionModeHandler.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/ActionModeHandler.java new file mode 100644 index 000000000..7a790a1b2 --- /dev/null +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/ActionModeHandler.java @@ -0,0 +1,116 @@ +/* + * QuasselDroid - Quassel client for Android + * Copyright (C) 2016 Janne Koschinski + * Copyright (C) 2016 Ken Børge Viktil + * Copyright (C) 2016 Magnus Fjell + * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org> + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +package de.kuschku.quasseldroid_ng.ui.chat.drawer; + +import android.support.annotation.IdRes; +import android.support.v7.app.AppCompatActivity; +import android.view.Menu; +import android.view.MenuItem; + +import com.afollestad.materialcab.MaterialCab; + +import java.util.HashSet; +import java.util.Set; + +import de.kuschku.libquassel.localtypes.buffers.Buffer; +import de.kuschku.quasseldroid_ng.R; + +public class ActionModeHandler implements MaterialCab.Callback { + private final AppCompatActivity activity; + private final MaterialCab cab; + private Set<Buffer> selectedChildren = new HashSet<>(); + private Set<NetworkItem> selectedParents = new HashSet<>(); + private Menu actionModeMenu; + + public ActionModeHandler(AppCompatActivity activity, @IdRes int stub) { + this.activity = activity; + cab = new MaterialCab(activity, stub); + } + + public boolean isActive() { + return cab.isActive(); + } + + + public void start() { + //cab.start(this); + } + + public void toggle(Buffer buffer) { + /* + if (selectedChildren.contains(buffer)) + selectedChildren.remove(buffer); + else + selectedChildren.add(buffer); + + updateSelectionType(); + */ + } + + public void toggle(NetworkItem item) { + /* + if (selectedParents.contains(item)) + selectedParents.remove(item); + else + selectedParents.add(item); + + updateSelectionType(); + */ + } + + public boolean isChecked(Buffer buffer) { + return selectedChildren.contains(buffer); + } + + public boolean isChecked(NetworkItem network) { + return selectedParents.contains(network); + } + + private void updateSelectionType() { + if (actionModeMenu != null) { + actionModeMenu.setGroupVisible(R.id.context_group_buffer, !selectedChildren.isEmpty() && selectedParents.isEmpty()); + actionModeMenu.setGroupVisible(R.id.context_group_network, !selectedParents.isEmpty() && selectedChildren.isEmpty()); + } + } + + @Override + public boolean onCabCreated(MaterialCab cab, Menu menu) { + menu.clear(); + activity.getMenuInflater().inflate(R.menu.context_buffer_network, menu); + actionModeMenu = menu; + updateSelectionType(); + return true; + } + + @Override + public boolean onCabItemClicked(MenuItem item) { + return false; + } + + @Override + public boolean onCabFinished(MaterialCab cab) { + actionModeMenu = null; + selectedChildren.clear(); + selectedParents.clear(); + return true; + } +} diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigAdapter.java index a92096766..88903608a 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigAdapter.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigAdapter.java @@ -44,7 +44,7 @@ import de.kuschku.util.observables.callbacks.ElementCallback; import de.kuschku.util.observables.callbacks.UICallback; import de.kuschku.util.observables.lists.ObservableSortedList; -public class BufferViewConfigAdapter extends ExpandableRecyclerAdapter<NetworkViewHolder, BufferViewHolder> implements OnBufferClickListener { +public class BufferViewConfigAdapter extends ExpandableRecyclerAdapter<NetworkViewHolder, BufferViewHolder> implements OnBufferClickListener, OnBufferLongClickListener { private final AppContext context; private final ObservableSortedList<NetworkItem> items; private final Map<QNetwork, NetworkItem> itemMap = new WeakHashMap<>(); @@ -74,17 +74,7 @@ public class BufferViewConfigAdapter extends ExpandableRecyclerAdapter<NetworkVi } }; - public void notifyChildItemInserted(NetworkItem parentItem, int childPosition) { - super.notifyChildItemInserted(items.indexOf(parentItem), childPosition); - } - - public void notifyChildItemRemoved(NetworkItem parentItem, int childPosition) { - super.notifyChildItemRemoved(items.indexOf(parentItem), childPosition); - } - - public void notifyChildItemChanged(NetworkItem parentItem, int childPosition) { - super.notifyChildItemChanged(items.indexOf(parentItem), childPosition); - } + private ActionModeHandler actionModeHandler; private BufferViewConfigAdapter(AppContext context, ObservableSortedList<NetworkItem> items) { super(items); @@ -163,6 +153,18 @@ public class BufferViewConfigAdapter extends ExpandableRecyclerAdapter<NetworkVi return new BufferViewConfigAdapter(context, networkItems); } + public void notifyChildItemInserted(NetworkItem parentItem, int childPosition) { + super.notifyChildItemInserted(items.indexOf(parentItem), childPosition); + } + + public void notifyChildItemRemoved(NetworkItem parentItem, int childPosition) { + super.notifyChildItemRemoved(items.indexOf(parentItem), childPosition); + } + + public void notifyChildItemChanged(NetworkItem parentItem, int childPosition) { + super.notifyChildItemChanged(items.indexOf(parentItem), childPosition); + } + @Override public NetworkViewHolder onCreateParentViewHolder(ViewGroup parentViewGroup) { LayoutInflater inflater = LayoutInflater.from(parentViewGroup.getContext()); @@ -183,14 +185,22 @@ public class BufferViewConfigAdapter extends ExpandableRecyclerAdapter<NetworkVi @Override public void onBindChildViewHolder(BufferViewHolder childViewHolder, int position, Object childListItem) { bufferViewHolderMap.remove(childViewHolder.id); - childViewHolder.bind(this, (Buffer) childListItem); + Buffer buffer = (Buffer) childListItem; + childViewHolder.bind(this, this, buffer); bufferViewHolderMap.put(childViewHolder.id, childViewHolder); + childViewHolder.setSelected(context.client().backlogManager().open() == childViewHolder.id); + childViewHolder.setChecked(actionModeHandler.isChecked(buffer)); } @Override public void onClick(Buffer buffer) { - if (bufferClickListener != null) { - bufferClickListener.onClick(buffer); + if (actionModeHandler.isActive()) { + actionModeHandler.toggle(buffer); + bufferViewHolderMap.get(buffer.getInfo().id).setChecked(actionModeHandler.isChecked(buffer)); + } else { + if (bufferClickListener != null) { + bufferClickListener.onClick(buffer); + } } } @@ -243,10 +253,6 @@ public class BufferViewConfigAdapter extends ExpandableRecyclerAdapter<NetworkVi } } - public void setSelection(int from, int to) { - - } - public void setOpen(int id) { BufferViewHolder old = bufferViewHolderMap.get(open); if (old != null) old.setSelected(false); @@ -274,4 +280,18 @@ public class BufferViewConfigAdapter extends ExpandableRecyclerAdapter<NetworkVi showAll.set(!before); return !before; } + + @Override + public boolean onLongClick(Buffer buffer) { + if (!actionModeHandler.isActive()) + actionModeHandler.start(); + + actionModeHandler.toggle(buffer); + bufferViewHolderMap.get(buffer.getInfo().id).setChecked(actionModeHandler.isChecked(buffer)); + return false; + } + + public void setActionModeHandler(ActionModeHandler actionModeHandler) { + this.actionModeHandler = actionModeHandler; + } } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewHolder.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewHolder.java index 2723807f2..2a342af27 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewHolder.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewHolder.java @@ -41,7 +41,6 @@ import java.util.Locale; import butterknife.Bind; import butterknife.ButterKnife; -import de.kuschku.libquassel.events.BufferChangeEvent; import de.kuschku.libquassel.localtypes.buffers.Buffer; import de.kuschku.libquassel.localtypes.buffers.ChannelBuffer; import de.kuschku.libquassel.localtypes.buffers.QueryBuffer; @@ -73,14 +72,18 @@ public class BufferViewHolder extends ChildViewHolder { private StateListDrawable background; + private boolean selected = false; + private boolean checked = false; + public BufferViewHolder(AppContext context, View itemView) { super(itemView); ButterKnife.bind(this, itemView); this.context = context; - context.provider().event.registerSticky(this); background = new StateListDrawable(); background.addState(new int[]{android.R.attr.state_selected}, new ColorDrawable(context.themeUtil().res.colorSelected)); + background.addState(new int[]{android.R.attr.state_checked}, new ColorDrawable(context.themeUtil().res.colorSelected)); + background.addState(new int[]{android.R.attr.state_checked, android.R.attr.state_selected}, new ColorDrawable(context.themeUtil().res.colorSelected)); background.addState(new int[0], UIUtils.getSelectableBackground(itemView.getContext())); } @@ -89,7 +92,7 @@ public class BufferViewHolder extends ChildViewHolder { return R.layout.widget_buffer; } - public void bind(OnBufferClickListener listener, Buffer buffer) { + public void bind(OnBufferClickListener listener, OnBufferLongClickListener longClickListener, Buffer buffer) { if (status != null) status.removeOnPropertyChangedCallback(callback); status = buffer.getStatus(); @@ -99,7 +102,9 @@ public class BufferViewHolder extends ChildViewHolder { viewIntBinder.bindTextColor(name, colorFromActivityStatus(buffer)); setDescription(context.deserializer().formatString(getDescription(buffer))); setBadge(0); + itemView.setOnClickListener(v -> listener.onClick(buffer)); + itemView.setOnLongClickListener(v -> longClickListener.onLongClick(buffer)); itemView.setBackground(background); @@ -114,8 +119,6 @@ public class BufferViewHolder extends ChildViewHolder { } }; status.addOnPropertyChangedCallback(callback); - - setSelected(); } @NonNull @@ -132,12 +135,26 @@ public class BufferViewHolder extends ChildViewHolder { }; } - private void setSelected() { - setSelected(context.client().backlogManager().open() == id); + public boolean isSelected() { + return selected; } public void setSelected(boolean selected) { - itemView.setSelected(selected); + this.selected = selected; + updateSelectionState(); + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + updateSelectionState(); + } + + private void updateSelectionState() { + itemView.setSelected(selected || checked); } private void setIcon(AppContext context, BufferInfo.Type type, ObservableField<BufferInfo.BufferStatus> status) { @@ -181,8 +198,4 @@ public class BufferViewHolder extends ChildViewHolder { } return null; } - - public void onEventMainThread(BufferChangeEvent event) { - setSelected(); - } } 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 848998de7..68399e4a8 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 @@ -22,7 +22,6 @@ package de.kuschku.quasseldroid_ng.ui.chat.drawer; import android.databinding.Observable; -import android.util.Log; import com.bignerdranch.expandablerecyclerview.Model.ParentListItem; diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/OnBufferLongClickListener.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/OnBufferLongClickListener.java new file mode 100644 index 000000000..559e9d97a --- /dev/null +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/OnBufferLongClickListener.java @@ -0,0 +1,28 @@ +/* + * QuasselDroid - Quassel client for Android + * Copyright (C) 2016 Janne Koschinski + * Copyright (C) 2016 Ken Børge Viktil + * Copyright (C) 2016 Magnus Fjell + * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org> + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +package de.kuschku.quasseldroid_ng.ui.chat.drawer; + +import de.kuschku.libquassel.localtypes.buffers.Buffer; + +public interface OnBufferLongClickListener { + boolean onLongClick(Buffer buffer); +} diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java index 1f4cee76a..d6e7bf9f3 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java @@ -27,7 +27,6 @@ import android.support.design.widget.FloatingActionButton; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -103,7 +102,7 @@ public class ChatFragment extends BoundFragment { int scrollOffsetFromBottom = recyclerView.computeVerticalScrollRange() - recyclerView.computeVerticalScrollOffset() - recyclerViewMeasuredHeight; boolean isMoreThanOneScreenFromBottom = scrollOffsetFromBottom > recyclerViewMeasuredHeight; boolean smartVisibility = scrollDown.getVisibility() == View.VISIBLE || isMoreThanOneScreenFromBottom; - scrollDown.setVisibility((canScrollDown && isScrollingDown && smartVisibility) ? View.VISIBLE : View.GONE); + scrollDown.setVisibility((canScrollDown && isScrollingDown && smartVisibility) ? View.VISIBLE : View.GONE); } }); diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/ServiceHelper.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/ServiceHelper.java index 4f1f8ea06..d99a5174e 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/ServiceHelper.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/ServiceHelper.java @@ -39,7 +39,8 @@ public class ServiceHelper { /** * Connects to an already running QuasselService - * @param context The context in which the service is running + * + * @param context The context in which the service is running * @param connection The connection to which it should be bound */ public static void connectToService(Context context, ServiceConnection connection) { @@ -49,7 +50,8 @@ public class ServiceHelper { /** * Connects to an already running QuasselService - * @param context The context in which the service is running + * + * @param context The context in which the service is running * @param connection The connection which should be disconnected */ public static void disconnect(Context context, ServiceConnection connection) { @@ -58,6 +60,7 @@ public class ServiceHelper { /** * Starts a new QuasselService, if not yet running. + * * @param context The context in which it should run */ public static void startServiceIfNotRunning(Context context) { diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSelectActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSelectActivity.java index bba27567a..fb126b55e 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSelectActivity.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSelectActivity.java @@ -38,31 +38,11 @@ import de.kuschku.quasseldroid_ng.ui.setup.slides.AccountSelectSlide; import de.kuschku.quasseldroid_ng.ui.setup.slides.SlideFragment; public class AccountSelectActivity extends AppCompatActivity { - private SlidePagerAdapter slidePagerAdapter; - @Bind(R.id.view_pager) ViewPager viewPager; - @Bind(R.id.btn) FloatingActionButton btn; - - private class SlidePagerAdapter extends FragmentPagerAdapter { - private SlideFragment item = new AccountSelectSlide(); - - public SlidePagerAdapter(FragmentManager fm) { - super(fm); - } - - @Override - public SlideFragment getItem(int position) { - return item; - } - - @Override - public int getCount() { - return 1; - } - } + private SlidePagerAdapter slidePagerAdapter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -91,4 +71,22 @@ public class AccountSelectActivity extends AppCompatActivity { btn.setVisibility(validity ? View.VISIBLE : View.GONE); slidePagerAdapter.notifyDataSetChanged(); } + + private class SlidePagerAdapter extends FragmentPagerAdapter { + private SlideFragment item = new AccountSelectSlide(); + + public SlidePagerAdapter(FragmentManager fm) { + super(fm); + } + + @Override + public SlideFragment getItem(int position) { + return item; + } + + @Override + public int getCount() { + return 1; + } + } } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSelectSlide.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSelectSlide.java index a786c0588..2fb2e12dc 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSelectSlide.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSelectSlide.java @@ -55,7 +55,7 @@ public class AccountSelectSlide extends SlideFragment implements AccountItem.OnD @Override public Bundle getData(Bundle in) { - AccountItem item = (AccountItem) findAny(fastAdapter.getSelectedItems()).get(); + AccountItem item = (AccountItem) findAny(fastAdapter.getSelectedItems()).get(); in.putString("account", item.account.id.toString()); return in; } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupCoreSlide.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupCoreSlide.java index 92745729b..9fa726126 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupCoreSlide.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupCoreSlide.java @@ -36,16 +36,29 @@ import butterknife.ButterKnife; import de.kuschku.quasseldroid_ng.R; public class AccountSetupCoreSlide extends SlideFragment { - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - @Bind(R.id.host) AppCompatEditText hostField; - @Bind(R.id.port) AppCompatEditText portField; + TextWatcher watcher = new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + updateValidity(); + } + + @Override + public void afterTextChanged(Editable s) { + } + }; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } @Override protected View onCreateContent(LayoutInflater inflater, ViewGroup container, @Nullable Bundle savedInstanceState) { @@ -100,19 +113,4 @@ public class AccountSetupCoreSlide extends SlideFragment { String hostText = hostField.getText().toString(); return !hostText.isEmpty(); } - - TextWatcher watcher = new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - updateValidity(); - } - - @Override - public void afterTextChanged(Editable s) { - } - }; } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupNameSlide.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupNameSlide.java index b50ae81d6..c6eaaa34c 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupNameSlide.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupNameSlide.java @@ -36,14 +36,28 @@ import butterknife.ButterKnife; import de.kuschku.quasseldroid_ng.R; public class AccountSetupNameSlide extends SlideFragment { + @Bind(R.id.name) + AppCompatEditText nameField; + TextWatcher watcher = new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + updateValidity(); + } + + @Override + public void afterTextChanged(Editable s) { + } + }; + @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } - @Bind(R.id.name) - AppCompatEditText nameField; - @Override protected View onCreateContent(LayoutInflater inflater, ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.slide_account_name, container, false); @@ -82,19 +96,4 @@ public class AccountSetupNameSlide extends SlideFragment { String hostText = nameField.getText().toString(); return !hostText.isEmpty(); } - - TextWatcher watcher = new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - updateValidity(); - } - - @Override - public void afterTextChanged(Editable s) { - } - }; } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupUserSlide.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupUserSlide.java index c6b77f179..d740d9e5d 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupUserSlide.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupUserSlide.java @@ -36,16 +36,29 @@ import butterknife.ButterKnife; import de.kuschku.quasseldroid_ng.R; public class AccountSetupUserSlide extends SlideFragment { - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - @Bind(R.id.user) AppCompatEditText userField; - @Bind(R.id.pass) AppCompatEditText passField; + TextWatcher watcher = new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + } + + @Override + public void afterTextChanged(Editable s) { + updateValidity(); + } + }; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } @Override public View onCreateContent(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { @@ -95,19 +108,4 @@ public class AccountSetupUserSlide extends SlideFragment { String hostText = passField.getText().toString(); return !hostText.isEmpty(); } - - TextWatcher watcher = new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - } - - @Override - public void afterTextChanged(Editable s) { - updateValidity(); - } - }; } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/SlideFragment.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/SlideFragment.java index a0f460dc6..e37960ce7 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/SlideFragment.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/SlideFragment.java @@ -43,15 +43,19 @@ public abstract class SlideFragment extends Fragment { public abstract boolean isValid(); + public void addChangeListener(ValidUpdateCallback callback) { callbacks.add(callback); } + public void removeChangeListener(ValidUpdateCallback callback) { callbacks.remove(callback); } + protected void updateValidity() { updateValidity(isValid()); } + protected void updateValidity(boolean validity) { for (ValidUpdateCallback callback : callbacks) { callback.updateValidity(validity); @@ -70,6 +74,7 @@ public abstract class SlideFragment extends Fragment { return view; } + protected abstract View onCreateContent(LayoutInflater inflater, ViewGroup container, @Nullable Bundle savedInstanceState); @StringRes diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/ThemeUtil.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/ThemeUtil.java index 818c1a9d6..845202699 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/ThemeUtil.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/ThemeUtil.java @@ -369,7 +369,6 @@ public class ThemeUtil { public String chanMode_FORWARD_DESCRIPTION; - public String chanModeToDescription(ChanMode mode) { switch (mode) { case RESTRICT_TOPIC: @@ -705,11 +704,6 @@ public class ThemeUtil { public CharSequence formatPlain(@NonNull CharSequence nick, @NonNull CharSequence message) { return SpanFormatter.format(messagePlain, nick, message); } - - @NonNull - public CharSequence formatTopic(@NonNull CharSequence nick, @NonNull CharSequence channel, @NonNull CharSequence message) { - return SpanFormatter.format(messageTopic, nick, channel, message); - } } public static class Colors { @@ -795,7 +789,7 @@ public class ThemeUtil { @ColorInt public int colorTintHighlight; - @AutoColor(R.attr.material_drawer_selected) + @AutoColor(R.attr.colorControlHighlight) @ColorInt public int colorSelected; diff --git a/app/src/main/java/de/kuschku/util/ReflectionUtils.java b/app/src/main/java/de/kuschku/util/ReflectionUtils.java index adf1907f7..57f53b531 100644 --- a/app/src/main/java/de/kuschku/util/ReflectionUtils.java +++ b/app/src/main/java/de/kuschku/util/ReflectionUtils.java @@ -23,7 +23,6 @@ package de.kuschku.util; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.util.Log; import com.google.common.primitives.Primitives; diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProvider.java index ef05df887..afc4c58e2 100644 --- a/app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProvider.java +++ b/app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProvider.java @@ -25,7 +25,10 @@ import java.util.Set; public interface IrcModeProvider { ChanMode modeFromChar(char mode); + char charFromMode(ChanMode mode); + int matchQuality(Set<Character> modes); + Set<ChanMode> modesFromString(String chanModes); } 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 836dd0513..620d766b1 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 @@ -55,7 +55,7 @@ public class IrcModeProviderFactory { private static Set<Character> toModeSet(String chanModes) { if (chanModes == null) chanModes = ""; - String replaced = chanModes.replaceAll(",",""); + String replaced = chanModes.replaceAll(",", ""); Set<Character> modeSet = new HashSet<>(); for (char c : replaced.toCharArray()) { modeSet.add(c); 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 c38a11405..a4492474d 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 @@ -57,16 +57,26 @@ public class BewareIrcModeProvider extends AbstractIrcModeProvider { @Override public ChanMode modeFromChar(char mode) { switch (mode) { - case 'C': return BLOCK_CTCP; - case 'c': return BLOCK_COLOR; - case 'i': return ONLY_INVITE; - case 'k': return PASSWORD; - case 'l': return LIMIT; - case 'm': return MODERATED; - case 'n': return BLOCK_EXTERNAL; - case 'p': return PARANOID; - case 's': return UNLISTED; - case 't': return RESTRICT_TOPIC; + case 'C': + return BLOCK_CTCP; + case 'c': + return BLOCK_COLOR; + case 'i': + return ONLY_INVITE; + case 'k': + return PASSWORD; + case 'l': + return LIMIT; + case 'm': + return MODERATED; + case 'n': + return BLOCK_EXTERNAL; + case 'p': + return PARANOID; + case 's': + return UNLISTED; + case 't': + return RESTRICT_TOPIC; case 'b': return BAN; @@ -81,16 +91,26 @@ public class BewareIrcModeProvider extends AbstractIrcModeProvider { @Override public char charFromMode(ChanMode mode) { switch (mode) { - case BLOCK_CTCP: return 'C'; - case BLOCK_COLOR: return 'c'; - case ONLY_INVITE: return 'i'; - case PASSWORD: return 'k'; - case LIMIT: return 'l'; - case MODERATED: return 'm'; - case BLOCK_EXTERNAL: return 'n'; - case PARANOID: return 'p'; - case UNLISTED: return 's'; - case RESTRICT_TOPIC: return 't'; + case BLOCK_CTCP: + return 'C'; + case BLOCK_COLOR: + return 'c'; + case ONLY_INVITE: + return 'i'; + case PASSWORD: + return 'k'; + case LIMIT: + return 'l'; + case MODERATED: + return 'm'; + case BLOCK_EXTERNAL: + return 'n'; + case PARANOID: + return 'p'; + case UNLISTED: + return 's'; + case RESTRICT_TOPIC: + return 't'; case BAN: return 'b'; 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 788f00244..c53b03208 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 @@ -65,28 +65,50 @@ public class CharybdisIrcModeProvider extends AbstractIrcModeProvider { @Override public ChanMode modeFromChar(char mode) { switch (mode) { - case 'A': return ONLY_ADMIN; - case 'C': return BLOCK_CTCP; - case 'F': return ALLOW_FORWARD; - case 'O': return ONLY_OPER; - case 'P': return PERMANENT; - case 'Q': return BLOCK_FORWARDING; - case 'S': return ONLY_SSL; - case 'T': return BLOCK_NOTICE; - case 'c': return BLOCK_COLOR; - case 'f': return FORWARD; - case 'g': return ALLOW_INVITE; - case 'i': return ONLY_INVITE; - case 'j': return JOIN_THROTTLE; - case 'k': return PASSWORD; - case 'l': return LIMIT; - case 'm': return MODERATED; - case 'n': return BLOCK_EXTERNAL; - case 'p': return PARANOID; - case 'r': return BLOCK_UNIDENTIFIED; - case 's': return UNLISTED; - case 't': return RESTRICT_TOPIC; - case 'z': return REDUCED_MODERATION; + case 'A': + return ONLY_ADMIN; + case 'C': + return BLOCK_CTCP; + case 'F': + return ALLOW_FORWARD; + case 'O': + return ONLY_OPER; + case 'P': + return PERMANENT; + case 'Q': + return BLOCK_FORWARDING; + case 'S': + return ONLY_SSL; + case 'T': + return BLOCK_NOTICE; + case 'c': + return BLOCK_COLOR; + case 'f': + return FORWARD; + case 'g': + return ALLOW_INVITE; + case 'i': + return ONLY_INVITE; + case 'j': + return JOIN_THROTTLE; + case 'k': + return PASSWORD; + case 'l': + return LIMIT; + case 'm': + return MODERATED; + case 'n': + return BLOCK_EXTERNAL; + case 'p': + return PARANOID; + case 'r': + return BLOCK_UNIDENTIFIED; + case 's': + return UNLISTED; + case 't': + return RESTRICT_TOPIC; + case 'z': + return REDUCED_MODERATION; case 'b': return BAN; @@ -103,28 +125,50 @@ public class CharybdisIrcModeProvider extends AbstractIrcModeProvider { @Override public char charFromMode(ChanMode mode) { switch (mode) { - case ONLY_ADMIN: return 'A'; - case BLOCK_CTCP: return 'C'; - case ALLOW_FORWARD: return 'F'; - case ONLY_OPER: return 'O'; - case PERMANENT: return 'P'; - case BLOCK_FORWARDING: return 'Q'; - case ONLY_SSL: return 'S'; - case BLOCK_NOTICE: return 'T'; - case BLOCK_COLOR: return 'c'; - case FORWARD: return 'f'; - case ALLOW_INVITE: return 'g'; - case ONLY_INVITE: return 'i'; - case JOIN_THROTTLE: return 'j'; - case PASSWORD: return 'k'; - case LIMIT: return 'l'; - case MODERATED: return 'm'; - case BLOCK_EXTERNAL: return 'n'; - case PARANOID: return 'p'; - case BLOCK_UNIDENTIFIED: return 'r'; - case UNLISTED: return 's'; - case RESTRICT_TOPIC: return 't'; - case REDUCED_MODERATION: return 'z'; + case ONLY_ADMIN: + return 'A'; + case BLOCK_CTCP: + return 'C'; + case ALLOW_FORWARD: + return 'F'; + case ONLY_OPER: + return 'O'; + case PERMANENT: + return 'P'; + case BLOCK_FORWARDING: + return 'Q'; + case ONLY_SSL: + return 'S'; + case BLOCK_NOTICE: + return 'T'; + case BLOCK_COLOR: + return 'c'; + case FORWARD: + return 'f'; + case ALLOW_INVITE: + return 'g'; + case ONLY_INVITE: + return 'i'; + case JOIN_THROTTLE: + return 'j'; + case PASSWORD: + return 'k'; + case LIMIT: + return 'l'; + case MODERATED: + return 'm'; + case BLOCK_EXTERNAL: + return 'n'; + case PARANOID: + return 'p'; + case BLOCK_UNIDENTIFIED: + return 'r'; + case UNLISTED: + return 's'; + case RESTRICT_TOPIC: + return 't'; + case REDUCED_MODERATION: + return 'z'; case BAN: return 'b'; 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 fa4b49dbd..34a7798c1 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 @@ -58,22 +58,38 @@ public class DalIrcModeProvider extends AbstractIrcModeProvider { @Override public ChanMode modeFromChar(char mode) { switch (mode) { - case 'A': return AUDITORIUM; - case 'M': return QUIET_UNIDENTIFIED; - case 'O': return ONLY_OPER; - case 'R': return BLOCK_UNIDENTIFIED; - case 'S': return ONLY_SSL; - case 'c': return BLOCK_COLOR; - case 'i': return ONLY_INVITE; - case 'j': return JOIN_THROTTLE; - case 'k': return PASSWORD; - case 'l': return LIMIT; - case 'm': return MODERATED; - case 'n': return BLOCK_EXTERNAL; - case 'p': return PARANOID; - case 'r': return REGISTERED; - case 's': return UNLISTED; - case 't': return RESTRICT_TOPIC; + case 'A': + return AUDITORIUM; + case 'M': + return QUIET_UNIDENTIFIED; + case 'O': + return ONLY_OPER; + case 'R': + return BLOCK_UNIDENTIFIED; + case 'S': + return ONLY_SSL; + case 'c': + return BLOCK_COLOR; + case 'i': + return ONLY_INVITE; + case 'j': + return JOIN_THROTTLE; + case 'k': + return PASSWORD; + case 'l': + return LIMIT; + case 'm': + return MODERATED; + case 'n': + return BLOCK_EXTERNAL; + case 'p': + return PARANOID; + case 'r': + return REGISTERED; + case 's': + return UNLISTED; + case 't': + return RESTRICT_TOPIC; case 'b': return BAN; @@ -88,22 +104,38 @@ public class DalIrcModeProvider extends AbstractIrcModeProvider { @Override public char charFromMode(ChanMode mode) { switch (mode) { - case AUDITORIUM: return 'A'; - case QUIET_UNIDENTIFIED: return 'M'; - case ONLY_OPER: return 'O'; - case BLOCK_UNIDENTIFIED: return 'R'; - case ONLY_SSL: return 'S'; - case BLOCK_COLOR: return 'c'; - case ONLY_INVITE: return 'i'; - case JOIN_THROTTLE: return 'j'; - case PASSWORD: return 'k'; - case LIMIT: return 'l'; - case MODERATED: return 'm'; - case BLOCK_EXTERNAL: return 'n'; - case PARANOID: return 'p'; - case REGISTERED: return 'r'; - case UNLISTED: return 's'; - case RESTRICT_TOPIC: return 't'; + case AUDITORIUM: + return 'A'; + case QUIET_UNIDENTIFIED: + return 'M'; + case ONLY_OPER: + return 'O'; + case BLOCK_UNIDENTIFIED: + return 'R'; + case ONLY_SSL: + return 'S'; + case BLOCK_COLOR: + return 'c'; + case ONLY_INVITE: + return 'i'; + case JOIN_THROTTLE: + return 'j'; + case PASSWORD: + return 'k'; + case LIMIT: + return 'l'; + case MODERATED: + return 'm'; + case BLOCK_EXTERNAL: + return 'n'; + case PARANOID: + return 'p'; + case REGISTERED: + return 'r'; + case UNLISTED: + return 's'; + case RESTRICT_TOPIC: + return 't'; case BAN: return 'b'; 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 5b6e898a9..37c0014c1 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 @@ -56,20 +56,34 @@ public class DancerIrcModeProvider extends AbstractIrcModeProvider { @Override public ChanMode modeFromChar(char mode) { switch (mode) { - case 'J': return JOIN_THROTTLE; - case 'P': return PERMANENT; - case 'Q': return BLOCK_FORWARDING; - case 'R': return QUIET_UNIDENTIFIED; - case 'c': return BLOCK_COLOR; - case 'g': return ALLOW_INVITE; - case 'i': return ONLY_INVITE; - case 'k': return PASSWORD; - case 'l': return LIMIT; - case 'm': return MODERATED; - case 'n': return BLOCK_EXTERNAL; - case 'r': return BLOCK_UNIDENTIFIED; - case 's': return UNLISTED; - case 'z': return REDUCED_MODERATION; + case 'J': + return JOIN_THROTTLE; + case 'P': + return PERMANENT; + case 'Q': + return BLOCK_FORWARDING; + case 'R': + return QUIET_UNIDENTIFIED; + case 'c': + return BLOCK_COLOR; + case 'g': + return ALLOW_INVITE; + case 'i': + return ONLY_INVITE; + case 'k': + return PASSWORD; + case 'l': + return LIMIT; + case 'm': + return MODERATED; + case 'n': + return BLOCK_EXTERNAL; + case 'r': + return BLOCK_UNIDENTIFIED; + case 's': + return UNLISTED; + case 'z': + return REDUCED_MODERATION; case 'b': return BAN; @@ -84,20 +98,34 @@ public class DancerIrcModeProvider extends AbstractIrcModeProvider { @Override public char charFromMode(ChanMode mode) { switch (mode) { - case JOIN_THROTTLE: return 'J'; - case PERMANENT: return 'P'; - case BLOCK_FORWARDING: return 'Q'; - case QUIET_UNIDENTIFIED: return 'R'; - case BLOCK_COLOR: return 'c'; - case ALLOW_INVITE: return 'g'; - case ONLY_INVITE: return 'i'; - case PASSWORD: return 'k'; - case LIMIT: return 'l'; - case MODERATED: return 'm'; - case BLOCK_EXTERNAL: return 'n'; - case BLOCK_UNIDENTIFIED: return 'r'; - case UNLISTED: return 's'; - case REDUCED_MODERATION: return 'z'; + case JOIN_THROTTLE: + return 'J'; + case PERMANENT: + return 'P'; + case BLOCK_FORWARDING: + return 'Q'; + case QUIET_UNIDENTIFIED: + return 'R'; + case BLOCK_COLOR: + return 'c'; + case ALLOW_INVITE: + return 'g'; + case ONLY_INVITE: + return 'i'; + case PASSWORD: + return 'k'; + case LIMIT: + return 'l'; + case MODERATED: + return 'm'; + case BLOCK_EXTERNAL: + return 'n'; + case BLOCK_UNIDENTIFIED: + return 'r'; + case UNLISTED: + return 's'; + case REDUCED_MODERATION: + return 'z'; case BAN: return 'b'; 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 0a2edf5aa..26bd28773 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 @@ -57,22 +57,38 @@ public class FqIrcModeProvider extends AbstractIrcModeProvider { @Override public ChanMode modeFromChar(char mode) { switch (mode) { - case 'M': return QUIET_UNIDENTIFIED; - case 'O': return ONLY_OPER; - case 'R': return BLOCK_UNIDENTIFIED; - case 'S': return ONLY_SSL; - case 'c': return BLOCK_COLOR; - case 'i': return ONLY_INVITE; - case 'j': return JOIN_THROTTLE; - case 'k': return PASSWORD; - case 'l': return LIMIT; - case 'm': return MODERATED; - case 'n': return BLOCK_EXTERNAL; - case 'p': return PARANOID; - case 'q': return BLOCK_UNIDENTIFIED; - case 'r': return REGISTERED; - case 's': return UNLISTED; - case 't': return RESTRICT_TOPIC; + case 'M': + return QUIET_UNIDENTIFIED; + case 'O': + return ONLY_OPER; + case 'R': + return BLOCK_UNIDENTIFIED; + case 'S': + return ONLY_SSL; + case 'c': + return BLOCK_COLOR; + case 'i': + return ONLY_INVITE; + case 'j': + return JOIN_THROTTLE; + case 'k': + return PASSWORD; + case 'l': + return LIMIT; + case 'm': + return MODERATED; + case 'n': + return BLOCK_EXTERNAL; + case 'p': + return PARANOID; + case 'q': + return BLOCK_UNIDENTIFIED; + case 'r': + return REGISTERED; + case 's': + return UNLISTED; + case 't': + return RESTRICT_TOPIC; case 'b': return BAN; @@ -87,21 +103,36 @@ public class FqIrcModeProvider extends AbstractIrcModeProvider { @Override public char charFromMode(ChanMode mode) { switch (mode) { - case QUIET_UNIDENTIFIED: return 'M'; - case ONLY_OPER: return 'O'; - case ONLY_SSL: return 'S'; - case BLOCK_COLOR: return 'c'; - case ONLY_INVITE: return 'i'; - case JOIN_THROTTLE: return 'j'; - case PASSWORD: return 'k'; - case LIMIT: return 'l'; - case MODERATED: return 'm'; - case BLOCK_EXTERNAL: return 'n'; - case PARANOID: return 'p'; - case BLOCK_UNIDENTIFIED: return 'q'; - case REGISTERED: return 'r'; - case UNLISTED: return 's'; - case RESTRICT_TOPIC: return 't'; + case QUIET_UNIDENTIFIED: + return 'M'; + case ONLY_OPER: + return 'O'; + case ONLY_SSL: + return 'S'; + case BLOCK_COLOR: + return 'c'; + case ONLY_INVITE: + return 'i'; + case JOIN_THROTTLE: + return 'j'; + case PASSWORD: + return 'k'; + case LIMIT: + return 'l'; + case MODERATED: + return 'm'; + case BLOCK_EXTERNAL: + return 'n'; + case PARANOID: + return 'p'; + case BLOCK_UNIDENTIFIED: + return 'q'; + case REGISTERED: + return 'r'; + case UNLISTED: + return 's'; + case RESTRICT_TOPIC: + return 't'; case BAN: return 'b'; 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 f25971420..b444f42f5 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 @@ -56,20 +56,34 @@ public class HybridIrcModeProvider extends AbstractIrcModeProvider { @Override public ChanMode modeFromChar(char mode) { switch (mode) { - case 'M': return QUIET_UNIDENTIFIED; - case 'O': return ONLY_OPER; - case 'R': return BLOCK_UNIDENTIFIED; - case 'S': return ONLY_SSL; - case 'c': return BLOCK_COLOR; - case 'i': return ONLY_INVITE; - case 'k': return PASSWORD; - case 'l': return LIMIT; - case 'm': return MODERATED; - case 'n': return BLOCK_EXTERNAL; - case 'p': return PARANOID; - case 'r': return REGISTERED; - case 's': return UNLISTED; - case 't': return RESTRICT_TOPIC; + case 'M': + return QUIET_UNIDENTIFIED; + case 'O': + return ONLY_OPER; + case 'R': + return BLOCK_UNIDENTIFIED; + case 'S': + return ONLY_SSL; + case 'c': + return BLOCK_COLOR; + case 'i': + return ONLY_INVITE; + case 'k': + return PASSWORD; + case 'l': + return LIMIT; + case 'm': + return MODERATED; + case 'n': + return BLOCK_EXTERNAL; + case 'p': + return PARANOID; + case 'r': + return REGISTERED; + case 's': + return UNLISTED; + case 't': + return RESTRICT_TOPIC; case 'b': return BAN; @@ -84,20 +98,34 @@ public class HybridIrcModeProvider extends AbstractIrcModeProvider { @Override public char charFromMode(ChanMode mode) { switch (mode) { - case QUIET_UNIDENTIFIED: return 'M'; - case ONLY_OPER: return 'O'; - case BLOCK_UNIDENTIFIED: return 'R'; - case ONLY_SSL: return 'S'; - case BLOCK_COLOR: return 'c'; - case ONLY_INVITE: return 'i'; - case PASSWORD: return 'k'; - case LIMIT: return 'l'; - case MODERATED: return 'm'; - case BLOCK_EXTERNAL: return 'n'; - case PARANOID: return 'p'; - case REGISTERED: return 'r'; - case UNLISTED: return 's'; - case RESTRICT_TOPIC: return 't'; + case QUIET_UNIDENTIFIED: + return 'M'; + case ONLY_OPER: + return 'O'; + case BLOCK_UNIDENTIFIED: + return 'R'; + case ONLY_SSL: + return 'S'; + case BLOCK_COLOR: + return 'c'; + case ONLY_INVITE: + return 'i'; + case PASSWORD: + return 'k'; + case LIMIT: + return 'l'; + case MODERATED: + return 'm'; + case BLOCK_EXTERNAL: + return 'n'; + case PARANOID: + return 'p'; + case REGISTERED: + return 'r'; + case UNLISTED: + return 's'; + case RESTRICT_TOPIC: + return 't'; case BAN: return 'b'; 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 28c2c12d4..630b8331b 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 @@ -54,18 +54,30 @@ public class HyperionIrcModeProvider extends AbstractIrcModeProvider { @Override public ChanMode modeFromChar(char mode) { switch (mode) { - case 'Q': return BLOCK_FORWARDING; - case 'R': return QUIET_UNIDENTIFIED; - case 'c': return BLOCK_COLOR; - case 'g': return ALLOW_INVITE; - case 'i': return ONLY_INVITE; - case 'k': return PASSWORD; - case 'l': return LIMIT; - case 'm': return MODERATED; - case 'n': return BLOCK_EXTERNAL; - case 'r': return BLOCK_UNIDENTIFIED; - case 's': return UNLISTED; - case 'z': return REDUCED_MODERATION; + case 'Q': + return BLOCK_FORWARDING; + case 'R': + return QUIET_UNIDENTIFIED; + case 'c': + return BLOCK_COLOR; + case 'g': + return ALLOW_INVITE; + case 'i': + return ONLY_INVITE; + case 'k': + return PASSWORD; + case 'l': + return LIMIT; + case 'm': + return MODERATED; + case 'n': + return BLOCK_EXTERNAL; + case 'r': + return BLOCK_UNIDENTIFIED; + case 's': + return UNLISTED; + case 'z': + return REDUCED_MODERATION; case 'b': return BAN; @@ -80,18 +92,30 @@ public class HyperionIrcModeProvider extends AbstractIrcModeProvider { @Override public char charFromMode(ChanMode mode) { switch (mode) { - case BLOCK_FORWARDING: return 'Q'; - case QUIET_UNIDENTIFIED: return 'R'; - case BLOCK_COLOR: return 'c'; - case ALLOW_INVITE: return 'g'; - case ONLY_INVITE: return 'i'; - case PASSWORD: return 'k'; - case LIMIT: return 'l'; - case MODERATED: return 'm'; - case BLOCK_EXTERNAL: return 'n'; - case BLOCK_UNIDENTIFIED: return 'r'; - case UNLISTED: return 's'; - case REDUCED_MODERATION: return 'z'; + case BLOCK_FORWARDING: + return 'Q'; + case QUIET_UNIDENTIFIED: + return 'R'; + case BLOCK_COLOR: + return 'c'; + case ALLOW_INVITE: + return 'g'; + case ONLY_INVITE: + return 'i'; + case PASSWORD: + return 'k'; + case LIMIT: + return 'l'; + case MODERATED: + return 'm'; + case BLOCK_EXTERNAL: + return 'n'; + case BLOCK_UNIDENTIFIED: + return 'r'; + case UNLISTED: + return 's'; + case REDUCED_MODERATION: + return 'z'; case BAN: return 'b'; 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 98a7d6f03..b1e81b465 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 @@ -71,35 +71,64 @@ public class InspireIrcModeProvider extends AbstractIrcModeProvider { @Override public ChanMode modeFromChar(char mode) { switch (mode) { - case 'A': return ALLOW_INVITE; - case 'B': return BLOCK_CAPS; - case 'C': return BLOCK_CTCP; - case 'D': return HIDE_JOINS; - case 'G': return CENSOR; - case 'K': return BLOCK_KNOCK; - case 'L': return FORWARD; - case 'M': return QUIET_UNIDENTIFIED; - case 'N': return BLOCK_NICKCHANGE; - case 'O': return ONLY_OPER; - case 'P': return PERMANENT; - case 'Q': return BLOCK_KICK; - case 'R': return BLOCK_UNIDENTIFIED; - case 'S': return STRIP_COLOR; - case 'T': return BLOCK_NOTICE; - case 'c': return BLOCK_COLOR; - case 'f': return ANTIFLOOD; - case 'i': return ONLY_INVITE; - case 'j': return JOIN_THROTTLE; - case 'k': return PASSWORD; - case 'l': return LIMIT; - case 'm': return MODERATED; - case 'n': return BLOCK_EXTERNAL; - case 'p': return PARANOID; - case 'r': return REGISTERED; - case 's': return UNLISTED; - case 't': return RESTRICT_TOPIC; - case 'u': return AUDITORIUM; - case 'z': return ONLY_SSL; + case 'A': + return ALLOW_INVITE; + case 'B': + return BLOCK_CAPS; + case 'C': + return BLOCK_CTCP; + case 'D': + return HIDE_JOINS; + case 'G': + return CENSOR; + case 'K': + return BLOCK_KNOCK; + case 'L': + return FORWARD; + case 'M': + return QUIET_UNIDENTIFIED; + case 'N': + return BLOCK_NICKCHANGE; + case 'O': + return ONLY_OPER; + case 'P': + return PERMANENT; + case 'Q': + return BLOCK_KICK; + case 'R': + return BLOCK_UNIDENTIFIED; + case 'S': + return STRIP_COLOR; + case 'T': + return BLOCK_NOTICE; + case 'c': + return BLOCK_COLOR; + case 'f': + return ANTIFLOOD; + case 'i': + return ONLY_INVITE; + case 'j': + return JOIN_THROTTLE; + case 'k': + return PASSWORD; + case 'l': + return LIMIT; + case 'm': + return MODERATED; + case 'n': + return BLOCK_EXTERNAL; + case 'p': + return PARANOID; + case 'r': + return REGISTERED; + case 's': + return UNLISTED; + case 't': + return RESTRICT_TOPIC; + case 'u': + return AUDITORIUM; + case 'z': + return ONLY_SSL; case 'b': return BAN; @@ -114,35 +143,64 @@ public class InspireIrcModeProvider extends AbstractIrcModeProvider { @Override public char charFromMode(ChanMode mode) { switch (mode) { - case ALLOW_INVITE: return 'A'; - case BLOCK_CAPS: return 'B'; - case BLOCK_CTCP: return 'C'; - case HIDE_JOINS: return 'D'; - case CENSOR: return 'G'; - case BLOCK_KNOCK: return 'K'; - case FORWARD: return 'L'; - case QUIET_UNIDENTIFIED: return 'M'; - case BLOCK_NICKCHANGE: return 'N'; - case ONLY_OPER: return 'O'; - case PERMANENT: return 'P'; - case BLOCK_KICK: return 'Q'; - case BLOCK_UNIDENTIFIED: return 'R'; - case STRIP_COLOR: return 'S'; - case BLOCK_NOTICE: return 'T'; - case BLOCK_COLOR: return 'c'; - case ANTIFLOOD: return 'f'; - case ONLY_INVITE: return 'i'; - case JOIN_THROTTLE: return 'j'; - case PASSWORD: return 'k'; - case LIMIT: return 'l'; - case MODERATED: return 'm'; - case BLOCK_EXTERNAL: return 'n'; - case PARANOID: return 'p'; - case REGISTERED: return 'r'; - case UNLISTED: return 's'; - case RESTRICT_TOPIC: return 't'; - case AUDITORIUM: return 'u'; - case ONLY_SSL: return 'z'; + case ALLOW_INVITE: + return 'A'; + case BLOCK_CAPS: + return 'B'; + case BLOCK_CTCP: + return 'C'; + case HIDE_JOINS: + return 'D'; + case CENSOR: + return 'G'; + case BLOCK_KNOCK: + return 'K'; + case FORWARD: + return 'L'; + case QUIET_UNIDENTIFIED: + return 'M'; + case BLOCK_NICKCHANGE: + return 'N'; + case ONLY_OPER: + return 'O'; + case PERMANENT: + return 'P'; + case BLOCK_KICK: + return 'Q'; + case BLOCK_UNIDENTIFIED: + return 'R'; + case STRIP_COLOR: + return 'S'; + case BLOCK_NOTICE: + return 'T'; + case BLOCK_COLOR: + return 'c'; + case ANTIFLOOD: + return 'f'; + case ONLY_INVITE: + return 'i'; + case JOIN_THROTTLE: + return 'j'; + case PASSWORD: + return 'k'; + case LIMIT: + return 'l'; + case MODERATED: + return 'm'; + case BLOCK_EXTERNAL: + return 'n'; + case PARANOID: + return 'p'; + case REGISTERED: + return 'r'; + case UNLISTED: + return 's'; + case RESTRICT_TOPIC: + return 't'; + case AUDITORIUM: + return 'u'; + case ONLY_SSL: + return 'z'; } return ' '; } 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 7e4a27f82..0ed1d4584 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 @@ -58,22 +58,38 @@ public class NeoIrcModeProvider extends AbstractIrcModeProvider { @Override public ChanMode modeFromChar(char mode) { switch (mode) { - case 'M': return QUIET_UNIDENTIFIED; - case 'N': return BLOCK_NICKCHANGE; - case 'O': return ONLY_OPER; - case 'P': return PERMANENT; - case 'Q': return BLOCK_KICK; - case 'R': return BLOCK_UNIDENTIFIED; - case 'V': return DISABLE_INVITE; - case 'i': return ONLY_INVITE; - case 'k': return PASSWORD; - case 'l': return LIMIT; - case 'm': return MODERATED; - case 'n': return BLOCK_EXTERNAL; - case 'r': return REGISTERED; - case 's': return UNLISTED; - case 't': return RESTRICT_TOPIC; - case 'z': return ONLY_SSL; + case 'M': + return QUIET_UNIDENTIFIED; + case 'N': + return BLOCK_NICKCHANGE; + case 'O': + return ONLY_OPER; + case 'P': + return PERMANENT; + case 'Q': + return BLOCK_KICK; + case 'R': + return BLOCK_UNIDENTIFIED; + case 'V': + return DISABLE_INVITE; + case 'i': + return ONLY_INVITE; + case 'k': + return PASSWORD; + case 'l': + return LIMIT; + case 'm': + return MODERATED; + case 'n': + return BLOCK_EXTERNAL; + case 'r': + return REGISTERED; + case 's': + return UNLISTED; + case 't': + return RESTRICT_TOPIC; + case 'z': + return ONLY_SSL; case 'b': return BAN; @@ -88,22 +104,38 @@ public class NeoIrcModeProvider extends AbstractIrcModeProvider { @Override public char charFromMode(ChanMode mode) { switch (mode) { - case QUIET_UNIDENTIFIED: return 'M'; - case BLOCK_NICKCHANGE: return 'N'; - case ONLY_OPER: return 'O'; - case PERMANENT: return 'P'; - case BLOCK_KICK: return 'Q'; - case BLOCK_UNIDENTIFIED: return 'R'; - case DISABLE_INVITE: return 'V'; - case ONLY_INVITE: return 'i'; - case PASSWORD: return 'k'; - case LIMIT: return 'l'; - case MODERATED: return 'm'; - case BLOCK_EXTERNAL: return 'n'; - case REGISTERED: return 'r'; - case UNLISTED: return 's'; - case RESTRICT_TOPIC: return 't'; - case ONLY_SSL: return 'z'; + case QUIET_UNIDENTIFIED: + return 'M'; + case BLOCK_NICKCHANGE: + return 'N'; + case ONLY_OPER: + return 'O'; + case PERMANENT: + return 'P'; + case BLOCK_KICK: + return 'Q'; + case BLOCK_UNIDENTIFIED: + return 'R'; + case DISABLE_INVITE: + return 'V'; + case ONLY_INVITE: + return 'i'; + case PASSWORD: + return 'k'; + case LIMIT: + return 'l'; + case MODERATED: + return 'm'; + case BLOCK_EXTERNAL: + return 'n'; + case REGISTERED: + return 'r'; + case UNLISTED: + return 's'; + case RESTRICT_TOPIC: + return 't'; + case ONLY_SSL: + return 'z'; case BAN: return 'b'; 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 2d7ce7777..648ecfdb7 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 @@ -57,16 +57,26 @@ public class NightstarIrcModeProvider extends AbstractIrcModeProvider { @Override public ChanMode modeFromChar(char mode) { switch (mode) { - case 'C': return BLOCK_COLOR; - case 'i': return ONLY_INVITE; - case 'k': return PASSWORD; - case 'l': return LIMIT; - case 'm': return MODERATED; - case 'n': return BLOCK_EXTERNAL; - case 'p': return PARANOID; - case 'r': return REGISTERED; - case 's': return UNLISTED; - case 't': return RESTRICT_TOPIC; + case 'C': + return BLOCK_COLOR; + case 'i': + return ONLY_INVITE; + case 'k': + return PASSWORD; + case 'l': + return LIMIT; + case 'm': + return MODERATED; + case 'n': + return BLOCK_EXTERNAL; + case 'p': + return PARANOID; + case 'r': + return REGISTERED; + case 's': + return UNLISTED; + case 't': + return RESTRICT_TOPIC; case 'b': return BAN; @@ -81,16 +91,26 @@ public class NightstarIrcModeProvider extends AbstractIrcModeProvider { @Override public char charFromMode(ChanMode mode) { switch (mode) { - case BLOCK_COLOR: return 'C'; - case ONLY_INVITE: return 'i'; - case PASSWORD: return 'k'; - case LIMIT: return 'l'; - case MODERATED: return 'm'; - case BLOCK_EXTERNAL: return 'n'; - case PARANOID: return 'p'; - case REGISTERED: return 'r'; - case UNLISTED: return 's'; - case RESTRICT_TOPIC: return 't'; + case BLOCK_COLOR: + return 'C'; + case ONLY_INVITE: + return 'i'; + case PASSWORD: + return 'k'; + case LIMIT: + return 'l'; + case MODERATED: + return 'm'; + case BLOCK_EXTERNAL: + return 'n'; + case PARANOID: + return 'p'; + case REGISTERED: + return 'r'; + case UNLISTED: + return 's'; + case RESTRICT_TOPIC: + return 't'; case BAN: return 'b'; 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 67e8062b5..01bf730b2 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 @@ -50,14 +50,22 @@ public class RfcIrcModeProvider extends AbstractIrcModeProvider { @Override public ChanMode modeFromChar(char mode) { switch (mode) { - case 'p': return PARANOID; - case 's': return UNLISTED; - case 'i': return ONLY_INVITE; - case 't': return RESTRICT_TOPIC; - case 'n': return BLOCK_EXTERNAL; - case 'm': return MODERATED; - case 'l': return LIMIT; - case 'k': return PASSWORD; + case 'p': + return PARANOID; + case 's': + return UNLISTED; + case 'i': + return ONLY_INVITE; + case 't': + return RESTRICT_TOPIC; + case 'n': + return BLOCK_EXTERNAL; + case 'm': + return MODERATED; + case 'l': + return LIMIT; + case 'k': + return PASSWORD; case 'b': return BAN; @@ -72,14 +80,22 @@ public class RfcIrcModeProvider extends AbstractIrcModeProvider { @Override public char charFromMode(ChanMode mode) { switch (mode) { - case PARANOID: return 'p'; - case UNLISTED: return 's'; - case ONLY_INVITE: return 'i'; - case RESTRICT_TOPIC: return 't'; - case BLOCK_EXTERNAL: return 'n'; - case MODERATED: return 'm'; - case LIMIT: return 'l'; - case PASSWORD: return 'k'; + case PARANOID: + return 'p'; + case UNLISTED: + return 's'; + case ONLY_INVITE: + return 'i'; + case RESTRICT_TOPIC: + return 't'; + case BLOCK_EXTERNAL: + return 'n'; + case MODERATED: + return 'm'; + case LIMIT: + return 'l'; + case PASSWORD: + return 'k'; case BAN: return 'b'; 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 54af40869..a03b7b1bc 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 @@ -69,33 +69,60 @@ public class ShadowIrcModeProvider extends AbstractIrcModeProvider { @Override public ChanMode modeFromChar(char mode) { switch (mode) { - case 'A': return ONLY_ADMIN; - case 'C': return BLOCK_CTCP; - case 'D': return BLOCK_ACTION; - case 'E': return BLOCK_KICK; - case 'F': return ALLOW_FORWARD; - case 'G': return BLOCK_CAPS; - case 'J': return BLOCK_AUTOREJOIN; - case 'K': return BLOCK_REPEAT; - case 'O': return ONLY_OPER; - case 'P': return PERMANENT; - case 'Q': return BLOCK_FORWARDING; - case 'S': return ONLY_SSL; - case 'T': return BLOCK_NOTICE; - case 'c': return STRIP_COLOR; - case 'd': return BLOCK_NICKCHANGE; - case 'g': return ALLOW_INVITE; - case 'i': return ONLY_INVITE; - case 'j': return JOIN_THROTTLE; - case 'k': return PASSWORD; - case 'l': return LIMIT; - case 'm': return MODERATED; - case 'n': return BLOCK_EXTERNAL; - case 'p': return PARANOID; - case 'r': return BLOCK_UNIDENTIFIED; - case 's': return UNLISTED; - case 't': return RESTRICT_TOPIC; - case 'z': return REDUCED_MODERATION; + case 'A': + return ONLY_ADMIN; + case 'C': + return BLOCK_CTCP; + case 'D': + return BLOCK_ACTION; + case 'E': + return BLOCK_KICK; + case 'F': + return ALLOW_FORWARD; + case 'G': + return BLOCK_CAPS; + case 'J': + return BLOCK_AUTOREJOIN; + case 'K': + return BLOCK_REPEAT; + case 'O': + return ONLY_OPER; + case 'P': + return PERMANENT; + case 'Q': + return BLOCK_FORWARDING; + case 'S': + return ONLY_SSL; + case 'T': + return BLOCK_NOTICE; + case 'c': + return STRIP_COLOR; + case 'd': + return BLOCK_NICKCHANGE; + case 'g': + return ALLOW_INVITE; + case 'i': + return ONLY_INVITE; + case 'j': + return JOIN_THROTTLE; + case 'k': + return PASSWORD; + case 'l': + return LIMIT; + case 'm': + return MODERATED; + case 'n': + return BLOCK_EXTERNAL; + case 'p': + return PARANOID; + case 'r': + return BLOCK_UNIDENTIFIED; + case 's': + return UNLISTED; + case 't': + return RESTRICT_TOPIC; + case 'z': + return REDUCED_MODERATION; case 'b': return BAN; @@ -110,33 +137,60 @@ public class ShadowIrcModeProvider extends AbstractIrcModeProvider { @Override public char charFromMode(ChanMode mode) { switch (mode) { - case ONLY_ADMIN: return 'A'; - case BLOCK_CTCP: return 'C'; - case BLOCK_ACTION: return 'D'; - case BLOCK_KICK: return 'E'; - case ALLOW_FORWARD: return 'F'; - case BLOCK_CAPS: return 'G'; - case BLOCK_AUTOREJOIN: return 'J'; - case BLOCK_REPEAT: return 'K'; - case ONLY_OPER: return 'O'; - case PERMANENT: return 'P'; - case BLOCK_FORWARDING: return 'Q'; - case ONLY_SSL: return 'S'; - case BLOCK_NOTICE: return 'T'; - case STRIP_COLOR: return 'c'; - case BLOCK_NICKCHANGE: return 'd'; - case ALLOW_INVITE: return 'g'; - case ONLY_INVITE: return 'i'; - case JOIN_THROTTLE: return 'j'; - case PASSWORD: return 'k'; - case LIMIT: return 'l'; - case MODERATED: return 'm'; - case BLOCK_EXTERNAL: return 'n'; - case PARANOID: return 'p'; - case BLOCK_UNIDENTIFIED: return 'r'; - case UNLISTED: return 's'; - case RESTRICT_TOPIC: return 't'; - case REDUCED_MODERATION: return 'z'; + case ONLY_ADMIN: + return 'A'; + case BLOCK_CTCP: + return 'C'; + case BLOCK_ACTION: + return 'D'; + case BLOCK_KICK: + return 'E'; + case ALLOW_FORWARD: + return 'F'; + case BLOCK_CAPS: + return 'G'; + case BLOCK_AUTOREJOIN: + return 'J'; + case BLOCK_REPEAT: + return 'K'; + case ONLY_OPER: + return 'O'; + case PERMANENT: + return 'P'; + case BLOCK_FORWARDING: + return 'Q'; + case ONLY_SSL: + return 'S'; + case BLOCK_NOTICE: + return 'T'; + case STRIP_COLOR: + return 'c'; + case BLOCK_NICKCHANGE: + return 'd'; + case ALLOW_INVITE: + return 'g'; + case ONLY_INVITE: + return 'i'; + case JOIN_THROTTLE: + return 'j'; + case PASSWORD: + return 'k'; + case LIMIT: + return 'l'; + case MODERATED: + return 'm'; + case BLOCK_EXTERNAL: + return 'n'; + case PARANOID: + return 'p'; + case BLOCK_UNIDENTIFIED: + return 'r'; + case UNLISTED: + return 's'; + case RESTRICT_TOPIC: + return 't'; + case REDUCED_MODERATION: + return 'z'; case BAN: return 'b'; 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 e33255f68..92bc806c7 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 @@ -66,30 +66,54 @@ public class SolidIrcModeProvider extends AbstractIrcModeProvider { @Override public ChanMode modeFromChar(char mode) { switch (mode) { - case 'B': return BLOCK_CAPS; - case 'C': return BLOCK_CTCP; - case 'G': return CENSOR; - case 'K': return BLOCK_KNOCK; - case 'M': return QUIET_UNIDENTIFIED; - case 'N': return BLOCK_NICKCHANGE; - case 'P': return PERMANENT; - case 'Q': return BLOCK_KICK; - case 'R': return BLOCK_UNIDENTIFIED; - case 'S': return STRIP_COLOR; - case 'T': return BLOCK_NOTICE; - case 'V': return DISABLE_INVITE; - case 'c': return BLOCK_COLOR; - case 'f': return ANTIFLOOD; - case 'i': return ONLY_INVITE; - case 'k': return PASSWORD; - case 'l': return LIMIT; - case 'm': return MODERATED; - case 'n': return BLOCK_EXTERNAL; - case 'p': return PARANOID; - case 's': return UNLISTED; - case 't': return RESTRICT_TOPIC; - case 'u': return AUDITORIUM; - case 'z': return ONLY_SSL; + case 'B': + return BLOCK_CAPS; + case 'C': + return BLOCK_CTCP; + case 'G': + return CENSOR; + case 'K': + return BLOCK_KNOCK; + case 'M': + return QUIET_UNIDENTIFIED; + case 'N': + return BLOCK_NICKCHANGE; + case 'P': + return PERMANENT; + case 'Q': + return BLOCK_KICK; + case 'R': + return BLOCK_UNIDENTIFIED; + case 'S': + return STRIP_COLOR; + case 'T': + return BLOCK_NOTICE; + case 'V': + return DISABLE_INVITE; + case 'c': + return BLOCK_COLOR; + case 'f': + return ANTIFLOOD; + case 'i': + return ONLY_INVITE; + case 'k': + return PASSWORD; + case 'l': + return LIMIT; + case 'm': + return MODERATED; + case 'n': + return BLOCK_EXTERNAL; + case 'p': + return PARANOID; + case 's': + return UNLISTED; + case 't': + return RESTRICT_TOPIC; + case 'u': + return AUDITORIUM; + case 'z': + return ONLY_SSL; case 'b': return BAN; @@ -104,30 +128,54 @@ public class SolidIrcModeProvider extends AbstractIrcModeProvider { @Override public char charFromMode(ChanMode mode) { switch (mode) { - case BLOCK_CAPS: return 'B'; - case BLOCK_CTCP: return 'C'; - case CENSOR: return 'G'; - case BLOCK_KNOCK: return 'K'; - case QUIET_UNIDENTIFIED: return 'M'; - case BLOCK_NICKCHANGE: return 'N'; - case PERMANENT: return 'P'; - case BLOCK_KICK: return 'Q'; - case BLOCK_UNIDENTIFIED: return 'R'; - case STRIP_COLOR: return 'S'; - case BLOCK_NOTICE: return 'T'; - case DISABLE_INVITE: return 'V'; - case BLOCK_COLOR: return 'c'; - case ANTIFLOOD: return 'f'; - case ONLY_INVITE: return 'i'; - case PASSWORD: return 'k'; - case LIMIT: return 'l'; - case MODERATED: return 'm'; - case BLOCK_EXTERNAL: return 'n'; - case PARANOID: return 'p'; - case UNLISTED: return 's'; - case RESTRICT_TOPIC: return 't'; - case AUDITORIUM: return 'u'; - case ONLY_SSL: return 'z'; + case BLOCK_CAPS: + return 'B'; + case BLOCK_CTCP: + return 'C'; + case CENSOR: + return 'G'; + case BLOCK_KNOCK: + return 'K'; + case QUIET_UNIDENTIFIED: + return 'M'; + case BLOCK_NICKCHANGE: + return 'N'; + case PERMANENT: + return 'P'; + case BLOCK_KICK: + return 'Q'; + case BLOCK_UNIDENTIFIED: + return 'R'; + case STRIP_COLOR: + return 'S'; + case BLOCK_NOTICE: + return 'T'; + case DISABLE_INVITE: + return 'V'; + case BLOCK_COLOR: + return 'c'; + case ANTIFLOOD: + return 'f'; + case ONLY_INVITE: + return 'i'; + case PASSWORD: + return 'k'; + case LIMIT: + return 'l'; + case MODERATED: + return 'm'; + case BLOCK_EXTERNAL: + return 'n'; + case PARANOID: + return 'p'; + case UNLISTED: + return 's'; + case RESTRICT_TOPIC: + return 't'; + case AUDITORIUM: + return 'u'; + case ONLY_SSL: + return 'z'; case BAN: return 'b'; 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 0dca5c0a6..3f378790a 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 @@ -55,14 +55,22 @@ public class UndernetIrcModeProvider extends AbstractIrcModeProvider { @Override public ChanMode modeFromChar(char mode) { switch (mode) { - case 'i': return ONLY_INVITE; - case 'k': return PASSWORD; - case 'l': return LIMIT; - case 'm': return MODERATED; - case 'n': return BLOCK_EXTERNAL; - case 'p': return PARANOID; - case 's': return UNLISTED; - case 't': return RESTRICT_TOPIC; + case 'i': + return ONLY_INVITE; + case 'k': + return PASSWORD; + case 'l': + return LIMIT; + case 'm': + return MODERATED; + case 'n': + return BLOCK_EXTERNAL; + case 'p': + return PARANOID; + case 's': + return UNLISTED; + case 't': + return RESTRICT_TOPIC; case 'b': return BAN; @@ -77,14 +85,22 @@ public class UndernetIrcModeProvider extends AbstractIrcModeProvider { @Override public char charFromMode(ChanMode mode) { switch (mode) { - case ONLY_INVITE: return 'i'; - case PASSWORD: return 'k'; - case LIMIT: return 'l'; - case MODERATED: return 'm'; - case BLOCK_EXTERNAL: return 'n'; - case PARANOID: return 'p'; - case UNLISTED: return 's'; - case RESTRICT_TOPIC: return 't'; + case ONLY_INVITE: + return 'i'; + case PASSWORD: + return 'k'; + case LIMIT: + return 'l'; + case MODERATED: + return 'm'; + case BLOCK_EXTERNAL: + return 'n'; + case PARANOID: + return 'p'; + case UNLISTED: + return 's'; + case RESTRICT_TOPIC: + return 't'; case BAN: return 'b'; 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 deffc9a8e..184716b97 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 @@ -68,32 +68,58 @@ public class UnrealIrcModeProvider extends AbstractIrcModeProvider { @Override public ChanMode modeFromChar(char mode) { switch (mode) { - case 'C': return BLOCK_CTCP; - case 'F': return FORWARD; - case 'G': return CENSOR; - case 'K': return BLOCK_KNOCK; - case 'M': return QUIET_UNIDENTIFIED; - case 'N': return BLOCK_NICKCHANGE; - case 'O': return ONLY_OPER; - case 'P': return PERMANENT; - case 'Q': return BLOCK_KICK; - case 'R': return BLOCK_UNIDENTIFIED; - case 'S': return STRIP_COLOR; - case 'T': return BLOCK_NOTICE; - case 'V': return DISABLE_INVITE; - case 'Z': return IS_SECURE; - case 'c': return BLOCK_COLOR; - case 'f': return ANTIFLOOD; - case 'i': return ONLY_INVITE; - case 'k': return PASSWORD; - case 'l': return LIMIT; - case 'm': return MODERATED; - case 'n': return BLOCK_EXTERNAL; - case 'p': return PARANOID; - case 'r': return REGISTERED; - case 's': return UNLISTED; - case 't': return RESTRICT_TOPIC; - case 'z': return ONLY_SSL; + case 'C': + return BLOCK_CTCP; + case 'F': + return FORWARD; + case 'G': + return CENSOR; + case 'K': + return BLOCK_KNOCK; + case 'M': + return QUIET_UNIDENTIFIED; + case 'N': + return BLOCK_NICKCHANGE; + case 'O': + return ONLY_OPER; + case 'P': + return PERMANENT; + case 'Q': + return BLOCK_KICK; + case 'R': + return BLOCK_UNIDENTIFIED; + case 'S': + return STRIP_COLOR; + case 'T': + return BLOCK_NOTICE; + case 'V': + return DISABLE_INVITE; + case 'Z': + return IS_SECURE; + case 'c': + return BLOCK_COLOR; + case 'f': + return ANTIFLOOD; + case 'i': + return ONLY_INVITE; + case 'k': + return PASSWORD; + case 'l': + return LIMIT; + case 'm': + return MODERATED; + case 'n': + return BLOCK_EXTERNAL; + case 'p': + return PARANOID; + case 'r': + return REGISTERED; + case 's': + return UNLISTED; + case 't': + return RESTRICT_TOPIC; + case 'z': + return ONLY_SSL; case 'b': return BAN; @@ -108,32 +134,58 @@ public class UnrealIrcModeProvider extends AbstractIrcModeProvider { @Override public char charFromMode(ChanMode mode) { switch (mode) { - case BLOCK_CTCP: return 'C'; - case FORWARD: return 'F'; - case CENSOR: return 'G'; - case BLOCK_KNOCK: return 'K'; - case QUIET_UNIDENTIFIED: return 'M'; - case BLOCK_NICKCHANGE: return 'N'; - case ONLY_OPER: return 'O'; - case PERMANENT: return 'P'; - case BLOCK_KICK: return 'Q'; - case BLOCK_UNIDENTIFIED: return 'R'; - case STRIP_COLOR: return 'S'; - case BLOCK_NOTICE: return 'T'; - case DISABLE_INVITE: return 'V'; - case IS_SECURE: return 'Z'; - case BLOCK_COLOR: return 'c'; - case ANTIFLOOD: return 'f'; - case ONLY_INVITE: return 'i'; - case PASSWORD: return 'k'; - case LIMIT: return 'l'; - case MODERATED: return 'm'; - case BLOCK_EXTERNAL: return 'n'; - case PARANOID: return 'p'; - case REGISTERED: return 'r'; - case UNLISTED: return 's'; - case RESTRICT_TOPIC: return 't'; - case ONLY_SSL: return 'z'; + case BLOCK_CTCP: + return 'C'; + case FORWARD: + return 'F'; + case CENSOR: + return 'G'; + case BLOCK_KNOCK: + return 'K'; + case QUIET_UNIDENTIFIED: + return 'M'; + case BLOCK_NICKCHANGE: + return 'N'; + case ONLY_OPER: + return 'O'; + case PERMANENT: + return 'P'; + case BLOCK_KICK: + return 'Q'; + case BLOCK_UNIDENTIFIED: + return 'R'; + case STRIP_COLOR: + return 'S'; + case BLOCK_NOTICE: + return 'T'; + case DISABLE_INVITE: + return 'V'; + case IS_SECURE: + return 'Z'; + case BLOCK_COLOR: + return 'c'; + case ANTIFLOOD: + return 'f'; + case ONLY_INVITE: + return 'i'; + case PASSWORD: + return 'k'; + case LIMIT: + return 'l'; + case MODERATED: + return 'm'; + case BLOCK_EXTERNAL: + return 'n'; + case PARANOID: + return 'p'; + case REGISTERED: + return 'r'; + case UNLISTED: + return 's'; + case RESTRICT_TOPIC: + return 't'; + case ONLY_SSL: + return 'z'; case BAN: return 'b'; 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 dd1f64cb9..970ad4030 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,7 @@ public class IrcFormatHelper { SpannableString str = new SpannableString(context.deserializer().formatString(text)); Matcher urlMatcher = urlPattern.matcher(str); while (urlMatcher.find()) { - spans.add(new FutureClickableSpan(new CustomURLSpan(urlMatcher.group(1)), urlMatcher.start(), urlMatcher.start()+urlMatcher.group(1).length())); + spans.add(new FutureClickableSpan(new CustomURLSpan(urlMatcher.group(1)), urlMatcher.start(), urlMatcher.start() + urlMatcher.group(1).length())); } Matcher channelMatcher = channelPattern.matcher(str); while (channelMatcher.find()) { diff --git a/app/src/main/java/de/kuschku/util/regex/SmartRegEx.java b/app/src/main/java/de/kuschku/util/regex/SmartRegEx.java index 82b326f5e..21a79ba11 100644 --- a/app/src/main/java/de/kuschku/util/regex/SmartRegEx.java +++ b/app/src/main/java/de/kuschku/util/regex/SmartRegEx.java @@ -66,13 +66,13 @@ public class SmartRegEx { return Pattern.compile(GlobTransformer.convertGlobToRegex(glob), flags); } - public enum Syntax { - WILDCARD, - REGEX - } - @Override public String toString() { return rule; } + + public enum Syntax { + WILDCARD, + REGEX + } } diff --git a/app/src/main/java/de/kuschku/util/servicebound/BoundActivity.java b/app/src/main/java/de/kuschku/util/servicebound/BoundActivity.java index c39787416..3729fca09 100644 --- a/app/src/main/java/de/kuschku/util/servicebound/BoundActivity.java +++ b/app/src/main/java/de/kuschku/util/servicebound/BoundActivity.java @@ -39,9 +39,9 @@ import de.kuschku.util.accounts.Account; public abstract class BoundActivity extends AppCompatActivity { protected AppContext context = new AppContext(); + protected QuasselService.LocalBinder binder; @StyleRes private int themeId; - protected QuasselService.LocalBinder binder; private ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { diff --git a/app/src/main/res/layout-w720dp/activity_main.xml b/app/src/main/res/layout-w720dp/activity_main.xml index ed2eaaafb..e12fab005 100644 --- a/app/src/main/res/layout-w720dp/activity_main.xml +++ b/app/src/main/res/layout-w720dp/activity_main.xml @@ -35,33 +35,45 @@ android:layout_height="match_parent" android:orientation="vertical"> - <android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" + <FrameLayout android:layout_width="match_parent" - android:layout_height="wrap_content" - android:theme="?attr/actionBarTheme"> + android:layout_height="wrap_content"> - <android.support.v7.widget.Toolbar - android:id="@+id/chatListToolbar" + <android.support.design.widget.AppBarLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" - android:layout_height="?attr/actionBarSize" - android:background="?attr/colorPrimary" - app:popupTheme="@style/AppTheme.PopupOverlay"> + android:layout_height="wrap_content" + android:theme="?attr/actionBarTheme"> + + <android.support.v7.widget.Toolbar + android:id="@+id/chatListToolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorPrimary" + app:popupTheme="@style/AppTheme.PopupOverlay"> + + <android.support.v7.widget.AppCompatSpinner + android:id="@+id/chatListSpinner" + android:layout_width="fill_parent" + android:layout_height="match_parent" + app:popupTheme="@style/AppTheme.PopupOverlay"/> - <android.support.v7.widget.AppCompatSpinner - android:id="@+id/chatListSpinner" - android:layout_width="fill_parent" - android:layout_height="match_parent" - app:popupTheme="@style/AppTheme.PopupOverlay" /> + </android.support.v7.widget.Toolbar> - </android.support.v7.widget.Toolbar> + </android.support.design.widget.AppBarLayout> + + <ViewStub + android:id="@+id/cab_stub" + android:layout_width="match_parent" + android:layout_height="?actionBarSize"/> - </android.support.design.widget.AppBarLayout> + </FrameLayout> <android.support.v7.widget.RecyclerView android:id="@+id/chatList" android:layout_width="match_parent" - android:layout_height="match_parent" /> + android:layout_height="match_parent"/> </LinearLayout> @@ -70,12 +82,12 @@ android:layout_height="match_parent" android:orientation="vertical"> - <include layout="@layout/widget_actionbar" /> + <include layout="@layout/widget_actionbar"/> <FrameLayout android:id="@+id/content_host" android:layout_width="match_parent" - android:layout_height="match_parent" /> + android:layout_height="match_parent"/> </LinearLayout> diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 00183c8bf..bab2182d4 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -21,25 +21,25 @@ --> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:id="@+id/drawer_layout" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="?attr/colorBackground" - tools:context=".ui.chat.MainActivity"> + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/drawer_layout" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="?attr/colorBackground" + tools:context=".ui.chat.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> - <include layout="@layout/widget_actionbar" /> + <include layout="@layout/widget_actionbar"/> <FrameLayout android:id="@+id/content_host" android:layout_width="match_parent" - android:layout_height="match_parent" /> + android:layout_height="match_parent"/> </LinearLayout> @@ -54,35 +54,47 @@ android:layout_height="match_parent" android:orientation="vertical"> - <android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" + <FrameLayout android:layout_width="match_parent" - android:layout_height="wrap_content" - android:theme="?attr/actionBarTheme"> + android:layout_height="wrap_content"> - <android.support.v7.widget.Toolbar - android:id="@+id/chatListToolbar" + <android.support.design.widget.AppBarLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" - android:layout_height="?attr/actionBarSize" - android:background="?attr/colorPrimary" - android:theme="?attr/actionBarTheme" - app:popupTheme="@style/AppTheme.PopupOverlay"> - - <android.support.v7.widget.AppCompatSpinner - android:id="@+id/chatListSpinner" - android:layout_width="fill_parent" - android:layout_height="match_parent" + android:layout_height="wrap_content" + android:theme="?attr/actionBarTheme"> + + <android.support.v7.widget.Toolbar + android:id="@+id/chatListToolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorPrimary" android:theme="?attr/actionBarTheme" - app:popupTheme="@style/AppTheme.PopupOverlay" /> + app:popupTheme="@style/AppTheme.PopupOverlay"> - </android.support.v7.widget.Toolbar> + <android.support.v7.widget.AppCompatSpinner + android:id="@+id/chatListSpinner" + android:layout_width="fill_parent" + android:layout_height="match_parent" + android:theme="?attr/actionBarTheme" + app:popupTheme="@style/AppTheme.PopupOverlay"/> - </android.support.design.widget.AppBarLayout> + </android.support.v7.widget.Toolbar> + + </android.support.design.widget.AppBarLayout> + + <ViewStub + android:id="@+id/cab_stub" + android:layout_width="match_parent" + android:layout_height="?actionBarSize"/> + + </FrameLayout> <android.support.v7.widget.RecyclerView android:id="@+id/chatList" android:layout_width="match_parent" - android:layout_height="match_parent" /> + android:layout_height="match_parent"/> </LinearLayout> diff --git a/app/src/main/res/menu/context_buffer_network.xml b/app/src/main/res/menu/context_buffer_network.xml new file mode 100644 index 000000000..5f46ee365 --- /dev/null +++ b/app/src/main/res/menu/context_buffer_network.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ QuasselDroid - Quassel client for Android + ~ Copyright (C) 2016 Janne Koschinski + ~ Copyright (C) 2016 Ken Børge Viktil + ~ Copyright (C) 2016 Magnus Fjell + ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org> + ~ + ~ This program is free software: you can redistribute it and/or modify it + ~ under the terms of the GNU General Public License as published by the Free + ~ Software Foundation, either version 3 of the License, or (at your option) + ~ any later version. + ~ + ~ This program is distributed in the hope that it will be useful, + ~ but WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ~ GNU General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License along + ~ with this program. If not, see <http://www.gnu.org/licenses/>. + --> + +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <group + android:id="@+id/context_group_network"> + <item + android:id="@+id/context_menu_connect" + android:title="@string/action_connect"/> + <item + android:id="@+id/context_menu_disconnect" + android:title="@string/action_disconnect"/> + </group> + <group + android:id="@+id/context_group_buffer"> + <item + android:id="@+id/context_menu_join" + android:title="@string/action_join"/> + <item + android:id="@+id/context_menu_part" + android:title="@string/action_part"/> + <item + android:id="@+id/context_menu_delete" + android:title="@string/action_delete"/> + <item + android:id="@+id/context_menu_unhide" + android:title="@string/action_unhide"/> + <item + android:id="@+id/context_menu_hide_temp" + android:title="@string/action_hide_temp"/> + <item + android:id="@+id/context_menu_hide_perm" + android:title="@string/action_hide_perm"/> + </group> +</menu> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ea87b3df1..f7778fbf8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -87,4 +87,18 @@ <string name="action_manage_chat_lists">Manage Chat Lists</string> <string name="action_show_hidden">Show Hidden</string> <string name="action_join_channel">Join Channel</string> + + <string name="action_connect">Connect</string> + <string name="action_disconnect">Disconnect</string> + + <string name="action_join">Join</string> + <string name="action_part">Part</string> + <string name="action_delete">Delete</string> + + <string name="action_hidden_display">Show hidden Buffers</string> + <string name="action_hidden_hide">Hide hidden Buffers</string> + + <string name="action_unhide">Make Visible</string> + <string name="action_hide_temp">Hide Temporarily</string> + <string name="action_hide_perm">Hide Permanently</string> </resources> -- GitLab