1c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood/*
28ab8b411b81e4581060a31a97a0cb204a803b2e5Mike Lockwood * Copyright (C) 2008 The Android Open Source Project
3c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood *
4c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * use this file except in compliance with the License. You may obtain a copy of
6c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * the License at
7c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood *
8c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * http://www.apache.org/licenses/LICENSE-2.0
9c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood *
10c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * Unless required by applicable law or agreed to in writing, software
11c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * License for the specific language governing permissions and limitations under
14c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * the License.
15c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood */
16191d898468d2f4910a684f429bec518320843744Mike Lockwoodpackage com.android.locationtracker.data;
17c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood
18c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwoodimport android.app.ListActivity;
19c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwoodimport android.content.Context;
20c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwoodimport android.database.Cursor;
21c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwoodimport android.view.View;
22c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwoodimport android.widget.ResourceCursorAdapter;
23c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwoodimport android.widget.TextView;
24c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood
25191d898468d2f4910a684f429bec518320843744Mike Lockwoodimport com.android.locationtracker.R;
26c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood
27c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood/**
28c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood * Used to bind Tracker data to a list view UI
29c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood */
30c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwoodpublic class TrackerListHelper extends TrackerDataHelper {
31c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood
32c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood    private ListActivity mActivity;
33c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood
34c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood    // sort entries by most recent first
35c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood    private static final String SORT_ORDER = TrackerEntry.ID_COL + " DESC";
36c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood
37c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood    public TrackerListHelper(ListActivity activity) {
38c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood        super(activity, TrackerDataHelper.CSV_FORMATTER);
39c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood        mActivity = activity;
40c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood    }
41c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood
42c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood    /**
43c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood     * Helper method for binding the list activities UI to the tracker data
44c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood     * Tracker data will be sorted in most-recent first order
45c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood     * Will enable automatic UI changes as tracker data changes
46c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood     *
47c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood     * @param layout - layout to populate data
48c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood     */
49c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood    public void bindListUI(int layout) {
50c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood        Cursor cursor = mActivity.managedQuery(TrackerProvider.CONTENT_URI,
51c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood                TrackerEntry.ATTRIBUTES, null, null, SORT_ORDER);
52c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood        // Used to map tracker entries from the database to views
53c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood        TrackerAdapter adapter = new TrackerAdapter(mActivity, layout, cursor);
54c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood        mActivity.setListAdapter(adapter);
55c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood        cursor.setNotificationUri(mActivity.getContentResolver(),
56c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood                TrackerProvider.CONTENT_URI);
57c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood
58c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood    }
59c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood
60c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood    private class TrackerAdapter extends ResourceCursorAdapter {
61c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood
62c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood        public TrackerAdapter(Context context, int layout, Cursor c) {
63c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood            super(context, layout, c);
64c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood        }
65c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood
66c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood        @Override
67c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood        public void bindView(View view, Context context, Cursor cursor) {
68c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood            final TextView v = (TextView) view
69c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood                    .findViewById(R.id.entrylist_item);
70c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood            String rowText = mFormatter.getOutput(TrackerEntry
71c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood                    .createEntry(cursor));
72c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood            v.setText(rowText);
73c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood        }
74c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood    }
75c9d3be3f0e10b62fa6d4899ce827866299d41783Mike Lockwood}
76