summaryrefslogtreecommitdiffstats
path: root/remoting/host/continue_window_linux.cc
diff options
context:
space:
mode:
authorlambroslambrou@chromium.org <lambroslambrou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-22 04:51:55 +0000
committerlambroslambrou@chromium.org <lambroslambrou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-22 04:51:55 +0000
commiteb5b918d3686368b21b377c66bca562ae3d7ce6f (patch)
tree118aa6e6a1fa7c45c01de24f9c5e9afb149e5596 /remoting/host/continue_window_linux.cc
parent752b3cbd793c778905c488d6025dc2cd96173bed (diff)
downloadchromium_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
Diffstat (limited to 'remoting/host/continue_window_linux.cc')
-rw-r--r--remoting/host/continue_window_linux.cc78
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() {