/* * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #ifndef PEERCONNECTION_SAMPLES_CLIENT_LINUX_MAIN_WND_H_ #define PEERCONNECTION_SAMPLES_CLIENT_LINUX_MAIN_WND_H_ // Forward declarations. typedef struct _GtkWidget GtkWidget; typedef union _GdkEvent GdkEvent; typedef struct _GdkEventKey GdkEventKey; typedef struct _GtkTreeView GtkTreeView; typedef struct _GtkTreePath GtkTreePath; typedef struct _GtkTreeViewColumn GtkTreeViewColumn; // Implements the main UI of the peer connection client. // This is functionally equivalent to the MainWnd class in the Windows // implementation. class GtkMainWnd { public: GtkMainWnd(); ~GtkMainWnd(); // Creates and shows the main window with the |Connect UI| enabled. bool Create(); // Destroys the window. When the window is destroyed, it ends the // main message loop. bool Destroy(); // Returns true iff the main window exists. bool IsWindow(); // Callback for when the main window is destroyed. void OnDestroyed(GtkWidget* widget, GdkEvent* event); // Callback for when the user clicks the "Connect" button. void OnClicked(GtkWidget* widget); // Callback for keystrokes. Used to capture Esc and Return. void OnKeyPress(GtkWidget* widget, GdkEventKey* key); // Callback when the user double clicks a peer in order to initiate a // connection. void OnRowActivated(GtkTreeView* tree_view, GtkTreePath* path, GtkTreeViewColumn* column); protected: // Switches to the Connect UI. The Connect UI must not already be active. void SwitchToConnectUI(); // Switches to a list view that shows a list of currently connected peers. // TODO(tommi): Support providing a peer list. void SwitchToPeerList(/*const Peers& peers*/); // Switches to the video streaming UI. void SwitchToStreamingUI(); GtkWidget* window_; // Our main window. GtkWidget* draw_area_; // The drawing surface for rendering video streams. GtkWidget* vbox_; // Container for the Connect UI. GtkWidget* peer_list_; // The list of peers. }; #endif // PEERCONNECTION_SAMPLES_CLIENT_LINUX_MAIN_WND_H_