Refactored, final version
This commit is contained in:
parent
bafdbbe5a7
commit
af3d8a8761
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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(), "");
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
@ -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());
|
||||
|
@ -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<String> 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<String, String> 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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user