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