Android Open Source - PhoneProfiles_Eclipse Applications Preference






From Project

Back to project page PhoneProfiles_Eclipse.

License

The source code is released under:

Apache License

If you think the Android project PhoneProfiles_Eclipse listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package sk.henrichg.phoneprofiles;
//from ww  w .jav a 2 s  .c  o  m
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.os.Parcel;
import android.os.Parcelable;
import android.preference.Preference;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;

public class ApplicationsPreference extends Preference {
  
  private String packageName;

  private ImageView packageIcon;

  private Context prefContext;
  
  CharSequence preferenceTitle;
  
  public ApplicationsPreference(Context context, AttributeSet attrs)
  {
    super(context, attrs);
    
    /*
    TypedArray typedArray = context.obtainStyledAttributes(attrs,
        R.styleable.ApplicationsPreference);

    // resource, resource_file, file
    imageSource = typedArray.getString(
      R.styleable.ImageViewPreference_imageSource);
    */
    

    packageName = "-";
    
    prefContext = context;
    
    preferenceTitle = getTitle();
    
    //Log.d("ApplicationsPreference", "title="+preferenceTitle);
    //Log.d("ApplicationsPreference", "imageSource="+imageSource);
    
    setWidgetLayoutResource(R.layout.applications_preference); // resource na layout custom preference - TextView-ImageView
    
    //pedArray.recycle();
    
  }
  
  //@Override
  protected void onBindView(View view)
  {
    super.onBindView(view);

    //Log.d("ApplicationsPreference.onBindView", "packageName="+packageName);
    
    //preferenceTitleView = (TextView)view.findViewById(R.id.applications_pref_label);  // resource na title
    //preferenceTitleView.setText(preferenceTitle);
    
    packageIcon = (ImageView)view.findViewById(R.id.applications_pref_icon); // resource na ImageView v custom preference layoute

      if (packageIcon != null)
      {
      PackageManager packageManager = prefContext.getPackageManager();
      ApplicationInfo app;
      try {
        app = packageManager.getApplicationInfo(packageName, 0);
        if (app != null)
        {
          setSummary(packageManager.getApplicationLabel(app));
          Drawable icon = packageManager.getApplicationIcon(app);
          //CharSequence name = packageManager.getApplicationLabel(app);
          packageIcon.setImageDrawable(icon);
        }
        else
        {
          setSummary("");
          packageIcon.setImageDrawable(null);
        }
      } catch (NameNotFoundException e) {
        //e.printStackTrace();
        setSummary("");
        packageIcon.setImageDrawable(null);
      }
      }
  }
  
  @Override
  protected void onClick()
  {
    // klik na preference

    //Log.d("ApplicationsPreference.onClick", "packageName="+packageName);

    final ApplicationsPreferenceDialog dialog = new ApplicationsPreferenceDialog(prefContext, this, packageName);
    dialog.setTitle(R.string.title_activity_applications_preference_dialog);
    dialog.show();
  }
  
  @Override
  protected Object onGetDefaultValue(TypedArray a, int index)
  {
    super.onGetDefaultValue(a, index);
    
    return a.getString(index);  // packageName vratene ako retazec
  }
  
  @Override
  protected void onSetInitialValue(boolean restoreValue, Object defaultValue)
  {
    if (restoreValue) {
      // restore state
      String value = getPersistedString(packageName);
      packageName = value;
    }
    else {
      // set state
      String value = (String) defaultValue;
      packageName = value;
      persistString(value);
    }
  }
  
  @Override
  protected Parcelable onSaveInstanceState()
  {
    // ulozime instance state - napriklad kvoli zmene orientacie
    
    final Parcelable superState = super.onSaveInstanceState();
    if (isPersistent()) {
      // netreba ukladat, je ulozene persistentne
      return superState;
    }
    
    // ulozenie istance state
    final SavedState myState = new SavedState(superState);
    myState.packageName = packageName;
    return myState;
    
  }
  
  @Override
  protected void onRestoreInstanceState(Parcelable state)
  {
    if (!state.getClass().equals(SavedState.class)) {
      // Didn't save state for us in onSaveInstanceState
      super.onRestoreInstanceState(state);
      return;
    }
    
    // restore instance state
    SavedState myState = (SavedState)state;
    super.onRestoreInstanceState(myState.getSuperState());
    String value = (String) myState.packageName;
    packageName = value;
    notifyChanged();
  }
  
  public String getPackageName()
  {
    return packageName;
  }
  
  public void setPackageName(String newPackageName)
  {
    String newValue = newPackageName;

    if (!callChangeListener(newValue)) {
      // nema sa nova hodnota zapisat
      return;
    }

    packageName = newValue;

    // set summary
    PackageManager packageManager = prefContext.getPackageManager();
    ApplicationInfo app;
    try {
      app = packageManager.getApplicationInfo(packageName, 0);
      if (app != null)
        setSummary(packageManager.getApplicationLabel(app));
      else
        setSummary("");
    } catch (NameNotFoundException e) {
      //e.printStackTrace();
      setSummary("");
    }
    
    // zapis do preferences
    persistString(newValue);
    
    // Data sa zmenili,notifikujeme
    notifyChanged();
    
  }
  
  // SavedState class
  private static class SavedState extends BaseSavedState
  {
    String packageName;
    
    public SavedState(Parcel source)
    {
      super(source);
      
      // restore packageName
      packageName = source.readString();
    }
    
    @Override
    public void writeToParcel(Parcel dest, int flags)
    {
      super.writeToParcel(dest, flags);
      
      // save packageName
      dest.writeString(packageName);
    }
    
    public SavedState(Parcelable superState)
    {
      super(superState);
    }
    
    @SuppressWarnings("unused")
    public static final Parcelable.Creator<SavedState> CREATOR =
        new Parcelable.Creator<SavedState>() {
      public SavedState createFromParcel(Parcel in) 
      {
        return new SavedState(in);
      }
      public SavedState[] newArray(int size)
      {
        return new SavedState[size];
      }
        
    };
  
  }
}




Java Source Code List

sk.henrichg.phoneprofiles.ActivateProfileActivity.java
sk.henrichg.phoneprofiles.ActivateProfileHelper.java
sk.henrichg.phoneprofiles.ActivateProfileListAdapter.java
sk.henrichg.phoneprofiles.ActivateProfileListFragment.java
sk.henrichg.phoneprofiles.ApplicationsCache.java
sk.henrichg.phoneprofiles.ApplicationsPreferenceAdapter.java
sk.henrichg.phoneprofiles.ApplicationsPreferenceDialog.java
sk.henrichg.phoneprofiles.ApplicationsPreference.java
sk.henrichg.phoneprofiles.BackgroundActivateProfileActivity.java
sk.henrichg.phoneprofiles.BitmapManipulator.java
sk.henrichg.phoneprofiles.BootUpReceiver.java
sk.henrichg.phoneprofiles.BrightnessDialogPreference.java
sk.henrichg.phoneprofiles.BrightnessView.java
sk.henrichg.phoneprofiles.DashClockBroadcastReceiver.java
sk.henrichg.phoneprofiles.DataWrapper.java
sk.henrichg.phoneprofiles.DatabaseHandler.java
sk.henrichg.phoneprofiles.EditorProfileListAdapter.java
sk.henrichg.phoneprofiles.EditorProfileListFragment.java
sk.henrichg.phoneprofiles.EditorProfilesActivity.java
sk.henrichg.phoneprofiles.ExecuteRadioProfilePrefsService.java
sk.henrichg.phoneprofiles.ExecuteVolumeProfilePrefsService.java
sk.henrichg.phoneprofiles.FirstStartService.java
sk.henrichg.phoneprofiles.GUIData.java
sk.henrichg.phoneprofiles.GlobalData.java
sk.henrichg.phoneprofiles.IconWidgetProvider.java
sk.henrichg.phoneprofiles.ImageViewPreferenceAdapter.java
sk.henrichg.phoneprofiles.ImageViewPreferenceDialog.java
sk.henrichg.phoneprofiles.ImageViewPreference.java
sk.henrichg.phoneprofiles.KeyguardService.java
sk.henrichg.phoneprofiles.Keyguard.java
sk.henrichg.phoneprofiles.LocaleChangedReceiver.java
sk.henrichg.phoneprofiles.NumberPickerPreference.java
sk.henrichg.phoneprofiles.OneRowWidgetProvider.java
sk.henrichg.phoneprofiles.PackageReplacedReceiver.java
sk.henrichg.phoneprofiles.PhoneCallBroadcastReceiver.java
sk.henrichg.phoneprofiles.PhoneCallReceiver.java
sk.henrichg.phoneprofiles.PhoneProfilesDashClockExtension.java
sk.henrichg.phoneprofiles.PhoneProfilesHelper.java
sk.henrichg.phoneprofiles.PhoneProfilesPreferencesActivity.java
sk.henrichg.phoneprofiles.PhoneProfilesPreferencesFragment.java
sk.henrichg.phoneprofiles.ProfileDurationAlarmBroadcastReceiver.java
sk.henrichg.phoneprofiles.ProfileListWidgetFactory.java
sk.henrichg.phoneprofiles.ProfileListWidgetProvider.java
sk.henrichg.phoneprofiles.ProfileListWidgetService.java
sk.henrichg.phoneprofiles.ProfilePreferenceAdapter.java
sk.henrichg.phoneprofiles.ProfilePreferenceDialog.java
sk.henrichg.phoneprofiles.ProfilePreference.java
sk.henrichg.phoneprofiles.ProfilePreferencesFragmentActivity.java
sk.henrichg.phoneprofiles.ProfilePreferencesFragment.java
sk.henrichg.phoneprofiles.ProfilePreferencesIndicator.java
sk.henrichg.phoneprofiles.Profile.java
sk.henrichg.phoneprofiles.ReceiversService.java
sk.henrichg.phoneprofiles.RefreshGUIBroadcastReceiver.java
sk.henrichg.phoneprofiles.RemoteExportDataActivity.java
sk.henrichg.phoneprofiles.RemoveBrightnessViewBroadcastReceiver.java
sk.henrichg.phoneprofiles.ScreenOnOffBroadcastReceiver.java
sk.henrichg.phoneprofiles.ShortcutCreatorActivity.java
sk.henrichg.phoneprofiles.ShortcutCreatorListFragment.java
sk.henrichg.phoneprofiles.ShortcutProfileListAdapter.java
sk.henrichg.phoneprofiles.UpgradePPHelperActivity.java
sk.henrichg.phoneprofiles.VolumeDialogPreference.java