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