00001 #ifndef UIDATATYPES_H_
00002 #define UIDATATYPES_H_
00003
00004 #include <qobject.h>
00005 #include <qstring.h>
00006 #include <qregexp.h>
00007 #include <qstringlist.h>
00008 #include <qrect.h>
00009 #include <qfile.h>
00010 #include <qmap.h>
00011 #include <vector>
00012 #include <qvaluevector.h>
00013 #include <qfont.h>
00014 #include <qpixmap.h>
00015 #include <qpainter.h>
00016 #include <qptrlist.h>
00017
00018 #include "mythwidgets.h"
00019 #include "util.h"
00020 #include "mythdialogs.h"
00021 #include "generictree.h"
00022 #include "mythwidgets.h"
00023
00024 #ifdef USING_MINGW
00025 #undef LoadImage
00026 #endif
00027
00028 using namespace std;
00029
00030 class UIType;
00031 class MythDialog;
00032 class MythThemedDialog;
00033
00034 struct fontProp {
00035 QFont face;
00036 QPoint shadowOffset;
00037 QColor color;
00038 QColor dropColor;
00039 };
00040
00041 class MPUBLIC LayerSet
00042 {
00043 public:
00044 LayerSet(const QString &name);
00045 ~LayerSet();
00046
00047 void Draw(QPainter *, int, int);
00048 void DrawRegion(QPainter *, QRect &, int, int);
00049
00050 QString GetName() { return m_name; }
00051 void SetName(const QString &name) { m_name = name; }
00052
00053 void SetDrawOrder(int order) { m_order = order; }
00054 int GetDrawOrder() const { return m_order; }
00055
00056 void SetAreaRect(QRect area) { m_area = area; }
00057 QRect GetAreaRect() { return m_area; }
00058
00059 void SetContext(int con) { m_context = con; }
00060 int GetContext(void) { return m_context; }
00061
00062 void SetDebug(bool db) { m_debug = db; }
00063 void bumpUpLayers(int a_number);
00064 int getLayers(){return numb_layers;}
00065
00066 void AddType(UIType *);
00067 UIType *GetType(const QString &name);
00068 vector<UIType *> *getAllTypes(){return allTypes;}
00069
00070 void ClearAllText(void);
00071 void SetText(QMap<QString, QString> &infoMap);
00072
00073 void SetDrawFontShadow(bool state);
00074
00075 void UseAlternateArea(bool useAlt);
00076
00077 private:
00078 bool m_debug;
00079 int m_context;
00080 int m_order;
00081 QString m_name;
00082 QRect m_area;
00083 int numb_layers;
00084
00085 QMap<QString, UIType *> typeList;
00086 vector<UIType *> *allTypes;
00087 };
00088
00089 class MPUBLIC UIType : public QObject
00090 {
00091 Q_OBJECT
00092
00093 public:
00094 UIType(const QString &name);
00095 virtual ~UIType();
00096
00097 void SetOrder(int order);
00098 void SetParent(LayerSet *);
00099 void SetScreen(double wmult, double hmult) { m_wmult = wmult; m_hmult = hmult; }
00100 void SetContext(int con) { m_context = con;}
00101 int GetContext(){return m_context;}
00102 void SetDebug(bool db) { m_debug = db; }
00103 void allowFocus(bool yes_or_no){takes_focus = yes_or_no;}
00104 void SetDrawFontShadow(bool state) { drawFontShadow = state; }
00105 QString Name();
00106
00107
00108 bool canTakeFocus(){ return takes_focus;}
00109 int getOrder(){return m_order;}
00110 virtual void Draw(QPainter *, int, int);
00111 virtual void DrawRegion(QPainter *, QRect &, int, int);
00112 virtual void calculateScreenArea();
00113 QRect getScreenArea(){return screen_area;}
00114 QString cutDown(const QString &data, QFont *font, bool multiline = false,
00115 int overload_width = -1, int overload_height = -1);
00116 QString getName(){return m_name;}
00117
00118 bool isShown(){return !hidden;}
00119 bool isHidden(){return hidden;}
00120 bool isFocused(){return has_focus;}
00121
00122 public slots:
00123
00124 virtual bool takeFocus();
00125 virtual void looseFocus();
00126 virtual void activate(){}
00127 virtual void refresh();
00128 virtual void show();
00129 virtual void hide();
00130 virtual bool toggleShow();
00131
00132
00133 signals:
00134
00135
00136
00137
00138
00139 void requestUpdate();
00140 void requestUpdate(const QRect &);
00141 void requestRegionUpdate(const QRect &);
00142 void takingFocus();
00143 void loosingFocus();
00144
00145 protected:
00146
00147 double m_wmult;
00148 double m_hmult;
00149 int m_context;
00150 int m_order;
00151 bool m_debug;
00152 QString m_name;
00153 LayerSet *m_parent;
00154 bool has_focus;
00155 bool takes_focus;
00156 QRect screen_area;
00157 bool drawFontShadow;
00158 bool hidden;
00159 };
00160
00161 class MPUBLIC UIBarType : public UIType
00162 {
00163 public:
00164 UIBarType(const QString &name, QString, int, QRect);
00165 ~UIBarType();
00166
00167 void SetIcon(int, QPixmap);
00168 void SetText(int, QString);
00169 void SetIcon(int, QString);
00170
00171 void Draw(QPainter *, int, int);
00172
00173 void SetJustification(int jst) { m_justification = jst; }
00174 void SetSize(int size) { m_size = size; LoadImage(); }
00175 int GetNums(void) { return m_size; }
00176 void SetScreen(double w, double h) { m_wmult = w; m_hmult = h; }
00177 void SetFont(fontProp *font) { m_font = font; }
00178 void SetOrientation(int ori) { m_orientation = ori; }
00179 void SetTextOffset(QPoint to) { m_textoffset = to; }
00180 void SetIconOffset(QPoint ic) { m_iconoffset = ic; }
00181 void SetIconSize(QPoint is) { m_iconsize = is; }
00182 void ResetImage(int loc) { iconData[loc].resize(0, 0); }
00183 int GetSize() { return m_iconsize.x(); }
00184
00185 private:
00186 void LoadImage(int loc = -1, QString dat = "");
00187 QRect m_displaysize;
00188 QPoint m_iconsize;
00189 QPoint m_textoffset;
00190 QPoint m_iconoffset;
00191 int m_justification;
00192 int m_orientation;
00193 int m_size;
00194 fontProp *m_font;
00195 QString m_filename;
00196 QPixmap m_image;
00197 QMap<int, QString> textData;
00198 QMap<int, QPixmap> iconData;
00199
00200 };
00201
00202 class AlphaTable
00203 {
00204 public:
00205 AlphaTable();
00206 ~AlphaTable();
00207 AlphaTable(const QColor &color, int alpha);
00208
00209 unsigned char r[256], g[256], b[256];
00210
00211 private:
00212 void maketable(unsigned char* data, int channel, int alpha);
00213 };
00214
00215 class AlphaBlender
00216 {
00217 public:
00218 AlphaBlender();
00219 ~AlphaBlender();
00220 void init(int alpha = 96, int cacheSize = 30);
00221 void addColor(const QColor &color);
00222 void blendImage(const QImage &image, const QColor &color);
00223
00224 private:
00225 QDict<AlphaTable> alphaTables;
00226 int alpha;
00227 };
00228
00229 class MPUBLIC UIGuideType : public UIType
00230 {
00231 public:
00232 UIGuideType(const QString &name, int order);
00233 ~UIGuideType();
00234
00235 enum FillType { Alpha = 10, Dense, Eco, Solid };
00236
00237 void Draw(QPainter *dr, int drawlayer, int context);
00238
00239 void SetJustification(int jst);
00240 void SetCutDown(bool state) { cutdown = state; }
00241 void SetFont(fontProp *font) { this->font = font; }
00242 void SetFillType(int type) { filltype = type; }
00243 void SetShowCategoryColors(bool state) { drawCategoryColors = state; }
00244 void SetShowCategoryText(bool state) { drawCategoryText = state; }
00245 void SetSelectorType(int type) { seltype = type; }
00246 void SetNumRows(int numRows) { this->numRows = numRows; }
00247 void SetWindow(MythDialog *win) { window = win; }
00248
00249 void SetRecordingColors(const QString &reccol, const QString &concol)
00250 { reccolor = QColor(reccol); concolor = QColor(concol); }
00251 void SetSelectorColor(const QString &col) { selcolor = QColor(col); }
00252 void SetSolidColor(const QString &col) { solidcolor = QColor(col); }
00253 void SetCategoryColors(const QMap<QString, QString> &catColors);
00254
00255 void SetArea(const QRect &area) { this->area = area; }
00256 void SetScreenLocation(const QPoint &sl) { screenloc = sl; }
00257 void SetTextOffset(const QPoint &to) { textoffset = to; }
00258 void SetArrow(int, const QString &file);
00259 void LoadImage(int, const QString &file);
00260 void SetProgramInfo(int row, int col, const QRect &area,
00261 const QString &title, const QString &category,
00262 int arrow, int recType, int recStat, bool selected);
00263 void ResetData();
00264 void ResetRow(int row);
00265 void SetProgPast(int ppast);
00266
00267 private:
00268
00269 class UIGTCon
00270 {
00271 public:
00272 UIGTCon() { arrow = recType = recStat = 0; };
00273 UIGTCon(const QRect &drawArea, const QString &title,
00274 const QString &category, int arrow, int recType, int recStat)
00275 {
00276 this->drawArea = drawArea;
00277 this->title = title;
00278 this->category = category.stripWhiteSpace();
00279 this->arrow = arrow;
00280 this->recType = recType;
00281 this->recStat = recStat;
00282 }
00283
00284 UIGTCon(const UIGTCon &o)
00285 {
00286 drawArea = o.drawArea;
00287 title = o.title;
00288 category = o.category;
00289 categoryColor = o.categoryColor;
00290 arrow = o.arrow;
00291 recType = o.recType;
00292 recStat = o.recStat;
00293 }
00294
00295 QRect drawArea;
00296 QString title;
00297 QString category;
00298 QColor categoryColor;
00299 int arrow;
00300 int recType;
00301 int recStat;
00302 };
00303
00304 void drawBackground(QPainter *dr, UIGTCon *data);
00305 void drawBox(QPainter *dr, UIGTCon *data, const QColor &color);
00306 void drawText(QPainter *dr, UIGTCon *data);
00307 void drawRecType(QPainter *dr, UIGTCon *data);
00308 void drawCurrent(QPainter *dr, UIGTCon *data);
00309
00310 QPtrList<UIGTCon> *allData;
00311 UIGTCon selectedItem;
00312
00313 QPixmap recImages[15];
00314 QPixmap arrowImages[15];
00315
00316 int maxRows;
00317 int numRows;
00318
00319 MythDialog *window;
00320 QRect area;
00321 QPoint textoffset;
00322 QPoint screenloc;
00323
00324 int justification;
00325 bool multilineText;
00326 fontProp *font;
00327 QColor solidcolor;
00328
00329 QColor selcolor;
00330 int seltype;
00331
00332 QColor reccolor;
00333 QColor concolor;
00334
00335 int filltype;
00336 bool cutdown;
00337 bool drawCategoryColors;
00338 bool drawCategoryText;
00339
00340 QMap<QString, QColor> categoryColors;
00341 AlphaBlender alphaBlender;
00342
00343 int prog_past_col;
00344 };
00345
00346 class ImageGridItem
00347 {
00348 public:
00349 ImageGridItem(const QString &text, QPixmap *pixmap, bool selected, void *data)
00350 {
00351 this->text = text;
00352 this->pixmap = pixmap;
00353 this->selected = selected;
00354 this->data = data;
00355 }
00356
00357 ImageGridItem(const ImageGridItem &o)
00358 {
00359 text = o.text;
00360 pixmap = o.pixmap;
00361 selected = o.selected;
00362 data = o.data;
00363 }
00364
00365 ~ImageGridItem(void)
00366 {
00367 if (pixmap)
00368 {
00369 delete pixmap;
00370 pixmap = NULL;
00371 }
00372 }
00373
00374 ImageGridItem& operator=(ImageGridItem *rhs)
00375 {
00376 text = rhs->text;
00377 pixmap = rhs->pixmap;
00378 selected = rhs->selected;
00379 data = rhs->data;
00380 return *this;
00381 }
00382
00383 QString text;
00384 QPixmap *pixmap;
00385 bool selected;
00386 void *data;
00387 };
00388
00389 class MPUBLIC UIImageGridType : public UIType
00390 {
00391 Q_OBJECT
00392
00393 public:
00394
00395 UIImageGridType(const QString &name, int order);
00396 ~UIImageGridType(void);
00397
00398 void setColumnCount(int count) { columnCount = count; }
00399 void setRowCount(int count) { rowCount = count; }
00400 void setItemCount(int count) { itemCount = count; }
00401 void setBorderWidth(int width){ borderWidth = width; }
00402 void setPadding(int value){ padding = value; }
00403 void setArea(QRect area){ displayRect = area; }
00404 void appendItem(ImageGridItem *item);
00405 void updateItem(int itemNo, ImageGridItem *item);
00406 void updateItem(ImageGridItem *item);
00407 void removeItem(int itemNo);
00408 void removeItem(ImageGridItem *item);
00409 void reset(void);
00410 void setJustification(int jst);
00411 void setCutDown(bool state) { cutdown = state; }
00412 void setActiveFont(fontProp *font) { this->activeFont = font; }
00413 void setInactiveFont(fontProp *font) { this->inactiveFont = font; }
00414 void setSelectedFont(fontProp *font) { this->selectedFont = font; }
00415 void setWindow(MythDialog *win) { window = win; }
00416 void setNormalImage(QString filename) { normalImage = filename; }
00417 void setSelectedImage(QString filename) { selectedImage = filename; }
00418 void setHighlightedImage(QString filename) { highlightedImage = filename; }
00419 void setDefaultImage(QString filename) { defaultImage = filename; }
00420 void setShowChecks(bool value) { showCheck = value; }
00421 void setShowScrollArrows(bool value) { showScrollArrows = value; }
00422 void setShowSelected(bool value) { showSelected = value; }
00423
00424 QSize getImageItemSize();
00425 void setCurrentPos(int pos);
00426 void setCurrentPos(QString value);
00427 int getCurrentPos() { return currentItem; }
00428 ImageGridItem *getCurrentItem(void);
00429 ImageGridItem *getItemAt(int pos);
00430 ImageGridItem *getTopItem(void) { return getItemAt(topRow * columnCount); }
00431 int getItemCount(void) { return itemCount; }
00432 int getVisibleCount(void) { return columnCount * rowCount; }
00433 int getTopItemPos(void) { return topRow * columnCount; }
00434
00435 void calculateScreenArea();
00436
00437 enum textPosition
00438 {
00439 textPosTop,
00440 textPosBottom,
00441 };
00442 void setTextPosition(textPosition position) { textPos = position; }
00443 void setTextHeight(int height) { textHeight = height; }
00444
00445 void recalculateLayout(void);
00446
00447 void Draw(QPainter *p, int drawlayer, int context);
00448 bool handleKeyPress(QString action);
00449
00450
00451 signals:
00452 void itemChanged(ImageGridItem *item);
00453 void selectionChanged(ImageGridItem *item);
00454
00455 private:
00456 void drawCell(QPainter *p, int curPos, int xpos, int ypos);
00457 void drawText(QPainter *p, int curPos, int xpos, int ypos);
00458 void loadImages(void);
00459 void loadCellImages(void);
00460 QPixmap *createScaledPixmap(QString filename, int width, int height,
00461 QImage::ScaleMode mode);
00462 MythDialog *window;
00463 int rowCount;
00464 int columnCount;
00465 int itemCount;
00466 int currentItem;
00467 int borderWidth;
00468 int padding;
00469 int cellWidth;
00470 int cellHeight;
00471 int topRow;
00472 int lastRow;
00473 int lastColumn;
00474 int curColumn;
00475 int curRow;
00476
00477 QRect displayRect;
00478 QRect imageRect;
00479 QRect checkRect;
00480
00481 textPosition textPos;
00482 int textHeight;
00483 int justification;
00484 bool multilineText;
00485 fontProp *activeFont, *inactiveFont, *selectedFont;
00486 bool cutdown;
00487 bool showCheck;
00488 bool showScrollArrows;
00489 bool showSelected;
00490 bool showUpArrow;
00491 bool showDnArrow;
00492 QString normalImage;
00493 QString highlightedImage;
00494 QString selectedImage;
00495 QString defaultImage;
00496
00497 QPixmap *normalPixmap;
00498 QPixmap *highlightedPixmap;
00499 QPixmap *selectedPixmap;
00500 QPixmap *defaultPixmap;
00501
00502 QPixmap *checkNonPixmap;
00503 QPixmap *checkHalfPixmap;
00504 QPixmap *checkFullPixmap;
00505
00506 QPixmap *upArrowRegPixmap;
00507 QPixmap *upArrowActPixmap;
00508 QPixmap *dnArrowRegPixmap;
00509 QPixmap *dnArrowActPixmap;
00510
00511 QPtrList<ImageGridItem> *allData;
00512 };
00513
00514 class MPUBLIC UIListType : public UIType
00515 {
00516 Q_OBJECT
00517
00518 public:
00519 UIListType(const QString &, QRect, int);
00520 ~UIListType();
00521
00522 enum ItemArrows { ARROW_NONE, ARROW_LEFT, ARROW_RIGHT, ARROW_BOTH };
00523
00524 void SetCount(int cnt) { m_count = cnt;
00525 if (m_count)
00526 m_selheight = (int)(m_area.height() / m_count);
00527 else
00528 m_selheight = 0;
00529 }
00530
00531
00532 void SetItemText(int, int, QString);
00533 void SetItemText(int, QString);
00534 void SetItemArrow(int, int);
00535
00536 void SetActive(bool act) { m_active = act; }
00537 void SetItemCurrent(int cur) { m_current = cur; }
00538
00539 void SetColumnWidth(int col, int width) { columnWidth[col] = width; }
00540 void SetColumnContext(int col, int context) { columnContext[col] = context; }
00541 void SetColumnPad(int pad) { m_pad = pad; }
00542 void SetImageLeftArrow(QPixmap img, QPoint loc) {
00543 m_leftarrow = img; m_leftarrow_loc = loc; }
00544 void SetImageRightArrow(QPixmap img, QPoint loc) {
00545 m_rightarrow = img; m_rightarrow_loc = loc;}
00546 void SetImageUpArrow(QPixmap img, QPoint loc) {
00547 m_uparrow = img; m_uparrow_loc = loc; }
00548 void SetImageDownArrow(QPixmap img, QPoint loc) {
00549 m_downarrow = img; m_downarrow_loc = loc; }
00550 void SetImageSelection(QPixmap img, QPoint loc) {
00551 m_selection = img; m_selection_loc = loc; }
00552
00553 void SetUpArrow(bool arrow) { m_uarrow = arrow; }
00554 void SetDownArrow(bool arrow) { m_darrow = arrow; }
00555
00556 void SetFill(QRect area, QColor color, int type) {
00557 m_fill_area = area; m_fill_color = color;
00558 m_fill_type = type; }
00559
00560 void SetFonts(QMap<QString, QString> fonts, QMap<QString, fontProp> fontfcn) {
00561 m_fonts = fonts; m_fontfcns = fontfcn; }
00562 void EnableForcedFont(int num, QString func) { forceFonts[num] = m_fonts[func]; }
00563
00564 int GetCurrentItem() { return m_current; }
00565 int GetItems() { return m_count; }
00566 QString GetItemText(int, int col = 1);
00567 void ResetList() { listData.clear(); forceFonts.clear(); listArrows.clear();
00568 m_current = -1; m_columns = 0; }
00569 void ResetArrows() { listArrows.clear(); }
00570 void Draw(QPainter *, int drawlayer, int);
00571 bool ShowSelAlways() const { return m_showSelAlways; }
00572 void ShowSelAlways(bool bnew) { m_showSelAlways = bnew; }
00573 void calculateScreenArea();
00574
00575 public slots:
00576 bool takeFocus();
00577 void looseFocus();
00578
00579 private:
00580
00581 int m_selheight;
00582 int m_justification;
00583 int m_columns;
00584 int m_current;
00585 bool m_active;
00586 int m_pad;
00587 int m_count;
00588 bool m_darrow;
00589 bool m_uarrow;
00590 bool m_showSelAlways;
00591 QRect m_fill_area;
00592 QColor m_fill_color;
00593 int m_fill_type;
00594 QPixmap m_selection;
00595 QPixmap m_downarrow;
00596 QPixmap m_uparrow;
00597 QPixmap m_leftarrow;
00598 QPixmap m_rightarrow;
00599 QPoint m_selection_loc;
00600 QPoint m_downarrow_loc;
00601 QPoint m_uparrow_loc;
00602 QPoint m_rightarrow_loc;
00603 QPoint m_leftarrow_loc;
00604 QRect m_area;
00605 QMap<QString, QString> m_fonts;
00606 QMap<QString, fontProp> m_fontfcns;
00607 QMap<int, QString> forceFonts;
00608 QMap<int, QString> listData;
00609 QMap<int, int> listArrows;
00610 QMap<int, int> columnWidth;
00611 QMap<int, int> columnContext;
00612 };
00613
00614 class MPUBLIC UIImageType : public UIType
00615 {
00616 Q_OBJECT
00617
00618 public:
00619 UIImageType(const QString &, const QString &, int, QPoint);
00620 ~UIImageType();
00621
00622 QPoint DisplayPos() { return m_displaypos; }
00623 void SetPosition(QPoint pos) { m_displaypos = pos; }
00624
00625 void SetFlex(bool flex) { m_flex = flex; }
00626 void ResetFilename() { m_filename = orig_filename; };
00627 void SetImage(QString file) { m_filename = file; }
00628 void SetImage(const QPixmap &imgdata) { img = imgdata; m_show = true; }
00629 void SetSize(int x, int y) { m_force_x = x; m_force_y = y; }
00630 void SetSkip(int x, int y) { m_drop_x = x; m_drop_y = y; }
00631
00632 void ResetImage() { img = QPixmap(); }
00633 void LoadImage();
00634 const QPixmap &GetImage() { return img; }
00635 QSize GetSize(bool scaled = false)
00636 {
00637 return scaled ?
00638 QSize(int(m_force_x * m_wmult), int(m_force_y * m_hmult)) :
00639 QSize(m_force_x, m_force_y);
00640 }
00641
00642 virtual void Draw(QPainter *, int, int);
00643
00644 const QString& GetImageFilename() const { return m_filename; }
00645
00646 public slots:
00647
00648
00649
00650
00651
00652
00653
00654
00655 virtual void refresh();
00656
00657 protected:
00658
00659 QPoint m_displaypos;
00660 QString orig_filename;
00661 QString m_filename;
00662 bool m_isvalid;
00663 bool m_flex;
00664 bool m_show;
00665 bool m_transparent;
00666 int m_drop_x;
00667 int m_drop_y;
00668 int m_force_x;
00669 int m_force_y;
00670 QPixmap img;
00671
00672 };
00673
00674 class MPUBLIC UIAnimatedImageType : public UIType
00675 {
00676 Q_OBJECT
00677
00678 public:
00679 UIAnimatedImageType(const QString &, const QString &, int, int, int, int, QPoint);
00680 ~UIAnimatedImageType();
00681
00682 QPoint DisplayPos() { return m_displaypos; }
00683 void SetPosition(QPoint pos) { m_displaypos = pos; }
00684
00685 void SetFlex(bool flex) { m_flex = flex; }
00686 void SetFilename(QString file) { m_filename = file; }
00687 void SetSize(int x, int y) { m_force_x = x; m_force_y = y; }
00688 void SetSkip(int x, int y) { m_drop_x = x; m_drop_y = y; }
00689 void SetImageCount(int count);
00690 int GetImageCount() { return m_imagecount; }
00691 void SetInterval(int interval) { m_interval = interval; }
00692 int GetInterval() { return m_interval; }
00693 void SetStartInterval(int interval) { m_startinterval = interval; }
00694 int GetStartInterval() { return m_startinterval; }
00695 void SetWindow(MythDialog *win) { m_window = win; }
00696 void LoadImages();
00697 void Pause();
00698 void UnPause();
00699 bool IsPaused() { return !timer.isActive(); }
00700 void NextImage();
00701 void PreviousImage();
00702 void GotoFirstImage() { m_currentimage = 1; }
00703 QSize GetSize(bool scaled = false)
00704 {
00705 return scaled ?
00706 QSize(int(m_force_x * m_wmult), int(m_force_y * m_hmult)) :
00707 QSize(m_force_x, m_force_y);
00708 }
00709
00710 virtual void Draw(QPainter *, int, int);
00711
00712 public slots:
00713 void refresh();
00714 void IntervalTimeout();
00715
00716 protected:
00717 void InitImageCache();
00718 void ClearImages();
00719 bool LoadImage(int imageNo);
00720
00721 QPoint m_displaypos;
00722 QString orig_filename;
00723 QString m_filename;
00724 bool m_isvalid;
00725 bool m_flex;
00726 bool m_show;
00727 int m_drop_x;
00728 int m_drop_y;
00729 int m_force_x;
00730 int m_force_y;
00731 int m_imagecount;
00732 int m_currentimage;
00733 int m_interval;
00734 int m_startinterval;
00735 vector<QPixmap *> *imageList;
00736 QTimer timer;
00737 MythDialog* m_window;
00738 };
00739
00740 class MPUBLIC UIRepeatedImageType : public UIImageType
00741 {
00742 Q_OBJECT
00743
00744 public:
00745
00746 UIRepeatedImageType(const QString &, const QString &, int, QPoint);
00747 void setRepeat(int how_many);
00748 void Draw(QPainter *, int, int);
00749 void setOrientation(int x);
00750
00751 public slots:
00752
00753 void refresh();
00754
00755 protected:
00756
00757 int m_repeat;
00758 int m_highest_repeat;
00759
00760 private:
00761
00762
00763
00764
00765
00766
00767 int m_orientation;
00768
00769 };
00770
00771
00772 class MPUBLIC UITextType : public UIType
00773 {
00774 public:
00775 UITextType(const QString &, fontProp *, const QString &, int,
00776 QRect displayrect, QRect altdisplayrect);
00777 ~UITextType();
00778
00779 QString Name() { return m_name; }
00780
00781 void UseAlternateArea(bool useAlt);
00782
00783 void SetText(const QString &text);
00784 QString GetText() { return m_message; }
00785 QString GetDefaultText() { return m_default_msg; }
00786
00787 void SetJustification(int jst) { m_justification = jst; }
00788 int GetJustification() { return m_justification; }
00789 void SetCutDown(bool cut) { m_cutdown = cut; }
00790
00791 QRect DisplayArea() { return m_displaysize; }
00792 void SetDisplayArea(const QRect &rect) { m_displaysize = rect; }
00793 virtual void calculateScreenArea();
00794
00795 virtual void Draw(QPainter *, int, int);
00796
00797 fontProp *GetFont(void) { return m_font; }
00798 void SetFont(fontProp *font);
00799
00800 protected:
00801
00802
00803 int m_justification;
00804 QRect m_displaysize;
00805 QRect m_origdisplaysize;
00806 QRect m_altdisplaysize;
00807 QString m_message;
00808 QString m_default_msg;
00809
00810 fontProp *m_font;
00811
00812 bool m_cutdown;
00813
00814 };
00815
00816 class MPUBLIC UIRichTextType : public UIType
00817 {
00818 Q_OBJECT
00819
00820 public:
00821 UIRichTextType(const QString &, fontProp *, const QString &, int,
00822 QRect displayrect, QRect textrect);
00823 ~UIRichTextType();
00824
00825 QString Name() { return m_name; }
00826
00827 void SetText(const QString &text);
00828 QString GetText() { return m_message; }
00829
00830 QRect DisplayArea() { return m_displayArea; }
00831 void SetDisplayArea(const QRect &rect) { m_displayArea = rect; }
00832 void SetShowScrollArrows(bool bShowArrows)
00833 { m_showScrollArrows = bShowArrows; }
00834
00835 QRect TextArea() { return m_textArea; }
00836 void SetTextArea(const QRect &rect) { m_textArea = rect; }
00837
00838 void SetImageUpArrowReg(QPixmap img, QPoint loc)
00839 { m_upArrowReg = img; m_upArrowRegPos = loc; }
00840 void SetImageDnArrowReg(QPixmap img, QPoint loc)
00841 { m_dnArrowReg = img; m_dnArrowRegPos = loc; }
00842 void SetImageUpArrowSel(QPixmap img, QPoint loc)
00843 { m_upArrowSel = img; m_upArrowSelPos = loc; }
00844 void SetImageDnArrowSel(QPixmap img, QPoint loc)
00845 { m_dnArrowSel = img; m_dnArrowSelPos = loc; }
00846
00847 void SetBackground(QPixmap *background);
00848 void SetBackgroundImages(QString bgImageReg, QString bgImageSel);
00849
00850 virtual void calculateScreenArea();
00851
00852 virtual void Draw(QPainter *, int, int);
00853 public slots:
00854 void ScrollDown(void);
00855 void ScrollUp(void);
00856 void ScrollPageDown(void);
00857 void ScrollPageUp(void);
00858
00859 virtual bool takeFocus();
00860 virtual void looseFocus();
00861
00862 protected:
00863 void refreshImage();
00864 void updateBackground();
00865 void loadBackgroundImg(bool &changed);
00866
00867 QRect m_displayArea;
00868 QRect m_textArea;
00869
00870 int m_yPos;
00871 int m_textHeight;
00872
00873 QString m_message;
00874 QString m_bgImageReg;
00875 QString m_bgImageSel;
00876
00877 fontProp *m_font;
00878
00879 QPixmap *m_background;
00880 QPixmap *m_compBackground;
00881
00882 QPixmap *m_image;
00883
00884 QString m_backgroundFile;
00885 QImage *m_backgroundImage;
00886
00887 bool m_showScrollArrows;
00888 bool m_showUpArrow;
00889 bool m_showDnArrow;
00890
00891 QPoint m_upArrowRegPos;
00892 QPoint m_dnArrowRegPos;
00893 QPoint m_upArrowSelPos;
00894 QPoint m_dnArrowSelPos;
00895
00896 QPixmap m_upArrowReg;
00897 QPixmap m_dnArrowReg;
00898 QPixmap m_upArrowSel;
00899 QPixmap m_dnArrowSel;
00900 };
00901
00902 class MPUBLIC UIMultiTextType : public UITextType
00903 {
00904
00905 Q_OBJECT
00906
00907 public:
00908
00909 enum AnimationStage
00910 {
00911 Animation_Drop = 0,
00912 Animation_DropPause,
00913 Animation_Scroll,
00914 Animation_ScrollPause
00915 };
00916
00917 UIMultiTextType(
00918 const QString &,
00919 fontProp *,
00920 int,
00921 QRect displayrect,
00922 QRect altdisplayrect
00923 );
00924
00925 void setTexts(QStringList new_messagep);
00926 void clearTexts();
00927 void Draw(QPainter*, int, int);
00928
00929 void setDropTimingLength(int x){drop_timing_length = x;}
00930 void setDropTimingPause(int x){drop_timing_pause = x;}
00931 void setScrollTimingLength(int x){scroll_timing_length = x;}
00932 void setScrollTimingPause(int x){scroll_timing_pause = x;}
00933
00934 void setMessageSpacePadding(int x){message_space_padding = x;}
00935
00936
00937 private slots:
00938
00939 void animate();
00940
00941 private:
00942
00943 QStringList messages;
00944 int current_text_index;
00945 QTimer transition_timer;
00946 AnimationStage animation_stage;
00947 int horizontal_transform;
00948 int max_horizontal_transform;
00949 int vertical_transform;
00950 int drop_timing_length;
00951 int drop_timing_pause;
00952 int scroll_timing_length;
00953 int scroll_timing_pause;
00954
00955 int message_space_padding;
00956
00957 };
00958
00959 class MPUBLIC UIRemoteEditType : public UIType
00960 {
00961 Q_OBJECT
00962
00963 public:
00964
00965 UIRemoteEditType(const QString &name, fontProp *font, const QString &text,
00966 int dorder, QRect displayrect);
00967 ~UIRemoteEditType();
00968
00969 void createEdit(MythThemedDialog* parent);
00970 QWidget *getEdit(void) { return (QWidget*) edit; };
00971 void Draw(QPainter *, int drawlayer, int context);
00972 void setArea(QRect area){m_displaysize = area;}
00973 void setText(const QString some_text);
00974 QString getText();
00975 void setFont(fontProp *font);
00976 void setCharacterColors(QColor unselected, QColor selected, QColor special);
00977 void calculateScreenArea();
00978
00979 public slots:
00980 void takeFocusAwayFromEditor(bool up_or_down);
00981 void editorChanged(QString value);
00982 virtual bool takeFocus();
00983 virtual void looseFocus();
00984 virtual void show();
00985 virtual void hide();
00986
00987 signals:
00988 void textChanged(QString value);
00989
00990 private:
00991 MythRemoteLineEdit *edit;
00992 QRect m_displaysize;
00993 QString m_text;
00994 fontProp *m_font;
00995 QColor m_unselected;
00996 QColor m_selected;
00997 QColor m_special;
00998
00999 MythThemedDialog* m_parentDialog;
01000 };
01001
01002 class MPUBLIC UIStatusBarType : public UIType
01003 {
01004 public:
01005 UIStatusBarType(QString &, QPoint, int);
01006 ~UIStatusBarType();
01007
01008 void SetUsed(int used) { m_used = used; refresh();}
01009 void SetTotal(int total) { m_total = total; }
01010
01011 void SetLocation(QPoint loc) { m_location = loc; }
01012 void SetContainerImage(QPixmap img) { m_container = img; }
01013 void SetFillerImage(QPixmap img) { m_filler = img; }
01014 void SetFiller(int fill) { m_fillerSpace = fill; }
01015 void calculateScreenArea();
01016 void setOrientation(int x);
01017
01018 void Draw(QPainter *, int drawlayer, int);
01019
01020 private:
01021
01022 int m_used;
01023 int m_total;
01024 int m_fillerSpace;
01025
01026 QPixmap m_container;
01027 QPixmap m_filler;
01028 QPoint m_location;
01029
01030
01031
01032
01033
01034
01035 int m_orientation;
01036
01037 };
01038
01039 class MPUBLIC UIManagedTreeListType : public UIType
01040 {
01041 Q_OBJECT
01042
01043
01044
01045
01046
01047
01048
01049
01050
01051
01052 typedef QMap <int, QRect> CornerMap;
01053 typedef QValueVector<int> IntVector;
01054
01055 public:
01056
01057 UIManagedTreeListType(const QString &name);
01058 ~UIManagedTreeListType();
01059 void setUpArrowOffset(QPoint& pt) { upArrowOffset = pt;}
01060 void setDownArrowOffset(QPoint& pt) { downArrowOffset = pt;}
01061 void setLeftArrowOffset(QPoint& pt) {leftArrowOffset = pt;}
01062 void setRightArrowOffset(QPoint& pt) {rightArrowOffset = pt;}
01063 void setSelectPoint(QPoint& pt) { selectPoint = pt;}
01064 void setSelectPadding(int pad) {selectPadding = pad;}
01065 void setSelectScale(bool scale) {selectScale = scale;}
01066 void setArea(QRect an_area) { area = an_area; }
01067 void setBins(int l_bins) { bins = l_bins; }
01068 void setBinAreas(CornerMap some_bin_corners) { bin_corners = some_bin_corners; }
01069 void Draw(QPainter *, int drawlayer, int context);
01070 void assignTreeData(GenericTree *a_tree);
01071 void moveToNode(QValueList<int> route_of_branches);
01072 void moveToNodesFirstChild(QValueList<int> route_of_branchs);
01073 QValueList <int>* getRouteToActive();
01074 QStringList getRouteToCurrent();
01075 bool tryToSetActive(QValueList <int> route);
01076 bool tryToSetCurrent(QStringList route);
01077 void setHighlightImage(QPixmap an_image){highlight_image = an_image;}
01078 void setArrowImages(QPixmap up, QPixmap down, QPixmap left, QPixmap right)
01079 {
01080 up_arrow_image = up;
01081 down_arrow_image = down;
01082 left_arrow_image = left;
01083 right_arrow_image = right;
01084 }
01085 void addIcon(int i, QPixmap *img) { iconMap[i] = img; }
01086 void setFonts(QMap<QString, QString> fonts, QMap<QString, fontProp> fontfcn) {
01087 m_fonts = fonts; m_fontfcns = fontfcn; }
01088 void drawText(QPainter *p, QString the_text, QString font_name, int x, int y, int bin_number, int icon_number);
01089 void setJustification(int jst) { m_justification = jst; }
01090 int getJustification() { return m_justification; }
01091 void makeHighlights();
01092 void syncCurrentWithActive();
01093 void forceLastBin(){active_bin = bins; refresh();}
01094 void calculateScreenArea();
01095 void setTreeOrdering(int an_int){tree_order = an_int;}
01096 void setVisualOrdering(int an_int){visual_order = an_int;}
01097 void setIconSelector(int an_int){iconAttr = an_int;}
01098 void showWholeTree(bool yes_or_no){ show_whole_tree = yes_or_no; }
01099 void scrambleParents(bool yes_or_no){ scrambled_parents = yes_or_no; }
01100 void colorSelectables(bool yes_or_no){color_selectables = yes_or_no; }
01101 void sortTreeByString(){if (my_tree_data) my_tree_data->sortByString(); }
01102 void sortTreeBySelectable(){if (my_tree_data) my_tree_data->sortBySelectable();}
01103 GenericTree *getCurrentNode() { return current_node; }
01104 void setCurrentNode(GenericTree *a_node);
01105 int getActiveBin();
01106 void setActiveBin(int a_bin);
01107
01108 public slots:
01109
01110 bool popUp();
01111 bool pushDown();
01112 bool moveUp(bool do_refresh = true);
01113 bool moveUpByAmount(int number_up = 1, bool do_refresh = true);
01114 bool moveDown(bool do_refresh = true);
01115 bool moveDownByAmount(int number_down = 1, bool do_refresh = true);
01116 bool pageUp();
01117 bool pageDown();
01118 bool nextActive(bool wrap_around, bool traverse_up_down);
01119 bool prevActive(bool wrap_around, bool traverse_up_down);
01120 void select();
01121 void activate();
01122 void enter();
01123 void deactivate(){active_node = NULL;}
01124 bool incSearchStart();
01125 bool incSearchNext();
01126
01127 signals:
01128
01129 void nodeSelected(int, IntVector*);
01130 void nodeEntered(int, IntVector*);
01131
01132 private:
01133
01134 int calculateEntriesInBin(int bin_number);
01135 bool complexInternalNextPrevActive(bool forward_or_reverse, bool wrap_around);
01136 QRect area;
01137 int bins;
01138 int active_bin;
01139
01140 CornerMap bin_corners;
01141 CornerMap screen_corners;
01142 GenericTree *my_tree_data;
01143 GenericTree *current_node;
01144 GenericTree *active_parent;
01145 GenericTree *active_node;
01146 int tree_order;
01147 int visual_order;
01148 int iconAttr;
01149 int selectPadding;
01150 bool selectScale;
01151
01152 QMap<QString, QString> m_fonts;
01153 QMap<QString, fontProp> m_fontfcns;
01154 int m_justification;
01155 QPixmap highlight_image;
01156 QPixmap up_arrow_image;
01157 QPixmap down_arrow_image;
01158 QPixmap left_arrow_image;
01159 QPixmap right_arrow_image;
01160 QPtrList<QPixmap> resized_highlight_images;
01161 QMap<int, QPixmap*> highlight_map;
01162 QValueList <int> route_to_active;
01163 bool show_whole_tree;
01164 bool scrambled_parents;
01165 bool color_selectables;
01166 QMap<int, QPixmap*> iconMap;
01167 QPoint selectPoint;
01168 QPoint upArrowOffset;
01169 QPoint downArrowOffset;
01170 QPoint leftArrowOffset;
01171 QPoint rightArrowOffset;
01172 QString incSearch;
01173 bool bIncSearchContains;
01174 };
01175
01176 class MPUBLIC UIPushButtonType : public UIType
01177 {
01178 Q_OBJECT
01179
01180 public:
01181
01182 UIPushButtonType(const QString &name, QPixmap on, QPixmap off, QPixmap pushed);
01183
01184 virtual void Draw(QPainter *, int drawlayer, int context);
01185 void setPosition(QPoint pos){m_displaypos = pos;}
01186 virtual void calculateScreenArea();
01187 void setLockOn();
01188
01189 public slots:
01190
01191 virtual void push();
01192 virtual void unPush();
01193 virtual void activate(){push();}
01194
01195 signals:
01196
01197 void pushed();
01198 void pushed(QString);
01199
01200 protected:
01201
01202 QPoint m_displaypos;
01203 QPixmap on_pixmap;
01204 QPixmap off_pixmap;
01205 QPixmap pushed_pixmap;
01206 bool currently_pushed;
01207 QTimer push_timer;
01208 bool m_lockOn;
01209
01210 };
01211
01212 class MPUBLIC UITextButtonType : public UIType
01213 {
01214 Q_OBJECT
01215
01216 public:
01217
01218 UITextButtonType(const QString &name, QPixmap on, QPixmap off, QPixmap pushed);
01219
01220 void Draw(QPainter *, int drawlayer, int context);
01221 void setPosition(QPoint pos){m_displaypos = pos;}
01222 void setText(const QString some_text);
01223 void setFont(fontProp *font) { m_font = font; }
01224 void calculateScreenArea();
01225
01226 public slots:
01227
01228 void push();
01229 void unPush();
01230 void activate(){push();}
01231
01232 signals:
01233
01234 void pushed();
01235
01236 private:
01237
01238 QPoint m_displaypos;
01239 QPixmap on_pixmap;
01240 QPixmap off_pixmap;
01241 QPixmap pushed_pixmap;
01242 QString m_text;
01243 fontProp *m_font;
01244 bool currently_pushed;
01245 QTimer push_timer;
01246
01247 };
01248
01249
01250
01251 class MPUBLIC UICheckBoxType : public UIType
01252 {
01253 Q_OBJECT
01254
01255
01256
01257
01258
01259 public:
01260
01261 UICheckBoxType(const QString &name,
01262 QPixmap checkedp,
01263 QPixmap uncheckedp,
01264 QPixmap checked_highp,
01265 QPixmap unchecked_highp);
01266
01267 void Draw(QPainter *, int drawlayer, int context);
01268 void setPosition(QPoint pos){m_displaypos = pos;}
01269 void calculateScreenArea();
01270 bool getState(){return checked;}
01271
01272 public slots:
01273
01274 void push();
01275 void setState(bool checked_or_not);
01276 void toggle(){push();}
01277 void activate(){push();}
01278
01279 signals:
01280
01281 void pushed(bool state);
01282
01283 private:
01284
01285 QPoint m_displaypos;
01286 QPixmap checked_pixmap;
01287 QPixmap unchecked_pixmap;
01288 QPixmap checked_pixmap_high;
01289 QPixmap unchecked_pixmap_high;
01290 bool checked;
01291 QString label;
01292 };
01293
01294 class IntStringPair
01295 {
01296
01297
01298
01299 public:
01300
01301 IntStringPair(int an_int, const QString a_string){my_int = an_int; my_string = a_string;}
01302
01303 void setString(const QString &a_string){my_string = a_string;}
01304 void setInt(int an_int){my_int = an_int;}
01305 QString getString(){return my_string;}
01306 int getInt(){return my_int;}
01307
01308
01309 private:
01310
01311 int my_int;
01312 QString my_string;
01313
01314 };
01315
01316
01317 class MPUBLIC UISelectorType : public UIPushButtonType
01318 {
01319 Q_OBJECT
01320
01321
01322
01323
01324
01325
01326
01327
01328
01329 public:
01330
01331 UISelectorType(const QString &name, QPixmap on, QPixmap off, QPixmap pushed, QRect area);
01332 ~UISelectorType();
01333
01334 void Draw(QPainter *, int drawlayer, int context);
01335 void calculateScreenArea();
01336 void addItem(int an_int, const QString &a_string);
01337 void setFont(fontProp *font) { m_font = font; }
01338 QString getCurrentString();
01339 int getCurrentInt();
01340
01341 public slots:
01342
01343 void push(bool up_or_down);
01344 void unPush();
01345 void activate(){push(true);}
01346 void cleanOut(){current_data = NULL; my_data.clear();}
01347 void setToItem(int which_item);
01348 void setToItem(const QString &which_item);
01349
01350 signals:
01351
01352 void pushed(int);
01353
01354 private:
01355
01356 QRect m_area;
01357 fontProp *m_font;
01358 QPtrList<IntStringPair> my_data;
01359 IntStringPair *current_data;
01360
01361 };
01362
01363
01364
01365
01366 class MPUBLIC UIBlackHoleType : public UIType
01367 {
01368 Q_OBJECT
01369
01370
01371
01372
01373
01374
01375
01376 public:
01377
01378 UIBlackHoleType(const QString &name);
01379 void calculateScreenArea();
01380 void setArea(QRect an_area) { area = an_area; }
01381 virtual void Draw(QPainter *, int, int){}
01382
01383 protected:
01384
01385 QRect area;
01386 };
01387
01388 class MPUBLIC UIKeyType : public UIType
01389 {
01390 Q_OBJECT
01391
01392 public:
01393 UIKeyType(const QString &);
01394 ~UIKeyType();
01395
01396 QPoint GetPosition() { return m_pos; }
01397
01398 void SetArea(QRect &area) { m_area = area; }
01399 void SetPosition(QPoint pos) { m_pos = pos; }
01400 void SetImages(QPixmap *normal, QPixmap *focused, QPixmap *down,
01401 QPixmap *downFocused);
01402 void SetDefaultImages(QPixmap *normal, QPixmap *focused, QPixmap *down,
01403 QPixmap *downFocused);
01404
01405 void SetFonts(fontProp *normal, fontProp *focused, fontProp *down,
01406 fontProp *downFocused);
01407 void SetDefaultFonts(fontProp *normal, fontProp *focused, fontProp *down,
01408 fontProp *downFocused);
01409
01410 void SetType(QString type) { m_type = type; }
01411 QString GetType() { return m_type; }
01412
01413 void SetChars(QString normal, QString shift, QString alt, QString shiftAlt);
01414 QString GetChar();
01415
01416 void SetMoves(QString moveLeft, QString moveRight, QString moveUp,
01417 QString moveDown);
01418 QString GetMove(QString direction);
01419
01420 void SetShiftState(bool sh, bool ag);
01421 void SetOn(bool bOn) { m_bDown = bOn; refresh(); }
01422 bool IsOn(void) { return m_bDown; }
01423
01424 void SetToggleKey(bool bOn) { m_bToggle = bOn; }
01425 bool IsToggleKey(void) { return m_bToggle; }
01426
01427 virtual void Draw(QPainter *, int, int);
01428 virtual void calculateScreenArea();
01429
01430 public slots:
01431 void push();
01432 void unPush();
01433 void activate(){push();}
01434
01435 signals:
01436 void pushed();
01437
01438 private:
01439 QString decodeChar(QString c);
01440
01441 QRect m_area;
01442 QString m_type;
01443
01444 QPixmap *m_normalImg;
01445 QPixmap *m_focusedImg;
01446 QPixmap *m_downImg;
01447 QPixmap *m_downFocusedImg;
01448
01449 fontProp *m_normalFont;
01450 fontProp *m_focusedFont;
01451 fontProp *m_downFont;
01452 fontProp *m_downFocusedFont;
01453
01454 QPoint m_pos;
01455
01456 QString m_normalChar;
01457 QString m_shiftChar;
01458 QString m_altChar;
01459 QString m_shiftAltChar;
01460
01461 QString m_moveLeft;
01462 QString m_moveRight;
01463 QString m_moveUp;
01464 QString m_moveDown;
01465
01466 bool m_bShift;
01467 bool m_bAlt;
01468 bool m_bDown;
01469 bool m_bToggle;
01470
01471 bool m_bPushed;
01472 QTimer m_pushTimer;
01473 };
01474
01475 class MPUBLIC UIKeyboardType : public UIType
01476 {
01477 Q_OBJECT
01478
01479 public:
01480 UIKeyboardType(const QString &, int);
01481 ~UIKeyboardType();
01482
01483 typedef QPtrList <UIKeyType> KeyList;
01484
01485 void SetContainer(LayerSet *container) { m_container = container; }
01486 void SetArea(QRect &area) { m_area = area; }
01487 void SetEdit(QWidget* edit) { m_parentEdit = edit; }
01488 void SetParentDialog(MythThemedDialog * parentDialog)
01489 { m_parentDialog = parentDialog; }
01490
01491 KeyList GetKeys() { return m_keyList; }
01492 void AddKey(UIKeyType *key);
01493
01494 virtual void Draw(QPainter *, int, int);
01495 virtual void calculateScreenArea();
01496 virtual void keyPressEvent(QKeyEvent *e);
01497
01498 private slots:
01499 void charKey();
01500 void lockOnOff();
01501 void shiftLOnOff();
01502 void shiftROnOff();
01503 void shiftOff();
01504 void altGrOnOff();
01505 void compOnOff();
01506 void updateButtons();
01507 void leftCursor();
01508 void rightCursor();
01509 void backspaceKey();
01510 void delKey();
01511 void close();
01512
01513 private:
01514 void init();
01515 void insertChar(QString c);
01516 void moveUp();
01517 void moveDown();
01518 void moveLeft();
01519 void moveRight();
01520 UIKeyType *findKey(QString keyName);
01521
01522 QRect m_area;
01523
01524 bool m_bInitalized;
01525
01526 bool m_bCompTrap;
01527 QString m_comp1;
01528
01529 UIKeyType *m_altKey;
01530 UIKeyType *m_lockKey;
01531 UIKeyType *m_shiftLKey;
01532 UIKeyType *m_shiftRKey;
01533 UIKeyType *m_focusedKey;
01534 UIKeyType *m_doneKey;
01535
01536 QWidget *m_parentEdit;
01537 MythThemedDialog *m_parentDialog;
01538
01539 LayerSet *m_container;
01540 KeyList m_keyList;
01541 };
01542
01543 #endif