diff --git a/app/src/main/java/com/example/assignment1/CountSharedPreferenceHelper.java b/app/src/main/java/com/example/assignment1/CountSharedPreferenceHelper.java index 52f547b..1cf05f8 100644 --- a/app/src/main/java/com/example/assignment1/CountSharedPreferenceHelper.java +++ b/app/src/main/java/com/example/assignment1/CountSharedPreferenceHelper.java @@ -3,6 +3,8 @@ package com.example.assignment1; import android.content.Context; import android.content.SharedPreferences; +// To manage current count of events +// and maximum count of events public class CountSharedPreferenceHelper { private final SharedPreferences sharedPreferences; @@ -25,6 +27,8 @@ public class CountSharedPreferenceHelper { return sharedPreferences.getString("counterButtonEventsList", "").length(); } + // the events list is just one string with number 1, 2, 3 in it + // i.e "123112233331231231122332" public void setEventsList(String buttonEventsList) { SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("counterButtonEventsList", buttonEventsList); diff --git a/app/src/main/java/com/example/assignment1/CounterButton.java b/app/src/main/java/com/example/assignment1/CounterButtonNames.java similarity index 54% rename from app/src/main/java/com/example/assignment1/CounterButton.java rename to app/src/main/java/com/example/assignment1/CounterButtonNames.java index c0b54c2..ced7920 100644 --- a/app/src/main/java/com/example/assignment1/CounterButton.java +++ b/app/src/main/java/com/example/assignment1/CounterButtonNames.java @@ -1,17 +1,19 @@ package com.example.assignment1; -public enum CounterButton { +// There are only 3 buttons available to select +// so Enum seemed to be the suitable choice of data structure here +public enum CounterButtonNames { FIRST("counter_1_button_name"), SECOND("counter_2_button_name"), THIRD("counter_3_button_name"); private String counter_button_name; - CounterButton(String counterButtonName) { + CounterButtonNames(String counterButtonName) { this.counter_button_name = counterButtonName; } - public String getCounterButton() { + public String getCounterButtonName() { return counter_button_name; } } \ No newline at end of file diff --git a/app/src/main/java/com/example/assignment1/CounterButtonSharedPreferenceHelper.java b/app/src/main/java/com/example/assignment1/CounterButtonSharedPreferenceHelper.java index 0d127f5..2ed4b49 100644 --- a/app/src/main/java/com/example/assignment1/CounterButtonSharedPreferenceHelper.java +++ b/app/src/main/java/com/example/assignment1/CounterButtonSharedPreferenceHelper.java @@ -13,13 +13,13 @@ public class CounterButtonSharedPreferenceHelper { sharedPreferences = context.getSharedPreferences("counter_button", Context.MODE_PRIVATE); } - public void saveCounterButtonName(CounterButton counterButton, String eventButtonName) { + public void saveCounterButtonName(CounterButtonNames counterButtonNames, String eventButtonName) { SharedPreferences.Editor editor = sharedPreferences.edit(); - editor.putString(counterButton.getCounterButton(), eventButtonName); + editor.putString(counterButtonNames.getCounterButtonName(), eventButtonName); editor.apply(); } - public String getCounterButtonName(CounterButton counterButton) { - return sharedPreferences.getString(counterButton.getCounterButton(), ""); + public String getCounterButtonName(CounterButtonNames counterButtonNames) { + return sharedPreferences.getString(counterButtonNames.getCounterButtonName(), ""); } } \ No newline at end of file diff --git a/app/src/main/java/com/example/assignment1/MainActivity.java b/app/src/main/java/com/example/assignment1/MainActivity.java index 505cdb9..6805c61 100644 --- a/app/src/main/java/com/example/assignment1/MainActivity.java +++ b/app/src/main/java/com/example/assignment1/MainActivity.java @@ -2,7 +2,6 @@ package com.example.assignment1; import android.content.Intent; import android.os.Bundle; -import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; @@ -31,6 +30,7 @@ public class MainActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + // initialization settingsButton = findViewById(R.id.settings_button); showCountsButton = findViewById(R.id.show_counts_button); @@ -43,7 +43,6 @@ public class MainActivity extends AppCompatActivity { counterButtonSharedPrefHelper = new CounterButtonSharedPreferenceHelper(MainActivity.this); countSharedPreferenceHelper = new CountSharedPreferenceHelper(MainActivity.this); - settingsButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -55,7 +54,7 @@ public class MainActivity extends AppCompatActivity { showCountsButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - // Create an Intent to start the SettingsActivity + // Create an Intent to start the DataActivity goToDataActivity(); } }); @@ -86,16 +85,18 @@ public class MainActivity extends AppCompatActivity { protected void onStart() { super.onStart(); - if (counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.FIRST).trim().isEmpty() || - counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.SECOND).trim().isEmpty() || - counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.THIRD).trim().isEmpty()) { + // go to settings activity in edit mode + if (counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.FIRST).trim().isEmpty() || + counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.SECOND).trim().isEmpty() || + counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.THIRD).trim().isEmpty()) { Toast.makeText(getApplicationContext(), "Event Button(s) can not be empty", Toast.LENGTH_SHORT).show(); goToSettingsActivity(); + // everything field is good, no edit needed } else { - firstCounterButton.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.FIRST)); - secondCounterButton.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.SECOND)); - thirdCounterButton.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.THIRD)); + firstCounterButton.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.FIRST)); + secondCounterButton.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.SECOND)); + thirdCounterButton.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.THIRD)); counter.setText(String.format(Integer.toString(countSharedPreferenceHelper.getCurrentCount()))); } @@ -114,10 +115,12 @@ public class MainActivity extends AppCompatActivity { private void incrementCounter(String counterNumber) { try { if (Integer.parseInt(counter.getText().toString()) < countSharedPreferenceHelper.getMaxCount()) { + // add the event into the events list + // the events list is just one string with number 1, 2, 3 in it + // i.e "123112233331231231122332" countSharedPreferenceHelper.setEventsList(countSharedPreferenceHelper.getEventsList() + counterNumber); - Log.d("MainActivity", countSharedPreferenceHelper.getEventsList()); - + // update the counter String currentValue = counter.getText().toString(); int intValue = Integer.parseInt(currentValue); int newValue = intValue + 1; diff --git a/app/src/main/java/com/example/assignment1/SettingsActivity.java b/app/src/main/java/com/example/assignment1/SettingsActivity.java index 36c0878..66b1d33 100644 --- a/app/src/main/java/com/example/assignment1/SettingsActivity.java +++ b/app/src/main/java/com/example/assignment1/SettingsActivity.java @@ -34,6 +34,7 @@ public class SettingsActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); + // initializations myToolbar = (Toolbar) findViewById(R.id.settings_toolbar); saveButton = (Button) findViewById(R.id.saveButton); @@ -42,6 +43,7 @@ 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); + // set the max lengths for event buttons names 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)}); @@ -51,10 +53,10 @@ public class SettingsActivity extends AppCompatActivity { // enable toolbar/actionbar setSupportActionBar(myToolbar); - assert getSupportActionBar() != null; getSupportActionBar().setDisplayHomeAsUpEnabled(true); //show back button + // the display mode is showed by default goToSettingsActivityDisplayMode(); } @@ -62,15 +64,14 @@ public class SettingsActivity extends AppCompatActivity { protected void onStart() { super.onStart(); - if (counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.FIRST).equals("") || counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.SECOND).equals("") || counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.THIRD).equals("")) { - + // the event buttons names are not satisfactory, must be edited + if (counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.FIRST).equals("") || counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.SECOND).equals("") || counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.THIRD).equals("")) { goToSettingsActivityEditMode(); - } else { - counter_1_name_edit_text.setHint(counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.FIRST)); - counter_2_name_edit_text.setHint(counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.SECOND)); - counter_3_name_edit_text.setHint(counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.THIRD)); - maximum_counts_edit_text.setHint(String.format(Integer.toString(countSharedPrefHelper.getCurrentCount()))); + counter_1_name_edit_text.setHint(counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.FIRST)); + counter_2_name_edit_text.setHint(counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.SECOND)); + counter_3_name_edit_text.setHint(counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.THIRD)); + maximum_counts_edit_text.setHint(String.format(Integer.toString(countSharedPrefHelper.getMaxCount()))); } } @@ -115,15 +116,14 @@ public class SettingsActivity extends AppCompatActivity { counter_3_name_edit_text.setEnabled(true); maximum_counts_edit_text.setEnabled(true); - counter_1_name_edit_text.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.FIRST)); - counter_2_name_edit_text.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.SECOND)); - counter_3_name_edit_text.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.THIRD)); + counter_1_name_edit_text.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.FIRST)); + counter_2_name_edit_text.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.SECOND)); + counter_3_name_edit_text.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.THIRD)); maximum_counts_edit_text.setText(String.format(Integer.toString(countSharedPrefHelper.getMaxCount()))); String curr_text1 = counter_1_name_edit_text.getText().toString(); String curr_text2 = counter_2_name_edit_text.getText().toString(); String curr_text3 = counter_3_name_edit_text.getText().toString(); - int curr_maximum_count = Integer.parseInt(maximum_counts_edit_text.getText().toString()); saveButton.setOnClickListener(new View.OnClickListener() { @Override @@ -136,17 +136,16 @@ public class SettingsActivity extends AppCompatActivity { String text3 = counter_3_name_edit_text.getText().toString(); int maximum_count = Integer.parseInt(maximum_counts_edit_text.getText().toString()); - counterButtonSharedPrefHelper.saveCounterButtonName(CounterButton.FIRST, text1); - counterButtonSharedPrefHelper.saveCounterButtonName(CounterButton.SECOND, text2); - counterButtonSharedPrefHelper.saveCounterButtonName(CounterButton.THIRD, text3); + counterButtonSharedPrefHelper.saveCounterButtonName(CounterButtonNames.FIRST, text1); + counterButtonSharedPrefHelper.saveCounterButtonName(CounterButtonNames.SECOND, text2); + counterButtonSharedPrefHelper.saveCounterButtonName(CounterButtonNames.THIRD, text3); countSharedPrefHelper.saveMaxCount(maximum_count); // if the fields been changed, we reset the count and the events list if ( !(curr_text1.equals(text1)) || !(curr_text2.equals(text2)) || - !(curr_text3.equals(text3)) || - !(maximum_count == curr_maximum_count) + !(curr_text3.equals(text3)) ){ countSharedPrefHelper.setEventsList(""); } @@ -157,6 +156,7 @@ public class SettingsActivity extends AppCompatActivity { }); } + // check if the max count field is valid or not protected Boolean check_max_count_input() { try { int countInput = Integer.parseInt(maximum_counts_edit_text.getText().toString()); diff --git a/app/src/main/java/com/example/assignment1/dataActivity.java b/app/src/main/java/com/example/assignment1/dataActivity.java index 1a3452e..53827e3 100644 --- a/app/src/main/java/com/example/assignment1/dataActivity.java +++ b/app/src/main/java/com/example/assignment1/dataActivity.java @@ -39,6 +39,7 @@ public class dataActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_data); + // initializations myToolbar = (Toolbar) findViewById(R.id.data_toolbar); firstCounterButtonName = findViewById(R.id.counter_1_data_name); secondCounterButtonName = findViewById(R.id.counter_2_data_name); @@ -52,8 +53,8 @@ public class dataActivity extends AppCompatActivity { counterButtonSharedPrefHelper = new CounterButtonSharedPreferenceHelper(dataActivity.this); countSharedPrefHelper = new CountSharedPreferenceHelper(dataActivity.this); + // set up the actionbar setSupportActionBar(myToolbar); - assert getSupportActionBar() != null; getSupportActionBar().setDisplayHomeAsUpEnabled(true); //show back button } @@ -62,15 +63,16 @@ public class dataActivity extends AppCompatActivity { protected void onStart() { super.onStart(); - firstCounterButtonName.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.FIRST)); - secondCounterButtonName.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.SECOND)); - thirdCounterButtonName.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.THIRD)); + firstCounterButtonName.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.FIRST)); + secondCounterButtonName.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.SECOND)); + thirdCounterButtonName.setText(counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.THIRD)); currentCounter.setText(String.format(Integer.toString(countSharedPrefHelper.getCurrentCount()))); firstCounter.setText(countSharedPrefHelper.getNumberOfEventInEventsList('1')); secondCounter.setText(countSharedPrefHelper.getNumberOfEventInEventsList('2')); thirdCounter.setText(countSharedPrefHelper.getNumberOfEventInEventsList('3')); + // by default, show the events list with names ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, constructListViewWithNames()); ListView listView = findViewById(R.id.eventsListView); @@ -80,6 +82,7 @@ public class dataActivity extends AppCompatActivity { showingNames = false; } + // for the actionbar menu public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.data_activity_menu, menu); return true; @@ -109,6 +112,7 @@ public class dataActivity extends AppCompatActivity { listView.setAdapter(adapter); + // toggle the names showingNames = !showingNames; return true; @@ -118,12 +122,10 @@ public class dataActivity extends AppCompatActivity { } private String[] constructListViewWithNames() { - Map replacements = new HashMap<>(); - replacements.put("1", counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.FIRST)); - replacements.put("2", counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.SECOND)); - replacements.put("3", counterButtonSharedPrefHelper.getCounterButtonName(CounterButton.THIRD)); - + replacements.put("1", counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.FIRST)); + replacements.put("2", counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.SECOND)); + replacements.put("3", counterButtonSharedPrefHelper.getCounterButtonName(CounterButtonNames.THIRD)); return Arrays.stream(constructListViewWithoutNames()).map(value -> replacements.getOrDefault(value, value)).toArray(String[]::new); }