152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project/* //device/apps/Notes/NotesList.java 252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project** 352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project** Copyright 2006, The Android Open Source Project 452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project** 552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License"); 652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project** you may not use this file except in compliance with the License. 752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project** You may obtain a copy of the License at 852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project** 952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project** http://www.apache.org/licenses/LICENSE-2.0 1052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project** 1152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project** Unless required by applicable law or agreed to in writing, software 1252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS, 1352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project** See the License for the specific language governing permissions and 1552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project** limitations under the License. 1652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project*/ 1752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectpackage com.android.development; 1852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 1952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport java.util.ArrayList; 2052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 2152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.content.Intent; 2252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.app.Activity; 2352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.database.Cursor; 2452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.graphics.Typeface; 2552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.widget.LinearLayout; 2652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.widget.ScrollView; 2752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.os.Bundle; 2852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.view.Menu; 2952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.view.MenuItem; 3052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.view.ViewGroup; 3152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.widget.TextView; 3252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 3352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectpublic class Details extends Activity 3452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project{ 3552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public void onCreate(Bundle icicle) 3652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project { 3752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project super.onCreate(icicle); 3852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 3952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project Intent intent = getIntent(); 4052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 4152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project String title = intent.getStringExtra("title"); 4252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project if (title == null) { 4352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project title = "Details"; 4452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 4552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project setTitle(title); 4652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 4752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mScrollView = new ScrollView(this); 4852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project setContentView(mScrollView); 4952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mScrollView.setFocusable(true); 5052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 5152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mData = (ArrayList<ColumnData>)getIntent().getExtra("data"); 5252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project addDataViews(); 5352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 5452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 5552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public void onResume() 5652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project { 5752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project super.onResume(); 5852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 5952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 6052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public boolean onCreateOptionsMenu(Menu menu) 6152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project { 6252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project super.onCreateOptionsMenu(menu); 6352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project menu.add(0, 0, 0, "Requery").setOnMenuItemClickListener(mRequery); 6452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project menu.add(0, 0, 0, "Print to stdout").setOnMenuItemClickListener(mPrintToStdout); 6552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project return true; 6652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 6752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 6852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project void addDataViews() 6952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project { 7052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project int oldScroll = 0; 7152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 7252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project if (mLinearLayout != null) { 7352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mScrollView.removeView(mLinearLayout); 7452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 7552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mLinearLayout = new LinearLayout(this); 7652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mScrollView.addView(mLinearLayout, new ViewGroup.LayoutParams( 7774192eafec8408417114d77784cd35eda5df573cRomain Guy ViewGroup.LayoutParams.MATCH_PARENT, 7874192eafec8408417114d77784cd35eda5df573cRomain Guy ViewGroup.LayoutParams.MATCH_PARENT)); 7952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mLinearLayout.setOrientation(LinearLayout.VERTICAL); 8052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 8152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // Here in onStart, we're given data. We use that because some 8252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // data that we show is transient and can't be retrieved from a url. 8352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // We'll try to use that in requery 8452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project int count = mData.size(); 8552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project for (int i=0; i<count; i++) { 8652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project ColumnData cd = mData.get(i); 8752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project TextView label = makeView(cd.key, true, 12); 8852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project TextView contents = makeView(cd.value, false, 12); 8952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project contents.setPadding(3, 0, 0, i==count-1?0:3); 9052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mLinearLayout.addView(label, lazy()); 9152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mLinearLayout.addView(contents, lazy()); 9252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 9352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 9452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 9552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project TextView makeView(String str, boolean bold, int fontSize) 9652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project { 9752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project if (str == null) { 9852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project str = "(null)"; 9952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 10052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project TextView v = new TextView(this); 10152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project v.setText(str); 10252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project v.setTextSize(fontSize); 10352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project if (bold) { 10452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project v.setTypeface(Typeface.DEFAULT_BOLD); 10552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 10652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project return v; 10752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 10852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 10952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project LinearLayout.LayoutParams lazy() 11052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project { 11174192eafec8408417114d77784cd35eda5df573cRomain Guy return new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 11252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project ViewGroup.LayoutParams.WRAP_CONTENT, 0); 11352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 11452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 11552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project MenuItem.OnMenuItemClickListener mRequery = new MenuItem.OnMenuItemClickListener() { 11652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public boolean onMenuItemClick(MenuItem item) { 11752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project Intent intent = getIntent(); 11852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project Cursor c = getContentResolver().query(intent.getData(), null, null, null, null); 11952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project if (c != null && c.moveToNext()) { 12052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mData.clear(); 12152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project String[] columnNames = c.getColumnNames(); 12252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project for (int i=0; i<columnNames.length; i++) { 12352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project String str = c.getString(i); 12452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project ColumnData cd = new ColumnData(columnNames[i], str); 12552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mData.add(cd); 12652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 12752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project addDataViews(); 12852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } else { 12952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project TextView error = new TextView(Details.this); 13052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project error.setText("Showing old data.\nURL couldn't be requeried:\n" 13152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project + intent.getData()); 13252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project error.setTextColor(0xffff0000); 13352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project error.setTextSize(11); 13452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mLinearLayout.addView(error, 0, lazy()); 13552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 13652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project return true; 13752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 13852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project }; 13952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 14052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project MenuItem.OnMenuItemClickListener mPrintToStdout = new MenuItem.OnMenuItemClickListener() { 14152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public boolean onMenuItemClick(MenuItem item) { 14252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project System.out.println("=== begin data ==="); 14352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project int count = mData.size(); 14452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project for (int i=0; i<count; i++) { 14552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project ColumnData cd = mData.get(i); 14652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project System.out.println(" " + cd.key + ": " + cd.value); 14752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 14852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project System.out.println("=== end data ==="); 14952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project return true; 15052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 15152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project }; 15252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 15352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project LinearLayout mLinearLayout; 15452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project ScrollView mScrollView; 15552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project ArrayList<ColumnData> mData; 15652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project} 157