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" applicationId "org.deke.risk.riskahead"
minSdkVersion 15 minSdkVersion 15
targetSdkVersion 22 targetSdkVersion 22
versionCode 14 versionCode 15
versionName "1.7.2" versionName "1.8"
} }
buildTypes { buildTypes {
release { release {

View File

@@ -30,8 +30,6 @@
android:label="@string/app_name" android:label="@string/app_name"
android:theme="@style/MyRiskAheadTheme"> android:theme="@style/MyRiskAheadTheme">
<!-- Google Maps Fragment API Key Data --> <!-- Google Maps Fragment API Key Data -->
<meta-data <meta-data
android:name="com.google.android.gms.version" 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.AlertDialog;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.res.Resources;
import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction; import android.support.v4.app.FragmentTransaction;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.text.Html;
import android.text.method.LinkMovementMethod; import android.text.method.LinkMovementMethod;
import android.text.method.MovementMethod;
import android.util.Log; import android.util.Log;
import android.util.Patterns; import android.util.Patterns;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.Button; 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.TextView;
import android.widget.Toast; import android.widget.Toast;
@@ -71,9 +78,6 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr
}else if(msg_intent.equals(AppConfig.INTENT_REGISTER)){ }else if(msg_intent.equals(AppConfig.INTENT_REGISTER)){
initRegisterView(); initRegisterView();
} }
TextView policyandterms = (TextView) findViewById(R.id.lbl_login_policy);
policyandterms.setMovementMethod(LinkMovementMethod.getInstance());
} }
private void initProgressDialog() { private void initProgressDialog() {
@@ -140,7 +144,7 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr
input_password = (TextView) findViewById(R.id.input_register_password); input_password = (TextView) findViewById(R.id.input_register_password);
Button btn_login = (Button) findViewById(R.id.btn_register); 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 @Override
public void validate(TextView textView, String text) { public void validate(TextView textView, String text) {
if (text.length() < 5) { if (text.length() < 5) {
@@ -174,11 +178,11 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr
String password = input_password.getText().toString(); String password = input_password.getText().toString();
String name = input_username.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)); showMessage(getString(R.string.error_validation));
} else { } else {
showDialog(); 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); 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) { private void performRegistration(final String username, final String email, final String password) {
String tag_string_req = "req_register"; String tag_string_req = "req_register";
StringRequest strReq = getStringRequestRegisterUser(username, email, password); StringRequest strReq = getStringRequestRegisterUser(username, email, password);
@@ -220,8 +230,8 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr
session.removeUser(); session.removeUser();
showDialog(); showDialog();
String tag_string_req = "sociallogin"; String tag_string_req = "socialloginrequest";
StringRequest strReq = getStringRequestSocialMediaLogin(key, providerType, username, email); StringRequest strReq = getStringRequestCheckSocialUserExists(key, providerType, username, email);
AppController.getInstance().addToRequestQueue(strReq, tag_string_req); 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); 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) { 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>() { 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>() { return new StringRequest(Method.POST, AppConfig.URL_ENCRYPTED, new Response.Listener<String>() {
@Override @Override
public void onResponse(String response) { public void onResponse(String response) {
Log.d(TAG, "Register Response: " + response); Log.d(TAG, "Check User Exists Response: " + response);
hideDialog(); hideDialog();
try { try {
JSONObject jObj = new JSONObject(response); JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error"); boolean error = jObj.getBoolean("error");
if (!error) { if (!error) {
new AlertDialog.Builder(LoginActivity.this)
.setTitle(getString(R.string.alert_accregistration_title)) if(jObj.getInt("exists") == 1){
.setMessage(getString(R.string.alert_accregistration_text)) showMessage("Registration failed. Username and/or E-Mail already taken");
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { }else{
public void onClick(DialogInterface dialog, int which) { createAndShowPrivacyDialog(username, email, password);
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();
} else { } else {
String errorMsg = jObj.getString("error_msg"); String errorMsg = jObj.getString("error_msg");
Log.e(TAG, "Error occured: "+errorMsg); Log.e(TAG, "Error occured: "+errorMsg);
@@ -493,16 +503,178 @@ public class LoginActivity extends AppCompatActivity implements FacebookButtonFr
@Override @Override
protected Map<String, String> getParams() { protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
params.put("tag", AppConfig.REST_REGISTER); params.put("tag", AppConfig.REST_LOGIN_EXISTS);
params.put("username", username);
params.put("email", email); params.put("email", email);
params.put("password", password);
return params; 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) { private StringRequest getStringRequestResetPW(final String email) {
return new StringRequest(Method.POST, AppConfig.URL_ENCRYPTED, new Response.Listener<String>() { 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){ public void showMessage(String statusText){
Toast.makeText(this, statusText, Toast.LENGTH_LONG).show(); Toast.makeText(this, statusText, Toast.LENGTH_LONG).show();
} }

View File

@@ -30,7 +30,6 @@ import java.util.Map;
public class MainActivity extends BaseActivity{ public class MainActivity extends BaseActivity{
private final static String mActivityTitle = "RiskAhead";
private final static String TAG = MainActivity.class.getSimpleName(); private final static String TAG = MainActivity.class.getSimpleName();
private Handler mHandler = new Handler(); private Handler mHandler = new Handler();
@@ -41,10 +40,8 @@ public class MainActivity extends BaseActivity{
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
userHasToBeLoggedIn(); userHasToBeLoggedIn();
showDialog(); showDialog();
registerBroadcastReceiver();
initButtons(); initButtons();
} }
@@ -194,6 +191,6 @@ public class MainActivity extends BaseActivity{
@Override @Override
protected String getActivityName() { 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>, public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCallbacks<Cursor>,
ClusterManager.OnClusterItemInfoWindowClickListener<IncidentReport>, ClusterManager.OnClusterClickListener<IncidentReport>, ClusterManager.OnClusterItemClickListener<IncidentReport>, OnMapReadyCallback { 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 String TAG = MapsActivity.class.getSimpleName();
private static final int DEFAULT_ZOOM_LEVEL = 14; 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) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
userHasToBeLoggedIn(); userHasToBeLoggedIn();
registerBroadcastReceiver();
navDrawer.setSelection(mapAvtivityID, false); navDrawer.setSelection(mapAvtivityID, false);
@@ -737,7 +735,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa
@Override @Override
protected String getActivityName() { protected String getActivityName() {
return mActivityTitle; return getResources().getString(R.string.title_activity_maps);
} }
public void onBackPressed(){ public void onBackPressed(){

View File

@@ -14,14 +14,12 @@ import org.deke.risk.riskahead.helper.SessionManager;
public class ProfileActivity extends BaseActivity{ public class ProfileActivity extends BaseActivity{
private final static String mActivityTitle = "User Statistics";
private final static String TAG = ProfileActivity.class.getSimpleName(); private final static String TAG = ProfileActivity.class.getSimpleName();
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
userHasToBeLoggedIn(); userHasToBeLoggedIn();
registerBroadcastReceiver();
Intent intent = getIntent(); Intent intent = getIntent();
String msg_intent = intent.getStringExtra(AppConfig.EXTRA_MESSAGE); String msg_intent = intent.getStringExtra(AppConfig.EXTRA_MESSAGE);
@@ -109,7 +107,7 @@ public class ProfileActivity extends BaseActivity{
@Override @Override
protected String getActivityName() { 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_4_Fragment.OnInputFinishedListener, ReportWF_5_Fragment.OnInputFinishedListener,ReportWF_6_Fragment.OnInputFinishedListener
,ReportWF_7_Fragment.OnInputFinishedListener, ReportWF_8_Fragment.OnInputFinishedListener, ReportWF_Finish_Fragment.SendReportListener { ,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 final static String TAG = ReportWFActivity.class.getSimpleName();
private List<BaseReportWFFragment> fragList = new ArrayList<>(); private List<BaseReportWFFragment> fragList = new ArrayList<>();
@@ -88,7 +87,6 @@ public class ReportWFActivity extends BaseActivity implements ReportWF_1_Fragmen
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
registerBroadcastReceiver();
initFragments(); initFragments();
initButtonsAndElements(); initButtonsAndElements();
@@ -475,6 +473,6 @@ public class ReportWFActivity extends BaseActivity implements ReportWF_1_Fragmen
@Override @Override
protected String getActivityName() { 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 { public class SettingsActivity extends BaseActivity {
private final static String mActivityTitle = "Account Settings";
private final static String TAG = SettingsActivity.class.getSimpleName(); private final static String TAG = SettingsActivity.class.getSimpleName();
@@ -16,7 +15,6 @@ public class SettingsActivity extends BaseActivity {
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
userHasToBeLoggedIn(); userHasToBeLoggedIn();
registerBroadcastReceiver();
getFragmentManager().beginTransaction().replace(R.id.fragment_content, new SettingsFragment()).commit(); getFragmentManager().beginTransaction().replace(R.id.fragment_content, new SettingsFragment()).commit();
Log.d(TAG, "SettingsActivity created"); Log.d(TAG, "SettingsActivity created");
@@ -36,7 +34,7 @@ public class SettingsActivity extends BaseActivity {
} }
@Override @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{ public class SubscriptionsActivity extends BaseActivity{
private final static String mActivityTitle = "Subscriptions";
private final static String TAG = SubscriptionsActivity.class.getSimpleName(); private final static String TAG = SubscriptionsActivity.class.getSimpleName();
private TableLayout tblBillings; private TableLayout tblBillings;
@@ -56,7 +55,6 @@ public class SubscriptionsActivity extends BaseActivity{
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
userHasToBeLoggedIn(); userHasToBeLoggedIn();
registerBroadcastReceiver();
tblBillings = (TableLayout) findViewById(R.id.tbl_billing); tblBillings = (TableLayout) findViewById(R.id.tbl_billing);
@@ -448,7 +446,7 @@ public class SubscriptionsActivity extends BaseActivity{
} }
@Override @Override
protected String getActivityName() { return mActivityTitle; } protected String getActivityName() { return getResources().getString(R.string.title_activity_subscriptions); }
@Override @Override
public void onDestroy() { public void onDestroy() {

View File

@@ -39,7 +39,6 @@ import java.util.Map;
public class ViewReportActivity extends BaseActivity { public class ViewReportActivity extends BaseActivity {
private final static String mActivityTitle = "ViewReport";
private final static String TAG = ViewReportActivity.class.getSimpleName(); private final static String TAG = ViewReportActivity.class.getSimpleName();
private EditText txtIncidentCategory; private EditText txtIncidentCategory;
@@ -67,7 +66,6 @@ public class ViewReportActivity extends BaseActivity {
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
userHasToBeLoggedIn(); userHasToBeLoggedIn();
registerBroadcastReceiver();
showDialog(); showDialog();
@@ -149,7 +147,7 @@ public class ViewReportActivity extends BaseActivity {
@Override @Override
protected String getActivityName() { protected String getActivityName() {
return mActivityTitle; return getResources().getString(R.string.title_activity_view_report);
} }
public void getIncident(Integer uid) { 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_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_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 **/ /** INTENT MESSAGES **/
public final static String EXTRA_MESSAGE = "org.deke.risk.riskahead.MESSAGE"; public final static String EXTRA_MESSAGE = "org.deke.risk.riskahead.MESSAGE";
@@ -38,6 +40,8 @@ public class AppConfig {
/** REST WEBSERVICE **/ /** REST WEBSERVICE **/
public final static String REST_LOGIN = "login"; public final static String REST_LOGIN = "login";
public final static String REST_LOGIN_SOCIAL = "sociallogin"; 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_REGISTER = "register";
public final static String REST_RESENDACTIVATIONMAIL = "resendactivationusermail"; public final static String REST_RESENDACTIVATIONMAIL = "resendactivationusermail";
public final static String REST_ACTIVATEUSER = "activateuser"; public final static String REST_ACTIVATEUSER = "activateuser";

View File

@@ -10,6 +10,9 @@ import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; 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.graphics.drawable.ColorDrawable;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.NetworkInfo; import android.net.NetworkInfo;
@@ -20,14 +23,18 @@ import android.support.v4.view.LayoutInflaterCompat;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import android.text.method.LinkMovementMethod;
import android.util.DisplayMetrics;
import android.util.Log; import android.util.Log;
import android.view.Gravity; import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.Window; import android.view.Window;
import android.widget.EditText; import android.widget.EditText;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import com.android.volley.Request; 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.AdListener;
import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd; 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.google_material_typeface_library.GoogleMaterial;
import com.mikepenz.iconics.context.IconicsLayoutInflater; import com.mikepenz.iconics.context.IconicsLayoutInflater;
import com.mikepenz.materialdrawer.AccountHeader; import com.mikepenz.materialdrawer.AccountHeader;
@@ -62,6 +68,7 @@ import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.HashMap; import java.util.HashMap;
import java.util.Locale;
import java.util.Map; import java.util.Map;
public abstract class BaseActivity extends AppCompatActivity { public abstract class BaseActivity extends AppCompatActivity {
@@ -86,6 +93,8 @@ public abstract class BaseActivity extends AppCompatActivity {
public Drawer navDrawer = null; public Drawer navDrawer = null;
public Toolbar mToolbar; public Toolbar mToolbar;
private BroadcastReceiver myReceiver;
private static final int TIME_INTERVAL = 2000; // # milliseconds, desired time passed between two back presses. private static final int TIME_INTERVAL = 2000; // # milliseconds, desired time passed between two back presses.
private long mBackPressed; 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(){ public void registerBroadcastReceiver(){
IntentFilter intentFilter = new IntentFilter(); IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(AppConfig.INTENT_LOGOUT); intentFilter.addAction(AppConfig.INTENT_LOGOUT);
registerReceiver(new BroadcastReceiver() { myReceiver = new LogoutReceiver();
@Override registerReceiver(myReceiver, intentFilter);
public void onReceive(Context context, Intent intent) { }
Log.d("onReceive", "Logout in progress");
finish(); public void unregisterBroadcastReceiver(){
} try{
}, intentFilter); unregisterReceiver(myReceiver);
}catch(final Exception e){
e.printStackTrace();
//no receiver registered - no problem
}
} }
private void initProgressDialog() { private void initProgressDialog() {
pDialog = new Dialog(this); pDialog = new Dialog(this);
pDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); pDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
pDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); pDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
pDialog.setContentView(R.layout.progress_circle); pDialog.setContentView(R.layout.dialog_progresscircle);
} }
private void initAds() { private void initAds() {
@@ -345,6 +380,8 @@ public abstract class BaseActivity extends AppCompatActivity {
Intent broadcastIntent = new Intent(); Intent broadcastIntent = new Intent();
broadcastIntent.setAction(AppConfig.INTENT_LOGOUT); broadcastIntent.setAction(AppConfig.INTENT_LOGOUT);
sendBroadcast(broadcastIntent); sendBroadcast(broadcastIntent);
stopService(new Intent(BaseActivity.this, NotificationService.class));
finish(); finish();
} }
@@ -372,12 +409,14 @@ public abstract class BaseActivity extends AppCompatActivity {
intent = new Intent(getApplicationContext(), ReportWFActivity.class); intent = new Intent(getApplicationContext(), ReportWFActivity.class);
intent.putExtra(EXTRA_MESSAGE, position); intent.putExtra(EXTRA_MESSAGE, position);
startActivity(intent); startActivity(intent);
finish();
} }
public void gotoMapActivity(){ public void gotoMapActivity(){
Intent intent; Intent intent;
intent = new Intent(BaseActivity.this, MapsActivity.class); intent = new Intent(BaseActivity.this, MapsActivity.class);
BaseActivity.this.startActivity(intent); BaseActivity.this.startActivity(intent);
finish();
} }
public void gotoMapActivity(String position){ public void gotoMapActivity(String position){
@@ -385,6 +424,7 @@ public abstract class BaseActivity extends AppCompatActivity {
intent = new Intent(getApplicationContext(), MapsActivity.class); intent = new Intent(getApplicationContext(), MapsActivity.class);
intent.putExtra(EXTRA_MESSAGE, position); intent.putExtra(EXTRA_MESSAGE, position);
startActivity(intent); startActivity(intent);
finish();
} }
public void getNotifyLocationFromMapActivity(){ public void getNotifyLocationFromMapActivity(){
@@ -392,6 +432,7 @@ public abstract class BaseActivity extends AppCompatActivity {
intent = new Intent(getApplicationContext(), MapsActivity.class); intent = new Intent(getApplicationContext(), MapsActivity.class);
intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETNOTIFY); intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETNOTIFY);
startActivity(intent); startActivity(intent);
finish();
} }
public void getIncidentLocationFromMapActivity(){ public void getIncidentLocationFromMapActivity(){
@@ -399,6 +440,7 @@ public abstract class BaseActivity extends AppCompatActivity {
intent = new Intent(getApplicationContext(), MapsActivity.class); intent = new Intent(getApplicationContext(), MapsActivity.class);
intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETINCLOC); intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETINCLOC);
startActivity(intent); startActivity(intent);
finish();
} }
public void getNotifyLocationFromMapActivity(String position){ public void getNotifyLocationFromMapActivity(String position){
@@ -407,6 +449,7 @@ public abstract class BaseActivity extends AppCompatActivity {
intent.putExtra(EXTRA_MESSAGE, position); intent.putExtra(EXTRA_MESSAGE, position);
intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETNOTIFY); intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETNOTIFY);
startActivity(intent); startActivity(intent);
finish();
} }
public void getIncidentLocationFromMapActivity(String position){ public void getIncidentLocationFromMapActivity(String position){
@@ -415,12 +458,14 @@ public abstract class BaseActivity extends AppCompatActivity {
intent.putExtra(EXTRA_MESSAGE, position); intent.putExtra(EXTRA_MESSAGE, position);
intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETINCLOC); intent.putExtra(AppConfig.EXTRA_MAP_TYPE, AppConfig.INTENT_MAP_GETINCLOC);
startActivity(intent); startActivity(intent);
finish();
} }
public void gotoProfileActivity(){ public void gotoProfileActivity(){
Intent intent; Intent intent;
intent = new Intent(getApplicationContext(), ProfileActivity.class); intent = new Intent(getApplicationContext(), ProfileActivity.class);
startActivity(intent); startActivity(intent);
finish();
} }
public void gotoProfileActivity(String uid){ public void gotoProfileActivity(String uid){
@@ -428,18 +473,21 @@ public abstract class BaseActivity extends AppCompatActivity {
intent = new Intent(getApplicationContext(), ProfileActivity.class); intent = new Intent(getApplicationContext(), ProfileActivity.class);
intent.putExtra(EXTRA_MESSAGE, uid); intent.putExtra(EXTRA_MESSAGE, uid);
startActivity(intent); startActivity(intent);
finish();
} }
public void gotoSettingsActivity(){ public void gotoSettingsActivity(){
Intent intent; Intent intent;
intent = new Intent(getApplicationContext(), SettingsActivity.class); intent = new Intent(getApplicationContext(), SettingsActivity.class);
startActivity(intent); startActivity(intent);
finish();
} }
public void gotoSubscriptionsActivity(){ public void gotoSubscriptionsActivity(){
Intent intent; Intent intent;
intent = new Intent(getApplicationContext(), SubscriptionsActivity.class); intent = new Intent(getApplicationContext(), SubscriptionsActivity.class);
startActivity(intent); startActivity(intent);
finish();
} }
public void gotoViewReportActivity(Integer uid){ public void gotoViewReportActivity(Integer uid){
@@ -447,6 +495,7 @@ public abstract class BaseActivity extends AppCompatActivity {
intent = new Intent(getApplicationContext(), ViewReportActivity.class); intent = new Intent(getApplicationContext(), ViewReportActivity.class);
intent.putExtra(EXTRA_MESSAGE, uid); intent.putExtra(EXTRA_MESSAGE, uid);
startActivity(intent); startActivity(intent);
finish();
} }
@Override @Override
@@ -459,8 +508,9 @@ public abstract class BaseActivity extends AppCompatActivity {
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent); startActivity(intent);
}else if((id == R.id.menu_action_about)){ }else if((id == R.id.menu_action_about)){
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.riskahead.net/about/")); showAboutInfoDialog();
startActivity(browserIntent); }else if((id == R.id.menu_action_language)){
showLanguageDialog();
}else if((id == R.id.menu_action_help)){ }else if((id == R.id.menu_action_help)){
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.riskahead.net/contact/")); Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.riskahead.net/contact/"));
startActivity(browserIntent); startActivity(browserIntent);
@@ -471,6 +521,68 @@ public abstract class BaseActivity extends AppCompatActivity {
return super.onOptionsItemSelected(item); 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() { private void showFeedbackDialog() {
AlertDialog.Builder alert=new AlertDialog.Builder(this); AlertDialog.Builder alert=new AlertDialog.Builder(this);
alert.setTitle(R.string.menu_action_feedback); alert.setTitle(R.string.menu_action_feedback);

View File

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

View File

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

View File

@@ -81,16 +81,7 @@
android:text="@string/btn_start_register" android:text="@string/btn_start_register"
android:textColor="@color/white" /> 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> </LinearLayout>

View File

@@ -82,6 +82,15 @@
android:clickable="true" android:clickable="true"
android:src="@android:drawable/ic_dialog_map" /> 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 <com.beardedhen.androidbootstrap.AwesomeTextView
android:id="@+id/atvStatus" android:id="@+id/atvStatus"
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@@ -6,7 +6,6 @@
android:background="@drawable/layout_bg_gradient" android:background="@drawable/layout_bg_gradient"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".SubscriptionsActivity"> tools:context=".SubscriptionsActivity">
<include <include
@@ -21,12 +20,11 @@
android:id="@+id/layoutMain" android:id="@+id/layoutMain"
android:layout_below="@+id/toolbar" android:layout_below="@+id/toolbar"
android:layout_margin="0dp" android:layout_margin="0dp"
android:padding="10dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:id="@+id/lbl_profile_numberposts" android:id="@+id/lbl_profile_numberposts"
android:text="@string/lbl_subs_maintaining" android:text="@string/lbl_subs_maintaining"
@@ -36,6 +34,13 @@
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_margin="5dp"/> 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 <TextView
android:id="@+id/lbl_profile_ranking" android:id="@+id/lbl_profile_ranking"
android:text="@string/lbl_subs_helpus" android:text="@string/lbl_subs_helpus"
@@ -45,6 +50,12 @@
android:layout_margin="5dp" android:layout_margin="5dp"
android:textColor="@color/text_light_grey"/> android:textColor="@color/text_light_grey"/>
<View
android:layout_width="fill_parent"
android:layout_height="1dip"
android:layout_marginBottom="10dp"
android:background="#464b4b4b" />
<TableLayout <TableLayout
android:id="@+id/tbl_billing" android:id="@+id/tbl_billing"
android:layout_width="match_parent" 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" /> android:orderInCategory="100" app:showAsAction="never" />
<item android:id="@+id/menu_action_feedback" android:title="@string/menu_action_feedback" <item android:id="@+id/menu_action_feedback" android:title="@string/menu_action_feedback"
android:orderInCategory="100" app:showAsAction="never" /> 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" <item android:id="@+id/menu_action_exit" android:title="@string/menu_action_exit"
android:orderInCategory="100" app:showAsAction="never" /> android:orderInCategory="100" app:showAsAction="never" />

View File

@@ -230,6 +230,17 @@
<string name="txt_notifystatus_deactivated">AUS</string> <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_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"> <string-array name="cat_situation_main">
<item>Allgemeiner Vorfall/Situation</item> <item>Allgemeiner Vorfall/Situation</item>
<item>Mündliche Gewalt</item> <item>Mündliche Gewalt</item>

View File

@@ -24,9 +24,9 @@
<color name="input_login">#222222</color> <color name="input_login">#222222</color>
<color name="input_login_hint">#999999</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_bg">#3b4148</color>
<color name="input_register_hint">#5e6266</color> <color name="input_register_hint">#8c9094</color>
<color name="btn_login_bg">#1175b7</color> <color name="btn_login_bg">#1175b7</color>
</resources> </resources>

View File

@@ -237,6 +237,17 @@
<string name="txt_notifystatus_deactivated">OFF</string> <string name="txt_notifystatus_deactivated">OFF</string>
<string name="txt_map_zoomoutpremium">Get Premiuim to view the Full Map!</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"> <string-array name="cat_situation_main">
<item> A Threatening Incident or Situation</item> <item> A Threatening Incident or Situation</item>
<item>Verbal Violence</item> <item>Verbal Violence</item>