diff --git a/app/app.iml b/app/app.iml
index 98ebd3f..fa129e9 100644
--- a/app/app.iml
+++ b/app/app.iml
@@ -134,7 +134,6 @@
-
@@ -147,6 +146,7 @@
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 78b4796..e37c2c8 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -42,6 +42,7 @@ dependencies {
compile 'com.facebook.android:facebook-android-sdk:4.1.0'
compile 'com.beardedhen:androidbootstrap:2.0.1'
compile 'com.mcxiaoke.volley:library:1.0.+'
+ compile 'com.google.code.gson:gson:2.4'
compile('com.twitter.sdk.android:twitter-core:1.4.1@aar') {
transitive = true;
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b89fdd0..cdfd656 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -18,7 +18,7 @@
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
- android:theme="@style/CustomActionBarTheme">
+ android:theme="@style/MyRiskAheadTheme">
, ClusterManager.OnClusterItemInfoWindowClickListener, ClusterManager.OnClusterClickListener, ClusterManager.OnClusterItemClickListener{
+public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCallbacks,
+ ClusterManager.OnClusterItemInfoWindowClickListener, ClusterManager.OnClusterClickListener, ClusterManager.OnClusterItemClickListener{
private final static String mActivityTitle = "Risk Map";
private static final String TAG = MapsActivity.class.getSimpleName();
private static GoogleMap mMap;
- Marker mMarker;
- ArrayList myMarkers = new ArrayList();
- private float previousZoomLevel = -1.0f;
- private boolean isZooming = false;
+ private Marker mMarker;
+
+ private AppClusterItem clickedClusterItem;
+ private ArrayList myMarkers = new ArrayList();
+ private HashMap visibleMarkers = new HashMap();
+
+ private List mHeatMapPositionList = new ArrayList<>();
+ private ClusterManager mClusterManager;
+
+ private boolean isMarkerShown = false;
private LatLng myLocation;
private LatLng markedLocation;
- private AppClusterItem clickedClusterItem;
-
- private List mPositionList = new ArrayList<>();
-
- ClusterManager mClusterManager;
-
private static final int DEFAULT_ZOOM_LEVEL = 14;
private static final int THRESHOLD_ZOOM_LEVEL = 7;
@@ -122,24 +124,61 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa
mClusterManager.onCameraChange(position);
Log.d("Zoom", "Zoom: " + position.zoom);
- if(previousZoomLevel != position.zoom)
+ if(position.zoom >= THRESHOLD_ZOOM_LEVEL)
{
- if(previousZoomLevel < THRESHOLD_ZOOM_LEVEL && position.zoom >= THRESHOLD_ZOOM_LEVEL){
- mClusterManager.addItems(myMarkers);
- }else if(previousZoomLevel > THRESHOLD_ZOOM_LEVEL && position.zoom <= THRESHOLD_ZOOM_LEVEL){
- mClusterManager.clearItems();
- }
+ //mClusterManager.addItems(myMarkers);
+ addMarkersToMap();
+ isMarkerShown = true;
+ } else if (position.zoom < THRESHOLD_ZOOM_LEVEL && (isMarkerShown == true)){
+ mClusterManager.clearItems();
+ visibleMarkers.clear();
+ isMarkerShown = false;
}
- previousZoomLevel = position.zoom;
+
}
};
}
+ private void addMarkersToMap(){
+ LatLngBounds bounds = mMap.getProjection().getVisibleRegion().latLngBounds;
+
+ //Loop through all the items that are available to be placed on the map
+ for(AppClusterItem item : myMarkers)
+ {
+ //If the item is within the the bounds of the screen
+ if(bounds.contains(item.getPosition()))
+ {
+ //If the item isn't already being displayed
+ if(!visibleMarkers.containsKey(item.getID()))
+ {
+ Log.d(TAG,"Should add now marker!");
+
+ mClusterManager.addItem(item);
+ mClusterManager.cluster();
+
+ visibleMarkers.put(item.getID(),item);
+ }
+ } else {
+ /*
+ //If the course was previously on screen
+ if(courseMarkers.containsKey(item.getId()))
+ {
+ //1. Remove the Marker from the GoogleMap
+ courseMarkers.get(item.getId()).remove();
+
+ //2. Remove the reference to the Marker from the HashMap
+ courseMarkers.remove(item.getId());
+ }
+ */
+ }
+ }
+ }
+
+
+
private void setUpClustering() {
-
mClusterManager = new ClusterManager(this, mMap);
-
mMap.setOnCameraChangeListener(getCameraChangeListener());
mClusterManager.setRenderer(new OwnIconRendered(MapsActivity.this,mMap,mClusterManager));
@@ -230,7 +269,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa
private void addHeatMap() {
HeatmapTileProvider mProvider = new HeatmapTileProvider.Builder()
- .data(mPositionList)
+ .data(mHeatMapPositionList)
.radius(50)
.build();
@@ -380,10 +419,8 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa
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);
- AppClusterItem offsetItem = new AppClusterItem(incident,pos);
- myMarkers.add(offsetItem);
- mPositionList.add(pos);
-
+ myMarkers.add(new AppClusterItem(incident,pos));
+ mHeatMapPositionList.add(pos);
}
addHeatMap();
diff --git a/app/src/main/java/org/deke/risk/riskahead/ReportWFActivity.java b/app/src/main/java/org/deke/risk/riskahead/ReportWFActivity.java
index 533a871..d85901e 100644
--- a/app/src/main/java/org/deke/risk/riskahead/ReportWFActivity.java
+++ b/app/src/main/java/org/deke/risk/riskahead/ReportWFActivity.java
@@ -2,38 +2,48 @@ package org.deke.risk.riskahead;
import android.app.Fragment;
import android.app.FragmentTransaction;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.location.Address;
+import android.location.Geocoder;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import com.beardedhen.androidbootstrap.BootstrapButton;
+import com.google.android.gms.maps.model.LatLng;
+import com.google.gson.Gson;
import org.deke.risk.riskahead.fragments.ReportWF_1_Fragment;
import org.deke.risk.riskahead.fragments.ReportWF_2_Fragment;
+import org.deke.risk.riskahead.helper.AppClusterItem;
import org.deke.risk.riskahead.helper.BaseActivity;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.Locale;
-public class ReportWFActivity extends BaseActivity implements ReportWF_1_Fragment.OnInputFinishedListener, ReportWF_2_Fragment.OnInputFinishedListener {
+public class ReportWFActivity extends BaseActivity implements ReportWF_1_Fragment.OnInputFinishedListener, ReportWF_1_Fragment.OnCallMapListener, ReportWF_2_Fragment.OnInputFinishedListener {
private final static String mActivityTitle = "Report NEW";
private final static String TAG = ReportWFActivity.class.getSimpleName();
- List fragList = new ArrayList();
+ private List fragList = new ArrayList();
- Fragment frag_report_1 = new ReportWF_1_Fragment();
- Fragment frag_report_2 = new ReportWF_2_Fragment();
+ private Fragment frag_report_1 = new ReportWF_1_Fragment();
+ private Fragment frag_report_2 = new ReportWF_2_Fragment();
- BootstrapButton btnContinue;
- BootstrapButton btnReportNow;
+ private BootstrapButton btnContinue;
+ private BootstrapButton btnReportNow;
+
+ private AppClusterItem incident = new AppClusterItem();
private int currentState = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- //setContentView(R.layout.activity_report_wf);
fragList.add(frag_report_1);
fragList.add(frag_report_2);
@@ -49,17 +59,48 @@ public class ReportWFActivity extends BaseActivity implements ReportWF_1_Fragmen
}
});
-
btnReportNow = (BootstrapButton) findViewById(R.id.btn_reportwf_reportnow);
btnReportNow.setVisibility(View.INVISIBLE);
}
+ private void modifiyPos(String pos){
+ String[] position = pos.split(":");
+ Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());
+ LatLng latlngpos = new LatLng(Double.parseDouble(position[0]), Double.parseDouble(position[1]));
+
+ try {
+ List addressList = geocoder.getFromLocation(latlngpos.latitude,latlngpos.longitude,1);
+
+ if (addressList != null && addressList.size() > 0) {
+ Address address = addressList.get(0);
+ StringBuilder sb = new StringBuilder();
+
+ for (int i = 0; i < address.getMaxAddressLineIndex(); i++) {
+ if(address.getAddressLine(i) != null) sb.append(address.getAddressLine(i)).append("\n");
+ }
+
+ if(address.getCountryName() != null) sb.append(address.getCountryName());
+ incident.setmPosDescription(sb.toString());
+ }
+ incident.setPosition(latlngpos);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public AppClusterItem getIncident(){
+ return incident;
+ }
+
+ public void setIncident(AppClusterItem newIncident){
+ incident = newIncident;
+ }
+
private void initFragment(int state) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_reportwf, fragList.get(state));
transaction.addToBackStack(null);
-
transaction.commit();
if(state > 1) btnReportNow.setVisibility(View.VISIBLE);
@@ -99,4 +140,38 @@ public class ReportWFActivity extends BaseActivity implements ReportWF_1_Fragmen
btnReportNow.setVisibility(View.INVISIBLE);
}
}
+
+ @Override
+ public void onStop(){
+ super.onStop();
+
+ SharedPreferences mPrefs = getPreferences(MODE_PRIVATE);
+ Gson gson = new Gson();
+
+ SharedPreferences.Editor prefsEditor = mPrefs.edit();
+
+ prefsEditor.putString("incident",gson.toJson(incident));
+ prefsEditor.commit();
+ }
+
+ @Override
+ public void onResume(){
+ super.onResume();
+
+ SharedPreferences mPrefs = getPreferences(MODE_PRIVATE);
+ Gson gson = new Gson();
+
+ if(!mPrefs.getString("incident", "").equals("")) incident = gson.fromJson(mPrefs.getString("incident", ""), AppClusterItem.class);
+
+ Intent intent = getIntent();
+ String pos = intent.getStringExtra(EXTRA_MESSAGE);
+ if(pos != null) modifiyPos(pos);
+ }
+
+
+
+ @Override
+ public void onCallMap() {
+ gotoMapActivity();
+ }
}
diff --git a/app/src/main/java/org/deke/risk/riskahead/ReportlistActivity.java b/app/src/main/java/org/deke/risk/riskahead/ReportlistActivity.java
index 8ccbbf4..d9db797 100644
--- a/app/src/main/java/org/deke/risk/riskahead/ReportlistActivity.java
+++ b/app/src/main/java/org/deke/risk/riskahead/ReportlistActivity.java
@@ -52,7 +52,7 @@ public class ReportlistActivity extends BaseActivity {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
try {
- gotoViewReportActivity(resultList.get(position).getString("uid"));
+ gotoViewReportActivity(resultList.get(position).getInt("uid"));
} catch (JSONException e) {
e.printStackTrace();
}
diff --git a/app/src/main/java/org/deke/risk/riskahead/ViewReportActivity.java b/app/src/main/java/org/deke/risk/riskahead/ViewReportActivity.java
index ce003f0..333b6a4 100644
--- a/app/src/main/java/org/deke/risk/riskahead/ViewReportActivity.java
+++ b/app/src/main/java/org/deke/risk/riskahead/ViewReportActivity.java
@@ -49,7 +49,7 @@ public class ViewReportActivity extends BaseActivity {
userHasToBeLoggedIn();
Intent intent = getIntent();
- final String uid = intent.getStringExtra(BaseActivity.EXTRA_MESSAGE);
+ final Integer uid = intent.getIntExtra(BaseActivity.EXTRA_MESSAGE, 0);
txtTitle = (EditText) findViewById(R.id.input_viewreport_short);
txtDescription = (EditText) findViewById(R.id.input_viewreport_long);
@@ -99,7 +99,7 @@ public class ViewReportActivity extends BaseActivity {
});
}
- private void deleteReport(String uid) {
+ private void deleteReport(Integer uid) {
deleteIncident(uid);
}
@@ -113,19 +113,19 @@ public class ViewReportActivity extends BaseActivity {
return mActivityTitle;
}
- public void getIncident(String uid) {
+ public void getIncident(Integer uid) {
String tag_string_req = "getincidentwithpositionfromid";
StringRequest strReq = getStringRequestGetIncidentWithPositionFromID(uid);
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
- public void deleteIncident(String uid) {
+ public void deleteIncident(Integer uid) {
String tag_string_req = "deactivateIncident";
StringRequest strReq = getStringRequestDeleteIncident(uid);
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
- private StringRequest getStringRequestDeleteIncident(final String incidentid) {
+ private StringRequest getStringRequestDeleteIncident(final Integer incidentid) {
showDialog();
return new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener() {
@@ -167,7 +167,7 @@ public class ViewReportActivity extends BaseActivity {
params.put("tag", "deactivateincident");
params.put("uid", user.get("uid"));
params.put("token", user.get("token"));
- params.put("incidentid", incidentid);
+ params.put("incidentid", incidentid.toString());
return params;
@@ -176,7 +176,7 @@ public class ViewReportActivity extends BaseActivity {
}
- private StringRequest getStringRequestGetIncidentWithPositionFromID(final String incidentid) {
+ private StringRequest getStringRequestGetIncidentWithPositionFromID(final Integer incidentid) {
showDialog();
return new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener() {
@@ -263,7 +263,7 @@ public class ViewReportActivity extends BaseActivity {
params.put("tag", "getincidentfromid");
params.put("uid", user.get("uid"));
params.put("token", user.get("token"));
- params.put("incidentid", incidentid);
+ params.put("incidentid", incidentid.toString());
return params;
@@ -272,13 +272,13 @@ public class ViewReportActivity extends BaseActivity {
};
}
- public void getIncidentVoteScore(String uid) {
+ public void getIncidentVoteScore(Integer uid) {
String tag_string_req = "getincidentvotescore";
StringRequest strReq = getStringRequestGetIncidentVoteScore(uid);
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
- private StringRequest getStringRequestGetIncidentVoteScore(final String incidentid) {
+ private StringRequest getStringRequestGetIncidentVoteScore(final Integer incidentid) {
return new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener() {
@Override
@@ -318,26 +318,26 @@ public class ViewReportActivity extends BaseActivity {
params.put("tag", "getincidentvotescore");
params.put("uid", user.get("uid"));
params.put("token", user.get("token"));
- params.put("incidentid", incidentid);
+ params.put("incidentid", incidentid.toString());
return params;
}
};
}
- public void makeUpvote(String uid) {
+ public void makeUpvote(Integer uid) {
String tag_string_req = "addvote";
StringRequest strReq = getStringRequestAddVote(uid, "1");
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
- public void makeDownvote(String uid) {
+ public void makeDownvote(Integer uid) {
String tag_string_req = "addvote";
StringRequest strReq = getStringRequestAddVote(uid, "2");
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
- private StringRequest getStringRequestAddVote(final String incidentid, final String votetype) {
+ private StringRequest getStringRequestAddVote(final Integer incidentid, final String votetype) {
return new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener() {
@Override
@@ -380,7 +380,7 @@ public class ViewReportActivity extends BaseActivity {
params.put("tag", "addvote");
params.put("uid", user.get("uid"));
params.put("token", user.get("token"));
- params.put("incidentid", incidentid);
+ params.put("incidentid", incidentid.toString());
params.put("votetype", votetype);
return params;
diff --git a/app/src/main/java/org/deke/risk/riskahead/fragments/ReportWF_1_Fragment.java b/app/src/main/java/org/deke/risk/riskahead/fragments/ReportWF_1_Fragment.java
index 0e37993..d9f19e2 100644
--- a/app/src/main/java/org/deke/risk/riskahead/fragments/ReportWF_1_Fragment.java
+++ b/app/src/main/java/org/deke/risk/riskahead/fragments/ReportWF_1_Fragment.java
@@ -9,11 +9,17 @@ import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
+import android.widget.RelativeLayout;
import android.widget.Spinner;
+import android.widget.TextView;
-import com.beardedhen.androidbootstrap.AwesomeTextView;
+import com.beardedhen.androidbootstrap.BootstrapButton;
+import com.google.android.gms.maps.model.LatLng;
import org.deke.risk.riskahead.R;
+import org.deke.risk.riskahead.ReportWFActivity;
+import org.deke.risk.riskahead.helper.AppClusterItem;
+import org.deke.risk.riskahead.helper.BaseActivity;
import org.deke.risk.riskahead.helper.HintAdapter;
/**
@@ -23,16 +29,27 @@ public class ReportWF_1_Fragment extends Fragment{
private View mainview;
- Spinner spinner_main_1;
- Spinner spinner_sub_1;
+ private Spinner spinner_main_1;
+ private Spinner spinner_sub_1;
+ private EditText sub_1_etc;
+ private RelativeLayout rl_pos;
+ private BootstrapButton btnPos;
+ private TextView txtPosDetail;
- OnInputFinishedListener mCallback;
+ private boolean isCatFinished;
+ AppClusterItem tmpIncident = new AppClusterItem();
+
+ OnInputFinishedListener mCallbackFinished;
+ OnCallMapListener mCallbackMapListener;
+
+ public interface OnCallMapListener {
+ void onCallMap();
+ }
public interface OnInputFinishedListener {
void onInputFinished(boolean finished);
}
-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -44,18 +61,23 @@ public class ReportWF_1_Fragment extends Fragment{
initSpinnerOneMain();
initSpinnerOneSub();
+ initLayerPosition();
return mainview;
}
- private void isFinished(boolean isFinished){
- if(isFinished){
+ private void checkIfFinished(){
+ boolean isFinished = isCatFinished && (tmpIncident != null) && (tmpIncident.getPosition() != null);
+
+ if(isCatFinished) mainview.findViewById(R.id.ll_pos).setVisibility(View.VISIBLE);
+
+ if(isFinished ){
mainview.findViewById(R.id.atv_reportwf_1_finish).setVisibility(View.VISIBLE);
}else{
mainview.findViewById(R.id.atv_reportwf_1_finish).setVisibility(View.INVISIBLE);
}
- mCallback.onInputFinished(isFinished);
+ mCallbackFinished.onInputFinished(isFinished);
}
private void initSpinnerOneMain() {
@@ -101,13 +123,14 @@ public class ReportWF_1_Fragment extends Fragment{
adapter_sub_1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner_sub_1.setAdapter(new HintAdapter(adapter_sub_1, R.layout.contact_spinner_row_nothing_selected, getActivity()));
- if (((HintAdapter) spinner_main_1.getAdapter()).isInInitialState()){
+ if (((HintAdapter) spinner_main_1.getAdapter()).isInInitialState()) {
spinner_sub_1.setVisibility(View.INVISIBLE);
- }else{
+ } else {
spinner_sub_1.setVisibility(View.VISIBLE);
}
- isFinished(false);
+ isCatFinished = false;
+ checkIfFinished();
}
@Override
@@ -118,6 +141,7 @@ public class ReportWF_1_Fragment extends Fragment{
}
private void initSpinnerOneSub() {
+ sub_1_etc = (EditText) mainview.findViewById(R.id.txt_reportwf_1_cat_etc);
spinner_sub_1 = (Spinner) mainview.findViewById(R.id.dd_reportwf_1_cat_sub);
spinner_sub_1.setVisibility(View.INVISIBLE);
spinner_sub_1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@@ -153,11 +177,15 @@ public class ReportWF_1_Fragment extends Fragment{
mainview.findViewById(R.id.txt_reportwf_1_cat_etc).setVisibility(View.INVISIBLE);
}
- if (((HintAdapter) spinner_sub_1.getAdapter()).isInInitialState()){
- isFinished(false);
- }else{
- isFinished(true);
+ if (((HintAdapter) spinner_sub_1.getAdapter()).isInInitialState()) {
+ isCatFinished = false;
+ checkIfFinished();
+ } else {
+ isCatFinished = true;
+ checkIfFinished();
}
+
+ if((position == 0) && (tmpIncident.getmFidCat1_Sub() != 0)) spinner_sub_1.setSelection(tmpIncident.getmFidCat1_Sub());
}
@Override
@@ -166,15 +194,71 @@ public class ReportWF_1_Fragment extends Fragment{
});
}
+ private void initLayerPosition(){
+ rl_pos = (RelativeLayout) mainview.findViewById(R.id.ll_pos);
+ rl_pos.setVisibility(View.INVISIBLE);
+
+ btnPos = (BootstrapButton) mainview.findViewById(R.id.btn_reportwf_position);
+ txtPosDetail = (TextView) mainview.findViewById(R.id.lbl_reportwf_position_detail);
+
+ btnPos.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mCallbackMapListener.onCallMap();
+ }
+ });
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+
+ tmpIncident = ((ReportWFActivity)getActivity()).getIncident();
+
+ if(tmpIncident != null){
+ if(tmpIncident.getPosition() != null){
+ rl_pos.setVisibility(View.VISIBLE);
+ txtPosDetail.setText(tmpIncident.getmPosDescription());
+ }
+
+ if(tmpIncident.getmFidCat1_Main() != 0){
+ spinner_main_1.setSelection(tmpIncident.getmFidCat1_Main());
+ }
+
+ if(tmpIncident.getmFidCat1_Sub() != 0){
+ spinner_sub_1.setSelection(tmpIncident.getmFidCat1_Sub());
+ }
+
+ if(tmpIncident.getmCat1_Sub_etc() != null){
+ sub_1_etc.setText(tmpIncident.getmCat1_Sub_etc());
+ }
+ }
+
+ checkIfFinished();
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+
+ tmpIncident.setmFidCat1_Main(spinner_main_1.getSelectedItemPosition());
+ tmpIncident.setmFidCat1_Sub(spinner_sub_1.getSelectedItemPosition());
+ tmpIncident.setmCat1_Sub_etc(sub_1_etc.getText().toString());
+
+ ((ReportWFActivity)getActivity()).setIncident(tmpIncident);
+ }
+
+
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
- mCallback = (OnInputFinishedListener) activity;
+ mCallbackFinished = (OnInputFinishedListener) activity;
+ mCallbackMapListener = (OnCallMapListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
- + " must implement OnInputFinishedListener");
+ + " must implement all Listeners");
}
}
diff --git a/app/src/main/java/org/deke/risk/riskahead/fragments/ReportWF_2_Fragment.java b/app/src/main/java/org/deke/risk/riskahead/fragments/ReportWF_2_Fragment.java
index de1f1d2..9bcd329 100644
--- a/app/src/main/java/org/deke/risk/riskahead/fragments/ReportWF_2_Fragment.java
+++ b/app/src/main/java/org/deke/risk/riskahead/fragments/ReportWF_2_Fragment.java
@@ -1,33 +1,46 @@
package org.deke.risk.riskahead.fragments;
import android.app.Activity;
+import android.app.DatePickerDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
import android.app.Fragment;
+import android.app.TimePickerDialog;
import android.os.Bundle;
+import android.text.format.DateFormat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
+import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.Spinner;
-import android.widget.TextView;
-
-import com.beardedhen.androidbootstrap.AwesomeTextView;
+import android.widget.TimePicker;
import org.deke.risk.riskahead.R;
import org.deke.risk.riskahead.helper.HintAdapter;
+import java.util.Calendar;
+
/**
* Created by Dennis on 08.12.2015.
*/
-public class ReportWF_2_Fragment extends Fragment{
+public class ReportWF_2_Fragment extends Fragment {
View mainview;
Spinner spinner_main_1;
Spinner spinner_sub_1;
+ EditText input_time_from;
+ EditText input_date_from;
+ EditText input_time_to;
+ EditText input_date_to;
+
+ EditText tmpInput;
+
OnInputFinishedListener mCallback;
public interface OnInputFinishedListener {
@@ -60,6 +73,43 @@ public class ReportWF_2_Fragment extends Fragment{
initLayoutFromTime();
initLayoutToTime();
+ input_time_from = ((EditText) mainview.findViewById(R.id.input_report_from_time));
+ input_time_to = ((EditText) mainview.findViewById(R.id.input_report_to_time));
+ input_date_from = ((EditText) mainview.findViewById(R.id.input_report_from_date));
+ input_date_to = ((EditText) mainview.findViewById(R.id.input_report_to_date));
+
+ input_time_from.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ tmpInput = input_time_from;
+ showTimePickerDialog(v);
+ }
+ });
+
+ input_time_to.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ tmpInput = input_time_to;
+ showTimePickerDialog(v);
+ }
+ });
+
+ input_date_to.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ tmpInput = input_date_to;
+ showDatePickerDialog(v);
+ }
+ });
+
+ input_date_from.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ tmpInput = input_date_from;
+ showDatePickerDialog(v);
+ }
+ });
+
return mainview;
}
@@ -122,11 +172,13 @@ public class ReportWF_2_Fragment extends Fragment{
mainview.findViewById(R.id.ll_report_from_time).setVisibility(View.VISIBLE);
mainview.findViewById(R.id.ll_report_to_time).setVisibility(View.INVISIBLE);
mainview.findViewById(R.id.dd_reportwf_2_time_sub).setVisibility(View.INVISIBLE);
+ checkIfDateTimeFinished();
break;
case 4:
mainview.findViewById(R.id.ll_report_from_time).setVisibility(View.VISIBLE);
mainview.findViewById(R.id.ll_report_to_time).setVisibility(View.VISIBLE);
mainview.findViewById(R.id.dd_reportwf_2_time_sub).setVisibility(View.INVISIBLE);
+ checkIfDateTimeFinished();
break;
case 5:
mainview.findViewById(R.id.ll_report_from_time).setVisibility(View.INVISIBLE);
@@ -177,9 +229,73 @@ public class ReportWF_2_Fragment extends Fragment{
}
}
+ public class TimePickerFragment extends DialogFragment
+ implements TimePickerDialog.OnTimeSetListener {
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ // Use the current time as the default values for the picker
+ final Calendar c = Calendar.getInstance();
+ int hour = c.get(Calendar.HOUR_OF_DAY);
+ int minute = c.get(Calendar.MINUTE);
+
+ // Create a new instance of TimePickerDialog and return it
+ return new TimePickerDialog(getActivity(), this, hour, minute,
+ DateFormat.is24HourFormat(getActivity()));
+ }
+
+ public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
+ tmpInput.setText(new StringBuilder().append(hourOfDay)
+ .append(":").append(minute).append(" "));
+
+ checkIfDateTimeFinished();
+ }
+ }
+
+ public void showTimePickerDialog(View v) {
+ DialogFragment newFragment = new TimePickerFragment();
+ newFragment.show(getFragmentManager(),"Pick Time");
+ }
+
+ public class DatePickerFragment extends DialogFragment
+ implements DatePickerDialog.OnDateSetListener {
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ final Calendar c = Calendar.getInstance();
+ int year = c.get(Calendar.YEAR);
+ int month = c.get(Calendar.MONTH);
+ int day = c.get(Calendar.DAY_OF_MONTH);
+
+ return new DatePickerDialog(getActivity(), this, year, month, day);
+ }
+
+ public void onDateSet(DatePicker view, int year, int month, int day) {
+ tmpInput.setText(new StringBuilder()
+ .append(year).append("-").append(month + 1).append("-")
+ .append(day).append(" "));
+
+ checkIfDateTimeFinished();
+ }
+ }
+
+ public void showDatePickerDialog(View v) {
+ DialogFragment newFragment = new DatePickerFragment();
+ newFragment.show(getFragmentManager(), "Pick Date");
+ }
+
+ private void checkIfDateTimeFinished(){
+ if( mainview.findViewById(R.id.ll_report_from_time).getVisibility() == View.VISIBLE) {
+ isFinished(!input_date_from.getText().toString().matches(""));
+ }
+
+ if (mainview.findViewById(R.id.ll_report_to_time).getVisibility() == View.VISIBLE){
+ isFinished(!input_date_to.getText().toString().matches(""));
+ }
+ }
+
@Override
public void onDetach() {
super.onDetach();
}
-
}
diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/AppClusterItem.java b/app/src/main/java/org/deke/risk/riskahead/helper/AppClusterItem.java
index 62a8bbf..b1f9816 100644
--- a/app/src/main/java/org/deke/risk/riskahead/helper/AppClusterItem.java
+++ b/app/src/main/java/org/deke/risk/riskahead/helper/AppClusterItem.java
@@ -5,6 +5,7 @@ import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.maps.android.clustering.ClusterItem;
+import org.deke.risk.riskahead.R;
import org.json.JSONException;
import org.json.JSONObject;
@@ -14,7 +15,7 @@ import org.json.JSONObject;
public class AppClusterItem implements ClusterItem {
private LatLng mPosition;
- private String mID;
+ private Integer mID;
private String mTitle;
private String mDescription;
private String mFidUser;
@@ -28,13 +29,21 @@ public class AppClusterItem implements ClusterItem {
private String mColor;
private String mUsername;
private int mScore;
+
+
+ private int mFidCat1_Main;
+ private int mFidCat1_Sub;
+ private String mCat1_Sub_etc;
+ private String mPosDescription;
+
+
private BitmapDescriptor icon;
public AppClusterItem(JSONObject mIncident, LatLng pos) {
try {
- this.mID = mIncident.getString("uid");
+ this.mID = mIncident.getInt("uid");
this.mTitle = mIncident.getString("text_short");
this.mDescription = mIncident.getString("text_long");
this.mFidUser = mIncident.getString("fid_user");
@@ -54,26 +63,43 @@ public class AppClusterItem implements ClusterItem {
}
}
+ public AppClusterItem(){
+
+ }
+
@Override
public LatLng getPosition() {
return mPosition;
}
+ public void setPosition(LatLng pos) {
+ mPosition = pos;
+ }
+
public BitmapDescriptor getIcon() {
BitmapDescriptor mIcon;
switch (Integer.valueOf(this.mFidCategory)) {
case 1:
- mIcon = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED);
+ mIcon = BitmapDescriptorFactory.fromResource(R.drawable.icon_general);
break;
case 2:
- mIcon = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN);
+ mIcon = BitmapDescriptorFactory.fromResource(R.drawable.icon_verbal);
break;
case 3:
- mIcon = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE);
+ mIcon = BitmapDescriptorFactory.fromResource(R.drawable.icon_middle_violance);
+ break;
+ case 4:
+ mIcon = BitmapDescriptorFactory.fromResource(R.drawable.icon_high_violance);
+ break;
+ case 5:
+ mIcon = BitmapDescriptorFactory.fromResource(R.drawable.icon_nature);
+ break;
+ case 6:
+ mIcon = BitmapDescriptorFactory.fromResource(R.drawable.icon_infra_v2);
break;
default:
- mIcon = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW);
+ mIcon = BitmapDescriptorFactory.fromResource(R.drawable.icon_general);
break;
}
@@ -126,7 +152,41 @@ public class AppClusterItem implements ClusterItem {
return this.mColor;
}
- public String getID() {
+ public Integer getID() {
return mID;
}
+
+
+
+ public String getmPosDescription() {
+ return mPosDescription;
+ }
+
+ public void setmPosDescription(String mLocDetail) {
+ this.mPosDescription = mLocDetail;
+ }
+
+ public int getmFidCat1_Main() {
+ return mFidCat1_Main;
+ }
+
+ public void setmFidCat1_Main(int mFidCat1_Main) {
+ this.mFidCat1_Main = mFidCat1_Main;
+ }
+
+ public int getmFidCat1_Sub() {
+ return mFidCat1_Sub;
+ }
+
+ public void setmFidCat1_Sub(int mFidCat1_Sub) {
+ this.mFidCat1_Sub = mFidCat1_Sub;
+ }
+
+ public String getmCat1_Sub_etc() {
+ return mCat1_Sub_etc;
+ }
+
+ public void setmCat1_Sub_etc(String mCat1_Sub_etc) {
+ this.mCat1_Sub_etc = mCat1_Sub_etc;
+ }
}
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 191f96c..26a8b8d 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
@@ -260,7 +260,7 @@ public abstract class BaseActivity extends AppCompatActivity {
public void gotoReportActivity(String position){
Intent intent;
- intent = new Intent(getApplicationContext(), ReportActivity.class);
+ intent = new Intent(getApplicationContext(), ReportWFActivity.class);
intent.putExtra(EXTRA_MESSAGE, position);
startActivity(intent);
}
@@ -302,7 +302,7 @@ public abstract class BaseActivity extends AppCompatActivity {
startActivity(intent);
}
- public void gotoViewReportActivity(String uid){
+ public void gotoViewReportActivity(Integer uid){
Intent intent;
intent = new Intent(getApplicationContext(), ViewReportActivity.class);
intent.putExtra(EXTRA_MESSAGE, uid);
diff --git a/app/src/main/res/drawable/layout_bg.xml b/app/src/main/res/drawable/layout_bg.xml
index 129a06b..38176e7 100644
--- a/app/src/main/res/drawable/layout_bg.xml
+++ b/app/src/main/res/drawable/layout_bg.xml
@@ -3,5 +3,5 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/layout_bg_gradient.xml b/app/src/main/res/drawable/layout_bg_gradient.xml
index da03918..bc755ad 100644
--- a/app/src/main/res/drawable/layout_bg_gradient.xml
+++ b/app/src/main/res/drawable/layout_bg_gradient.xml
@@ -3,9 +3,9 @@
-
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 111df75..a3abdc5 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -2,7 +2,6 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:bootstrap="http://schemas.android.com/apk/res-auto"
- style="@style/CustomActionBarTheme"
android:id="@+id/drawer_layout"
android:background="@drawable/layout_bg_gradient"
android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/activity_report.xml b/app/src/main/res/layout/activity_report.xml
index a82d04e..929136b 100644
--- a/app/src/main/res/layout/activity_report.xml
+++ b/app/src/main/res/layout/activity_report.xml
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
xmlns:bootstrap="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
- android:background="@color/bg_common_2"
+ android:background="@drawable/layout_bg_gradient"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ReportActivity">
@@ -24,8 +24,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="15dp"
- android:layout_weight="1"
- android:orientation="vertical">
+ android:layout_weight="1">
diff --git a/app/src/main/res/layout/contact_spinner_row_nothing_selected.xml b/app/src/main/res/layout/contact_spinner_row_nothing_selected.xml
index 8c4eaa4..8a4f7a5 100644
--- a/app/src/main/res/layout/contact_spinner_row_nothing_selected.xml
+++ b/app/src/main/res/layout/contact_spinner_row_nothing_selected.xml
@@ -2,12 +2,11 @@
diff --git a/app/src/main/res/layout/fragment_reportwf_1.xml b/app/src/main/res/layout/fragment_reportwf_1.xml
index bdc0147..ce52670 100644
--- a/app/src/main/res/layout/fragment_reportwf_1.xml
+++ b/app/src/main/res/layout/fragment_reportwf_1.xml
@@ -1,57 +1,120 @@
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_reportwf_2.xml b/app/src/main/res/layout/fragment_reportwf_2.xml
index fdf23f8..7a804f3 100644
--- a/app/src/main/res/layout/fragment_reportwf_2.xml
+++ b/app/src/main/res/layout/fragment_reportwf_2.xml
@@ -1,148 +1,172 @@
-
+ android:gravity="center"
+ android:orientation="vertical" >
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:animateLayoutChanges="true"
+ android:gravity="center"
+ android:layout_marginBottom="0dp">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/map_info_window.xml b/app/src/main/res/layout/map_info_window.xml
index 5d64b23..472b87f 100644
--- a/app/src/main/res/layout/map_info_window.xml
+++ b/app/src/main/res/layout/map_info_window.xml
@@ -3,8 +3,11 @@
android:layout_width="150dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
- android:padding="1dp"
- android:background="#CCc9c9c9">
+ android:paddingLeft="7dp"
+ android:paddingRight="5dp"
+ android:paddingTop="3dp"
+ android:paddingBottom="13dp"
+ android:background="@drawable/infowindow">
-
+ android:singleLine="true"
+ android:ellipsize="marquee"
+ android:marqueeRepeatLimit="marquee_forever"/>
+ >
#26ae90
#2e3237
- #ececec
- #0461A8
+
+
+ #1175b7
+ #0461a8
+ #333333
+ #fdfdfd
+
+
+
#ffffff
#ffffff
#ff0000
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 0f948e5..312d63e 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -5,24 +5,16 @@
- @dimen/micro_padding
-
-
-
-
-