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

📄 contactlist.java

📁 Android平台上即时通讯聊天工具源代码。 支持手机聊天。
💻 JAVA
字号:
/* * 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.engine;import java.util.ArrayList;import java.util.Collection;import java.util.HashMap;public class ContactList extends ImEntity {    protected Address mAddress;    protected String mName;    protected boolean mDefault;    protected ContactListManager mManager;    private HashMap<String, Contact> mContactsCache;    public ContactList(Address address, String name, boolean isDefault,            Collection<Contact> contacts, ContactListManager manager) {        mAddress = address;        mDefault = isDefault;        mName = name;        mManager = manager;        mContactsCache = new HashMap<String, Contact>();        if (contacts != null) {            for (Contact c : contacts) {                mContactsCache.put(manager.normalizeAddress(c.getAddress().getFullName()), c);            }        }    }    @Override    public Address getAddress() {        return mAddress;    }    public String getName() {        return mName;    }    public void setName(String name) {        if (null == name) {            throw new NullPointerException();        }        mManager.setListNameAsync(name, this);    }    public void setDefault(boolean isDefault) {        this.mDefault = isDefault;    }    public boolean isDefault() {        return mDefault;    }    /**     * Add a contact to the list. The contact is specified by its address     * string.     *     * @param address     *            the address string specifies the contact.     * @throws IllegalArgumentException     *             if the address is invalid.     * @throws NullPointerException     *             if the address string is null     * @throws ImException     *             if the contact is not allowed to be added     */    public void addContact(String address) throws ImException {        address = mManager.normalizeAddress(address);        if (null == address) {            throw new NullPointerException();        }        if (mManager.isBlocked(address)) {            throw new ImException(ImErrorInfo.CANT_ADD_BLOCKED_CONTACT,                    "Contact has been blocked");        }        if(containsContact(address)){            throw new ImException(ImErrorInfo.CONTACT_EXISTS_IN_LIST,                    "Contact already exists in the list");        }        mManager.addContactToListAsync(address, this);    }    /**     * Remove a contact from the list. If the contact is not in the list,     * nothing will happen. Otherwise, the contact will be removed from     * the list on the server asynchronously.     *     * @param address     *            the address of the contact to be removed from the list     * @throws NullPointerException     *             If the address is null     */    public void removeContact(Address address) throws ImException {        if(address == null) {            throw new NullPointerException();        }        Contact c = getContact(address);        if(c != null) {            removeContact(c);        }    }    /**     * Remove a contact from the list. If the contact is not in the list,     * nothing will happen. Otherwise, the contact will be removed from     * the list on the server asynchronously.     *     * @param contact     *            the contact to be removed from the list     * @throws NullPointerException     *             If the contact is null     */    public void removeContact(Contact contact) throws ImException {        if(contact == null) {            throw new NullPointerException();        }        if(containsContact(contact)) {            mManager.removeContactFromListAsync(contact, this);        }    }    public synchronized Contact getContact(Address address) {        return mContactsCache.get(mManager.normalizeAddress(address.getFullName()));    }    public synchronized Contact getContact(String address) {        return mContactsCache.get(mManager.normalizeAddress(address));    }    public synchronized int getContactsCount() {        return mContactsCache.size();    }    public synchronized Collection<Contact> getContacts() {        return new ArrayList<Contact>(mContactsCache.values());    }    public synchronized boolean containsContact(String address) {        return mContactsCache.containsKey(mManager.normalizeAddress(address));    }    public synchronized boolean containsContact(Address address) {        return address == null ? false                : mContactsCache.containsKey(mManager.normalizeAddress(address.getFullName()));    }    public synchronized boolean containsContact(Contact c) {        return c == null ? false                : mContactsCache.containsKey(mManager.normalizeAddress(c.getAddress().getFullName()));    }    protected void insertToCache(Contact contact) {        mContactsCache.put(mManager.normalizeAddress(contact.getAddress().getFullName()), contact);    }    protected void removeFromCache(Contact contact) {        mContactsCache.remove(mManager.normalizeAddress(contact.getAddress().getFullName()));    }}

⌨️ 快捷键说明

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