/* * Author: Miguel Angel Bravo (@MiguelAngelBrav) * The Android Open Source Project Katbag is licensed under the General GPLv3. * */ package cl.ipp.katbag.row_adapters; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import cl.ipp.katbag.MainActivity; import cl.ipp.katbag.R; import cl.ipp.katbag.fragment.Develop; public class DevelopRowAdapter extends ArrayAdapter<String> { public List<String> items; private Context context; private MainActivity mainActivity; private ArrayList<String> dialogList = new ArrayList<String>(); public DevelopRowAdapter(Context context, MainActivity mainActivity, int layoutResourceId, List<String> items) { super(context, layoutResourceId, items); this.context = context; this.mainActivity = mainActivity; this.items = items; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(R.layout.row_develop, parent, false); } List<String> dev = mainActivity.katbagHandler.selectDevelopForId(Long.parseLong(items.get(position))); if (dev.size() > 0) { TextView humanName = (TextView) v.findViewById(R.id.develop_row_name); if (humanName != null) { humanName.setText(dev.get(1)); } TextView subHumaName = (TextView) v.findViewById(R.id.develop_row_sub_name); if (subHumaName != null) { subHumaName.setText("(" + dev.get(7) + ") - pos:" + position + " - id:" + items.get(position)); } } ImageView arrow = (ImageView) v.findViewById(R.id.develop_row_image_arrow); ImageView remove = (ImageView) v.findViewById(R.id.develop_row_image_remove); ImageView drag = (ImageView) v.findViewById(R.id.develop_row_image_drag); if (Develop.editMode) { arrow.setVisibility(View.GONE); remove.setVisibility(View.VISIBLE); drag.setVisibility(View.VISIBLE); } else { arrow.setVisibility(View.VISIBLE); remove.setVisibility(View.GONE); drag.setVisibility(View.GONE); } ImageView indent_line = (ImageView) v.findViewById(R.id.develop_row_image_indent_line); if (canIndent(dev.get(0), dev.get(2), position)) { indent_line.setBackgroundResource(R.drawable.katbag_icon_one_develop_indent); } else { indent_line.setBackgroundResource(R.drawable.katbag_icon_one_develop); } // determine color line level int level = Integer.parseInt(dev.get(7)); int levelColor = 0; if ((level >= 0) && (level <= 9)) levelColor = level; else if ((level >= 10) && (level <= 19)) levelColor = level - 10; else if ((level >= 20) && (level <= 29)) levelColor = level - 20; else if ((level >= 30) && (level <= 39)) levelColor = level - 30; else if ((level >= 40) && (level <= 49)) levelColor = level - 40; else if ((level >= 50) && (level <= 59)) levelColor = level - 50; else if ((level >= 60) && (level <= 69)) levelColor = level - 60; else if ((level >= 70) && (level <= 79)) levelColor = level - 70; else if ((level >= 80) && (level <= 89)) levelColor = level - 80; else if ((level >= 90) && (level <= 99)) levelColor = level - 90; LinearLayout lineLevel = (LinearLayout) v.findViewById(R.id.develop_line_level); int resource = context.getResources().getIdentifier("develop_line_level_" + String.valueOf(levelColor), "color", mainActivity.getPackageName()); lineLevel.setBackgroundResource(resource); lineLevel.setPadding(level * 13, 0, 0, 0); return v; } @Override public void insert(String object, int index) { List<String> list = new ArrayList<String>(); list.clear(); list = mainActivity.katbagHandler.selectDevelopForIdApp(Develop.id_app); int z = 0; int order = -1; for (int i = 0; i < list.size(); i++) { String[] arr = list.get(i).toString().split("&&"); if (arr[0].contentEquals(object)) { order = index; } else { if (z == index) z++; order = z; z++; } mainActivity.katbagHandler.updateDevelopOrder(Long.parseLong(arr[0]), order); } super.insert(object, index); } public boolean canIndent(String statement, String value, int position) { dialogList.clear(); if (statement.contentEquals("motion")) { } else if (statement.contentEquals("look")) { } else if (statement.contentEquals("sound")) { } else if (statement.contentEquals("control")) { dialogList = new ArrayList<String>(Arrays.asList(context.getResources().getStringArray(R.array.control_indent))); } else if (statement.contentEquals("sensing")) { dialogList = new ArrayList<String>(Arrays.asList(context.getResources().getStringArray(R.array.sensing_indent))); } boolean indent = false; if (dialogList.size() > 0) { for (int i = 0; i < dialogList.size(); i++) { if (value.contentEquals(dialogList.get(i))) { indent = true; break; } } } return indent; } }