package com.iwedia.gui.components.dialogs; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.TypedArray; import android.graphics.Color; import android.view.View; import com.iwedia.comm.system.about.IAbout; import com.iwedia.dtv.swupdate.SWVersionType; 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.mainmenu.DialogManager; import com.iwedia.gui.mainmenu.MainMenuContent; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; /** * Product info dialog * * @author Branimir Pavlovic */ public class ProductInfoSoftwareStatusDialog extends A4TVDialog implements A4TVDialogInterface, android.view.View.OnClickListener { /** IDs for buttons */ public static final int TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_BSP = 26, TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_HAL = 28, TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_MWL = 29, TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_MAL = 30, TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_BUNDLE_VERSION = 31, TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_APP_VERSION = 32; // 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 A4TVButton buttonBSP, buttonHAL, buttonMWL, buttonMAL, button_BUNDLEVersion, button_APPVersion; private Context ctx; public static final String BUNDLE_FILE_NAME = "bundle_version.txt"; public ProductInfoSoftwareStatusDialog(Context context) { super(context, checkTheme(context), 0); ctx = context; // 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() { buttonBSP = (A4TVButton) findViewById(TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_BSP); buttonHAL = (A4TVButton) findViewById(TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_HAL); buttonMWL = (A4TVButton) findViewById(TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_MWL); buttonMAL = (A4TVButton) findViewById(TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_MAL); button_BUNDLEVersion = (A4TVButton) findViewById(TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_BUNDLE_VERSION); button_APPVersion = (A4TVButton) findViewById(TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_APP_VERSION); disableBtn(buttonBSP); disableBtn(buttonHAL); disableBtn(buttonMWL); disableBtn(buttonMAL); disableBtn(button_BUNDLEVersion); disableBtn(button_APPVersion); } /** Disable clicks on buttons and clear background */ private void disableBtn(A4TVButton btn) { btn.setClickable(false); btn.setBackgroundColor(Color.TRANSPARENT); } @Override public void show() { setViews(); super.show(); } /** Get informations from service and display it */ private void setViews() { IAbout about = null; try { about = MainActivity.service.getSystemControl().getAbout(); } catch (Exception e) { e.printStackTrace(); } if (about != null) { /******************************* BSP ***************************/ String str = null; try { str = about.getSWVersion(SWVersionType.BSP); } catch (Exception e) { e.printStackTrace(); } if (str != null) { buttonBSP.setText(str); } else { buttonBSP .setText(R.string.tv_menu_software_upgrade_settings_unavailable); } /******************************* HAL ***************************/ str = null; try { str = about.getSWVersion(SWVersionType.HAL); } catch (Exception e) { e.printStackTrace(); } if (str != null) { buttonHAL.setText(str); } else { buttonHAL .setText(R.string.tv_menu_software_upgrade_settings_unavailable); } /******************************* MWL ***************************/ str = null; try { str = about.getSWVersion(SWVersionType.MWL); } catch (Exception e) { e.printStackTrace(); } if (str != null) { buttonMWL.setText(str); } else { buttonMWL .setText(R.string.tv_menu_software_upgrade_settings_unavailable); } /******************************* MAL ***************************/ str = null; try { str = about.getSWVersion(SWVersionType.MAL); } catch (Exception e) { e.printStackTrace(); } if (str != null) { buttonMAL.setText(str); } else { buttonMAL .setText(R.string.tv_menu_software_upgrade_settings_unavailable); } /******************************* BUNDLE Version ***************************/ str = null; try { BufferedReader reader = new BufferedReader( new InputStreamReader(ctx.getAssets().open( BUNDLE_FILE_NAME))); str = reader.readLine(); reader.close(); } catch (IOException e) { e.printStackTrace(); } if (str != null) { button_BUNDLEVersion.setText(str); } else { button_BUNDLEVersion .setText(R.string.tv_menu_software_upgrade_settings_unavailable); } /*********************** APPLICATION VERSION ***************************/ /** Check version number */ PackageInfo pInfo; String version = null; try { pInfo = ctx.getPackageManager().getPackageInfo( ctx.getPackageName(), 0); version = pInfo.versionName; } catch (NameNotFoundException e) { e.printStackTrace(); } if (version == null) { button_APPVersion .setText(R.string.tv_menu_software_upgrade_settings_unavailable); } else { button_APPVersion.setText(version); } } } @Override public void onClick(View v) { } @Override public void fillDialog() { View view = DialogManager.dialogCreator.fillDialogWithContents( contentList, contentListIDs, titleIDs, null, this, null);// , // pictureBackgroundID); 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_product_info_settings); // Board Support Packages****************************************** ArrayList<Integer> 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_software_upgrade_settings_bsp); list.add(TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_BSP); contentListIDs.add(list); // Hardware Abstraction Layer****************************************** 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_software_upgrade_settings_hal); list.add(TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_HAL); contentListIDs.add(list); // Middleware****************************************** 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_software_upgrade_settings_mwl); list.add(TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_MWL); contentListIDs.add(list); // Middleware Abstraction // Layer****************************************** 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_software_upgrade_settings_mal); list.add(TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_MAL); contentListIDs.add(list); // Application version****************************************** 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_software_upgrade_settings_software_version); list.add(TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_APP_VERSION); contentListIDs.add(list); // Software bundle version****************************************** 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_software_upgrade_settings_svn_version); list.add(TV_MENU_PRODUCT_INFO_SETTINGS_SOFTWARE_VERSION_BUNDLE_VERSION); contentListIDs.add(list); } }