Beenden.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #include "Beenden.h"
  2. #include <TextFeld.h>
  3. #include <Schrift.h>
  4. #include <Punkt.h>
  5. // Inhalt der Beenden Klasse aus Beenden.h
  6. // Konstruktor
  7. Beenden::Beenden( Schrift *s, Bildschirm *b )
  8. : Abschnitt( b )
  9. {
  10. f = new Fenster();
  11. f->setStyle( Fenster::Style::Sichtbar | Fenster::Style::Erlaubt | Fenster::Style::Titel | Fenster::Style::Rahmen | Fenster::Style::TitelBuffered );
  12. f->setRFarbe( 0xFFFFFFFF );
  13. f->setRBreite( 1 );
  14. f->setTitel( "Beenden" );
  15. f->setTAfFarbe( 0x1000FF00 );
  16. f->setTAfStrength( -15 );
  17. f->setTRBreite( 1 );
  18. f->setTRFarbe( 0xFFFFFFFF );
  19. f->zTTextFeld()->addStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center | TextFeld::Style::Rahmen );
  20. f->zTTextFeld()->setSize( 0, 20 );
  21. f->setTSchriftZ( s->getThis() );
  22. f->setTSFarbe( 0xFFFFFFFF );
  23. f->setSize( 300, 150 );
  24. text = new TextFeld();
  25. text->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Mehrzeilig );
  26. text->setText( "Möchtest du das SMP wirklich beenden?" );
  27. text->setPosition( 10, 10 );
  28. text->setSize( 280, 70 );
  29. text->setSchriftZ( s->getThis() );
  30. text->setSchriftSize( 12 );
  31. text->setSchriftFarbe( 0xFFFFFFFF );
  32. f->addMember( text );
  33. beenden = new Knopf( );
  34. beenden->setStyle( Knopf::Style::Normal );
  35. beenden->setText( "Beenden" );
  36. beenden->setSchriftZ( s->getThis() );
  37. beenden->setSize( 100, 20 );
  38. beenden->setPosition( 190, 100 );
  39. beenden->setMausEreignisParameter( this );
  40. beenden->setMausEreignis( beendenBeendenMausEreignis );
  41. f->addMember( beenden );
  42. fenster = 0;
  43. ref = 1;
  44. s->release();
  45. }
  46. // Destruktor
  47. Beenden::~Beenden()
  48. {
  49. f->release();
  50. text->release();
  51. beenden->release();
  52. if( fenster )
  53. fenster->release();
  54. }
  55. // nicht constant
  56. void Beenden::setFenster( Fenster *f )
  57. {
  58. if( fenster )
  59. fenster->release();
  60. this->f->setPosition( f->getBreite() / 2 - 150, f->getHeight() / 2 - 75 );
  61. fenster = f;
  62. }
  63. void Beenden::setSichtbar( bool s )
  64. {
  65. sichtbar = s;
  66. if( !fenster )
  67. return;
  68. if( s )
  69. fenster->addMember( f );
  70. else
  71. fenster->removeMember( f );
  72. }
  73. bool Beenden::beendenMausEreignis( void *obj, MausEreignis me )
  74. {
  75. if( me.id == ME_RLinks )
  76. PostQuitMessage( 0 );
  77. return 1;
  78. }
  79. // constant
  80. // Reference Counting
  81. Abschnitt *Beenden::getThis()
  82. {
  83. ref++;
  84. return this;
  85. }
  86. Abschnitt *Beenden::release()
  87. {
  88. ref--;
  89. if( !ref )
  90. delete this;
  91. return 0;
  92. }
  93. // Ereignisse
  94. bool beendenBeendenMausEreignis( void *p, void *obj, MausEreignis me )
  95. {
  96. if( !p )
  97. return 0;
  98. return ( (Beenden*)p )->beendenMausEreignis( obj, me );
  99. }