Ignore:
Timestamp:
May 16, 2014, 9:51:55 AM (11 years ago)
Author:
Silvan Scherrer
Message:

SMPlayer: update trunk to latest 0.8.7

Location:
smplayer/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • smplayer/trunk

  • smplayer/trunk/src/myapplication.cpp

    r142 r165  
    11/*  smplayer, GUI front-end for mplayer.
    2     Copyright (C) 2006-2013 Ricardo Villalba <rvm@users.sourceforge.net>
     2    Copyright (C) 2006-2014 Ricardo Villalba <rvm@users.sourceforge.net>
    33
    44    This program is free software; you can redistribute it and/or modify
     
    1919#include "myapplication.h"
    2020
     21#ifdef USE_WINEVENTFILTER
     22#include <QKeyEvent>
     23#include <QEvent>
     24#include <QWidget>
     25#include <windows.h>
     26#include <QDebug>
     27
     28#ifndef WM_APPCOMMAND
     29#define WM_APPCOMMAND 0x0319
     30#endif
     31
     32#ifndef FAPPCOMMAND_MOUSE
     33#define FAPPCOMMAND_MOUSE 0x8000
     34#define FAPPCOMMAND_KEY   0
     35#define FAPPCOMMAND_OEM   0x1000
     36#define FAPPCOMMAND_MASK  0xF000
     37#define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK))
     38#define GET_DEVICE_LPARAM(lParam)     ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK))
     39#define GET_MOUSEORKEY_LPARAM         GET_DEVICE_LPARAM
     40#define GET_FLAGS_LPARAM(lParam)      (LOWORD(lParam))
     41#define GET_KEYSTATE_LPARAM(lParam)   GET_FLAGS_LPARAM(lParam)
     42
     43#define APPCOMMAND_BROWSER_BACKWARD       1
     44#define APPCOMMAND_BROWSER_FORWARD        2
     45#define APPCOMMAND_BROWSER_REFRESH        3
     46#define APPCOMMAND_BROWSER_STOP           4
     47#define APPCOMMAND_BROWSER_SEARCH         5
     48#define APPCOMMAND_BROWSER_FAVORITES      6
     49#define APPCOMMAND_BROWSER_HOME           7
     50#define APPCOMMAND_VOLUME_MUTE            8
     51#define APPCOMMAND_VOLUME_DOWN            9
     52#define APPCOMMAND_VOLUME_UP              10
     53#define APPCOMMAND_MEDIA_NEXTTRACK        11
     54#define APPCOMMAND_MEDIA_PREVIOUSTRACK    12
     55#define APPCOMMAND_MEDIA_STOP             13
     56#define APPCOMMAND_MEDIA_PLAY_PAUSE       14
     57#define APPCOMMAND_LAUNCH_MAIL            15
     58#define APPCOMMAND_LAUNCH_MEDIA_SELECT    16
     59#define APPCOMMAND_LAUNCH_APP1            17
     60#define APPCOMMAND_LAUNCH_APP2            18
     61#define APPCOMMAND_BASS_DOWN              19
     62#define APPCOMMAND_BASS_BOOST             20
     63#define APPCOMMAND_BASS_UP                21
     64#define APPCOMMAND_TREBLE_DOWN            22
     65#define APPCOMMAND_TREBLE_UP              23
     66#endif // FAPPCOMMAND_MOUSE
     67 
     68// New commands from Windows XP (some even Sp1)
     69#ifndef APPCOMMAND_MICROPHONE_VOLUME_MUTE
     70#define APPCOMMAND_MICROPHONE_VOLUME_MUTE 24
     71#define APPCOMMAND_MICROPHONE_VOLUME_DOWN 25
     72#define APPCOMMAND_MICROPHONE_VOLUME_UP   26
     73#define APPCOMMAND_HELP                   27
     74#define APPCOMMAND_FIND                   28
     75#define APPCOMMAND_NEW                    29
     76#define APPCOMMAND_OPEN                   30
     77#define APPCOMMAND_CLOSE                  31
     78#define APPCOMMAND_SAVE                   32
     79#define APPCOMMAND_PRINT                  33
     80#define APPCOMMAND_UNDO                   34
     81#define APPCOMMAND_REDO                   35
     82#define APPCOMMAND_COPY                   36
     83#define APPCOMMAND_CUT                    37
     84#define APPCOMMAND_PASTE                  38
     85#define APPCOMMAND_REPLY_TO_MAIL          39
     86#define APPCOMMAND_FORWARD_MAIL           40
     87#define APPCOMMAND_SEND_MAIL              41
     88#define APPCOMMAND_SPELL_CHECK            42
     89#define APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE    43
     90#define APPCOMMAND_MIC_ON_OFF_TOGGLE      44
     91#define APPCOMMAND_CORRECTION_LIST        45
     92#define APPCOMMAND_MEDIA_PLAY             46
     93#define APPCOMMAND_MEDIA_PAUSE            47
     94#define APPCOMMAND_MEDIA_RECORD           48
     95#define APPCOMMAND_MEDIA_FAST_FORWARD     49
     96#define APPCOMMAND_MEDIA_REWIND           50
     97#define APPCOMMAND_MEDIA_CHANNEL_UP       51
     98#define APPCOMMAND_MEDIA_CHANNEL_DOWN     52
     99#endif // APPCOMMAND_MICROPHONE_VOLUME_MUTE
     100
     101#define VK_MEDIA_NEXT_TRACK 0xB0
     102#define VK_MEDIA_PREV_TRACK 0xB1
     103#define VK_MEDIA_PLAY_PAUSE 0xB3
     104#define VK_MEDIA_STOP 0xB2
     105
     106
     107bool MyApplication::winEventFilter(MSG * msg, long * result) {
     108        //qDebug() << "MyApplication::winEventFilter" << msg->message << "lParam:" << msg->lParam;
     109
     110        static uint last_appcommand = 0;
     111       
     112        if (msg->message == WM_KEYDOWN) {
     113                //qDebug("MyApplication::winEventFilter: WM_KEYDOWN: %X", msg->wParam);
     114                bool eat_key = false;
     115                if ((last_appcommand == APPCOMMAND_MEDIA_NEXTTRACK) && (msg->wParam == VK_MEDIA_NEXT_TRACK)) eat_key = true;
     116                else
     117                if ((last_appcommand == APPCOMMAND_MEDIA_PREVIOUSTRACK) && (msg->wParam == VK_MEDIA_PREV_TRACK)) eat_key = true;
     118                else
     119                if ((last_appcommand == APPCOMMAND_MEDIA_PLAY_PAUSE) && (msg->wParam == VK_MEDIA_PLAY_PAUSE)) eat_key = true;
     120                else
     121                if ((last_appcommand == APPCOMMAND_MEDIA_STOP) && (msg->wParam == VK_MEDIA_STOP)) eat_key = true;
     122               
     123                if (eat_key) {
     124                        qDebug("MyApplication::winEventFilter: ignoring key %X", msg->wParam);
     125                        last_appcommand = 0;
     126                        *result = true;
     127                        return true;
     128                }
     129        }
     130        else
     131        if (msg->message == WM_APPCOMMAND) {
     132                /*
     133                QKeySequence k(Qt::Key_MediaTogglePlayPause);
     134                qDebug() << "MyApplication::winEventFilter" << k.toString();
     135                */
     136
     137                //qDebug() << "MyApplication::winEventFilter" << msg->message << "lParam:" << msg->lParam;
     138                uint cmd  = GET_APPCOMMAND_LPARAM(msg->lParam);
     139                uint uDevice = GET_DEVICE_LPARAM(msg->lParam);
     140                uint dwKeys = GET_KEYSTATE_LPARAM(msg->lParam);
     141                qDebug() << "MyApplication::winEventFilter: cmd:" << cmd <<"uDevice:" << uDevice << "dwKeys:" << dwKeys;
     142
     143                //if (uDevice == FAPPCOMMAND_KEY) {
     144                        int key = 0;
     145                        Qt::KeyboardModifiers modifier = Qt::NoModifier;
     146                        QString name;
     147                       
     148                        switch (cmd) {
     149                                case APPCOMMAND_MEDIA_PAUSE: key = Qt::Key_MediaPause; name = "Media Pause"; break;
     150                                case APPCOMMAND_MEDIA_PLAY: key = Qt::Key_MediaPlay; name = "Media Play"; break;
     151                                case APPCOMMAND_MEDIA_STOP: key = Qt::Key_MediaStop; name = "Media Stop"; break;
     152                                case APPCOMMAND_MEDIA_PLAY_PAUSE: key = Qt::Key_MediaTogglePlayPause; name = "Toggle Media Play/Pause"; break;
     153                       
     154                                case APPCOMMAND_MEDIA_NEXTTRACK: key = Qt::Key_MediaNext; name = "Media Next"; break;
     155                                case APPCOMMAND_MEDIA_PREVIOUSTRACK: key = Qt::Key_MediaPrevious; name = "Media Previous"; break;
     156
     157                                case APPCOMMAND_MEDIA_FAST_FORWARD: key = Qt::Key_F; modifier = Qt::ShiftModifier | Qt::ControlModifier; break;
     158                                case APPCOMMAND_MEDIA_REWIND: key = Qt::Key_B; modifier = Qt::ShiftModifier | Qt::ControlModifier; break;
     159                        }
     160                       
     161                        if (key != 0) {
     162                                last_appcommand = cmd;
     163                               
     164                                QKeyEvent event(QEvent::KeyPress, key, modifier, name);
     165                                QWidget * w = QApplication::focusWidget();
     166                                if (w) QCoreApplication::sendEvent(w, &event);
     167                                *result = true;
     168                                return true;
     169                        }
     170                //}
     171        }
     172
     173        return false;
     174}
     175#endif // USE_WINEVENTFILTER
     176
    21177#include "moc_myapplication.cpp"
    22178
Note: See TracChangeset for help on using the changeset viewer.