--- application/res/layout/conversations.xml | 1 + .../org/yaaic/activity/ConversationActivity.java | 19 +++++++++++++++++++ application/src/org/yaaic/irc/IRCConnection.java | 8 ++++++++ .../org/yaaic/listener/ConversationListener.java | 7 +++++++ .../listener/ConversationSelectedListener.java | 7 ++++++- application/src/org/yaaic/model/Broadcast.java | 1 + .../org/yaaic/receiver/ConversationReceiver.java | 2 ++ 7 files changed, 44 insertions(+), 1 deletions(-)
diff --git a/application/res/layout/conversations.xml b/application/res/layout/conversations.xml index f0b80a3..fbc43b9 100644 --- a/application/res/layout/conversations.xml +++ b/application/res/layout/conversations.xml @@ -42,6 +42,7 @@ along with Yaaic. If not, see <http://www.gnu.org/licenses/>. android:paddingLeft="3dp" android:textSize="12sp" android:text="Server" + android:maxLines="1" android:layout_weight="1" /> </LinearLayout> <ViewSwitcher diff --git a/application/src/org/yaaic/activity/ConversationActivity.java b/application/src/org/yaaic/activity/ConversationActivity.java index d6786b4..afabb1a 100644 --- a/application/src/org/yaaic/activity/ConversationActivity.java +++ b/application/src/org/yaaic/activity/ConversationActivity.java @@ -39,6 +39,7 @@ import org.yaaic.listener.ConversationSelectedListener; import org.yaaic.listener.ServerListener; import org.yaaic.listener.SpeechClickListener; import org.yaaic.model.Broadcast; +import org.yaaic.model.Channel; import org.yaaic.model.Conversation; import org.yaaic.model.Extra; import org.yaaic.model.Message; @@ -204,6 +205,7 @@ public class ConversationActivity extends Activity implements ServiceConnection, registerReceiver(channelReceiver, new IntentFilter(Broadcast.CONVERSATION_MESSAGE)); registerReceiver(channelReceiver, new IntentFilter(Broadcast.CONVERSATION_NEW)); registerReceiver(channelReceiver, new IntentFilter(Broadcast.CONVERSATION_REMOVE)); + registerReceiver(channelReceiver, new IntentFilter(Broadcast.CONVERSATION_TOPIC)); serverReceiver = new ServerReceiver(this); registerReceiver(serverReceiver, new IntentFilter(Broadcast.SERVER_UPDATE)); @@ -509,6 +511,23 @@ public class ConversationActivity extends Activity implements ServiceConnection, } /** + * On topic change + */ + public void onTopicChanged(String target) + { + String selected = server.getSelectedConversation(); + if (selected.equals(target)) { + // onTopicChanged is only called for channels + Channel channel = (Channel) server.getConversation(selected); + StringBuilder sb = new StringBuilder(); + sb.append(server.getTitle() + " - " + channel.getName()); + if (!(channel.getTopic()).equals("")) + sb.append(" - " + channel.getTopic()); + ((TextView) findViewById(R.id.title)).setText(sb.toString()); + } + } + + /** * On server status update */ @Override diff --git a/application/src/org/yaaic/irc/IRCConnection.java b/application/src/org/yaaic/irc/IRCConnection.java index 62e4ea1..f744c4b 100644 --- a/application/src/org/yaaic/irc/IRCConnection.java +++ b/application/src/org/yaaic/irc/IRCConnection.java @@ -724,6 +724,14 @@ public class IRCConnection extends PircBot target ); service.sendBroadcast(intent); + + // update the displayed conversation title if necessary + intent = Broadcast.createConversationIntent( + Broadcast.CONVERSATION_TOPIC, + server.getId(), + target + ); + service.sendBroadcast(intent); } /** diff --git a/application/src/org/yaaic/listener/ConversationListener.java b/application/src/org/yaaic/listener/ConversationListener.java index ec760dd..d8fe99f 100644 --- a/application/src/org/yaaic/listener/ConversationListener.java +++ b/application/src/org/yaaic/listener/ConversationListener.java @@ -47,4 +47,11 @@ public interface ConversationListener * @param target */ public void onRemoveConversation(String target); + + /** + * On topic changed (for given target) + * + * @param target + */ + public void onTopicChanged(String target); } diff --git a/application/src/org/yaaic/listener/ConversationSelectedListener.java b/application/src/org/yaaic/listener/ConversationSelectedListener.java index 49eaa6c..5a83a93 100644 --- a/application/src/org/yaaic/listener/ConversationSelectedListener.java +++ b/application/src/org/yaaic/listener/ConversationSelectedListener.java @@ -20,6 +20,7 @@ along with Yaaic. If not, see <http://www.gnu.org/licenses/>. */ package org.yaaic.listener; +import org.yaaic.model.Channel; import org.yaaic.model.Conversation; import org.yaaic.model.Server; import org.yaaic.view.ConversationSwitcher; @@ -67,7 +68,11 @@ public class ConversationSelectedListener implements OnItemSelectedListener Conversation conversation = (Conversation) deck.getItemAtPosition(position); if (conversation != null && conversation.getType() != Conversation.TYPE_SERVER) { - titleView.setText(server.getTitle() + " - " + conversation.getName()); + StringBuilder sb = new StringBuilder(); + sb.append(server.getTitle() + " - " + conversation.getName()); + if (conversation.getType() == Conversation.TYPE_CHANNEL && !((Channel)conversation).getTopic().equals("")) + sb.append(" - " + ((Channel)conversation).getTopic()); + titleView.setText(sb.toString()); } else { onNothingSelected(deck); } diff --git a/application/src/org/yaaic/model/Broadcast.java b/application/src/org/yaaic/model/Broadcast.java index 7ebd9a5..97ca0fe 100644 --- a/application/src/org/yaaic/model/Broadcast.java +++ b/application/src/org/yaaic/model/Broadcast.java @@ -34,6 +34,7 @@ public abstract class Broadcast public static final String CONVERSATION_MESSAGE = "org.yaaic.conversation.message"; public static final String CONVERSATION_NEW = "org.yaaic.conversation.new"; public static final String CONVERSATION_REMOVE = "org.yaaic.conversation.remove"; + public static final String CONVERSATION_TOPIC = "org.yaaic.conversation.topic"; /** * Create an Intent for conversation broadcasting diff --git a/application/src/org/yaaic/receiver/ConversationReceiver.java b/application/src/org/yaaic/receiver/ConversationReceiver.java index f6d333a..c81b1e4 100644 --- a/application/src/org/yaaic/receiver/ConversationReceiver.java +++ b/application/src/org/yaaic/receiver/ConversationReceiver.java @@ -72,6 +72,8 @@ public class ConversationReceiver extends BroadcastReceiver listener.onNewConversation(intent.getExtras().getString(Extra.CONVERSATION)); } else if (action.equals(Broadcast.CONVERSATION_REMOVE)) { listener.onRemoveConversation(intent.getExtras().getString(Extra.CONVERSATION)); + } else if (action.equals(Broadcast.CONVERSATION_TOPIC)) { + listener.onTopicChanged(intent.getExtras().getString(Extra.CONVERSATION)); } } -- 1.7.2.5

