diff --git a/app/src/androidTest/java/de/kuschku/quasseldroid_ng/ExampleInstrumentedTest.kt b/app/src/androidTest/java/de/kuschku/quasseldroid_ng/ExampleInstrumentedTest.kt index d3c46539332634d1fc1d109e522216f41c470a3e..e100dfcad4a59127519da2a9077120419680cae5 100644 --- a/app/src/androidTest/java/de/kuschku/quasseldroid_ng/ExampleInstrumentedTest.kt +++ b/app/src/androidTest/java/de/kuschku/quasseldroid_ng/ExampleInstrumentedTest.kt @@ -13,10 +13,10 @@ import org.junit.runner.RunWith */ @RunWith(AndroidJUnit4::class) class ExampleInstrumentedTest { - @Test - fun useAppContext() { - // Context of the app under test. - val appContext = InstrumentationRegistry.getTargetContext() - assertEquals("de.kuschku.quasseldroid_ng", appContext.packageName) - } + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getTargetContext() + assertEquals("de.kuschku.quasseldroid_ng", appContext.packageName) + } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 37bc00cb4d6fee5375f116c2877156217b525551..1c13407cc193c58b83d1f85a234b82a1a810a645 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -7,11 +7,11 @@ <application android:name=".QuasseldroidNG" - android:label="@string/app_name" - android:icon="@mipmap/ic_launcher" - android:theme="@style/AppTheme" android:allowBackup="true" - android:supportsRtl="true"> + android:icon="@mipmap/ic_launcher" + android:label="@string/app_name" + android:supportsRtl="true" + android:theme="@style/AppTheme"> <activity android:name=".ui.MainActivity" android:exported="true" @@ -24,9 +24,9 @@ </activity> <service android:name=".service.QuasselService" - android:label="@string/connection_service" android:description="@string/connection_service_description" - android:exported="false" /> + android:exported="false" + android:label="@string/connection_service" /> </application> </manifest> diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.kt index b0e60d6a7d9220ceb0401ec78dacbdbe1666a3df..7387e658a66f019e104124d964677f7bea03a332 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.kt @@ -85,7 +85,7 @@ class QuasselService : LifecycleService() { Protocol_Feature.Compression, Protocol_Feature.TLS ), - supportedProtocols = byteArrayOf(0x02) + supportedProtocols = listOf(Protocol.Datastream) ) } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/ServiceBoundActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/ServiceBoundActivity.kt index 6df4c86ad493f992398ce21a2c030fca46d848fe..e46c5ad4998e35d6f818b25e935335516de908ad 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/ServiceBoundActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/ServiceBoundActivity.kt @@ -6,8 +6,8 @@ import android.content.Intent import android.content.ServiceConnection import android.os.IBinder import android.support.v7.app.AppCompatActivity -import de.kuschku.quasseldroid_ng.service.QuasselService import de.kuschku.libquassel.session.Backend +import de.kuschku.quasseldroid_ng.service.QuasselService abstract class ServiceBoundActivity : AppCompatActivity() { protected val backend = MutableLiveData<Backend?>() diff --git a/app/src/main/res/drawable/ic_add.xml b/app/src/main/res/drawable/ic_add.xml index 0d2aa51b029dde324efdf5e925bb9e144d2ffe97..b4463c6857a165d33628726956218c6e233e3e4a 100644 --- a/app/src/main/res/drawable/ic_add.xml +++ b/app/src/main/res/drawable/ic_add.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z" /> diff --git a/app/src/main/res/drawable/ic_arrow_right.xml b/app/src/main/res/drawable/ic_arrow_right.xml index 50e06d4b9b1d0ebc3bb51430da9af7a9052d42fb..3ae7624da4335db73d30c58fa4e72dcd903919fb 100644 --- a/app/src/main/res/drawable/ic_arrow_right.xml +++ b/app/src/main/res/drawable/ic_arrow_right.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z" /> diff --git a/app/src/main/res/drawable/ic_check.xml b/app/src/main/res/drawable/ic_check.xml index adb35a931a971e613faa410416ebe35b8225d9ec..3b6dbf9c0dbcca11d8853df8c4c545c367592242 100644 --- a/app/src/main/res/drawable/ic_check.xml +++ b/app/src/main/res/drawable/ic_check.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" /> diff --git a/app/src/main/res/drawable/ic_debug.xml b/app/src/main/res/drawable/ic_debug.xml index 5da4c72cfa6376b5190f735a5efac2190c6d385f..44e9d18925db5f166d4cde17a1eb45b1e9dd8b1e 100644 --- a/app/src/main/res/drawable/ic_debug.xml +++ b/app/src/main/res/drawable/ic_debug.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M14,12H10V10H14M14,16H10V14H14M20,8H17.19C16.74,7.22 16.12,6.55 15.37,6.04L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.04,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6.04C7.88,6.55 7.26,7.22 6.81,8H4V10H6.09C6.04,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.04,15.67 6.09,16H4V18H6.81C7.85,19.79 9.78,21 12,21C14.22,21 16.15,19.79 17.19,18H20V16H17.91C17.96,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.96,10.33 17.91,10H20V8Z" /> diff --git a/app/src/main/res/drawable/ic_delete.xml b/app/src/main/res/drawable/ic_delete.xml index d17b5c1b76b7951ed6b86df3d5edac1329d0a9c3..3158f90e5853a46fe932747c1a98d38fee622eb2 100644 --- a/app/src/main/res/drawable/ic_delete.xml +++ b/app/src/main/res/drawable/ic_delete.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z" /> diff --git a/app/src/main/res/drawable/ic_filter.xml b/app/src/main/res/drawable/ic_filter.xml index 19feffee27c4b7d9abba58bc913323601c1f9833..352dded082fffc51285342ba4b70af3d0a975974 100644 --- a/app/src/main/res/drawable/ic_filter.xml +++ b/app/src/main/res/drawable/ic_filter.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M3,2H21V2H21V4H20.92L14,10.92V22.91L10,18.91V10.91L3.09,4H3V2Z" /> diff --git a/app/src/main/res/drawable/ic_format_bold.xml b/app/src/main/res/drawable/ic_format_bold.xml index 1e70c5e6655ca970327108ecd8e70dbca378f9e4..28d62830f93b2e383351e4237f5c6585f6cfc965 100644 --- a/app/src/main/res/drawable/ic_format_bold.xml +++ b/app/src/main/res/drawable/ic_format_bold.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M13.5,15.5H10V12.5H13.5A1.5,1.5 0 0,1 15,14A1.5,1.5 0 0,1 13.5,15.5M10,6.5H13A1.5,1.5 0 0,1 14.5,8A1.5,1.5 0 0,1 13,9.5H10M15.6,10.79C16.57,10.11 17.25,9 17.25,8C17.25,5.74 15.5,4 13.25,4H7V18H14.04C16.14,18 17.75,16.3 17.75,14.21C17.75,12.69 16.89,11.39 15.6,10.79Z" /> diff --git a/app/src/main/res/drawable/ic_format_fill.xml b/app/src/main/res/drawable/ic_format_fill.xml index 950ec4dee7d4f7774454095fac1bafaf8e44ae62..647776cf6b4d598073f2630c64f948bf2f919c14 100644 --- a/app/src/main/res/drawable/ic_format_fill.xml +++ b/app/src/main/res/drawable/ic_format_fill.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M19,11.5C19,11.5 17,13.67 17,15A2,2 0 0,0 19,17A2,2 0 0,0 21,15C21,13.67 19,11.5 19,11.5M5.21,10L10,5.21L14.79,10M16.56,8.94L7.62,0L6.21,1.41L8.59,3.79L3.44,8.94C2.85,9.5 2.85,10.47 3.44,11.06L8.94,16.56C9.23,16.85 9.62,17 10,17C10.38,17 10.77,16.85 11.06,16.56L16.56,11.06C17.15,10.47 17.15,9.5 16.56,8.94Z" /> diff --git a/app/src/main/res/drawable/ic_format_italic.xml b/app/src/main/res/drawable/ic_format_italic.xml index 5007fd7c81e6641465983ae46ba555edd9ab2976..7004df917c1a2844c93e2b0cab0691b0c0e52520 100644 --- a/app/src/main/res/drawable/ic_format_italic.xml +++ b/app/src/main/res/drawable/ic_format_italic.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M10,4V7H12.21L8.79,15H6V18H14V15H11.79L15.21,7H18V4H10Z" /> diff --git a/app/src/main/res/drawable/ic_format_paint.xml b/app/src/main/res/drawable/ic_format_paint.xml index 698113842dd9603c770f6f9db0d4468e528b163e..7e713bde2a464919b40f43c22839135ed5ad9ee1 100644 --- a/app/src/main/res/drawable/ic_format_paint.xml +++ b/app/src/main/res/drawable/ic_format_paint.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M18,4V3A1,1 0 0,0 17,2H5A1,1 0 0,0 4,3V7A1,1 0 0,0 5,8H17A1,1 0 0,0 18,7V6H19V10H9V21A1,1 0 0,0 10,22H12A1,1 0 0,0 13,21V12H21V4H18Z" /> diff --git a/app/src/main/res/drawable/ic_format_underline.xml b/app/src/main/res/drawable/ic_format_underline.xml index 7e79bdc6de72cd1adfdfe7223c13ac246aee9d9f..ac556f0712822b43b4cbf85421e223b3420c5da8 100644 --- a/app/src/main/res/drawable/ic_format_underline.xml +++ b/app/src/main/res/drawable/ic_format_underline.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M5,21H19V19H5V21M12,17A6,6 0 0,0 18,11V3H15.5V11A3.5,3.5 0 0,1 12,14.5A3.5,3.5 0 0,1 8.5,11V3H6V11A6,6 0 0,0 12,17Z" /> diff --git a/app/src/main/res/drawable/ic_help.xml b/app/src/main/res/drawable/ic_help.xml index ae0a04424f4b9693f0afca4cd079dcc094958fe3..a80eaed15a6a142f770b9f05f7020624b17d0aa4 100644 --- a/app/src/main/res/drawable/ic_help.xml +++ b/app/src/main/res/drawable/ic_help.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /> diff --git a/app/src/main/res/drawable/ic_history.xml b/app/src/main/res/drawable/ic_history.xml index bad03f613c6e5094e86de48d55a277c406b40dee..8482d8d547d3dbf9fda5b152144f263b045b259b 100644 --- a/app/src/main/res/drawable/ic_history.xml +++ b/app/src/main/res/drawable/ic_history.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M11,7V12.11L15.71,14.9L16.5,13.62L12.5,11.25V7M12.5,2C8.97,2 5.91,3.92 4.27,6.77L2,4.5V11H8.5L5.75,8.25C6.96,5.73 9.5,4 12.5,4A7.5,7.5 0 0,1 20,11.5A7.5,7.5 0 0,1 12.5,19C9.23,19 6.47,16.91 5.44,14H3.34C4.44,18.03 8.11,21 12.5,21C17.74,21 22,16.75 22,11.5A9.5,9.5 0 0,0 12.5,2Z" /> diff --git a/app/src/main/res/drawable/ic_lock.xml b/app/src/main/res/drawable/ic_lock.xml index dba5a1ad5b8ba775cd5d0fd45fb0d7a4bbc258e3..f6436819fec3367df411b7edfc2a5e98ee624885 100644 --- a/app/src/main/res/drawable/ic_lock.xml +++ b/app/src/main/res/drawable/ic_lock.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z" /> diff --git a/app/src/main/res/drawable/ic_lock_open.xml b/app/src/main/res/drawable/ic_lock_open.xml index da3b6fdf04b9cb2a6994f8734ab6a45716df0ad6..384661318752769d15cac6479982763531f9154f 100644 --- a/app/src/main/res/drawable/ic_lock_open.xml +++ b/app/src/main/res/drawable/ic_lock_open.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,1 10,15A2,2 0 0,1 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17Z" /> diff --git a/app/src/main/res/drawable/ic_modify.xml b/app/src/main/res/drawable/ic_modify.xml index b919ec83185e8bad15d86e5ce8b5cdb925cf67aa..7af826410c1cae683bf1e01caa4c438e21efbeb7 100644 --- a/app/src/main/res/drawable/ic_modify.xml +++ b/app/src/main/res/drawable/ic_modify.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z" /> diff --git a/app/src/main/res/drawable/ic_reorder.xml b/app/src/main/res/drawable/ic_reorder.xml index 77a4c4e27d8bbc742615654f148a25e2cbf426d4..53046472918a1abca55fb9a2531f425ce4c7c199 100644 --- a/app/src/main/res/drawable/ic_reorder.xml +++ b/app/src/main/res/drawable/ic_reorder.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M3,15H21V13H3V15M3,19H21V17H3V19M3,11H21V9H3V11M3,5V7H21V5H3Z" /> diff --git a/app/src/main/res/drawable/ic_scroll_down.xml b/app/src/main/res/drawable/ic_scroll_down.xml index 0fbf78884d2ac53c5152ab37f985aba7489f9671..e2ed20f9127cac5a99eb76718586e7c2bb0072c1 100644 --- a/app/src/main/res/drawable/ic_scroll_down.xml +++ b/app/src/main/res/drawable/ic_scroll_down.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z" /> diff --git a/app/src/main/res/drawable/ic_send.xml b/app/src/main/res/drawable/ic_send.xml index 8ca7d5986bb58e746c7bc22d8e30b7fe722e6428..474024b73ebb1ea480179123a2a84bd401578780 100644 --- a/app/src/main/res/drawable/ic_send.xml +++ b/app/src/main/res/drawable/ic_send.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M2,21L23,12L2,3V10L17,12L2,14V21Z" /> diff --git a/app/src/main/res/drawable/ic_server.xml b/app/src/main/res/drawable/ic_server.xml index 624297401effbf9899c50351e19782e538ded934..e0df0c772e92f62d48b6746f38a9c7b6520fdd72 100644 --- a/app/src/main/res/drawable/ic_server.xml +++ b/app/src/main/res/drawable/ic_server.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24" - android:viewportWidth="24"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24"> <path android:fillColor="#000" android:pathData="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H4A1,1 0 0,1 3,15V11A1,1 0 0,1 4,10H20A1,1 0 0,1 21,11V15A1,1 0 0,1 20,16H13V18M4,2H20A1,1 0 0,1 21,3V7A1,1 0 0,1 20,8H4A1,1 0 0,1 3,7V3A1,1 0 0,1 4,2M9,6H10V4H9V6M9,14H10V12H9V14M5,4V6H7V4H5M5,12V14H7V12H5Z" /> diff --git a/app/src/main/res/drawable/ic_status.xml b/app/src/main/res/drawable/ic_status.xml index 9d934451718544ee04cf37abd86a3f311a82023a..46b6f2a0cad7ecb47e01e42e08b52b2e155e478b 100644 --- a/app/src/main/res/drawable/ic_status.xml +++ b/app/src/main/res/drawable/ic_status.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24.0" - android:viewportWidth="24.000002"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24.0" + android:viewportWidth="24.000002"> <path android:fillColor="#FF000000" android:pathData="M12,12m-10,0a10,10 0,1 1,20 0a10,10 0,1 1,-20 0" /> diff --git a/app/src/main/res/drawable/ic_status_channel.xml b/app/src/main/res/drawable/ic_status_channel.xml index ec005a7a26bf446156ae923b286b85c37b3f535c..7512ee6ae18466adbeb7616f42c3714b70450f3b 100644 --- a/app/src/main/res/drawable/ic_status_channel.xml +++ b/app/src/main/res/drawable/ic_status_channel.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24.0" - android:viewportWidth="24.000002"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24.0" + android:viewportWidth="24.000002"> <path android:fillColor="#FF000000" android:pathData="m12,2c-5.523,0 -10,4.477 -10,10s4.477,10 10,10 10,-4.477 10,-10 -4.477,-10 -10,-10zM10.663,7.049a0.625,0.625 0,0 1,0.063 0.004,0.625 0.625,0 0,1 0.062,0.011 0.625,0.625 0,0 1,0.06 0.017,0.625 0.625,0 0,1 0.058,0.023 0.625,0.625 0,0 1,0.056 0.028,0.625 0.625,0 0,1 0.053,0.034 0.625,0.625 0,0 1,0.049 0.039,0.625 0.625,0 0,1 0.045,0.044 0.625,0.625 0,0 1,0.04 0.048,0.625 0.625,0 0,1 0.035,0.051 0.625,0.625 0,0 1,0.03 0.055,0.625 0.625,0 0,1 0.024,0.058 0.625,0.625 0,0 1,0.018 0.06,0.625 0.625,0 0,1 0.013,0.061 0.625,0.625 0,0 1,0.006 0.063,0.625 0.625,0 0,1 0,0.063 0.625,0.625 0,0 1,-0.006 0.062l-0.271,1.953 2.78,-0.015 0.292,-2.109a0.625,0.625 0,0 1,0.007 -0.043,0.625 0.625,0 0,1 0.015,-0.061 0.625,0.625 0,0 1,0.021 -0.059,0.625 0.625,0 0,1 0.027,-0.056 0.625,0.625 0,0 1,0.033 -0.054,0.625 0.625,0 0,1 0.037,-0.05 0.625,0.625 0,0 1,0.043 -0.046,0.625 0.625,0 0,1 0.047,-0.041 0.625,0.625 0,0 1,0.05 -0.037,0.625 0.625,0 0,1 0.054,-0.032 0.625,0.625 0,0 1,0.057 -0.026,0.625 0.625,0 0,1 0.059,-0.02 0.625,0.625 0,0 1,0.061 -0.014,0.625 0.625,0 0,1 0.062,-0.008 0.625,0.625 0,0 1,0.063 -0.001,0.625 0.625,0 0,1 0.062,0.004 0.625,0.625 0,0 1,0.062 0.011,0.625 0.625,0 0,1 0.06,0.017 0.625,0.625 0,0 1,0.058 0.023,0.625 0.625,0 0,1 0.056,0.028 0.625,0.625 0,0 1,0.053 0.034,0.625 0.625,0 0,1 0.049,0.039 0.625,0.625 0,0 1,0.045 0.044,0.625 0.625,0 0,1 0.04,0.048 0.625,0.625 0,0 1,0.035 0.051,0.625 0.625,0 0,1 0.03,0.055 0.625,0.625 0,0 1,0.024 0.058,0.625 0.625,0 0,1 0.018,0.06 0.625,0.625 0,0 1,0.013 0.061,0.625 0.625,0 0,1 0.006,0.063 0.625,0.625 0,0 1,0 0.063,0.625 0.625,0 0,1 -0.006,0.062l-0.268,1.932 1.609,-0.008a0.625,0.625 0,0 1,0.041 0.001,0.625 0.625,0 0,1 0.062,0.006 0.625,0.625 0,0 1,0.061 0.012,0.625 0.625,0 0,1 0.06,0.019 0.625,0.625 0,0 1,0.058 0.024,0.625 0.625,0 0,1 0.055,0.03 0.625,0.625 0,0 1,0.052 0.035,0.625 0.625,0 0,1 0.048,0.04 0.625,0.625 0,0 1,0.043 0.045,0.625 0.625,0 0,1 0.039,0.049 0.625,0.625 0,0 1,0.034 0.053,0.625 0.625,0 0,1 0.028,0.056 0.625,0.625 0,0 1,0.023 0.058,0.625 0.625,0 0,1 0.017,0.06 0.625,0.625 0,0 1,0.011 0.062,0.625 0.625,0 0,1 0.004,0.063 0.625,0.625 0,0 1,-0.002 0.063,0.625 0.625,0 0,1 -0.008,0.062 0.625,0.625 0,0 1,-0.014 0.061,0.625 0.625,0 0,1 -0.02,0.059 0.625,0.625 0,0 1,-0.026 0.057,0.625 0.625,0 0,1 -0.032,0.054 0.625,0.625 0,0 1,-0.037 0.051,0.625 0.625,0 0,1 -0.041,0.046 0.625,0.625 0,0 1,-0.046 0.043,0.625 0.625,0 0,1 -0.05,0.038 0.625,0.625 0,0 1,-0.053 0.032,0.625 0.625,0 0,1 -0.057,0.026 0.625,0.625 0,0 1,-0.059 0.021,0.625 0.625,0 0,1 -0.06,0.015 0.625,0.625 0,0 1,-0.062 0.009,0.625 0.625,0 0,1 -0.063,0.003l-1.789,0.009 -0.331,2.388 1.712,-0.009a0.625,0.625 0,0 1,0.043 0.001,0.625 0.625,0 0,1 0.062,0.006 0.625,0.625 0,0 1,0.061 0.012,0.625 0.625,0 0,1 0.06,0.019 0.625,0.625 0,0 1,0.058 0.024,0.625 0.625,0 0,1 0.055,0.03 0.625,0.625 0,0 1,0.052 0.035,0.625 0.625,0 0,1 0.048,0.041 0.625,0.625 0,0 1,0.043 0.044,0.625 0.625,0 0,1 0.039,0.049 0.625,0.625 0,0 1,0.034 0.053,0.625 0.625,0 0,1 0.028,0.056 0.625,0.625 0,0 1,0.023 0.058,0.625 0.625,0 0,1 0.017,0.06 0.625,0.625 0,0 1,0.01 0.062,0.625 0.625,0 0,1 0.005,0.062 0.625,0.625 0,0 1,-0.002 0.063,0.625 0.625,0 0,1 -0.008,0.062 0.625,0.625 0,0 1,-0.014 0.061,0.625 0.625,0 0,1 -0.021,0.059 0.625,0.625 0,0 1,-0.026 0.057,0.625 0.625,0 0,1 -0.031,0.054 0.625,0.625 0,0 1,-0.037 0.05,0.625 0.625,0 0,1 -0.041,0.047 0.625,0.625 0,0 1,-0.046 0.042,0.625 0.625,0 0,1 -0.05,0.038 0.625,0.625 0,0 1,-0.053 0.032,0.625 0.625,0 0,1 -0.057,0.027 0.625,0.625 0,0 1,-0.059 0.021,0.625 0.625,0 0,1 -0.06,0.015 0.625,0.625 0,0 1,-0.062 0.009,0.625 0.625,0 0,1 -0.063,0.002l-1.892,0.01 -0.305,2.197a0.625,0.625 0,0 1,-0.004 0.026,0.625 0.625,0 0,1 -0.015,0.06 0.625,0.625 0,0 1,-0.02 0.06,0.625 0.625,0 0,1 -0.026,0.057 0.625,0.625 0,0 1,-0.032 0.054,0.625 0.625,0 0,1 -0.037,0.051 0.625,0.625 0,0 1,-0.042 0.046,0.625 0.625,0 0,1 -0.046,0.042 0.625,0.625 0,0 1,-0.05 0.038,0.625 0.625,0 0,1 -0.053,0.032 0.625,0.625 0,0 1,-0.057 0.027,0.625 0.625,0 0,1 -0.059,0.021 0.625,0.625 0,0 1,-0.06 0.015,0.625 0.625,0 0,1 -0.062,0.009 0.625,0.625 0,0 1,-0.063 0.002,0.625 0.625,0 0,1 -0.063,-0.003 0.625,0.625 0,0 1,-0.062 -0.01,0.625 0.625,0 0,1 -0.06,-0.016 0.625,0.625 0,0 1,-0.059 -0.022,0.625 0.625,0 0,1 -0.056,-0.028 0.625,0.625 0,0 1,-0.053 -0.033,0.625 0.625,0 0,1 -0.049,-0.038 0.625,0.625 0,0 1,-0.045 -0.043,0.625 0.625,0 0,1 -0.041,-0.047 0.625,0.625 0,0 1,-0.036 -0.051,0.625 0.625,0 0,1 -0.031,-0.054 0.625,0.625 0,0 1,-0.025 -0.058,0.625 0.625,0 0,1 -0.019,-0.059 0.625,0.625 0,0 1,-0.013 -0.061,0.625 0.625,0 0,1 -0.007,-0.063 0.625,0.625 0,0 1,-0.001 -0.063,0.625 0.625,0 0,1 0.005,-0.062l0.28,-2.019 -2.78,0.015 -0.302,2.176a0.625,0.625 0,0 1,-0.004 0.026,0.625 0.625,0 0,1 -0.015,0.061 0.625,0.625 0,0 1,-0.02 0.059,0.625 0.625,0 0,1 -0.026,0.057 0.625,0.625 0,0 1,-0.032 0.054,0.625 0.625,0 0,1 -0.037,0.051 0.625,0.625 0,0 1,-0.041 0.046,0.625 0.625,0 0,1 -0.046,0.042 0.625,0.625 0,0 1,-0.05 0.038,0.625 0.625,0 0,1 -0.054,0.032 0.625,0.625 0,0 1,-0.057 0.027,0.625 0.625,0 0,1 -0.059,0.021 0.625,0.625 0,0 1,-0.061 0.015,0.625 0.625,0 0,1 -0.062,0.009 0.625,0.625 0,0 1,-0.063 0.002,0.625 0.625,0 0,1 -0.063,-0.003 0.625,0.625 0,0 1,-0.062 -0.01,0.625 0.625,0 0,1 -0.061,-0.016 0.625,0.625 0,0 1,-0.059 -0.022,0.625 0.625,0 0,1 -0.056,-0.028 0.625,0.625 0,0 1,-0.053 -0.033,0.625 0.625,0 0,1 -0.049,-0.038 0.625,0.625 0,0 1,-0.045 -0.043,0.625 0.625,0 0,1 -0.041,-0.047 0.625,0.625 0,0 1,-0.036 -0.051,0.625 0.625,0 0,1 -0.031,-0.054 0.625,0.625 0,0 1,-0.025 -0.057,0.625 0.625,0 0,1 -0.019,-0.06 0.625,0.625 0,0 1,-0.013 -0.061,0.625 0.625,0 0,1 -0.007,-0.062 0.625,0.625 0,0 1,-0.001 -0.063,0.625 0.625,0 0,1 0.005,-0.063l0.277,-1.998 -1.418,0.007a0.625,0.625 0,0 1,-0.043 -0.001,0.625 0.625,0 0,1 -0.062,-0.006 0.625,0.625 0,0 1,-0.062 -0.012,0.625 0.625,0 0,1 -0.06,-0.019 0.625,0.625 0,0 1,-0.058 -0.024,0.625 0.625,0 0,1 -0.055,-0.03 0.625,0.625 0,0 1,-0.052 -0.036,0.625 0.625,0 0,1 -0.048,-0.04 0.625,0.625 0,0 1,-0.043 -0.045,0.625 0.625,0 0,1 -0.039,-0.049 0.625,0.625 0,0 1,-0.034 -0.053,0.625 0.625,0 0,1 -0.028,-0.056 0.625,0.625 0,0 1,-0.023 -0.058,0.625 0.625,0 0,1 -0.017,-0.06 0.625,0.625 0,0 1,-0.011 -0.062,0.625 0.625,0 0,1 -0.004,-0.063 0.625,0.625 0,0 1,0.002 -0.063,0.625 0.625,0 0,1 0.008,-0.062 0.625,0.625 0,0 1,0.014 -0.06,0.625 0.625,0 0,1 0.02,-0.059 0.625,0.625 0,0 1,0.026 -0.057,0.625 0.625,0 0,1 0.031,-0.054 0.625,0.625 0,0 1,0.037 -0.051,0.625 0.625,0 0,1 0.042,-0.046 0.625,0.625 0,0 1,0.046 -0.043,0.625 0.625,0 0,1 0.05,-0.037 0.625,0.625 0,0 1,0.054 -0.032,0.625 0.625,0 0,1 0.057,-0.027 0.625,0.625 0,0 1,0.059 -0.021,0.625 0.625,0 0,1 0.06,-0.015 0.625,0.625 0,0 1,0.062 -0.009,0.625 0.625,0 0,1 0.063,-0.002l1.598,-0.008 0.331,-2.388 -1.52,0.008a0.625,0.625 0,0 1,-0.042 -0.001,0.625 0.625,0 0,1 -0.062,-0.006 0.625,0.625 0,0 1,-0.062 -0.012,0.625 0.625,0 0,1 -0.06,-0.019 0.625,0.625 0,0 1,-0.058 -0.024,0.625 0.625,0 0,1 -0.055,-0.03 0.625,0.625 0,0 1,-0.052 -0.035,0.625 0.625,0 0,1 -0.048,-0.041 0.625,0.625 0,0 1,-0.043 -0.044,0.625 0.625,0 0,1 -0.039,-0.049 0.625,0.625 0,0 1,-0.034 -0.052,0.625 0.625,0 0,1 -0.028,-0.056 0.625,0.625 0,0 1,-0.023 -0.058,0.625 0.625,0 0,1 -0.017,-0.06 0.625,0.625 0,0 1,-0.01 -0.062,0.625 0.625,0 0,1 -0.005,-0.062 0.625,0.625 0,0 1,0.002 -0.063,0.625 0.625,0 0,1 0.008,-0.062 0.625,0.625 0,0 1,0.014 -0.061,0.625 0.625,0 0,1 0.021,-0.059 0.625,0.625 0,0 1,0.026 -0.057,0.625 0.625,0 0,1 0.031,-0.054 0.625,0.625 0,0 1,0.037 -0.05,0.625 0.625,0 0,1 0.041,-0.047 0.625,0.625 0,0 1,0.046 -0.042,0.625 0.625,0 0,1 0.05,-0.038 0.625,0.625 0,0 1,0.054 -0.032,0.625 0.625,0 0,1 0.057,-0.027 0.625,0.625 0,0 1,0.059 -0.021,0.625 0.625,0 0,1 0.06,-0.015 0.625,0.625 0,0 1,0.062 -0.009,0.625 0.625,0 0,1 0.063,-0.002l1.7,-0.009 0.295,-2.13a0.625,0.625 0,0 1,0.007 -0.043,0.625 0.625,0 0,1 0.015,-0.06 0.625,0.625 0,0 1,0.021 -0.059,0.625 0.625,0 0,1 0.027,-0.056 0.625,0.625 0,0 1,0.032 -0.054,0.625 0.625,0 0,1 0.038,-0.05 0.625,0.625 0,0 1,0.042 -0.046,0.625 0.625,0 0,1 0.047,-0.041 0.625,0.625 0,0 1,0.05 -0.037,0.625 0.625,0 0,1 0.054,-0.031 0.625,0.625 0,0 1,0.057 -0.026,0.625 0.625,0 0,1 0.06,-0.02 0.625,0.625 0,0 1,0.06 -0.014,0.625 0.625,0 0,1 0.062,-0.008 0.625,0.625 0,0 1,0.063 -0.002zM13.603,10.957 L10.823,10.972 10.492,13.36 13.271,13.345 13.603,10.958z" /> diff --git a/app/src/main/res/drawable/ic_status_channel_offline.xml b/app/src/main/res/drawable/ic_status_channel_offline.xml index 139b24530645908f703bce4bd413d593b46510ee..04fd35190bf658a58f08ebfdeea9f1c7baec9bbd 100644 --- a/app/src/main/res/drawable/ic_status_channel_offline.xml +++ b/app/src/main/res/drawable/ic_status_channel_offline.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24.0" - android:viewportWidth="24.0"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24.0" + android:viewportWidth="24.0"> <path android:fillColor="#FF000000" android:pathData="m10.66,7.04a0.625,0.625 0,0 0,-0.634 0.548l-0.295,2.13 -1.7,0.009a0.625,0.625 0,1 0,0.006 1.25l1.52,-0.008 -0.331,2.388 -1.598,0.008a0.625,0.625 0,1 0,0.006 1.25l1.418,-0.007 -0.277,1.998a0.625,0.625 0,1 0,1.238 0.172l0.302,-2.176 2.78,-0.015 -0.28,2.019a0.625,0.625 0,1 0,1.238 0.172l0.305,-2.197 1.892,-0.01a0.625,0.625 0,1 0,-0.007 -1.25l-1.712,0.009 0.331,-2.388 1.789,-0.009a0.625,0.625 0,1 0,-0.006 -1.25l-1.609,0.008 0.268,-1.932a0.625,0.625 0,0 0,-0.604 -0.719,0.625 0.625,0 0,0 -0.635,0.548l-0.292,2.109 -2.78,0.015 0.271,-1.953a0.625,0.625 0,0 0,-0.604 -0.719zM13.6,10.948 L13.269,13.336 10.489,13.35 10.82,10.963 13.6,10.948zM12,1.998c-5.514,0 -10,4.486 -10,10s4.486,10 10,10 10,-4.486 10,-10 -4.486,-10 -10,-10zM12,3.498c4.703,0 8.5,3.796 8.5,8.5s-3.797,8.5 -8.5,8.5 -8.5,-3.797 -8.5,-8.5 3.797,-8.5 8.5,-8.5z" /> diff --git a/app/src/main/res/drawable/ic_status_offline.xml b/app/src/main/res/drawable/ic_status_offline.xml index 3b528c7808cc9d342886cd9028962cc173748207..bb9098142531128f38715184ed14fa4385afe1a9 100644 --- a/app/src/main/res/drawable/ic_status_offline.xml +++ b/app/src/main/res/drawable/ic_status_offline.xml @@ -20,10 +20,10 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24.0" - android:viewportWidth="24.000002"> + android:width="24dp" + android:height="24dp" + android:viewportHeight="24.0" + android:viewportWidth="24.000002"> <path android:fillColor="#FF000000" android:pathData="m12,2c-5.514,0 -10,4.486 -10,10 0,5.514 4.486,10 10,10s10,-4.486 10,-10 -4.486,-10 -10,-10zM12,3.5c4.703,0 8.5,3.796 8.5,8.5 -0,4.703 -3.797,8.5 -8.5,8.5s-8.5,-3.797 -8.5,-8.5 3.797,-8.5 8.5,-8.5z" /> diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 064528dddd294cd3d50a27b848ac033f6811f074..c125e29594042093e45a1019184b6ba6c512e6d8 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -100,6 +100,6 @@ android:id="@+id/errorList" android:layout_width="match_parent" android:layout_height="wrap_content" - android:textIsSelectable="true"/> + android:textIsSelectable="true" /> </LinearLayout> </ScrollView> diff --git a/build.gradle.kts b/build.gradle.kts index ac8a8cc8df1791d40e4b6f9c66d15c37cf547752..6228f732b73cdbae4d619a5d923cea61c3c1fa75 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,17 +1,17 @@ buildscript { - repositories { - google() - jcenter() - } - dependencies { - classpath("com.android.tools.build:gradle:3.0.0-beta6") - classpath(kotlin("gradle-plugin")) - } + repositories { + google() + jcenter() + } + dependencies { + classpath("com.android.tools.build:gradle:3.0.0-beta6") + classpath(kotlin("gradle-plugin")) + } } allprojects { - repositories { - google() - jcenter() - } + repositories { + google() + jcenter() + } } diff --git a/gradle.properties b/gradle.properties index 5a528ef03fd2a84436c6a6dd5dc50aeaef63cd39..3084e11b14776bb5d80bc05500299e7852cde3bf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,16 +1,12 @@ # Project-wide Gradle settings. - # IDE (e.g. Android Studio) users: # Gradle settings configured through the IDE *will override* # any settings specified in this file. - # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html - # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. org.gradle.jvmargs=-Xmx2048m - # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects diff --git a/invokergenerator/build.gradle.kts b/invokergenerator/build.gradle.kts index de61f4ff878b2d9df2633aebc4b3ddb2f076801e..2a9f340d645394e64c37e2eec33fd963181e162c 100644 --- a/invokergenerator/build.gradle.kts +++ b/invokergenerator/build.gradle.kts @@ -1,4 +1,3 @@ - import org.gradle.kotlin.dsl.DependencyHandlerScope import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.java diff --git a/invokergenerator/src/main/java/de/kuschku/libquassel/annotations/InvokerProcessor.java b/invokergenerator/src/main/java/de/kuschku/libquassel/annotations/InvokerProcessor.java index 24fe7fbb10dee7e8c2a4dd30d7473c2df144a88b..2bcff1b559a04cb89dde43bd1e40737503ec30fa 100644 --- a/invokergenerator/src/main/java/de/kuschku/libquassel/annotations/InvokerProcessor.java +++ b/invokergenerator/src/main/java/de/kuschku/libquassel/annotations/InvokerProcessor.java @@ -47,38 +47,6 @@ public class InvokerProcessor extends AbstractProcessor { messager = processingEnv.getMessager(); } - private class SlotElement { - final ExecutableElement element; - final ExecutableType type; - - final String slotName; - - final Slot slot; - - public SlotElement(ExecutableElement element, ExecutableType type, String slotName, Slot slot) { - this.element = element; - this.type = type; - this.slotName = slotName; - this.slot = slot; - } - } - - private class SyncableElement { - PackageElement packageElement; - TypeElement typeElement; - - Syncable annotation; - - List<SlotElement> slots; - - public SyncableElement(PackageElement packageElement, TypeElement typeElement, Syncable annotation, List<SlotElement> slots) { - this.packageElement = packageElement; - this.typeElement = typeElement; - this.annotation = annotation; - this.slots = slots; - } - } - @Override public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { List<SyncableElement> syncableElements = new ArrayList<>(); @@ -238,4 +206,36 @@ public class InvokerProcessor extends AbstractProcessor { javaFile.writeTo(filer); } + + private class SlotElement { + final ExecutableElement element; + final ExecutableType type; + + final String slotName; + + final Slot slot; + + public SlotElement(ExecutableElement element, ExecutableType type, String slotName, Slot slot) { + this.element = element; + this.type = type; + this.slotName = slotName; + this.slot = slot; + } + } + + private class SyncableElement { + PackageElement packageElement; + TypeElement typeElement; + + Syncable annotation; + + List<SlotElement> slots; + + public SyncableElement(PackageElement packageElement, TypeElement typeElement, Syncable annotation, List<SlotElement> slots) { + this.packageElement = packageElement; + this.typeElement = typeElement; + this.annotation = annotation; + this.slots = slots; + } + } } diff --git a/lib/build.gradle.kts b/lib/build.gradle.kts index b6ac7eae9069de9e8065e9ca8af765848544337f..7655a3b9218ef7518a6febf511c281502fd08e52 100644 --- a/lib/build.gradle.kts +++ b/lib/build.gradle.kts @@ -1,4 +1,3 @@ - import org.gradle.api.Project import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.kotlin.dsl.* diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/ClientData.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/ClientData.kt index 4242b9cf0576397f6676e1c4e64f854f53d65b01..cbd491c3f32bfe869b83b5998c9afb7213a12565 100644 --- a/lib/src/main/java/de/kuschku/libquassel/protocol/ClientData.kt +++ b/lib/src/main/java/de/kuschku/libquassel/protocol/ClientData.kt @@ -7,5 +7,5 @@ data class ClientData( val buildDate: Instant, val clientFeatures: Quassel_Features, val protocolFeatures: Protocol_Features, - val supportedProtocols: ByteArray + val supportedProtocols: List<Protocol> ) diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/Protocol.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/Protocol.kt new file mode 100644 index 0000000000000000000000000000000000000000..355c82cd9dfb58f7ad25b4326a614cfeed3d9791 --- /dev/null +++ b/lib/src/main/java/de/kuschku/libquassel/protocol/Protocol.kt @@ -0,0 +1,14 @@ +package de.kuschku.libquassel.protocol + +enum class Protocol(private val value: Byte) { + Legacy(0x01), + Datastream(0x02); + + fun toDouble(): Double = value.toDouble() + fun toFloat(): Float = value.toFloat() + fun toLong(): Long = value.toLong() + fun toInt(): Int = value.toInt() + fun toChar(): Char = value.toChar() + fun toShort(): Short = value.toShort() + fun toByte(): Byte = value +} diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/QTypes.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/QTypes.kt index 8170d22fbf93ed59ea5e80de3bc7dcd676d050b4..090db4833a41bce18f21603efbd242d87e958a38 100644 --- a/lib/src/main/java/de/kuschku/libquassel/protocol/QTypes.kt +++ b/lib/src/main/java/de/kuschku/libquassel/protocol/QTypes.kt @@ -1,14 +1,13 @@ package de.kuschku.libquassel.protocol import de.kuschku.libquassel.protocol.primitive.serializer.StringSerializer -import de.kuschku.libquassel.protocol.primitive.serializer.deserializeString -import de.kuschku.libquassel.protocol.primitive.serializer.serializeString import de.kuschku.libquassel.quassel.BufferInfo import de.kuschku.libquassel.quassel.ProtocolFeature import de.kuschku.libquassel.quassel.QuasselFeature import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork import de.kuschku.libquassel.util.Flags import de.kuschku.libquassel.util.ShortFlags +import de.kuschku.libquassel.util.helpers.deserializeString import java.nio.ByteBuffer typealias QStringList = List<String?> @@ -48,23 +47,19 @@ typealias UShort = Short typealias UInt = Int typealias ULong = Long -inline val SLOT - get() = Throwable().stackTrace.first().methodName - typealias ARG = QVariant_ -fun QVariantMap.toVariantList(): QVariantList = - entries.flatMap { (key, value) -> - listOf(QVariant_(key.serializeString(StringSerializer.UTF8), Type.QByteArray), value) +fun QVariantList.toVariantMap(): QVariantMap { + val map = HashMap<String, QVariant_>() + var i = 0 + while (i < size) { + val key = get(i).value<ByteBuffer?>().deserializeString(StringSerializer.UTF8) ?: "" + val value = get(i + 1) + map.put(key, value) + i += 2 } - -fun QVariantList.toVariantMap(): QVariantMap = - (0 until size step 2).map { - Pair( - get(it).value<ByteBuffer?>().deserializeString(StringSerializer.UTF8) ?: "", - get(it + 1) - ) - }.toMap() + return map +} fun <K, V> List<Map<K, V>>.transpose(): Map<K, List<V>> { val result = mutableMapOf<K, MutableList<V>>() @@ -75,41 +70,3 @@ fun <K, V> List<Map<K, V>>.transpose(): Map<K, List<V>> { } return result } - - -fun <K, V> Map<K, List<V>>.transpose(): List<Map<K, V>> { - val result = MutableList(values.map(List<*>::size).max() ?: 0) { mutableMapOf<K, V>() } - this.entries.forEach { (key, values) -> - values.forEachIndexed { index, value -> - result[index][key] = value - } - } - return result -} - -fun nickFromMask(mask: String): String { - val (nick, _, _) = splitHostMask(mask) - return nick -} - -fun userFromMask(mask: String): String { - val (_, user, _) = splitHostMask(mask) - return user -} - -fun hostFromMask(mask: String): String { - val (_, _, host) = splitHostMask(mask) - return host -} - -fun splitHostMask(mask: String): Triple<String, String, String> { - if (!mask.contains("@")) - return Triple(mask, "", "") - - val (userPart, host) = mask.split("@", limit = 2) - if (!userPart.contains("!")) - return Triple(mask, "", host) - - val (nick, user) = userPart.split('!', limit = 2) - return Triple(nick, user, host) -} diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/message/InitDataSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/message/InitDataSerializer.kt index 286892e6f073092a455a6d3691ddbe2c0b052bf8..2f85f5ac72bdaa5e91432f99c5bed5665c005177 100644 --- a/lib/src/main/java/de/kuschku/libquassel/protocol/message/InitDataSerializer.kt +++ b/lib/src/main/java/de/kuschku/libquassel/protocol/message/InitDataSerializer.kt @@ -2,8 +2,8 @@ package de.kuschku.libquassel.protocol.message import de.kuschku.libquassel.protocol.* import de.kuschku.libquassel.protocol.primitive.serializer.StringSerializer -import de.kuschku.libquassel.protocol.primitive.serializer.deserializeString -import de.kuschku.libquassel.protocol.primitive.serializer.serializeString +import de.kuschku.libquassel.util.helpers.deserializeString +import de.kuschku.libquassel.util.helpers.serializeString import java.nio.ByteBuffer object InitDataSerializer : SignalProxyMessageSerializer<SignalProxyMessage.InitData> { diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/message/InitRequestSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/message/InitRequestSerializer.kt index 439de03911592767650850b0d0834623573fac51..4a891f52a3c7e09da630433129d7bf673e376f2b 100644 --- a/lib/src/main/java/de/kuschku/libquassel/protocol/message/InitRequestSerializer.kt +++ b/lib/src/main/java/de/kuschku/libquassel/protocol/message/InitRequestSerializer.kt @@ -4,9 +4,9 @@ import de.kuschku.libquassel.protocol.QVariantList import de.kuschku.libquassel.protocol.QVariant_ import de.kuschku.libquassel.protocol.Type import de.kuschku.libquassel.protocol.primitive.serializer.StringSerializer -import de.kuschku.libquassel.protocol.primitive.serializer.deserializeString -import de.kuschku.libquassel.protocol.primitive.serializer.serializeString import de.kuschku.libquassel.protocol.value +import de.kuschku.libquassel.util.helpers.deserializeString +import de.kuschku.libquassel.util.helpers.serializeString import java.nio.ByteBuffer object InitRequestSerializer : SignalProxyMessageSerializer<SignalProxyMessage.InitRequest> { diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/message/RpcCallSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/message/RpcCallSerializer.kt index 33e1bab0f8e421074aa4f49909f73ad1a1635cf2..b0acbfe5b93c4ef099896cdf7a9502e77444d651 100644 --- a/lib/src/main/java/de/kuschku/libquassel/protocol/message/RpcCallSerializer.kt +++ b/lib/src/main/java/de/kuschku/libquassel/protocol/message/RpcCallSerializer.kt @@ -4,9 +4,9 @@ import de.kuschku.libquassel.protocol.QVariantList import de.kuschku.libquassel.protocol.QVariant_ import de.kuschku.libquassel.protocol.Type import de.kuschku.libquassel.protocol.primitive.serializer.StringSerializer -import de.kuschku.libquassel.protocol.primitive.serializer.deserializeString -import de.kuschku.libquassel.protocol.primitive.serializer.serializeString import de.kuschku.libquassel.protocol.value +import de.kuschku.libquassel.util.helpers.deserializeString +import de.kuschku.libquassel.util.helpers.serializeString import java.nio.ByteBuffer object RpcCallSerializer : SignalProxyMessageSerializer<SignalProxyMessage.RpcCall> { diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/message/SyncMessageSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/message/SyncMessageSerializer.kt index 3af3823515e987a745e8cd284a39ffea99abcdea..27f177c3aa02d0bc47e77b612d65048b8bcf7f36 100644 --- a/lib/src/main/java/de/kuschku/libquassel/protocol/message/SyncMessageSerializer.kt +++ b/lib/src/main/java/de/kuschku/libquassel/protocol/message/SyncMessageSerializer.kt @@ -4,9 +4,9 @@ import de.kuschku.libquassel.protocol.QVariantList import de.kuschku.libquassel.protocol.QVariant_ import de.kuschku.libquassel.protocol.Type import de.kuschku.libquassel.protocol.primitive.serializer.StringSerializer -import de.kuschku.libquassel.protocol.primitive.serializer.deserializeString -import de.kuschku.libquassel.protocol.primitive.serializer.serializeString import de.kuschku.libquassel.protocol.value +import de.kuschku.libquassel.util.helpers.deserializeString +import de.kuschku.libquassel.util.helpers.serializeString import java.nio.ByteBuffer object SyncMessageSerializer : SignalProxyMessageSerializer<SignalProxyMessage.SyncMessage> { diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/ProtocolSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/ProtocolInfoSerializer.kt similarity index 77% rename from lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/ProtocolSerializer.kt rename to lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/ProtocolInfoSerializer.kt index 90f56d0fbd050d0ff207cd58ca77be6a8da837e0..aa29106145c7317fbf40ac3b4fd43a010bc0744d 100644 --- a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/ProtocolSerializer.kt +++ b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/ProtocolInfoSerializer.kt @@ -2,19 +2,20 @@ package de.kuschku.libquassel.protocol.primitive.serializer import de.kuschku.libquassel.protocol.Protocol_Features import de.kuschku.libquassel.protocol.Quassel_Features -import de.kuschku.libquassel.quassel.Protocol +import de.kuschku.libquassel.quassel.ProtocolInfo import de.kuschku.libquassel.util.nio.ChainedByteBuffer import java.nio.ByteBuffer -object ProtocolSerializer : Serializer<Protocol> { - override fun serialize(buffer: ChainedByteBuffer, data: Protocol, features: Quassel_Features) { +object ProtocolInfoSerializer : Serializer<ProtocolInfo> { + override fun serialize(buffer: ChainedByteBuffer, data: ProtocolInfo, + features: Quassel_Features) { ByteSerializer.serialize(buffer, data.flags.toByte(), features) ShortSerializer.serialize(buffer, data.data, features) ByteSerializer.serialize(buffer, data.version, features) } - override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): Protocol { - return Protocol( + override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): ProtocolInfo { + return ProtocolInfo( Protocol_Features.of(ByteSerializer.deserialize(buffer, features).toInt()), ShortSerializer.deserialize(buffer, features), ByteSerializer.deserialize(buffer, features) diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/StringSerializer.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/StringSerializer.kt index 7ea7209f6d44e0031bb21186a404338f6a4d4bc4..d893b2d44e4cc665728864f6f76c3b86d5c4f0ed 100644 --- a/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/StringSerializer.kt +++ b/lib/src/main/java/de/kuschku/libquassel/protocol/primitive/serializer/StringSerializer.kt @@ -1,6 +1,5 @@ package de.kuschku.libquassel.protocol.primitive.serializer -import de.kuschku.libquassel.protocol.QVariant import de.kuschku.libquassel.protocol.Quassel_Features import de.kuschku.libquassel.util.nio.ChainedByteBuffer import java.nio.ByteBuffer @@ -101,22 +100,3 @@ abstract class StringSerializer( } } } - -fun QVariant<ByteBuffer>?.deserializeString( - serializer: StringSerializer) = if (this?.data == null) { - null -} else { - serializer.deserializeAll(data) -} - -fun ByteBuffer?.deserializeString(serializer: StringSerializer) = if (this == null) { - null -} else { - serializer.deserializeAll(this) -} - -fun String?.serializeString(serializer: StringSerializer) = if (this == null) { - null -} else { - serializer.serialize(this) -} diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/NetworkInfo.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/NetworkInfo.kt deleted file mode 100644 index 054800e4bde63885f23264c4964e9edc4c329e34..0000000000000000000000000000000000000000 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/NetworkInfo.kt +++ /dev/null @@ -1,2 +0,0 @@ -package de.kuschku.libquassel.quassel - diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/ProtocolMeta.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/ProtocolInfo.kt similarity index 51% rename from lib/src/main/java/de/kuschku/libquassel/quassel/ProtocolMeta.kt rename to lib/src/main/java/de/kuschku/libquassel/quassel/ProtocolInfo.kt index 69edb4e989435e7a8a56692fc1aa5aba35938c79..c90699c8c0d967a291f34bb4222054e31c91446d 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/ProtocolMeta.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/ProtocolInfo.kt @@ -2,4 +2,4 @@ package de.kuschku.libquassel.quassel import de.kuschku.libquassel.protocol.Protocol_Features -data class Protocol(val flags: Protocol_Features, val data: Short, val version: Byte) +data class ProtocolInfo(val flags: Protocol_Features, val data: Short, val version: Byte) diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Identity.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Identity.kt index 0275c6bb55c718f519d12a37f1f92adefb17b0ad..0acd3e3351729d6564c55c6003ce669c709d4624 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Identity.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Identity.kt @@ -50,7 +50,8 @@ class Identity constructor( setAutoAwayEnabled(properties["autoAwayEnabled"].valueOr(this::autoAwayEnabled)) setAutoAwayTime(properties["autoAwayTime"].valueOr(this::autoAwayTime)) setAutoAwayReason(properties["autoAwayReason"].valueOr(this::autoAwayReason)) - setAutoAwayReasonEnabled(properties["autoAwayReasonEnabled"].valueOr(this::autoAwayReasonEnabled)) + setAutoAwayReasonEnabled( + properties["autoAwayReasonEnabled"].valueOr(this::autoAwayReasonEnabled)) setDetachAwayEnabled(properties["detachAwayEnabled"].valueOr(this::detachAwayEnabled)) setDetachAwayReason(properties["detachAwayReason"].valueOr(this::detachAwayReason)) setDetachAwayReasonEnabled( diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt index 68b3fc1396060db546162e49796a1aa917cd6e59..f9a51c952dc6d102e6ecaf2a74f285aae5106617 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt @@ -1,8 +1,12 @@ package de.kuschku.libquassel.quassel.syncables -import de.kuschku.libquassel.protocol.* +import de.kuschku.libquassel.protocol.QVariantMap +import de.kuschku.libquassel.protocol.QVariant_ +import de.kuschku.libquassel.protocol.Type +import de.kuschku.libquassel.protocol.valueOr import de.kuschku.libquassel.quassel.syncables.interfaces.IIrcUser import de.kuschku.libquassel.session.SignalProxy +import de.kuschku.libquassel.util.irc.HostmaskHelper import org.threeten.bp.Instant import java.nio.charset.Charset @@ -200,7 +204,7 @@ class IrcUser( override fun updateHostmask(mask: String) { if (hostMask() != mask) { - val (user, host, _) = splitHostMask(mask) + val (user, host, _) = HostmaskHelper.split(mask) setUser(user) setHost(host) } @@ -263,9 +267,9 @@ class IrcUser( renameObject("${network().networkId()}/$_nick") } - private var _nick: String = nickFromMask(hostmask) - private var _user: String = userFromMask(hostmask) - private var _host: String = hostFromMask(hostmask) + private var _nick: String = HostmaskHelper.nick(hostmask) + private var _user: String = HostmaskHelper.user(hostmask) + private var _host: String = HostmaskHelper.host(hostmask) private var _realName: String = "" private var _account: String = "" private var _awayMessage: String = "" diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt index c8c731fbf635cf11a31d9e533fdbbbf508f03538..dbd5d8bcaa46e32c0558a34de0ddb30c76910c57 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt @@ -3,11 +3,12 @@ package de.kuschku.libquassel.quassel.syncables import de.kuschku.libquassel.protocol.* import de.kuschku.libquassel.protocol.Type import de.kuschku.libquassel.protocol.primitive.serializer.StringSerializer -import de.kuschku.libquassel.protocol.primitive.serializer.serializeString import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork.* import de.kuschku.libquassel.session.SignalProxy import de.kuschku.libquassel.util.helpers.getOr +import de.kuschku.libquassel.util.helpers.serializeString +import de.kuschku.libquassel.util.irc.HostmaskHelper import java.nio.ByteBuffer import java.nio.charset.Charset import java.util.* @@ -313,7 +314,7 @@ class Network constructor( } fun newIrcUser(hostMask: String, initData: QVariantMap = emptyMap()): IrcUser { - val nick = nickFromMask(hostMask).toLowerCase(Locale.ENGLISH) + val nick = HostmaskHelper.nick(hostMask).toLowerCase(Locale.ENGLISH) val user = ircUser(nick) return if (user == null) { val ircUser = IrcUser(hostMask, this, proxy) @@ -767,11 +768,14 @@ class Network constructor( setMyNick(properties["myNick"].valueOr(this::myNick)) setLatency(properties["latency"].valueOr(this::latency)) setCodecForServer( - properties["codecForServer"].value(codecForServer().serializeString(StringSerializer.UTF8))) + properties["codecForServer"].value(codecForServer().serializeString(StringSerializer.UTF8)) + ) setCodecForEncoding(properties["codecForEncoding"].value( - codecForEncoding().serializeString(StringSerializer.UTF8))) + codecForEncoding().serializeString(StringSerializer.UTF8)) + ) setCodecForDecoding(properties["codecForDecoding"].value( - codecForDecoding().serializeString(StringSerializer.UTF8))) + codecForDecoding().serializeString(StringSerializer.UTF8)) + ) setIdentity(properties["identityId"].valueOr(this::identity)) setConnected(properties["isConnected"].valueOr(this::isConnected)) setConnectionState(properties["connectionState"].value(connectionState().value)) @@ -785,10 +789,12 @@ class Network constructor( setSaslPassword(properties["saslPassword"].valueOr(this::saslPassword)) setUseAutoReconnect(properties["useAutoReconnect"].valueOr(this::useAutoReconnect)) setAutoReconnectInterval( - properties["autoReconnectInterval"].valueOr(this::autoReconnectInterval)) + properties["autoReconnectInterval"].valueOr(this::autoReconnectInterval) + ) setAutoReconnectRetries(properties["autoReconnectRetries"].valueOr(this::autoReconnectRetries)) setUnlimitedReconnectRetries( - properties["unlimitedReconnectRetries"].valueOr(this::unlimitedReconnectRetries)) + properties["unlimitedReconnectRetries"].valueOr(this::unlimitedReconnectRetries) + ) setRejoinChannels(properties["rejoinChannels"].valueOr(this::rejoinChannels)) setUseCustomMessageRate(properties["useCustomMessageRate"].valueOr(this::useCustomMessageRate)) setMessageRateBurstSize(properties["msgRateBurstSize"].valueOr(this::messageRateBurstSize)) @@ -797,7 +803,7 @@ class Network constructor( } fun updateNickFromMask(mask: String): IrcUser { - val nick = nickFromMask(mask).toLowerCase(Locale.ENGLISH) + val nick = HostmaskHelper.nick(mask).toLowerCase(Locale.ENGLISH) val user = _ircUsers[nick] return if (user != null) { user.updateHostmask(mask) diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/RpcHandler.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/RpcHandler.kt index 609d8bc078224848f20feb2aa583a261a829e552..7214a40ff6717f88c24cad9a5d65266b7b7e19b3 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/RpcHandler.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/RpcHandler.kt @@ -2,11 +2,11 @@ package de.kuschku.libquassel.quassel.syncables import de.kuschku.libquassel.protocol.* import de.kuschku.libquassel.protocol.primitive.serializer.StringSerializer -import de.kuschku.libquassel.protocol.primitive.serializer.deserializeString import de.kuschku.libquassel.quassel.BufferInfo import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork import de.kuschku.libquassel.quassel.syncables.interfaces.IRpcHandler import de.kuschku.libquassel.session.SignalProxy +import de.kuschku.libquassel.util.helpers.deserializeString import java.nio.ByteBuffer class RpcHandler(override val proxy: SignalProxy) : IRpcHandler { diff --git a/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt b/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt index c778ad2c76da7680397eaf0269a581022b92383f..73ca50adbb5e600f5c54e07aabd8dece15a2eb05 100644 --- a/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt +++ b/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt @@ -6,7 +6,7 @@ import de.kuschku.libquassel.protocol.message.HandshakeMessage import de.kuschku.libquassel.protocol.message.SignalProxyMessage import de.kuschku.libquassel.protocol.primitive.serializer.HandshakeVariantMapSerializer import de.kuschku.libquassel.protocol.primitive.serializer.IntSerializer -import de.kuschku.libquassel.protocol.primitive.serializer.ProtocolSerializer +import de.kuschku.libquassel.protocol.primitive.serializer.ProtocolInfoSerializer import de.kuschku.libquassel.protocol.primitive.serializer.VariantListSerializer import de.kuschku.libquassel.quassel.ProtocolFeature import de.kuschku.libquassel.util.compatibility.CompatibilityUtils @@ -81,7 +81,7 @@ class CoreConnection( sizeBuffer.clear() channel?.read(sizeBuffer) sizeBuffer.flip() - val protocol = ProtocolSerializer.deserialize(sizeBuffer, session.coreFeatures) + val protocol = ProtocolInfoSerializer.deserialize(sizeBuffer, session.coreFeatures) log(DEBUG, "Protocol negotiated $protocol") diff --git a/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt b/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt index 2bdb870bcbf67684364d8c2f19c29e3134119e9e..0a1bd77151a0fef351f7c735c94db1f392eb45e1 100644 --- a/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt +++ b/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt @@ -24,9 +24,9 @@ class ObjectStorage(private val proxy: SignalProxy) { objectTree.remove("${obj.className}:$old") proxy.dispatch( SignalProxyMessage.RpcCall("__objectRenamed__", listOf( - QVariant_(obj.className, Type.QString), QVariant_(new, Type.QString), - QVariant_(old, Type.QString)) - )) + QVariant_(obj.className, Type.QString), QVariant_(new, Type.QString), + QVariant_(old, Type.QString)) + )) } fun get(className: QType, objectName: String) = get(className.typeName, objectName) diff --git a/lib/src/main/java/de/kuschku/libquassel/util/helpers/ByteBufferHelper.kt b/lib/src/main/java/de/kuschku/libquassel/util/helpers/ByteBufferHelper.kt index 9ac71cbcb4a5e6c0496e8aa71ce8646ec79d5dee..0401092c787417e54da64f19e8b19c477104bbd1 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/helpers/ByteBufferHelper.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/helpers/ByteBufferHelper.kt @@ -1,5 +1,6 @@ package de.kuschku.libquassel.util.helpers +import de.kuschku.libquassel.protocol.primitive.serializer.StringSerializer import java.nio.ByteBuffer fun ByteBuffer.copyTo(target: ByteBuffer) { @@ -8,3 +9,9 @@ fun ByteBuffer.copyTo(target: ByteBuffer) { while (target.hasRemaining()) target.put(this.get()) } + +fun ByteBuffer?.deserializeString(serializer: StringSerializer) = if (this == null) { + null +} else { + serializer.deserializeAll(this) +} diff --git a/lib/src/main/java/de/kuschku/libquassel/util/helpers/StringHelper.kt b/lib/src/main/java/de/kuschku/libquassel/util/helpers/StringHelper.kt index bd4f543fd88ce561a30268db3f05a5db3f8b29be..a1af7c17d19361bef2f4f424dade15c02b115a01 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/helpers/StringHelper.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/helpers/StringHelper.kt @@ -1,8 +1,16 @@ package de.kuschku.libquassel.util.helpers +import de.kuschku.libquassel.protocol.primitive.serializer.StringSerializer + /** * Because Android’s String::split is broken * * @return A list with all substrings of length 1, in order */ fun String.split() = Array(length) { this.substring(it, it + 1) } + +fun String?.serializeString(serializer: StringSerializer) = if (this == null) { + null +} else { + serializer.serialize(this) +} diff --git a/lib/src/main/java/de/kuschku/libquassel/util/irc/HostmaskHelper.kt b/lib/src/main/java/de/kuschku/libquassel/util/irc/HostmaskHelper.kt new file mode 100644 index 0000000000000000000000000000000000000000..978b600d4e5afe9b9c4355b10f2fdb925cd29edb --- /dev/null +++ b/lib/src/main/java/de/kuschku/libquassel/util/irc/HostmaskHelper.kt @@ -0,0 +1,33 @@ +package de.kuschku.libquassel.util.irc + +object HostmaskHelper { + fun nick(mask: String): String { + val (nick, _, _) = split(mask) + return nick + } + + fun user(mask: String): String { + val (_, user, _) = split(mask) + return user + } + + fun host(mask: String): String { + val (_, _, host) = split(mask) + return host + } + + fun split(mask: String): Triple<String, String, String> { + val userPartHostSplit = mask.split("@", limit = 2) + if (userPartHostSplit.size < 2) + return Triple(mask, "", "") + + val (userPart, host) = userPartHostSplit + + val nickUserSplit = userPart.split('!', limit = 2) + if (nickUserSplit.size < 2) + return Triple(mask, "", host) + + val (nick, user) = nickUserSplit + return Triple(nick, user, host) + } +}