172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/* 272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2008 Esmertec AG. 372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * you may not use this file except in compliance with the License. 772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * You may obtain a copy of the License at 872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 1072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 1172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * See the License for the specific language governing permissions and 1572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * limitations under the License. 1672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 1772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 1872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpackage com.android.mms.ui; 1972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 2072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.content.Context; 2172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.database.Cursor; 2272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.util.Log; 2372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.LayoutInflater; 2472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.View; 2572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.ViewGroup; 261d98ae0b203e01034ddead4214d1520ce863a23bFicus Kirkpatrickimport android.widget.AbsListView; 2772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.widget.CursorAdapter; 2872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 29d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.R; 30d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.data.Conversation; 31d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chen 3272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/** 3372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * The back-end data adapter for ConversationList. 3472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 3572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project//TODO: This should be public class ConversationListAdapter extends ArrayAdapter<Conversation> 361d98ae0b203e01034ddead4214d1520ce863a23bFicus Kirkpatrickpublic class ConversationListAdapter extends CursorAdapter implements AbsListView.RecyclerListener { 3772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String TAG = "ConversationListAdapter"; 3872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final boolean LOCAL_LOGV = false; 3972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 4072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private final LayoutInflater mFactory; 4167b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor private OnContentChangedListener mOnContentChangedListener; 4272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 431d98ae0b203e01034ddead4214d1520ce863a23bFicus Kirkpatrick public ConversationListAdapter(Context context, Cursor cursor) { 4467b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor super(context, cursor, false /* auto-requery */); 4572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mFactory = LayoutInflater.from(context); 4672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 4772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 4872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project @Override 4972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void bindView(View view, Context context, Cursor cursor) { 505c692bf6ab8df5145f377a2adb769d085500d91aTom Taylor if (!(view instanceof ConversationListItem)) { 5170c73e05a792832aa28da751cdaf3fa83a7b8113Ficus Kirkpatrick Log.e(TAG, "Unexpected bound view: " + view); 5270c73e05a792832aa28da751cdaf3fa83a7b8113Ficus Kirkpatrick return; 5370c73e05a792832aa28da751cdaf3fa83a7b8113Ficus Kirkpatrick } 5467b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor 555c692bf6ab8df5145f377a2adb769d085500d91aTom Taylor ConversationListItem headerView = (ConversationListItem) view; 5670c73e05a792832aa28da751cdaf3fa83a7b8113Ficus Kirkpatrick Conversation conv = Conversation.from(context, cursor); 57f9d706cfd0c46a74ba3d79e5543f13a225328d30Tom Taylor headerView.bind(context, conv); 5872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 5972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 601d98ae0b203e01034ddead4214d1520ce863a23bFicus Kirkpatrick public void onMovedToScrapHeap(View view) { 615c692bf6ab8df5145f377a2adb769d085500d91aTom Taylor ConversationListItem headerView = (ConversationListItem)view; 621d98ae0b203e01034ddead4214d1520ce863a23bFicus Kirkpatrick headerView.unbind(); 6372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 6472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 6572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project @Override 6672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public View newView(Context context, Cursor cursor, ViewGroup parent) { 6772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) Log.v(TAG, "inflating new view"); 685c692bf6ab8df5145f377a2adb769d085500d91aTom Taylor return mFactory.inflate(R.layout.conversation_list_item, parent, false); 6972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 7067b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor 7167b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor public interface OnContentChangedListener { 7267b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor void onContentChanged(ConversationListAdapter adapter); 7367b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor } 7467b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor 7567b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor public void setOnContentChangedListener(OnContentChangedListener l) { 7667b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor mOnContentChangedListener = l; 7767b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor } 7867b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor 7967b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor @Override 8067b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor protected void onContentChanged() { 8167b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor if (mCursor != null && !mCursor.isClosed()) { 8267b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor if (mOnContentChangedListener != null) { 8367b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor mOnContentChangedListener.onContentChanged(this); 8467b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor } 8567b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor } 8667b794480aaad0e1958df2988671b78ea03b76e1Tom Taylor } 87f9d706cfd0c46a74ba3d79e5543f13a225328d30Tom Taylor 88f9d706cfd0c46a74ba3d79e5543f13a225328d30Tom Taylor public void uncheckAll() { 89f9d706cfd0c46a74ba3d79e5543f13a225328d30Tom Taylor int count = getCount(); 90f9d706cfd0c46a74ba3d79e5543f13a225328d30Tom Taylor for (int i = 0; i < count; i++) { 91f9d706cfd0c46a74ba3d79e5543f13a225328d30Tom Taylor Cursor cursor = (Cursor)getItem(i); 92f9d706cfd0c46a74ba3d79e5543f13a225328d30Tom Taylor Conversation conv = Conversation.from(mContext, cursor); 93f9d706cfd0c46a74ba3d79e5543f13a225328d30Tom Taylor conv.setIsChecked(false); 94f9d706cfd0c46a74ba3d79e5543f13a225328d30Tom Taylor } 95f9d706cfd0c46a74ba3d79e5543f13a225328d30Tom Taylor } 9672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project} 97