package com.iwedia.gui.components.dialogs;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.RemoteException;
import android.view.View;
import com.iwedia.dtv.scan.Modulation;
import com.iwedia.gui.MainActivity;
import com.iwedia.gui.R;
import com.iwedia.gui.components.A4TVButton;
import com.iwedia.gui.components.A4TVDialog;
import com.iwedia.gui.components.A4TVEditText;
import com.iwedia.gui.components.A4TVSpinner;
import com.iwedia.gui.mainmenu.DialogManager;
import com.iwedia.gui.mainmenu.MainMenuContent;
import java.util.ArrayList;
/**
* Pvr settings dialog
*
* @author Sasa Jagodin
*/
public class CableNetworkDialog extends A4TVDialog implements
A4TVDialogInterface, android.view.View.OnClickListener {
/** IDs for edit texts */
public static final int CABLE_NETWORK_MENU_NETWORK_ID = 1,
CABLE_NETWORK_MENU_FREQUENCY = 2,
CABLE_NETWORK_MENU_SYMBOL_RATE = 3;
/** ID for spinner */
public static final int CABLE_NETWORK_MENU_MODULATION = 41;
public static final int CABLE_NETWORK_MENU_STORE = 5;
// fields for creating dialogs
private ArrayList<ArrayList<Integer>> contentList = new ArrayList<ArrayList<Integer>>(),
contentListIDs = new ArrayList<ArrayList<Integer>>();
private ArrayList<Integer> titleIDs = new ArrayList<Integer>();
private A4TVEditText editNetworkId, editFrequency, editSymbolRate;
private A4TVButton buttonStore;
private A4TVSpinner editModulation;
private Context context;
public CableNetworkDialog(Context context) {
super(context, checkTheme(context), 0);
// fill lists
returnArrayListsWithDialogContents(contentList, contentListIDs,
titleIDs);
// set content to dialog
fillDialog();
// set attributes
setDialogAttributes();
init();
}
/** Get references from views and set look and feel */
private void init() {
editNetworkId = (A4TVEditText) findViewById(CABLE_NETWORK_MENU_NETWORK_ID);
editFrequency = (A4TVEditText) findViewById(CABLE_NETWORK_MENU_FREQUENCY);
editModulation = (A4TVSpinner) findViewById(CABLE_NETWORK_MENU_MODULATION);
editSymbolRate = (A4TVEditText) findViewById(CABLE_NETWORK_MENU_SYMBOL_RATE);
buttonStore = (A4TVButton) findViewById(CABLE_NETWORK_MENU_STORE);
buttonStore.setText(R.string.button_text_set);
editModulation.setSelection(0);
}
@Override
public void show() {
setViews();
super.show();
}
/** Get informations from service and display it */
private void setViews() {
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case CABLE_NETWORK_MENU_STORE: {
int index = editModulation.getCHOOSEN_ITEM_INDEX();
Modulation modulation;
try {
switch (index) {
case 0: {
modulation = Modulation.MODULATION_QAM16;
break;
}
case 1: {
modulation = Modulation.MODULATION_QAM64;
break;
}
case 2: {
modulation = Modulation.MODULATION_QAM128;
break;
}
case 3: {
modulation = Modulation.MODULATION_QAM256;
break;
}
default:
modulation = Modulation.MODULATION_AUTO;
break;
}
MainActivity.service.getScanControl()
.storeNetworkDefaultValues(
Integer.valueOf(editNetworkId.getText()
.toString()),
Integer.valueOf(editFrequency.getText()
.toString()),
Integer.valueOf(editSymbolRate.getText()
.toString()), modulation);
} catch (RemoteException e) {
e.printStackTrace();
}
break;
}
default:
break;
}
}
@Override
public void fillDialog() {
View view = DialogManager.dialogCreator.fillDialogWithContents(
contentList, contentListIDs, titleIDs, null, this, null);
setContentView(view);
}
@Override
public void setDialogAttributes() {
getWindow().getAttributes().width = MainActivity.dialogWidth;
getWindow().getAttributes().height = MainActivity.dialogHeight;
}
/**
* 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) {
// clear old data in lists
contentList.clear();
contentListIDs.clear();
titleIDs.clear();
// title
titleIDs.add(R.drawable.settings_icon);
titleIDs.add(R.string.tv_menu_cable_network_settings);
ArrayList<Integer> list;
// network id ******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVEditText);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_channel_installation_manual_tunning_settings_network_id);
list.add(CABLE_NETWORK_MENU_NETWORK_ID);
contentListIDs.add(list);
// frequency ******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVEditText);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_channel_installation_signal_info_centre_frequency);
list.add(CABLE_NETWORK_MENU_FREQUENCY);
contentListIDs.add(list);
// modulation ******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVSpinner);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_channel_installation_manual_tunning_settings_modulation);
list.add(CABLE_NETWORK_MENU_MODULATION);
contentListIDs.add(list);
// symbol rate ******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVEditText);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_channel_installation_manual_tunning_settings_symbol_rate);
list.add(CABLE_NETWORK_MENU_SYMBOL_RATE);
contentListIDs.add(list);
// store ******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVButton);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_store_values);
list.add(CABLE_NETWORK_MENU_STORE);
contentListIDs.add(list);
}
}