Updated UI, New Settings and Bug Fixes
This commit is contained in:
@ -11,8 +11,10 @@ object Constants {
|
||||
val CALENDAR_REQUEST_CODE = 1
|
||||
val LOCATION_REQUEST_CODE = 2
|
||||
|
||||
val PREF_FIRST_STEP = "PREF_FIRST_STEP"
|
||||
val PREF_WEATHER_ICON = "PREF_WEATHER_ICON"
|
||||
val PREF_WEATHER_TEMP = "PREF_WEATHER_TEMP"
|
||||
val PREF_WEATHER_TEMP_UNIT = "PREF_WEATHER_TEMP_UNIT"
|
||||
|
||||
val dateFormat = SimpleDateFormat("EEEE, MMM d", Locale.getDefault())
|
||||
val hourFormat = SimpleDateFormat("HH:mm", Locale.getDefault())
|
||||
|
@ -1,14 +1,19 @@
|
||||
package com.tommasoberlose.anotherwidget.ui.activity
|
||||
|
||||
import android.Manifest
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.PendingIntent
|
||||
import android.content.pm.PackageManager
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.os.Bundle
|
||||
import android.support.v4.app.ActivityCompat
|
||||
import android.appwidget.AppWidgetManager
|
||||
import android.content.Intent
|
||||
import android.content.ComponentName
|
||||
import android.content.*
|
||||
import android.preference.PreferenceManager
|
||||
import android.provider.CalendarContract
|
||||
import android.support.v4.content.ContextCompat
|
||||
import android.view.View
|
||||
import android.widget.RemoteViews
|
||||
import android.widget.Toast
|
||||
import com.tommasoberlose.anotherwidget.`object`.Constants
|
||||
import com.tommasoberlose.anotherwidget.R
|
||||
@ -17,15 +22,30 @@ import com.tommasoberlose.anotherwidget.ui.widget.TheWidget
|
||||
import com.tommasoberlose.anotherwidget.util.UpdatesReceiver
|
||||
import com.tommasoberlose.anotherwidget.util.WeatherReceiver
|
||||
import kotlinx.android.synthetic.main.activity_main.*
|
||||
import kotlinx.android.synthetic.main.the_widget.*
|
||||
import java.util.*
|
||||
import java.util.concurrent.TimeUnit
|
||||
import android.content.Intent
|
||||
import android.content.BroadcastReceiver
|
||||
|
||||
|
||||
|
||||
|
||||
class MainActivity : AppCompatActivity() {
|
||||
|
||||
private val receiver = object : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
updateUI()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_main)
|
||||
receiver
|
||||
|
||||
// TODO Util.showIntro(this)
|
||||
|
||||
action_support.setOnClickListener(object: View.OnClickListener {
|
||||
override fun onClick(p0: View?) {
|
||||
@ -33,31 +53,30 @@ class MainActivity : AppCompatActivity() {
|
||||
}
|
||||
})
|
||||
|
||||
action_rate.setOnClickListener(object: View.OnClickListener {
|
||||
override fun onClick(p0: View?) {
|
||||
Util.openURI(this@MainActivity, "")
|
||||
}
|
||||
})
|
||||
|
||||
action_share.setOnClickListener(object: View.OnClickListener {
|
||||
override fun onClick(p0: View?) {
|
||||
Util.share(this@MainActivity)
|
||||
}
|
||||
})
|
||||
|
||||
action_github.setOnClickListener(object: View.OnClickListener {
|
||||
action_project.setOnClickListener(object: View.OnClickListener {
|
||||
override fun onClick(p0: View?) {
|
||||
Util.openURI(this@MainActivity, "https://github.com/tommasoberlose/another-widget")
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
val filter = IntentFilter()
|
||||
filter.addAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
|
||||
registerReceiver(receiver, filter);
|
||||
updateUI()
|
||||
Util.updateWidget(this)
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
unregisterReceiver(receiver);
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>,
|
||||
@ -80,6 +99,7 @@ class MainActivity : AppCompatActivity() {
|
||||
no_calendar_permission_container.visibility= View.GONE
|
||||
no_location_permission_container.visibility= View.GONE
|
||||
all_set_container.visibility = View.GONE
|
||||
updateSettings()
|
||||
|
||||
if (!Util.checkGrantedPermission(this, Manifest.permission.READ_CALENDAR)) {
|
||||
no_calendar_permission_container.visibility = View.VISIBLE
|
||||
@ -100,7 +120,94 @@ class MainActivity : AppCompatActivity() {
|
||||
all_set_container.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
updateAppWidget()
|
||||
Util.updateWidget(this)
|
||||
}
|
||||
|
||||
|
||||
internal fun updateAppWidget() {
|
||||
widget_bg.setImageDrawable(Util.getCurrentWallpaper(this))
|
||||
updateCalendarView()
|
||||
updateLocationView()
|
||||
}
|
||||
|
||||
fun updateCalendarView() {
|
||||
val now = Calendar.getInstance()
|
||||
val calendarLayout = Util.checkGrantedPermission(this, Manifest.permission.READ_CALENDAR)
|
||||
|
||||
empty_layout.visibility = View.VISIBLE
|
||||
calendar_layout.visibility = View.GONE
|
||||
empty_date.text = String.format("%s%s", Constants.dateFormat.format(now.time)[0].toUpperCase(), Constants.dateFormat.format(now.time).substring(1))
|
||||
|
||||
if (calendarLayout) {
|
||||
val eventList = Util.getNextEvent(this)
|
||||
|
||||
if (eventList.isNotEmpty()) {
|
||||
val difference = eventList[0].startDate - now.timeInMillis
|
||||
|
||||
if (difference > 1000 * 60) {
|
||||
var time = ""
|
||||
val hour = TimeUnit.MILLISECONDS.toHours(difference)
|
||||
if (hour > 0) {
|
||||
time = hour.toString() + getString(R.string.h_code)
|
||||
}
|
||||
val minutes = TimeUnit.MILLISECONDS.toMinutes(difference - hour * 3600 * 1000)
|
||||
if (minutes > 0) {
|
||||
time += " " + minutes + getString(R.string.min_code)
|
||||
}
|
||||
|
||||
next_event.text = String.format("%s %s %s", eventList[0].title, getString(R.string.in_code), time)
|
||||
} else {
|
||||
next_event.text = String.format("%s", eventList[0].title)
|
||||
}
|
||||
next_event_date.text = String.format("%s - %s", Constants.hourFormat.format(eventList[0].startDate), Constants.hourFormat.format(eventList[0].endDate))
|
||||
|
||||
empty_layout.visibility = View.GONE
|
||||
calendar_layout.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun updateLocationView() {
|
||||
val locationLayout = Util.checkGrantedPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
|
||||
|
||||
val SP = PreferenceManager.getDefaultSharedPreferences(this)
|
||||
if (locationLayout && SP.contains(Constants.PREF_WEATHER_TEMP) && SP.contains(Constants.PREF_WEATHER_ICON)) {
|
||||
weather.visibility = View.VISIBLE
|
||||
calendar_weather.visibility = View.VISIBLE
|
||||
val currentTemp = String.format(Locale.getDefault(), "%.0f °%s", SP.getFloat(Constants.PREF_WEATHER_TEMP, 0f), SP.getString(Constants.PREF_WEATHER_TEMP_UNIT, "F"))
|
||||
|
||||
|
||||
weather_icon.visibility = View.VISIBLE
|
||||
empty_weather_icon.visibility = View.VISIBLE
|
||||
val icon: String = SP.getString(Constants.PREF_WEATHER_ICON, "")
|
||||
if (icon.equals("")) {
|
||||
weather_icon.visibility = View.GONE
|
||||
empty_weather_icon.visibility = View.GONE
|
||||
} else {
|
||||
weather_icon.setImageResource(Util.getWeatherIconResource(icon))
|
||||
empty_weather_icon.setImageResource(Util.getWeatherIconResource(icon))
|
||||
}
|
||||
|
||||
temp.text = currentTemp
|
||||
calendar_temp.text = currentTemp
|
||||
} else {
|
||||
weather.visibility = View.GONE
|
||||
calendar_weather.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
fun updateSettings() {
|
||||
val SP = PreferenceManager.getDefaultSharedPreferences(this)
|
||||
temp_unit.text = if (SP.getString(Constants.PREF_WEATHER_TEMP_UNIT, "F").equals("F")) getString(R.string.fahrenheit) else getString(R.string.celsius)
|
||||
action_change_unit.setOnClickListener(object: View.OnClickListener {
|
||||
@SuppressLint("ApplySharedPref")
|
||||
override fun onClick(p0: View?) {
|
||||
SP.edit().putString(Constants.PREF_WEATHER_TEMP_UNIT, if (SP.getString(Constants.PREF_WEATHER_TEMP_UNIT, "F").equals("F")) "C" else "F").commit()
|
||||
Util.getWeather(this@MainActivity)
|
||||
updateSettings()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,41 @@
|
||||
package com.tommasoberlose.anotherwidget.ui.activity
|
||||
|
||||
import android.Manifest
|
||||
import android.os.Bundle
|
||||
import com.tommasoberlose.anotherwidget.R
|
||||
import com.heinrichreimersoftware.materialintro.app.IntroActivity
|
||||
import com.heinrichreimersoftware.materialintro.slide.SimpleSlide
|
||||
|
||||
|
||||
class SplashActivity : IntroActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
isButtonNextVisible = true
|
||||
isButtonBackVisible = false
|
||||
isButtonCtaVisible = false
|
||||
buttonCtaTintMode = BUTTON_CTA_TINT_MODE_TEXT
|
||||
|
||||
addSlide(SimpleSlide.Builder()
|
||||
.title(R.string.app_name)
|
||||
.background(R.color.colorPrimary)
|
||||
.backgroundDark(R.color.colorPrimaryDark)
|
||||
.build())
|
||||
|
||||
addSlide(SimpleSlide.Builder()
|
||||
.title(R.string.title_permission_calendar)
|
||||
.description(R.string.description_permission_calendar)
|
||||
.background(R.color.colorPrimary)
|
||||
.backgroundDark(R.color.colorPrimaryDark)
|
||||
.permission(Manifest.permission.READ_CALENDAR)
|
||||
.build())
|
||||
|
||||
addSlide(SimpleSlide.Builder()
|
||||
.title(R.string.title_permission_location)
|
||||
.description(R.string.description_permission_location)
|
||||
.background(R.color.colorPrimary)
|
||||
.backgroundDark(R.color.colorPrimaryDark)
|
||||
.permission(Manifest.permission.ACCESS_COARSE_LOCATION)
|
||||
.build())
|
||||
}
|
||||
}
|
@ -68,156 +68,86 @@ class TheWidget : AppWidgetProvider() {
|
||||
}
|
||||
|
||||
fun updateCalendarView(context: Context, views: RemoteViews, widgetID: Int): RemoteViews {
|
||||
val now = Calendar.getInstance()
|
||||
val calendarLayout = Util.checkGrantedPermission(context, Manifest.permission.READ_CALENDAR)
|
||||
val now = Calendar.getInstance()
|
||||
val calendarLayout = Util.checkGrantedPermission(context, Manifest.permission.READ_CALENDAR)
|
||||
|
||||
views.setViewVisibility(R.id.empty_layout, View.VISIBLE)
|
||||
views.setViewVisibility(R.id.calendar_layout, View.GONE)
|
||||
views.setTextViewText(R.id.empty_date, Constants.dateFormat.format(now.time))
|
||||
views.setViewVisibility(R.id.empty_layout, View.VISIBLE)
|
||||
views.setViewVisibility(R.id.calendar_layout, View.GONE)
|
||||
views.setTextViewText(R.id.empty_date, Constants.dateFormat.format(now.time))
|
||||
|
||||
val calIntent = Intent(Intent.ACTION_MAIN)
|
||||
calIntent.addCategory(Intent.CATEGORY_APP_CALENDAR)
|
||||
val calPIntent = PendingIntent.getActivity(context, widgetID, calIntent, 0)
|
||||
views.setOnClickPendingIntent(R.id.main_layout, calPIntent)
|
||||
val calIntent = Intent(Intent.ACTION_MAIN)
|
||||
calIntent.addCategory(Intent.CATEGORY_APP_CALENDAR)
|
||||
val calPIntent = PendingIntent.getActivity(context, widgetID, calIntent, 0)
|
||||
views.setOnClickPendingIntent(R.id.main_layout, calPIntent)
|
||||
|
||||
|
||||
if (calendarLayout) {
|
||||
val eventList = Util.getNextEvent(context)
|
||||
if (calendarLayout) {
|
||||
val eventList = Util.getNextEvent(context)
|
||||
|
||||
if (eventList.isNotEmpty()) {
|
||||
val difference = eventList[0].startDate - now.timeInMillis
|
||||
if (eventList.isNotEmpty()) {
|
||||
val difference = eventList[0].startDate - now.timeInMillis
|
||||
|
||||
if (difference > 1000 * 60) {
|
||||
var time = ""
|
||||
val hour = TimeUnit.MILLISECONDS.toHours(difference)
|
||||
if (hour > 0) {
|
||||
time = hour.toString() + "h"
|
||||
}
|
||||
val minutes = TimeUnit.MILLISECONDS.toMinutes(difference - hour * 3600 * 1000)
|
||||
if (minutes > 0) {
|
||||
time += " " + minutes + "min"
|
||||
if (difference > 1000 * 60) {
|
||||
var time = ""
|
||||
val hour = TimeUnit.MILLISECONDS.toHours(difference)
|
||||
if (hour > 0) {
|
||||
time = hour.toString() + context.getString(R.string.h_code)
|
||||
}
|
||||
val minutes = TimeUnit.MILLISECONDS.toMinutes(difference - hour * 3600 * 1000)
|
||||
if (minutes > 0) {
|
||||
time += " " + minutes + context.getString(R.string.min_code)
|
||||
}
|
||||
|
||||
views.setTextViewText(R.id.next_event, String.format("%s %s %s", eventList[0].title, context.getString(R.string.in_code), time))
|
||||
} else {
|
||||
views.setTextViewText(R.id.next_event, String.format("%s", eventList[0].title))
|
||||
}
|
||||
views.setTextViewText(R.id.next_event_date, String.format("%s - %s", Constants.hourFormat.format(eventList[0].startDate), Constants.hourFormat.format(eventList[0].endDate)))
|
||||
|
||||
views.setTextViewText(R.id.next_event, String.format("%s in %s", eventList[0].title, time))
|
||||
} else {
|
||||
views.setTextViewText(R.id.next_event, String.format("%s", eventList[0].title))
|
||||
views.setViewVisibility(R.id.empty_layout, View.GONE)
|
||||
views.setViewVisibility(R.id.calendar_layout, View.VISIBLE)
|
||||
|
||||
val builder = CalendarContract.CONTENT_URI.buildUpon()
|
||||
builder.appendPath("time")
|
||||
ContentUris.appendId(builder, eventList[0].startDate)
|
||||
val intent = Intent(Intent.ACTION_VIEW)
|
||||
.setData(builder.build())
|
||||
val pIntent = PendingIntent.getActivity(context, widgetID, intent, 0)
|
||||
views.setOnClickPendingIntent(R.id.main_layout, pIntent)
|
||||
}
|
||||
views.setTextViewText(R.id.next_event_date, String.format("%s - %s", Constants.hourFormat.format(eventList[0].startDate), Constants.hourFormat.format(eventList[0].endDate)))
|
||||
|
||||
views.setViewVisibility(R.id.empty_layout, View.GONE)
|
||||
views.setViewVisibility(R.id.calendar_layout, View.VISIBLE)
|
||||
|
||||
val builder = CalendarContract.CONTENT_URI.buildUpon()
|
||||
builder.appendPath("time")
|
||||
ContentUris.appendId(builder, eventList[0].startDate)
|
||||
val intent = Intent(Intent.ACTION_VIEW)
|
||||
.setData(builder.build())
|
||||
val pIntent = PendingIntent.getActivity(context, widgetID, intent, 0)
|
||||
views.setOnClickPendingIntent(R.id.main_layout, pIntent)
|
||||
}
|
||||
|
||||
return views
|
||||
}
|
||||
|
||||
return views
|
||||
}
|
||||
fun updateLocationView(context: Context, views: RemoteViews): RemoteViews {
|
||||
val locationLayout = Util.checkGrantedPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION)
|
||||
|
||||
fun updateLocationView(context: Context, views: RemoteViews): RemoteViews {
|
||||
val locationLayout = Util.checkGrantedPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION)
|
||||
|
||||
val SP = PreferenceManager.getDefaultSharedPreferences(context)
|
||||
if (locationLayout && SP.contains(Constants.PREF_WEATHER_TEMP) && SP.contains(Constants.PREF_WEATHER_ICON)) {
|
||||
views.setViewVisibility(R.id.weather, View.VISIBLE)
|
||||
views.setViewVisibility(R.id.calendar_weather, View.VISIBLE)
|
||||
val temp = String.format(Locale.getDefault(), "%.0f °C", SP.getFloat(Constants.PREF_WEATHER_TEMP, 0f))
|
||||
val SP = PreferenceManager.getDefaultSharedPreferences(context)
|
||||
if (locationLayout && SP.contains(Constants.PREF_WEATHER_TEMP) && SP.contains(Constants.PREF_WEATHER_ICON)) {
|
||||
views.setViewVisibility(R.id.weather, View.VISIBLE)
|
||||
views.setViewVisibility(R.id.calendar_weather, View.VISIBLE)
|
||||
val temp = String.format(Locale.getDefault(), "%.0f °%s", SP.getFloat(Constants.PREF_WEATHER_TEMP, 0f), SP.getString(Constants.PREF_WEATHER_TEMP_UNIT, "F"))
|
||||
|
||||
|
||||
views.setViewVisibility(R.id.weather_icon, View.VISIBLE)
|
||||
views.setViewVisibility(R.id.empty_weather_icon, View.VISIBLE)
|
||||
when (SP.getString(Constants.PREF_WEATHER_ICON, "")) {
|
||||
"01d" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.clear_day)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.clear_day)
|
||||
}
|
||||
"02d" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.partly_cloudy)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.partly_cloudy)
|
||||
}
|
||||
"03d" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.mostly_cloudy)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.mostly_cloudy)
|
||||
}
|
||||
"04d" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.cloudy_weather)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.cloudy_weather)
|
||||
}
|
||||
"09d" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.storm_weather_day)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.storm_weather_day)
|
||||
}
|
||||
"10d" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.rainy_day)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.rainy_day)
|
||||
}
|
||||
"11d" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.thunder_day)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.thunder_day)
|
||||
}
|
||||
"13d" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.snow_day)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.snow_day)
|
||||
}
|
||||
"50d" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.haze_day)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.haze_day)
|
||||
}
|
||||
"01n" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.clear_night)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.clear_night)
|
||||
}
|
||||
"02n" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.partly_cloudy_night)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.partly_cloudy_night)
|
||||
}
|
||||
"03n" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.mostly_cloudy_night)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.mostly_cloudy_night)
|
||||
}
|
||||
"04n" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.cloudy_weather)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.cloudy_weather)
|
||||
}
|
||||
"09n" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.storm_weather_night)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.storm_weather_night)
|
||||
}
|
||||
"10n" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.rainy_night)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.rainy_night)
|
||||
}
|
||||
"11n" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.thunder_night)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.thunder_night)
|
||||
}
|
||||
"13n" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.snow_night)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.snow_night)
|
||||
}
|
||||
"50n" -> {
|
||||
views.setImageViewResource(R.id.weather_icon, R.drawable.haze_night)
|
||||
views.setImageViewResource(R.id.empty_weather_icon, R.drawable.haze_night)
|
||||
}
|
||||
else -> {
|
||||
views.setViewVisibility(R.id.weather_icon, View.VISIBLE)
|
||||
views.setViewVisibility(R.id.empty_weather_icon, View.VISIBLE)
|
||||
val icon: String = SP.getString(Constants.PREF_WEATHER_ICON, "")
|
||||
if (icon.equals("")) {
|
||||
views.setViewVisibility(R.id.weather_icon, View.GONE)
|
||||
views.setViewVisibility(R.id.empty_weather_icon, View.GONE)
|
||||
} else {
|
||||
views.setImageViewResource(R.id.weather_icon, Util.getWeatherIconResource(icon))
|
||||
views.setImageViewResource(R.id.empty_weather_icon, Util.getWeatherIconResource(icon))
|
||||
}
|
||||
}
|
||||
|
||||
views.setTextViewText(R.id.temp, temp)
|
||||
views.setTextViewText(R.id.calendar_temp, temp)
|
||||
} else {
|
||||
views.setViewVisibility(R.id.weather, View.GONE)
|
||||
views.setViewVisibility(R.id.calendar_weather, View.GONE)
|
||||
}
|
||||
return views
|
||||
views.setTextViewText(R.id.temp, temp)
|
||||
views.setTextViewText(R.id.calendar_temp, temp)
|
||||
} else {
|
||||
views.setViewVisibility(R.id.weather, View.GONE)
|
||||
views.setViewVisibility(R.id.calendar_weather, View.GONE)
|
||||
}
|
||||
return views
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,10 +5,11 @@ import android.annotation.SuppressLint
|
||||
import android.app.Notification
|
||||
import android.app.NotificationManager
|
||||
import android.app.PendingIntent
|
||||
import android.app.WallpaperManager
|
||||
import android.appwidget.AppWidgetManager
|
||||
import android.content.*
|
||||
import android.content.pm.PackageManager
|
||||
import android.database.Cursor
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.location.Location
|
||||
import android.location.LocationListener
|
||||
import android.location.LocationManager
|
||||
@ -16,26 +17,23 @@ import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.preference.PreferenceManager
|
||||
import android.provider.CalendarContract
|
||||
import android.support.annotation.DrawableRes
|
||||
import android.support.customtabs.CustomTabsIntent
|
||||
import android.support.v4.app.NotificationCompat
|
||||
import android.support.v4.content.ContextCompat
|
||||
import android.util.Log
|
||||
import com.survivingwithandroid.weather.lib.WeatherClient
|
||||
import com.survivingwithandroid.weather.lib.WeatherConfig
|
||||
import com.survivingwithandroid.weather.lib.exception.LocationProviderNotFoundException
|
||||
import com.survivingwithandroid.weather.lib.exception.WeatherLibException
|
||||
import com.survivingwithandroid.weather.lib.model.City
|
||||
import com.survivingwithandroid.weather.lib.model.CurrentWeather
|
||||
import com.survivingwithandroid.weather.lib.provider.forecastio.ForecastIOProviderType
|
||||
import com.survivingwithandroid.weather.lib.provider.forecastio.ForecastIOWeatherProvider
|
||||
import com.survivingwithandroid.weather.lib.provider.openweathermap.OpenweathermapProviderType
|
||||
import com.survivingwithandroid.weather.lib.provider.yahooweather.YahooProviderType
|
||||
import com.survivingwithandroid.weather.lib.request.WeatherRequest
|
||||
import com.tommasoberlose.anotherwidget.R
|
||||
import com.tommasoberlose.anotherwidget.`object`.Constants
|
||||
|
||||
import com.tommasoberlose.anotherwidget.`object`.Event
|
||||
import com.tommasoberlose.anotherwidget.ui.activity.MainActivity
|
||||
import com.tommasoberlose.anotherwidget.ui.activity.SplashActivity
|
||||
import com.tommasoberlose.anotherwidget.ui.widget.TheWidget
|
||||
|
||||
import java.util.ArrayList
|
||||
@ -80,7 +78,7 @@ object Util {
|
||||
|
||||
for (j in 0 until eventCursor.count) {
|
||||
val e = Event(eventCursor, instanceCursor)
|
||||
if (e.endDate - now.timeInMillis > 1000 * 60 * 60) {
|
||||
if (e.endDate - now.timeInMillis > 1000 * 60 * 30) {
|
||||
eventList.add(e)
|
||||
}
|
||||
eventCursor.moveToNext()
|
||||
@ -147,7 +145,7 @@ object Util {
|
||||
|
||||
try {
|
||||
val config = WeatherConfig()
|
||||
config.unitSystem = WeatherConfig.UNIT_SYSTEM.M
|
||||
config.unitSystem = if (SP.getString(Constants.PREF_WEATHER_TEMP_UNIT, "F").equals("C")) WeatherConfig.UNIT_SYSTEM.M else WeatherConfig.UNIT_SYSTEM.I
|
||||
config.lang = "en" // If you want to use english
|
||||
config.maxResult = 1 // Max number of cities retrieved
|
||||
config.numDays = 1 // Max num of days in the forecast
|
||||
@ -162,7 +160,6 @@ object Util {
|
||||
client.getCurrentCondition(WeatherRequest(location.longitude, location.latitude), object : WeatherClient.WeatherEventListener {
|
||||
@SuppressLint("ApplySharedPref")
|
||||
override fun onWeatherRetrieved(currentWeather: CurrentWeather) {
|
||||
Log.d("AW", "TEMP:" + currentWeather.weather.currentCondition.icon);
|
||||
SP.edit()
|
||||
.putFloat(Constants.PREF_WEATHER_TEMP, currentWeather.weather.temperature.temp)
|
||||
.putString(Constants.PREF_WEATHER_ICON, currentWeather.weather.currentCondition.icon)
|
||||
@ -235,4 +232,79 @@ object Util {
|
||||
sendIntent.setType("text/plain");
|
||||
context.startActivity(Intent.createChooser(sendIntent, context.getString(R.string.action_share)));
|
||||
}
|
||||
|
||||
fun showIntro(context: Context) {
|
||||
val SP: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
|
||||
val firstTime: Boolean = SP.getBoolean(Constants.PREF_FIRST_STEP, true)
|
||||
// TODO SP.edit().putBoolean(Constants.PREF_FIRST_STEP, false).apply()
|
||||
if (firstTime) {
|
||||
context.startActivity(Intent(context, SplashActivity::class.java))
|
||||
}
|
||||
}
|
||||
|
||||
fun getWeatherIconResource(icon: String): Int {
|
||||
when (icon) {
|
||||
"01d" -> {
|
||||
return R.drawable.clear_day
|
||||
}
|
||||
"02d" -> {
|
||||
return R.drawable.partly_cloudy
|
||||
}
|
||||
"03d" -> {
|
||||
return R.drawable.mostly_cloudy
|
||||
}
|
||||
"04d" -> {
|
||||
return R.drawable.cloudy_weather
|
||||
}
|
||||
"09d" -> {
|
||||
return R.drawable.storm_weather_day
|
||||
}
|
||||
"10d" -> {
|
||||
return R.drawable.rainy_day
|
||||
}
|
||||
"11d" -> {
|
||||
return R.drawable.thunder_day
|
||||
}
|
||||
"13d" -> {
|
||||
return R.drawable.snow_day
|
||||
}
|
||||
"50d" -> {
|
||||
return R.drawable.haze_day
|
||||
}
|
||||
"01n" -> {
|
||||
return R.drawable.clear_night
|
||||
}
|
||||
"02n" -> {
|
||||
return R.drawable.partly_cloudy_night
|
||||
}
|
||||
"03n" -> {
|
||||
return R.drawable.mostly_cloudy_night
|
||||
}
|
||||
"04n" -> {
|
||||
return R.drawable.cloudy_weather
|
||||
}
|
||||
"09n" -> {
|
||||
return R.drawable.storm_weather_night
|
||||
}
|
||||
"10n" -> {
|
||||
return R.drawable.rainy_night
|
||||
}
|
||||
"11n" -> {
|
||||
return R.drawable.thunder_night
|
||||
}
|
||||
"13n" -> {
|
||||
return R.drawable.snow_night
|
||||
}
|
||||
"50n" -> {
|
||||
return R.drawable.haze_night
|
||||
}
|
||||
else -> {
|
||||
return -1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun getCurrentWallpaper(context: Context): Drawable {
|
||||
return WallpaperManager.getInstance(context).getDrawable();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user