diff --git a/app/build.gradle b/app/build.gradle index 3685969..70714d4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -45,5 +45,5 @@ dependencies { compile('com.twitter.sdk.android:twitter-core:1.4.1@aar') { transitive = true; } - + compile 'com.beardedhen:androidbootstrap:2.0.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 72f62d4..206e097 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,30 +45,33 @@ android:label="@string/title_activity_start" > - + -> + + + + - - @@ -99,21 +100,35 @@ android:label="@string/title_activity_user_config" 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 d11bc95..2215465 100644 --- a/app/src/main/java/org/deke/risk/riskahead/LoginActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/LoginActivity.java @@ -22,7 +22,6 @@ import org.deke.risk.riskahead.fragments.GooglePlusButtonFragment; import org.deke.risk.riskahead.fragments.TwitterButtonFragment; import org.deke.risk.riskahead.helper.AppConfig; import org.deke.risk.riskahead.helper.AppController; -import org.deke.risk.riskahead.helper.SQLiteHandler; import org.deke.risk.riskahead.helper.SessionManager; import org.json.JSONException; import org.json.JSONObject; @@ -39,6 +38,7 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr private final static String TAG = LoginActivity.class.getSimpleName(); private final static String EXTRA_MESSAGE = "org.deke.risk.riskahead.MESSAGE"; + private final static String mActivityTitle = "RiskAhead"; private String msg_intent; private Button btn_login; @@ -47,7 +47,6 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr private TextView input_password; private ProgressDialog pDialog; - private SQLiteHandler db; private SessionManager session; @@ -61,7 +60,6 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr pDialog = new ProgressDialog(this); pDialog.setCancelable(false); - db = new SQLiteHandler(getApplicationContext()); session = new SessionManager(getApplicationContext()); if(msg_intent.equals("login")){ @@ -161,7 +159,7 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr } String tag_string_req = "sociallogin"; - db.deleteUsers(); + session.removeUser(); showDialog(); StringRequest strReq = getStringRequestSocialMediaLogin(key, providerType, username, email); @@ -239,8 +237,8 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr String token = user.getString("token"); // Inserting row in users table - db.addUser(uid, username, name, surname, email, status, providerType, created_at, updated_at, token); - db.close(); + session.addUser(uid, username, name, surname, email, status, providerType, created_at, updated_at, token); + // Launch login activity Intent intent = new Intent( LoginActivity.this, @@ -338,7 +336,7 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr .show(); }else { // Inserting row in users table - db.addUser(uid, username, name, surname, email, status, providerType, created_at, updated_at, token); + session.addUser(uid, username, name, surname, email, status, providerType, created_at, updated_at, token); // user successfully logged in // Create login session diff --git a/app/src/main/java/org/deke/risk/riskahead/MainActivity.java b/app/src/main/java/org/deke/risk/riskahead/MainActivity.java index 728d4c4..91dd5d3 100644 --- a/app/src/main/java/org/deke/risk/riskahead/MainActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/MainActivity.java @@ -40,6 +40,7 @@ public class MainActivity extends BaseActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + userHasToBeLoggedIn(); Intent intent = getIntent(); msg_input = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); diff --git a/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java b/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java index 7ae696f..4198ef1 100644 --- a/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java @@ -43,25 +43,29 @@ import java.util.HashMap; import java.util.Map; -public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCallbacks { +public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCallbacks, GoogleMap.OnInfoWindowClickListener { private final static String mActivityTitle = "Risk Map"; private static final String TAG = MapsActivity.class.getSimpleName(); private static GoogleMap mMap; Marker mMarker; + HashMap markerIDs = new HashMap(); + private LatLng myLocation; private LatLng markedLocation; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + userHasToBeLoggedIn(); mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.frag_maps_map)).getMap(); mMap.getUiSettings().setZoomControlsEnabled(true); handleIntent(getIntent()); findViewById(R.id.btn_maps_confirm_position).setVisibility(View.GONE); + mMap.setOnInfoWindowClickListener(this); mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { @Override @@ -130,7 +134,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa position = new LatLng(Double.parseDouble(c.getString(1)),Double.parseDouble(c.getString(2))); markerOptions.position(position); markerOptions.title(c.getString(0)); - mMap.addMarker(markerOptions); + mMarker = mMap.addMarker(markerOptions); } if(position!=null){ CameraUpdate cameraPosition = CameraUpdateFactory.newLatLng(position); @@ -140,7 +144,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa if (position != null) { myLocation = new LatLng(position.latitude,position.longitude); } - mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(myLocation, 20)); + mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(myLocation, 12.0f)); } @Override @@ -226,7 +230,8 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa JSONObject incident = incidents.getJSONObject(i); LatLng pos = new LatLng(Double.parseDouble(incident.getString("latitude")),Double.parseDouble(incident.getString("longitude"))); Log.d(TAG, "Adding marker with position: " + pos.latitude +" : "+ pos.longitude); - mMap.addMarker(new MarkerOptions().position(pos).title(incident.getString("text_short")).snippet("Test" + i)); + mMarker = mMap.addMarker(new MarkerOptions().position(pos).title(incident.getString("text_short")).snippet("Crime Category:" + incident.getString("fid_category"))); + markerIDs.put(mMarker.getId(),incident.getString("uid")); CircleOptions circleOptions = new CircleOptions() .center(pos) @@ -276,4 +281,8 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa } + @Override + public void onInfoWindowClick(Marker marker) { + gotoViewReportActivity(markerIDs.get(marker.getId())); + } } diff --git a/app/src/main/java/org/deke/risk/riskahead/ProfileActivity.java b/app/src/main/java/org/deke/risk/riskahead/ProfileActivity.java index f847891..7053361 100644 --- a/app/src/main/java/org/deke/risk/riskahead/ProfileActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/ProfileActivity.java @@ -6,6 +6,7 @@ import android.provider.ContactsContract; import android.util.Log; import android.view.Menu; import android.view.MenuItem; +import android.view.View; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; @@ -28,7 +29,7 @@ import java.util.Map; public class ProfileActivity extends BaseActivity { - private final static String mActivityTitle = "User Profile"; + private final static String mActivityTitle = "User Statistics"; private final static String TAG = ProfileActivity.class.getSimpleName(); private TextView txtMemberSince; @@ -36,6 +37,7 @@ public class ProfileActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + userHasToBeLoggedIn(); txtMemberSince = (TextView) findViewById(R.id.txt_profile_membersince); txtMemberSince.setText(user.get("created_at")); @@ -48,6 +50,12 @@ public class ProfileActivity extends BaseActivity { String tag_string_req2 = "req_top10"; AppController.getInstance().addToRequestQueue(strReq2, tag_string_req2); + findViewById(R.id.btn_profile_viewposts).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + gotoReportlistActivity(); + } + }); } @Override diff --git a/app/src/main/java/org/deke/risk/riskahead/ReportActivity.java b/app/src/main/java/org/deke/risk/riskahead/ReportActivity.java index 0a8c2b6..f9acdd0 100644 --- a/app/src/main/java/org/deke/risk/riskahead/ReportActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/ReportActivity.java @@ -66,6 +66,7 @@ public class ReportActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + userHasToBeLoggedIn(); Spinner spinner = (Spinner) findViewById(R.id.dd_report_category); ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.incident_categories, android.R.layout.simple_spinner_item); @@ -89,11 +90,10 @@ public class ReportActivity extends BaseActivity { restoreSharedPreferences(); - if(txtDay.getText().toString() == "") { txtDay.setText(new StringBuilder() - .append(day).append("-").append(month + 1).append("-") - .append(year).append(" ")); + .append(year).append("-").append(month + 1).append("-") + .append(day).append(" ")); } if(txtTime.getText().toString() == "") { @@ -264,8 +264,8 @@ public class ReportActivity extends BaseActivity { month = selectedMonth; day = selectedDay; - txtDay.setText(new StringBuilder().append(day) - .append("-").append(month + 1).append("-").append(year) + txtDay.setText(new StringBuilder().append(year) + .append("-").append(month + 1).append("-").append(day) .append(" ")); } }; diff --git a/app/src/main/java/org/deke/risk/riskahead/ReportlistActivity.java b/app/src/main/java/org/deke/risk/riskahead/ReportlistActivity.java new file mode 100644 index 0000000..9d4916f --- /dev/null +++ b/app/src/main/java/org/deke/risk/riskahead/ReportlistActivity.java @@ -0,0 +1,142 @@ +package org.deke.risk.riskahead; + +import android.os.Bundle; +import android.util.Log; +import android.view.Menu; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ListAdapter; +import android.widget.ListView; +import android.widget.Toast; + +import com.android.volley.Request; +import com.android.volley.Response; +import com.android.volley.VolleyError; +import com.android.volley.toolbox.StringRequest; + +import org.deke.risk.riskahead.helper.AppConfig; +import org.deke.risk.riskahead.helper.AppController; +import org.deke.risk.riskahead.helper.BaseActivity; +import org.deke.risk.riskahead.helper.ReportListAdapter; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ReportlistActivity extends BaseActivity { + + private final static String mActivityTitle = "Reports"; + private final static String TAG = ReportlistActivity.class.getSimpleName(); + + ListView myListView; + ListAdapter myListAdapter; + List resultList; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + userHasToBeLoggedIn(); + + myListView = (ListView)findViewById(R.id.lv_reportlist_list); + //setContentView(R.layout.activity_reportlist); + + String tag_string_req = "getincidentswithpositionfromid"; + StringRequest strReq = getStringRequestGetIncidentsWithPositionFromUserID(); + AppController.getInstance().addToRequestQueue(strReq, tag_string_req); + + myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + try { + gotoViewReportActivity(resultList.get(position).getString("uid")); + } catch (JSONException e) { + e.printStackTrace(); + } + } + }); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + return true; + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_reportlist; + } + + @Override + protected String getActivityName() { + return mActivityTitle; + } + + private StringRequest getStringRequestGetIncidentsWithPositionFromUserID() { + return new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener() { + + @Override + public void onResponse(String response) { + Log.d(TAG, "Map positions response with ID: " + response); + hideDialog(); + + try { + JSONObject jObj = new JSONObject(response); + boolean error = jObj.getBoolean("error"); + + // Check for error node in json + if (!error) { + JSONArray incidents = jObj.getJSONArray("message"); + resultList = new ArrayList(); + + for(int i=0;i getParams() { + // Posting parameters to login url + Map params = new HashMap<>(); + params.put("tag", "getincidentsfromuserid"); + params.put("uid", user.get("uid")); + params.put("token", user.get("token")); + + + return params; + } + + }; + } +} diff --git a/app/src/main/java/org/deke/risk/riskahead/SettingsActivity.java b/app/src/main/java/org/deke/risk/riskahead/SettingsActivity.java index 5c97df1..f888853 100644 --- a/app/src/main/java/org/deke/risk/riskahead/SettingsActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/SettingsActivity.java @@ -36,6 +36,7 @@ public class SettingsActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + userHasToBeLoggedIn(); txtUsername = (TextView) findViewById(R.id.txt_settings_username); txtName = (TextView) findViewById(R.id.txt_settings_name); @@ -123,7 +124,7 @@ public class SettingsActivity extends BaseActivity { if (!error) { showMessage(jObj.getString("msg")); JSONObject user = jObj.getJSONObject("user"); - db.updateUser(jObj.getString("uid"),user.getString("username"),user.getString("name"),user.getString("surname"),user.getString("email"),user.getString("status"),null,user.getString("created_at"),user.getString("updated_at"),user.getString("token")); + session.addUser(jObj.getString("uid"), user.getString("username"), user.getString("name"), user.getString("surname"), user.getString("email"), user.getString("status"), null, user.getString("created_at"), user.getString("updated_at"), user.getString("token")); finish(); startActivity(getIntent()); } else { diff --git a/app/src/main/java/org/deke/risk/riskahead/SubscriptionsActivity.java b/app/src/main/java/org/deke/risk/riskahead/SubscriptionsActivity.java index 54e52cd..7ff11fc 100644 --- a/app/src/main/java/org/deke/risk/riskahead/SubscriptionsActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/SubscriptionsActivity.java @@ -13,6 +13,7 @@ public class SubscriptionsActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + userHasToBeLoggedIn(); } @Override diff --git a/app/src/main/java/org/deke/risk/riskahead/ViewReportActivity.java b/app/src/main/java/org/deke/risk/riskahead/ViewReportActivity.java new file mode 100644 index 0000000..1786c5b --- /dev/null +++ b/app/src/main/java/org/deke/risk/riskahead/ViewReportActivity.java @@ -0,0 +1,163 @@ +package org.deke.risk.riskahead; + +import android.content.Intent; +import android.location.Address; +import android.location.Geocoder; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.EditText; +import android.widget.Spinner; +import android.widget.TextView; +import android.widget.Toast; + +import com.android.volley.Request; +import com.android.volley.Response; +import com.android.volley.VolleyError; +import com.android.volley.toolbox.StringRequest; + +import org.deke.risk.riskahead.helper.AppConfig; +import org.deke.risk.riskahead.helper.AppController; +import org.deke.risk.riskahead.helper.BaseActivity; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +public class ViewReportActivity extends BaseActivity { + + private final static String mActivityTitle = "ViewReport"; + private final static String TAG = ViewReportActivity.class.getSimpleName(); + + private EditText txtTitle; + private EditText txtDescription; + private Spinner txtCrimeCategory; + private EditText txtPosition; + private EditText txtDate; + private EditText txtTime; + private TextView txtPositionDetail; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + userHasToBeLoggedIn(); + + txtTitle = (EditText) findViewById(R.id.input_viewreport_short); + txtDescription = (EditText) findViewById(R.id.input_viewreport_long); + txtCrimeCategory = (Spinner) findViewById(R.id.dd_viewreport_category); + txtDate = (EditText) findViewById(R.id.input_viewreport_date); + txtTime = (EditText) findViewById(R.id.input_viewreport_time); + txtPosition = (EditText) findViewById(R.id.input_viewreport_position); + txtPositionDetail = (TextView) findViewById(R.id.lbl_viewreport_position_detail); + + Spinner spinner = (Spinner) findViewById(R.id.dd_viewreport_category); + ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.incident_categories, android.R.layout.simple_spinner_item); + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + spinner.setAdapter(adapter); + + Intent intent = getIntent(); + String uid = intent.getStringExtra(BaseActivity.EXTRA_MESSAGE); + + String tag_string_req = "getincidentwithpositionfromid"; + StringRequest strReq = getStringRequestGetIncidentWithPositionFromID(uid); + AppController.getInstance().addToRequestQueue(strReq, tag_string_req); + + findViewById(R.id.btn_viewreport_upvote).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showMessage("Upvote!"); + } + }); + + findViewById(R.id.btn_viewreport_downvote).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showMessage("Downvote!"); + } + }); + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_view_report; + } + + @Override + protected String getActivityName() { + return mActivityTitle; + } + + private StringRequest getStringRequestGetIncidentWithPositionFromID(final String incidentid) { + return new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener() { + + @Override + public void onResponse(String response) { + Log.d(TAG, "Incident with ID response: " + response); + hideDialog(); + + try { + JSONObject jObj = new JSONObject(response); + boolean error = jObj.getBoolean("error"); + + // Check for error node in json + if (!error) { + JSONObject incident = jObj.getJSONArray("message").getJSONObject(0); + + txtTitle.setText(incident.getString("text_short")); + txtDescription.setText(incident.getString("text_long")); + txtCrimeCategory.setSelection(incident.getInt("fid_category")); + + String[] happened_at = incident.getString("happened_at").split(" "); + txtDate.setText(happened_at[0]); + txtTime.setText(happened_at[1].substring(0,5)); + + Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault()); + List
addresses = geocoder.getFromLocation(incident.getDouble("latitude"), incident.getDouble("longitude"), 1); + + txtPosition.setText(addresses.get(0).getLocality()); + txtPositionDetail.setText(addresses.get(0).getAddressLine(0)); + + } else { + // Error in login. Get the error message + String errorMsg = jObj.getString("error_msg"); + Toast.makeText(getApplicationContext(), errorMsg, Toast.LENGTH_LONG).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + }, new Response.ErrorListener() { + + @Override + public void onErrorResponse(VolleyError error) { + Log.e(TAG, "Report Error: " + error.getMessage()); + Toast.makeText(getApplicationContext(), + error.getMessage(), Toast.LENGTH_LONG).show(); + hideDialog(); + } + }) { + + @Override + protected Map getParams() { + // Posting parameters to login url + Map params = new HashMap<>(); + params.put("tag", "getincidentfromid"); + params.put("uid", user.get("uid")); + params.put("token", user.get("token")); + params.put("incidentid", incidentid); + + + return params; + } + + }; + } + +} 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 27d82f0..fae36eb 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 @@ -29,8 +29,10 @@ import org.deke.risk.riskahead.MapsActivity; import org.deke.risk.riskahead.R; import org.deke.risk.riskahead.ReportActivity; import org.deke.risk.riskahead.ProfileActivity; +import org.deke.risk.riskahead.ReportlistActivity; import org.deke.risk.riskahead.SettingsActivity; import org.deke.risk.riskahead.SubscriptionsActivity; +import org.deke.risk.riskahead.ViewReportActivity; import java.util.HashMap; @@ -45,31 +47,27 @@ public abstract class BaseActivity extends AppCompatActivity { private ArrayAdapter mAdapter; private ShareActionProvider mShareActionProvider; - public SQLiteHandler db; public SessionManager session; public HashMap user; public ProgressDialog pDialog; + public void userHasToBeLoggedIn(){ + if (!session.isLoggedIn()) { + logout(); + } + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayoutResourceId()); - // SqLite database handler - db = new SQLiteHandler(getApplicationContext()); - pDialog = new ProgressDialog(this); pDialog.setCancelable(false); - // session manager session = new SessionManager(getApplicationContext()); - - if (!session.isLoggedIn()) { - logoutUser(); - } - - user = db.getUserDetails(); + user = session.getUserDetails(); mDrawerList = (ListView)findViewById(R.id.navList); mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); @@ -82,8 +80,12 @@ public abstract class BaseActivity extends AppCompatActivity { } public void logoutUser() { + session.removeUser(); + logout(); + } + + public void logout() { session.setLogin(false); - db.deleteUsers(); // Launching the login activity Intent intent = new Intent(this, LoginActivity.class); @@ -136,7 +138,7 @@ public abstract class BaseActivity extends AppCompatActivity { } private void addDrawerItems() { - String[] osArray = { "Start", "Report", "Incident Map", "User Profile", "Account Settings", "Subscriptions", "Logout" }; + String[] osArray = { "Start", "Report", "Incident Map", "User Statistics", "Account Settings", "Subscriptions", "Logout" }; mAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, osArray); mDrawerList.setAdapter(mAdapter); @@ -193,6 +195,12 @@ public abstract class BaseActivity extends AppCompatActivity { startActivity(intent); } + public void gotoReportlistActivity(){ + Intent intent; + intent = new Intent(getApplicationContext(), ReportlistActivity.class); + startActivity(intent); + } + public void gotoReportActivity(String position){ Intent intent; intent = new Intent(getApplicationContext(), ReportActivity.class); @@ -224,6 +232,13 @@ public abstract class BaseActivity extends AppCompatActivity { startActivity(intent); } + public void gotoViewReportActivity(String uid){ + Intent intent; + intent = new Intent(getApplicationContext(), ViewReportActivity.class); + intent.putExtra(EXTRA_MESSAGE, uid); + startActivity(intent); + } + @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/SQLiteHandler.java b/app/src/main/java/org/deke/risk/riskahead/helper/SQLiteHandler.java index 9799ebb..3acb45e 100644 --- a/app/src/main/java/org/deke/risk/riskahead/helper/SQLiteHandler.java +++ b/app/src/main/java/org/deke/risk/riskahead/helper/SQLiteHandler.java @@ -67,7 +67,7 @@ public class SQLiteHandler extends SQLiteOpenHelper { /** * Storing user details in database - * */ + * *//* public void addUser(String uid, String username, String name, String surname, String email, String status, String provider_type, String created_at, String updated_at, String token) { SQLiteDatabase db = this.getWritableDatabase(); @@ -95,9 +95,9 @@ public class SQLiteHandler extends SQLiteOpenHelper { addUser(uid,username,name,surname,email,status,provider_type,created_at,updated_at,token); } - /** + *//** * Getting user data from database - * */ + * *//* public HashMap getUserDetails() { HashMap user = new HashMap(); String selectQuery = "SELECT * FROM " + TABLE_LOGIN; @@ -126,9 +126,9 @@ public class SQLiteHandler extends SQLiteOpenHelper { return user; } - /** + *//** * Getting user login status return true if rows are there in table - * */ + * *//* public int getRowCount() { String countQuery = "SELECT * FROM " + TABLE_LOGIN; SQLiteDatabase db = this.getReadableDatabase(); @@ -141,9 +141,9 @@ public class SQLiteHandler extends SQLiteOpenHelper { return rowCount; } - /** + *//** * Re crate database Delete all tables and create them again - * */ + * *//* public void deleteUsers() { SQLiteDatabase db = this.getWritableDatabase(); // Delete All Rows @@ -152,5 +152,7 @@ public class SQLiteHandler extends SQLiteOpenHelper { Log.d(TAG, "Deleted all user info from sqlite"); } + */ + } diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/SessionManager.java b/app/src/main/java/org/deke/risk/riskahead/helper/SessionManager.java index 74c79e9..435eeb1 100644 --- a/app/src/main/java/org/deke/risk/riskahead/helper/SessionManager.java +++ b/app/src/main/java/org/deke/risk/riskahead/helper/SessionManager.java @@ -5,33 +5,96 @@ import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.util.Log; +import java.util.HashMap; + public class SessionManager { private static String TAG = SessionManager.class.getSimpleName(); - SharedPreferences pref; + SharedPreferences status; + public SharedPreferences userdata; - Editor editor; + Editor statusEditor; + Editor userDataEditor; Context _context; int PRIVATE_MODE = 0; - private static final String PREF_NAME = "AndroidHiveLogin"; + private static final String PREF_NAME = "AndroidLogin"; + private static final String USERDATA_NAME = "AndroidLoginUser"; + private static final String KEY_UID = "uid"; + private static final String KEY_USERNAME = "username"; + private static final String KEY_NAME = "name"; + private static final String KEY_SURNAME = "surname"; + private static final String KEY_EMAIL = "email"; + private static final String KEY_STATUS = "status"; + private static final String PROVIDER_TYPE = "providerType"; + private static final String KEY_CREATED_AT = "created_at"; + private static final String KEY_UPDATED_AT = "updated_at"; + private static final String TOKEN = "token"; private static final String KEY_IS_LOGGEDIN = "isLoggedIn"; + + public SessionManager(Context context) { this._context = context; - pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); - editor = pref.edit(); + status = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); + userdata = _context.getSharedPreferences(USERDATA_NAME, PRIVATE_MODE); + statusEditor = status.edit(); + userDataEditor = userdata.edit(); } public void setLogin(boolean isLoggedIn) { - editor.putBoolean(KEY_IS_LOGGEDIN, isLoggedIn); - editor.commit(); - Log.d(TAG, "User login session modified!"); + statusEditor.putBoolean(KEY_IS_LOGGEDIN, isLoggedIn); + statusEditor.apply(); } public boolean isLoggedIn(){ - return pref.getBoolean(KEY_IS_LOGGEDIN, false); + return status.getBoolean(KEY_IS_LOGGEDIN, false); + } + + public void addUser(String uid, String username, String name, String surname, String email, String status, String provider_type, String created_at, String updated_at, String token) { + + userDataEditor.putString(KEY_UID, uid); //UID + userDataEditor.putString(KEY_USERNAME, username); // Username + userDataEditor.putString(KEY_NAME, name); // Name + userDataEditor.putString(KEY_SURNAME, surname); // Surame + userDataEditor.putString(KEY_EMAIL, email); // Email + userDataEditor.putString(KEY_STATUS, status); // Status + userDataEditor.putString(PROVIDER_TYPE, provider_type); // ProviderType + userDataEditor.putString(KEY_CREATED_AT, created_at); // Created At + userDataEditor.putString(KEY_UPDATED_AT, updated_at); // Updated At + userDataEditor.putString(TOKEN, token); // TOKEN + + userDataEditor.apply(); + + Log.d(TAG, "New user written to sharedPreferences: " + uid); + } + + /** + * Getting user data from database + * */ + public HashMap getUserDetails() { + HashMap user = new HashMap(); + + user.put(KEY_UID, userdata.getString(KEY_UID, null)); + user.put(KEY_USERNAME, userdata.getString(KEY_USERNAME, null)); + user.put(KEY_NAME, userdata.getString(KEY_NAME, null)); + user.put(KEY_SURNAME, userdata.getString(KEY_SURNAME, null)); + user.put(KEY_EMAIL, userdata.getString(KEY_EMAIL, null)); + user.put(KEY_STATUS, userdata.getString(KEY_STATUS, null)); + user.put(PROVIDER_TYPE, userdata.getString(PROVIDER_TYPE, null)); + user.put(KEY_CREATED_AT, userdata.getString(KEY_CREATED_AT, null)); + user.put(KEY_UPDATED_AT, userdata.getString(KEY_UPDATED_AT, null)); + user.put(TOKEN, userdata.getString(TOKEN, null)); + + Log.d(TAG, "Fetching user from sharedPrefs: " + user.toString()); + + return user; + } + + + public void removeUser(){ + userdata.edit().clear().apply(); } } diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 63eb97f..0dd3418 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -1,5 +1,7 @@ + android:textColor="#aa999999"/> @@ -57,7 +57,7 @@ + + + - + + - + + + + + + + + @@ -161,16 +162,13 @@ android:layout_alignParentStart="true" /> - + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_reportlist_lvrow.xml b/app/src/main/res/layout/activity_reportlist_lvrow.xml new file mode 100644 index 0000000..12d34c9 --- /dev/null +++ b/app/src/main/res/layout/activity_reportlist_lvrow.xml @@ -0,0 +1,22 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index b67ede8..fa3c368 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -20,8 +20,10 @@ android:layout_height="match_parent" android:layout_weight="1" android:layout_centerInParent="true" - android:layout_marginLeft="20dp" - android:layout_marginRight="20dp" + android:layout_margin="10dp" + android:layout_marginBottom="20dp" + android:padding="4dp" + android:background="#11222222" android:orientation="vertical" > - + + + + + android:layout_marginTop="10dp"/> - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +