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" />