r41 - in trunk: res/layout src/fr/ifremer/wlo src/fr/ifremer/wlo/utils
Author: kmorin Date: 2014-01-30 11:34:36 +0100 (Thu, 30 Jan 2014) New Revision: 41 Url: http://forge.codelutin.com/projects/wlo/repository/revisions/41 Log: fixes #4183 Liste de favoris Modified: trunk/res/layout/autocomplete_text_view_with_favorites.xml trunk/res/layout/commercial_species_form.xml trunk/src/fr/ifremer/wlo/CommercialSpeciesFormActivity.java trunk/src/fr/ifremer/wlo/ScientificSpeciesFormActivity.java trunk/src/fr/ifremer/wlo/utils/WloAutoCompleteTextView.java trunk/src/fr/ifremer/wlo/utils/WloAutoCompleteTextViewWithFavorites.java Modified: trunk/res/layout/autocomplete_text_view_with_favorites.xml =================================================================== --- trunk/res/layout/autocomplete_text_view_with_favorites.xml 2014-01-29 18:51:33 UTC (rev 40) +++ trunk/res/layout/autocomplete_text_view_with_favorites.xml 2014-01-30 10:34:36 UTC (rev 41) @@ -14,8 +14,9 @@ android:hint="@string/undefined"/> <ToggleButton android:id="@+id/favorite_button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:layout_width="32dp" + android:layout_height="32dp" + android:paddingRight="2dp" android:background="@drawable/favorite_toggle" android:textOff="" android:textOn=""/> Modified: trunk/res/layout/commercial_species_form.xml =================================================================== --- trunk/res/layout/commercial_species_form.xml 2014-01-29 18:51:33 UTC (rev 40) +++ trunk/res/layout/commercial_species_form.xml 2014-01-30 10:34:36 UTC (rev 41) @@ -18,12 +18,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content"/> - <fr.ifremer.wlo.utils.WloAutoCompleteTextView + <fr.ifremer.wlo.utils.WloAutoCompleteTextViewWithFavorites android:id="@+id/commercial_species_form_fao_code" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:singleLine="true" - android:hint="@string/undefined"/> + android:layout_height="wrap_content"/> <TextView android:text="@string/commercial_species_form_measurement_method" android:layout_width="match_parent" Modified: trunk/src/fr/ifremer/wlo/CommercialSpeciesFormActivity.java =================================================================== --- trunk/src/fr/ifremer/wlo/CommercialSpeciesFormActivity.java 2014-01-29 18:51:33 UTC (rev 40) +++ trunk/src/fr/ifremer/wlo/CommercialSpeciesFormActivity.java 2014-01-30 10:34:36 UTC (rev 41) @@ -24,8 +24,10 @@ * #L% */ +import android.content.SharedPreferences; import android.database.Cursor; import android.os.Bundle; +import android.preference.PreferenceManager; import android.util.Log; import android.view.View; import android.widget.AdapterView; @@ -34,15 +36,21 @@ import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.Spinner; +import com.google.common.base.Predicate; +import com.google.common.collect.Collections2; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import fr.ifremer.wlo.models.CommercialSpeciesModel; import fr.ifremer.wlo.models.referentials.CommercialSpecies; import fr.ifremer.wlo.models.referentials.Mensuration; import fr.ifremer.wlo.models.referentials.Presentation; import fr.ifremer.wlo.models.referentials.State; +import fr.ifremer.wlo.preferences.MultiSelectItemPreference; import fr.ifremer.wlo.storage.DataCache; import fr.ifremer.wlo.storage.WloSqlOpenHelper; +import fr.ifremer.wlo.utils.WloAutoCompleteTextViewWithFavorites; +import java.util.Collection; import java.util.List; import java.util.Set; @@ -83,8 +91,20 @@ // init editors List<CommercialSpecies> commercialSpecies = Lists.newArrayList(DataCache.getAllCommercialSpecies(this)); - initAutoCompleteTextView(R.id.commercial_species_form_fao_code, CommercialSpeciesModel.COLUMN_FAO_CODE, commercialSpecies); + SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); + final Set<String> favoriteIds = sharedPref.getStringSet(MultiSelectItemPreference.COMMERCIAL_SPECIES_FAVORITES.getKey(), + Sets.<String>newHashSet()); + Collection<CommercialSpecies> favorites = Collections2.filter(commercialSpecies, new Predicate<CommercialSpecies>() { + @Override + public boolean apply(CommercialSpecies input) { + return favoriteIds.contains(input.getId()); + } + }); + WloAutoCompleteTextViewWithFavorites actvwf = (WloAutoCompleteTextViewWithFavorites) findViewById(R.id.commercial_species_form_fao_code); + initAutoCompleteTextView(actvwf.getAutoCompleteTextView(), CommercialSpeciesModel.COLUMN_FAO_CODE, commercialSpecies, favorites); + actvwf.useFavorites(!favorites.isEmpty()); + if (model.getMeasurementMethod() == null) { Mensuration defaultMensuration = DataCache.getDefaultMensuration(this); model.setMeasurementMethod(defaultMensuration); Modified: trunk/src/fr/ifremer/wlo/ScientificSpeciesFormActivity.java =================================================================== --- trunk/src/fr/ifremer/wlo/ScientificSpeciesFormActivity.java 2014-01-29 18:51:33 UTC (rev 40) +++ trunk/src/fr/ifremer/wlo/ScientificSpeciesFormActivity.java 2014-01-30 10:34:36 UTC (rev 41) @@ -98,6 +98,7 @@ WloAutoCompleteTextViewWithFavorites actvwf = (WloAutoCompleteTextViewWithFavorites) findViewById(R.id.scientific_species_form_name); initAutoCompleteTextView(actvwf.getAutoCompleteTextView(), ScientificSpeciesModel.COLUMN_NAME, scientificSpecies, favorites); + actvwf.useFavorites(!favorites.isEmpty()); CheckBox takingActivationEditor = (CheckBox) findViewById(R.id.scientific_species_form_takingActivation); takingActivationEditor.setChecked(model.isTakingActivation()); Modified: trunk/src/fr/ifremer/wlo/utils/WloAutoCompleteTextView.java =================================================================== --- trunk/src/fr/ifremer/wlo/utils/WloAutoCompleteTextView.java 2014-01-29 18:51:33 UTC (rev 40) +++ trunk/src/fr/ifremer/wlo/utils/WloAutoCompleteTextView.java 2014-01-30 10:34:36 UTC (rev 41) @@ -26,7 +26,9 @@ import android.content.Context; import android.util.AttributeSet; +import android.util.Log; import android.view.View; +import android.widget.AdapterView; import android.widget.AutoCompleteTextView; /** @@ -35,8 +37,12 @@ */ public class WloAutoCompleteTextView extends AutoCompleteTextView { - private int myThreshold; + private static final String TAG = "WloAutoCompleteTextView"; + protected int myThreshold; + + protected boolean popupShown; + public WloAutoCompleteTextView(Context context) { super(context); init(); @@ -53,27 +59,42 @@ } protected void init() { -// setOnFocusChangeListener(new OnFocusChangeListener() { -// @Override -// public void onFocusChange(View v, boolean hasFocus) { -// if (hasFocus) { -// showDropDown(); -// } else { -// dismissDropDown(); -// } -// } -// }); + setOnFocusChangeListener(new OnFocusChangeListener() { + @Override + public void onFocusChange(View v, boolean hasFocus) { + if (!hasFocus) { + popupShown = false; + } + } + }); setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - if (getAdapter() != null && !getAdapter().isEmpty()) { + Log.d(TAG, "onClick " + isPopupShowing()); + if (getAdapter() != null && !getAdapter().isEmpty() && !popupShown) { showDropDown(); + popupShown = true; + } else { + dismissDropDown(); + popupShown = false; } } }); } @Override + public void setOnItemClickListener(final AdapterView.OnItemClickListener l) { + AdapterView.OnItemClickListener listener = new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView<?> parent, View view, int position, long id) { + l.onItemClick(parent, view, position, id); + popupShown = false; + } + }; + super.setOnItemClickListener(listener); + } + + @Override public void setThreshold(int threshold) { if (threshold < 0) { threshold = 0; Modified: trunk/src/fr/ifremer/wlo/utils/WloAutoCompleteTextViewWithFavorites.java =================================================================== --- trunk/src/fr/ifremer/wlo/utils/WloAutoCompleteTextViewWithFavorites.java 2014-01-29 18:51:33 UTC (rev 40) +++ trunk/src/fr/ifremer/wlo/utils/WloAutoCompleteTextViewWithFavorites.java 2014-01-30 10:34:36 UTC (rev 41) @@ -50,11 +50,14 @@ @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Log.d(TAG, "onCheckedChanged " + isChecked); + String s = autoCompleteTextView.getText().toString(); + autoCompleteTextView.setText(null); Adapter adapter = autoCompleteTextView.getAdapter(); if (FavoriteAdapter.class.isAssignableFrom(adapter.getClass())) { FavoriteAdapter favoriteAdapter = (FavoriteAdapter) autoCompleteTextView.getAdapter(); favoriteAdapter.useFavorites(isChecked); } + autoCompleteTextView.setText(s); } }); } @@ -63,6 +66,10 @@ return autoCompleteTextView; } + public void useFavorites(boolean useFavorites) { + toggleButton.setChecked(useFavorites); + } + public static class FavoriteAdapter<M> extends ArrayAdapter<M> { protected Collection<M> allData; @@ -76,7 +83,7 @@ } } - public void useFavorites(boolean favorites) { + protected void useFavorites(boolean favorites) { if (CollectionUtils.isNotEmpty(favoriteData)) { Log.d(TAG, "useFavorites " + favorites); clear();
participants (1)
-
kmorin@users.forge.codelutin.com