PatchServer.cpp 60 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609
  1. #include "PatchServer.h"
  2. #include <TextFeld.h>
  3. #include <MausEreignis.h>
  4. #include "..\..\Login\Login.h"
  5. #include <Datei.h>
  6. #include <iostream>
  7. // Inhalt der PSUpdate Klasse aus PatchServer.h
  8. // Kontruktor
  9. PSUpdate::PSUpdate( PatchServer *zPSA, AdminAccount *account )
  10. : Thread()
  11. {
  12. this->account = account;
  13. this->zPSA = zPSA;
  14. gruppeAnzahl = 0;
  15. gruppeId = 0;
  16. this->psc = 0;
  17. id = 0;
  18. }
  19. // Destruktor
  20. PSUpdate::~PSUpdate()
  21. {
  22. if( psc )
  23. {
  24. psc->abbruch();
  25. psc->release();
  26. }
  27. account->release();
  28. delete[] gruppeId;
  29. }
  30. // nicht constant
  31. void PSUpdate::setServer( const char *ip, unsigned short port )
  32. {
  33. if( psc )
  34. {
  35. psc->abbruch();
  36. psc->release();
  37. }
  38. psc = new PSKlient( ip, port );
  39. }
  40. void PSUpdate::setUpdateListe( int gAnzahl, Array< int > *gId )
  41. {
  42. gruppeAnzahl = gAnzahl;
  43. delete[] gruppeId;
  44. gruppeId = 0;
  45. if( gAnzahl )
  46. {
  47. gruppeId = new int[ gAnzahl ];
  48. for( int i = 0; i < gAnzahl; i++ )
  49. gruppeId[ i ] = gId->get( i );
  50. }
  51. }
  52. void PSUpdate::thread()
  53. {
  54. if( !psc )
  55. {
  56. for( int g = 0; g < gruppeAnzahl; g++ )
  57. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  58. return;
  59. }
  60. if( !psc->login( account->zName()->getText(), account->zPasswort()->getText() ) )
  61. {
  62. for( int g = 0; g < gruppeAnzahl; g++ )
  63. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  64. return;
  65. }
  66. Array< FileGroupInfo * > fileGroupList;
  67. psc->getFileGroupInfoList( &fileGroupList );
  68. Array< SystemInfo > systemT;
  69. psc->getSystemInfoList( &systemT );
  70. int gAnz = fileGroupList.getEintragAnzahl();
  71. for( int g = 0; g < gruppeAnzahl; g++ )
  72. {
  73. Text *initPfad = new Text( "data/" );
  74. for( int i = 0; i < gAnz; i++ )
  75. {
  76. if( gruppeId[ g ] == fileGroupList.get( i )->id )
  77. {
  78. initPfad->append( (char *)fileGroupList.get( i )->name );
  79. break;
  80. }
  81. }
  82. initPfad->append( ".ini" );
  83. InitDatei *systemInit = new InitDatei( initPfad );
  84. systemInit->laden();
  85. bool cont = 0;
  86. int sAnz = systemT.getEintragAnzahl();
  87. for( int i = 0; i < sAnz; i++ ) // Prüfen, ob Lokale Version aktuell ist
  88. {
  89. if( !systemInit->wertExistiert( systemT.get( i ).name ) )
  90. {
  91. systemInit->release();
  92. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  93. cont = 1;
  94. break;
  95. }
  96. Text *pfad = new Text( systemInit->zWert( (char *)systemT.get( i ).name )->getText() );
  97. pfad->append( "/" );
  98. Array< FileInfo > dateiT;
  99. psc->getFileInfoList( systemT.get( i ).id, gruppeId[ g ], &dateiT );
  100. int dAnz = dateiT.getEintragAnzahl();
  101. bool br = 0;
  102. for( int j = 0; j < dAnz; j++ )
  103. {
  104. Text *pf = new Text( pfad->getText() );
  105. pf->append( dateiT.get( j ).path.getText() );
  106. if( !DateiExistiert( pf->getText() ) )
  107. {
  108. pfad->release();
  109. pf->release();
  110. systemInit->release();
  111. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  112. cont = 1;
  113. br = 1;
  114. break;
  115. }
  116. if( !DateiIstVerzeichnis( pf->getText() ) )
  117. {
  118. Datei *d = new Datei();
  119. d->setDatei( pf->getText() );
  120. Zeit *zeit = d->getLastChange();
  121. d->release();
  122. if( !zeit->istGleich( "y-m-d h:i:s", dateiT.get( j ).time.getText() ) )
  123. {
  124. zeit->release();
  125. pfad->release();
  126. pf->release();
  127. systemInit->release();
  128. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  129. cont = 1;
  130. br = 1;
  131. break;
  132. }
  133. zeit->release();
  134. }
  135. pf->release();
  136. }
  137. if( br )
  138. break;
  139. pfad->release();
  140. }
  141. if( cont )
  142. continue;
  143. if( psc->updateStarten( gruppeId[ g ] ) )
  144. {
  145. RCArray< Text > *systemA = new RCArray< Text >();
  146. RCArray< RCArray< Text > > *dateiA = new RCArray< RCArray< Text > >();
  147. Array< int > *dateiAnzahlA = new Array< int >();
  148. int systemAnzahl = 0;
  149. bool ok = psc->getDateiListe( &systemAnzahl, dateiAnzahlA, systemA, dateiA );
  150. if( !ok )
  151. {
  152. systemA->release();
  153. dateiA->release();
  154. dateiAnzahlA->release();
  155. systemInit->release();
  156. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  157. continue;
  158. }
  159. __int64 maxAktionen = 0;
  160. for( int i = 0; i < systemAnzahl; i++ )
  161. {
  162. for( int j = 0; j < dateiAnzahlA->get( i ); j++ )
  163. {
  164. Text *pfad = new Text( systemInit->zWert( systemA->z( i )->getText() )->getText() );
  165. pfad->append( "/" );
  166. pfad->append( dateiA->z( i )->z( j )->getText() );
  167. Datei *d = new Datei();
  168. d->setDatei( pfad );
  169. if( !d->istOrdner() )
  170. maxAktionen += d->getSize();
  171. d->release();
  172. }
  173. }
  174. __int64 aktionen = 0;
  175. int prozent = 0;
  176. bool br = 0;
  177. for( int i = 0; i < systemAnzahl; i++ )
  178. {
  179. for( int j = 0; j < dateiAnzahlA->get( i ); j++ )
  180. {
  181. Text *pfad = new Text( systemInit->zWert( systemA->z( i )->getText() )->getText() );
  182. pfad->append( "/" );
  183. pfad->append( dateiA->z( i )->z( j )->getText() );
  184. Datei *d = new Datei();
  185. d->setDatei( pfad );
  186. if( d->istOrdner() )
  187. {
  188. d->release();
  189. continue;
  190. }
  191. __int64 gr = d->getSize();
  192. d->open( Datei::Style::lesen );
  193. int version;
  194. int system = 0;
  195. for( int s = 0; s < sAnz; s++ )
  196. {
  197. if( systemT.get( s ).name.istGleich( systemA->z( i )->getText() ) )
  198. system = systemT.get( s ).id;
  199. }
  200. psc->getFileVersion( dateiA->z( i )->z( j )->getText(), system, gruppeId[ g ], &version );
  201. psc->lock();
  202. psc->zKlient()->sende( "\xE", 1 );
  203. char ret = 0;
  204. psc->zKlient()->getNachricht( &ret, 1 );
  205. if( ret == 1 )
  206. {
  207. psc->zKlient()->sende( (char *)&system, 4 );
  208. psc->zKlient()->sende( (char *)&version, 4 );
  209. short län = dateiA->z( i )->z( j )->getLength();
  210. psc->zKlient()->sende( (char *)&län, 2 );
  211. psc->zKlient()->sende( dateiA->z( i )->z( j )->getText(), län );
  212. psc->zKlient()->getNachricht( &ret, 1 );
  213. if( ret == 1 )
  214. {
  215. while( gr )
  216. {
  217. if( gr >= 2048 )
  218. {
  219. gr -= 2048;
  220. län = 2048;
  221. }
  222. else
  223. {
  224. län = (int)gr;
  225. gr = 0;
  226. }
  227. if( län < 0 )
  228. break;
  229. psc->zKlient()->sende( (char *)&län, 2 );
  230. char *buff = new char[ län ];
  231. d->lese( buff, län );
  232. psc->zKlient()->sende( buff, län );
  233. delete[] buff;
  234. aktionen += län;
  235. if( prozent != 100 / ( maxAktionen / (long double)aktionen ) )
  236. {
  237. prozent = (int)( 100 / ( maxAktionen / (long double)aktionen ) );
  238. zPSA->setUpdateProzent( prozent, gruppeId[ g ] );
  239. }
  240. }
  241. psc->zKlient()->sende( "\0\0", 2 );
  242. psc->zKlient()->getNachricht( &ret, 1 );
  243. }
  244. }
  245. if( prozent != 100 / ( maxAktionen / (long double)aktionen ) )
  246. {
  247. prozent = (int)( 100 / ( maxAktionen / (long double)aktionen ) );
  248. zPSA->setUpdateProzent( prozent, gruppeId[ g ] );
  249. }
  250. if( ret == 3 )
  251. {
  252. d->close();
  253. d->release();
  254. systemA->release();
  255. dateiA->release();
  256. dateiAnzahlA->release();
  257. char l = 0;
  258. psc->zKlient()->getNachricht( &l, 1 );
  259. char *txt = new char[ l + 1 ];
  260. txt[ l ] = 0;
  261. if( l )
  262. psc->zKlient()->getNachricht( txt, l );
  263. std::cout << "Error: " << txt << "\n";
  264. delete[] txt;
  265. psc->unlock();
  266. zPSA->setUpdateProzent( 0, gruppeId[ g ] );
  267. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  268. br = 1;
  269. break;
  270. }
  271. psc->unlock();
  272. d->close();
  273. d->release();
  274. }
  275. if( br )
  276. break;
  277. }
  278. if( br )
  279. continue;
  280. psc->updateFertig();
  281. systemA->release();
  282. dateiA->release();
  283. dateiAnzahlA->release();
  284. }
  285. else
  286. {
  287. systemInit->release();
  288. zPSA->setUpdateProzent( 0, gruppeId[ g ] );
  289. zPSA->setUpdateFertig( 1, gruppeId[ g ] );
  290. continue;
  291. }
  292. zPSA->setUpdateProzent( 0, gruppeId[ g ] );
  293. zPSA->setUpdateFertig( 0, gruppeId[ g ] );
  294. systemInit->release();
  295. }
  296. for( int i = 0; i < gAnz; i++ )
  297. delete fileGroupList.get( i );
  298. zPSA->setUpdateFertig( 0, 0 );
  299. run = 0;
  300. }
  301. // Inhalt der PSDetails Klasse aus PatchServer.h
  302. // Konstruktor
  303. PSDetails::PSDetails( PatchServer *zPSA, MSKlient *mk )
  304. : Thread()
  305. {
  306. this->zPSA = zPSA;
  307. this->mk = mk;
  308. id = 0;
  309. }
  310. // Destruktor
  311. PSDetails::~PSDetails()
  312. {
  313. mk->release();
  314. }
  315. // nicht constant
  316. void PSDetails::setServerId( int id )
  317. {
  318. this->id = id;
  319. }
  320. void PSDetails::thread()
  321. {
  322. ServerDetails detail;
  323. mk->getPatchServerDetails( id, &detail );
  324. if( !mk->getPatchServerDetails( id, &detail ) )
  325. {
  326. Text *err = new Text( "Fehler: Server Rückgabe: " );
  327. err->append( mk->getLetzterFehler() );
  328. zPSA->setServerDetails( id, (char *)"", (char *)"", 0, 0, 0, 0, -2, err );
  329. }
  330. else
  331. {
  332. PSKlient *psc = new PSKlient( detail.ip, detail.adminPort );
  333. int st = psc->getStatus();
  334. if( st >= 0 )
  335. psc->trenne();
  336. psc->release();
  337. zPSA->setServerDetails( id,
  338. detail.name,
  339. detail.ip,
  340. detail.port,
  341. detail.adminPort,
  342. detail.tasks,
  343. detail.maxTasks,
  344. st,
  345. 0 );
  346. }
  347. run = 0;
  348. }
  349. // Inhalt der PSSuche Klasse aus PatchServer.h
  350. // Konstruktor
  351. PSSuche::PSSuche( PatchServer *zPSA, MSKlient *mk )
  352. : Thread()
  353. {
  354. this->zPSA = zPSA;
  355. this->mk = mk;
  356. }
  357. // Destruktor
  358. PSSuche::~PSSuche()
  359. {
  360. mk->release();
  361. }
  362. // nicht constant
  363. void PSSuche::thread()
  364. {
  365. Array< ServerData * > list;
  366. if( mk->getPatchServerListe( &list ) )
  367. {
  368. int anz = list.getEintragAnzahl();
  369. for( int i = 0; i < anz; i++ )
  370. {
  371. int st = -1;
  372. ServerData *s = list.get( i );
  373. if( !s->status.istGleich( "Unerreichbar" ) )
  374. {
  375. PSKlient *psc = new PSKlient( s->ip.getText(), s->adminPort );
  376. st = psc->getStatus();
  377. switch( st )
  378. {
  379. case -2:
  380. s->status = "Unbekannt";
  381. break;
  382. case -1:
  383. s->status = "Unerreichbar";
  384. break;
  385. case 0:
  386. s->status = "Offline";
  387. break;
  388. case 1:
  389. s->status = "Pausiert";
  390. break;
  391. case 2:
  392. s->status = "Online";
  393. break;
  394. case 3:
  395. s->status = "Veraltet";
  396. break;
  397. }
  398. if( st >= 0 )
  399. psc->trenne();
  400. psc->release();
  401. }
  402. zPSA->addServer( s->id,
  403. s->name,
  404. s->ip,
  405. s->port,
  406. s->adminPort,
  407. s->status );
  408. delete s;
  409. }
  410. }
  411. zPSA->sucheAbgeschlossen();
  412. run = 0;
  413. }
  414. TextFeld *getTabellenEintrag( const char *txt, Schrift *s, int farbe )
  415. {
  416. TextFeld *tmp = new TextFeld();
  417. tmp->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
  418. tmp->setSchriftZ( s );
  419. tmp->setText( txt );
  420. tmp->setSchriftFarbe( farbe );
  421. return tmp;
  422. }
  423. // Inhalt der PatchServer Klasse aus PatchServer.h
  424. // Konstruktor
  425. PatchServer::PatchServer( Schrift *s, InitDatei *d, MSKlient *msk, RessourceBild *rb, AdminAccount *acc, Bildschirm *b )
  426. : Abschnitt( b )
  427. {
  428. fenster = 0;
  429. this->msk = msk;
  430. iD = d;
  431. account = acc;
  432. schrift = s;
  433. psc = 0;
  434. f = new Fenster();
  435. f->setStyle( Fenster::Style::Sichtbar | Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered );
  436. f->setRFarbe( 0xFFFFFFFF );
  437. f->setRBreite( 1 );
  438. f->setTitel( "Patch Server" );
  439. f->setTSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  440. f->setTSFarbe( 0xFFFFFFFF );
  441. f->setTSSize( 12 );
  442. f->setTAfFarbe( 0x1000FF00 );
  443. f->setTAfStrength( -15 );
  444. f->setTRFarbe( 0xFFFFFFFF );
  445. f->setTRBreite( 1 );
  446. f->zTTextFeld()->addStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center | TextFeld::Style::Rahmen );
  447. f->zTTextFeld()->setSize( 0, 20 );
  448. f->setSize( 492, 277 );
  449. liste = new Fenster();
  450. liste->setStyle( Fenster::Style::Sichtbar | Fenster::Style::Erlaubt );
  451. liste->setSize( 490, 255 );
  452. f->addMember( dynamic_cast<Zeichnung *>( liste->getThis() ) );
  453. details = new Fenster();
  454. details->setStyle( Fenster::Style::Erlaubt );
  455. details->setSize( 490, 255 );
  456. f->addMember( dynamic_cast<Zeichnung *>( details->getThis() ) );
  457. updateF = new Fenster();
  458. updateF->setStyle( Fenster::Style::Erlaubt );
  459. updateF->setSize( 490, 255 );
  460. f->addMember( dynamic_cast<Zeichnung *>( updateF->getThis() ) );
  461. tabelle = new ObjTabelle();
  462. tabelle->setStyle( ObjTabelle::Style::Sichtbar | ObjTabelle::Style::VScroll | ObjTabelle::Style::Rahmen | ObjTabelle::Style::Raster | ObjTabelle::Style::Erlaubt );
  463. tabelle->setMausEreignis( _ret1ME );
  464. tabelle->setRahmenFarbe( 0xFFFFFFFF );
  465. tabelle->setRasterFarbe( 0xFFA0A0A0 );
  466. tabelle->setRasterBreite( 1 );
  467. tabelle->setPosition( 5, 5 );
  468. tabelle->setSize( 480, 220 );
  469. tabelle->setVertikalKlickScroll( 5 );
  470. tabelle->addSpalte( "id" );
  471. tabelle->setSpaltenBreite( 0, 40 );
  472. tabelle->addSpalte( "name" );
  473. tabelle->setSpaltenBreite( 1, 105 );
  474. tabelle->addSpalte( "ip" );
  475. tabelle->setSpaltenBreite( 2, 90 );
  476. tabelle->addSpalte( "port" );
  477. tabelle->setSpaltenBreite( 3, 50 );
  478. tabelle->addSpalte( "aport" );
  479. tabelle->setSpaltenBreite( 4, 50 );
  480. tabelle->addSpalte( "status" );
  481. tabelle->setSpaltenBreite( 5, 100 );
  482. tabelle->addSpalte( "auswahl" );
  483. tabelle->setSpaltenBreite( 6, 20 );
  484. tabelle->addZeile( "Überschrifft" );
  485. tabelle->setZeilenHeight( 0, 20 );
  486. tabelle->setZeichnungZ( 0, 0, getTabellenEintrag( "Id", s ? dynamic_cast<Schrift *>( s->getThis() ) : 0, 0xFFFFFFFF ) );
  487. tabelle->setZeichnungZ( 1, 0, getTabellenEintrag( "Name", s ? dynamic_cast<Schrift *>( s->getThis() ) : 0, 0xFFFFFFFF ) );
  488. tabelle->setZeichnungZ( 2, 0, getTabellenEintrag( "Ip", s ? dynamic_cast<Schrift *>( s->getThis() ) : 0, 0xFFFFFFFF ) );
  489. tabelle->setZeichnungZ( 3, 0, getTabellenEintrag( "Port", s ? dynamic_cast<Schrift *>( s->getThis() ) : 0, 0xFFFFFFFF ) );
  490. tabelle->setZeichnungZ( 4, 0, getTabellenEintrag( "APort", s ? dynamic_cast<Schrift *>( s->getThis() ) : 0, 0xFFFFFFFF ) );
  491. tabelle->setZeichnungZ( 5, 0, getTabellenEintrag( "Status", s ? dynamic_cast<Schrift *>( s->getThis() ) : 0, 0xFFFFFFFF ) );
  492. tabelle->setZeichnungZ( 6, 0, 0 );
  493. liste->addMember( dynamic_cast<Zeichnung *>( tabelle->getThis() ) );
  494. aktualisieren = new Knopf();
  495. aktualisieren->setText( "" );
  496. aktualisieren->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
  497. aktualisieren->setHintergrundBildZ( rb ? rb->get( "neuladen.png" ) : 0 );
  498. aktualisieren->setPosition( 236, 230 );
  499. aktualisieren->setSize( 20, 20 );
  500. aktualisieren->setMausEreignisParameter( this );
  501. aktualisieren->setMausEreignis( patchServerAktualisierenMausEreignis );
  502. f->addMember( dynamic_cast<Zeichnung *>( aktualisieren->getThis() ) );
  503. weiter = new Knopf();
  504. weiter->setText( "" );
  505. weiter->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
  506. weiter->setHintergrundBildZ( rb ? rb->get( "weiter.png" ) : 0 );
  507. weiter->setPosition( 261, 230 );
  508. weiter->setSize( 20, 20 );
  509. weiter->setMausEreignisParameter( this );
  510. weiter->setMausEreignis( patchServerWeiterMausEreignis );
  511. f->addMember( dynamic_cast<Zeichnung *>( weiter->getThis() ) );
  512. zurück = new Knopf();
  513. zurück->setText( "" );
  514. zurück->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
  515. zurück->setHintergrundBildZ( rb ? rb->get( "zurück.png" ) : 0 );
  516. zurück->setPosition( 211, 230 );
  517. zurück->setSize( 20, 20 );
  518. zurück->setMausEreignisParameter( this );
  519. zurück->setMausEreignis( patchServerZurückMausEreignis );
  520. f->addMember( dynamic_cast<Zeichnung *>( zurück->getThis() ) );
  521. serverId = new TextFeld();
  522. serverId->setStyle( TextFeld::Style::Sichtbar );
  523. serverId->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  524. serverId->setSchriftFarbe( 0xFFFFFFFF );
  525. serverId->setSchriftSize( 12 );
  526. serverId->setText( "ID: " );
  527. serverId->setSize( 100, 20 );
  528. serverId->setPosition( 10, 10 );
  529. details->addMember( dynamic_cast<Zeichnung *>( serverId->getThis() ) );
  530. serverName = new TextFeld();
  531. serverName->setStyle( TextFeld::Style::Sichtbar );
  532. serverName->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  533. serverName->setSchriftFarbe( 0xFFFFFFFF );
  534. serverName->setSchriftSize( 12 );
  535. serverName->setText( "Name: " );
  536. serverName->setSize( 150, 20 );
  537. serverName->setPosition( 120, 10 );
  538. details->addMember( dynamic_cast<Zeichnung *>( serverName->getThis() ) );
  539. serverIp = new TextFeld();
  540. serverIp->setStyle( TextFeld::Style::Sichtbar );
  541. serverIp->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  542. serverIp->setSchriftFarbe( 0xFFFFFFFF );
  543. serverIp->setSchriftSize( 12 );
  544. serverIp->setText( "IP: " );
  545. serverIp->setSize( 120, 20 );
  546. serverIp->setPosition( 280, 10 );
  547. details->addMember( dynamic_cast<Zeichnung *>( serverIp->getThis() ) );
  548. serverPort = new TextFeld();
  549. serverPort->setStyle( TextFeld::Style::Sichtbar );
  550. serverPort->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  551. serverPort->setSchriftFarbe( 0xFFFFFFFF );
  552. serverPort->setSchriftSize( 12 );
  553. serverPort->setText( "Port: " );
  554. serverPort->setSize( 100, 20 );
  555. serverPort->setPosition( 10, 40 );
  556. details->addMember( dynamic_cast<Zeichnung *>( serverPort->getThis() ) );
  557. serverAPort = new TextFeld();
  558. serverAPort->setStyle( TextFeld::Style::Sichtbar );
  559. serverAPort->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  560. serverAPort->setSchriftFarbe( 0xFFFFFFFF );
  561. serverAPort->setSchriftSize( 12 );
  562. serverAPort->setText( "Admin Port: " );
  563. serverAPort->setSize( 200, 20 );
  564. serverAPort->setPosition( 120, 40 );
  565. details->addMember( dynamic_cast<Zeichnung *>( serverAPort->getThis() ) );
  566. serverClients = new TextFeld();
  567. serverClients->setStyle( TextFeld::Style::Sichtbar );
  568. serverClients->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  569. serverClients->setSchriftFarbe( 0xFFFFFFFF );
  570. serverClients->setSchriftSize( 12 );
  571. serverClients->setText( "Clients: " );
  572. serverClients->setSize( 100, 20 );
  573. serverClients->setPosition( 10, 70 );
  574. details->addMember( dynamic_cast<Zeichnung *>( serverClients->getThis() ) );
  575. serverMaxClients = new TextFeld();
  576. serverMaxClients->setStyle( TextFeld::Style::Sichtbar );
  577. serverMaxClients->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  578. serverMaxClients->setSchriftFarbe( 0xFFFFFFFF );
  579. serverMaxClients->setSchriftSize( 12 );
  580. serverMaxClients->setText( "Max Clients: " );
  581. serverMaxClients->setSize( 80, 20 );
  582. serverMaxClients->setPosition( 120, 70 );
  583. details->addMember( dynamic_cast<Zeichnung *>( serverMaxClients->getThis() ) );
  584. maxClients = new TextFeld();
  585. maxClients->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::Buffered | TextFeld::Style::VCenter );
  586. maxClients->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  587. maxClients->setSchriftFarbe( 0xFFFFFFFF );
  588. maxClients->setSchriftSize( 12 );
  589. maxClients->setRahmenBreite( 1 );
  590. maxClients->setRahmenFarbe( 0xFFFFFFFF );
  591. maxClients->setAlphaFeldFarbe( 0x1000FF00 );
  592. maxClients->setAlphaFeldStrength( -5 );
  593. maxClients->setText( "" );
  594. maxClients->setSize( 100, 20 );
  595. maxClients->setPosition( 200, 68 );
  596. maxClients->setMausEreignis( _ret1ME );
  597. maxClients->setTastaturEreignisParameter( this );
  598. maxClients->setTastaturEreignis( patchServerMaxClientsTastaturEreignis );
  599. details->addMember( dynamic_cast<Zeichnung *>( maxClients->getThis() ) );
  600. serverStatus = new TextFeld();
  601. serverStatus->setStyle( TextFeld::Style::Sichtbar );
  602. serverStatus->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  603. serverStatus->setSchriftFarbe( 0xFFFFFFFF );
  604. serverStatus->setSchriftSize( 12 );
  605. serverStatus->setText( "Status: " );
  606. serverStatus->setSize( 150, 20 );
  607. serverStatus->setPosition( 10, 100 );
  608. details->addMember( dynamic_cast<Zeichnung *>( serverStatus->getThis() ) );
  609. serverFehler = new TextFeld();
  610. serverFehler->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Mehrzeilig );
  611. serverFehler->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  612. serverFehler->setSchriftFarbe( 0xFFFFFFFF );
  613. serverFehler->setSchriftSize( 12 );
  614. serverFehler->setText( "" );
  615. serverFehler->setSize( 470, 60 );
  616. serverFehler->setPosition( 10, 130 );
  617. details->addMember( dynamic_cast<Zeichnung *>( serverFehler->getThis() ) );
  618. update = new Knopf();
  619. update->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
  620. update->setText( "Update" );
  621. update->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  622. update->setMausEreignisParameter( this );
  623. update->setMausEreignis( patchServerUpdateMausEreignis );
  624. update->setSize( 80, 20 );
  625. update->setPosition( 400, 100 );
  626. details->addMember( dynamic_cast<Zeichnung *>( update->getThis() ) );
  627. pausieren = new Knopf();
  628. pausieren->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
  629. pausieren->setText( "Pausieren" );
  630. pausieren->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  631. pausieren->setMausEreignisParameter( this );
  632. pausieren->setMausEreignis( patchServerPausierenMausEreignis );
  633. pausieren->setSize( 80, 20 );
  634. pausieren->setPosition( 10, 200 );
  635. details->addMember( dynamic_cast<Zeichnung *>( pausieren->getThis() ) );
  636. stoppen = new Knopf();
  637. stoppen->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
  638. stoppen->setText( "Stoppen" );
  639. stoppen->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  640. stoppen->setMausEreignisParameter( this );
  641. stoppen->setMausEreignis( patchServerStoppenMausEreignis );
  642. stoppen->setSize( 80, 20 );
  643. stoppen->setPosition( 100, 200 );
  644. details->addMember( dynamic_cast<Zeichnung *>( stoppen->getThis() ) );
  645. beenden = new Knopf();
  646. beenden->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
  647. beenden->setText( "Beenden" );
  648. beenden->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  649. beenden->setMausEreignisParameter( this );
  650. beenden->setMausEreignis( patchServerBeendenMausEreignis );
  651. beenden->setSize( 80, 20 );
  652. beenden->setPosition( 190, 200 );
  653. details->addMember( dynamic_cast<Zeichnung *>( beenden->getThis() ) );
  654. terminieren = new Knopf();
  655. terminieren->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
  656. terminieren->setText( "Terminieren" );
  657. terminieren->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  658. terminieren->setMausEreignisParameter( this );
  659. terminieren->setMausEreignis( patchServerTerminierenMausEreignis );
  660. terminieren->setSize( 80, 20 );
  661. terminieren->setPosition( 280, 200 );
  662. details->addMember( dynamic_cast<Zeichnung *>( terminieren->getThis() ) );
  663. setMaxClients = new Knopf();
  664. setMaxClients->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
  665. setMaxClients->setText( "set Max Clients" );
  666. setMaxClients->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  667. setMaxClients->setMausEreignisParameter( this );
  668. setMaxClients->setMausEreignis( patchServerSetMaxClientsMausEreignis );
  669. setMaxClients->setSize( 110, 20 );
  670. setMaxClients->setPosition( 370, 200 );
  671. details->addMember( dynamic_cast<Zeichnung *>( setMaxClients->getThis() ) );
  672. updateT = new ObjTabelle();
  673. updateT->setStyle( ObjTabelle::Style::Sichtbar | ObjTabelle::Style::Erlaubt | ObjTabelle::Style::Rahmen | ObjTabelle::Style::VScroll );
  674. updateT->setVertikalKlickScroll( 10 );
  675. updateT->setMausEreignis( _ret1ME );
  676. updateT->setRahmenFarbe( 0xFFFFFFFF );
  677. updateT->setPosition( 5, 5 );
  678. updateT->setSize( 480, 190 );
  679. updateT->addSpalte( "Name" );
  680. updateT->addSpalte( "Status" );
  681. updateT->addSpalte( "Auswahl" );
  682. updateT->addSpalte( "Update" );
  683. updateT->setSpaltenBreite( 0, 340 );
  684. updateT->setSpaltenBreite( 1, 100 );
  685. updateT->setSpaltenBreite( 2, 22 );
  686. updateT->setSpaltenBreite( 3, 0 );
  687. updateT->addZeile( "Titel" );
  688. updateT->setZeilenHeight( 0, 20 );
  689. TextFeld *uTN = new TextFeld();
  690. uTN->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
  691. uTN->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  692. uTN->setSchriftFarbe( 0xFFFFFFFF );
  693. uTN->setSchriftSize( 12 );
  694. uTN->setRahmenFarbe( 0xFFFFFFFF );
  695. uTN->setText( "Name" );
  696. updateT->setZeichnungZ( 0, 0, uTN );
  697. TextFeld *uTS = new TextFeld();
  698. uTS->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
  699. uTS->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  700. uTS->setSchriftFarbe( 0xFFFFFFFF );
  701. uTS->setSchriftSize( 12 );
  702. uTS->setRahmenFarbe( 0xFFFFFFFF );
  703. uTS->setText( "Status" );
  704. updateT->setZeichnungZ( 1, 0, uTS );
  705. updateT->setMausEreignis( _ret1ME );
  706. updateT->setTastaturEreignis( _ret1TE );
  707. updateF->addMember( dynamic_cast<Zeichnung *>( updateT->getThis() ) );
  708. updateStarten = new Knopf();
  709. updateStarten->setStyle( Knopf::Style::Normal );
  710. updateStarten->setText( "Start" );
  711. updateStarten->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
  712. updateStarten->setMausEreignisParameter( this );
  713. updateStarten->setMausEreignis( patchServerUpdateStartenMausEreignis );
  714. updateStarten->setSize( 80, 20 );
  715. updateStarten->setPosition( 205, 200 );
  716. updateF->addMember( dynamic_cast<Zeichnung *>( updateStarten->getThis() ) );
  717. obj = new Zeichnung();
  718. suchen = new PSSuche( this, dynamic_cast<MSKlient *>( msk->getThis() ) );
  719. getDetails = new PSDetails( this, dynamic_cast<MSKlient *>( msk->getThis() ) );
  720. updateTh = new PSUpdate( this, dynamic_cast<AdminAccount *>( account->getThis() ) );
  721. if( rb )
  722. rb->release();
  723. }
  724. // Destruktor
  725. PatchServer::~PatchServer()
  726. {
  727. updateTh->warteAufThread( 10000 );
  728. updateTh->ende();
  729. getDetails->warteAufThread( 10000 );
  730. getDetails->ende();
  731. suchen->warteAufThread( 10000 );
  732. suchen->ende();
  733. delete obj;
  734. if( psc )
  735. {
  736. psc->trenne();
  737. psc->release();
  738. }
  739. if( fenster )
  740. {
  741. fenster->removeMember( f );
  742. fenster->release();
  743. }
  744. account->release();
  745. msk->release();
  746. iD->release();
  747. f->release();
  748. liste->release();
  749. details->release();
  750. updateF->release();
  751. updateStarten->release();
  752. updateT->release();
  753. aktualisieren->release();
  754. weiter->release();
  755. zurück->release();
  756. update->release();
  757. pausieren->release();
  758. stoppen->release();
  759. beenden->release();
  760. terminieren->release();
  761. setMaxClients->release();
  762. serverId->release();
  763. serverName->release();
  764. serverIp->release();
  765. serverPort->release();
  766. serverAPort->release();
  767. serverClients->release();
  768. serverMaxClients->release();
  769. serverStatus->release();
  770. serverFehler->release();
  771. maxClients->release();
  772. suchen->release();
  773. getDetails->release();
  774. updateTh->release();
  775. tabelle->release();
  776. if( schrift )
  777. schrift->release();
  778. }
  779. // nicht constant
  780. void PatchServer::setFenster( Fenster *f )
  781. {
  782. if( fenster )
  783. fenster->release();
  784. this->f->setPosition( f->getBreite() / 2 - this->f->getBreite() / 2, f->getHeight() / 2 - this->f->getHeight() / 2 );
  785. fenster = f;
  786. }
  787. void PatchServer::setSichtbar( bool s )
  788. {
  789. sichtbar = s;
  790. if( s )
  791. {
  792. if( !suchen->isRunning() && liste->hatStyle( Fenster::Style::Sichtbar ) )
  793. {
  794. for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
  795. tabelle->removeZeile( 1 );
  796. weiter->removeStyle( Knopf::Style::Erlaubt );
  797. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  798. tabelle->removeStyle( ObjTabelle::Style::Erlaubt );
  799. suchen->start();
  800. }
  801. if( fenster )
  802. fenster->addMember( dynamic_cast<Zeichnung *>( f->getThis() ) );
  803. }
  804. else if( fenster )
  805. fenster->removeMember( f );
  806. }
  807. void PatchServer::addServer( int id, char *name, char *ip, int port, int adminPort, char *status )
  808. {
  809. Text *txt = new Text();
  810. txt->append( id );
  811. tabelle->addZeile( txt->getText() );
  812. int y = tabelle->getZeilenNummer( txt->getText() );
  813. tabelle->setZeilenHeight( y, 20 );
  814. tabelle->setZeichnungZ( 0, y, getTabellenEintrag( txt->getText(), schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0, 0xFFFFFFFF ) );
  815. tabelle->setZeichnungZ( 1, y, getTabellenEintrag( name, schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0, 0xFFFFFFFF ) );
  816. tabelle->setZeichnungZ( 2, y, getTabellenEintrag( ip, schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0, 0xFFFFFFFF ) );
  817. txt->setText( "" );
  818. txt->append( port );
  819. tabelle->setZeichnungZ( 3, y, getTabellenEintrag( txt->getText(), schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0, 0xFFFFFFFF ) );
  820. txt->setText( "" );
  821. txt->append( adminPort );
  822. tabelle->setZeichnungZ( 4, y, getTabellenEintrag( txt->getText(), schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0, 0xFFFFFFFF ) );
  823. txt->release();
  824. tabelle->setZeichnungZ( 5, y, getTabellenEintrag( status, schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0, getColorFromStatus( status ) ) );
  825. KontrollKnopf *knopf = new KontrollKnopf();
  826. knopf->setStyle( KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer );
  827. knopf->loadData( "data/bilder/icons.ltdb" );
  828. knopf->setMausEreignisParameter( this );
  829. knopf->setMausEreignis( patchServerAuswahlKnopfMausEreignis );
  830. tabelle->setZeichnungZ( 6, y, knopf );
  831. }
  832. void PatchServer::setServerDetails( int id, char *name, char *ip, int port, int adminPort, int clients, int maxClients, int status, Text *error )
  833. {
  834. if( !psc )
  835. {
  836. psc = new PSKlient( ip, adminPort );
  837. psc->verbinden();
  838. psc->login( account->zName()->getText(), account->zPasswort()->getText() );
  839. updateTh->setServer( ip, adminPort );
  840. }
  841. if( !error )
  842. {
  843. serverId->setText( "ID: " );
  844. serverId->zText()->append( id );
  845. serverName->setText( "Name: " );
  846. serverName->zText()->append( name );
  847. serverIp->setText( "IP: " );
  848. serverIp->zText()->append( ip );
  849. serverPort->setText( "Port: " );
  850. serverPort->zText()->append( port );
  851. serverAPort->setText( "Admin Port: " );
  852. serverAPort->zText()->append( adminPort );
  853. serverClients->setText( "Clients: " );
  854. serverClients->zText()->append( clients );
  855. this->maxClients->setText( "" );
  856. this->maxClients->zText()->append( maxClients );
  857. serverFehler->setText( "" );
  858. serverFehler->setSchriftFarbe( 0xFFFFFFFF );
  859. switch( status )
  860. {
  861. case -2: // Unbekannt
  862. serverStatus->setText( "Status: Unbekannt" );
  863. serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFFFF8800 );
  864. break;
  865. case -1: // Unerreichbar
  866. serverStatus->setText( "Status: Unerreichbar" );
  867. serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFFFF0000 );
  868. break;
  869. case 0: // Offline
  870. serverStatus->setText( "Status: Offline" );
  871. serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFFFFFF00 );
  872. stoppen->setText( "Starten" );
  873. stoppen->addStyle( Knopf::Style::Erlaubt );
  874. beenden->addStyle( Knopf::Style::Erlaubt );
  875. terminieren->addStyle( Knopf::Style::Erlaubt );
  876. this->maxClients->addStyle( TextFeld::Style::Erlaubt );
  877. break;
  878. case 1: // Pausiert
  879. serverStatus->setText( "Status: Pausiert" );
  880. serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFF88FF00 );
  881. pausieren->setText( "Fortsetzen" );
  882. pausieren->addStyle( Knopf::Style::Erlaubt );
  883. stoppen->setText( "Stoppen" );
  884. stoppen->addStyle( Knopf::Style::Erlaubt );
  885. beenden->addStyle( Knopf::Style::Erlaubt );
  886. terminieren->addStyle( Knopf::Style::Erlaubt );
  887. this->maxClients->addStyle( TextFeld::Style::Erlaubt );
  888. break;
  889. case 2: // Online
  890. serverStatus->setText( "Status: Online" );
  891. serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFF00FF00 );
  892. pausieren->setText( "Pausieren" );
  893. pausieren->addStyle( Knopf::Style::Erlaubt );
  894. terminieren->addStyle( Knopf::Style::Erlaubt );
  895. this->maxClients->addStyle( TextFeld::Style::Erlaubt );
  896. break;
  897. case 3: // Veraltet
  898. serverStatus->setText( "Status: Veraltet" );
  899. serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFFB0FF00 );
  900. pausieren->setText( "Pausieren" );
  901. pausieren->addStyle( Knopf::Style::Erlaubt );
  902. update->addStyle( Knopf::Style::Erlaubt );
  903. beenden->addStyle( Knopf::Style::Erlaubt );
  904. terminieren->addStyle( Knopf::Style::Erlaubt );
  905. this->maxClients->addStyle( TextFeld::Style::Erlaubt );
  906. break;
  907. }
  908. aktualisieren->addStyle( Knopf::Style::Erlaubt );
  909. zurück->addStyle( Knopf::Style::Erlaubt );
  910. update->addStyle( Knopf::Style::Erlaubt );
  911. }
  912. else
  913. {
  914. serverId->setText( "ID: " );
  915. serverName->setText( "Name: " );
  916. serverIp->setText( "IP: " );
  917. serverPort->setText( "Port: " );
  918. serverAPort->setText( "APort: " );
  919. serverClients->setText( "Clients: " );
  920. this->maxClients->setText( "" );
  921. this->serverStatus->setText( "Status: " );
  922. aktualisieren->addStyle( Knopf::Style::Erlaubt );
  923. zurück->addStyle( Knopf::Style::Erlaubt );
  924. serverFehler->setText( error );
  925. }
  926. }
  927. void PatchServer::sucheAbgeschlossen()
  928. {
  929. aktualisieren->addStyle( Knopf::Style::Erlaubt );
  930. tabelle->addStyle( ObjTabelle::Style::Erlaubt );
  931. }
  932. void PatchServer::setUpdateProzent( int prozent, int gruppe )
  933. {
  934. for( int i = 0; i < updateT->getZeilenAnzahl(); i++ )
  935. {
  936. if( gruppe == TextZuInt( updateT->zZeilenName( i )->getText(), 10 ) )
  937. {
  938. if( updateT->zZeichnung( 3, i ) != obj )
  939. {
  940. updateT->lockZeichnung();
  941. FBalken *fb = new FBalken();
  942. fb->setStyle( FBalken::Style::Sichtbar | FBalken::Style::L_R | FBalken::Style::FFarbe | FBalken::Style::Hintergrund | FBalken::Style::Prozent | FBalken::Style::Rahmen | FBalken::Style::FRahmen );
  943. fb->setFBgFarbe( 0xFF00FF00 );
  944. fb->setHintergrundFarbe( 0xFFFFFFFF );
  945. fb->setSFarbe( 0xFF000000 );
  946. fb->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
  947. fb->setSSize( 12 );
  948. fb->setRahmenBreite( 1 );
  949. fb->setRahmenFarbe( 0xFF55FF55 );
  950. fb->setFRFarbe( 0xFF55FF55 );
  951. fb->reset();
  952. fb->setAktionAnzahl( 100 );
  953. updateT->setZeichnungZ( 1, i, fb );
  954. updateT->setZeichnungZ( 3, i, dynamic_cast<Zeichnung *>( obj->getThis() ) );
  955. updateT->unlockZeichnung();
  956. }
  957. ( (FBalken *)updateT->zZeichnung( 1, i ) )->reset();
  958. ( (FBalken *)updateT->zZeichnung( 1, i ) )->aktionPlus( prozent );
  959. return;
  960. }
  961. }
  962. }
  963. void PatchServer::setUpdateFertig( bool error, int gruppe )
  964. {
  965. if( !gruppe )
  966. { // gesamter Vorgang abgeschlossen
  967. aktualisieren->addStyle( Knopf::Style::Erlaubt );
  968. zurück->addStyle( Knopf::Style::Erlaubt );
  969. updateStarten->addStyle( Knopf::Style::Erlaubt );
  970. updateT->addStyle( ObjTabelle::Style::Erlaubt );
  971. MausEreignis me;
  972. me.id = ME_RLinks;
  973. if( b )
  974. b->lock();
  975. aktualisierenMausEreignis( 0, me );
  976. if( b )
  977. b->unlock();
  978. }
  979. else
  980. { // einzelner Schritt abgeschlossen
  981. for( int i = 0; i < updateT->getZeilenAnzahl(); i++ )
  982. {
  983. if( gruppe == TextZuInt( updateT->zZeilenName( i )->getText(), 10 ) )
  984. {
  985. updateT->lockZeichnung();
  986. TextFeld *uTS = new TextFeld();
  987. uTS->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
  988. uTS->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
  989. uTS->setSchriftSize( 12 );
  990. uTS->setRahmenFarbe( 0xFFFFFFFF );
  991. if( error )
  992. {
  993. uTS->setText( "Fehler" );
  994. uTS->setSchriftFarbe( 0xFFFF0000 );
  995. }
  996. else
  997. {
  998. uTS->setText( "Aktuell" );
  999. uTS->setSchriftFarbe( 0xFF00FF00 );
  1000. }
  1001. updateT->setZeichnungZ( 1, i, uTS );
  1002. updateT->setZeichnungZ( 3, i, 0 );
  1003. updateT->unlockZeichnung();
  1004. return;
  1005. }
  1006. }
  1007. }
  1008. }
  1009. bool PatchServer::aktualisierenMausEreignis( void *o, MausEreignis me )
  1010. {
  1011. if( me.id == ME_RLinks )
  1012. {
  1013. if( liste->hatStyle( Fenster::Style::Sichtbar ) )
  1014. {
  1015. if( !suchen->isRunning() )
  1016. {
  1017. for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
  1018. tabelle->removeZeile( 1 );
  1019. weiter->removeStyle( Knopf::Style::Erlaubt );
  1020. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1021. tabelle->removeStyle( ObjTabelle::Style::Erlaubt );
  1022. suchen->start();
  1023. }
  1024. }
  1025. else if( details->hatStyle( Fenster::Style::Sichtbar ) )
  1026. {
  1027. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1028. zurück->removeStyle( Knopf::Style::Erlaubt );
  1029. update->removeStyle( Knopf::Style::Erlaubt );
  1030. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1031. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1032. beenden->removeStyle( Knopf::Style::Erlaubt );
  1033. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1034. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1035. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1036. getDetails->start();
  1037. }
  1038. else if( updateF->hatStyle( Fenster::Style::Sichtbar ) )
  1039. {
  1040. int id = -1;
  1041. for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
  1042. {
  1043. if( ( (KontrollKnopf *)tabelle->zZeichnung( 6, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
  1044. {
  1045. id = TextZuInt( tabelle->zZeilenName( i )->getText(), 10 );
  1046. break;
  1047. }
  1048. }
  1049. Array< FileGroupInfo * > list;
  1050. if( psc->getFileGroupInfoList( &list ) )
  1051. {
  1052. for( int i = 1; i < updateT->getZeilenAnzahl(); )
  1053. updateT->removeZeile( i );
  1054. int anz = list.getEintragAnzahl();
  1055. for( int i = 0; i < anz; i++ )
  1056. {
  1057. FileGroupInfo *info = list.get( i );
  1058. updateT->addZeile( new Text( info->id ) );
  1059. TextFeld *uTN = new TextFeld();
  1060. uTN->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::VCenter );
  1061. uTN->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
  1062. uTN->setSchriftFarbe( 0xFFFFFFFF );
  1063. uTN->setSchriftSize( 12 );
  1064. uTN->setRahmenFarbe( 0xFFFFFFFF );
  1065. uTN->setText( info->name );
  1066. updateT->setZeichnungZ( 0, i + 1, uTN );
  1067. TextFeld *uTS = new TextFeld();
  1068. uTS->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
  1069. uTS->setRahmenFarbe( 0xFFFFFFFF );
  1070. uTS->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
  1071. uTS->setSchriftSize( 12 );
  1072. if( info->status.istGleich( "Fehlt" ) )
  1073. uTS->setSchriftFarbe( 0xFFFF0000 );
  1074. if( info->status.istGleich( "Aktuell" ) )
  1075. uTS->setSchriftFarbe( 0xFF00FF00 );
  1076. if( info->status.istGleich( "Veraltet" ) )
  1077. uTS->setSchriftFarbe( 0xFFFFFF00 );
  1078. if( info->status.istGleich( "Update" ) )
  1079. uTS->setSchriftFarbe( 0xFFFFFFFF );
  1080. uTS->setText( info->status.getText() );
  1081. updateT->setZeichnungZ( 1, i + 1, uTS );
  1082. if( info->status.istGleich( "Veraltet" ) || info->status.istGleich( "Fehlt" ) )
  1083. {
  1084. KontrollKnopf *auswahl = new KontrollKnopf();
  1085. auswahl->setStyle( KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer | KontrollKnopf::Style::Rahmen );
  1086. auswahl->loadData( "data/bilder/icons.ltdb" );
  1087. auswahl->setMausEreignisParameter( this );
  1088. auswahl->setMausEreignis( patchServerAuswahlKnopfMausEreignis );
  1089. auswahl->setRahmenFarbe( 0xFFFFFFFF );
  1090. updateT->setZeichnungZ( 2, i + 1, auswahl );
  1091. }
  1092. delete info;
  1093. }
  1094. }
  1095. else
  1096. WMessageBox( 0, new Text( "Fehler" ), new Text( psc->getLetzterFehler() ), MB_ICONERROR );
  1097. }
  1098. }
  1099. return 1;
  1100. }
  1101. bool PatchServer::auswahlKnopfMausEreignis( void *o, MausEreignis me )
  1102. {
  1103. if( !o )
  1104. return 0;
  1105. if( me.id == ME_RLinks )
  1106. {
  1107. if( liste->hatStyle( Fenster::Style::Sichtbar ) )
  1108. {
  1109. for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
  1110. ( (KontrollKnopf *)tabelle->zZeichnung( 6, i ) )->removeStyle( KontrollKnopf::Style::Selected );
  1111. weiter->addStyle( Knopf::Style::Erlaubt );
  1112. }
  1113. }
  1114. return 1;
  1115. }
  1116. bool PatchServer::weiterMausEreignis( void *o, MausEreignis me )
  1117. {
  1118. if( me.id == ME_RLinks )
  1119. {
  1120. liste->removeStyle( Fenster::Style::Sichtbar );
  1121. details->addStyle( Fenster::Style::Sichtbar );
  1122. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1123. zurück->removeStyle( Knopf::Style::Erlaubt );
  1124. update->removeStyle( Knopf::Style::Erlaubt );
  1125. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1126. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1127. beenden->removeStyle( Knopf::Style::Erlaubt );
  1128. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1129. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1130. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1131. int id = -1;
  1132. for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
  1133. {
  1134. if( ( (KontrollKnopf *)tabelle->zZeichnung( 6, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
  1135. {
  1136. id = TextZuInt( tabelle->zZeilenName( i )->getText(), 10 );
  1137. break;
  1138. }
  1139. }
  1140. getDetails->setServerId( id );
  1141. getDetails->start();
  1142. }
  1143. return 1;
  1144. }
  1145. bool PatchServer::zurückMausEreignis( void *o, MausEreignis me )
  1146. {
  1147. if( me.id == ME_RLinks )
  1148. {
  1149. if( details->hatStyle( Fenster::Style::Sichtbar ) )
  1150. {
  1151. details->removeStyle( Fenster::Style::Sichtbar );
  1152. liste->addStyle( Fenster::Style::Sichtbar );
  1153. if( !suchen->isRunning() )
  1154. {
  1155. for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
  1156. tabelle->removeZeile( 1 );
  1157. weiter->removeStyle( Knopf::Style::Erlaubt );
  1158. zurück->removeStyle( Knopf::Style::Erlaubt );
  1159. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1160. suchen->start();
  1161. }
  1162. if( psc )
  1163. {
  1164. psc->trenne();
  1165. psc = (PSKlient *)psc->release();
  1166. }
  1167. }
  1168. else if( updateF->hatStyle( Fenster::Style::Sichtbar ) )
  1169. {
  1170. updateF->removeStyle( Fenster::Style::Sichtbar );
  1171. details->addStyle( Fenster::Style::Sichtbar );
  1172. aktualisierenMausEreignis( 0, me );
  1173. }
  1174. }
  1175. return 1;
  1176. }
  1177. bool PatchServer::updateMausEreignis( void *o, MausEreignis me )
  1178. {
  1179. if( me.id == ME_RLinks )
  1180. {
  1181. zurück->addStyle( Knopf::Style::Erlaubt );
  1182. weiter->removeStyle( Knopf::Style::Erlaubt );
  1183. details->removeStyle( Fenster::Style::Sichtbar );
  1184. updateF->addStyle( Fenster::Style::Sichtbar );
  1185. aktualisieren->addStyle( Knopf::Style::Erlaubt );
  1186. aktualisierenMausEreignis( 0, me );
  1187. }
  1188. return 1;
  1189. }
  1190. bool PatchServer::pausierenMausEreignis( void *o, MausEreignis me )
  1191. {
  1192. if( me.id == ME_RLinks )
  1193. {
  1194. if( pausieren->zText()->istGleich( "Pausieren" ) )
  1195. {
  1196. if( psc->pause() )
  1197. {
  1198. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1199. zurück->removeStyle( Knopf::Style::Erlaubt );
  1200. update->removeStyle( Knopf::Style::Erlaubt );
  1201. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1202. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1203. beenden->removeStyle( Knopf::Style::Erlaubt );
  1204. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1205. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1206. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1207. getDetails->start();
  1208. }
  1209. else
  1210. serverFehler->setText( psc->getLetzterFehler() );
  1211. }
  1212. else
  1213. {
  1214. if( psc->fortsetzen() )
  1215. {
  1216. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1217. zurück->removeStyle( Knopf::Style::Erlaubt );
  1218. update->removeStyle( Knopf::Style::Erlaubt );
  1219. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1220. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1221. beenden->removeStyle( Knopf::Style::Erlaubt );
  1222. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1223. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1224. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1225. getDetails->start();
  1226. }
  1227. else
  1228. serverFehler->setText( psc->getLetzterFehler() );
  1229. }
  1230. }
  1231. return 1;
  1232. }
  1233. bool PatchServer::stoppenMausEreignis( void *o, MausEreignis me )
  1234. {
  1235. if( me.id == ME_RLinks )
  1236. {
  1237. if( stoppen->zText()->istGleich( "Stoppen" ) )
  1238. {
  1239. if( psc->stop() )
  1240. {
  1241. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1242. zurück->removeStyle( Knopf::Style::Erlaubt );
  1243. update->removeStyle( Knopf::Style::Erlaubt );
  1244. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1245. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1246. beenden->removeStyle( Knopf::Style::Erlaubt );
  1247. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1248. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1249. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1250. getDetails->start();
  1251. }
  1252. else
  1253. serverFehler->setText( psc->getLetzterFehler() );
  1254. }
  1255. else
  1256. {
  1257. if( psc->start() )
  1258. {
  1259. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1260. zurück->removeStyle( Knopf::Style::Erlaubt );
  1261. update->removeStyle( Knopf::Style::Erlaubt );
  1262. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1263. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1264. beenden->removeStyle( Knopf::Style::Erlaubt );
  1265. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1266. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1267. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1268. getDetails->start();
  1269. }
  1270. else
  1271. serverFehler->setText( psc->getLetzterFehler() );
  1272. }
  1273. }
  1274. return 1;
  1275. }
  1276. bool PatchServer::beendenMausEreignis( void *o, MausEreignis me )
  1277. {
  1278. if( me.id == ME_RLinks )
  1279. {
  1280. if( psc->beenden() )
  1281. {
  1282. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1283. zurück->removeStyle( Knopf::Style::Erlaubt );
  1284. update->removeStyle( Knopf::Style::Erlaubt );
  1285. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1286. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1287. beenden->removeStyle( Knopf::Style::Erlaubt );
  1288. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1289. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1290. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1291. zurückMausEreignis( 0, me );
  1292. }
  1293. else
  1294. serverFehler->setText( psc->getLetzterFehler() );
  1295. }
  1296. return 1;
  1297. }
  1298. bool PatchServer::terminierenMausEreignis( void *o, MausEreignis me )
  1299. {
  1300. if( me.id == ME_RLinks )
  1301. {
  1302. if( psc->terminieren() )
  1303. {
  1304. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1305. zurück->removeStyle( Knopf::Style::Erlaubt );
  1306. update->removeStyle( Knopf::Style::Erlaubt );
  1307. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1308. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1309. beenden->removeStyle( Knopf::Style::Erlaubt );
  1310. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1311. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1312. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1313. zurückMausEreignis( 0, me );
  1314. }
  1315. else
  1316. serverFehler->setText( psc->getLetzterFehler() );
  1317. }
  1318. return 1;
  1319. }
  1320. bool PatchServer::setMaxClientsMausEreignis( void *o, MausEreignis me )
  1321. {
  1322. if( me.id == ME_RLinks )
  1323. {
  1324. if( psc->setMaxTasks( TextZuInt( maxClients->zText()->getText(), 10 ) ) )
  1325. {
  1326. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1327. zurück->removeStyle( Knopf::Style::Erlaubt );
  1328. update->removeStyle( Knopf::Style::Erlaubt );
  1329. pausieren->removeStyle( Knopf::Style::Erlaubt );
  1330. stoppen->removeStyle( Knopf::Style::Erlaubt );
  1331. beenden->removeStyle( Knopf::Style::Erlaubt );
  1332. terminieren->removeStyle( Knopf::Style::Erlaubt );
  1333. setMaxClients->removeStyle( Knopf::Style::Erlaubt );
  1334. maxClients->removeStyle( TextFeld::Style::Erlaubt );
  1335. getDetails->start();
  1336. }
  1337. else
  1338. serverFehler->setText( psc->getLetzterFehler() );
  1339. }
  1340. return 1;
  1341. }
  1342. bool PatchServer::updateStartenMausEreignis( void *o, MausEreignis me )
  1343. {
  1344. if( me.id == ME_RLinks )
  1345. {
  1346. int id = -1;
  1347. for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
  1348. {
  1349. if( ( (KontrollKnopf *)tabelle->zZeichnung( 6, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
  1350. {
  1351. id = TextZuInt( tabelle->zZeilenName( i )->getText(), 10 );
  1352. break;
  1353. }
  1354. }
  1355. if( id > 0 )
  1356. {
  1357. int anzahl = 0;
  1358. Array< int > *gruppen = new Array< int >();
  1359. for( int i = 1; i < updateT->getZeilenAnzahl(); i++ )
  1360. {
  1361. if( updateT->zZeichnung( 2, i ) && ( (KontrollKnopf *)updateT->zZeichnung( 2, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
  1362. {
  1363. int gId = TextZuInt( updateT->zZeilenName( i )->getText(), 10 );
  1364. gruppen->set( gId, anzahl );
  1365. anzahl++;
  1366. }
  1367. }
  1368. if( anzahl )
  1369. {
  1370. updateStarten->removeStyle( Knopf::Style::Erlaubt );
  1371. zurück->removeStyle( Knopf::Style::Erlaubt );
  1372. aktualisieren->removeStyle( Knopf::Style::Erlaubt );
  1373. updateT->removeStyle( ObjTabelle::Style::Erlaubt );
  1374. updateTh->setUpdateListe( anzahl, gruppen );
  1375. updateTh->start();
  1376. }
  1377. gruppen->release();
  1378. }
  1379. }
  1380. return 1;
  1381. }
  1382. bool PatchServer::maxClientsTastaturEreignis( void *o, TastaturEreignis te )
  1383. {
  1384. bool ret = 0;
  1385. if( te.taste >= '0' && te.taste <= '9' )
  1386. ret = 1;
  1387. if( te.taste == T_Entf || te.taste == T_BackSpace )
  1388. ret = 1;
  1389. if( te.taste == T_Links || te.taste == T_Rechts )
  1390. ret = 1;
  1391. if( ret )
  1392. setMaxClients->addStyle( Knopf::Style::Erlaubt );
  1393. return ret;
  1394. }
  1395. void PatchServer::updateAll()
  1396. {
  1397. std::cout << "Searching for Patch Servers ...\n";
  1398. while( suchen->isRunning() )
  1399. {
  1400. Sleep( 100 );
  1401. }
  1402. MausEreignis me;
  1403. me.id = ME_RLinks;
  1404. me.verarbeitet = 0;
  1405. for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
  1406. {
  1407. if( ( (TextFeld *)tabelle->zZeichnung( 5, i ) )->zText()->istGleich( "Veraltet" ) )
  1408. {
  1409. std::cout << "Request details from server " << ( (TextFeld *)tabelle->zZeichnung( 0, i ) )->zText()->getText() << " ...\n";
  1410. Zeichnung *z = tabelle->zZeichnung( 6, i );
  1411. me.mx = z->getX();
  1412. me.my = z->getY();
  1413. me.verarbeitet = 0;
  1414. z->doPublicMausEreignis( me );
  1415. me.verarbeitet = 0;
  1416. weiterMausEreignis( weiter, me );
  1417. while( getDetails->isRunning() )
  1418. {
  1419. Sleep( 100 );
  1420. }
  1421. updateMausEreignis( update, me );
  1422. for( int j = 1; j < updateT->getZeilenAnzahl(); j++ )
  1423. {
  1424. if( ( (TextFeld *)updateT->zZeichnung( 1, j ) )->zText()->istGleich( "Veraltet" ) )
  1425. {
  1426. std::cout << "Update group " << ( (TextFeld *)updateT->zZeichnung( 0, j ) )->zText()->getText() << " ... ";
  1427. Zeichnung *z = updateT->zZeichnung( 2, j );
  1428. me.mx = z->getX();
  1429. me.my = z->getY();
  1430. me.verarbeitet = 0;
  1431. z->doPublicMausEreignis( me );
  1432. me.verarbeitet = 0;
  1433. updateStartenMausEreignis( updateStarten, me );
  1434. while( updateTh->isRunning() )
  1435. {
  1436. Sleep( 100 );
  1437. }
  1438. std::cout << ( (TextFeld *)updateT->zZeichnung( 1, j ) )->zText()->getText() << "\n";
  1439. j = 0;
  1440. }
  1441. }
  1442. zurückMausEreignis( zurück, me );
  1443. while( getDetails->isRunning() )
  1444. {
  1445. Sleep( 100 );
  1446. }
  1447. zurückMausEreignis( zurück, me );
  1448. while( suchen->isRunning() )
  1449. {
  1450. Sleep( 100 );
  1451. }
  1452. i = 0;
  1453. }
  1454. }
  1455. std::cout << "Everything is up to date!\n";
  1456. }
  1457. // Ereignisse
  1458. bool patchServerAktualisierenMausEreignis( void *p, void *o, MausEreignis me )
  1459. {
  1460. if( !p )
  1461. return 0;
  1462. return ( (PatchServer *)p )->aktualisierenMausEreignis( o, me );
  1463. }
  1464. bool patchServerAuswahlKnopfMausEreignis( void *p, void *o, MausEreignis me )
  1465. {
  1466. if( !p )
  1467. return 0;
  1468. return ( (PatchServer *)p )->auswahlKnopfMausEreignis( o, me );
  1469. }
  1470. bool patchServerWeiterMausEreignis( void *p, void *o, MausEreignis me )
  1471. {
  1472. if( !p )
  1473. return 0;
  1474. return ( (PatchServer *)p )->weiterMausEreignis( o, me );
  1475. }
  1476. bool patchServerZurückMausEreignis( void *p, void *o, MausEreignis me )
  1477. {
  1478. if( !p )
  1479. return 0;
  1480. return ( (PatchServer *)p )->zurückMausEreignis( o, me );
  1481. }
  1482. bool patchServerUpdateMausEreignis( void *p, void *o, MausEreignis me )
  1483. {
  1484. if( !p )
  1485. return 0;
  1486. return ( (PatchServer *)p )->updateMausEreignis( o, me );
  1487. }
  1488. bool patchServerPausierenMausEreignis( void *p, void *o, MausEreignis me )
  1489. {
  1490. if( !p )
  1491. return 0;
  1492. return ( (PatchServer *)p )->pausierenMausEreignis( o, me );
  1493. }
  1494. bool patchServerStoppenMausEreignis( void *p, void *o, MausEreignis me )
  1495. {
  1496. if( !p )
  1497. return 0;
  1498. return ( (PatchServer *)p )->stoppenMausEreignis( o, me );
  1499. }
  1500. bool patchServerBeendenMausEreignis( void *p, void *o, MausEreignis me )
  1501. {
  1502. if( !p )
  1503. return 0;
  1504. return ( (PatchServer *)p )->beendenMausEreignis( o, me );
  1505. }
  1506. bool patchServerTerminierenMausEreignis( void *p, void *o, MausEreignis me )
  1507. {
  1508. if( !p )
  1509. return 0;
  1510. return ( (PatchServer *)p )->terminierenMausEreignis( o, me );
  1511. }
  1512. bool patchServerSetMaxClientsMausEreignis( void *p, void *o, MausEreignis me )
  1513. {
  1514. if( !p )
  1515. return 0;
  1516. return ( (PatchServer *)p )->setMaxClientsMausEreignis( o, me );
  1517. }
  1518. bool patchServerUpdateStartenMausEreignis( void *p, void *o, MausEreignis me )
  1519. {
  1520. if( !p )
  1521. return 0;
  1522. return ( (PatchServer *)p )->updateStartenMausEreignis( o, me );
  1523. }
  1524. bool patchServerMaxClientsTastaturEreignis( void *p, void *o, TastaturEreignis te )
  1525. {
  1526. if( !p )
  1527. return 0;
  1528. return ( (PatchServer *)p )->maxClientsTastaturEreignis( o, te );
  1529. }