ServicesListAdapter.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package de.tudarmstadt.informatik.hostage.ui2.adapter;
  2. import android.app.AlertDialog;
  3. import android.content.Context;
  4. import android.content.DialogInterface;
  5. import android.content.SharedPreferences;
  6. import android.os.Build;
  7. import android.view.LayoutInflater;
  8. import android.view.View;
  9. import android.view.ViewGroup;
  10. import android.widget.ArrayAdapter;
  11. import android.widget.CompoundButton;
  12. import android.widget.Switch;
  13. import android.widget.TextView;
  14. import java.util.List;
  15. import de.tudarmstadt.informatik.hostage.R;
  16. import de.tudarmstadt.informatik.hostage.commons.HelperUtils;
  17. import de.tudarmstadt.informatik.hostage.ui2.activity.MainActivity;
  18. import de.tudarmstadt.informatik.hostage.ui2.model.ServicesListItem;
  19. /**
  20. * Created by Daniel Lazar on 06.02.14.
  21. */
  22. public class ServicesListAdapter extends ArrayAdapter<ServicesListItem> {
  23. private SharedPreferences mConnectionInfo;
  24. private class ViewHolder {
  25. public TextView protocolName;
  26. public TextView recordedAttacks;
  27. public Switch activated;
  28. public View circle;
  29. }
  30. private Context mActivity;
  31. private Switch mServicesSwitch;
  32. private CompoundButton.OnCheckedChangeListener mListener;
  33. private final Context context;
  34. private final List<ServicesListItem> values;
  35. int sdk = Build.VERSION.SDK_INT;
  36. public ServicesListAdapter(Context context, List<ServicesListItem> objects){
  37. super(context, R.layout.services_list_item, objects);
  38. this.context = context;
  39. this.values = objects;
  40. }
  41. public void setActivity(Context activity, Switch servicesSwitch, CompoundButton.OnCheckedChangeListener mainListener) {
  42. mActivity = activity;
  43. mServicesSwitch = servicesSwitch;
  44. mListener = mainListener;
  45. }
  46. @Override
  47. public View getView(final int position, View convertView, ViewGroup parent) {
  48. LayoutInflater inflater = (LayoutInflater) context
  49. .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  50. View rowView = convertView;
  51. ViewHolder holder = null;
  52. final ServicesListItem item = values.get(position);
  53. if(rowView == null){
  54. rowView = inflater.inflate(R.layout.services_list_item, parent, false);
  55. holder = new ViewHolder();
  56. holder.protocolName = (TextView) rowView.findViewById(R.id.services_item_name);
  57. holder.recordedAttacks = (TextView) rowView.findViewById(R.id.services_item_rec_attacks);
  58. holder.activated = (Switch) rowView.findViewById(R.id.services_item_switch);
  59. holder.circle = rowView.findViewById(R.id.services_circle);
  60. rowView.setTag(holder);
  61. } else {
  62. holder = (ViewHolder) rowView.getTag();
  63. }
  64. holder.protocolName.setText(item.protocol);
  65. holder.activated.setTag(item);
  66. this.updateStatus(item, holder);
  67. holder.activated.setOnCheckedChangeListener(
  68. new CompoundButton.OnCheckedChangeListener() {
  69. public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  70. ServicesListItem item = (ServicesListItem) buttonView.getTag();
  71. System.out
  72. .println("Protokoll: " + item.protocol);
  73. if(!HelperUtils.isWifiConnected(mActivity)){
  74. new AlertDialog.Builder(mActivity)
  75. .setTitle("Information")
  76. .setMessage("You are not connected to a WiFi network. \n\nPlease connect to one, before trying to activate HosTaGe.")
  77. .setPositiveButton(android.R.string.ok,
  78. new DialogInterface.OnClickListener() {
  79. public void onClick(DialogInterface dialog, int which) {
  80. }
  81. })
  82. .setIcon(android.R.drawable.ic_dialog_info)
  83. .show();
  84. buttonView.setChecked(false);
  85. } else {
  86. if(isChecked){
  87. if(!MainActivity.getInstance().getHoneyService().isRunning(item.protocol)) {
  88. MainActivity.getInstance().getHoneyService().startListener(item.protocol);
  89. mServicesSwitch.setOnCheckedChangeListener(null);
  90. mServicesSwitch.setChecked(true);
  91. mServicesSwitch.setOnCheckedChangeListener(mListener);
  92. }
  93. buttonView.setChecked(true);
  94. } else {
  95. if(MainActivity.getInstance().getHoneyService().isRunning(item.protocol)){
  96. MainActivity.getInstance().getHoneyService().stopListener(item.protocol);
  97. }
  98. buttonView.setChecked(false);
  99. }
  100. }
  101. }
  102. });
  103. return rowView;
  104. }
  105. private void updateStatus(ServicesListItem item, ViewHolder holder){
  106. if(MainActivity.getInstance().getHoneyService().isRunning(item.protocol)){
  107. holder.activated.setChecked(true);
  108. if(sdk < Build.VERSION_CODES.JELLY_BEAN){
  109. holder.circle.setBackgroundDrawable(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle_green));
  110. }
  111. else {
  112. holder.circle.setBackground(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle_green));
  113. }
  114. }
  115. else {
  116. holder.activated.setChecked(false);
  117. if(sdk < Build.VERSION_CODES.JELLY_BEAN){
  118. holder.circle.setBackgroundDrawable(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle));
  119. }
  120. else {
  121. holder.circle.setBackground(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle));
  122. }
  123. }
  124. if((Integer.valueOf(item.attacks) > 0) && (Integer.valueOf(item.attacks) == item.initialValue) && MainActivity.getInstance().getHoneyService().isRunning(item.protocol)) {
  125. if(sdk < Build.VERSION_CODES.JELLY_BEAN){
  126. holder.circle.setBackgroundDrawable(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle_yellow));
  127. }
  128. else {
  129. holder.circle.setBackground(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle_yellow));
  130. }
  131. }
  132. else if( (item.initialValue < Integer.valueOf(item.attacks)) && MainActivity.getInstance().getHoneyService().isRunning(item.protocol)) {
  133. System.out.println(item.initialValue);
  134. if(sdk < Build.VERSION_CODES.JELLY_BEAN){
  135. holder.circle.setBackgroundDrawable(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle_red));
  136. }
  137. else {
  138. holder.circle.setBackground(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle_red));
  139. }
  140. }
  141. holder.recordedAttacks.setText(item.attacks);
  142. }
  143. }