]> source.dussan.org Git - tigervnc.git/commitdiff
Implemented the speed changing by edit control.
authorgeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Sat, 29 Jan 2005 15:03:06 +0000 (15:03 +0000)
committergeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Sat, 29 Jan 2005 15:03:06 +0000 (15:03 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@129 3789f03b-4d11-0410-bbf8-ca57d06f2519

rfbplayer/resource.h
rfbplayer/rfbplayer.cxx
rfbplayer/rfbplayer.rc

index 54ab200a0534c2f2a36dd8a7988990266dda1551..249a7d938d5b824015cbc513d8f539cc4f4f7715 100644 (file)
 #define ID_HELP_COMMANDLINESEITCHES     40026
 #define ID_HELP_ABOUT                   40027
 #define ID_OPTIONS                      40029
+#define ID_RETURN                       40044
 
 // Next default values for new objects
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        133
-#define _APS_NEXT_COMMAND_VALUE         40044
+#define _APS_NEXT_COMMAND_VALUE         40045
 #define _APS_NEXT_CONTROL_VALUE         1003
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
index 3fab791142a695b8e796066874800a2b4a0eb0c3..7cd1fe35185ef4d316e36706f3cf4e373289d02b 100644 (file)
@@ -44,6 +44,7 @@ extern const char* buildTime;
 // -=- RfbPlayer's defines
 
 #define strcasecmp _stricmp
+#define MAX_SPEED 10
 
 #define ID_TOOLBAR 500
 #define ID_PLAY 510
@@ -310,6 +311,25 @@ RfbPlayer::processMainMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
     case ID_FULLSCREEN:
       MessageBox(getMainHandle(), "It is not working yet!", "RfbPlayer", MB_OK);
       break;
+    case ID_RETURN:
+        // Update the speed if return pressed in speedEdit
+      if (speedEdit == GetFocus()) {
+        char speedStr[20], *stopStr;
+        GetWindowText(speedEdit, speedStr, sizeof(speedStr));
+        double speed = strtod(speedStr, &stopStr);
+        if (speed > 0) {
+          speed = min(MAX_SPEED, speed);
+          // Update speedUpDown position
+          SendMessage(speedUpDown, UDM_SETPOS, 
+            0, MAKELONG((short)(speed / 0.5), 0));
+        } else {
+          speed = getSpeed();
+        }
+        setSpeed(speed);
+        sprintf(speedStr, "%.2f", speed);
+        SetWindowText(speedEdit, speedStr);
+      }
+      break;
     }
     break;
 
@@ -347,24 +367,30 @@ RfbPlayer::processMainMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
     switch (((NMHDR*)lParam)->code) {
     case UDN_DELTAPOS:
       if ((int)wParam == ID_SPEED_UPDOWN) {
+        BOOL lResult = FALSE;
         char speedStr[20] = "\0";
         DWORD speedRange = SendMessage(speedUpDown, UDM_GETRANGE, 0, 0);
         LPNM_UPDOWN upDown = (LPNM_UPDOWN)lParam;
         double speed;
 
-        // the out of range checking
+        // The out of range checking
         if (upDown->iDelta > 0) {
           speed = min(upDown->iPos + upDown->iDelta, LOWORD(speedRange)) * 0.5;
         } else {
+          // It's need to round the UpDown position
+          if ((upDown->iPos * 0.5) != getSpeed()) {
+            upDown->iDelta = 0;
+            lResult = TRUE;
+          }
           speed = max(upDown->iPos + upDown->iDelta, HIWORD(speedRange)) * 0.5;
         }
         _gcvt(speed, 5, speedStr);
         sprintf(speedStr, "%.2f", speed);
         SetWindowText(speedEdit, speedStr);
         setSpeed(speed);
+        return lResult;
       }
-      return 0;
-    };
+    }
     return 0;
 
   case WM_CLOSE:
index 8ac1ea3c9bf818d942e75fab860edf54f783a594..6d64aefe45a1efa8d28d1c5199a30a08a5311166 100644 (file)
@@ -183,6 +183,7 @@ BEGIN
     VK_F5,          ID_ZOOM_50,             VIRTKEY, NOINVERT
     VK_F6,          ID_ZOOM_100,            VIRTKEY, NOINVERT
     VK_F7,          ID_ZOOM_200,            VIRTKEY, NOINVERT
+    VK_RETURN,      ID_RETURN,              VIRTKEY, NOINVERT
     VK_RETURN,      ID_FULLSCREEN,          VIRTKEY, ALT, NOINVERT
     VK_SPACE,       ID_PLAYPAUSE,           VIRTKEY, NOINVERT
     "X",            ID_EXIT,                VIRTKEY, ALT, NOINVERT