webrtc/peerconnection/samples/client/linux/main_wnd.h
tommi@google.com b0d7a87bb0 Mock implementation for the UI of the linux version of the peerconnection client.
At this point, there's not a lot too it as it only shows what the UI will look like and basically mimics what the Windows version does presently.
Review URL: http://webrtc-codereview.appspot.com/92018

git-svn-id: http://webrtc.googlecode.com/svn/trunk@344 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-08-10 09:03:29 +00:00

73 lines
2.4 KiB
C++

/*
* 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_