From 137a6446b744c7a21b31cfc20f814fb8a99ad5fd Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Sat, 30 Sep 2017 02:01:29 +0200 Subject: [PATCH] Fixed Lint issues --- app/build.gradle.kts | 3 - .../persistence/PersistentSession.kt | 3 +- .../persistence/QuasselDatabase.kt | 2 +- .../quasseldroid_ng/ui/chat/ChatActivity.kt | 6 +- .../ui/setup/accounts/AccountAdapter.kt | 4 +- .../setup/accounts/AccountSelectionSlide.kt | 8 +- .../kuschku/quasseldroid_ng/util/Patterns.kt | 61 +++-- .../util/helper/LiveDataHelper.kt | 7 +- .../util/helper/ObservableHelper.kt | 7 +- .../util/helper/SharedPreferencesHelper.kt | 2 + .../layout-sw600dp-land/activity_setup.xml | 4 +- .../res/layout-sw600dp-land/setup_slide.xml | 4 +- .../res/layout-sw600dp/activity_setup.xml | 4 +- .../main/res/layout-sw600dp/setup_slide.xml | 4 +- app/src/main/res/layout/activity_main.xml | 4 +- app/src/main/res/layout/activity_setup.xml | 4 +- ...ent_chatlist.xml => content_chat_list.xml} | 0 ...ent_nicklist.xml => content_nick_list.xml} | 0 .../main/res/layout/setup_account_edit.xml | 255 +++++++++--------- .../res/layout/widget_core_account_add.xml | 47 ++-- .../kuschku/libquassel/annotations/Slot.java | 1 + .../libquassel/annotations/Syncable.java | 1 + .../annotations/InvokerProcessor.java | 12 +- .../kuschku/libquassel/protocol/QVariant.kt | 4 +- .../quassel/syncables/AliasManager.kt | 2 +- .../libquassel/quassel/syncables/Network.kt | 10 +- .../libquassel/session/CoreConnection.kt | 3 +- .../libquassel/session/ProtocolHandler.kt | 1 + .../libquassel/session/SessionManager.kt | 4 +- 29 files changed, 234 insertions(+), 233 deletions(-) rename app/src/main/res/layout/{content_chatlist.xml => content_chat_list.xml} (100%) rename app/src/main/res/layout/{content_nicklist.xml => content_nick_list.xml} (100%) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 213a32a31..7f60f209e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -117,9 +117,6 @@ dependencies { implementation(project(":lib")) - implementation(project(":invokerannotations")) - kapt(project(":invokergenerator")) - testImplementation("android.arch.persistence.room:testing:1.0.0-alpha9") testImplementation("junit:junit:4.12") diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/PersistentSession.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/PersistentSession.kt index 24b824652..8942ef9fe 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/PersistentSession.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/PersistentSession.kt @@ -22,5 +22,6 @@ class PersistentSession : ISession { override val networkConfig: NetworkConfig? = null override fun close() = Unit - override val state = BehaviorSubject.createDefault(ConnectionState.DISCONNECTED) + override val state: BehaviorSubject<ConnectionState> + = BehaviorSubject.createDefault(ConnectionState.DISCONNECTED) } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselDatabase.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselDatabase.kt index 3b07cd915..f3a7a825a 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselDatabase.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselDatabase.kt @@ -38,7 +38,7 @@ abstract class QuasselDatabase : RoomDatabase() { ) { class MessageTypeConverters { @TypeConverter - fun convertInstant(value: Long) = Instant.ofEpochMilli(value) + fun convertInstant(value: Long): Instant = Instant.ofEpochMilli(value) @TypeConverter fun convertInstant(value: Instant) = value.toEpochMilli() diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt index b77956e67..1357f85f2 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt @@ -1,6 +1,7 @@ package de.kuschku.quasseldroid_ng.ui.chat import android.app.Activity +import android.arch.lifecycle.LiveData import android.arch.lifecycle.Observer import android.content.Context import android.os.Bundle @@ -13,6 +14,7 @@ import android.widget.Button import android.widget.TextView import butterknife.BindView import butterknife.ButterKnife +import de.kuschku.libquassel.quassel.syncables.BufferViewManager import de.kuschku.libquassel.session.* import de.kuschku.libquassel.util.compatibility.LoggingHandler import de.kuschku.libquassel.util.compatibility.LoggingHandler.LogLevel.INFO @@ -41,10 +43,10 @@ class ChatActivity : ServiceBoundActivity() { private val handler = AndroidHandlerThread("Chat") - private val sessionManager = backend.map(Backend::sessionManager) + private val sessionManager: LiveData<SessionManager?> = backend.map(Backend::sessionManager) private val state = sessionManager.switchMapRx(SessionManager::state) - private val bufferViewManager + private val bufferViewManager: LiveData<BufferViewManager?> = sessionManager.switchMapRx(SessionManager::session).map(ISession::bufferViewManager) private val bufferViewConfigs = bufferViewManager.switchMapRx { manager -> manager.bufferViewConfigIds.map { ids -> diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountAdapter.kt index dc2a18205..ce4bdbb4e 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountAdapter.kt @@ -1,5 +1,6 @@ package de.kuschku.quasseldroid_ng.ui.setup.accounts +import android.annotation.SuppressLint import android.arch.paging.PagedListAdapter import android.support.v7.recyclerview.extensions.DiffCallback import android.support.v7.widget.AppCompatImageButton @@ -76,7 +77,8 @@ class AccountAdapter : selectionListeners.remove(f) } - override fun onBindViewHolder(holder: AccountViewHolder, position: Int) { + override fun onBindViewHolder(holder: AccountViewHolder, @SuppressLint( + "RecyclerView") position: Int) { when (holder) { is AccountViewHolder.Item -> { val account = getItem(position) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountSelectionSlide.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountSelectionSlide.kt index 7e5718e59..a0198fb1a 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountSelectionSlide.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/accounts/AccountSelectionSlide.kt @@ -43,18 +43,18 @@ class AccountSelectionSlide : SlideFragment() { savedInstanceState: Bundle?): View { val view = inflater.inflate(R.layout.setup_select_account, container, false) ButterKnife.bind(this, view) - val accountViewmodel = ViewModelProviders.of(this).get( + val accountViewModel = ViewModelProviders.of(this).get( AccountViewModel::class.java) val firstObserver = object : Observer<PagedList<AccountDatabase.Account>?> { override fun onChanged(t: PagedList<AccountDatabase.Account>?) { if (t?.isEmpty() != false) startActivityForResult(Intent(context, AccountSetupActivity::class.java), REQUEST_CREATE_FIRST) - accountViewmodel.accounts.removeObserver(this) + accountViewModel.accounts.removeObserver(this) } } - accountViewmodel.accounts.observe(this, firstObserver) - accountViewmodel.accounts.observe(this, Observer(adapter::setList)) + accountViewModel.accounts.observe(this, firstObserver) + accountViewModel.accounts.observe(this, Observer(adapter::setList)) accountList.layoutManager = LinearLayoutManager(context) accountList.itemAnimator = DefaultItemAnimator() accountList.adapter = adapter diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/Patterns.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/Patterns.kt index c4e55304c..4ae713468 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/Patterns.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/Patterns.kt @@ -1,64 +1,63 @@ package de.kuschku.quasseldroid_ng.util +import org.intellij.lang.annotations.Language import java.util.regex.Pattern @SuppressWarnings("Access") object Patterns { + @Language("RegExp") const val IPv4 = "(?:(?:[0-1]?[0-9]?[0-9]|2[0-5][0-5])\\.){3}(?:[0-1]?[0-9]?[0-9]|2[0-5][0-5])" + @Language("RegExp") const val IPv6 - = "(?:(?:(?:[0-9a-fA-F]{1,4}:){7}(?:[0-9a-fA-F]{1,4}))|(?:(?:(?:[0-9a-fA-F]{1,4}:){1,7}|:):(?:[0-9a-fA-F]{1,4}))|(?:(?:(?:[0-9a-fA-F]{1,4}:){1,6}|:):(?:[0-9a-fA-F]{1,4}:){0,1}(?:[0-9a-fA-F]{1,4}))|(?:(?:(?:[0-9a-fA-F]{1,4}:){1,5}|:):(?:[0-9a-fA-F]{1,4}:){0,2}(?:[0-9a-fA-F]{1,4}))|(?:(?:(?:[0-9a-fA-F]{1,4}:){1,4}|:):(?:[0-9a-fA-F]{1,4}:){0,3}(?:[0-9a-fA-F]{1,4}))|(?:(?:(?:[0-9a-fA-F]{1,4}:){1,3}|:):(?:[0-9a-fA-F]{1,4}:){1,4}(?:[0-9a-fA-F]{1,4}))|(?:(?:(?:[0-9a-fA-F]{1,4}:){1,2}|:):(?:[0-9a-fA-F]{1,4}:){0,5}(?:[0-9a-fA-F]{1,4}))|(?:(?:(?:[0-9a-fA-F]{1,4}:)|:):(?:[0-9a-fA-F]{1,4}:){0,6}(?:[0-9a-fA-F]{1,4})))" + = "(?:(?:(?:[0-9a-fA-F]{1,4}:){7}(?:[0-9a-fA-F]{1,4}))|(?:(?:(?:[0-9a-fA-F]{1,4}:){1,7}|:):(?:[0-9a-fA-F]{1,4}))|(?:(?:(?:[0-9a-fA-F]{1,4}:){1,6}|:):(?:[0-9a-fA-F]{1,4}:)?(?:[0-9a-fA-F]{1,4}))|(?:(?:(?:[0-9a-fA-F]{1,4}:){1,5}|:):(?:[0-9a-fA-F]{1,4}:){0,2}(?:[0-9a-fA-F]{1,4}))|(?:(?:(?:[0-9a-fA-F]{1,4}:){1,4}|:):(?:[0-9a-fA-F]{1,4}:){0,3}(?:[0-9a-fA-F]{1,4}))|(?:(?:(?:[0-9a-fA-F]{1,4}:){1,3}|:):(?:[0-9a-fA-F]{1,4}:){1,4}(?:[0-9a-fA-F]{1,4}))|(?:(?:(?:[0-9a-fA-F]{1,4}:){1,2}|:):(?:[0-9a-fA-F]{1,4}:){0,5}(?:[0-9a-fA-F]{1,4}))|(?:(?:(?:[0-9a-fA-F]{1,4}:)|:):(?:[0-9a-fA-F]{1,4}:){0,6}(?:[0-9a-fA-F]{1,4})))" - const val IP_ADDRESS_STRING = "(?:" + IPv4 + "|" + IPv6 + ")" + @Language("RegExp") + const val IP_ADDRESS_STRING = """(?:$IPv4|$IPv6)""" - const val UCS_CHAR = "[" + - "\u00A0-\uD7FF" + - "\uF900-\uFDCF" + - "\uFDF0-\uFFEF" + - "\uD800\uDC00-\uD83F\uDFFD" + - "\uD840\uDC00-\uD87F\uDFFD" + - "\uD880\uDC00-\uD8BF\uDFFD" + - "\uD8C0\uDC00-\uD8FF\uDFFD" + - "\uD900\uDC00-\uD93F\uDFFD" + - "\uD940\uDC00-\uD97F\uDFFD" + - "\uD980\uDC00-\uD9BF\uDFFD" + - "\uD9C0\uDC00-\uD9FF\uDFFD" + - "\uDA00\uDC00-\uDA3F\uDFFD" + - "\uDA40\uDC00-\uDA7F\uDFFD" + - "\uDA80\uDC00-\uDABF\uDFFD" + - "\uDAC0\uDC00-\uDAFF\uDFFD" + - "\uDB00\uDC00-\uDB3F\uDFFD" + - "\uDB44\uDC00-\uDB7F\uDFFD" + - "&&[^\u00A0[\u2000-\u200A]\u2028\u2029\u202F\u3000]" + - "]" + @Language("RegExp") + const val UCS_CHAR + = "[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF\uD800\uDC00-\uD83F\uDFFD\uD840\uDC00-\uD87F\uDFFD\uD880\uDC00-\uD8BF\uDFFD\uD8C0\uDC00-\uD8FF\uDFFD\uD900\uDC00-\uD93F\uDFFD\uD940\uDC00-\uD97F\uDFFD\uD980\uDC00-\uD9BF\uDFFD\uD9C0\uDC00-\uD9FF\uDFFD\uDA00\uDC00-\uDA3F\uDFFD\uDA40\uDC00-\uDA7F\uDFFD\uDA80\uDC00-\uDABF\uDFFD\uDAC0\uDC00-\uDAFF\uDFFD\uDB00\uDC00-\uDB3F\uDFFD\uDB44\uDC00-\uDB7F\uDFFD&&[^\u00A0[\u2000-\u200A]\u2028\u2029\u202F\u3000]]" /** * Valid characters for IRI label defined in RFC 3987. */ + @Language("RegExp") const val LABEL_CHAR - = "a-zA-Z0-9" + UCS_CHAR + = """a-zA-Z0-9$UCS_CHAR""" /** * Valid characters for IRI TLD defined in RFC 3987. */ + @Language("RegExp") const val TLD_CHAR - = "a-zA-Z" + UCS_CHAR + = """a-zA-Z$UCS_CHAR""" /** * RFC 1035 Section 2.3.4 limits the labels to a maximum 63 octets. */ + @Language("RegExp") const val IRI_LABEL - = "[" + LABEL_CHAR + "](?:[" + LABEL_CHAR + "_\\-]{0,61}[" + LABEL_CHAR + "]){0,1}" + = """[$LABEL_CHAR](?:[${LABEL_CHAR}_\-]{0,61}[$LABEL_CHAR])?""" /** * RFC 3492 references RFC 1034 and limits Punycode algorithm output to 63 characters. */ + @Language("RegExp") const val PUNYCODE_TLD - = "xn\\-\\-[\\w\\-]{0,58}\\w" + = """xn--[\w\-]{0,58}\w""" + + @Language("RegExp") const val TLD - = "(?:" + PUNYCODE_TLD + "|" + "[" + TLD_CHAR + "]{2,63}" + ")" + = """(?:$PUNYCODE_TLD|[$TLD_CHAR]{2,63})""" + + @Language("RegExp") const val HOST_NAME - = "(?:" + IRI_LABEL + "\\.)+" + TLD + ".?" + = """(?:$IRI_LABEL\.)+$TLD.?""" + + @Language("RegExp") const val LOCAL_HOST_NAME - = "(?:" + IRI_LABEL + "\\.)*" + IRI_LABEL + = """(?:$IRI_LABEL\.)*$IRI_LABEL""" + + @Language("RegExp") const val DOMAIN_NAME_STR - = "(?:" + LOCAL_HOST_NAME + "|" + HOST_NAME + "|" + IP_ADDRESS_STRING + ")" - val DOMAIN_NAME = Pattern.compile(DOMAIN_NAME_STR) + = """(?:$LOCAL_HOST_NAME|$HOST_NAME|$IP_ADDRESS_STRING)""" + val DOMAIN_NAME: Pattern = Pattern.compile(DOMAIN_NAME_STR) } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/LiveDataHelper.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/LiveDataHelper.kt index aa95e41c5..ddfdb7875 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/LiveDataHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/LiveDataHelper.kt @@ -2,7 +2,6 @@ package de.kuschku.quasseldroid_ng.util.helper import android.arch.lifecycle.* import android.support.annotation.MainThread -import de.kuschku.libquassel.util.helpers.toLiveData import io.reactivex.BackpressureStrategy import io.reactivex.Observable @@ -37,7 +36,7 @@ inline fun <X, Y> LiveData<X?>.switchMap( inline fun <X, Y> LiveData<X?>.switchMapRx( strategy: BackpressureStrategy, noinline func: (X) -> Observable<Y>? -): LiveData<Y> { +): LiveData<Y?> { val result = MediatorLiveData<Y>() result.addSource(this, object : Observer<X?> { internal var mSource: LiveData<Y>? = null @@ -64,7 +63,7 @@ inline fun <X, Y> LiveData<X?>.switchMapRx( @MainThread inline fun <X, Y> LiveData<X?>.switchMapRx( noinline func: (X) -> Observable<Y>? -): LiveData<Y> = switchMapRx(BackpressureStrategy.LATEST, func) +): LiveData<Y?> = switchMapRx(BackpressureStrategy.LATEST, func) @MainThread inline fun <X, Y> LiveData<X?>.map( @@ -113,5 +112,5 @@ inline fun <T> LiveData<T>.observeForeverSticky(observer: Observer<T>) { observer.onChanged(value) } -inline fun <T> LiveData<T>.toObservable(lifecycleOwner: LifecycleOwner) +inline fun <T> LiveData<T>.toObservable(lifecycleOwner: LifecycleOwner): Observable<T> = Observable.fromPublisher(LiveDataReactiveStreams.toPublisher(lifecycleOwner, this)) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/ObservableHelper.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/ObservableHelper.kt index 3bb0e08be..839ada07c 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/ObservableHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/ObservableHelper.kt @@ -1,9 +1,10 @@ -package de.kuschku.libquassel.util.helpers +package de.kuschku.quasseldroid_ng.util.helper +import android.arch.lifecycle.LiveData import android.arch.lifecycle.LiveDataReactiveStreams import io.reactivex.BackpressureStrategy import io.reactivex.Observable inline fun <T> Observable<T>.toLiveData( - strategy: BackpressureStrategy = BackpressureStrategy.LATEST) - = LiveDataReactiveStreams.fromPublisher(toFlowable(strategy)) + strategy: BackpressureStrategy = BackpressureStrategy.LATEST +): LiveData<T> = LiveDataReactiveStreams.fromPublisher(toFlowable(strategy)) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/SharedPreferencesHelper.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/SharedPreferencesHelper.kt index 86d2c513f..517648920 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/SharedPreferencesHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helper/SharedPreferencesHelper.kt @@ -1,5 +1,6 @@ package de.kuschku.quasseldroid_ng.util.helper +import android.annotation.SuppressLint import android.content.SharedPreferences fun SharedPreferences.editApply(f: SharedPreferences.Editor.() -> Unit) { @@ -8,6 +9,7 @@ fun SharedPreferences.editApply(f: SharedPreferences.Editor.() -> Unit) { editor.apply() } +@SuppressLint("ApplySharedPref") fun SharedPreferences.editCommit(f: SharedPreferences.Editor.() -> Unit) { val editor = this.edit() editor.f() diff --git a/app/src/main/res/layout-sw600dp-land/activity_setup.xml b/app/src/main/res/layout-sw600dp-land/activity_setup.xml index e9ce90f36..c7fa866b4 100644 --- a/app/src/main/res/layout-sw600dp-land/activity_setup.xml +++ b/app/src/main/res/layout-sw600dp-land/activity_setup.xml @@ -1,5 +1,6 @@ <merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> @@ -19,6 +20,7 @@ app:backgroundTint="#8A000000" app:elevation="0dip" app:fabSize="normal" - app:pressedTranslationZ="0dip" /> + app:pressedTranslationZ="0dip" + tools:ignore="RtlHardcoded" /> </merge> diff --git a/app/src/main/res/layout-sw600dp-land/setup_slide.xml b/app/src/main/res/layout-sw600dp-land/setup_slide.xml index ec944d207..6e956bb4b 100644 --- a/app/src/main/res/layout-sw600dp-land/setup_slide.xml +++ b/app/src/main/res/layout-sw600dp-land/setup_slide.xml @@ -6,7 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - <TextView xmlns:android="http://schemas.android.com/apk/res/android" + <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -28,7 +28,7 @@ android:layout_toLeftOf="@+id/scrollView" android:layout_toStartOf="@+id/scrollView" /> - <TextView xmlns:android="http://schemas.android.com/apk/res/android" + <TextView android:id="@+id/description" android:layout_width="match_parent" android:layout_height="wrap_content" diff --git a/app/src/main/res/layout-sw600dp/activity_setup.xml b/app/src/main/res/layout-sw600dp/activity_setup.xml index 503ebf7bc..b8b719a14 100644 --- a/app/src/main/res/layout-sw600dp/activity_setup.xml +++ b/app/src/main/res/layout-sw600dp/activity_setup.xml @@ -1,5 +1,6 @@ <merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> @@ -24,7 +25,8 @@ app:backgroundTint="#8A000000" app:elevation="0dip" app:fabSize="normal" - app:pressedTranslationZ="0dip" /> + app:pressedTranslationZ="0dip" + tools:ignore="RtlHardcoded" /> </FrameLayout> diff --git a/app/src/main/res/layout-sw600dp/setup_slide.xml b/app/src/main/res/layout-sw600dp/setup_slide.xml index ca3201604..91ec31d81 100644 --- a/app/src/main/res/layout-sw600dp/setup_slide.xml +++ b/app/src/main/res/layout-sw600dp/setup_slide.xml @@ -24,9 +24,9 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="8dp" - android:text="Connection" android:textSize="28sp" - android:theme="@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse" /> + android:theme="@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse" + tools:text="Connection" /> <TextView android:id="@+id/description" diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 75511f596..f81b88965 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -87,7 +87,7 @@ </LinearLayout> - <include layout="@layout/content_nicklist" /> + <include layout="@layout/content_nick_list" /> - <include layout="@layout/content_chatlist" /> + <include layout="@layout/content_chat_list" /> </android.support.v4.widget.DrawerLayout> diff --git a/app/src/main/res/layout/activity_setup.xml b/app/src/main/res/layout/activity_setup.xml index 4ded7a441..a0a74dc86 100644 --- a/app/src/main/res/layout/activity_setup.xml +++ b/app/src/main/res/layout/activity_setup.xml @@ -1,5 +1,6 @@ <merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> @@ -16,6 +17,7 @@ android:layout_marginBottom="16dp" android:layout_marginRight="16dp" android:tint="#ffffff" - app:fabSize="normal" /> + app:fabSize="normal" + tools:ignore="RtlHardcoded" /> </merge> diff --git a/app/src/main/res/layout/content_chatlist.xml b/app/src/main/res/layout/content_chat_list.xml similarity index 100% rename from app/src/main/res/layout/content_chatlist.xml rename to app/src/main/res/layout/content_chat_list.xml diff --git a/app/src/main/res/layout/content_nicklist.xml b/app/src/main/res/layout/content_nick_list.xml similarity index 100% rename from app/src/main/res/layout/content_nicklist.xml rename to app/src/main/res/layout/content_nick_list.xml diff --git a/app/src/main/res/layout/setup_account_edit.xml b/app/src/main/res/layout/setup_account_edit.xml index c00a9e81d..715e30623 100644 --- a/app/src/main/res/layout/setup_account_edit.xml +++ b/app/src/main/res/layout/setup_account_edit.xml @@ -1,178 +1,177 @@ -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" +<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> - <android.support.v4.widget.NestedScrollView + <LinearLayout android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="wrap_content" + android:orientation="vertical"> + + <android.support.v4.widget.Space + android:layout_width="match_parent" + android:layout_height="16dp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical"> - - <android.support.v4.widget.Space + android:paddingLeft="16dp" + android:paddingRight="16dp"> + + <FrameLayout + android:layout_width="56dp" + android:layout_height="68dp"> + + <ImageView + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_gravity="center_vertical" + android:tint="#757575" + app:srcCompat="@drawable/ic_pencil" + tools:ignore="ContentDescription" /> + </FrameLayout> + + <android.support.design.widget.TextInputLayout + android:id="@+id/nameWrapper" android:layout_width="match_parent" - android:layout_height="16dp" /> + android:layout_height="wrap_content" + android:hint="@string/labelAccountName" + app:errorEnabled="true"> + + <android.support.design.widget.TextInputEditText + android:id="@+id/name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" /> + </android.support.design.widget.TextInputLayout> + </LinearLayout> + + <android.support.v4.widget.Space + android:layout_width="match_parent" + android:layout_height="16dp" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingLeft="16dp" + android:paddingRight="16dp"> + + <FrameLayout + android:layout_width="56dp" + android:layout_height="68dp"> + + <ImageView + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_gravity="center_vertical" + android:tint="#757575" + app:srcCompat="@drawable/ic_server_network" + tools:ignore="ContentDescription" /> + </FrameLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingLeft="16dp" - android:paddingRight="16dp"> - - <FrameLayout - android:layout_width="56dp" - android:layout_height="68dp"> - - <ImageView - android:layout_width="24dp" - android:layout_height="24dp" - android:layout_gravity="center_vertical" - android:tint="#757575" - app:srcCompat="@drawable/ic_pencil" /> - </FrameLayout> + android:orientation="vertical"> <android.support.design.widget.TextInputLayout - android:id="@+id/nameWrapper" + android:id="@+id/hostWrapper" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="@string/labelAccountName" + android:hint="@string/labelConnectionHost" app:errorEnabled="true"> <android.support.design.widget.TextInputEditText - android:id="@+id/name" + android:id="@+id/host" android:layout_width="match_parent" android:layout_height="wrap_content" - android:inputType="text" /> + android:inputType="textUri" /> </android.support.design.widget.TextInputLayout> - </LinearLayout> - - <android.support.v4.widget.Space - android:layout_width="match_parent" - android:layout_height="16dp" /> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingLeft="16dp" - android:paddingRight="16dp"> - <FrameLayout + <android.support.v4.widget.Space android:layout_width="56dp" - android:layout_height="68dp"> - - <ImageView - android:layout_width="24dp" - android:layout_height="24dp" - android:layout_gravity="center_vertical" - android:tint="#757575" - app:srcCompat="@drawable/ic_server_network" /> - </FrameLayout> + android:layout_height="match_parent" /> - <LinearLayout + <android.support.design.widget.TextInputLayout + android:id="@+id/portWrapper" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical"> + android:hint="@string/labelConnectionPort" + app:errorEnabled="true"> - <android.support.design.widget.TextInputLayout - android:id="@+id/hostWrapper" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/labelConnectionHost" - app:errorEnabled="true"> - - <android.support.design.widget.TextInputEditText - android:id="@+id/host" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:inputType="textUri" /> - </android.support.design.widget.TextInputLayout> - - <android.support.v4.widget.Space - android:layout_width="56dp" - android:layout_height="match_parent" /> - - <android.support.design.widget.TextInputLayout - android:id="@+id/portWrapper" + <android.support.design.widget.TextInputEditText + android:id="@+id/port" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="@string/labelConnectionPort" - app:errorEnabled="true"> - - <android.support.design.widget.TextInputEditText - android:id="@+id/port" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:inputType="number" - android:text="@string/defaultConnectionPort" /> - </android.support.design.widget.TextInputLayout> - </LinearLayout> + android:inputType="number" + android:text="@string/defaultConnectionPort" /> + </android.support.design.widget.TextInputLayout> </LinearLayout> + </LinearLayout> + + <android.support.v4.widget.Space + android:layout_width="match_parent" + android:layout_height="16dp" /> - <android.support.v4.widget.Space - android:layout_width="match_parent" - android:layout_height="16dp" /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingLeft="16dp" + android:paddingRight="16dp"> + + <FrameLayout + android:layout_width="56dp" + android:layout_height="68dp"> + + <ImageView + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_gravity="center_vertical" + android:tint="#757575" + app:srcCompat="@drawable/ic_account" + tools:ignore="ContentDescription" /> + </FrameLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingLeft="16dp" - android:paddingRight="16dp"> + android:orientation="vertical"> - <FrameLayout - android:layout_width="56dp" - android:layout_height="68dp"> - - <ImageView - android:layout_width="24dp" - android:layout_height="24dp" - android:layout_gravity="center_vertical" - android:tint="#757575" - app:srcCompat="@drawable/ic_account" /> - </FrameLayout> - - <LinearLayout + <android.support.design.widget.TextInputLayout + android:id="@+id/userWrapper" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical"> + android:hint="@string/labelAccountUser"> - <android.support.design.widget.TextInputLayout - android:id="@+id/userWrapper" + <android.support.design.widget.TextInputEditText + android:id="@+id/user" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="@string/labelAccountUser"> - - <android.support.design.widget.TextInputEditText - android:id="@+id/user" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:inputType="textVisiblePassword|textNoSuggestions" - app:errorEnabled="true" /> - </android.support.design.widget.TextInputLayout> - - <android.support.design.widget.TextInputLayout - android:id="@+id/passWrapper" + android:inputType="textVisiblePassword|textNoSuggestions" + app:errorEnabled="true" /> + </android.support.design.widget.TextInputLayout> + + <android.support.design.widget.TextInputLayout + android:id="@+id/passWrapper" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/labelAccountPass"> + + <android.support.design.widget.TextInputEditText + android:id="@+id/pass" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="@string/labelAccountPass"> - - <android.support.design.widget.TextInputEditText - android:id="@+id/pass" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:inputType="textPassword" - app:errorEnabled="true" /> - </android.support.design.widget.TextInputLayout> + android:inputType="textPassword" + app:errorEnabled="true" /> + </android.support.design.widget.TextInputLayout> - </LinearLayout> </LinearLayout> - - <android.support.v4.widget.Space - android:layout_width="match_parent" - android:layout_height="16dp" /> </LinearLayout> - </android.support.v4.widget.NestedScrollView> -</FrameLayout> + + <android.support.v4.widget.Space + android:layout_width="match_parent" + android:layout_height="16dp" /> + </LinearLayout> +</android.support.v4.widget.NestedScrollView> diff --git a/app/src/main/res/layout/widget_core_account_add.xml b/app/src/main/res/layout/widget_core_account_add.xml index 5f8054a21..f6c839109 100644 --- a/app/src/main/res/layout/widget_core_account_add.xml +++ b/app/src/main/res/layout/widget_core_account_add.xml @@ -1,5 +1,6 @@ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="72dp" android:background="?attr/selectableItemBackground" @@ -10,36 +11,26 @@ android:paddingLeft="16dp" android:paddingRight="16dp"> - <LinearLayout - android:layout_width="48dp" - android:layout_height="match_parent"> + <ImageView + android:layout_width="32dp" + android:layout_height="32dp" + android:layout_gravity="center_vertical" + android:layout_marginEnd="16dp" + android:layout_marginRight="16dp" + android:tint="#727272" + app:srcCompat="@drawable/ic_add" + tools:ignore="ContentDescription" /> - <ImageView - android:layout_width="32dp" - android:layout_height="32dp" - android:layout_gravity="center_vertical" - android:tint="#727272" - app:srcCompat="@drawable/ic_add" /> - - </LinearLayout> - - <LinearLayout + <TextView + android:id="@+id/account_name" android:layout_width="0dip" - android:layout_height="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical|start" android:layout_margin="8dp" android:layout_weight="1" - android:gravity="center_vertical|start" - android:orientation="vertical"> - - <TextView - android:id="@+id/account_name" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:fontFamily="sans-serif-medium" - android:gravity="center_vertical|start" - android:lines="1" - android:singleLine="true" - android:text="New Account" - android:textSize="14sp" /> - </LinearLayout> + android:fontFamily="sans-serif-medium" + android:lines="1" + android:singleLine="true" + android:text="New Account" + android:textSize="14sp" /> </LinearLayout> diff --git a/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Slot.java b/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Slot.java index 93cdaf5d3..e09a0bc39 100644 --- a/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Slot.java +++ b/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Slot.java @@ -5,6 +5,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +@SuppressWarnings("WeakerAccess") @Retention(RetentionPolicy.SOURCE) @Target(value = ElementType.METHOD) public @interface Slot { diff --git a/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Syncable.java b/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Syncable.java index 46a4dd822..77367a296 100644 --- a/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Syncable.java +++ b/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Syncable.java @@ -5,6 +5,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +@SuppressWarnings("WeakerAccess") @Retention(RetentionPolicy.RUNTIME) @Target(value = ElementType.TYPE) public @interface Syncable { 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 2bcff1b55..133a67143 100644 --- a/invokergenerator/src/main/java/de/kuschku/libquassel/annotations/InvokerProcessor.java +++ b/invokergenerator/src/main/java/de/kuschku/libquassel/annotations/InvokerProcessor.java @@ -17,7 +17,6 @@ import java.util.Set; import javax.annotation.processing.AbstractProcessor; import javax.annotation.processing.Filer; -import javax.annotation.processing.Messager; import javax.annotation.processing.ProcessingEnvironment; import javax.annotation.processing.Processor; import javax.annotation.processing.RoundEnvironment; @@ -33,18 +32,17 @@ import javax.lang.model.element.TypeElement; import javax.lang.model.type.ExecutableType; import javax.lang.model.type.TypeMirror; +@SuppressWarnings("WeakerAccess") @AutoService(Processor.class) @SupportedAnnotationTypes("de.kuschku.libquassel.annotations.Syncable") @SupportedSourceVersion(SourceVersion.RELEASE_8) public class InvokerProcessor extends AbstractProcessor { private Filer filer; - private Messager messager; @Override public synchronized void init(ProcessingEnvironment processingEnv) { filer = processingEnv.getFiler(); - messager = processingEnv.getMessager(); } @Override @@ -224,12 +222,12 @@ public class InvokerProcessor extends AbstractProcessor { } private class SyncableElement { - PackageElement packageElement; - TypeElement typeElement; + final PackageElement packageElement; + final TypeElement typeElement; - Syncable annotation; + final Syncable annotation; - List<SlotElement> slots; + final List<SlotElement> slots; public SyncableElement(PackageElement packageElement, TypeElement typeElement, Syncable annotation, List<SlotElement> slots) { this.packageElement = packageElement; diff --git a/lib/src/main/java/de/kuschku/libquassel/protocol/QVariant.kt b/lib/src/main/java/de/kuschku/libquassel/protocol/QVariant.kt index 4294fff6f..db7dbdca9 100644 --- a/lib/src/main/java/de/kuschku/libquassel/protocol/QVariant.kt +++ b/lib/src/main/java/de/kuschku/libquassel/protocol/QVariant.kt @@ -36,10 +36,10 @@ fun <U> QVariant_?.value(): U? = this?._value<U?>(null) fun <U> QVariant_?.value(defValue: U): U - = this?._value<U>(defValue) ?: defValue + = this?._value(defValue) ?: defValue fun <U> QVariant_?.valueOr(f: () -> U): U - = this?._valueOr<U>(f) ?: f() + = this?._valueOr(f) ?: f() fun <U> QVariant_?.valueOrThrow(e: Throwable = NullPointerException()): U = this?._valueOrThrow<U>(e) ?: throw e diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/AliasManager.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/AliasManager.kt index ab0b657ef..1ee3e1616 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/AliasManager.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/AliasManager.kt @@ -54,7 +54,7 @@ class AliasManager constructor( fun contains(name: String) = _aliases.map(Alias::name).contains(name) - fun defaults() = listOf<Alias>( + fun defaults() = listOf( Alias("j", "/join $0"), Alias("ns", "/msg nickserv $0"), Alias("nickserv", "/msg nickserv $0"), 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 dbd5d8bca..ae5584314 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 @@ -68,13 +68,13 @@ class Network constructor( = prefixModes().elementAtOrNull(prefixes().indexOf(prefix)) fun prefixesToModes(prefixes: String): String - = prefixes.toCharArray().map(this::prefixToMode).filterNotNull().joinToString() + = prefixes.mapNotNull(this::prefixToMode).joinToString() fun modeToPrefix(mode: Char): Char? = prefixes().elementAtOrNull(prefixModes().indexOf(mode)) fun modesToPrefixes(modes: String): String - = modes.toCharArray().map(this::modeToPrefix).filterNotNull().joinToString() + = modes.mapNotNull(this::modeToPrefix).joinToString() fun channelModeType(mode: Char): ChannelModeType { if (_channelModes == null) @@ -357,9 +357,9 @@ class Network constructor( fun ircChannel(channelName: String) = _ircChannels[channelName] fun ircChannels() = _ircChannels.values.toList() fun ircChanenlCount(): UInt = _ircChannels.size - fun codecForServer() = _codecForServer.name() - fun codecForEncoding() = _codecForEncoding.name() - fun codecForDecoding() = _codecForDecoding.name() + fun codecForServer(): String = _codecForServer.name() + fun codecForEncoding(): String = _codecForEncoding.name() + fun codecForDecoding(): String = _codecForDecoding.name() fun setCodecForDecoding(codec: Charset) { _codecForDecoding = codec super.setCodecForDecoding(Charsets.ISO_8859_1.encode(codecForDecoding())) 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 6ca61a867..968896ea4 100644 --- a/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt +++ b/lib/src/main/java/de/kuschku/libquassel/session/CoreConnection.kt @@ -43,7 +43,8 @@ class CoreConnection( private val sizeBuffer = ByteBuffer.allocateDirect(4) private val chainedBuffer = ChainedByteBuffer(direct = true) - val state = BehaviorSubject.createDefault(ConnectionState.DISCONNECTED) + val state: BehaviorSubject<ConnectionState> = BehaviorSubject.createDefault( + ConnectionState.DISCONNECTED) private var channel: WrappedChannel? = null diff --git a/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt b/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt index d86c73a3b..c3fe644c6 100644 --- a/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt +++ b/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt @@ -13,6 +13,7 @@ import de.kuschku.libquassel.util.compatibility.log import org.threeten.bp.Instant import java.io.Closeable +@Suppress("LeakingThis") abstract class ProtocolHandler : SignalProxy, AuthHandler, Closeable { private val objectStorage: ObjectStorage = ObjectStorage(this) private val rpcHandler: RpcHandler = RpcHandler(this) diff --git a/lib/src/main/java/de/kuschku/libquassel/session/SessionManager.kt b/lib/src/main/java/de/kuschku/libquassel/session/SessionManager.kt index 935c503d7..5f56985d3 100644 --- a/lib/src/main/java/de/kuschku/libquassel/session/SessionManager.kt +++ b/lib/src/main/java/de/kuschku/libquassel/session/SessionManager.kt @@ -73,8 +73,8 @@ class SessionManager( } private var inProgressSession = BehaviorSubject.createDefault(offlineSession) - override val state = inProgressSession.switchMap { it.state } - val session = state.map { connectionState -> + override val state: Observable<ConnectionState> = inProgressSession.switchMap { it.state } + val session: Observable<ISession> = state.map { connectionState -> if (connectionState == ConnectionState.CONNECTED) inProgressSession.value else -- GitLab