diff --git a/app/src/main/java/com/example/assignment1/MainActivity.java b/app/src/main/java/com/example/assignment1/MainActivity.java
index f034fc9..1ef0c3f 100644
--- a/app/src/main/java/com/example/assignment1/MainActivity.java
+++ b/app/src/main/java/com/example/assignment1/MainActivity.java
@@ -9,22 +9,29 @@ import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
- protected CounterButtonSharedPreferenceHelper firstEventButton;
- protected CounterButtonSharedPreferenceHelper secondEventButton;
- protected CounterButtonSharedPreferenceHelper thirdEventButton;
+ protected CounterButtonSharedPreferenceHelper firstCounterButtonSharedPrefHelper;
+ protected CounterButtonSharedPreferenceHelper secondCounterButtonSharedPrefHelper;
+ protected CounterButtonSharedPreferenceHelper thirdCounterButtonSharedPrefHelper;
protected Button settingsButton = null;
+ protected Button firstCounterButton;
+ protected Button secondCounterButton;
+ protected Button thirdCounterButton;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
settingsButton = findViewById(R.id.settings_button);
+ firstCounterButton = findViewById(R.id.FirstEventButton);
+ secondCounterButton = findViewById(R.id.SecondEventButton);
+ thirdCounterButton = findViewById(R.id.ThirdEventButton);
- firstEventButton = new CounterButtonSharedPreferenceHelper(MainActivity.this, CounterButton.FIRST);
- secondEventButton = new CounterButtonSharedPreferenceHelper(MainActivity.this, CounterButton.SECOND);
- thirdEventButton = new CounterButtonSharedPreferenceHelper(MainActivity.this, CounterButton.THIRD);
+ firstCounterButtonSharedPrefHelper = new CounterButtonSharedPreferenceHelper(MainActivity.this, CounterButton.FIRST);
+ secondCounterButtonSharedPrefHelper = new CounterButtonSharedPreferenceHelper(MainActivity.this, CounterButton.SECOND);
+ thirdCounterButtonSharedPrefHelper = new CounterButtonSharedPreferenceHelper(MainActivity.this, CounterButton.THIRD);
settingsButton.setOnClickListener(new View.OnClickListener() {
@Override
@@ -41,12 +48,18 @@ public class MainActivity extends AppCompatActivity {
super.onStart();
if(
- firstEventButton.getCounterButtonName(CounterButton.FIRST) == null ||
- secondEventButton.getCounterButtonName(CounterButton.SECOND) == null ||
- thirdEventButton.getCounterButtonName(CounterButton.THIRD) == null) {
+ firstCounterButtonSharedPrefHelper.getCounterButtonName(CounterButton.FIRST) == null ||
+ secondCounterButtonSharedPrefHelper.getCounterButtonName(CounterButton.SECOND) == null ||
+ thirdCounterButtonSharedPrefHelper.getCounterButtonName(CounterButton.THIRD) == null) {
goToSettingsActivity();
+
+ } else {
+ firstCounterButton.setText(firstCounterButtonSharedPrefHelper.getCounterButtonName(CounterButton.FIRST));
+ secondCounterButton.setText(secondCounterButtonSharedPrefHelper.getCounterButtonName(CounterButton.SECOND));
+ thirdCounterButton.setText(thirdCounterButtonSharedPrefHelper.getCounterButtonName(CounterButton.THIRD));
}
+
}
private void goToSettingsActivity() {
diff --git a/app/src/main/java/com/example/assignment1/MaxCountSharedPreferenceHelper.java b/app/src/main/java/com/example/assignment1/MaxCountSharedPreferenceHelper.java
new file mode 100644
index 0000000..8c3cc65
--- /dev/null
+++ b/app/src/main/java/com/example/assignment1/MaxCountSharedPreferenceHelper.java
@@ -0,0 +1,23 @@
+package com.example.assignment1;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+
+public class MaxCountSharedPreferenceHelper {
+
+ private SharedPreferences sharedPreferences;
+
+ public MaxCountSharedPreferenceHelper(Context context) {
+ sharedPreferences = context.getSharedPreferences("MaximumCount", Context.MODE_PRIVATE);
+ }
+
+ public void saveMaxCount(String max_count) {
+ SharedPreferences.Editor editor = sharedPreferences.edit();
+ editor.putString("MaximumCount", max_count);
+ editor.apply();
+ }
+
+ public String getMaxCount() {
+ return sharedPreferences.getString("MaximumCount", null);
+ }
+}
diff --git a/app/src/main/java/com/example/assignment1/SettingsActivity.java b/app/src/main/java/com/example/assignment1/SettingsActivity.java
index 237e3b0..2d7342d 100644
--- a/app/src/main/java/com/example/assignment1/SettingsActivity.java
+++ b/app/src/main/java/com/example/assignment1/SettingsActivity.java
@@ -1,10 +1,13 @@
package com.example.assignment1;
import android.os.Bundle;
+import android.text.InputFilter;
import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
+import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
@@ -14,9 +17,14 @@ public class SettingsActivity extends AppCompatActivity {
protected Button saveButton;
protected Toolbar myToolbar;
- protected CounterButtonSharedPreferenceHelper firstEventButton;
- protected CounterButtonSharedPreferenceHelper secondEventButton;
- protected CounterButtonSharedPreferenceHelper thirdEventButton;
+ protected int maxLength = 16;
+
+ protected CounterButtonSharedPreferenceHelper firstCounterButtonSharedPrefHelper;
+ protected CounterButtonSharedPreferenceHelper secondCounterButtonSharedPrefHelper;
+ protected CounterButtonSharedPreferenceHelper thirdCounterButtonSharedPrefHelper;
+
+ protected MaxCountSharedPreferenceHelper maxCountSharedPrefHelper;
+
protected EditText counter_1_name_edit_text;
protected EditText counter_2_name_edit_text;
protected EditText counter_3_name_edit_text;
@@ -36,9 +44,14 @@ public class SettingsActivity extends AppCompatActivity {
counter_3_name_edit_text = (EditText) findViewById(R.id.counter_3_edit_text);
maximum_counts_edit_text = (EditText) findViewById(R.id.maximum_counts_edit_text);
- firstEventButton = new CounterButtonSharedPreferenceHelper(SettingsActivity.this, CounterButton.FIRST);
- secondEventButton = new CounterButtonSharedPreferenceHelper(SettingsActivity.this, CounterButton.SECOND);
- thirdEventButton = new CounterButtonSharedPreferenceHelper(SettingsActivity.this, CounterButton.THIRD);
+ counter_1_name_edit_text.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxLength)});
+ counter_2_name_edit_text.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxLength)});
+ counter_3_name_edit_text.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxLength)});
+
+ firstCounterButtonSharedPrefHelper = new CounterButtonSharedPreferenceHelper(SettingsActivity.this, CounterButton.FIRST);
+ secondCounterButtonSharedPrefHelper = new CounterButtonSharedPreferenceHelper(SettingsActivity.this, CounterButton.SECOND);
+ thirdCounterButtonSharedPrefHelper = new CounterButtonSharedPreferenceHelper(SettingsActivity.this, CounterButton.THIRD);
+ maxCountSharedPrefHelper = new MaxCountSharedPreferenceHelper(SettingsActivity.this);
// enable toolbar/actionbar
setSupportActionBar(myToolbar);
@@ -46,6 +59,51 @@ public class SettingsActivity extends AppCompatActivity {
assert getSupportActionBar() != null;
getSupportActionBar().setDisplayHomeAsUpEnabled(true); //show back button
+ goToSettingsActivityDisplayMode();
+ }
+
+ @Override
+ protected void onStart()
+ {
+ super.onStart();
+
+ if(
+ firstCounterButtonSharedPrefHelper.getCounterButtonName(CounterButton.FIRST) == null ||
+ secondCounterButtonSharedPrefHelper.getCounterButtonName(CounterButton.SECOND) == null ||
+ thirdCounterButtonSharedPrefHelper.getCounterButtonName(CounterButton.THIRD) == null) {
+
+ goToSettingsActivityEditMode();
+
+ } else {
+ counter_1_name_edit_text.setHint(firstCounterButtonSharedPrefHelper.getCounterButtonName(CounterButton.FIRST));
+ counter_2_name_edit_text.setHint(secondCounterButtonSharedPrefHelper.getCounterButtonName(CounterButton.SECOND));
+ counter_3_name_edit_text.setHint(thirdCounterButtonSharedPrefHelper.getCounterButtonName(CounterButton.THIRD));
+ maximum_counts_edit_text.setHint(maxCountSharedPrefHelper.getMaxCount());
+ }
+
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ int id = item.getItemId();
+
+ if (id == R.id.edit_settings) {
+ // Handle the settings item click (e.g., open a settings activity).
+ goToSettingsActivityEditMode();
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.settings_activity_menu, menu);
+ return true;
+ }
+
+ protected void goToSettingsActivityDisplayMode(){
// no save button in Display Mode
saveButton.setVisibility(View.INVISIBLE);
@@ -56,15 +114,49 @@ public class SettingsActivity extends AppCompatActivity {
maximum_counts_edit_text.setEnabled(false);
}
- @Override
- protected void onStart()
- {
- super.onStart();
+ protected void goToSettingsActivityEditMode(){
+
+ counter_1_name_edit_text.setEnabled(true);
+ counter_2_name_edit_text.setEnabled(true);
+ counter_3_name_edit_text.setEnabled(true);
+ maximum_counts_edit_text.setEnabled(true);
+
+ saveButton.setVisibility(View.VISIBLE);
+
+ saveButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ // counter button strings are checked statically in the activity XML file
+ if (check_max_count_input()){
+ // Get the text from EditText fields
+ String text1 = counter_1_name_edit_text.getText().toString();
+ String text2 = counter_2_name_edit_text.getText().toString();
+ String text3 = counter_3_name_edit_text.getText().toString();
+ String maximum_count = maximum_counts_edit_text.getText().toString();
+
+ firstCounterButtonSharedPrefHelper.saveCounterButtonName(CounterButton.FIRST, text1);
+ secondCounterButtonSharedPrefHelper.saveCounterButtonName(CounterButton.SECOND, text2);
+ thirdCounterButtonSharedPrefHelper.saveCounterButtonName(CounterButton.THIRD, text3);
+ maxCountSharedPrefHelper.saveMaxCount(maximum_count);
+
+ goToSettingsActivityDisplayMode();
+ }
+ }
+ });
}
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.settings_activity_menu, menu);
+ protected Boolean check_max_count_input(){
+ try {
+ int countInput = Integer.parseInt(maximum_counts_edit_text.getText().toString());
+ if (countInput < 5 || countInput > 200){
+ Toast.makeText(getApplicationContext(), "Number must be between 5 and 200 inclusive", Toast.LENGTH_SHORT).show();
+ return false;
+ }
+ } catch (NumberFormatException e){
+ Toast.makeText(getApplicationContext(), "Number must be between 5 and 200 inclusive", Toast.LENGTH_SHORT).show();
+ return false;
+ }
+
return true;
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index 5fff949..2594b36 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -46,6 +46,7 @@
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "
android:hint="@string/counter_1_name"
android:inputType="text"
+ android:maxLines="1"
/>