Compare commits
7 Commits
v2.0.5-bet
...
v2.0.5-bet
Author | SHA1 | Date | |
---|---|---|---|
364d8b2307 | |||
e990b229c8 | |||
c97127e3ab | |||
9d72c168b6 | |||
614d001df8 | |||
890101b2b3 | |||
a4b37ad5ad |
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2020 Tommaso Berlose
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
20
README.md
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
|
||||||
|
<img src="hero.png"/>
|
||||||
|
|
||||||
|
Another Widget
|
||||||
|
========
|
||||||
|
|
||||||
|
Another Widget intelligently summarizes the information you need most.
|
||||||
|
Watch the next events, the weather, and the information you want in an intuitive and elegant way. (Nope, reminders cannot be displayed because it's not allowed.)
|
||||||
|
|
||||||
|
While respecting the design of the application, there is a great opportunity to customize the information displayed and widget components.
|
||||||
|
Also, as much as possible, there are always updates and new features in the short run.
|
||||||
|
|
||||||
|
Help me developing with feedback and support me on how you can.
|
||||||
|
<div style="text-align:center"><a href="https://play.google.com/store/apps/details?id=com.tommasoberlose.anotherwidget" target="_blank"><img src="google-play-badge.png" height="100" /></a></div>
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
Copyright (C) 2017-2020 Tommaso Berlose (http://tommasoberlose.com)
|
||||||
|
|
||||||
|
Another Widget binaries and source code can be used according to the [MIT Licence](LICENSE).
|
@ -34,7 +34,7 @@ class AWApplication : Application() {
|
|||||||
private fun calibrateVersions() {
|
private fun calibrateVersions() {
|
||||||
// 2.0 Tolerance
|
// 2.0 Tolerance
|
||||||
if (Preferences.clockTextSize > 50f) {
|
if (Preferences.clockTextSize > 50f) {
|
||||||
Preferences.clockTextSize = 46f
|
Preferences.clockTextSize = 32f
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Preferences.textMainSize > 36f) {
|
if (Preferences.textMainSize > 36f) {
|
||||||
|
@ -7,63 +7,11 @@ object Constants {
|
|||||||
const val RESULT_APP_NAME = "RESULT_APP_NAME"
|
const val RESULT_APP_NAME = "RESULT_APP_NAME"
|
||||||
const val RESULT_APP_PACKAGE = "RESULT_APP_PACKAGE"
|
const val RESULT_APP_PACKAGE = "RESULT_APP_PACKAGE"
|
||||||
|
|
||||||
const val PREF_SHOW_EVENTS = "PREF_SHOW_EVENTS"
|
|
||||||
const val PREF_SHOW_WEATHER = "PREF_SHOW_WEATHER"
|
|
||||||
const val PREF_WEATHER_ICON = "PREF_WEATHER_ICON"
|
|
||||||
const val PREF_WEATHER_TEMP = "PREF_WEATHER_TEMP"
|
|
||||||
const val PREF_WEATHER_TEMP_UNIT = "PREF_WEATHER_TEMP_UNIT"
|
|
||||||
const val PREF_WEATHER_REAL_TEMP_UNIT = "PREF_WEATHER_REAL_TEMP_UNIT"
|
|
||||||
const val PREF_CALENDAR_ALL_DAY = "PREF_CALENDAR_ALL_DAY"
|
|
||||||
const val PREF_CALENDAR_FILTER = "PREF_CALENDAR_FILTER"
|
|
||||||
|
|
||||||
const val PREF_EVENT_ID = "PREF_EVENT_ID"
|
|
||||||
const val PREF_NEXT_EVENT_ID = "PREF_NEXT_EVENT_ID"
|
|
||||||
const val PREF_NEXT_EVENT_NAME = "PREF_NEXT_EVENT_NAME"
|
|
||||||
const val PREF_NEXT_EVENT_START_DATE = "PREF_NEXT_EVENT_START_DATE"
|
|
||||||
const val PREF_NEXT_EVENT_ALL_DAY = "PREF_NEXT_EVENT_ALL_DAY"
|
|
||||||
const val PREF_NEXT_EVENT_LOCATION = "PREF_NEXT_EVENT_LOCATION"
|
|
||||||
const val PREF_NEXT_EVENT_END_DATE = "PREF_NEXT_EVENT_END_DATE"
|
|
||||||
const val PREF_NEXT_EVENT_CALENDAR_ID = "PREF_NEXT_EVENT_CALENDAR_ID"
|
|
||||||
const val PREF_CUSTOM_LOCATION_LAT = "PREF_CUSTOM_LOCATION_LAT"
|
|
||||||
const val PREF_CUSTOM_LOCATION_LON = "PREF_CUSTOM_LOCATION_LON"
|
|
||||||
const val PREF_CUSTOM_LOCATION_ADD = "PREF_CUSTOM_LOCATION_ADD"
|
|
||||||
const val PREF_HOUR_FORMAT = "PREF_HOUR_FORMAT"
|
|
||||||
const val PREF_ITA_FORMAT_DATE = "PREF_ITA_FORMAT_DATE"
|
|
||||||
const val PREF_WEATHER_REFRESH_PERIOD = "PREF_WEATHER_REFRESH_PERIOD"
|
|
||||||
const val PREF_SHOW_UNTIL = "PREF_SHOW_UNTIL"
|
|
||||||
const val PREF_CALENDAR_APP_NAME = "PREF_CALENDAR_APP_NAME"
|
|
||||||
const val PREF_CALENDAR_APP_PACKAGE = "PREF_CALENDAR_APP_PACKAGE"
|
|
||||||
const val PREF_WEATHER_APP_NAME = "PREF_WEATHER_APP_NAME"
|
|
||||||
const val PREF_WEATHER_APP_PACKAGE = "PREF_WEATHER_APP_PACKAGE"
|
|
||||||
const val PREF_WEATHER_PROVIDER_API_KEY = "PREF_WEATHER_PROVIDER_API_KEY"
|
|
||||||
const val PREF_EVENT_APP_NAME = "PREF_EVENT_APP_NAME"
|
|
||||||
const val PREF_EVENT_APP_PACKAGE = "PREF_EVENT_APP_PACKAGE"
|
|
||||||
const val PREF_SHOW_EVENT_LOCATION = "PREF_SHOW_EVENT_LOCATION"
|
|
||||||
const val PREF_TEXT_COLOR = "PREF_TEXT_COLOR"
|
|
||||||
const val PREF_TEXT_MAIN_SIZE = "PREF_TEXT_MAIN_SIZE"
|
|
||||||
const val PREF_TEXT_SECOND_SIZE = "PREF_TEXT_SECOND_SIZE"
|
|
||||||
const val PREF_TEXT_CLOCK_SIZE = "PREF_TEXT_CLOCK_SIZE"
|
|
||||||
const val PREF_WEATHER_PROVIDER = "PREF_WEATHER_PROVIDER"
|
|
||||||
const val PREF_SHOW_CLOCK = "PREF_SHOW_CLOCK"
|
|
||||||
const val PREF_CLOCK_APP_NAME = "PREF_CLOCK_APP_NAME"
|
|
||||||
const val PREF_CLOCK_APP_PACKAGE = "PREF_CLOCK_APP_PACKAGE"
|
|
||||||
const val PREF_TEXT_SHADOW = "PREF_TEXT_SHADOW"
|
|
||||||
const val PREF_SHOW_DIFF_TIME = "PREF_SHOW_DIFF_TIME"
|
|
||||||
const val PREF_SHOW_DECLINED_EVENTS = "PREF_SHOW_DECLINED_EVENTS"
|
|
||||||
const val PREF_OPEN_WEATHER_API_KEY = "PREF_OPEN_WEATHER_API_KEY"
|
|
||||||
const val PREF_DARK_SKY_API_KEY = "PREF_DARK_SKY_API_KEY"
|
|
||||||
const val PREF_WU_API_KEY = "PREF_WU_API_KEY"
|
|
||||||
const val PREF_SECOND_ROW_INFORMATION = "PREF_SECOND_ROW_INFORMATION"
|
|
||||||
const val PREF_CUSTOM_FONT = "PREF_CUSTOM_FONT"
|
|
||||||
const val PREF_CUSTOM_FONT_FILE = "PREF_CUSTOM_FONT_FILE"
|
|
||||||
const val PREF_SHOW_NEXT_EVENT = "PREF_SHOW_NEXT_EVENT"
|
|
||||||
const val PREF_SHOW_WIDGET_PREVIEW = "PREF_SHOW_WIDGET_PREVIEW"
|
|
||||||
const val PREF_SHOW_GPS_NOTIFICATION = "PREF_SHOW_GPS_NOTIFICATION"
|
|
||||||
|
|
||||||
const val CUSTOM_FONT_PRODUCT_SANS = 1
|
const val CUSTOM_FONT_PRODUCT_SANS = 1
|
||||||
|
enum class ClockBottomMargin(val value: Int) {
|
||||||
const val itDateFormat = "EEEE, d MMM"
|
NONE(0),
|
||||||
const val engDateFormat = "EEEE, MMM d"
|
SMALL(1),
|
||||||
const val goodHourFormat = "HH:mm"
|
MEDIUM(2),
|
||||||
const val badHourFormat = "hh:mm a"
|
LARGE(3)
|
||||||
|
}
|
||||||
}
|
}
|
@ -45,6 +45,7 @@ object Preferences : KotprefModel() {
|
|||||||
var textMainSize by floatPref(key = "PREF_TEXT_MAIN_SIZE", default = 26f)
|
var textMainSize by floatPref(key = "PREF_TEXT_MAIN_SIZE", default = 26f)
|
||||||
var textSecondSize by floatPref(key = "PREF_TEXT_SECOND_SIZE", default = 18f)
|
var textSecondSize by floatPref(key = "PREF_TEXT_SECOND_SIZE", default = 18f)
|
||||||
var clockTextSize by floatPref(key = "PREF_TEXT_CLOCK_SIZE", default = 90f)
|
var clockTextSize by floatPref(key = "PREF_TEXT_CLOCK_SIZE", default = 90f)
|
||||||
|
var clockBottomMargin by intPref(default = Constants.ClockBottomMargin.MEDIUM.value)
|
||||||
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 = "")
|
||||||
|
@ -19,6 +19,7 @@ import androidx.lifecycle.lifecycleScope
|
|||||||
import com.google.android.material.tabs.TabLayoutMediator
|
import com.google.android.material.tabs.TabLayoutMediator
|
||||||
import com.tommasoberlose.anotherwidget.R
|
import com.tommasoberlose.anotherwidget.R
|
||||||
import com.tommasoberlose.anotherwidget.global.Actions
|
import com.tommasoberlose.anotherwidget.global.Actions
|
||||||
|
import com.tommasoberlose.anotherwidget.global.Constants
|
||||||
import com.tommasoberlose.anotherwidget.global.Preferences
|
import com.tommasoberlose.anotherwidget.global.Preferences
|
||||||
import com.tommasoberlose.anotherwidget.global.RequestCode
|
import com.tommasoberlose.anotherwidget.global.RequestCode
|
||||||
import com.tommasoberlose.anotherwidget.helpers.BitmapHelper
|
import com.tommasoberlose.anotherwidget.helpers.BitmapHelper
|
||||||
@ -32,6 +33,7 @@ import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
|
|||||||
import com.tommasoberlose.anotherwidget.utils.getCurrentWallpaper
|
import com.tommasoberlose.anotherwidget.utils.getCurrentWallpaper
|
||||||
import com.tommasoberlose.anotherwidget.utils.toPixel
|
import com.tommasoberlose.anotherwidget.utils.toPixel
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
import kotlinx.android.synthetic.main.activity_main.*
|
||||||
|
import kotlinx.android.synthetic.main.the_widget_sans.*
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@ -69,10 +71,9 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
|
|||||||
}.attach()
|
}.attach()
|
||||||
|
|
||||||
// Init clock
|
// Init clock
|
||||||
clock.setTextColor(ColorHelper.getFontColor())
|
time.setTextColor(ColorHelper.getFontColor())
|
||||||
clock.setTextSize(TypedValue.COMPLEX_UNIT_SP, Preferences.clockTextSize.toPixel(this@MainActivity))
|
time.setTextSize(TypedValue.COMPLEX_UNIT_SP, Preferences.clockTextSize.toPixel(this@MainActivity))
|
||||||
clock.format12Hour = "hh:mm"
|
time.isVisible = Preferences.showClock
|
||||||
clock.isVisible = Preferences.showClock
|
|
||||||
|
|
||||||
preview.layoutParams = preview.layoutParams.apply {
|
preview.layoutParams = preview.layoutParams.apply {
|
||||||
height = 160.toPixel(this@MainActivity) + if (Preferences.showClock) 100.toPixel(this@MainActivity) else 0
|
height = 160.toPixel(this@MainActivity) + if (Preferences.showClock) 100.toPixel(this@MainActivity) else 0
|
||||||
@ -99,18 +100,24 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
|
|||||||
val bitmap = BitmapHelper.getBitmapFromView(generatedView, if (preview.width > 0) preview.width else generatedView.measuredWidth, generatedView.measuredHeight)
|
val bitmap = BitmapHelper.getBitmapFromView(generatedView, if (preview.width > 0) preview.width else generatedView.measuredWidth, generatedView.measuredHeight)
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
// Clock
|
// Clock
|
||||||
clock.setTextColor(ColorHelper.getFontColor())
|
time.setTextColor(ColorHelper.getFontColor())
|
||||||
clock.setTextSize(TypedValue.COMPLEX_UNIT_SP, Preferences.clockTextSize.toPixel(this@MainActivity))
|
time.setTextSize(TypedValue.COMPLEX_UNIT_SP, Preferences.clockTextSize.toPixel(this@MainActivity))
|
||||||
clock.format12Hour = "hh:mm"
|
time.format12Hour = "hh:mm"
|
||||||
|
|
||||||
if ((Preferences.showClock && !clock.isVisible) || (!Preferences.showClock && clock.isVisible)) {
|
// Clock bottom margin
|
||||||
|
clock_bottom_margin_none.isVisible = Preferences.showClock && Preferences.clockBottomMargin == Constants.ClockBottomMargin.NONE.value
|
||||||
|
clock_bottom_margin_small.isVisible = Preferences.showClock && Preferences.clockBottomMargin == Constants.ClockBottomMargin.SMALL.value
|
||||||
|
clock_bottom_margin_medium.isVisible = Preferences.showClock && Preferences.clockBottomMargin == Constants.ClockBottomMargin.MEDIUM.value
|
||||||
|
clock_bottom_margin_large.isVisible = Preferences.showClock && Preferences.clockBottomMargin == Constants.ClockBottomMargin.LARGE.value
|
||||||
|
|
||||||
|
if ((Preferences.showClock && !time.isVisible) || (!Preferences.showClock && time.isVisible)) {
|
||||||
if (Preferences.showClock) {
|
if (Preferences.showClock) {
|
||||||
clock.layoutParams = clock.layoutParams.apply {
|
time.layoutParams = time.layoutParams.apply {
|
||||||
height = RelativeLayout.LayoutParams.WRAP_CONTENT
|
height = RelativeLayout.LayoutParams.WRAP_CONTENT
|
||||||
}
|
}
|
||||||
clock.measure(0, 0)
|
time.measure(0, 0)
|
||||||
}
|
}
|
||||||
val initialHeight = clock.measuredHeight
|
val initialHeight = time.measuredHeight
|
||||||
ValueAnimator.ofFloat(
|
ValueAnimator.ofFloat(
|
||||||
if (Preferences.showClock) 0f else 1f,
|
if (Preferences.showClock) 0f else 1f,
|
||||||
if (Preferences.showClock) 1f else 0f
|
if (Preferences.showClock) 1f else 0f
|
||||||
@ -118,19 +125,19 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
|
|||||||
duration = 500L
|
duration = 500L
|
||||||
addUpdateListener {
|
addUpdateListener {
|
||||||
val animatedValue = animatedValue as Float
|
val animatedValue = animatedValue as Float
|
||||||
clock.layoutParams = clock.layoutParams.apply {
|
time.layoutParams = time.layoutParams.apply {
|
||||||
height = (initialHeight * animatedValue).toInt()
|
height = (initialHeight * animatedValue).toInt()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addListener(
|
addListener(
|
||||||
onStart = {
|
onStart = {
|
||||||
if (Preferences.showClock) {
|
if (Preferences.showClock) {
|
||||||
clock.isVisible = true
|
time.isVisible = true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onEnd = {
|
onEnd = {
|
||||||
if (!Preferences.showClock) {
|
if (!Preferences.showClock) {
|
||||||
clock.isVisible = false
|
time.isVisible = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -149,13 +156,13 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
|
|||||||
}
|
}
|
||||||
}.start()
|
}.start()
|
||||||
} else {
|
} else {
|
||||||
clock.layoutParams = clock.layoutParams.apply {
|
time.layoutParams = time.layoutParams.apply {
|
||||||
height = RelativeLayout.LayoutParams.WRAP_CONTENT
|
height = RelativeLayout.LayoutParams.WRAP_CONTENT
|
||||||
}
|
}
|
||||||
clock.measure(0, 0)
|
time.measure(0, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
widget_bitmap.setImageBitmap(bitmap)
|
bitmap_container.setImageBitmap(bitmap)
|
||||||
widget_loader.animate().scaleX(0f).scaleY(0f).start()
|
widget_loader.animate().scaleX(0f).scaleY(0f).start()
|
||||||
widget.animate().alpha(1f).start()
|
widget.animate().alpha(1f).start()
|
||||||
}
|
}
|
||||||
|
@ -83,6 +83,17 @@ class ClockSettingsFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
viewModel.clockBottomMargin.observe(viewLifecycleOwner, Observer {
|
||||||
|
maintainScrollPosition {
|
||||||
|
clock_bottom_margin_label.text = when (it) {
|
||||||
|
Constants.ClockBottomMargin.NONE.value -> getString(R.string.settings_clock_bottom_margin_subtitle_none)
|
||||||
|
Constants.ClockBottomMargin.SMALL.value -> getString(R.string.settings_clock_bottom_margin_subtitle_small)
|
||||||
|
Constants.ClockBottomMargin.LARGE.value -> getString(R.string.settings_clock_bottom_margin_subtitle_large)
|
||||||
|
else -> getString(R.string.settings_clock_bottom_margin_subtitle_medium)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
viewModel.showNextAlarm.observe(viewLifecycleOwner, Observer {
|
viewModel.showNextAlarm.observe(viewLifecycleOwner, Observer {
|
||||||
maintainScrollPosition {
|
maintainScrollPosition {
|
||||||
show_next_alarm_label.text = if (it) getString(R.string.settings_visible) else getString(R.string.settings_not_visible)
|
show_next_alarm_label.text = if (it) getString(R.string.settings_visible) else getString(R.string.settings_not_visible)
|
||||||
@ -116,12 +127,14 @@ class ClockSettingsFragment : Fragment() {
|
|||||||
}.show()
|
}.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
action_show_next_alarm.setOnClickListener {
|
action_clock_bottom_margin_size.setOnClickListener {
|
||||||
BottomSheetMenu<Boolean>(requireContext(), header = getString(R.string.settings_show_next_alarm_title)).setSelectedValue(Preferences.showNextAlarm)
|
BottomSheetMenu<Int>(requireContext(), header = getString(R.string.settings_show_next_alarm_title)).setSelectedValue(Preferences.clockBottomMargin)
|
||||||
.addItem(getString(R.string.settings_visible), true)
|
.addItem(getString(R.string.settings_clock_bottom_margin_subtitle_none), Constants.ClockBottomMargin.NONE.value)
|
||||||
.addItem(getString(R.string.settings_not_visible), false)
|
.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_large), Constants.ClockBottomMargin.LARGE.value)
|
||||||
.addOnSelectItemListener { value ->
|
.addOnSelectItemListener { value ->
|
||||||
Preferences.showNextAlarm = value
|
Preferences.clockBottomMargin = value
|
||||||
}.show()
|
}.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,6 +145,15 @@ class ClockSettingsFragment : Fragment() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
action_show_next_alarm.setOnClickListener {
|
||||||
|
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_not_visible), false)
|
||||||
|
.addOnSelectItemListener { value ->
|
||||||
|
Preferences.showNextAlarm = value
|
||||||
|
}.show()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||||
|
@ -33,6 +33,7 @@ class MainViewModel : ViewModel() {
|
|||||||
val clockAppName = Preferences.asLiveData(Preferences::clockAppName)
|
val clockAppName = Preferences.asLiveData(Preferences::clockAppName)
|
||||||
val showNextAlarm = Preferences.asLiveData(Preferences::showNextAlarm)
|
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 showBigClockWarning = Preferences.asLiveData(Preferences::showBigClockWarning)
|
val showBigClockWarning = Preferences.asLiveData(Preferences::showBigClockWarning)
|
||||||
|
|
||||||
|
@ -208,12 +208,21 @@ class MainWidget : AppWidgetProvider() {
|
|||||||
private fun updateClockView(context: Context, views: RemoteViews, widgetID: Int): RemoteViews {
|
private fun updateClockView(context: Context, views: RemoteViews, widgetID: Int): RemoteViews {
|
||||||
if (!Preferences.showClock) {
|
if (!Preferences.showClock) {
|
||||||
views.setViewVisibility(R.id.time, View.GONE)
|
views.setViewVisibility(R.id.time, View.GONE)
|
||||||
|
views.setViewVisibility(R.id.clock_bottom_margin_none, View.GONE)
|
||||||
|
views.setViewVisibility(R.id.clock_bottom_margin_small, View.GONE)
|
||||||
|
views.setViewVisibility(R.id.clock_bottom_margin_medium, View.GONE)
|
||||||
|
views.setViewVisibility(R.id.clock_bottom_margin_large, View.GONE)
|
||||||
} else {
|
} else {
|
||||||
views.setTextColor(R.id.time, ColorHelper.getFontColor())
|
views.setTextColor(R.id.time, ColorHelper.getFontColor())
|
||||||
views.setTextViewTextSize(R.id.time, TypedValue.COMPLEX_UNIT_SP, Preferences.clockTextSize.toPixel(context))
|
views.setTextViewTextSize(R.id.time, TypedValue.COMPLEX_UNIT_SP, Preferences.clockTextSize.toPixel(context))
|
||||||
val clockPIntent = PendingIntent.getActivity(context, widgetID, IntentHelper.getClockIntent(context), 0)
|
val clockPIntent = PendingIntent.getActivity(context, widgetID, IntentHelper.getClockIntent(context), 0)
|
||||||
views.setOnClickPendingIntent(R.id.time, clockPIntent)
|
views.setOnClickPendingIntent(R.id.time, clockPIntent)
|
||||||
views.setViewVisibility(R.id.time, View.VISIBLE)
|
views.setViewVisibility(R.id.time, View.VISIBLE)
|
||||||
|
|
||||||
|
views.setViewVisibility(R.id.clock_bottom_margin_none, if (Preferences.clockBottomMargin == Constants.ClockBottomMargin.NONE.value) View.VISIBLE else View.GONE)
|
||||||
|
views.setViewVisibility(R.id.clock_bottom_margin_small, if (Preferences.clockBottomMargin == Constants.ClockBottomMargin.SMALL.value) View.VISIBLE else View.GONE)
|
||||||
|
views.setViewVisibility(R.id.clock_bottom_margin_medium, if (Preferences.clockBottomMargin == Constants.ClockBottomMargin.MEDIUM.value) View.VISIBLE else View.GONE)
|
||||||
|
views.setViewVisibility(R.id.clock_bottom_margin_large, if (Preferences.clockBottomMargin == Constants.ClockBottomMargin.LARGE.value) View.VISIBLE else View.GONE)
|
||||||
}
|
}
|
||||||
|
|
||||||
return views
|
return views
|
||||||
|
After Width: | Height: | Size: 237 B |
After Width: | Height: | Size: 240 B |
After Width: | Height: | Size: 338 B |
After Width: | Height: | Size: 369 B |
After Width: | Height: | Size: 177 B |
After Width: | Height: | Size: 163 B |
After Width: | Height: | Size: 240 B |
After Width: | Height: | Size: 254 B |
After Width: | Height: | Size: 240 B |
After Width: | Height: | Size: 254 B |
After Width: | Height: | Size: 369 B |
After Width: | Height: | Size: 458 B |
After Width: | Height: | Size: 338 B |
After Width: | Height: | Size: 369 B |
After Width: | Height: | Size: 535 B |
After Width: | Height: | Size: 666 B |
After Width: | Height: | Size: 369 B |
After Width: | Height: | Size: 458 B |
After Width: | Height: | Size: 666 B |
After Width: | Height: | Size: 829 B |
10
app/src/main/res/drawable/round_format_line_spacing.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="M7.29,7c0.45,0 0.67,-0.54 0.35,-0.85l-2.29,-2.3c-0.2,-0.2 -0.51,-0.2 -0.71,0l-2.29,2.3c-0.31,0.31 -0.09,0.85 0.36,0.85L4,7v10L2.71,17c-0.45,0 -0.67,0.54 -0.35,0.85l2.29,2.29c0.2,0.2 0.51,0.2 0.71,0l2.29,-2.29c0.31,-0.31 0.09,-0.85 -0.36,-0.85L6,17L6,7h1.29zM11,7h10c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1L11,5c-0.55,0 -1,0.45 -1,1s0.45,1 1,1zM21,17L11,17c-0.55,0 -1,0.45 -1,1s0.45,1 1,1h10c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1zM21,11L11,11c-0.55,0 -1,0.45 -1,1s0.45,1 1,1h10c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1z"/>
|
||||||
|
</vector>
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.3 KiB |
@ -76,22 +76,7 @@
|
|||||||
android:id="@+id/widget"
|
android:id="@+id/widget"
|
||||||
android:alpha="0"
|
android:alpha="0"
|
||||||
android:gravity="center">
|
android:gravity="center">
|
||||||
<TextClock
|
<include layout="@layout/the_widget_sans" />
|
||||||
android:id="@+id/clock"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="center"
|
|
||||||
android:lineSpacingMultiplier="1"
|
|
||||||
android:lineSpacingExtra="0dp"
|
|
||||||
android:includeFontPadding="false"
|
|
||||||
android:visibility="gone"
|
|
||||||
android:padding="0dp"
|
|
||||||
style="@style/AnotherWidget.Title" />
|
|
||||||
<ImageView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:id="@+id/widget_bitmap"
|
|
||||||
tools:ignore="ContentDescription" />
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
android:layout_width="48dp"
|
android:layout_width="48dp"
|
||||||
|
@ -152,13 +152,13 @@
|
|||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:id="@+id/action_show_next_alarm"
|
android:id="@+id/action_clock_bottom_margin_size"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
<ImageView
|
<ImageView
|
||||||
android:layout_width="48dp"
|
android:layout_width="48dp"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:padding="12dp"
|
android:padding="12dp"
|
||||||
android:src="@drawable/round_alarm"
|
android:src="@drawable/round_format_line_spacing"
|
||||||
android:tint="@color/colorPrimaryText"/>
|
android:tint="@color/colorPrimaryText"/>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@ -170,11 +170,11 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
style="@style/AnotherWidget.Settings.Title"
|
style="@style/AnotherWidget.Settings.Title"
|
||||||
android:text="@string/settings_show_next_alarm_title"/>
|
android:text="@string/settings_clock_bottom_margin_title"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:id="@+id/show_next_alarm_label"
|
android:id="@+id/clock_bottom_margin_label"
|
||||||
style="@style/AnotherWidget.Settings.Subtitle"/>
|
style="@style/AnotherWidget.Settings.Subtitle"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@ -215,27 +215,64 @@
|
|||||||
style="@style/AnotherWidget.Settings.Subtitle"/>
|
style="@style/AnotherWidget.Settings.Subtitle"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="16dp"
|
||||||
|
android:paddingBottom="16dp"
|
||||||
|
android:paddingLeft="8dp"
|
||||||
|
android:paddingRight="8dp"
|
||||||
|
android:clickable="true"
|
||||||
|
android:focusable="true"
|
||||||
|
android:background="?android:attr/selectableItemBackground"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:id="@+id/action_show_next_alarm"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="48dp"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:padding="12dp"
|
||||||
|
android:src="@drawable/round_alarm"
|
||||||
|
android:tint="@color/colorPrimaryText"/>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:id="@+id/small_clock_warning"
|
android:paddingLeft="8dp"
|
||||||
|
android:paddingRight="8dp"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingTop="16dp"
|
style="@style/AnotherWidget.Settings.Title"
|
||||||
android:paddingLeft="24dp"
|
android:text="@string/settings_show_next_alarm_title"/>
|
||||||
android:paddingRight="24dp"
|
<TextView
|
||||||
android:paddingBottom="32dp"
|
android:layout_width="wrap_content"
|
||||||
android:duplicateParentState="true"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="14sp"
|
android:id="@+id/show_next_alarm_label"
|
||||||
android:text="@string/clock_warning"
|
style="@style/AnotherWidget.Settings.Subtitle"/>
|
||||||
android:textColor="@color/colorPrimaryText"
|
|
||||||
android:letterSpacing="0"
|
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
|
|
||||||
app:textAllCaps="false" />
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:id="@+id/small_clock_warning"
|
||||||
|
android:orientation="vertical">
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="16dp"
|
||||||
|
android:paddingLeft="24dp"
|
||||||
|
android:paddingRight="24dp"
|
||||||
|
android:paddingBottom="32dp"
|
||||||
|
android:duplicateParentState="true"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:text="@string/clock_warning"
|
||||||
|
android:textColor="@color/colorPrimaryText"
|
||||||
|
android:letterSpacing="0"
|
||||||
|
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
|
||||||
|
app:textAllCaps="false" />
|
||||||
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
</layout>
|
</layout>
|
@ -19,8 +19,32 @@
|
|||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
android:lines="1"
|
android:lines="1"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:layout_marginBottom="16dp"
|
|
||||||
style="@style/AnotherWidget.Title"/>
|
style="@style/AnotherWidget.Title"/>
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="2dp"
|
||||||
|
android:layout_marginTop="-16dp"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:id="@+id/clock_bottom_margin_none" />
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="2dp"
|
||||||
|
android:layout_marginTop="-8dp"
|
||||||
|
android:visibility="gone"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:id="@+id/clock_bottom_margin_small" />
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="2dp"
|
||||||
|
android:visibility="gone"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:id="@+id/clock_bottom_margin_medium" />
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="10dp"
|
||||||
|
android:visibility="gone"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:id="@+id/clock_bottom_margin_large" />
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
201
app/src/main/res/values-de/strings.xml
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string name="add_widget">Widget hinzufügen</string>
|
||||||
|
<string name="button_request_permission">Rechte erteilen</string>
|
||||||
|
<string name="title_permission_calendar">Sehen Sie Ihre Termine</string>
|
||||||
|
<string name="title_permission_location">Kontrolliere das Wetter</string>
|
||||||
|
<string name="description_permission_calendar">Gewähren Sie Zugriff auf Ihren Kalender, um Ereignisse in Ihrem
|
||||||
|
Widget anzuzeigen.\n\t
|
||||||
|
</string>
|
||||||
|
<string name="description_permission_location">Gewähren Sie Zugriff auf Ihren Ort, um das Wetter in Ihrem Widget
|
||||||
|
anzuzeigen.\n\t
|
||||||
|
</string>
|
||||||
|
<string name="settings_filter_calendar_title">Veranstaltungen filtern</string>
|
||||||
|
<string name="action_share">Teilen</string>
|
||||||
|
<string name="action_rate">App bewertern</string>
|
||||||
|
<string name="action_support">Ünterstützten Sie mich</string>
|
||||||
|
<string name="all_set_title">Gut gemacht!</string>
|
||||||
|
<string name="notification_subtitle">Sehen Sie sich Ihre Ereignisse und das Wetter in einem anderen Widget an.
|
||||||
|
</string>
|
||||||
|
<string name="notification_title">Holen Sie mehr aus Ihrem Widget heraus</string>
|
||||||
|
<string name="all_set_subtitle">Sie haben die Konfiguration abgeschlossen. Achten Sie auf Updates.</string>
|
||||||
|
<string name="all_set_btn">Bleiben Sie aktuell</string>
|
||||||
|
<string name="action_about">Über</string>
|
||||||
|
<string name="h_code">Std</string>
|
||||||
|
<string name="min_code">" Min"</string>
|
||||||
|
<string name="in_code">in</string>
|
||||||
|
<string name="action_project">Projekt</string>
|
||||||
|
<string name="settings_unit_title">Messeinheit</string>
|
||||||
|
<string name="settings_unit_subtitle">Wählen Sie die Einheit der Temperaturmessung</string>
|
||||||
|
<string name="settings_filter_calendar_subtitle">Sichtbarkeit der Kalender</string>
|
||||||
|
<string name="settings_all_day_title">Ganztag-Veranstaltungen</string>
|
||||||
|
<string name="settings_all_day_subtitle_visible">Sichtbar</string>
|
||||||
|
<string name="settings_all_day_subtitle_gone">Nicht sichtbar</string>
|
||||||
|
<string name="main_calendar">Kalender-Account</string>
|
||||||
|
<string name="settings_calendar_title">Kalender-Einstellungen</string>
|
||||||
|
<string name="settings_weather_title">Wetter-Einstellungen</string>
|
||||||
|
<string name="settings_general_title">Allgemeine Einstellungen</string>
|
||||||
|
<string name="calendar_settings_list_error">Fehler beim Laden der Kalenderliste</string>
|
||||||
|
<string name="settings_hour_format_title">Stundenformat</string>
|
||||||
|
<string name="settings_hour_format_subtitle_12">12 Stunden AM/PM</string>
|
||||||
|
<string name="settings_hour_format_subtitle_24">24 Stunden</string>
|
||||||
|
<string name="all_day">Ganztag-Veranstaltung</string>
|
||||||
|
<string name="settings_date_format_title">Datumsformat</string>
|
||||||
|
<string name="settings_weather_refresh_period_title">Aktualisierungszeitraum</string>
|
||||||
|
<string name="settings_weather_refresh_period_subtitle_0">30 Minuten</string>
|
||||||
|
<string name="settings_weather_refresh_period_subtitle_1">1 Stunde</string>
|
||||||
|
<string name="settings_weather_refresh_period_subtitle_2">3 Stunden</string>
|
||||||
|
<string name="settings_weather_refresh_period_subtitle_3">6 Stunden</string>
|
||||||
|
<string name="settings_weather_refresh_period_subtitle_4">12 Stunden</string>
|
||||||
|
<string name="settings_weather_refresh_period_subtitle_5">24 Stunden</string>
|
||||||
|
<string name="settings_custom_location_title">" Benutzerdefinierte Position"</string>
|
||||||
|
<string name="custom_location_gps">Geo-Lokalisierung</string>
|
||||||
|
<string name="action_refresh_widget">Widget erneuern</string>
|
||||||
|
<string name="show_events_visible">Veranstaltungen sind sichtbar</string>
|
||||||
|
<string name="show_events_not_visible">Veranstaltungen sind nicht sichtbar</string>
|
||||||
|
<string name="show_weather_visible">Wetterinfos sind sichtbar</string>
|
||||||
|
<string name="show_weather_not_visible">Wetterinfos sind nicht sichtbar</string>
|
||||||
|
<string name="settings_show_until_subtitle_0">3 Stunden später</string>
|
||||||
|
<string name="settings_show_until_subtitle_1">6 Stunden später</string>
|
||||||
|
<string name="settings_show_until_subtitle_2">12 Stunden später</string>
|
||||||
|
<string name="settings_show_until_subtitle_3">24 Stunden später</string>
|
||||||
|
<string name="settings_show_until_subtitle_4">3 Tage später</string>
|
||||||
|
<string name="settings_show_until_subtitle_5">7 Tage später</string>
|
||||||
|
<string name="settings_show_until_title">Sehen Sie die Ereignisse höchstens bis</string>
|
||||||
|
<string name="day_char">T</string>
|
||||||
|
<string name="error_opening_uri">Fehler beim Öffnen der URL: Link in die Zwischenablage kopiert.</string>
|
||||||
|
<string name="loading_text">Daten werden geladen...</string>
|
||||||
|
<string name="error_opening_app">Fehler beim Öffnen der App.</string>
|
||||||
|
<string name="settings_calendar_app_title">Beim Klick auf\'s Datum öffnet sich</string>
|
||||||
|
<string name="settings_weather_app_title">Beim Klick auf\'s Wetter öffnet sich</string>
|
||||||
|
<string name="default_name">Standardapp</string>
|
||||||
|
<string name="action_choose_application">App wählen</string>
|
||||||
|
<string name="settings_weather_provider_api_key_title">Wetter-Anbieter</string>
|
||||||
|
<string name="settings_weather_provider_api_key_subtitle_all_set">Der Wetteranbieter ist korrekt konfiguriert
|
||||||
|
</string>
|
||||||
|
<string name="settings_weather_provider_api_key_subtitle_not_set">Der Wetteranbieter muss konfiguriert werden
|
||||||
|
</string>
|
||||||
|
<string name="notification_gps_title">GPS einschalten</string>
|
||||||
|
<string name="notification_gps_subtitle">Google Awareness benötigt aktives GPS zum Arbeiten.</string>
|
||||||
|
<string name="action_feedback">Rückmeldung</string>
|
||||||
|
<string name="feedback_title">AW Rückmeldung</string>
|
||||||
|
<string name="feedback_chooser_title">E-Mail senden...</string>
|
||||||
|
<string name="feedback_error">Fehler beim Senden der E-Mail.</string>
|
||||||
|
<string name="api_key_hint">OpenWeather API Key</string>
|
||||||
|
<string name="action_save">Speichern</string>
|
||||||
|
<string name="error_no_calendar">Keine Kalender gefunden</string>
|
||||||
|
<string name="api_key_info_title">Was ist zu tun</string>
|
||||||
|
<string name="api_key_info_text">
|
||||||
|
<![CDATA[Another Widget ist eine kostenlose Anwendung und wird ohne Bannerwerbung bleiben.<BR /> <BR />Aufgrund seines großen Erfolges, der sicherlich meine Erwartungen übertrifft, unterstützt der Wetteranbieter nicht alle ankommenden Anfragen (einfach, weil es kostenlos und daher begrenzt ist).<BR /><BR />Ich muss jeden von Ihnen bitten, ein Konto bei OpenWeather persönlich zu registrieren. Der Vorgang dauert nur ein paar Minuten, und wenn der Schlüssel aktiviert ist, haben Sie keine Probleme mit dem Wetter.<BR /><BR />Ich entschuldige mich für die Unannehmlichkeiten und stütze mich weiter!]]></string>
|
||||||
|
<string name="api_key_title_1">Registrierung eines OpenWeather Kontos</string>
|
||||||
|
<string name="api_key_subtitle_1">Registrieren Sie ein kostenloses Konto bei OpenWeather. Es wird nur ein paar
|
||||||
|
Minuten dauern.
|
||||||
|
</string>
|
||||||
|
<string name="api_key_title_2">API-Key kopieren</string>
|
||||||
|
<string name="api_key_subtitle_2">Greifen Sie über Ihre Kontoeinstellungen auf das API-Schlüsselmenü zu und kopieren
|
||||||
|
Sie den Standardschlüssel.
|
||||||
|
</string>
|
||||||
|
<string name="api_key_title_3">Fügen Sie den Schlüssel zur App hinzu</string>
|
||||||
|
<string name="api_key_subtitle_3">Geben Sie den Schlüssel in diesem Abschnitt ein und speichern Sie ihn. Sobald der
|
||||||
|
Schlüssel aktiviert ist, ist das Wetter sichtbar.
|
||||||
|
</string>
|
||||||
|
<string name="api_key_info_start">Hi zusammen!</string>
|
||||||
|
<string name="action_open_provider">Öffnen von OpenWeather.com</string>
|
||||||
|
<string name="api_key_info_all_set">
|
||||||
|
<![CDATA[Es kann bis zu <b> zehn Minuten </b> dauern, bis der API-Schlüssel aktiviert wird.<BR /><i> Entspannen </ i> Sie! Das Wetter wird aktualisiert, sobald es verfügbar ist !!]]></string>
|
||||||
|
<string name="well_done">Gut gemacht!</string>
|
||||||
|
<string name="hs_code">Std</string>
|
||||||
|
<string name="tomorrow">Morgen</string>
|
||||||
|
<string name="today">Heute</string>
|
||||||
|
<string name="settings_event_app_title">Klick auf die Veranstaltung öffnet</string>
|
||||||
|
<string name="settings_second_row_info_title">Informationen der zweiten Reihe</string>
|
||||||
|
<string name="settings_font_color_title">Textfarbe</string>
|
||||||
|
<string name="title_main_text_size">Schriftgröße erste Reihe</string>
|
||||||
|
<string name="title_second_text_size">Schriftgröße zweite Reihe</string>
|
||||||
|
<string name="settings_clock_title">Einstellung der Uhr</string>
|
||||||
|
<string name="settings_second_row_info_subtitle_1">Zeige Ereignisadresse anstelle von Zeit</string>
|
||||||
|
<string name="settings_second_row_info_subtitle_0">Zeige Ereignisszeit</string>
|
||||||
|
<string name="settings_second_row_info_subtitle_2">Zeige nächste Erinnerung</string>
|
||||||
|
<string name="settings_clock_app_title">Klick der Uhr öffnet</string>
|
||||||
|
<string name="title_show_clock">Uhr anzeigen</string>
|
||||||
|
<string name="description_show_clock">Zeigt die Zeit über Ereignisse und Wetter an</string>
|
||||||
|
<string name="show_clock_visible">Uhr ist sichtbar</string>
|
||||||
|
<string name="show_clock_not_visible">Uhr ist nicht sichtbar</string>
|
||||||
|
<string name="settings_clock_text_size_title">Schriftgrößte der Uhr</string>
|
||||||
|
<string name="title_text_shadow">Schatten des Textes</string>
|
||||||
|
<string name="settings_text_shadow_subtitle_none">Keins</string>
|
||||||
|
<string name="settings_text_shadow_subtitle_low">Niedrig</string>
|
||||||
|
<string name="settings_text_shadow_subtitle_high">Hoch</string>
|
||||||
|
<string name="advanced_settings_title">Erweiterte Einstellungen</string>
|
||||||
|
<string name="settings_product_sans_font_title">Product Sans Font</string>
|
||||||
|
<string name="settings_product_sans_font_subtitle">Durch die Verwendung von Product Sans wurde die Möglichkeit zum
|
||||||
|
Antippen von Widget-Elementen deaktiviert. Ich arbeite dran.
|
||||||
|
</string>
|
||||||
|
<string name="settings_show_diff_time_title">Zeit für die Veranstaltung</string>
|
||||||
|
<string name="settings_visible">Sichtbar</string>
|
||||||
|
<string name="settings_not_visible">Nicht sichtbar</string>
|
||||||
|
<string name="settings_show_declined_events_title">Abgelehnte Ereignisse</string>
|
||||||
|
<string name="default_weather_app">Google Wetter</string>
|
||||||
|
<string name="default_event_app">Google Kalender Veranstalungsdetails</string>
|
||||||
|
<string name="default_calendar_app">Standard Kalender-App</string>
|
||||||
|
<string name="default_clock_app">Standard Uhr-App</string>
|
||||||
|
<string name="settings_show_until_subtitle_7">1 Stunde später</string>
|
||||||
|
<string name="settings_show_until_subtitle_6">30 Minuten später</string>
|
||||||
|
<string name="action_default">Default</string>
|
||||||
|
<string name="action_none">Deaktiviert</string>
|
||||||
|
<string name="settings_custom_font_title">Widget Schriftart</string>
|
||||||
|
<string name="custom_font_subtitle_0">Geräte Schriftart</string>
|
||||||
|
<string name="custom_font_subtitle_1">Produkt Schriftart</string>
|
||||||
|
<string name="action_go_to_next_event">Zeige nächste Veranstaltung</string>
|
||||||
|
<string name="settings_show_multiple_events_title">Zähler für mehrere Ereignisse</string>
|
||||||
|
<string name="support_main_title">Unterstütze den Entwickler mit</string>
|
||||||
|
<string name="support_translations_title">Bei der Übersetzung helfen</string>
|
||||||
|
<string name="support_translations_subtitle">Öffne einen pull request auf GitHub</string>
|
||||||
|
<string name="support_website_title">Schauen Sie sich meine anderen Projekte an</string>
|
||||||
|
<string name="support_website_subtitle">Selber Entwickler, mehr Möglichkeiten</string>
|
||||||
|
<string name="error">Ops, da ist etwas falsch gelaufen!</string>
|
||||||
|
<string name="thanks">Danke für Ihre Unterstützung</string>
|
||||||
|
<string name="donation_coffee">Einen italenischen Kaffee</string>
|
||||||
|
<string name="donation_donuts">Einige glasierte Donuts</string>
|
||||||
|
<string name="donation_dinner">Ein teueres Abendessen</string>
|
||||||
|
<string name="donation_breakfast">Ein englischen Frühstück</string>
|
||||||
|
<string name="donation_lunch">Ein schnelles Mittagsessen</string>
|
||||||
|
<string name="background_service_title">Another Widget läuft</string>
|
||||||
|
<string name="background_service_subtitle">AW läuft im Hintergrund</string>
|
||||||
|
<string name="action_show_widget_preview">Zeige die Widget Vorschau</string>
|
||||||
|
<string name="action_hide_widget_preview">Verstecke die Widget Vorschau</string>
|
||||||
|
<string name="error_widget_notification_title">GPS ist aus</string>
|
||||||
|
<string name="error_widget_notification_subtitle">GPS wieder aktivieren, damit ein Another Widget
|
||||||
|
Wetterinformationen mit der Google Awareness API aktualisieren kann.
|
||||||
|
</string>
|
||||||
|
|
||||||
|
<!-- TODO -->
|
||||||
|
<string name="error_weather_api_key">The provider is not configured correctly, do you still want to go back?</string>
|
||||||
|
<string name="settings_show_next_alarm_title">Show next alarm when possible</string>
|
||||||
|
<string name="open_location_settings">Location settings</string>
|
||||||
|
<string name="change_provider">Change provider</string>
|
||||||
|
<string name="disable_notification">Disable notification</string>
|
||||||
|
<string name="settings_theme_title">Theme</string>
|
||||||
|
<string name="support_main_subtitle">Devs always need a lot of coffee</string>
|
||||||
|
<string name="settings_subtitle_dark_theme_light">Light</string>
|
||||||
|
<string name="settings_subtitle_dark_theme_dark">Dark</string>
|
||||||
|
<string name="settings_subtitle_dark_theme_by_battery_saver">Set by Battery Saver</string>
|
||||||
|
<string name="settings_subtitle_dark_theme_follow_system">Follow the system theme</string>
|
||||||
|
<string name="settings_subtitle_dark_theme_default">Default</string>
|
||||||
|
<string name="search">Search</string>
|
||||||
|
<string name="settings_title_show_wallpaper">Show wallpaper</string>
|
||||||
|
<string name="support_refresh_widget_subtitle">Force the restart of the widget service</string>
|
||||||
|
<string name="account_events">Account events</string>
|
||||||
|
<string name="clock_warning">Due to technological limitations, the clock won\'t have the custom font and the text shadows selected in the typography section.</string>
|
||||||
|
<string name="weather_warning">Google Awareness weather has been deprecated. It\'s now required an OpenWeather API key to show the weather in the widget.</string>
|
||||||
|
<string name="custom_date_format">Custom date format</string>
|
||||||
|
<string name="settings_app_version_title">App version</string>
|
||||||
|
<string name="support_dev_subtitle">This is a single developer project,\nso thank you for the support!</string>
|
||||||
|
<string name="settings_feedback_subtitle">This is an open-source project, feel free to help.</string>
|
||||||
|
<string name="settings_feedback_title">Feedback and feature requests</string>
|
||||||
|
<string name="settings_clock_bottom_margin_title">Clock bottom margin</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_none">None</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_small">Small</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_medium">Medium</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_large">Large</string>
|
||||||
|
</resources>
|
@ -171,4 +171,9 @@
|
|||||||
<string name="support_dev_subtitle">Ceci est un projet de développeur unique,\ndonc merci pour le soutien!</string>
|
<string name="support_dev_subtitle">Ceci est un projet de développeur unique,\ndonc merci pour le soutien!</string>
|
||||||
<string name="settings_feedback_subtitle">Ceci est un projet open-source, n\'hésitez pas à aider.</string>
|
<string name="settings_feedback_subtitle">Ceci est un projet open-source, n\'hésitez pas à aider.</string>
|
||||||
<string name="settings_feedback_title">Commentaires et suggestions</string>
|
<string name="settings_feedback_title">Commentaires et suggestions</string>
|
||||||
|
<string name="settings_clock_bottom_margin_title">Marge inférieure de l\'horloge</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_none">Aucun</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_small">Petit</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_medium">Moyen</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_large">Grand</string>
|
||||||
</resources>
|
</resources>
|
@ -172,4 +172,9 @@
|
|||||||
<string name="support_dev_subtitle">Grazie per supportare il progetto!</string>
|
<string name="support_dev_subtitle">Grazie per supportare il progetto!</string>
|
||||||
<string name="settings_feedback_subtitle">Contribuisci a questo progetto open source.</string>
|
<string name="settings_feedback_subtitle">Contribuisci a questo progetto open source.</string>
|
||||||
<string name="settings_feedback_title">Feedback</string>
|
<string name="settings_feedback_title">Feedback</string>
|
||||||
|
<string name="settings_clock_bottom_margin_title">Margine inferiore orologio</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_none">Nessuno</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_small">Piccolo</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_medium">Medio</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_large">Grande</string>
|
||||||
</resources>
|
</resources>
|
@ -183,4 +183,9 @@
|
|||||||
<string name="settings_feedback_subtitle">This is an open-source project, feel free to help.</string>
|
<string name="settings_feedback_subtitle">This is an open-source project, feel free to help.</string>
|
||||||
<string name="settings_feedback_title">Feedback and feature requests</string>
|
<string name="settings_feedback_title">Feedback and feature requests</string>
|
||||||
<string name="title_tasksintegration" translatable="false">Google Tasks</string>
|
<string name="title_tasksintegration" translatable="false">Google Tasks</string>
|
||||||
|
<string name="settings_clock_bottom_margin_title">Clock bottom margin</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_none">None</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_small">Small</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_medium">Medium</string>
|
||||||
|
<string name="settings_clock_bottom_margin_subtitle_large">Large</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
BIN
google-play-badge.png
Normal file
After Width: | Height: | Size: 14 KiB |
@ -4,7 +4,7 @@
|
|||||||
featureSplit="tasksintegration"
|
featureSplit="tasksintegration"
|
||||||
package="com.tommasoberlose.anotherwidget"
|
package="com.tommasoberlose.anotherwidget"
|
||||||
android:versionCode="59"
|
android:versionCode="59"
|
||||||
android:versionName="2.0.4" >
|
android:versionName="2.0.5" >
|
||||||
|
|
||||||
<uses-sdk
|
<uses-sdk
|
||||||
android:minSdkVersion="23"
|
android:minSdkVersion="23"
|
||||||
|
@ -1 +1 @@
|
|||||||
#Mon May 04 02:02:08 CEST 2020
|
#Mon May 04 17:41:28 CEST 2020
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#Mon May 04 15:26:16 CEST 2020
|
#Mon May 04 18:04:57 CEST 2020
|
||||||
base.0=/Users/tommaso/Documents/MyCode/another-widget/tasksintegration/build/intermediates/dex/debug/mergeProjectDexDebug/out/classes.dex
|
base.0=/Users/tommaso/Documents/MyCode/another-widget/tasksintegration/build/intermediates/dex/debug/mergeProjectDexDebug/out/classes.dex
|
||||||
path.0=classes.dex
|
path.0=classes.dex
|
||||||
renamed.0=classes.dex
|
renamed.0=classes.dex
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
package="com.tommasoberlose.anotherwidget"
|
package="com.tommasoberlose.anotherwidget"
|
||||||
android:targetSandboxVersion="2"
|
android:targetSandboxVersion="2"
|
||||||
android:versionCode="59"
|
android:versionCode="59"
|
||||||
android:versionName="2.0.4" >
|
android:versionName="2.0.5" >
|
||||||
|
|
||||||
<uses-sdk
|
<uses-sdk
|
||||||
android:minSdkVersion="23"
|
android:minSdkVersion="23"
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
4 featureSplit="tasksintegration"
|
4 featureSplit="tasksintegration"
|
||||||
5 package="com.tommasoberlose.anotherwidget"
|
5 package="com.tommasoberlose.anotherwidget"
|
||||||
6 android:versionCode="59"
|
6 android:versionCode="59"
|
||||||
7 android:versionName="2.0.4" >
|
7 android:versionName="2.0.5" >
|
||||||
8
|
8
|
||||||
9 <uses-sdk
|
9 <uses-sdk
|
||||||
10 android:minSdkVersion="23"
|
10 android:minSdkVersion="23"
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
featureSplit="tasksintegration"
|
featureSplit="tasksintegration"
|
||||||
package="com.tommasoberlose.anotherwidget"
|
package="com.tommasoberlose.anotherwidget"
|
||||||
android:versionCode="59"
|
android:versionCode="59"
|
||||||
android:versionName="2.0.4" >
|
android:versionName="2.0.5" >
|
||||||
|
|
||||||
<uses-sdk
|
<uses-sdk
|
||||||
android:minSdkVersion="23"
|
android:minSdkVersion="23"
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
featureSplit="tasksintegration"
|
featureSplit="tasksintegration"
|
||||||
package="com.tommasoberlose.anotherwidget"
|
package="com.tommasoberlose.anotherwidget"
|
||||||
android:versionCode="59"
|
android:versionCode="59"
|
||||||
android:versionName="2.0.4" >
|
android:versionName="2.0.5" >
|
||||||
|
|
||||||
<uses-sdk android:targetSdkVersion="29" />
|
<uses-sdk android:targetSdkVersion="29" />
|
||||||
|
|
||||||
|