Ticket #2839: combovirtualkeyboardpopup.diff
File combovirtualkeyboardpopup.diff, 3.9 KB (added by , 17 years ago) |
---|
-
mythtv/libs/libmyth/mythwidgets.cpp
16 16 #include "virtualkeyboard.h" 17 17 #include "libmythui/mythmainwindow.h" 18 18 19 MythComboBox::~MythComboBox() 20 { 21 if (popup) 22 delete popup; 23 } 24 25 void MythComboBox::Init() 26 { 27 popup = NULL; 28 popupPosition = VK_POSBELOWEDIT; 29 } 30 19 31 void MythComboBox::keyPressEvent(QKeyEvent *e) 20 32 { 21 33 bool handled = false; 22 34 QStringList actions; 23 if (gContext->GetMainWindow()->TranslateKeyPress("qt", e, actions)) 35 if ((!popup || !popup->isShown()) && 36 (gContext->GetMainWindow()->TranslateKeyPress("qt", e, actions))) 24 37 { 25 38 for (unsigned int i = 0; i < actions.size() && !handled; i++) 26 39 { … … 59 72 } 60 73 else if (action == "SELECT" && AcceptOnSelect) 61 74 emit accepted(currentItem()); 75 else if (action == "SELECT" && 76 (e->text().isNull() || 77 (e->key() == Qt::Key_Enter) || 78 (e->key() == Qt::Key_Return) || 79 (e->key() == Qt::Key_Space))) 80 { 81 if ((allowVirtualKeyboard) && 82 (gContext->GetNumSetting("UseVirtualKeyboard", 1) == 1)) 83 { 84 popup = new VirtualKeyboard(gContext->GetMainWindow(), this); 85 gContext->GetMainWindow()->detach(popup); 86 popup->exec(); 87 delete popup; 88 popup = NULL; 89 } 90 else 91 handled = true; 92 } 93 62 94 else 63 95 handled = false; 64 96 } -
mythtv/libs/libmyth/virtualkeyboard.cpp
84 84 MythLineEdit *par = (MythLineEdit *)m_parentEdit; 85 85 preferredPos = par->getPopupPosition(); 86 86 } 87 else 87 else if (m_parentEdit->inherits("MythRemoteLineEdit")) 88 88 { 89 89 MythRemoteLineEdit *par = (MythRemoteLineEdit *)m_parentEdit; 90 90 preferredPos = par->getPopupPosition(); 91 91 } 92 else 93 { 94 MythComboBox *par = (MythComboBox *)m_parentEdit; 95 preferredPos = par->getPopupPosition(); 96 } 92 97 93 98 if (preferredPos == VK_POSBELOWEDIT) 94 99 { -
mythtv/libs/libmyth/mythwidgets.h
42 42 Q_OBJECT 43 43 public: 44 44 MythComboBox(bool rw, QWidget* parent=0, const char* name=0): 45 QComboBox(rw, parent, name) { AcceptOnSelect = false; step = 1; }; 45 QComboBox(rw, parent, name) { AcceptOnSelect = false; step = 1; 46 allowVirtualKeyboard = rw; Init(); }; 46 47 48 virtual ~MythComboBox(); 49 47 50 void setHelpText(QString help) { helptext = help; } 48 51 void setAcceptOnSelect(bool Accept) { AcceptOnSelect = Accept; } 49 52 void setStep(int _step = 1) { step = _step; } 53 void setAllowVirtualKeyboard(bool allowKbd = true) 54 { allowVirtualKeyboard = allowKbd; } 55 void setPopupPosition(PopupPosition pos) { popupPosition = pos; } 56 PopupPosition getPopupPosition(void) { return popupPosition; } 50 57 51 58 signals: 52 59 void changeHelpText(QString); … … 62 69 virtual void keyPressEvent (QKeyEvent *e); 63 70 virtual void focusInEvent(QFocusEvent *e); 64 71 virtual void focusOutEvent(QFocusEvent *e); 72 void Init(void); 65 73 66 74 private: 75 VirtualKeyboard *popup; 67 76 QString helptext; 68 77 bool AcceptOnSelect; 78 bool allowVirtualKeyboard; 79 PopupPosition popupPosition; 69 80 int step; 70 81 }; 71 82