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