00001 #ifndef MYTHWIDGETS_H_
00002 #define MYTHWIDGETS_H_
00003
00004 #include <QComboBox>
00005 #include <QSpinBox>
00006 #include <QSlider>
00007 #include <QLineEdit>
00008 #include <QPushButton>
00009 #include <QToolButton>
00010 #include <QDialog>
00011 #include <QCheckBox>
00012 #include <QRadioButton>
00013 #include <QImage>
00014 #include <QLabel>
00015 #include <QTimer>
00016 #include <QFocusEvent>
00017 #include <QMouseEvent>
00018 #include <QHideEvent>
00019 #include <QKeyEvent>
00020 #include <QEvent>
00021 #include <QTextEdit>
00022 #include <QListWidget>
00023
00024 #include <vector>
00025
00026 using namespace std;
00027
00028 #include "virtualkeyboard_qt.h"
00029
00030 #include "mythexp.h"
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 class MPUBLIC MythComboBox: public QComboBox
00041 {
00042 Q_OBJECT
00043
00044 public:
00045 MythComboBox(bool rw, QWidget* parent=0, const char* name="MythComboBox");
00046
00047 void setHelpText(const QString &help);
00048
00049 void setAcceptOnSelect(bool Accept) { AcceptOnSelect = Accept; }
00050 void setStep(int _step = 1) { step = _step; }
00051 void setAllowVirtualKeyboard(bool allowKbd = true)
00052 { allowVirtualKeyboard = allowKbd; }
00053 void setPopupPosition(PopupPositionQt pos) { popupPosition = pos; }
00054 PopupPositionQt getPopupPosition(void) { return popupPosition; }
00055
00056 signals:
00057 void changeHelpText(QString);
00058 void accepted(int);
00059 void gotFocus();
00060
00061 public slots:
00062 virtual void deleteLater(void);
00063 void insertItem(const QString &item)
00064 {
00065 QComboBox::insertItem(count()+1, item);
00066 }
00067
00068 protected:
00069 void Teardown(void);
00070 virtual ~MythComboBox();
00071 virtual void keyPressEvent (QKeyEvent *e);
00072 virtual void focusInEvent(QFocusEvent *e);
00073 virtual void focusOutEvent(QFocusEvent *e);
00074 void Init(void);
00075 virtual void popupVirtualKeyboard(void);
00076
00077 private:
00078 VirtualKeyboardQt *popup;
00079 QString helptext;
00080 bool AcceptOnSelect;
00081 bool useVirtualKeyboard;
00082 bool allowVirtualKeyboard;
00083 PopupPositionQt popupPosition;
00084 int step;
00085 };
00086
00087 class MPUBLIC MythSpinBox: public QSpinBox
00088 {
00089 Q_OBJECT
00090
00091 public:
00092 MythSpinBox(QWidget* parent = NULL, const char* name = "MythSpinBox",
00093 bool allow_single_step = false)
00094 : QSpinBox(parent), allowsinglestep(allow_single_step)
00095 {
00096 setObjectName(name);
00097 if (allowsinglestep)
00098 setSingleStep(10);
00099 }
00100
00101 void setHelpText(const QString&);
00102
00103 bool allowSingleStep(void) { return allowsinglestep; }
00104 void setAllowSingleStep(bool arg = true) { allowsinglestep = arg; }
00105
00106 signals:
00107 void changeHelpText(QString);
00108
00109 protected:
00110 virtual void keyPressEvent(QKeyEvent* e);
00111 virtual void focusInEvent(QFocusEvent *e);
00112 virtual void focusOutEvent(QFocusEvent *e);
00113
00114 private:
00115 QString helptext;
00116 bool allowsinglestep;
00117 };
00118
00119 class MPUBLIC MythSlider: public QSlider
00120 {
00121 Q_OBJECT
00122
00123 public:
00124 MythSlider(QWidget* parent=0, const char* name="MythSlider")
00125 : QSlider(parent) { setObjectName(name); };
00126
00127 void setHelpText(const QString&);
00128
00129 signals:
00130 void changeHelpText(QString);
00131
00132 protected:
00133 virtual void keyPressEvent (QKeyEvent* e);
00134 virtual void focusInEvent(QFocusEvent *e);
00135 virtual void focusOutEvent(QFocusEvent *e);
00136
00137 private:
00138 QString helptext;
00139 };
00140
00141 class MPUBLIC MythLineEdit : public QLineEdit
00142 {
00143 Q_OBJECT
00144
00145 public:
00146 MythLineEdit(QWidget *parent=NULL, const char *name="MythLineEdit");
00147 MythLineEdit(const QString &text,
00148 QWidget *parent=NULL, const char *name="MythLineEdit");
00149
00150 void setHelpText(const QString&);;
00151 void setRW(bool readwrite = true) { rw = readwrite; };
00152 void setRO() { rw = false; };
00153 void setAllowVirtualKeyboard(bool allowKbd = true)
00154 { allowVirtualKeyboard = allowKbd; }
00155
00156
00157
00158
00159 void setPopupPosition(PopupPositionQt pos) { popupPosition = pos; }
00160 PopupPositionQt getPopupPosition(void) { return popupPosition; }
00161
00162 virtual QString text();
00163
00164 public slots:
00165 virtual void deleteLater(void);
00166 virtual void setText(const QString &text);
00167
00168 signals:
00169 void changeHelpText(QString);
00170
00171 protected:
00172 void Teardown(void);
00173 virtual ~MythLineEdit();
00174
00175 virtual void keyPressEvent(QKeyEvent *e);
00176 virtual void focusInEvent(QFocusEvent *e);
00177 virtual void focusOutEvent(QFocusEvent *e);
00178 virtual void hideEvent(QHideEvent *e);
00179 virtual void mouseDoubleClickEvent(QMouseEvent *e);
00180 virtual void popupVirtualKeyboard(void);
00181
00182 private:
00183 VirtualKeyboardQt *popup;
00184 QString helptext;
00185 bool rw;
00186 bool useVirtualKeyboard;
00187 bool allowVirtualKeyboard;
00188 PopupPositionQt popupPosition;
00189 };
00190
00195 class MPUBLIC MythRemoteLineEdit : public QTextEdit
00196 {
00197 Q_OBJECT
00198
00199 public:
00200 MythRemoteLineEdit(QWidget *parent,
00201 const char *name = "MythRemoteLineEdit");
00202 MythRemoteLineEdit(const QString &contents, QWidget *parent,
00203 const char *name = "MythRemoteLineEdit");
00204 MythRemoteLineEdit(QFont *a_font, QWidget *parent,
00205 const char *name = "MythRemoteLineEdit");
00206 MythRemoteLineEdit(int lines, QWidget *parent,
00207 const char *name = "MythRemoteLineEdit");
00208
00209 void setHelpText(const QString&);
00210 void setCycleTime(float desired_interval);
00211 void setCharacterColors(QColor unselected, QColor selected, QColor special);
00212 void insert(QString text);
00213 void backspace();
00214 void del();
00215 void setPopupPosition(PopupPositionQt pos) { popupPosition = pos; };
00216 PopupPositionQt getPopupPosition(void) { return popupPosition; };
00217
00218 virtual QString text();
00219
00220 signals:
00221 void shiftState(bool);
00222 void cycleState(QString current_choice, QString set);
00223 void changeHelpText(QString);
00224 void gotFocus();
00225 void lostFocus();
00226 void tryingToLooseFocus(bool up_or_down);
00227 void textChanged(QString);
00228
00229 public slots:
00230 virtual void deleteLater(void);
00231 virtual void setText(const QString& text);
00232
00233 protected:
00234 void Teardown(void);
00235 virtual ~MythRemoteLineEdit();
00236 virtual void focusInEvent(QFocusEvent *e);
00237 virtual void focusOutEvent(QFocusEvent *e);
00238 virtual void keyPressEvent(QKeyEvent *e);
00239 virtual void popupVirtualKeyboard(void);
00240
00241 private slots:
00242 void startCycle(QString current_choice, QString set);
00243 void updateCycle(QString current_choice, QString set);
00244 void endCycle(bool select);
00245 void endCycle(void) { endCycle(true); }
00246
00247 private:
00248 QFont *my_font;
00249 void Init(void);
00250 void cycleKeys(QString cycleList);
00251 void toggleShift(void);
00252
00253 bool shift;
00254 QTimer *cycle_timer;
00255 bool active_cycle;
00256 QString current_choice;
00257 QString current_set;
00258 int cycle_time;
00259 QString helptext;
00260
00261 int pre_cycle_pos;
00262 QString pre_cycle_text_before_cursor;
00263 QString pre_cycle_text_after_cursor;
00264
00265 QColor col_unselected;
00266 QColor col_selected;
00267 QColor col_special;
00268
00269 QString hex_unselected;
00270 QString hex_selected;
00271 QString hex_special;
00272
00273 int m_lines;
00274
00275 VirtualKeyboardQt *popup;
00276 bool useVirtualKeyboard;
00277 PopupPositionQt popupPosition;
00278 };
00279
00280 class MPUBLIC MythPushButton : public QPushButton
00281 {
00282 Q_OBJECT
00283
00284 public:
00285 MythPushButton(QWidget *parent, const char *name = "MythPushButton")
00286 : QPushButton(parent)
00287 {
00288 setObjectName(name);
00289 setCheckable(false);
00290 }
00291
00292 MythPushButton(const QString &text, QWidget *parent)
00293 : QPushButton(text, parent)
00294 {
00295 setObjectName("MythPushButton");
00296 setCheckable(false);
00297 }
00298
00299 MythPushButton(const QString &ontext, const QString &offtext,
00300 QWidget *parent, bool isOn = true);
00301
00302 void setHelpText(const QString &help);
00303
00304 void keyPressEvent(QKeyEvent *e);
00305 void keyReleaseEvent(QKeyEvent *e);
00306
00307 void toggleText(void);
00308
00309 signals:
00310 void changeHelpText(QString);
00311
00312 protected:
00313 void focusInEvent(QFocusEvent *e);
00314 void focusOutEvent(QFocusEvent *e);
00315
00316 private:
00317 QColor origcolor;
00318 QString helptext;
00319 QString onText;
00320 QString offText;
00321
00322 QStringList keyPressActions;
00323 };
00324
00325 class MPUBLIC MythCheckBox: public QCheckBox
00326 {
00327 Q_OBJECT
00328
00329 public:
00330 MythCheckBox(QWidget *parent = 0, const char *name = "MythCheckBox")
00331 : QCheckBox(parent) { setObjectName(name); };
00332 MythCheckBox(const QString &text,
00333 QWidget *parent = 0, const char *name = "MythCheckBox")
00334 : QCheckBox(text, parent) { setObjectName(name); };
00335
00336 void setHelpText(const QString&);
00337
00338 signals:
00339 void changeHelpText(QString);
00340
00341 protected:
00342 virtual void keyPressEvent(QKeyEvent* e);
00343 virtual void focusInEvent(QFocusEvent *e);
00344 virtual void focusOutEvent(QFocusEvent *e);
00345
00346 private:
00347 QString helptext;
00348 };
00349
00350 class MPUBLIC MythRadioButton: public QRadioButton
00351 {
00352 Q_OBJECT
00353
00354 public:
00355 MythRadioButton(QWidget* parent = 0, const char* name = "MythRadioButton")
00356 : QRadioButton(parent) { setObjectName(name); };
00357
00358 void setHelpText(const QString&);
00359
00360 signals:
00361 void changeHelpText(QString);
00362
00363 protected:
00364 virtual void keyPressEvent(QKeyEvent* e);
00365 virtual void focusInEvent(QFocusEvent *e);
00366 virtual void focusOutEvent(QFocusEvent *e);
00367
00368 private:
00369 QString helptext;
00370 };
00371
00372 class MPUBLIC MythListBox: public QListWidget
00373 {
00374 Q_OBJECT
00375
00376 public:
00377 MythListBox(QWidget *parent,
00378 const QString &name = QString("MythListBox"));
00379
00380 virtual void keyPressEvent(QKeyEvent* e);
00381
00382 #if QT_VERSION < 0x040400
00383 void setCurrentRow(int row) { QListWidget::setCurrentRow(row); }
00384 void setCurrentRow(int row, QItemSelectionModel::SelectionFlags command)
00385 {
00386 selectionModel()->setCurrentIndex(indexFromItem(item(row)), command);
00387 }
00388 #endif
00389
00390 QString currentText(void) const { return text(currentRow()); }
00391
00392 void setTopRow(uint row);
00393 void insertItem(const QString&);
00394 void insertStringList(const QStringList&);
00395 void removeRow(uint row);
00396 void changeItem(const QString&, uint row);
00397 int getIndex(const QList<QListWidgetItem*>&);
00398 QList<QListWidgetItem*> findItems(
00399 const QString &text, Qt::MatchFlags flags = Qt::MatchStartsWith) const
00400 {
00401 return QListWidget::findItems(text, flags);
00402 }
00403
00404
00405 void setHelpText(const QString&);
00406
00407 protected:
00408 void focusInEvent(QFocusEvent *e);
00409 void focusOutEvent(QFocusEvent *e);
00410 virtual void ensurePolished(void) const;
00411
00412 bool itemVisible(uint row) const;
00413 QString text(uint row) const;
00414
00415 public slots:
00416 void setCurrentItem(const QString& matchText, bool caseSensitive = true,
00417 bool partialMatch = false);
00418
00419 signals:
00420 void changeHelpText(QString);
00421 void accepted(int);
00422 void menuButtonPressed(int);
00423 void editButtonPressed(int);
00424 void deleteButtonPressed(int);
00425 void highlighted(int);
00426
00427 private slots:
00428 void HandleItemSelectionChanged(void);
00429
00430 private:
00431 QString helptext;
00432 };
00433
00434 #endif
00435
00436