Implemented the play, pause, stop button proccessing.
Changed some rfbplayer's defines.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@126 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/rfbplayer/resource.h b/rfbplayer/resource.h
index f6e935b..54ab200 100644
--- a/rfbplayer/resource.h
+++ b/rfbplayer/resource.h
@@ -6,36 +6,31 @@
#define IDR_MENU 128
#define IDR_ACCELERATOR 131
#define IDB_TOOLBAR 132
-#define ID_FILE_OPENFILE 40011
-#define ID_FILE_CLOSEFILE 40012
-#define ID_FILE_EXIT 40013
-#define ID_VIEW_FULLSCREEN 40014
-#define ID_VIEW_ZOOM_50 40015
-#define ID_VIEW_ZOOM_100 40016
-#define ID_VIEW_ZOOM_200 40017
-#define ID_PLAY_PLAYPAUSE 40018
-#define ID_PLAY_STOP 40019
-#define ID_PLAY_GOTO 40020
-#define ID_PLAY_SETSPEED 40021
-#define ID_PLAY_LOOP 40022
-#define ID_FRAME_COPYTOCLIPBOARD 40023
-#define ID_FRAME_EXTRACT 40024
+#define ID_OPENFILE 40011
+#define ID_CLOSEFILE 40012
+#define ID_EXIT 40013
+#define ID_FULLSCREEN 40014
+#define ID_ZOOM_50 40015
+#define ID_ZOOM_100 40016
+#define ID_ZOOM_200 40017
+#define ID_PLAYPAUSE 40018
+#define ID_STOP 40019
+#define ID_GOTO 40020
+#define ID_SETSPEED 40021
+#define ID_LOOP 40022
+#define ID_COPYTOCLIPBOARD 40023
+#define ID_FRAMEEXTRACT 40024
#define ID_HELP_HOMEPAGE 40025
#define ID_HELP_COMMANDLINESEITCHES 40026
#define ID_HELP_ABOUT 40027
#define ID_OPTIONS 40029
-#define ID_FULLSCREEN 40030
-#define ID_STOP 40031
-#define ID_GOTO 40032
-#define ID_SETSPEED 40033
-#define ID_LOOP 40034
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 133
-#define _APS_NEXT_COMMAND_VALUE 40035
+#define _APS_NEXT_COMMAND_VALUE 40044
#define _APS_NEXT_CONTROL_VALUE 1003
#define _APS_NEXT_SYMED_VALUE 101
#endif
diff --git a/rfbplayer/rfbplayer.cxx b/rfbplayer/rfbplayer.cxx
index 4fd2d27..bcdd631 100644
--- a/rfbplayer/rfbplayer.cxx
+++ b/rfbplayer/rfbplayer.cxx
@@ -241,6 +241,8 @@
LRESULT
RfbPlayer::processMainMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
+ static HMENU hmenu; // handle to main menu
+
switch (msg) {
// -=- Process standard window messages
@@ -254,14 +256,60 @@
createToolBar(hwnd);
+ hmenu = GetMenu(hwnd);
+
return 0;
}
// Process the main menu and toolbar's messages
case WM_COMMAND:
- {
-
+ switch (LOWORD(wParam)) {
+ case ID_PLAY:
+ setPaused(false);
+ tb.checkButton(ID_PLAY, true);
+ tb.checkButton(ID_STOP, false);
+ tb.checkButton(ID_PAUSE, false);
+ CheckMenuItem(hmenu, ID_PLAYPAUSE, MF_CHECKED);
+ CheckMenuItem(hmenu, ID_STOP, MF_UNCHECKED);
+ break;
+ case ID_PAUSE:
+ setPaused(true);
+ tb.checkButton(ID_PAUSE, true);
+ tb.checkButton(ID_PLAY, false);
+ tb.checkButton(ID_STOP, false);
+ CheckMenuItem(hmenu, ID_PLAYPAUSE, MF_CHECKED);
+ CheckMenuItem(hmenu, ID_STOP, MF_UNCHECKED);
+ break;
+ case ID_STOP:
+ if (getTimeOffset() != 0) {
+ setPaused(true);
+ setPos(0);
+ }
+ tb.checkButton(ID_STOP, true);
+ tb.checkButton(ID_PLAY, false);
+ tb.checkButton(ID_PAUSE, false);
+ CheckMenuItem(hmenu, ID_STOP, MF_CHECKED);
+ CheckMenuItem(hmenu, ID_PLAYPAUSE, MF_UNCHECKED);
+ break;
+ case ID_PLAYPAUSE:
+ if (isPaused()) {
+ setPaused(false);
+ tb.checkButton(ID_PLAY, true);
+ tb.checkButton(ID_STOP, false);
+ tb.checkButton(ID_PAUSE, false);
+ } else {
+ setPaused(true);
+ tb.checkButton(ID_PAUSE, true);
+ tb.checkButton(ID_PLAY, false);
+ tb.checkButton(ID_STOP, false);
+ }
+ CheckMenuItem(hmenu, ID_PLAYPAUSE, MF_CHECKED);
+ CheckMenuItem(hmenu, ID_STOP, MF_UNCHECKED);
+ break;
+ case ID_FULLSCREEN:
+ MessageBox(getMainHandle(), "It is not working yet!", "RfbPlayer", MB_OK);
+ break;
}
break;
@@ -400,6 +448,12 @@
long initTime = -1;
long update_time = GetTickCount();
+ // Check the play button if autoplay
+ if (autoplay) {
+ tb.checkButton(ID_PLAY, true);
+ CheckMenuItem(GetMenu(getMainHandle()), ID_PLAYPAUSE, MF_CHECKED);
+ }
+
// Process the rfb messages
while (fRun) {
try {
@@ -416,6 +470,9 @@
if (strcmp(e.str(), "[End Of File]") == 0) {
rewind();
setPaused(true);
+ tb.checkButton(ID_STOP, true);
+ tb.checkButton(ID_PAUSE, false);
+ tb.checkButton(ID_PLAY, false);
continue;
}
// It's a special exception to perform backward seeking.
@@ -652,9 +709,6 @@
// Set the window title and show it
setTitle(cp.name());
-
- // Set the player's param
- applyOptions();
}
void RfbPlayer::setColourMapEntries(int first, int count, U16* rgbs) {
diff --git a/rfbplayer/rfbplayer.rc b/rfbplayer/rfbplayer.rc
index e349cf8..8ac1ea3 100644
--- a/rfbplayer/rfbplayer.rc
+++ b/rfbplayer/rfbplayer.rc
@@ -123,24 +123,24 @@
BEGIN
POPUP "File"
BEGIN
- MENUITEM "Open File...\tCtrl+O", ID_FILE_OPENFILE
- MENUITEM "Close File...\tCtrl+Q", ID_FILE_CLOSEFILE
+ MENUITEM "Open File...\tCtrl+O", ID_OPENFILE
+ MENUITEM "Close File...\tCtrl+Q", ID_CLOSEFILE
MENUITEM SEPARATOR
- MENUITEM "Exit\tAlt+X", ID_FILE_EXIT
+ MENUITEM "Exit\tAlt+X", ID_EXIT
END
POPUP "View"
BEGIN
MENUITEM "Full Screen\tAlt+Enter", ID_FULLSCREEN
POPUP "Zoom"
BEGIN
- MENUITEM "50%\tF5", ID_VIEW_ZOOM_50
- MENUITEM "100%\tF6", ID_VIEW_ZOOM_100
- MENUITEM "200%\tF7", ID_VIEW_ZOOM_200
+ MENUITEM "50%\tF5", ID_ZOOM_50
+ MENUITEM "100%\tF6", ID_ZOOM_100
+ MENUITEM "200%\tF7", ID_ZOOM_200
END
END
POPUP "Play"
BEGIN
- MENUITEM "Play/Pause\tSpace", ID_PLAY_PLAYPAUSE
+ MENUITEM "Play/Pause\tSpace", ID_PLAYPAUSE
MENUITEM "Stop\tC", ID_STOP
MENUITEM "Go To...\tCtrl+G", ID_GOTO
MENUITEM "Set Speed...\tCtrl+S", ID_SETSPEED
@@ -149,9 +149,9 @@
END
POPUP "Frame"
BEGIN
- MENUITEM "Copy To Clipboard\tCtrl+C", ID_FRAME_COPYTOCLIPBOARD
+ MENUITEM "Copy To Clipboard\tCtrl+C", ID_COPYTOCLIPBOARD
MENUITEM SEPARATOR
- MENUITEM "Extract...\tAlt+C", ID_FRAME_EXTRACT
+ MENUITEM "Extract...\tAlt+C", ID_FRAMEEXTRACT
END
MENUITEM "Options", 65535
POPUP "Help"
@@ -171,21 +171,21 @@
IDR_ACCELERATOR ACCELERATORS DISCARDABLE
BEGIN
- "C", ID_PLAY_STOP, VIRTKEY, NOINVERT
- "C", ID_FRAME_COPYTOCLIPBOARD, VIRTKEY, CONTROL, NOINVERT
- "C", ID_FRAME_EXTRACT, VIRTKEY, ALT, NOINVERT
- "G", ID_PLAY_GOTO, VIRTKEY, CONTROL, NOINVERT
- "L", ID_PLAY_LOOP, VIRTKEY, CONTROL, NOINVERT
- "O", ID_FILE_OPENFILE, VIRTKEY, CONTROL, NOINVERT
+ "C", ID_STOP, VIRTKEY, NOINVERT
+ "C", ID_COPYTOCLIPBOARD, VIRTKEY, CONTROL, NOINVERT
+ "C", ID_FRAMEEXTRACT, VIRTKEY, ALT, NOINVERT
+ "G", ID_GOTO, VIRTKEY, CONTROL, NOINVERT
+ "L", ID_LOOP, VIRTKEY, CONTROL, NOINVERT
+ "O", ID_OPENFILE, VIRTKEY, CONTROL, NOINVERT
"P", ID_OPTIONS, VIRTKEY, CONTROL, NOINVERT
- "Q", ID_FILE_CLOSEFILE, VIRTKEY, CONTROL, NOINVERT
- "S", ID_PLAY_SETSPEED, VIRTKEY, CONTROL, NOINVERT
- VK_F5, ID_VIEW_ZOOM_50, VIRTKEY, NOINVERT
- VK_F6, ID_VIEW_ZOOM_100, VIRTKEY, NOINVERT
- VK_F7, ID_VIEW_ZOOM_200, VIRTKEY, NOINVERT
- VK_RETURN, ID_VIEW_FULLSCREEN, VIRTKEY, ALT, NOINVERT
- VK_SPACE, ID_PLAY_PLAYPAUSE, VIRTKEY, NOINVERT
- "X", ID_FILE_EXIT, VIRTKEY, ALT, NOINVERT
+ "Q", ID_CLOSEFILE, VIRTKEY, CONTROL, NOINVERT
+ "S", ID_SETSPEED, VIRTKEY, CONTROL, NOINVERT
+ VK_F5, ID_ZOOM_50, VIRTKEY, NOINVERT
+ VK_F6, ID_ZOOM_100, VIRTKEY, NOINVERT
+ VK_F7, ID_ZOOM_200, VIRTKEY, NOINVERT
+ VK_RETURN, ID_FULLSCREEN, VIRTKEY, ALT, NOINVERT
+ VK_SPACE, ID_PLAYPAUSE, VIRTKEY, NOINVERT
+ "X", ID_EXIT, VIRTKEY, ALT, NOINVERT
END