🆕 Settings Menu

This commit is contained in:
Mylloon 2021-08-29 03:18:24 +02:00
parent 785d51d70c
commit 0d281fd0dd
6 changed files with 173 additions and 81 deletions

View file

@ -2,20 +2,26 @@ package com.mylloon.mobidl
import android.Manifest
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.content.pm.PackageManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.text.Editable
import android.text.TextWatcher
import android.view.Menu
import android.view.MenuItem
import android.widget.Button
import android.widget.EditText
import android.text.Editable
import android.text.TextWatcher
import android.view.MenuItem
import android.view.Menu
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import android.content.SharedPreferences
import android.content.pm.PackageInfo
import android.net.Uri
import android.widget.TextView
class MainActivity : AppCompatActivity() {
@ -30,7 +36,7 @@ class MainActivity : AppCompatActivity() {
companion object {
private var instance: MainActivity? = null
fun applicationContext() : Context {
fun applicationContext(): Context {
return instance!!.applicationContext
}
}
@ -44,44 +50,6 @@ class MainActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
prefs = getSharedPreferences("com.mylloon.MobiDL", MODE_PRIVATE)
fun loginPage() {
setContentView(R.layout.activity_login) // show login page
val userInput = findViewById<EditText>(R.id.usernameInput)
val passwordInput = findViewById<EditText>(R.id.passwordInput)
val buttonInput = findViewById<Button>(R.id.loginButton)
fun changeButtonStatus() { // function who enable/disable the login button
val text1: String = userInput.text.toString()
val text2: String = passwordInput.text.toString()
buttonInput.isEnabled = text1.isNotEmpty() && text2.isNotEmpty()
}
userInput.addTextChangedListener(object : TextWatcher { // looking user input changes
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun afterTextChanged(editable: Editable) {
changeButtonStatus()
}
})
passwordInput.addTextChangedListener(object :
TextWatcher { // looking password input changes
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun afterTextChanged(editable: Editable) {
changeButtonStatus()
}
})
buttonInput.setOnClickListener { // show main page when clicking the login button
val user = userInput.text.toString()
val password = passwordInput.text.toString()
Credentials().store(user, password)
mainPage()
}
}
if (Credentials().get(0) == null) { // test if credentials have already been registered
loginPage() // if no ask for
} else {
@ -89,21 +57,102 @@ class MainActivity : AppCompatActivity() {
}
}
private fun loginPage() {
setContentView(R.layout.activity_login) // show login page
val userInput = findViewById<EditText>(R.id.usernameInput)
val passwordInput = findViewById<EditText>(R.id.passwordInput)
val buttonInput = findViewById<Button>(R.id.loginButton)
fun changeButtonStatus() { // function who enable/disable the login button
val text1: String = userInput.text.toString()
val text2: String = passwordInput.text.toString()
buttonInput.isEnabled = text1.isNotEmpty() && text2.isNotEmpty()
}
userInput.addTextChangedListener(object : TextWatcher { // looking user input changes
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun afterTextChanged(editable: Editable) {
changeButtonStatus()
}
})
passwordInput.addTextChangedListener(object :
TextWatcher { // looking password input changes
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun afterTextChanged(editable: Editable) {
changeButtonStatus()
}
})
buttonInput.setOnClickListener { // show main page when clicking the login button
val user = userInput.text.toString()
val password = passwordInput.text.toString()
Credentials().store(user, password)
mainPage()
}
}
private fun mainPage() {
setContentView(R.layout.activity_main)
toggleSettingsButtonVisibility()
Handler(Looper.getMainLooper()).postDelayed({
toggleSettingsButtonVisibility()
}, 50)
// user = Credentials().get(0).toString()
// password = Credentials().get(1).toString()
// callScript(user, password) // call script
}
@SuppressLint("SetTextI18n")
private fun settingsPage() {
setContentView(R.layout.activity_settings)
toggleSettingsButtonVisibility()
inSettings = true
val pInfo: PackageInfo =
applicationContext().packageManager.getPackageInfo(applicationContext().packageName, 0)
val stringVersion = findViewById<TextView>(R.id.version)
stringVersion.text = "v${pInfo.versionName}"
val credentialsButton = findViewById<Button>(R.id.changeCredentialsButton)
credentialsButton.setOnClickListener { // show main page when clicking the login button
Credentials().delete()
Toast.makeText(this@MainActivity, "Deleted credentials", Toast.LENGTH_LONG)
.show()
toggleSettingsButtonVisibility()
loginPage()
}
val sourceCodeButton = findViewById<Button>(R.id.sourcecodeButton)
sourceCodeButton.setOnClickListener {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(
"https://gitlab.com/Mylloon/mobilismScrap/-/tree/android"
)))
}
}
private fun callScript(user: String, password: String) {
if (ContextCompat.checkSelfPermission(this@MainActivity, Manifest.permission.INTERNET)
!= PackageManager.PERMISSION_GRANTED
) {
Toast.makeText(this@MainActivity, "No permission to use the internet", Toast.LENGTH_SHORT).show()
this.finishAffinity()
} else {
println("test du script")
Scraper(user, password, app = "Plex", debug = true).search()
}
}
override fun onResume() {
super.onResume()
if (prefs!!.getBoolean("firstrun", true)) {
println("Generate RSA keys...")
Credentials().generateKey()
println("Done!")
prefs!!.edit().putBoolean("firstrun", false).apply() // first run done, now the next ones won't be "first".
prefs!!.edit().putBoolean("firstrun", false)
.apply() // first run done, now the next ones won't be "first".
}
}
@ -116,9 +165,7 @@ class MainActivity : AppCompatActivity() {
override fun onOptionsItemSelected(item: MenuItem): Boolean { // go to settings page when clicking on settings button
when (item.itemId) {
R.id.settingsButton -> {
setContentView(R.layout.activity_settings)
toggleSettingsButtonVisibility()
inSettings = true
settingsPage()
}
}
return super.onOptionsItemSelected(item)
@ -130,15 +177,4 @@ class MainActivity : AppCompatActivity() {
inSettings = false
} else super.onBackPressed()
}
private fun callScript(user: String, password: String) {
if(ContextCompat.checkSelfPermission(this@MainActivity, Manifest.permission.INTERNET)
!= PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this@MainActivity, "No permission to use internet", Toast.LENGTH_SHORT).show()
this.finishAffinity()
} else {
println("test du script")
Scraper(user, password, app = "Plex", debug = true).search()
}
}
}

View file

@ -8,66 +8,67 @@
tools:context=".MainActivity">
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/exo_2_light"
android:text="@string/titleLogin"
android:textAlignment="center"
android:textSize="34sp"
app:layout_constraintBottom_toTopOf="@+id/usernameInput"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.692" />
app:layout_constraintVertical_bias="0.111" />
<EditText
android:id="@+id/usernameInput"
android:layout_width="331dp"
android:layout_height="48dp"
android:layout_marginTop="60dp"
android:autofillHints="username"
android:ems="10"
android:fontFamily="@font/exo_2_light"
android:hint="@string/userLogin"
android:inputType="textPersonName"
app:layout_constraintBottom_toTopOf="@+id/passwordInput"
app:layout_constraintHorizontal_bias="0.504"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.864"
app:layout_constraintTop_toBottomOf="@+id/textView2"
app:layout_constraintVertical_bias="0.0"
tools:ignore="TextContrastCheck" />
<EditText
android:id="@+id/passwordInput"
android:layout_width="331dp"
android:layout_height="48dp"
android:layout_marginTop="23dp"
android:autofillHints="password"
android:ems="10"
android:fontFamily="@font/exo_2_light"
android:hint="@string/passwordLogin"
android:inputType="textPassword"
app:layout_constraintBottom_toTopOf="@+id/loginButton"
app:layout_constraintHorizontal_bias="0.504"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.88"
app:layout_constraintTop_toBottomOf="@+id/usernameInput"
app:layout_constraintVertical_bias="0.007"
tools:ignore="TextContrastCheck" />
<Button
android:id="@+id/loginButton"
android:layout_width="345dp"
android:layout_height="102dp"
android:layout_marginTop="65dp"
android:enabled="false"
android:fontFamily="@font/exo_2_medium"
android:text="@string/buttonLogin"
android:textSize="34sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.505"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.54" />
app:layout_constraintTop_toBottomOf="@+id/passwordInput"
app:layout_constraintVertical_bias="0.0" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -8,11 +8,53 @@
tools:context=".MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="256dp"
android:text="SETTINGS"
android:id="@+id/textView"
android:layout_width="232dp"
android:layout_height="47dp"
android:fontFamily="@font/exo_2_medium"
android:text="@string/titleSettings"
android:textAlignment="center"
android:textSize="34sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
app:layout_constraintVertical_bias="0.131" />
<Button
android:id="@+id/changeCredentialsButton"
android:layout_width="198dp"
android:layout_height="85dp"
android:layout_marginTop="99dp"
android:text="@string/changeCredentials"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
app:layout_constraintVertical_bias="0.099" />
<Button
android:id="@+id/sourcecodeButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="43dp"
android:text="@string/sourceCode"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/changeCredentialsButton"
app:layout_constraintVertical_bias="0.0" />
<TextView
android:id="@+id/version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/sourcecodeButton"
app:layout_constraintVertical_bias="0.08" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -5,7 +5,7 @@
<item
android:id="@+id/settingsButton"
android:icon="@drawable/ic_settings"
android:title="Settings"
android:title="@string/titleSettings"
android:visible="false"
app:showAsAction="always" />
</menu>

View file

@ -4,4 +4,9 @@
<string name="userLogin" translatable="true">Identifiant</string>
<string name="passwordLogin" translatable="true">Mot de passe</string>
<string name="buttonLogin" translatable="true">Connexion</string>
<string name="titleSettings" translatable="true">Paramètres</string>
<string name="changeCredentials">Change les identifiants</string>
<string name="sourceCode">Code source</string>
<string name="credits">Crédits</string>
</resources>

View file

@ -1,7 +1,15 @@
<resources>
<string name="app_name" translatable="false">MobiDL</string>
<!-- Login page -->
<string name="titleLogin">Login to your Mobilism account</string>
<string name="userLogin">Username</string>
<string name="passwordLogin">Password</string>
<string name="buttonLogin">Login</string>
<!-- Settings page -->
<string name="titleSettings">Settings</string>
<string name="changeCredentials">Change credentials</string>
<string name="sourceCode">Source code</string>
<string name="credits">Credits</string>
</resources>