1
0
mirror of https://github.com/moparisthebest/Yaaic synced 2024-11-17 22:45:01 -05:00
Yaaic/src/org/yaaic/model/Message.java

125 lines
2.7 KiB
Java
Raw Normal View History

/*
Yaaic - Yet Another Android IRC Client
Copyright 2009 Sebastian Kaspari
This file is part of Yaaic.
Yaaic is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Yaaic 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 Yaaic. If not, see <http://www.gnu.org/licenses/>.
*/
package org.yaaic.model;
2010-03-06 12:58:27 -05:00
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.Spannable;
2010-03-06 11:52:22 -05:00
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
2010-03-06 12:58:27 -05:00
import android.text.style.ImageSpan;
2010-03-06 11:52:22 -05:00
/**
* A channel or server message
*
* @author Sebastian Kaspari <sebastian@yaaic.org>
*/
public class Message {
2010-03-06 14:59:22 -05:00
public static final int COLOR_GREEN = 0xFF458509;
public static final int COLOR_RED = 0xFFcc0000;
public static final int COLOR_BLUE = 0xFF729fcf;
public static final int COLOR_YELLOW = 0xFFbe9b01;
private int icon = -1;
private String text;
2010-03-06 12:58:27 -05:00
private SpannableString canvas;
private int color = -1;
/**
* Create a new message without an icon
*
* @param text
*/
public Message(String text)
{
this.text = text;
}
/**
2010-03-06 12:58:27 -05:00
* Set the message's icon
*/
2010-03-06 12:58:27 -05:00
public void setIcon(int icon)
{
this.icon = icon;
}
/**
* Get the message's icon
*
* @return
*/
public int getIcon()
{
return icon;
}
/**
* Does this message have an icon?
*
* @return
*/
public boolean hasIcon()
{
return icon != -1;
}
/**
* Get the text of this message
*
* @return
*/
public String getText()
{
return text;
}
2010-03-06 11:52:22 -05:00
/**
* Set the color of this message
*/
public void setColor(int color)
{
this.color = color;
}
2010-03-06 11:52:22 -05:00
/**
* Render message as spannable string
2010-03-06 12:58:27 -05:00
*
* @return
2010-03-06 11:52:22 -05:00
*/
2010-03-06 12:58:27 -05:00
public SpannableString render(Context context)
2010-03-06 11:52:22 -05:00
{
2010-03-06 12:58:27 -05:00
if (canvas == null) {
2010-03-06 14:37:58 -05:00
String prefix = hasIcon() ? "\n " : "\n";
canvas = new SpannableString(prefix + text);
2010-03-06 11:52:22 -05:00
if (hasIcon()) {
2010-03-06 12:58:27 -05:00
Drawable drawable = context.getResources().getDrawable(icon);
2010-03-06 13:31:24 -05:00
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
2010-03-06 13:20:17 -05:00
canvas.setSpan(new ImageSpan(drawable, ImageSpan.ALIGN_BOTTOM), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
2010-03-06 11:52:22 -05:00
}
if (color != -1) {
canvas.setSpan(new ForegroundColorSpan(color), 0, canvas.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
2010-03-06 11:52:22 -05:00
}
2010-03-06 12:58:27 -05:00
return canvas;
2010-03-06 11:52:22 -05:00
}
}