diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 69f2f02..4c667d0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,7 +16,7 @@ - + > + android:parentActivityName=".StartActivity" > +> + android:parentActivityName=".LoginActivity" > + android:parentActivityName=".MainActivity" > - - + + + + android:parentActivityName=".MainActivity" > + + diff --git a/app/src/main/java/org/deke/risk/riskahead/LoginActivity.java b/app/src/main/java/org/deke/risk/riskahead/LoginActivity.java index 677d547..24e075f 100644 --- a/app/src/main/java/org/deke/risk/riskahead/LoginActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/LoginActivity.java @@ -1,6 +1,10 @@ package org.deke.risk.riskahead; +import android.app.AlertDialog; +import android.app.Dialog; import android.app.ProgressDialog; +import android.content.Context; +import android.content.DialogInterface; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.content.Intent; @@ -15,6 +19,7 @@ import android.widget.Button; import android.widget.TextView; import android.widget.Toast; +import com.android.volley.Request; import com.facebook.CallbackManager; import org.deke.risk.riskahead.fragments.FacebookButtonFragment; @@ -43,20 +48,20 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr private TextView input_email; private TextView input_full_name; private TextView input_password; + private Context thiscontext; private ProgressDialog pDialog; private SessionManager session; public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE"; private SQLiteHandler db; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); inputMsg = intent.getStringExtra(StartActivity.EXTRA_MESSAGE); callbackManager = CallbackManager.Factory.create(); - + thiscontext = this; // Session manager session = new SessionManager(getApplicationContext()); @@ -124,20 +129,6 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr }); } - private boolean isEmpty(TextView etText) { - return etText.getText().toString().trim().length() == 0; - } - - public void showMessage(String statusText){ - Toast.makeText(this, statusText, Toast.LENGTH_LONG).show(); - } - - - public void onFragmentInteraction(Uri uri){ - //you can leave it empty - } - - @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_login, menu); @@ -155,6 +146,21 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr return super.onOptionsItemSelected(item); } + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == GooglePlusButtonFragment.RC_SIGN_IN) { + GooglePlusButtonFragment fragment = (GooglePlusButtonFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_btn_gp); + fragment.onActivityResult(requestCode, resultCode, data); + } else { + super.onActivityResult(requestCode, resultCode, data); + } + + TwitterButtonFragment twitter_fragment = (TwitterButtonFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_btn_tw); + if (twitter_fragment != null) { + twitter_fragment.onActivityResult(requestCode, resultCode, data); + } + } + public void handleSocialMediaLogin(final String key, final String providerType, final String username, final String email){ if(session.isLoggedIn()){ Intent intent = new Intent( @@ -171,7 +177,69 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr pDialog.setMessage("Social Media Login ..."); showDialog(); - StringRequest strReq = new StringRequest(Method.POST, + StringRequest strReq = getStringRequestSocialMediaLogin(key, providerType, username, email); + + // Adding request to request queue + AppController.getInstance().addToRequestQueue(strReq, tag_string_req); + } + + private void checkLogin(final String email, final String password) { + // Tag used to cancel the request + String tag_string_req = "req_login"; + db.deleteUsers(); + pDialog.setMessage("Logging in ..."); + showDialog(); + + StringRequest strReq = getStringRequestLogin(email, password); + + // Adding request to request queue + AppController.getInstance().addToRequestQueue(strReq, tag_string_req); + } + + private void registerUser(final String username, final String email,final String password) { + // Tag used to cancel the request + String tag_string_req = "req_register"; + db.deleteUsers(); + pDialog.setMessage("Registering ..."); + showDialog(); + + StringRequest strReq = getStringRequestRegisterUser(username, email, password); + + // Adding request to request queue + AppController.getInstance().addToRequestQueue(strReq, tag_string_req); + } + + public void onClick(View view){ + if(input_email.getText().toString().isEmpty()){ + showMessage("Enter your E-Mail to reset your password"); + return; + } + + new AlertDialog.Builder(this) + .setTitle("Send password reset E-Mail") + .setMessage("Do you really want to reset your password? An E-Mail will be send to your address. Please follow the instructions to reset your password.") + .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + String tag_string_req = "requestpwreset"; + + StringRequest strReq = getStringRequestResetPW(input_email.getText().toString()); + + // Adding request to request queue + AppController.getInstance().addToRequestQueue(strReq, tag_string_req); + showMessage("E-Mail was sent to your address"); + } + }) + .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + // do nothing + } + }) + .setIcon(android.R.drawable.ic_dialog_alert) + .show(); + } + + private StringRequest getStringRequestSocialMediaLogin(final String key, final String providerType, final String username, final String email) { + return new StringRequest(Method.POST, AppConfig.URL_REGISTER, new Response.Listener() { @Override @@ -248,37 +316,10 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr } }; - - // Adding request to request queue - AppController.getInstance().addToRequestQueue(strReq, tag_string_req); } - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == GooglePlusButtonFragment.RC_SIGN_IN) { - GooglePlusButtonFragment fragment = (GooglePlusButtonFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_btn_gp); - fragment.onActivityResult(requestCode, resultCode, data); - } else { - super.onActivityResult(requestCode, resultCode, data); - } - - TwitterButtonFragment twitter_fragment = (TwitterButtonFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_btn_tw); - if (twitter_fragment != null) { - twitter_fragment.onActivityResult(requestCode, resultCode, data); - } - } - - /** - * function to verify login details in mysql db - * */ - private void checkLogin(final String email, final String password) { - // Tag used to cancel the request - String tag_string_req = "req_login"; - db.deleteUsers(); - pDialog.setMessage("Logging in ..."); - showDialog(); - - StringRequest strReq = new StringRequest(Method.POST, AppConfig.URL_REGISTER, new Response.Listener() { + private StringRequest getStringRequestLogin(final String email, final String password) { + return new StringRequest(Method.POST, AppConfig.URL_REGISTER, new Response.Listener() { @Override public void onResponse(String response) { @@ -291,10 +332,6 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr // Check for error node in json if (!error) { - // user successfully logged in - // Create login session - session.setLogin(true); - // Now store the user in sqlite String uid = jObj.getString("uid"); @@ -308,17 +345,45 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr String updated_at = user.getString("updated_at"); String providerType = "local"; - // Inserting row in users table - db.addUser(uid, username, name, surname, email, status, providerType, created_at, updated_at); + if(status.equals("0")){ + new AlertDialog.Builder(thiscontext) + .setTitle("Activate your account") + .setMessage("Your account is not activated yet. Please follow the instructions in your E-Mail. Do you want to resent the E-Mail?") + .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + String tag_string_req = "resendactivationusermail"; - // Launch main activity - Intent intent = new Intent(LoginActivity.this, MainActivity.class); - startActivity(intent); - finish(); + StringRequest strReq = getStringRequestActivationLinkUser(input_email.getText().toString()); + + // Adding request to request queue + AppController.getInstance().addToRequestQueue(strReq, tag_string_req); + showMessage("E-Mail was sent to your address"); + } + }) + .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + //do nothing + } + }) + .setIcon(android.R.drawable.ic_dialog_alert) + .show(); + }else { + // Inserting row in users table + db.addUser(uid, username, name, surname, email, status, providerType, created_at, updated_at); + + // user successfully logged in + // Create login session + session.setLogin(true); + + // Launch main activity + Intent intent = new Intent(LoginActivity.this, MainActivity.class); + startActivity(intent); + finish(); + } } else { // Error in login. Get the error message String errorMsg = jObj.getString("error_msg"); - Toast.makeText(getApplicationContext(),errorMsg, Toast.LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), errorMsg, Toast.LENGTH_LONG).show(); } } catch (JSONException e) { // JSON error @@ -349,56 +414,89 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr } }; - - // Adding request to request queue - AppController.getInstance().addToRequestQueue(strReq, tag_string_req); } - /** - * Function to store user in MySQL database will post params(tag, name,* email, password) to register url - * */ - private void registerUser(final String username, final String email,final String password) { - // Tag used to cancel the request - String tag_string_req = "req_register"; - db.deleteUsers(); - pDialog.setMessage("Registering ..."); - showDialog(); + private StringRequest getStringRequestRegisterUser(final String username, final String email, final String password) { + return new StringRequest(Method.POST, AppConfig.URL_REGISTER, new Response.Listener() { - StringRequest strReq = new StringRequest(Method.POST, - AppConfig.URL_REGISTER, new Response.Listener() { + @Override + public void onResponse(String response) { + Log.d(TAG, "Register Response: " + response.toString()); + hideDialog(); + + try { + JSONObject jObj = new JSONObject(response); + boolean error = jObj.getBoolean("error"); + if (!error) { + new AlertDialog.Builder(getApplicationContext()) + .setTitle("Activation Link") + .setMessage("An activation link was send to your e-mail address. Please follow the instructions to activate your account. Thank you!") + .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + //do nothing + } + }) + .setIcon(android.R.drawable.ic_dialog_alert) + .show(); + + // Launch login activity + Intent intent = new Intent( + LoginActivity.this, + LoginActivity.class); + intent.putExtra(EXTRA_MESSAGE, "login"); + startActivity(intent); + finish(); + } else { + + // Error occurred in registration. Get the error + // message + String errorMsg = jObj.getString("error_msg"); + Toast.makeText(getApplicationContext(), + errorMsg, Toast.LENGTH_LONG).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + } + + } + }, new Response.ErrorListener() { + + @Override + public void onErrorResponse(VolleyError error) { + Log.e(TAG, "Registration Error: " + error.getMessage()); + Toast.makeText(getApplicationContext(), + error.getMessage(), Toast.LENGTH_LONG).show(); + hideDialog(); + } + }) { + + @Override + protected Map getParams() { + // Posting params to register url + Map params = new HashMap(); + params.put("tag", "register"); + params.put("username", username); + params.put("email", email); + params.put("password", password); + + return params; + } + }; + } + + private StringRequest getStringRequestResetPW(final String email) { + return new StringRequest(Method.POST, AppConfig.URL_REGISTER, new Response.Listener() { @Override public void onResponse(String response) { - Log.d(TAG, "Register Response: " + response.toString()); + Log.d(TAG, "Resend E-Mail Response: " + response.toString()); hideDialog(); try { JSONObject jObj = new JSONObject(response); boolean error = jObj.getBoolean("error"); if (!error) { - // User successfully stored in MySQL - // Now store the user in sqlite - String uid = jObj.getString("uid"); - - JSONObject user = jObj.getJSONObject("user"); - String username = user.getString("username"); - String name = user.getString("name"); - String surname = user.getString("surname"); - String email = user.getString("email"); - String status = user.getString("status"); - String created_at = user.getString("created_at"); - String updated_at = user.getString("updated_at"); - String providerType = "local"; - - // Inserting row in users table - db.addUser(uid, username, name, surname, email, status, providerType, created_at, updated_at); - // Launch login activity - Intent intent = new Intent( - LoginActivity.this, - LoginActivity.class); - intent.putExtra(EXTRA_MESSAGE, "login"); - startActivity(intent); - finish(); + // do nothing actually } else { // Error occurred in registration. Get the error @@ -416,7 +514,7 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr @Override public void onErrorResponse(VolleyError error) { - Log.e(TAG, "Registration Error: " + error.getMessage()); + Log.e(TAG, "E-Mail pw resend Error: " + error.getMessage()); Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show(); hideDialog(); @@ -427,18 +525,73 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr protected Map getParams() { // Posting params to register url Map params = new HashMap(); - params.put("tag", "register"); - params.put("username", username); + params.put("tag", "requestpwreset"); params.put("email", email); - params.put("password", password); return params; } - }; + } - // Adding request to request queue - AppController.getInstance().addToRequestQueue(strReq, tag_string_req); + private StringRequest getStringRequestActivationLinkUser(final String email) { + return new StringRequest(Method.POST, AppConfig.URL_REGISTER, new Response.Listener() { + + @Override + public void onResponse(String response) { + Log.d(TAG, "Resend E-Mail Response: " + response.toString()); + hideDialog(); + + try { + JSONObject jObj = new JSONObject(response); + boolean error = jObj.getBoolean("error"); + if (!error) { + // do nothing actually + } else { + + // Error occurred in registration. Get the error + // message + String errorMsg = jObj.getString("error_msg"); + Toast.makeText(getApplicationContext(), + errorMsg, Toast.LENGTH_LONG).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + } + + } + }, new Response.ErrorListener() { + + @Override + public void onErrorResponse(VolleyError error) { + Log.e(TAG, "E-Mail pw resend Error: " + error.getMessage()); + Toast.makeText(getApplicationContext(), + error.getMessage(), Toast.LENGTH_LONG).show(); + hideDialog(); + } + }) { + + @Override + protected Map getParams() { + // Posting params to register url + Map params = new HashMap(); + params.put("tag", "resendactivationusermail"); + params.put("email", email); + + return params; + } + }; + } + + private boolean isEmpty(TextView etText) { + return etText.getText().toString().trim().length() == 0; + } + + public void showMessage(String statusText){ + Toast.makeText(this, statusText, Toast.LENGTH_LONG).show(); + } + + public void onFragmentInteraction(Uri uri){ + //you can leave it empty } private void showDialog() { @@ -450,5 +603,4 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr if (pDialog.isShowing()) pDialog.dismiss(); } - } diff --git a/app/src/main/java/org/deke/risk/riskahead/ReportActivity.java b/app/src/main/java/org/deke/risk/riskahead/ReportActivity.java new file mode 100644 index 0000000..7ae162a --- /dev/null +++ b/app/src/main/java/org/deke/risk/riskahead/ReportActivity.java @@ -0,0 +1,50 @@ +package org.deke.risk.riskahead; + +import android.support.v7.app.ActionBarActivity; +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuItem; + +import org.deke.risk.riskahead.helper.BaseActivity; + + +public class ReportActivity extends BaseActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_report); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_report, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + + //noinspection SimplifiableIfStatement + if (id == R.id.action_settings) { + return true; + } + + return super.onOptionsItemSelected(item); + } + + @Override + protected int getLayoutResourceId() { + return 0; + } + + @Override + protected String getActivityName() { + return null; + } +} diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java b/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java index 25ba705..d05859c 100644 --- a/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java @@ -111,7 +111,7 @@ public abstract class BaseActivity extends AppCompatActivity { } private void addDrawerItems() { - String[] osArray = { "Start", "Maps", "Profile", "Settings", "Subscription", "Logout" }; + String[] osArray = { "Start", "Report", "Incident Map", "Profile", "Settings", "Subscription", "Logout" }; mAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, osArray); mDrawerList.setAdapter(mAdapter); diff --git a/app/src/main/res/drawable/logo_riskahead.png b/app/src/main/res/drawable/logo_riskahead.png index 9f56647..9b62faa 100644 Binary files a/app/src/main/res/drawable/logo_riskahead.png and b/app/src/main/res/drawable/logo_riskahead.png differ diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 85b9bba..f2d0134 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -13,6 +13,9 @@ android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" + android:textSize="20sp" + android:typeface="sans" + android:textStyle="bold" android:id="@+id/hello" /> @@ -117,6 +120,8 @@ @@ -12,14 +14,81 @@ android:layout_height="match_parent" > + android:layout_marginTop="52dp" + android:textColor="@color/white"/> + + + + + + + + + + + + + + + android:layout_centerHorizontal="true" /> + + + + diff --git a/app/src/main/res/layout/fragment_facebook_button.xml b/app/src/main/res/layout/fragment_facebook_button.xml index f54f4e7..095c094 100644 --- a/app/src/main/res/layout/fragment_facebook_button.xml +++ b/app/src/main/res/layout/fragment_facebook_button.xml @@ -4,15 +4,7 @@ xmlns:bootstrap="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" tools:context="org.deke.risk.riskahead.fragments.FacebookButtonFragment"> - + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0f17645..fc0f2de 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,9 +1,9 @@ RiskAhead 658657714234846 - New here? Please register to use our service! - Already registrated? Please log in to use our service! - Resend Password + Register to RiskAhead + Log-in to RiskAhead + Forgot your password?\nClick here Settings Terms of Service and\nPrivacy Policy Full Name @@ -43,4 +43,7 @@ Label Location search settings + ReportActivity + + Hello world!