Skip to content
Snippets Groups Projects
Verified Commit 5f3e964a authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Display the current new activity/messages/highlights status in toolbar

parent af4a4e1d
Branches
Tags
No related merge requests found
Showing
with 245 additions and 34 deletions
...@@ -79,7 +79,6 @@ ...@@ -79,7 +79,6 @@
<!-- Info --> <!-- Info -->
<activity <activity
android:name="de.kuschku.quasseldroid.ui.info.user.UserInfoActivity" android:name="de.kuschku.quasseldroid.ui.info.user.UserInfoActivity"
android:exported="false" android:exported="false"
......
...@@ -54,7 +54,7 @@ import de.kuschku.quasseldroid.util.helper.letIf ...@@ -54,7 +54,7 @@ import de.kuschku.quasseldroid.util.helper.letIf
import de.kuschku.quasseldroid.util.helper.loadWithFallbacks import de.kuschku.quasseldroid.util.helper.loadWithFallbacks
import de.kuschku.quasseldroid.util.helper.styledAttributes import de.kuschku.quasseldroid.util.helper.styledAttributes
import de.kuschku.quasseldroid.util.irc.format.ContentFormatter import de.kuschku.quasseldroid.util.irc.format.ContentFormatter
import de.kuschku.quasseldroid.util.ui.TextDrawable import de.kuschku.quasseldroid.util.ui.drawable.TextDrawable
import de.kuschku.quasseldroid.viewmodel.EditorViewModel import de.kuschku.quasseldroid.viewmodel.EditorViewModel
import org.threeten.bp.Instant import org.threeten.bp.Instant
import java.util.concurrent.Executors import java.util.concurrent.Executors
......
...@@ -27,7 +27,8 @@ data class NotificationSettings( ...@@ -27,7 +27,8 @@ data class NotificationSettings(
val vibrate: Boolean = true, val vibrate: Boolean = true,
val light: Boolean = true, val light: Boolean = true,
val markReadOnSwipe: Boolean = true, val markReadOnSwipe: Boolean = true,
val networkNameInNotificationTitle: Boolean = false val networkNameInNotificationTitle: Boolean = false,
val showAllActivitiesInToolbar: Boolean = false
) { ) {
enum class Level { enum class Level {
ALL, ALL,
......
...@@ -175,6 +175,10 @@ object Settings { ...@@ -175,6 +175,10 @@ object Settings {
networkNameInNotificationTitle = getBoolean( networkNameInNotificationTitle = getBoolean(
context.getString(R.string.preference_notification_network_name_in_notification_title_key), context.getString(R.string.preference_notification_network_name_in_notification_title_key),
NotificationSettings.DEFAULT.networkNameInNotificationTitle NotificationSettings.DEFAULT.networkNameInNotificationTitle
),
showAllActivitiesInToolbar = getBoolean(
context.getString(R.string.preference_notification_show_all_activities_in_toolbar_key),
NotificationSettings.DEFAULT.showAllActivitiesInToolbar
) )
) )
} }
......
...@@ -58,6 +58,7 @@ import de.kuschku.libquassel.session.ISession ...@@ -58,6 +58,7 @@ import de.kuschku.libquassel.session.ISession
import de.kuschku.libquassel.util.Optional import de.kuschku.libquassel.util.Optional
import de.kuschku.libquassel.util.flag.and import de.kuschku.libquassel.util.flag.and
import de.kuschku.libquassel.util.flag.hasFlag import de.kuschku.libquassel.util.flag.hasFlag
import de.kuschku.libquassel.util.flag.minus
import de.kuschku.libquassel.util.flag.or import de.kuschku.libquassel.util.flag.or
import de.kuschku.libquassel.util.helpers.nullIf import de.kuschku.libquassel.util.helpers.nullIf
import de.kuschku.libquassel.util.helpers.value import de.kuschku.libquassel.util.helpers.value
...@@ -74,6 +75,7 @@ import de.kuschku.quasseldroid.persistence.models.SslHostnameWhitelistEntry ...@@ -74,6 +75,7 @@ import de.kuschku.quasseldroid.persistence.models.SslHostnameWhitelistEntry
import de.kuschku.quasseldroid.persistence.models.SslValidityWhitelistEntry import de.kuschku.quasseldroid.persistence.models.SslValidityWhitelistEntry
import de.kuschku.quasseldroid.settings.AutoCompleteSettings import de.kuschku.quasseldroid.settings.AutoCompleteSettings
import de.kuschku.quasseldroid.settings.MessageSettings import de.kuschku.quasseldroid.settings.MessageSettings
import de.kuschku.quasseldroid.settings.NotificationSettings
import de.kuschku.quasseldroid.settings.Settings import de.kuschku.quasseldroid.settings.Settings
import de.kuschku.quasseldroid.ui.chat.input.AutoCompleteAdapter import de.kuschku.quasseldroid.ui.chat.input.AutoCompleteAdapter
import de.kuschku.quasseldroid.ui.chat.input.ChatlineFragment import de.kuschku.quasseldroid.ui.chat.input.ChatlineFragment
...@@ -92,9 +94,10 @@ import de.kuschku.quasseldroid.util.missingfeatures.MissingFeaturesDialog ...@@ -92,9 +94,10 @@ import de.kuschku.quasseldroid.util.missingfeatures.MissingFeaturesDialog
import de.kuschku.quasseldroid.util.missingfeatures.RequiredFeatures import de.kuschku.quasseldroid.util.missingfeatures.RequiredFeatures
import de.kuschku.quasseldroid.util.service.ServiceBoundActivity import de.kuschku.quasseldroid.util.service.ServiceBoundActivity
import de.kuschku.quasseldroid.util.ui.DragInterceptBottomSheetBehavior import de.kuschku.quasseldroid.util.ui.DragInterceptBottomSheetBehavior
import de.kuschku.quasseldroid.util.ui.MaterialContentLoadingProgressBar import de.kuschku.quasseldroid.util.ui.drawable.DrawerToggleActivityDrawable
import de.kuschku.quasseldroid.util.ui.NickCountDrawable import de.kuschku.quasseldroid.util.ui.drawable.NickCountDrawable
import de.kuschku.quasseldroid.util.ui.WarningBarView import de.kuschku.quasseldroid.util.ui.view.MaterialContentLoadingProgressBar
import de.kuschku.quasseldroid.util.ui.view.WarningBarView
import de.kuschku.quasseldroid.viewmodel.data.BufferData import de.kuschku.quasseldroid.viewmodel.data.BufferData
import io.reactivex.BackpressureStrategy import io.reactivex.BackpressureStrategy
import org.threeten.bp.Instant import org.threeten.bp.Instant
...@@ -135,6 +138,9 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc ...@@ -135,6 +138,9 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
@Inject @Inject
lateinit var messageSettings: MessageSettings lateinit var messageSettings: MessageSettings
@Inject
lateinit var notificationSettings: NotificationSettings
@Inject @Inject
lateinit var ircFormatDeserializer: IrcFormatDeserializer lateinit var ircFormatDeserializer: IrcFormatDeserializer
...@@ -296,6 +302,84 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc ...@@ -296,6 +302,84 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
} }
}) })
val maxBufferActivity = combineLatest(
viewModel.bufferList,
database.filtered().listenRx(accountId).toObservable().map {
it.associateBy(Filtered::bufferId, Filtered::filtered)
},
accountDatabase.accounts().listenDefaultFiltered(accountId, 0).toObservable()
).map { (info, filteredList, defaultFiltered) ->
val (config, bufferList) = info
val minimumActivity = config?.minimumActivity()?.enabledValues()?.max()
?: Buffer_Activity.NoActivity
val maxActivity = bufferList.asSequence().map { props ->
val activity = props.activity - Message_Type.of(filteredList[props.info.bufferId]?.toUInt()
?: defaultFiltered?.toUInt()
?: 0u)
when {
props.highlights > 0 -> Buffer_Activity.Highlight
activity.hasFlag(Message_Type.Plain) ||
activity.hasFlag(Message_Type.Notice) ||
activity.hasFlag(Message_Type.Action) -> Buffer_Activity.NewMessage
activity.isNotEmpty() -> Buffer_Activity.OtherActivity
else -> Buffer_Activity.NoActivity
}
}.max() ?: Buffer_Activity.NoActivity
val hasNotifications = bufferList.any { props ->
val activity = props.activity - Message_Type.of(filteredList[props.info.bufferId]?.toUInt()
?: defaultFiltered?.toUInt()
?: 0u)
when {
props.info.type hasFlag Buffer_Type.QueryBuffer ->
activity.hasFlag(Message_Type.Plain) ||
activity.hasFlag(Message_Type.Notice) ||
activity.hasFlag(Message_Type.Action)
props.info.type hasFlag Buffer_Type.ChannelBuffer ->
props.highlights > 0
else -> false
}
}
Pair(
if (maxActivity < minimumActivity) Buffer_Activity.NoActivity
else maxActivity,
hasNotifications
)
}
supportActionBar?.apply {
val toggleDefault = DrawerToggleActivityDrawable(themedContext, 0)
val toggleOtherActivity = DrawerToggleActivityDrawable(themedContext,
R.attr.colorTintActivity)
val toggleNewMessage = DrawerToggleActivityDrawable(themedContext, R.attr.colorTintMessage)
val toggleHighlight = DrawerToggleActivityDrawable(themedContext, R.attr.colorTintHighlight)
val toggleNotification = DrawerToggleActivityDrawable(themedContext,
R.attr.colorTintNotification)
maxBufferActivity.toLiveData().observe(this@ChatActivity,
Observer { (activity, hasNotifications) ->
setHomeAsUpIndicator(
when {
notificationSettings.showAllActivitiesInToolbar &&
activity == Buffer_Activity.Highlight ->
toggleHighlight
notificationSettings.showAllActivitiesInToolbar &&
activity == Buffer_Activity.NewMessage ->
toggleNewMessage
notificationSettings.showAllActivitiesInToolbar &&
activity == Buffer_Activity.OtherActivity ->
toggleOtherActivity
hasNotifications ->
toggleNotification
else ->
toggleDefault
}
)
})
}
if (autoCompleteSettings.prefix || autoCompleteSettings.auto) { if (autoCompleteSettings.prefix || autoCompleteSettings.auto) {
val autoCompleteBottomSheet = BottomSheetBehavior.from(autoCompleteList) val autoCompleteBottomSheet = BottomSheetBehavior.from(autoCompleteList)
chatlineFragment?.let { chatlineFragment?.let {
...@@ -780,6 +864,9 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc ...@@ -780,6 +864,9 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
if (Settings.message(this) != messageSettings) { if (Settings.message(this) != messageSettings) {
recreate() recreate()
} }
if (Settings.notification(this) != notificationSettings) {
recreate()
}
super.onStart() super.onStart()
} }
...@@ -825,7 +912,8 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc ...@@ -825,7 +912,8 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
(bufferData?.info?.type?.hasFlag(Buffer_Type.ChannelBuffer) ?: false || (bufferData?.info?.type?.hasFlag(Buffer_Type.ChannelBuffer) ?: false ||
bufferData?.info?.type?.hasFlag(Buffer_Type.QueryBuffer) ?: false) bufferData?.info?.type?.hasFlag(Buffer_Type.QueryBuffer) ?: false)
menu?.retint(toolbar.context) menu?.retint(toolbar.context)
menu?.findItem(R.id.action_nicklist)?.icon = NickCountDrawable(bufferData?.userCount ?: 0, menu?.findItem(R.id.action_nicklist)?.icon = NickCountDrawable(
bufferData?.userCount ?: 0,
nickCountDrawableSize, nickCountDrawableSize,
nickCountDrawableColor) nickCountDrawableColor)
return super.onCreateOptionsMenu(menu) return super.onCreateOptionsMenu(menu)
......
...@@ -63,7 +63,7 @@ import de.kuschku.quasseldroid.util.avatars.AvatarHelper ...@@ -63,7 +63,7 @@ import de.kuschku.quasseldroid.util.avatars.AvatarHelper
import de.kuschku.quasseldroid.util.helper.* import de.kuschku.quasseldroid.util.helper.*
import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer
import de.kuschku.quasseldroid.util.service.ServiceBoundFragment import de.kuschku.quasseldroid.util.service.ServiceBoundFragment
import de.kuschku.quasseldroid.util.ui.WarningBarView import de.kuschku.quasseldroid.util.ui.view.WarningBarView
import de.kuschku.quasseldroid.viewmodel.data.BufferHiddenState import de.kuschku.quasseldroid.viewmodel.data.BufferHiddenState
import de.kuschku.quasseldroid.viewmodel.data.BufferListItem import de.kuschku.quasseldroid.viewmodel.data.BufferListItem
import de.kuschku.quasseldroid.viewmodel.data.BufferState import de.kuschku.quasseldroid.viewmodel.data.BufferState
...@@ -317,24 +317,22 @@ class BufferViewConfigFragment : ServiceBoundFragment() { ...@@ -317,24 +317,22 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
combineLatest(viewModel.bufferList, combineLatest(viewModel.bufferList,
viewModel.expandedNetworks, viewModel.expandedNetworks,
viewModel.selectedBuffer).toLiveData().switchMapNotNull { a -> viewModel.selectedBuffer,
database.filtered().listen(accountId).zip(accountDatabase.accounts().listen(accountId)).map { (b, c) -> database.filtered().listenRx(accountId).toObservable(),
Triple(a, b, c) accountDatabase.accounts().listenDefaultFiltered(accountId, 0).toObservable()
} ).toLiveData().observe(this, Observer { it ->
}.observe(this, Observer { it -> it?.let { (info, expandedNetworks, selected, filteredList, defaultFiltered) ->
it?.let { (data, activityList, account) ->
runInBackground { runInBackground {
val (info, expandedNetworks, selected) = data
val (config, list) = info ?: Pair(null, emptyList()) val (config, list) = info ?: Pair(null, emptyList())
val minimumActivity = config?.minimumActivity() ?: Buffer_Activity.NONE val minimumActivity = config?.minimumActivity() ?: Buffer_Activity.NONE
val activities = activityList.associate { it.bufferId to it.filtered.toUInt() } val activities = filteredList.associate { it.bufferId to it.filtered.toUInt() }
val processedList = list.asSequence().sortedBy { props -> val processedList = list.asSequence().sortedBy { props ->
!props.info.type.hasFlag(Buffer_Type.StatusBuffer) !props.info.type.hasFlag(Buffer_Type.StatusBuffer)
}.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER) { props -> }.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER) { props ->
props.network.networkName props.network.networkName
}).map { props -> }).map { props ->
val activity = props.activity - (activities[props.info.bufferId] val activity = props.activity - (activities[props.info.bufferId]
?: account?.defaultFiltered?.toUInt() ?: defaultFiltered?.toUInt()
?: 0u) ?: 0u)
BufferListItem( BufferListItem(
props.copy( props.copy(
......
...@@ -56,7 +56,7 @@ import de.kuschku.quasseldroid.util.missingfeatures.MissingFeature ...@@ -56,7 +56,7 @@ import de.kuschku.quasseldroid.util.missingfeatures.MissingFeature
import de.kuschku.quasseldroid.util.missingfeatures.MissingFeaturesDialog import de.kuschku.quasseldroid.util.missingfeatures.MissingFeaturesDialog
import de.kuschku.quasseldroid.util.missingfeatures.RequiredFeatures import de.kuschku.quasseldroid.util.missingfeatures.RequiredFeatures
import de.kuschku.quasseldroid.util.service.ServiceBoundFragment import de.kuschku.quasseldroid.util.service.ServiceBoundFragment
import de.kuschku.quasseldroid.util.ui.BannerView import de.kuschku.quasseldroid.util.ui.view.BannerView
import io.reactivex.Observable import io.reactivex.Observable
class CoreSettingsFragment : ServiceBoundFragment() { class CoreSettingsFragment : ServiceBoundFragment() {
......
...@@ -42,10 +42,10 @@ import de.kuschku.libquassel.util.Optional ...@@ -42,10 +42,10 @@ import de.kuschku.libquassel.util.Optional
import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.ui.coresettings.highlightrule.HighlightRuleActivity import de.kuschku.quasseldroid.ui.coresettings.highlightrule.HighlightRuleActivity
import de.kuschku.quasseldroid.util.helper.toLiveData import de.kuschku.quasseldroid.util.helper.toLiveData
import de.kuschku.quasseldroid.util.ui.WarningBarView
import de.kuschku.quasseldroid.util.ui.settings.fragment.Changeable import de.kuschku.quasseldroid.util.ui.settings.fragment.Changeable
import de.kuschku.quasseldroid.util.ui.settings.fragment.Savable import de.kuschku.quasseldroid.util.ui.settings.fragment.Savable
import de.kuschku.quasseldroid.util.ui.settings.fragment.ServiceBoundSettingsFragment import de.kuschku.quasseldroid.util.ui.settings.fragment.ServiceBoundSettingsFragment
import de.kuschku.quasseldroid.util.ui.view.WarningBarView
class HighlightListFragment : ServiceBoundSettingsFragment(), Savable, Changeable { class HighlightListFragment : ServiceBoundSettingsFragment(), Savable, Changeable {
@BindView(R.id.feature_context_coresidehighlights) @BindView(R.id.feature_context_coresidehighlights)
......
...@@ -40,9 +40,9 @@ import de.kuschku.quasseldroid.R ...@@ -40,9 +40,9 @@ import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.util.helper.combineLatest import de.kuschku.quasseldroid.util.helper.combineLatest
import de.kuschku.quasseldroid.util.helper.retint import de.kuschku.quasseldroid.util.helper.retint
import de.kuschku.quasseldroid.util.helper.toLiveData import de.kuschku.quasseldroid.util.helper.toLiveData
import de.kuschku.quasseldroid.util.ui.MaterialContentLoadingProgressBar
import de.kuschku.quasseldroid.util.ui.WarningBarView
import de.kuschku.quasseldroid.util.ui.settings.fragment.ServiceBoundSettingsFragment import de.kuschku.quasseldroid.util.ui.settings.fragment.ServiceBoundSettingsFragment
import de.kuschku.quasseldroid.util.ui.view.MaterialContentLoadingProgressBar
import de.kuschku.quasseldroid.util.ui.view.WarningBarView
import io.reactivex.subjects.BehaviorSubject import io.reactivex.subjects.BehaviorSubject
import javax.inject.Inject import javax.inject.Inject
......
...@@ -26,7 +26,7 @@ import de.kuschku.libquassel.util.irc.SenderColorUtil ...@@ -26,7 +26,7 @@ import de.kuschku.libquassel.util.irc.SenderColorUtil
import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.settings.MessageSettings import de.kuschku.quasseldroid.settings.MessageSettings
import de.kuschku.quasseldroid.util.helper.styledAttributes import de.kuschku.quasseldroid.util.helper.styledAttributes
import de.kuschku.quasseldroid.util.ui.TextDrawable import de.kuschku.quasseldroid.util.ui.drawable.TextDrawable
import de.kuschku.quasseldroid.viewmodel.EditorViewModel import de.kuschku.quasseldroid.viewmodel.EditorViewModel
import javax.inject.Inject import javax.inject.Inject
......
/*
* Quasseldroid - Quassel client for Android
*
* Copyright (c) 2019 Janne Koschinski
* Copyright (c) 2019 The Quassel Project
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 3 as published
* by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.kuschku.quasseldroid.util.ui.drawable
import android.content.Context
import android.graphics.*
import android.graphics.drawable.Drawable
import androidx.annotation.ColorRes
import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.util.helper.styledAttributes
class DrawerToggleActivityDrawable(context: Context, @ColorRes colorAttribute: Int) : Drawable() {
private val size = context.resources.getDimensionPixelSize(R.dimen.drawer_toggle_size)
private val thickness = context.resources.getDimension(R.dimen.drawer_toggle_thickness)
private val overlayPaint = Paint().apply {
color = context.theme.styledAttributes(colorAttribute) {
getColor(0, 0)
}
style = Paint.Style.FILL
isAntiAlias = true
}
private val togglePaint = Paint().apply {
color = context.theme.styledAttributes(R.attr.colorControlNormal) {
getColor(0, 0)
}
style = Paint.Style.STROKE
strokeJoin = Paint.Join.MITER
strokeCap = Paint.Cap.BUTT
isAntiAlias = true
strokeWidth = thickness
}
private val overlayPath = Path().apply {
arcTo(RectF(22f, 22f, 24f, 24f), 0f, 90f)
arcTo(RectF(16f, 22f, 18f, 24f), 90f, 90f)
arcTo(RectF(16f, 16f, 18f, 18f), 180f, 90f)
arcTo(RectF(22f, 16f, 24f, 18f), 270f, 90f)
close()
}
private val togglePath = Path().apply {
// top bar
moveTo(3f, 7f)
rLineTo(18f, 0f)
// draw middle bar
moveTo(3f, 12f)
rLineTo(18f, 0f)
// bottom bar
moveTo(3f, 17f)
rLineTo(18f, 0f)
}
override fun getIntrinsicHeight() = size
override fun getIntrinsicWidth() = size
// Not supported
override fun setAlpha(alpha: Int) = Unit
override fun getOpacity(): Int = PixelFormat.TRANSLUCENT
// Not supported
override fun setColorFilter(colorFilter: ColorFilter?) = Unit
private val transformationMatrix = Matrix()
private val transformedOverlayPath = Path()
private val transformedTogglePath = Path()
private fun transformPaths() {
transformationMatrix.reset()
transformationMatrix.apply {
val smallestDimension = Math.min(bounds.width(), bounds.height())
preScale(smallestDimension / 24f, smallestDimension / 24f, 0f, 0f)
}
transformedOverlayPath.set(overlayPath)
transformedOverlayPath.transform(transformationMatrix)
transformedTogglePath.set(togglePath)
transformedTogglePath.transform(transformationMatrix)
}
override fun onBoundsChange(bounds: Rect?) {
transformPaths()
}
override fun draw(canvas: Canvas) {
if (bounds.width() <= 0 || bounds.height() <= 0) {
// Nothing to draw
return
}
canvas.drawPath(transformedTogglePath, togglePaint)
canvas.drawPath(transformedOverlayPath, overlayPaint)
}
}
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>. * with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package de.kuschku.quasseldroid.util.ui package de.kuschku.quasseldroid.util.ui.drawable
import android.graphics.* import android.graphics.*
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>. * with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package de.kuschku.quasseldroid.util.ui; package de.kuschku.quasseldroid.util.ui.drawable;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Color; import android.graphics.Color;
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>. * with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package de.kuschku.quasseldroid.util.ui package de.kuschku.quasseldroid.util.ui.view
import android.content.Context import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>. * with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package de.kuschku.quasseldroid.util.ui package de.kuschku.quasseldroid.util.ui.view
import android.content.Context import android.content.Context
import android.graphics.Canvas import android.graphics.Canvas
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package de.kuschku.quasseldroid.util.ui package de.kuschku.quasseldroid.util.ui.view
import android.content.Context import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package de.kuschku.quasseldroid.util.ui package de.kuschku.quasseldroid.util.ui.view
import android.content.Context import android.content.Context
import android.graphics.Canvas import android.graphics.Canvas
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>. * with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package de.kuschku.quasseldroid.util.ui package de.kuschku.quasseldroid.util.ui.view
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package de.kuschku.quasseldroid.util.ui package de.kuschku.quasseldroid.util.ui.view
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
...@@ -153,7 +153,12 @@ class ShadowView : View { ...@@ -153,7 +153,12 @@ class ShadowView : View {
} }
} }
paintDrawable.shaderFactory = ShadowShaderFactory(x0, y0, x1, y1, stopColors) paintDrawable.shaderFactory = ShadowShaderFactory(
x0,
y0,
x1,
y1,
stopColors)
cubicGradientScrimCache.put(cacheKeyHash, paintDrawable) cubicGradientScrimCache.put(cacheKeyHash, paintDrawable)
return paintDrawable return paintDrawable
} }
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>. * with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package de.kuschku.quasseldroid.util.ui package de.kuschku.quasseldroid.util.ui.view
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment