Profile.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. package de.tudarmstadt.informatik.hostage.model;
  2. import android.content.Context;
  3. import android.content.SharedPreferences;
  4. import android.graphics.Bitmap;
  5. import android.graphics.BitmapFactory;
  6. import android.graphics.drawable.BitmapDrawable;
  7. import android.graphics.drawable.Drawable;
  8. import android.os.Bundle;
  9. import android.os.Parcel;
  10. import android.os.Parcelable;
  11. import java.io.Serializable;
  12. import java.util.HashMap;
  13. import java.util.Map;
  14. import de.tudarmstadt.informatik.hostage.ui2.activity.MainActivity;
  15. /**
  16. * @author Alexander Brakowski
  17. * @created 14.01.14 18:04
  18. */
  19. public class Profile implements Serializable {
  20. public String mText;
  21. public String mLabel;
  22. public int mId;
  23. public boolean mActivated;
  24. transient public Bitmap mIcon;
  25. public int mIconId;
  26. public String mIconName;
  27. public String mIconPath;
  28. public boolean mIsBackVisible = false;
  29. public boolean mEditable = false;
  30. public HashMap<String, Boolean> mActiveProtocols = new HashMap<String, Boolean>();
  31. public Profile(){
  32. this.mEditable = true;
  33. this.mActivated = false;
  34. this.mId = -1;
  35. }
  36. public Profile(int id, String label, String text, Bitmap icon, boolean editable){
  37. this.mId = id;
  38. this.mLabel = text;
  39. this.mText = label;
  40. this.mActivated = false;
  41. this.mIcon = icon;
  42. this.mEditable = editable;
  43. }
  44. public Profile(int id, String label, String text, int icon, boolean editable){
  45. this(id, text, label, BitmapFactory.decodeResource(MainActivity.context.getResources(), icon), editable);
  46. mIconId = icon;
  47. mIconName = MainActivity.context.getResources().getResourceName(icon);
  48. }
  49. public Profile(int id, String label, String text, String iconPath, boolean editable){
  50. this.mId = id;
  51. this.mLabel = label;
  52. this.mText = text;
  53. this.mActivated = false;
  54. this.mIconPath = iconPath;
  55. this.mEditable = editable;
  56. }
  57. public Profile(Parcel in) {
  58. mText = in.readString();
  59. mLabel = in.readString();
  60. mId = in.readInt();
  61. mActivated = in.readInt() == 1;
  62. mIconId = in.readInt();
  63. mIconName = in.readString();
  64. mIconPath = in.readString();
  65. mEditable = in.readInt() == 1;
  66. mActiveProtocols = (HashMap<String,Boolean>) in.readSerializable();
  67. }
  68. public void setIcon(Bitmap bitmap){
  69. this.mIcon = bitmap;
  70. }
  71. public void setIcon(int icon){
  72. this.mIcon = BitmapFactory.decodeResource(MainActivity.context.getResources(), icon);
  73. }
  74. public Bitmap getIconBitmap(){
  75. if(this.mIcon != null) return mIcon;
  76. if(this.mIconId != 0){
  77. this.mIcon = BitmapFactory.decodeResource(MainActivity.context.getResources(), mIconId);
  78. return this.mIcon;
  79. }
  80. if(!this.mIconName.isEmpty()){
  81. this.mIconId = MainActivity.context.getResources().getIdentifier(this.mIconName,
  82. "drawable", "de.tudarmstadt.informatik.hostage");
  83. this.mIcon = BitmapFactory.decodeResource(MainActivity.context.getResources(), this.mIconId);
  84. return this.mIcon;
  85. }
  86. if(this.mIconPath != null){
  87. BitmapFactory.Options options = new BitmapFactory.Options();
  88. options.inPreferredConfig = Bitmap.Config.ARGB_8888;
  89. Bitmap bitmap = BitmapFactory.decodeFile(this.mIconPath, options);
  90. return bitmap;
  91. }
  92. return null;
  93. }
  94. public boolean isProtocolActive(String protocol){
  95. if(!mActiveProtocols.containsKey(protocol)) return false;
  96. return mActiveProtocols.get(protocol);
  97. }
  98. public Drawable getIconDrawable(){
  99. return new BitmapDrawable(MainActivity.context.getResources(), getIconBitmap());
  100. }
  101. public boolean isEditable(){
  102. return this.mEditable;
  103. }
  104. public Profile cloneProfile(){
  105. return new Profile(mId, mLabel, mText, mIcon, mEditable);
  106. }
  107. /**
  108. * Describe the kinds of special objects contained in this Parcelable's
  109. * marshalled representation.
  110. *
  111. * @return a bitmask indicating the set of special object types marshalled
  112. * by the Parcelable.
  113. */
  114. //@Override
  115. public int describeContents() {
  116. return 0;
  117. }
  118. /**
  119. * Flatten this object in to a Parcel.
  120. *
  121. * @param dest The Parcel in which the object should be written.
  122. * @param flags Additional flags about how the object should be written.
  123. * May be 0 or {@link #PARCELABLE_WRITE_RETURN_VALUE}.
  124. */
  125. //@Override
  126. public void writeToParcel(Parcel dest, int flags) {
  127. dest.writeString(this.mText);
  128. dest.writeString(this.mLabel);
  129. dest.writeInt(this.mId);
  130. dest.writeInt(this.mActivated ? 1 : 0);
  131. dest.writeInt(this.mIconId);
  132. dest.writeString(this.mIconName);
  133. dest.writeString(this.mIconPath);
  134. dest.writeInt(this.mEditable ? 1 : 0);
  135. dest.writeSerializable(mActiveProtocols);
  136. }
  137. public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
  138. public Profile createFromParcel(Parcel in) {
  139. return new Profile(in);
  140. }
  141. public Profile[] newArray(int size) {
  142. return new Profile[size];
  143. }
  144. };
  145. }