Beispiel #1
0
        public override void OnAction(Action action)
        {
            if (action.wID == Action.ActionType.ACTION_HOME || action.wID == Action.ActionType.ACTION_SWITCH_HOME)
            {
                return;
            }

            if ((DateTime.Now.Ticks / 10000) - m_dwLastTime > 500)
            {
                m_iSpeed  = 1;
                m_iCountU = 0;
                m_iCountD = 0;
                m_iCountL = 0;
                m_iCountR = 0;
            }
            m_dwLastTime = (DateTime.Now.Ticks / 10000);

            int x, y;

            if (m_iControl == (int)Controls.CONTROL_TOP_LEFT)
            {
                x = GUIGraphicsContext.OverScanLeft;
                y = GUIGraphicsContext.OverScanTop;
            }
            else if (m_iControl == (int)Controls.CONTROL_BOTTOM_RIGHT)
            {
                x = GUIGraphicsContext.OverScanWidth + GUIGraphicsContext.OverScanLeft;
                y = GUIGraphicsContext.OverScanHeight + GUIGraphicsContext.OverScanTop;
            }
            else if (m_iControl == (int)Controls.CONTROL_SUBTITLES)
            {
                x = 0;
                y = GUIGraphicsContext.Subtitles;
            }
            else if (m_iControl == (int)Controls.CONTROL_OSD)
            {
                x = 0;
                y = (GUIGraphicsContext.Height + GUIGraphicsContext.OSDOffset);
            }
            else // (m_iControl == (int)Controls.CONTROL_PIXEL_RATIO)
            {
                y = 256;
                x = (int)(256.0f / GUIGraphicsContext.PixelRatio);
            }

            float fPixelRatio = GUIGraphicsContext.PixelRatio;

            if (m_iSpeed > 10)
            {
                m_iSpeed = 10; // Speed limit for accellerated cursors
            }

            switch (action.wID)
            {
            case Action.ActionType.ACTION_PREVIOUS_MENU:
            {
                GUIWindowManager.ShowPreviousWindow();
                return;
            }

            case Action.ActionType.ACTION_MOVE_LEFT:
            {
                if (m_iCountL == 0)
                {
                    m_iSpeed = 1;
                }
                x -= m_iSpeed;
                m_iCountL++;
                if (m_iCountL > 5 && m_iSpeed < 10)
                {
                    m_iSpeed += 1;
                    m_iCountL = 1;
                }
                m_iCountU = 0;
                m_iCountD = 0;
                m_iCountR = 0;
                if (m_iControl == (int)Controls.CONTROL_PIXEL_RATIO)
                {
                    fPixelRatio -= 0.01f;
                }
            }
            break;

            case Action.ActionType.ACTION_MOVE_RIGHT:
            {
                if (m_iCountR == 0)
                {
                    m_iSpeed = 1;
                }
                x += m_iSpeed;
                m_iCountR++;
                if (m_iCountR > 5 && m_iSpeed < 10)
                {
                    m_iSpeed += 1;
                    m_iCountR = 1;
                }
                m_iCountU = 0;
                m_iCountD = 0;
                m_iCountL = 0;
                if (m_iControl == (int)Controls.CONTROL_PIXEL_RATIO)
                {
                    fPixelRatio += 0.01f;
                }
            }
            break;

            case Action.ActionType.ACTION_MOVE_UP:
            {
                if (m_iCountU == 0)
                {
                    m_iSpeed = 1;
                }
                y -= m_iSpeed;
                m_iCountU++;
                if (m_iCountU > 5 && m_iSpeed < 10)
                {
                    m_iSpeed += 1;
                    m_iCountU = 1;
                }
                m_iCountD = 0;
                m_iCountL = 0;
                m_iCountR = 0;
                if (m_iControl == (int)Controls.CONTROL_PIXEL_RATIO)
                {
                    fPixelRatio -= 0.05f;
                }
            }
            break;

            case Action.ActionType.ACTION_MOVE_DOWN:
            {
                if (m_iCountD == 0)
                {
                    m_iSpeed = 1;
                }
                y += m_iSpeed;
                m_iCountD++;
                if (m_iCountD > 5 && m_iSpeed < 10)
                {
                    m_iSpeed += 1;
                    m_iCountD = 1;
                }
                m_iCountU = 0;
                m_iCountL = 0;
                m_iCountR = 0;
                if (m_iControl == (int)Controls.CONTROL_PIXEL_RATIO)
                {
                    fPixelRatio += 0.05f;
                }
            }
            break;

            case Action.ActionType.ACTION_CALIBRATE_SWAP_ARROWS:
                m_iControl++;
                if (m_iControl > (int)Controls.CONTROL_OSD)
                {
                    m_iControl = (int)Controls.CONTROL_TOP_LEFT;
                }
                m_iSpeed  = 1;
                m_iCountU = 0;
                m_iCountD = 0;
                m_iCountL = 0;
                m_iCountR = 0;
                return;


            case Action.ActionType.ACTION_CALIBRATE_RESET:
                //GUIGraphicsContext.ResetScreenParameters(m_Res[m_iCurRes]);
                GUIGraphicsContext.OverScanLeft = 0;
                GUIGraphicsContext.OverScanTop  = 0;
                GUIGraphicsContext.PixelRatio   = 1.0f;
                GUIGraphicsContext.OSDOffset    = 0;
                GUIGraphicsContext.Subtitles    = 530;

                GUIGraphicsContext.OverScanWidth  = GUIGraphicsContext.Width;
                GUIGraphicsContext.OverScanHeight = GUIGraphicsContext.Height;
                m_iSpeed  = 1;
                m_iCountU = 0;
                m_iCountD = 0;
                m_iCountL = 0;
                m_iCountR = 0;
                GUIWindowManager.ResetAllControls();

                return;


            case Action.ActionType.ACTION_CHANGE_RESOLUTION:
                // choose the next resolution in our list
                //m_iCurRes++;
                //if (m_iCurRes == m_Res.size())
                //  m_iCurRes = 0;
                //Sleep(1000);
                //GUIGraphicsContext.SetGUIResolution(m_Res[m_iCurRes]);
                GUIWindowManager.ResetAllControls();
                return;


            case Action.ActionType.ACTION_ANALOG_MOVE:
                x += (int)(2 * action.fAmount1);
                y -= (int)(2 * action.fAmount2);
                break;
            }
            // do the movement
            switch (m_iControl)
            {
            case (int)Controls.CONTROL_TOP_LEFT:
                if (x < 0)
                {
                    x = 0;
                }
                if (y < 0)
                {
                    y = 0;
                }
                if (x > 128)
                {
                    x = 128;
                }
                if (y > 128)
                {
                    y = 128;
                }
                GUIGraphicsContext.OverScanWidth  += GUIGraphicsContext.OverScanLeft - x;
                GUIGraphicsContext.OverScanHeight += GUIGraphicsContext.OverScanTop - y;
                GUIGraphicsContext.OverScanLeft    = x;
                GUIGraphicsContext.OverScanTop     = y;
                break;

            case (int)Controls.CONTROL_BOTTOM_RIGHT:
                if (x > GUIGraphicsContext.Width)
                {
                    x = GUIGraphicsContext.Width;
                }
                if (y > GUIGraphicsContext.Height)
                {
                    y = GUIGraphicsContext.Height;
                }
                if (x < GUIGraphicsContext.Width - 128)
                {
                    x = GUIGraphicsContext.Width - 128;
                }
                if (y < GUIGraphicsContext.Height - 128)
                {
                    y = GUIGraphicsContext.Height - 128;
                }
                GUIGraphicsContext.OverScanWidth  = x - GUIGraphicsContext.OverScanLeft;
                GUIGraphicsContext.OverScanHeight = y - GUIGraphicsContext.OverScanTop;
                break;

            case (int)Controls.CONTROL_SUBTITLES:
                if (y > GUIGraphicsContext.Height)
                {
                    y = GUIGraphicsContext.Height;
                }
                if (y < GUIGraphicsContext.Height - 128)
                {
                    y = GUIGraphicsContext.Height - 128;
                }
                GUIGraphicsContext.Subtitles = y;
                break;

            case (int)Controls.CONTROL_OSD:
                GUIGraphicsContext.OSDOffset = (y - GUIGraphicsContext.Height);
                GUIWindow window = GUIWindowManager.GetWindow((int)Window.WINDOW_OSD);
                window.ResetAllControls();
                break;

            case (int)Controls.CONTROL_PIXEL_RATIO:
                GUIGraphicsContext.PixelRatio = fPixelRatio;
                break;
            }
            base.OnAction(action);
        }