Ticket #2239: mythkeysequence.h

File mythkeysequence.h, 2.6 KB (added by navahogunleg@…, 18 years ago)

New mythkeysequence.h & .cpp using Qt4, and using QStringList in stead of own (buggy) parsing routine.

Line 
1/*
2 * File: mythkeysequence.h
3 *
4 * Purpose: This implements the MythKeySequence class. QKeySequence cannot
5 * be easily extended not to ignore 'remoteXXX' identifiers.
6 *
7 * This replacement class fixes that and removes the need for
8 * some duplicate code in MythTV and the MythControls-plugin.
9 *
10 * History:
11 *
12 * 20060620
13 * - Renamed member routine 'keyNum()' to 'value()'.
14 * - Bugfixed problem with 'F1,M,{,<' only assigning 3 keys.
15 * - Max.length of sequence configurable through #define MYTHKEY_SEQLEN.
16 */
17
18#ifndef _KEYSEQ_H_
19#define _KEYSEQ_H_
20
21#include <QObject>
22/* #include <qobject.h> */
23#include <QKeySequence>
24/* #include <qkeysequence.h> */
25
26/* The #define's below define internal features;
27 ***********************************************/
28
29// Maximum length of KeySequence -- default same as QKeySequence:
30#ifndef MYTHKEY_SEQLEN
31
32 #define MYTHKEY_SEQLEN 4
33#else
34
35 #warning MYTHKEY_SEQLEN is already defined -- skipping assignment.
36#endif
37
38
39/******************** MythKeySequence / MythKey classes **********************/
40class MythKeySequence;
41
42class MythKey : public QObject
43{
44 Q_OBJECT
45
46 public:
47 MythKey( );
48 MythKey( const int );
49 MythKey( const QString );
50
51 /* Assign the key */
52 bool setKey( const int );
53 bool setKey( const QString );
54 void clear( );
55
56 /* Text representation, ie. Ctrl+PgUp, or remoteGUIDE */
57 QString text( );
58 /* Numeric value, only valid if Keys */
59 int value( );
60 /* More query stuff */
61 bool isRemote( );
62 bool isAssigned( );
63
64 operator int();
65
66 private:
67 bool key_assigned; /* .. */
68 int is_button; /* Key is a button, i.e. not coming from a keyboard */
69
70 int key_num; /* Integer representation of key (is 0 for remote buttons) */
71 QString key_str; /* Text representation of key / button */
72
73 friend class MythKeySequence;
74};
75
76class MythKeySequence : public QObject
77{
78 Q_OBJECT
79
80 public:
81 MythKeySequence( );
82 MythKeySequence( int k1, int k2=0, int k3=0, int k4=0 );
83 MythKeySequence( const QString & );
84
85 /* Assign multiple keys */
86 uint setKeys( const QString & );
87
88 /* Query stuff */
89 bool isEmpty( );
90 void clear( );
91 uint count( );
92
93 MythKey* operator[]( int index );
94 bool operator ==( const MythKeySequence & );
95 operator QString( );
96
97 MythKey keys[ MYTHKEY_SEQLEN ];
98
99 private:
100 uint keys_assigned;
101};
102
103#endif // _KEYSEQ_H_