DT @27.01.2016: 1.8 release

This commit is contained in:
Dennis Thießen
2016-01-27 17:53:31 +01:00
parent f9fada790c
commit 4daba8037c
24 changed files with 535 additions and 95 deletions

Binary file not shown.

View File

@@ -19,8 +19,8 @@ android {
applicationId "org.deke.risk.riskahead"
minSdkVersion 15
targetSdkVersion 22
versionCode 14
versionName "1.7.2"
versionCode 15
versionName "1.8"
}
buildTypes {
release {

View File

@@ -30,8 +30,6 @@
android:label="@string/app_name"
android:theme="@style/MyRiskAheadTheme">
<!-- Google Maps Fragment API Key Data -->
<meta-data
android:name="com.google.android.gms.version"

View File

@@ -3,19 +3,26 @@ package org.deke.risk.riskahead;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.text.method.MovementMethod;
import android.util.Log;
import android.util.Patterns;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
@@ -71,9 +78,6 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr
}else if(msg_intent.equals(AppConfig.INTENT_REGISTER)){
initRegisterView();
}
TextView policyandterms = (TextView) findViewById(R.id.lbl_login_policy);
policyandterms.setMovementMethod(LinkMovementMethod.getInstance());
}
private void initProgressDialog() {
@@ -140,7 +144,7 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr
input_password = (TextView) findViewById(R.id.input_register_password);
Button btn_login = (Button) findViewById(R.id.btn_register);
input_username.addTextChangedListener(new TextValidator(input_username,getApplicationContext()) {
input_username.addTextChangedListener(new TextValidator(input_username, getApplicationContext()) {
@Override
public void validate(TextView textView, String text) {
if (text.length() < 5) {
@@ -174,11 +178,11 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr
String password = input_password.getText().toString();
String name = input_username.getText().toString();
if (input_password.getError() != null || input_email.getError() != null || input_username.getError() != null) {
if (input_password.getError() != null || input_email.getError() != null || input_username.getError() != null || input_email.getText().toString().trim().length() == 0 || input_username.getText().toString().trim().length() == 0 || input_password.getText().toString().trim().length() == 0) {
showMessage(getString(R.string.error_validation));
} else {
showDialog();
performRegistration(name, email, password);
checkForUserAndPerformRegistration(name, email, password);
}
}
});
@@ -201,6 +205,12 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
private void checkForUserAndPerformRegistration(final String username, final String email, final String password) {
String tag_string_req = "req_checkregister";
StringRequest strReq = getStringRequestCheckUserExists(username, email, password);
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
private void performRegistration(final String username, final String email, final String password) {
String tag_string_req = "req_register";
StringRequest strReq = getStringRequestRegisterUser(username, email, password);
@@ -220,8 +230,8 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr
session.removeUser();
showDialog();
String tag_string_req = "sociallogin";
StringRequest strReq = getStringRequestSocialMediaLogin(key, providerType, username, email);
String tag_string_req = "socialloginrequest";
StringRequest strReq = getStringRequestCheckSocialUserExists(key, providerType, username, email);
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
@@ -254,6 +264,12 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
private void performSocialMediaLogin(final String key, final String providerType, final String username, final String email){
String tag_string_req = "sociallogin";
StringRequest strReq = getStringRequestSocialMediaLogin( key, providerType, username, email);
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
private StringRequest getStringRequestSocialMediaLogin(final String key, final String providerType, final String username, final String email) {
return new StringRequest(Method.POST,AppConfig.URL_ENCRYPTED, new Response.Listener<String>() {
@@ -443,33 +459,27 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr
};
}
private StringRequest getStringRequestRegisterUser(final String username, final String email, final String password) {
private StringRequest getStringRequestCheckUserExists(final String username, final String email, final String password) {
return new StringRequest(Method.POST, AppConfig.URL_ENCRYPTED, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "Register Response: " + response);
Log.d(TAG, "Check User Exists Response: " + response);
hideDialog();
try {
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
if (!error) {
new AlertDialog.Builder(LoginActivity.this)
.setTitle(getString(R.string.alert_accregistration_title))
.setMessage(getString(R.string.alert_accregistration_text))
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(
LoginActivity.this,
LoginActivity.class);
intent.putExtra(AppConfig.EXTRA_MESSAGE, AppConfig.INTENT_NORMALLOGIN);
startActivity(intent);
finish();
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
if(jObj.getInt("exists") == 1){
showMessage("Registration failed. Username and/or E-Mail already taken");
}else{
createAndShowPrivacyDialog(username, email, password);
}
} else {
String errorMsg = jObj.getString("error_msg");
Log.e(TAG, "Error occured: "+errorMsg);
@@ -493,16 +503,178 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("tag", AppConfig.REST_REGISTER);
params.put("username", username);
params.put("tag", AppConfig.REST_LOGIN_EXISTS);
params.put("email", email);
params.put("password", password);
return params;
}
};
}
private StringRequest getStringRequestCheckSocialUserExists(final String key, final String providerType, final String username, final String email) {
return new StringRequest(Method.POST, AppConfig.URL_ENCRYPTED, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "Check User Exists Response: " + response);
hideDialog();
try {
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
if (!error) {
if(jObj.getInt("exists") == 1){
performSocialMediaLogin( key,providerType, username, email);
}else{
createAndShowPrivacyDialogForSocialUser( key,providerType, username, email);
}
} else {
String errorMsg = jObj.getString("error_msg");
Log.e(TAG, "Error occured: "+errorMsg);
Toast.makeText(getApplicationContext(), getResources().getString(R.string.txt_errormsg_register), Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Registration Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
getResources().getString(R.string.txt_errormsg_register), Toast.LENGTH_LONG).show();
hideDialog();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("tag", AppConfig.REST_LOGIN_EXISTS);
params.put("key", key);
return params;
}
};
}
private void createAndShowPrivacyDialogForSocialUser(final String key, final String providerType, final String username, final String email) {
final TextView privacyText = new TextView(LoginActivity.this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
privacyText.setLayoutParams(lp);
privacyText.setText(R.string.txt_register_privacy);
privacyText.setMovementMethod(LinkMovementMethod.getInstance());
privacyText.setPadding(10,20,10,20);
CheckBox privacyCheckbox = new CheckBox(getApplicationContext());
privacyCheckbox.setText(R.string.txt_register_privacy_text);
privacyCheckbox.setTextColor(getResources().getColor(R.color.md_black_1000));
privacyCheckbox.setButtonDrawable(Resources.getSystem().getIdentifier("btn_check_holo_light", "drawable", "android"));
privacyCheckbox.setPadding(10,20,10,20);
LinearLayout layout = new LinearLayout(LoginActivity.this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.addView(privacyText);
layout.addView(privacyCheckbox);
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this)
.setTitle(R.string.txt_register_privacy_title)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
performSocialMediaLogin(key, providerType, username, email);
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
})
.setIcon(R.drawable.logo_380);
final AlertDialog dialog = builder.create();
privacyCheckbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
} else {
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
}
}
});
dialog.setView(layout, 40, 40, 40, 40);
dialog.show();
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
}
private void createAndShowPrivacyDialog(final String username, final String email, final String password) {
final TextView privacyText = new TextView(LoginActivity.this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
privacyText.setLayoutParams(lp);
privacyText.setText(R.string.txt_register_privacy);
privacyText.setMovementMethod(LinkMovementMethod.getInstance());
privacyText.setPadding(10,20,10,20);
CheckBox privacyCheckbox = new CheckBox(getApplicationContext());
privacyCheckbox.setText(R.string.txt_register_privacy_text);
privacyCheckbox.setTextColor(getResources().getColor(R.color.md_black_1000));
privacyCheckbox.setButtonDrawable(Resources.getSystem().getIdentifier("btn_check_holo_light", "drawable", "android"));
privacyCheckbox.setPadding(10,20,10,20);
LinearLayout layout = new LinearLayout(LoginActivity.this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.addView(privacyText);
layout.addView(privacyCheckbox);
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this)
.setTitle(R.string.txt_register_privacy_title)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
performRegistration(username, email, password);
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
})
.setIcon(R.drawable.logo_380);
final AlertDialog dialog = builder.create();
privacyCheckbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
} else {
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
}
}
});
dialog.setView(layout, 40, 40, 40, 40);
dialog.show();
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
}
private StringRequest getStringRequestResetPW(final String email) {
return new StringRequest(Method.POST, AppConfig.URL_ENCRYPTED, new Response.Listener<String>() {
@@ -593,6 +765,67 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr
};
}
private StringRequest getStringRequestRegisterUser(final String username, final String email, final String password) {
return new StringRequest(Method.POST, AppConfig.URL_ENCRYPTED, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "Register Response: " + response);
hideDialog();
try {
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
if (!error) {
new AlertDialog.Builder(LoginActivity.this)
.setTitle(getString(R.string.alert_accregistration_title))
.setMessage(getString(R.string.alert_accregistration_text))
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(
LoginActivity.this,
LoginActivity.class);
intent.putExtra(AppConfig.EXTRA_MESSAGE, AppConfig.INTENT_LOGIN);
startActivity(intent);
finish();
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
} else {
String errorMsg = jObj.getString("error_msg");
Log.e(TAG, "Error occured: "+errorMsg);
Toast.makeText(getApplicationContext(), getResources().getString(R.string.txt_errormsg_register), Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Registration Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
getResources().getString(R.string.txt_errormsg_register), Toast.LENGTH_LONG).show();
hideDialog();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("tag", AppConfig.REST_REGISTER);
params.put("username", username);
params.put("email", email);
params.put("password", password);
return params;
}
};
}
public void showMessage(String statusText){
Toast.makeText(this, statusText, Toast.LENGTH_LONG).show();
}

View File

@@ -30,7 +30,6 @@ import java.util.Map;
public class MainActivity extends BaseActivity{
private final static String mActivityTitle = "RiskAhead";
private final static String TAG = MainActivity.class.getSimpleName();
private Handler mHandler = new Handler();
@@ -41,10 +40,8 @@ public class MainActivity extends BaseActivity{
super.onCreate(savedInstanceState);
userHasToBeLoggedIn();
showDialog();
registerBroadcastReceiver();
initButtons();
}
@@ -194,6 +191,6 @@ public class MainActivity extends BaseActivity{
@Override
protected String getActivityName() {
return mActivityTitle;
return getResources().getString(R.string.title_activity_start);
}
}

View File

@@ -65,7 +65,6 @@ import java.util.Map;
public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCallbacks<Cursor>,
ClusterManager.OnClusterItemInfoWindowClickListener<IncidentReport>, ClusterManager.OnClusterClickListener<IncidentReport>, ClusterManager.OnClusterItemClickListener<IncidentReport>, OnMapReadyCallback {
private final static String mActivityTitle = "Risk Map";
private static final String TAG = MapsActivity.class.getSimpleName();
private static final int DEFAULT_ZOOM_LEVEL = 14;
@@ -99,7 +98,6 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
userHasToBeLoggedIn();
registerBroadcastReceiver();
navDrawer.setSelection(mapAvtivityID, false);
@@ -737,7 +735,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa
@Override
protected String getActivityName() {
return mActivityTitle;
return getResources().getString(R.string.title_activity_maps);
}
public void onBackPressed(){

View File

@@ -14,14 +14,12 @@ import org.deke.risk.riskahead.helper.SessionManager;
public class ProfileActivity extends BaseActivity{
private final static String mActivityTitle = "User Statistics";
private final static String TAG = ProfileActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
userHasToBeLoggedIn();
registerBroadcastReceiver();
Intent intent = getIntent();
String msg_intent = intent.getStringExtra(AppConfig.EXTRA_MESSAGE);
@@ -109,7 +107,7 @@ public class ProfileActivity extends BaseActivity{
@Override
protected String getActivityName() {
return mActivityTitle;
return getResources().getString(R.string.title_activity_user_config);
}

View File

@@ -56,7 +56,6 @@ public class ReportWFActivity extends BaseActivity implements ReportWF_1_Fragmen
,ReportWF_4_Fragment.OnInputFinishedListener, ReportWF_5_Fragment.OnInputFinishedListener,ReportWF_6_Fragment.OnInputFinishedListener
,ReportWF_7_Fragment.OnInputFinishedListener, ReportWF_8_Fragment.OnInputFinishedListener, ReportWF_Finish_Fragment.SendReportListener {
private final static String mActivityTitle = "Report Incident";
private final static String TAG = ReportWFActivity.class.getSimpleName();
private List<BaseReportWFFragment> fragList = new ArrayList<>();
@@ -88,7 +87,6 @@ public class ReportWFActivity extends BaseActivity implements ReportWF_1_Fragmen
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
registerBroadcastReceiver();
initFragments();
initButtonsAndElements();
@@ -475,6 +473,6 @@ public class ReportWFActivity extends BaseActivity implements ReportWF_1_Fragmen
@Override
protected String getActivityName() {
return mActivityTitle;
return getResources().getString(R.string.title_activity_report_wf);
}
}

View File

@@ -8,7 +8,6 @@ import org.deke.risk.riskahead.helper.BaseActivity;
public class SettingsActivity extends BaseActivity {
private final static String mActivityTitle = "Account Settings";
private final static String TAG = SettingsActivity.class.getSimpleName();
@@ -16,7 +15,6 @@ public class SettingsActivity extends BaseActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
userHasToBeLoggedIn();
registerBroadcastReceiver();
getFragmentManager().beginTransaction().replace(R.id.fragment_content, new SettingsFragment()).commit();
Log.d(TAG, "SettingsActivity created");
@@ -36,7 +34,7 @@ public class SettingsActivity extends BaseActivity {
}
@Override
protected String getActivityName() { return mActivityTitle; }
protected String getActivityName() { return getResources().getString(R.string.title_activity_settings); }

View File

@@ -39,7 +39,6 @@ import java.util.Map;
public class SubscriptionsActivity extends BaseActivity{
private final static String mActivityTitle = "Subscriptions";
private final static String TAG = SubscriptionsActivity.class.getSimpleName();
private TableLayout tblBillings;
@@ -56,7 +55,6 @@ public class SubscriptionsActivity extends BaseActivity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
userHasToBeLoggedIn();
registerBroadcastReceiver();
tblBillings = (TableLayout) findViewById(R.id.tbl_billing);
@@ -448,7 +446,7 @@ public class SubscriptionsActivity extends BaseActivity{
}
@Override
protected String getActivityName() { return mActivityTitle; }
protected String getActivityName() { return getResources().getString(R.string.title_activity_subscriptions); }
@Override
public void onDestroy() {

View File

@@ -39,7 +39,6 @@ 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 txtIncidentCategory;
@@ -67,7 +66,6 @@ public class ViewReportActivity extends BaseActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
userHasToBeLoggedIn();
registerBroadcastReceiver();
showDialog();
@@ -149,7 +147,7 @@ public class ViewReportActivity extends BaseActivity {
@Override
protected String getActivityName() {
return mActivityTitle;
return getResources().getString(R.string.title_activity_view_report);
}
public void getIncident(Integer uid) {

View File

@@ -14,6 +14,8 @@ public class AppConfig {
public final static String URL_ABOUT = "http://www.riskahead.de/en/about/";
public final static String URL_CONTACT = "http://www.riskahead.de/en/contact-2/";
public final static String URL_TERMS = "http://www.riskahead.de/en/terms/";
public final static String URL_PRIVACY = "http://www.riskahead.de/en/privacy/";
/** INTENT MESSAGES **/
public final static String EXTRA_MESSAGE = "org.deke.risk.riskahead.MESSAGE";
@@ -38,6 +40,8 @@ public class AppConfig {
/** REST WEBSERVICE **/
public final static String REST_LOGIN = "login";
public final static String REST_LOGIN_SOCIAL = "sociallogin";
public final static String REST_LOGIN_EXISTS= "checkifuserexists";
public final static String REST_LOGIN_EXISTS_SOCIAL = "checkifsocialuserexists";
public final static String REST_REGISTER = "register";
public final static String REST_RESENDACTIVATIONMAIL = "resendactivationusermail";
public final static String REST_ACTIVATEUSER = "activateuser";

View File

@@ -10,6 +10,9 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.drawable.ColorDrawable;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
@@ -20,14 +23,18 @@ import android.support.v4.view.LayoutInflaterCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.format.DateUtils;
import android.text.method.LinkMovementMethod;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Request;
@@ -37,7 +44,6 @@ 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;
import com.google.android.gms.maps.model.LatLng;
import com.mikepenz.google_material_typeface_library.GoogleMaterial;
import com.mikepenz.iconics.context.IconicsLayoutInflater;
import com.mikepenz.materialdrawer.AccountHeader;
@@ -62,6 +68,7 @@ import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
public abstract class BaseActivity extends AppCompatActivity {
@@ -86,6 +93,8 @@ public abstract class BaseActivity extends AppCompatActivity {
public Drawer navDrawer = null;
public Toolbar mToolbar;
private BroadcastReceiver myReceiver;
private static final int TIME_INTERVAL = 2000; // # milliseconds, desired time passed between two back presses.
private long mBackPressed;
@@ -144,23 +153,49 @@ public abstract class BaseActivity extends AppCompatActivity {
}
class LogoutReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("onReceive", "Logout in progress");
finish();
}
}
@Override
protected void onPause(){
super.onPause();
unregisterBroadcastReceiver();
}
@Override
protected void onResume(){
super.onResume();
registerBroadcastReceiver();
}
public void registerBroadcastReceiver(){
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(AppConfig.INTENT_LOGOUT);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("onReceive", "Logout in progress");
finish();
}
}, intentFilter);
myReceiver = new LogoutReceiver();
registerReceiver(myReceiver, intentFilter);
}
public void unregisterBroadcastReceiver(){
try{
unregisterReceiver(myReceiver);
}catch(final Exception e){
e.printStackTrace();
//no receiver registered - no problem
}
}
private void initProgressDialog() {
pDialog = new Dialog(this);
pDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
pDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
pDialog.setContentView(R.layout.progress_circle);
pDialog.setContentView(R.layout.dialog_progresscircle);
}
private void initAds() {
@@ -345,6 +380,8 @@ public abstract class BaseActivity extends AppCompatActivity {
Intent broadcastIntent = new Intent();
broadcastIntent.setAction(AppConfig.INTENT_LOGOUT);
sendBroadcast(broadcastIntent);
stopService(new Intent(BaseActivity.this, NotificationService.class));
finish();
}
@@ -372,12 +409,14 @@ public abstract class BaseActivity extends AppCompatActivity {
intent = new Intent(getApplicationContext(), ReportWFActivity.class);
intent.putExtra(EXTRA_MESSAGE, position);
startActivity(intent);
finish();
}
public void gotoMapActivity(){
Intent intent;
intent = new Intent(BaseActivity.this, MapsActivity.class);
BaseActivity.this.startActivity(intent);
finish();
}
public void gotoMapActivity(String position){
@@ -385,6 +424,7 @@ public abstract class BaseActivity extends AppCompatActivity {
intent = new Intent(getApplicationContext(), MapsActivity.class);
intent.putExtra(EXTRA_MESSAGE, position);
startActivity(intent);
finish();
}
public void getNotifyLocationFromMapActivity(){
@@ -392,6 +432,7 @@ public abstract class BaseActivity extends AppCompatActivity {
intent = new Intent(getApplicationContext(), MapsActivity.class);
intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETNOTIFY);
startActivity(intent);
finish();
}
public void getIncidentLocationFromMapActivity(){
@@ -399,6 +440,7 @@ public abstract class BaseActivity extends AppCompatActivity {
intent = new Intent(getApplicationContext(), MapsActivity.class);
intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETINCLOC);
startActivity(intent);
finish();
}
public void getNotifyLocationFromMapActivity(String position){
@@ -407,6 +449,7 @@ public abstract class BaseActivity extends AppCompatActivity {
intent.putExtra(EXTRA_MESSAGE, position);
intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETNOTIFY);
startActivity(intent);
finish();
}
public void getIncidentLocationFromMapActivity(String position){
@@ -415,12 +458,14 @@ public abstract class BaseActivity extends AppCompatActivity {
intent.putExtra(EXTRA_MESSAGE, position);
intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETINCLOC);
startActivity(intent);
finish();
}
public void gotoProfileActivity(){
Intent intent;
intent = new Intent(getApplicationContext(), ProfileActivity.class);
startActivity(intent);
finish();
}
public void gotoProfileActivity(String uid){
@@ -428,18 +473,21 @@ public abstract class BaseActivity extends AppCompatActivity {
intent = new Intent(getApplicationContext(), ProfileActivity.class);
intent.putExtra(EXTRA_MESSAGE, uid);
startActivity(intent);
finish();
}
public void gotoSettingsActivity(){
Intent intent;
intent = new Intent(getApplicationContext(), SettingsActivity.class);
startActivity(intent);
finish();
}
public void gotoSubscriptionsActivity(){
Intent intent;
intent = new Intent(getApplicationContext(), SubscriptionsActivity.class);
startActivity(intent);
finish();
}
public void gotoViewReportActivity(Integer uid){
@@ -447,6 +495,7 @@ public abstract class BaseActivity extends AppCompatActivity {
intent = new Intent(getApplicationContext(), ViewReportActivity.class);
intent.putExtra(EXTRA_MESSAGE, uid);
startActivity(intent);
finish();
}
@Override
@@ -459,8 +508,9 @@ public abstract class BaseActivity extends AppCompatActivity {
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}else if((id == R.id.menu_action_about)){
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.riskahead.net/about/"));
startActivity(browserIntent);
showAboutInfoDialog();
}else if((id == R.id.menu_action_language)){
showLanguageDialog();
}else if((id == R.id.menu_action_help)){
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.riskahead.net/contact/"));
startActivity(browserIntent);
@@ -471,6 +521,68 @@ public abstract class BaseActivity extends AppCompatActivity {
return super.onOptionsItemSelected(item);
}
private void showLanguageDialog(){
AlertDialog.Builder b = new AlertDialog.Builder(this);
b.setTitle(R.string.txt_language_title);
String[] types = {"de - Deutsch", "en - English"};
b.setItems(types, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
switch(which){
case 0:
setLocale("de");
break;
case 1:
setLocale("en");
break;
}
}
});
b.show();
}
public void setLocale(String lang) {
Locale myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(this, this.getClass());
startActivity(refresh);
finish();
}
private void showAboutInfoDialog() {
LayoutInflater inflater = getLayoutInflater();
View dialoglayout = inflater.inflate(R.layout.dialog_about, null);
((TextView) dialoglayout.findViewById(R.id.txt_about_homepage)).setMovementMethod(LinkMovementMethod.getInstance());
((TextView) dialoglayout.findViewById(R.id.txt_about_privacy)).setMovementMethod(LinkMovementMethod.getInstance());
((TextView) dialoglayout.findViewById(R.id.txt_about_terms)).setMovementMethod(LinkMovementMethod.getInstance());
try {
((TextView) dialoglayout.findViewById(R.id.lbl_about_version)).setText("Version: "+ getPackageManager().getPackageInfo(getPackageName(), 0).versionName);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
AlertDialog.Builder builder = new AlertDialog.Builder(BaseActivity.this)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//do nothing
}
});
builder.setView(dialoglayout);
builder.show();
}
private void showFeedbackDialog() {
AlertDialog.Builder alert=new AlertDialog.Builder(this);
alert.setTitle(R.string.menu_action_feedback);

View File

@@ -43,7 +43,6 @@ public class NotificationService extends Service {
public HashMap<String, String> user;
public LocationManager locationManager;
public LatLng myPosition;
public NotificationService() {
super();
@@ -120,7 +119,7 @@ public class NotificationService extends Service {
Log.d(this.toString(), "Run Notification Task. Notifications enabled = " + notifyEnabled);
if(notifyEnabled){
if(notifyEnabled && session.isLoggedIn()){
if ((myPosition != null) && (myPosition.latitude != 0.0) && (myPosition.longitude != 0.0)) {
session.setNotificationServiceReady(true);
String lastNotificationTime;

View File

@@ -64,30 +64,23 @@
android:text="@string/btn_start_login"
android:textColor="@color/white" />
<LinearLayout
android:layout_width="match_parent"
android:layout_below="@+id/btn_login"
android:orientation="horizontal"
android:layout_centerHorizontal="true"
android:gravity="center"
android:layout_height="wrap_content">
<TextView
android:id="@+id/lbl_login_resendPW"
android:layout_width="0dp"
android:ellipsize="end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lbl_login_resendPW"
android:layout_weight=".5"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/lbl_login_policy"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="end"
android:ellipsize="end"
android:layout_weight=".45"
android:text="@string/lbl_login_policy"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>

View File

@@ -81,16 +81,7 @@
android:text="@string/btn_start_register"
android:textColor="@color/white" />
<TextView
android:id="@+id/lbl_login_policy"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight=".4"
android:gravity="end"
android:ellipsize="end"
android:text="@string/lbl_login_policy"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/input_register" />
</LinearLayout>

View File

@@ -82,6 +82,15 @@
android:clickable="true"
android:src="@android:drawable/ic_dialog_map" />
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:src="@drawable/logo_380"
android:id="@+id/imageView2"
android:layout_margin="5dp"
android:layout_gravity="center_horizontal" />
<com.beardedhen.androidbootstrap.AwesomeTextView
android:id="@+id/atvStatus"
android:layout_width="wrap_content"

View File

@@ -6,7 +6,6 @@
android:background="@drawable/layout_bg_gradient"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SubscriptionsActivity">
<include
@@ -21,12 +20,11 @@
android:id="@+id/layoutMain"
android:layout_below="@+id/toolbar"
android:layout_margin="0dp"
android:padding="10dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/lbl_profile_numberposts"
android:text="@string/lbl_subs_maintaining"
@@ -36,6 +34,13 @@
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_margin="5dp"/>
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/logo_380"
android:id="@+id/imageView2"
android:layout_gravity="center_horizontal" />
<TextView
android:id="@+id/lbl_profile_ranking"
android:text="@string/lbl_subs_helpus"
@@ -45,6 +50,12 @@
android:layout_margin="5dp"
android:textColor="@color/text_light_grey"/>
<View
android:layout_width="fill_parent"
android:layout_height="1dip"
android:layout_marginBottom="10dp"
android:background="#464b4b4b" />
<TableLayout
android:id="@+id/tbl_billing"
android:layout_width="match_parent"

View File

@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:background="@color/tw__transparent"
android:padding="20dp"
android:layout_height="match_parent">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/logo_380"
android:id="@+id/imageView2"
android:layout_gravity="center_horizontal" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/txt_about_riskahead"
android:id="@+id/lbl_about_name"
android:layout_gravity="center_horizontal" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Version: 1.7.1"
android:id="@+id/lbl_about_version"
android:layout_gravity="center_horizontal" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/txt_about_developedby"
android:id="@+id/lbl_about_developer" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Dennis Thießen"
android:id="@+id/tv_developer2"
android:layout_gravity="center_horizontal" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Kevin-Chris Gründel"
android:id="@+id/tv_developer3"
android:layout_gravity="center_horizontal" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:autoLink="web"
android:textSize="10sp"
android:text="@string/txt_about_homepage"
android:id="@+id/txt_about_homepage"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:layout_marginTop="3dp"
android:textSize="10sp"
android:text="@string/txt_about_privacy"
android:id="@+id/txt_about_privacy"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:layout_marginTop="3dp"
android:textSize="10sp"
android:text="@string/txt_about_terms"
android:id="@+id/txt_about_terms" />
</LinearLayout>

View File

@@ -8,6 +8,8 @@
android:orderInCategory="100" app:showAsAction="never" />
<item android:id="@+id/menu_action_feedback" android:title="@string/menu_action_feedback"
android:orderInCategory="100" app:showAsAction="never" />
<item android:id="@+id/menu_action_language" android:title="@string/menu_action_language"
android:orderInCategory="100" app:showAsAction="never" />
<item android:id="@+id/menu_action_exit" android:title="@string/menu_action_exit"
android:orderInCategory="100" app:showAsAction="never" />

View File

@@ -230,6 +230,17 @@
<string name="txt_notifystatus_deactivated">AUS</string>
<string name="txt_map_zoomoutpremium">Hole dir die Premium-Mitgliedschaft um die ganze Karte zu sehen!</string>
<string name="txt_register_privacy">Bitte bestätige, dass du mit der Registrierung bei RiskAhead die <a href="http://www.riskahead.de">Datenschutzbestimmungen</a> und <a href="http://www.riskahead.de">Nutzungsbedingungen</a> gelesen hast und damit einverstanden bist.</string>
<string name="txt_register_privacy_text">Mit der Auswahl dieser Kontrollbox erkläre ich mich mit den Datenschutz- und Nutzungsbedingungen einverstanden</string>
<string name="txt_register_privacy_title">Deine Privatsphäre ist uns sehr wichtig</string>
<string name="txt_about_developedby">Entwickelt von</string>
<string name="txt_about_privacy">Datenschutzerklärung: <a href="http://www.riskahead.de/en/privacy/">http://www.riskahead.de/en/privacy/</a></string>
<string name="txt_about_terms">Nutzungsbedingungen: <a href="http://www.riskahead.de/en/terms/">http://www.riskahead.de/en/terms/</a></string>
<string name="txt_about_homepage">Website: <a href="http://www.riskahead.net">http://www.riskahead.net</a></string>
<string name="txt_about_riskahead">RiskAhead for Android</string>
<string name="menu_action_language">Sprache</string>
<string name="txt_language_title">Ändere Sprache</string>
<string-array name="cat_situation_main">
<item>Allgemeiner Vorfall/Situation</item>
<item>Mündliche Gewalt</item>

View File

@@ -24,9 +24,9 @@
<color name="input_login">#222222</color>
<color name="input_login_hint">#999999</color>
<color name="input_register">#888888</color>
<color name="input_register">#afafaf</color>
<color name="input_register_bg">#3b4148</color>
<color name="input_register_hint">#5e6266</color>
<color name="input_register_hint">#8c9094</color>
<color name="btn_login_bg">#1175b7</color>
</resources>

View File

@@ -237,6 +237,17 @@
<string name="txt_notifystatus_deactivated">OFF</string>
<string name="txt_map_zoomoutpremium">Get Premiuim to view the Full Map!</string>
<string name="txt_register_privacy">Please confirm that you have read our <a href="http://www.riskahead.de">Privacy Policy</a> and <a href="http://www.riskahead.de">Terms of Service</a> and you accept these by using RiskAhead.</string>
<string name="txt_register_privacy_text">By checking this checkbox I hereby confirm that I accept the terms of service and privacy policy</string>
<string name="txt_register_privacy_title">Your privacy is very important to us</string>
<string name="txt_about_developedby">Dveloped from</string>
<string name="txt_about_privacy">Privacy Policy: <a href="http://www.riskahead.de/en/privacy/">http://www.riskahead.de/en/privacy/</a></string>
<string name="txt_about_terms">Terms of Service: <a href="http://www.riskahead.de/en/terms/">http://www.riskahead.de/en/terms/</a></string>
<string name="txt_about_homepage">Website: <a href="http://www.riskahead.net">http://www.riskahead.net</a></string>
<string name="txt_about_riskahead">RiskAhead for Android</string>
<string name="menu_action_language">Language</string>
<string name="txt_language_title">Change Language</string>
<string-array name="cat_situation_main">
<item> A Threatening Incident or Situation</item>
<item>Verbal Violence</item>