mirror of
https://github.com/Matte23/circolapp.git
synced 2025-12-06 07:29:10 +00:00
Add AppIntro activity
This commit is contained in:
@@ -56,6 +56,8 @@ dependencies {
|
|||||||
implementation 'com.squareup.moshi:moshi:1.9.3'
|
implementation 'com.squareup.moshi:moshi:1.9.3'
|
||||||
kapt 'com.squareup.moshi:moshi-kotlin-codegen:1.9.3'
|
kapt 'com.squareup.moshi:moshi-kotlin-codegen:1.9.3'
|
||||||
implementation 'org.jsoup:jsoup:1.13.1'
|
implementation 'org.jsoup:jsoup:1.13.1'
|
||||||
|
implementation 'com.github.AppIntro:AppIntro:6.0.0'
|
||||||
|
implementation 'com.github.tiper:MaterialSpinner:1.4.2'
|
||||||
implementation "com.mikepenz:aboutlibraries-core:$about_libs_version"
|
implementation "com.mikepenz:aboutlibraries-core:$about_libs_version"
|
||||||
implementation "com.mikepenz:aboutlibraries:$about_libs_version"
|
implementation "com.mikepenz:aboutlibraries:$about_libs_version"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,10 @@
|
|||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/AppTheme">
|
android:theme="@style/AppTheme">
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".IntroActivity"
|
||||||
|
android:label="@string/title_intro" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".SettingsActivity"
|
android:name=".SettingsActivity"
|
||||||
android:parentActivityName=".MainActivity"
|
android:parentActivityName=".MainActivity"
|
||||||
|
|||||||
48
app/src/main/java/net/underdesk/circolapp/IntroActivity.kt
Normal file
48
app/src/main/java/net/underdesk/circolapp/IntroActivity.kt
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
package net.underdesk.circolapp
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import androidx.core.content.ContextCompat
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import com.github.appintro.AppIntro2
|
||||||
|
import com.github.appintro.AppIntroFragment
|
||||||
|
import com.github.appintro.AppIntroPageTransformerType
|
||||||
|
import net.underdesk.circolapp.fragments.intro.SchoolSelectionFragment
|
||||||
|
|
||||||
|
class IntroActivity : AppIntro2() {
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
|
isWizardMode = true
|
||||||
|
|
||||||
|
setTransformer(AppIntroPageTransformerType.Depth)
|
||||||
|
|
||||||
|
addSlide(
|
||||||
|
AppIntroFragment.newInstance(
|
||||||
|
title = getString(R.string.title_intro),
|
||||||
|
description = getString(R.string.activity_intro_welcome_description),
|
||||||
|
imageDrawable = R.mipmap.ic_launcher,
|
||||||
|
backgroundColor = ContextCompat.getColor(this, R.color.colorPrimary)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
addSlide(SchoolSelectionFragment.newInstance())
|
||||||
|
addSlide(
|
||||||
|
AppIntroFragment.newInstance(
|
||||||
|
title = getString(R.string.activity_intro_last_slide_title),
|
||||||
|
description = getString(R.string.activity_intro_last_slide_description),
|
||||||
|
backgroundColor = ContextCompat.getColor(this, R.color.colorPrimary)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSkipPressed(currentFragment: Fragment?) {
|
||||||
|
super.onSkipPressed(currentFragment)
|
||||||
|
// Decide what to do when the user clicks on "Skip"
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDonePressed(currentFragment: Fragment?) {
|
||||||
|
super.onDonePressed(currentFragment)
|
||||||
|
// Decide what to do when the user clicks on "Done"
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -76,7 +76,7 @@ class MainActivity : AppCompatActivity(), CircularLetterAdapter.AdapterCallback
|
|||||||
PollWork.enqueue(this)
|
PollWork.enqueue(this)
|
||||||
|
|
||||||
if (getPreferences(Context.MODE_PRIVATE).getBoolean("first_start", true)) {
|
if (getPreferences(Context.MODE_PRIVATE).getBoolean("first_start", true)) {
|
||||||
startInfoActivity()
|
startIntroActivity()
|
||||||
|
|
||||||
getPreferences(Context.MODE_PRIVATE).edit().apply {
|
getPreferences(Context.MODE_PRIVATE).edit().apply {
|
||||||
putBoolean("first_start", false)
|
putBoolean("first_start", false)
|
||||||
@@ -177,6 +177,10 @@ class MainActivity : AppCompatActivity(), CircularLetterAdapter.AdapterCallback
|
|||||||
.start(this@MainActivity)
|
.start(this@MainActivity)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun startIntroActivity() {
|
||||||
|
startActivity(Intent(this, IntroActivity::class.java))
|
||||||
|
}
|
||||||
|
|
||||||
private fun loadDarkTheme() {
|
private fun loadDarkTheme() {
|
||||||
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
|
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,79 @@
|
|||||||
|
package net.underdesk.circolapp.fragments.intro
|
||||||
|
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.ArrayAdapter
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.preference.PreferenceManager
|
||||||
|
import com.github.appintro.SlidePolicy
|
||||||
|
import com.tiper.MaterialSpinner
|
||||||
|
import kotlinx.android.synthetic.main.fragment_school_selection.view.*
|
||||||
|
import net.underdesk.circolapp.R
|
||||||
|
import net.underdesk.circolapp.server.ServerAPI
|
||||||
|
|
||||||
|
class SchoolSelectionFragment : Fragment(), SlidePolicy, MaterialSpinner.OnItemSelectedListener {
|
||||||
|
private lateinit var preferenceManager: SharedPreferences
|
||||||
|
private var schoolSelected = false
|
||||||
|
|
||||||
|
override fun onCreateView(
|
||||||
|
inflater: LayoutInflater,
|
||||||
|
container: ViewGroup?,
|
||||||
|
savedInstanceState: Bundle?
|
||||||
|
): View? = inflater.inflate(R.layout.fragment_school_selection, container, false)
|
||||||
|
|
||||||
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
|
preferenceManager = PreferenceManager.getDefaultSharedPreferences(requireContext())
|
||||||
|
|
||||||
|
val items = getSchoolListArray()
|
||||||
|
val adapter =
|
||||||
|
ArrayAdapter(requireContext(), android.R.layout.simple_spinner_dropdown_item, items)
|
||||||
|
|
||||||
|
view.school_selection_spinner.adapter = adapter
|
||||||
|
view.school_selection_spinner.onItemSelectedListener = this
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getSchoolListArray(): ArrayList<String> {
|
||||||
|
val servers = ServerAPI.Companion.Servers.values()
|
||||||
|
val entryNames = arrayListOf<String>()
|
||||||
|
|
||||||
|
for (i in servers.indices) {
|
||||||
|
entryNames.add(ServerAPI.getServerName(servers[i]))
|
||||||
|
}
|
||||||
|
|
||||||
|
return entryNames
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onItemSelected(parent: MaterialSpinner, view: View?, position: Int, id: Long) {
|
||||||
|
val editor = preferenceManager.edit()
|
||||||
|
editor.putString("school", position.toString())
|
||||||
|
editor.apply()
|
||||||
|
|
||||||
|
ServerAPI.changeServer(position)
|
||||||
|
schoolSelected = true
|
||||||
|
|
||||||
|
parent.error = null
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onNothingSelected(parent: MaterialSpinner) {
|
||||||
|
// Intentionally empty
|
||||||
|
}
|
||||||
|
|
||||||
|
override val isPolicyRespected: Boolean
|
||||||
|
get() = schoolSelected
|
||||||
|
|
||||||
|
override fun onUserIllegallyRequestedNextPage() {
|
||||||
|
view?.school_selection_spinner?.error =
|
||||||
|
getString(R.string.activity_intro_school_selection_error)
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun newInstance(): SchoolSelectionFragment {
|
||||||
|
return SchoolSelectionFragment()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -73,9 +73,10 @@ class ServerAPI(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getInstance(context: Context): ServerAPI {
|
fun getInstance(context: Context): ServerAPI {
|
||||||
|
val preferenceManager = PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
|
|
||||||
val server = Servers.values()[
|
val server = Servers.values()[
|
||||||
PreferenceManager.getDefaultSharedPreferences(context).getString("school", "0")
|
preferenceManager.getString("school", "0")?.toInt() ?: 0
|
||||||
?.toInt() ?: 0
|
|
||||||
]
|
]
|
||||||
|
|
||||||
return instance ?: synchronized(this) {
|
return instance ?: synchronized(this) {
|
||||||
|
|||||||
52
app/src/main/res/layout/fragment_school_selection.xml
Normal file
52
app/src/main/res/layout/fragment_school_selection.xml
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:paddingTop="@dimen/appintro_statusbar_height"
|
||||||
|
android:paddingBottom="@dimen/appintro2_bottombar_height"
|
||||||
|
android:background="@color/colorPrimary">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/school_selection_title"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:gravity="center"
|
||||||
|
app:layout_constraintVertical_weight="2"
|
||||||
|
app:layout_constraintBottom_toTopOf="@+id/school_selection_spinner"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintVertical_chainStyle="spread"
|
||||||
|
style="@style/AppIntroDefaultHeading"
|
||||||
|
android:text="@string/activity_intro_school_selection_title" />
|
||||||
|
|
||||||
|
<com.tiper.MaterialSpinner
|
||||||
|
android:id="@+id/school_selection_spinner"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:hint="@string/activity_intro_school_selection_hint"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.Dense"
|
||||||
|
app:spinnerMode="bottomsheet"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/school_selection_note"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:autoLink="web"
|
||||||
|
app:layout_constraintVertical_weight="3"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/school_selection_spinner"
|
||||||
|
style="@style/AppIntroDefaultText"
|
||||||
|
android:text="@string/activity_intro_school_selection_description" />
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
<string name="title_favourites">Preferiti</string>
|
<string name="title_favourites">Preferiti</string>
|
||||||
<string name="title_reminders">Promemoria</string>
|
<string name="title_reminders">Promemoria</string>
|
||||||
<string name="title_settings">Impostazioni</string>
|
<string name="title_settings">Impostazioni</string>
|
||||||
|
<string name="title_intro">Benvenuto in Circolapp</string>
|
||||||
|
|
||||||
<string name="menu_about">Informazioni</string>
|
<string name="menu_about">Informazioni</string>
|
||||||
<string name="menu_search">Cerca</string>
|
<string name="menu_search">Cerca</string>
|
||||||
@@ -47,6 +48,14 @@
|
|||||||
<string name="activity_info_source_code">Codice sorgente</string>
|
<string name="activity_info_source_code">Codice sorgente</string>
|
||||||
<string name="activity_info_source_code_description">Puoi scaricare il codice sorgente da <a href="https://github.com/Matte23/circolapp">https://github.com/Matte23/circolapp</a></string>
|
<string name="activity_info_source_code_description">Puoi scaricare il codice sorgente da <a href="https://github.com/Matte23/circolapp">https://github.com/Matte23/circolapp</a></string>
|
||||||
|
|
||||||
|
<string name="activity_intro_welcome_description">Con Circolapp puoi rimanere aggiornato sulle circolari della tua scuola. Visualizzare e scaricare le circolari non è mai stato così semplice</string>
|
||||||
|
<string name="activity_intro_school_selection_title">Inizia scegliendo la tua scuola</string>
|
||||||
|
<string name="activity_intro_school_selection_description">Puoi modificare la tua scelta in un secondo momento nelle impostazioni</string>
|
||||||
|
<string name="activity_intro_school_selection_error">Scegli una scuola</string>
|
||||||
|
<string name="activity_intro_school_selection_hint">Scuola</string>
|
||||||
|
<string name="activity_intro_last_slide_title">Hai finito</string>
|
||||||
|
<string name="activity_intro_last_slide_description">Adesso puoi iniziare ad usare Circolapp</string>
|
||||||
|
|
||||||
<string name="dialog_install_pdf_reader_title">Lettore PDF non installato</string>
|
<string name="dialog_install_pdf_reader_title">Lettore PDF non installato</string>
|
||||||
<string name="dialog_install_pdf_reader_content">Installa un lettore di PDF per aprire le circolari</string>
|
<string name="dialog_install_pdf_reader_content">Installa un lettore di PDF per aprire le circolari</string>
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
<string name="title_favourites">Favourites</string>
|
<string name="title_favourites">Favourites</string>
|
||||||
<string name="title_reminders">Reminders</string>
|
<string name="title_reminders">Reminders</string>
|
||||||
<string name="title_settings">Settings</string>
|
<string name="title_settings">Settings</string>
|
||||||
|
<string name="title_intro">Welcome to Circolapp</string>
|
||||||
|
|
||||||
<string name="menu_about">About</string>
|
<string name="menu_about">About</string>
|
||||||
<string name="menu_search">Search</string>
|
<string name="menu_search">Search</string>
|
||||||
@@ -48,6 +49,14 @@
|
|||||||
<string name="activity_info_source_code">Source code</string>
|
<string name="activity_info_source_code">Source code</string>
|
||||||
<string name="activity_info_source_code_description">The source code can be downloaded from <a href="https://github.com/Matte23/circolapp">https://github.com/Matte23/circolapp</a></string>
|
<string name="activity_info_source_code_description">The source code can be downloaded from <a href="https://github.com/Matte23/circolapp">https://github.com/Matte23/circolapp</a></string>
|
||||||
|
|
||||||
|
<string name="activity_intro_welcome_description">With Circolapp you can stay updated on the circulars of your school. Viewing and downloading circulars has never been easier</string>
|
||||||
|
<string name="activity_intro_school_selection_title">Start by choosing your school</string>
|
||||||
|
<string name="activity_intro_school_selection_description">You can change your choice later in the settings</string>
|
||||||
|
<string name="activity_intro_school_selection_error">Please select a school</string>
|
||||||
|
<string name="activity_intro_school_selection_hint">School</string>
|
||||||
|
<string name="activity_intro_last_slide_title">You\'re done</string>
|
||||||
|
<string name="activity_intro_last_slide_description">Now you can start using Circolapp</string>
|
||||||
|
|
||||||
<string name="dialog_install_pdf_reader_title">PDF reader not found</string>
|
<string name="dialog_install_pdf_reader_title">PDF reader not found</string>
|
||||||
<string name="dialog_install_pdf_reader_content">Please install an external application to open circular letters</string>
|
<string name="dialog_install_pdf_reader_content">Please install an external application to open circular letters</string>
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ allprojects {
|
|||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
jcenter()
|
jcenter()
|
||||||
|
maven { url "https://jitpack.io" }
|
||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: "org.jlleitschuh.gradle.ktlint"
|
apply plugin: "org.jlleitschuh.gradle.ktlint"
|
||||||
|
|||||||
Reference in New Issue
Block a user