diff --git a/app/app.iml b/app/app.iml index a3e52ba..aacbaf1 100644 --- a/app/app.iml +++ b/app/app.iml @@ -72,6 +72,7 @@ + @@ -116,6 +117,7 @@ + diff --git a/app/build.gradle b/app/build.gradle index 626752a..ed480bf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -45,6 +45,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.android.support:design:22.2.0' compile 'com.google.code.gson:gson:2.4' compile 'com.google.maps.android:android-maps-utils:0.3.+' compile 'com.android.support:support-v4:22.2.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cdfd656..c1c339a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -116,15 +116,6 @@ android:name=".SubscriptionsActivity" android:label="@string/title_activity_subscriptions" android:screenOrientation="portrait"> - - - () { - @Override - public void onResponse(String response) { - Log.d(TAG, "User stats: " + response); - try { - JSONObject jObj = new JSONObject(response); - boolean error = jObj.getBoolean("error"); - if (!error) { - TextView points = (TextView) findViewById(R.id.txt_profile_points); - TextView ranking = (TextView) findViewById(R.id.txt_profile_ranking); - TextView posts = (TextView) findViewById(R.id.txt_profile_numberposts); - - points.setText(jObj.getString("points")); - ranking.setText(jObj.getString("rank")); - posts.setText(jObj.getString("posts")); - } else { - String errorMsg = jObj.getString("error_msg"); - Log.e(TAG, "Error getting user stats (server returned error): " + errorMsg); - showMessage(errorMsg); - } - } catch (JSONException e) { - e.printStackTrace(); - } - } - }, new Response.ErrorListener() { - - @Override - public void onErrorResponse(VolleyError error) { - Log.e(TAG, "Error getting user stats: " + error.getMessage()); - showMessage(getString(R.string.errormsg_couldnotretrieve)); - } - }) { - - @Override - protected Map getParams() { - // Posting params to register url - Map params = new HashMap<>(); - params.put("tag", "getuserstats"); - params.put("uid", user.get("uid")); - params.put("token", user.get("token")); - - return params; - } - }; - } - - private StringRequest getStringRequestTop10() { - showDialog(); - return new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener() { - - @Override - public void onResponse(String response) { - Log.d(TAG, "Top 10 stats: " + response); - hideDialog(); - try { - JSONObject jObj = new JSONObject(response); - boolean error = jObj.getBoolean("error"); - if (!error) { - TableLayout tbltop10 = (TableLayout) findViewById(R.id.tableTop10); - JSONArray listitems = jObj.getJSONArray("msg"); - for(int i=0;i getParams() { - Map params = new HashMap<>(); - params.put("tag", "gettop10"); - 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/fragments/ProfileStatisticsFragment.java b/app/src/main/java/org/deke/risk/riskahead/fragments/ProfileStatisticsFragment.java new file mode 100644 index 0000000..ebfc5ab --- /dev/null +++ b/app/src/main/java/org/deke/risk/riskahead/fragments/ProfileStatisticsFragment.java @@ -0,0 +1,101 @@ +package org.deke.risk.riskahead.fragments; + +import android.support.v4.app.Fragment; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +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.ProfileActivity; +import org.deke.risk.riskahead.R; +import org.deke.risk.riskahead.helper.AppConfig; +import org.deke.risk.riskahead.helper.AppController; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.HashMap; +import java.util.Map; + +/** + * Created by Dennis on 13.12.2015. + */ +public class ProfileStatisticsFragment extends Fragment { + + private final static String mActivityTitle = "User Statistics"; + private final static String TAG = ProfileStatisticsFragment.class.getSimpleName(); + + private View view; + private ProfileActivity parent; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + view = inflater.inflate(R.layout.activity_profile_stats, container, false); + parent = (ProfileActivity)getActivity(); + + StringRequest strReq = getStringRequestProfileStats(); + String tag_string_req = "req_profilestats"; + AppController.getInstance().addToRequestQueue(strReq, tag_string_req); + + return view; + } + + private StringRequest getStringRequestProfileStats() { + return new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener() { + + @Override + public void onResponse(String response) { + Log.d(TAG, "User stats: " + response); + + try { + JSONObject jObj = new JSONObject(response); + boolean error = jObj.getBoolean("error"); + if (!error) { + TextView points = (TextView) view.findViewById(R.id.txt_profile_points); + TextView ranking = (TextView) view.findViewById(R.id.txt_profile_ranking); + TextView posts = (TextView) view.findViewById(R.id.txt_profile_numberposts); + TextView txtMemberSince = (TextView) view.findViewById(R.id.txt_profile_membersince); + + + points.setText(jObj.getString("points")); + ranking.setText(jObj.getString("rank")); + posts.setText(jObj.getString("posts")); + txtMemberSince.setText(parent.user.get("created_at")); + } else { + String errorMsg = jObj.getString("error_msg"); + Log.e(TAG, "Error getting user stats (server returned error): " + errorMsg); + parent.showMessage(errorMsg); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } + }, new Response.ErrorListener() { + + @Override + public void onErrorResponse(VolleyError error) { + Log.e(TAG, "Error getting user stats: " + error.getMessage()); + parent.showMessage(getString(R.string.errormsg_couldnotretrieve)); + } + }) { + + @Override + protected Map getParams() { + // Posting params to register url + Map params = new HashMap<>(); + params.put("tag", "getuserstats"); + params.put("uid", parent.user.get("uid")); + params.put("token", parent.user.get("token")); + + return params; + } + }; + } + +} diff --git a/app/src/main/java/org/deke/risk/riskahead/ReportlistActivity.java b/app/src/main/java/org/deke/risk/riskahead/fragments/ReportListFragment.java similarity index 69% rename from app/src/main/java/org/deke/risk/riskahead/ReportlistActivity.java rename to app/src/main/java/org/deke/risk/riskahead/fragments/ReportListFragment.java index d9db797..73f38b1 100644 --- a/app/src/main/java/org/deke/risk/riskahead/ReportlistActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/fragments/ReportListFragment.java @@ -1,22 +1,24 @@ -package org.deke.risk.riskahead; +package org.deke.risk.riskahead.fragments; +import android.support.v4.app.Fragment; import android.os.Bundle; import android.util.Log; -import android.view.Menu; +import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; 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.ProfileActivity; +import org.deke.risk.riskahead.R; 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; @@ -27,21 +29,26 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class ReportlistActivity extends BaseActivity { +/** + * Created by Dennis on 13.12.2015. + */ +public class ReportListFragment extends Fragment{ + private final static String mActivityTitle = "ReportList"; + private final static String TAG = ReportListFragment.class.getSimpleName(); - private final static String mActivityTitle = "Reports"; - private final static String TAG = ReportlistActivity.class.getSimpleName(); + private View view; + private ProfileActivity parent; ListView myListView; ListAdapter myListAdapter; List resultList; @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - userHasToBeLoggedIn(); + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + view = inflater.inflate(R.layout.activity_reportlist, container, false); + parent = (ProfileActivity)getActivity(); - myListView = (ListView)findViewById(R.id.lv_reportlist_list); + myListView = (ListView) view.findViewById(R.id.lv_reportlist_list); //setContentView(R.layout.activity_reportlist); String tag_string_req = "getincidentswithpositionfromid"; @@ -50,39 +57,26 @@ public class ReportlistActivity extends BaseActivity { myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { + public void onItemClick(AdapterView parentview, View view, int position, long id) { try { - gotoViewReportActivity(resultList.get(position).getInt("uid")); + parent.gotoViewReportActivity(resultList.get(position).getInt("uid")); } catch (JSONException e) { e.printStackTrace(); } } }); + return view; } - @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() { - showDialog(); + parent.showDialog(); 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(); + parent.hideDialog(); try { JSONObject jObj = new JSONObject(response); @@ -98,7 +92,7 @@ public class ReportlistActivity extends BaseActivity { } myListAdapter = new ReportListAdapter( - getApplicationContext(), + parent.getApplicationContext(), resultList); myListView.setAdapter(myListAdapter); @@ -106,7 +100,7 @@ public class ReportlistActivity extends BaseActivity { } else { String errorMsg = jObj.getString("error_msg"); Log.e(TAG, "Error getting incident list (Server returned error): " + errorMsg); - showMessage(errorMsg); + parent.showMessage(errorMsg); } } catch (JSONException e) { e.printStackTrace(); @@ -118,8 +112,8 @@ public class ReportlistActivity extends BaseActivity { @Override public void onErrorResponse(VolleyError error) { Log.e(TAG, "Error getting incident list: " + error.getMessage()); - showMessage(getString(R.string.errormsg_couldnotretrieve)); - hideDialog(); + parent.showMessage(getString(R.string.errormsg_couldnotretrieve)); + parent.hideDialog(); } }) { @@ -127,11 +121,12 @@ public class ReportlistActivity extends BaseActivity { protected Map getParams() { Map params = new HashMap<>(); params.put("tag", "getincidentsfromuserid"); - params.put("uid", user.get("uid")); - params.put("token", user.get("token")); + params.put("uid", parent.user.get("uid")); + params.put("token", parent.user.get("token")); return params; } }; } + } diff --git a/app/src/main/java/org/deke/risk/riskahead/fragments/Top10Fragment.java b/app/src/main/java/org/deke/risk/riskahead/fragments/Top10Fragment.java new file mode 100644 index 0000000..356e625 --- /dev/null +++ b/app/src/main/java/org/deke/risk/riskahead/fragments/Top10Fragment.java @@ -0,0 +1,126 @@ +package org.deke.risk.riskahead.fragments; + +import android.graphics.Color; +import android.support.v4.app.Fragment; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TableLayout; +import android.widget.TableRow; +import android.widget.TextView; + +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.ProfileActivity; +import org.deke.risk.riskahead.R; +import org.deke.risk.riskahead.helper.AppConfig; +import org.deke.risk.riskahead.helper.AppController; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.HashMap; +import java.util.Map; + +/** + * Created by Dennis on 13.12.2015. + */ +public class Top10Fragment extends Fragment { + + private final static String mActivityTitle = "Top10"; + private final static String TAG = ProfileStatisticsFragment.class.getSimpleName(); + + private View view; + private ProfileActivity parent; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + view = inflater.inflate(R.layout.activity_profile_top10, container, false); + parent = (ProfileActivity)getActivity(); + + StringRequest strReq2 = getStringRequestTop10(); + String tag_string_req2 = "req_top10"; + AppController.getInstance().addToRequestQueue(strReq2, tag_string_req2); + + return view; + } + + + private StringRequest getStringRequestTop10() { + parent.showDialog(); + return new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener() { + + @Override + public void onResponse(String response) { + Log.d(TAG, "Top 10 stats: " + response); + parent.hideDialog(); + try { + JSONObject jObj = new JSONObject(response); + boolean error = jObj.getBoolean("error"); + if (!error) { + TableLayout tbltop10 = (TableLayout) view.findViewById(R.id.tableTop10); + JSONArray listitems = jObj.getJSONArray("msg"); + for(int i=0;i getParams() { + Map params = new HashMap<>(); + params.put("tag", "gettop10"); + params.put("uid", parent.user.get("uid")); + params.put("token", parent.user.get("token")); + + 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 26a8b8d..3bebcfb 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 @@ -23,7 +23,6 @@ import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; -import com.android.volley.toolbox.StringRequest; import com.google.android.gms.ads.AdListener; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.InterstitialAd; @@ -32,10 +31,8 @@ import org.deke.risk.riskahead.LoginActivity; import org.deke.risk.riskahead.MainActivity; 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.ReportWFActivity; -import org.deke.risk.riskahead.ReportlistActivity; import org.deke.risk.riskahead.SettingsActivity; import org.deke.risk.riskahead.SubscriptionsActivity; import org.deke.risk.riskahead.ViewReportActivity; @@ -68,7 +65,9 @@ public abstract class BaseActivity extends AppCompatActivity { isNetworkAvailable(); } - + public HashMap getUser(){ + return user; + } @Override protected void onCreate(Bundle savedInstanceState) { @@ -265,11 +264,6 @@ public abstract class BaseActivity extends AppCompatActivity { startActivity(intent); } - public void gotoReportlistActivity(){ - Intent intent; - intent = new Intent(getApplicationContext(), ReportlistActivity.class); - startActivity(intent); - } public void gotoMapActivity(){ Intent intent; diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/ProfilePagerAdapter.java b/app/src/main/java/org/deke/risk/riskahead/helper/ProfilePagerAdapter.java new file mode 100644 index 0000000..8e9ed00 --- /dev/null +++ b/app/src/main/java/org/deke/risk/riskahead/helper/ProfilePagerAdapter.java @@ -0,0 +1,41 @@ +package org.deke.risk.riskahead.helper; + +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentStatePagerAdapter; + +import org.deke.risk.riskahead.fragments.ProfileStatisticsFragment; +import org.deke.risk.riskahead.fragments.ReportListFragment; +import org.deke.risk.riskahead.fragments.Top10Fragment; + +public class ProfilePagerAdapter extends FragmentStatePagerAdapter { + int mNumOfTabs; + + public ProfilePagerAdapter(FragmentManager fm, int NumOfTabs) { + super(fm); + this.mNumOfTabs = NumOfTabs; + } + + @Override + public Fragment getItem(int position) { + + switch (position) { + case 0: + ProfileStatisticsFragment tab1 = new ProfileStatisticsFragment(); + return tab1; + case 1: + Top10Fragment tab2 = new Top10Fragment(); + return tab2; + case 2: + ReportListFragment tab3 = new ReportListFragment(); + return tab3; + default: + return null; + } + } + + @Override + public int getCount() { + return mNumOfTabs; + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 0dd3418..d2f6ab7 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -1,132 +1,132 @@ + android:textStyle="bold" + android:typeface="sans" /> + android:textColorHint="@color/input_login_hint" /> + android:textColorHint="@color/input_login_hint" />