Beenden.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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. TextFeld *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. Knopf *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. if( fenster )
  51. fenster->release();
  52. }
  53. // nicht constant
  54. void Beenden::setFenster( Fenster *f )
  55. {
  56. if( fenster )
  57. fenster->release();
  58. this->f->setPosition( f->getBreite() / 2 - 150, f->getHeight() / 2 - 75 );
  59. fenster = f;
  60. }
  61. void Beenden::setSichtbar( bool s )
  62. {
  63. sichtbar = s;
  64. if( !fenster )
  65. return;
  66. if( s )
  67. fenster->addMember( f->getThis() );
  68. else
  69. fenster->removeMember( f );
  70. }
  71. bool Beenden::beendenMausEreignis( void *obj, MausEreignis me )
  72. {
  73. if( me.id == ME_RLinks )
  74. PostQuitMessage( 0 );
  75. return 1;
  76. }
  77. // constant
  78. // Reference Counting
  79. Abschnitt *Beenden::getThis()
  80. {
  81. ref++;
  82. return this;
  83. }
  84. Abschnitt *Beenden::release()
  85. {
  86. ref--;
  87. if( !ref )
  88. delete this;
  89. return 0;
  90. }
  91. // Ereignisse
  92. bool beendenBeendenMausEreignis( void *p, void *obj, MausEreignis me )
  93. {
  94. if( !p )
  95. return 0;
  96. return ( (Beenden*)p )->beendenMausEreignis( obj, me );
  97. }