diff --git a/app/src/main/java/com/akdev/nofbeventscraper/MainActivity.java b/app/src/main/java/com/akdev/nofbeventscraper/MainActivity.java index 7b6a896..2d144d0 100644 --- a/app/src/main/java/com/akdev/nofbeventscraper/MainActivity.java +++ b/app/src/main/java/com/akdev/nofbeventscraper/MainActivity.java @@ -12,6 +12,8 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.inputmethod.InputMethodManager; +import android.widget.ArrayAdapter; +import android.widget.AutoCompleteTextView; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.view.menu.MenuBuilder; @@ -23,13 +25,13 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.appbar.AppBarLayout; import com.google.android.material.appbar.CollapsingToolbarLayout; import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton; -import com.google.android.material.textfield.TextInputEditText; import com.google.android.material.textfield.TextInputLayout; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.lang.ref.WeakReference; import java.lang.reflect.Type; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -40,7 +42,7 @@ import static com.akdev.nofbeventscraper.FbEvent.createEventList; public class MainActivity extends AppCompatActivity { protected ExtendedFloatingActionButton paste_button; - protected TextInputEditText edit_text_uri_input; + protected AutoCompleteTextView edit_text_uri_input; protected TextInputLayout layout_uri_input; @@ -49,6 +51,28 @@ public class MainActivity extends AppCompatActivity { EventAdapter adapter; LinearLayoutManager linear_layout_manager; + List history; + ArrayAdapter history_adapter; + + + private List getHistory() { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + + Gson gson = new Gson(); + String json = prefs.getString("history", ""); + + Type history_type = new TypeToken>() { + }.getType(); + List list = gson.fromJson(json, history_type); + + if (list == null) { + list = new ArrayList<>(); + } + + return list; + } + + private List getSavedEvents() { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); @@ -81,6 +105,12 @@ public class MainActivity extends AppCompatActivity { adapter.notifyDataSetChanged(); } + if (getHistory().isEmpty()) { + history.clear(); + history_adapter.clear(); + adapter.notifyDataSetChanged(); + } + /* * Intent from IntentReceiver - read only once */ @@ -106,6 +136,9 @@ public class MainActivity extends AppCompatActivity { Gson gson = new Gson(); String json = gson.toJson(events); prefs_edit.putString("events", json); + + json = gson.toJson(history); + prefs_edit.putString("history", json); prefs_edit.apply(); } @@ -132,6 +165,10 @@ public class MainActivity extends AppCompatActivity { linear_layout_manager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false); recycler_view.setLayoutManager(linear_layout_manager); + // restore history + this.history = getHistory(); + history_adapter = new ArrayAdapter<>(this, android.R.layout.simple_expandable_list_item_1, history); + recycler_view.setItemAnimator(new FadeInAnimator()); @@ -197,6 +234,14 @@ public class MainActivity extends AppCompatActivity { }; layout_uri_input.setErrorIconOnClickListener(listener); layout_uri_input.setEndIconOnClickListener(listener); + edit_text_uri_input.setAdapter(history_adapter); + + layout_uri_input.setStartIconOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + edit_text_uri_input.showDropDown(); + } + }); /* @@ -235,6 +280,9 @@ public class MainActivity extends AppCompatActivity { scraper = new FbScraper(new WeakReference<>(this), url); scraper.run(); + + history_adapter.insert(url, 0); + history.add(0, url); } /** diff --git a/app/src/main/java/com/akdev/nofbeventscraper/SettingsActivity.java b/app/src/main/java/com/akdev/nofbeventscraper/SettingsActivity.java index 6d1ecc8..e032a8a 100644 --- a/app/src/main/java/com/akdev/nofbeventscraper/SettingsActivity.java +++ b/app/src/main/java/com/akdev/nofbeventscraper/SettingsActivity.java @@ -43,16 +43,20 @@ public class SettingsActivity extends AppCompatActivity { final SharedPreferences prefs = preference.getSharedPreferences(); - final String undo = prefs.getString("events", ""); + final String events = prefs.getString("events", ""); prefs.edit().remove("events").apply(); + final String history = prefs.getString("history", ""); + prefs.edit().remove("history").apply(); + Snackbar.make(getActivity().findViewById(android.R.id.content), getString(R.string.preferences_event_snackbar), Snackbar.LENGTH_SHORT) .setAction(R.string.undo, new View.OnClickListener() { @Override public void onClick(View v) { - prefs.edit().putString("events", undo).apply(); + prefs.edit().putString("events", events).apply(); + prefs.edit().putString("history", history).apply(); } }).show(); diff --git a/app/src/main/res/drawable/ic_history_black.xml b/app/src/main/res/drawable/ic_history_black.xml new file mode 100644 index 0000000..00bd44d --- /dev/null +++ b/app/src/main/res/drawable/ic_history_black.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index 8caeb81..633902d 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -17,7 +17,7 @@ + app:helperTextEnabled="true" + app:startIconDrawable="@drawable/ic_history_black"> -