Browse Source

Re-layout some things on the main Chat view, clean up a bit

environments/review-jsparber-h-cxnwl8/deployments/1
Jonas Platte 9 years ago
parent
commit
598ead3038
  1. 345
      res/main_window.glade
  2. 22
      src/app.rs

345
res/main_window.glade

@ -10,23 +10,17 @@
</object>
<object class="GtkApplicationWindow" id="main_window">
<property name="can_focus">False</property>
<property name="default_width">600</property>
<property name="default_height">400</property>
<property name="show_menubar">False</property>
<child>
<object class="GtkPaned">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_focus">False</property>
<property name="position_set">True</property>
<property name="wide_handle">True</property>
<child>
<object class="GtkTreeView" id="rooms_tree_view">
<property name="width_request">120</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_request">200</property>
<property name="can_focus">False</property>
<property name="model">rooms_tree_store</property>
<property name="headers_visible">False</property>
<property name="reorderable">True</property>
<property name="search_column">0</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
@ -49,30 +43,41 @@
</child>
<child>
<object class="GtkStack" id="main_content_stack">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkBox" id="focused_room">
<property name="visible">True</property>
<object class="GtkGrid" id="focused_room">
<property name="can_focus">False</property>
<child>
<object class="GtkBox" id="room_main">
<property name="visible">True</property>
<object class="GtkBox" id="room_header">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="margin_left">8</property>
<property name="margin_right">8</property>
<property name="hexpand">True</property>
<property name="border_width">4</property>
<property name="spacing">8</property>
<child>
<object class="GtkImage">
<property name="can_focus">False</property>
<property name="pixel_size">48</property>
<property name="icon_name">face-smile</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">8</property>
<property name="margin_right">8</property>
<property name="spacing">8</property>
<property name="margin_top">4</property>
<property name="margin_bottom">4</property>
<property name="orientation">vertical</property>
<property name="spacing">4</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<object class="GtkLabel">
<property name="can_focus">False</property>
<property name="pixel_size">48</property>
<property name="icon_name">face-smile</property>
<property name="label" translatable="yes">&lt;Room name&gt;</property>
</object>
<packing>
<property name="expand">False</property>
@ -81,37 +86,9 @@
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<object class="GtkLabel">
<property name="can_focus">False</property>
<property name="margin_top">4</property>
<property name="margin_bottom">4</property>
<property name="orientation">vertical</property>
<property name="spacing">4</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;Room name&gt;</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;Description&gt;</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<property name="label" translatable="yes">&lt;Description&gt;</property>
</object>
<packing>
<property name="expand">False</property>
@ -119,88 +96,141 @@
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton">
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="valign">center</property>
<property name="relief">none</property>
<child>
<object class="GtkButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="valign">center</property>
<property name="relief">none</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">edit-find</property>
</object>
</child>
<object class="GtkImage">
<property name="can_focus">False</property>
<property name="icon_name">edit-find</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton">
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="valign">center</property>
<property name="relief">none</property>
<child>
<object class="GtkButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="valign">center</property>
<property name="relief">none</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">preferences-system</property>
</object>
</child>
<object class="GtkImage">
<property name="can_focus">False</property>
<property name="icon_name">preferences-system</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
<property name="pack_type">end</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkStackSwitcher" id="room_sidebar_stack_switcher">
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="border_width">5</property>
<property name="stack">room_sidebar_stack</property>
</object>
<packing>
<property name="left_attach">2</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkListBox" id="message_list">
<property name="width_request">480</property>
<property name="height_request">360</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
</packing>
</child>
<child>
<object class="GtkStack" id="room_sidebar_stack">
<property name="width_request">200</property>
<property name="can_focus">False</property>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<object class="GtkLabel">
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;Members&gt;</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="name">room_member_list</property>
<property name="title" translatable="yes">Members</property>
<property name="icon_name">contact-new</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;Files&gt;</property>
</object>
<packing>
<property name="name">room_file_list</property>
<property name="title" translatable="yes">Files</property>
<property name="icon_name">mail-attachment</property>
<property name="position">1</property>
</packing>
</child>
<child>
<placeholder/>
<object class="GtkLabel">
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;Notifications&gt;</property>
</object>
<packing>
<property name="name">room_notification_list</property>
<property name="title" translatable="yes">Notifications</property>
<property name="icon_name">preferences-system-notifications</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
<property name="left_attach">2</property>
<property name="top_attach">2</property>
<property name="height">2</property>
</packing>
</child>
<child>
<object class="GtkBox" id="room_sidebar">
<property name="visible">True</property>
<object class="GtkBox">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="border_width">4</property>
<property name="spacing">4</property>
<child>
<object class="GtkStackSwitcher" id="room_sidebar_stack_switcher">
<property name="visible">True</property>
<object class="GtkImage">
<property name="can_focus">False</property>
<property name="stack">room_sidebar_stack</property>
<property name="pixel_size">32</property>
<property name="icon_name">face-glasses</property>
</object>
<packing>
<property name="expand">False</property>
@ -209,59 +239,85 @@
</packing>
</child>
<child>
<object class="GtkStack" id="room_sidebar_stack">
<property name="visible">True</property>
<object class="GtkEntry">
<property name="can_focus">True</property>
<property name="valign">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkToolbar">
<property name="can_focus">False</property>
<property name="toolbar_style">icons</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<object class="GtkToolButton">
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;Members&gt;</property>
<property name="label" translatable="yes">Upload file</property>
<property name="icon_name">mail-attachment</property>
</object>
<packing>
<property name="name">room_member_list</property>
<property name="title" translatable="yes">Members</property>
<property name="icon_name">contact-new</property>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<object class="GtkToolButton">
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;Files&gt;</property>
<property name="label" translatable="yes">Voice call</property>
<property name="icon_name">audio-input-microphone</property>
</object>
<packing>
<property name="name">room_file_list</property>
<property name="title" translatable="yes">Files</property>
<property name="icon_name">mail-attachment</property>
<property name="position">1</property>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<object class="GtkToolButton">
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;Notifications&gt;</property>
<property name="label" translatable="yes">Audio call</property>
<property name="icon_name">camera-video</property>
</object>
<packing>
<property name="name">room_notification_list</property>
<property name="title" translatable="yes">Notifications</property>
<property name="icon_name">preferences-system-notifications</property>
<property name="position">2</property>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="can_focus">False</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="height">4</property>
</packing>
</child>
</object>
@ -271,8 +327,7 @@
</packing>
</child>
<child>
<object class="GtkListBox">
<property name="visible">True</property>
<object class="GtkListBox" id="directory_room_list">
<property name="can_focus">False</property>
</object>
<packing>
@ -284,33 +339,28 @@
</object>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
<property name="shrink">False</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="show_close_button">True</property>
<child>
<object class="GtkButton" id="user_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="valign">center</property>
<child>
<object class="GtkStack" id="user_button_stack">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">4</property>
<child>
<object class="GtkSpinner">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="active">True</property>
</object>
@ -322,7 +372,6 @@
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Loading...</property>
</object>
@ -339,12 +388,10 @@
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">4</property>
<child>
<object class="GtkImage" id="profile_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">address-book-new</property>
<property name="icon_size">3</property>
@ -357,7 +404,6 @@
</child>
<child>
<object class="GtkLabel" id="display_name_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;Display Name&gt;</property>
</object>
@ -379,8 +425,8 @@
</child>
<child type="title">
<object class="GtkStackSwitcher">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">center</property>
<property name="stack">main_content_stack</property>
</object>
</child>
@ -393,12 +439,10 @@
<property name="position">bottom</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkStackSwitcher" id="user_menu_stack_switcher">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stack">user_menu_stack</property>
</object>
@ -410,11 +454,9 @@
</child>
<child>
<object class="GtkStack" id="user_menu_stack">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;Login&gt;</property>
</object>
@ -425,7 +467,6 @@
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;Register&gt;</property>
</object>

22
src/app.rs

@ -38,18 +38,10 @@ impl App {
let gtk_builder = gtk::Builder::new_from_file("res/main_window.glade");
let gtk_builder2 = gtk_builder.clone();
let builder = gtk_builder.clone();
gtk_app.connect_activate(move |app| {
let user_button: gtk::Button = gtk_builder2.get_object("user_button")
.expect("Couldn't find user_button in ui file.");
let user_menu: gtk::Popover = gtk_builder2.get_object("user_menu")
.expect("Couldn't find user_menu in ui file.");
user_button.connect_clicked(move |_| user_menu.show());
// Set up shutdown callback
let window: gtk::Window = gtk_builder2.get_object("main_window")
let window: gtk::Window = builder.get_object("main_window")
.expect("Couldn't find main_window in ui file.");
let app2 = app.clone();
@ -58,6 +50,16 @@ impl App {
Inhibit(false)
});
// Set up user popover
let user_button: gtk::Button = builder.get_object("user_button")
.expect("Couldn't find user_button in ui file.");
let user_menu: gtk::Popover = builder.get_object("user_menu")
.expect("Couldn't find user_menu in ui file.");
user_button.connect_clicked(move |_| user_menu.show());
// Associate window with the Application and show it
window.set_application(Some(app));
window.show_all();
});

Loading…
Cancel
Save