Skip to content
Snippets Groups Projects
Commit 91eee7b2 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Added primitive Network edit menu

parent 09bd5fd4
No related branches found
No related tags found
No related merge requests found
Showing
with 73 additions and 65 deletions
......@@ -60,6 +60,8 @@ import de.kuschku.libquassel.primitives.serializers.VoidSerializer;
import de.kuschku.libquassel.primitives.types.BufferInfo;
import de.kuschku.libquassel.primitives.types.QVariant;
import de.kuschku.libquassel.syncables.serializers.IdentitySerializer;
import de.kuschku.libquassel.syncables.serializers.NetworkInfoSerializer;
import de.kuschku.libquassel.syncables.types.impl.NetworkInfo;
import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
import static de.kuschku.util.AndroidAssert.assertNotNull;
......@@ -82,8 +84,9 @@ public class QMetaTypeRegistry {
addType(long.class, QMetaType.Type.UserType, "PeerPtr", LongSerializer.get());
addType(BufferInfo.class, QMetaType.Type.UserType, "BufferInfo", BufferInfoSerializer.get());
addType(Message.class, QMetaType.Type.UserType, "Message", MessageSerializer.get());
addType(QIdentity.class, QMetaType.Type.UserType, "Identity", new UserTypeSerializer<>(IdentitySerializer.get()));
addType(NetworkServer.class, QMetaType.Type.UserType, "Network::Server", new UserTypeSerializer<>(NetworkServerSerializer.get()));
addType(QIdentity.class, QMetaType.Type.UserType, "Identity", new UserTypeSerializer<>(IdentitySerializer.get(), "Identity"));
addType(NetworkServer.class, QMetaType.Type.UserType, "Network::Server", new UserTypeSerializer<>(NetworkServerSerializer.get(), "Network::Server"));
addType(NetworkInfo.class, QMetaType.Type.UserType, "NetworkInfo", new UserTypeSerializer<>(NetworkInfoSerializer.get(), "NetworkInfo"));
addType(int.class, QMetaType.Type.UInt, IntSerializer.get());
addType(short.class, QMetaType.Type.UShort, ShortSerializer.get());
......@@ -285,6 +288,8 @@ public class QMetaTypeRegistry {
return getMetaTypeByType(QMetaType.Type.QVariant);
else if (type instanceof Message) return stringSerializerMap.get("Message");
else if (type instanceof BufferInfo) return stringSerializerMap.get("BufferInfo");
else if (type instanceof NetworkInfo) return stringSerializerMap.get("NetworkInfo");
else if (type instanceof NetworkServer) return stringSerializerMap.get("Network::Server");
else
throw new AssertionError("Unsupported data type: " + type.getClass().getSimpleName());
}
......
......@@ -23,6 +23,7 @@ package de.kuschku.libquassel.primitives.serializers;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import com.google.common.base.Charsets;
......@@ -55,7 +56,7 @@ public class ByteArraySerializer implements PrimitiveSerializer<String> {
@Override
public void serialize(@NonNull final ByteChannel channel, @Nullable final String data) throws IOException {
if (data == null) {
IntSerializer.get().serialize(channel, 0xffffffff);
IntSerializer.get().serialize(channel, -1);
} else {
final ByteBuffer contentBuffer = Charsets.ISO_8859_1.encode(data);
IntSerializer.get().serialize(channel, contentBuffer.limit() + (trimLastByte ? 1 : 0));
......@@ -68,7 +69,7 @@ public class ByteArraySerializer implements PrimitiveSerializer<String> {
@Override
public String deserialize(@NonNull final ByteBuffer buffer) throws IOException {
final int len = IntSerializer.get().deserialize(buffer);
if (len == 0xffffffff)
if (len == -1)
return null;
else if (len == 0)
return "";
......
......@@ -29,6 +29,7 @@ import java.nio.channels.ByteChannel;
import java.util.Map;
import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
import de.kuschku.libquassel.primitives.QMetaType;
import de.kuschku.libquassel.primitives.types.QVariant;
import static de.kuschku.util.AndroidAssert.assertNotNull;
......@@ -37,17 +38,18 @@ import static de.kuschku.util.AndroidAssert.assertNotNull;
public class UserTypeSerializer<T> implements PrimitiveSerializer<T> {
@NonNull
private final ObjectSerializer<T> objectSerializer;
private final String type;
public UserTypeSerializer(@NonNull ObjectSerializer<T> objectSerializer) {
public UserTypeSerializer(@NonNull ObjectSerializer<T> objectSerializer, String type) {
this.objectSerializer = objectSerializer;
this.type = type;
}
@Override
public void serialize(@NonNull ByteChannel channel, @NonNull T data) throws IOException {
QVariant<Map<String, QVariant<Object>>> variantMap = new QVariant<>(objectSerializer.toVariantMap(data));
Map<String, QVariant<Object>> variantMap = objectSerializer.toVariantMap(data);
assertNotNull(variantMap);
VariantSerializer.<Map<String, QVariant<Object>>>get().serialize(channel, variantMap);
VariantMapSerializer.get().serialize(channel, variantMap);
}
@SuppressWarnings("RedundantCast")
......
......@@ -22,6 +22,7 @@
package de.kuschku.libquassel.primitives.serializers;
import android.support.annotation.NonNull;
import android.util.Log;
import java.io.IOException;
import java.nio.ByteBuffer;
......
......@@ -103,35 +103,35 @@ public class LegacyPeer implements RemotePeer {
public void onEventBackgroundThread(@NonNull RpcCallFunction func) {
assertNotNull(connection.getOutputExecutor());
connection.getOutputExecutor().submit(new OutputRunnable<>(VariantSerializer.get(),
new QVariant<>(UnpackedRpcCallFunctionSerializer.get().serialize(func))));
new QVariant<>(QVariantList, UnpackedRpcCallFunctionSerializer.get().serialize(func))));
}
@Subscribe(threadMode = ThreadMode.BACKGROUND)
public void onEventBackgroundThread(@NonNull InitRequestFunction func) {
assertNotNull(connection.getOutputExecutor());
connection.getOutputExecutor().submit(new OutputRunnable<>(VariantSerializer.get(),
new QVariant<>(InitRequestFunctionSerializer.get().serialize(func))));
new QVariant<>(QVariantList, InitRequestFunctionSerializer.get().serialize(func))));
}
@Subscribe(threadMode = ThreadMode.BACKGROUND)
public void onEventBackgroundThread(@NonNull InitDataFunction func) {
assertNotNull(connection.getOutputExecutor());
connection.getOutputExecutor().submit(new OutputRunnable<>(VariantSerializer.get(),
new QVariant<>(InitDataFunctionSerializer.get().serialize(func))));
new QVariant<>(QVariantList, InitDataFunctionSerializer.get().serialize(func))));
}
@Subscribe(threadMode = ThreadMode.BACKGROUND)
public void onEventBackgroundThread(@NonNull Heartbeat func) {
assertNotNull(connection.getOutputExecutor());
connection.getOutputExecutor().submit(new OutputRunnable<>(VariantSerializer.get(),
new QVariant<>(HeartbeatSerializer.get().serialize(func))));
new QVariant<>(QVariantList, HeartbeatSerializer.get().serialize(func))));
}
@Subscribe(threadMode = ThreadMode.BACKGROUND)
public void onEventBackgroundThread(@NonNull HeartbeatReply func) {
assertNotNull(connection.getOutputExecutor());
connection.getOutputExecutor().submit(new OutputRunnable<>(VariantSerializer.get(),
new QVariant<>(HeartbeatReplySerializer.get().serialize(func))));
new QVariant<>(QVariantList, HeartbeatReplySerializer.get().serialize(func))));
}
@Subscribe(threadMode = ThreadMode.BACKGROUND)
......
......@@ -33,6 +33,7 @@ import de.kuschku.libquassel.functions.types.PackedFunction;
import de.kuschku.libquassel.functions.types.SerializedFunction;
import de.kuschku.libquassel.functions.types.UnpackedFunction;
import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
import de.kuschku.libquassel.primitives.QMetaType;
import de.kuschku.libquassel.primitives.types.QVariant;
import de.kuschku.libquassel.syncables.types.impl.AliasManager;
import de.kuschku.libquassel.syncables.types.interfaces.QAliasManager;
......@@ -63,11 +64,11 @@ public class AliasManagerSerializer implements ObjectSerializer<AliasManager> {
names.add(alias.name);
expansions.add(alias.expansion);
}
aliases.put("names", new QVariant(names));
aliases.put("expansions", new QVariant(expansions));
aliases.put("names", new QVariant(QMetaType.Type.QStringList, names));
aliases.put("expansions", new QVariant(QMetaType.Type.QStringList, expansions));
HashMap<String, QVariant<Object>> map = new HashMap<>();
map.put("Aliases", new QVariant(aliases));
map.put("Aliases", new QVariant(QMetaType.Type.QVariantMap, aliases));
return map;
}
......
......@@ -23,6 +23,7 @@ package de.kuschku.libquassel.syncables.serializers;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import java.util.HashMap;
import java.util.List;
......@@ -33,6 +34,7 @@ import de.kuschku.libquassel.functions.types.SerializedFunction;
import de.kuschku.libquassel.functions.types.UnpackedFunction;
import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
import de.kuschku.libquassel.objects.types.NetworkServer;
import de.kuschku.libquassel.primitives.QMetaType;
import de.kuschku.libquassel.primitives.types.QVariant;
import de.kuschku.libquassel.syncables.types.impl.NetworkInfo;
......@@ -54,31 +56,32 @@ public class NetworkInfoSerializer implements ObjectSerializer<NetworkInfo> {
@Override
public Map<String, QVariant<Object>> toVariantMap(@NonNull NetworkInfo data) {
Map<String, QVariant<Object>> map = new HashMap<>();
map.put("networkName", new QVariant<>(data.networkName()));
map.put("identity", new QVariant<>(data.identity()));
map.put("NetworkId", new QVariant<>("NetworkId", data.networkId()));
map.put("NetworkName", new QVariant<>(QMetaType.Type.QString, data.networkName()));
map.put("Identity", new QVariant<>("IdentityId", data.identity()));
map.put("codecForServer", new QVariant<>(data.codecForServer()));
map.put("codecForEncoding", new QVariant<>(data.codecForEncoding()));
map.put("codecForDecoding", new QVariant<>(data.codecForDecoding()));
map.put("CodecForServer", new QVariant<>(QMetaType.Type.QByteArray, data.codecForServer()));
map.put("CodecForEncoding", new QVariant<>(QMetaType.Type.QByteArray, data.codecForEncoding()));
map.put("CodecForDecoding", new QVariant<>(QMetaType.Type.QByteArray, data.codecForDecoding()));
map.put("ServerList", new QVariant<>(data.serverList()));
map.put("useRandomServer", new QVariant<>(data.useRandomServer()));
map.put("ServerList", new QVariant<>(QMetaType.Type.QVariantList, data.serverList()));
map.put("UseRandomServer", new QVariant<>(QMetaType.Type.Bool, data.useRandomServer()));
map.put("perform", new QVariant<>(data.perform()));
map.put("Perform", new QVariant<>(QMetaType.Type.QStringList, data.perform()));
map.put("useAutoIdentify", new QVariant<>(data.useAutoIdentify()));
map.put("autoIdentifyService", new QVariant<>(data.autoIdentifyService()));
map.put("autoIdentifyPassword", new QVariant<>(data.autoIdentifyPassword()));
map.put("UseAutoIdentify", new QVariant<>(QMetaType.Type.Bool, data.useAutoIdentify()));
map.put("AutoIdentifyService", new QVariant<>(QMetaType.Type.QString, data.autoIdentifyService()));
map.put("AutoIdentifyPassword", new QVariant<>(QMetaType.Type.QString, data.autoIdentifyPassword()));
map.put("useSasl", new QVariant<>(data.useSasl()));
map.put("saslAccount", new QVariant<>(data.saslAccount()));
map.put("saslPassword", new QVariant<>(data.saslPassword()));
map.put("UseSasl", new QVariant<>(QMetaType.Type.Bool, data.useSasl()));
map.put("SaslAccount", new QVariant<>(QMetaType.Type.QString, data.saslAccount()));
map.put("SaslPassword", new QVariant<>(QMetaType.Type.QString, data.saslPassword()));
map.put("useAutoReconnect", new QVariant<>(data.useAutoReconnect()));
map.put("autoReconnectInterval", new QVariant<>(data.autoReconnectInterval()));
map.put("autoReconnectRetries", new QVariant<>(data.autoReconnectRetries()));
map.put("unlimitedReconnectRetries", new QVariant<>(data.unlimitedReconnectRetries()));
map.put("rejoinChannels", new QVariant<>(data.rejoinChannels()));
map.put("UseAutoReconnect", new QVariant<>(QMetaType.Type.Bool, data.useAutoReconnect()));
map.put("AutoReconnectInterval", new QVariant<>(QMetaType.Type.UInt, data.autoReconnectInterval()));
map.put("AutoReconnectRetries", new QVariant<>(QMetaType.Type.UShort, data.autoReconnectRetries()));
map.put("UnlimitedReconnectRetries", new QVariant<>(QMetaType.Type.Bool, data.unlimitedReconnectRetries()));
map.put("RejoinChannels", new QVariant<>(QMetaType.Type.Bool, data.rejoinChannels()));
return map;
}
......
......@@ -22,6 +22,7 @@
package de.kuschku.libquassel.syncables.types.abstracts;
import android.support.annotation.NonNull;
import android.util.Log;
import java.util.List;
......@@ -227,8 +228,7 @@ public abstract class ANetwork extends SyncableObject<QNetwork> implements QNetw
@Override
public void setNetworkInfo(NetworkInfo info) {
_setNetworkInfo(info);
syncVar("setNetworkInfo", info);
syncVar("requestSetNetworkInfo", info);
}
@Override
......
......@@ -162,7 +162,7 @@ public class BufferViewConfig extends ABufferViewConfig {
for (int bufferId : bufferList()) {
Buffer buffer = client.bufferManager().buffer(bufferId);
if (buffer == null)
Log.e("DEBUG", "Buffer is null: " + bufferId + " while adding buffer " + info);
Log.w("libquassel", "Buffer is null: " + bufferId + " while adding buffer " + info);
BufferInfo info1 = buffer.getInfo();
if (info1.networkId == info.networkId)
infos.add(info1.name);
......
......@@ -781,6 +781,8 @@ public class Network extends ANetwork implements Observer {
@Override
public void _update() {
super._update();
if (client != null)
client.networkManager().networks().notifyItemChanged(client.networkManager().networks().indexOf(this));
}
private void updateDisplay() {
......
......@@ -108,5 +108,7 @@ public class ClientBackgroundThread implements Runnable {
public void onEvent(GeneralErrorEvent event) {
if (!(event.exception instanceof ConnectException))
ACRA.getErrorReporter().handleSilentException(event.exception);
event.exception.printStackTrace();
}
}
......@@ -118,9 +118,6 @@ public class BufferViewConfigSpinnerAdapter implements ThemedSpinnerAdapter, Gen
TextView view = (TextView) inflater.inflate(R.layout.widget_md_spinner_item, parent, false);
QBufferViewConfig viewConfig = (QBufferViewConfig) getItem(position);
view.setText(viewConfig == null ? "" : viewConfig.bufferViewName());
if (viewConfig == null) {
Log.d("DEBUG", String.valueOf(bufferViewManager.bufferViewConfigs()));
}
return view;
}
......
......@@ -76,6 +76,7 @@ import de.kuschku.libquassel.localtypes.buffers.QueryBuffer;
import de.kuschku.libquassel.message.Message;
import de.kuschku.libquassel.objects.types.CoreSetupData;
import de.kuschku.libquassel.objects.types.SetupData;
import de.kuschku.libquassel.primitives.QMetaType;
import de.kuschku.libquassel.primitives.types.QVariant;
import de.kuschku.libquassel.syncables.types.interfaces.QBacklogManager;
import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
......@@ -493,8 +494,6 @@ public class MainActivity extends BoundActivity {
if (resultCode == RESULT_OK) {
context.provider().event.removeStickyEvent(CoreSetupRequiredEvent.class);
Log.d("DEBUG", "Received result: " + data.getExtras());
Account account = manager.account(context.settings().preferenceLastAccount.get());
Bundle config = data.getParcelableExtra("config");
Map<String, QVariant> configData = new HashMap<>();
......@@ -532,8 +531,6 @@ public class MainActivity extends BoundActivity {
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void onEventMainThread(CoreSetupRequiredEvent event) {
Log.d("DEBUG", String.valueOf(context.client().core().StorageBackends));
Intent intent = new Intent(getApplicationContext(), CoreSetupActivity.class);
intent.putExtra("storageBackends", context.client().core().getStorageBackendsAsBundle());
startActivityForResult(intent, REQUEST_CODE_CORESETUP);
......
......@@ -70,6 +70,7 @@ public class BufferViewConfigAdapter extends ExpandableRecyclerAdapter<NetworkVi
@Override
public void notifyItemChanged(QNetwork network) {
if (items.contains(itemMap.get(network)))
items.notifyItemChanged(items.indexOf(itemMap.get(network)));
}
};
......@@ -137,7 +138,7 @@ public class BufferViewConfigAdapter extends ExpandableRecyclerAdapter<NetworkVi
final ObservableSortedList<NetworkItem> networkItems = new ObservableSortedList<>(NetworkItem.class, new ObservableSortedList.ItemComparator<NetworkItem>() {
@Override
public int compare(NetworkItem o1, NetworkItem o2) {
return o1.getNetwork().networkName().compareTo(o2.getNetwork().networkName());
return o1 == null && o2 == null ? 0 : o1 == null ? 1 : o2 == null ? -1 : o1.getNetwork().networkName().compareTo(o2.getNetwork().networkName());
}
@Override
......
......@@ -100,7 +100,6 @@ public class ChatListCreateActivity extends BoundActivity {
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_confirm: {
Log.d("DEBUG", "Manager: " + bufferViewManager);
if (bufferViewManager != null) {
QBufferViewConfig config = new BufferViewConfig(
"",
......@@ -125,8 +124,6 @@ public class ChatListCreateActivity extends BoundActivity {
config._setAddNewBuffersAutomatically(this.addAutomatically.isChecked());
config._setSortAlphabetically(this.sortAlphabetically.isChecked());
Log.d("DEBUG", "Config: " + config);
bufferViewManager.createBufferView(config);
}
finish();
......@@ -138,13 +135,11 @@ public class ChatListCreateActivity extends BoundActivity {
@Override
protected void onConnected() {
Log.d("ChatListCreateActivity", "Connected: " + context.client().bufferViewManager());
bufferViewManager = context.client().bufferViewManager();
}
@Override
protected void onDisconnected() {
Log.d("ChatListCreateActivity", "Disconnected");
bufferViewManager = null;
}
}
......@@ -302,8 +302,8 @@ public class NetworkCreateActivity extends BoundActivity {
unlimitedAutoReconnectRetries.isChecked(),
rejoinChannels.isChecked()
);
Log.d("DEBUG", "After: " + after);
if (context.client() != null)
context.client().createNetwork(after);
finish();
}
......
......@@ -41,7 +41,9 @@ import android.widget.Spinner;
import butterknife.Bind;
import butterknife.ButterKnife;
import de.kuschku.libquassel.syncables.types.impl.NetworkInfo;
import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
import de.kuschku.quasseldroid_ng.R;
import de.kuschku.util.backports.Objects;
import de.kuschku.util.servicebound.BoundActivity;
public class NetworkEditActivity extends BoundActivity {
......@@ -100,7 +102,7 @@ public class NetworkEditActivity extends BoundActivity {
CheckBox unlimitedAutoReconnectRetries;
int id;
private NetworkInfo networkInfo;
private QNetwork network;
public static void expand(final ViewGroup v) {
v.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
......@@ -236,6 +238,7 @@ public class NetworkEditActivity extends BoundActivity {
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_confirm: {
NetworkInfo networkInfo = this.network.networkInfo();
if (networkInfo != null) {
NetworkInfo after = new NetworkInfo(
networkInfo.networkId(),
......@@ -263,9 +266,8 @@ public class NetworkEditActivity extends BoundActivity {
rejoinChannels.isChecked()
);
Log.d("DEBUG", "Before: " + networkInfo);
Log.d("DEBUG", "After: " + after);
Log.d("DEBUG", "Eq: " + networkInfo.equals(after));
if (!Objects.equals(networkInfo, after))
network.setNetworkInfo(after);
finish();
}
......@@ -277,13 +279,14 @@ public class NetworkEditActivity extends BoundActivity {
@Override
protected void onConnected() {
setNetwork(context.client().networkManager().network(id).networkInfo());
setNetwork(context.client().networkManager().network(id));
}
private void setNetwork(NetworkInfo networkInfo) {
this.networkInfo = networkInfo;
private void setNetwork(QNetwork network) {
this.network = network;
if (this.networkInfo != null) {
NetworkInfo networkInfo = this.network.networkInfo();
if (networkInfo != null) {
networkName.setText(networkInfo.networkName());
useCustomCodecs.setChecked(networkInfo.codecForServer() != null || networkInfo.codecForEncoding() != null || networkInfo.codecForDecoding() != null);
codecForServer.setText(networkInfo.codecForServer());
......
......@@ -42,6 +42,7 @@ import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewManager;
import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
import de.kuschku.quasseldroid_ng.R;
import de.kuschku.util.observables.callbacks.UICallback;
import de.kuschku.util.observables.callbacks.wrappers.AdapterUICallbackWrapper;
import de.kuschku.util.servicebound.BoundActivity;
......
......@@ -98,8 +98,6 @@ public class CoreBackendSetupSlide extends SlideFragment {
}
private void updateContent() {
Log.d("DEBUG", "Backend is: " + storageBackend);
container.removeAllViews();
for (InputItemWrapper wrapper : items.values()) {
......@@ -122,7 +120,6 @@ public class CoreBackendSetupSlide extends SlideFragment {
InputItemWrapper wrapper = getInputItemWrapper(key, type, defValue);
items.put(key, wrapper);
container.addView(wrapper.getView(container.getContext(), container));
Log.d("DEBUG", "Adding config: " + type + " " + key + " = " + defValue + ";");
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment