1
0
mirror of https://github.com/wulkanowy/wulkanowy.git synced 2024-09-20 09:39:09 -05:00

Add widget system theme option (#759)

This commit is contained in:
Mateusz Idziejczak 2020-05-10 12:00:21 +02:00 committed by GitHub
parent 45fc76a9a5
commit 6ac5c6a0b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 99 additions and 86 deletions

View File

@ -4,6 +4,7 @@ import android.appwidget.AppWidgetManager.ACTION_APPWIDGET_UPDATE
import android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_ID import android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_ID
import android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_IDS import android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_IDS
import android.content.Intent import android.content.Intent
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
@ -14,6 +15,7 @@ import io.github.wulkanowy.databinding.ActivityWidgetConfigureBinding
import io.github.wulkanowy.ui.base.BaseActivity import io.github.wulkanowy.ui.base.BaseActivity
import io.github.wulkanowy.ui.base.WidgetConfigureAdapter import io.github.wulkanowy.ui.base.WidgetConfigureAdapter
import io.github.wulkanowy.ui.modules.login.LoginActivity import io.github.wulkanowy.ui.modules.login.LoginActivity
import io.github.wulkanowy.utils.AppInfo
import javax.inject.Inject import javax.inject.Inject
class LuckyNumberWidgetConfigureActivity : class LuckyNumberWidgetConfigureActivity :
@ -26,6 +28,9 @@ class LuckyNumberWidgetConfigureActivity :
@Inject @Inject
override lateinit var presenter: LuckyNumberWidgetConfigurePresenter override lateinit var presenter: LuckyNumberWidgetConfigurePresenter
@Inject
lateinit var appInfo: AppInfo
private var dialog: AlertDialog? = null private var dialog: AlertDialog? = null
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -48,10 +53,11 @@ class LuckyNumberWidgetConfigureActivity :
} }
override fun showThemeDialog() { override fun showThemeDialog() {
val items = arrayOf( var items = arrayOf(
getString(R.string.widget_timetable_theme_light), getString(R.string.widget_timetable_theme_light),
getString(R.string.widget_timetable_theme_dark) getString(R.string.widget_timetable_theme_dark)
) )
if (appInfo.systemVersion >= Build.VERSION_CODES.Q) items += (getString(R.string.widget_timetable_theme_system))
dialog = AlertDialog.Builder(this, R.style.WulkanowyTheme_WidgetAccountSwitcher) dialog = AlertDialog.Builder(this, R.style.WulkanowyTheme_WidgetAccountSwitcher)
.setTitle(R.string.widget_timetable_theme_title) .setTitle(R.string.widget_timetable_theme_title)

View File

@ -40,7 +40,7 @@ class LuckyNumberWidgetConfigurePresenter @Inject constructor(
registerStudent(selectedStudent) registerStudent(selectedStudent)
} }
fun onDismissThemeView(){ fun onDismissThemeView() {
view?.finishView() view?.finishView()
} }

View File

@ -8,6 +8,7 @@ import android.appwidget.AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH
import android.appwidget.AppWidgetProvider import android.appwidget.AppWidgetProvider
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.res.Configuration
import android.os.Bundle import android.os.Bundle
import android.view.View.GONE import android.view.View.GONE
import android.view.View.VISIBLE import android.view.View.VISIBLE
@ -62,14 +63,12 @@ class LuckyNumberWidgetProvider : AppWidgetProvider() {
override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray?) { override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray?) {
super.onUpdate(context, appWidgetManager, appWidgetIds) super.onUpdate(context, appWidgetManager, appWidgetIds)
appWidgetIds?.forEach { appWidgetId -> appWidgetIds?.forEach { appWidgetId ->
val savedTheme = sharedPref.getLong(getThemeWidgetKey(appWidgetId), 0)
val layoutId = if (savedTheme == 0L) R.layout.widget_luckynumber else R.layout.widget_luckynumber_dark
val luckyNumber = getLuckyNumber(sharedPref.getLong(getStudentWidgetKey(appWidgetId), 0), appWidgetId) val luckyNumber = getLuckyNumber(sharedPref.getLong(getStudentWidgetKey(appWidgetId), 0), appWidgetId)
val appIntent = PendingIntent.getActivity(context, MainView.Section.LUCKY_NUMBER.id, val appIntent = PendingIntent.getActivity(context, MainView.Section.LUCKY_NUMBER.id,
MainActivity.getStartIntent(context, MainView.Section.LUCKY_NUMBER, true), FLAG_UPDATE_CURRENT) MainActivity.getStartIntent(context, MainView.Section.LUCKY_NUMBER, true), FLAG_UPDATE_CURRENT)
val remoteView = RemoteViews(context.packageName, layoutId).apply { val remoteView = RemoteViews(context.packageName, getCorrectLayoutId(appWidgetId, context)).apply {
setTextViewText(R.id.luckyNumberWidgetNumber, luckyNumber?.luckyNumber?.toString() ?: "#") setTextViewText(R.id.luckyNumberWidgetNumber, luckyNumber?.luckyNumber?.toString() ?: "#")
setOnClickPendingIntent(R.id.luckyNumberWidgetContainer, appIntent) setOnClickPendingIntent(R.id.luckyNumberWidgetContainer, appIntent)
} }
@ -82,17 +81,19 @@ class LuckyNumberWidgetProvider : AppWidgetProvider() {
override fun onDeleted(context: Context?, appWidgetIds: IntArray?) { override fun onDeleted(context: Context?, appWidgetIds: IntArray?) {
super.onDeleted(context, appWidgetIds) super.onDeleted(context, appWidgetIds)
appWidgetIds?.forEach { appWidgetId -> appWidgetIds?.forEach { appWidgetId ->
if (appWidgetId != 0) sharedPref.delete(getStudentWidgetKey(appWidgetId)) with(sharedPref) {
delete(getHeightWidgetKey(appWidgetId))
delete(getStudentWidgetKey(appWidgetId))
delete(getThemeWidgetKey(appWidgetId))
delete(getWidthWidgetKey(appWidgetId))
}
} }
} }
override fun onAppWidgetOptionsChanged(context: Context, appWidgetManager: AppWidgetManager, appWidgetId: Int, newOptions: Bundle?) { override fun onAppWidgetOptionsChanged(context: Context, appWidgetManager: AppWidgetManager, appWidgetId: Int, newOptions: Bundle?) {
super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions) super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions)
val savedTheme = sharedPref.getLong(getThemeWidgetKey(appWidgetId), 0) val remoteView = RemoteViews(context.packageName, getCorrectLayoutId(appWidgetId, context))
val layoutId = if (savedTheme == 0L) R.layout.widget_luckynumber else R.layout.widget_luckynumber_dark
val remoteView = RemoteViews(context.packageName, layoutId)
setStyles(remoteView, appWidgetId, newOptions) setStyles(remoteView, appWidgetId, newOptions)
appWidgetManager.updateAppWidget(appWidgetId, remoteView) appWidgetManager.updateAppWidget(appWidgetId, remoteView)
@ -102,8 +103,10 @@ class LuckyNumberWidgetProvider : AppWidgetProvider() {
val width = options?.getInt(OPTION_APPWIDGET_MIN_WIDTH) ?: sharedPref.getLong(getWidthWidgetKey(appWidgetId), 74).toInt() val width = options?.getInt(OPTION_APPWIDGET_MIN_WIDTH) ?: sharedPref.getLong(getWidthWidgetKey(appWidgetId), 74).toInt()
val height = options?.getInt(OPTION_APPWIDGET_MAX_HEIGHT) ?: sharedPref.getLong(getHeightWidgetKey(appWidgetId), 74).toInt() val height = options?.getInt(OPTION_APPWIDGET_MAX_HEIGHT) ?: sharedPref.getLong(getHeightWidgetKey(appWidgetId), 74).toInt()
sharedPref.putLong(getWidthWidgetKey(appWidgetId), width.toLong()) with(sharedPref) {
sharedPref.putLong(getHeightWidgetKey(appWidgetId), height.toLong()) putLong(getWidthWidgetKey(appWidgetId), width.toLong())
putLong(getHeightWidgetKey(appWidgetId), height.toLong())
}
val rows = getCellsForSize(height) val rows = getCellsForSize(height)
val cols = getCellsForSize(width) val cols = getCellsForSize(width)
@ -162,4 +165,15 @@ class LuckyNumberWidgetProvider : AppWidgetProvider() {
null null
} }
} }
private fun getCorrectLayoutId(appWidgetId: Int, context: Context): Int {
val savedTheme = sharedPref.getLong(getThemeWidgetKey(appWidgetId), 0)
val isSystemDarkMode = context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES
return if (savedTheme == 1L || (savedTheme == 2L && isSystemDarkMode)) {
R.layout.widget_luckynumber_dark
} else {
R.layout.widget_luckynumber
}
}
} }

View File

@ -4,6 +4,7 @@ import android.appwidget.AppWidgetManager.ACTION_APPWIDGET_UPDATE
import android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_ID import android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_ID
import android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_IDS import android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_IDS
import android.content.Intent import android.content.Intent
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.widget.Toast import android.widget.Toast
import android.widget.Toast.LENGTH_LONG import android.widget.Toast.LENGTH_LONG
@ -16,6 +17,7 @@ import io.github.wulkanowy.ui.base.BaseActivity
import io.github.wulkanowy.ui.base.WidgetConfigureAdapter import io.github.wulkanowy.ui.base.WidgetConfigureAdapter
import io.github.wulkanowy.ui.modules.login.LoginActivity import io.github.wulkanowy.ui.modules.login.LoginActivity
import io.github.wulkanowy.ui.modules.timetablewidget.TimetableWidgetProvider.Companion.EXTRA_FROM_PROVIDER import io.github.wulkanowy.ui.modules.timetablewidget.TimetableWidgetProvider.Companion.EXTRA_FROM_PROVIDER
import io.github.wulkanowy.utils.AppInfo
import javax.inject.Inject import javax.inject.Inject
class TimetableWidgetConfigureActivity : class TimetableWidgetConfigureActivity :
@ -28,6 +30,9 @@ class TimetableWidgetConfigureActivity :
@Inject @Inject
override lateinit var presenter: TimetableWidgetConfigurePresenter override lateinit var presenter: TimetableWidgetConfigurePresenter
@Inject
lateinit var appInfo: AppInfo
private var dialog: AlertDialog? = null private var dialog: AlertDialog? = null
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -50,10 +55,11 @@ class TimetableWidgetConfigureActivity :
} }
override fun showThemeDialog() { override fun showThemeDialog() {
val items = arrayOf( var items = arrayOf(
getString(R.string.widget_timetable_theme_light), getString(R.string.widget_timetable_theme_light),
getString(R.string.widget_timetable_theme_dark) getString(R.string.widget_timetable_theme_dark)
) )
if (appInfo.systemVersion >= Build.VERSION_CODES.Q) items += getString(R.string.widget_timetable_theme_system)
dialog = AlertDialog.Builder(this, R.style.WulkanowyTheme_WidgetAccountSwitcher) dialog = AlertDialog.Builder(this, R.style.WulkanowyTheme_WidgetAccountSwitcher)
.setTitle(R.string.widget_timetable_theme_title) .setTitle(R.string.widget_timetable_theme_title)

View File

@ -18,9 +18,9 @@ import io.github.wulkanowy.data.repositories.preferences.PreferencesRepository
import io.github.wulkanowy.data.repositories.semester.SemesterRepository import io.github.wulkanowy.data.repositories.semester.SemesterRepository
import io.github.wulkanowy.data.repositories.student.StudentRepository import io.github.wulkanowy.data.repositories.student.StudentRepository
import io.github.wulkanowy.data.repositories.timetable.TimetableRepository import io.github.wulkanowy.data.repositories.timetable.TimetableRepository
import io.github.wulkanowy.ui.modules.timetablewidget.TimetableWidgetProvider.Companion.getCurrentThemeWidgetKey
import io.github.wulkanowy.ui.modules.timetablewidget.TimetableWidgetProvider.Companion.getDateWidgetKey import io.github.wulkanowy.ui.modules.timetablewidget.TimetableWidgetProvider.Companion.getDateWidgetKey
import io.github.wulkanowy.ui.modules.timetablewidget.TimetableWidgetProvider.Companion.getStudentWidgetKey import io.github.wulkanowy.ui.modules.timetablewidget.TimetableWidgetProvider.Companion.getStudentWidgetKey
import io.github.wulkanowy.ui.modules.timetablewidget.TimetableWidgetProvider.Companion.getThemeWidgetKey
import io.github.wulkanowy.utils.SchedulersProvider import io.github.wulkanowy.utils.SchedulersProvider
import io.github.wulkanowy.utils.getCompatColor import io.github.wulkanowy.utils.getCompatColor
import io.github.wulkanowy.utils.toFormattedString import io.github.wulkanowy.utils.toFormattedString
@ -41,9 +41,7 @@ class TimetableWidgetFactory(
private var lessons = emptyList<Timetable>() private var lessons = emptyList<Timetable>()
private var savedTheme: Long? = null private var savedCurrentTheme: Long? = null
private var layoutId: Int? = null
private var primaryColor: Int? = null private var primaryColor: Int? = null
@ -71,28 +69,32 @@ class TimetableWidgetFactory(
val studentId = sharedPref.getLong(getStudentWidgetKey(appWidgetId), 0) val studentId = sharedPref.getLong(getStudentWidgetKey(appWidgetId), 0)
updateTheme(appWidgetId) updateTheme(appWidgetId)
updateLessons(date, studentId) updateLessons(date, studentId)
} }
} }
private fun updateTheme(appWidgetId: Int) { private fun updateTheme(appWidgetId: Int) {
savedTheme = sharedPref.getLong(getThemeWidgetKey(appWidgetId), 0) savedCurrentTheme = sharedPref.getLong(getCurrentThemeWidgetKey(appWidgetId), 0)
layoutId = if (savedTheme == 0L) R.layout.item_widget_timetable else R.layout.item_widget_timetable_dark
primaryColor = if (savedTheme == 0L) R.color.colorPrimary else R.color.colorPrimaryLight if (savedCurrentTheme == 0L) {
textColor = if (savedTheme == 0L) android.R.color.black else android.R.color.white primaryColor = R.color.colorPrimary
timetableChangeColor = if (savedTheme == 0L) R.color.timetable_change_dark else R.color.timetable_change_light textColor = android.R.color.black
timetableChangeColor = R.color.timetable_change_dark
} else {
primaryColor = R.color.colorPrimaryLight
textColor = android.R.color.white
timetableChangeColor = R.color.timetable_change_light
}
} }
private fun getItemLayout(lesson: Timetable): Int { private fun getItemLayout(lesson: Timetable): Int {
return when { return when {
prefRepository.showWholeClassPlan == "small" && !lesson.isStudentPlan -> { prefRepository.showWholeClassPlan == "small" && !lesson.isStudentPlan -> {
if (savedTheme == 0L) R.layout.item_widget_timetable_small if (savedCurrentTheme == 0L) R.layout.item_widget_timetable_small
else R.layout.item_widget_timetable_small_dark else R.layout.item_widget_timetable_small_dark
} }
savedTheme == 0L -> R.layout.item_widget_timetable savedCurrentTheme == 1L -> R.layout.item_widget_timetable_dark
else -> R.layout.item_widget_timetable_dark else -> R.layout.item_widget_timetable
} }
} }

View File

@ -13,6 +13,7 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK import android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK
import android.content.Intent.FLAG_ACTIVITY_NEW_TASK import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
import android.content.res.Configuration
import android.widget.RemoteViews import android.widget.RemoteViews
import dagger.android.AndroidInjection import dagger.android.AndroidInjection
import io.github.wulkanowy.R import io.github.wulkanowy.R
@ -71,6 +72,8 @@ class TimetableWidgetProvider : BroadcastReceiver() {
fun getStudentWidgetKey(appWidgetId: Int) = "timetable_widget_student_$appWidgetId" fun getStudentWidgetKey(appWidgetId: Int) = "timetable_widget_student_$appWidgetId"
fun getThemeWidgetKey(appWidgetId: Int) = "timetable_widget_theme_$appWidgetId" fun getThemeWidgetKey(appWidgetId: Int) = "timetable_widget_theme_$appWidgetId"
fun getCurrentThemeWidgetKey(appWidgetId: Int) = "timetable_widget_current_theme_$appWidgetId"
} }
override fun onReceive(context: Context, intent: Intent) { override fun onReceive(context: Context, intent: Intent) {
@ -110,14 +113,23 @@ class TimetableWidgetProvider : BroadcastReceiver() {
with(sharedPref) { with(sharedPref) {
delete(getStudentWidgetKey(appWidgetId)) delete(getStudentWidgetKey(appWidgetId))
delete(getDateWidgetKey(appWidgetId)) delete(getDateWidgetKey(appWidgetId))
delete(getThemeWidgetKey(appWidgetId))
delete(getCurrentThemeWidgetKey(appWidgetId))
} }
} }
} }
@SuppressLint("DefaultLocale") @SuppressLint("DefaultLocale")
private fun updateWidget(context: Context, appWidgetId: Int, date: LocalDate, student: Student?) { private fun updateWidget(context: Context, appWidgetId: Int, date: LocalDate, student: Student?) {
val savedTheme = sharedPref.getLong(getThemeWidgetKey(appWidgetId), 0) val savedConfigureTheme = sharedPref.getLong(getThemeWidgetKey(appWidgetId), 0)
val layoutId = if (savedTheme == 0L) R.layout.widget_timetable else R.layout.widget_timetable_dark val isSystemDarkMode = context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES
var currentTheme = 0L
var layoutId = R.layout.widget_timetable
if (savedConfigureTheme == 1L || (savedConfigureTheme == 2L && isSystemDarkMode)) {
currentTheme = 1L
layoutId = R.layout.widget_timetable_dark
}
val nextNavIntent = createNavIntent(context, appWidgetId, appWidgetId, BUTTON_NEXT) val nextNavIntent = createNavIntent(context, appWidgetId, appWidgetId, BUTTON_NEXT)
val prevNavIntent = createNavIntent(context, -appWidgetId, appWidgetId, BUTTON_PREV) val prevNavIntent = createNavIntent(context, -appWidgetId, appWidgetId, BUTTON_PREV)
@ -150,7 +162,11 @@ class TimetableWidgetProvider : BroadcastReceiver() {
setPendingIntentTemplate(R.id.timetableWidgetList, appIntent) setPendingIntentTemplate(R.id.timetableWidgetList, appIntent)
} }
sharedPref.putLong(getDateWidgetKey(appWidgetId), date.toEpochDay(), true) with(sharedPref) {
putLong(getCurrentThemeWidgetKey(appWidgetId), currentTheme)
putLong(getDateWidgetKey(appWidgetId), date.toEpochDay(), true)
}
with(appWidgetManager) { with(appWidgetManager) {
notifyAppWidgetViewDataChanged(appWidgetId, R.id.timetableWidgetList) notifyAppWidgetViewDataChanged(appWidgetId, R.id.timetableWidgetList)
updateAppWidget(appWidgetId, remoteView) updateAppWidget(appWidgetId, remoteView)

View File

@ -10,9 +10,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="64dp" android:layout_height="64dp"
android:paddingStart="24dp" android:paddingStart="24dp"
android:paddingLeft="24dp"
android:paddingEnd="24dp" android:paddingEnd="24dp"
android:paddingRight="24dp"
android:text="@string/account_title" android:text="@string/account_title"
android:textSize="20sp" android:textSize="20sp"
android:textStyle="bold" android:textStyle="bold"

View File

@ -12,12 +12,12 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@android:color/white" android:background="@android:color/white"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:paddingLeft="6dp"
android:paddingStart="6dp" android:paddingStart="6dp"
android:paddingLeft="6dp"
android:paddingTop="6dp"
android:paddingEnd="12dp" android:paddingEnd="12dp"
android:paddingRight="12dp"> android:paddingRight="12dp"
android:paddingBottom="6dp">
<TextView <TextView
android:id="@+id/timetableWidgetItemNumber" android:id="@+id/timetableWidgetItemNumber"
@ -26,8 +26,8 @@
android:gravity="center" android:gravity="center"
android:includeFontPadding="false" android:includeFontPadding="false"
android:maxLength="2" android:maxLength="2"
android:textColor="?android:textColorPrimary"
android:textSize="28sp" android:textSize="28sp"
android:textColor="@android:color/black"
tools:text="5" /> tools:text="5" />
<TextView <TextView
@ -43,19 +43,19 @@
android:layout_toRightOf="@+id/timetableWidgetItemTimeStart" android:layout_toRightOf="@+id/timetableWidgetItemTimeStart"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:textSize="15sp"
android:textColor="@android:color/black" android:textColor="@android:color/black"
android:textSize="15sp"
tools:text="@tools:sample/lorem" /> tools:text="@tools:sample/lorem" />
<TextView <TextView
android:id="@+id/timetableWidgetItemTimeStart" android:id="@+id/timetableWidgetItemTimeStart"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignTop="@id/timetableWidgetItemNumber"
android:layout_marginStart="6dp"
android:layout_marginLeft="6dp"
android:layout_toEndOf="@id/timetableWidgetItemNumber" android:layout_toEndOf="@id/timetableWidgetItemNumber"
android:layout_toRightOf="@id/timetableWidgetItemNumber" android:layout_toRightOf="@id/timetableWidgetItemNumber"
android:layout_marginLeft="6dp"
android:layout_marginStart="6dp"
android:layout_alignTop="@id/timetableWidgetItemNumber"
android:maxLines="1" android:maxLines="1"
android:textColor="@android:color/black" android:textColor="@android:color/black"
android:textSize="13sp" android:textSize="13sp"
@ -116,15 +116,15 @@
android:layout_alignTop="@+id/timetableWidgetItemTimeFinish" android:layout_alignTop="@+id/timetableWidgetItemTimeFinish"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:layout_marginTop="0dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:layout_marginRight="16dp" android:layout_marginRight="16dp"
android:layout_marginTop="0dp"
android:layout_toEndOf="@+id/timetableWidgetItemTimeStart" android:layout_toEndOf="@+id/timetableWidgetItemTimeStart"
android:layout_toRightOf="@+id/timetableWidgetItemTimeStart" android:layout_toRightOf="@+id/timetableWidgetItemTimeStart"
android:textColor="@color/timetable_change_dark" android:textColor="@color/timetable_change_dark"
android:textSize="13sp" android:textSize="13sp"
tools:text="Lekcja odwołana: uczniowie zwolnieni do domu" tools:text="Lekcja odwołana: uczniowie zwolnieni do domu"
tools:visibility="gone"/> tools:visibility="gone" />
</RelativeLayout> </RelativeLayout>
<FrameLayout <FrameLayout

View File

@ -12,12 +12,10 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/colorWidgetBackground" android:background="@color/colorWidgetBackground"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:paddingLeft="6dp"
android:paddingStart="6dp" android:paddingStart="6dp"
android:paddingTop="6dp"
android:paddingEnd="12dp" android:paddingEnd="12dp"
android:paddingRight="12dp"> android:paddingBottom="6dp">
<TextView <TextView
android:id="@+id/timetableWidgetItemNumber" android:id="@+id/timetableWidgetItemNumber"
@ -26,8 +24,8 @@
android:gravity="center" android:gravity="center"
android:includeFontPadding="false" android:includeFontPadding="false"
android:maxLength="2" android:maxLength="2"
android:textSize="28sp"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="28sp"
tools:text="5" /> tools:text="5" />
<TextView <TextView
@ -36,26 +34,21 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignTop="@id/timetableWidgetItemNumber" android:layout_alignTop="@id/timetableWidgetItemNumber"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:layout_marginEnd="40dp" android:layout_marginEnd="40dp"
android:layout_marginRight="40dp"
android:layout_toEndOf="@+id/timetableWidgetItemTimeStart" android:layout_toEndOf="@+id/timetableWidgetItemTimeStart"
android:layout_toRightOf="@+id/timetableWidgetItemTimeStart"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:textSize="15sp"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="15sp"
tools:text="@tools:sample/lorem" /> tools:text="@tools:sample/lorem" />
<TextView <TextView
android:id="@+id/timetableWidgetItemTimeStart" android:id="@+id/timetableWidgetItemTimeStart"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_toEndOf="@id/timetableWidgetItemNumber"
android:layout_toRightOf="@id/timetableWidgetItemNumber"
android:layout_marginLeft="6dp"
android:layout_marginStart="6dp"
android:layout_alignTop="@id/timetableWidgetItemNumber" android:layout_alignTop="@id/timetableWidgetItemNumber"
android:layout_marginStart="6dp"
android:layout_toEndOf="@id/timetableWidgetItemNumber"
android:maxLines="1" android:maxLines="1"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="13sp" android:textSize="13sp"
@ -67,9 +60,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignBottom="@+id/timetableWidgetItemNumber" android:layout_alignBottom="@+id/timetableWidgetItemNumber"
android:layout_marginStart="6dp" android:layout_marginStart="6dp"
android:layout_marginLeft="6dp"
android:layout_toEndOf="@id/timetableWidgetItemNumber" android:layout_toEndOf="@id/timetableWidgetItemNumber"
android:layout_toRightOf="@id/timetableWidgetItemNumber"
android:maxLines="1" android:maxLines="1"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="13sp" android:textSize="13sp"
@ -81,9 +72,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignBottom="@+id/timetableWidgetItemNumber" android:layout_alignBottom="@+id/timetableWidgetItemNumber"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:layout_toEndOf="@+id/timetableWidgetItemTimeStart" android:layout_toEndOf="@+id/timetableWidgetItemTimeStart"
android:layout_toRightOf="@+id/timetableWidgetItemTimeStart"
android:maxLines="1" android:maxLines="1"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="13sp" android:textSize="13sp"
@ -96,11 +85,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignBottom="@+id/timetableWidgetItemNumber" android:layout_alignBottom="@+id/timetableWidgetItemNumber"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:layout_toEndOf="@id/timetableWidgetItemRoom" android:layout_toEndOf="@id/timetableWidgetItemRoom"
android:layout_toRightOf="@id/timetableWidgetItemRoom"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:textColor="@color/timetable_change_light" android:textColor="@color/timetable_change_light"
@ -115,16 +101,13 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignTop="@+id/timetableWidgetItemTimeFinish" android:layout_alignTop="@+id/timetableWidgetItemTimeFinish"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="0dp" android:layout_marginTop="0dp"
android:layout_marginEnd="16dp"
android:layout_toEndOf="@+id/timetableWidgetItemTimeStart" android:layout_toEndOf="@+id/timetableWidgetItemTimeStart"
android:layout_toRightOf="@+id/timetableWidgetItemTimeStart"
android:textColor="@color/timetable_change_light" android:textColor="@color/timetable_change_light"
android:textSize="13sp" android:textSize="13sp"
tools:text="Lekcja odwołana: uczniowie zwolnieni do domu" tools:text="Lekcja odwołana: uczniowie zwolnieni do domu"
tools:visibility="gone"/> tools:visibility="gone" />
</RelativeLayout> </RelativeLayout>
<FrameLayout <FrameLayout

View File

@ -29,7 +29,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="6dp" android:layout_marginStart="6dp"
android:layout_marginLeft="6dp"
android:maxLines="1" android:maxLines="1"
android:textColor="@android:color/black" android:textColor="@android:color/black"
android:textSize="13sp" android:textSize="13sp"
@ -46,7 +45,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:textColor="@android:color/black" android:textColor="@android:color/black"
@ -59,7 +57,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:maxLines="1" android:maxLines="1"
android:textColor="@android:color/black" android:textColor="@android:color/black"
android:textSize="15sp" android:textSize="15sp"
@ -70,12 +67,12 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:textColor="@android:color/black" android:textColor="@android:color/black"
android:textSize="15sp" android:textSize="15sp"
tools:text="Agata" /> tools:text="Agata" />
<TextView <TextView
android:id="@+id/timetableWidgetItemDescription" android:id="@+id/timetableWidgetItemDescription"
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@ -16,9 +16,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_toStartOf="@id/timetableWidgetAccount" android:layout_toStartOf="@id/timetableWidgetAccount"
android:layout_toLeftOf="@id/timetableWidgetAccount"
android:layout_toEndOf="@id/timetableWidgetNext" android:layout_toEndOf="@id/timetableWidgetNext"
android:layout_toRightOf="@id/timetableWidgetNext"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
@ -26,7 +24,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:maxLines="1" android:maxLines="1"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="15sp" android:textSize="15sp"
@ -37,7 +34,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:maxLines="1" android:maxLines="1"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="13sp" android:textSize="13sp"
@ -49,7 +45,6 @@
android:layout_width="50dp" android:layout_width="50dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:background="?android:selectableItemBackground" android:background="?android:selectableItemBackground"
android:contentDescription="@string/account_title" android:contentDescription="@string/account_title"
android:src="@drawable/ic_widget_account" /> android:src="@drawable/ic_widget_account" />
@ -60,7 +55,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:backgroundTint="@color/colorPrimaryDark" android:backgroundTint="@color/colorPrimaryDark"
android:contentDescription="@string/all_prev" android:contentDescription="@string/all_prev"
android:src="@drawable/ic_widget_chevron" android:src="@drawable/ic_widget_chevron"
@ -72,7 +66,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_toEndOf="@id/timetableWidgetPrev" android:layout_toEndOf="@id/timetableWidgetPrev"
android:layout_toRightOf="@id/timetableWidgetPrev"
android:backgroundTint="@color/colorPrimaryDark" android:backgroundTint="@color/colorPrimaryDark"
android:contentDescription="@string/all_next" android:contentDescription="@string/all_next"
android:rotation="180" android:rotation="180"

View File

@ -16,9 +16,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_toStartOf="@id/timetableWidgetAccount" android:layout_toStartOf="@id/timetableWidgetAccount"
android:layout_toLeftOf="@id/timetableWidgetAccount"
android:layout_toEndOf="@id/timetableWidgetNext" android:layout_toEndOf="@id/timetableWidgetNext"
android:layout_toRightOf="@id/timetableWidgetNext"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
@ -26,7 +24,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:maxLines="1" android:maxLines="1"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="15sp" android:textSize="15sp"
@ -37,7 +34,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:maxLines="1" android:maxLines="1"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="13sp" android:textSize="13sp"
@ -49,7 +45,6 @@
android:layout_width="50dp" android:layout_width="50dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:background="?android:selectableItemBackground" android:background="?android:selectableItemBackground"
android:contentDescription="@string/account_title" android:contentDescription="@string/account_title"
android:src="@drawable/ic_widget_account" /> android:src="@drawable/ic_widget_account" />
@ -60,7 +55,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:backgroundTint="@color/colorWidgetNavButton" android:backgroundTint="@color/colorWidgetNavButton"
android:contentDescription="@string/all_prev" android:contentDescription="@string/all_prev"
android:src="@drawable/ic_widget_chevron" android:src="@drawable/ic_widget_chevron"
@ -72,7 +66,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_toEndOf="@id/timetableWidgetPrev" android:layout_toEndOf="@id/timetableWidgetPrev"
android:layout_toRightOf="@id/timetableWidgetPrev"
android:backgroundTint="@color/colorWidgetNavButton" android:backgroundTint="@color/colorWidgetNavButton"
android:contentDescription="@string/all_next" android:contentDescription="@string/all_next"
android:rotation="180" android:rotation="180"

View File

@ -283,6 +283,7 @@
<string name="widget_timetable_theme_title">Thema wählen</string> <string name="widget_timetable_theme_title">Thema wählen</string>
<string name="widget_timetable_theme_light">Licht</string> <string name="widget_timetable_theme_light">Licht</string>
<string name="widget_timetable_theme_dark">Dunkel</string> <string name="widget_timetable_theme_dark">Dunkel</string>
<string name="widget_timetable_theme_system">Systemthema</string>
<!--Preferences--> <!--Preferences-->
<string name="pref_view_header">Erscheinungsbild</string> <string name="pref_view_header">Erscheinungsbild</string>
<string name="pref_view_list">Standard Ansicht</string> <string name="pref_view_list">Standard Ansicht</string>

View File

@ -303,6 +303,7 @@
<string name="widget_timetable_theme_title">Wybierz motyw</string> <string name="widget_timetable_theme_title">Wybierz motyw</string>
<string name="widget_timetable_theme_light">Jasny</string> <string name="widget_timetable_theme_light">Jasny</string>
<string name="widget_timetable_theme_dark">Ciemny</string> <string name="widget_timetable_theme_dark">Ciemny</string>
<string name="widget_timetable_theme_system">Motyw systemu</string>
<!--Preferences--> <!--Preferences-->
<string name="pref_view_header">Wygląd</string> <string name="pref_view_header">Wygląd</string>
<string name="pref_view_list">Domyślny widok</string> <string name="pref_view_list">Domyślny widok</string>

View File

@ -303,6 +303,7 @@
<string name="widget_timetable_theme_title">Выбрать тему</string> <string name="widget_timetable_theme_title">Выбрать тему</string>
<string name="widget_timetable_theme_light">Светлая</string> <string name="widget_timetable_theme_light">Светлая</string>
<string name="widget_timetable_theme_dark">Тёмная</string> <string name="widget_timetable_theme_dark">Тёмная</string>
<string name="widget_timetable_theme_system">Системная тема</string>
<!--Preferences--> <!--Preferences-->
<string name="pref_view_header">Вид</string> <string name="pref_view_header">Вид</string>
<string name="pref_view_list">Окно по умолчанию</string> <string name="pref_view_list">Окно по умолчанию</string>

View File

@ -303,6 +303,7 @@
<string name="widget_timetable_theme_title">Увібрати тему</string> <string name="widget_timetable_theme_title">Увібрати тему</string>
<string name="widget_timetable_theme_light">Яскрава</string> <string name="widget_timetable_theme_light">Яскрава</string>
<string name="widget_timetable_theme_dark">Темна</string> <string name="widget_timetable_theme_dark">Темна</string>
<string name="widget_timetable_theme_system">Тема системи</string>
<!--Preferences--> <!--Preferences-->
<string name="pref_view_header">Вигляд</string> <string name="pref_view_header">Вигляд</string>
<string name="pref_view_list">Вікно за замовчуванням</string> <string name="pref_view_list">Вікно за замовчуванням</string>

View File

@ -36,7 +36,7 @@
<item>https://vulcan.net.pl/</item> <item>https://vulcan.net.pl/</item>
<item>https://vulcan.net.pl/</item> <item>https://vulcan.net.pl/</item>
<item>https://vulcan.net.pl/</item> <item>https://vulcan.net.pl/</item>
<item>http://fakelog.cf/?standard</item> <item>http://fakelog.tk/?standard</item>
</string-array> </string-array>
<string-array name="hosts_symbols"> <string-array name="hosts_symbols">
<item>Default</item> <item>Default</item>

View File

@ -336,6 +336,7 @@
<string name="widget_timetable_theme_title">Choose theme</string> <string name="widget_timetable_theme_title">Choose theme</string>
<string name="widget_timetable_theme_light">Light</string> <string name="widget_timetable_theme_light">Light</string>
<string name="widget_timetable_theme_dark">Dark</string> <string name="widget_timetable_theme_dark">Dark</string>
<string name="widget_timetable_theme_system">System Theme</string>
<!--Preferences--> <!--Preferences-->