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

Updated and refactored code

parent 1fa7d17b
No related branches found
No related tags found
No related merge requests found
Showing
with 137 additions and 69 deletions
......@@ -53,6 +53,18 @@ if(project.hasProperty("Android.signing")
dependencies {
testCompile 'junit:junit:4.12'
compile('com.mikepenz:materialdrawer:5.0.0.fastAdapter.b5-SNAPSHOT@aar') {
transitive = true
}
compile('com.mikepenz:fastadapter:0.4.2-SNAPSHOT@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.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.jakewharton:butterknife:7.0.1'
......@@ -61,11 +73,8 @@ dependencies {
compile 'org.joda:joda-convert:1.8'
compile 'de.greenrobot:eventbus:2.4.0'
compile 'com.bignerdranch.android:expandablerecyclerview:2.0.4'
compile('com.mikepenz:materialdrawer:5.0.0.fastAdapter.b5-SNAPSHOT@aar') {
transitive = true
}
compile('com.mikepenz:fastadapter:0.4.2-SNAPSHOT@aar') {
transitive = true
}
compile 'com.sothree.slidinguppanel:library:3.2.1'
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.android.support:cardview-v7:23.1.1'
}
......@@ -15,3 +15,50 @@
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
-dontobfuscate
-dontwarn javax.annotation.**
-dontwarn javax.lang.model.**
-dontwarn javax.tools.**
-dontwarn com.google.j2objc.annotations.**
-dontwarn java.lang.ClassValue
-dontwarn sun.misc.Unsafe
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn javax.annotation.processing.ProcessingEnvironment
-keepclasseswithmembernames class **.libquassel.** {
<methods>;
}
-keepclassmembers class **.libquassel.** {
<methods>;
}
#########################################
## Bufferknife ##
#########################################
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * {
@butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.* <methods>;
}
#########################################
## EventBus ##
#########################################
-keepclassmembers class ** {
public void onEvent*(***);
}
-keepclassmembers class * extends de.greenrobot.event.util.ThrowableFailureEvent {
<init>(java.lang.Throwable);
}
\ No newline at end of file
......@@ -8,19 +8,29 @@
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true">
<service android:name=".QuasselService" />
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.Light">
<service android:name=".service.QuasselService" />
<activity
android:name=".ui.MainActivity"
android:name=".ui.chat.ChatActivity"
android:label="@string/app_name"
android:launchMode="singleTop">
android:launchMode="singleTop"
android:theme="@style/Quassel">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ui.coresetup.CoreSetupActivity"
android:label="@string/title_activity_core_setup"
android:parentActivityName=".ui.chat.ChatActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.chat.MainActivity" />
</activity>
</application>
</manifest>
......@@ -23,13 +23,17 @@ import de.kuschku.libquassel.syncables.types.BufferSyncer;
import de.kuschku.libquassel.syncables.types.BufferViewManager;
import de.kuschku.libquassel.syncables.types.Network;
import de.kuschku.libquassel.syncables.types.SyncableObject;
import de.kuschku.util.backports.Optional;
import de.kuschku.util.backports.Optionals;
import de.kuschku.quasseldroid_ng.ui.chat.drawer.NetworkWrapper;
import de.kuschku.util.backports.Stream;
import de.kuschku.util.observables.callbacks.UICallback;
import de.kuschku.util.observables.lists.IObservableList;
import de.kuschku.util.observables.lists.ObservableComparableSortedList;
import de.kuschku.util.observables.lists.ObservableSortedList;
public class Client {
private final Map<Integer, Network> networks = new HashMap<>();
private final IObservableList<UICallback, NetworkWrapper> networkList = new ObservableComparableSortedList<>(NetworkWrapper.class);
private final Map<Integer, Buffer> buffers = new HashMap<>();
private final List<String> initDataQueue = new ArrayList<>();
private final BacklogManager backlogManager;
......@@ -202,4 +206,8 @@ public class Client {
this.connectionStatus = connectionStatus;
busProvider.sendEvent(new ConnectionChangeEvent(connectionStatus));
}
public IObservableList<UICallback, NetworkWrapper> getNetworkList() {
return networkList;
}
}
......@@ -13,8 +13,6 @@ import java.util.Date;
import java.util.Locale;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.logging.Level;
import java.util.logging.Logger;
import de.kuschku.libquassel.events.ConnectionChangeEvent;
import de.kuschku.libquassel.events.GeneralErrorEvent;
......@@ -27,7 +25,7 @@ import de.kuschku.libquassel.primitives.types.Protocol;
import de.kuschku.libquassel.protocols.DatastreamPeer;
import de.kuschku.libquassel.protocols.LegacyPeer;
import de.kuschku.libquassel.protocols.RemotePeer;
import de.kuschku.quasseldroid_ng.util.ServerAddress;
import de.kuschku.util.ServerAddress;
import de.kuschku.util.niohelpers.WrappedChannel;
import static de.kuschku.libquassel.primitives.QMetaType.Type.UInt;
......@@ -65,7 +63,7 @@ public class CoreConnection {
* This method opens a socket to the specified address and starts the connection process.
*
* @throws IOException
* @param supportsKeepAlive
* @param supportsKeepAlive If the connection may use keepAlive
*/
public void open(boolean supportsKeepAlive) throws IOException {
// Intialize socket
......@@ -214,6 +212,7 @@ public class CoreConnection {
}
} catch (SocketException e) {
Log.e("libquassel", "Socket closed while reading");
client.setConnectionStatus(ConnectionChangeEvent.Status.DISCONNECTED);
} catch (Exception e) {
busProvider.sendEvent(new GeneralErrorEvent(e));
}
......
......@@ -7,8 +7,8 @@ import java.util.List;
import de.kuschku.libquassel.message.Message;
import de.kuschku.libquassel.syncables.types.SyncableObject;
import de.kuschku.util.observablelists.AutoScroller;
import de.kuschku.util.observablelists.ObservableSortedList;
import de.kuschku.util.observables.AutoScroller;
import de.kuschku.util.observables.lists.ObservableSortedList;
public abstract class BacklogManager extends SyncableObject {
public abstract void requestBacklog(int bufferId, int from, int to, int count, int extra);
......
......@@ -15,9 +15,10 @@ import de.kuschku.libquassel.functions.types.InitDataFunction;
import de.kuschku.libquassel.functions.types.SyncFunction;
import de.kuschku.libquassel.message.Message;
import de.kuschku.libquassel.primitives.types.QVariant;
import de.kuschku.util.observablelists.AutoScroller;
import de.kuschku.util.observablelists.ObservableSortedList;
import de.kuschku.util.observablelists.RecyclerViewAdapterCallback;
import de.kuschku.util.observables.AutoScroller;
import de.kuschku.util.observables.lists.ObservableComparableSortedList;
import de.kuschku.util.observables.lists.ObservableSortedList;
import de.kuschku.util.observables.callbacks.wrappers.AdapterUICallbackWrapper;
public class SimpleBacklogManager extends BacklogManager {
SparseArray<ObservableSortedList<Message>> backlogs = new SparseArray<>();
......@@ -49,10 +50,7 @@ public class SimpleBacklogManager extends BacklogManager {
}
public void bind(int bufferId, @Nullable RecyclerView.Adapter adapter, AutoScroller scroller) {
if (adapter == null)
get(bufferId).setCallback(null);
else
get(bufferId).setCallback(new RecyclerViewAdapterCallback(adapter, scroller));
get(bufferId).addCallback(new AdapterUICallbackWrapper(adapter, scroller));
}
@Override
......@@ -68,7 +66,7 @@ public class SimpleBacklogManager extends BacklogManager {
public ObservableSortedList<Message> get(int bufferId) {
if (backlogs.get(bufferId) == null)
backlogs.put(bufferId, new ObservableSortedList<>(Message.class, true));
backlogs.put(bufferId, new ObservableComparableSortedList<>(Message.class, true));
return backlogs.get(bufferId);
}
......
package de.kuschku.quasseldroid_ng;
package de.kuschku.libquassel.events;
public class BufferViewManagerChangedEvent {
public final int id;
......
......@@ -8,6 +8,4 @@ public interface Buffer {
BufferInfo getInfo();
String getName();
IDrawerItem getDrawerElement();
}
package de.kuschku.libquassel.localtypes;
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
import de.kuschku.libquassel.primitives.types.BufferInfo;
import de.kuschku.libquassel.syncables.types.IrcChannel;
import de.kuschku.quasseldroid_ng.ui.BufferDrawerItem;
public class ChannelBuffer implements Buffer {
private final BufferInfo info;
private IrcChannel channel;
private IDrawerItem drawerElement = new BufferDrawerItem(this);
public ChannelBuffer(BufferInfo info, IrcChannel channel) {
this.info = info;
this.channel = channel;
}
public IDrawerItem getDrawerElement() {
return drawerElement;
}
@Override
public BufferInfo getInfo() {
return info;
......
package de.kuschku.libquassel.localtypes;
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
import de.kuschku.libquassel.primitives.types.BufferInfo;
import de.kuschku.libquassel.syncables.types.IrcUser;
import de.kuschku.quasseldroid_ng.ui.BufferDrawerItem;
public class QueryBuffer implements Buffer {
private final BufferInfo info;
private IrcUser user;
private IDrawerItem drawerElement = new BufferDrawerItem(this);
public QueryBuffer(BufferInfo info, IrcUser user) {
this.info = info;
this.user = user;
}
public IDrawerItem getDrawerElement() {
return drawerElement;
}
@Override
public BufferInfo getInfo() {
return info;
......
package de.kuschku.libquassel.localtypes;
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
import de.kuschku.libquassel.primitives.types.BufferInfo;
import de.kuschku.libquassel.syncables.types.Network;
import de.kuschku.quasseldroid_ng.ui.BufferDrawerItem;
public class StatusBuffer implements Buffer {
private final BufferInfo info;
private final Network network;
private IDrawerItem drawerElement = new BufferDrawerItem(this);
public StatusBuffer(BufferInfo info, Network network) {
this.info = info;
this.network = network;
}
public IDrawerItem getDrawerElement() {
return drawerElement;
}
@Override
public BufferInfo getInfo() {
return info;
......
......@@ -8,7 +8,7 @@ import java.io.Serializable;
import java.util.Comparator;
import de.kuschku.libquassel.primitives.types.BufferInfo;
import de.kuschku.util.observablelists.ContentComparable;
import de.kuschku.util.observables.ContentComparable;
public class Message implements ContentComparable<Message> {
public final int messageId;
......
package de.kuschku.libquassel.objects.serializers;
import android.util.Log;
import java.util.HashMap;
import java.util.Map;
......
package de.kuschku.libquassel.syncables.serializers;
import android.util.Log;
import java.util.HashMap;
import java.util.Map;
......@@ -42,7 +44,7 @@ public class IrcChannelSerializer implements ObjectSerializer<IrcChannel> {
(String) map.get("topic").data,
(String) map.get("password").data,
StringObjectMapSerializer.<String>get().fromLegacy(((QVariant<Map<String, QVariant>>) map.get("UserModes")).data),
(Map<String, Object>) map.get("ChanModes").data,
StringObjectMapSerializer.get().fromLegacy((Map<String, QVariant>) map.get("ChanModes").data),
(boolean) map.get("encrypted").data
);
}
......
......@@ -123,8 +123,8 @@ public class NetworkSerializer implements ObjectSerializer<Network> {
(String) channels.get("name").data.get(i),
(String) channels.get("topic").data.get(i),
(String) channels.get("password").data.get(i),
(Map<String, String>) channels.get("UserModes").data.get(i),
(Map<String, Object>) channels.get("ChanModes").data.get(i),
StringObjectMapSerializer.<String>get().fromLegacy((Map<String, QVariant>) channels.get("UserModes").data.get(i)),
StringObjectMapSerializer.get().fromLegacy((Map<String, QVariant>) channels.get("ChanModes").data.get(i)),
(boolean) channels.get("encrypted").data.get(i)
));
}
......
package de.kuschku.libquassel.syncables.types;
import android.util.SparseArray;
import android.util.SparseIntArray;
import java.util.Map;
import de.kuschku.libquassel.BusProvider;
import de.kuschku.libquassel.Client;
import de.kuschku.libquassel.functions.types.InitDataFunction;
import de.kuschku.util.observables.ContentComparable;
import de.kuschku.util.observables.lists.ObservableSortedList;
public class BufferSyncer extends SyncableObject {
public final SparseArray<Integer> LastSeenMsg = new SparseArray<>();
public final SparseArray<Integer> MarkerLines = new SparseArray<>();
private final SparseIntArray LastSeenMsg = new SparseIntArray();
private final SparseIntArray MarkerLines = new SparseIntArray();
Client client;
......@@ -47,4 +50,12 @@ public class BufferSyncer extends SyncableObject {
public void setMarkerLine(int bufferId, int msgId) {
MarkerLines.put(bufferId, msgId);
}
public int getLastSeenMsg(int bufferId) {
return LastSeenMsg.get(bufferId, -1);
}
public int getMarkerLine(int bufferId) {
return MarkerLines.get(bufferId, -1);
}
}
package de.kuschku.libquassel.syncables.types;
import android.util.Log;
import java.util.List;
import de.kuschku.libquassel.BusProvider;
import de.kuschku.libquassel.Client;
import de.kuschku.libquassel.events.BufferViewManagerChangedEvent;
import de.kuschku.libquassel.functions.types.InitDataFunction;
import de.kuschku.quasseldroid_ng.BufferViewManagerChangedEvent;
import de.kuschku.util.observables.callbacks.ElementCallback;
import de.kuschku.util.observables.lists.IObservableList;
import de.kuschku.util.observables.lists.ObservableElementList;
public class BufferViewConfig extends SyncableObject {
String bufferViewName;
List<Integer> TemporarilyRemovedBuffers;
boolean hideInactiveNetworks;
List<Integer> BufferList;
IObservableList<ElementCallback<Integer>, Integer> BufferList;
int allowedBufferTypes;
boolean sortAlphabetically;
boolean disableDecoration;
......@@ -27,7 +28,7 @@ public class BufferViewConfig extends SyncableObject {
this.bufferViewName = bufferViewName;
TemporarilyRemovedBuffers = temporarilyRemovedBuffers;
this.hideInactiveNetworks = hideInactiveNetworks;
BufferList = bufferList;
BufferList = new ObservableElementList<>(bufferList);
this.allowedBufferTypes = allowedBufferTypes;
this.sortAlphabetically = sortAlphabetically;
this.disableDecoration = disableDecoration;
......@@ -62,14 +63,18 @@ public class BufferViewConfig extends SyncableObject {
this.hideInactiveNetworks = hideInactiveNetworks;
}
public List<Integer> getBufferList() {
public IObservableList<ElementCallback<Integer>, Integer> getBufferList() {
return BufferList;
}
public void setBufferList(List<Integer> bufferList) {
public void setBufferList(IObservableList<ElementCallback<Integer>, Integer> bufferList) {
BufferList = bufferList;
}
public void setBufferList(List<Integer> bufferList) {
BufferList = new ObservableElementList<>(bufferList);
}
public int getAllowedBufferTypes() {
return allowedBufferTypes;
}
......
package de.kuschku.libquassel.syncables.types;
import android.util.Log;
import java.util.List;
import java.util.Map;
......
......@@ -128,8 +128,9 @@ public class IrcUser extends SyncableObject {
}
public void renameObject(String objectName) {
// TODO: Check if this is designed well
String nick = objectName.split("/")[1];
network.renameUser(this.nick, nick);
network.renameUser(this.getObjectName(), nick);
for (String channelName : channels) {
IrcChannel channel = network.getChannels().get(channelName);
channel.renameUser(this.nick, nick);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment