diff options
author | lambroslambrou@chromium.org <lambroslambrou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-22 04:51:55 +0000 |
---|---|---|
committer | lambroslambrou@chromium.org <lambroslambrou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-22 04:51:55 +0000 |
commit | eb5b918d3686368b21b377c66bca562ae3d7ce6f (patch) | |
tree | 118aa6e6a1fa7c45c01de24f9c5e9afb149e5596 | |
parent | 752b3cbd793c778905c488d6025dc2cd96173bed (diff) | |
download | chromium_src-eb5b918d3686368b21b377c66bca562ae3d7ce6f.zip chromium_src-eb5b918d3686368b21b377c66bca562ae3d7ce6f.tar.gz chromium_src-eb5b918d3686368b21b377c66bca562ae3d7ce6f.tar.bz2 |
Chromoting's ContinueWindow implementation for Linux.
BUG=None
TEST=Manual
Review URL: http://codereview.chromium.org/7211018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89980 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | remoting/host/continue_window_linux.cc | 78 |
1 files changed, 74 insertions, 4 deletions
diff --git a/remoting/host/continue_window_linux.cc b/remoting/host/continue_window_linux.cc index 3b7d9d7..d0a1ff3 100644 --- a/remoting/host/continue_window_linux.cc +++ b/remoting/host/continue_window_linux.cc @@ -4,29 +4,99 @@ #include "remoting/host/continue_window.h" +#include <gtk/gtk.h> + #include "base/compiler_specific.h" #include "base/logging.h" +#include "remoting/host/chromoting_host.h" +#include "ui/base/gtk/gtk_signal.h" namespace remoting { +const char kContinueWindowTitle[] = "Remoting"; +const char kContinueWindowText[] = + "You are currently sharing this machine with another user. " + "Please confirm that you want to continue sharing."; +const char kContinueWindowButtonText[] = "Yes, continue sharing"; + class ContinueWindowLinux : public remoting::ContinueWindow { public: - ContinueWindowLinux() {} - virtual ~ContinueWindowLinux() {} + ContinueWindowLinux(); + virtual ~ContinueWindowLinux(); virtual void Show(remoting::ChromotingHost* host) OVERRIDE; virtual void Hide() OVERRIDE; private: + CHROMEG_CALLBACK_0(ContinueWindowLinux, void, OnOkClicked, GtkButton*); + + void CreateWindow(); + + ChromotingHost* host_; + GtkWidget* continue_window_; + DISALLOW_COPY_AND_ASSIGN(ContinueWindowLinux); }; +ContinueWindowLinux::ContinueWindowLinux() + : host_(NULL), + continue_window_(NULL) { +} + +ContinueWindowLinux::~ContinueWindowLinux() { +} + +void ContinueWindowLinux::CreateWindow() { + if (continue_window_) return; + + continue_window_ = gtk_window_new(GTK_WINDOW_TOPLEVEL); + GtkWindow* window = GTK_WINDOW(continue_window_); + gtk_window_set_title(window, kContinueWindowTitle); + gtk_window_set_resizable(window, FALSE); + + g_signal_connect(window, "delete-event", + G_CALLBACK(gtk_widget_hide_on_delete), NULL); + + GtkWidget* main_area = gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(continue_window_), main_area); + + GtkWidget* text_row = gtk_hbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(main_area), text_row); + + GtkWidget* text_label = gtk_label_new(kContinueWindowText); + gtk_label_set_line_wrap(GTK_LABEL(text_label), TRUE); + gtk_container_add(GTK_CONTAINER(text_row), text_label); + + GtkWidget* button_box = gtk_hbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(main_area), button_box); + + GtkWidget* ok_button = gtk_button_new_with_label(kContinueWindowButtonText); + gtk_box_pack_start(GTK_BOX(button_box), ok_button, + TRUE, FALSE, 0); + + g_signal_connect(ok_button, "clicked", + G_CALLBACK(OnOkClickedThunk), this); + + gtk_widget_show_all(main_area); +} + void ContinueWindowLinux::Show(remoting::ChromotingHost* host) { - NOTIMPLEMENTED(); + host_ = host; + CreateWindow(); + gtk_window_present(GTK_WINDOW(continue_window_)); } void ContinueWindowLinux::Hide() { - NOTIMPLEMENTED(); + CHECK(continue_window_); + + gtk_widget_hide(continue_window_); +} + +void ContinueWindowLinux::OnOkClicked(GtkButton* sender) { + CHECK(host_); + + host_->PauseSession(false); + Hide(); } ContinueWindow* ContinueWindow::Create() { |