00001 #ifndef MYTHUI_TEXTEDIT_H_
00002 #define MYTHUI_TEXTEDIT_H_
00003
00004 #include <QString>
00005 #include <QClipboard>
00006
00007 #include "mythtimer.h"
00008 #include "mythuitype.h"
00009 #include "mythuitext.h"
00010 #include "mythuistatetype.h"
00011 #include "mythuiimage.h"
00012 #include "mythvirtualkeyboard.h"
00013
00014 class MythFontProperties;
00015
00016 enum InputFilter
00017 {
00018 FilterNone = 0x0,
00019 FilterAlpha = 0x01,
00020 FilterNumeric = 0x02,
00021 FilterAlphaNumeric = 0x03,
00022 FilterSymbols = 0x04,
00023 FilterPunct = 0x08
00024 };
00025
00031 class MUI_PUBLIC MythUITextEdit : public MythUIType, public StorageUser
00032 {
00033 Q_OBJECT
00034
00035 public:
00036 MythUITextEdit(MythUIType *parent, const QString &name);
00037 ~MythUITextEdit();
00038
00039 virtual void Pulse(void);
00040 virtual bool keyPressEvent(QKeyEvent *);
00041 bool gestureEvent(MythGestureEvent *);
00042 virtual void Reset(void);
00043
00044 void SetText(const QString &text, bool moveCursor = true);
00045 void InsertText(const QString &text);
00046 QString GetText(void) const { return m_Message; }
00047
00048 void SetFilter(InputFilter filter) { m_Filter = filter; }
00049 void SetPassword(bool isPassword) { m_isPassword = isPassword; }
00050 void SetMaxLength(const int length);
00051
00052 enum MoveDirection { MoveLeft, MoveRight, MoveEnd };
00053 bool MoveCursor(MoveDirection);
00054
00055 void SetKeyboardPosition(PopupPosition pos) { m_keyboardPosition = pos; }
00056 PopupPosition GetKeyboardPosition(void) { return m_keyboardPosition; }
00057
00058
00059 void SetDBValue(const QString &text) { SetText(text); }
00060 QString GetDBValue(void) const { return GetText(); }
00061
00062 signals:
00063 void valueChanged();
00064
00065 public slots:
00066 void Select();
00067 void Deselect();
00068
00069 protected:
00070 virtual bool ParseElement(
00071 const QString &filename, QDomElement &element, bool showWarnings);
00072 virtual void CopyFrom(MythUIType *base);
00073 virtual void CreateCopy(MythUIType *parent);
00074 virtual void Finalize(void);
00075
00076 void Init(void);
00077 void SetInitialStates(void);
00078
00079 bool InsertCharacter(const QString &character);
00080 void RemoveCharacter(int position);
00081
00082 void CutTextToClipboard(void);
00083 void CopyTextToClipboard(void);
00084 void PasteTextFromClipboard(QClipboard::Mode mode = QClipboard::Clipboard);
00085
00086 bool m_initialized;
00087
00088 int m_blinkInterval;
00089 int m_cursorBlinkRate;
00090 MythTimer m_lastKeyPress;
00091
00092 int m_maxLength;
00093
00094 QString m_Message;
00095 InputFilter m_Filter;
00096 int m_Position;
00097
00098 bool m_isPassword;
00099
00100 PopupPosition m_keyboardPosition;
00101
00102 MythUIStateType *m_backgroundState;
00103 MythUIImage *m_cursorImage;
00104 MythUIText *m_Text;
00105
00106 int m_composeKey;
00107 };
00108
00109 #endif