1 /* 2 SPDX-FileCopyrightText: 2003 Marco Krüger <grisuji@gmx.de> 3 SPDX-FileCopyrightText: 2003 Ian Wadham <iandw.au@gmail.com> 4 SPDX-FileCopyrightText: 2009 Ian Wadham <iandw.au@gmail.com> 5 6 SPDX-License-Identifier: GPL-2.0-or-later 7 */ 8 9 #ifndef KGRSELECTOR_H 10 #define KGRSELECTOR_H 11 12 #include <QDialog> 13 #include <QList> 14 #include <QTreeWidget> 15 #include <QTreeWidgetItem> 16 17 /** 18 @author Ian Wadham and Marco Krüger 19 */ 20 21 class KGrGameData; 22 class KGrThumbNail; 23 class KGrGameListItem; 24 class KGrGameIO; 25 class QSpinBox; 26 class QScrollBar; 27 class QPushButton; 28 class QLabel; 29 class QTextEdit; 30 31 /******************************************************************************/ 32 /******************* DIALOG TO SELECT A GAME AND LEVEL *******************/ 33 /******************************************************************************/ 34 35 class KGrSLDialog : public QDialog 36 { 37 Q_OBJECT 38 public: 39 KGrSLDialog (int action, int requestedLevel, int gameIndex, 40 QList<KGrGameData *> & gameList, 41 const QString & pSystemDir, const QString & pUserDir, 42 QWidget * parent = nullptr); 43 ~KGrSLDialog() override; 44 45 bool selectLevel (int & selectedGame, int & selectedLevel); 46 47 Q_SIGNALS: 48 void editNameAndHint(); 49 50 private Q_SLOTS: 51 void slSetGames (int cIndex); 52 void slGame(); 53 void slShowLevel (int i); 54 void slUpdate (const QString & text); 55 void slPaintLevel(); 56 void slotHelp(); // Will replace KDE slotHelp(). 57 58 private: 59 void setupWidgets(); 60 61 int slAction; 62 QList<KGrGameData *> myGameList; // List of games. 63 int defaultGame; 64 int defaultLevel; 65 int slGameIndex; 66 QString systemDir; 67 QString userDir; 68 QWidget * slParent; 69 70 QLabel * gameL; 71 QTreeWidget * games; 72 QLabel * gameN; 73 QLabel * gameD; 74 QTextEdit * gameAbout; 75 76 QLabel * numberL; 77 QSpinBox * display; 78 QScrollBar * number; 79 QPushButton * levelNH; 80 QLabel * slName; 81 KGrThumbNail * thumbNail; 82 }; 83 84 /******************************************************************************* 85 ************************* ITEM FOR THE LIST OF GAMES ************************* 86 *******************************************************************************/ 87 88 class KGrGameListItem : public QTreeWidgetItem 89 { 90 public: 91 explicit KGrGameListItem (const QStringList & data, const int internalId = -1); 92 int id() const; 93 void setId (const int internalId); 94 private: 95 int mInternalId; 96 }; 97 98 /******************************************************************************/ 99 /********************** CLASS TO DISPLAY THUMBNAIL ***********************/ 100 /******************************************************************************/ 101 102 class KGrThumbNail : public QFrame 103 { 104 public: 105 explicit KGrThumbNail (QWidget *parent = nullptr); 106 ~KGrThumbNail() override; 107 108 void setLevelData (const QString& dir, const QString& prefix, 109 int level, QLabel * sln); 110 111 static QColor backgroundColor; 112 static QColor brickColor; 113 static QColor ladderColor; 114 static QColor poleColor; 115 116 protected: 117 void paintEvent (QPaintEvent * event) override; // Draw a preview of a level. 118 119 private: 120 KGrGameIO * io; 121 QByteArray levelName; 122 QByteArray levelLayout; 123 QLabel * lName; // Place to write level-name. 124 }; 125 126 #endif 127