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
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()); |
|
}}; |
|
} |
|
|
|
}
|
|
|