package net.iubris.ulysses.ui.activity._base; import net.iubris.apollus2.ui.fragments._base.Updatable; import net.iubris.apollus2.ui.fragments.list._base.Markerable; import net.iubris.apollus2.ui.fragments.map._base.MarkerShowable; import net.iubris.apollus2.ui.fragments.tabspager.activity.ListMapTabsSearchTypableLocatableActivity; import net.iubris.diane.searcher.exceptions.SearchException; import net.iubris.ulysses.search.activity.intentable.SearchTypable; import net.iubris.ulysses.tasks.search.aware.SearchAwareTask; import net.iubris.ulysses.tasks.search.localized.SearchLocalizedTask; import net.iubris.ulysses.ui.tasks._base.SearchType; import roboguice.util.Ln; import android.app.SearchManager; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.widget.Toast; import com.google.android.gms.maps.SupportMapFragment; public abstract class UlyssesSearchActivity<ListFragmentMarkerable extends ListFragment & Markerable & Updatable, MarkerShowableMapFragment extends SupportMapFragment & MarkerShowable & Updatable //, SLT extends SearchLocalizedTask, SAT extends SearchAwareTask > extends ListMapTabsSearchTypableLocatableActivity<ListFragmentMarkerable, MarkerShowableMapFragment> implements /*Searchable,*/ SearchTypable { protected String query; protected SearchType searchType; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // handleIntent( getIntent() ); } @Override public void search(String locationStringAsQuery) { try { this.query = locationStringAsQuery; getSearchLocalizedTask().execute(locationStringAsQuery); setSearchType(SearchType.LOCALIZED); } catch (SearchException e) { Toast.makeText(this, "search error: "+e.getMessage(), Toast.LENGTH_SHORT).show(); } } // ?? why this do not compile ?! @SuppressWarnings("deprecation") @Override public void search() { getSearchAwareTask().execute(); setSearchType(SearchType.AWARE); } @Override protected void onNewIntent(Intent intent) { setIntent(intent); handleIntent(intent); } private void handleIntent(Intent intent) { // old // if (intent.getAction().equals(Intent.ACTION_SEARCH)) { // this.query = intent.getStringExtra(SearchManager.QUERY); // search(query); // } Ln.d("handling intent: "+intent); if (intent==null) { Ln.d("intent null"); return; } String action = intent.getAction(); if (action==null) { Ln.d("action null ?!"); return; } if ( action.equals(Intent.ACTION_SEARCH) ) { // if(savedSearch == false) { this.query = intent.getStringExtra(SearchManager.QUERY); // } else { // this.savedSearch = false; // } // Avvio l'operazione di ricerca in background search(this.query); } } @Override protected void onDestroy() { Ln.d("onDestroy"); super.onDestroy(); } protected abstract SearchLocalizedTask getSearchLocalizedTask(); protected abstract SearchAwareTask getSearchAwareTask(); @Override public void setSearchType(SearchType searchType) { this.searchType = searchType; } @Override public SearchType getSearchType() { return searchType; } @Override protected String getQuery() { return query; } }