From dbc12ec1e0e53fba4df2d1f98e13f454c66a69e5 Mon Sep 17 00:00:00 2001 From: srv-twry Date: Wed, 14 Feb 2018 07:47:24 +0530 Subject: [PATCH] refactor: Implement SearchActivity using MVP pattern --- app/src/main/AndroidManifest.xml | 2 +- .../kiwixmobile/KiwixMobileActivity.java | 2 +- .../di/components/ApplicationComponent.java | 3 ++ .../{ => search}/SearchActivity.java | 42 ++++++++++++------- .../kiwixmobile/search/SearchPresenter.java | 39 +++++++++++++++++ .../search/SearchViewCallback.java | 13 ++++++ 6 files changed, 84 insertions(+), 17 deletions(-) rename app/src/main/java/org/kiwix/kiwixmobile/{ => search}/SearchActivity.java (91%) create mode 100644 app/src/main/java/org/kiwix/kiwixmobile/search/SearchPresenter.java create mode 100644 app/src/main/java/org/kiwix/kiwixmobile/search/SearchViewCallback.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 406ced277..d8a848f16 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -152,7 +152,7 @@ - + mDefaultAdapter; - private RecentSearchDao recentSearchDao; private SearchView searchView; + @Inject + SearchPresenter searchPresenter; + + private void setupDagger() { + KiwixApplication.getInstance().getApplicationComponent().inject(this); + } + @Override protected void onCreate(Bundle savedInstanceState) { SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); if (sharedPreferences.getBoolean(PREF_NIGHTMODE, false)) { setTheme(R.style.AppTheme_Night); } + setupDagger(); super.onCreate(savedInstanceState); View contentView = LayoutInflater.from(this).inflate(R.layout.search, null); setContentView(contentView); @@ -61,14 +70,13 @@ public class SearchActivity extends AppCompatActivity setSupportActionBar(toolbar); getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back); getSupportActionBar().setHomeButtonEnabled(true); + searchPresenter.attachView(this); mListView = findViewById(R.id.search_list); - recentSearchDao = new RecentSearchDao(KiwixDatabase.getInstance(this)); - List recentSearches = recentSearchDao.getRecentSearches(); mDefaultAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1); + searchPresenter.getRecentSearches(this); mListView.setAdapter(mDefaultAdapter); - mDefaultAdapter.addAll(recentSearches); - mDefaultAdapter.notifyDataSetChanged(); + mAutoAdapter = new AutoCompleteAdapter(this); mListView.setOnItemClickListener(this); mListView.setOnItemLongClickListener(this); @@ -79,6 +87,12 @@ public class SearchActivity extends AppCompatActivity } } + @Override + public void addRecentSearches(List recentSearches) { + mDefaultAdapter.addAll(recentSearches); + mDefaultAdapter.notifyDataSetChanged(); + } + @Override public void finish() { Toolbar toolbar = findViewById(R.id.toolbar); @@ -146,7 +160,7 @@ public class SearchActivity extends AppCompatActivity @Override public void onItemClick(AdapterView parent, View view, int position, long id) { String title = ((TextView) view).getText().toString(); - recentSearchDao.saveSearch(title); + searchPresenter.saveSearch(title, this); sendMessage(title); } @@ -187,16 +201,14 @@ public class SearchActivity extends AppCompatActivity } private void deleteSpecificSearchItem(String search) { - recentSearchDao.deleteSearchString(search); + searchPresenter.deleteSearchString(search, this); resetAdapter(); } private void resetAdapter() { mDefaultAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1); mListView.setAdapter(mDefaultAdapter); - List recentSearches = recentSearchDao.getRecentSearches(); - mDefaultAdapter.addAll(recentSearches); - mDefaultAdapter.notifyDataSetChanged(); + searchPresenter.getRecentSearches(this); } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/search/SearchPresenter.java b/app/src/main/java/org/kiwix/kiwixmobile/search/SearchPresenter.java new file mode 100644 index 000000000..19ecbd236 --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/search/SearchPresenter.java @@ -0,0 +1,39 @@ +package org.kiwix.kiwixmobile.search; + +import android.content.Context; + +import org.kiwix.kiwixmobile.base.BasePresenter; +import org.kiwix.kiwixmobile.database.KiwixDatabase; +import org.kiwix.kiwixmobile.database.RecentSearchDao; + +import javax.inject.Inject; + +/** + * Created by srv_twry on 14/2/18. + */ + +public class SearchPresenter extends BasePresenter { + + @Inject + public SearchPresenter() {} + + @Override + public void attachView(SearchViewCallback searchViewCallback) { + super.attachView(searchViewCallback); + } + + void getRecentSearches(Context context) { + RecentSearchDao recentSearchDao = new RecentSearchDao(KiwixDatabase.getInstance(context)); + getMvpView().addRecentSearches(recentSearchDao.getRecentSearches()); + } + + void saveSearch(String title, Context context) { + RecentSearchDao recentSearchDao = new RecentSearchDao(KiwixDatabase.getInstance(context)); + recentSearchDao.saveSearch(title); + } + + void deleteSearchString(String search, Context context) { + RecentSearchDao recentSearchDao = new RecentSearchDao(KiwixDatabase.getInstance(context)); + recentSearchDao.deleteSearchString(search); + } +} diff --git a/app/src/main/java/org/kiwix/kiwixmobile/search/SearchViewCallback.java b/app/src/main/java/org/kiwix/kiwixmobile/search/SearchViewCallback.java new file mode 100644 index 000000000..8bf6a54b5 --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/search/SearchViewCallback.java @@ -0,0 +1,13 @@ +package org.kiwix.kiwixmobile.search; + +import org.kiwix.kiwixmobile.base.ViewCallback; + +import java.util.List; + +/** + * Created by srv_twry on 14/2/18. + */ + +public interface SearchViewCallback extends ViewCallback { + void addRecentSearches(List recentSearches); +}