⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 contactlistactivity.java

📁 Android平台上即时通讯聊天工具源代码。 支持手机聊天。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (C) 2007-2008 Esmertec AG. * Copyright (C) 2007-2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.android.im.app;import com.android.im.IImConnection;import com.android.im.R;import com.android.im.plugin.BrandingResourceIDs;import com.android.im.service.ImServiceConstants;import android.app.Activity;import android.content.ContentResolver;import android.content.ContentUris;import android.content.Intent;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.os.Message;import android.os.RemoteException;import android.provider.Im;import android.util.Log;import android.view.ContextMenu;import android.view.KeyEvent;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.view.View;import android.view.Window;import android.view.ContextMenu.ContextMenuInfo;import android.widget.AdapterView;import android.widget.AdapterView.AdapterContextMenuInfo;import android.widget.ExpandableListView.ExpandableListContextMenuInfo;import java.util.Observable;import java.util.Observer;public class ContactListActivity extends Activity implements View.OnCreateContextMenuListener{    private static final int MENU_START_CONVERSATION = Menu.FIRST;    private static final int MENU_VIEW_PROFILE       = Menu.FIRST + 1;    private static final int MENU_BLOCK_CONTACT      = Menu.FIRST + 2;    private static final int MENU_DELETE_CONTACT     = Menu.FIRST + 3;    private static final int MENU_END_CONVERSATION   = Menu.FIRST + 4;    private static final String FILTER_STATE_KEY = "Filtering";    ImApp mApp;    long mProviderId;    long mAccountId;    IImConnection mConn;    ContactListView mContactListView;    ContactListFilterView mFilterView;    SimpleAlertHandler mHandler;    ContextMenuHandler mContextMenuHandler;    boolean mIsFiltering;    Im.ProviderSettings.QueryMap mSettingMap;    boolean mDestroyed;    @Override    protected void onCreate(Bundle icicle) {        super.onCreate(icicle);        getWindow().requestFeature(Window.FEATURE_LEFT_ICON);        LayoutInflater inflate = getLayoutInflater();        mContactListView = (ContactListView) inflate.inflate(                R.layout.contact_list_view, null);        setContentView(mContactListView);        Intent intent = getIntent();        mAccountId = intent.getLongExtra(ImServiceConstants.EXTRA_INTENT_ACCOUNT_ID, -1);        if (mAccountId == -1) {            finish();            return;        }        mApp = ImApp.getApplication(this);        ContentResolver cr = getContentResolver();        Cursor c = cr.query(ContentUris.withAppendedId(Im.Account.CONTENT_URI, mAccountId),                null, null, null, null);        if (c == null) {            finish();            return;        }        if (!c.moveToFirst()) {            c.close();            finish();            return;        }        mProviderId = c.getLong(c.getColumnIndexOrThrow(Im.Account.PROVIDER));        mHandler = new MyHandler(this);        String username = c.getString(c.getColumnIndexOrThrow(Im.Account.USERNAME));        BrandingResources brandingRes = mApp.getBrandingResource(mProviderId);        setTitle(brandingRes.getString(BrandingResourceIDs.STRING_BUDDY_LIST_TITLE, username));        getWindow().setFeatureDrawable(Window.FEATURE_LEFT_ICON,                brandingRes.getDrawable(BrandingResourceIDs.DRAWABLE_LOGO));        mSettingMap = new Im.ProviderSettings.QueryMap(getContentResolver(), mProviderId, true, null);        mApp.callWhenServiceConnected(mHandler, new Runnable(){            public void run() {                if (!mDestroyed) {                    mApp.dismissNotifications(mProviderId);                    mConn = mApp.getConnection(mProviderId);                    mContactListView.setConnection(mConn);                    mContactListView.setHideOfflineContacts(mSettingMap.getHideOfflineContacts());                }            }        });        mContextMenuHandler = new ContextMenuHandler();        mContactListView.getListView().setOnCreateContextMenuListener(this);        mSettingMap.addObserver(new Observer() {            public void update(Observable observed, Object updateData) {                if (!mDestroyed) {                    mContactListView.setHideOfflineContacts(mSettingMap.getHideOfflineContacts());                }            }        });    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        MenuInflater inflater = getMenuInflater();        inflater.inflate(R.menu.contact_list_menu, menu);        BrandingResources brandingRes = mApp.getBrandingResource(mProviderId);        menu.findItem(R.id.menu_invite_user).setTitle(            brandingRes.getString(BrandingResourceIDs.STRING_MENU_ADD_CONTACT));        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {            case R.id.menu_invite_user:                Intent i = new Intent(ContactListActivity.this, AddContactActivity.class);                i.putExtra(ImServiceConstants.EXTRA_INTENT_PROVIDER_ID, mProviderId);                i.putExtra(ImServiceConstants.EXTRA_INTENT_LIST_NAME,                        mContactListView.getSelectedContactList());                startActivity(i);                return true;            case R.id.menu_blocked_contacts:                Uri.Builder builder = Im.BlockedList.CONTENT_URI.buildUpon();                ContentUris.appendId(builder, mProviderId);                ContentUris.appendId(builder, mAccountId);                startActivity(new Intent(Intent.ACTION_VIEW, builder.build()));                return true;            case R.id.menu_view_accounts:                Intent intent = new Intent(this, ChooseAccountActivity.class);                startActivity(intent);                finish();                return true;            case R.id.menu_settings:                intent = new Intent(this, SettingActivity.class);                intent.putExtra(ImServiceConstants.EXTRA_INTENT_PROVIDER_ID, mProviderId);                startActivity(intent);                return true;            case R.id.menu_sign_out:                try {                    mConn.logout();                } catch (RemoteException e) {                }                return true;        }        return super.onOptionsItemSelected(item);    }    @Override    protected void onSaveInstanceState(Bundle outState) {        super.onSaveInstanceState(outState);        outState.putBoolean(FILTER_STATE_KEY, mIsFiltering);    }    @Override    protected void onRestoreInstanceState(Bundle savedInstanceState) {        boolean isFiltering = savedInstanceState.getBoolean(FILTER_STATE_KEY);        if (isFiltering) {            showFilterView();        }        super.onRestoreInstanceState(savedInstanceState);    }    @Override    public boolean dispatchKeyEvent(KeyEvent event) {        int keyCode = event.getKeyCode();        boolean handled = false;        if (mIsFiltering) {            handled = mFilterView.dispatchKeyEvent(event);            if (!handled && (KeyEvent.KEYCODE_BACK == keyCode)                    && (KeyEvent.ACTION_DOWN == event.getAction())) {                showContactListView();                handled = true;            }        } else {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -