| /* |
| * Copyright (c) 2008-2009, Motorola, Inc. |
| * |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions are met: |
| * |
| * - Redistributions of source code must retain the above copyright notice, |
| * this list of conditions and the following disclaimer. |
| * |
| * - Redistributions in binary form must reproduce the above copyright notice, |
| * this list of conditions and the following disclaimer in the documentation |
| * and/or other materials provided with the distribution. |
| * |
| * - Neither the name of the Motorola, Inc. nor the names of its contributors |
| * may be used to endorse or promote products derived from this software |
| * without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
| * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| * POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| package com.android.bluetooth.opp; |
| |
| import com.android.bluetooth.R; |
| |
| import android.bluetooth.BluetoothAdapter; |
| import android.bluetooth.BluetoothDevice; |
| import android.content.Context; |
| import android.content.res.Resources; |
| import android.database.Cursor; |
| import android.text.format.DateUtils; |
| import android.text.format.DateFormat; |
| import android.text.format.Formatter; |
| import android.view.View; |
| import android.widget.ImageView; |
| import android.widget.ResourceCursorAdapter; |
| import android.widget.TextView; |
| |
| import java.util.Date; |
| |
| /** |
| * This class is used to represent the data for the transfer history list box. |
| * The only real work done by this class is to construct a custom view for the |
| * line items. |
| */ |
| public class BluetoothOppTransferAdapter extends ResourceCursorAdapter { |
| private Context mContext; |
| |
| public BluetoothOppTransferAdapter(Context context, int layout, Cursor c) { |
| super(context, layout, c); |
| mContext = context; |
| } |
| |
| @Override |
| public void bindView(View view, Context context, Cursor cursor) { |
| Resources r = context.getResources(); |
| |
| // Retrieve the icon for this transfer |
| ImageView iv = (ImageView)view.findViewById(R.id.transfer_icon); |
| int status = cursor.getInt(cursor.getColumnIndexOrThrow(BluetoothShare.STATUS)); |
| int dir = cursor.getInt(cursor.getColumnIndexOrThrow(BluetoothShare.DIRECTION)); |
| if (BluetoothShare.isStatusError(status)) { |
| iv.setImageResource(android.R.drawable.stat_notify_error); |
| } else { |
| if (dir == BluetoothShare.DIRECTION_OUTBOUND) { |
| iv.setImageResource(android.R.drawable.stat_sys_upload_done); |
| } else { |
| iv.setImageResource(android.R.drawable.stat_sys_download_done); |
| } |
| } |
| |
| // Set title |
| TextView tv = (TextView)view.findViewById(R.id.transfer_title); |
| String title = cursor.getString( |
| cursor.getColumnIndexOrThrow(BluetoothShare.FILENAME_HINT)); |
| if (title == null) { |
| title = mContext.getString(R.string.unknown_file); |
| } |
| tv.setText(title); |
| |
| // target device |
| tv = (TextView)view.findViewById(R.id.targetdevice); |
| BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); |
| int destinationColumnId = cursor.getColumnIndexOrThrow(BluetoothShare.DESTINATION); |
| BluetoothDevice remoteDevice = adapter.getRemoteDevice(cursor |
| .getString(destinationColumnId)); |
| String deviceName = BluetoothOppManager.getInstance(context).getDeviceName(remoteDevice); |
| tv.setText(deviceName); |
| |
| // complete text and complete date |
| long totalBytes = cursor.getLong(cursor.getColumnIndexOrThrow(BluetoothShare.TOTAL_BYTES)); |
| if (BluetoothShare.isStatusCompleted(status)) { |
| tv = (TextView)view.findViewById(R.id.complete_text); |
| tv.setVisibility(View.VISIBLE); |
| if (BluetoothShare.isStatusError(status)) { |
| tv.setText(BluetoothOppUtility.getStatusDescription(mContext, status, deviceName)); |
| } else { |
| String completeText; |
| if (dir == BluetoothShare.DIRECTION_INBOUND) { |
| completeText = r.getString(R.string.download_success, Formatter.formatFileSize( |
| mContext, totalBytes)); |
| } else { |
| completeText = r.getString(R.string.upload_success, Formatter.formatFileSize( |
| mContext, totalBytes)); |
| } |
| tv.setText(completeText); |
| } |
| |
| int dateColumnId = cursor.getColumnIndexOrThrow(BluetoothShare.TIMESTAMP); |
| long time = cursor.getLong(dateColumnId); |
| Date d = new Date(time); |
| CharSequence str = DateUtils.isToday(time) ? DateFormat.getTimeFormat(mContext).format( |
| d) : DateFormat.getDateFormat(mContext).format(d); |
| tv = (TextView)view.findViewById(R.id.complete_date); |
| tv.setVisibility(View.VISIBLE); |
| tv.setText(str); |
| } |
| } |
| } |