File indexing completed on 2024-12-08 06:46:03

0001 /*
0002     SPDX-FileCopyrightText: 2003 Marco Krüger <grisuji@gmx.de>
0003     SPDX-FileCopyrightText: 2003 Ian Wadham <iandw.au@gmail.com>
0004     SPDX-FileCopyrightText: 2009 Ian Wadham <iandw.au@gmail.com>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #ifndef KGRSELECTOR_H
0010 #define KGRSELECTOR_H
0011 
0012 #include <QDialog>
0013 #include <QList>
0014 #include <QTreeWidget>
0015 #include <QTreeWidgetItem>
0016 
0017 /**
0018 @author Ian Wadham and Marco Krüger
0019 */
0020 
0021 class KGrGameData;
0022 class KGrThumbNail;
0023 class KGrGameListItem;
0024 class KGrGameIO;
0025 class QSpinBox;
0026 class QScrollBar;
0027 class QPushButton;
0028 class QLabel;
0029 class QTextEdit;
0030 
0031 /******************************************************************************/
0032 /*******************    DIALOG TO SELECT A GAME AND LEVEL   *******************/
0033 /******************************************************************************/
0034 
0035 class KGrSLDialog : public QDialog
0036 {
0037 Q_OBJECT
0038 public:
0039     KGrSLDialog (int action, int requestedLevel, int gameIndex,
0040                  QList<KGrGameData *> & gameList,
0041                  const QString & pSystemDir, const QString & pUserDir,
0042                  QWidget * parent = nullptr);
0043     ~KGrSLDialog() override;
0044 
0045     bool selectLevel (int & selectedGame, int & selectedLevel);
0046 
0047 Q_SIGNALS:
0048     void editNameAndHint();
0049 
0050 private Q_SLOTS:
0051     void slSetGames (int cIndex);
0052     void slGame();
0053     void slShowLevel (int i);
0054     void slUpdate (const QString & text);
0055     void slPaintLevel();
0056     void slotHelp();                // Will replace KDE slotHelp().
0057 
0058 private:
0059     void                setupWidgets();
0060 
0061     int         slAction;
0062     QList<KGrGameData *> myGameList;    // List of games.
0063     int         defaultGame;
0064     int         defaultLevel;
0065     int         slGameIndex;
0066     QString             systemDir;
0067     QString             userDir;
0068     QWidget *       slParent;
0069 
0070     QLabel *        gameL;
0071     QTreeWidget *   games;
0072     QLabel *        gameN;
0073     QLabel *        gameD;
0074     QTextEdit *     gameAbout;
0075 
0076     QLabel *        numberL;
0077     QSpinBox *      display;
0078     QScrollBar *    number;
0079     QPushButton *   levelNH;
0080     QLabel *        slName;
0081     KGrThumbNail *  thumbNail;
0082 };
0083 
0084 /*******************************************************************************
0085 *************************  ITEM FOR THE LIST OF GAMES  *************************
0086 *******************************************************************************/
0087 
0088 class KGrGameListItem : public QTreeWidgetItem
0089 {
0090 public:
0091     explicit KGrGameListItem (const QStringList & data, const int internalId = -1);
0092     int id() const;
0093     void setId (const int internalId);
0094 private:
0095     int mInternalId;
0096 };
0097 
0098 /******************************************************************************/
0099 /**********************    CLASS TO DISPLAY THUMBNAIL   ***********************/
0100 /******************************************************************************/
0101 
0102 class KGrThumbNail : public QFrame
0103 {
0104 public:
0105     explicit KGrThumbNail (QWidget *parent = nullptr);
0106     ~KGrThumbNail() override;
0107 
0108     void setLevelData (const QString& dir, const QString& prefix,
0109                        int level, QLabel * sln);
0110 
0111     static QColor backgroundColor;
0112     static QColor brickColor;
0113     static QColor ladderColor;
0114     static QColor poleColor;
0115 
0116 protected:
0117     void paintEvent (QPaintEvent * event) override; // Draw a preview of a level.
0118 
0119 private:
0120     KGrGameIO * io;
0121     QByteArray  levelName;
0122     QByteArray  levelLayout;
0123     QLabel *    lName;              // Place to write level-name.
0124 };
0125 
0126 #endif