diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0de13de..c3ea625 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,7 +1,8 @@
-
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/AboutActivity.java b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/AboutActivity.java
new file mode 100644
index 0000000..0804583
--- /dev/null
+++ b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/AboutActivity.java
@@ -0,0 +1,36 @@
+package orgprivacy_friendly_apps.secuso.privacyfriendlybreakreminder;
+
+import android.os.Bundle;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.view.MenuItem;
+
+public class AboutActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.about);
+ setupActionBar();
+ }
+
+ private void setupActionBar() {
+ ActionBar actionBar = getSupportActionBar();
+ actionBar.setTitle(R.string.about);
+ if (actionBar != null) {
+ // Show the Up button in the action bar.
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ }
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ // Respond to the action bar's Up/Home button
+ case android.R.id.home:
+ finish();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
diff --git a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakReminder.java b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakReminder.java
index 7905f6d..695b211 100644
--- a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakReminder.java
+++ b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakReminder.java
@@ -20,7 +20,6 @@ import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
-import android.view.Menu;
import android.view.MenuItem;
import android.view.WindowManager;
import android.widget.AdapterView;
@@ -38,6 +37,7 @@ public class BreakReminder extends AppCompatActivity
private TextView ct_text;
private CountDownTimer ct;
private String stopTime = "";
+ private int oldTime = 0;
private Spinner profileSpinner;
@@ -135,7 +135,6 @@ public class BreakReminder extends AppCompatActivity
String currentProfile = sharedPrefs.getString("name_text", "") + "," + sharedPrefs.getInt("work_value", -1) + "," + sharedPrefs.getInt("break_value", -1);
- System.out.println("Current PROFILE: " + currentProfile + " , PROFILE SELECTED: " + profileSelected);
if (allProfiles.contains(currentProfile) && profileSelected.equals(sharedPrefs.getString("name_text", ""))) {
System.out.println("Profile didn“t change");
} else {
@@ -230,28 +229,6 @@ public class BreakReminder extends AppCompatActivity
}
}
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.break_reminder, menu);
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // Handle action bar item clicks here. The action bar will
- // automatically handle clicks on the Home/Up button, so long
- // as you specify a parent activity in AndroidManifest.xml.
- int id = item.getItemId();
-
- //noinspection SimplifiableIfStatement
- if (id == R.id.action_settings) {
- return true;
- }
-
- return super.onOptionsItemSelected(item);
- }
-
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
@@ -263,11 +240,17 @@ public class BreakReminder extends AppCompatActivity
Intent intent = new Intent(this, SettingsActivity.class);
this.startActivity(intent);
} else if (id == R.id.nav_statistics) {
-
+ // Show statistics
+ Intent intent = new Intent(this, StatisticsActivity.class);
+ this.startActivity(intent);
} else if (id == R.id.nav_help) {
-
+ // Show help
+ Intent intent = new Intent(this, HelpActivity.class);
+ this.startActivity(intent);
} else if (id == R.id.nav_about) {
-
+ // Show about page
+ Intent intent = new Intent(this, AboutActivity.class);
+ this.startActivity(intent);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
@@ -281,8 +264,13 @@ public class BreakReminder extends AppCompatActivity
String bufferZeroMinute = "";
String bufferZeroSecond = "";
int time = mins * 60 * 1000;
- time = 5000;
- int oldTime = time;
+
+ //FIXME Hardcoded for testing
+ //time = 5000;
+
+
+ stopTime = (String) ct_text.getText();
+ oldTime = time;
if (stopTime == "" && !isRunning) {
if (time / 1000 / 60 < 10)
@@ -398,6 +386,7 @@ public class BreakReminder extends AppCompatActivity
case R.id.button_reset:
if (ct != null) {
//Reset clock
+ ct.cancel();
int interval = sharedPrefs.getInt("work_value", 1);
bufferZeroMinute = "";
@@ -406,8 +395,9 @@ public class BreakReminder extends AppCompatActivity
bufferZeroMinute = "0";
ct_text.setText(bufferZeroMinute + time / 1000 / 60 + ":00");
-
-
+ stopTime = (String) ct_text.getText();
+ isRunning = false;
+ break;
}
diff --git a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/HelpActivity.java b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/HelpActivity.java
new file mode 100644
index 0000000..dae246d
--- /dev/null
+++ b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/HelpActivity.java
@@ -0,0 +1,36 @@
+package orgprivacy_friendly_apps.secuso.privacyfriendlybreakreminder;
+
+import android.os.Bundle;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.view.MenuItem;
+
+public class HelpActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.help);
+ setupActionBar();
+ }
+
+ private void setupActionBar() {
+ ActionBar actionBar = getSupportActionBar();
+ actionBar.setTitle(R.string.help);
+ if (actionBar != null) {
+ // Show the Up button in the action bar.
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ }
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ // Respond to the action bar's Up/Home button
+ case android.R.id.home:
+ finish();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
diff --git a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/ProfileActivity.java b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/ProfileActivity.java
index 60bea63..473aad1 100644
--- a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/ProfileActivity.java
+++ b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/ProfileActivity.java
@@ -11,6 +11,7 @@ import android.widget.Button;
import android.widget.EditText;
import android.widget.SeekBar;
import android.widget.TextView;
+import android.widget.Toast;
public class ProfileActivity extends AppCompatActivity implements View.OnClickListener {
@@ -77,22 +78,30 @@ public class ProfileActivity extends AppCompatActivity implements View.OnClickLi
public void onClick(View v) {
switch (v.getId()) {
case R.id.button_profile_save:
- //Fixme Check names for doubles
System.out.println("Save new profile!");
-
- SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
- SharedPreferences.Editor editor = sharedPrefs.edit();
EditText profileName =
(EditText) findViewById(R.id.editProfileName);
String name = profileName.getText().toString();
- editor.putString("name_text", name);
- editor.putInt("work_value",interval_seekbar.getProgress());
- editor.putInt("break_value",break_seekbar.getProgress());
- editor.putString("profiles", sharedPrefs.getString("profiles", "") + name + "," + interval_seekbar.getProgress() + "," + break_seekbar.getProgress() + ";");
- editor.apply();
- finish();
- break;
+ if (name.equals("")) {
+ Toast.makeText(this, R.string.new_profile_emptyName, Toast.LENGTH_SHORT).show();
+ return;
+ } else if (prefContainsName(name)) {
+ Toast.makeText(this, R.string.new_profile_doubleName, Toast.LENGTH_SHORT).show();
+ return;
+ } else {
+
+ // Add to preferences
+ SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
+ SharedPreferences.Editor editor = sharedPrefs.edit();
+ editor.putString("name_text", name);
+ editor.putInt("work_value", interval_seekbar.getProgress());
+ editor.putInt("break_value", break_seekbar.getProgress());
+ editor.putString("profiles", sharedPrefs.getString("profiles", "") + name + "," + interval_seekbar.getProgress() + "," + break_seekbar.getProgress() + ";");
+ editor.apply();
+ finish();
+ break;
+ }
case R.id.button_profile_cancel:
System.out.println("New profile canceled!");
finish();
@@ -106,6 +115,19 @@ public class ProfileActivity extends AppCompatActivity implements View.OnClickLi
}
+ private boolean prefContainsName(String profileName) {
+ SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
+ String allProfiles = sharedPrefs.getString("profiles", "");
+ String[] profiles = allProfiles.split(";");
+ for (String profile : profiles) {
+ if (profile.split(",")[0].equalsIgnoreCase(profileName)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
private void createExerciseType() {
Intent intent = new Intent(this, ExerciseTypeActivity.class);
this.startActivity(intent);
diff --git a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/SettingsActivity.java b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/SettingsActivity.java
index 1997a49..0355e55 100644
--- a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/SettingsActivity.java
+++ b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/SettingsActivity.java
@@ -21,9 +21,8 @@ import android.preference.RingtonePreference;
import android.text.TextUtils;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;
-import android.widget.TextView;
+import android.widget.Toast;
-import orgprivacy_friendly_apps.secuso.privacyfriendlybreakreminder.SeekBarPreference;
import java.util.List;
@@ -254,31 +253,62 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
String newProfileName = PreferenceManager.getDefaultSharedPreferences(this.getActivity()).getString("name_text", "");
String allProfiles = PreferenceManager.getDefaultSharedPreferences(this.getActivity()).getString("profiles", "");
- if (allProfiles.contains(newProfileName + "," + work_radius + "," + break_radius)) {
+ System.out.println("SETTINGS ACTIVITY0: " + newProfileName + "," + work_radius + "," + break_radius);
+ if (allProfiles.contains(newProfileName + "," + work_radius + "," + break_radius) && newProfileName.equals(currentProfile)) {
//Nothing changes
System.out.println("No changes for a profile in general settings");
} else {
- //FIXME Check for doubles
SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this.getActivity()).edit();
- String[] profiles = allProfiles.split(";");
- for (int i = 0; i < profiles.length; i++) {
- if (profiles[i].split(",")[0].equals(currentProfile)) {
- profiles[i] = newProfileName + "," + work_radius + "," + break_radius;
- break;
+
+ System.out.println("SETTINGS ACTIVITY: " + newProfileName);
+ if (newProfileName.equals("")) {
+ // Profile name empty
+ System.out.println("EMPTY NAME IN SETTINGS ACTIVITY");
+ Toast.makeText(this.getActivity(), R.string.settings_emptyName, Toast.LENGTH_SHORT).show();
+ editor.putString("name_text", currentProfile);
+ editor.apply();
+
+ } else if (currentProfile != newProfileName && prefContainsName(newProfileName)) {
+ // Profile name exists already
+ Toast.makeText(this.getActivity(), R.string.settings_doubleName, Toast.LENGTH_SHORT).show();
+ editor.putString("name_text", currentProfile);
+ editor.apply();
+
+ } else {
+
+ String[] profiles = allProfiles.split(";");
+ for (int i = 0; i < profiles.length; i++) {
+ if (profiles[i].split(",")[0].equals(currentProfile)) {
+ profiles[i] = newProfileName + "," + work_radius + "," + break_radius;
+ break;
+ }
}
+ StringBuilder builder = new StringBuilder();
+ for (String s : profiles) {
+ builder.append(s + ";");
+ }
+ editor.putString("profiles", builder.toString());
+ editor.apply();
}
- StringBuilder builder = new StringBuilder();
- for (String s : profiles) {
- builder.append(s + ";");
- }
- editor.putString("profiles", builder.toString());
- editor.apply();
}
super.onPause();
}
+ private boolean prefContainsName(String profileName) {
+ SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this.getActivity());
+ String allProfiles = sharedPrefs.getString("profiles", "");
+ String[] profiles = allProfiles.split(";");
+ for (String profile : profiles) {
+ if (profile.split(",")[0].equalsIgnoreCase(profileName)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
@Override
public void onResume() {
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
diff --git a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/StatisticsActivity.java b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/StatisticsActivity.java
new file mode 100644
index 0000000..a2ceceb
--- /dev/null
+++ b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/StatisticsActivity.java
@@ -0,0 +1,37 @@
+package orgprivacy_friendly_apps.secuso.privacyfriendlybreakreminder;
+
+
+import android.os.Bundle;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.view.MenuItem;
+
+public class StatisticsActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.statistics);
+ setupActionBar();
+ }
+
+ private void setupActionBar() {
+ ActionBar actionBar = getSupportActionBar();
+ actionBar.setTitle(R.string.statistics);
+ if (actionBar != null) {
+ // Show the Up button in the action bar.
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ }
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ // Respond to the action bar's Up/Home button
+ case android.R.id.home:
+ finish();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
diff --git a/app/src/main/res/drawable/privacyfriendlyappslogo.png b/app/src/main/res/drawable/privacyfriendlyappslogo.png
new file mode 100644
index 0000000..14f2748
Binary files /dev/null and b/app/src/main/res/drawable/privacyfriendlyappslogo.png differ
diff --git a/app/src/main/res/drawable/secuso_logo_blau_blau.png b/app/src/main/res/drawable/secuso_logo_blau_blau.png
new file mode 100644
index 0000000..9c82d7c
Binary files /dev/null and b/app/src/main/res/drawable/secuso_logo_blau_blau.png differ
diff --git a/app/src/main/res/layout/about.xml b/app/src/main/res/layout/about.xml
new file mode 100644
index 0000000..17cd520
--- /dev/null
+++ b/app/src/main/res/layout/about.xml
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_break.xml b/app/src/main/res/layout/activity_break.xml
index cadc4a3..eca00b1 100644
--- a/app/src/main/res/layout/activity_break.xml
+++ b/app/src/main/res/layout/activity_break.xml
@@ -13,12 +13,12 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
- android:text="10:00"
+ android:text="@string/_10_00"
android:id="@+id/textViewBreak"
android:clickable="true"
android:enabled="true"
android:textStyle="bold"
- android:textSize="60dp"
+ android:textSize="60sp"
android:textIsSelectable="false"
android:layout_centerHorizontal="true" />
@@ -26,7 +26,7 @@
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="Play/Stop"
+ android:text="@string/break_play_stop"
android:id="@+id/button_playStopBreak"
android:layout_below="@+id/textViewBreak"
android:layout_centerHorizontal="true" />
@@ -35,7 +35,7 @@
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="Cancel"
+ android:text="@string/break_cancel"
android:id="@+id/button_cancel"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
@@ -61,7 +61,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="name of the Exercise"
+ android:text="@string/name_of_the_exercise"
android:id="@+id/textViewExercise"
android:layout_above="@+id/horizontalScrollView2"
android:layout_centerHorizontal="true" />
@@ -70,9 +70,10 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="You have to train hard, you little bitch"
+ android:text="@string/break_explanation"
android:id="@+id/textViewDescription"
android:layout_below="@+id/horizontalScrollView2"
- android:layout_centerHorizontal="true" />
+ android:layout_centerHorizontal="true"
+ android:gravity="center" />
diff --git a/app/src/main/res/layout/activity_break_decider.xml b/app/src/main/res/layout/activity_break_decider.xml
index 109f371..0aff464 100644
--- a/app/src/main/res/layout/activity_break_decider.xml
+++ b/app/src/main/res/layout/activity_break_decider.xml
@@ -13,7 +13,7 @@
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="Take the Break"
+ android:text="@string/take_the_break"
android:id="@+id/button_break"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
@@ -24,7 +24,7 @@
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="Skip the Break"
+ android:text="@string/skip_the_break"
android:id="@+id/button_skip"
android:layout_alignTop="@+id/button_break"
android:layout_alignParentRight="true"
@@ -34,9 +34,9 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
- android:text="Do you want to take the break?"
+ android:text="@string/do_you_want_to_take_the_break"
android:id="@+id/textView2"
- android:textSize="24dp"
+ android:textSize="24sp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="97dp" />
diff --git a/app/src/main/res/layout/content_break_reminder.xml b/app/src/main/res/layout/content_break_reminder.xml
index 2cd6bd2..d38e1c1 100644
--- a/app/src/main/res/layout/content_break_reminder.xml
+++ b/app/src/main/res/layout/content_break_reminder.xml
@@ -34,7 +34,7 @@
android:layout_alignTop="@+id/button_reset"
android:layout_toLeftOf="@+id/button_reset"
android:layout_toStartOf="@+id/button_reset"
- android:text="Play/Stop" />
+ android:text="@string/play_stop" />
+ android:text="@string/reset" />
diff --git a/app/src/main/res/layout/exercise_type.xml b/app/src/main/res/layout/exercise_type.xml
index 6d3a76b..dffc00d 100644
--- a/app/src/main/res/layout/exercise_type.xml
+++ b/app/src/main/res/layout/exercise_type.xml
@@ -14,7 +14,7 @@
android:layout_width="100dp"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="Exercise-name"
+ android:text="@string/exercise_name"
android:id="@+id/textView8"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
@@ -37,7 +37,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="Exercise time"
+ android:text="@string/exercise_time"
android:id="@+id/textView9"
android:layout_marginTop="42dp"
android:layout_below="@+id/textView8"
@@ -58,7 +58,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="Repetitions"
+ android:text="@string/repetitions"
android:id="@+id/textView10"
android:layout_below="@+id/seekBar3"
android:layout_alignLeft="@+id/textView9"
@@ -76,7 +76,7 @@
android:layout_width="100dp"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="Type"
+ android:text="@string/type"
android:id="@+id/textView11"
android:textSize="24sp"
android:layout_centerVertical="true"
@@ -87,7 +87,7 @@
android:layout_width="120dp"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="Sequential"
+ android:text="@string/sequential"
android:id="@+id/textView12"
android:textSize="24sp"
android:layout_below="@+id/textView11"
@@ -107,7 +107,7 @@