aboutsummaryrefslogtreecommitdiff
path: root/main/src
diff options
context:
space:
mode:
Diffstat (limited to 'main/src')
-rw-r--r--main/src/ui/application.vala12
-rw-r--r--main/src/ui/chat_input/chat_input_controller.vala4
-rw-r--r--main/src/ui/conversation_details.vala7
-rw-r--r--main/src/ui/conversation_titlebar/menu_entry.vala4
-rw-r--r--main/src/ui/main_window_controller.vala3
-rw-r--r--main/src/view_model/preferences_dialog.vala (renamed from main/src/view_model/preferences_window.vala)2
-rw-r--r--main/src/windows/conversation_details.vala2
-rw-r--r--main/src/windows/preferences_window/account_preferences_subpage.vala30
-rw-r--r--main/src/windows/preferences_window/accounts_preferences_page.vala5
-rw-r--r--main/src/windows/preferences_window/add_account_dialog.vala2
-rw-r--r--main/src/windows/preferences_window/change_password_dialog.vala3
-rw-r--r--main/src/windows/preferences_window/encryption_preferences_page.vala2
-rw-r--r--main/src/windows/preferences_window/preferences_dialog.vala (renamed from main/src/windows/preferences_window/preferences_window.vala)9
13 files changed, 40 insertions, 45 deletions
diff --git a/main/src/ui/application.vala b/main/src/ui/application.vala
index ffdd2df3..b0473c16 100644
--- a/main/src/ui/application.vala
+++ b/main/src/ui/application.vala
@@ -153,9 +153,9 @@ public class Dino.Ui.Application : Adw.Application, Dino.Application {
string stack_value = variant.get_child_value(1).get_string();
- var conversation_details = ConversationDetails.setup_dialog(conversation, stream_interactor, window);
+ var conversation_details = ConversationDetails.setup_dialog(conversation, stream_interactor);
conversation_details.stack.visible_child_name = stack_value;
- conversation_details.present();
+ conversation_details.present(window);
});
add_action(open_conversation_details_action);
@@ -251,16 +251,16 @@ public class Dino.Ui.Application : Adw.Application, Dino.Application {
}
private void show_preferences_window() {
- Ui.PreferencesWindow dialog = new Ui.PreferencesWindow() { transient_for = window };
+ Ui.PreferencesDialog dialog = new Ui.PreferencesDialog();
dialog.model.populate(db, stream_interactor);
- dialog.present();
+ dialog.present(window);
}
private void show_preferences_account_window(Account account) {
- Ui.PreferencesWindow dialog = new Ui.PreferencesWindow() { transient_for = window };
+ Ui.PreferencesDialog dialog = new Ui.PreferencesDialog();
dialog.model.populate(db, stream_interactor);
dialog.accounts_page.account_chosen(account);
- dialog.present();
+ dialog.present(window);
}
private void show_about_window() {
diff --git a/main/src/ui/chat_input/chat_input_controller.vala b/main/src/ui/chat_input/chat_input_controller.vala
index 07499aa4..660f29bb 100644
--- a/main/src/ui/chat_input/chat_input_controller.vala
+++ b/main/src/ui/chat_input/chat_input_controller.vala
@@ -56,8 +56,8 @@ public class ChatInputController : Object {
status_description_label.activate_link.connect((uri) => {
if (uri == OPEN_CONVERSATION_DETAILS_URI){
- var conversation_details = ConversationDetails.setup_dialog(conversation, stream_interactor, (Window)chat_input.get_root());
- conversation_details.present();
+ var conversation_details = ConversationDetails.setup_dialog(conversation, stream_interactor);
+ conversation_details.present((Window)chat_input.get_root());
}
return true;
});
diff --git a/main/src/ui/conversation_details.vala b/main/src/ui/conversation_details.vala
index a1b7a9ce..404f357d 100644
--- a/main/src/ui/conversation_details.vala
+++ b/main/src/ui/conversation_details.vala
@@ -189,20 +189,19 @@ namespace Dino.Ui.ConversationDetails {
}
}
- public Dialog setup_dialog(Conversation conversation, StreamInteractor stream_interactor, Window parent) {
- var dialog = new Dialog() { transient_for = parent };
+ public Dialog setup_dialog(Conversation conversation, StreamInteractor stream_interactor) {
+ var dialog = new Dialog();
var model = new Model.ConversationDetails();
model.populate(stream_interactor, conversation);
bind_dialog(model, dialog.model, stream_interactor);
set_about_rows(model, dialog.model, stream_interactor);
- dialog.close_request.connect(() => {
+ dialog.closed.connect(() => {
// Only send the config form if something was changed
if (model.data_form_bak != null && model.data_form_bak != model.data_form.stanza_node.to_string()) {
stream_interactor.get_module(MucManager.IDENTITY).set_config_form.begin(conversation.account, conversation.counterpart, model.data_form);
}
- return false;
});
Plugins.ContactDetails contact_details = new Plugins.ContactDetails();
diff --git a/main/src/ui/conversation_titlebar/menu_entry.vala b/main/src/ui/conversation_titlebar/menu_entry.vala
index ca8c23b3..798c2a63 100644
--- a/main/src/ui/conversation_titlebar/menu_entry.vala
+++ b/main/src/ui/conversation_titlebar/menu_entry.vala
@@ -42,8 +42,8 @@ class MenuEntry : Plugins.ConversationTitlebarEntry, Object {
}
private void open_conversation_details() {
- var conversation_details = ConversationDetails.setup_dialog(conversation, stream_interactor, (Window)button.get_root());
- conversation_details.present();
+ var conversation_details = ConversationDetails.setup_dialog(conversation, stream_interactor);
+ conversation_details.present((Window)button.get_root());
}
public Object? get_widget(Plugins.WidgetType type) {
diff --git a/main/src/ui/main_window_controller.vala b/main/src/ui/main_window_controller.vala
index 118eb73b..93b9fd69 100644
--- a/main/src/ui/main_window_controller.vala
+++ b/main/src/ui/main_window_controller.vala
@@ -66,8 +66,7 @@ public class MainWindowController : Object {
window.welcome_placeholder.primary_button.clicked.connect(() => {
ManageAccounts.AddAccountDialog dialog = new ManageAccounts.AddAccountDialog(stream_interactor, db);
- dialog.set_transient_for(app.get_active_window());
- dialog.present();
+ dialog.present(app.get_active_window());
});
window.accounts_placeholder.primary_button.clicked.connect(() => { app.activate_action("preferences", null); });
window.conversation_selector.conversation_selected.connect((conversation) => select_conversation(conversation));
diff --git a/main/src/view_model/preferences_window.vala b/main/src/view_model/preferences_dialog.vala
index 7d967605..c09c650a 100644
--- a/main/src/view_model/preferences_window.vala
+++ b/main/src/view_model/preferences_dialog.vala
@@ -3,7 +3,7 @@ using Xmpp;
using Xmpp.Xep;
using Gee;
-public class Dino.Ui.ViewModel.PreferencesWindow : Object {
+public class Dino.Ui.ViewModel.PreferencesDialog : Object {
public signal void update();
public HashMap<Account, AccountDetails> account_details = new HashMap<Account, AccountDetails>(Account.hash_func, Account.equals_func);
diff --git a/main/src/windows/conversation_details.vala b/main/src/windows/conversation_details.vala
index d85783a2..1204a83e 100644
--- a/main/src/windows/conversation_details.vala
+++ b/main/src/windows/conversation_details.vala
@@ -7,7 +7,7 @@ using Gtk;
namespace Dino.Ui.ConversationDetails {
[GtkTemplate (ui = "/im/dino/Dino/conversation_details.ui")]
- public class Dialog : Adw.Window {
+ public class Dialog : Adw.Dialog {
[GtkChild] public unowned Stack stack;
[GtkChild] public unowned Box about_box;
[GtkChild] public unowned Button pin_button;
diff --git a/main/src/windows/preferences_window/account_preferences_subpage.vala b/main/src/windows/preferences_window/account_preferences_subpage.vala
index 92fffa76..7a17fbda 100644
--- a/main/src/windows/preferences_window/account_preferences_subpage.vala
+++ b/main/src/windows/preferences_window/account_preferences_subpage.vala
@@ -6,10 +6,9 @@ using Gtk;
using Gdk;
[GtkTemplate (ui = "/im/dino/Dino/preferences_window/account_preferences_subpage.ui")]
-public class Dino.Ui.AccountPreferencesSubpage : Gtk.Box {
+public class Dino.Ui.AccountPreferencesSubpage : Adw.NavigationPage {
[GtkChild] public unowned Adw.HeaderBar headerbar;
- [GtkChild] public unowned Button back_button;
[GtkChild] public unowned AvatarPicture avatar;
[GtkChild] public unowned Adw.ActionRow xmpp_address;
[GtkChild] public unowned Adw.EntryRow local_alias;
@@ -24,19 +23,16 @@ public class Dino.Ui.AccountPreferencesSubpage : Gtk.Box {
[GtkChild] public unowned Button disable_account_button;
public Account account { get { return model.selected_account.account; } }
- public ViewModel.PreferencesWindow model { get; set; }
+ public ViewModel.PreferencesDialog model { get; set; }
private Binding[] bindings = new Binding[0];
private ulong[] account_notify_ids = new ulong[0];
private ulong alias_entry_changed = 0;
construct {
+ title = "Account";
headerbar.show_title = false;
button_container.layout_manager = new NaturalDirectionBoxLayout((BoxLayout)button_container.layout_manager);
- back_button.clicked.connect(() => {
- var window = (Adw.PreferencesWindow) this.get_root();
- window.pop_subpage();
- });
edit_avatar_button.clicked.connect(() => {
show_select_avatar();
});
@@ -52,8 +48,7 @@ public class Dino.Ui.AccountPreferencesSubpage : Gtk.Box {
password_change.activatable_widget = new Label("");
password_change.activated.connect(() => {
var dialog = new ChangePasswordDialog(model.get_change_password_dialog_model());
- dialog.set_transient_for((Gtk.Window)this.get_root());
- dialog.present();
+ dialog.present((Gtk.Window)this.get_root());
});
enter_password_button.clicked.connect(() => {
var dialog = new Adw.MessageDialog((Window)this.get_root(), "Enter password for %s".printf(account.bare_jid.to_string()), null);
@@ -157,8 +152,7 @@ public class Dino.Ui.AccountPreferencesSubpage : Gtk.Box {
}
private void show_remove_account_dialog() {
- Adw.MessageDialog dialog = new Adw.MessageDialog (
- (Window)this.get_root(),
+ Adw.AlertDialog dialog = new Adw.AlertDialog (
_("Remove account %s?".printf(account.bare_jid.to_string())),
"You won't be able to access your conversation history anymore."
);
@@ -169,13 +163,19 @@ public class Dino.Ui.AccountPreferencesSubpage : Gtk.Box {
dialog.response.connect((response) => {
if (response == "remove") {
model.remove_account(account);
- // Close the account subpage
- var window = (Adw.PreferencesWindow) this.get_root();
- window.pop_subpage();
+
+ // Close the account subpage. Get the parent-times-x PreferencesDialog, to call pop_subpage() on it.
+ Widget parent = this.parent;
+ for (int i = 0; parent != null && i < 20; i++) {
+ if (parent.get_type() == typeof(Dino.Ui.PreferencesDialog)) {
+ ((Dino.Ui.PreferencesDialog) parent).pop_subpage();
+ }
+ parent = parent.parent;
+ }
}
dialog.close();
});
- dialog.present();
+ dialog.present((Window)this.get_root());
}
private string get_status_label() {
diff --git a/main/src/windows/preferences_window/accounts_preferences_page.vala b/main/src/windows/preferences_window/accounts_preferences_page.vala
index 7f4c2f1b..2fe05088 100644
--- a/main/src/windows/preferences_window/accounts_preferences_page.vala
+++ b/main/src/windows/preferences_window/accounts_preferences_page.vala
@@ -9,7 +9,7 @@ public class Dino.Ui.PreferencesWindowAccounts : Adw.PreferencesPage {
public Adw.PreferencesGroup active_accounts;
public Adw.PreferencesGroup disabled_accounts;
- public ViewModel.PreferencesWindow model { get; set; }
+ public ViewModel.PreferencesDialog model { get; set; }
construct {
this.title = _("Accounts");
@@ -36,11 +36,10 @@ public class Dino.Ui.PreferencesWindowAccounts : Adw.PreferencesPage {
add_account_button.clicked.connect(() => {
Ui.ManageAccounts.AddAccountDialog add_account_dialog = new Ui.ManageAccounts.AddAccountDialog(model.stream_interactor, model.db);
- add_account_dialog.set_transient_for((Window)this.get_root());
add_account_dialog.added.connect((account) => {
refresh();
});
- add_account_dialog.present();
+ add_account_dialog.present((Window)this.get_root());
});
disabled_accounts.visible = false; // Only display disabled section if it contains accounts
diff --git a/main/src/windows/preferences_window/add_account_dialog.vala b/main/src/windows/preferences_window/add_account_dialog.vala
index 3ca183e1..2568a01e 100644
--- a/main/src/windows/preferences_window/add_account_dialog.vala
+++ b/main/src/windows/preferences_window/add_account_dialog.vala
@@ -8,7 +8,7 @@ using Xmpp;
namespace Dino.Ui.ManageAccounts {
[GtkTemplate (ui = "/im/dino/Dino/preferences_window/add_account_dialog.ui")]
-public class AddAccountDialog : Adw.Window {
+public class AddAccountDialog : Adw.Dialog {
public signal void added(Account account);
diff --git a/main/src/windows/preferences_window/change_password_dialog.vala b/main/src/windows/preferences_window/change_password_dialog.vala
index f0c7dcf9..4a2c136c 100644
--- a/main/src/windows/preferences_window/change_password_dialog.vala
+++ b/main/src/windows/preferences_window/change_password_dialog.vala
@@ -7,7 +7,7 @@ using Xmpp;
namespace Dino.Ui{
[GtkTemplate (ui = "/im/dino/Dino/preferences_window/change_password_dialog.ui")]
- public class ChangePasswordDialog : Gtk.Dialog {
+ public class ChangePasswordDialog : Adw.Dialog {
[GtkChild] private unowned Button change_password_button;
[GtkChild] private unowned Stack change_password_stack;
@@ -20,7 +20,6 @@ namespace Dino.Ui{
private ViewModel.ChangePasswordDialog model;
public ChangePasswordDialog(ViewModel.ChangePasswordDialog model) {
- Object(use_header_bar : 1);
this.model = model;
Util.force_error_color(change_password_error_label);
diff --git a/main/src/windows/preferences_window/encryption_preferences_page.vala b/main/src/windows/preferences_window/encryption_preferences_page.vala
index eec38908..f6f86ca9 100644
--- a/main/src/windows/preferences_window/encryption_preferences_page.vala
+++ b/main/src/windows/preferences_window/encryption_preferences_page.vala
@@ -10,7 +10,7 @@ public class Dino.Ui.PreferencesWindowEncryption : Adw.PreferencesPage {
private Adw.PreferencesGroup accounts_group = new Adw.PreferencesGroup();
private ArrayList<Adw.PreferencesGroup> added_widgets = new ArrayList<Adw.PreferencesGroup>();
- public ViewModel.PreferencesWindow model { get; set; }
+ public ViewModel.PreferencesDialog model { get; set; }
construct {
this.add(accounts_group);
diff --git a/main/src/windows/preferences_window/preferences_window.vala b/main/src/windows/preferences_window/preferences_dialog.vala
index cee4e34e..7a70ca00 100644
--- a/main/src/windows/preferences_window/preferences_window.vala
+++ b/main/src/windows/preferences_window/preferences_dialog.vala
@@ -5,14 +5,14 @@ using Xmpp.Xep;
using Gee;
using Gtk;
-[GtkTemplate (ui = "/im/dino/Dino/preferences_window/preferences_window.ui")]
-public class Dino.Ui.PreferencesWindow : Adw.PreferencesWindow {
+[GtkTemplate (ui = "/im/dino/Dino/preferences_window/preferences_dialog.ui")]
+public class Dino.Ui.PreferencesDialog : Adw.PreferencesDialog {
[GtkChild] public unowned Dino.Ui.PreferencesWindowAccounts accounts_page;
[GtkChild] public unowned Dino.Ui.PreferencesWindowEncryption encryption_page;
[GtkChild] public unowned Dino.Ui.GeneralPreferencesPage general_page;
public Dino.Ui.AccountPreferencesSubpage account_page = new Dino.Ui.AccountPreferencesSubpage();
- [GtkChild] public unowned ViewModel.PreferencesWindow model { get; }
+ [GtkChild] public unowned ViewModel.PreferencesDialog model { get; }
construct {
this.bind_property("model", accounts_page, "model", BindingFlags.SYNC_CREATE);
@@ -21,8 +21,7 @@ public class Dino.Ui.PreferencesWindow : Adw.PreferencesWindow {
accounts_page.account_chosen.connect((account) => {
model.selected_account = model.account_details[account];
- this.present_subpage(account_page);
-// this.present_subpage(new Adw.NavigationPage(account_page, "Account: %s".printf(account.bare_jid.to_string())));
+ this.push_subpage(account_page);
});
}
} \ No newline at end of file