/**
* Copyright (c) 2013, Redsolution LTD. All rights reserved.
*
* This file is part of Xabber project; you can redistribute it and/or
* modify it under the terms of the GNU General Public License, Version 3.
*
* Xabber is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License,
* along with this program. If not, see http://www.gnu.org/licenses/.
*/
package com.xabber.android.ui.helper;
import android.content.Context;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.xabber.android.R;
import com.xabber.android.data.extension.avatar.AvatarManager;
import com.xabber.android.data.extension.cs.ChatStateManager;
import com.xabber.android.data.roster.AbstractContact;
import org.jivesoftware.smackx.chatstates.ChatState;
public class ContactTitleInflater {
public static void updateTitle(View titleView, final Context context, AbstractContact abstractContact) {
final TextView nameView = (TextView) titleView.findViewById(R.id.name);
final ImageView avatarView = (ImageView) titleView.findViewById(R.id.avatar);
nameView.setText(abstractContact.getName());
// if it is account, not simple user contact
if (abstractContact.getUser().getJid().asBareJid().equals(abstractContact.getAccount().getFullJid().asBareJid())) {
avatarView.setImageDrawable(AvatarManager.getInstance().getAccountAvatar(abstractContact.getAccount()));
} else {
avatarView.setImageDrawable(abstractContact.getAvatar());
}
setStatus(context, titleView, abstractContact);
}
private static void setStatus(Context context, View titleView, AbstractContact abstractContact) {
final ImageView statusModeView = (ImageView) titleView.findViewById(R.id.status_icon);
int statusLevel = abstractContact.getStatusMode().getStatusLevel();
if (isContactOffline(statusLevel)) {
statusModeView.setVisibility(View.GONE);
} else {
statusModeView.setVisibility(View.VISIBLE);
statusModeView.setImageLevel(statusLevel);
}
final TextView statusTextView = (TextView) titleView.findViewById(R.id.status_text);
ChatState chatState = ChatStateManager.getInstance().getChatState(
abstractContact.getAccount(), abstractContact.getUser());
CharSequence statusText;
if (chatState == ChatState.composing) {
statusText = context.getString(R.string.chat_state_composing);
} else if (chatState == ChatState.paused) {
statusText = context.getString(R.string.chat_state_paused);
} else {
statusText = abstractContact.getStatusText().trim();
if (statusText.toString().isEmpty()) {
statusText = context.getString(abstractContact.getStatusMode().getStringID());
}
}
statusTextView.setText(statusText);
}
private static boolean isContactOffline(int statusLevel) {
return statusLevel == 6;
}
}