//
// Copyright 2005 The Android Open Source Project
//
// Main window declaration.
//
#ifndef _SIM_MAINFRAME_H
#define _SIM_MAINFRAME_H
#include "PhoneWindow.h"
#include "DeviceWindow.h"
#include "LogWindow.h"
#include "ExternalRuntime.h"
#include "PropertyServer.h"
/*
* Main window.
*/
class MainFrame : public wxFrame {
public:
/* define a constructor so we can set up menus */
MainFrame(const wxString& title, const wxPoint& pos, const wxSize& size,
long style);
virtual ~MainFrame(void);
/* called by modeless phone window dialog when it closes */
void PhoneWindowClosing(int x, int y);
void Vibrate(int vibrateOn) { mpPhoneWindow->Vibrate(vibrateOn); }
PropertyServer* GetPropertyServer(void) { return mPropertyServerThread; }
private:
void ConstructMenu(void);
void ConstructControls(void);
void OnClose(wxCloseEvent& event);
void OnTimer(wxTimerEvent& event);
//void OnIdle(wxIdleEvent& event);
void OnActivate(wxActivateEvent& event);
void OnButton(wxCommandEvent& event);
void OnComboBox(wxCommandEvent& event);
void OnCheckBox(wxCommandEvent& event);
void OnText(wxCommandEvent& event);
void OnTextEnter(wxCommandEvent& event);
void OnUserEvent(UserEvent& event);
void OnSliderChange(wxScrollEvent& event);
void OnFilePreferences(wxCommandEvent& event);
void OnFileExit(wxCommandEvent& event);
void OnUpdateSimStart(wxUpdateUIEvent& event);
void OnSimStart(wxCommandEvent& event);
void OnUpdateSimStop(wxUpdateUIEvent& event);
void OnSimStop(wxCommandEvent& event);
void OnUpdateSimReload(wxUpdateUIEvent& event);
void OnSimReload(wxCommandEvent& event);
void OnUpdateSimRestart(wxUpdateUIEvent& event);
void OnSimRestart(wxCommandEvent& event);
void OnUpdateSimKill(wxUpdateUIEvent& event);
void OnSimKill(wxCommandEvent& event);
void OnDeviceSelected(wxCommandEvent& event);
void OnDeviceRescan(wxCommandEvent& event);
void OnUpdateDebugShowLog(wxUpdateUIEvent& event);
void OnDebugShowLog(wxCommandEvent& event);
void OnHelpContents(wxCommandEvent& event);
void OnHelpAbout(wxCommandEvent& event);
wxMenu* CreateDeviceMenu(const char* defaultItemName);
void SetCheckFromPref(wxCheckBox* pControl, const char* prefStr,
bool defaultVal);
void UpdateRuntimeExeStr(void);
/* prep the phone UI; "defaultMode" may be NULL */
void SetupPhoneUI(int idx, const char* defaultMode);
bool CompatibleDevices(PhoneData* pData1, PhoneData* pData2);
void HandleRuntimeStart(void);
void HandleRuntimeStop(void);
void HandleExternalRuntime(android::Pipe* reader, android::Pipe* writer);
int GetSelectedDeviceIndex(void);
bool IsRuntimeRunning(void);
bool IsRuntimeKillable(void);
void BroadcastOnionSkinUpdate(void);
bool mSimRunning;
bool mRestartRequested;
enum { kHalfSecondTimerId = 1000 };
wxString mSimAssetPath;
/* if we have a phone running, this points to its state */
PhoneWindow* mpPhoneWindow;
/* phone window position */
wxPoint mPhoneWindowPosn;
/* window that captures log output */
LogWindow* mpLogWindow;
wxTimer mTimer;
/* watches for connection from runtime */
ExternalRuntime* mExternalRuntimeThread;
/* serve up system properties */
PropertyServer* mPropertyServerThread;
DECLARE_EVENT_TABLE()
};
#endif // _SIM_MAINFRAME_H