mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-08 06:42:21 -04:00
refactor: Implement SearchActivity using MVP pattern
This commit is contained in:
parent
c359881df8
commit
dbc12ec1e0
@ -152,7 +152,7 @@
|
||||
</activity>
|
||||
|
||||
<activity android:name=".settings.KiwixSettingsActivity" />
|
||||
<activity android:name=".SearchActivity" />
|
||||
<activity android:name=".search.SearchActivity" />
|
||||
<activity android:name=".bookmarks_view.BookmarksActivity" />
|
||||
|
||||
<provider
|
||||
|
@ -25,7 +25,6 @@ import android.appwidget.AppWidgetManager;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
@ -83,6 +82,7 @@ import org.kiwix.kiwixmobile.bookmarks_view.BookmarksActivity;
|
||||
import org.kiwix.kiwixmobile.database.BookmarksDao;
|
||||
import org.kiwix.kiwixmobile.database.KiwixDatabase;
|
||||
import org.kiwix.kiwixmobile.di.components.ApplicationComponent;
|
||||
import org.kiwix.kiwixmobile.search.SearchActivity;
|
||||
import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity;
|
||||
import org.kiwix.kiwixmobile.utils.DimenUtils;
|
||||
import org.kiwix.kiwixmobile.utils.DocumentParser;
|
||||
|
@ -8,6 +8,7 @@ import org.kiwix.kiwixmobile.di.modules.JNIModule;
|
||||
import org.kiwix.kiwixmobile.di.modules.NetworkModule;
|
||||
import org.kiwix.kiwixmobile.downloader.DownloadService;
|
||||
import org.kiwix.kiwixmobile.library.LibraryAdapter;
|
||||
import org.kiwix.kiwixmobile.search.SearchActivity;
|
||||
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.ZimFileSelectFragment;
|
||||
import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment;
|
||||
|
||||
@ -35,4 +36,6 @@ public interface ApplicationComponent {
|
||||
void inject(ZimContentProvider zimContentProvider);
|
||||
|
||||
void inject(LibraryAdapter libraryAdapter);
|
||||
|
||||
void inject(SearchActivity searchActivity);
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
package org.kiwix.kiwixmobile;
|
||||
package org.kiwix.kiwixmobile.search;
|
||||
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
@ -23,14 +22,17 @@ import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.kiwix.kiwixmobile.database.KiwixDatabase;
|
||||
import org.kiwix.kiwixmobile.database.RecentSearchDao;
|
||||
import org.kiwix.kiwixmobile.KiwixApplication;
|
||||
import org.kiwix.kiwixmobile.KiwixMobileActivity;
|
||||
import org.kiwix.kiwixmobile.R;
|
||||
import org.kiwix.kiwixmobile.views.AutoCompleteAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_IS_WIDGET_VOICE;
|
||||
import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_SEARCH;
|
||||
import static org.kiwix.kiwixmobile.utils.Constants.PREF_NIGHTMODE;
|
||||
@ -38,21 +40,28 @@ import static org.kiwix.kiwixmobile.utils.Constants.TAG_FILE_SEARCHED;
|
||||
import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle;
|
||||
|
||||
public class SearchActivity extends AppCompatActivity
|
||||
implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener {
|
||||
implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener, SearchViewCallback {
|
||||
|
||||
private final int REQ_CODE_SPEECH_INPUT = 100;
|
||||
private ListView mListView;
|
||||
private AutoCompleteAdapter mAutoAdapter;
|
||||
private ArrayAdapter<String> 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<String> 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<String> 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<String> recentSearches = recentSearchDao.getRecentSearches();
|
||||
mDefaultAdapter.addAll(recentSearches);
|
||||
mDefaultAdapter.notifyDataSetChanged();
|
||||
searchPresenter.getRecentSearches(this);
|
||||
}
|
||||
|
||||
|
@ -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<SearchViewCallback> {
|
||||
|
||||
@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);
|
||||
}
|
||||
}
|
@ -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<String> recentSearches);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user