ServicesListAdapter.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  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. if(!HelperUtils.isWifiConnected(mActivity)){
  72. new AlertDialog.Builder(mActivity)
  73. .setTitle("Information")
  74. .setMessage("You are not connected to a WiFi network. \n\nPlease connect to one, before trying to activate HosTaGe.")
  75. .setPositiveButton(android.R.string.ok,
  76. new DialogInterface.OnClickListener() {
  77. public void onClick(DialogInterface dialog, int which) {
  78. }
  79. })
  80. .setIcon(android.R.drawable.ic_dialog_info)
  81. .show();
  82. buttonView.setChecked(false);
  83. } else {
  84. if(isChecked){
  85. if(!MainActivity.getInstance().getHoneyService().isRunning(item.protocol)) {
  86. MainActivity.getInstance().getHoneyService().startListener(item.protocol);
  87. mServicesSwitch.setOnCheckedChangeListener(null);
  88. mServicesSwitch.setChecked(true);
  89. mServicesSwitch.setOnCheckedChangeListener(mListener);
  90. }
  91. buttonView.setChecked(true);
  92. } else {
  93. if(MainActivity.getInstance().getHoneyService().isRunning(item.protocol)){
  94. MainActivity.getInstance().getHoneyService().stopListener(item.protocol);
  95. }
  96. buttonView.setChecked(false);
  97. }
  98. }
  99. }
  100. });
  101. return rowView;
  102. }
  103. private void updateStatus(ServicesListItem item, ViewHolder holder){
  104. if(MainActivity.getInstance().getHoneyService().isRunning(item.protocol)){
  105. holder.activated.setChecked(true);
  106. if(sdk < Build.VERSION_CODES.JELLY_BEAN){
  107. holder.circle.setBackgroundDrawable(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle_green));
  108. }
  109. else {
  110. holder.circle.setBackground(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle_green));
  111. }
  112. }
  113. else {
  114. holder.activated.setChecked(false);
  115. if(sdk < Build.VERSION_CODES.JELLY_BEAN){
  116. holder.circle.setBackgroundDrawable(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle));
  117. }
  118. else {
  119. holder.circle.setBackground(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle));
  120. }
  121. }
  122. if((Integer.valueOf(item.attacks) > 0) && (Integer.valueOf(item.attacks) == item.initialValue) && MainActivity.getInstance().getHoneyService().isRunning(item.protocol)) {
  123. if(sdk < Build.VERSION_CODES.JELLY_BEAN){
  124. holder.circle.setBackgroundDrawable(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle_yellow));
  125. }
  126. else {
  127. holder.circle.setBackground(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle_yellow));
  128. }
  129. }
  130. else if( (item.initialValue < Integer.valueOf(item.attacks)) && MainActivity.getInstance().getHoneyService().isRunning(item.protocol)) {
  131. System.out.println(item.initialValue);
  132. if(sdk < Build.VERSION_CODES.JELLY_BEAN){
  133. holder.circle.setBackgroundDrawable(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle_red));
  134. }
  135. else {
  136. holder.circle.setBackground(MainActivity.getInstance().getResources().getDrawable(R.drawable.services_circle_red));
  137. }
  138. }
  139. holder.recordedAttacks.setText(item.attacks);
  140. }
  141. }