Finished SettingsActivity

This commit is contained in:
minhtrannhat 2023-09-15 01:28:27 -04:00
parent 0a1f202032
commit d0f5daf83b
Signed by: minhtrannhat
GPG Key ID: E13CFA85C53F8062
4 changed files with 154 additions and 22 deletions

View File

@ -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() {

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -46,6 +46,7 @@
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "
android:hint="@string/counter_1_name"
android:inputType="text"
android:maxLines="1"
/>
<TextView
@ -71,6 +72,7 @@
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "
android:hint="@string/counter_2_name"
android:inputType="text"
android:maxLines="1"
/>
<TextView
@ -96,6 +98,7 @@
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "
android:hint="@string/counter_3_name"
android:inputType="text"
android:maxLines="1"
/>
<TextView
@ -121,6 +124,7 @@
android:digits="0123456789"
android:hint="@string/maximum_counts"
android:inputType="number"
android:maxLines="1"
/>
</LinearLayout>