forked from github/szkolny
Merge branch 'develop'
This commit is contained in:
commit
339bb9c8f6
16
.idea/compiler.xml
generated
Normal file
16
.idea/compiler.xml
generated
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<bytecodeTargetLevel target="1.7">
|
||||
<module name="annotation" target="1.7" />
|
||||
<module name="codegen" target="1.7" />
|
||||
<module name="Szkolny.eu.agendacalendarview" target="1.8" />
|
||||
<module name="Szkolny.eu.app" target="1.8" />
|
||||
<module name="Szkolny.eu.cafebar" target="1.8" />
|
||||
<module name="Szkolny.eu.material-about-library" target="1.8" />
|
||||
<module name="Szkolny.eu.mhttp" target="1.8" />
|
||||
<module name="Szkolny.eu.nachos" target="1.8" />
|
||||
<module name="Szkolny.eu.szkolny-font" target="1.8" />
|
||||
</bytecodeTargetLevel>
|
||||
</component>
|
||||
</project>
|
3
.idea/misc.xml
generated
3
.idea/misc.xml
generated
@ -11,7 +11,6 @@
|
||||
<item index="1" class="java.lang.String" itemvalue="org.greenrobot.eventbus.Subscribe" />
|
||||
</list>
|
||||
</component>
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="NullableNotNullManager">
|
||||
<option name="myDefaultNullable" value="org.jetbrains.annotations.Nullable" />
|
||||
<option name="myDefaultNotNull" value="androidx.annotation.RecentlyNonNull" />
|
||||
@ -51,7 +50,7 @@
|
||||
</value>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="false" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
@ -203,8 +203,8 @@ dependencies {
|
||||
|
||||
implementation 'com.google.android:flexbox:2.0.1'
|
||||
|
||||
implementation 'com.qifan.powerpermission:powerpermission:1.0.0'
|
||||
implementation 'com.qifan.powerpermission:powerpermission-coroutines:1.0.0'
|
||||
implementation 'com.qifan.powerpermission:powerpermission:1.3.0'
|
||||
implementation 'com.qifan.powerpermission:powerpermission-coroutines:1.3.0'
|
||||
|
||||
implementation 'com.github.kuba2k2.FSLogin:lib:master-SNAPSHOT'
|
||||
implementation 'pl.droidsonroids:jspoon:1.3.2'
|
||||
|
@ -1,9 +1,7 @@
|
||||
<h3>Wersja 4.2.1, 2020-05-21</h3>
|
||||
<h3>Wersja 4.3, 2020-08-26</h3>
|
||||
<ul>
|
||||
<li>Poprawiona błędna godzina synchronizacji danych (przesunięcie w przód o 1-2h).</li>
|
||||
<li>Vulcan: Naprawione logowanie.</li>
|
||||
<li>Mobidziennik: Poprawione pobieranie szczęśliwego numerka.</li>
|
||||
<li>Prymus: Naprawione logowane.</li>
|
||||
<li>Dodana opcja automatycznej archiwizacji profilu na nowy rok szkolny.</li>
|
||||
<li>Poprawione problemy z synchronizacją oraz mieszaniem się danych.</li>
|
||||
</ul>
|
||||
<br>
|
||||
<br>
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
/*secret password - removed for source code publication*/
|
||||
static toys AES_IV[16] = {
|
||||
0x43, 0xfc, 0x2d, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
|
||||
0x20, 0x98, 0x82, 0x66, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
|
||||
|
||||
unsigned char *agony(unsigned int laugh, unsigned char *box, unsigned char *heat);
|
||||
|
||||
|
@ -364,6 +364,9 @@ class App : MultiDexApplication(), Configuration.Provider, CoroutineScope {
|
||||
if (!success) {
|
||||
EventBus.getDefault().post(ProfileListEmptyEvent())
|
||||
}
|
||||
else {
|
||||
onSuccess(profile)
|
||||
}
|
||||
}
|
||||
}
|
||||
fun profileSave() = profileSave(profile)
|
||||
|
@ -42,6 +42,7 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
import androidx.viewpager.widget.ViewPager
|
||||
import com.google.android.gms.security.ProviderInstaller
|
||||
import com.google.android.material.button.MaterialButton
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.gson.JsonArray
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonObject
|
||||
@ -672,6 +673,16 @@ fun TextView.setText(@StringRes resid: Int, vararg formatArgs: Any) {
|
||||
text = context.getString(resid, *formatArgs)
|
||||
}
|
||||
|
||||
fun MaterialAlertDialogBuilder.setTitle(@StringRes resid: Int, vararg formatArgs: Any): MaterialAlertDialogBuilder {
|
||||
setTitle(context.getString(resid, *formatArgs))
|
||||
return this
|
||||
}
|
||||
|
||||
fun MaterialAlertDialogBuilder.setMessage(@StringRes resid: Int, vararg formatArgs: Any): MaterialAlertDialogBuilder {
|
||||
setMessage(context.getString(resid, *formatArgs))
|
||||
return this
|
||||
}
|
||||
|
||||
fun JsonObject(vararg properties: Pair<String, Any?>): JsonObject {
|
||||
return JsonObject().apply {
|
||||
for (property in properties) {
|
||||
|
@ -43,6 +43,7 @@ import pl.szczodrzynski.edziennik.data.api.events.*
|
||||
import pl.szczodrzynski.edziennik.data.api.models.ApiError
|
||||
import pl.szczodrzynski.edziennik.data.db.entity.LoginStore
|
||||
import pl.szczodrzynski.edziennik.data.db.entity.Metadata.*
|
||||
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
||||
import pl.szczodrzynski.edziennik.databinding.ActivitySzkolnyBinding
|
||||
import pl.szczodrzynski.edziennik.sync.AppManagerDetectedEvent
|
||||
import pl.szczodrzynski.edziennik.sync.SyncWorker
|
||||
@ -295,12 +296,21 @@ class MainActivity : AppCompatActivity(), CoroutineScope {
|
||||
mainSnackbar.setCoordinator(b.navView.coordinator, b.navView.bottomBar)
|
||||
errorSnackbar.setCoordinator(b.navView.coordinator, b.navView.bottomBar)
|
||||
|
||||
if (BuildConfig.VERSION_NAME.contains("nightly")) {
|
||||
when {
|
||||
BuildConfig.VERSION_NAME.contains("nightly") -> {
|
||||
b.nightlyText.isVisible = true
|
||||
b.nightlyText.text = "Nightly\n"+BuildConfig.VERSION_NAME.substringAfterLast(".")
|
||||
}
|
||||
else
|
||||
b.nightlyText.isVisible = false
|
||||
BuildConfig.VERSION_NAME.contains("daily") -> {
|
||||
b.nightlyText.isVisible = true
|
||||
b.nightlyText.text = "Daily\n"+BuildConfig.VERSION_NAME.substringAfterLast(".")
|
||||
}
|
||||
BuildConfig.DEBUG -> {
|
||||
b.nightlyText.isVisible = true
|
||||
b.nightlyText.text = "Debug\n"+BuildConfig.VERSION_NAME
|
||||
}
|
||||
else -> b.nightlyText.isVisible = false
|
||||
}
|
||||
|
||||
navLoading = true
|
||||
|
||||
@ -399,7 +409,20 @@ class MainActivity : AppCompatActivity(), CoroutineScope {
|
||||
}
|
||||
|
||||
app.db.profileDao().all.observe(this, Observer { profiles ->
|
||||
drawer.setProfileList(profiles.filter { it.id >= 0 }.toMutableList())
|
||||
val allArchived = profiles.all { it.archived }
|
||||
drawer.setProfileList(profiles.filter { it.id >= 0 && (!it.archived || allArchived) }.toMutableList())
|
||||
//prepend the archived profile if loaded
|
||||
if (app.profile.archived && !allArchived) {
|
||||
drawer.prependProfile(Profile(
|
||||
id = app.profile.id,
|
||||
loginStoreId = app.profile.loginStoreId,
|
||||
loginStoreType = app.profile.loginStoreType,
|
||||
name = app.profile.name,
|
||||
subname = "Archiwum - ${app.profile.subname}"
|
||||
).also {
|
||||
it.archived = true
|
||||
})
|
||||
}
|
||||
drawer.currentProfile = App.profileId
|
||||
})
|
||||
|
||||
@ -425,6 +448,23 @@ class MainActivity : AppCompatActivity(), CoroutineScope {
|
||||
SyncWorker.scheduleNext(app)
|
||||
UpdateWorker.scheduleNext(app)
|
||||
|
||||
// if loaded profile is archived, switch to the up-to-date version of it
|
||||
if (app.profile.archived) {
|
||||
launch {
|
||||
if (app.profile.archiveId != null) {
|
||||
val profile = withContext(Dispatchers.IO) {
|
||||
app.db.profileDao().getNotArchivedOf(app.profile.archiveId!!)
|
||||
}
|
||||
if (profile != null)
|
||||
loadProfile(profile)
|
||||
else
|
||||
loadProfile(0)
|
||||
} else {
|
||||
loadProfile(0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// APP BACKGROUND
|
||||
if (app.config.ui.appBackground != null) {
|
||||
try {
|
||||
@ -565,6 +605,41 @@ class MainActivity : AppCompatActivity(), CoroutineScope {
|
||||
__/ |
|
||||
|__*/
|
||||
fun syncCurrentFeature() {
|
||||
if (app.profile.archived) {
|
||||
MaterialAlertDialogBuilder(this)
|
||||
.setTitle(R.string.profile_archived_title)
|
||||
.setMessage(
|
||||
R.string.profile_archived_text,
|
||||
app.profile.studentSchoolYearStart,
|
||||
app.profile.studentSchoolYearStart + 1
|
||||
)
|
||||
.setPositiveButton(R.string.ok, null)
|
||||
.show()
|
||||
swipeRefreshLayout.isRefreshing = false
|
||||
return
|
||||
}
|
||||
if (app.profile.shouldArchive()) {
|
||||
MaterialAlertDialogBuilder(this)
|
||||
.setTitle(R.string.profile_archiving_title)
|
||||
.setMessage(
|
||||
R.string.profile_archiving_format,
|
||||
app.profile.dateYearEnd.formattedString
|
||||
)
|
||||
.setPositiveButton(R.string.ok, null)
|
||||
.show()
|
||||
}
|
||||
if (app.profile.isBeforeYear()) {
|
||||
MaterialAlertDialogBuilder(this)
|
||||
.setTitle(R.string.profile_year_not_started_title)
|
||||
.setMessage(
|
||||
R.string.profile_year_not_started_format,
|
||||
app.profile.dateSemester1Start.formattedString
|
||||
)
|
||||
.setPositiveButton(R.string.ok, null)
|
||||
.show()
|
||||
swipeRefreshLayout.isRefreshing = false
|
||||
return
|
||||
}
|
||||
swipeRefreshLayout.isRefreshing = true
|
||||
Toast.makeText(this, fragmentToSyncName(navTargetId), Toast.LENGTH_SHORT).show()
|
||||
val fragmentParam = when (navTargetId) {
|
||||
@ -885,23 +960,51 @@ class MainActivity : AppCompatActivity(), CoroutineScope {
|
||||
|
||||
fun loadProfile(id: Int) = loadProfile(id, navTargetId)
|
||||
fun loadProfile(id: Int, arguments: Bundle?) = loadProfile(id, navTargetId, arguments)
|
||||
fun loadProfile(id: Int, drawerSelection: Int, arguments: Bundle? = null) {
|
||||
fun loadProfile(profile: Profile) = loadProfile(
|
||||
profile,
|
||||
navTargetId,
|
||||
null,
|
||||
if (app.profile.archived) app.profile.id else null
|
||||
)
|
||||
private fun loadProfile(id: Int, drawerSelection: Int, arguments: Bundle? = null) {
|
||||
if (App.profileId == id) {
|
||||
drawer.currentProfile = app.profile.id
|
||||
loadTarget(drawerSelection, arguments)
|
||||
return
|
||||
}
|
||||
val previousArchivedId = if (app.profile.archived) app.profile.id else null
|
||||
app.profileLoad(id) {
|
||||
loadProfile(it, drawerSelection, arguments, previousArchivedId)
|
||||
}
|
||||
}
|
||||
private fun loadProfile(profile: Profile, drawerSelection: Int, arguments: Bundle?, previousArchivedId: Int?) {
|
||||
App.profile = profile
|
||||
MessagesFragment.pageSelection = -1
|
||||
|
||||
setDrawerItems()
|
||||
|
||||
if (previousArchivedId != null) {
|
||||
// prevents accidentally removing the first item if the archived profile is not shown
|
||||
drawer.removeProfileById(previousArchivedId)
|
||||
}
|
||||
if (profile.archived) {
|
||||
drawer.prependProfile(Profile(
|
||||
id = profile.id,
|
||||
loginStoreId = profile.loginStoreId,
|
||||
loginStoreType = profile.loginStoreType,
|
||||
name = profile.name,
|
||||
subname = "Archiwum - ${profile.subname}"
|
||||
).also {
|
||||
it.archived = true
|
||||
})
|
||||
}
|
||||
|
||||
// the drawer profile is updated automatically when the drawer item is clicked
|
||||
// update it manually when switching profiles from other source
|
||||
//if (drawer.currentProfile != app.profile.id)
|
||||
drawer.currentProfile = app.profileId
|
||||
loadTarget(drawerSelection, arguments)
|
||||
}
|
||||
}
|
||||
fun loadTarget(id: Int, arguments: Bundle? = null) {
|
||||
var loadId = id
|
||||
if (loadId == -1) {
|
||||
|
@ -25,6 +25,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Teacher
|
||||
import pl.szczodrzynski.edziennik.data.db.full.AnnouncementFull
|
||||
import pl.szczodrzynski.edziennik.data.db.full.EventFull
|
||||
import pl.szczodrzynski.edziennik.data.db.full.MessageFull
|
||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||
|
||||
open class EdziennikTask(override val profileId: Int, val request: Any) : IApiTask(profileId) {
|
||||
companion object {
|
||||
@ -71,10 +72,24 @@ open class EdziennikTask(override val profileId: Int, val request: Any) : IApiTa
|
||||
private var edziennikInterface: EdziennikInterface? = null
|
||||
|
||||
internal fun run(app: App, taskCallback: EdziennikCallback) {
|
||||
if (profile?.archived == true) {
|
||||
profile?.let { profile ->
|
||||
if (profile.archived) {
|
||||
d(TAG, "The profile $profileId is archived")
|
||||
taskCallback.onError(ApiError(TAG, ERROR_PROFILE_ARCHIVED))
|
||||
return
|
||||
}
|
||||
else if (profile.shouldArchive()) {
|
||||
d(TAG, "The profile $profileId's year ended on ${profile.dateYearEnd}, archiving")
|
||||
ProfileArchiver(app, profile)
|
||||
}
|
||||
if (profile.isBeforeYear()) {
|
||||
d(TAG, "The profile $profileId's school year has not started yet; aborting sync")
|
||||
cancel()
|
||||
taskCallback.onCompleted()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
edziennikInterface = when (loginStore.type) {
|
||||
LOGIN_TYPE_LIBRUS -> Librus(app, profile, loginStore, taskCallback)
|
||||
LOGIN_TYPE_MOBIDZIENNIK -> Mobidziennik(app, profile, loginStore, taskCallback)
|
||||
@ -108,6 +123,7 @@ open class EdziennikTask(override val profileId: Int, val request: Any) : IApiTa
|
||||
}
|
||||
|
||||
override fun cancel() {
|
||||
d(TAG, "Task ${toString()} cancelling...")
|
||||
edziennikInterface?.cancel()
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,97 @@
|
||||
/*
|
||||
* Copyright (c) Kuba Szczodrzyński 2020-8-25.
|
||||
*/
|
||||
|
||||
package pl.szczodrzynski.edziennik.data.api.edziennik
|
||||
|
||||
import android.content.Intent
|
||||
import pl.szczodrzynski.edziennik.App
|
||||
import pl.szczodrzynski.edziennik.Intent
|
||||
import pl.szczodrzynski.edziennik.data.api.*
|
||||
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||
|
||||
class ProfileArchiver(val app: App, val profile: Profile) {
|
||||
companion object {
|
||||
private const val TAG = "ProfileArchiver"
|
||||
}
|
||||
|
||||
init {
|
||||
if (profile.archiveId == null)
|
||||
profile.archiveId = profile.id
|
||||
d(TAG, "Processing ${profile.name}#${profile.id}, archiveId = ${profile.archiveId}")
|
||||
|
||||
profile.archived = true
|
||||
app.db.profileDao().add(profile)
|
||||
//app.db.metadataDao().setAllSeen(profile.id, true)
|
||||
app.db.notificationDao().clear(profile.id)
|
||||
app.db.endpointTimerDao().clear(profile.id)
|
||||
d(TAG, "Archived profile ${profile.id} saved")
|
||||
profile.archived = false
|
||||
|
||||
// guess the nearest school year
|
||||
val today = Date.getToday()
|
||||
profile.studentSchoolYearStart = when {
|
||||
today.month <= profile.dateYearEnd.month -> today.year - 1
|
||||
else -> today.year
|
||||
}
|
||||
|
||||
// set default semester dates
|
||||
profile.dateSemester1Start = Date(profile.studentSchoolYearStart, 9, 1)
|
||||
profile.dateSemester2Start = Date(profile.studentSchoolYearStart + 1, 2, 1)
|
||||
profile.dateYearEnd = Date(profile.studentSchoolYearStart + 1, 6, 30)
|
||||
|
||||
val oldId = profile.id
|
||||
val newId = (app.db.profileDao().lastId ?: profile.id) + 1
|
||||
profile.id = newId
|
||||
profile.subname = "Nowy rok szkolny - ${profile.studentSchoolYearStart}"
|
||||
profile.studentClassName = null
|
||||
|
||||
d(TAG, "New profile ID for ${profile.name}: ${profile.id}")
|
||||
|
||||
when (profile.loginStoreType) {
|
||||
LOGIN_TYPE_LIBRUS -> {
|
||||
profile.removeStudentData("isPremium")
|
||||
profile.removeStudentData("pushDeviceId")
|
||||
profile.removeStudentData("startPointsSemester1")
|
||||
profile.removeStudentData("startPointsSemester2")
|
||||
profile.removeStudentData("enablePointGrades")
|
||||
profile.removeStudentData("enableDescriptiveGrades")
|
||||
}
|
||||
LOGIN_TYPE_MOBIDZIENNIK -> {
|
||||
|
||||
}
|
||||
LOGIN_TYPE_VULCAN -> {
|
||||
// DataVulcan.isApiLoginValid() returns false so it will update the semester
|
||||
profile.removeStudentData("currentSemesterEndDate")
|
||||
profile.removeStudentData("studentSemesterId")
|
||||
profile.removeStudentData("studentSemesterNumber")
|
||||
profile.removeStudentData("semester1Id")
|
||||
profile.removeStudentData("semester2Id")
|
||||
profile.removeStudentData("studentClassId")
|
||||
}
|
||||
LOGIN_TYPE_IDZIENNIK -> {
|
||||
profile.removeStudentData("schoolYearId")
|
||||
}
|
||||
LOGIN_TYPE_EDUDZIENNIK -> {
|
||||
|
||||
}
|
||||
LOGIN_TYPE_PODLASIE -> {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
d(TAG, "Processed student data: ${profile.studentData}")
|
||||
|
||||
app.db.profileDao().add(profile)
|
||||
|
||||
if (app.profileId == oldId) {
|
||||
val intent = Intent(
|
||||
Intent.ACTION_MAIN,
|
||||
"profileId" to newId
|
||||
)
|
||||
app.sendBroadcast(intent)
|
||||
}
|
||||
}
|
||||
}
|
@ -110,7 +110,6 @@ class Edudziennik(val app: App, val profile: Profile?, val loginStore: LoginStor
|
||||
override fun cancel() {
|
||||
d(TAG, "Cancelled")
|
||||
data.cancel()
|
||||
callback.onCompleted()
|
||||
}
|
||||
|
||||
private fun wrapCallback(callback: EdziennikCallback): EdziennikCallback {
|
||||
|
@ -133,7 +133,6 @@ class Idziennik(val app: App, val profile: Profile?, val loginStore: LoginStore,
|
||||
override fun cancel() {
|
||||
d(TAG, "Cancelled")
|
||||
data.cancel()
|
||||
callback.onCompleted()
|
||||
}
|
||||
|
||||
private fun wrapCallback(callback: EdziennikCallback): EdziennikCallback {
|
||||
|
@ -70,6 +70,14 @@ class IdziennikLoginWeb(val data: DataIdziennik, val onSuccess: () -> Unit) {
|
||||
data.webSelectedRegister = registerId
|
||||
}
|
||||
|
||||
// for profiles created after archiving
|
||||
data.schoolYearId = Regexes.IDZIENNIK_LOGIN_FIRST_SCHOOL_YEAR.find(text)?.let {
|
||||
it[1].toIntOrNull()
|
||||
} ?: data.schoolYearId
|
||||
data.profile?.studentClassName = Regexes.IDZIENNIK_LOGIN_FIRST_STUDENT.findAll(text)
|
||||
.firstOrNull { it[1].toIntOrNull() == data.registerId }
|
||||
?.let { "${it[5]} ${it[6]}" } ?: data.profile?.studentClassName
|
||||
|
||||
data.profile?.let { profile ->
|
||||
Regexes.IDZIENNIK_WEB_LUCKY_NUMBER.find(text)?.also {
|
||||
val number = it[1].toIntOrNull() ?: return@also
|
||||
|
@ -157,7 +157,6 @@ class Librus(val app: App, val profile: Profile?, val loginStore: LoginStore, va
|
||||
override fun cancel() {
|
||||
d(TAG, "Cancelled")
|
||||
data.cancel()
|
||||
callback.onCompleted()
|
||||
}
|
||||
|
||||
private fun wrapCallback(callback: EdziennikCallback): EdziennikCallback {
|
||||
|
@ -36,11 +36,14 @@ class LibrusRecaptchaHelper(
|
||||
}
|
||||
|
||||
private var timeout: Job? = null
|
||||
private var timedOut = false
|
||||
|
||||
inner class WebViewClient : android.webkit.WebViewClient() {
|
||||
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
|
||||
timeout?.cancel()
|
||||
if (!timedOut) {
|
||||
onSuccess(url)
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
@ -50,6 +53,7 @@ class LibrusRecaptchaHelper(
|
||||
webView.loadDataWithBaseURL(url, html, "text/html", "UTF-8", null)
|
||||
}
|
||||
timeout = startCoroutineTimer(delayMillis = 10000L) {
|
||||
timedOut = true
|
||||
onTimeout()
|
||||
}
|
||||
}
|
||||
|
@ -130,7 +130,6 @@ class Mobidziennik(val app: App, val profile: Profile?, val loginStore: LoginSto
|
||||
override fun cancel() {
|
||||
d(TAG, "Cancelled")
|
||||
data.cancel()
|
||||
callback.onCompleted()
|
||||
}
|
||||
|
||||
private fun wrapCallback(callback: EdziennikCallback): EdziennikCallback {
|
||||
|
@ -134,7 +134,6 @@ class Podlasie(val app: App, val profile: Profile?, val loginStore: LoginStore,
|
||||
override fun cancel() {
|
||||
Utils.d(TAG, "Cancelled")
|
||||
data.cancel()
|
||||
callback.onCompleted()
|
||||
}
|
||||
|
||||
private fun wrapCallback(callback: EdziennikCallback): EdziennikCallback {
|
||||
|
@ -100,7 +100,6 @@ class Template(val app: App, val profile: Profile?, val loginStore: LoginStore,
|
||||
override fun cancel() {
|
||||
d(TAG, "Cancelled")
|
||||
data.cancel()
|
||||
callback.onCompleted()
|
||||
}
|
||||
|
||||
private fun wrapCallback(callback: EdziennikCallback): EdziennikCallback {
|
||||
|
@ -194,7 +194,6 @@ class Vulcan(val app: App, val profile: Profile?, val loginStore: LoginStore, va
|
||||
override fun cancel() {
|
||||
d(TAG, "Cancelled")
|
||||
data.cancel()
|
||||
callback.onCompleted()
|
||||
}
|
||||
|
||||
private fun wrapCallback(callback: EdziennikCallback): EdziennikCallback {
|
||||
|
@ -46,6 +46,6 @@ object Signing {
|
||||
|
||||
/*fun provideKey(param1: String, param2: Long): ByteArray {*/
|
||||
fun pleaseStopRightNow(param1: String, param2: Long): ByteArray {
|
||||
return "$param1.MTIzNDU2Nzg5MDtTu0zYCV===.$param2".sha256()
|
||||
return "$param1.MTIzNDU2Nzg5MDQC7Eh97U===.$param2".sha256()
|
||||
}
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ import pl.szczodrzynski.edziennik.data.db.migration.*
|
||||
LibrusLesson::class,
|
||||
TimetableManual::class,
|
||||
Metadata::class
|
||||
], version = 88)
|
||||
], version = 89)
|
||||
@TypeConverters(
|
||||
ConverterTime::class,
|
||||
ConverterDate::class,
|
||||
@ -173,7 +173,8 @@ abstract class AppDb : RoomDatabase() {
|
||||
Migration85(),
|
||||
Migration86(),
|
||||
Migration87(),
|
||||
Migration88()
|
||||
Migration88(),
|
||||
Migration89()
|
||||
).allowMainThreadQueries().build()
|
||||
}
|
||||
}
|
||||
|
@ -60,4 +60,10 @@ interface ProfileDao {
|
||||
|
||||
@Query("UPDATE profiles SET empty = 0")
|
||||
fun setAllNotEmpty()
|
||||
|
||||
@Query("SELECT * FROM profiles WHERE archiveId = :archiveId AND archived = 1")
|
||||
fun getArchivesOf(archiveId: Int): List<Profile>
|
||||
|
||||
@Query("SELECT * FROM profiles WHERE archiveId = :archiveId AND archived = 0 ORDER BY profileId DESC LIMIT 1")
|
||||
fun getNotArchivedOf(archiveId: Int): Profile?
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ import pl.szczodrzynski.navlib.getDrawableFromRes
|
||||
@Entity(tableName = "profiles", primaryKeys = ["profileId"])
|
||||
open class Profile(
|
||||
@ColumnInfo(name = "profileId")
|
||||
override val id: Int,
|
||||
override var id: Int, /* needs to be var for ProfileArchiver */
|
||||
val loginStoreId: Int,
|
||||
val loginStoreType: Int,
|
||||
|
||||
@ -64,6 +64,12 @@ open class Profile(
|
||||
var empty = true
|
||||
var archived = false
|
||||
|
||||
/**
|
||||
* A unique ID matching [archived] profiles with current ones
|
||||
* and vice-versa.
|
||||
*/
|
||||
var archiveId: Int? = null
|
||||
|
||||
var syncEnabled = true
|
||||
var enableSharedEvents = true
|
||||
var registration = REGISTRATION_UNSPECIFIED
|
||||
@ -85,6 +91,23 @@ open class Profile(
|
||||
@delegate:Ignore
|
||||
val currentSemester by lazy { dateToSemester(Date.getToday()) }
|
||||
|
||||
fun shouldArchive(): Boolean {
|
||||
// vulcan hotfix
|
||||
if (dateYearEnd.month > 6) {
|
||||
dateYearEnd.month = 6
|
||||
dateYearEnd.day = 30
|
||||
}
|
||||
// fix for when versions <4.3 synced 2020/2021 year dates to older profiles during 2020 Jun-Aug
|
||||
if (dateSemester1Start.year > studentSchoolYearStart) {
|
||||
val diff = dateSemester1Start.year - studentSchoolYearStart
|
||||
dateSemester1Start.year -= diff
|
||||
dateSemester2Start.year -= diff
|
||||
dateYearEnd.year -= diff
|
||||
}
|
||||
return Date.getToday() >= dateYearEnd && Date.getToday().year > studentSchoolYearStart
|
||||
}
|
||||
fun isBeforeYear() = Date.getToday() < dateSemester1Start
|
||||
|
||||
var disabledNotifications: List<Long>? = null
|
||||
|
||||
var lastReceiversSync: Long = 0
|
||||
@ -106,14 +129,18 @@ open class Profile(
|
||||
get() = accountName != null
|
||||
|
||||
override fun getImageDrawable(context: Context): Drawable {
|
||||
if (archived) {
|
||||
return context.getDrawableFromRes(pl.szczodrzynski.edziennik.R.drawable.profile_archived).also {
|
||||
it.colorFilter = PorterDuffColorFilter(colorFromName(name), PorterDuff.Mode.DST_OVER)
|
||||
}
|
||||
}
|
||||
|
||||
if (!image.isNullOrEmpty()) {
|
||||
try {
|
||||
if (image?.endsWith(".gif", true) == true) {
|
||||
return GifDrawable(image ?: "")
|
||||
}
|
||||
else {
|
||||
return RoundedBitmapDrawableFactory.create(context.resources, image ?: "")
|
||||
return if (image?.endsWith(".gif", true) == true) {
|
||||
GifDrawable(image ?: "")
|
||||
} else {
|
||||
RoundedBitmapDrawableFactory.create(context.resources, image ?: "")
|
||||
//return Drawable.createFromPath(image ?: "") ?: throw Exception()
|
||||
}
|
||||
}
|
||||
@ -125,9 +152,13 @@ open class Profile(
|
||||
return context.getDrawableFromRes(R.drawable.profile).also {
|
||||
it.colorFilter = PorterDuffColorFilter(colorFromName(name), PorterDuff.Mode.DST_OVER)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun getImageHolder(context: Context): ImageHolder {
|
||||
if (archived) {
|
||||
return ImageHolder(pl.szczodrzynski.edziennik.R.drawable.profile_archived, colorFromName(name))
|
||||
}
|
||||
|
||||
return if (!image.isNullOrEmpty()) {
|
||||
try {
|
||||
ProfileImageHolder(image ?: "")
|
||||
|
@ -0,0 +1,10 @@
|
||||
package pl.szczodrzynski.edziennik.data.db.migration
|
||||
|
||||
import androidx.room.migration.Migration
|
||||
import androidx.sqlite.db.SupportSQLiteDatabase
|
||||
|
||||
class Migration89 : Migration(88, 89) {
|
||||
override fun migrate(database: SupportSQLiteDatabase) {
|
||||
database.execSQL("ALTER TABLE profiles ADD COLUMN archiveId INTEGER DEFAULT NULL;")
|
||||
}
|
||||
}
|
@ -17,6 +17,7 @@ import pl.szczodrzynski.edziennik.*
|
||||
import pl.szczodrzynski.edziennik.data.db.entity.Event
|
||||
import pl.szczodrzynski.edziennik.databinding.LabFragmentBinding
|
||||
import pl.szczodrzynski.edziennik.ui.modules.base.lazypager.LazyFragment
|
||||
import pl.szczodrzynski.edziennik.utils.TextInputDropDown
|
||||
import pl.szczodrzynski.fslogin.decode
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
|
||||
@ -62,6 +63,21 @@ class LabPageFragment : LazyFragment(), CoroutineScope {
|
||||
app.db.eventDao().getRawNow("UPDATE events SET homeworkBody = NULL WHERE profileId = ${App.profileId}")
|
||||
}
|
||||
|
||||
b.unarchive.onClick {
|
||||
app.profile.archived = false
|
||||
app.profile.archiveId = null
|
||||
app.profileSave()
|
||||
}
|
||||
|
||||
val profiles = app.db.profileDao().allNow
|
||||
b.profile.clear()
|
||||
b.profile += profiles.map { TextInputDropDown.Item(it.id.toLong(), "${it.id} ${it.name} archived ${it.archived}", tag = it) }
|
||||
b.profile.select(app.profileId.toLong())
|
||||
b.profile.setOnChangeListener {
|
||||
activity.loadProfile(it.id.toInt())
|
||||
return@setOnChangeListener true
|
||||
}
|
||||
|
||||
val colorSecondary = android.R.attr.textColorSecondary.resolveAttr(activity)
|
||||
startCoroutineTimer(500L, 300L) {
|
||||
val text = app.cookieJar.sessionCookies
|
||||
|
@ -33,7 +33,7 @@ class CardItemTouchHelperCallback(private val cardAdapter: HomeCardAdapter, priv
|
||||
}
|
||||
|
||||
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
|
||||
removeCard(viewHolder.adapterPosition)
|
||||
removeCard(viewHolder.adapterPosition, cardAdapter)
|
||||
cardAdapter.items.removeAt(viewHolder.adapterPosition)
|
||||
cardAdapter.notifyItemRemoved(viewHolder.adapterPosition)
|
||||
}
|
||||
|
@ -28,10 +28,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.LoginStore
|
||||
import pl.szczodrzynski.edziennik.databinding.FragmentHomeBinding
|
||||
import pl.szczodrzynski.edziennik.onClick
|
||||
import pl.szczodrzynski.edziennik.ui.dialogs.home.StudentNumberDialog
|
||||
import pl.szczodrzynski.edziennik.ui.modules.home.cards.HomeEventsCard
|
||||
import pl.szczodrzynski.edziennik.ui.modules.home.cards.HomeGradesCard
|
||||
import pl.szczodrzynski.edziennik.ui.modules.home.cards.HomeLuckyNumberCard
|
||||
import pl.szczodrzynski.edziennik.ui.modules.home.cards.HomeTimetableCard
|
||||
import pl.szczodrzynski.edziennik.ui.modules.home.cards.*
|
||||
import pl.szczodrzynski.edziennik.utils.Themes
|
||||
import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem
|
||||
import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetSeparatorItem
|
||||
@ -44,8 +41,8 @@ class HomeFragment : Fragment(), CoroutineScope {
|
||||
fun swapCards(fromPosition: Int, toPosition: Int, cardAdapter: HomeCardAdapter): Boolean {
|
||||
val fromCard = cardAdapter.items[fromPosition]
|
||||
val toCard = cardAdapter.items[toPosition]
|
||||
if (fromCard.id == 100 || toCard.id == 100) {
|
||||
// debug card is not swappable
|
||||
if (fromCard.id >= 100 || toCard.id >= 100) {
|
||||
// debug & archive cards are not swappable
|
||||
return false
|
||||
}
|
||||
cardAdapter.items[fromPosition] = cardAdapter.items[toPosition]
|
||||
@ -60,10 +57,16 @@ class HomeFragment : Fragment(), CoroutineScope {
|
||||
return true
|
||||
}
|
||||
|
||||
fun removeCard(position: Int) {
|
||||
fun removeCard(position: Int, cardAdapter: HomeCardAdapter) {
|
||||
val homeCards = App.config.forProfile().ui.homeCards.toMutableList()
|
||||
if (position >= homeCards.size)
|
||||
return
|
||||
val card = cardAdapter.items[position]
|
||||
if (card.id >= 100) {
|
||||
// debug & archive cards are not removable
|
||||
cardAdapter.notifyDataSetChanged()
|
||||
return
|
||||
}
|
||||
homeCards.removeAt(position)
|
||||
App.config.forProfile().ui.homeCards = homeCards
|
||||
}
|
||||
@ -160,6 +163,8 @@ class HomeFragment : Fragment(), CoroutineScope {
|
||||
}
|
||||
//if (App.devMode)
|
||||
// items += HomeDebugCard(100, app, activity, this, app.profile)
|
||||
if (app.profile.archived)
|
||||
items.add(0, HomeArchiveCard(101, app, activity, this, app.profile))
|
||||
|
||||
val adapter = HomeCardAdapter(items)
|
||||
val itemTouchHelper = ItemTouchHelper(CardItemTouchHelperCallback(adapter, b.refreshLayout))
|
||||
|
@ -0,0 +1,79 @@
|
||||
/*
|
||||
* Copyright (c) Kuba Szczodrzyński 2020-8-25.
|
||||
*/
|
||||
|
||||
package pl.szczodrzynski.edziennik.ui.modules.home.cards
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import android.widget.FrameLayout
|
||||
import androidx.core.view.plusAssign
|
||||
import androidx.core.view.setMargins
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import kotlinx.coroutines.*
|
||||
import pl.szczodrzynski.edziennik.*
|
||||
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
||||
import pl.szczodrzynski.edziennik.databinding.CardHomeArchiveBinding
|
||||
import pl.szczodrzynski.edziennik.ui.modules.home.HomeCard
|
||||
import pl.szczodrzynski.edziennik.ui.modules.home.HomeCardAdapter
|
||||
import pl.szczodrzynski.edziennik.ui.modules.home.HomeFragment
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
|
||||
class HomeArchiveCard(
|
||||
override val id: Int,
|
||||
val app: App,
|
||||
val activity: MainActivity,
|
||||
val fragment: HomeFragment,
|
||||
val profile: Profile
|
||||
) : HomeCard, CoroutineScope {
|
||||
companion object {
|
||||
private const val TAG = "HomeArchiveCard"
|
||||
}
|
||||
|
||||
private var job: Job = Job()
|
||||
override val coroutineContext: CoroutineContext
|
||||
get() = job + Dispatchers.Main
|
||||
|
||||
override fun bind(position: Int, holder: HomeCardAdapter.ViewHolder) {
|
||||
holder.root.removeAllViews()
|
||||
val b = CardHomeArchiveBinding.inflate(LayoutInflater.from(holder.root.context))
|
||||
b.root.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT).apply {
|
||||
setMargins(8.dp)
|
||||
}
|
||||
holder.root += b.root
|
||||
|
||||
b.homeArchiveText.setText(
|
||||
R.string.home_archive_text,
|
||||
profile.studentSchoolYearStart,
|
||||
profile.studentSchoolYearStart + 1
|
||||
)
|
||||
|
||||
b.homeArchiveClose.onClick {
|
||||
launch {
|
||||
val profile = profile.archiveId?.let {
|
||||
withContext(Dispatchers.IO) {
|
||||
app.db.profileDao().getNotArchivedOf(it)
|
||||
}
|
||||
}
|
||||
if (profile == null) {
|
||||
MaterialAlertDialogBuilder(activity)
|
||||
.setTitle(R.string.home_archive_close_no_target_title)
|
||||
.setMessage(R.string.home_archive_close_no_target_text, this@HomeArchiveCard.profile.name)
|
||||
.setPositiveButton(R.string.ok) { _, _ ->
|
||||
activity.drawer.profileSelectionOpen()
|
||||
activity.drawer.open()
|
||||
}
|
||||
.show()
|
||||
return@launch
|
||||
}
|
||||
activity.loadProfile(profile)
|
||||
}
|
||||
}
|
||||
|
||||
holder.root.onClick {
|
||||
activity.loadTarget(MainActivity.DRAWER_ITEM_AGENDA)
|
||||
}
|
||||
}
|
||||
|
||||
override fun unbind(position: Int, holder: HomeCardAdapter.ViewHolder) = Unit
|
||||
}
|
19
app/src/main/res/drawable/ic_archive.xml
Normal file
19
app/src/main/res/drawable/ic_archive.xml
Normal file
@ -0,0 +1,19 @@
|
||||
<!--
|
||||
~ Copyright (c) Kuba Szczodrzyński 2020-8-25.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="128dp"
|
||||
android:height="128dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M54,19H10v33c0,2.209 1.791,4 4,4h36c2.209,0 4,-1.791 4,-4V19z"
|
||||
android:fillColor="#ffb86b"/>
|
||||
<path
|
||||
android:pathData="m54,22h-44c-1.657,0 -3,-1.343 -3,-3v-5c0,-1.657 1.343,-3 3,-3h44c1.657,0 3,1.343 3,3v5c0,1.657 -1.343,3 -3,3z"
|
||||
android:fillColor="#ffa54a"/>
|
||||
<path
|
||||
android:pathData="m37,32h-10c-1.65,0 -3,-1.35 -3,-3s1.35,-3 3,-3h10c1.65,0 3,1.35 3,3s-1.35,3 -3,3z"
|
||||
android:fillColor="#69707e"/>
|
||||
</vector>
|
6
app/src/main/res/drawable/profile_archived.xml
Normal file
6
app/src/main/res/drawable/profile_archived.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<vector android:height="136dp" android:viewportHeight="135.5"
|
||||
android:viewportWidth="135.5" android:width="136dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillAlpha="0" android:fillColor="#FF000000" android:pathData="m0,0h135.5v135.5h-135.5z"/>
|
||||
<path android:fillAlpha="0.6902" android:fillColor="#fff"
|
||||
android:pathData="m42.75,31.75a4,4 0,0 0,-3.453 1.984l-7,12a4,4 0,0 0,-0.547 2.016v48c0,4.372 3.628,8 8,8h56c4.372,0 8,-3.628 8,-8v-48a4,4 0,0 0,-0.547 -2.016l-7,-12a4,4 0,0 0,-3.453 -1.984zM45.047,39.75h45.406l4.664,8h-54.734zM39.75,55.75h56v40h-56zM55.75,63.75v8h24v-8z" android:strokeWidth="4"/>
|
||||
</vector>
|
@ -1,75 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_weight="1"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/card_grades_header_title"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
app:cardElevation="4dp"
|
||||
app:cardCornerRadius="5dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/cardGradesNoData"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_margin="8dp"
|
||||
android:text="@string/card_grades_no_data"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="italic"
|
||||
android:visibility="gone" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/cardGradesList"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:orientation="vertical"
|
||||
android:visibility="visible">
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="?android:textColorSecondary" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/cardGradesButton"
|
||||
style="@style/Widget.MaterialComponents.Button.TextButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?selectableItemBackground"
|
||||
android:gravity="center_vertical|start"
|
||||
android:minHeight="0dp"
|
||||
android:padding="@dimen/card_button_padding"
|
||||
android:text="@string/card_grades_button" />
|
||||
|
||||
</LinearLayout>
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
</LinearLayout>
|
56
app/src/main/res/layout/card_home_archive.xml
Normal file
56
app/src/main/res/layout/card_home_archive.xml
Normal file
@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (c) Kuba Szczodrzyński 2020-8-25.
|
||||
-->
|
||||
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
tools:layout_margin="8dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/home_archive_title"
|
||||
android:textAppearance="@style/NavView.TextView.Title" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/homeArchiveText"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_margin="16dp"
|
||||
android:fontFamily="sans-serif-light"
|
||||
android:gravity="center_horizontal"
|
||||
android:text="@string/home_archive_text"
|
||||
android:textSize="16sp"
|
||||
tools:text="Przeglądasz dane ucznia z roku szkolnego 2019/2020." />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/homeArchiveClose"
|
||||
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/home_archive_close" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="64dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
app:srcCompat="@drawable/ic_archive" />
|
||||
</LinearLayout>
|
||||
</layout>
|
@ -30,7 +30,7 @@
|
||||
style="@style/Widget.MaterialComponents.Button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Librus Captcha" />
|
||||
android:text="LIBRUS® Captcha" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/refreshWidget"
|
||||
|
@ -17,121 +17,130 @@
|
||||
android:id="@+id/noTimetableLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="64dp"
|
||||
app:srcCompat="@drawable/ic_sync"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="@style/NavView.TextView.Title"
|
||||
android:text="@string/home_timetable_no_timetable" />
|
||||
android:text="@string/home_timetable_no_timetable"
|
||||
android:textAppearance="@style/NavView.TextView.Title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/noTimetableText"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="16sp"
|
||||
android:text="@string/home_timetable_no_timetable_text"/>
|
||||
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_margin="16dp"
|
||||
android:fontFamily="sans-serif-light"
|
||||
android:gravity="center_horizontal"
|
||||
android:text="@string/home_timetable_no_timetable_text"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/noTimetableSync"
|
||||
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end"
|
||||
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||
android:text="@string/home_timetable_no_timetable_sync" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="64dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
app:srcCompat="@drawable/ic_sync" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/noLessonsLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
tools:layout_marginTop="150dp"
|
||||
tools:layout_marginTop="170dp"
|
||||
tools:visibility="visible">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="64dp"
|
||||
app:srcCompat="@drawable/ic_timetable"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="@style/NavView.TextView.Title"
|
||||
android:text="@string/home_timetable_no_lessons" />
|
||||
android:text="@string/home_timetable_no_lessons"
|
||||
android:textAppearance="@style/NavView.TextView.Title" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="16sp"
|
||||
android:text="@string/home_timetable_no_lessons_text"/>
|
||||
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_margin="16dp"
|
||||
android:fontFamily="sans-serif-light"
|
||||
android:gravity="center_horizontal"
|
||||
android:text="@string/home_timetable_no_lessons_text"
|
||||
android:textSize="16sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="64dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
app:srcCompat="@drawable/ic_timetable" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/notPublicLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
tools:layout_marginTop="220dp"
|
||||
tools:layout_marginTop="270dp"
|
||||
tools:visibility="visible">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="64dp"
|
||||
app:srcCompat="@drawable/ic_no_timetable"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="@style/NavView.TextView.Title"
|
||||
android:text="@string/home_timetable_not_public" />
|
||||
android:text="@string/home_timetable_not_public"
|
||||
android:textAppearance="@style/NavView.TextView.Title" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="16sp"
|
||||
android:text="@string/home_timetable_not_public_text"/>
|
||||
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_margin="16dp"
|
||||
android:fontFamily="sans-serif-light"
|
||||
android:gravity="center_horizontal"
|
||||
android:text="@string/home_timetable_not_public_text"
|
||||
android:textSize="16sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="64dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
app:srcCompat="@drawable/ic_no_timetable" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
@ -139,7 +148,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
tools:layout_marginTop="350dp">
|
||||
tools:layout_marginTop="410dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
@ -165,15 +174,14 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="@style/NavView.TextView.Helper"
|
||||
tools:text="7 lekcji - 8:10 do 14:45" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/settings"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:padding="10dp"
|
||||
android:background="?selectableItemBackgroundBorderless"
|
||||
android:padding="10dp"
|
||||
android:visibility="gone"
|
||||
tools:src="@sample/settings" />
|
||||
|
||||
@ -181,16 +189,16 @@
|
||||
android:id="@+id/bellSync"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:padding="10dp"
|
||||
android:background="?selectableItemBackgroundBorderless"
|
||||
android:padding="10dp"
|
||||
tools:src="@sample/settings" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/showCounter"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:padding="10dp"
|
||||
android:background="?selectableItemBackgroundBorderless"
|
||||
android:padding="10dp"
|
||||
tools:src="@sample/settings" />
|
||||
</LinearLayout>
|
||||
|
||||
@ -234,10 +242,9 @@
|
||||
android:layout_marginLeft="4dp"
|
||||
android:layout_marginRight="4dp"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
tools:max="2700"
|
||||
tools:progress="780" />
|
||||
|
||||
tools:progress="780"
|
||||
tools:visibility="visible" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
@ -247,7 +254,6 @@
|
||||
android:layout_gravity="center_vertical"
|
||||
android:gravity="center"
|
||||
tools:text="zostały\n2 minuty\n35 sekund" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
@ -263,8 +269,6 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="@style/NavView.TextView.Helper"
|
||||
tools:text="Póżniej:\n9:05 informatyka\n10:00 urządzenia techniki komputerowej\n11:00 projektowanie lokalnych sieci komputerowych\n11:55 zajęcia z wychowawcą\n13:00 język polski\n14:05 język niemiecki" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</FrameLayout>
|
||||
</layout>
|
||||
|
@ -1,85 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/cardLuckyNumber"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
app:cardElevation="4dp"
|
||||
app:cardCornerRadius="5dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?selectableItemBackground"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<com.mikepenz.iconics.view.IconicsTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:gravity="center"
|
||||
android:text="{cmd-emoticon-excited-outline}"
|
||||
android:textSize="26sp"
|
||||
app:fontFamily="sans-serif-condensed"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text=":-)" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/cardLuckyNumberTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:textSize="20sp"
|
||||
tools:text="%d to dzisiejszy Szczęśliwy numerek." />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/cardLuckyNumberText"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||
tools:text="Twój numerek to %d" />
|
||||
|
||||
<!--<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="?attr/secondaryTextColor" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/cardLuckyNumberButton"
|
||||
style="@style/Widget.AppCompat.Button.Borderless"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?selectableItemBackground"
|
||||
android:gravity="center_vertical|start"
|
||||
android:minWidth="0dp"
|
||||
android:minHeight="0dp"
|
||||
android:padding="@dimen/card_button_padding"
|
||||
android:text="@string/card_login_button" />-->
|
||||
|
||||
</LinearLayout>
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
</LinearLayout>
|
||||
</layout>
|
@ -1,214 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/cardTimetableTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_weight="1"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/card_timetable_header_title"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/cardTimetable"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
app:cardElevation="4dp"
|
||||
app:cardCornerRadius="5dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/cardTimetableNoData"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:text="@string/card_timetable_no_data"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="italic"
|
||||
android:visibility="gone" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/cardTimetableContent"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="visible">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/cardTimetableHeader"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<com.mikepenz.iconics.view.IconicsImageView
|
||||
android:id="@+id/cardTimetableClockIcon"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:padding="8dp"
|
||||
app:iiv_color="?android:textColorSecondary"
|
||||
app:iiv_icon="cmd-clock"
|
||||
app:iiv_size="48dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:srcCompat="@tools:sample/avatars[0]" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/test"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toStartOf="@+id/cardTimetableBellSync"
|
||||
app:layout_constraintStart_toEndOf="@+id/cardTimetableClockIcon"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/cardTimetableType"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_weight="2"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="2"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||
tools:text="Czas trwania lekcji:" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/cardTimetableSummary"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_weight="1"
|
||||
android:ellipsize="end"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:maxLines="2"
|
||||
|
||||
android:text="@string/loading"
|
||||
android:textAllCaps="false"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
|
||||
<com.mikepenz.iconics.view.IconicsImageView
|
||||
android:id="@+id/cardTimetableBellSync"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:padding="4dp"
|
||||
app:iiv_color="?android:textColorSecondary"
|
||||
app:iiv_icon="cmd-alarm-bell"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:srcCompat="@android:drawable/ic_partial_secure" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/cardTimetableTimeLeft"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/cardTimetableFullscreenCounter"
|
||||
app:layout_constraintStart_toEndOf="@+id/cardTimetableClockIcon"
|
||||
app:layout_constraintTop_toTopOf="@+id/cardTimetableFullscreenCounter"
|
||||
tools:text="Zostało 25 minut" />
|
||||
|
||||
<com.mikepenz.iconics.view.IconicsImageView
|
||||
android:id="@+id/cardTimetableFullscreenCounter"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:padding="8dp"
|
||||
app:iiv_color="?android:textColorSecondary"
|
||||
app:iiv_icon="cmd-fullscreen"
|
||||
app:layout_constraintStart_toEndOf="@+id/cardTimetableTimeLeft"
|
||||
app:layout_constraintTop_toBottomOf="@+id/test"
|
||||
tools:srcCompat="@android:drawable/ic_partial_secure" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/cardTimetableLessonOverview"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="3"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/cardTimetableHeader"
|
||||
tools:text="Następne lekcje:\n11:05 matematyka\n12:00 język polski" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/cardTimetableEventOverview"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="4"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/cardTimetableLessonOverview"
|
||||
tools:text="Wydarzenia:\n10:00 język niemiecki sprawdzianik hehehehe nie wiem co napisać\n12:55 chemia ciekawe czy zrobi te trzy kropki na końcu heh" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="?android:textColorSecondary" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/cardTimetableButton"
|
||||
style="@style/Widget.MaterialComponents.Button.TextButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?selectableItemBackground"
|
||||
android:gravity="center_vertical|start"
|
||||
android:minHeight="0dp"
|
||||
android:padding="@dimen/card_button_padding"
|
||||
android:text="@string/card_timetable_button" />
|
||||
|
||||
</LinearLayout>
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
</LinearLayout>
|
||||
</layout>
|
@ -61,6 +61,19 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="monospace"
|
||||
tools:text="Cookies:\n\nsynergia.librus.pl\n DZIENNIKSID=L01~1234567890abcdef"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/unarchive"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Unarchive this profile"
|
||||
android:textAllCaps="false" />
|
||||
|
||||
<pl.szczodrzynski.edziennik.utils.TextInputDropDown
|
||||
android:id="@+id/profile"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" />
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</layout>
|
||||
|
@ -1,11 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) Kuba Szczodrzyński 2020-4-9.
|
||||
-->
|
||||
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
@ -46,6 +46,15 @@
|
||||
tools:itemCount="5"
|
||||
tools:listitem="@layout/login_chooser_item" />
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.AppCompat.Small"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginVertical="8dp"
|
||||
android:text="@string/login_copyright_notice"
|
||||
android:textAlignment="center" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -64,7 +73,7 @@
|
||||
<Space
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"/>
|
||||
android:layout_weight="1" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/helpButton"
|
||||
|
@ -39,7 +39,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="@style/NavView.TextView.Medium"
|
||||
tools:text="Vulcan UONET+" />
|
||||
tools:text="VULCAN® UONET+" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/description"
|
||||
|
@ -55,7 +55,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="@style/NavView.TextView.Helper"
|
||||
tools:text="Musisz posiadać konto Librus Rodzina" />
|
||||
tools:text="Musisz posiadać konto LIBRUS® Rodzina" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</layout>
|
||||
|
@ -39,7 +39,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:textSize="24sp"
|
||||
tools:text="Zaloguj się - Vulcan UONET+" />
|
||||
tools:text="Zaloguj się - VULCAN® UONET+" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/subTitle"
|
||||
|
@ -310,15 +310,15 @@
|
||||
<string name="edziennik_progress_login_idziennik_api">bei iDziennik einloggen…</string>
|
||||
<string name="edziennik_progress_login_idziennik_web">bei iDziennik einloggen…</string>
|
||||
<string name="edziennik_progress_login_librus_api">Einloggen in die API…</string>
|
||||
<string name="edziennik_progress_login_librus_messages">Einloggen bei Librus Nachrichten…</string>
|
||||
<string name="edziennik_progress_login_librus_portal">Einloggen bei Librus Portal…</string>
|
||||
<string name="edziennik_progress_login_librus_synergia">Einloggen bei Librus Synergia…</string>
|
||||
<string name="edziennik_progress_login_librus_messages">Einloggen bei LIBRUS® nachrichten…</string>
|
||||
<string name="edziennik_progress_login_librus_portal">Einloggen bei LIBRUS® Rodzina…</string>
|
||||
<string name="edziennik_progress_login_librus_synergia">Einloggen bei LIBRUS® Synergia…</string>
|
||||
<string name="edziennik_progress_login_mobidziennik_api">Einloggen bei MobiDziennik…</string>
|
||||
<string name="edziennik_progress_login_mobidziennik_api2">Einloggen bei MobiDziennik…</string>
|
||||
<string name="edziennik_progress_login_mobidziennik_web">Einloggen bei MobiDziennik API…</string>
|
||||
<string name="edziennik_progress_login_template_api">Einloggen bei Template API…</string>
|
||||
<string name="edziennik_progress_login_template_web">Einloggen bei Template WEB…</string>
|
||||
<string name="edziennik_progress_login_vulcan_api">Einloggen bei Vulcan</string>
|
||||
<string name="edziennik_progress_login_vulcan_api">Einloggen bei VULCAN®</string>
|
||||
<string name="edziennik_szkolny_api_sync_title">Gemeinsame Ereignisse synchronisieren…</string>
|
||||
<string name="edziennik_szkolny_creating_notifications">Erstellen von Benachrichtigungen…</string>
|
||||
<string name="error">Fehler</string>
|
||||
@ -572,13 +572,13 @@
|
||||
<string name="login_iuczniowie_help_title">Hilfe - iDziennik Progman</string>
|
||||
<string name="login_iuczniowie_subtitle">Melden Sie sich mit den Daten an, die Sie von Ihrer Schule erhalten haben. Bei Problemen verwenden Sie die Schaltfläche unter dem Formular.</string>
|
||||
<string name="login_iuczniowie_title">Einloggen - iDziennik Progman</string>
|
||||
<string name="login_librus_captcha_title">Librus - Einloggen</string>
|
||||
<string name="login_librus_help_subtitle">Um die App verwenden zu können, müssen Sie über ein Librus-Konto verfügen. Sie können sie unter portal.librus.pl erstellen. Verwenden Sie die Daten, die Sie an den im Bild markierten Stellen eingeben.</string>
|
||||
<string name="login_librus_help_title">Hilfe - Librus</string>
|
||||
<string name="login_librus_jst_subtitle">Melden Sie sich mit dem Token und der PIN an, die Sie in der Rubrik "mobile apps" von Librus Synergia erhalten können</string>
|
||||
<string name="login_librus_jst_title">Einloggen - Librus JST</string>
|
||||
<string name="login_librus_subtitle">Melden Sie sich mit Ihren Librus-Kontodaten an (zuvor unter Ihrer E-Mail-Adresse erstellt). Melden Sie sich nicht mit den von Ihrer Schule erhaltenen Daten an. Bei Problemen verwenden Sie die Schaltfläche unter dem Formular.</string>
|
||||
<string name="login_librus_title">Einloggen - Librus</string>
|
||||
<string name="login_librus_captcha_title">LIBRUS® - Einloggen</string>
|
||||
<string name="login_librus_help_subtitle">Um die App verwenden zu können, müssen Sie über ein LIBRUS® Rodzina-Konto verfügen. Sie können sie unter portal.librus.pl erstellen. Verwenden Sie die Daten, die Sie an den im Bild markierten Stellen eingeben.</string>
|
||||
<string name="login_librus_help_title">Hilfe für LIBRUS® einloggen</string>
|
||||
<string name="login_librus_jst_subtitle">Melden Sie sich mit dem Token und der PIN an, die Sie in der Rubrik "mobile apps" von LIBRUS® Synergia erhalten können</string>
|
||||
<string name="login_librus_jst_title">Einloggen bei LIBRUS® JST</string>
|
||||
<string name="login_librus_subtitle">Melden Sie sich mit Ihren LIBRUS® Rodzina-Konto daten an (zuvor unter Ihrer E-Mail-Adresse erstellt). Melden Sie sich nicht mit den von Ihrer Schule erhaltenen Daten an. Bei Problemen verwenden Sie die Schaltfläche unter dem Formular.</string>
|
||||
<string name="login_librus_title">Einloggen bei LIBRUS® Synergia</string>
|
||||
<string name="login_migration_error_format">Ein Migrationsfehler ist aufgetreten. Er wurde bereits gemeldet, was bedeutet, dass ich versuchen werde, ihn zu beheben.\n\nSie können die App weiterhin verwenden. Bei Problemen versuchen Sie, das Profil zu entfernen und neu zu erstellen</string>
|
||||
<string name="login_migration_subtitle">Die App hat ein großes Update erhalten. Wenn bei der Operation Probleme auftreten, können Sie mich über die Hilfe und das Feedback im Menü kontaktieren.</string>
|
||||
<string name="login_migration_title">Szkolny.eu wurde aktualisiert</string>
|
||||
@ -604,12 +604,12 @@
|
||||
<string name="login_sync_subtitle_1_format">Profil synchronisieren</string>
|
||||
<string name="login_sync_title">Synchronisation…</string>
|
||||
<string name="login_vulcan_help_register">Geräteregistrierung:</string>
|
||||
<string name="login_vulcan_help_subtitle">Melden Sie sich bei der Desktop-Version von Vulcan E-Klassenbuch an und wählen Sie die Option \"Dostęp mobilny\". Klicken Sie \"Zarejestruj urządzenie mobilne\". Sie können die Daten eingeben oder den QR-Code scannen und nur die PIN eingeben</string>
|
||||
<string name="login_vulcan_help_title">Hilfe - Vulkan UONET+</string>
|
||||
<string name="login_vulcan_help_subtitle">Melden Sie sich bei der Desktop-Version von VULCAN® E-Klassenbuch an und wählen Sie die Option \"Dostęp mobilny\". Klicken Sie \"Zarejestruj urządzenie mobilne\". Sie können die Daten eingeben oder den QR-Code scannen und nur die PIN eingeben</string>
|
||||
<string name="login_vulcan_help_title">Hilfe - VULCAN® UONET+</string>
|
||||
<string name="login_vulcan_help_token">Erhaltene Daten:</string>
|
||||
<string name="login_vulcan_qr">QR-Code scannen</string>
|
||||
<string name="login_vulcan_subtitle">Wählen Sie \"Dostęp mobilny\" auf der E-Klassenbuch-Website, registrieren Sie ein neues Gerät und geben Sie die Daten ein. Bei Problemen verwenden Sie die Schaltfläche unter dem Formular.</string>
|
||||
<string name="login_vulcan_title">Einloggen - Vulkan UONET+</string>
|
||||
<string name="login_vulcan_title">Einloggen - VULCAN® UONET+</string>
|
||||
<string name="main_menu_add">Hinzufügen…</string>
|
||||
<string name="main_menu_agenda_view_type">Ansicht ändern</string>
|
||||
<string name="main_menu_block_timetable">Generieren Sie einen Blockzeitplan</string>
|
||||
@ -803,7 +803,7 @@
|
||||
<string name="notification_updates_summary">Szkolny.eu: Update</string>
|
||||
<string name="notification_updates_text">Klicken Sie zum Herunterladen der Version %s</string>
|
||||
<string name="notification_updates_title">Update verfügbar</string>
|
||||
<string name="notification_user_action_required_captcha_librus">Librus: erfordert eine Lösung für die Captcha-Aufgabe. Klicken Sie hier, um sich weiter im Tagebuch anzumelden.</string>
|
||||
<string name="notification_user_action_required_captcha_librus">LIBRUS® Rodzina einloggen: erfordert eine Lösung für die Captcha-Aufgabe. Klicken Sie hier, um sich weiter im Tagebuch anzumelden.</string>
|
||||
<string name="notification_user_action_required_text">Das Problem, das die Synchronisierung verhindert, muss vom Benutzer gelöst werden. Klicken Sie für weitere Informationen</string>
|
||||
<string name="notification_user_action_required_title">Erforderliche Aktion in der App </string>
|
||||
<string name="notifications_no_data">Keine Benachrichtigungen</string>
|
||||
@ -854,7 +854,7 @@
|
||||
<string name="settings_about_licenses_text">Open-Source-Lizenzen</string>
|
||||
<string name="settings_about_privacy_policy_text">Datenschutzrichtlinie</string>
|
||||
<string name="settings_about_register_title_text">E-Klassenbuch</string>
|
||||
<string name="settings_about_title_subtext">© Kuba Szczodrzyński &amp;&amp; Kacper Ziubryniewicz\nSeptember 2018 - April 2020</string>
|
||||
<string name="settings_about_title_subtext">© Kuba Szczodrzyński && Kacper Ziubryniewicz\nSeptember 2018 - August 2020</string>
|
||||
<string name="settings_about_update_subtext">Klicken Sie hier, um nach Aktualisierungen zu suchen</string>
|
||||
<string name="settings_about_update_text">Aktualisierung</string>
|
||||
<string name="settings_about_version_text">Version</string>
|
||||
@ -1049,8 +1049,8 @@
|
||||
<string name="sync_error_invalid_school_name">Ungültiger Schulname oder verbotene Zeichen</string>
|
||||
<string name="sync_error_invalid_server_address">Die Serveradresse ist ungültig. Stellen Sie sicher, dass es korrekt eingegeben wurde und keine Leerzeichen enthält.</string>
|
||||
<string name="sync_error_invalid_token">Ungültiges Token angegeben.</string>
|
||||
<string name="sync_error_librus_disconnected">Das LIBRUS-Konto hat die Verbindung zum Synergia-Konto verloren. Melden Sie sich bei portal.librus.pl oder der offiziellen Librus App an und befolgen Sie die Anweisungen zur Reparatur Ihres Kontos.</string>
|
||||
<string name="sync_error_librus_not_activated">Das LIBRUS-Konto wurde nicht aktiviert. Aktivieren Sie das Konto mit der E-Mail, die Sie erhalten haben.</string>
|
||||
<string name="sync_error_librus_disconnected">Das LIBRUS® Rodzina-Konto hat die Verbindung zum LIBRUS® Synergia-Konto verloren. Melden Sie sich bei portal.librus.pl oder der offiziellen "LIBRUS®" App an und befolgen Sie die Anweisungen zur Reparatur Ihres Kontos.</string>
|
||||
<string name="sync_error_librus_not_activated">Das LIBRUS® Rodzina-Konto wurde nicht aktiviert. Aktivieren Sie das Konto mit der E-Mail, die Sie erhalten haben.</string>
|
||||
<string name="sync_error_login_error">Anmeldefehler</string>
|
||||
<string name="sync_error_maintenance">Technische Pause\n\nVersuchen Sie es später erneut</string>
|
||||
<string name="sync_error_no_api_url">API-Adresse nicht gefunden. Versuchen Sie erneut, sich am Gerät anzumelden.</string>
|
||||
@ -1063,7 +1063,7 @@
|
||||
<string name="sync_error_register_student_not_associated_format">Student %s ist diesem Konto im Klassenbuch nicht zugeordnet (Login: %s).\n\nVersuchen Sie erneut, sich anzumelden, obwohl dies möglicherweise auf eine technische Unterbrechung im E-Klassenbuch hinweist.</string>
|
||||
<string name="sync_error_saving_data">Fehler beim Speichern der Daten. Melden Sie den Fehler.</string>
|
||||
<string name="sync_error_ssl">Fehler beim Herstellen einer sicheren Verbindung.</string>
|
||||
<string name="sync_error_synergia_not_activated">Das Synergia-Konto wurde nicht von einem Elternteil oder Erziehungsberechtigten aktiviert.\n\nLoggen Sie sich in portal.librus.pl ein und befolgen Sie die Anweisungen, um es zu aktivieren.</string>
|
||||
<string name="sync_error_synergia_not_activated">Das LIBRUS® Synergia-Konto wurde nicht von einem Elternteil oder Erziehungsberechtigten aktiviert.\n\nLoggen Sie sich in portal.librus.pl ein und befolgen Sie die Anweisungen, um es zu aktivieren.</string>
|
||||
<string name="sync_error_timeout">Auszeit</string>
|
||||
<string name="sync_error_unknown">Unbekannter Fehler</string>
|
||||
<string name="sync_feature_agenda">Stundenplan herunterladen</string>
|
||||
|
@ -310,15 +310,15 @@
|
||||
<string name="edziennik_progress_login_idziennik_api">Logging in to iDziennik…</string>
|
||||
<string name="edziennik_progress_login_idziennik_web">Logging in to iDziennik…</string>
|
||||
<string name="edziennik_progress_login_librus_api">Logging in to the API…</string>
|
||||
<string name="edziennik_progress_login_librus_messages">Logging in to Librus Messages…</string>
|
||||
<string name="edziennik_progress_login_librus_portal">Logging in to Librus Portal…</string>
|
||||
<string name="edziennik_progress_login_librus_synergia">Logging in to Librus Synergia…</string>
|
||||
<string name="edziennik_progress_login_librus_messages">Logging in to LIBRUS® messages…</string>
|
||||
<string name="edziennik_progress_login_librus_portal">Logging in to LIBRUS® Rodzina…</string>
|
||||
<string name="edziennik_progress_login_librus_synergia">Logging in to LIBRUS® Synergia…</string>
|
||||
<string name="edziennik_progress_login_mobidziennik_api">Logging in to MobiDziennik…</string>
|
||||
<string name="edziennik_progress_login_mobidziennik_api2">Logging in to MobiDziennik…</string>
|
||||
<string name="edziennik_progress_login_mobidziennik_web">Logging in to MobiDziennik…</string>
|
||||
<string name="edziennik_progress_login_template_api">Logging in to Template API…</string>
|
||||
<string name="edziennik_progress_login_template_web">Logging in to Template WEB…</string>
|
||||
<string name="edziennik_progress_login_vulcan_api">Logging in to Vulcan</string>
|
||||
<string name="edziennik_progress_login_vulcan_api">Logging in to VULCAN®</string>
|
||||
<string name="edziennik_szkolny_api_sync_title">Syncing shared events…</string>
|
||||
<string name="edziennik_szkolny_creating_notifications">Creating notifications…</string>
|
||||
<string name="error">Error</string>
|
||||
@ -572,13 +572,13 @@
|
||||
<string name="login_iuczniowie_help_title">Help - iDziennik Progman</string>
|
||||
<string name="login_iuczniowie_subtitle">Use the data which you got from your school. In case of any problems, use the button below the form.</string>
|
||||
<string name="login_iuczniowie_title">Log in - iDziennik Progman</string>
|
||||
<string name="login_librus_captcha_title">Librus - login</string>
|
||||
<string name="login_librus_help_subtitle">In order to use the app you need a Librus account. You can create it on portal.librus.pl. Use the data you normally enter in the fields marked on the image.</string>
|
||||
<string name="login_librus_help_title">Help - Librus</string>
|
||||
<string name="login_librus_jst_subtitle">Log in with the token and PIN, which you can get from the "mobile apps" section of Librus Synergia.</string>
|
||||
<string name="login_librus_jst_title">Log in - Librus JST</string>
|
||||
<string name="login_librus_subtitle">Log in using your Librus account data (created before on your e-mail address). You can\'t login using the data provided by your school. In case of any problems, use the button below the form.</string>
|
||||
<string name="login_librus_title">Log in - Librus</string>
|
||||
<string name="login_librus_captcha_title">LIBRUS® - login</string>
|
||||
<string name="login_librus_help_subtitle">In order to use the app you need a LIBRUS® Rodzina account. You can create it on portal.librus.pl. Use the data you normally enter in the fields marked on the image.</string>
|
||||
<string name="login_librus_help_title">Help for LIBRUS® login</string>
|
||||
<string name="login_librus_jst_subtitle">Log in with the token and PIN, which you can get from the "mobile apps" section of LIBRUS® Synergia.</string>
|
||||
<string name="login_librus_jst_title">Log in to LIBRUS® JST</string>
|
||||
<string name="login_librus_subtitle">Log in using your LIBRUS® Rodzina account data (created before on your e-mail address). You can\'t login using the data provided by your school. In case of any problems, use the button below the form.</string>
|
||||
<string name="login_librus_title">Log in to LIBRUS® Synergia</string>
|
||||
<string name="login_migration_error_format">A migration error has occurred. It\'s already reported, which means I\'ll try to fix it.\n\nYou can continue using the app. In case of any problems try to remove the profile and create it again.</string>
|
||||
<string name="login_migration_subtitle">The app got a huge update. If you encounter any problems, feel free to contact me using the Feedback option in the menu.</string>
|
||||
<string name="login_migration_title">Szkolny.eu has been updated</string>
|
||||
@ -606,12 +606,12 @@
|
||||
<string name="login_sync_subtitle_1_format">Syncing profile</string>
|
||||
<string name="login_sync_title">Syncing…</string>
|
||||
<string name="login_vulcan_help_register">Registering the device:</string>
|
||||
<string name="login_vulcan_help_subtitle">Login into desktop version of Vulcan e-register and select \"Dostęp mobilny\" option. Click \"Zarejestruj urządzenie mobilne\". You can type in the data or scan the QR code and type only the PIN.</string>
|
||||
<string name="login_vulcan_help_title">Help - Vulcan UONET+</string>
|
||||
<string name="login_vulcan_help_subtitle">Login into desktop version of VULCAN® e-register and select \"Dostęp mobilny\" option. Click \"Zarejestruj urządzenie mobilne\". You can type in the data or scan the QR code and type only the PIN.</string>
|
||||
<string name="login_vulcan_help_title">Help - VULCAN® UONET+</string>
|
||||
<string name="login_vulcan_help_token">Obtained data:</string>
|
||||
<string name="login_vulcan_qr">Scan QR code</string>
|
||||
<string name="login_vulcan_subtitle">Choose \"Dostęp mobilny\" on e-register website, register a new device and enter the data. In case of any problems, use the button below the form.</string>
|
||||
<string name="login_vulcan_title">Log in - Vulcan UONET+</string>
|
||||
<string name="login_vulcan_title">Log in - VULCAN® UONET+</string>
|
||||
<string name="main_menu_add">Add…</string>
|
||||
<string name="main_menu_agenda_view_type">Change view</string>
|
||||
<string name="main_menu_block_timetable">Generate a block timetable</string>
|
||||
@ -805,7 +805,7 @@
|
||||
<string name="notification_updates_summary">Szkolny.eu: update</string>
|
||||
<string name="notification_updates_text">Click to download version %s</string>
|
||||
<string name="notification_updates_title">Update available</string>
|
||||
<string name="notification_user_action_required_captcha_librus">Librus: Captcha verification required. Click to continue logging into the e-journal.</string>
|
||||
<string name="notification_user_action_required_captcha_librus">LIBRUS® Rodzina login: Captcha verification required. Click to continue logging into the e-journal.</string>
|
||||
<string name="notification_user_action_required_text">The problem that prevents synchronization must be solved by the user. Click for more information.</string>
|
||||
<string name="notification_user_action_required_title">Action required in the application</string>
|
||||
<string name="notifications_no_data">No notifications.</string>
|
||||
@ -856,7 +856,7 @@
|
||||
<string name="settings_about_licenses_text">Open-source licenses</string>
|
||||
<string name="settings_about_privacy_policy_text">Privacy policy</string>
|
||||
<string name="settings_about_register_title_text">E-register</string>
|
||||
<string name="settings_about_title_subtext">© Kuba Szczodrzyński && Kacper Ziubryniewicz\nSeptember 2018 - April 2020</string>
|
||||
<string name="settings_about_title_subtext">© Kuba Szczodrzyński && Kacper Ziubryniewicz\nSeptember 2018 - August 2020</string>
|
||||
<string name="settings_about_update_subtext">Click to check for updates</string>
|
||||
<string name="settings_about_update_text">Update</string>
|
||||
<string name="settings_about_version_text">Version</string>
|
||||
@ -1051,8 +1051,8 @@
|
||||
<string name="sync_error_invalid_school_name">Invalid school name or forbidden characters</string>
|
||||
<string name="sync_error_invalid_server_address">Server address is invalid. Make sure it\'s entered correctly and doesn\'t contain whitespaces.</string>
|
||||
<string name="sync_error_invalid_token">Invalid token specified.</string>
|
||||
<string name="sync_error_librus_disconnected">LIBRUS account has lost connection with the Synergia account. Login on portal.librus.pl or in the Librus mobile app and follow the instructions to fix the problem.</string>
|
||||
<string name="sync_error_librus_not_activated">LIBRUS account is not activated. Activate it using a link in the received e-mail.</string>
|
||||
<string name="sync_error_librus_disconnected">LIBRUS® Rodzina account has lost connection with the LIBRUS® Synergia account. Login on portal.librus.pl or in the "LIBRUS®" mobile app and follow the instructions to fix the problem.</string>
|
||||
<string name="sync_error_librus_not_activated">LIBRUS® account is not activated. Activate it using a link in the received e-mail.</string>
|
||||
<string name="sync_error_login_error">Login error</string>
|
||||
<string name="sync_error_maintenance">Maintenance</string>
|
||||
<string name="sync_error_no_api_url">API address not found. Try to login again.</string>
|
||||
@ -1065,7 +1065,7 @@
|
||||
<string name="sync_error_register_student_not_associated_format">Student %s is not assigned to this register (login: %s).\n\nTry to log in again although this may also indicate a maintenance time.</string>
|
||||
<string name="sync_error_saving_data">Error while saving data. Report the error.</string>
|
||||
<string name="sync_error_ssl">Failed to establish a secure connection.</string>
|
||||
<string name="sync_error_synergia_not_activated">The Synergia account hasn\'t been activated by a parent or legal guardian.\n\nLog into portal.librus.pl and follow the instructions in order to activate it.</string>
|
||||
<string name="sync_error_synergia_not_activated">The LIBRUS® Synergia account hasn\'t been activated by a parent or legal guardian.\n\nLog into portal.librus.pl and follow the instructions in order to activate it.</string>
|
||||
<string name="sync_error_timeout">Timeout</string>
|
||||
<string name="sync_error_unknown">Unknown error</string>
|
||||
<string name="sync_feature_agenda">Syncing agenda…</string>
|
||||
|
@ -222,7 +222,7 @@
|
||||
<string name="error_115_reason">Brak uczniów przypisanych do konta</string>
|
||||
|
||||
<string name="error_3000_reason">Wymagane rozwiązanie zadania Captcha</string>
|
||||
<string name="error_3001_reason">Librus: wymagane rozwiązanie zadania Captcha</string>
|
||||
<string name="error_3001_reason">LIBRUS®️: wymagane rozwiązanie zadania Captcha</string>
|
||||
|
||||
<string name="error_120_reason">CODE_INTERNAL_LIBRUS_ACCOUNT_410</string>
|
||||
<string name="error_121_reason">CODE_INTERNAL_LIBRUS_SYNERGIA_EXPIRED</string>
|
||||
@ -232,7 +232,7 @@
|
||||
<string name="error_127_reason">Wymagana akceptacja regulaminu</string>
|
||||
<string name="error_128_reason">Błąd zmiany hasła</string>
|
||||
<string name="error_129_reason">Wymagana zmiana hasła</string>
|
||||
<string name="error_130_reason">Librus API: nieprawidłowe dane logowania</string>
|
||||
<string name="error_130_reason">LIBRUS® API: nieprawidłowe dane logowania</string>
|
||||
<string name="error_131_reason">Inny błąd logowania do API</string>
|
||||
<string name="error_132_reason">Brak tokenu CSRF</string>
|
||||
<string name="error_133_reason">Konto LIBRUS nie zostało aktywowane</string>
|
||||
@ -256,12 +256,12 @@
|
||||
<string name="error_155_reason">Brak dostępu do Wiadomości</string>
|
||||
<string name="error_156_reason">Brak dostępu do Synergii</string>
|
||||
<string name="error_157_reason">Brak ID sesji Wiadomości</string>
|
||||
<string name="error_158_reason">Odmowa dostępu do Portalu Librus</string>
|
||||
<string name="error_159_reason">API Portalu Librus wyłączone</string>
|
||||
<string name="error_160_reason">Konto LIBRUS utraciło połączenie z kontem Synergia. Zaloguj się na stronie portal.librus.pl lub w oficjalnej aplikacji Librus i postępuj zgodnie z instrukcją, aby naprawić konto.</string>
|
||||
<string name="error_161_reason">Inny błąd Portalu Librus</string>
|
||||
<string name="error_162_reason">Nie znaleziono konta Synergia. Zaloguj się na stronie portal.librus.pl, a następnie powiąż swoje konto Synergia do konta Librus Portal.</string>
|
||||
<string name="error_163_reason">Inny błąd logowania do Portalu Librus</string>
|
||||
<string name="error_158_reason">Odmowa dostępu do Portalu LIBRUS®</string>
|
||||
<string name="error_159_reason">API Portalu LIBRUS® wyłączone</string>
|
||||
<string name="error_160_reason">Konto LIBRUS® utraciło połączenie z kontem Synergia. Zaloguj się na stronie portal.librus.pl lub w oficjalnej aplikacji LIBRUS® i postępuj zgodnie z instrukcją, aby naprawić konto.</string>
|
||||
<string name="error_161_reason">Inny błąd Portalu LIBRUS®</string>
|
||||
<string name="error_162_reason">Nie znaleziono konta Synergia. Zaloguj się na stronie portal.librus.pl, a następnie powiąż swoje konto Synergia do konta LIBRUS® Portal.</string>
|
||||
<string name="error_163_reason">Inny błąd logowania do Portalu LIBRUS®</string>
|
||||
<string name="error_164_reason">ERROR_LOGIN_LIBRUS_PORTAL_CODE_EXPIRED</string>
|
||||
<string name="error_165_reason">ERROR_LOGIN_LIBRUS_PORTAL_CODE_REVOKED</string>
|
||||
<string name="error_166_reason">ERROR_LOGIN_LIBRUS_PORTAL_NO_CLIENT_ID</string>
|
||||
@ -273,21 +273,21 @@
|
||||
<string name="error_172_reason">ERROR_LOGIN_LIBRUS_PORTAL_REFRESH_INVALID</string>
|
||||
<string name="error_173_reason">ERROR_LOGIN_LIBRUS_PORTAL_REFRESH_REVOKED</string>
|
||||
<string name="error_174_reason">ERROR_LIBRUS_SYNERGIA_OTHER</string>
|
||||
<string name="error_175_reason">Librus Synergia: przerwa techniczna</string>
|
||||
<string name="error_176_reason">Librus Wiadomości: przerwa techniczna</string>
|
||||
<string name="error_177_reason">Librus Wiadomości: serwer zwrócił błąd. Prześlij zgłoszenie błędu.</string>
|
||||
<string name="error_178_reason">Librus Wiadomości: serwer zwrócił nieznany błąd. Prześlij zgłoszenie błędu.</string>
|
||||
<string name="error_179_reason">Librus Wiadomości: nieprawidłowe dane logowania</string>
|
||||
<string name="error_180_reason">Librus Portal: nieprawidłowe dane logowania</string>
|
||||
<string name="error_181_reason">Librus API: przerwa techniczna</string>
|
||||
<string name="error_182_reason">Librus Portal: przerwa techniczna</string>
|
||||
<string name="error_175_reason">LIBRUS® Synergia: przerwa techniczna</string>
|
||||
<string name="error_176_reason">LIBRUS® Wiadomości: przerwa techniczna</string>
|
||||
<string name="error_177_reason">LIBRUS® Wiadomości: serwer zwrócił błąd. Prześlij zgłoszenie błędu.</string>
|
||||
<string name="error_178_reason">LIBRUS® Wiadomości: serwer zwrócił nieznany błąd. Prześlij zgłoszenie błędu.</string>
|
||||
<string name="error_179_reason">LIBRUS® Wiadomości: nieprawidłowe dane logowania</string>
|
||||
<string name="error_180_reason">LIBRUS® Portal: nieprawidłowe dane logowania</string>
|
||||
<string name="error_181_reason">LIBRUS® API: przerwa techniczna</string>
|
||||
<string name="error_182_reason">LIBRUS® Portal: przerwa techniczna</string>
|
||||
<string name="error_183_reason">Wystąpił problem z tablicą ogłoszeń</string>
|
||||
<string name="error_184_reason">Librus: Sesja logowania wygasła. Zaloguj się ponownie.</string>
|
||||
<string name="error_184_reason">LIBRUS®: Sesja logowania wygasła. Zaloguj się ponownie.</string>
|
||||
<string name="error_185_reason">Urządzenie jest już zarejestrowane</string>
|
||||
<string name="error_186_reason">Nie znaleziono wiadomości. Mogła zostać usunięta.</string>
|
||||
<string name="error_187_reason">Nieprawidłowe dane dostępu. Sprawdź poprawność wprowadzonych danych.</string>
|
||||
<string name="error_188_reason">Nie znaleziono załącznika. Mógł zostać usunięty.</string>
|
||||
<string name="error_189_reason">Logowanie Librus Wiadomości: ReCaptcha przekroczono czas oczekiwania.</string>
|
||||
<string name="error_189_reason">Logowanie LIBRUS® Wiadomości: ReCaptcha przekroczono czas oczekiwania.</string>
|
||||
|
||||
<string name="error_201_reason">Nieprawidłowy login lub hasło</string>
|
||||
<string name="error_202_reason">Podano stare hasło</string>
|
||||
@ -311,13 +311,13 @@
|
||||
<string name="error_311_reason">Nieprawidłowy PIN: pozostała 1 próba</string>
|
||||
<string name="error_312_reason">Nieprawidłowy PIN: pozostały 2 próby</string>
|
||||
<string name="error_321_reason">Token wygasły, wygeneruj ponownie</string>
|
||||
<string name="error_322_reason">Inny błąd logowania do Vulcana</string>
|
||||
<string name="error_322_reason">Inny błąd logowania do dziennika VULCAN®</string>
|
||||
<string name="error_330_reason">Dziennik przedszkolny - logowanie niemożliwe</string>
|
||||
<string name="error_331_reason">Brak uczniów przypisanych do konta, bądź ukończyli oni już szkołę</string>
|
||||
<string name="error_340_reason">Vulcan: przerwa techniczna</string>
|
||||
<string name="error_341_reason">Vulcan: błąd żądania, zgłoś błąd</string>
|
||||
<string name="error_342_reason">Vulcan: inny błąd, wyślij zgłoszenie</string>
|
||||
<string name="error_343_reason">Vulcan: nie znaleziono adresu załącznika</string>
|
||||
<string name="error_340_reason">VULCAN®: przerwa techniczna</string>
|
||||
<string name="error_341_reason">VULCAN®: błąd żądania, zgłoś błąd</string>
|
||||
<string name="error_342_reason">VULCAN®: inny błąd, wyślij zgłoszenie</string>
|
||||
<string name="error_343_reason">VULCAN®: nie znaleziono adresu załącznika</string>
|
||||
|
||||
<string name="error_401_reason">Nieprawidłowe dane logowania</string>
|
||||
<string name="error_402_reason">Nieprawidłowa nazwa szkoły</string>
|
||||
@ -360,14 +360,14 @@
|
||||
<string name="error_901_reason">EXCEPTION_LOGIN_LIBRUS_API_TOKEN</string>
|
||||
<string name="error_902_reason">EXCEPTION_LOGIN_LIBRUS_PORTAL_TOKEN</string>
|
||||
<string name="error_903_reason">EXCEPTION_LIBRUS_PORTAL_SYNERGIA_TOKEN</string>
|
||||
<string name="error_904_reason">Zgłoś błąd: wyjątek w API Librus</string>
|
||||
<string name="error_904_reason">Zgłoś błąd: wyjątek w API LIBRUS®</string>
|
||||
<string name="error_905_reason">EXCEPTION_LIBRUS_SYNERGIA_REQUEST</string>
|
||||
<string name="error_906_reason">EXCEPTION_MOBIDZIENNIK_WEB_REQUEST</string>
|
||||
<string name="error_907_reason">EXCEPTION_VULCAN_API_REQUEST</string>
|
||||
<string name="error_908_reason">EXCEPTION_MOBIDZIENNIK_WEB_FILE_REQUEST</string>
|
||||
<string name="error_909_reason">EXCEPTION_LIBRUS_MESSAGES_FILE_REQUEST</string>
|
||||
<string name="error_910_reason">EXCEPTION_NOTIFY</string>
|
||||
<string name="error_911_reason">Zgłoś błąd: pobieranie wiadomości Librus</string>
|
||||
<string name="error_911_reason">Zgłoś błąd: pobieranie wiadomości LIBRUS®</string>
|
||||
<string name="error_912_reason">EXCEPTION_IDZIENNIK_WEB_REQUEST</string>
|
||||
<string name="error_913_reason">EXCEPTION_IDZIENNIK_WEB_API_REQUEST</string>
|
||||
<string name="error_914_reason">EXCEPTION_IDZIENNIK_API_REQUEST</string>
|
||||
|
@ -343,15 +343,15 @@
|
||||
<string name="edziennik_progress_login_idziennik_api">Logowanie do iDziennika…</string>
|
||||
<string name="edziennik_progress_login_idziennik_web">Logowanie do iDziennika…</string>
|
||||
<string name="edziennik_progress_login_librus_api">Logowanie do API</string>
|
||||
<string name="edziennik_progress_login_librus_messages">Logowanie do wiadomości Librus</string>
|
||||
<string name="edziennik_progress_login_librus_portal">Logowanie do Portalu Librus</string>
|
||||
<string name="edziennik_progress_login_librus_synergia">Logowanie do Librus Synergia</string>
|
||||
<string name="edziennik_progress_login_librus_messages">Logowanie do wiadomości LIBRUS®</string>
|
||||
<string name="edziennik_progress_login_librus_portal">Logowanie do Portalu LIBRUS® Rodzina</string>
|
||||
<string name="edziennik_progress_login_librus_synergia">Logowanie do LIBRUS® Synergia</string>
|
||||
<string name="edziennik_progress_login_mobidziennik_api">Logowanie do API MobiDziennika…</string>
|
||||
<string name="edziennik_progress_login_mobidziennik_api2">Logowanie do API MobiDziennika…</string>
|
||||
<string name="edziennik_progress_login_mobidziennik_web">Logowanie do MobiDziennika…</string>
|
||||
<string name="edziennik_progress_login_template_api">Logowanie do Template API…</string>
|
||||
<string name="edziennik_progress_login_template_web">Logowanie do Template WEB…</string>
|
||||
<string name="edziennik_progress_login_vulcan_api">Logowanie do Vulcan API…</string>
|
||||
<string name="edziennik_progress_login_vulcan_api">Logowanie do VULCAN® API…</string>
|
||||
<string name="edziennik_szkolny_api_sync_title">Synchronizowanie udostępnionych wydarzeń…</string>
|
||||
<string name="edziennik_szkolny_creating_notifications">Tworzenie powiadomień…</string>
|
||||
<string name="ellipsis" translatable="false">…</string>
|
||||
@ -621,13 +621,13 @@
|
||||
<string name="login_iuczniowie_help_title">Pomoc - iDziennik Progman</string>
|
||||
<string name="login_iuczniowie_subtitle">Zaloguj się danymi, które otrzymałeś od swojej szkoły. W razie problemów skorzystaj z przycisku pod formularzem.</string>
|
||||
<string name="login_iuczniowie_title">Zaloguj się - iDziennik Progman</string>
|
||||
<string name="login_librus_captcha_title">Librus - logowanie</string>
|
||||
<string name="login_librus_help_subtitle">Aby korzystać z aplikacji musisz posiadać konto Librus. Możesz je założyć na stronie portal.librus.pl. Użyj danych, które wpisujesz w miejsca zaznaczone na obrazku.</string>
|
||||
<string name="login_librus_help_title">Pomoc - Librus</string>
|
||||
<string name="login_librus_jst_subtitle">Zaloguj się tokenem i kodem PIN, który można wygenerować po zalogowanu się do Synergii w zakładce Aplikacje mobilne.</string>
|
||||
<string name="login_librus_jst_title">Zaloguj się - Librus JST</string>
|
||||
<string name="login_librus_subtitle">Zaloguj się danymi swojego konta Librus (założonego wcześniej na swój adres e-mail). Nie należy logować się danymi otrzymanymi ze swojej szkoły. W razie problemów skorzystaj z przycisku pod formularzem.</string>
|
||||
<string name="login_librus_title">Zaloguj się - Librus</string>
|
||||
<string name="login_librus_captcha_title">LIBRUS® - logowanie</string>
|
||||
<string name="login_librus_help_subtitle">Aby korzystać z aplikacji musisz posiadać konto LIBRUS® Rodzina. Możesz je założyć na stronie portal.librus.pl. Użyj danych, które wpisujesz w miejsca zaznaczone na obrazku.</string>
|
||||
<string name="login_librus_help_title">Pomoc do logowania LIBRUS®</string>
|
||||
<string name="login_librus_jst_subtitle">Zaloguj się tokenem i kodem PIN, który można wygenerować po zalogowanu się do LIBRUS® Synergia w zakładce Aplikacje mobilne.</string>
|
||||
<string name="login_librus_jst_title">Zaloguj się do LIBRUS® JST</string>
|
||||
<string name="login_librus_subtitle">Zaloguj się danymi swojego konta LIBRUS® Rodzina (założonego wcześniej na swój adres e-mail). Nie należy logować się danymi otrzymanymi ze swojej szkoły. W razie problemów skorzystaj z przycisku pod formularzem.</string>
|
||||
<string name="login_librus_title">Zaloguj się do LIBRUS® Synergia</string>
|
||||
<string name="login_migration_error_format">Wystąpił błąd w migracji danych. Został on już zgłoszony, co oznacza, że postaram się go naprawić.\n\nMożesz zacząć korzystać z aplikacji, jednak w przypadku jakichś błędów spróbuj usunąć profil i zalogować się ponownie.</string>
|
||||
<string name="login_migration_subtitle">Aplikacja otrzymała dużą aktualizację. Jeżeli będą występować jakieś problemy w działaniu, możesz się ze mną skontaktować używając pozycji Pomoc i opinie w menu.</string>
|
||||
<string name="login_migration_title">Szkolny.eu został zaktualizowany</string>
|
||||
@ -655,12 +655,12 @@
|
||||
<string name="login_sync_subtitle_1_format">Synchronizuję profil</string>
|
||||
<string name="login_sync_title">Synchronizacja…</string>
|
||||
<string name="login_vulcan_help_register">Rejestracja urządzenia:</string>
|
||||
<string name="login_vulcan_help_subtitle">Zaloguj się w wersji komputerowej dziennika Vulcan, a następnie wybierz opcję Dostęp mobilny. Kliknij Zarejestruj urządzenie mobilne. Możesz wpisać otrzymane dane lub zeskanować kod QR i wpisać sam kod PIN.</string>
|
||||
<string name="login_vulcan_help_title">Pomoc - Vulcan UONET+</string>
|
||||
<string name="login_vulcan_help_subtitle">Zaloguj się w wersji komputerowej dziennika VULCAN®, a następnie wybierz opcję Dostęp mobilny. Kliknij Zarejestruj urządzenie mobilne. Możesz wpisać otrzymane dane lub zeskanować kod QR i wpisać sam kod PIN.</string>
|
||||
<string name="login_vulcan_help_title">Pomoc - VULCAN® UONET+</string>
|
||||
<string name="login_vulcan_help_token">Otrzymane dane:</string>
|
||||
<string name="login_vulcan_qr">Skanuj kod QR</string>
|
||||
<string name="login_vulcan_subtitle">Wybierz opcję Dostęp mobilny na stronie e-dziennika, zarejestruj nowe urządzenie i wpisz otrzymane dane. W razie problemów skorzystaj z przycisku pod formularzem.</string>
|
||||
<string name="login_vulcan_title">Zaloguj się - Vulcan UONET+</string>
|
||||
<string name="login_vulcan_title">Zaloguj się - VULCAN® UONET+</string>
|
||||
<string name="main_menu_add">Dodaj…</string>
|
||||
<string name="main_menu_agenda_view_type">Zmień widok</string>
|
||||
<string name="main_menu_block_timetable">Generuj blokowy plan lekcji</string>
|
||||
@ -861,7 +861,7 @@
|
||||
<string name="notification_updates_summary">Szkolny.eu: aktualizacja</string>
|
||||
<string name="notification_updates_text">Kliknij, aby pobrać wersję %s</string>
|
||||
<string name="notification_updates_title">Dostępna aktualizacja</string>
|
||||
<string name="notification_user_action_required_captcha_librus">Librus: wymagane rozwiązanie zadania Captcha. Kliknij, aby kontynuować logowanie do dziennika.</string>
|
||||
<string name="notification_user_action_required_captcha_librus">Logowanie do LIBRUS® Rodzina: wymagane rozwiązanie zadania Captcha. Kliknij, aby kontynuować logowanie do dziennika.</string>
|
||||
<string name="notification_user_action_required_text">Problem, który uniemożliwia synchronizację musi być rozwiązany przez użytkownika. Kliknij, aby uzyskać więcej informacji.</string>
|
||||
<string name="notification_user_action_required_title">Wymagane działanie w aplikacji</string>
|
||||
<string name="notifications_no_data">Brak powiadomień.</string>
|
||||
@ -919,7 +919,7 @@
|
||||
<string name="settings_about_licenses_text">Licencje open-source</string>
|
||||
<string name="settings_about_privacy_policy_text">Polityka prywatności</string>
|
||||
<string name="settings_about_register_title_text">E-dziennik</string>
|
||||
<string name="settings_about_title_subtext">© Kuba Szczodrzyński && Kacper Ziubryniewicz\nwrzesień 2018 - kwiecień 2020</string>
|
||||
<string name="settings_about_title_subtext">© Kuba Szczodrzyński && Kacper Ziubryniewicz\nwrzesień 2018 - sierpień 2020</string>
|
||||
<string name="settings_about_update_subtext">Kliknij, aby sprawdzić aktualizacje</string>
|
||||
<string name="settings_about_update_text">Aktualizacja</string>
|
||||
<string name="settings_about_version_text">Wersja</string>
|
||||
@ -1118,8 +1118,8 @@
|
||||
<string name="sync_error_invalid_school_name">Podano nieprawidłową nazwę szkoły lub zawiera niedozwolone znaki.</string>
|
||||
<string name="sync_error_invalid_server_address">Podany adres serwera jest nieprawidłowy. Upewnij się, że jest wpisany poprawnie oraz nie zawiera żadnych spacji.\n\nWpisywany adres nie powinien zawierać części http://…mobidziennik.pl.</string>
|
||||
<string name="sync_error_invalid_token">Podano nieprawidłowy token.</string>
|
||||
<string name="sync_error_librus_disconnected">Konto LIBRUS utraciło połączenie z kontem Synergia. Zaloguj się na stronie portal.librus.pl lub w oficjalnej aplikacji Librus i postępuj zgodnie z instrukcją, aby naprawić konto.</string>
|
||||
<string name="sync_error_librus_not_activated">Konto LIBRUS nie zostało aktywowane. Aktywuj konto korzystając z otrzymanego e-maila.</string>
|
||||
<string name="sync_error_librus_disconnected">Konto LIBRUS® Rodzina utraciło połączenie z kontem LIBRUS® Synergia. Zaloguj się na stronie portal.librus.pl lub w oficjalnej aplikacji "LIBRUS®" i postępuj zgodnie z instrukcją, aby naprawić konto.</string>
|
||||
<string name="sync_error_librus_not_activated">Konto LIBRUS® Rodzina nie zostało aktywowane. Aktywuj konto korzystając z otrzymanego e-maila.</string>
|
||||
<string name="sync_error_login_error">Bład logowania</string>
|
||||
<string name="sync_error_maintenance">Chwilowa przerwa techniczna\n\nSpróbuj ponownie później</string>
|
||||
<string name="sync_error_no_api_url">Nie znaleziono adresu API. Spróbuj zalogować urządzenie ponownie.</string>
|
||||
@ -1132,7 +1132,7 @@
|
||||
<string name="sync_error_register_student_not_associated_format">Uczeń %s nie jest przypisany do tego konta w dzienniku (login: %s).\n\nSpróbuj zalogować się ponownie, aczkolwiek może to oznaczać przerwę techniczną e-dziennika.</string>
|
||||
<string name="sync_error_saving_data">Błąd podczas zapisywania danych. Zgłoś błąd deweloperowi.</string>
|
||||
<string name="sync_error_ssl">Nie można nawiązać bezpiecznego połączenia.</string>
|
||||
<string name="sync_error_synergia_not_activated">Konto Synergia nie zostało potwierdzone przez rodzica/opiekuna prawnego.\n\nZaloguj się na stronie portal.librus.pl i postępuj zgodnie z instrukcjami.</string>
|
||||
<string name="sync_error_synergia_not_activated">Konto LIBRUS® Synergia nie zostało potwierdzone przez rodzica/opiekuna prawnego.\n\nZaloguj się na stronie portal.librus.pl i postępuj zgodnie z instrukcjami.</string>
|
||||
<string name="sync_error_timeout">Przekroczono czas oczekiwania.\n\nNiewystarczająca jakość połączenia internetowego lub przerwa techniczna e-dziennika</string>
|
||||
<string name="sync_error_unknown">Nieznany błąd</string>
|
||||
<string name="sync_feature_agenda">Pobieram terminarz…</string>
|
||||
@ -1317,18 +1317,18 @@
|
||||
<string name="attendance_details_type_id">ID rodzaju podstawowego</string>
|
||||
<string name="login_chooser_title">Jaki masz e-dziennik w szkole?</string>
|
||||
<string name="login_chooser_subtitle">Wybierz z jakiego e-dziennika korzysta Twoja szkoła. Jeśli masz kilka kont w różnych dziennikach, będziesz mógł je dodać później.</string>
|
||||
<string name="login_register_librus" translatable="false">Librus/Synergia</string>
|
||||
<string name="login_register_librus" translatable="false">LIBRUS® Rodzina / Synergia</string>
|
||||
<string name="login_mode_librus_email">Zaloguj używając e-maila</string>
|
||||
<string name="login_mode_librus_email_hint">Musisz posiadać konto Librus Rodzina</string>
|
||||
<string name="login_mode_librus_email_hint">Musisz posiadać konto LIBRUS® Rodzina</string>
|
||||
<string name="login_mode_librus_synergia">Zaloguj używając loginu i hasła</string>
|
||||
<string name="login_mode_librus_synergia_hint">Użyj loginu w postaci \"9874123u\"</string>
|
||||
<string name="login_mode_librus_jst">Logowanie przez platformę VULCAN</string>
|
||||
<string name="login_mode_librus_jst">Logowanie przez platformę VULCAN®</string>
|
||||
<string name="login_mode_librus_jst_hint">Tylko Oświata w Radomiu oraz Innowacyjny Tarnobrzeg</string>
|
||||
<string name="login_type_vulcan" translatable="false">Vulcan UONET+</string>
|
||||
<string name="login_type_vulcan" translatable="false">VULCAN® UONET+</string>
|
||||
<string name="login_mode_vulcan_api">Użyj tokenu, symbolu i kodu PIN</string>
|
||||
<string name="login_mode_vulcan_api_hint">Zarejestruj urządzenie na stronie dziennika Vulcan</string>
|
||||
<string name="login_mode_vulcan_api_hint">Zarejestruj urządzenie na stronie dziennika VULCAN®</string>
|
||||
<string name="login_mode_vulcan_web">Użyj e-maila/nazwy użytkownika i hasła</string>
|
||||
<string name="login_mode_vulcan_web_hint">Zaloguj danymi, które podajesz na stronie e-dziennika VULCAN</string>
|
||||
<string name="login_mode_vulcan_web_hint">Zaloguj danymi, które podajesz na stronie e-dziennika VULCAN®</string>
|
||||
<string name="login_type_mobidziennik" translatable="false">MobiDziennik</string>
|
||||
<string name="login_mode_mobidziennik_web">Zaloguj nazwą serwera, loginem i hasłem</string>
|
||||
<string name="login_mode_mobidziennik_web_hint">Podaj dane, których używasz na stronie e-dziennika</string>
|
||||
@ -1337,13 +1337,13 @@
|
||||
<string name="login_platform_list_loading">Ładowanie listy e-dzienników…</string>
|
||||
<string name="login_platform_list_loading_timeout">Jeśli trwa to za długo, sprawdź swoje połączenie internetowe i zrestartuj aplikację.</string>
|
||||
<string name="login_form_title_format">Zaloguj się - %s</string>
|
||||
<string name="login_mode_librus_email_guide">Zaloguj się swoim kontem Librus, które działa w oficjalnej aplikacji Librus oraz na stronie portal.librus.pl, w niebieskim formularzu.\n\nJeśli nie masz konta Librus, możesz je założyć na stronie https://portal.librus.pl/rodzina/register.</string>
|
||||
<string name="login_mode_librus_synergia_guide">Podaj login otrzymany od szkoły, którym logujesz się do Synergii (fioletowy formularz).\n\nZalecane jest logowanie kontem Portal Librus (używając e-maila) w poprzednim kroku.</string>
|
||||
<string name="login_mode_librus_jst_guide">Zaloguj się do Librusa na komputerze, wybierz zakładkę Aplikacje Mobilne, następnie wpisz otrzymany Token i PIN poniżej.</string>
|
||||
<string name="login_mode_vulcan_api_guide">Zaloguj się do dziennika Vulcan na komputerze, wybierz zakładkę Dostęp Mobilny, kliknij przycisk Zarejestruj urządzenie mobilne. Podaj otrzymany Token, Symbol i PIN w polach poniżej.</string>
|
||||
<string name="login_mode_vulcan_web_guide">Podaj dane, którymi logujesz się na stronie internetowej dziennika VULCAN lub na miejskiej platformie.</string>
|
||||
<string name="login_mode_librus_email_guide">Zaloguj się swoim kontem LIBRUS® Rodzina, które działa w oficjalnej aplikacji "LIBRUS®" oraz na stronie portal.librus.pl, w niebieskim formularzu.\n\nJeśli nie masz konta LIBRUS® Rodzina, możesz je założyć na stronie https://portal.librus.pl/rodzina/register.</string>
|
||||
<string name="login_mode_librus_synergia_guide">Podaj login otrzymany od szkoły, którym logujesz się do LIBRUS® Synergia (fioletowy formularz).\n\nZalecane jest logowanie kontem LIBRUS® Rodzina (używając e-maila) w poprzednim kroku.</string>
|
||||
<string name="login_mode_librus_jst_guide">Zaloguj się do LIBRUS® Synergia na komputerze, wybierz zakładkę Aplikacje Mobilne, następnie wpisz otrzymany Token i PIN poniżej.</string>
|
||||
<string name="login_mode_vulcan_api_guide">Zaloguj się do dziennika VULCAN® na komputerze, wybierz zakładkę Dostęp Mobilny, kliknij przycisk Zarejestruj urządzenie mobilne. Podaj otrzymany Token, Symbol i PIN w polach poniżej.</string>
|
||||
<string name="login_mode_vulcan_web_guide">Podaj dane, którymi logujesz się na stronie internetowej dziennika VULCAN® lub na miejskiej platformie.</string>
|
||||
<string name="login_mode_mobidziennik_web_guide">Podaj dane, których używasz do logowania na stronie MobiDziennika. Jako adres serwera możesz wpisać adres strony internetowej, na której masz MobiDziennik.</string>
|
||||
<string name="edziennik_progress_login_vulcan_web_main">Logowanie do dziennika Vulcan...</string>
|
||||
<string name="edziennik_progress_login_vulcan_web_main">Logowanie do dziennika VULCAN®...</string>
|
||||
<string name="login_type_idziennik">iDziennik Progman / iUczniowie</string>
|
||||
<string name="login_mode_idziennik_web">Zaloguj używając nazwy użytkownika i hasła</string>
|
||||
<string name="login_mode_idziennik_web_hint">Podaj dane, których używasz na stronie internetowej e-dziennika</string>
|
||||
@ -1356,4 +1356,16 @@
|
||||
<string name="login_mode_podlasie_api">Zaloguj używając tokenu</string>
|
||||
<string name="login_mode_podlasie_api_guide">Podaj token aplikacji mobilnej.</string>
|
||||
<string name="edziennik_progress_login_podlasie_api">Logowanie do PPE…</string>
|
||||
<string name="profile_archived_title">Profil jest archiwalny</string>
|
||||
<string name="profile_archived_text">Przeglądasz dane ucznia z poprzedniego roku szkolnego (%d/%d). Synchronizacja oraz pobieranie wiadomości i niektórych zadań domowych zostały wyłączone.\n\nAby otworzyć profil ucznia z aktualnego roku, wybierz "Zamknij archiwum" na stronie głównej.</string>
|
||||
<string name="profile_year_not_started_title">Wakacje ;)</string>
|
||||
<string name="profile_year_not_started_format">Prawdopodobnie rok szkolny dla tego ucznia jeszcze się nie zaczął (zacznie się %s). Spróbuj wykonać synchronizację później.</string>
|
||||
<string name="profile_archiving_title">Koniec roku szkolnego</string>
|
||||
<string name="profile_archiving_format">Rok szkolny zakończył się %s. Dane ucznia z poprzedniego roku zostaną przeniesione do archiwum, aby można było je później przeglądać.</string>
|
||||
<string name="home_archive_title">Profil archiwalny</string>
|
||||
<string name="home_archive_text">Przeglądasz dane ucznia z roku szkolnego %d/%d.</string>
|
||||
<string name="home_archive_close">Zamknij archiwum</string>
|
||||
<string name="home_archive_close_no_target_title">Brak aktualnego profilu</string>
|
||||
<string name="home_archive_close_no_target_text">Uczeń %s nie posiada profilu na tym koncie w aktualnym roku szkolnym. Prawdopodobnie ten profil został usunięty lub uczeń nie uczęszcza już do tej klasy.\n\nAby przejść do aktualnego profilu, wybierz ucznia z listy lub zaloguj się na jego konto przyciskiem Dodaj ucznia.</string>
|
||||
<string name="login_copyright_notice">Znaki towarowe zamieszczone w tej aplikacji należą do ich prawowitych właścicieli i są używane wyłącznie w celach informacyjnych.</string>
|
||||
</resources>
|
||||
|
@ -5,8 +5,8 @@ buildscript {
|
||||
kotlin_version = '1.3.61'
|
||||
|
||||
release = [
|
||||
versionName: "4.2.1",
|
||||
versionCode: 4020199
|
||||
versionName: "4.3",
|
||||
versionCode: 4030099
|
||||
]
|
||||
|
||||
setup = [
|
||||
@ -17,7 +17,7 @@ buildscript {
|
||||
]
|
||||
|
||||
versions = [
|
||||
gradleAndroid : '4.0.0-beta05',
|
||||
gradleAndroid : '4.1.0-rc01',
|
||||
|
||||
kotlin : ext.kotlin_version,
|
||||
ktx : "1.2.0",
|
||||
|
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,6 @@
|
||||
#Fri Dec 06 18:23:03 CET 2019
|
||||
#Mon Aug 24 17:15:24 CEST 2020
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.2.1-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
|
||||
|
@ -1,7 +1,5 @@
|
||||
package im.wangchao.mhttp.internal;
|
||||
|
||||
import im.wangchao.mhttp.BuildConfig;
|
||||
|
||||
/**
|
||||
* <p>Description : Version.</p>
|
||||
* <p>Author : wangchao.</p>
|
||||
@ -14,7 +12,7 @@ public class Version {
|
||||
}
|
||||
|
||||
public static String userAgent() {
|
||||
return moduleName().concat(BuildConfig.VERSION_NAME);
|
||||
return moduleName().concat("1.10.1");
|
||||
}
|
||||
|
||||
public static String moduleName() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user