Ticket #2839: combovirtualkeyboardpopup.diff

File combovirtualkeyboardpopup.diff, 3.9 KB (added by devel@…, 19 years ago)

Enable virtual keyboard for editable combo

  • mythtv/libs/libmyth/mythwidgets.cpp

     
    1616#include "virtualkeyboard.h"
    1717#include "libmythui/mythmainwindow.h"
    1818
     19MythComboBox::~MythComboBox()
     20{
     21    if (popup)
     22        delete popup;
     23}
     24
     25void MythComboBox::Init()
     26{
     27    popup = NULL;
     28    popupPosition = VK_POSBELOWEDIT;
     29}
     30
    1931void MythComboBox::keyPressEvent(QKeyEvent *e)
    2032{
    2133    bool handled = false;
    2234    QStringList actions;
    23     if (gContext->GetMainWindow()->TranslateKeyPress("qt", e, actions))
     35    if ((!popup || !popup->isShown()) &&
     36        (gContext->GetMainWindow()->TranslateKeyPress("qt", e, actions)))
    2437    {
    2538        for (unsigned int i = 0; i < actions.size() && !handled; i++)
    2639        {
     
    5972            }
    6073            else if (action == "SELECT" && AcceptOnSelect)
    6174                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
    6294            else
    6395                handled = false;
    6496        }
  • mythtv/libs/libmyth/virtualkeyboard.cpp

     
    8484        MythLineEdit *par = (MythLineEdit *)m_parentEdit;
    8585        preferredPos = par->getPopupPosition();
    8686    }
    87     else
     87    else if (m_parentEdit->inherits("MythRemoteLineEdit"))
    8888    {
    8989        MythRemoteLineEdit *par = (MythRemoteLineEdit *)m_parentEdit;
    9090        preferredPos = par->getPopupPosition();
    9191    }
     92    else
     93    {
     94        MythComboBox *par = (MythComboBox *)m_parentEdit;
     95        preferredPos = par->getPopupPosition();
     96    }
    9297
    9398    if (preferredPos == VK_POSBELOWEDIT)
    9499    {
  • mythtv/libs/libmyth/mythwidgets.h

     
    4242    Q_OBJECT
    4343  public:
    4444    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(); };
    4647
     48    virtual ~MythComboBox();
     49
    4750    void setHelpText(QString help) { helptext = help; }
    4851    void setAcceptOnSelect(bool Accept) { AcceptOnSelect = Accept; }
    4952    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; }
    5057
    5158  signals:
    5259    void changeHelpText(QString);
     
    6269    virtual void keyPressEvent (QKeyEvent *e);
    6370    virtual void focusInEvent(QFocusEvent *e);
    6471    virtual void focusOutEvent(QFocusEvent *e);
     72    void Init(void);
    6573
    6674  private:
     75    VirtualKeyboard *popup;
    6776    QString helptext;
    6877    bool AcceptOnSelect;
     78    bool allowVirtualKeyboard;
     79    PopupPosition popupPosition;
    6980    int step;
    7081};
    7182