diff --git a/app/src/main/java/de/kuschku/libquassel/CoreConnection.java b/app/src/main/java/de/kuschku/libquassel/CoreConnection.java index 8d1967cfe0fa68a5c303bd6c4a0b073ff00962b9..291e2a4d91e66f02b23728e60e682e105e5dee67 100644 --- a/app/src/main/java/de/kuschku/libquassel/CoreConnection.java +++ b/app/src/main/java/de/kuschku/libquassel/CoreConnection.java @@ -37,8 +37,8 @@ import java.util.Locale; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.client.ClientData; -import de.kuschku.libquassel.client.QClient; import de.kuschku.libquassel.events.ConnectionChangeEvent; import de.kuschku.libquassel.events.GeneralErrorEvent; import de.kuschku.libquassel.events.HandshakeFailedEvent; @@ -75,7 +75,7 @@ public class CoreConnection { @NonNull private final BusProvider busProvider; @NonNull - private final QClient client; + private final Client client; @NonNull private final CertificateManager certificateManager; @Nullable @@ -96,7 +96,7 @@ public class CoreConnection { public CoreConnection(@NonNull final ServerAddress address, @NonNull final ClientData clientData, @NonNull final BusProvider busProvider, - @NonNull final QClient client, + @NonNull final Client client, @NonNull CertificateManager certificateManager) { this.address = address; this.clientData = clientData; diff --git a/app/src/main/java/de/kuschku/libquassel/IProtocolHandler.java b/app/src/main/java/de/kuschku/libquassel/IProtocolHandler.java index af97caddf30598f5f7bd9077dab25969063545bd..fdf74804bddf5c5fbf5108656f1b73b6c99c2987 100644 --- a/app/src/main/java/de/kuschku/libquassel/IProtocolHandler.java +++ b/app/src/main/java/de/kuschku/libquassel/IProtocolHandler.java @@ -23,7 +23,7 @@ package de.kuschku.libquassel; import android.support.annotation.NonNull; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.functions.types.Heartbeat; import de.kuschku.libquassel.functions.types.HeartbeatReply; import de.kuschku.libquassel.functions.types.InitDataFunction; @@ -60,5 +60,5 @@ public interface IProtocolHandler { void onEventMainThread(HeartbeatReply message); @NonNull - QClient getClient(); + Client getClient(); } diff --git a/app/src/main/java/de/kuschku/libquassel/ProtocolHandler.java b/app/src/main/java/de/kuschku/libquassel/ProtocolHandler.java index 2bb87f1c9c87c1dff0331f8edcbebb590407d7df..d626b07bd26459997e2d67d296b2a3bba39d95be 100644 --- a/app/src/main/java/de/kuschku/libquassel/ProtocolHandler.java +++ b/app/src/main/java/de/kuschku/libquassel/ProtocolHandler.java @@ -26,7 +26,7 @@ import android.support.annotation.NonNull; import org.joda.time.DateTime; import org.joda.time.Interval; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.events.ConnectionChangeEvent; import de.kuschku.libquassel.events.CoreSetupRequiredEvent; import de.kuschku.libquassel.events.GeneralErrorEvent; @@ -51,11 +51,11 @@ import static de.kuschku.util.AndroidAssert.assertNotNull; public class ProtocolHandler implements IProtocolHandler { @NonNull - public final QClient client; + public final Client client; @NonNull private final BusProvider busProvider; - public ProtocolHandler(@NonNull BusProvider busProvider, @NonNull QClient client) { + public ProtocolHandler(@NonNull BusProvider busProvider, @NonNull Client client) { this.busProvider = busProvider; this.busProvider.handle.register(this); this.busProvider.event.register(this); @@ -157,7 +157,7 @@ public class ProtocolHandler implements IProtocolHandler { @NonNull @Override - public QClient getClient() { + public Client getClient() { return client; } } diff --git a/app/src/main/java/de/kuschku/libquassel/QuasselClient.java b/app/src/main/java/de/kuschku/libquassel/QuasselClient.java index c030f65889a67fa77a2deb6069c6bb2ebc3098c2..31be8d48ae9c5fc2365da6be8fb293bc5bda09ea 100644 --- a/app/src/main/java/de/kuschku/libquassel/QuasselClient.java +++ b/app/src/main/java/de/kuschku/libquassel/QuasselClient.java @@ -23,8 +23,8 @@ package de.kuschku.libquassel; import android.support.annotation.NonNull; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.client.ClientData; -import de.kuschku.libquassel.client.QClient; import de.kuschku.libquassel.localtypes.backlogstorage.BacklogStorage; import de.kuschku.libquassel.ssl.CertificateManager; import de.kuschku.util.ServerAddress; @@ -37,7 +37,7 @@ public class QuasselClient { @NonNull public final ProtocolHandler handler; @NonNull - public final QClient client; + public final Client client; @NonNull public final CertificateManager certificateManager; @NonNull @@ -53,7 +53,7 @@ public class QuasselClient { this.provider = provider; this.data = data; this.certificateManager = certificateManager; - this.client = new QClient(provider, backlogStorage); + this.client = new Client(provider, backlogStorage); this.handler = new ProtocolHandler(provider, this.client); } diff --git a/app/src/main/java/de/kuschku/libquassel/client/AClient.java b/app/src/main/java/de/kuschku/libquassel/client/AClient.java index 5775c77aec4d0b13956468b208abd82d4769901b..92cc32996ee15fd16378f9949b6ba514b9f74c79 100644 --- a/app/src/main/java/de/kuschku/libquassel/client/AClient.java +++ b/app/src/main/java/de/kuschku/libquassel/client/AClient.java @@ -39,10 +39,10 @@ import de.kuschku.libquassel.syncables.types.interfaces.QIdentity; import static de.kuschku.util.AndroidAssert.fail; import static junit.framework.Assert.assertNotNull; -public abstract class AClient<T extends AClient<T>> extends SyncableObject<T> implements QClientInterface { +public abstract class AClient<T extends AClient<T>> extends SyncableObject<T> implements QClient { @Override public void sendInput(BufferInfo info, String message) { - smartRpc("sendInput(BufferInfo, QString)", info, message); + smartRpc("sendInput(BufferInfo,QString)", info, message); } @Override @@ -82,7 +82,7 @@ public abstract class AClient<T extends AClient<T>> extends SyncableObject<T> im @Override public void removeNetwork(int id) { - smartRpc("2removeNetwork(NetworkId)", id); + smartRpc("removeNetwork(NetworkId)", id); } @Override diff --git a/app/src/main/java/de/kuschku/libquassel/client/QBufferManager.java b/app/src/main/java/de/kuschku/libquassel/client/BufferManager.java similarity index 97% rename from app/src/main/java/de/kuschku/libquassel/client/QBufferManager.java rename to app/src/main/java/de/kuschku/libquassel/client/BufferManager.java index 9a8c9a9ec35fc2b874351a5b493e124a17908240..f415a1edaaf7fc76bb0c489fb6d9077848d48f0b 100644 --- a/app/src/main/java/de/kuschku/libquassel/client/QBufferManager.java +++ b/app/src/main/java/de/kuschku/libquassel/client/BufferManager.java @@ -41,16 +41,16 @@ import de.kuschku.libquassel.syncables.types.interfaces.QNetwork; import static de.kuschku.util.AndroidAssert.assertNotNull; -public class QBufferManager { +public class BufferManager { @NonNull private final Map<Integer, Buffer> buffers = new HashMap<>(); - private final QClient client; + private final Client client; // We cache those, because the networks might not be initialized at begin @NonNull private Map<String, Set<BufferInfo>> bufferInfos = new HashMap<>(); - public QBufferManager(QClient client) { + public BufferManager(Client client) { this.client = client; } diff --git a/app/src/main/java/de/kuschku/libquassel/client/Client.java b/app/src/main/java/de/kuschku/libquassel/client/Client.java new file mode 100644 index 0000000000000000000000000000000000000000..a94de792c009797f6d3f543073490696252599ce --- /dev/null +++ b/app/src/main/java/de/kuschku/libquassel/client/Client.java @@ -0,0 +1,444 @@ +/* + * 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.client; + +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.util.Log; + +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import de.kuschku.libquassel.BusProvider; +import de.kuschku.libquassel.events.ConnectionChangeEvent; +import de.kuschku.libquassel.events.CriticalErrorEvent; +import de.kuschku.libquassel.events.LagChangedEvent; +import de.kuschku.libquassel.events.PasswordChangeEvent; +import de.kuschku.libquassel.events.StatusMessageEvent; +import de.kuschku.libquassel.functions.types.InitRequestFunction; +import de.kuschku.libquassel.functions.types.SyncFunction; +import de.kuschku.libquassel.localtypes.NotificationManager; +import de.kuschku.libquassel.localtypes.backlogstorage.BacklogStorage; +import de.kuschku.libquassel.message.Message; +import de.kuschku.libquassel.objects.types.CoreStatus; +import de.kuschku.libquassel.objects.types.SessionState; +import de.kuschku.libquassel.primitives.QMetaTypeRegistry; +import de.kuschku.libquassel.primitives.types.BufferInfo; +import de.kuschku.libquassel.syncables.types.SyncableObject; +import de.kuschku.libquassel.syncables.types.impl.AliasManager; +import de.kuschku.libquassel.syncables.types.impl.BacklogManager; +import de.kuschku.libquassel.syncables.types.impl.BufferSyncer; +import de.kuschku.libquassel.syncables.types.impl.BufferViewManager; +import de.kuschku.libquassel.syncables.types.impl.CoreInfo; +import de.kuschku.libquassel.syncables.types.impl.Identity; +import de.kuschku.libquassel.syncables.types.impl.IgnoreListManager; +import de.kuschku.libquassel.syncables.types.impl.NetworkConfig; +import de.kuschku.libquassel.syncables.types.interfaces.QAliasManager; +import de.kuschku.libquassel.syncables.types.interfaces.QBacklogManager; +import de.kuschku.libquassel.syncables.types.interfaces.QBufferSyncer; +import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewManager; +import de.kuschku.libquassel.syncables.types.interfaces.QIgnoreListManager; +import de.kuschku.libquassel.syncables.types.interfaces.QNetwork; +import de.kuschku.libquassel.syncables.types.interfaces.QNetworkConfig; + +import static de.kuschku.util.AndroidAssert.assertNotNull; + +public class Client extends AClient { + +// synced + + @NonNull + private final NetworkManager networkManager; + @NonNull + private final BufferManager bufferManager; + @NonNull + private final IdentityManager identityManager; + @NonNull + private final BacklogStorage backlogStorage; + @NonNull + private final NotificationManager notificationManager; + private final List<String> initRequests = new LinkedList<>(); + private final List<Integer> backlogRequests = new LinkedList<>(); + private final Map<String, List<SyncFunction>> bufferedSyncs = new HashMap<>(); + private final QBacklogManager backlogManager; + private QBufferViewManager bufferViewManager; + // local + private QBufferSyncer bufferSyncer; + private QAliasManager aliasManager; + private QIgnoreListManager ignoreListManager; + private QNetworkConfig globalNetworkConfig; + private CoreStatus core; + private CoreInfo coreInfo; + private long latency; + private ConnectionChangeEvent.Status connectionStatus; + + public Client(@NonNull BusProvider provider, @NonNull BacklogStorage backlogStorage) { + this.provider = provider; + this.networkManager = new NetworkManager(this); + this.bufferManager = new BufferManager(this); + this.identityManager = new IdentityManager(this); + this.backlogStorage = backlogStorage; + backlogStorage.setClient(this); + this.backlogManager = new BacklogManager(this, backlogStorage); + this.notificationManager = new NotificationManager(this); + } + + public QBufferViewManager bufferViewManager() { + return bufferViewManager; + } + + public QBufferSyncer bufferSyncer() { + return bufferSyncer; + } + + public QAliasManager aliasManager() { + return aliasManager; + } + + public QBacklogManager backlogManager() { + return backlogManager; + } + + public QIgnoreListManager ignoreListManager() { + return ignoreListManager; + } + + public QNetworkConfig globalNetworkConfig() { + return globalNetworkConfig; + } + + @Override + public void _displayMsg(Message msg) { + backlogStorage.insertMessages(msg); + } + + @Override + public void _displayStatusMsg(String network, String message) { + assertNotNull(provider); + + provider.sendEvent(new StatusMessageEvent(network, message)); + } + + @Override + public void _bufferInfoUpdated(BufferInfo bufferInfo) { + bufferManager.updateBufferInfo(bufferInfo); + } + + @Override + public void _identityCreated(Identity identity) { + identityManager.createIdentity(identity); + } + + @Override + public void _identityRemoved(int id) { + identityManager.removeIdentity(id); + } + + @Override + public void _networkCreated(int network) { + networkManager.createNetwork(network); + } + + @Override + public void _networkRemoved(int network) { + networkManager.removeNetwork(network); + } + + @Override + public void _passwordChanged(long peerPtr, boolean success) { + assertNotNull(provider); + + if (peerPtr != 0x0000000000000000L) + provider.sendEvent(new CriticalErrorEvent("Your core has a critical vulnerability. Please update it.")); + provider.sendEvent(new PasswordChangeEvent(success)); + } + + @Override + public void ___objectRenamed__(String type, String oldName, String newName) { + + } + + public ConnectionChangeEvent.Status connectionStatus() { + return connectionStatus; + } + + public void setConnectionStatus(@NonNull ConnectionChangeEvent.Status connectionStatus) { + assertNotNull(provider); + + this.connectionStatus = connectionStatus; + if (connectionStatus == ConnectionChangeEvent.Status.LOADING_BACKLOG) { + setConnectionStatus(ConnectionChangeEvent.Status.CONNECTED); + } + provider.sendEvent(new ConnectionChangeEvent(connectionStatus)); + } + + @Nullable + public Object unsafe_getObjectByIdentifier(@NonNull String className, @NonNull String objectName) { + switch (className) { + case "AliasManager": { + assertNotNull(aliasManager); + return aliasManager; + } + case "BacklogManager": { + assertNotNull(backlogManager); + return backlogManager; + } + case "BufferSyncer": { + assertNotNull(bufferSyncer); + return bufferSyncer; + } + case "BufferViewConfig": { + assertNotNull(bufferViewManager); + return bufferViewManager.bufferViewConfig(Integer.parseInt(objectName)); + } + case "BufferViewManager": { + assertNotNull(bufferViewManager); + return bufferViewManager; + } + case "CoreInfo": { + assertNotNull(coreInfo); + return coreInfo; + } + case "Identity": { + return identityManager.identity(Integer.parseInt(objectName)); + } + case "IgnoreListManager": { + assertNotNull(ignoreListManager); + return ignoreListManager; + } + case "IrcChannel": { + String[] split = objectName.split("/"); + if (split.length != 2) { + Log.w("libquassel", "malformatted object name: " + objectName); + return null; + } + QNetwork network = networkManager.network(Integer.parseInt(split[0])); + if (network == null) { + Log.w("libquassel", "Network doesn’t exist yet: " + objectName); + return null; + } + return network.ircChannel(split[1]); + } + case "IrcUser": { + String[] split = objectName.split("/"); + if (split.length != 2) { + Log.w("libquassel", "malformatted object name: " + objectName); + return null; + } + QNetwork network = networkManager.network(Integer.parseInt(split[0])); + if (network == null) { + Log.w("libquassel", "Network doesn’t exist yet: " + objectName); + return null; + } + return network.ircUser(split[1]); + } + case "Network": { + return networkManager.network(Integer.parseInt(objectName)); + } + case "NetworkConfig": { + assertNotNull(globalNetworkConfig); + return globalNetworkConfig; + } + case "NetworkInfo": { + QNetwork network = networkManager().network(Integer.parseInt(objectName)); + if (network == null) + return null; + else + return network.networkInfo(); + } + default: { + Log.w("libquassel", "Unknown type: " + className + " : " + objectName); + return null; + } + } + } + + @Nullable + public <T> T getObjectByIdentifier(@NonNull String className, @NonNull String objectName) { + Class<T> cl = QMetaTypeRegistry.<T>getType(className).cl; + return getObjectByIdentifier(cl, className, objectName); + } + + @Nullable + public <T> T getObjectByIdentifier(@NonNull Class<T> cl, @NonNull String objectName) { + return getObjectByIdentifier(cl, cl.getSimpleName(), objectName); + } + + @SuppressWarnings("unchecked") + @Nullable + public <T> T getObjectByIdentifier(@NonNull Class<T> cl, @NonNull String className, @NonNull String objectName) { + Object obj = unsafe_getObjectByIdentifier(className, objectName); + // The fancy version of "instanceof" that works with erased types, too + if (obj == null || !cl.isAssignableFrom(obj.getClass())) + return null; + else + return (T) obj; + } + + public void init(@NonNull SessionState sessionState) { + networkManager.init(sessionState.NetworkIds); + identityManager.init(sessionState.Identities); + bufferManager.init(sessionState.BufferInfos); + + requestInitObject("BufferSyncer", ""); + requestInitObject("BufferViewManager", ""); + requestInitObject("AliasManager", ""); + requestInitObject("NetworkConfig", "GlobalNetworkConfig"); + requestInitObject("IgnoreListManager", ""); + //sendInitRequest("TransferManager", ""); + // This thing never gets sent... + } + + @NonNull + public NetworkManager networkManager() { + return networkManager; + } + + @NonNull + public BufferManager bufferManager() { + return bufferManager; + } + + @NonNull + public IdentityManager identityManager() { + return identityManager; + } + + public void requestInitObject(@NonNull String className, String objectName) { + assertNotNull(provider); + + if (connectionStatus() == ConnectionChangeEvent.Status.INITIALIZING_DATA) + initRequests.add(hashName(className, objectName)); + + provider.dispatch(new InitRequestFunction(className, objectName)); + } + + public void initObject(String className, @NonNull String objectName, @NonNull SyncableObject object) { + assertNotNull(provider); + + if (connectionStatus() == ConnectionChangeEvent.Status.INITIALIZING_DATA) { + initRequests.remove(hashName(className, objectName)); + if (initRequests.isEmpty()) { + setConnectionStatus(ConnectionChangeEvent.Status.LOADING_BACKLOG); + } + } + + object.init(objectName, provider, this); + + // Execute cached sync requests + if (bufferedSyncs.size() > 0) { + String key = hashName(className, objectName); + if (bufferedSyncs.containsKey(key)) { + List<SyncFunction> functions = bufferedSyncs.get(key); + for (SyncFunction function : functions) + provider.handle(function); + bufferedSyncs.remove(key); + } + } + } + + @NonNull + private String hashName(String className, String objectName) { + return className + ":" + objectName; + } + + public void initBacklog(int id) { + backlogRequests.remove((Integer) id); + requestInitBacklog(id, 0); + if (backlogRequests.isEmpty()) + setConnectionStatus(ConnectionChangeEvent.Status.CONNECTED); + } + + public void requestInitBacklog(int id, int amount) { + backlogRequests.add(id); + backlogManager.requestBacklogInitial(id, amount); + } + + public void setLatency(long latency) { + assertNotNull(provider); + + this.latency = latency; + provider.sendEvent(new LagChangedEvent(latency)); + } + + public CoreInfo coreInfo() { + return coreInfo; + } + + public void setCoreInfo(CoreInfo coreInfo) { + this.coreInfo = coreInfo; + } + + public CoreStatus core() { + return core; + } + + public void setCore(CoreStatus core) { + this.core = core; + } + + public long latency() { + return latency; + } + + @NonNull + public NotificationManager notificationManager() { + return notificationManager; + } + + public void setBufferSyncer(BufferSyncer bufferSyncer) { + this.bufferSyncer = bufferSyncer; + } + + public void setBufferViewManager(BufferViewManager bufferViewManager) { + this.bufferViewManager = bufferViewManager; + } + + public void setAliasManager(AliasManager aliasManager) { + this.aliasManager = aliasManager; + } + + public void setIgnoreListManager(IgnoreListManager ignoreListManager) { + this.ignoreListManager = ignoreListManager; + } + + public void setGlobalNetworkConfig(NetworkConfig globalNetworkConfig) { + this.globalNetworkConfig = globalNetworkConfig; + } + + + @NonNull + public BacklogStorage backlogStorage() { + return backlogStorage; + } + + public void bufferSync(@NonNull SyncFunction packedFunc) { + String key = hashName(packedFunc.className, packedFunc.objectName); + if (connectionStatus() == ConnectionChangeEvent.Status.CONNECTED) + Log.d("libquassel", "Queueing sync: " + packedFunc); + if (!bufferedSyncs.containsKey(key)) + bufferedSyncs.put(key, new LinkedList<>()); + bufferedSyncs.get(key).add(packedFunc); + } +} diff --git a/app/src/main/java/de/kuschku/libquassel/client/QIdentityManager.java b/app/src/main/java/de/kuschku/libquassel/client/IdentityManager.java similarity index 94% rename from app/src/main/java/de/kuschku/libquassel/client/QIdentityManager.java rename to app/src/main/java/de/kuschku/libquassel/client/IdentityManager.java index 3dc1782d08c1e7457cf0b9a8284b93fa71920bf9..04d417aba54650ae9c76b991df32de08d683d11a 100644 --- a/app/src/main/java/de/kuschku/libquassel/client/QIdentityManager.java +++ b/app/src/main/java/de/kuschku/libquassel/client/IdentityManager.java @@ -30,12 +30,12 @@ import java.util.Map; import de.kuschku.libquassel.syncables.types.interfaces.QIdentity; -public class QIdentityManager { +public class IdentityManager { @NonNull private final Map<Integer, QIdentity> identities = new HashMap<>(); - private final QClient client; + private final Client client; - public QIdentityManager(QClient client) { + public IdentityManager(Client client) { this.client = client; } diff --git a/app/src/main/java/de/kuschku/libquassel/client/QNetworkManager.java b/app/src/main/java/de/kuschku/libquassel/client/NetworkManager.java similarity index 94% rename from app/src/main/java/de/kuschku/libquassel/client/QNetworkManager.java rename to app/src/main/java/de/kuschku/libquassel/client/NetworkManager.java index a6a87902230ff264198861a70a56aced6dc56a33..9757b4c527c5c5c3833033276dc7ab5a88cc6b11 100644 --- a/app/src/main/java/de/kuschku/libquassel/client/QNetworkManager.java +++ b/app/src/main/java/de/kuschku/libquassel/client/NetworkManager.java @@ -33,12 +33,12 @@ import java.util.Observable; import de.kuschku.libquassel.syncables.types.impl.Network; import de.kuschku.libquassel.syncables.types.interfaces.QNetwork; -public class QNetworkManager extends Observable { +public class NetworkManager extends Observable { @NonNull private final Map<Integer, QNetwork> networks = new HashMap<>(); - private final QClient client; + private final Client client; - public QNetworkManager(QClient client) { + public NetworkManager(Client client) { this.client = client; } diff --git a/app/src/main/java/de/kuschku/libquassel/client/QClient.java b/app/src/main/java/de/kuschku/libquassel/client/QClient.java index 801df36fc8f345660b878c7a4074424c84c15078..0da325b311115c43b4a76d2a546e02dbdce07bb5 100644 --- a/app/src/main/java/de/kuschku/libquassel/client/QClient.java +++ b/app/src/main/java/de/kuschku/libquassel/client/QClient.java @@ -21,424 +21,66 @@ package de.kuschku.libquassel.client; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.util.Log; - -import java.util.HashMap; -import java.util.LinkedList; import java.util.List; import java.util.Map; -import de.kuschku.libquassel.BusProvider; -import de.kuschku.libquassel.events.ConnectionChangeEvent; -import de.kuschku.libquassel.events.CriticalErrorEvent; -import de.kuschku.libquassel.events.LagChangedEvent; -import de.kuschku.libquassel.events.PasswordChangeEvent; -import de.kuschku.libquassel.events.StatusMessageEvent; -import de.kuschku.libquassel.functions.types.InitRequestFunction; -import de.kuschku.libquassel.functions.types.SyncFunction; -import de.kuschku.libquassel.localtypes.NotificationManager; -import de.kuschku.libquassel.localtypes.backlogstorage.BacklogStorage; import de.kuschku.libquassel.message.Message; -import de.kuschku.libquassel.objects.types.CoreStatus; -import de.kuschku.libquassel.objects.types.SessionState; -import de.kuschku.libquassel.primitives.QMetaTypeRegistry; +import de.kuschku.libquassel.objects.types.Command; import de.kuschku.libquassel.primitives.types.BufferInfo; -import de.kuschku.libquassel.syncables.types.SyncableObject; -import de.kuschku.libquassel.syncables.types.impl.AliasManager; -import de.kuschku.libquassel.syncables.types.impl.BacklogManager; -import de.kuschku.libquassel.syncables.types.impl.BufferSyncer; -import de.kuschku.libquassel.syncables.types.impl.BufferViewManager; -import de.kuschku.libquassel.syncables.types.impl.CoreInfo; +import de.kuschku.libquassel.primitives.types.QVariant; +import de.kuschku.libquassel.syncables.Synced; import de.kuschku.libquassel.syncables.types.impl.Identity; -import de.kuschku.libquassel.syncables.types.impl.IgnoreListManager; -import de.kuschku.libquassel.syncables.types.impl.NetworkConfig; -import de.kuschku.libquassel.syncables.types.interfaces.QAliasManager; -import de.kuschku.libquassel.syncables.types.interfaces.QBacklogManager; -import de.kuschku.libquassel.syncables.types.interfaces.QBufferSyncer; -import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewManager; -import de.kuschku.libquassel.syncables.types.interfaces.QIgnoreListManager; -import de.kuschku.libquassel.syncables.types.interfaces.QNetwork; -import de.kuschku.libquassel.syncables.types.interfaces.QNetworkConfig; - -import static de.kuschku.util.AndroidAssert.assertNotNull; - -public class QClient extends AClient { - -// synced - - @NonNull - private final QNetworkManager networkManager; - @NonNull - private final QBufferManager bufferManager; - @NonNull - private final QIdentityManager identityManager; - @NonNull - private final BacklogStorage backlogStorage; - @NonNull - private final NotificationManager notificationManager; - private final List<String> initRequests = new LinkedList<>(); - private final List<Integer> backlogRequests = new LinkedList<>(); - private final Map<String, List<SyncFunction>> bufferedSyncs = new HashMap<>(); - private final QBacklogManager backlogManager; - private QBufferViewManager bufferViewManager; - // local - private QBufferSyncer bufferSyncer; - private QAliasManager aliasManager; - private QIgnoreListManager ignoreListManager; - private QNetworkConfig globalNetworkConfig; - private CoreStatus core; - private CoreInfo coreInfo; - private long latency; - private ConnectionChangeEvent.Status connectionStatus; - - public QClient(@NonNull BusProvider provider, @NonNull BacklogStorage backlogStorage) { - this.provider = provider; - this.networkManager = new QNetworkManager(this); - this.bufferManager = new QBufferManager(this); - this.identityManager = new QIdentityManager(this); - this.backlogStorage = backlogStorage; - backlogStorage.setClient(this); - this.backlogManager = new BacklogManager(this, backlogStorage); - this.notificationManager = new NotificationManager(this); - } - - public QBufferViewManager bufferViewManager() { - return bufferViewManager; - } - - public QBufferSyncer bufferSyncer() { - return bufferSyncer; - } - - public QAliasManager aliasManager() { - return aliasManager; - } - - public QBacklogManager backlogManager() { - return backlogManager; - } - - public QIgnoreListManager ignoreListManager() { - return ignoreListManager; - } - - public QNetworkConfig globalNetworkConfig() { - return globalNetworkConfig; - } - - @Override - public void _displayMsg(Message msg) { - backlogStorage.insertMessages(msg); - } - - @Override - public void _displayStatusMsg(String network, String message) { - assertNotNull(provider); - - provider.sendEvent(new StatusMessageEvent(network, message)); - } - - @Override - public void _bufferInfoUpdated(BufferInfo bufferInfo) { - bufferManager.updateBufferInfo(bufferInfo); - } - - @Override - public void _identityCreated(Identity identity) { - identityManager.createIdentity(identity); - } - - @Override - public void _identityRemoved(int id) { - identityManager.removeIdentity(id); - } - - @Override - public void _networkCreated(int network) { - networkManager.createNetwork(network); - } - - @Override - public void _networkRemoved(int network) { - networkManager.removeNetwork(network); - } - - @Override - public void _passwordChanged(long peerPtr, boolean success) { - assertNotNull(provider); - - if (peerPtr != 0x0000000000000000L) - provider.sendEvent(new CriticalErrorEvent("Your core has a critical vulnerability. Please update it.")); - provider.sendEvent(new PasswordChangeEvent(success)); - } - - @Override - public void ___objectRenamed__(String type, String oldName, String newName) { - - } - - public ConnectionChangeEvent.Status connectionStatus() { - return connectionStatus; - } - - public void setConnectionStatus(@NonNull ConnectionChangeEvent.Status connectionStatus) { - assertNotNull(provider); - - this.connectionStatus = connectionStatus; - if (connectionStatus == ConnectionChangeEvent.Status.LOADING_BACKLOG) { - setConnectionStatus(ConnectionChangeEvent.Status.CONNECTED); - } - provider.sendEvent(new ConnectionChangeEvent(connectionStatus)); - } - - @Nullable - public Object unsafe_getObjectByIdentifier(@NonNull String className, @NonNull String objectName) { - switch (className) { - case "AliasManager": { - assertNotNull(aliasManager); - return aliasManager; - } - case "BacklogManager": { - assertNotNull(backlogManager); - return backlogManager; - } - case "BufferSyncer": { - assertNotNull(bufferSyncer); - return bufferSyncer; - } - case "BufferViewConfig": { - assertNotNull(bufferViewManager); - return bufferViewManager.bufferViewConfig(Integer.parseInt(objectName)); - } - case "BufferViewManager": { - assertNotNull(bufferViewManager); - return bufferViewManager; - } - case "CoreInfo": { - assertNotNull(coreInfo); - return coreInfo; - } - case "Identity": { - return identityManager.identity(Integer.parseInt(objectName)); - } - case "IgnoreListManager": { - assertNotNull(ignoreListManager); - return ignoreListManager; - } - case "IrcChannel": { - String[] split = objectName.split("/"); - if (split.length != 2) { - Log.w("libquassel", "malformatted object name: " + objectName); - return null; - } - QNetwork network = networkManager.network(Integer.parseInt(split[0])); - if (network == null) { - Log.w("libquassel", "Network doesn’t exist yet: " + objectName); - return null; - } - return network.ircChannel(split[1]); - } - case "IrcUser": { - String[] split = objectName.split("/"); - if (split.length != 2) { - Log.w("libquassel", "malformatted object name: " + objectName); - return null; - } - QNetwork network = networkManager.network(Integer.parseInt(split[0])); - if (network == null) { - Log.w("libquassel", "Network doesn’t exist yet: " + objectName); - return null; - } - return network.ircUser(split[1]); - } - case "Network": { - return networkManager.network(Integer.parseInt(objectName)); - } - case "NetworkConfig": { - assertNotNull(globalNetworkConfig); - return globalNetworkConfig; - } - case "NetworkInfo": { - QNetwork network = networkManager().network(Integer.parseInt(objectName)); - if (network == null) - return null; - else - return network.networkInfo(); - } - default: { - Log.w("libquassel", "Unknown type: " + className + " : " + objectName); - return null; - } - } - } - - @Nullable - public <T> T getObjectByIdentifier(@NonNull String className, @NonNull String objectName) { - Class<T> cl = QMetaTypeRegistry.<T>getType(className).cl; - return getObjectByIdentifier(cl, className, objectName); - } - - @Nullable - public <T> T getObjectByIdentifier(@NonNull Class<T> cl, @NonNull String objectName) { - return getObjectByIdentifier(cl, cl.getSimpleName(), objectName); - } - - @SuppressWarnings("unchecked") - @Nullable - public <T> T getObjectByIdentifier(@NonNull Class<T> cl, @NonNull String className, @NonNull String objectName) { - Object obj = unsafe_getObjectByIdentifier(className, objectName); - // The fancy version of "instanceof" that works with erased types, too - if (obj == null || !cl.isAssignableFrom(obj.getClass())) - return null; - else - return (T) obj; - } - - public void init(@NonNull SessionState sessionState) { - networkManager.init(sessionState.NetworkIds); - identityManager.init(sessionState.Identities); - bufferManager.init(sessionState.BufferInfos); - - requestInitObject("BufferSyncer", ""); - requestInitObject("BufferViewManager", ""); - requestInitObject("AliasManager", ""); - requestInitObject("NetworkConfig", "GlobalNetworkConfig"); - requestInitObject("IgnoreListManager", ""); - //sendInitRequest("TransferManager", ""); - // This thing never gets sent... - } - - @NonNull - public QNetworkManager networkManager() { - return networkManager; - } - - @NonNull - public QBufferManager bufferManager() { - return bufferManager; - } - - @NonNull - public QIdentityManager identityManager() { - return identityManager; - } - - public void requestInitObject(@NonNull String className, String objectName) { - assertNotNull(provider); - - if (connectionStatus() == ConnectionChangeEvent.Status.INITIALIZING_DATA) - initRequests.add(hashName(className, objectName)); - - provider.dispatch(new InitRequestFunction(className, objectName)); - } - - public void initObject(String className, @NonNull String objectName, @NonNull SyncableObject object) { - assertNotNull(provider); - - if (connectionStatus() == ConnectionChangeEvent.Status.INITIALIZING_DATA) { - initRequests.remove(hashName(className, objectName)); - if (initRequests.isEmpty()) { - setConnectionStatus(ConnectionChangeEvent.Status.LOADING_BACKLOG); - } - } - - object.init(objectName, provider, this); +import de.kuschku.libquassel.syncables.types.impl.NetworkInfo; +import de.kuschku.libquassel.syncables.types.interfaces.QIdentity; - // Execute cached sync requests - if (bufferedSyncs.size() > 0) { - String key = hashName(className, objectName); - if (bufferedSyncs.containsKey(key)) { - List<SyncFunction> functions = bufferedSyncs.get(key); - for (SyncFunction function : functions) - provider.handle(function); - bufferedSyncs.remove(key); - } - } - } +public interface QClient { + @Synced + void sendInput(BufferInfo info, String message); - @NonNull - private String hashName(String className, String objectName) { - return className + ":" + objectName; - } + @Synced + void sendInput(Command command); - public void initBacklog(int id) { - backlogRequests.remove((Integer) id); - requestInitBacklog(id, 0); - if (backlogRequests.isEmpty()) - setConnectionStatus(ConnectionChangeEvent.Status.CONNECTED); - } + @Synced + void createIdentity(QIdentity identity); - public void requestInitBacklog(int id, int amount) { - backlogRequests.add(id); - backlogManager.requestBacklogInitial(id, amount); - } + @Synced + void updateIdentity(int id, final Map<String, QVariant> serialized); - public void setLatency(long latency) { - assertNotNull(provider); + @Synced + void removeIdentity(int id); - this.latency = latency; - provider.sendEvent(new LagChangedEvent(latency)); - } + @Synced + void createNetwork(NetworkInfo info); - public CoreInfo coreInfo() { - return coreInfo; - } + @Synced + void createNetwork(NetworkInfo info, List<String> persistentChannels); - public void setCoreInfo(CoreInfo coreInfo) { - this.coreInfo = coreInfo; - } + @Synced + void updateNetwork(NetworkInfo info); - public CoreStatus core() { - return core; - } + @Synced + void removeNetwork(int id); - public void setCore(CoreStatus core) { - this.core = core; - } + @Synced + void changePassword(String username, String oldPassword, String newPassword); - public long latency() { - return latency; - } + void _displayMsg(final Message msg); - @NonNull - public NotificationManager notificationManager() { - return notificationManager; - } + void _displayStatusMsg(String network, String message); - public void setBufferSyncer(BufferSyncer bufferSyncer) { - this.bufferSyncer = bufferSyncer; - } + void _bufferInfoUpdated(BufferInfo bufferInfo); - public void setBufferViewManager(BufferViewManager bufferViewManager) { - this.bufferViewManager = bufferViewManager; - } + void _identityCreated(Identity identity); - public void setAliasManager(AliasManager aliasManager) { - this.aliasManager = aliasManager; - } + void _identityRemoved(int id); - public void setIgnoreListManager(IgnoreListManager ignoreListManager) { - this.ignoreListManager = ignoreListManager; - } + void _networkCreated(int network); - public void setGlobalNetworkConfig(NetworkConfig globalNetworkConfig) { - this.globalNetworkConfig = globalNetworkConfig; - } + void _networkRemoved(int network); + void _passwordChanged(long peerPtr, boolean success); - @NonNull - public BacklogStorage backlogStorage() { - return backlogStorage; - } + void ___objectRenamed__(String type, String oldName, String newName); - public void bufferSync(@NonNull SyncFunction packedFunc) { - String key = hashName(packedFunc.className, packedFunc.objectName); - if (connectionStatus() == ConnectionChangeEvent.Status.CONNECTED) - Log.d("libquassel", "Queueing sync: " + packedFunc); - if (!bufferedSyncs.containsKey(key)) - bufferedSyncs.put(key, new LinkedList<>()); - bufferedSyncs.get(key).add(packedFunc); - } + void login(String username, String password); } diff --git a/app/src/main/java/de/kuschku/libquassel/client/QClientInterface.java b/app/src/main/java/de/kuschku/libquassel/client/QClientInterface.java deleted file mode 100644 index 3a06501d4e91c853d6be82305288974381674a1d..0000000000000000000000000000000000000000 --- a/app/src/main/java/de/kuschku/libquassel/client/QClientInterface.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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.client; - -import java.util.List; -import java.util.Map; - -import de.kuschku.libquassel.message.Message; -import de.kuschku.libquassel.objects.types.Command; -import de.kuschku.libquassel.primitives.types.BufferInfo; -import de.kuschku.libquassel.primitives.types.QVariant; -import de.kuschku.libquassel.syncables.Synced; -import de.kuschku.libquassel.syncables.types.impl.Identity; -import de.kuschku.libquassel.syncables.types.impl.NetworkInfo; -import de.kuschku.libquassel.syncables.types.interfaces.QIdentity; - -public interface QClientInterface { - @Synced - void sendInput(BufferInfo info, String message); - - @Synced - void sendInput(Command command); - - @Synced - void createIdentity(QIdentity identity); - - @Synced - void updateIdentity(int id, final Map<String, QVariant> serialized); - - @Synced - void removeIdentity(int id); - - @Synced - void createNetwork(NetworkInfo info); - - @Synced - void createNetwork(NetworkInfo info, List<String> persistentChannels); - - @Synced - void updateNetwork(NetworkInfo info); - - @Synced - void removeNetwork(int id); - - @Synced - void changePassword(String username, String oldPassword, String newPassword); - - void _displayMsg(final Message msg); - - void _displayStatusMsg(String network, String message); - - void _bufferInfoUpdated(BufferInfo bufferInfo); - - void _identityCreated(Identity identity); - - void _identityRemoved(int id); - - void _networkCreated(int network); - - void _networkRemoved(int network); - - void _passwordChanged(long peerPtr, boolean success); - - void ___objectRenamed__(String type, String oldName, String newName); - - void login(String username, String password); -} diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/NotificationManager.java b/app/src/main/java/de/kuschku/libquassel/localtypes/NotificationManager.java index 752eaccb2fbb36637a7e535149e1bc09c333cd47..d270922ee99ebcdafd6c4b9e07a81223b555df17 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/NotificationManager.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/NotificationManager.java @@ -28,7 +28,7 @@ import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.message.Message; import de.kuschku.util.observables.lists.ObservableComparableSortedList; @@ -38,9 +38,9 @@ public class NotificationManager { @NonNull private final List<HighlightRule> highlights = new ArrayList<>(); @NonNull - private final QClient client; + private final Client client; - public NotificationManager(@NonNull QClient client) { + public NotificationManager(@NonNull Client client) { this.client = client; } diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogmanagers/BacklogFilter.java b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogmanagers/BacklogFilter.java index fc0fe5f101fefb878212a4271a382fff56ef3793..63dee1ad264f3af0cf2bcec4a66026aa85c3882b 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogmanagers/BacklogFilter.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogmanagers/BacklogFilter.java @@ -30,7 +30,7 @@ import org.joda.time.DateTimeUtils; import java.util.HashSet; import java.util.Set; -import de.kuschku.libquassel.client.QClient; +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; @@ -39,7 +39,7 @@ import de.kuschku.util.observables.lists.ObservableSortedList; public class BacklogFilter implements UICallback { @NonNull - private final QClient client; + private final Client client; private final int bufferId; @NonNull private final ObservableSortedList<Message> unfiltered; @@ -52,7 +52,7 @@ public class BacklogFilter implements UICallback { @Nullable private DateTime earliestMessage; - public BacklogFilter(@NonNull QClient client, int bufferId, @NonNull ObservableSortedList<Message> unfiltered, @NonNull ObservableSortedList<Message> filtered) { + public BacklogFilter(@NonNull Client client, int bufferId, @NonNull ObservableSortedList<Message> unfiltered, @NonNull ObservableSortedList<Message> filtered) { this.client = client; this.bufferId = bufferId; this.unfiltered = unfiltered; diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/BacklogStorage.java b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/BacklogStorage.java index 2abb6b12757ef6086443900ffd1bf84456d85b13..7f7dc0ab94477ca82f00ff626af06ce74f6b9436 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/BacklogStorage.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/BacklogStorage.java @@ -24,7 +24,7 @@ package de.kuschku.libquassel.localtypes.backlogstorage; import android.support.annotation.IntRange; import android.support.annotation.NonNull; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.localtypes.backlogmanagers.BacklogFilter; import de.kuschku.libquassel.message.Message; import de.kuschku.util.observables.lists.ObservableSortedList; @@ -43,5 +43,5 @@ public interface BacklogStorage { void insertMessages(Message... messages); - void setClient(QClient client); + void setClient(Client client); } diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/MemoryBacklogStorage.java b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/MemoryBacklogStorage.java index 86d88d50a58d4b7ccbdfa5dbe3c092d64b77ebbc..c1720e105334bd6ceb44f4b10cfbd17dba3fa7c5 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/MemoryBacklogStorage.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/MemoryBacklogStorage.java @@ -25,7 +25,7 @@ import android.support.annotation.IntRange; import android.support.annotation.NonNull; import android.util.SparseArray; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.localtypes.backlogmanagers.BacklogFilter; import de.kuschku.libquassel.message.Message; import de.kuschku.util.observables.lists.ObservableComparableSortedList; @@ -41,7 +41,7 @@ public class MemoryBacklogStorage implements BacklogStorage { @NonNull private final SparseArray<BacklogFilter> filters = new SparseArray<>(); - private QClient client; + private Client client; @NonNull @Override @@ -79,7 +79,7 @@ public class MemoryBacklogStorage implements BacklogStorage { } } - public void setClient(QClient client) { + public void setClient(Client client) { this.client = client; } diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/SyncableObject.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/SyncableObject.java index 370a29635e23c7206f4dc4d6d44119267f503676..ecf46760c5e7e672e69a32da568fe70a14a68e5a 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/SyncableObject.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/SyncableObject.java @@ -31,7 +31,7 @@ import java.util.List; import java.util.Observable; import de.kuschku.libquassel.BusProvider; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.functions.types.RpcCallFunction; import de.kuschku.libquassel.functions.types.SyncFunction; import de.kuschku.libquassel.primitives.types.QVariant; @@ -43,7 +43,7 @@ import static de.kuschku.util.AndroidAssert.assertNotNull; public abstract class SyncableObject<T extends SyncableObject<T>> extends Observable implements QSyncableObject<T> { @Nullable protected BusProvider provider; - protected QClient client; + protected Client client; protected boolean initialized = false; @Nullable private String objectName; @@ -110,7 +110,7 @@ public abstract class SyncableObject<T extends SyncableObject<T>> extends Observ @CallSuper @Override - public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull QClient client) { + public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) { this.provider = provider; this.objectName = objectName; this.client = client; diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/AliasManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/AliasManager.java index c54fbcc428cddcc9a35dcf2c5546a68e095827e5..95c530531c4fff01add4303fce1667bb6676b1d5 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/AliasManager.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/AliasManager.java @@ -35,7 +35,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import de.kuschku.libquassel.BusProvider; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.objects.types.Command; import de.kuschku.libquassel.primitives.types.BufferInfo; import de.kuschku.libquassel.primitives.types.QVariant; @@ -61,7 +61,7 @@ public class AliasManager extends AAliasManager<AliasManager> { private List<String> names = new ArrayList<>(); private List<Alias> aliases = new ArrayList<>(); - private QClient client; + private Client client; public AliasManager(@NonNull List<String> names, @NonNull List<String> extensions) { for (int i = 0; i < names.size(); i++) { @@ -223,7 +223,7 @@ public class AliasManager extends AAliasManager<AliasManager> { } @Override - public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull QClient client) { + public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) { this.client = client; super.init(objectName, provider, client); client.setAliasManager(this); 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 97365304789c270684d33541eb005aee0284bf12..e732e424be0be5dc87ff063b05d91815e57691ba 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 @@ -27,7 +27,7 @@ import android.support.annotation.Nullable; import java.util.List; import java.util.Map; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.localtypes.backlogmanagers.BacklogFilter; import de.kuschku.libquassel.localtypes.backlogstorage.BacklogStorage; import de.kuschku.libquassel.message.Message; @@ -36,10 +36,10 @@ import de.kuschku.libquassel.syncables.types.abstracts.ABacklogManager; import de.kuschku.util.observables.lists.ObservableComparableSortedList; public class BacklogManager extends ABacklogManager<BacklogManager> { - private final QClient client; + private final Client client; private final BacklogStorage storage; - public BacklogManager(QClient client, BacklogStorage storage) { + public BacklogManager(Client client, BacklogStorage storage) { this.client = client; this.storage = storage; } diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferSyncer.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferSyncer.java index 03ed15500b770d4ce0214cea228b27a43338baa0..b6cdcfd23ddab3b63d8d9fa888b20408ef40b379 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferSyncer.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferSyncer.java @@ -27,7 +27,7 @@ import android.util.SparseIntArray; import java.util.Map; import de.kuschku.libquassel.BusProvider; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.localtypes.buffers.Buffer; import de.kuschku.libquassel.message.Message; import de.kuschku.libquassel.primitives.types.QVariant; @@ -152,7 +152,7 @@ public class BufferSyncer extends ABufferSyncer<BufferSyncer> { } @Override - public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull QClient client) { + public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) { super.init(objectName, provider, client); client.setBufferSyncer(this); } 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 38a4789f240dd269092800f65b7d765762fcd8dc..43ff8e36469993e9335fc9faf86f3f2b0b538123 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 @@ -29,7 +29,7 @@ import java.util.Map; import java.util.Set; import de.kuschku.libquassel.BusProvider; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.primitives.types.QVariant; import de.kuschku.libquassel.syncables.serializers.BufferViewConfigSerializer; import de.kuschku.libquassel.syncables.types.abstracts.ABufferViewConfig; @@ -302,7 +302,7 @@ public class BufferViewConfig extends ABufferViewConfig<BufferViewConfig> { } @Override - public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull QClient client) { + public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) { bufferViewId = Integer.parseInt(objectName); super.init(objectName, provider, client); client.bufferViewManager()._addBufferViewConfig(this); diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewManager.java index b664e815fc9f3d820786d0f2224e10163bfeb7b9..5d95e2194eae758b28a159c881732dafbfd4cafe 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewManager.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewManager.java @@ -31,7 +31,7 @@ import java.util.Map; import java.util.Set; import de.kuschku.libquassel.BusProvider; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.primitives.types.QVariant; import de.kuschku.libquassel.syncables.types.abstracts.ABufferViewManager; import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig; @@ -105,7 +105,7 @@ public class BufferViewManager extends ABufferViewManager<BufferViewManager> { } @Override - public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull QClient client) { + public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) { super.init(objectName, provider, client); for (int id : cachedIds) { client.requestInitObject("BufferViewConfig", String.valueOf(id)); diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/CoreInfo.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/CoreInfo.java index 615a8bc48bb89cd2e4e8601a9f2f5a51a7eda634..3642474d3a5e0d4e7d0ba407902af817166ef731 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/CoreInfo.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/CoreInfo.java @@ -26,7 +26,7 @@ import android.support.annotation.NonNull; import java.util.Map; import de.kuschku.libquassel.BusProvider; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.primitives.types.QVariant; import de.kuschku.libquassel.syncables.types.abstracts.ACoreInfo; @@ -55,7 +55,7 @@ public class CoreInfo extends ACoreInfo<CoreInfo> { } @Override - public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull QClient client) { + public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) { super.init(objectName, provider, client); client.setCoreInfo(this); } diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Identity.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Identity.java index 3c98fcd34ade9c5f80382a7347c7eb71ef708945..b0d9ac1249b3ff78bf443e06fd97b925d3134bbd 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Identity.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Identity.java @@ -29,7 +29,7 @@ import java.util.List; import java.util.Map; import de.kuschku.libquassel.BusProvider; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.primitives.types.QVariant; import de.kuschku.libquassel.syncables.types.abstracts.AIdentity; import de.kuschku.libquassel.syncables.types.interfaces.QIdentity; @@ -394,7 +394,7 @@ public class Identity extends AIdentity<Identity> { } @Override - public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull QClient client) { + public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) { super.init(objectName, provider, client); client.identityManager().createIdentity(this); } 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 a932909247c189ac8b4665b04581a042ab268289..2ec5211e4cecb0dc136175fd15685365f2ca9037 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 @@ -29,7 +29,7 @@ import java.util.Map; import java.util.regex.Pattern; import de.kuschku.libquassel.BusProvider; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.message.Message; import de.kuschku.libquassel.primitives.types.QVariant; import de.kuschku.libquassel.syncables.serializers.IgnoreListManagerSerializer; @@ -143,7 +143,7 @@ public class IgnoreListManager extends AIgnoreListManager<IgnoreListManager> { } @Override - public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull QClient client) { + public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) { super.init(objectName, provider, client); client.setIgnoreListManager(this); } 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 c9e53b4f3d965a0adb050900f4b9fdc8eac15493..ee9ff1506c870f708e496a08430df85cc44a6516 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 @@ -36,7 +36,7 @@ import java.util.Map; import java.util.Set; import de.kuschku.libquassel.BusProvider; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.primitives.types.QVariant; import de.kuschku.libquassel.syncables.serializers.IrcChannelSerializer; import de.kuschku.libquassel.syncables.types.abstracts.AIrcChannel; @@ -416,7 +416,7 @@ public class IrcChannel extends AIrcChannel<IrcChannel> { @SuppressWarnings("unchecked") @Override - public void init(QNetwork network, QClient client) { + public void init(QNetwork network, Client client) { this.client = client; this.network = network; @@ -479,7 +479,7 @@ public class IrcChannel extends AIrcChannel<IrcChannel> { } @Override - public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull QClient client) { + public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) { super.init(objectName, provider, client); String[] split = objectName.split("/", 2); assertEquals(split.length, 2); 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 66b907e1a0935e56271f1302dad3e058f15a049b..23666611e687e7fcaa1bf4df688cadc1c637d4a2 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 @@ -35,7 +35,7 @@ import java.util.Map; import java.util.Set; import de.kuschku.libquassel.BusProvider; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.primitives.types.QVariant; import de.kuschku.libquassel.syncables.types.abstracts.AIrcUser; import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel; @@ -432,7 +432,7 @@ public class IrcUser extends AIrcUser<IrcUser> { } @Override - public void init(QNetwork network, QClient client) { + public void init(QNetwork network, Client client) { this.network = network; this.client = client; @@ -446,7 +446,7 @@ public class IrcUser extends AIrcUser<IrcUser> { } @Override - public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull QClient client) { + public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) { super.init(objectName, provider, client); String[] split = objectName.split("/", 2); assertEquals(split.length, 2); 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 4548a6ab25bb8a6a95b63c83bc7741a4af8330fc..2878e8420aaae8b22c9cfd8ea28c7013c2865e89 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 @@ -34,7 +34,7 @@ import java.util.Observable; import java.util.Observer; import de.kuschku.libquassel.BusProvider; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.objects.types.NetworkServer; import de.kuschku.libquassel.primitives.types.QVariant; import de.kuschku.libquassel.syncables.types.abstracts.ANetwork; @@ -747,7 +747,7 @@ public class Network extends ANetwork<Network> implements Observer { } @Override - public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull QClient client) { + public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) { super.init(objectName, provider, client); networkInfo._setNetworkId(Integer.parseInt(objectName)); client.networkManager().createNetwork(this); diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/NetworkConfig.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/NetworkConfig.java index 3b5146a9b26d8a3f320a11d7975fed8cfa92e25e..ff014fc9282f56fea8fa6137f0b594b709b7f3ca 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/NetworkConfig.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/NetworkConfig.java @@ -26,7 +26,7 @@ import android.support.annotation.NonNull; import java.util.Map; import de.kuschku.libquassel.BusProvider; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.primitives.types.QVariant; import de.kuschku.libquassel.syncables.types.abstracts.ANetworkConfig; @@ -185,7 +185,7 @@ public class NetworkConfig extends ANetworkConfig<NetworkConfig> { } @Override - public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull QClient client) { + public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) { super.init(objectName, provider, client); client.setGlobalNetworkConfig(this); } 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 4427a5c8b717231a09810d736ffb9c66fe9becc9..4daa26bca1448491034690e605b2f6599f2c4928 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,7 @@ import android.support.annotation.NonNull; import java.util.List; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.syncables.Synced; public interface QIrcChannel { @@ -145,5 +145,5 @@ public interface QIrcChannel { void _removeChannelMode(final char mode, final String value); - void init(QNetwork network, QClient client); + void init(QNetwork network, Client client); } diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcUser.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcUser.java index e321051b3850dd89d0f751eaaf3ae8df3f8c1f0d..e16222be7f27325f30f443b16caf438f0f8ea867 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcUser.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcUser.java @@ -27,7 +27,7 @@ import org.joda.time.DateTime; import java.util.List; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.syncables.Synced; public interface QIrcUser { @@ -203,5 +203,5 @@ public interface QIrcUser { void _removeUserModes(final String modes); - void init(QNetwork network, QClient client); + void init(QNetwork network, Client client); } diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QSyncableObject.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QSyncableObject.java index 9779f74bc4bb5a936987e67a816dfc69234949b8..f45f7d02a5591076be591503e1671d6f680d5a44 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QSyncableObject.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QSyncableObject.java @@ -27,7 +27,7 @@ import android.support.annotation.Nullable; import java.util.Map; import de.kuschku.libquassel.BusProvider; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.primitives.types.QVariant; public interface QSyncableObject<T extends QSyncableObject> { @@ -50,5 +50,5 @@ public interface QSyncableObject<T extends QSyncableObject> { void setObjectName(@Nullable String objectName); - void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull QClient client); + void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client); } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppContext.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppContext.java index 61bbc8ee4b0d2b70cae388eba9bc6c05fdcc689f..1ff313ca85c30483000c2f234893802f6a99a5a0 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppContext.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppContext.java @@ -24,13 +24,13 @@ package de.kuschku.quasseldroid_ng.ui.theme; import android.support.annotation.NonNull; import de.kuschku.libquassel.BusProvider; -import de.kuschku.libquassel.client.QClient; +import de.kuschku.libquassel.client.Client; import de.kuschku.quasseldroid_ng.ui.chat.WrappedSettings; public class AppContext { private ThemeUtil themeUtil; private WrappedSettings settings; - private QClient client; + private Client client; private BusProvider provider; public ThemeUtil themeUtil() { @@ -61,16 +61,16 @@ public class AppContext { return this; } - public QClient client() { + public Client client() { return client; } - public void setClient(QClient client) { + public void setClient(Client client) { this.client = client; } @NonNull - public AppContext withClient(QClient client) { + public AppContext withClient(Client client) { setClient(client); return this; }