package com.iwedia.gui.components.dialogs;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.RemoteException;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import com.iwedia.dtv.ci.ApplicationInfo;
import com.iwedia.gui.MainActivity;
import com.iwedia.gui.R;
import com.iwedia.gui.components.A4TVDialog;
import com.iwedia.gui.components.A4TVTextView;
import java.util.ArrayList;
/**
* CI info dialog
*
* @author Branimir Pavlovic
*/
public class CICamInfoDialog extends A4TVDialog implements A4TVDialogInterface,
android.view.View.OnClickListener, OnItemClickListener {
private final static String TAG = "CICamInfoDialog";
private A4TVTextView textViewOnTop;
private ImageView imageLine;
private Context ctx;
/** Fields for list view */
private ListView listCamView;
private static CIAdapter adapter;
private ArrayList<String> listCamMenuItems = new ArrayList<String>();
public CICamInfoDialog(Context context) {
super(context, checkTheme(context), 0);
ctx = context;
// set content to dialog
fillDialog();
// set attributes
setDialogAttributes();
init();
}
public void loadCAMApplicationInfo() {
listCamMenuItems.clear();
int numberOfApp = 0;
try {
numberOfApp = MainActivity.service.getCIControl()
.getNumberOfApplications();
} catch (RemoteException e) {
e.printStackTrace();
}
for (int i = 0; i < numberOfApp; i++) {
ApplicationInfo info = null;
try {
info = MainActivity.service.getCIControl()
.getApplicationInfo(i);
} catch (RemoteException e) {
e.printStackTrace();
}
if (info != null) {
listCamMenuItems.add(info.getName());
}
}
refresh();
Log.d(TAG, "loadCAMApplicationInfo executed");
}
@Override
public void show() {
loadCAMApplicationInfo();
listCamView = (ListView) findViewById(R.id.listViewAudioLanguage);
adapter = new CIAdapter();
listCamView.setAdapter(adapter);
listCamView.setOnItemClickListener(this);
listCamView.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);
listCamView.setScrollbarFadingEnabled(false);
super.show();
}
/** Initialization function */
private void init() {
textViewOnTop = (A4TVTextView) findViewById(R.id.aTVTextViewMessage);
textViewOnTop
.setLayoutParams(new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
MainActivity.dialogListElementHeight));
textViewOnTop.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
textViewOnTop.setPadding(
(int) ctx.getResources().getDimension(R.dimen.padding_small),
0, 0, 0);
textViewOnTop.setText("Available CAMs");
imageLine = (ImageView) findViewById(R.id.imageViewHorizLine);
// get drawable from theme for image source
TypedArray atts = ctx.getTheme().obtainStyledAttributes(
new int[] { R.attr.DialogSmallUpperDividerLine });
int backgroundID = atts.getResourceId(0, 0);
imageLine.setBackgroundResource(backgroundID);
atts.recycle();
listCamView = (ListView) findViewById(R.id.listViewAudioLanguage);
adapter = new CIAdapter();
listCamView.setAdapter(adapter);
listCamView.setOnItemClickListener(this);
listCamView.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);
listCamView.setScrollbarFadingEnabled(false);
}
@Override
public void fillDialog() {
setContentView(R.layout.audio_language_dialog);
}
@Override
public void setDialogAttributes() {
getWindow().getAttributes().width = MainActivity.dialogWidth;
getWindow().getAttributes().height = MainActivity.dialogHeight;
}
@Override
public void onClick(View v) {
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Log.d(TAG, "OnItemClicked chosen " + arg2);
try {
MainActivity.service.getCIControl().open(arg2);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d(TAG, "ENTER MENU: " + (arg2));
}
/** Adapter for list view */
private class CIAdapter extends BaseAdapter {
@Override
public int getCount() {
return listCamMenuItems.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = new A4TVTextView(ctx);
((A4TVTextView) convertView)
.setText(listCamMenuItems.get(position));
(convertView).setLayoutParams(new AbsListView.LayoutParams(
LayoutParams.MATCH_PARENT,
MainActivity.dialogListElementHeight));
((A4TVTextView) convertView).setGravity(Gravity.LEFT
| Gravity.CENTER_VERTICAL);
(convertView).setPadding(
(int) ctx.getResources()
.getDimension(R.dimen.padding_large), 0, 0, 0);
(convertView).setBackgroundResource(R.drawable.list_view_selector);
return convertView;
}
}
public static void refresh() {
Log.d(TAG, "refresh");
adapter.notifyDataSetChanged();
}
/**
* Function that load theme
*
* @param ctx
* @return
*/
private static int checkTheme(Context ctx) {
TypedArray atts = ctx.getTheme().obtainStyledAttributes(
new int[] { R.attr.A4TVDialog });
int i = atts.getResourceId(0, 0);
atts.recycle();
return i;
}
@Override
public void returnArrayListsWithDialogContents(
ArrayList<ArrayList<Integer>> contentList,
ArrayList<ArrayList<Integer>> contentListIDs,
ArrayList<Integer> titleIDs) {
}
}