forked from github/szkolny
Compare commits
No commits in common. "v3.2.2" and "v3.1" have entirely different histories.
18 changed files with 305 additions and 382 deletions
7
.gitignore
vendored
7
.gitignore
vendored
|
@ -47,7 +47,6 @@ captures/
|
||||||
.idea/modules.xml
|
.idea/modules.xml
|
||||||
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
|
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
|
||||||
.idea/navEditor.xml
|
.idea/navEditor.xml
|
||||||
.idea/copyright/profiles_settings.xml
|
|
||||||
|
|
||||||
# Keystore files
|
# Keystore files
|
||||||
# Uncomment the following lines if you do not want to check your keystore files in.
|
# Uncomment the following lines if you do not want to check your keystore files in.
|
||||||
|
@ -81,9 +80,3 @@ lint/generated/
|
||||||
lint/outputs/
|
lint/outputs/
|
||||||
lint/tmp/
|
lint/tmp/
|
||||||
# lint/reports/
|
# lint/reports/
|
||||||
|
|
||||||
app/schemas/
|
|
||||||
|
|
||||||
signatures/
|
|
||||||
|
|
||||||
app/.cxx
|
|
|
@ -49,6 +49,6 @@ dependencies {
|
||||||
|
|
||||||
// other libraries
|
// other libraries
|
||||||
//implementation 'se.emilsjolander:stickylistheaders:2.7.0'
|
//implementation 'se.emilsjolander:stickylistheaders:2.7.0'
|
||||||
implementation 'com.github.edisonw:StickyListHeaders:master-SNAPSHOT@aar'
|
implementation 'com.github.edisonw:StickyListHeaders:master-SNAPSHOT'
|
||||||
implementation 'io.reactivex:rxjava:1.1.1'
|
implementation 'io.reactivex:rxjava:1.1.1'
|
||||||
}
|
}
|
||||||
|
|
|
@ -142,7 +142,7 @@ dependencies {
|
||||||
implementation "org.jsoup:jsoup:1.10.1"
|
implementation "org.jsoup:jsoup:1.10.1"
|
||||||
implementation "pl.droidsonroids.gif:android-gif-drawable:1.2.15"
|
implementation "pl.droidsonroids.gif:android-gif-drawable:1.2.15"
|
||||||
//implementation "se.emilsjolander:stickylistheaders:2.7.0"
|
//implementation "se.emilsjolander:stickylistheaders:2.7.0"
|
||||||
implementation 'com.github.edisonw:StickyListHeaders:master-SNAPSHOT@aar'
|
implementation 'com.github.edisonw:StickyListHeaders:master-SNAPSHOT'
|
||||||
implementation "uk.co.samuelwall:material-tap-target-prompt:2.14.0"
|
implementation "uk.co.samuelwall:material-tap-target-prompt:2.14.0"
|
||||||
|
|
||||||
implementation project(":agendacalendarview")
|
implementation project(":agendacalendarview")
|
||||||
|
@ -152,9 +152,6 @@ dependencies {
|
||||||
implementation project(":nachos")
|
implementation project(":nachos")
|
||||||
//implementation project(":Navigation")
|
//implementation project(":Navigation")
|
||||||
implementation project(":szkolny-font")
|
implementation project(":szkolny-font")
|
||||||
|
|
||||||
debugImplementation "com.github.ChuckerTeam.Chucker:library:3.0.1"
|
|
||||||
releaseImplementation "com.github.ChuckerTeam.Chucker:library-no-op:3.0.1"
|
|
||||||
}
|
}
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
|
|
@ -31,33 +31,6 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<h3>Wersja 3.2.2, 2020-02-24</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Naprawiłem synchronizację oraz logowanie w Librusie.</li>
|
|
||||||
<li><i>Dostępna jest wersja testowa aplikacji 4.0-beta. Można ją pobrać w Google Play, dołączając do programu wersji beta (na dole strony).</i></li>
|
|
||||||
<li>Nowa wersja testowa zawiera m.in. takie funkcje jak wysyłanie wiadomości, nowy plan lekcji czy przebudowany moduł synchronizacji i interfejs.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>Wersja 3.2.1, 2019-12-10</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Poprawa synchronizacji w Mobidzienniku.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>Wersja 3.2, 2019-10-31</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Możliwość zmiany języka aplikacji.</li>
|
|
||||||
<li>Vulcan: obsługa dziennika edu.lublin.eu.</li>
|
|
||||||
<li>Opcja oznaczenia wszystkich powiadomień jako nieprzeczytane (na stronie głównej).</li>
|
|
||||||
<li>Librus: pokazywanie sali podczas zastępstwa.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>Wersja 3.1.1, 2019-10-09</h3>
|
|
||||||
<ul>
|
|
||||||
<li>Librus: poprawiona synchronizacja kategorii i kolorów ocen.</li>
|
|
||||||
<li>Zmieniony kolor dolnego paska w ciemnym motywie.</li>
|
|
||||||
<li>Zaktualizowany licznik czasu lekcji.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>Wersja 3.1, 2019-09-29</h3>
|
<h3>Wersja 3.1, 2019-09-29</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Poprawiony interfejs zadań domowych.</li>
|
<li>Poprawiony interfejs zadań domowych.</li>
|
||||||
|
@ -116,4 +89,4 @@
|
||||||
</ul>
|
</ul>
|
||||||
</i>-->
|
</i>-->
|
||||||
|
|
||||||
</body>
|
</body>
|
|
@ -20,9 +20,6 @@ import android.util.Base64;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
import com.chuckerteam.chucker.api.ChuckerCollector;
|
|
||||||
import com.chuckerteam.chucker.api.ChuckerInterceptor;
|
|
||||||
import com.chuckerteam.chucker.api.RetentionManager;
|
|
||||||
import com.evernote.android.job.JobManager;
|
import com.evernote.android.job.JobManager;
|
||||||
import com.google.android.gms.security.ProviderInstaller;
|
import com.google.android.gms.security.ProviderInstaller;
|
||||||
import com.google.firebase.FirebaseApp;
|
import com.google.firebase.FirebaseApp;
|
||||||
|
@ -257,12 +254,6 @@ public class App extends androidx.multidex.MultiDexApplication {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (App.devMode || BuildConfig.DEBUG) {
|
|
||||||
ChuckerCollector chuckerCollector = new ChuckerCollector(this, true, RetentionManager.Period.ONE_HOUR);
|
|
||||||
ChuckerInterceptor chuckerInterceptor = new ChuckerInterceptor(this, chuckerCollector);
|
|
||||||
httpBuilder.addInterceptor(chuckerInterceptor);
|
|
||||||
}
|
|
||||||
|
|
||||||
http = httpBuilder.build();
|
http = httpBuilder.build();
|
||||||
httpLazy = http.newBuilder().followRedirects(false).followSslRedirects(false).build();
|
httpLazy = http.newBuilder().followRedirects(false).followSslRedirects(false).build();
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@ import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
||||||
import pl.szczodrzynski.navlib.R
|
import pl.szczodrzynski.navlib.R
|
||||||
import pl.szczodrzynski.navlib.crc16
|
import pl.szczodrzynski.navlib.crc16
|
||||||
import pl.szczodrzynski.navlib.getColorFromRes
|
import pl.szczodrzynski.navlib.getColorFromRes
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
fun List<Teacher>.byId(id: Long) = firstOrNull { it.id == id }
|
fun List<Teacher>.byId(id: Long) = firstOrNull { it.id == id }
|
||||||
fun List<Teacher>.byNameFirstLast(nameFirstLast: String) = firstOrNull { it.name + " " + it.surname == nameFirstLast }
|
fun List<Teacher>.byNameFirstLast(nameFirstLast: String) = firstOrNull { it.name + " " + it.surname == nameFirstLast }
|
||||||
|
@ -88,52 +87,3 @@ fun Activity.isStoragePermissionGranted(): Boolean {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Activity.setLanguage(language: String) {
|
|
||||||
val locale = Locale(language.toLowerCase(Locale.ROOT))
|
|
||||||
val configuration = resources.configuration
|
|
||||||
Locale.setDefault(locale)
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
|
||||||
configuration.setLocale(locale)
|
|
||||||
}
|
|
||||||
configuration.locale = locale
|
|
||||||
resources.updateConfiguration(configuration, resources.displayMetrics)
|
|
||||||
baseContext.resources.updateConfiguration(configuration, baseContext.resources.displayMetrics)
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Code copied from android-28/java.util.Locale.initDefault()
|
|
||||||
*/
|
|
||||||
fun initDefaultLocale() {
|
|
||||||
run {
|
|
||||||
// user.locale gets priority
|
|
||||||
/*val languageTag: String? = System.getProperty("user.locale", "")
|
|
||||||
if (languageTag.isNotNullNorEmpty()) {
|
|
||||||
return@run Locale(languageTag)
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// user.locale is empty
|
|
||||||
val language: String? = System.getProperty("user.language", "pl")
|
|
||||||
val region: String? = System.getProperty("user.region")
|
|
||||||
val country: String?
|
|
||||||
val variant: String?
|
|
||||||
// for compatibility, check for old user.region property
|
|
||||||
if (region != null) {
|
|
||||||
// region can be of form country, country_variant, or _variant
|
|
||||||
val i = region.indexOf('_')
|
|
||||||
if (i >= 0) {
|
|
||||||
country = region.substring(0, i)
|
|
||||||
variant = region.substring(i + 1)
|
|
||||||
} else {
|
|
||||||
country = region
|
|
||||||
variant = ""
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
country = System.getProperty("user.country", "")
|
|
||||||
variant = System.getProperty("user.variant", "")
|
|
||||||
}
|
|
||||||
return@run Locale(language)
|
|
||||||
}.let {
|
|
||||||
Locale.setDefault(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -14,65 +14,66 @@ import android.view.Gravity
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.lifecycle.Observer
|
||||||
|
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
||||||
|
import com.mikepenz.iconics.typeface.library.szkolny.font.SzkolnyFont
|
||||||
|
import com.mikepenz.materialdrawer.model.ProfileSettingDrawerItem
|
||||||
|
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.*
|
||||||
|
import pl.szczodrzynski.edziennik.utils.Themes
|
||||||
|
import pl.szczodrzynski.navlib.NavView
|
||||||
|
import pl.szczodrzynski.navlib.SystemBarsUtil
|
||||||
|
import pl.szczodrzynski.navlib.SystemBarsUtil.Companion.COLOR_HALF_TRANSPARENT
|
||||||
|
import pl.szczodrzynski.navlib.bottomsheet.NavBottomSheet
|
||||||
|
import pl.szczodrzynski.navlib.drawer.NavDrawer
|
||||||
|
import pl.szczodrzynski.navlib.drawer.items.DrawerPrimaryItem
|
||||||
|
import pl.szczodrzynski.navlib.drawer.items.withAppTitle
|
||||||
|
import pl.szczodrzynski.navlib.getColorFromAttr
|
||||||
import androidx.appcompat.widget.PopupMenu
|
import androidx.appcompat.widget.PopupMenu
|
||||||
import androidx.core.graphics.ColorUtils
|
import androidx.core.graphics.ColorUtils
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.navigation.NavOptions
|
import androidx.navigation.NavOptions
|
||||||
import com.danimahardhika.cafebar.CafeBar
|
import com.danimahardhika.cafebar.CafeBar
|
||||||
import com.mikepenz.iconics.IconicsColor
|
import com.mikepenz.iconics.IconicsColor
|
||||||
import com.mikepenz.iconics.IconicsDrawable
|
import com.mikepenz.iconics.IconicsDrawable
|
||||||
import com.mikepenz.iconics.IconicsSize
|
import com.mikepenz.iconics.IconicsSize
|
||||||
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
|
||||||
import com.mikepenz.iconics.typeface.library.szkolny.font.SzkolnyFont
|
|
||||||
import com.mikepenz.materialdrawer.model.DividerDrawerItem
|
import com.mikepenz.materialdrawer.model.DividerDrawerItem
|
||||||
import com.mikepenz.materialdrawer.model.ProfileDrawerItem
|
import com.mikepenz.materialdrawer.model.ProfileDrawerItem
|
||||||
import com.mikepenz.materialdrawer.model.ProfileSettingDrawerItem
|
|
||||||
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem
|
|
||||||
import com.mikepenz.materialdrawer.model.interfaces.IProfile
|
import com.mikepenz.materialdrawer.model.interfaces.IProfile
|
||||||
import pl.droidsonroids.gif.GifDrawable
|
import pl.droidsonroids.gif.GifDrawable
|
||||||
import pl.szczodrzynski.edziennik.App.APP_URL
|
import pl.szczodrzynski.edziennik.App.APP_URL
|
||||||
import pl.szczodrzynski.edziennik.data.api.AppError
|
import pl.szczodrzynski.edziennik.data.api.AppError
|
||||||
import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.*
|
import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.*
|
||||||
import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback
|
import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback
|
||||||
|
import pl.szczodrzynski.edziennik.databinding.ActivitySzkolnyBinding
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.*
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull
|
||||||
import pl.szczodrzynski.edziennik.databinding.ActivitySzkolnyBinding
|
|
||||||
import pl.szczodrzynski.edziennik.network.ServerRequest
|
|
||||||
import pl.szczodrzynski.edziennik.sync.SyncJob
|
|
||||||
import pl.szczodrzynski.edziennik.ui.dialogs.changelog.ChangelogDialog
|
import pl.szczodrzynski.edziennik.ui.dialogs.changelog.ChangelogDialog
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.agenda.AgendaFragment
|
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.announcements.AnnouncementsFragment
|
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.attendance.AttendanceFragment
|
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.base.DebugFragment
|
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.behaviour.BehaviourFragment
|
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.feedback.FeedbackFragment
|
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.feedback.HelpFragment
|
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.grades.GradesFragment
|
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.grades.editor.GradesEditorFragment
|
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.home.HomeFragment
|
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.homework.HomeworkFragment
|
import pl.szczodrzynski.edziennik.ui.modules.homework.HomeworkFragment
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.login.LoginActivity
|
import pl.szczodrzynski.edziennik.ui.modules.login.LoginActivity
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesDetailsFragment
|
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesDetailsFragment
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesFragment
|
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesFragment
|
||||||
|
import pl.szczodrzynski.edziennik.utils.models.NavTarget
|
||||||
|
import pl.szczodrzynski.edziennik.network.ServerRequest
|
||||||
|
import pl.szczodrzynski.edziennik.sync.SyncJob
|
||||||
|
import pl.szczodrzynski.edziennik.ui.modules.agenda.AgendaFragment
|
||||||
|
import pl.szczodrzynski.edziennik.ui.modules.announcements.AnnouncementsFragment
|
||||||
|
import pl.szczodrzynski.edziennik.ui.modules.attendance.AttendanceFragment
|
||||||
|
import pl.szczodrzynski.edziennik.ui.modules.base.DebugFragment
|
||||||
|
import pl.szczodrzynski.edziennik.ui.modules.feedback.FeedbackFragment
|
||||||
|
import pl.szczodrzynski.edziennik.ui.modules.feedback.HelpFragment
|
||||||
|
import pl.szczodrzynski.edziennik.ui.modules.grades.editor.GradesEditorFragment
|
||||||
|
import pl.szczodrzynski.edziennik.ui.modules.grades.GradesFragment
|
||||||
|
import pl.szczodrzynski.edziennik.ui.modules.home.HomeFragment
|
||||||
|
import pl.szczodrzynski.edziennik.ui.modules.behaviour.BehaviourFragment
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.notifications.NotificationsFragment
|
import pl.szczodrzynski.edziennik.ui.modules.notifications.NotificationsFragment
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.settings.ProfileManagerFragment
|
import pl.szczodrzynski.edziennik.ui.modules.settings.ProfileManagerFragment
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.settings.SettingsNewFragment
|
import pl.szczodrzynski.edziennik.ui.modules.settings.SettingsNewFragment
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.timetable.TimetableFragment
|
import pl.szczodrzynski.edziennik.ui.modules.timetable.TimetableFragment
|
||||||
import pl.szczodrzynski.edziennik.utils.SwipeRefreshLayoutNoTouch
|
import pl.szczodrzynski.edziennik.utils.SwipeRefreshLayoutNoTouch
|
||||||
import pl.szczodrzynski.edziennik.utils.Themes
|
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils
|
import pl.szczodrzynski.edziennik.utils.Utils
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.dpToPx
|
|
||||||
import pl.szczodrzynski.edziennik.utils.models.NavTarget
|
|
||||||
import pl.szczodrzynski.navlib.*
|
|
||||||
import pl.szczodrzynski.navlib.SystemBarsUtil.Companion.COLOR_HALF_TRANSPARENT
|
|
||||||
import pl.szczodrzynski.navlib.bottomsheet.NavBottomSheet
|
|
||||||
import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem
|
import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem
|
||||||
import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetSeparatorItem
|
import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetSeparatorItem
|
||||||
import pl.szczodrzynski.navlib.drawer.NavDrawer
|
|
||||||
import pl.szczodrzynski.navlib.drawer.items.DrawerPrimaryItem
|
|
||||||
import pl.szczodrzynski.navlib.drawer.items.withAppTitle
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
@ -235,10 +236,6 @@ class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
setTheme(Themes.appTheme)
|
setTheme(Themes.appTheme)
|
||||||
|
|
||||||
app.appConfig.language?.let {
|
|
||||||
setLanguage(it)
|
|
||||||
}
|
|
||||||
|
|
||||||
setContentView(b.root)
|
setContentView(b.root)
|
||||||
|
|
||||||
navLoading = true
|
navLoading = true
|
||||||
|
@ -280,13 +277,6 @@ class MainActivity : AppCompatActivity() {
|
||||||
fabExtendable = true
|
fabExtendable = true
|
||||||
fabExtended = false
|
fabExtended = false
|
||||||
fabGravity = Gravity.CENTER
|
fabGravity = Gravity.CENTER
|
||||||
if (Themes.isDark) {
|
|
||||||
setBackgroundColor(blendColors(
|
|
||||||
getColorFromAttr(context, R.attr.colorSurface),
|
|
||||||
getColorFromRes(R.color.colorSurface_4dp)
|
|
||||||
))
|
|
||||||
elevation = dpToPx(4).toFloat()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bottomSheet.apply {
|
bottomSheet.apply {
|
||||||
|
@ -873,9 +863,9 @@ class MainActivity : AppCompatActivity() {
|
||||||
* that something has changed in the bottom sheet.
|
* that something has changed in the bottom sheet.
|
||||||
*/
|
*/
|
||||||
fun gainAttention() {
|
fun gainAttention() {
|
||||||
/*b.navView.postDelayed({
|
b.navView.postDelayed({
|
||||||
navView.gainAttentionOnBottomBar()
|
navView.gainAttentionOnBottomBar()
|
||||||
}, 2000)*/
|
}, 2000)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun gainAttentionFAB() {
|
fun gainAttentionFAB() {
|
||||||
|
|
|
@ -139,7 +139,7 @@ public class Librus implements EdziennikInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final String TAG = "api.Librus";
|
private static final String TAG = "api.Librus";
|
||||||
private static final String CLIENT_ID = "6XPsKf10LPz1nxgHQLcvZ1KM48DYzlBAhxipaXY8";
|
private static final String CLIENT_ID = "wmSyUMo8llDAs4y9tJVYY92oyZ6h4lAt7KCuy0Gv";
|
||||||
private static final String REDIRECT_URL = "http://localhost/bar";
|
private static final String REDIRECT_URL = "http://localhost/bar";
|
||||||
private static final String AUTHORIZE_URL = "https://portal.librus.pl/oauth2/authorize?client_id="+CLIENT_ID+"&redirect_uri="+REDIRECT_URL+"&response_type=code";
|
private static final String AUTHORIZE_URL = "https://portal.librus.pl/oauth2/authorize?client_id="+CLIENT_ID+"&redirect_uri="+REDIRECT_URL+"&response_type=code";
|
||||||
private static final String LOGIN_URL = "https://portal.librus.pl/rodzina/login/action";
|
private static final String LOGIN_URL = "https://portal.librus.pl/rodzina/login/action";
|
||||||
|
@ -149,7 +149,7 @@ public class Librus implements EdziennikInterface {
|
||||||
private static final String API_URL = "https://api.librus.pl/2.0/";
|
private static final String API_URL = "https://api.librus.pl/2.0/";
|
||||||
private static final String SYNERGIA_URL = "https://wiadomosci.librus.pl/module/";
|
private static final String SYNERGIA_URL = "https://wiadomosci.librus.pl/module/";
|
||||||
private static final String SYNERGIA_SANDBOX_URL = "https://sandbox.librus.pl/index.php?action=";
|
private static final String SYNERGIA_SANDBOX_URL = "https://sandbox.librus.pl/index.php?action=";
|
||||||
private static final String userAgent = System.getProperty("http.agent")+"LibrusMobileApp";
|
private static final String userAgent = "Dalvik/2.1.0 Android LibrusMobileApp";
|
||||||
private static final String synergiaUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Gecko/20100101 Firefox/62.0";
|
private static final String synergiaUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Gecko/20100101 Firefox/62.0";
|
||||||
|
|
||||||
private App app;
|
private App app;
|
||||||
|
@ -277,8 +277,8 @@ public class Librus implements EdziennikInterface {
|
||||||
targetEndpoints.add("Users");
|
targetEndpoints.add("Users");
|
||||||
targetEndpoints.add("Subjects");
|
targetEndpoints.add("Subjects");
|
||||||
targetEndpoints.add("Classrooms");
|
targetEndpoints.add("Classrooms");
|
||||||
targetEndpoints.add("Substitutions");
|
|
||||||
targetEndpoints.add("Timetables");
|
targetEndpoints.add("Timetables");
|
||||||
|
targetEndpoints.add("Substitutions");
|
||||||
targetEndpoints.add("Colors");
|
targetEndpoints.add("Colors");
|
||||||
|
|
||||||
targetEndpoints.add("SavedGradeCategories");
|
targetEndpoints.add("SavedGradeCategories");
|
||||||
|
@ -346,8 +346,8 @@ public class Librus implements EdziennikInterface {
|
||||||
switch (feature) {
|
switch (feature) {
|
||||||
case FEATURE_TIMETABLE:
|
case FEATURE_TIMETABLE:
|
||||||
targetEndpoints.add("Classrooms");
|
targetEndpoints.add("Classrooms");
|
||||||
targetEndpoints.add("Substitutions");
|
|
||||||
targetEndpoints.add("Timetables");
|
targetEndpoints.add("Timetables");
|
||||||
|
targetEndpoints.add("Substitutions");
|
||||||
break;
|
break;
|
||||||
case FEATURE_AGENDA:
|
case FEATURE_AGENDA:
|
||||||
targetEndpoints.add("Events");
|
targetEndpoints.add("Events");
|
||||||
|
@ -1663,7 +1663,6 @@ public class Librus implements EdziennikInterface {
|
||||||
try {
|
try {
|
||||||
for (Map.Entry<String, JsonElement> dayEl: timetables.entrySet()) {
|
for (Map.Entry<String, JsonElement> dayEl: timetables.entrySet()) {
|
||||||
JsonArray day = dayEl.getValue().getAsJsonArray();
|
JsonArray day = dayEl.getValue().getAsJsonArray();
|
||||||
Date lessonDate = Date.fromY_m_d(dayEl.getKey());
|
|
||||||
for (JsonElement lessonGroupEl: day) {
|
for (JsonElement lessonGroupEl: day) {
|
||||||
if ((lessonGroupEl instanceof JsonArray && ((JsonArray) lessonGroupEl).size() == 0) || lessonGroupEl instanceof JsonNull || lessonGroupEl == null) {
|
if ((lessonGroupEl instanceof JsonArray && ((JsonArray) lessonGroupEl).size() == 0) || lessonGroupEl instanceof JsonNull || lessonGroupEl == null) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -1738,27 +1737,8 @@ public class Librus implements EdziennikInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonElement classroom;
|
JsonElement classroom;
|
||||||
JsonElement substitutionClassroom;
|
if ((classroom = lesson.get(substitution && !cancelled ? "OrgClassroom" : "Classroom")) != null) {
|
||||||
if (substitution && !cancelled) {
|
lessonObject.classroomName = classrooms.get(classroom.getAsJsonObject().get("Id").getAsInt());
|
||||||
classroom = lesson.get("OrgClassroom");
|
|
||||||
substitutionClassroom = lesson.get("Classroom");
|
|
||||||
|
|
||||||
if (classroom != null)
|
|
||||||
lessonObject.classroomName = classrooms.get(classroom.getAsJsonObject().get("Id").getAsInt());
|
|
||||||
|
|
||||||
if (substitutionClassroom != null) {
|
|
||||||
for (LessonChange lessonChange : lessonChangeList) {
|
|
||||||
if(lessonChange.lessonDate.compareTo(lessonDate) == 0) {
|
|
||||||
lessonChange.classroomName
|
|
||||||
= classrooms.get(substitutionClassroom.getAsJsonObject().get("Id").getAsInt());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
classroom = lesson.get("Classroom");
|
|
||||||
if (classroom != null)
|
|
||||||
lessonObject.classroomName = classrooms.get(classroom.getAsJsonObject().get("Id").getAsInt());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lessonList.add(lessonObject);
|
lessonList.add(lessonObject);
|
||||||
|
@ -1956,7 +1936,7 @@ public class Librus implements EdziennikInterface {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// not a full sync. Will get all grade categories. Clear the current list.
|
// not a full sync. Will get all grade categories. Clear the current list.
|
||||||
//gradeCategoryList.clear();
|
gradeCategoryList.clear();
|
||||||
|
|
||||||
callback.onActionStarted(R.string.sync_action_syncing_grade_categories);
|
callback.onActionStarted(R.string.sync_action_syncing_grade_categories);
|
||||||
apiRequest("Grades/Categories", data -> {
|
apiRequest("Grades/Categories", data -> {
|
||||||
|
|
|
@ -105,7 +105,6 @@ public class Mobidziennik implements EdziennikInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final String TAG = "api.Mobidziennik";
|
private static final String TAG = "api.Mobidziennik";
|
||||||
private static final String API_KEY = "szkolny_eu_72c7dbc8b97f1e5dd2d118cacf51c2b8543d15c0f65b7a59979adb0a1296b235d7febb826dd2a28688def6efe0811b924b04d7f3c7b7d005354e06dc56815d57";
|
|
||||||
|
|
||||||
private App app;
|
private App app;
|
||||||
private Context activityContext = null;
|
private Context activityContext = null;
|
||||||
|
@ -422,7 +421,6 @@ public class Mobidziennik implements EdziennikInterface {
|
||||||
.addParameter("login", loginUsername)
|
.addParameter("login", loginUsername)
|
||||||
.addParameter("haslo", loginPassword)
|
.addParameter("haslo", loginPassword)
|
||||||
.addParameter("token", app.appConfig.fcmTokens.get(LOGIN_TYPE_MOBIDZIENNIK).first)
|
.addParameter("token", app.appConfig.fcmTokens.get(LOGIN_TYPE_MOBIDZIENNIK).first)
|
||||||
.addParameter("ta_api", API_KEY)
|
|
||||||
.post()
|
.post()
|
||||||
.callback(new TextCallbackHandler() {
|
.callback(new TextCallbackHandler() {
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -858,12 +858,6 @@ public class Vulcan implements EdziennikInterface {
|
||||||
case "KA2":
|
case "KA2":
|
||||||
apiUrl = "https://uonetplus-komunikacja-test.mcuw.katowice.eu/"+symbol+"/";
|
apiUrl = "https://uonetplus-komunikacja-test.mcuw.katowice.eu/"+symbol+"/";
|
||||||
break;
|
break;
|
||||||
case "LU1":
|
|
||||||
apiUrl = "https://uonetplus-komunikacja.edu.lublin.eu/"+symbol+"/";
|
|
||||||
break;
|
|
||||||
case "LU2":
|
|
||||||
apiUrl = "https://test-uonetplus-komunikacja.edu.lublin.eu/"+symbol+"/";
|
|
||||||
break;
|
|
||||||
case "P03":
|
case "P03":
|
||||||
apiUrl = "https://efeb-komunikacja-pro-efebmobile.pro.vulcan.pl/"+symbol+"/";
|
apiUrl = "https://efeb-komunikacja-pro-efebmobile.pro.vulcan.pl/"+symbol+"/";
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -81,7 +81,7 @@ import android.content.Context;
|
||||||
Message.class,
|
Message.class,
|
||||||
MessageRecipient.class,
|
MessageRecipient.class,
|
||||||
DebugLog.class,
|
DebugLog.class,
|
||||||
Metadata.class}, version = 55)
|
Metadata.class}, version = 54)
|
||||||
@TypeConverters({
|
@TypeConverters({
|
||||||
ConverterTime.class,
|
ConverterTime.class,
|
||||||
ConverterDate.class,
|
ConverterDate.class,
|
||||||
|
@ -558,12 +558,6 @@ public abstract class AppDb extends RoomDatabase {
|
||||||
database.execSQL("ALTER TABLE teacherAbsence ADD teacherAbsenceTimeTo TEXT DEFAULT NULL");
|
database.execSQL("ALTER TABLE teacherAbsence ADD teacherAbsenceTimeTo TEXT DEFAULT NULL");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
private static final Migration MIGRATION_54_55 = new Migration(54, 55) {
|
|
||||||
@Override
|
|
||||||
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
|
||||||
database.execSQL("UPDATE profiles SET lastFullSync = 0");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
public static AppDb getDatabase(final Context context) {
|
public static AppDb getDatabase(final Context context) {
|
||||||
|
@ -615,8 +609,7 @@ public abstract class AppDb extends RoomDatabase {
|
||||||
MIGRATION_50_51,
|
MIGRATION_50_51,
|
||||||
MIGRATION_51_52,
|
MIGRATION_51_52,
|
||||||
MIGRATION_52_53,
|
MIGRATION_52_53,
|
||||||
MIGRATION_53_54,
|
MIGRATION_53_54
|
||||||
MIGRATION_54_55
|
|
||||||
)
|
)
|
||||||
.allowMainThreadQueries()
|
.allowMainThreadQueries()
|
||||||
//.fallbackToDestructiveMigration()
|
//.fallbackToDestructiveMigration()
|
||||||
|
|
|
@ -255,15 +255,7 @@ public class HomeFragment extends Fragment {
|
||||||
activity.getBottomSheet().close();
|
activity.getBottomSheet().close();
|
||||||
setNumberDialog();
|
setNumberDialog();
|
||||||
}),
|
}),
|
||||||
new BottomSheetSeparatorItem(true),
|
new BottomSheetSeparatorItem(true)
|
||||||
new BottomSheetPrimaryItem(true)
|
|
||||||
.withTitle(R.string.menu_mark_everything_as_read)
|
|
||||||
.withIcon(CommunityMaterial.Icon.cmd_eye_check)
|
|
||||||
.withOnClickListener(v3 -> {
|
|
||||||
activity.getBottomSheet().close();
|
|
||||||
AsyncTask.execute(() -> app.db.metadataDao().setAllSeen(App.profileId, true));
|
|
||||||
Toast.makeText(activity, R.string.main_menu_mark_as_read_success, Toast.LENGTH_SHORT).show();
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
activity.gainAttention();
|
activity.gainAttention();
|
||||||
}
|
}
|
||||||
|
@ -294,15 +286,15 @@ public class HomeFragment extends Fragment {
|
||||||
if (app.appConfig.countInSeconds) {
|
if (app.appConfig.countInSeconds) {
|
||||||
return 1000-(System.currentTimeMillis() % 1000);
|
return 1000-(System.currentTimeMillis() % 1000);
|
||||||
}
|
}
|
||||||
if (diff.minute > 10) {
|
if (diff.minute > 5) {
|
||||||
//Log.d(TAG, "60 secs");
|
//Log.d(TAG, "60 secs");
|
||||||
return 60000-(System.currentTimeMillis() % 60000);
|
return 60000-(System.currentTimeMillis() % 60000);
|
||||||
}
|
}
|
||||||
else if (diff.minute >= 1 && false) {
|
else if (diff.minute >= 1) {
|
||||||
//Log.d(TAG, "3 secs");
|
//Log.d(TAG, "3 secs");
|
||||||
return 3000-(System.currentTimeMillis() % 3000);
|
return 3000-(System.currentTimeMillis() % 3000);
|
||||||
}
|
}
|
||||||
else if (diff.second >= 40 && false) {
|
else if (diff.second >= 40) {
|
||||||
//Log.d(TAG, "2 secs");
|
//Log.d(TAG, "2 secs");
|
||||||
return 2000-(System.currentTimeMillis() % 2000);
|
return 2000-(System.currentTimeMillis() % 2000);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,27 +38,28 @@ import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.App;
|
import pl.szczodrzynski.edziennik.App;
|
||||||
import pl.szczodrzynski.edziennik.BuildConfig;
|
import pl.szczodrzynski.edziennik.BuildConfig;
|
||||||
import pl.szczodrzynski.edziennik.MainActivity;
|
|
||||||
import pl.szczodrzynski.edziennik.Notifier;
|
import pl.szczodrzynski.edziennik.Notifier;
|
||||||
import pl.szczodrzynski.edziennik.R;
|
import pl.szczodrzynski.edziennik.R;
|
||||||
|
import pl.szczodrzynski.edziennik.MainActivity;
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
||||||
|
import pl.szczodrzynski.edziennik.ui.modules.webpush.WebPushConfigActivity;
|
||||||
|
import pl.szczodrzynski.edziennik.ui.dialogs.changelog.ChangelogDialog;
|
||||||
|
import pl.szczodrzynski.edziennik.utils.models.Endpoint;
|
||||||
|
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||||
import pl.szczodrzynski.edziennik.network.NetworkUtils;
|
import pl.szczodrzynski.edziennik.network.NetworkUtils;
|
||||||
import pl.szczodrzynski.edziennik.network.ServerRequest;
|
import pl.szczodrzynski.edziennik.network.ServerRequest;
|
||||||
import pl.szczodrzynski.edziennik.receivers.BootReceiver;
|
import pl.szczodrzynski.edziennik.receivers.BootReceiver;
|
||||||
import pl.szczodrzynski.edziennik.sync.SyncJob;
|
import pl.szczodrzynski.edziennik.sync.SyncJob;
|
||||||
import pl.szczodrzynski.edziennik.ui.dialogs.changelog.ChangelogDialog;
|
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.home.HomeFragment;
|
import pl.szczodrzynski.edziennik.ui.modules.home.HomeFragment;
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.webpush.WebPushConfigActivity;
|
|
||||||
import pl.szczodrzynski.edziennik.utils.Themes;
|
import pl.szczodrzynski.edziennik.utils.Themes;
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils;
|
import pl.szczodrzynski.edziennik.utils.Utils;
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Time;
|
|
||||||
|
|
||||||
import static android.app.Activity.RESULT_OK;
|
import static android.app.Activity.RESULT_OK;
|
||||||
import static pl.szczodrzynski.edziennik.App.APP_URL;
|
import static pl.szczodrzynski.edziennik.App.APP_URL;
|
||||||
import static pl.szczodrzynski.edziennik.ExtensionsKt.initDefaultLocale;
|
|
||||||
import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_DISABLED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_DISABLED;
|
||||||
import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_ENABLED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_ENABLED;
|
||||||
import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.YEAR_1_AVG_2_AVG;
|
import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.YEAR_1_AVG_2_AVG;
|
||||||
|
@ -80,7 +81,8 @@ public class SettingsNewFragment extends MaterialAboutFragment {
|
||||||
private static final int CARD_THEME = 1;
|
private static final int CARD_THEME = 1;
|
||||||
private static final int CARD_SYNC = 2;
|
private static final int CARD_SYNC = 2;
|
||||||
private static final int CARD_REGISTER = 3;
|
private static final int CARD_REGISTER = 3;
|
||||||
private static final int CARD_ABOUT = 4;
|
private static final int CARD_SYNC_CUSTOMIZE = 4;
|
||||||
|
private static final int CARD_ABOUT = 5;
|
||||||
private int iconColor = Color.WHITE;
|
private int iconColor = Color.WHITE;
|
||||||
private int primaryTextOnPrimaryBg = -1;
|
private int primaryTextOnPrimaryBg = -1;
|
||||||
private int secondaryTextOnPrimaryBg = -1;
|
private int secondaryTextOnPrimaryBg = -1;
|
||||||
|
@ -1079,6 +1081,136 @@ public class SettingsNewFragment extends MaterialAboutFragment {
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* _____ ______ _ _ _
|
||||||
|
/ ____| | ____| | | (_) | |
|
||||||
|
| (___ _ _ _ __ ___ | |__ _ __ __| |_ __ ___ _ _ __ | |_ ___
|
||||||
|
\___ \| | | | '_ \ / __| | __| | '_ \ / _` | '_ \ / _ \| | '_ \| __/ __|
|
||||||
|
____) | |_| | | | | (__ | |____| | | | (_| | |_) | (_) | | | | | |_\__ \
|
||||||
|
|_____/ \__, |_| |_|\___| |______|_| |_|\__,_| .__/ \___/|_|_| |_|\__|___/
|
||||||
|
__/ | | |
|
||||||
|
|___/ |*/
|
||||||
|
private String getEndpointTitle(String name) {
|
||||||
|
int stringRes = -1;
|
||||||
|
switch (name) {
|
||||||
|
case "Classrooms":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_classrooms;
|
||||||
|
break;
|
||||||
|
case "Timetables":
|
||||||
|
case "Timetable":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_timetable;
|
||||||
|
break;
|
||||||
|
case "Substitutions":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_substitutions;
|
||||||
|
break;
|
||||||
|
case "Grades":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_grades;
|
||||||
|
break;
|
||||||
|
case "PointGrades":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_point_grades;
|
||||||
|
break;
|
||||||
|
case "Events":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_events;
|
||||||
|
break;
|
||||||
|
case "Homework":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_homework;
|
||||||
|
break;
|
||||||
|
case "LuckyNumber":
|
||||||
|
case "LuckyNumbers":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_lucky_numbers;
|
||||||
|
break;
|
||||||
|
case "Notices":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_notices;
|
||||||
|
break;
|
||||||
|
case "Attendance":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_attendance;
|
||||||
|
break;
|
||||||
|
case "Announcements":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_announcements;
|
||||||
|
break;
|
||||||
|
case "PtMeetings":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_pt_meetings;
|
||||||
|
break;
|
||||||
|
case "TeacherFreeDays":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_teacher_free_days;
|
||||||
|
break;
|
||||||
|
case "SchoolFreeDays":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_school_free_days;
|
||||||
|
break;
|
||||||
|
case "ClassFreeDays":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_class_free_days;
|
||||||
|
break;
|
||||||
|
case "MessagesInbox":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_messages_inbox;
|
||||||
|
break;
|
||||||
|
case "MessagesOutbox":
|
||||||
|
stringRes = R.string.settings_sync_customize_endpoint_messages_outbox;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (stringRes == -1)
|
||||||
|
return name;
|
||||||
|
else
|
||||||
|
return getString(stringRes);
|
||||||
|
}
|
||||||
|
private MaterialAboutSwitchItem getEndpointSwitch(String name, Endpoint endpoint) {
|
||||||
|
return new MaterialAboutSwitchItem(
|
||||||
|
getEndpointTitle(name),
|
||||||
|
endpoint.onlyFullSync ? getString(R.string.settings_sync_customize_full_sync_only) : null,
|
||||||
|
null
|
||||||
|
)
|
||||||
|
.setChecked(endpoint.enabled)
|
||||||
|
.setOnChangeAction((isChecked, tag) -> {
|
||||||
|
endpoint.enabled = isChecked;
|
||||||
|
boolean changed = isChecked ^ endpoint.defaultActive;
|
||||||
|
if (!changed) {
|
||||||
|
if (app.profile.getChangedEndpoints() != null) {
|
||||||
|
app.profile.getChangedEndpoints().remove(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (app.profile.getChangedEndpoints() == null)
|
||||||
|
app.profile.setChangedEndpoints(new ArrayList<>());
|
||||||
|
app.profile.getChangedEndpoints().add(name);
|
||||||
|
}
|
||||||
|
app.profileSaveAsync();
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
private Map<String, Endpoint> configurableEndpoints = null;
|
||||||
|
private ArrayList<MaterialAboutItem> getSyncCustomizeCard(boolean expandedOnly) {
|
||||||
|
ArrayList<MaterialAboutItem> items = new ArrayList<>();
|
||||||
|
if (!expandedOnly) {
|
||||||
|
items.add(
|
||||||
|
new MaterialAboutActionItem(
|
||||||
|
null,
|
||||||
|
getString(R.string.settings_sync_customize_help_subtext),
|
||||||
|
null
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (app.profile.getChangedEndpoints() != null) {
|
||||||
|
for (String changedEndpoint : app.profile.getChangedEndpoints()) {
|
||||||
|
Endpoint endpoint = configurableEndpoints.get(changedEndpoint);
|
||||||
|
if (endpoint == null)
|
||||||
|
continue;
|
||||||
|
items.add(getEndpointSwitch(changedEndpoint, endpoint));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
items.add(getMoreItem(() -> addCardItems(CARD_SYNC_CUSTOMIZE, getSyncCustomizeCard(true))));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (String endpointName: configurableEndpoints.keySet()) {
|
||||||
|
if (app.profile.getChangedEndpoints() != null && app.profile.getChangedEndpoints().contains(endpointName))
|
||||||
|
continue;
|
||||||
|
Endpoint endpoint = configurableEndpoints.get(endpointName);
|
||||||
|
if (endpoint == null)
|
||||||
|
continue;
|
||||||
|
items.add(getEndpointSwitch(endpointName, endpoint));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
/* _ _
|
/* _ _
|
||||||
/\ | | | |
|
/\ | | | |
|
||||||
/ \ | |__ ___ _ _| |_
|
/ \ | |__ ___ _ _| |_
|
||||||
|
@ -1091,152 +1223,117 @@ public class SettingsNewFragment extends MaterialAboutFragment {
|
||||||
secondaryTextOnPrimaryBg = 0xd0ffffff;//activity.getResources().getColor(R.color.secondaryTextLight);
|
secondaryTextOnPrimaryBg = 0xd0ffffff;//activity.getResources().getColor(R.color.secondaryTextLight);
|
||||||
|
|
||||||
ArrayList<MaterialAboutItem> items = new ArrayList<>();
|
ArrayList<MaterialAboutItem> items = new ArrayList<>();
|
||||||
if (!expandedOnly) {
|
items.add(new MaterialAboutTitleItem.Builder()
|
||||||
items.add(new MaterialAboutTitleItem.Builder()
|
.text(R.string.app_name)
|
||||||
.text(R.string.app_name)
|
.desc(R.string.settings_about_title_subtext)
|
||||||
.desc(R.string.settings_about_title_subtext)
|
.textColor(primaryTextOnPrimaryBg)
|
||||||
.textColor(primaryTextOnPrimaryBg)
|
.descColor(secondaryTextOnPrimaryBg)
|
||||||
.descColor(secondaryTextOnPrimaryBg)
|
.icon(R.mipmap.ic_splash)
|
||||||
.icon(R.mipmap.ic_splash)
|
.build());
|
||||||
.build());
|
|
||||||
|
|
||||||
pref_about_version = new MaterialAboutActionItem.Builder()
|
pref_about_version = new MaterialAboutActionItem.Builder()
|
||||||
.text(R.string.settings_about_version_text)
|
.text(R.string.settings_about_version_text)
|
||||||
.textColor(primaryTextOnPrimaryBg)
|
.textColor(primaryTextOnPrimaryBg)
|
||||||
.subTextColor(secondaryTextOnPrimaryBg)
|
.subTextColor(secondaryTextOnPrimaryBg)
|
||||||
.subText(BuildConfig.VERSION_NAME + ", " + BuildConfig.BUILD_TYPE)
|
.subText(BuildConfig.VERSION_NAME+", "+BuildConfig.BUILD_TYPE)
|
||||||
.icon(new IconicsDrawable(activity)
|
.icon(new IconicsDrawable(activity)
|
||||||
.icon(CommunityMaterial.Icon2.cmd_information)
|
.icon(CommunityMaterial.Icon2.cmd_information)
|
||||||
.color(IconicsColor.colorInt(primaryTextOnPrimaryBg))
|
.color(IconicsColor.colorInt(primaryTextOnPrimaryBg))
|
||||||
.size(IconicsSize.dp(iconSizeDp)))
|
.size(IconicsSize.dp(iconSizeDp)))
|
||||||
.build();
|
.build();
|
||||||
final int[] clickCounter = {0};
|
final int[] clickCounter = {0};
|
||||||
pref_about_version.setOnClickAction(() -> {
|
pref_about_version.setOnClickAction(() -> {
|
||||||
if (6 - clickCounter[0] != 0) {
|
if (6 - clickCounter[0] != 0) {
|
||||||
Toast.makeText(activity, ("\ud83d\ude02"), Toast.LENGTH_SHORT).show();
|
Toast.makeText(activity, ("\ud83d\ude02"), Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
refreshMaterialAboutList();
|
refreshMaterialAboutList();
|
||||||
clickCounter[0] = clickCounter[0] + 1;
|
clickCounter[0] = clickCounter[0] + 1;
|
||||||
if (clickCounter[0] > 6) {
|
if (clickCounter[0] > 6)
|
||||||
final MediaPlayer mp = MediaPlayer.create(activity, R.raw.ogarnij_sie);
|
{
|
||||||
mp.start();
|
final MediaPlayer mp = MediaPlayer.create(activity, R.raw.ogarnij_sie);
|
||||||
clickCounter[0] = 0;
|
mp.start();
|
||||||
}
|
clickCounter[0] = 0;
|
||||||
});
|
}
|
||||||
items.add(pref_about_version);
|
});
|
||||||
|
items.add(pref_about_version);
|
||||||
|
|
||||||
items.add(new MaterialAboutActionItem.Builder()
|
items.add(new MaterialAboutActionItem.Builder()
|
||||||
.text(R.string.settings_about_privacy_policy_text)
|
.text(R.string.settings_about_privacy_policy_text)
|
||||||
.textColor(primaryTextOnPrimaryBg)
|
.textColor(primaryTextOnPrimaryBg)
|
||||||
.subTextColor(secondaryTextOnPrimaryBg)
|
.subTextColor(secondaryTextOnPrimaryBg)
|
||||||
.icon(new IconicsDrawable(activity)
|
.icon(new IconicsDrawable(activity)
|
||||||
.icon(CommunityMaterial.Icon2.cmd_shield_half_full)
|
.icon(CommunityMaterial.Icon2.cmd_shield_half_full)
|
||||||
.color(IconicsColor.colorInt(primaryTextOnPrimaryBg))
|
.color(IconicsColor.colorInt(primaryTextOnPrimaryBg))
|
||||||
.size(IconicsSize.dp(iconSizeDp)))
|
.size(IconicsSize.dp(iconSizeDp)))
|
||||||
.setOnClickAction(ConvenienceBuilder.createWebsiteOnClickAction(activity, Uri.parse("https://szkolny.eu/privacy-policy")))
|
.setOnClickAction(ConvenienceBuilder.createWebsiteOnClickAction(activity, Uri.parse("https://szkolny.eu/privacy-policy")))
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
items.add(new MaterialAboutActionItem.Builder()
|
items.add(new MaterialAboutActionItem.Builder()
|
||||||
.text(R.string.settings_about_discord_text)
|
.text(R.string.settings_about_discord_text)
|
||||||
.textColor(primaryTextOnPrimaryBg)
|
.textColor(primaryTextOnPrimaryBg)
|
||||||
.subTextColor(secondaryTextOnPrimaryBg)
|
.subTextColor(secondaryTextOnPrimaryBg)
|
||||||
.subText(R.string.settings_about_discord_subtext)
|
.subText(R.string.settings_about_discord_subtext)
|
||||||
.icon(new IconicsDrawable(activity)
|
.icon(new IconicsDrawable(activity)
|
||||||
.icon(CommunityMaterial.Icon.cmd_discord)
|
.icon(CommunityMaterial.Icon.cmd_discord)
|
||||||
.color(IconicsColor.colorInt(primaryTextOnPrimaryBg))
|
.color(IconicsColor.colorInt(primaryTextOnPrimaryBg))
|
||||||
.size(IconicsSize.dp(iconSizeDp)))
|
.size(IconicsSize.dp(iconSizeDp)))
|
||||||
.setOnClickAction(ConvenienceBuilder.createWebsiteOnClickAction(activity, Uri.parse("https://discord.gg/n9e8pWr")))
|
.setOnClickAction(ConvenienceBuilder.createWebsiteOnClickAction(activity, Uri.parse("https://discord.gg/n9e8pWr")))
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
items.add(new MaterialAboutActionItem.Builder()
|
items.add(new MaterialAboutActionItem.Builder()
|
||||||
.text(R.string.settings_about_language_text)
|
.text(R.string.settings_about_update_text)
|
||||||
.textColor(primaryTextOnPrimaryBg)
|
.subText(R.string.settings_about_update_subtext)
|
||||||
.subTextColor(secondaryTextOnPrimaryBg)
|
.textColor(primaryTextOnPrimaryBg)
|
||||||
.subText(R.string.settings_about_language_subtext)
|
.subTextColor(secondaryTextOnPrimaryBg)
|
||||||
.icon(new IconicsDrawable(activity)
|
.icon(new IconicsDrawable(activity)
|
||||||
.icon(CommunityMaterial.Icon2.cmd_translate)
|
.icon(CommunityMaterial.Icon2.cmd_update)
|
||||||
.color(IconicsColor.colorInt(primaryTextOnPrimaryBg))
|
.color(IconicsColor.colorInt(primaryTextOnPrimaryBg))
|
||||||
.size(IconicsSize.dp(iconSizeDp)))
|
.size(IconicsSize.dp(iconSizeDp)))
|
||||||
.setOnClickAction(() -> {
|
.setOnClickAction(() -> {
|
||||||
|
//open browser or intent here
|
||||||
|
NetworkUtils net = new NetworkUtils(app);
|
||||||
|
if (!net.isOnline())
|
||||||
|
{
|
||||||
new MaterialDialog.Builder(activity)
|
new MaterialDialog.Builder(activity)
|
||||||
.title(getString(R.string.settings_about_language_dialog_title))
|
.title(R.string.you_are_offline_title)
|
||||||
.content(getString(R.string.settings_about_language_dialog_text))
|
.content(R.string.you_are_offline_text)
|
||||||
.items(getString(R.string.language_system), getString(R.string.language_polish), getString(R.string.language_english))
|
.positiveText(R.string.ok)
|
||||||
.itemsCallbackSingleChoice(app.appConfig.language == null ? 0 : app.appConfig.language.equals("pl") ? 1 : 2, (dialog, itemView, which, text) -> {
|
|
||||||
switch (which) {
|
|
||||||
case 0:
|
|
||||||
app.appConfig.language = null;
|
|
||||||
initDefaultLocale();
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
app.appConfig.language = "pl";
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
app.appConfig.language = "en";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
app.saveConfig("language");
|
|
||||||
activity.recreate(MainActivity.DRAWER_ITEM_SETTINGS);
|
|
||||||
return true;
|
|
||||||
})
|
|
||||||
.show();
|
.show();
|
||||||
})
|
}
|
||||||
.build());
|
else
|
||||||
|
{
|
||||||
|
BootReceiver br = new BootReceiver();
|
||||||
|
Intent i = new Intent();
|
||||||
|
i.putExtra("UserChecked", true);
|
||||||
|
br.onReceive(getContext(), i);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.build());
|
||||||
|
|
||||||
items.add(getMoreItem(() -> addCardItems(CARD_ABOUT, getAboutCard(true))));
|
items.add(new MaterialAboutActionItem.Builder()
|
||||||
}
|
.text(R.string.settings_about_changelog_text)
|
||||||
else {
|
.textColor(primaryTextOnPrimaryBg)
|
||||||
items.add(new MaterialAboutActionItem.Builder()
|
.subTextColor(secondaryTextOnPrimaryBg)
|
||||||
.text(R.string.settings_about_update_text)
|
.icon(new IconicsDrawable(activity)
|
||||||
.subText(R.string.settings_about_update_subtext)
|
.icon(CommunityMaterial.Icon2.cmd_radar)
|
||||||
.textColor(primaryTextOnPrimaryBg)
|
.color(IconicsColor.colorInt(primaryTextOnPrimaryBg))
|
||||||
.subTextColor(secondaryTextOnPrimaryBg)
|
.size(IconicsSize.dp(iconSizeDp)))
|
||||||
.icon(new IconicsDrawable(activity)
|
.setOnClickAction(() -> new ChangelogDialog().show(getActivity().getSupportFragmentManager(), "whats_new"))
|
||||||
.icon(CommunityMaterial.Icon2.cmd_update)
|
.build());
|
||||||
.color(IconicsColor.colorInt(primaryTextOnPrimaryBg))
|
|
||||||
.size(IconicsSize.dp(iconSizeDp)))
|
|
||||||
.setOnClickAction(() -> {
|
|
||||||
//open browser or intent here
|
|
||||||
NetworkUtils net = new NetworkUtils(app);
|
|
||||||
if (!net.isOnline()) {
|
|
||||||
new MaterialDialog.Builder(activity)
|
|
||||||
.title(R.string.you_are_offline_title)
|
|
||||||
.content(R.string.you_are_offline_text)
|
|
||||||
.positiveText(R.string.ok)
|
|
||||||
.show();
|
|
||||||
} else {
|
|
||||||
BootReceiver br = new BootReceiver();
|
|
||||||
Intent i = new Intent();
|
|
||||||
i.putExtra("UserChecked", true);
|
|
||||||
br.onReceive(getContext(), i);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.build());
|
|
||||||
|
|
||||||
items.add(new MaterialAboutActionItem.Builder()
|
items.add(new MaterialAboutActionItem.Builder()
|
||||||
.text(R.string.settings_about_changelog_text)
|
.text(R.string.settings_about_licenses_text)
|
||||||
.textColor(primaryTextOnPrimaryBg)
|
.textColor(primaryTextOnPrimaryBg)
|
||||||
.subTextColor(secondaryTextOnPrimaryBg)
|
.subTextColor(secondaryTextOnPrimaryBg)
|
||||||
.icon(new IconicsDrawable(activity)
|
.icon(new IconicsDrawable(activity)
|
||||||
.icon(CommunityMaterial.Icon2.cmd_radar)
|
.icon(CommunityMaterial.Icon.cmd_code_braces)
|
||||||
.color(IconicsColor.colorInt(primaryTextOnPrimaryBg))
|
.color(IconicsColor.colorInt(primaryTextOnPrimaryBg))
|
||||||
.size(IconicsSize.dp(iconSizeDp)))
|
.size(IconicsSize.dp(iconSizeDp)))
|
||||||
.setOnClickAction(() -> new ChangelogDialog().show(getActivity().getSupportFragmentManager(), "whats_new"))
|
.setOnClickAction(() -> {
|
||||||
.build());
|
Intent intent = new Intent(activity, SettingsLicenseActivity.class);
|
||||||
|
startActivity(intent);
|
||||||
items.add(new MaterialAboutActionItem.Builder()
|
})
|
||||||
.text(R.string.settings_about_licenses_text)
|
.build());
|
||||||
.textColor(primaryTextOnPrimaryBg)
|
|
||||||
.subTextColor(secondaryTextOnPrimaryBg)
|
|
||||||
.icon(new IconicsDrawable(activity)
|
|
||||||
.icon(CommunityMaterial.Icon.cmd_code_braces)
|
|
||||||
.color(IconicsColor.colorInt(primaryTextOnPrimaryBg))
|
|
||||||
.size(IconicsSize.dp(iconSizeDp)))
|
|
||||||
.setOnClickAction(() -> {
|
|
||||||
Intent intent = new Intent(activity, SettingsLicenseActivity.class);
|
|
||||||
startActivity(intent);
|
|
||||||
})
|
|
||||||
.build());
|
|
||||||
|
|
||||||
/*items.add(new MaterialAboutActionItem.Builder()
|
/*items.add(new MaterialAboutActionItem.Builder()
|
||||||
.text(R.string.settings_about_intro_text)
|
.text(R.string.settings_about_intro_text)
|
||||||
|
@ -1260,21 +1357,20 @@ public class SettingsNewFragment extends MaterialAboutFragment {
|
||||||
})
|
})
|
||||||
.build());*/
|
.build());*/
|
||||||
|
|
||||||
if (App.devMode) {
|
if (App.devMode) {
|
||||||
items.add(new MaterialAboutActionItem.Builder()
|
items.add(new MaterialAboutActionItem.Builder()
|
||||||
.text(R.string.settings_about_crash_text)
|
.text(R.string.settings_about_crash_text)
|
||||||
.subText(R.string.settings_about_crash_subtext)
|
.subText(R.string.settings_about_crash_subtext)
|
||||||
.textColor(primaryTextOnPrimaryBg)
|
.textColor(primaryTextOnPrimaryBg)
|
||||||
.subTextColor(secondaryTextOnPrimaryBg)
|
.subTextColor(secondaryTextOnPrimaryBg)
|
||||||
.icon(new IconicsDrawable(activity)
|
.icon(new IconicsDrawable(activity)
|
||||||
.icon(CommunityMaterial.Icon.cmd_bug)
|
.icon(CommunityMaterial.Icon.cmd_bug)
|
||||||
.color(IconicsColor.colorInt(primaryTextOnPrimaryBg))
|
.color(IconicsColor.colorInt(primaryTextOnPrimaryBg))
|
||||||
.size(IconicsSize.dp(iconSizeDp)))
|
.size(IconicsSize.dp(iconSizeDp)))
|
||||||
.setOnClickAction(() -> {
|
.setOnClickAction(() -> {
|
||||||
throw new RuntimeException("MANUAL CRASH");
|
throw new RuntimeException("MANUAL CRASH");
|
||||||
})
|
})
|
||||||
.build());
|
.build());
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,6 @@ package pl.szczodrzynski.edziennik.utils.models;
|
||||||
|
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -112,7 +110,4 @@ public class AppConfig {
|
||||||
public long appRateSnackbarTime = 0;
|
public long appRateSnackbarTime = 0;
|
||||||
|
|
||||||
public int mobidziennikOldMessages = -1;
|
public int mobidziennikOldMessages = -1;
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public String language = null;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -855,15 +855,4 @@
|
||||||
<string name="sync_action_syncing_grade_comments">Getting grade comments</string>
|
<string name="sync_action_syncing_grade_comments">Getting grade comments</string>
|
||||||
<string name="sync_action_syncing_school_free_days">Getting school free days</string>
|
<string name="sync_action_syncing_school_free_days">Getting school free days</string>
|
||||||
<string name="settings_register_show_teacher_absences_text">Show teacher absences in Agenda</string>
|
<string name="settings_register_show_teacher_absences_text">Show teacher absences in Agenda</string>
|
||||||
<string name="menu_mark_everything_as_read">Mark everything as read</string>
|
|
||||||
<string name="settings_about_language_text">App language</string>
|
|
||||||
<string name="settings_about_language_subtext">"English "</string>
|
|
||||||
<string name="settings_about_language_dialog_title">Change app language</string>
|
|
||||||
<string name="settings_about_language_dialog_text">Notice. This feature may not work on some devices or in some parts of the app.</string>
|
|
||||||
<string name="settings_about_discord_text">Discord server</string>
|
|
||||||
<string name="settings_about_discord_subtext">Join our Discord community!</string>
|
|
||||||
<string name="language_system">Use system language</string>
|
|
||||||
<string name="login_summary_account_child">(child)</string>
|
|
||||||
<string name="login_summary_account_parent">(parent)</string>
|
|
||||||
<string name="toolbar_subtitle_syncing">Syncing...</string>
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -435,7 +435,6 @@
|
||||||
<string name="menu_homework">Zadania domowe</string>
|
<string name="menu_homework">Zadania domowe</string>
|
||||||
<string name="menu_manage_profiles">Zarządzaj profilami</string>
|
<string name="menu_manage_profiles">Zarządzaj profilami</string>
|
||||||
<string name="menu_mark_as_read">Oznacz jako przeczytane</string>
|
<string name="menu_mark_as_read">Oznacz jako przeczytane</string>
|
||||||
<string name="menu_mark_everything_as_read">Oznacz wszystko jako przeczytane</string>
|
|
||||||
<string name="menu_messages">Wiadomości</string>
|
<string name="menu_messages">Wiadomości</string>
|
||||||
<string name="menu_messages_inbox">Odebrane</string>
|
<string name="menu_messages_inbox">Odebrane</string>
|
||||||
<string name="menu_messages_sent">Wysłane</string>
|
<string name="menu_messages_sent">Wysłane</string>
|
||||||
|
@ -912,11 +911,4 @@
|
||||||
<string name="agenda_teacher_absence">Nieobecni nauczyciele</string>
|
<string name="agenda_teacher_absence">Nieobecni nauczyciele</string>
|
||||||
<string name="sync_action_syncing_grade_comments">Pobieranie komentarzy ocen</string>
|
<string name="sync_action_syncing_grade_comments">Pobieranie komentarzy ocen</string>
|
||||||
<string name="settings_register_show_teacher_absences_text">Pokazuj nieobecności nauczycieli w Terminarzu</string>
|
<string name="settings_register_show_teacher_absences_text">Pokazuj nieobecności nauczycieli w Terminarzu</string>
|
||||||
<string name="settings_about_language_text">Język aplikacji</string>
|
|
||||||
<string name="settings_about_language_subtext">Polski</string>
|
|
||||||
<string name="settings_about_language_dialog_title">Zmień język aplikacji</string>
|
|
||||||
<string name="settings_about_language_dialog_text">Uwaga. Ta opcja może nie działać na niektórych urządzeniach oraz w niektórych fragmentach aplikacji.</string>
|
|
||||||
<string name="language_system">Według systemu</string>
|
|
||||||
<string name="language_polish" translatable="false">Polski</string>
|
|
||||||
<string name="language_english" translatable="false">English</string>
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -5,8 +5,8 @@ buildscript {
|
||||||
kotlin_version = '1.3.50'
|
kotlin_version = '1.3.50'
|
||||||
|
|
||||||
release = [
|
release = [
|
||||||
versionName: "3.2.2",
|
versionName: "3.1",
|
||||||
versionCode: 3020299
|
versionCode: 3010099
|
||||||
]
|
]
|
||||||
|
|
||||||
setup = [
|
setup = [
|
||||||
|
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.0-rc-1-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
|
Loading…
Add table
Add a link
Reference in a new issue