- Commit latest to main

Took 14 minutes
This commit is contained in:
2022-02-06 17:56:36 +00:00
parent e4c8c45e5c
commit d2bffab2e1
26 changed files with 498 additions and 112 deletions

View File

@@ -68,7 +68,7 @@ class LocationProviderImpl(
@SuppressLint("MissingPermission")
private suspend fun getAFreshLocation(): Location? {
return client.getCurrentLocation(PRIORITY_HIGH_ACCURACY, object : CancellationToken() {
return client.getCurrentLocation(PRIORITY_LOW_POWER, object : CancellationToken() {
override fun isCancellationRequested(): Boolean = false
override fun onCanceledRequested(p0: OnTokenCanceledListener): CancellationToken = this
}).await()

View File

@@ -11,8 +11,10 @@ import com.appttude.h_mal.atlas_weather.data.repository.SettingsRepository
import com.appttude.h_mal.atlas_weather.data.room.entity.CURRENT_LOCATION
import com.appttude.h_mal.atlas_weather.data.room.entity.EntityItem
import com.appttude.h_mal.atlas_weather.model.weather.FullWeather
import com.appttude.h_mal.atlas_weather.model.widget.InnerWidgetCellData
import com.appttude.h_mal.atlas_weather.model.widget.InnerWidgetData
import com.appttude.h_mal.atlas_weather.model.widget.WidgetData
import com.appttude.h_mal.atlas_weather.model.widget.WidgetWeatherCollection
import com.appttude.h_mal.atlas_weather.utils.toSmallDayName
import com.squareup.picasso.Picasso
import com.squareup.picasso.Target
@@ -92,6 +94,36 @@ class ServicesHelper(
}
}
suspend fun getWidgetWeatherCollection(): WidgetWeatherCollection? {
return try {
val result = repository.loadSingleCurrentWeatherFromRoom(CURRENT_LOCATION)
val widgetData = result.weather.let {
val bitmap = it.current?.icon
val location = locationProvider.getLocationNameFromLatLong(it.lat, it.lon)
val temp = it.current?.temp?.toInt().toString()
WidgetData(location, bitmap, temp)
}
val list = mutableListOf<InnerWidgetCellData>()
result.weather.daily?.drop(1)?.dropLast(2)?.forEach { dailyWeather ->
val day = dailyWeather.dt?.toSmallDayName()
val icon = dailyWeather.icon
val temp = dailyWeather.max?.toInt().toString()
val item = InnerWidgetCellData(day, icon, temp)
list.add(item)
}
list.toList()
WidgetWeatherCollection(widgetData, list)
} catch (e: Exception) {
null
}
}
private suspend fun getBitmapFromUrl(imageAddress: String?): Bitmap? {
return suspendCoroutine { cont ->
Picasso.get().load(imageAddress).into(object : Target {

View File

@@ -12,4 +12,16 @@ data class InnerWidgetData(
val date: String?,
val icon: Bitmap?,
val highTemp: String?
)
data class InnerWidgetCellData(
val date: String?,
val icon: String?,
val highTemp: String?
)
data class WidgetWeatherCollection(
val widgetData: WidgetData,
val forecast: List<InnerWidgetCellData>
)

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -1,25 +1,27 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/whole_widget_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:background="@android:color/black"
tools:layout_height="110dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/central"
android:layout_height="0dp"
android:layout_alignParentTop="true"
android:layout_weight="1"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginStart="12dp">
android:layout_marginStart="12dp"
android:orientation="vertical">
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -34,8 +36,8 @@
android:id="@+id/widget_current_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="180dp"
android:includeFontPadding="false"
android:maxWidth="180dp"
android:maxLines="1"
android:textColor="#ffffff"
android:textSize="12sp"
@@ -46,11 +48,11 @@
android:id="@+id/widget_current_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/location_container"
android:layout_alignParentTop="true"
android:layout_centerInParent="true"
android:layout_above="@id/location_container"
android:adjustViewBounds="true"
android:layout_marginLeft="32dp"
android:adjustViewBounds="true"
tools:src="@drawable/ic_baseline_cloud_off_24" />
<LinearLayout
@@ -59,7 +61,7 @@
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerInParent="true"
android:layout_marginBottom="6dp"
android:layout_marginBottom="1dp"
android:orientation="horizontal">
<ImageView
@@ -77,16 +79,9 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:maxWidth="180dp"
android:autoSizeMaxTextSize="100sp"
android:autoSizeMinTextSize="12sp"
android:autoSizeStepGranularity="2sp"
android:autoSizeTextType="uniform"
android:gravity=""
android:includeFontPadding="false"
android:maxLines="1"
android:textColor="#ffffff"
android:textSize="12sp"
tools:text="Roehampton" />
style="@style/widget_light_home_text"
tools:text="Hammersmith Bridge" />
</LinearLayout>
@@ -128,23 +123,172 @@
</RelativeLayout>
<LinearLayout
android:id="@+id/central"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_centerInParent="true"
android:orientation="vertical" />
<GridView
<GridLayout
android:id="@+id/widget_listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/central"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_alignParentBottom="true"
android:layout_centerInParent="true"
android:adjustViewBounds="true"
android:numColumns="5"
tools:listitem="@layout/widget_item"/>
android:layout_weight="1"
android:columnCount="5"
android:rowCount="1">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:orientation="vertical">
<TextView
android:id="@+id/widget_item_day_0"
style="@style/widget_light_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Wed" />
<ImageView
android:id="@+id/widget_item_image_0"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center"
android:layout_weight="1"
android:adjustViewBounds="true"
tools:src="@drawable/ic_baseline_cloud_off_24" />
<TextView
android:id="@+id/widget_item_temp_high_0"
style="@style/widget_light_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="20" />
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:orientation="vertical">
<TextView
android:id="@+id/widget_item_day_1"
style="@style/widget_light_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Wed" />
<ImageView
android:id="@+id/widget_item_image_1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center"
android:layout_weight="1"
android:adjustViewBounds="true"
tools:src="@drawable/ic_baseline_cloud_off_24" />
<TextView
android:id="@+id/widget_item_temp_high_1"
style="@style/widget_light_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="20" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:orientation="vertical">
<TextView
android:id="@+id/widget_item_day_2"
style="@style/widget_light_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Wed" />
<ImageView
android:id="@+id/widget_item_image_2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center"
android:layout_weight="1"
android:adjustViewBounds="true"
tools:src="@drawable/ic_baseline_cloud_off_24" />
<TextView
android:id="@+id/widget_item_temp_high_2"
style="@style/widget_light_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="20" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:orientation="vertical">
<TextView
android:id="@+id/widget_item_day_3"
style="@style/widget_light_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Wed" />
<ImageView
android:id="@+id/widget_item_image_3"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center"
android:layout_weight="1"
android:adjustViewBounds="true"
tools:src="@drawable/ic_baseline_cloud_off_24" />
<TextView
android:id="@+id/widget_item_temp_high_3"
style="@style/widget_light_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="20" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:orientation="vertical">
<TextView
android:id="@+id/widget_item_day_4"
style="@style/widget_light_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Wed" />
<ImageView
android:id="@+id/widget_item_image_4"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center"
android:layout_weight="1"
android:adjustViewBounds="true"
tools:src="@drawable/ic_baseline_cloud_off_24" />
<TextView
android:id="@+id/widget_item_temp_high_4"
style="@style/widget_light_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="20" />
</LinearLayout>
</GridLayout>
</LinearLayout>

View File

@@ -3,9 +3,8 @@
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/widget_item_layout"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical"
android:minHeight="55dp">
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/widget_item_day"
@@ -15,14 +14,19 @@
android:gravity="center"
android:includeFontPadding="false"
android:textColor="#ffffff"
android:textSize="12sp"
android:autoSizeMaxTextSize="100sp"
android:autoSizeMinTextSize="8sp"
android:autoSizeStepGranularity="2sp"
android:autoSizeTextType="uniform"
tools:text="Wed" />
<ImageView
android:id="@+id/widget_item_image"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center"
android:layout_weight="1"
android:layout_gravity="center"
android:adjustViewBounds="true"
tools:src="@drawable/ic_baseline_cloud_off_24" />
@@ -35,6 +39,10 @@
android:gravity="center"
android:textColor="#ffffff"
android:textSize="12sp"
android:autoSizeMaxTextSize="100sp"
android:autoSizeMinTextSize="8sp"
android:autoSizeStepGranularity="2sp"
android:autoSizeTextType="uniform"
tools:text="20" />

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="widget_light_text">
<item name="android:layout_gravity">center</item>
<item name="android:autoSizeMaxTextSize">100sp</item>
<item name="android:autoSizeMinTextSize">8sp</item>
<item name="android:autoSizeStepGranularity">2sp</item>
<item name="android:autoSizeTextType">uniform</item>
<item name="android:gravity">center</item>
<item name="android:includeFontPadding">false</item>
<item name="android:textColor">#ffffff</item>
<item name="android:textSize">12sp</item>
</style>
</resources>

View File

@@ -5,5 +5,6 @@
Refer to App Widget Documentation for margin information
http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout
-->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>

View File

@@ -8,4 +8,23 @@
<item name="android:layout_marginBottom">12dp</item>
<item name="android:layout_weight">2</item>
</style>
<style name="widget_light_text" parent="widget_light_base">
<item name="android:autoSizeMinTextSize">8sp</item>
</style>
<style name="widget_light_home_text" parent="widget_light_base">
<item name="android:autoSizeMinTextSize">12sp</item>
</style>
<style name="widget_light_base">
<item name="android:layout_gravity">center</item>
<item name="android:autoSizeMaxTextSize">100sp</item>
<item name="android:autoSizeStepGranularity">2sp</item>
<item name="android:autoSizeTextType">uniform</item>
<item name="android:gravity">center</item>
<item name="android:includeFontPadding">false</item>
<item name="android:textColor">#ffffff</item>
<item name="android:textSize">12sp</item>
</style>
</resources>

View File

@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:configure="com.appttude.h_mal.atlas_weather.monoWeather.ui.widget.WidgetLocationPermissionActivity"
android:initialKeyguardLayout="@layout/weather_app_widget"
android:initialLayout="@layout/weather_app_widget"
android:minHeight="110.0dp"
android:minWidth="350.0dp"
android:minResizeWidth="350.0dp"
android:minWidth="320.0dp"
android:minResizeWidth="320.0dp"
android:minResizeHeight="110.0dp"
android:previewImage="@drawable/widget_screenshot"
android:updatePeriodMillis="1800000"