103 lines
2.3 KiB
C++
103 lines
2.3 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_MAIN_WND_H_
|
|
#define PEERCONNECTION_SAMPLES_CLIENT_MAIN_WND_H_
|
|
#pragma once
|
|
|
|
#include <map>
|
|
#include <string>
|
|
|
|
#include "peerconnection/samples/client/peer_connection_client.h"
|
|
#include "talk/base/win32.h"
|
|
|
|
class MainWndCallback {
|
|
public:
|
|
virtual void StartLogin(const std::string& server, int port) = 0;
|
|
virtual void DisconnectFromServer() = 0;
|
|
virtual void ConnectToPeer(int peer_id) = 0;
|
|
virtual void DisconnectFromCurrentPeer() = 0;
|
|
protected:
|
|
virtual ~MainWndCallback() {}
|
|
};
|
|
|
|
class MainWnd {
|
|
public:
|
|
static const wchar_t kClassName[];
|
|
|
|
enum UI {
|
|
CONNECT_TO_SERVER,
|
|
LIST_PEERS,
|
|
STREAMING,
|
|
};
|
|
|
|
MainWnd();
|
|
~MainWnd();
|
|
|
|
bool Create();
|
|
bool Destroy();
|
|
bool IsWindow() const;
|
|
|
|
void RegisterObserver(MainWndCallback* callback);
|
|
|
|
bool PreTranslateMessage(MSG* msg);
|
|
|
|
void SwitchToConnectUI();
|
|
void SwitchToPeerList(const Peers& peers);
|
|
void SwitchToStreamingUI();
|
|
|
|
HWND handle() const { return wnd_; }
|
|
UI current_ui() const { return ui_; }
|
|
|
|
protected:
|
|
enum ChildWindowID {
|
|
EDIT_ID = 1,
|
|
BUTTON_ID,
|
|
LABEL1_ID,
|
|
LABEL2_ID,
|
|
LISTBOX_ID,
|
|
};
|
|
|
|
void OnPaint();
|
|
void OnDestroyed();
|
|
|
|
void OnDefaultAction();
|
|
|
|
bool OnMessage(UINT msg, WPARAM wp, LPARAM lp, LRESULT* result);
|
|
|
|
static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp);
|
|
static bool RegisterWindowClass();
|
|
|
|
void CreateChildWindow(HWND* wnd, ChildWindowID id, const wchar_t* class_name,
|
|
DWORD control_style, DWORD ex_style);
|
|
void CreateChildWindows();
|
|
|
|
void LayoutConnectUI(bool show);
|
|
void LayoutPeerListUI(bool show);
|
|
|
|
void HandleTabbing();
|
|
|
|
private:
|
|
UI ui_;
|
|
HWND wnd_;
|
|
HWND edit1_;
|
|
HWND edit2_;
|
|
HWND label1_;
|
|
HWND label2_;
|
|
HWND button_;
|
|
HWND listbox_;
|
|
bool destroyed_;
|
|
void* nested_msg_;
|
|
MainWndCallback* callback_;
|
|
static ATOM wnd_class_;
|
|
};
|
|
|
|
#endif // PEERCONNECTION_SAMPLES_CLIENT_MAIN_WND_H_
|