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

Improve error handling and compatibility

parent df899606
No related branches found
No related tags found
No related merge requests found
Showing
with 88 additions and 85 deletions
......@@ -30,6 +30,7 @@ import de.kuschku.libquassel.util.and
import de.kuschku.libquassel.util.or
import de.kuschku.quasseldroid.Keys
import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.persistence.AccountDatabase
import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.settings.Settings
import de.kuschku.quasseldroid.ui.chat.input.Editor
......@@ -68,6 +69,9 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
@Inject
lateinit var database: QuasselDatabase
@Inject
lateinit var accountDatabase: AccountDatabase
private lateinit var editor: Editor
private val panelSlideListener: SlidingUpPanelLayout.PanelSlideListener = object :
......@@ -194,7 +198,11 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
disconnect()
}
.onPositive { _, _ ->
MaterialDialog.Builder(this)
runInBackground {
val account = accountDatabase.accounts().findById(accountId)
runOnUiThread {
val dialog = MaterialDialog.Builder(this)
.title("Login Required")
.customView(R.layout.setup_account_user, false)
.negativeText(R.string.label_disconnect)
......@@ -214,7 +222,17 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
}
}
.build()
.show()
dialog.customView?.run {
val userField = findViewById<EditText>(R.id.user)
val passField = findViewById<EditText>(R.id.pass)
account?.let {
userField.setText(it.user)
}
}
dialog.show()
}
}
}
.build()
.show()
......@@ -249,7 +267,10 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
}
override fun onActionModeStarted(mode: ActionMode?) {
mode?.menu?.retint(toolbar.context)
when (mode?.tag) {
"BUFFER",
"MESSAGES" -> mode.menu?.retint(toolbar.context)
}
super.onActionModeStarted(mode)
}
......
......@@ -4,7 +4,6 @@ import android.arch.lifecycle.LifecycleOwner
import android.arch.lifecycle.LiveData
import android.arch.lifecycle.Observer
import android.graphics.drawable.Drawable
import android.support.v4.graphics.drawable.DrawableCompat
import android.support.v7.util.DiffUtil
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
......@@ -220,9 +219,9 @@ class BufferListAdapter(
itemView.isSelected = state.selected
if (state.networkExpanded) {
status.setImageDrawable(itemView.context.getCompatDrawable(R.drawable.ic_chevron_up))
status.setImageDrawable(itemView.context.getDrawableCompat(R.drawable.ic_chevron_up))
} else {
status.setImageDrawable(itemView.context.getCompatDrawable(R.drawable.ic_chevron_down))
status.setImageDrawable(itemView.context.getDrawableCompat(R.drawable.ic_chevron_down))
}
}
}
......@@ -243,8 +242,8 @@ class BufferListAdapter(
var bufferId: BufferId? = null
private val online: Drawable
private val offline: Drawable
private val online: Drawable?
private val offline: Drawable?
private var none: Int = 0
private var activity: Int = 0
......@@ -269,16 +268,16 @@ class BufferListAdapter(
}
}
online = itemView.context.getCompatDrawable(R.drawable.ic_status).mutate()
offline = itemView.context.getCompatDrawable(R.drawable.ic_status_offline).mutate()
online = itemView.context.getDrawableCompat(R.drawable.ic_status)?.mutate()
offline = itemView.context.getDrawableCompat(R.drawable.ic_status_offline)?.mutate()
itemView.context.theme.styledAttributes(
R.attr.colorAccent, R.attr.colorAway,
R.attr.colorTextPrimary, R.attr.colorTintActivity, R.attr.colorTintMessage,
R.attr.colorTintHighlight
) {
DrawableCompat.setTint(online, getColor(0, 0))
DrawableCompat.setTint(offline, getColor(1, 0))
online?.tint(getColor(0, 0))
offline?.tint(getColor(1, 0))
none = getColor(2, 0)
activity = getColor(3, 0)
......@@ -331,8 +330,8 @@ class BufferListAdapter(
var bufferId: BufferId? = null
private val online: Drawable
private val offline: Drawable
private val online: Drawable?
private val offline: Drawable?
private var none: Int = 0
private var activity: Int = 0
......@@ -357,16 +356,16 @@ class BufferListAdapter(
}
}
online = itemView.context.getCompatDrawable(R.drawable.ic_status_channel).mutate()
offline = itemView.context.getCompatDrawable(R.drawable.ic_status_channel_offline).mutate()
online = itemView.context.getDrawableCompat(R.drawable.ic_status_channel)?.mutate()
offline = itemView.context.getDrawableCompat(R.drawable.ic_status_channel_offline)?.mutate()
itemView.context.theme.styledAttributes(
R.attr.colorAccent, R.attr.colorAway,
R.attr.colorTextPrimary, R.attr.colorTintActivity, R.attr.colorTintMessage,
R.attr.colorTintHighlight
) {
DrawableCompat.setTint(online, getColor(0, 0))
DrawableCompat.setTint(offline, getColor(1, 0))
online?.tint(getColor(0, 0))
offline?.tint(getColor(1, 0))
none = getColor(2, 0)
activity = getColor(3, 0)
......@@ -419,9 +418,9 @@ class BufferListAdapter(
var bufferId: BufferId? = null
private val online: Drawable
private val away: Drawable
private val offline: Drawable
private val online: Drawable?
private val away: Drawable?
private val offline: Drawable?
private var none: Int = 0
private var activity: Int = 0
......@@ -446,18 +445,18 @@ class BufferListAdapter(
}
}
online = itemView.context.getCompatDrawable(R.drawable.ic_status).mutate()
away = itemView.context.getCompatDrawable(R.drawable.ic_status).mutate()
offline = itemView.context.getCompatDrawable(R.drawable.ic_status_offline).mutate()
online = itemView.context.getDrawableCompat(R.drawable.ic_status)?.mutate()
away = itemView.context.getDrawableCompat(R.drawable.ic_status)?.mutate()
offline = itemView.context.getDrawableCompat(R.drawable.ic_status_offline)?.mutate()
itemView.context.theme.styledAttributes(
R.attr.colorAccent, R.attr.colorAway,
R.attr.colorTextPrimary, R.attr.colorTintActivity, R.attr.colorTintMessage,
R.attr.colorTintHighlight
) {
DrawableCompat.setTint(online, getColor(0, 0))
DrawableCompat.setTint(away, getColor(1, 0))
DrawableCompat.setTint(offline, getColor(1, 0))
online?.tint(getColor(0, 0))
away?.tint(getColor(1, 0))
offline?.tint(getColor(1, 0))
none = getColor(2, 0)
activity = getColor(3, 0)
......
package de.kuschku.quasseldroid.ui.chat.buffers
import android.arch.lifecycle.Observer
import android.os.Build
import android.os.Bundle
import android.support.v7.widget.*
import android.view.*
......@@ -146,7 +147,11 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
}
override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
return false
mode?.tag = "MESSAGES"
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mode?.type = ActionMode.TYPE_FLOATING
}
return true
}
override fun onDestroyActionMode(mode: ActionMode?) {
......
package de.kuschku.quasseldroid.ui.chat.input
import android.graphics.drawable.Drawable
import android.support.v4.graphics.drawable.DrawableCompat
import android.support.v7.recyclerview.extensions.ListAdapter
import android.support.v7.util.DiffUtil
import android.support.v7.widget.RecyclerView
......@@ -14,8 +13,9 @@ import butterknife.BindView
import butterknife.ButterKnife
import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.ui.chat.nicks.NickListAdapter.Companion.VIEWTYPE_AWAY
import de.kuschku.quasseldroid.util.helper.getCompatDrawable
import de.kuschku.quasseldroid.util.helper.getDrawableCompat
import de.kuschku.quasseldroid.util.helper.styledAttributes
import de.kuschku.quasseldroid.util.helper.tint
import de.kuschku.quasseldroid.util.helper.visibleIf
import de.kuschku.quasseldroid.viewmodel.data.AutoCompleteItem
import de.kuschku.quasseldroid.viewmodel.data.BufferStatus
......@@ -124,8 +124,8 @@ class AutoCompleteAdapter(
var value: String? = null
private val online: Drawable
private val offline: Drawable
private val online: Drawable?
private val offline: Drawable?
init {
ButterKnife.bind(this, itemView)
......@@ -135,14 +135,14 @@ class AutoCompleteAdapter(
clickListener?.invoke(value)
}
online = itemView.context.getCompatDrawable(R.drawable.ic_status_channel).mutate()
offline = itemView.context.getCompatDrawable(R.drawable.ic_status_channel_offline).mutate()
online = itemView.context.getDrawableCompat(R.drawable.ic_status_channel)?.mutate()
offline = itemView.context.getDrawableCompat(R.drawable.ic_status_channel_offline)?.mutate()
itemView.context.theme.styledAttributes(
R.attr.colorAccent, R.attr.colorAway
) {
DrawableCompat.setTint(online, getColor(0, 0))
DrawableCompat.setTint(offline, getColor(1, 0))
online?.tint(getColor(0, 0))
offline?.tint(getColor(1, 0))
}
}
......
......@@ -112,7 +112,8 @@ class MessageListFragment : ServiceBoundFragment() {
}
override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
return false
mode?.tag = "MESSAGES"
return true
}
override fun onDestroyActionMode(mode: ActionMode?) {
......
......@@ -13,6 +13,7 @@ import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.service.QuasselService
import de.kuschku.quasseldroid.ui.chat.ChatActivity
import de.kuschku.quasseldroid.util.helper.editApply
import de.kuschku.quasseldroid.util.helper.getColorCompat
import de.kuschku.quasseldroid.util.helper.sharedPreferences
import de.kuschku.quasseldroid.util.helper.systemService
......@@ -69,7 +70,7 @@ class QuasseldroidNotificationManager(private val context: Context) {
.addAction(0, context.getString(R.string.label_open), pendingIntentOpen)
.addAction(0, context.getString(R.string.label_disconnect), pendingIntentDisconnect)
.setSmallIcon(R.drawable.ic_logo)
.setColor(context.resources.getColor(R.color.colorPrimary))
.setColor(context.getColorCompat(R.color.colorPrimary))
.setPriority(NotificationCompat.PRIORITY_MIN)
return Handle(BACKGROUND_NOTIFICATION_ID, notification)
}
......
......@@ -2,21 +2,12 @@ package de.kuschku.quasseldroid.util.helper
import android.content.Context
import android.content.SharedPreferences
import android.graphics.drawable.Drawable
import android.os.Build
import android.preference.PreferenceManager
import android.support.annotation.ColorInt
import android.support.annotation.ColorRes
import android.support.annotation.DrawableRes
fun Context.getStatusBarHeight(): Int {
var result = 0
val resourceId = resources.getIdentifier("status_bar_height", "dimen", "android")
if (resourceId > 0) {
result = resources.getDimensionPixelSize(resourceId)
}
return result
}
import android.support.v4.content.ContextCompat
inline fun <reified T> Context.systemService(): T =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
......@@ -25,22 +16,10 @@ inline fun <reified T> Context.systemService(): T =
getSystemService(T::class.java.simpleName) as T
}
fun Context.getCompatDrawable(@DrawableRes id: Int): Drawable {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
this.resources.getDrawable(id, this.theme)
} else {
this.resources.getDrawable(id)
}
}
fun Context.getDrawableCompat(@DrawableRes id: Int) = ContextCompat.getDrawable(this, id)
@ColorInt
fun Context.getCompatColor(@ColorRes id: Int): Int {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
this.resources.getColor(id, this.theme)
} else {
this.resources.getColor(id)
}
}
fun Context.getColorCompat(@ColorRes id: Int) = ContextCompat.getColor(this, id)
fun <T> Context.sharedPreferences(name: String? = null, mode: Int = 0,
......
package de.kuschku.quasseldroid.util.helper
import android.graphics.drawable.Drawable
import android.support.annotation.ColorInt
import android.support.v4.graphics.drawable.DrawableCompat
fun Drawable.tint(@ColorInt tint: Int) = DrawableCompat.setTint(this, tint)
\ No newline at end of file
......@@ -18,7 +18,6 @@
android:id="@+id/host"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/label_connection_host"
android:inputType="textUri" />
</android.support.design.widget.TextInputLayout>
......@@ -34,7 +33,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="@string/labelConnectionPort"
android:text="@string/defaultConnectionPort" />
</android.support.design.widget.TextInputLayout>
......
......@@ -43,7 +43,6 @@
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/label_account_name"
android:inputType="text" />
</android.support.design.widget.TextInputLayout>
</LinearLayout>
......@@ -87,7 +86,6 @@
android:id="@+id/host"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/label_connection_host"
android:inputType="textUri" />
</android.support.design.widget.TextInputLayout>
......@@ -107,7 +105,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="@string/labelConnectionPort"
android:text="@string/defaultConnectionPort" />
</android.support.design.widget.TextInputLayout>
</LinearLayout>
......@@ -153,7 +150,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textVisiblePassword|textNoSuggestions"
android:hint="@string/label_account_user"
app:errorEnabled="true" />
</android.support.design.widget.TextInputLayout>
......@@ -169,7 +165,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/label_account_pass"
app:errorEnabled="true" />
</android.support.design.widget.TextInputLayout>
......
......@@ -16,7 +16,6 @@
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/label_account_name"
android:inputType="text" />
</android.support.design.widget.TextInputLayout>
......
......@@ -16,7 +16,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textVisiblePassword|textNoSuggestions"
android:hint="@string/label_account_user"
app:errorEnabled="true" />
</android.support.design.widget.TextInputLayout>
......@@ -32,7 +31,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/label_account_pass"
app:errorEnabled="true" />
</android.support.design.widget.TextInputLayout>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment