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