Add dividers toggle
@ -8,6 +8,8 @@ import com.tommasoberlose.anotherwidget.receivers.UpdatesReceiver
|
|||||||
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
|
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
|
||||||
import io.realm.Realm
|
import io.realm.Realm
|
||||||
import io.realm.RealmResults
|
import io.realm.RealmResults
|
||||||
|
import java.util.*
|
||||||
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
class EventRepository(val context: Context) {
|
class EventRepository(val context: Context) {
|
||||||
private val realm by lazy { Realm.getDefaultInstance() }
|
private val realm by lazy { Realm.getDefaultInstance() }
|
||||||
@ -39,12 +41,24 @@ class EventRepository(val context: Context) {
|
|||||||
Preferences.nextEventId = event.id
|
Preferences.nextEventId = event.id
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getNextEvent(): Event? = realm.where(Event::class.java).equalTo("id", Preferences.nextEventId).findFirst() ?: realm.where(Event::class.java).findFirst()
|
fun getNextEvent(): Event? {
|
||||||
|
val nextEvent = getEventByEventId(Preferences.nextEventId)
|
||||||
|
return if (nextEvent != null && nextEvent.endDate > Calendar.getInstance().timeInMillis + 60 * 1000) {
|
||||||
|
nextEvent
|
||||||
|
} else {
|
||||||
|
val events = getEvents()
|
||||||
|
if (events.isNotEmpty())
|
||||||
|
events.first()
|
||||||
|
else
|
||||||
|
resetNextEventData()
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun getEventByEventId(id: Long): Event? = realm.where(Event::class.java).equalTo("eventID", id).findFirst()
|
fun getEventByEventId(id: Long): Event? = realm.where(Event::class.java).equalTo("eventID", id).findFirst()
|
||||||
|
|
||||||
fun goToNextEvent() {
|
fun goToNextEvent() {
|
||||||
val eventList = realm.where(Event::class.java).findAll()
|
val eventList = getEvents()
|
||||||
|
|
||||||
if (eventList.isNotEmpty()) {
|
if (eventList.isNotEmpty()) {
|
||||||
val index = eventList.indexOfFirst { it.id == Preferences.nextEventId }
|
val index = eventList.indexOfFirst { it.id == Preferences.nextEventId }
|
||||||
@ -61,7 +75,7 @@ class EventRepository(val context: Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun goToPreviousEvent() {
|
fun goToPreviousEvent() {
|
||||||
val eventList = realm.where(Event::class.java).findAll()
|
val eventList = getEvents()
|
||||||
|
|
||||||
if (eventList.isNotEmpty()) {
|
if (eventList.isNotEmpty()) {
|
||||||
val index = eventList.indexOfFirst { it.id == Preferences.nextEventId }
|
val index = eventList.indexOfFirst { it.id == Preferences.nextEventId }
|
||||||
@ -77,7 +91,7 @@ class EventRepository(val context: Context) {
|
|||||||
MainWidget.updateWidget(context)
|
MainWidget.updateWidget(context)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getEvents(): RealmResults<Event> = realm.where(Event::class.java).findAll()
|
fun getEvents(): RealmResults<Event> = realm.where(Event::class.java).greaterThan("endDate", Calendar.getInstance().timeInMillis + 60 * 1000).findAll()
|
||||||
|
|
||||||
fun getEventsCount(): Int = realm.where(Event::class.java).findAll().size
|
fun getEventsCount(): Int = getEvents().size
|
||||||
}
|
}
|
@ -57,7 +57,6 @@ object Preferences : KotprefModel() {
|
|||||||
var showClock by booleanPref(key = "PREF_SHOW_CLOCK", default = false)
|
var showClock by booleanPref(key = "PREF_SHOW_CLOCK", default = false)
|
||||||
var clockAppName by stringPref(key = "PREF_CLOCK_APP_NAME", default = "")
|
var clockAppName by stringPref(key = "PREF_CLOCK_APP_NAME", default = "")
|
||||||
var clockAppPackage by stringPref(key = "PREF_CLOCK_APP_PACKAGE", default = "")
|
var clockAppPackage by stringPref(key = "PREF_CLOCK_APP_PACKAGE", default = "")
|
||||||
var showNextAlarm by booleanPref(default = false)
|
|
||||||
var textShadow by intPref(key = "PREF_TEXT_SHADOW", default = 1)
|
var textShadow by intPref(key = "PREF_TEXT_SHADOW", default = 1)
|
||||||
var showDiffTime by booleanPref(key = "PREF_SHOW_DIFF_TIME", default = true)
|
var showDiffTime by booleanPref(key = "PREF_SHOW_DIFF_TIME", default = true)
|
||||||
var showDeclinedEvents by booleanPref(key = "PREF_SHOW_DECLINED_EVENTS", default = false)
|
var showDeclinedEvents by booleanPref(key = "PREF_SHOW_DECLINED_EVENTS", default = false)
|
||||||
@ -66,6 +65,8 @@ object Preferences : KotprefModel() {
|
|||||||
var customFontFile by stringPref(key = "PREF_CUSTOM_FONT_FILE")
|
var customFontFile by stringPref(key = "PREF_CUSTOM_FONT_FILE")
|
||||||
var showNextEvent by booleanPref(key = "PREF_SHOW_NEXT_EVENT", default = true)
|
var showNextEvent by booleanPref(key = "PREF_SHOW_NEXT_EVENT", default = true)
|
||||||
|
|
||||||
|
var showDividers by booleanPref(default = true)
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
var showWallpaper by booleanPref(default = true)
|
var showWallpaper by booleanPref(default = true)
|
||||||
var showBigClockWarning by booleanPref(default = true)
|
var showBigClockWarning by booleanPref(default = true)
|
||||||
@ -73,7 +74,13 @@ object Preferences : KotprefModel() {
|
|||||||
var showPreview by booleanPref(default = true)
|
var showPreview by booleanPref(default = true)
|
||||||
var showXiaomiWarning by booleanPref(default = true)
|
var showXiaomiWarning by booleanPref(default = true)
|
||||||
|
|
||||||
// Music
|
// Glance
|
||||||
|
var showGlance by booleanPref(default = true)
|
||||||
|
var customInfo by stringPref(default = "")
|
||||||
|
var showNextAlarm by booleanPref(default = false)
|
||||||
|
var isBatteryLevelLow by booleanPref(default = false)
|
||||||
|
var googleFitSteps by longPref(default = -1)
|
||||||
|
|
||||||
var showMusic by booleanPref(default = false)
|
var showMusic by booleanPref(default = false)
|
||||||
var mediaInfoFormat by stringPref(default = "")
|
var mediaInfoFormat by stringPref(default = "")
|
||||||
var mediaPlayerTitle by stringPref(default = "")
|
var mediaPlayerTitle by stringPref(default = "")
|
||||||
|
@ -11,6 +11,7 @@ import androidx.core.content.ContextCompat.getSystemService
|
|||||||
import com.tommasoberlose.anotherwidget.db.EventRepository
|
import com.tommasoberlose.anotherwidget.db.EventRepository
|
||||||
import com.tommasoberlose.anotherwidget.global.Actions
|
import com.tommasoberlose.anotherwidget.global.Actions
|
||||||
import com.tommasoberlose.anotherwidget.helpers.CalendarHelper
|
import com.tommasoberlose.anotherwidget.helpers.CalendarHelper
|
||||||
|
import com.tommasoberlose.anotherwidget.models.Event
|
||||||
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
|
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
|
||||||
import org.joda.time.Period
|
import org.joda.time.Period
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -31,20 +32,36 @@ class UpdatesReceiver : BroadcastReceiver() {
|
|||||||
Intent.ACTION_DATE_CHANGED,
|
Intent.ACTION_DATE_CHANGED,
|
||||||
AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED,
|
AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED,
|
||||||
Actions.ACTION_TIME_UPDATE -> {
|
Actions.ACTION_TIME_UPDATE -> {
|
||||||
|
Log.d("ciao", "arrivata notifica")
|
||||||
MainWidget.updateWidget(context)
|
MainWidget.updateWidget(context)
|
||||||
|
if (intent.hasExtra(EVENT_ID)) {
|
||||||
|
setUpdates(context, intent.getLongExtra(EVENT_ID, -1))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
const val EVENT_ID = "EVENT_ID"
|
||||||
|
|
||||||
fun setUpdates(context: Context) {
|
fun setUpdates(context: Context, eventId: Long? = null) {
|
||||||
|
val eventRepository = EventRepository(context)
|
||||||
|
if (eventId == null) {
|
||||||
removeUpdates(context)
|
removeUpdates(context)
|
||||||
|
|
||||||
|
|
||||||
val eventRepository = EventRepository(context)
|
|
||||||
with(context.getSystemService(Context.ALARM_SERVICE) as AlarmManager) {
|
|
||||||
eventRepository.getEvents().forEach { event ->
|
eventRepository.getEvents().forEach { event ->
|
||||||
|
setEventUpdate(context, event)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val event = eventRepository.getEventByEventId(eventId)
|
||||||
|
if (event != null) {
|
||||||
|
setEventUpdate(context, event)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setEventUpdate(context: Context, event: Event) {
|
||||||
|
with(context.getSystemService(Context.ALARM_SERVICE) as AlarmManager) {
|
||||||
val now = Calendar.getInstance().apply {
|
val now = Calendar.getInstance().apply {
|
||||||
set(Calendar.SECOND, 0)
|
set(Calendar.SECOND, 0)
|
||||||
set(Calendar.MILLISECOND, 0)
|
set(Calendar.MILLISECOND, 0)
|
||||||
@ -52,13 +69,34 @@ class UpdatesReceiver : BroadcastReceiver() {
|
|||||||
val diff = Period(now.timeInMillis, event.startDate)
|
val diff = Period(now.timeInMillis, event.startDate)
|
||||||
if (event.startDate > now.timeInMillis) {
|
if (event.startDate > now.timeInMillis) {
|
||||||
// Update the widget every hour till the event
|
// Update the widget every hour till the event
|
||||||
(0..diff.hours).forEach {
|
Log.d("ciao", "${event.title} hours: ${diff.hours} - ${diff.minutes}")
|
||||||
setExactAndAllowWhileIdle(
|
setExactAndAllowWhileIdle(
|
||||||
AlarmManager.RTC,
|
AlarmManager.RTC,
|
||||||
if (event.startDate - it * 1000 * 60 * 60 > 60 * 1000) event.startDate - it * 1000 * 60 * 60 else now.timeInMillis + 120000,
|
if (event.startDate - diff.hours * 1000 * 60 * 60 > (now.timeInMillis + 120 * 1000)) event.startDate - diff.hours * 1000 * 60 * 60 else now.timeInMillis + 120000,
|
||||||
PendingIntent.getBroadcast(
|
PendingIntent.getBroadcast(
|
||||||
context,
|
context,
|
||||||
event.eventID.toInt() + it,
|
event.eventID.toInt(),
|
||||||
|
Intent(context, UpdatesReceiver::class.java).apply {
|
||||||
|
action = Actions.ACTION_TIME_UPDATE
|
||||||
|
putExtra(EVENT_ID, event.eventID)
|
||||||
|
},
|
||||||
|
0
|
||||||
|
)
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
// Update the widget one second after the event is finished
|
||||||
|
Log.d(
|
||||||
|
"ciao",
|
||||||
|
"${event.title} end: ${Date(if (event.endDate > now.timeInMillis + 120 * 1000) event.endDate else now.timeInMillis + 120000)}"
|
||||||
|
)
|
||||||
|
val fireTime =
|
||||||
|
if (event.endDate > now.timeInMillis + 120 * 1000) event.endDate else now.timeInMillis + 120000
|
||||||
|
setExactAndAllowWhileIdle(
|
||||||
|
AlarmManager.RTC,
|
||||||
|
fireTime,
|
||||||
|
PendingIntent.getBroadcast(
|
||||||
|
context,
|
||||||
|
event.eventID.toInt(),
|
||||||
Intent(context, UpdatesReceiver::class.java).apply {
|
Intent(context, UpdatesReceiver::class.java).apply {
|
||||||
action = Actions.ACTION_TIME_UPDATE
|
action = Actions.ACTION_TIME_UPDATE
|
||||||
},
|
},
|
||||||
@ -67,24 +105,12 @@ class UpdatesReceiver : BroadcastReceiver() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the widget one second after the event is finished
|
|
||||||
setExactAndAllowWhileIdle(
|
|
||||||
AlarmManager.RTC,
|
|
||||||
if (event.endDate > 60 *1000) event.endDate else now.timeInMillis + 120000,
|
|
||||||
PendingIntent.getBroadcast(context, 1, Intent(context, UpdatesReceiver::class.java).apply { action = Actions.ACTION_TIME_UPDATE }, 0)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun removeUpdates(context: Context) {
|
fun removeUpdates(context: Context) {
|
||||||
with(context.getSystemService(Context.ALARM_SERVICE) as AlarmManager) {
|
with(context.getSystemService(Context.ALARM_SERVICE) as AlarmManager) {
|
||||||
cancel(PendingIntent.getBroadcast(context, 1, Intent(context, UpdatesReceiver::class.java), 0))
|
|
||||||
EventRepository(context).getEvents().forEach {
|
EventRepository(context).getEvents().forEach {
|
||||||
(0..24).forEach { hour ->
|
cancel(PendingIntent.getBroadcast(context, it.eventID.toInt(), Intent(context, UpdatesReceiver::class.java), 0))
|
||||||
cancel(PendingIntent.getBroadcast(context, it.eventID.toInt() * hour, Intent(context, UpdatesReceiver::class.java), 0))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ class ViewPagerAdapter(fragmentActivity: FragmentActivity) :
|
|||||||
1 -> CalendarTabFragment.newInstance()
|
1 -> CalendarTabFragment.newInstance()
|
||||||
2 -> WeatherTabFragment.newInstance()
|
2 -> WeatherTabFragment.newInstance()
|
||||||
3 -> ClockTabFragment.newInstance()
|
3 -> ClockTabFragment.newInstance()
|
||||||
4 -> AtAGlanceTabFragment.newInstance()
|
4 -> GlanceTabFragment.newInstance()
|
||||||
else -> GeneralTabFragment.newInstance()
|
else -> GeneralTabFragment.newInstance()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import android.Manifest
|
|||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
@ -160,6 +161,13 @@ class CalendarTabFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
show_events_switch.setOnCheckedChangeListener { _, enabled: Boolean ->
|
||||||
|
Preferences.showEvents = enabled
|
||||||
|
if (Preferences.showEvents) {
|
||||||
|
requirePermission()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
action_filter_calendar.setOnClickListener {
|
action_filter_calendar.setOnClickListener {
|
||||||
val calendarSelectorList: List<CalendarSelector> = CalendarHelper.getCalendarList(requireContext()).map {
|
val calendarSelectorList: List<CalendarSelector> = CalendarHelper.getCalendarList(requireContext()).map {
|
||||||
CalendarSelector(
|
CalendarSelector(
|
||||||
@ -339,6 +347,8 @@ class CalendarTabFragment : Fragment() {
|
|||||||
report?.let {
|
report?.let {
|
||||||
if (report.areAllPermissionsGranted()){
|
if (report.areAllPermissionsGranted()){
|
||||||
checkReadEventsPermission()
|
checkReadEventsPermission()
|
||||||
|
} else {
|
||||||
|
Preferences.showEvents = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,6 +154,10 @@ class ClockTabFragment : Fragment() {
|
|||||||
Preferences.showClock = !Preferences.showClock
|
Preferences.showClock = !Preferences.showClock
|
||||||
}
|
}
|
||||||
|
|
||||||
|
show_clock_switch.setOnCheckedChangeListener { _, enabled: Boolean ->
|
||||||
|
Preferences.showClock = enabled
|
||||||
|
}
|
||||||
|
|
||||||
action_clock_text_size.setOnClickListener {
|
action_clock_text_size.setOnClickListener {
|
||||||
val dialog = BottomSheetMenu<Float>(requireContext(), header = getString(R.string.settings_clock_text_size_title)).setSelectedValue(Preferences.clockTextSize)
|
val dialog = BottomSheetMenu<Float>(requireContext(), header = getString(R.string.settings_clock_text_size_title)).setSelectedValue(Preferences.clockTextSize)
|
||||||
(46 downTo 12).filter { it % 2 == 0 }.forEach {
|
(46 downTo 12).filter { it % 2 == 0 }.forEach {
|
||||||
@ -182,7 +186,7 @@ class ClockTabFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
action_clock_bottom_margin_size.setOnClickListener {
|
action_clock_bottom_margin_size.setOnClickListener {
|
||||||
BottomSheetMenu<Int>(requireContext(), header = getString(R.string.settings_show_next_alarm_title)).setSelectedValue(Preferences.clockBottomMargin)
|
BottomSheetMenu<Int>(requireContext(), header = getString(R.string.settings_clock_bottom_margin_title)).setSelectedValue(Preferences.clockBottomMargin)
|
||||||
.addItem(getString(R.string.settings_clock_bottom_margin_subtitle_none), Constants.ClockBottomMargin.NONE.value)
|
.addItem(getString(R.string.settings_clock_bottom_margin_subtitle_none), Constants.ClockBottomMargin.NONE.value)
|
||||||
.addItem(getString(R.string.settings_clock_bottom_margin_subtitle_small), Constants.ClockBottomMargin.SMALL.value)
|
.addItem(getString(R.string.settings_clock_bottom_margin_subtitle_small), Constants.ClockBottomMargin.SMALL.value)
|
||||||
.addItem(getString(R.string.settings_clock_bottom_margin_subtitle_medium), Constants.ClockBottomMargin.MEDIUM.value)
|
.addItem(getString(R.string.settings_clock_bottom_margin_subtitle_medium), Constants.ClockBottomMargin.MEDIUM.value)
|
||||||
|
@ -146,6 +146,10 @@ class GeneralTabFragment : Fragment() {
|
|||||||
custom_font_label?.text = getString(SettingsStringHelper.getCustomFontLabel(it))
|
custom_font_label?.text = getString(SettingsStringHelper.getCustomFontLabel(it))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
viewModel.showDividers.observe(viewLifecycleOwner, Observer {
|
||||||
|
show_dividers_label?.text = if (it) getString(R.string.settings_visible) else getString(R.string.settings_not_visible)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun maintainScrollPosition(callback: () -> Unit) {
|
private fun maintainScrollPosition(callback: () -> Unit) {
|
||||||
@ -243,6 +247,15 @@ class GeneralTabFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
action_show_dividers.setOnClickListener {
|
||||||
|
BottomSheetMenu<Boolean>(requireContext(), header = getString(R.string.settings_show_multiple_events_title)).setSelectedValue(Preferences.showDividers)
|
||||||
|
.addItem(getString(R.string.settings_visible), true)
|
||||||
|
.addItem(getString(R.string.settings_not_visible), false)
|
||||||
|
.addOnSelectItemListener { value ->
|
||||||
|
Preferences.showDividers = value
|
||||||
|
}.show()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||||
|
@ -19,22 +19,22 @@ import androidx.lifecycle.ViewModelProvider
|
|||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import com.tommasoberlose.anotherwidget.R
|
import com.tommasoberlose.anotherwidget.R
|
||||||
import com.tommasoberlose.anotherwidget.components.BottomSheetMenu
|
import com.tommasoberlose.anotherwidget.components.BottomSheetMenu
|
||||||
import com.tommasoberlose.anotherwidget.databinding.FragmentAtAGlanceSettingsBinding
|
import com.tommasoberlose.anotherwidget.databinding.FragmentGlanceSettingsBinding
|
||||||
import com.tommasoberlose.anotherwidget.global.Preferences
|
import com.tommasoberlose.anotherwidget.global.Preferences
|
||||||
import com.tommasoberlose.anotherwidget.helpers.AlarmHelper
|
import com.tommasoberlose.anotherwidget.helpers.AlarmHelper
|
||||||
import com.tommasoberlose.anotherwidget.helpers.MediaPlayerHelper
|
import com.tommasoberlose.anotherwidget.helpers.MediaPlayerHelper
|
||||||
import com.tommasoberlose.anotherwidget.ui.activities.MainActivity
|
import com.tommasoberlose.anotherwidget.ui.activities.MainActivity
|
||||||
import com.tommasoberlose.anotherwidget.ui.viewmodels.MainViewModel
|
import com.tommasoberlose.anotherwidget.ui.viewmodels.MainViewModel
|
||||||
import kotlinx.android.synthetic.main.fragment_at_a_glance_settings.*
|
import kotlinx.android.synthetic.main.fragment_glance_settings.*
|
||||||
import kotlinx.android.synthetic.main.fragment_at_a_glance_settings.scrollView
|
import kotlinx.android.synthetic.main.fragment_glance_settings.scrollView
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import java.lang.Exception
|
import java.lang.Exception
|
||||||
|
|
||||||
class AtAGlanceTabFragment : Fragment() {
|
class GlanceTabFragment : Fragment() {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun newInstance() = AtAGlanceTabFragment()
|
fun newInstance() = GlanceTabFragment()
|
||||||
}
|
}
|
||||||
|
|
||||||
private lateinit var viewModel: MainViewModel
|
private lateinit var viewModel: MainViewModel
|
||||||
@ -49,7 +49,7 @@ class AtAGlanceTabFragment : Fragment() {
|
|||||||
): View {
|
): View {
|
||||||
|
|
||||||
viewModel = ViewModelProvider(activity as MainActivity).get(MainViewModel::class.java)
|
viewModel = ViewModelProvider(activity as MainActivity).get(MainViewModel::class.java)
|
||||||
val binding = DataBindingUtil.inflate<FragmentAtAGlanceSettingsBinding>(inflater, R.layout.fragment_at_a_glance_settings, container, false)
|
val binding = DataBindingUtil.inflate<FragmentGlanceSettingsBinding>(inflater, R.layout.fragment_glance_settings, container, false)
|
||||||
|
|
||||||
subscribeUi(binding, viewModel)
|
subscribeUi(binding, viewModel)
|
||||||
|
|
||||||
@ -67,32 +67,32 @@ class AtAGlanceTabFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun subscribeUi(
|
private fun subscribeUi(
|
||||||
binding: FragmentAtAGlanceSettingsBinding,
|
binding: FragmentGlanceSettingsBinding,
|
||||||
viewModel: MainViewModel
|
viewModel: MainViewModel
|
||||||
) {
|
) {
|
||||||
|
|
||||||
viewModel.showMusic.observe(viewLifecycleOwner, Observer {
|
// viewModel.showMusic.observe(viewLifecycleOwner, Observer {
|
||||||
checkNotificationPermission()
|
// checkNotificationPermission()
|
||||||
})
|
// })
|
||||||
|
//
|
||||||
viewModel.showNextAlarm.observe(viewLifecycleOwner, Observer {
|
// viewModel.showNextAlarm.observe(viewLifecycleOwner, Observer {
|
||||||
updateNextAlarmWarningUi()
|
// updateNextAlarmWarningUi()
|
||||||
})
|
// })
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupListener() {
|
private fun setupListener() {
|
||||||
action_show_music.setOnClickListener {
|
// action_show_music.setOnClickListener {
|
||||||
Preferences.showMusic = !Preferences.showMusic
|
// Preferences.showMusic = !Preferences.showMusic
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
action_show_next_alarm.setOnClickListener {
|
// action_show_next_alarm.setOnClickListener {
|
||||||
BottomSheetMenu<Boolean>(requireContext(), header = getString(R.string.settings_show_next_alarm_title)).setSelectedValue(Preferences.showNextAlarm)
|
// BottomSheetMenu<Boolean>(requireContext(), header = getString(R.string.settings_show_next_alarm_title)).setSelectedValue(Preferences.showNextAlarm)
|
||||||
.addItem(getString(R.string.settings_visible), true)
|
// .addItem(getString(R.string.settings_visible), true)
|
||||||
.addItem(getString(R.string.settings_not_visible), false)
|
// .addItem(getString(R.string.settings_not_visible), false)
|
||||||
.addOnSelectItemListener { value ->
|
// .addOnSelectItemListener { value ->
|
||||||
Preferences.showNextAlarm = value
|
// Preferences.showNextAlarm = value
|
||||||
}.show()
|
// }.show()
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -9,6 +9,7 @@ import android.os.Build
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.util.DisplayMetrics
|
import android.util.DisplayMetrics
|
||||||
|
import android.util.Log
|
||||||
import android.util.TypedValue
|
import android.util.TypedValue
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
@ -28,8 +29,6 @@ import com.google.android.material.tabs.TabLayoutMediator
|
|||||||
import com.google.android.material.transition.MaterialSharedAxis
|
import com.google.android.material.transition.MaterialSharedAxis
|
||||||
import com.tommasoberlose.anotherwidget.R
|
import com.tommasoberlose.anotherwidget.R
|
||||||
import com.tommasoberlose.anotherwidget.components.MaterialBottomSheetDialog
|
import com.tommasoberlose.anotherwidget.components.MaterialBottomSheetDialog
|
||||||
import com.tommasoberlose.anotherwidget.databinding.FragmentAdvancedSettingsBinding
|
|
||||||
import com.tommasoberlose.anotherwidget.databinding.FragmentAppMainBinding
|
|
||||||
import com.tommasoberlose.anotherwidget.global.Constants
|
import com.tommasoberlose.anotherwidget.global.Constants
|
||||||
import com.tommasoberlose.anotherwidget.global.Preferences
|
import com.tommasoberlose.anotherwidget.global.Preferences
|
||||||
import com.tommasoberlose.anotherwidget.helpers.BitmapHelper
|
import com.tommasoberlose.anotherwidget.helpers.BitmapHelper
|
||||||
@ -53,6 +52,7 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun newInstance() = MainFragment()
|
fun newInstance() = MainFragment()
|
||||||
|
private const val PREVIEW_BASE_HEIGHT = 120
|
||||||
}
|
}
|
||||||
|
|
||||||
private lateinit var viewModel: MainViewModel
|
private lateinit var viewModel: MainViewModel
|
||||||
@ -98,7 +98,7 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
|
|||||||
time_container.isVisible = Preferences.showClock
|
time_container.isVisible = Preferences.showClock
|
||||||
|
|
||||||
preview.layoutParams = preview.layoutParams.apply {
|
preview.layoutParams = preview.layoutParams.apply {
|
||||||
height = 160.toPixel(requireContext()) + if (Preferences.showClock) 100.toPixel(requireContext()) else 0
|
height = PREVIEW_BASE_HEIGHT.toPixel(requireContext()) + if (Preferences.showClock) 100.toPixel(requireContext()) else 0
|
||||||
}
|
}
|
||||||
subscribeUi(viewModel)
|
subscribeUi(viewModel)
|
||||||
updateUI()
|
updateUI()
|
||||||
@ -136,7 +136,6 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
|
|||||||
)
|
)
|
||||||
widget_shape_background.setImageDrawable(BitmapHelper.getTintedDrawable(requireContext(), R.drawable.card_background, ColorHelper.getBackgroundColor()))
|
widget_shape_background.setImageDrawable(BitmapHelper.getTintedDrawable(requireContext(), R.drawable.card_background, ColorHelper.getBackgroundColor()))
|
||||||
uiJob = viewLifecycleOwner.lifecycleScope.launch(Dispatchers.IO) {
|
uiJob = viewLifecycleOwner.lifecycleScope.launch(Dispatchers.IO) {
|
||||||
delay(200)
|
|
||||||
val generatedView = MainWidget.generateWidgetView(requireContext())
|
val generatedView = MainWidget.generateWidgetView(requireContext())
|
||||||
|
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
@ -207,7 +206,7 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
|
|||||||
|
|
||||||
ValueAnimator.ofInt(
|
ValueAnimator.ofInt(
|
||||||
preview.height,
|
preview.height,
|
||||||
160.toPixel(requireContext()) + if (Preferences.showClock) 100.toPixel(
|
PREVIEW_BASE_HEIGHT.toPixel(requireContext()) + if (Preferences.showClock) 100.toPixel(
|
||||||
requireContext()
|
requireContext()
|
||||||
) else 0
|
) else 0
|
||||||
).apply {
|
).apply {
|
||||||
@ -229,7 +228,7 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
|
|||||||
if (preview.height == 0) {
|
if (preview.height == 0) {
|
||||||
ValueAnimator.ofInt(
|
ValueAnimator.ofInt(
|
||||||
preview.height,
|
preview.height,
|
||||||
160.toPixel(requireContext()) + if (Preferences.showClock) 100.toPixel(
|
PREVIEW_BASE_HEIGHT.toPixel(requireContext()) + if (Preferences.showClock) 100.toPixel(
|
||||||
requireContext()
|
requireContext()
|
||||||
) else 0
|
) else 0
|
||||||
).apply {
|
).apply {
|
||||||
@ -323,6 +322,7 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
|
|||||||
Preferences.preferences.registerOnSharedPreferenceChangeListener(this)
|
Preferences.preferences.registerOnSharedPreferenceChangeListener(this)
|
||||||
EventBus.getDefault().register(this)
|
EventBus.getDefault().register(this)
|
||||||
showErrorBadge()
|
showErrorBadge()
|
||||||
|
updateUI()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
|
@ -14,7 +14,6 @@ import androidx.lifecycle.Observer
|
|||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.Navigation
|
import androidx.navigation.Navigation
|
||||||
import com.google.android.material.transition.MaterialContainerTransform
|
|
||||||
import com.google.android.material.transition.MaterialSharedAxis
|
import com.google.android.material.transition.MaterialSharedAxis
|
||||||
import com.karumi.dexter.Dexter
|
import com.karumi.dexter.Dexter
|
||||||
import com.karumi.dexter.MultiplePermissionsReport
|
import com.karumi.dexter.MultiplePermissionsReport
|
||||||
@ -24,7 +23,7 @@ import com.karumi.dexter.listener.multi.MultiplePermissionsListener
|
|||||||
import com.tommasoberlose.anotherwidget.BuildConfig
|
import com.tommasoberlose.anotherwidget.BuildConfig
|
||||||
import com.tommasoberlose.anotherwidget.R
|
import com.tommasoberlose.anotherwidget.R
|
||||||
import com.tommasoberlose.anotherwidget.components.BottomSheetMenu
|
import com.tommasoberlose.anotherwidget.components.BottomSheetMenu
|
||||||
import com.tommasoberlose.anotherwidget.databinding.FragmentAdvancedSettingsBinding
|
import com.tommasoberlose.anotherwidget.databinding.FragmentSettingsBinding
|
||||||
import com.tommasoberlose.anotherwidget.global.Preferences
|
import com.tommasoberlose.anotherwidget.global.Preferences
|
||||||
import com.tommasoberlose.anotherwidget.ui.activities.MainActivity
|
import com.tommasoberlose.anotherwidget.ui.activities.MainActivity
|
||||||
import com.tommasoberlose.anotherwidget.ui.activities.SupportDevActivity
|
import com.tommasoberlose.anotherwidget.ui.activities.SupportDevActivity
|
||||||
@ -35,7 +34,7 @@ import com.tommasoberlose.anotherwidget.helpers.WeatherHelper
|
|||||||
import com.tommasoberlose.anotherwidget.ui.activities.IntegrationsActivity
|
import com.tommasoberlose.anotherwidget.ui.activities.IntegrationsActivity
|
||||||
import com.tommasoberlose.anotherwidget.utils.checkGrantedPermission
|
import com.tommasoberlose.anotherwidget.utils.checkGrantedPermission
|
||||||
import com.tommasoberlose.anotherwidget.utils.openURI
|
import com.tommasoberlose.anotherwidget.utils.openURI
|
||||||
import kotlinx.android.synthetic.main.fragment_advanced_settings.*
|
import kotlinx.android.synthetic.main.fragment_settings.*
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
@ -60,7 +59,7 @@ class SettingsFragment : Fragment() {
|
|||||||
): View {
|
): View {
|
||||||
|
|
||||||
viewModel = ViewModelProvider(activity as MainActivity).get(MainViewModel::class.java)
|
viewModel = ViewModelProvider(activity as MainActivity).get(MainViewModel::class.java)
|
||||||
val binding = DataBindingUtil.inflate<FragmentAdvancedSettingsBinding>(inflater, R.layout.fragment_advanced_settings, container, false)
|
val binding = DataBindingUtil.inflate<FragmentSettingsBinding>(inflater, R.layout.fragment_settings, container, false)
|
||||||
|
|
||||||
binding.lifecycleOwner = this
|
binding.lifecycleOwner = this
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
@ -168,6 +168,10 @@ class WeatherTabFragment : Fragment() {
|
|||||||
Preferences.showWeather = !Preferences.showWeather
|
Preferences.showWeather = !Preferences.showWeather
|
||||||
}
|
}
|
||||||
|
|
||||||
|
show_weather_switch.setOnCheckedChangeListener { _, enabled: Boolean ->
|
||||||
|
Preferences.showWeather = enabled
|
||||||
|
}
|
||||||
|
|
||||||
action_weather_provider_api_key.setOnClickListener {
|
action_weather_provider_api_key.setOnClickListener {
|
||||||
if (Preferences.showWeather) {
|
if (Preferences.showWeather) {
|
||||||
startActivityForResult(
|
startActivityForResult(
|
||||||
|
@ -16,6 +16,7 @@ class MainViewModel : ViewModel() {
|
|||||||
val textShadow = Preferences.asLiveData(Preferences::textShadow)
|
val textShadow = Preferences.asLiveData(Preferences::textShadow)
|
||||||
val customFont = Preferences.asLiveData(Preferences::customFont)
|
val customFont = Preferences.asLiveData(Preferences::customFont)
|
||||||
val secondRowInformation = Preferences.asLiveData(Preferences::secondRowInformation)
|
val secondRowInformation = Preferences.asLiveData(Preferences::secondRowInformation)
|
||||||
|
val showDividers = Preferences.asLiveData(Preferences::showDividers)
|
||||||
|
|
||||||
// Calendar Settings
|
// Calendar Settings
|
||||||
val showEvents = Preferences.asLiveData(Preferences::showEvents)
|
val showEvents = Preferences.asLiveData(Preferences::showEvents)
|
||||||
@ -34,7 +35,6 @@ class MainViewModel : ViewModel() {
|
|||||||
val clockTextAlpha = Preferences.asLiveData(Preferences::clockTextAlpha)
|
val clockTextAlpha = Preferences.asLiveData(Preferences::clockTextAlpha)
|
||||||
|
|
||||||
val clockAppName = Preferences.asLiveData(Preferences::clockAppName)
|
val clockAppName = Preferences.asLiveData(Preferences::clockAppName)
|
||||||
val showNextAlarm = Preferences.asLiveData(Preferences::showNextAlarm)
|
|
||||||
val dateFormat = Preferences.asLiveData(Preferences::dateFormat)
|
val dateFormat = Preferences.asLiveData(Preferences::dateFormat)
|
||||||
val clockBottomMargin = Preferences.asLiveData(Preferences::clockBottomMargin)
|
val clockBottomMargin = Preferences.asLiveData(Preferences::clockBottomMargin)
|
||||||
|
|
||||||
@ -52,9 +52,8 @@ class MainViewModel : ViewModel() {
|
|||||||
|
|
||||||
val showWeatherWarning = Preferences.asLiveData(Preferences::showWeatherWarning)
|
val showWeatherWarning = Preferences.asLiveData(Preferences::showWeatherWarning)
|
||||||
|
|
||||||
// Music
|
// Glance
|
||||||
val showMusic = Preferences.asLiveData(Preferences::showMusic)
|
val showGlance = Preferences.asLiveData(Preferences::showGlance)
|
||||||
val mediaInfoFormat = Preferences.asLiveData(Preferences::mediaInfoFormat)
|
|
||||||
|
|
||||||
// Advanced Settings
|
// Advanced Settings
|
||||||
val darkThemePreference = Preferences.asLiveData(Preferences::darkThemePreference)
|
val darkThemePreference = Preferences.asLiveData(Preferences::darkThemePreference)
|
||||||
|
@ -637,6 +637,11 @@ class MainWidget : AppWidgetProvider() {
|
|||||||
v.special_weather.visibility = View.GONE
|
v.special_weather.visibility = View.GONE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Dividers
|
||||||
|
arrayOf(v.divider1, v.divider2, v.divider3).forEach {
|
||||||
|
it.isVisible = Preferences.showDividers
|
||||||
|
}
|
||||||
|
|
||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BIN
app/src/main/res/drawable-hdpi/round_all_inclusive.png
Normal file
After Width: | Height: | Size: 465 B |
BIN
app/src/main/res/drawable-hdpi/round_all_inclusive_black_18.png
Normal file
After Width: | Height: | Size: 399 B |
BIN
app/src/main/res/drawable-hdpi/round_all_inclusive_black_36.png
Normal file
After Width: | Height: | Size: 665 B |
BIN
app/src/main/res/drawable-hdpi/round_all_inclusive_black_48.png
Normal file
After Width: | Height: | Size: 867 B |
After Width: | Height: | Size: 186 B |
After Width: | Height: | Size: 184 B |
After Width: | Height: | Size: 241 B |
After Width: | Height: | Size: 248 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_4.png
Normal file
After Width: | Height: | Size: 616 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_4_black_18.png
Normal file
After Width: | Height: | Size: 324 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_4_black_24.png
Normal file
After Width: | Height: | Size: 372 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_4_black_36.png
Normal file
After Width: | Height: | Size: 517 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_5.png
Normal file
After Width: | Height: | Size: 361 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_5_black_18.png
Normal file
After Width: | Height: | Size: 333 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_5_black_36.png
Normal file
After Width: | Height: | Size: 509 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_5_black_48.png
Normal file
After Width: | Height: | Size: 642 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_7.png
Normal file
After Width: | Height: | Size: 393 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_7_black_24.png
Normal file
After Width: | Height: | Size: 441 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_7_black_36.png
Normal file
After Width: | Height: | Size: 628 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_7_black_48.png
Normal file
After Width: | Height: | Size: 802 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_low.png
Normal file
After Width: | Height: | Size: 399 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_low_black_18.png
Normal file
After Width: | Height: | Size: 362 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_low_black_36.png
Normal file
After Width: | Height: | Size: 541 B |
BIN
app/src/main/res/drawable-hdpi/round_brightness_low_black_48.png
Normal file
After Width: | Height: | Size: 689 B |
BIN
app/src/main/res/drawable-hdpi/round_category.png
Normal file
After Width: | Height: | Size: 345 B |
BIN
app/src/main/res/drawable-hdpi/round_category_black_18.png
Normal file
After Width: | Height: | Size: 292 B |
BIN
app/src/main/res/drawable-hdpi/round_category_black_36.png
Normal file
After Width: | Height: | Size: 469 B |
BIN
app/src/main/res/drawable-hdpi/round_category_black_48.png
Normal file
After Width: | Height: | Size: 590 B |
BIN
app/src/main/res/drawable-hdpi/round_drag_handle.png
Normal file
After Width: | Height: | Size: 182 B |
BIN
app/src/main/res/drawable-hdpi/round_drag_handle_black_18.png
Normal file
After Width: | Height: | Size: 138 B |
BIN
app/src/main/res/drawable-hdpi/round_drag_handle_black_24.png
Normal file
After Width: | Height: | Size: 143 B |
BIN
app/src/main/res/drawable-hdpi/round_drag_handle_black_36.png
Normal file
After Width: | Height: | Size: 162 B |
BIN
app/src/main/res/drawable-hdpi/round_drag_indicator_black_18.png
Normal file
After Width: | Height: | Size: 296 B |
BIN
app/src/main/res/drawable-hdpi/round_drag_indicator_black_24.png
Normal file
After Width: | Height: | Size: 229 B |
BIN
app/src/main/res/drawable-hdpi/round_drag_indicator_black_36.png
Normal file
After Width: | Height: | Size: 414 B |
BIN
app/src/main/res/drawable-hdpi/round_drag_indicator_black_48.png
Normal file
After Width: | Height: | Size: 371 B |
BIN
app/src/main/res/drawable-hdpi/round_format_quote.png
Normal file
After Width: | Height: | Size: 275 B |
BIN
app/src/main/res/drawable-hdpi/round_format_quote_black_18.png
Normal file
After Width: | Height: | Size: 227 B |
BIN
app/src/main/res/drawable-hdpi/round_format_quote_black_24.png
Normal file
After Width: | Height: | Size: 196 B |
BIN
app/src/main/res/drawable-hdpi/round_format_quote_black_36.png
Normal file
After Width: | Height: | Size: 318 B |
BIN
app/src/main/res/drawable-hdpi/round_layers.png
Normal file
After Width: | Height: | Size: 421 B |
BIN
app/src/main/res/drawable-hdpi/round_layers_black_18.png
Normal file
After Width: | Height: | Size: 333 B |
BIN
app/src/main/res/drawable-hdpi/round_layers_black_36.png
Normal file
After Width: | Height: | Size: 546 B |
BIN
app/src/main/res/drawable-hdpi/round_layers_black_48.png
Normal file
After Width: | Height: | Size: 688 B |
BIN
app/src/main/res/drawable-hdpi/round_local_activity.png
Normal file
After Width: | Height: | Size: 361 B |
BIN
app/src/main/res/drawable-hdpi/round_local_activity_black_18.png
Normal file
After Width: | Height: | Size: 318 B |
BIN
app/src/main/res/drawable-hdpi/round_local_activity_black_36.png
Normal file
After Width: | Height: | Size: 504 B |
BIN
app/src/main/res/drawable-hdpi/round_local_activity_black_48.png
Normal file
After Width: | Height: | Size: 649 B |
BIN
app/src/main/res/drawable-hdpi/round_offline_bolt.png
Normal file
After Width: | Height: | Size: 761 B |
BIN
app/src/main/res/drawable-hdpi/round_offline_bolt_black_18.png
Normal file
After Width: | Height: | Size: 351 B |
BIN
app/src/main/res/drawable-hdpi/round_offline_bolt_black_24.png
Normal file
After Width: | Height: | Size: 414 B |
BIN
app/src/main/res/drawable-hdpi/round_offline_bolt_black_36.png
Normal file
After Width: | Height: | Size: 585 B |
BIN
app/src/main/res/drawable-hdpi/round_timelapse_black_18.png
Normal file
After Width: | Height: | Size: 481 B |
BIN
app/src/main/res/drawable-hdpi/round_timelapse_black_24.png
Normal file
After Width: | Height: | Size: 559 B |
BIN
app/src/main/res/drawable-hdpi/round_timelapse_black_36.png
Normal file
After Width: | Height: | Size: 815 B |
BIN
app/src/main/res/drawable-hdpi/round_timelapse_black_48.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
app/src/main/res/drawable-hdpi/round_vertical_align_center.png
Normal file
After Width: | Height: | Size: 247 B |
After Width: | Height: | Size: 219 B |
After Width: | Height: | Size: 336 B |
After Width: | Height: | Size: 356 B |
BIN
app/src/main/res/drawable-mdpi/round_all_inclusive.png
Normal file
After Width: | Height: | Size: 341 B |
BIN
app/src/main/res/drawable-mdpi/round_all_inclusive_black_18.png
Normal file
After Width: | Height: | Size: 260 B |
BIN
app/src/main/res/drawable-mdpi/round_all_inclusive_black_36.png
Normal file
After Width: | Height: | Size: 465 B |
BIN
app/src/main/res/drawable-mdpi/round_all_inclusive_black_48.png
Normal file
After Width: | Height: | Size: 593 B |
After Width: | Height: | Size: 116 B |
After Width: | Height: | Size: 118 B |
After Width: | Height: | Size: 184 B |
After Width: | Height: | Size: 178 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_4.png
Normal file
After Width: | Height: | Size: 467 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_4_black_18.png
Normal file
After Width: | Height: | Size: 243 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_4_black_24.png
Normal file
After Width: | Height: | Size: 283 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_4_black_36.png
Normal file
After Width: | Height: | Size: 372 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_5.png
Normal file
After Width: | Height: | Size: 286 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_5_black_18.png
Normal file
After Width: | Height: | Size: 234 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_5_black_36.png
Normal file
After Width: | Height: | Size: 361 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_5_black_48.png
Normal file
After Width: | Height: | Size: 467 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_7.png
Normal file
After Width: | Height: | Size: 279 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_7_black_24.png
Normal file
After Width: | Height: | Size: 342 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_7_black_36.png
Normal file
After Width: | Height: | Size: 441 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_7_black_48.png
Normal file
After Width: | Height: | Size: 564 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_low.png
Normal file
After Width: | Height: | Size: 306 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_low_black_18.png
Normal file
After Width: | Height: | Size: 251 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_low_black_36.png
Normal file
After Width: | Height: | Size: 399 B |
BIN
app/src/main/res/drawable-mdpi/round_brightness_low_black_48.png
Normal file
After Width: | Height: | Size: 507 B |
BIN
app/src/main/res/drawable-mdpi/round_category.png
Normal file
After Width: | Height: | Size: 249 B |
BIN
app/src/main/res/drawable-mdpi/round_category_black_18.png
Normal file
After Width: | Height: | Size: 228 B |
BIN
app/src/main/res/drawable-mdpi/round_category_black_36.png
Normal file
After Width: | Height: | Size: 345 B |