@ -25,7 +25,7 @@
|
|||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/AppTheme"
|
android:theme="@style/AppTheme"
|
||||||
tools:ignore="LockedOrientationActivity">
|
tools:ignore="LockedOrientationActivity">
|
||||||
<activity android:name=".ui.activities.MainActivity" android:launchMode="singleInstance" android:theme="@style/AppTheme.Main" android:screenOrientation="portrait">
|
<activity android:name=".ui.activities.MainActivity" android:launchMode="singleInstance" android:theme="@style/AppTheme.Main">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ object Preferences : KotprefModel() {
|
|||||||
var customLocationLon by stringPref(key = "PREF_CUSTOM_LOCATION_LON", default = "")
|
var customLocationLon by stringPref(key = "PREF_CUSTOM_LOCATION_LON", default = "")
|
||||||
var customLocationAdd by stringPref(key = "PREF_CUSTOM_LOCATION_ADD", default = "")
|
var customLocationAdd by stringPref(key = "PREF_CUSTOM_LOCATION_ADD", default = "")
|
||||||
var dateFormat by stringPref(default = "")
|
var dateFormat by stringPref(default = "")
|
||||||
|
var isDateCapitalize by booleanPref(default = false)
|
||||||
var weatherRefreshPeriod by intPref(key = "PREF_WEATHER_REFRESH_PERIOD", default = 1)
|
var weatherRefreshPeriod by intPref(key = "PREF_WEATHER_REFRESH_PERIOD", default = 1)
|
||||||
var showUntil by intPref(key = "PREF_SHOW_UNTIL", default = 1)
|
var showUntil by intPref(key = "PREF_SHOW_UNTIL", default = 1)
|
||||||
var calendarAppName by stringPref(key = "PREF_CALENDAR_APP_NAME", default = "")
|
var calendarAppName by stringPref(key = "PREF_CALENDAR_APP_NAME", default = "")
|
||||||
|
@ -4,6 +4,7 @@ import android.Manifest
|
|||||||
import android.content.ContentUris
|
import android.content.ContentUris
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.provider.CalendarContract
|
import android.provider.CalendarContract
|
||||||
|
import android.util.Log
|
||||||
import com.tommasoberlose.anotherwidget.services.EventListenerJob
|
import com.tommasoberlose.anotherwidget.services.EventListenerJob
|
||||||
import com.tommasoberlose.anotherwidget.db.EventRepository
|
import com.tommasoberlose.anotherwidget.db.EventRepository
|
||||||
import com.tommasoberlose.anotherwidget.models.Event
|
import com.tommasoberlose.anotherwidget.models.Event
|
||||||
@ -61,6 +62,7 @@ object CalendarHelper {
|
|||||||
for (instance in instances) {
|
for (instance in instances) {
|
||||||
try {
|
try {
|
||||||
val e = provider.getEvent(instance.eventId)
|
val e = provider.getEvent(instance.eventId)
|
||||||
|
Log.d("ciao", "evento: $e")
|
||||||
if (e != null && !e.deleted && instance.begin <= limit.timeInMillis && (Preferences.calendarAllDay || !e.allDay) && !getFilteredCalendarIdList().contains(
|
if (e != null && !e.deleted && instance.begin <= limit.timeInMillis && (Preferences.calendarAllDay || !e.allDay) && !getFilteredCalendarIdList().contains(
|
||||||
e.calendarId
|
e.calendarId
|
||||||
) && (Preferences.showDeclinedEvents || e.selfAttendeeStatus.toInt() != CalendarContract.Attendees.ATTENDEE_STATUS_DECLINED)
|
) && (Preferences.showDeclinedEvents || e.selfAttendeeStatus.toInt() != CalendarContract.Attendees.ATTENDEE_STATUS_DECLINED)
|
||||||
|
@ -12,27 +12,30 @@ import java.util.*
|
|||||||
object DateHelper {
|
object DateHelper {
|
||||||
fun getDateText(context: Context, date: Calendar): String {
|
fun getDateText(context: Context, date: Calendar): String {
|
||||||
return if (Preferences.dateFormat != "") {
|
return if (Preferences.dateFormat != "") {
|
||||||
try {
|
val text = try {
|
||||||
SimpleDateFormat(Preferences.dateFormat, Locale.getDefault()).format(date.time)
|
SimpleDateFormat(Preferences.dateFormat, Locale.getDefault()).format(date.time)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
getDefaultDateText(context, date)
|
getDefaultDateText(context, date)
|
||||||
}
|
}
|
||||||
|
if (Preferences.isDateCapitalize) text.getCapWordString() else text
|
||||||
} else {
|
} else {
|
||||||
val flags: Int =
|
val flags: Int =
|
||||||
DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_NO_YEAR or DateUtils.FORMAT_ABBREV_MONTH
|
DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_NO_YEAR or DateUtils.FORMAT_ABBREV_MONTH
|
||||||
"%s, %s".format(
|
val text = "%s, %s".format(
|
||||||
SimpleDateFormat("EEEE", Locale.getDefault()).format(date.time),
|
SimpleDateFormat("EEEE", Locale.getDefault()).format(date.time),
|
||||||
DateUtils.formatDateTime(context, date.timeInMillis, flags)
|
DateUtils.formatDateTime(context, date.timeInMillis, flags)
|
||||||
)
|
)
|
||||||
|
if (Preferences.isDateCapitalize) text.getCapWordString() else text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getDefaultDateText(context: Context, date: Calendar): String {
|
fun getDefaultDateText(context: Context, date: Calendar): String {
|
||||||
val flags: Int =
|
val flags: Int =
|
||||||
DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_NO_YEAR or DateUtils.FORMAT_ABBREV_MONTH
|
DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_NO_YEAR or DateUtils.FORMAT_ABBREV_MONTH
|
||||||
return "%s, %s".format(
|
val text = "%s, %s".format(
|
||||||
SimpleDateFormat("EEEE", Locale.getDefault()).format(date.time),
|
SimpleDateFormat("EEEE", Locale.getDefault()).format(date.time),
|
||||||
DateUtils.formatDateTime(context, date.timeInMillis, flags)
|
DateUtils.formatDateTime(context, date.timeInMillis, flags)
|
||||||
)
|
)
|
||||||
|
return if (Preferences.isDateCapitalize) text.getCapWordString() else text
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,6 +3,7 @@ package com.tommasoberlose.anotherwidget.helpers
|
|||||||
import android.appwidget.AppWidgetManager
|
import android.appwidget.AppWidgetManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.res.Configuration.ORIENTATION_PORTRAIT
|
import android.content.res.Configuration.ORIENTATION_PORTRAIT
|
||||||
|
import android.util.Log
|
||||||
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
||||||
import com.tommasoberlose.anotherwidget.db.EventRepository
|
import com.tommasoberlose.anotherwidget.db.EventRepository
|
||||||
import com.tommasoberlose.anotherwidget.global.Preferences
|
import com.tommasoberlose.anotherwidget.global.Preferences
|
||||||
@ -24,19 +25,9 @@ object WidgetHelper {
|
|||||||
return widthInPx to heightInPx
|
return widthInPx to heightInPx
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getWidgetWidth(isPortrait: Boolean, widgetId: Int): Int =
|
private fun getWidgetWidth(isPortrait: Boolean, widgetId: Int): Int = getWidgetSizeInDp(widgetId, AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH)
|
||||||
if (isPortrait) {
|
|
||||||
getWidgetSizeInDp(widgetId, AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH)
|
|
||||||
} else {
|
|
||||||
getWidgetSizeInDp(widgetId, AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getWidgetHeight(isPortrait: Boolean, widgetId: Int): Int =
|
private fun getWidgetHeight(isPortrait: Boolean, widgetId: Int): Int = getWidgetSizeInDp(widgetId, AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT)
|
||||||
if (isPortrait) {
|
|
||||||
getWidgetSizeInDp(widgetId, AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT)
|
|
||||||
} else {
|
|
||||||
getWidgetSizeInDp(widgetId, AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getWidgetSizeInDp(widgetId: Int, key: String): Int =
|
private fun getWidgetSizeInDp(widgetId: Int, key: String): Int =
|
||||||
appWidgetManager.getAppWidgetOptions(widgetId).getInt(key, 0)
|
appWidgetManager.getAppWidgetOptions(widgetId).getInt(key, 0)
|
||||||
|
@ -18,7 +18,9 @@ import com.tommasoberlose.anotherwidget.databinding.ActivityCustomDateBinding
|
|||||||
import com.tommasoberlose.anotherwidget.global.Preferences
|
import com.tommasoberlose.anotherwidget.global.Preferences
|
||||||
import com.tommasoberlose.anotherwidget.helpers.DateHelper
|
import com.tommasoberlose.anotherwidget.helpers.DateHelper
|
||||||
import com.tommasoberlose.anotherwidget.ui.viewmodels.CustomDateViewModel
|
import com.tommasoberlose.anotherwidget.ui.viewmodels.CustomDateViewModel
|
||||||
|
import com.tommasoberlose.anotherwidget.utils.getCapWordString
|
||||||
import com.tommasoberlose.anotherwidget.utils.openURI
|
import com.tommasoberlose.anotherwidget.utils.openURI
|
||||||
|
import com.tommasoberlose.anotherwidget.utils.toast
|
||||||
import kotlinx.android.synthetic.main.activity_custom_date.*
|
import kotlinx.android.synthetic.main.activity_custom_date.*
|
||||||
import kotlinx.android.synthetic.main.activity_custom_location.action_back
|
import kotlinx.android.synthetic.main.activity_custom_location.action_back
|
||||||
import kotlinx.android.synthetic.main.activity_custom_location.list_view
|
import kotlinx.android.synthetic.main.activity_custom_location.list_view
|
||||||
@ -78,7 +80,7 @@ class CustomDateActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
delay(200)
|
delay(200)
|
||||||
val text = if (dateFormat != "") {
|
var text = if (dateFormat != "") {
|
||||||
try {
|
try {
|
||||||
SimpleDateFormat(dateFormat, Locale.getDefault()).format(DATE.time)
|
SimpleDateFormat(dateFormat, Locale.getDefault()).format(DATE.time)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
@ -88,6 +90,10 @@ class CustomDateActivity : AppCompatActivity() {
|
|||||||
"__"
|
"__"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Preferences.isDateCapitalize) {
|
||||||
|
text = text.getCapWordString()
|
||||||
|
}
|
||||||
|
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
action_save.isVisible = text != ERROR_STRING
|
action_save.isVisible = text != ERROR_STRING
|
||||||
loader.visibility = View.INVISIBLE
|
loader.visibility = View.INVISIBLE
|
||||||
@ -96,6 +102,11 @@ class CustomDateActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
viewModel.isDateCapitalize.observe(this, Observer {
|
||||||
|
viewModel.dateInput.value = viewModel.dateInput.value
|
||||||
|
binding.isdCapitalizeEnabled = it
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupListener() {
|
private fun setupListener() {
|
||||||
@ -108,6 +119,15 @@ class CustomDateActivity : AppCompatActivity() {
|
|||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
action_capitalize.setOnClickListener {
|
||||||
|
Preferences.isDateCapitalize = !Preferences.isDateCapitalize
|
||||||
|
}
|
||||||
|
|
||||||
|
action_capitalize.setOnLongClickListener {
|
||||||
|
toast(getString(R.string.action_capitalize_the_date))
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
action_date_format_info.setOnClickListener {
|
action_date_format_info.setOnClickListener {
|
||||||
openURI("https://developer.android.com/reference/java/text/SimpleDateFormat")
|
openURI("https://developer.android.com/reference/java/text/SimpleDateFormat")
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import android.util.TypedValue
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.widget.ImageView
|
||||||
import android.widget.RelativeLayout
|
import android.widget.RelativeLayout
|
||||||
import androidx.core.animation.addListener
|
import androidx.core.animation.addListener
|
||||||
import androidx.core.app.NotificationManagerCompat
|
import androidx.core.app.NotificationManagerCompat
|
||||||
@ -291,21 +292,27 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
|
|||||||
activity?.let { act ->
|
activity?.let { act ->
|
||||||
val wallpaper = act.getCurrentWallpaper()
|
val wallpaper = act.getCurrentWallpaper()
|
||||||
widget_bg.setImageDrawable(if (it) wallpaper else null)
|
widget_bg.setImageDrawable(if (it) wallpaper else null)
|
||||||
widget_bg.layoutParams = widget_bg.layoutParams.apply {
|
if (wallpaper != null) {
|
||||||
|
widget_bg.layoutParams =
|
||||||
|
(widget_bg.layoutParams as ViewGroup.MarginLayoutParams).apply {
|
||||||
|
|
||||||
val metrics = DisplayMetrics()
|
val metrics = DisplayMetrics()
|
||||||
act.windowManager.defaultDisplay.getMetrics(metrics)
|
act.windowManager.defaultDisplay.getMetrics(metrics)
|
||||||
|
|
||||||
var newHeight = metrics.heightPixels
|
val dimensions: Pair<Int, Int> = if (wallpaper.intrinsicWidth >= wallpaper.intrinsicHeight) {
|
||||||
var newWidth = (wallpaper?.intrinsicWidth ?: 1) * metrics.heightPixels / (wallpaper?.intrinsicHeight ?: 1)
|
metrics.heightPixels to (wallpaper.intrinsicWidth) * metrics.heightPixels / (wallpaper.intrinsicHeight)
|
||||||
|
} else {
|
||||||
|
metrics.widthPixels to (wallpaper.intrinsicHeight) * metrics.widthPixels / (wallpaper.intrinsicWidth)
|
||||||
|
}
|
||||||
|
|
||||||
if (newWidth < metrics.widthPixels) {
|
setMargins(
|
||||||
newWidth = metrics.widthPixels
|
if (dimensions.first >= dimensions.second) (-80).toPixel(requireContext()) else 0,
|
||||||
newHeight = (wallpaper?.intrinsicHeight ?: 1) * metrics.widthPixels / (wallpaper?.intrinsicWidth ?: 1)
|
(-80).toPixel(requireContext()), 0, 0
|
||||||
}
|
)
|
||||||
|
|
||||||
height = newHeight
|
width = dimensions.first
|
||||||
width = newWidth
|
height = dimensions.second
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -3,8 +3,10 @@ package com.tommasoberlose.anotherwidget.ui.viewmodels
|
|||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.lifecycle.AndroidViewModel
|
import androidx.lifecycle.AndroidViewModel
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
|
import com.chibatching.kotpref.livedata.asLiveData
|
||||||
import com.tommasoberlose.anotherwidget.global.Preferences
|
import com.tommasoberlose.anotherwidget.global.Preferences
|
||||||
|
|
||||||
class CustomDateViewModel(application: Application) : AndroidViewModel(application) {
|
class CustomDateViewModel(application: Application) : AndroidViewModel(application) {
|
||||||
val dateInput: MutableLiveData<String> = MutableLiveData(if (Preferences.dateFormat == "") "EEEE, MMM dd" else Preferences.dateFormat)
|
val dateInput: MutableLiveData<String> = MutableLiveData(if (Preferences.dateFormat == "") "EEEE, MMM dd" else Preferences.dateFormat)
|
||||||
|
val isDateCapitalize = Preferences.asLiveData(Preferences::isDateCapitalize)
|
||||||
}
|
}
|
@ -12,6 +12,7 @@ import android.graphics.Color
|
|||||||
import android.graphics.Typeface
|
import android.graphics.Typeface
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.format.DateUtils
|
import android.text.format.DateUtils
|
||||||
|
import android.util.Log
|
||||||
import android.util.TypedValue
|
import android.util.TypedValue
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
@ -34,6 +35,7 @@ import java.lang.Exception
|
|||||||
import java.text.DateFormat
|
import java.text.DateFormat
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
|
import kotlin.math.min
|
||||||
|
|
||||||
|
|
||||||
class MainWidget : AppWidgetProvider() {
|
class MainWidget : AppWidgetProvider() {
|
||||||
@ -84,9 +86,10 @@ class MainWidget : AppWidgetProvider() {
|
|||||||
appWidgetId: Int) {
|
appWidgetId: Int) {
|
||||||
val displayMetrics = Resources.getSystem().displayMetrics
|
val displayMetrics = Resources.getSystem().displayMetrics
|
||||||
val width = displayMetrics.widthPixels
|
val width = displayMetrics.widthPixels
|
||||||
|
val height = displayMetrics.heightPixels
|
||||||
|
|
||||||
val dimensions = WidgetHelper.WidgetSizeProvider(context, appWidgetManager).getWidgetsSize(appWidgetId)
|
val dimensions = WidgetHelper.WidgetSizeProvider(context, appWidgetManager).getWidgetsSize(appWidgetId)
|
||||||
generateWidgetView(context, appWidgetId, appWidgetManager, dimensions.first - 8.toPixel(context) /*width - 16.toPixel(context)*/)
|
generateWidgetView(context, appWidgetId, appWidgetManager, min(dimensions.first - 8.toPixel(context), min(width, height) - 16.toPixel(context)))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun generateWidgetView(context: Context, appWidgetId: Int, appWidgetManager: AppWidgetManager, w: Int) {
|
private fun generateWidgetView(context: Context, appWidgetId: Int, appWidgetManager: AppWidgetManager, w: Int) {
|
||||||
@ -498,8 +501,8 @@ class MainWidget : AppWidgetProvider() {
|
|||||||
} else {
|
} else {
|
||||||
v.second_row_icon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.round_today))
|
v.second_row_icon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.round_today))
|
||||||
if (!nextEvent.allDay) {
|
if (!nextEvent.allDay) {
|
||||||
val startHour = DateFormat.getTimeInstance(DateFormat.SHORT).format(nextEvent.startDate)
|
val startHour = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.getDefault()).format(nextEvent.startDate)
|
||||||
val endHour = DateFormat.getTimeInstance(DateFormat.SHORT).format(nextEvent.endDate)
|
val endHour = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.getDefault()).format(nextEvent.endDate)
|
||||||
|
|
||||||
var dayDiff = TimeUnit.MILLISECONDS.toDays(nextEvent.endDate - nextEvent.startDate)
|
var dayDiff = TimeUnit.MILLISECONDS.toDays(nextEvent.endDate - nextEvent.startDate)
|
||||||
|
|
||||||
|
BIN
app/src/main/res/drawable-hdpi/round_format_size.png
Normal file
After Width: | Height: | Size: 206 B |
BIN
app/src/main/res/drawable-hdpi/round_format_size_black_24.png
Normal file
After Width: | Height: | Size: 237 B |
BIN
app/src/main/res/drawable-hdpi/round_format_size_black_36.png
Normal file
After Width: | Height: | Size: 311 B |
BIN
app/src/main/res/drawable-hdpi/round_format_size_black_48.png
Normal file
After Width: | Height: | Size: 306 B |
BIN
app/src/main/res/drawable-hdpi/round_keyboard_capslock.png
Normal file
After Width: | Height: | Size: 306 B |
After Width: | Height: | Size: 167 B |
After Width: | Height: | Size: 204 B |
After Width: | Height: | Size: 268 B |
BIN
app/src/main/res/drawable-mdpi/round_format_size.png
Normal file
After Width: | Height: | Size: 159 B |
BIN
app/src/main/res/drawable-mdpi/round_format_size_black_24.png
Normal file
After Width: | Height: | Size: 156 B |
BIN
app/src/main/res/drawable-mdpi/round_format_size_black_36.png
Normal file
After Width: | Height: | Size: 237 B |
BIN
app/src/main/res/drawable-mdpi/round_format_size_black_48.png
Normal file
After Width: | Height: | Size: 232 B |
BIN
app/src/main/res/drawable-mdpi/round_keyboard_capslock.png
Normal file
After Width: | Height: | Size: 243 B |
After Width: | Height: | Size: 147 B |
After Width: | Height: | Size: 151 B |
After Width: | Height: | Size: 204 B |
BIN
app/src/main/res/drawable-xhdpi/round_format_size.png
Normal file
After Width: | Height: | Size: 237 B |
BIN
app/src/main/res/drawable-xhdpi/round_format_size_black_24.png
Normal file
After Width: | Height: | Size: 232 B |
BIN
app/src/main/res/drawable-xhdpi/round_format_size_black_36.png
Normal file
After Width: | Height: | Size: 306 B |
BIN
app/src/main/res/drawable-xhdpi/round_format_size_black_48.png
Normal file
After Width: | Height: | Size: 405 B |
BIN
app/src/main/res/drawable-xhdpi/round_keyboard_capslock.png
Normal file
After Width: | Height: | Size: 401 B |
After Width: | Height: | Size: 204 B |
After Width: | Height: | Size: 243 B |
After Width: | Height: | Size: 306 B |
BIN
app/src/main/res/drawable-xxhdpi/round_format_size.png
Normal file
After Width: | Height: | Size: 311 B |
BIN
app/src/main/res/drawable-xxhdpi/round_format_size_black_24.png
Normal file
After Width: | Height: | Size: 306 B |
BIN
app/src/main/res/drawable-xxhdpi/round_format_size_black_36.png
Normal file
After Width: | Height: | Size: 545 B |
BIN
app/src/main/res/drawable-xxhdpi/round_format_size_black_48.png
Normal file
After Width: | Height: | Size: 519 B |
BIN
app/src/main/res/drawable-xxhdpi/round_keyboard_capslock.png
Normal file
After Width: | Height: | Size: 551 B |
After Width: | Height: | Size: 268 B |
After Width: | Height: | Size: 306 B |
After Width: | Height: | Size: 422 B |
BIN
app/src/main/res/drawable-xxxhdpi/round_format_size.png
Normal file
After Width: | Height: | Size: 306 B |
BIN
app/src/main/res/drawable-xxxhdpi/round_format_size_black_24.png
Normal file
After Width: | Height: | Size: 405 B |
BIN
app/src/main/res/drawable-xxxhdpi/round_format_size_black_36.png
Normal file
After Width: | Height: | Size: 519 B |
BIN
app/src/main/res/drawable-xxxhdpi/round_format_size_black_48.png
Normal file
After Width: | Height: | Size: 688 B |
BIN
app/src/main/res/drawable-xxxhdpi/round_keyboard_capslock.png
Normal file
After Width: | Height: | Size: 724 B |
After Width: | Height: | Size: 306 B |
After Width: | Height: | Size: 401 B |
After Width: | Height: | Size: 551 B |
10
app/src/main/res/drawable/round_format_size_24.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24"
|
||||||
|
android:tint="?attr/colorControlNormal">
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="M9,5.5c0,0.83 0.67,1.5 1.5,1.5H14v10.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5V7h3.5c0.83,0 1.5,-0.67 1.5,-1.5S21.33,4 20.5,4h-10C9.67,4 9,4.67 9,5.5zM4.5,12H6v5.5c0,0.83 0.67,1.5 1.5,1.5S9,18.33 9,17.5V12h1.5c0.83,0 1.5,-0.67 1.5,-1.5S11.33,9 10.5,9h-6C3.67,9 3,9.67 3,10.5S3.67,12 4.5,12z"/>
|
||||||
|
</vector>
|
10
app/src/main/res/drawable/round_keyboard_capslock_24.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24"
|
||||||
|
android:tint="?attr/colorControlNormal">
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="M12,8.41l3.89,3.89c0.39,0.39 1.02,0.39 1.41,0 0.39,-0.39 0.39,-1.02 0,-1.41L12.71,6.3c-0.39,-0.39 -1.02,-0.39 -1.41,0l-4.6,4.59c-0.39,0.39 -0.39,1.02 0,1.41 0.39,0.39 1.02,0.39 1.41,0L12,8.41zM7,18h10c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1H7c-0.55,0 -1,0.45 -1,1s0.45,1 1,1z"/>
|
||||||
|
</vector>
|
@ -5,6 +5,9 @@
|
|||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="com.tommasoberlose.anotherwidget.ui.viewmodels.CustomDateViewModel" />
|
type="com.tommasoberlose.anotherwidget.ui.viewmodels.CustomDateViewModel" />
|
||||||
|
<variable
|
||||||
|
name="isdCapitalizeEnabled"
|
||||||
|
type="Boolean" />
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
@ -113,24 +116,45 @@
|
|||||||
app:cardElevation="2dp"
|
app:cardElevation="2dp"
|
||||||
app:cardCornerRadius="0dp"
|
app:cardCornerRadius="0dp"
|
||||||
app:cardBackgroundColor="@color/colorPrimary">
|
app:cardBackgroundColor="@color/colorPrimary">
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="48dp"
|
android:layout_height="wrap_content">
|
||||||
android:id="@+id/date_format_value"
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:textAppearance="@style/AnotherWidget.Settings.Title"
|
android:layout_width="match_parent"
|
||||||
android:letterSpacing="0"
|
android:layout_height="48dp"
|
||||||
android:textColor="@color/colorPrimaryText"
|
android:id="@+id/date_format_value"
|
||||||
android:textSize="20sp"
|
android:textAppearance="@style/AnotherWidget.Settings.Title"
|
||||||
app:textAllCaps="false"
|
android:letterSpacing="0"
|
||||||
android:gravity="center"
|
android:textColor="@color/colorPrimaryText"
|
||||||
android:maxLines="1"
|
android:textSize="20sp"
|
||||||
android:lines="1"
|
app:textAllCaps="false"
|
||||||
android:singleLine="true"
|
android:gravity="center_vertical|start"
|
||||||
android:ellipsize="end"
|
android:paddingEnd="32dp"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_centerVertical="true"
|
||||||
android:layout_marginLeft="16dp"
|
android:textAlignment="viewStart"
|
||||||
android:layout_marginRight="16dp"
|
android:maxLines="1"
|
||||||
android:layout_marginBottom="16dp" />
|
android:lines="1"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginLeft="32dp"
|
||||||
|
android:layout_marginRight="32dp"
|
||||||
|
android:layout_marginBottom="16dp" />
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:layout_width="40dp"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:padding="5dp"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:src="@drawable/round_keyboard_capslock"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:clickable="true"
|
||||||
|
android:focusable="true"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
|
app:tint="@color/colorPrimaryText"
|
||||||
|
android:layout_marginEnd="20dp"
|
||||||
|
android:alpha="@{isdCapitalizeEnabled ? 1f : 0.3f, default=0.3}"
|
||||||
|
android:id="@+id/action_capitalize" />
|
||||||
|
</RelativeLayout>
|
||||||
</com.google.android.material.card.MaterialCardView>
|
</com.google.android.material.card.MaterialCardView>
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -77,8 +77,6 @@
|
|||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="-80dp"
|
|
||||||
android:layout_marginStart="-80dp"
|
|
||||||
android:scaleType="fitStart"
|
android:scaleType="fitStart"
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
android:id="@+id/widget_bg" />
|
android:id="@+id/widget_bg" />
|
||||||
|
@ -233,4 +233,5 @@
|
|||||||
<string name="settings_weather_icon_pack_title">Icon pack</string>
|
<string name="settings_weather_icon_pack_title">Icon pack</string>
|
||||||
<string name="settings_weather_icon_pack_default">Default</string>
|
<string name="settings_weather_icon_pack_default">Default</string>
|
||||||
<string name="settings_weather_icon_pack_minimal">Minimal</string>
|
<string name="settings_weather_icon_pack_minimal">Minimal</string>
|
||||||
|
<string name="action_capitalize_the_date">Capitalize the date</string>
|
||||||
</resources>
|
</resources>
|
||||||
|