chatgroup.java

来自「Android平台上即时通讯聊天工具源代码。 支持手机聊天。」· Java 代码 · 共 137 行

JAVA
137
字号
/* * Copyright (C) 2007 Esmertec AG. * Copyright (C) 2007 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.Collection;import java.util.Collections;import java.util.List;import java.util.Vector;import java.util.concurrent.CopyOnWriteArrayList;public class ChatGroup extends ImEntity{    private ChatGroupManager mManager;    private Address mAddress;    private String mName;    private Vector<Contact> mMembers;    private CopyOnWriteArrayList<GroupMemberListener> mMemberListeners;    public ChatGroup(Address address, String name, ChatGroupManager manager) {        this(address, name, null, manager);    }    public ChatGroup(Address address, String name, Collection<Contact> members,            ChatGroupManager manager) {        mAddress = address;        mName = name;        mManager = manager;        mMembers = new Vector<Contact>();        if(members != null) {            mMembers.addAll(members);        }        mMemberListeners = new CopyOnWriteArrayList<GroupMemberListener>();    }    @Override    public Address getAddress() {        return mAddress;    }    /**     * Gets the name of the group.     *     * @return the name of the group.     */    public String getName() {        return mName;    }    public void addMemberListener(GroupMemberListener listener) {        mMemberListeners.add(listener);    }    public void removeMemberListener(GroupMemberListener listener) {        mMemberListeners.remove(listener);    }    /**     * Gets an unmodifiable collection of the members of the group.     *     * @return an unmodifiable collection of the members of the group.     */    public List<Contact> getMembers(){        return Collections.unmodifiableList(mMembers);    }    /**     * Adds a member to this group.     * TODO: more docs on async callbacks.     *     * @param contact the member to add.     */    public synchronized void addMemberAsync(Contact contact) {        mManager.addGroupMemberAsync(this, contact);    }    /**     * Removes a member from this group.     * TODO: more docs on async callbacks.     *     * @param contact the member to remove.     */    public synchronized void removeMemberAsync(Contact contact) {        mManager.removeGroupMemberAsync(this, contact);    }    /**     * Notifies that a contact has joined into this group.     *     * @param contact the contact who has joined into the group.     */    void notifyMemberJoined(Contact contact) {        mMembers.add(contact);        for(GroupMemberListener listener : mMemberListeners) {            listener.onMemberJoined(this, contact);        }    }    /**     * Notifies that a contact has left this group.     *     * @param contact the contact who has left this group.     */    void notifyMemberLeft(Contact contact) {        if(mMembers.remove(contact)) {            for(GroupMemberListener listener : mMemberListeners) {                listener.onMemberLeft(this, contact);            }        }    }    /**     * Notifies that previous operation on this group has failed.     *     * @param error the error information.     */    void notifyGroupMemberError(ImErrorInfo error) {        for(GroupMemberListener listener : mMemberListeners) {            listener.onError(this, error);        }    }}

⌨️ 快捷键说明

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