summaryrefslogtreecommitdiffstats
path: root/win/rfbplayer/PlayerToolBar.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'win/rfbplayer/PlayerToolBar.cxx')
-rw-r--r--win/rfbplayer/PlayerToolBar.cxx248
1 files changed, 0 insertions, 248 deletions
diff --git a/win/rfbplayer/PlayerToolBar.cxx b/win/rfbplayer/PlayerToolBar.cxx
deleted file mode 100644
index 3056f283..00000000
--- a/win/rfbplayer/PlayerToolBar.cxx
+++ /dev/null
@@ -1,248 +0,0 @@
-/* Copyright (C) 2005 TightVNC Team. All Rights Reserved.
- *
- * This is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this software; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-
-// -=- PlayerToolBar.cxx
-
-#include <rfbplayer/rfbplayer.h>
-#include <rfbplayer/resource.h>
-
-PlayerToolBar::PlayerToolBar()
-: ToolBar(), hFont(0), timeStatic(0), speedEdit(0), posTrackBar(0),
- speedUpDown(0), sliderDragging(false), sliderStepMs(0)
-{
-}
-
-void PlayerToolBar::create(RfbPlayer *player_, HWND parentHwnd_) {
- HDC hdc;
- SIZE sz;
- RECT tRect;
- NONCLIENTMETRICS nonClientMetrics;
-
- player = player_;
-
- // Get the default font for the main menu
- nonClientMetrics.cbSize = sizeof(NONCLIENTMETRICS);
- if (!SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &nonClientMetrics, 0))
- MessageBox(0, "Can't access to the system font.",
- "RfbPlayer", MB_OK | MB_ICONERROR);
- nonClientMetrics.lfMenuFont.lfHeight = 16;
- hFont = CreateFontIndirect(&nonClientMetrics.lfMenuFont);
-
- // Create the toolbar panel
- ToolBar::create(ID_TOOLBAR, parentHwnd_,
- WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT | CCS_NORESIZE);
- addBitmap(4, IDB_TOOLBAR);
-
- // Create the control buttons
- addButton(0, ID_PLAY);
- addButton(1, ID_PAUSE);
- addButton(2, ID_STOP);
- addButton(0, 0, TBSTATE_ENABLED, TBSTYLE_SEP);
-
- // Create the static control for the time output
- timeStatic = CreateWindowEx(0, "Static", "00m:00s (00m:00s)",
- WS_CHILD | WS_VISIBLE, 0, 0, 20, 20, getHandle(), (HMENU)ID_TIME_STATIC,
- GetModuleHandle(0), 0);
- SendMessage(timeStatic, WM_SETFONT,(WPARAM) hFont, TRUE);
- hdc = GetDC(timeStatic);
- SelectObject(hdc, hFont);
- GetTextExtentPoint32(hdc, "00m:00s (00m:00s)", 16, &sz);
- addButton(sz.cx + 10, 0, TBSTATE_ENABLED, TBSTYLE_SEP);
- addButton(0, 10, TBSTATE_ENABLED, TBSTYLE_SEP);
- getButtonRect(4, &tRect);
- MoveWindow(timeStatic, tRect.left, tRect.top+2, tRect.right-tRect.left,
- tRect.bottom-tRect.top, FALSE);
-
- // Create the trackbar control for the time position
- addButton(200, 0, TBSTATE_ENABLED, TBSTYLE_SEP);
- getButtonRect(6, &tRect);
- posTrackBar = CreateWindowEx(0, TRACKBAR_CLASS, "Trackbar Control",
- WS_CHILD | WS_VISIBLE | TBS_AUTOTICKS | TBS_ENABLESELRANGE,
- tRect.left, tRect.top, tRect.right-tRect.left, tRect.bottom-tRect.top,
- parentHwnd, (HMENU)ID_POS_TRACKBAR, GetModuleHandle(0), 0);
- // It's need to send notify messages to toolbar parent window
- SetParent(posTrackBar, getHandle());
- addButton(0, 10, TBSTATE_ENABLED, TBSTYLE_SEP);
-
- // Create the label with "Speed:" caption
- HWND speedStatic = CreateWindowEx(0, "Static", "Speed:", WS_CHILD | WS_VISIBLE,
- 0, 0, 5, 5, getHandle(), (HMENU)ID_SPEED_STATIC, GetModuleHandle(0), 0);
- SendMessage(speedStatic, WM_SETFONT,(WPARAM) hFont, TRUE);
- hdc = GetDC(speedStatic);
- SelectObject(hdc, hFont);
- GetTextExtentPoint32(hdc, "Speed:", 6, &sz);
- addButton(sz.cx + 10, 0, TBSTATE_ENABLED, TBSTYLE_SEP);
- getButtonRect(8, &tRect);
- MoveWindow(speedStatic, tRect.left, tRect.top+2, tRect.right-tRect.left,
- tRect.bottom-tRect.top, FALSE);
-
- // Create the edit control and the spin for the speed managing
- addButton(60, 0, TBSTATE_ENABLED, TBSTYLE_SEP);
- getButtonRect(9, &tRect);
- speedEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "Edit", "1.00",
- WS_CHILD | WS_VISIBLE | ES_RIGHT, tRect.left, tRect.top,
- tRect.right-tRect.left, tRect.bottom-tRect.top, parentHwnd,
- (HMENU)ID_SPEED_EDIT, GetModuleHandle(0), 0);
- SendMessage(speedEdit, WM_SETFONT,(WPARAM) hFont, TRUE);
- // It's need to send notify messages to toolbar parent window
- SetParent(speedEdit, getHandle());
-
- speedUpDown = CreateUpDownControl(WS_CHILD | WS_VISIBLE
- | WS_BORDER | UDS_ALIGNRIGHT, 0, 0, 0, 0, getHandle(),
- ID_SPEED_UPDOWN, GetModuleHandle(0), speedEdit, 20, 1, 2);
-
- // Resize the toolbar window
- autoSize();
-}
-
-void PlayerToolBar::init(long sessionTimeMs_) {
- sessionTimeMs = sessionTimeMs_;
-
- setSessionTimeStr(sessionTimeMs);
- SendMessage(posTrackBar, TBM_SETRANGE,
- TRUE, MAKELONG(0, min(sessionTimeMs / 1000, MAX_POS_TRACKBAR_RANGE)));
- if (sessionTimeMs == 0) {
- sliderStepMs = 1;
- } else {
- sliderStepMs = sessionTimeMs / SendMessage(posTrackBar, TBM_GETRANGEMAX, 0, 0);
- }
- updatePos(0);
-}
-
-void PlayerToolBar::enable() {
- enableButton(ID_PLAY, true);
- enableButton(ID_PAUSE, true);
- enableButton(ID_STOP, true);
- enableButton(ID_FULLSCREEN, true);
- EnableWindow(posTrackBar, true);
- EnableWindow(speedEdit, true);
- EnableWindow(speedUpDown, true);
-}
-
-void PlayerToolBar::disable() {
- enableButton(ID_PLAY, false);
- enableButton(ID_PAUSE, false);
- enableButton(ID_STOP, false);
- enableButton(ID_FULLSCREEN, false);
- EnableWindow(posTrackBar, false);
- EnableWindow(speedEdit, false);
- EnableWindow(speedUpDown, false);
-}
-
-LRESULT PlayerToolBar::processWM_COMMAND(WPARAM wParam, LPARAM lParam) {
- switch (LOWORD(wParam)) {
-
- case ID_RETURN:
- // Update the speed if return pressed in speedEdit
- if (getSpeedEditHwnd() == GetFocus()) {
- char speedStr[20], *stopStr;
- GetWindowText(getSpeedEditHwnd(), speedStr, sizeof(speedStr));
- double speed = strtod(speedStr, &stopStr);
- if (speed > 0) {
- speed = min(MAX_SPEED, speed);
- } else {
- speed = player->getSpeed();
- }
- player->setSpeed(speed);
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-LRESULT PlayerToolBar::processWM_HSCROLL(WPARAM wParam, LPARAM lParam) {
- long Pos = SendMessage(posTrackBar, TBM_GETPOS, 0, 0);
- Pos *= sliderStepMs;
-
- switch (LOWORD(wParam)) {
- case TB_PAGEUP:
- case TB_PAGEDOWN:
- case TB_LINEUP:
- case TB_LINEDOWN:
- case TB_THUMBTRACK:
- sliderDragging = true;
- updatePos(Pos);
- return FALSE;
- case TB_THUMBPOSITION:
- case TB_ENDTRACK:
- player->setPos(Pos);
- player->setPaused(player->isPaused());;
- updatePos(Pos);
- sliderDragging = false;
- return FALSE;
- default:
- break;
- }
-
- return TRUE;
-}
-
-LRESULT PlayerToolBar::processWM_NOTIFY(WPARAM wParam, LPARAM lParam) {
- switch (((NMHDR*)lParam)->code) {
- case UDN_DELTAPOS:
- if ((int)wParam == ID_SPEED_UPDOWN) {
- 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
- 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) != player->getSpeed()) {
- upDown->iDelta = 0;
- }
- speed = max(upDown->iPos + upDown->iDelta, HIWORD(speedRange)) * 0.5;
- }
- player->setSpeed(speed);
- }
- }
-
- // We always return TRUE to prevent the change in the updown contol
- // position. The control's position changes in the RfbPlayer::setSpeed().
- return TRUE;
-}
-
-void PlayerToolBar::updatePos(long newPos) {
- // Update time pos in static control
- char timePos[30] = "\0";
- long time = newPos / 1000;
- sprintf(timePos, "%.2um:%.2us (%s)", time/60, time%60, fullSessionTimeStr);
- SetWindowText(timeStatic, timePos);
-
- // Update the position of slider
- if (!sliderDragging) {
- double error = SendMessage(posTrackBar, TBM_GETPOS, 0, 0) *
- sliderStepMs / double(newPos);
- if (!((error > 1 - CALCULATION_ERROR) && (error <= 1 + CALCULATION_ERROR))) {
- SendMessage(posTrackBar, TBM_SETPOS, TRUE, newPos / sliderStepMs);
- }
- }
-}
-
-void PlayerToolBar::setSessionTimeStr(long sessionTimeMs) {
- sprintf(fullSessionTimeStr, "%.2um:%.2us",
- sessionTimeMs / 1000 / 60, sessionTimeMs / 1000 % 60);
-}
-
-void PlayerToolBar::setTimePos(long pos) {
- SendMessage(posTrackBar, TBM_SETPOS, TRUE, pos);
-} \ No newline at end of file