NachrichtenListe.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. #ifndef NachrichtenListe_H
  2. #define NachrichtenListe_H
  3. #include <Klient.h>
  4. #include <Array.h>
  5. #include <Fenster.h>
  6. #include <Knopf.h>
  7. #include <GSLSoundV.h>
  8. #include <functional>
  9. #include <Fortschritt.h>
  10. #include "../Update/Update.h"
  11. #include "..\..\Aktionen\AktionsThread.h"
  12. using namespace Framework;
  13. using namespace Network;
  14. class NLNachricht
  15. {
  16. protected:
  17. TextFeld *titel;
  18. Knopf *close;
  19. LRahmen *rahmen;
  20. int höhe;
  21. int maxHöhe;
  22. bool ausgewählt;
  23. int animation;
  24. double tickVal;
  25. bool rend;
  26. int ref;
  27. NLNachricht( Schrift *zSchrift, Text *titel );
  28. virtual ~NLNachricht();
  29. public:
  30. virtual void entfernen();
  31. void setAusgewählt( bool ausgewählt );
  32. virtual void doMausEreignis( MausEreignis &me );
  33. virtual bool tick( double tickVal );
  34. virtual void render( int y, Bild &zRObj );
  35. // contant
  36. bool istAusgewählt() const;
  37. int getHeight() const;
  38. Text *zTitel() const;
  39. // Reference Counting
  40. NLNachricht *getThis();
  41. NLNachricht *release();
  42. };
  43. class SpielUpdateNachricht : public NLNachricht
  44. {
  45. private:
  46. TextFeld *text;
  47. Knopf *herunterladen;
  48. Knopf *abbrechen;
  49. std::function<void()> posAk;
  50. std::function<void()> negAk;
  51. FBalken *fortschritt;
  52. Update *update;
  53. public:
  54. SpielUpdateNachricht( Schrift *zSchrift, Text *titel, Text *nachricht, int dgID, std::function<void()> posAk = []() {}, std::function<void()> negAk = []() {} );
  55. ~SpielUpdateNachricht();
  56. // nicht constant
  57. void entfernen() override;
  58. void doMausEreignis( MausEreignis &me ) override;
  59. bool tick( double tickVal ) override;
  60. void render( int y, Bild &zRObj ) override;
  61. };
  62. class Nachricht : public NLNachricht
  63. {
  64. private:
  65. TextFeld *text;
  66. Knopf *positiv;
  67. Knopf *negativ;
  68. std::function<void()> posAk;
  69. std::function<void()> negAk;
  70. public:
  71. // Konstruktor
  72. Nachricht( Schrift *zSchrift, Text *titel, Text *nachricht, Text *positiv, Text *negativ, std::function<void()> posAk = []() {}, std::function<void()> negAk = []() {} );
  73. // Destruktor
  74. ~Nachricht();
  75. // nicht constant
  76. void entfernen() override;
  77. void doMausEreignis( MausEreignis &me ) override;
  78. bool tick( double tickVal ) override;
  79. void render( int y, Bild &zRObj ) override;
  80. };
  81. class NachrichtenListeObj : public Zeichnung
  82. {
  83. private:
  84. RCArray< NLNachricht > *members;
  85. VScrollBar *vsb;
  86. Schrift *schrift;
  87. Punkt bildschirmGröße;
  88. int anzahl;
  89. int ref;
  90. public:
  91. // Konstruktor
  92. NachrichtenListeObj( Schrift *zSchrift );
  93. // Destruktor
  94. ~NachrichtenListeObj();
  95. // nicht constant
  96. void addNachricht( NLNachricht *nachricht );
  97. void removeNachricht( NLNachricht *zNachricht );
  98. void removeAll();
  99. bool tick( double tickVal ) override;
  100. void doMausEreignis( MausEreignis &me ) override;
  101. void render( Bild &zRObj ) override;
  102. // contant
  103. // Reference Counting
  104. NachrichtenListeObj *getThis();
  105. NachrichtenListeObj *release();
  106. };
  107. class NachrichtenListe
  108. {
  109. private:
  110. Schrift *schrift;
  111. Fenster *fenster;
  112. Knopf *minMax;
  113. NachrichtenListeObj *nachrichtenListe;
  114. Punkt bildschirmGröße;
  115. TextFeld *überschrift;
  116. Bild *minimierenBild;
  117. Bild *maximierenBild;
  118. GSL::GSLSoundV *msgSound;
  119. GSL::GSLSoundV *errSound;
  120. double tickVal;
  121. int animation;
  122. bool rend;
  123. int ref;
  124. public:
  125. // Konstruktor
  126. NachrichtenListe( Schrift *zSchrift, Fenster *zNachLoginFenster );
  127. // Destruktor
  128. ~NachrichtenListe();
  129. // nicht constant
  130. void addNachricht( Text *titel, Text *nachricht, Text *positiv = 0, Text *negativ = 0, std::function<void()> posAk = []() {}, std::function<void()> negAk = []() {} );
  131. void addNachricht( NLNachricht *nachricht );
  132. void removeNachricht( NLNachricht *zNachricht );
  133. void removeAll();
  134. bool druckMinMax( MausEreignis &me );
  135. bool tick( double tickVal );
  136. // contant
  137. Schrift *zSchrift() const;
  138. // Reference Counting
  139. NachrichtenListe *getThis();
  140. NachrichtenListe *release();
  141. };
  142. // Nachrichten
  143. bool NachrichtenListeMinMaxME( void *p, void *obj, MausEreignis me );
  144. #endif