package com.android.iliConnect; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.os.AsyncTask; import android.graphics.Typeface; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; import com.android.iliConnect.Exceptions.JoinCourseException; import com.android.iliConnect.Exceptions.NetworkException; import com.android.iliConnect.dataproviders.LocalCourseProvider; import com.android.iliConnect.dataproviders.RemoteDataProvider; import com.android.iliConnect.models.DesktopItem; import com.android.iliConnect.models.Item; public class DesktopDetailArrayAdapter extends ArrayAdapter<Item> { //private String selectedCourse = ""; private class DesktopViews { TextView title; TextView description; TextView date; TextView type; TextView owner; LinearLayout items; } public DesktopDetailArrayAdapter(Context context, int textViewResourceId) { super(context, textViewResourceId); } protected List<Item> items = new ArrayList<Item>(); public DesktopDetailArrayAdapter(Context context, int textViewResourceId, List<Item> items) { super(context, textViewResourceId, items); this.items = items; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View v = convertView; LayoutInflater vi = (LayoutInflater) MainActivity.instance.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = fillListRecursive(null, items.get(position), vi); /* v.findViewById(R.id.imageButton1).setVisibility(View.VISIBLE); v.findViewById(R.id.imageButton1).setOnClickListener(new OnClickListener() { public void onClick(View v) { MainActivity.instance.showBrowserContent(MainActivity.instance.localDataProvider.auth.url_src+"webdav.php?ref_id="+items.get(position).ref_id); } }); */ // replaceView(v, (LinearLayout)convertView,items.get(position).getType()); return v; } private View replaceView(View v1, LinearLayout v, String type) { int resID = 0; String descr = null; if (type.equalsIgnoreCase("FILE")) { resID = R.drawable.dl; descr = "Datei"; } else if (type.equalsIgnoreCase("FOLD")) { resID = R.drawable.fold; descr = "Ordner"; } else if (type.equalsIgnoreCase("EXC")) { resID = R.drawable.exc; descr = "Übung"; } else if (type.equalsIgnoreCase("TST")) { resID = R.drawable.tst; descr = "Test"; } else if (type.equalsIgnoreCase("UNSIGN")) { resID = R.drawable.unsign; descr = ""; } v.removeView(v1); LinearLayout layout = new LinearLayout(MainActivity.instance); layout.setGravity(Gravity.TOP); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); lp.setMargins(20, 30, 0, 0); // ImageButton arrow = new ImageButton(MainActivity.instance); // arrow.setBackgroundResource(R.drawable.arrow); // LinearLayout layoutArrow = new LinearLayout(MainActivity.instance); // layoutArrow.setGravity(Gravity.RIGHT); // layoutArrow.addView(arrow); ImageButton vSub = new ImageButton(MainActivity.instance); vSub.setBackgroundResource(resID); vSub.setLayoutParams(lp); layout.addView(vSub); ((TextView) v1.findViewById(R.id.itemType)).setText(descr); layout.addView(v1); // layout.addView(arrow); LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); v1.setLayoutParams(lp1); if (type.equalsIgnoreCase("UNSIGN")) { ((TextView) v1.findViewById(R.id.itemTitle)).setTextColor(Color.RED); ((TextView) v1.findViewById(R.id.itemDescription)).setTextColor(Color.RED); } return layout; } protected LinearLayout fillListRecursive(LinearLayout v, final Item item, LayoutInflater vi) { DesktopViews desktopViews = new DesktopViews(); if (v == null) { v = (LinearLayout) vi.inflate(R.layout.item, null); desktopViews = new DesktopViews(); desktopViews.title = (TextView) v.findViewById(R.id.itemTitle); desktopViews.description = (TextView) v.findViewById(R.id.itemDescription); desktopViews.date = (TextView) v.findViewById(R.id.itemDate); desktopViews.type = (TextView) v.findViewById(R.id.itemType); desktopViews.owner = (TextView) v.findViewById(R.id.itemOwner); } else desktopViews = (DesktopViews) v.getTag(); desktopViews.title.setText(item.getTitle()); desktopViews.title.setLines(1); desktopViews.description.setText(item.getDescription()); desktopViews.description.setLines(1); if (desktopViews.description.equals("")) { desktopViews.description.setVisibility(View.INVISIBLE); } if (item.getType().equalsIgnoreCase("TST")) { desktopViews.type.setText("Test"); } if (item.getType().equalsIgnoreCase("EXC")) { desktopViews.type.setText("Übung"); } if (item.getType().equalsIgnoreCase("FILE")) { desktopViews.type.setText("Datei"); } if (item.getType().equalsIgnoreCase("FOLD")) { desktopViews.type.setText("Ordner"); } if (item.changed) { String text = (String) desktopViews.type.getText(); desktopViews.type.setText(text + " 'Inhalt geändert'"); } desktopViews.type.setTypeface(null, Typeface.BOLD); /* if (item.getType().equalsIgnoreCase("CRS") || item.getType().equalsIgnoreCase("FOLD")) { desktopViews.type.setVisibility(View.GONE); }*/ if (item.getClass().equals(DesktopItem.class) && !((DesktopItem) item).getDate().equals("")) { desktopViews.date.setText(((DesktopItem) item).getDate()); } else { desktopViews.date.setVisibility(View.GONE); } // Owner immer ausblenden desktopViews.owner.setVisibility(View.GONE); v.setTag(item.getRef_id()); if (item.getItems() != null) { for (final Item childItem : item.getItems()) { View v1 = fillListRecursive(desktopViews.items, childItem, vi); LinearLayout layout = (LinearLayout) v1; final String type = childItem.getType(); layout = (LinearLayout) replaceView(v1, v, type); v1 = layout; v1.setTag(childItem.getRef_id()); v.addView(v1); } } final Item parentItem = item; v.setOnClickListener(new OnClickListener() { public void onClick(View v) { // Item als gelesen markieren item.changed = false; String s = v.getTag().toString(); /*if (parentItem.getType().equalsIgnoreCase("CRS")) { // ref_id für ggf. Abmeldung merken selectedCourse = parentItem.getRef_id(); // Item als gelesen markieren item.changed = false; toggleVisibility(parentItem, v); }*/ if (parentItem.getType().equalsIgnoreCase("FOLD") || parentItem.getType().equalsIgnoreCase("CRS")) { /*if(parentItem.getType().equalsIgnoreCase("CRS")) { selectedCourse = parentItem.getRef_id(); }*/ // TODO: // repository.php callen... mit ref_id und cmd=view //toggleVisibility(parentItem, v); // doStuff final Intent intentMain = new Intent(MainTabView.instance, SchreibtischDetailActivity.class); intentMain.putExtra("CourseName", item.title); // -1 hat keine Auswrikung auf die SchreibtischDetailActivity intentMain.putExtra("position", -1); intentMain.putExtra("Item", parentItem); MainActivity.instance.runOnUiThread(new Runnable() { public void run() { MainActivity.currentActivity.startActivity(intentMain); MainActivity.instance.iliasNotifier(MainActivity.currentActivity, item); } }); } else if (parentItem.getType().equalsIgnoreCase("FILE")) { MainActivity.instance.openFileOrDownload(MainActivity.currentActivity, item); MainActivity.instance.runOnUiThread(new Runnable() { public void run() { MainActivity.instance.iliasNotifier(MainActivity.currentActivity, item); } }); } else if (parentItem.getType().equalsIgnoreCase("TST") || parentItem.getType().equalsIgnoreCase("EXC")) { String url_src = MainActivity.instance.localDataProvider.auth.url_src; String iliasUrl = url_src + "login.php"; // String testUrl = url_src + "ilias.php?baseClass=ilObjTestGUI&ref_id=" + s + "&cmd=infoScreen"; // Ilias Im Bowser aufrufen MainActivity.instance.showBrowserContent(iliasUrl); } } }); toggleVisibility(item, v); return v; } private void toggleVisibility(Item childItem, View v) { View vSub; ArrayList<Item> childItems = new ArrayList<Item>(); if (childItem.Item != null) childItems = childItem.Item; for (Item item : childItems) { if ((vSub = v.findViewWithTag(item.getRef_id())).getVisibility() == View.VISIBLE) { vSub.setVisibility(View.GONE); } else { vSub.setVisibility(View.VISIBLE); } } } }