mirror of
https://github.com/moparisthebest/Yaaic
synced 2024-11-29 12:22:21 -05:00
Use message objects instead of strings
This commit is contained in:
parent
fca84d3075
commit
ddf80644bd
@ -24,8 +24,9 @@ import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
|
||||
import org.yaaic.model.Channel;
|
||||
import org.yaaic.model.Message;
|
||||
|
||||
import android.view.Display;
|
||||
import android.text.SpannableString;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseAdapter;
|
||||
@ -183,10 +184,10 @@ public class DeckAdapter extends BaseAdapter
|
||||
public View renderChannel(Channel channel, ViewGroup parent)
|
||||
{
|
||||
TextView canvas = new TextView(parent.getContext());
|
||||
canvas.setText(channel.getName());
|
||||
canvas.setText(new SpannableString(channel.getName()));
|
||||
|
||||
for (String message : channel.getHistory()) {
|
||||
canvas.append("\n" + message);
|
||||
for (Message message : channel.getHistory()) {
|
||||
canvas.append(message.render());
|
||||
}
|
||||
|
||||
canvas.setTextColor(0xff000000);
|
||||
|
@ -33,7 +33,6 @@ import android.widget.TextView;
|
||||
import org.yaaic.R;
|
||||
import org.yaaic.Yaaic;
|
||||
import org.yaaic.model.Server;
|
||||
import org.yaaic.model.Status;
|
||||
|
||||
/**
|
||||
* Adapter for server lists
|
||||
|
@ -29,6 +29,7 @@ import org.jibble.pircbot.User;
|
||||
import org.yaaic.Yaaic;
|
||||
import org.yaaic.model.Broadcast;
|
||||
import org.yaaic.model.Channel;
|
||||
import org.yaaic.model.Message;
|
||||
import org.yaaic.model.Server;
|
||||
import org.yaaic.model.Status;
|
||||
|
||||
@ -79,7 +80,8 @@ public class IRCConnection extends PircBot
|
||||
{
|
||||
debug("Action", target + " " + sender + " " + action);
|
||||
|
||||
server.getChannel(target).addMessage("* " + sender + " " + action);
|
||||
Message message = new Message(sender + " " + action);
|
||||
server.getChannel(target).addMessage(message);
|
||||
|
||||
Intent intent = new Intent(Broadcast.CHANNEL_MESSAGE);
|
||||
intent.putExtra(Broadcast.EXTRA_SERVER, server.getId());
|
||||
@ -104,7 +106,8 @@ public class IRCConnection extends PircBot
|
||||
{
|
||||
debug("Deop", target + " " + recipient + "(" + sourceNick + ")");
|
||||
|
||||
server.getChannel(target).addMessage(sourceNick + " deoped " + recipient);
|
||||
Message message = new Message(sourceNick + " deoped " + recipient);
|
||||
server.getChannel(target).addMessage(message);
|
||||
|
||||
Intent intent = new Intent(Broadcast.CHANNEL_MESSAGE);
|
||||
intent.putExtra(Broadcast.EXTRA_SERVER, server.getId());
|
||||
@ -120,7 +123,8 @@ public class IRCConnection extends PircBot
|
||||
{
|
||||
debug("DeVoice", target + " " + recipient + "(" + sourceNick + ")");
|
||||
|
||||
server.getChannel(target).addMessage(sourceNick + " devoiced " + recipient);
|
||||
Message message = new Message(sourceNick + " devoiced " + recipient);
|
||||
server.getChannel(target).addMessage(message);
|
||||
|
||||
Intent intent = new Intent(Broadcast.CHANNEL_MESSAGE);
|
||||
intent.putExtra(Broadcast.EXTRA_SERVER, server.getId());
|
||||
@ -136,7 +140,8 @@ public class IRCConnection extends PircBot
|
||||
{
|
||||
debug("Invite", target + " " + targetNick + "(" + sourceNick + ")");
|
||||
|
||||
server.getChannel(target).addMessage(sourceNick + " invited " + targetNick);
|
||||
Message message = new Message(sourceNick + " invited " + targetNick);
|
||||
server.getChannel(target).addMessage(message);
|
||||
|
||||
Intent intent = new Intent(Broadcast.CHANNEL_MESSAGE);
|
||||
intent.putExtra(Broadcast.EXTRA_SERVER, server.getId());
|
||||
@ -161,7 +166,8 @@ public class IRCConnection extends PircBot
|
||||
intent.putExtra(Broadcast.EXTRA_SERVER, server.getId());
|
||||
service.sendBroadcast(intent);
|
||||
} else {
|
||||
server.getChannel(target).addMessage(sender + " joined");
|
||||
Message message = new Message(sender + " joined");
|
||||
server.getChannel(target).addMessage(message);
|
||||
|
||||
Intent intent = new Intent(Broadcast.CHANNEL_MESSAGE);
|
||||
intent.putExtra(Broadcast.EXTRA_SERVER, server.getId());
|
||||
@ -187,7 +193,8 @@ public class IRCConnection extends PircBot
|
||||
intent.putExtra(Broadcast.EXTRA_CHANNEL, target);
|
||||
service.sendBroadcast(intent);
|
||||
} else {
|
||||
server.getChannel(target).addMessage(kickerNick + " kicked " + recipientNick);
|
||||
Message message = new Message(kickerNick + " kicked " + recipientNick);
|
||||
server.getChannel(target).addMessage(message);
|
||||
|
||||
Intent intent = new Intent(Broadcast.CHANNEL_MESSAGE);
|
||||
intent.putExtra(Broadcast.EXTRA_SERVER, server.getId());
|
||||
@ -200,11 +207,12 @@ public class IRCConnection extends PircBot
|
||||
* On Message
|
||||
*/
|
||||
@Override
|
||||
protected void onMessage(String target, String sender, String login, String hostname, String message)
|
||||
protected void onMessage(String target, String sender, String login, String hostname, String text)
|
||||
{
|
||||
debug("Message", target + " " + sender + " " + message);
|
||||
debug("Message", target + " " + sender + " " + text);
|
||||
|
||||
server.getChannel(target).addMessage("<" + sender + "> " + message);
|
||||
Message message = new Message("<" + sender + "> " + text);
|
||||
server.getChannel(target).addMessage(message);
|
||||
|
||||
Intent intent = new Intent(Broadcast.CHANNEL_MESSAGE);
|
||||
intent.putExtra(Broadcast.EXTRA_SERVER, server.getId());
|
||||
@ -220,7 +228,8 @@ public class IRCConnection extends PircBot
|
||||
{
|
||||
debug("Mode", target + " " + sourceNick + " " + mode);
|
||||
|
||||
server.getChannel(target).addMessage(sourceNick + " sets mode " + mode);
|
||||
Message message = new Message(sourceNick + " sets mode " + mode);
|
||||
server.getChannel(target).addMessage(message);
|
||||
|
||||
Intent intent = new Intent(Broadcast.CHANNEL_MESSAGE);
|
||||
intent.putExtra(Broadcast.EXTRA_SERVER, server.getId());
|
||||
@ -235,6 +244,8 @@ public class IRCConnection extends PircBot
|
||||
protected void onNickChange(String oldNick, String login, String hostname, String newNick)
|
||||
{
|
||||
debug("Nick", oldNick + " " + newNick);
|
||||
|
||||
// XXX: Add message to all channels where oldNick / newNick is present
|
||||
}
|
||||
|
||||
/**
|
||||
@ -244,6 +255,8 @@ public class IRCConnection extends PircBot
|
||||
protected void onNotice(String sourceNick, String sourceLogin, String sourceHostname, String target, String notice)
|
||||
{
|
||||
debug("Notice", sourceNick + " " + notice);
|
||||
|
||||
// XXX: Where should notices be shown? Current window? All windows? Server window?
|
||||
}
|
||||
|
||||
/**
|
||||
@ -254,7 +267,8 @@ public class IRCConnection extends PircBot
|
||||
{
|
||||
debug("Op", target + " " + recipient + "(" + sourceNick + ")");
|
||||
|
||||
server.getChannel(target).addMessage(sourceNick + " oped " + recipient);
|
||||
Message message = new Message(sourceNick + " oped " + recipient);
|
||||
server.getChannel(target).addMessage(message);
|
||||
|
||||
Intent intent = new Intent(Broadcast.CHANNEL_MESSAGE);
|
||||
intent.putExtra(Broadcast.EXTRA_SERVER, server.getId());
|
||||
@ -279,7 +293,8 @@ public class IRCConnection extends PircBot
|
||||
intent.putExtra(Broadcast.EXTRA_CHANNEL, target);
|
||||
service.sendBroadcast(intent);
|
||||
} else {
|
||||
server.getChannel(target).addMessage(sender + " parted");
|
||||
Message message = new Message(sender + " parted");
|
||||
server.getChannel(target).addMessage(message);
|
||||
|
||||
Intent intent = new Intent(Broadcast.CHANNEL_MESSAGE);
|
||||
intent.putExtra(Broadcast.EXTRA_SERVER, server.getId());
|
||||
@ -315,9 +330,11 @@ public class IRCConnection extends PircBot
|
||||
debug("Topic", target + " " + setBy + " " + topic);
|
||||
|
||||
if (changed) {
|
||||
server.getChannel(target).addMessage(setBy + " sets topic: " + topic);
|
||||
Message message = new Message(setBy + " sets topic: " + topic);
|
||||
server.getChannel(target).addMessage(message);
|
||||
} else {
|
||||
server.getChannel(target).addMessage("Topic: " + topic);
|
||||
Message message = new Message("Topic: " + topic);
|
||||
server.getChannel(target).addMessage(message);
|
||||
}
|
||||
|
||||
Intent intent = new Intent(Broadcast.CHANNEL_MESSAGE);
|
||||
@ -333,6 +350,8 @@ public class IRCConnection extends PircBot
|
||||
protected void onUserList(String channel, User[] users)
|
||||
{
|
||||
debug("UserList", channel + " (" + users.length + ")");
|
||||
|
||||
// XXX: Store user list somewhere and keep it updated or just broadcast some event?
|
||||
}
|
||||
|
||||
/**
|
||||
@ -343,7 +362,8 @@ public class IRCConnection extends PircBot
|
||||
{
|
||||
debug("Voice", target + " " + recipient + "(" + sourceNick + ")");
|
||||
|
||||
server.getChannel(target).addMessage(sourceNick + " voiced " + recipient);
|
||||
Message message = new Message(sourceNick + " voiced " + recipient);
|
||||
server.getChannel(target).addMessage(message);
|
||||
|
||||
Intent intent = new Intent(Broadcast.CHANNEL_MESSAGE);
|
||||
intent.putExtra(Broadcast.EXTRA_SERVER, server.getId());
|
||||
|
@ -32,8 +32,8 @@ public class Channel
|
||||
private static final int BUFFER_SIZE = 30;
|
||||
|
||||
private String name;
|
||||
private LinkedList<String> buffer = new LinkedList<String>();
|
||||
private LinkedList<String> history = new LinkedList<String>();
|
||||
private LinkedList<Message> buffer = new LinkedList<Message>();
|
||||
private LinkedList<Message> history = new LinkedList<Message>();
|
||||
|
||||
/**
|
||||
* Create a new channel object
|
||||
@ -56,7 +56,7 @@ public class Channel
|
||||
/**
|
||||
* Add a message to the channel
|
||||
*/
|
||||
public void addMessage(String message)
|
||||
public void addMessage(Message message)
|
||||
{
|
||||
buffer.addFirst(message);
|
||||
history.addLast(message);
|
||||
@ -71,7 +71,7 @@ public class Channel
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public LinkedList<String> getBuffer()
|
||||
public LinkedList<Message> getBuffer()
|
||||
{
|
||||
return buffer;
|
||||
}
|
||||
@ -81,7 +81,7 @@ public class Channel
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public LinkedList<String> getHistory()
|
||||
public LinkedList<Message> getHistory()
|
||||
{
|
||||
return history;
|
||||
}
|
||||
@ -91,7 +91,7 @@ public class Channel
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String pollMessage()
|
||||
public Message pollMessage()
|
||||
{
|
||||
return buffer.poll();
|
||||
}
|
||||
|
@ -20,6 +20,8 @@ along with Yaaic. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.yaaic.model;
|
||||
|
||||
import android.text.SpannableString;
|
||||
|
||||
/**
|
||||
* A channel or server message
|
||||
*
|
||||
@ -28,6 +30,7 @@ package org.yaaic.model;
|
||||
public class Message {
|
||||
private int icon;
|
||||
private String text;
|
||||
private SpannableString span;
|
||||
|
||||
/**
|
||||
* Create a new message without an icon
|
||||
@ -81,4 +84,19 @@ public class Message {
|
||||
{
|
||||
return text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render message as spannable string
|
||||
*/
|
||||
public SpannableString render()
|
||||
{
|
||||
if (span == null) {
|
||||
span = new SpannableString(text);
|
||||
if (hasIcon()) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return span;
|
||||
}
|
||||
}
|
||||
|
@ -54,6 +54,7 @@ import org.yaaic.irc.IRCService;
|
||||
import org.yaaic.listener.ChannelListener;
|
||||
import org.yaaic.model.Broadcast;
|
||||
import org.yaaic.model.Channel;
|
||||
import org.yaaic.model.Message;
|
||||
import org.yaaic.model.Server;
|
||||
import org.yaaic.receiver.ChannelReceiver;
|
||||
|
||||
@ -193,18 +194,18 @@ public class ServerActivity extends Activity implements ServiceConnection, Chann
|
||||
*/
|
||||
public void onChannelMessage(String target)
|
||||
{
|
||||
String message = server.getChannel(target).pollMessage();
|
||||
Message message = server.getChannel(target).pollMessage();
|
||||
|
||||
TextView canvas = (TextView) deckAdapter.getItemByName(target);
|
||||
|
||||
if (canvas != null) {
|
||||
canvas.append("\n" + message);
|
||||
canvas.append(message.render());
|
||||
deckAdapter.notifyDataSetChanged();
|
||||
|
||||
Log.d(TAG, "Target: " + target + " - Switched: " + deckAdapter.getSwitchedName());
|
||||
|
||||
if (target.equals(deckAdapter.getSwitchedName())) {
|
||||
((TextView) deckAdapter.getSwitchedView()).append("\n" + message);
|
||||
((TextView) deckAdapter.getSwitchedView()).append(message.render());
|
||||
}
|
||||
} else {
|
||||
Log.d(TAG, "No canvas found");
|
||||
|
Loading…
Reference in New Issue
Block a user