File indexing completed on 2024-04-21 07:49:25

0001 /*
0002     This file is part of the KDE games library
0003     SPDX-FileCopyrightText: 2001 Andreas Beckermann (b_mann@gmx.de)
0004     SPDX-FileCopyrightText: 2001 Martin Heni (kde at heni-online.de)
0005 
0006     SPDX-License-Identifier: LGPL-2.0-only
0007 */
0008 
0009 #ifndef __KGAMEDEBUGDIALOG_H__
0010 #define __KGAMEDEBUGDIALOG_H__
0011 
0012 // KF
0013 #include <KPageDialog>
0014 
0015 class QListWidgetItem;
0016 
0017 class KGame;
0018 class KPlayer;
0019 
0020 class KGameDebugDialogPrivate;
0021 
0022 /**
0023  * \class KGameDebugDialog kgamedebugdialog.h <KGameDebugDialog>
0024  */
0025 class KGameDebugDialog : public KPageDialog
0026 {
0027     Q_OBJECT
0028 public:
0029     KGameDebugDialog(KGame *g, QWidget *parent, bool modal = false);
0030     ~KGameDebugDialog() override;
0031 
0032     /**
0033      * Automatically connects the KGame object to all error dependent slots.
0034      * @param g The KGame which will emit the errors (or not ;-) )
0035      */
0036     void setKGame(const KGame *g);
0037 
0038 public Q_SLOTS:
0039     /**
0040      * Unsets a @ref KGame which has been set using @ref setKGame before.
0041      * This is called automatically when the @ref KGame object is destroyed
0042      * and you normally don't have to call this yourself.
0043      *
0044      * Note that @ref setKGame also unsets an already existing @ref KGame
0045      * object if existing.
0046      */
0047     void slotUnsetKGame();
0048 
0049     /**
0050      * Update the data of the @ref KGame object
0051      */
0052     void slotUpdateGameData();
0053 
0054     /**
0055      * Update the properties of the currently selected player
0056      */
0057     void slotUpdatePlayerData();
0058 
0059     /**
0060      * Updates the list of players and calls @ref clearPlayerData. Note that
0061      * after this call NO player is selected anymore.
0062      */
0063     void slotUpdatePlayerList();
0064 
0065     void slotClearMessages();
0066 
0067 Q_SIGNALS:
0068     /**
0069      * This signal is emitted when the "debug messages" page couldn't find
0070      * the name of a message id. This is usually the case for user-defined
0071      * messages. KGameDebugDialog asks you to give the msgid a name.
0072      * @param messageid The ID of the message. As given to @ref
0073      * KGame::sendMessage
0074      * @param userid User defined msgIds are internally increased by
0075      * KGameMessage::IdUser. You don't have to care about this but if
0076      * this signal is emitted with userid=false (shouldn't happen) then the
0077      * name of an internal message as defined in
0078      * KGameMessage::GameMessageIds couldn't be found.
0079      * @param name The name of the msgid. You have to fill this!
0080      */
0081     void signalRequestIdName(int messageid, bool userid, QString &name);
0082 
0083 protected:
0084     void clearPages();
0085 
0086     /**
0087      * Clear the data of the player view. Note that the player list is NOT
0088      * cleared.
0089      */
0090     void clearPlayerData();
0091 
0092     /**
0093      * Clear the data view of the @ref KGame object
0094      */
0095     void clearGameData();
0096 
0097     /**
0098      * Add a new player to the player list
0099      */
0100     void addPlayer(KPlayer *p);
0101 
0102     /**
0103      * Remove a player from the list
0104      */
0105     void removePlayer(QListWidgetItem *item);
0106 
0107     /**
0108      * @return Whether messages with this msgid shall be displayed or not
0109      */
0110     bool showId(int msgid);
0111 
0112 protected Q_SLOTS:
0113     /**
0114      * Update the data of the player specified in item
0115      * @param item The @ref QListWidgetItem of the player to be updated. Note
0116      * that the text of this item MUST be the ID of the player
0117      */
0118     void slotUpdatePlayerData(QListWidgetItem *item);
0119 
0120     void slotShowId();
0121     void slotHideId();
0122 
0123     /**
0124      * A message has been received - see @ref KGame::signalMessageUpdate
0125      */
0126     void slotMessageUpdate(int msgid, quint32 receiver, quint32 sender);
0127 
0128 private:
0129     void initGamePage();
0130     void initPlayerPage();
0131     void initMessagePage();
0132 
0133 private:
0134     KGameDebugDialogPrivate *const d;
0135 };
0136 
0137 #endif