Profile.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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.LinkedList;
  14. import java.util.List;
  15. import java.util.Map;
  16. import de.tudarmstadt.informatik.hostage.ui2.activity.MainActivity;
  17. /**
  18. * @author Alexander Brakowski
  19. * @created 14.01.14 18:04
  20. */
  21. public class Profile implements Serializable {
  22. private static final long serialVersionUID = 7L;
  23. public String mText;
  24. public String mLabel;
  25. public int mId;
  26. public boolean mActivated;
  27. transient public Bitmap mIcon;
  28. transient public int mIconId;
  29. public String mIconName;
  30. public String mIconPath;
  31. public boolean mIsBackVisible = false;
  32. public boolean mEditable = false;
  33. public boolean mIsRandom = false;
  34. public HashMap<String, Boolean> mActiveProtocols = new HashMap<String, Boolean>();
  35. public String mGhostPorts = "";
  36. public boolean mGhostActive = false;
  37. public Profile(){
  38. this.mEditable = true;
  39. this.mActivated = false;
  40. this.mId = -1;
  41. }
  42. public Profile(int id, String label, String text, Bitmap icon, boolean editable){
  43. this.mId = id;
  44. this.mLabel = text;
  45. this.mText = label;
  46. this.mActivated = false;
  47. this.mIcon = icon;
  48. this.mEditable = editable;
  49. }
  50. public Profile(int id, String label, String text, int icon, boolean editable){
  51. this(id, text, label, BitmapFactory.decodeResource(MainActivity.context.getResources(), icon), editable);
  52. mIconId = icon;
  53. mIconName = MainActivity.context.getResources().getResourceName(icon);
  54. }
  55. public Profile(int id, String label, String text, String iconPath, boolean editable){
  56. this.mId = id;
  57. this.mLabel = label;
  58. this.mText = text;
  59. this.mActivated = false;
  60. this.mIconPath = iconPath;
  61. this.mEditable = editable;
  62. }
  63. public Profile(Parcel in) {
  64. mText = in.readString();
  65. mLabel = in.readString();
  66. mId = in.readInt();
  67. mActivated = in.readInt() == 1;
  68. mIconId = in.readInt();
  69. mIconName = in.readString();
  70. mIconPath = in.readString();
  71. mEditable = in.readInt() == 1;
  72. mActiveProtocols = (HashMap<String,Boolean>) in.readSerializable();
  73. }
  74. public void setIcon(Bitmap bitmap){
  75. this.mIcon = bitmap;
  76. }
  77. public void setIcon(int icon){
  78. this.mIcon = BitmapFactory.decodeResource(MainActivity.context.getResources(), icon);
  79. }
  80. public Bitmap getIconBitmap(){
  81. if(this.mIcon != null) return mIcon;
  82. if(this.mIconId != 0){
  83. this.mIcon = BitmapFactory.decodeResource(MainActivity.context.getResources(), mIconId);
  84. return this.mIcon;
  85. }
  86. if(!this.mIconName.isEmpty()){
  87. this.mIconId = MainActivity.context.getResources().getIdentifier(this.mIconName,
  88. "drawable", "de.tudarmstadt.informatik.hostage");
  89. this.mIcon = BitmapFactory.decodeResource(MainActivity.context.getResources(), this.mIconId);
  90. return this.mIcon;
  91. }
  92. if(this.mIconPath != null){
  93. BitmapFactory.Options options = new BitmapFactory.Options();
  94. options.inPreferredConfig = Bitmap.Config.ARGB_8888;
  95. Bitmap bitmap = BitmapFactory.decodeFile(this.mIconPath, options);
  96. return bitmap;
  97. }
  98. return null;
  99. }
  100. public boolean isProtocolActive(String protocol){
  101. if(!mActiveProtocols.containsKey(protocol)) return false;
  102. return mActiveProtocols.get(protocol);
  103. }
  104. public List<String> getActiveProtocols(){
  105. List<String> list = new LinkedList<String>();
  106. for(Map.Entry<String, Boolean> entry: this.mActiveProtocols.entrySet()){
  107. if(entry.getValue()){
  108. list.add(entry.getKey());
  109. }
  110. }
  111. return list;
  112. }
  113. public Drawable getIconDrawable(){
  114. return new BitmapDrawable(MainActivity.context.getResources(), getIconBitmap());
  115. }
  116. public boolean isEditable(){
  117. return this.mEditable;
  118. }
  119. public Profile cloneProfile(){
  120. return new Profile(mId, mLabel, mText, mIcon, mEditable);
  121. }
  122. public Integer[] getGhostPorts(){
  123. String[] splits = this.mGhostPorts.split(",");
  124. Integer[] ports = new Integer[splits.length];
  125. for(int i=0; i<splits.length; i++){
  126. ports[i] = Integer.valueOf(splits[i]);
  127. }
  128. return ports;
  129. }
  130. }