172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/* 272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * you may not use this file except in compliance with the License. 672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * You may obtain a copy of the License at 772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 1072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * See the License for the specific language governing permissions and 1472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * limitations under the License. 1572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 1672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 1772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpackage com.android.mms.ui; 1872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 1972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.content.Context; 2072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.text.ClipboardManager; 2172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.util.AttributeSet; 2272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.KeyEvent; 2372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.widget.ListView; 2472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 2572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpublic final class MessageListView extends ListView { 260082aabf126e2237756a3de64965096d1a23c92cTom Taylor private OnSizeChangedListener mOnSizeChangedListener; 270082aabf126e2237756a3de64965096d1a23c92cTom Taylor 2872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public MessageListView(Context context) { 2972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project super(context); 3072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 31f092ccefb6a6b1289a111ea147cd7ace22d5ad5dTom Taylor 3272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public MessageListView(Context context, AttributeSet attrs) { 3372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project super(context, attrs); 3472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 35f092ccefb6a6b1289a111ea147cd7ace22d5ad5dTom Taylor 3672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project @Override 3772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public boolean onKeyShortcut(int keyCode, KeyEvent event) { 3872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project switch (keyCode) { 3972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project case KeyEvent.KEYCODE_C: 4072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project MessageListItem view = (MessageListItem)getSelectedView(); 4172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (view == null) { 4272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project break; 4372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 4472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project MessageItem item = view.getMessageItem(); 4572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (item != null && item.isSms()) { 4672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project ClipboardManager clip = 4772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project (ClipboardManager)getContext().getSystemService(Context.CLIPBOARD_SERVICE); 4872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project clip.setText(item.mBody); 4972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return true; 5072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 5172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project break; 5272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 5372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 5472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return super.onKeyShortcut(keyCode, event); 5572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 560082aabf126e2237756a3de64965096d1a23c92cTom Taylor 570082aabf126e2237756a3de64965096d1a23c92cTom Taylor @Override 580082aabf126e2237756a3de64965096d1a23c92cTom Taylor protected void onSizeChanged(int w, int h, int oldw, int oldh) { 590082aabf126e2237756a3de64965096d1a23c92cTom Taylor super.onSizeChanged(w, h, oldw, oldh); 600082aabf126e2237756a3de64965096d1a23c92cTom Taylor 610082aabf126e2237756a3de64965096d1a23c92cTom Taylor if (mOnSizeChangedListener != null) { 620082aabf126e2237756a3de64965096d1a23c92cTom Taylor mOnSizeChangedListener.onSizeChanged(w, h, oldw, oldh); 630082aabf126e2237756a3de64965096d1a23c92cTom Taylor } 640082aabf126e2237756a3de64965096d1a23c92cTom Taylor } 650082aabf126e2237756a3de64965096d1a23c92cTom Taylor 660082aabf126e2237756a3de64965096d1a23c92cTom Taylor /** 670082aabf126e2237756a3de64965096d1a23c92cTom Taylor * Set the listener which will be triggered when the size of 680082aabf126e2237756a3de64965096d1a23c92cTom Taylor * the view is changed. 690082aabf126e2237756a3de64965096d1a23c92cTom Taylor */ 700082aabf126e2237756a3de64965096d1a23c92cTom Taylor void setOnSizeChangedListener(OnSizeChangedListener l) { 710082aabf126e2237756a3de64965096d1a23c92cTom Taylor mOnSizeChangedListener = l; 720082aabf126e2237756a3de64965096d1a23c92cTom Taylor } 730082aabf126e2237756a3de64965096d1a23c92cTom Taylor 740082aabf126e2237756a3de64965096d1a23c92cTom Taylor public interface OnSizeChangedListener { 750082aabf126e2237756a3de64965096d1a23c92cTom Taylor void onSizeChanged(int width, int height, int oldWidth, int oldHeight); 760082aabf126e2237756a3de64965096d1a23c92cTom Taylor } 7772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project} 7872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 79