mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-09 15:27:55 -04:00
refactor: Implement SearchActivity using MVP pattern
This commit is contained in:
parent
c359881df8
commit
dbc12ec1e0
@ -152,7 +152,7 @@
|
|||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity android:name=".settings.KiwixSettingsActivity" />
|
<activity android:name=".settings.KiwixSettingsActivity" />
|
||||||
<activity android:name=".SearchActivity" />
|
<activity android:name=".search.SearchActivity" />
|
||||||
<activity android:name=".bookmarks_view.BookmarksActivity" />
|
<activity android:name=".bookmarks_view.BookmarksActivity" />
|
||||||
|
|
||||||
<provider
|
<provider
|
||||||
|
@ -25,7 +25,6 @@ import android.appwidget.AppWidgetManager;
|
|||||||
import android.content.ActivityNotFoundException;
|
import android.content.ActivityNotFoundException;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.pm.PackageManager;
|
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.BookmarksDao;
|
||||||
import org.kiwix.kiwixmobile.database.KiwixDatabase;
|
import org.kiwix.kiwixmobile.database.KiwixDatabase;
|
||||||
import org.kiwix.kiwixmobile.di.components.ApplicationComponent;
|
import org.kiwix.kiwixmobile.di.components.ApplicationComponent;
|
||||||
|
import org.kiwix.kiwixmobile.search.SearchActivity;
|
||||||
import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity;
|
import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity;
|
||||||
import org.kiwix.kiwixmobile.utils.DimenUtils;
|
import org.kiwix.kiwixmobile.utils.DimenUtils;
|
||||||
import org.kiwix.kiwixmobile.utils.DocumentParser;
|
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.di.modules.NetworkModule;
|
||||||
import org.kiwix.kiwixmobile.downloader.DownloadService;
|
import org.kiwix.kiwixmobile.downloader.DownloadService;
|
||||||
import org.kiwix.kiwixmobile.library.LibraryAdapter;
|
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.fileselect_view.ZimFileSelectFragment;
|
||||||
import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment;
|
import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment;
|
||||||
|
|
||||||
@ -35,4 +36,6 @@ public interface ApplicationComponent {
|
|||||||
void inject(ZimContentProvider zimContentProvider);
|
void inject(ZimContentProvider zimContentProvider);
|
||||||
|
|
||||||
void inject(LibraryAdapter libraryAdapter);
|
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.ActivityNotFoundException;
|
||||||
import android.content.DialogInterface;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@ -23,14 +22,17 @@ import android.widget.ListView;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.kiwix.kiwixmobile.database.KiwixDatabase;
|
import org.kiwix.kiwixmobile.KiwixApplication;
|
||||||
import org.kiwix.kiwixmobile.database.RecentSearchDao;
|
import org.kiwix.kiwixmobile.KiwixMobileActivity;
|
||||||
|
import org.kiwix.kiwixmobile.R;
|
||||||
import org.kiwix.kiwixmobile.views.AutoCompleteAdapter;
|
import org.kiwix.kiwixmobile.views.AutoCompleteAdapter;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
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_IS_WIDGET_VOICE;
|
||||||
import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_SEARCH;
|
import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_SEARCH;
|
||||||
import static org.kiwix.kiwixmobile.utils.Constants.PREF_NIGHTMODE;
|
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;
|
import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle;
|
||||||
|
|
||||||
public class SearchActivity extends AppCompatActivity
|
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 final int REQ_CODE_SPEECH_INPUT = 100;
|
||||||
private ListView mListView;
|
private ListView mListView;
|
||||||
private AutoCompleteAdapter mAutoAdapter;
|
private AutoCompleteAdapter mAutoAdapter;
|
||||||
private ArrayAdapter<String> mDefaultAdapter;
|
private ArrayAdapter<String> mDefaultAdapter;
|
||||||
private RecentSearchDao recentSearchDao;
|
|
||||||
private SearchView searchView;
|
private SearchView searchView;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
SearchPresenter searchPresenter;
|
||||||
|
|
||||||
|
private void setupDagger() {
|
||||||
|
KiwixApplication.getInstance().getApplicationComponent().inject(this);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
|
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||||
if (sharedPreferences.getBoolean(PREF_NIGHTMODE, false)) {
|
if (sharedPreferences.getBoolean(PREF_NIGHTMODE, false)) {
|
||||||
setTheme(R.style.AppTheme_Night);
|
setTheme(R.style.AppTheme_Night);
|
||||||
}
|
}
|
||||||
|
setupDagger();
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
View contentView = LayoutInflater.from(this).inflate(R.layout.search, null);
|
View contentView = LayoutInflater.from(this).inflate(R.layout.search, null);
|
||||||
setContentView(contentView);
|
setContentView(contentView);
|
||||||
@ -61,14 +70,13 @@ public class SearchActivity extends AppCompatActivity
|
|||||||
setSupportActionBar(toolbar);
|
setSupportActionBar(toolbar);
|
||||||
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
|
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
|
||||||
getSupportActionBar().setHomeButtonEnabled(true);
|
getSupportActionBar().setHomeButtonEnabled(true);
|
||||||
|
searchPresenter.attachView(this);
|
||||||
|
|
||||||
mListView = findViewById(R.id.search_list);
|
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);
|
mDefaultAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);
|
||||||
|
searchPresenter.getRecentSearches(this);
|
||||||
mListView.setAdapter(mDefaultAdapter);
|
mListView.setAdapter(mDefaultAdapter);
|
||||||
mDefaultAdapter.addAll(recentSearches);
|
|
||||||
mDefaultAdapter.notifyDataSetChanged();
|
|
||||||
mAutoAdapter = new AutoCompleteAdapter(this);
|
mAutoAdapter = new AutoCompleteAdapter(this);
|
||||||
mListView.setOnItemClickListener(this);
|
mListView.setOnItemClickListener(this);
|
||||||
mListView.setOnItemLongClickListener(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
|
@Override
|
||||||
public void finish() {
|
public void finish() {
|
||||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||||
@ -146,7 +160,7 @@ public class SearchActivity extends AppCompatActivity
|
|||||||
@Override
|
@Override
|
||||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||||
String title = ((TextView) view).getText().toString();
|
String title = ((TextView) view).getText().toString();
|
||||||
recentSearchDao.saveSearch(title);
|
searchPresenter.saveSearch(title, this);
|
||||||
sendMessage(title);
|
sendMessage(title);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,16 +201,14 @@ public class SearchActivity extends AppCompatActivity
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void deleteSpecificSearchItem(String search) {
|
private void deleteSpecificSearchItem(String search) {
|
||||||
recentSearchDao.deleteSearchString(search);
|
searchPresenter.deleteSearchString(search, this);
|
||||||
resetAdapter();
|
resetAdapter();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetAdapter() {
|
private void resetAdapter() {
|
||||||
mDefaultAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);
|
mDefaultAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);
|
||||||
mListView.setAdapter(mDefaultAdapter);
|
mListView.setAdapter(mDefaultAdapter);
|
||||||
List<String> recentSearches = recentSearchDao.getRecentSearches();
|
searchPresenter.getRecentSearches(this);
|
||||||
mDefaultAdapter.addAll(recentSearches);
|
|
||||||
mDefaultAdapter.notifyDataSetChanged();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -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