diff --git a/app/src/main/java/de/sebse/fuplanner/MainActivity.java b/app/src/main/java/de/sebse/fuplanner/MainActivity.java index f379311..a0aa3e5 100644 --- a/app/src/main/java/de/sebse/fuplanner/MainActivity.java +++ b/app/src/main/java/de/sebse/fuplanner/MainActivity.java @@ -6,6 +6,7 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; +import android.widget.Toast; import com.google.android.material.navigation.NavigationView; @@ -476,36 +477,54 @@ public class MainActivity extends AppCompatActivity toLoginState(loginToken.getFullname(), loginToken.getEmail(), getDefaultFragmentAfterLogin(), "", onlineMode); } + @Override public void onModulesFragmentInteraction(final String itemID) { changeFragment(FRAGMENT_MODULES_DETAILS, itemID); } + @Override public void onCanteensFragmentInteraction(final int itemID) { changeFragment(FRAGMENT_CANTEENS_DETAILS, String.valueOf(itemID)); } + @Override public void onTitleTextChange(String newTitle) { setTitle(newTitle); } + @Override public void onTitleTextChange(@StringRes int titleId) { setTitle(titleId); } + @Override public void loginTokenInvalid(boolean doPrecheck) { getKVV().invalidate(); checkAndDoLogin(); } + @Override public void refreshFailed(boolean isFailed) { setRefreshFailedBanner(isFailed); } + @Override public void addRequestPermissionsResultListener(RequestPermissionsResultListener listener, String id) { permissionListeners.put(id, listener); } + @Override public void removeRequestPermissionsResultListener(String id) { permissionListeners.remove(id); } + + @Override + public void showToast(@StringRes int msgStringRes) { + showToast(getString(msgStringRes)); + } + + @Override + public void showToast(String message) { + Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); + } } diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/LoginFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/LoginFragment.java index 30ee62a..6471594 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/LoginFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/LoginFragment.java @@ -33,6 +33,7 @@ import de.sebse.fuplanner.tools.logging.Logger; public class LoginFragment extends Fragment { private OnLoginFragmentInteractionListener mListener; private final Logger log = new Logger(this); + private MainActivityListener mActivityListener; public LoginFragment() { // Required empty public constructor @@ -96,10 +97,20 @@ public class LoginFragment extends Fragment { kvv.login(username, password, success -> { progressDialog.dismiss(); gauth.setLoginState(username, password); - if (mListener != null) + if (mListener != null) { + input_usr.setError(null); + input_pwd.setError(null); mListener.onLoginFragmentInteraction(success, true); + } }, error -> { progressDialog.dismiss(); + // Invalid password + if (error.getCode() == 100131 && mActivityListener != null) { + mActivityListener.showToast(R.string.invalid_credentials); + input_usr.setError(input_usr.getResources().getString(R.string.invalid_credentials)); + input_pwd.setError(input_pwd.getResources().getString(R.string.invalid_credentials)); + } else + mActivityListener.showToast(v.getResources().getString(R.string.error_occurred_code, error.getCode())); log.e("Error on KVV login!", error); }); } @@ -120,9 +131,10 @@ public class LoginFragment extends Fragment { throw new RuntimeException(context.toString() + " must implement OnLoginFragmentInteractionListener"); } - if (context instanceof MainActivityListener) - ((MainActivityListener) context).onTitleTextChange(R.string.log_in); - else + if (context instanceof MainActivityListener) { + mActivityListener = (MainActivityListener) context; + mActivityListener.onTitleTextChange(R.string.log_in); + } else throw new RuntimeException(context.toString() + "must implement MainActivityListener"); } diff --git a/app/src/main/java/de/sebse/fuplanner/tools/MainActivityListener.java b/app/src/main/java/de/sebse/fuplanner/tools/MainActivityListener.java index 3efe281..6e2cfb1 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/MainActivityListener.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/MainActivityListener.java @@ -24,4 +24,8 @@ public interface MainActivityListener { void addRequestPermissionsResultListener(RequestPermissionsResultListener listener, String id); void removeRequestPermissionsResultListener(String id); + + void showToast(@StringRes int msgStringRes); + + void showToast(String message); } diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index acd5e32..1014709 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -61,4 +61,6 @@ Datei Öffnen Download-Fehler Beim Herunterladen der Datei ist ein Fehler aufgetreten. Prüfe, ob Du mit dem Internet verbunden bist und der App Zugriff auf den Speicher gewährt hast. + Ungültiger Benutzername oder Password! + Fehler %1$d aufgetreten! \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 04e4a3d..cb4f7b2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -68,4 +68,6 @@ Open File Download Error An error occurred while downloading the file. Please check if you are connected to the internet and if you have granted storage access to the app. + Invalid username or password! + Error occurred: %1$d