-
-
Save hlnstepanova/efdef6849be5d535f35e327406b01216 to your computer and use it in GitHub Desktop.
LoginFragment.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package de.comp.proj.androidApp.fragments.login | |
import android.content.DialogInterface | |
import android.os.Bundle | |
import android.view.* | |
import androidx.appcompat.app.AlertDialog | |
import androidx.databinding.DataBindingUtil | |
import androidx.fragment.app.Fragment | |
import androidx.lifecycle.Observer | |
import androidx.lifecycle.ViewModelProvider | |
import androidx.navigation.fragment.findNavController | |
import androidx.navigation.navGraphViewModels | |
import de.comp.proj.androidApp.R | |
import de.comp.proj.androidApp.databinding.FragmentLoginBinding | |
import de.comp.proj.shared.models.LoginModel | |
import dev.icerock.moko.mvvm.MvvmEventsFragment | |
import dev.icerock.moko.resources.desc.StringDesc | |
import org.koin.core.KoinComponent | |
import de.comp.proj.androidApp.BR | |
import dev.icerock.moko.mvvm.createViewModelFactory | |
import dev.icerock.moko.mvvm.dispatcher.eventsDispatcherOnMain | |
class LoginFragment : MvvmEventsFragment<FragmentLoginBinding, LoginModel, LoginModel.EventsListener>(), LoginModel.EventsListener, KoinComponent { | |
protected val loginModel: LoginModel by navGraphViewModels(R.id.nav_graph) | |
override val layoutId: Int = R.layout.fragment_login | |
override val viewModelClass: Class<LoginModel> = LoginModel::class.java | |
override val viewModelVariableId: Int = BR.viewModel | |
override fun viewModelFactory(): ViewModelProvider.Factory { | |
return createViewModelFactory { | |
loginModel | |
} | |
} | |
fun showErrorDialog(error: String){ | |
val dialogBuilder = AlertDialog.Builder(activity!!) | |
val alert = dialogBuilder.setMessage(error) | |
.setCancelable(false) | |
.setPositiveButton(getString(R.string.ok)) { dialog, _ -> | |
dialog.dismiss() | |
} | |
.create() | |
alert.setTitle(getString(R.string.error)) | |
alert.show() | |
} | |
override fun navigateToDeviceList(username: String) { | |
username.let { | |
this.findNavController().navigate(LoginFragmentDirections.actionLoginFragmentToDeviceListFragment(it)) | |
} | |
} | |
override fun navigateToFavouritesList(url: String) { | |
url.let { | |
this.findNavController().navigate(LoginFragmentDirections.actionLoginFragmentToFavouriteListFragment( | |
"https://$it")) | |
} | |
} | |
override fun showError(error: StringDesc) { | |
error.let { | |
showErrorDialog(it.toString(activity!!)) | |
} | |
} | |
override fun onCreate(savedInstanceState: Bundle?) { | |
super.onCreate(savedInstanceState) | |
setHasOptionsMenu(true) | |
} | |
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { | |
super.onCreateOptionsMenu(menu, inflater) | |
inflater.inflate(R.menu.options_menu, menu) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment