Select Git revision
MainWindow.vala
MainWindow.vala 6.46 KiB
/**
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* AUTHORS
* gyan000 <gyan000 (at] ijaz.fr>
*/
using EOSConnect.Plugin;
using EOSConnect.Plugin.Windows;
using EOSConnect.Widgets;
using Gee;
using Granite.Widgets;
using MConnect;
namespace EOSConnect {
public class MainWindow : Gtk.ApplicationWindow {
public GLib.Settings main_settings { get; construct; }
public SMSHistory sms_history_view { get; construct; }
public Gtk.Stack main_stack { get; construct; }
private Views.DevicesView devices_view;
// private Gtk.InfoBar infobar_error;
// private Gtk.Label info_bar_error_label;
// private Gtk.Overlay overlay;
// private Granite.Widgets.OverlayBar overlaybar;
public MainWindow (Granite.Application application, GLib.Settings main_settings, SMSHistory sms_history_view) {
Object (
application: application,
main_settings: main_settings,
sms_history_view: sms_history_view
);
set_default_size (900, 600);
set_size_request (750, 500);
}
construct {
var theme_button = new Gtk.Button.from_icon_name ("object-inverse");
theme_button.tooltip_text = _("Use dark style");
theme_button.valign = Gtk.Align.CENTER;
var new_sms_button = new Gtk.Button.from_icon_name ("mail-message-new");
new_sms_button.tooltip_text = _("Send a new SMS");
new_sms_button.valign = Gtk.Align.CENTER;
var headerbar = new Gtk.HeaderBar ();
headerbar.get_style_context ().add_class ("default-decoration");
headerbar.show_close_button = true;
headerbar.pack_start (new_sms_button);
headerbar.pack_end (theme_button);
headerbar.title = "EOS Connect";
set_titlebar (headerbar);
window_position = Gtk.WindowPosition.CENTER;
// infobar_error = new Gtk.InfoBar();
// infobar_error.set_show_close_button(true);
// infobar_error.message_type = Gtk.MessageType.ERROR;
// infobar_error.no_show_all = true;
//
// info_bar_error_label = new Gtk.Label ("");
//
// var info_bar_error_content = infobar_error.get_content_area ();
// info_bar_error_content.add (info_bar_error_label);
devices_view = new Views.DevicesView (this);
var main_settings_view = new Views.MainSettingsView (this, main_settings);
main_stack = new Gtk.Stack ();
main_stack.expand = true;
main_stack.transition_type = Gtk.StackTransitionType.SLIDE_LEFT_RIGHT;
main_stack.add_titled (devices_view, "devices_view", _("Devices"));
main_stack.add_titled (sms_history_view, "sms_history_view", _("SMS"));
main_stack.add_titled (main_settings_view, "main_settings_view", _("Settings"));
var main_stackswitcher = new Gtk.StackSwitcher ();
main_stackswitcher.set_stack (main_stack);
main_stackswitcher.halign = Gtk.Align.CENTER;
main_stackswitcher.homogeneous = true;
var refresh_in_progress = false;
var sub_grid = new Gtk.Grid ();
sub_grid.orientation = Gtk.Orientation.VERTICAL;
sub_grid.margin = 0;
sub_grid.margin_top = 12;
sub_grid.add (main_stackswitcher);
sub_grid.add (main_stack);
var main_grid = new Gtk.Grid ();
main_grid.orientation = Gtk.Orientation.VERTICAL;
// main_grid.add(infobar_error);
main_grid.add(sub_grid);
// Debug toolbar
if (Granite.Services.Logger.DisplayLevel == Granite.Services.Logger.DEBUG) {
var debug_toolbar = new DebugToolbar (devices_view);
main_grid.add(debug_toolbar);
}
// overlay = new Gtk.Overlay ();
// overlay.add_overlay (main_grid);
Gtk.Settings.get_default ().gtk_application_prefer_dark_theme = main_settings.get_boolean ("use-dark-theme");
// add (overlay);
add (main_grid);
theme_button.clicked.connect (() => {
var window_settings = Gtk.Settings.get_default ();
window_settings.gtk_application_prefer_dark_theme = !window_settings.gtk_application_prefer_dark_theme;
main_settings.set_boolean ("use-dark-theme", window_settings.gtk_application_prefer_dark_theme);
if (window_settings.gtk_application_prefer_dark_theme) {
theme_button.tooltip_text = _("Use light style");
} else {
theme_button.tooltip_text = _("Use dark style");
}
});
// infobar_error.response.connect ((response_id) => {
// infobar_error.no_show_all = true;
// infobar_error.hide ();
// });
new_sms_button.clicked.connect ( () => { sms_history_view.handle_new_sms_button (new_sms_button); });
}
public void update_ui (HashMap<string, Device> devices_map) {
devices_view.update_device_list (devices_map);
}
// public void show_error_infobar (string error_message) {
// if (overlaybar != null) { overlaybar.destroy (); } ;
// infobar_error.no_show_all = false;
// info_bar_error_label.label = "%s".printf (error_message);
// infobar_error.show_all ();
// }
//
// public void hide_overlaybar () {
// if (overlaybar != null) { overlaybar.destroy (); } ;
// }
//
// public void display_overlaybar (string status) {
// overlaybar = new Granite.Widgets.OverlayBar (overlay);
// overlaybar.label = _(status);
// overlaybar.active = true;
// }
}
}