00001 #ifndef MYTHWIDGETS_H_
00002 #define MYTHWIDGETS_H_
00003
00004 #include <qbutton.h>
00005 #include <qcombobox.h>
00006 #include <qspinbox.h>
00007 #include <qslider.h>
00008 #include <qlineedit.h>
00009 #include <qtextedit.h>
00010 #include <qpushbutton.h>
00011 #include <qtoolbutton.h>
00012 #include <qdialog.h>
00013 #include <qlistview.h>
00014 #include <qheader.h>
00015 #include <qtable.h>
00016 #include <qbuttongroup.h>
00017 #include <qlistbox.h>
00018 #include <qcheckbox.h>
00019 #include <qradiobutton.h>
00020 #include <qimage.h>
00021 #include <qlabel.h>
00022 #include <qtimer.h>
00023 #include <qdeepcopy.h>
00024
00025 #include <vector>
00026
00027 using namespace std;
00028
00029 #include "virtualkeyboard.h"
00030
00031 #include "mythexp.h"
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 class MPUBLIC MythComboBox: public QComboBox
00042 {
00043 Q_OBJECT
00044 public:
00045 MythComboBox(bool rw, QWidget* parent=0, const char* name=0);
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(PopupPosition pos) { popupPosition = pos; }
00054 PopupPosition 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 QComboBox::insertItem(item);
00065 };
00066
00067 protected:
00068 void Teardown(void);
00069 virtual ~MythComboBox();
00070 virtual void keyPressEvent (QKeyEvent *e);
00071 virtual void focusInEvent(QFocusEvent *e);
00072 virtual void focusOutEvent(QFocusEvent *e);
00073 void Init(void);
00074 virtual void popupVirtualKeyboard(void);
00075
00076 private:
00077 VirtualKeyboard *popup;
00078 QString helptext;
00079 bool AcceptOnSelect;
00080 bool useVirtualKeyboard;
00081 bool allowVirtualKeyboard;
00082 PopupPosition popupPosition;
00083 int step;
00084 };
00085
00086 class MPUBLIC MythSpinBox: public QSpinBox
00087 {
00088 Q_OBJECT
00089 public:
00090 MythSpinBox(QWidget* parent = NULL, const char* widgetName = 0,
00091 bool allow_single_step = false) :
00092 QSpinBox(parent, widgetName),
00093 singlestep(allow_single_step) { if (singlestep) setLineStep(10); }
00094
00095 void setHelpText(const QString&);
00096
00097 bool singleStep(void) { return singlestep; }
00098 void setSingleStep(bool arg = true) { singlestep = arg; }
00099
00100 signals:
00101 void changeHelpText(QString);
00102
00103 protected:
00104 virtual bool eventFilter (QObject* o, QEvent* e);
00105 virtual void focusInEvent(QFocusEvent *e);
00106 virtual void focusOutEvent(QFocusEvent *e);
00107
00108 private:
00109 QString helptext;
00110 bool singlestep;
00111 };
00112
00113 class MPUBLIC MythSlider: public QSlider
00114 {
00115 Q_OBJECT
00116 public:
00117 MythSlider(QWidget* parent=0, const char* name=0):
00118 QSlider(parent, name) {};
00119
00120 void setHelpText(const QString&);
00121
00122 signals:
00123 void changeHelpText(QString);
00124
00125 protected:
00126 virtual void keyPressEvent (QKeyEvent* e);
00127 virtual void focusInEvent(QFocusEvent *e);
00128 virtual void focusOutEvent(QFocusEvent *e);
00129
00130 private:
00131 QString helptext;
00132 };
00133
00134
00135 class MPUBLIC MythLineEdit : public QLineEdit
00136 {
00137 Q_OBJECT
00138 public:
00139 MythLineEdit(QWidget *parent=NULL, const char* widgetName=0);
00140 MythLineEdit(const QString &text, QWidget *p=NULL, const char *name=0);
00141
00142 void setHelpText(const QString&);;
00143 void setRW(bool readwrite = true) { rw = readwrite; };
00144 void setRO() { rw = false; };
00145 void setAllowVirtualKeyboard(bool allowKbd = true)
00146 { allowVirtualKeyboard = allowKbd; }
00147 void setPopupPosition(PopupPosition pos) { popupPosition = pos; }
00148 PopupPosition getPopupPosition(void) { return popupPosition; }
00149
00150 virtual QString text();
00151
00152 public slots:
00153 virtual void deleteLater(void);
00154 virtual void setText(const QString &text);
00155
00156 signals:
00157 void changeHelpText(QString);
00158
00159 protected:
00160 void Teardown(void);
00161 virtual ~MythLineEdit();
00162
00163 virtual void keyPressEvent(QKeyEvent *e);
00164 virtual void focusInEvent(QFocusEvent *e);
00165 virtual void focusOutEvent(QFocusEvent *e);
00166 virtual void hideEvent(QHideEvent *e);
00167 virtual void mouseDoubleClickEvent(QMouseEvent *e);
00168 virtual void popupVirtualKeyboard(void);
00169
00170 private:
00171 VirtualKeyboard *popup;
00172 QString helptext;
00173 bool rw;
00174 bool useVirtualKeyboard;
00175 bool allowVirtualKeyboard;
00176 PopupPosition popupPosition;
00177 };
00178
00183 class MPUBLIC MythRemoteLineEdit : public QTextEdit
00184 {
00185 Q_OBJECT
00186 public:
00187
00188 MythRemoteLineEdit( QWidget * parent, const char * name = 0 );
00189 MythRemoteLineEdit( const QString & contents, QWidget * parent, const char * name = 0 );
00190 MythRemoteLineEdit( QFont *a_font, QWidget * parent, const char * name = 0 );
00191 MythRemoteLineEdit( int lines, QWidget * parent, const char * name = 0 );
00192
00193 void setHelpText(const QString&);
00194 void setCycleTime(float desired_interval);
00195 void setCharacterColors(QColor unselected, QColor selected, QColor special);
00196 void insert(QString text);
00197 void backspace();
00198 void del();
00199 void setPopupPosition(PopupPosition pos) { popupPosition = pos; };
00200 PopupPosition getPopupPosition(void) { return popupPosition; };
00201
00202 virtual QString text();
00203
00204 signals:
00205
00206 void shiftState(bool);
00207 void cycleState(QString current_choice, QString set);
00208 void changeHelpText(QString);
00209 void gotFocus();
00210 void lostFocus();
00211 void tryingToLooseFocus(bool up_or_down);
00212 void textChanged(QString);
00213
00214 public slots:
00215 virtual void deleteLater(void);
00216 virtual void setText(const QString& text);
00217
00218 protected:
00219 void Teardown(void);
00220 virtual ~MythRemoteLineEdit();
00221 virtual void focusInEvent(QFocusEvent *e);
00222 virtual void focusOutEvent(QFocusEvent *e);
00223 virtual void keyPressEvent(QKeyEvent *e);
00224 virtual void popupVirtualKeyboard(void);
00225
00226 private slots:
00227
00228 void startCycle(QString current_choice, QString set);
00229 void updateCycle(QString current_choice, QString set);
00230 void endCycle();
00231
00232 private:
00233
00234 QFont *my_font;
00235 void Init(void);
00236 void cycleKeys(QString cycleList);
00237 void toggleShift(void);
00238 void assignHexColors();
00239
00240 bool shift;
00241 QTimer *cycle_timer;
00242 bool active_cycle;
00243 QString current_choice;
00244 QString current_set;
00245 int cycle_time;
00246 QString helptext;
00247
00248 int pre_cycle_para;
00249 int pre_cycle_pos;
00250 QString pre_cycle_text_upto;
00251 QString pre_cycle_text_from;
00252
00253 QColor col_unselected;
00254 QColor col_selected;
00255 QColor col_special;
00256
00257 QString hex_unselected;
00258 QString hex_selected;
00259 QString hex_special;
00260
00261 int m_lines;
00262
00263 VirtualKeyboard *popup;
00264 bool useVirtualKeyboard;
00265 PopupPosition popupPosition;
00266 };
00267
00268 class MPUBLIC MythTable : public QTable
00269 {
00270 public:
00271 MythTable(QWidget *parent) : QTable(parent) { }
00272
00273 void keyPressEvent(QKeyEvent *e);
00274 };
00275
00276 class MPUBLIC MythButtonGroup : public QButtonGroup
00277 {
00278 public:
00279 MythButtonGroup(QWidget *parent = 0) : QButtonGroup(parent) { }
00280
00281 void moveFocus(int key);
00282 };
00283
00284 class MPUBLIC MythPushButton : public QPushButton
00285 {
00286 Q_OBJECT
00287 public:
00288 MythPushButton(QWidget *parent, const char *name = 0, bool aa = false)
00289 : QPushButton(parent, name)
00290 { setBackgroundOrigin(WindowOrigin); arrowAccel = aa;
00291 setToggleButton(false); }
00292
00293 MythPushButton(const QString &text, QWidget *parent, bool aa = false)
00294 : QPushButton(text, parent)
00295 { setBackgroundOrigin(WindowOrigin); arrowAccel = aa;
00296 setToggleButton(false); }
00297
00298 MythPushButton(const QString &ontext, const QString &offtext,
00299 QWidget *parent, bool isOn = true, bool aa = false);
00300
00301 void setHelpText(const QString &help);
00302
00303 void keyPressEvent(QKeyEvent *e);
00304 void keyReleaseEvent(QKeyEvent *e);
00305
00306 void toggleText(void);
00307
00308 signals:
00309 void changeHelpText(QString);
00310
00311 protected:
00312 void focusInEvent(QFocusEvent *e);
00313 void focusOutEvent(QFocusEvent *e);
00314
00315 private:
00316 QColor origcolor;
00317 QString helptext;
00318 QString onText;
00319 QString offText;
00320 bool arrowAccel;
00321
00322 QStringList keyPressActions;
00323 };
00324
00325 class MPUBLIC MythCheckBox: public QCheckBox
00326 {
00327 Q_OBJECT
00328 public:
00329 MythCheckBox(QWidget* parent = 0, const char* name = 0):
00330 QCheckBox(parent, name) {};
00331 MythCheckBox(const QString &text, QWidget* parent = 0, const char* name = 0):
00332 QCheckBox(text, parent, name) {};
00333
00334 void setHelpText(const QString&);
00335
00336 signals:
00337 void changeHelpText(QString);
00338
00339 protected:
00340 virtual void keyPressEvent(QKeyEvent* e);
00341 virtual void focusInEvent(QFocusEvent *e);
00342 virtual void focusOutEvent(QFocusEvent *e);
00343
00344 private:
00345 QString helptext;
00346 };
00347
00348 class MPUBLIC MythRadioButton: public QRadioButton
00349 {
00350 Q_OBJECT
00351 public:
00352 MythRadioButton(QWidget* parent = 0, const char* name = 0):
00353 QRadioButton(parent, name) {};
00354
00355 void setHelpText(const QString&);
00356
00357 signals:
00358 void changeHelpText(QString);
00359
00360 protected:
00361 virtual void keyPressEvent(QKeyEvent* e);
00362 virtual void focusInEvent(QFocusEvent *e);
00363 virtual void focusOutEvent(QFocusEvent *e);
00364
00365 private:
00366 QString helptext;
00367 };
00368
00369 class MPUBLIC MythListView : public QListView
00370 {
00371 Q_OBJECT
00372 public:
00373 MythListView(QWidget *parent);
00374
00375 void ensureItemVCentered (const QListViewItem *i);
00376
00377 protected:
00378 void keyPressEvent(QKeyEvent *e);
00379 void focusInEvent(QFocusEvent *e);
00380 };
00381
00382 class MPUBLIC MythListBox: public QListBox {
00383 Q_OBJECT
00384 public:
00385 MythListBox(QWidget* parent);
00386
00387 virtual void keyPressEvent(QKeyEvent* e);
00388
00389 void setHelpText(const QString&);
00390
00391 int currentItem() { return QListBox::currentItem(); }
00392
00393 protected:
00394 void focusInEvent(QFocusEvent *e);
00395 void focusOutEvent(QFocusEvent *e);
00396 virtual void polish(void);
00397
00398 public slots:
00399 void setCurrentItem(const QString& matchText, bool caseSensitive = true,
00400 bool partialMatch = false);
00401 void setCurrentItem(int index) { QListBox::setCurrentItem(index); };
00402
00403 signals:
00404 void changeHelpText(QString);
00405 void accepted(int);
00406 void menuButtonPressed(int);
00407 void editButtonPressed(int);
00408 void deleteButtonPressed(int);
00409
00410 private:
00411 QString helptext;
00412 };
00413
00414 #endif
00415
00416