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"/>
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 ac76b81..68cc9ea 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -24,7 +24,7 @@
Risk Ahead
Logout
- {fa_paint_brush} Confirm changes
+ {fa_pencil} Confirm changes
Welcome
Open navigation drawer
@@ -63,8 +63,8 @@
Title
Description
Crime Category
- Time (hh:mm)
- Date (dd-mm-yyyy) of incident
+ Time
+ Date (yyyy-mm-dd)
Name
Surname
@@ -80,7 +80,7 @@
Top10
Confirm Password
- {fa_paint_brush} Change password
+ {fa_envelope} Request new password
Retype Password
About
@@ -95,6 +95,11 @@
- Personal
- Property
- Political
-
+
+ Report List
+
+ Hello world!
+ Settings
+ View Report