/config/src/com/google/marvin/config/InstallerActivity.java

http://eyes-free.googlecode.com/ · Java · 99 lines · 69 code · 19 blank · 11 comment · 1 complexity · 2171dd3607f776f8186cf5f5c272573c MD5 · raw file

  1. package com.google.marvin.config;
  2. import org.w3c.dom.Document;
  3. import org.w3c.dom.NamedNodeMap;
  4. import org.w3c.dom.NodeList;
  5. import org.xml.sax.SAXException;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.net.URL;
  9. import java.net.URLConnection;
  10. import java.util.ArrayList;
  11. import javax.xml.parsers.DocumentBuilder;
  12. import javax.xml.parsers.DocumentBuilderFactory;
  13. import javax.xml.parsers.FactoryConfigurationError;
  14. import javax.xml.parsers.ParserConfigurationException;
  15. import android.app.Activity;
  16. import android.app.ProgressDialog;
  17. import android.os.Bundle;
  18. /**
  19. * InstallerActivity that displays the list of installable apps from the
  20. * Eyes-Free project.
  21. *
  22. * @author clchen@google.com (Charles L. Chen)
  23. */
  24. public class InstallerActivity extends Activity {
  25. private InstallerActivity self;
  26. private AppListView appList;
  27. private ProgressDialog loadingDialog = null;
  28. /** Called when the activity is first created. */
  29. @Override
  30. public void onCreate(Bundle savedInstanceState) {
  31. super.onCreate(savedInstanceState);
  32. self = this;
  33. appList = new AppListView(this);
  34. setContentView(appList);
  35. getAppsList();
  36. }
  37. private void getAppsList() {
  38. loadingDialog = ProgressDialog.show(self, "Loading", "Please wait.", true);
  39. class appListLoader implements Runnable {
  40. public void run() {
  41. try {
  42. URLConnection cn;
  43. URL url = new URL("http://eyes-free.googlecode.com/svn/trunk/config/assets/applist.xml");
  44. cn = url.openConnection();
  45. cn.connect();
  46. InputStream stream = cn.getInputStream();
  47. DocumentBuilder docBuild = DocumentBuilderFactory.newInstance().newDocumentBuilder();
  48. Document appListDoc = docBuild.parse(stream);
  49. NodeList appNodes = appListDoc.getElementsByTagName("app");
  50. ArrayList<AppDesc> appDescs = new ArrayList<AppDesc>();
  51. for (int i = 0; i < appNodes.getLength(); i++) {
  52. NamedNodeMap attribs = appNodes.item(i).getAttributes();
  53. String packageName = attribs.getNamedItem("packageName").getNodeValue();
  54. String title = attribs.getNamedItem("title").getNodeValue();
  55. String description = attribs.getNamedItem("desc").getNodeValue();
  56. appDescs.add(new AppDesc(packageName, title, description));
  57. }
  58. appList.updateApps(appDescs);
  59. appList.postInvalidate();
  60. } catch (IOException e) {
  61. // TODO Auto-generated catch block
  62. e.printStackTrace();
  63. } catch (SAXException e) {
  64. // TODO Auto-generated catch block
  65. e.printStackTrace();
  66. } catch (ParserConfigurationException e) {
  67. // TODO Auto-generated catch block
  68. e.printStackTrace();
  69. } catch (FactoryConfigurationError e) {
  70. // TODO Auto-generated catch block
  71. e.printStackTrace();
  72. } finally {
  73. loadingDialog.dismiss();
  74. }
  75. }
  76. }
  77. Thread loadThread = (new Thread(new appListLoader()));
  78. loadThread.start();
  79. }
  80. }