add login dialog
* show dialog if no credentials are present
This commit is contained in:
		| @ -54,6 +54,8 @@ dependencies { | ||||
|  | ||||
|     implementation 'org.jsoup:jsoup:1.13.1' | ||||
|     implementation 'com.github.bumptech.glide:glide:4.11.0' | ||||
|     implementation 'com.afollestad.material-dialogs:core:3.3.0' | ||||
|     implementation 'com.afollestad.material-dialogs:bottomsheets:3.3.0' | ||||
|  | ||||
|     testImplementation 'junit:junit:4.12' | ||||
|     androidTestImplementation 'androidx.test.ext:junit:1.1.2' | ||||
|  | ||||
| @ -13,6 +13,7 @@ import org.mosad.teapod.parser.AoDParser | ||||
| import org.mosad.teapod.preferences.EncryptedPreferences | ||||
| import org.mosad.teapod.ui.MediaFragment | ||||
| import org.mosad.teapod.ui.account.AccountFragment | ||||
| import org.mosad.teapod.ui.components.LoginDialog | ||||
| import org.mosad.teapod.ui.home.HomeFragment | ||||
| import org.mosad.teapod.ui.library.LibraryFragment | ||||
| import org.mosad.teapod.ui.search.SearchFragment | ||||
| @ -77,8 +78,12 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS | ||||
|         if (EncryptedPreferences.password.isEmpty()) { | ||||
|             Log.i(javaClass.name, "please login!") | ||||
|  | ||||
|             // TODO show login dialog | ||||
|             //EncryptedPreferences.saveCredentials("", "", this) | ||||
|             LoginDialog(this).positiveButton { | ||||
|                 EncryptedPreferences.saveCredentials(email, password, context) | ||||
|             }.negativeButton { | ||||
|                 Log.i(javaClass.name, "Login canceled, exiting.") | ||||
|                 finish() | ||||
|             }.show() | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
| @ -0,0 +1,95 @@ | ||||
| /** | ||||
|  * ProjectLaogai | ||||
|  * | ||||
|  * Copyright 2019-2020  <seil0@mosad.xyz> | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, | ||||
|  * MA 02110-1301, USA. | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| package org.mosad.teapod.ui.components | ||||
|  | ||||
| import android.content.Context | ||||
| import android.widget.EditText | ||||
| import com.afollestad.materialdialogs.MaterialDialog | ||||
| import com.afollestad.materialdialogs.WhichButton | ||||
| import com.afollestad.materialdialogs.actions.getActionButton | ||||
| import com.afollestad.materialdialogs.bottomsheets.BottomSheet | ||||
| import com.afollestad.materialdialogs.bottomsheets.setPeekHeight | ||||
| import com.afollestad.materialdialogs.customview.customView | ||||
| import com.afollestad.materialdialogs.customview.getCustomView | ||||
| import org.mosad.teapod.R | ||||
|  | ||||
| class LoginDialog(val context: Context) { | ||||
|  | ||||
|     private val dialog = MaterialDialog(context, BottomSheet()) | ||||
|  | ||||
|     private val editTextLogin: EditText | ||||
|     private val editTextPassword: EditText | ||||
|  | ||||
|     var email = "" | ||||
|     var password = "" | ||||
|  | ||||
|     init { | ||||
|         dialog.title(R.string.login) | ||||
|             .message(R.string.login_desc) | ||||
|             .customView(R.layout.dialog_login) | ||||
|             .positiveButton(R.string.save) | ||||
|             .negativeButton(R.string.cancel) | ||||
|             .setPeekHeight(900) | ||||
|  | ||||
|         editTextLogin = dialog.getCustomView().findViewById(R.id.edit_text_login) | ||||
|         editTextPassword = dialog.getCustomView().findViewById(R.id.edit_text_password) | ||||
|  | ||||
|         // fix not working accent color | ||||
|         //dialog.getActionButton(WhichButton.POSITIVE).updateTextColor(Preferences.colorAccent) | ||||
|         //dialog.getActionButton(WhichButton.NEGATIVE).updateTextColor(Preferences.colorAccent) | ||||
|     } | ||||
|  | ||||
|     fun positiveButton(func: LoginDialog.() -> Unit): LoginDialog = apply { | ||||
|         dialog.positiveButton { | ||||
|             email = editTextLogin.text.toString() | ||||
|             password = editTextPassword.text.toString() | ||||
|  | ||||
|             func() | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fun negativeButton(func: LoginDialog.() -> Unit): LoginDialog = apply { | ||||
|         dialog.negativeButton { | ||||
|             func() | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fun show() { | ||||
|         dialog.show() | ||||
|     } | ||||
|  | ||||
|     fun show(func: LoginDialog.() -> Unit): LoginDialog = apply { | ||||
|         func() | ||||
|  | ||||
|         editTextLogin.setText(email) | ||||
|         editTextPassword.setText(password) | ||||
|  | ||||
|         show() | ||||
|     } | ||||
|  | ||||
|     @Suppress("unused") | ||||
|     fun dismiss() { | ||||
|         dialog.dismiss() | ||||
|     } | ||||
|  | ||||
| } | ||||
							
								
								
									
										30
									
								
								app/src/main/res/layout/dialog_login.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								app/src/main/res/layout/dialog_login.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     android:id="@+id/linLayout_login" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" | ||||
|     android:orientation="vertical" | ||||
|     android:paddingStart="24dp" | ||||
|     android:paddingEnd="24dp"> | ||||
|  | ||||
|     <EditText | ||||
|         android:id="@+id/edit_text_login" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_margin="7dp" | ||||
|         android:ems="10" | ||||
|         android:hint="@string/login" | ||||
|         android:importantForAutofill="no" | ||||
|         android:inputType="textEmailAddress" /> | ||||
|  | ||||
|     <EditText | ||||
|         android:id="@+id/edit_text_password" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_margin="7dp" | ||||
|         android:ems="10" | ||||
|         android:hint="@string/password" | ||||
|         android:importantForAutofill="no" | ||||
|         android:inputType="textPassword" /> | ||||
|  | ||||
| </LinearLayout> | ||||
| @ -5,6 +5,15 @@ | ||||
|     <string name="title_search">Search</string> | ||||
|     <string name="title_account">Account</string> | ||||
|  | ||||
|     <!-- dialogs --> | ||||
|     <string name="save">save</string> | ||||
|     <string name="cancel">@android:string/cancel</string> | ||||
|  | ||||
|     <!-- etc --> | ||||
|     <string name="login">Login</string> | ||||
|     <string name="login_desc">You need to login before you can use Teapod. Your Login-Data will be stored encrypted on your device.</string> | ||||
|     <string name="password">Password</string> | ||||
|  | ||||
|     <!-- save keys --> | ||||
|     <string name="encrypted_preference_file_key" translatable="false">org.mosad.teapod.encrypted_preferences</string> | ||||
|     <string name="save_key_user_login" translatable="false">org.mosad.teapod.user_login</string> | ||||
|  | ||||
		Reference in New Issue
	
	Block a user