aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main/src/ui/application.vala10
-rw-r--r--main/src/ui/unified_window_controller.vala9
2 files changed, 19 insertions, 0 deletions
diff --git a/main/src/ui/application.vala b/main/src/ui/application.vala
index 132705cf..ca78c735 100644
--- a/main/src/ui/application.vala
+++ b/main/src/ui/application.vala
@@ -132,6 +132,16 @@ public class Dino.Ui.Application : Gtk.Application, Dino.Application {
});
add_action(conference_action);
set_accels_for_action("app.add_conference", new string[]{"<Ctrl>G"});
+
+ SimpleAction loop_conversations_action = new SimpleAction("loop_conversations", null);
+ loop_conversations_action.activate.connect(() => {controller.loop_conversations(false);});
+ add_action(loop_conversations_action);
+ set_accels_for_action("app.loop_conversations", new string[]{"<Ctrl>Tab"});
+
+ SimpleAction loop_conversations_bw_action = new SimpleAction("loop_conversations_bw", null);
+ loop_conversations_bw_action.activate.connect(() => {controller.loop_conversations(true);});
+ add_action(loop_conversations_bw_action);
+ set_accels_for_action("app.loop_conversations_bw", new string[]{"<Ctrl><Shift>Tab"});
}
public bool use_csd() {
diff --git a/main/src/ui/unified_window_controller.vala b/main/src/ui/unified_window_controller.vala
index bef6b7dc..ce15ecc9 100644
--- a/main/src/ui/unified_window_controller.vala
+++ b/main/src/ui/unified_window_controller.vala
@@ -142,6 +142,15 @@ public class UnifiedWindowController : Object {
}
}
+ public void loop_conversations(bool backwards = false) {
+ Gee.List<Conversation> conversations = stream_interactor.get_module(ConversationManager.IDENTITY).get_active_conversations();
+ conversations.sort((a, b) => { return b.last_active.compare(a.last_active); });
+ int index = conversations.index_of(this.conversation);
+ index += backwards ? -1 : 1;
+ select_conversation(conversations.get(index % conversations.size));
+ }
+
+
private void update_conversation_display_name() {
conversation_display_name = Util.get_conversation_display_name(stream_interactor, conversation);
}