Lightning browser with I2P configuration
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

70 lines
2.1 KiB

package org.purplei2p.lightning.search;
import android.support.annotation.NonNull;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import org.purplei2p.lightning.BrowserApp;
import org.purplei2p.lightning.preference.PreferenceManager;
import org.purplei2p.lightning.search.engine.BaseSearchEngine;
import org.purplei2p.lightning.search.engine.CustomSearch;
import org.purplei2p.lightning.search.engine.DuckLiteSearch;
import org.purplei2p.lightning.search.engine.DuckSearch;
import org.purplei2p.lightning.search.engine.LegworkSearch;
/**
* The model that provides the search engine based
* on the user's preference.
*/
public class SearchEngineProvider {
@Inject PreferenceManager mPreferenceManager;
@Inject
public SearchEngineProvider() {
BrowserApp.getAppComponent().inject(this);
}
@NonNull
public BaseSearchEngine getCurrentSearchEngine() {
switch (mPreferenceManager.getSearchChoice()) {
case 0:
return new CustomSearch(mPreferenceManager.getSearchUrl());
case 1:
default:
return new LegworkSearch();
case 2:
return new DuckSearch();
case 3:
return new DuckLiteSearch();
}
}
public int mapSearchEngineToPreferenceIndex(@NonNull BaseSearchEngine searchEngine) {
if (searchEngine instanceof CustomSearch) {
return 0;
} else if (searchEngine instanceof LegworkSearch) {
return 1;
} else if (searchEngine instanceof DuckSearch) {
return 2;
} else if (searchEngine instanceof DuckLiteSearch) {
return 3;
} else {
throw new UnsupportedOperationException("Unknown search engine provided: " + searchEngine.getClass());
}
}
@NonNull
public List<BaseSearchEngine> getAllSearchEngines() {
return new ArrayList<BaseSearchEngine>(4) {{
add(new CustomSearch(mPreferenceManager.getSearchUrl()));
add(new LegworkSearch());
add(new DuckSearch());
add(new DuckLiteSearch());
}};
}
}