1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645 |
- #include "PatchServer.h"
- #include <TextFeld.h>
- #include <MausEreignis.h>
- #include "..\..\Login\Login.h"
- #include <Datei.h>
- #include <iostream>
- // Inhalt der PSUpdate Klasse aus PatchServer.h
- // Kontruktor
- PSUpdate::PSUpdate( PatchServer *zPSA, AdminAccount *account )
- : Thread()
- {
- this->account = account;
- this->zPSA = zPSA;
- gruppeAnzahl = 0;
- gruppeId = 0;
- this->psc = 0;
- id = 0;
- }
- // Destruktor
- PSUpdate::~PSUpdate()
- {
- if( psc )
- {
- psc->abbruch();
- psc->release();
- }
- account->release();
- delete[] gruppeId;
- }
- // nicht constant
- void PSUpdate::setServer( const char *ip, unsigned short port )
- {
- if( psc )
- {
- psc->abbruch();
- psc->release();
- }
- psc = new PSKlient( ip, port );
- }
- void PSUpdate::setUpdateListe( int gAnzahl, Array< int > *gId )
- {
- gruppeAnzahl = gAnzahl;
- delete[] gruppeId;
- gruppeId = 0;
- if( gAnzahl )
- {
- gruppeId = new int[ gAnzahl ];
- for( int i = 0; i < gAnzahl; i++ )
- gruppeId[ i ] = gId->get( i );
- }
- }
- void PSUpdate::thread()
- {
- if( !psc )
- {
- for( int g = 0; g < gruppeAnzahl; g++ )
- zPSA->setUpdateFertig( 1, gruppeId[ g ] );
- return;
- }
- if( !psc->login( account->zName()->getText(), account->zPasswort()->getText() ) )
- {
- for( int g = 0; g < gruppeAnzahl; g++ )
- zPSA->setUpdateFertig( 1, gruppeId[ g ] );
- return;
- }
- Array< FileGroupInfo * > fileGroupList;
- psc->getFileGroupInfoList( &fileGroupList );
- RCArray< ReferenceCounting< std::pair< int, Text > > > systemT;
- psc->getSystemInfoList( &systemT );
- int gAnz = fileGroupList.getEintragAnzahl();
- for( int g = 0; g < gruppeAnzahl; g++ )
- {
- Text *initPfad = new Text( "data/" );
- for( int i = 0; i < gAnz; i++ )
- {
- if( gruppeId[ g ] == fileGroupList.get( i )->id )
- {
- initPfad->append( (char *)fileGroupList.get( i )->name );
- break;
- }
- }
- initPfad->append( ".ini" );
- InitDatei *systemInit = new InitDatei( initPfad );
- systemInit->laden();
- bool cont = 0;
- int sAnz = systemT.getEintragAnzahl();
- for( int i = 0; i < sAnz; i++ ) // Prüfen, ob Lokale Version aktuell ist
- {
- if( !systemInit->wertExistiert( systemT.z( i )->second ) )
- {
- systemInit->release();
- zPSA->setUpdateFertig( 1, gruppeId[ g ] );
- cont = 1;
- break;
- }
- Text *pfad = new Text( systemInit->zWert( (char *)systemT.z( i )->second )->getText() );
- pfad->append( "/" );
- RCArray< ReferenceCounting< FileInfo > > dateiT;
- psc->getFileInfoList( systemT.z( i )->first, gruppeId[ g ], &dateiT );
- int dAnz = dateiT.getEintragAnzahl();
- bool br = 0;
- for( int j = 0; j < dAnz; j++ )
- {
- Text *pf = new Text( pfad->getText() );
- pf->append( dateiT.z( j )->path.getText() );
- if( !DateiExistiert( pf->getThis() ) )
- {
- pfad->release();
- pf->release();
- systemInit->release();
- zPSA->setUpdateFertig( 1, gruppeId[ g ] );
- cont = 1;
- br = 1;
- break;
- }
- if( !DateiIstVerzeichnis( pf->getThis() ) )
- {
- Datei *d = new Datei();
- d->setDatei( pf->getText() );
- Zeit *zeit = d->getLastChange();
- d->release();
- if( !zeit->istGleich( "y-m-d h:i:s", dateiT.z( j )->time.getText() ) )
- {
- zeit->release();
- pfad->release();
- pf->release();
- systemInit->release();
- zPSA->setUpdateFertig( 1, gruppeId[ g ] );
- cont = 1;
- br = 1;
- break;
- }
- zeit->release();
- }
- pf->release();
- }
- if( br )
- break;
- pfad->release();
- }
- if( cont )
- continue;
- if( psc->updateStarten( gruppeId[ g ] ) )
- {
- RCArray< Text > *systemA = new RCArray< Text >();
- RCArray< RCArray< Text > > *dateiA = new RCArray< RCArray< Text > >();
- Array< int > *dateiAnzahlA = new Array< int >();
- int systemAnzahl = 0;
- bool ok = psc->getDateiListe( &systemAnzahl, dateiAnzahlA, systemA, dateiA );
- if( !ok )
- {
- systemA->release();
- dateiA->release();
- dateiAnzahlA->release();
- systemInit->release();
- zPSA->setUpdateFertig( 1, gruppeId[ g ] );
- continue;
- }
- __int64 maxAktionen = 0;
- for( int i = 0; i < systemAnzahl; i++ )
- {
- for( int j = 0; j < dateiAnzahlA->get( i ); j++ )
- {
- Text *pfad = new Text( systemInit->zWert( systemA->z( i )->getText() )->getText() );
- pfad->append( "/" );
- pfad->append( dateiA->z( i )->z( j )->getText() );
- Datei *d = new Datei();
- d->setDatei( pfad );
- if( !d->istOrdner() )
- maxAktionen += d->getSize();
- d->release();
- }
- }
- __int64 aktionen = 0;
- int prozent = 0;
- bool br = 0;
- for( int i = 0; i < systemAnzahl; i++ )
- {
- for( int j = 0; j < dateiAnzahlA->get( i ); j++ )
- {
- Text *pfad = new Text( systemInit->zWert( systemA->z( i )->getText() )->getText() );
- pfad->append( "/" );
- pfad->append( dateiA->z( i )->z( j )->getText() );
- Datei *d = new Datei();
- d->setDatei( pfad );
- if( d->istOrdner() )
- {
- d->release();
- continue;
- }
- __int64 gr = d->getSize();
- d->open( Datei::Style::lesen );
- int version;
- int system = 0;
- for( int s = 0; s < sAnz; s++ )
- {
- if( systemT.z( s )->second.istGleich( systemA->z( i )->getText() ) )
- system = systemT.z( s )->first;
- }
- psc->getFileVersion( dateiA->z( i )->z( j )->getText(), system, gruppeId[ g ], &version );
- psc->lock();
- psc->zKlient()->sende( "\xE", 1 );
- char ret = 0;
- psc->zKlient()->getNachricht( &ret, 1 );
- if( ret == 1 )
- {
- psc->zKlient()->sende( (char *)& system, 4 );
- psc->zKlient()->sende( (char *)& version, 4 );
- short län = dateiA->z( i )->z( j )->getLength();
- psc->zKlient()->sende( (char *)& län, 2 );
- psc->zKlient()->sende( dateiA->z( i )->z( j )->getText(), län );
- psc->zKlient()->getNachricht( &ret, 1 );
- if( ret == 1 )
- {
- while( gr )
- {
- if( gr >= 2048 )
- {
- gr -= 2048;
- län = 2048;
- }
- else
- {
- län = (int)gr;
- gr = 0;
- }
- if( län < 0 )
- break;
- psc->zKlient()->sende( (char *)& län, 2 );
- char *buff = new char[ län ];
- d->lese( buff, län );
- psc->zKlient()->sende( buff, län );
- delete[] buff;
- aktionen += län;
- if( prozent != 100 / ( maxAktionen / (long double)aktionen ) )
- {
- prozent = (int)( 100 / ( maxAktionen / (long double)aktionen ) );
- zPSA->setUpdateProzent( prozent, gruppeId[ g ] );
- }
- }
- psc->zKlient()->sende( "\0\0", 2 );
- psc->zKlient()->getNachricht( &ret, 1 );
- }
- }
- if( prozent != 100 / ( maxAktionen / (long double)aktionen ) )
- {
- prozent = (int)( 100 / ( maxAktionen / (long double)aktionen ) );
- zPSA->setUpdateProzent( prozent, gruppeId[ g ] );
- }
- if( ret == 3 )
- {
- d->close();
- d->release();
- systemA->release();
- dateiA->release();
- dateiAnzahlA->release();
- char l = 0;
- psc->zKlient()->getNachricht( &l, 1 );
- char *txt = new char[ l + 1 ];
- txt[ l ] = 0;
- if( l )
- psc->zKlient()->getNachricht( txt, l );
- std::cout << "Error: " << txt << "\n";
- delete[] txt;
- psc->unlock();
- zPSA->setUpdateProzent( 0, gruppeId[ g ] );
- zPSA->setUpdateFertig( 1, gruppeId[ g ] );
- br = 1;
- break;
- }
- psc->unlock();
- d->close();
- d->release();
- }
- if( br )
- break;
- }
- if( br )
- continue;
- psc->updateFertig();
- systemA->release();
- dateiA->release();
- dateiAnzahlA->release();
- }
- else
- {
- systemInit->release();
- zPSA->setUpdateProzent( 0, gruppeId[ g ] );
- zPSA->setUpdateFertig( 1, gruppeId[ g ] );
- continue;
- }
- zPSA->setUpdateProzent( 0, gruppeId[ g ] );
- zPSA->setUpdateFertig( 0, gruppeId[ g ] );
- systemInit->release();
- }
- for( int i = 0; i < gAnz; i++ )
- delete fileGroupList.get( i );
- zPSA->setUpdateFertig( 0, 0 );
- run = 0;
- }
- // löscht das objekt wenn es nicht mehr gebraucht wird und beendet den Thread
- Thread *PSUpdate::release()
- {
- if( ref == 2 && run )
- ende();
- return Thread::release();
- }
- // Inhalt der PSDetails Klasse aus PatchServer.h
- // Konstruktor
- PSDetails::PSDetails( PatchServer * zPSA, MSKlient * mk )
- : Thread()
- {
- this->zPSA = zPSA;
- this->mk = mk;
- id = 0;
- }
- // Destruktor
- PSDetails::~PSDetails()
- {
- mk->release();
- }
- // nicht constant
- void PSDetails::setServerId( int id )
- {
- this->id = id;
- }
- void PSDetails::thread()
- {
- ServerDetails detail;
- mk->getPatchServerDetails( id, &detail );
- if( !mk->getPatchServerDetails( id, &detail ) )
- {
- Text *err = new Text( "Fehler: Server Rückgabe: " );
- err->append( mk->getLetzterFehler() );
- zPSA->setServerDetails( id, ( char * )"", ( char * )"", 0, 0, 0, 0, -2, err );
- }
- else
- {
- PSKlient *psc = new PSKlient( detail.ip, detail.adminPort );
- int st = psc->getStatus();
- if( st >= 0 )
- psc->trenne();
- psc->release();
- zPSA->setServerDetails( id,
- detail.name,
- detail.ip,
- detail.port,
- detail.adminPort,
- detail.tasks,
- detail.maxTasks,
- st,
- 0 );
- }
- run = 0;
- }
- // löscht das objekt wenn es nicht mehr gebraucht wird und beendet den Thread
- Thread *PSDetails::release()
- {
- if( ref == 2 && run )
- ende();
- return Thread::release();
- }
- // Inhalt der PSSuche Klasse aus PatchServer.h
- // Konstruktor
- PSSuche::PSSuche( PatchServer * zPSA, MSKlient * mk )
- : Thread()
- {
- this->zPSA = zPSA;
- this->mk = mk;
- }
- // Destruktor
- PSSuche::~PSSuche()
- {
- mk->release();
- }
- // nicht constant
- void PSSuche::thread()
- {
- Array< ServerData * > list;
- if( mk->getPatchServerListe( &list ) )
- {
- int anz = list.getEintragAnzahl();
- for( int i = 0; i < anz; i++ )
- {
- int st = -1;
- ServerData *s = list.get( i );
- if( !s->status.istGleich( "Unerreichbar" ) )
- {
- PSKlient *psc = new PSKlient( s->ip.getText(), s->adminPort );
- st = psc->getStatus();
- switch( st )
- {
- case -2:
- s->status = "Unbekannt";
- break;
- case -1:
- s->status = "Unerreichbar";
- break;
- case 0:
- s->status = "Offline";
- break;
- case 1:
- s->status = "Pausiert";
- break;
- case 2:
- s->status = "Online";
- break;
- case 3:
- s->status = "Veraltet";
- break;
- }
- if( st >= 0 )
- psc->trenne();
- psc->release();
- }
- zPSA->addServer( s->id,
- s->name,
- s->ip,
- s->port,
- s->adminPort,
- s->status );
- delete s;
- }
- }
- zPSA->sucheAbgeschlossen();
- run = 0;
- }
- // löscht das objekt wenn es nicht mehr gebraucht wird und beendet den Thread
- Thread *PSSuche::release()
- {
- if( ref == 2 && run )
- ende();
- return Thread::release();
- }
- TextFeld *getTabellenEintrag( const char *txt, Schrift * s, int farbe )
- {
- TextFeld *tmp = new TextFeld();
- tmp->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
- tmp->setSchriftZ( s );
- tmp->setText( txt );
- tmp->setSchriftFarbe( farbe );
- return tmp;
- }
- // Inhalt der PatchServer Klasse aus PatchServer.h
- // Konstruktor
- PatchServer::PatchServer( Schrift * s, InitDatei * d, MSKlient * msk, RessourceBild * rb, AdminAccount * acc, Bildschirm * b )
- : Abschnitt( b )
- {
- fenster = 0;
- this->msk = msk;
- iD = d;
- account = acc;
- schrift = s;
- psc = 0;
- f = new Fenster();
- f->setStyle( Fenster::Style::Sichtbar | Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered );
- f->setRFarbe( 0xFFFFFFFF );
- f->setRBreite( 1 );
- f->setTitel( "Patch Server" );
- f->setTSchriftZ( s ? s->getThis() : 0 );
- f->setTSFarbe( 0xFFFFFFFF );
- f->setTSSize( 12 );
- f->setTAfFarbe( 0x1000FF00 );
- f->setTAfStrength( -15 );
- f->setTRFarbe( 0xFFFFFFFF );
- f->setTRBreite( 1 );
- f->zTTextFeld()->addStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center | TextFeld::Style::Rahmen );
- f->zTTextFeld()->setSize( 0, 20 );
- f->setSize( 492, 277 );
- liste = new Fenster();
- liste->setStyle( Fenster::Style::Sichtbar | Fenster::Style::Erlaubt );
- liste->setSize( 490, 255 );
- f->addMember( liste->getThis() );
- details = new Fenster();
- details->setStyle( Fenster::Style::Erlaubt );
- details->setSize( 490, 255 );
- f->addMember( details->getThis() );
- updateF = new Fenster();
- updateF->setStyle( Fenster::Style::Erlaubt );
- updateF->setSize( 490, 255 );
- f->addMember( updateF->getThis() );
- tabelle = new ObjTabelle();
- tabelle->setStyle( ObjTabelle::Style::Sichtbar | ObjTabelle::Style::VScroll | ObjTabelle::Style::Rahmen | ObjTabelle::Style::Raster | ObjTabelle::Style::Erlaubt );
- tabelle->setMausEreignis( _ret1ME );
- tabelle->setRahmenFarbe( 0xFFFFFFFF );
- tabelle->setRasterFarbe( 0xFFA0A0A0 );
- tabelle->setRasterBreite( 1 );
- tabelle->setPosition( 5, 5 );
- tabelle->setSize( 480, 220 );
- tabelle->setVertikalKlickScroll( 5 );
- tabelle->addSpalte( "id" );
- tabelle->setSpaltenBreite( 0, 40 );
- tabelle->addSpalte( "name" );
- tabelle->setSpaltenBreite( 1, 105 );
- tabelle->addSpalte( "ip" );
- tabelle->setSpaltenBreite( 2, 90 );
- tabelle->addSpalte( "port" );
- tabelle->setSpaltenBreite( 3, 50 );
- tabelle->addSpalte( "aport" );
- tabelle->setSpaltenBreite( 4, 50 );
- tabelle->addSpalte( "status" );
- tabelle->setSpaltenBreite( 5, 100 );
- tabelle->addSpalte( "auswahl" );
- tabelle->setSpaltenBreite( 6, 20 );
- tabelle->addZeile( "Überschrifft" );
- tabelle->setZeilenHeight( 0, 20 );
- tabelle->setZeichnungZ( 0, 0, getTabellenEintrag( "Id", s ? s->getThis() : 0, 0xFFFFFFFF ) );
- tabelle->setZeichnungZ( 1, 0, getTabellenEintrag( "Name", s ? s->getThis() : 0, 0xFFFFFFFF ) );
- tabelle->setZeichnungZ( 2, 0, getTabellenEintrag( "Ip", s ? s->getThis() : 0, 0xFFFFFFFF ) );
- tabelle->setZeichnungZ( 3, 0, getTabellenEintrag( "Port", s ? s->getThis() : 0, 0xFFFFFFFF ) );
- tabelle->setZeichnungZ( 4, 0, getTabellenEintrag( "APort", s ? s->getThis() : 0, 0xFFFFFFFF ) );
- tabelle->setZeichnungZ( 5, 0, getTabellenEintrag( "Status", s ? s->getThis() : 0, 0xFFFFFFFF ) );
- tabelle->setZeichnungZ( 6, 0, 0 );
- liste->addMember( tabelle->getThis() );
- aktualisieren = new Knopf();
- aktualisieren->setText( "" );
- aktualisieren->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
- aktualisieren->setHintergrundBildZ( rb ? rb->get( "neuladen.png" ) : 0 );
- aktualisieren->setPosition( 236, 230 );
- aktualisieren->setSize( 20, 20 );
- aktualisieren->setMausEreignisParameter( this );
- aktualisieren->setMausEreignis( patchServerAktualisierenMausEreignis );
- f->addMember( aktualisieren->getThis() );
- weiter = new Knopf();
- weiter->setText( "" );
- weiter->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
- weiter->setHintergrundBildZ( rb ? rb->get( "weiter.png" ) : 0 );
- weiter->setPosition( 261, 230 );
- weiter->setSize( 20, 20 );
- weiter->setMausEreignisParameter( this );
- weiter->setMausEreignis( patchServerWeiterMausEreignis );
- f->addMember( weiter->getThis() );
- zurück = new Knopf();
- zurück->setText( "" );
- zurück->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
- zurück->setHintergrundBildZ( rb ? rb->get( "zurück.png" ) : 0 );
- zurück->setPosition( 211, 230 );
- zurück->setSize( 20, 20 );
- zurück->setMausEreignisParameter( this );
- zurück->setMausEreignis( patchServerZurückMausEreignis );
- f->addMember( zurück->getThis() );
- serverId = new TextFeld();
- serverId->setStyle( TextFeld::Style::Sichtbar );
- serverId->setSchriftZ( s ? s->getThis() : 0 );
- serverId->setSchriftFarbe( 0xFFFFFFFF );
- serverId->setSchriftSize( 12 );
- serverId->setText( "ID: " );
- serverId->setSize( 100, 20 );
- serverId->setPosition( 10, 10 );
- details->addMember( serverId->getThis() );
- serverName = new TextFeld();
- serverName->setStyle( TextFeld::Style::Sichtbar );
- serverName->setSchriftZ( s ? s->getThis() : 0 );
- serverName->setSchriftFarbe( 0xFFFFFFFF );
- serverName->setSchriftSize( 12 );
- serverName->setText( "Name: " );
- serverName->setSize( 150, 20 );
- serverName->setPosition( 120, 10 );
- details->addMember( serverName->getThis() );
- serverIp = new TextFeld();
- serverIp->setStyle( TextFeld::Style::Sichtbar );
- serverIp->setSchriftZ( s ? s->getThis() : 0 );
- serverIp->setSchriftFarbe( 0xFFFFFFFF );
- serverIp->setSchriftSize( 12 );
- serverIp->setText( "IP: " );
- serverIp->setSize( 120, 20 );
- serverIp->setPosition( 280, 10 );
- details->addMember( serverIp->getThis() );
- serverPort = new TextFeld();
- serverPort->setStyle( TextFeld::Style::Sichtbar );
- serverPort->setSchriftZ( s ? s->getThis() : 0 );
- serverPort->setSchriftFarbe( 0xFFFFFFFF );
- serverPort->setSchriftSize( 12 );
- serverPort->setText( "Port: " );
- serverPort->setSize( 100, 20 );
- serverPort->setPosition( 10, 40 );
- details->addMember( serverPort->getThis() );
- serverAPort = new TextFeld();
- serverAPort->setStyle( TextFeld::Style::Sichtbar );
- serverAPort->setSchriftZ( s ? s->getThis() : 0 );
- serverAPort->setSchriftFarbe( 0xFFFFFFFF );
- serverAPort->setSchriftSize( 12 );
- serverAPort->setText( "Admin Port: " );
- serverAPort->setSize( 200, 20 );
- serverAPort->setPosition( 120, 40 );
- details->addMember( serverAPort->getThis() );
- serverClients = new TextFeld();
- serverClients->setStyle( TextFeld::Style::Sichtbar );
- serverClients->setSchriftZ( s ? s->getThis() : 0 );
- serverClients->setSchriftFarbe( 0xFFFFFFFF );
- serverClients->setSchriftSize( 12 );
- serverClients->setText( "Clients: " );
- serverClients->setSize( 100, 20 );
- serverClients->setPosition( 10, 70 );
- details->addMember( serverClients->getThis() );
- serverMaxClients = new TextFeld();
- serverMaxClients->setStyle( TextFeld::Style::Sichtbar );
- serverMaxClients->setSchriftZ( s ? s->getThis() : 0 );
- serverMaxClients->setSchriftFarbe( 0xFFFFFFFF );
- serverMaxClients->setSchriftSize( 12 );
- serverMaxClients->setText( "Max Clients: " );
- serverMaxClients->setSize( 80, 20 );
- serverMaxClients->setPosition( 120, 70 );
- details->addMember( serverMaxClients->getThis() );
- maxClients = new TextFeld();
- maxClients->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::Buffered | TextFeld::Style::VCenter );
- maxClients->setSchriftZ( s ? s->getThis() : 0 );
- maxClients->setSchriftFarbe( 0xFFFFFFFF );
- maxClients->setSchriftSize( 12 );
- maxClients->setRahmenBreite( 1 );
- maxClients->setRahmenFarbe( 0xFFFFFFFF );
- maxClients->setAlphaFeldFarbe( 0x1000FF00 );
- maxClients->setAlphaFeldStrength( -5 );
- maxClients->setText( "" );
- maxClients->setSize( 100, 20 );
- maxClients->setPosition( 200, 68 );
- maxClients->setMausEreignis( _ret1ME );
- maxClients->setTastaturEreignisParameter( this );
- maxClients->setTastaturEreignis( patchServerMaxClientsTastaturEreignis );
- details->addMember( maxClients->getThis() );
- serverStatus = new TextFeld();
- serverStatus->setStyle( TextFeld::Style::Sichtbar );
- serverStatus->setSchriftZ( s ? s->getThis() : 0 );
- serverStatus->setSchriftFarbe( 0xFFFFFFFF );
- serverStatus->setSchriftSize( 12 );
- serverStatus->setText( "Status: " );
- serverStatus->setSize( 150, 20 );
- serverStatus->setPosition( 10, 100 );
- details->addMember( serverStatus->getThis() );
- serverFehler = new TextFeld();
- serverFehler->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Mehrzeilig );
- serverFehler->setSchriftZ( s ? s->getThis() : 0 );
- serverFehler->setSchriftFarbe( 0xFFFFFFFF );
- serverFehler->setSchriftSize( 12 );
- serverFehler->setText( "" );
- serverFehler->setSize( 470, 60 );
- serverFehler->setPosition( 10, 130 );
- details->addMember( serverFehler->getThis() );
- update = new Knopf();
- update->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
- update->setText( "Update" );
- update->setSchriftZ( s ? s->getThis() : 0 );
- update->setMausEreignisParameter( this );
- update->setMausEreignis( patchServerUpdateMausEreignis );
- update->setSize( 80, 20 );
- update->setPosition( 400, 100 );
- details->addMember( update->getThis() );
- pausieren = new Knopf();
- pausieren->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
- pausieren->setText( "Pausieren" );
- pausieren->setSchriftZ( s ? s->getThis() : 0 );
- pausieren->setMausEreignisParameter( this );
- pausieren->setMausEreignis( patchServerPausierenMausEreignis );
- pausieren->setSize( 80, 20 );
- pausieren->setPosition( 10, 200 );
- details->addMember( pausieren->getThis() );
- stoppen = new Knopf();
- stoppen->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
- stoppen->setText( "Stoppen" );
- stoppen->setSchriftZ( s ? s->getThis() : 0 );
- stoppen->setMausEreignisParameter( this );
- stoppen->setMausEreignis( patchServerStoppenMausEreignis );
- stoppen->setSize( 80, 20 );
- stoppen->setPosition( 100, 200 );
- details->addMember( stoppen->getThis() );
- beenden = new Knopf();
- beenden->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
- beenden->setText( "Beenden" );
- beenden->setSchriftZ( s ? s->getThis() : 0 );
- beenden->setMausEreignisParameter( this );
- beenden->setMausEreignis( patchServerBeendenMausEreignis );
- beenden->setSize( 80, 20 );
- beenden->setPosition( 190, 200 );
- details->addMember( beenden->getThis() );
- terminieren = new Knopf();
- terminieren->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
- terminieren->setText( "Terminieren" );
- terminieren->setSchriftZ( s ? s->getThis() : 0 );
- terminieren->setMausEreignisParameter( this );
- terminieren->setMausEreignis( patchServerTerminierenMausEreignis );
- terminieren->setSize( 80, 20 );
- terminieren->setPosition( 280, 200 );
- details->addMember( terminieren->getThis() );
- setMaxClients = new Knopf();
- setMaxClients->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
- setMaxClients->setText( "set Max Clients" );
- setMaxClients->setSchriftZ( s ? s->getThis() : 0 );
- setMaxClients->setMausEreignisParameter( this );
- setMaxClients->setMausEreignis( patchServerSetMaxClientsMausEreignis );
- setMaxClients->setSize( 110, 20 );
- setMaxClients->setPosition( 370, 200 );
- details->addMember( setMaxClients->getThis() );
- updateT = new ObjTabelle();
- updateT->setStyle( ObjTabelle::Style::Sichtbar | ObjTabelle::Style::Erlaubt | ObjTabelle::Style::Rahmen | ObjTabelle::Style::VScroll );
- updateT->setVertikalKlickScroll( 10 );
- updateT->setMausEreignis( _ret1ME );
- updateT->setRahmenFarbe( 0xFFFFFFFF );
- updateT->setPosition( 5, 5 );
- updateT->setSize( 480, 190 );
- updateT->addSpalte( "Name" );
- updateT->addSpalte( "Status" );
- updateT->addSpalte( "Auswahl" );
- updateT->addSpalte( "Update" );
- updateT->setSpaltenBreite( 0, 340 );
- updateT->setSpaltenBreite( 1, 100 );
- updateT->setSpaltenBreite( 2, 22 );
- updateT->setSpaltenBreite( 3, 0 );
- updateT->addZeile( "Titel" );
- updateT->setZeilenHeight( 0, 20 );
- TextFeld * uTN = new TextFeld();
- uTN->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
- uTN->setSchriftZ( s ? s->getThis() : 0 );
- uTN->setSchriftFarbe( 0xFFFFFFFF );
- uTN->setSchriftSize( 12 );
- uTN->setRahmenFarbe( 0xFFFFFFFF );
- uTN->setText( "Name" );
- updateT->setZeichnungZ( 0, 0, uTN );
- TextFeld * uTS = new TextFeld();
- uTS->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
- uTS->setSchriftZ( s ? s->getThis() : 0 );
- uTS->setSchriftFarbe( 0xFFFFFFFF );
- uTS->setSchriftSize( 12 );
- uTS->setRahmenFarbe( 0xFFFFFFFF );
- uTS->setText( "Status" );
- updateT->setZeichnungZ( 1, 0, uTS );
- updateT->setMausEreignis( _ret1ME );
- updateT->setTastaturEreignis( _ret1TE );
- updateF->addMember( updateT->getThis() );
- updateStarten = new Knopf();
- updateStarten->setStyle( Knopf::Style::Normal );
- updateStarten->setText( "Start" );
- updateStarten->setSchriftZ( s ? s->getThis() : 0 );
- updateStarten->setMausEreignisParameter( this );
- updateStarten->setMausEreignis( patchServerUpdateStartenMausEreignis );
- updateStarten->setSize( 80, 20 );
- updateStarten->setPosition( 205, 200 );
- updateF->addMember( updateStarten->getThis() );
- obj = new Zeichnung();
- suchen = new PSSuche( this, msk->getThis() );
- getDetails = new PSDetails( this, msk->getThis() );
- updateTh = new PSUpdate( this, account->getThis() );
- if( rb )
- rb->release();
- ref = 1;
- }
- // Destruktor
- PatchServer::~PatchServer()
- {
- delete obj;
- if( psc )
- {
- psc->trenne();
- psc->release();
- }
- if( fenster )
- {
- fenster->removeMember( f );
- fenster->release();
- }
- account->release();
- msk->release();
- iD->release();
- f->release();
- liste->release();
- details->release();
- updateF->release();
- updateStarten->release();
- updateT->release();
- aktualisieren->release();
- weiter->release();
- zurück->release();
- update->release();
- pausieren->release();
- stoppen->release();
- beenden->release();
- terminieren->release();
- setMaxClients->release();
- serverId->release();
- serverName->release();
- serverIp->release();
- serverPort->release();
- serverAPort->release();
- serverClients->release();
- serverMaxClients->release();
- serverStatus->release();
- serverFehler->release();
- maxClients->release();
- suchen->release();
- getDetails->release();
- updateTh->release();
- tabelle->release();
- if( schrift )
- schrift->release();
- }
- // nicht constant
- void PatchServer::setFenster( Fenster * f )
- {
- if( fenster )
- fenster->release();
- this->f->setPosition( f->getBreite() / 2 - this->f->getBreite() / 2, f->getHeight() / 2 - this->f->getHeight() / 2 );
- fenster = f;
- }
- void PatchServer::setSichtbar( bool s )
- {
- sichtbar = s;
- if( s )
- {
- if( !suchen->isRunning() && liste->hatStyle( Fenster::Style::Sichtbar ) )
- {
- for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
- tabelle->removeZeile( 1 );
- weiter->removeStyle( Knopf::Style::Erlaubt );
- aktualisieren->removeStyle( Knopf::Style::Erlaubt );
- tabelle->removeStyle( ObjTabelle::Style::Erlaubt );
- suchen->start();
- }
- if( fenster )
- fenster->addMember( f->getThis() );
- }
- else if( fenster )
- fenster->removeMember( f );
- }
- void PatchServer::addServer( int id, char *name, char *ip, int port, int adminPort, char *status )
- {
- Text *txt = new Text();
- txt->append( id );
- tabelle->addZeile( txt->getText() );
- int y = tabelle->getZeilenNummer( txt->getText() );
- tabelle->setZeilenHeight( y, 20 );
- tabelle->setZeichnungZ( 0, y, getTabellenEintrag( txt->getText(), schrift ? schrift->getThis() : 0, 0xFFFFFFFF ) );
- tabelle->setZeichnungZ( 1, y, getTabellenEintrag( name, schrift ? schrift->getThis() : 0, 0xFFFFFFFF ) );
- tabelle->setZeichnungZ( 2, y, getTabellenEintrag( ip, schrift ? schrift->getThis() : 0, 0xFFFFFFFF ) );
- txt->setText( "" );
- txt->append( port );
- tabelle->setZeichnungZ( 3, y, getTabellenEintrag( txt->getText(), schrift ? schrift->getThis() : 0, 0xFFFFFFFF ) );
- txt->setText( "" );
- txt->append( adminPort );
- tabelle->setZeichnungZ( 4, y, getTabellenEintrag( txt->getText(), schrift ? schrift->getThis() : 0, 0xFFFFFFFF ) );
- txt->release();
- tabelle->setZeichnungZ( 5, y, getTabellenEintrag( status, schrift ? schrift->getThis() : 0, getColorFromStatus( status ) ) );
- KontrollKnopf *knopf = new KontrollKnopf();
- knopf->setStyle( KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer );
- knopf->loadData( "data/bilder/icons.ltdb" );
- knopf->setMausEreignisParameter( this );
- knopf->setMausEreignis( patchServerAuswahlKnopfMausEreignis );
- tabelle->setZeichnungZ( 6, y, knopf );
- }
- void PatchServer::setServerDetails( int id, char *name, char *ip, int port, int adminPort, int clients, int maxClients, int status, Text * error )
- {
- if( !psc )
- {
- psc = new PSKlient( ip, adminPort );
- psc->verbinden();
- psc->login( account->zName()->getText(), account->zPasswort()->getText() );
- updateTh->setServer( ip, adminPort );
- }
- if( !error )
- {
- serverId->setText( "ID: " );
- serverId->zText()->append( id );
- serverName->setText( "Name: " );
- serverName->zText()->append( name );
- serverIp->setText( "IP: " );
- serverIp->zText()->append( ip );
- serverPort->setText( "Port: " );
- serverPort->zText()->append( port );
- serverAPort->setText( "Admin Port: " );
- serverAPort->zText()->append( adminPort );
- serverClients->setText( "Clients: " );
- serverClients->zText()->append( clients );
- this->maxClients->setText( "" );
- this->maxClients->zText()->append( maxClients );
- serverFehler->setText( "" );
- serverFehler->setSchriftFarbe( 0xFFFFFFFF );
- switch( status )
- {
- case -2: // Unbekannt
- serverStatus->setText( "Status: Unbekannt" );
- serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFFFF8800 );
- break;
- case -1: // Unerreichbar
- serverStatus->setText( "Status: Unerreichbar" );
- serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFFFF0000 );
- break;
- case 0: // Offline
- serverStatus->setText( "Status: Offline" );
- serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFFFFFF00 );
- stoppen->setText( "Starten" );
- stoppen->addStyle( Knopf::Style::Erlaubt );
- beenden->addStyle( Knopf::Style::Erlaubt );
- terminieren->addStyle( Knopf::Style::Erlaubt );
- this->maxClients->addStyle( TextFeld::Style::Erlaubt );
- break;
- case 1: // Pausiert
- serverStatus->setText( "Status: Pausiert" );
- serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFF88FF00 );
- pausieren->setText( "Fortsetzen" );
- pausieren->addStyle( Knopf::Style::Erlaubt );
- stoppen->setText( "Stoppen" );
- stoppen->addStyle( Knopf::Style::Erlaubt );
- beenden->addStyle( Knopf::Style::Erlaubt );
- terminieren->addStyle( Knopf::Style::Erlaubt );
- this->maxClients->addStyle( TextFeld::Style::Erlaubt );
- break;
- case 2: // Online
- serverStatus->setText( "Status: Online" );
- serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFF00FF00 );
- pausieren->setText( "Pausieren" );
- pausieren->addStyle( Knopf::Style::Erlaubt );
- terminieren->addStyle( Knopf::Style::Erlaubt );
- this->maxClients->addStyle( TextFeld::Style::Erlaubt );
- break;
- case 3: // Veraltet
- serverStatus->setText( "Status: Veraltet" );
- serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFFB0FF00 );
- pausieren->setText( "Pausieren" );
- pausieren->addStyle( Knopf::Style::Erlaubt );
- update->addStyle( Knopf::Style::Erlaubt );
- beenden->addStyle( Knopf::Style::Erlaubt );
- terminieren->addStyle( Knopf::Style::Erlaubt );
- this->maxClients->addStyle( TextFeld::Style::Erlaubt );
- break;
- }
- aktualisieren->addStyle( Knopf::Style::Erlaubt );
- zurück->addStyle( Knopf::Style::Erlaubt );
- update->addStyle( Knopf::Style::Erlaubt );
- }
- else
- {
- serverId->setText( "ID: " );
- serverName->setText( "Name: " );
- serverIp->setText( "IP: " );
- serverPort->setText( "Port: " );
- serverAPort->setText( "APort: " );
- serverClients->setText( "Clients: " );
- this->maxClients->setText( "" );
- this->serverStatus->setText( "Status: " );
- aktualisieren->addStyle( Knopf::Style::Erlaubt );
- zurück->addStyle( Knopf::Style::Erlaubt );
- serverFehler->setText( error );
- }
- }
- void PatchServer::sucheAbgeschlossen()
- {
- aktualisieren->addStyle( Knopf::Style::Erlaubt );
- tabelle->addStyle( ObjTabelle::Style::Erlaubt );
- }
- void PatchServer::setUpdateProzent( int prozent, int gruppe )
- {
- for( int i = 0; i < updateT->getZeilenAnzahl(); i++ )
- {
- if( gruppe == TextZuInt( updateT->zZeilenName( i )->getText(), 10 ) )
- {
- if( updateT->zZeichnung( 3, i ) != obj )
- {
- updateT->lockZeichnung();
- FBalken *fb = new FBalken();
- fb->setStyle( FBalken::Style::Sichtbar | FBalken::Style::L_R | FBalken::Style::FFarbe | FBalken::Style::Hintergrund | FBalken::Style::Prozent | FBalken::Style::Rahmen | FBalken::Style::FRahmen );
- fb->setFBgFarbe( 0xFF00FF00 );
- fb->setHintergrundFarbe( 0xFFFFFFFF );
- fb->setSFarbe( 0xFF000000 );
- fb->setSchriftZ( schrift ? schrift->getThis() : 0 );
- fb->setSSize( 12 );
- fb->setRahmenBreite( 1 );
- fb->setRahmenFarbe( 0xFF55FF55 );
- fb->setFRFarbe( 0xFF55FF55 );
- fb->reset();
- fb->setAktionAnzahl( 100 );
- updateT->setZeichnungZ( 1, i, fb );
- updateT->setZeichnungZ( 3, i, obj->getThis() );
- updateT->unlockZeichnung();
- }
- ( (FBalken *)updateT->zZeichnung( 1, i ) )->reset();
- ( (FBalken *)updateT->zZeichnung( 1, i ) )->aktionPlus( prozent );
- return;
- }
- }
- }
- void PatchServer::setUpdateFertig( bool error, int gruppe )
- {
- if( !gruppe )
- { // gesamter Vorgang abgeschlossen
- aktualisieren->addStyle( Knopf::Style::Erlaubt );
- zurück->addStyle( Knopf::Style::Erlaubt );
- updateStarten->addStyle( Knopf::Style::Erlaubt );
- updateT->addStyle( ObjTabelle::Style::Erlaubt );
- MausEreignis me;
- me.id = ME_RLinks;
- if( b )
- b->lock();
- aktualisierenMausEreignis( 0, me );
- if( b )
- b->unlock();
- }
- else
- { // einzelner Schritt abgeschlossen
- for( int i = 0; i < updateT->getZeilenAnzahl(); i++ )
- {
- if( gruppe == TextZuInt( updateT->zZeilenName( i )->getText(), 10 ) )
- {
- updateT->lockZeichnung();
- TextFeld *uTS = new TextFeld();
- uTS->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
- uTS->setSchriftZ( schrift ? schrift->getThis() : 0 );
- uTS->setSchriftSize( 12 );
- uTS->setRahmenFarbe( 0xFFFFFFFF );
- if( error )
- {
- uTS->setText( "Fehler" );
- uTS->setSchriftFarbe( 0xFFFF0000 );
- }
- else
- {
- uTS->setText( "Aktuell" );
- uTS->setSchriftFarbe( 0xFF00FF00 );
- }
- updateT->setZeichnungZ( 1, i, uTS );
- updateT->setZeichnungZ( 3, i, 0 );
- updateT->unlockZeichnung();
- return;
- }
- }
- }
- }
- bool PatchServer::aktualisierenMausEreignis( void *o, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- if( liste->hatStyle( Fenster::Style::Sichtbar ) )
- {
- if( !suchen->isRunning() )
- {
- for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
- tabelle->removeZeile( 1 );
- weiter->removeStyle( Knopf::Style::Erlaubt );
- aktualisieren->removeStyle( Knopf::Style::Erlaubt );
- tabelle->removeStyle( ObjTabelle::Style::Erlaubt );
- suchen->start();
- }
- }
- else if( details->hatStyle( Fenster::Style::Sichtbar ) )
- {
- aktualisieren->removeStyle( Knopf::Style::Erlaubt );
- zurück->removeStyle( Knopf::Style::Erlaubt );
- update->removeStyle( Knopf::Style::Erlaubt );
- pausieren->removeStyle( Knopf::Style::Erlaubt );
- stoppen->removeStyle( Knopf::Style::Erlaubt );
- beenden->removeStyle( Knopf::Style::Erlaubt );
- terminieren->removeStyle( Knopf::Style::Erlaubt );
- setMaxClients->removeStyle( Knopf::Style::Erlaubt );
- maxClients->removeStyle( TextFeld::Style::Erlaubt );
- getDetails->start();
- }
- else if( updateF->hatStyle( Fenster::Style::Sichtbar ) )
- {
- int id = -1;
- for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
- {
- if( ( (KontrollKnopf *)tabelle->zZeichnung( 6, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
- {
- id = TextZuInt( tabelle->zZeilenName( i )->getText(), 10 );
- break;
- }
- }
- Array< FileGroupInfo * > list;
- if( psc->getFileGroupInfoList( &list ) )
- {
- for( int i = 1; i < updateT->getZeilenAnzahl(); )
- updateT->removeZeile( i );
- int anz = list.getEintragAnzahl();
- for( int i = 0; i < anz; i++ )
- {
- FileGroupInfo *info = list.get( i );
- updateT->addZeile( new Text( info->id ) );
- TextFeld *uTN = new TextFeld();
- uTN->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::VCenter );
- uTN->setSchriftZ( schrift ? schrift->getThis() : 0 );
- uTN->setSchriftFarbe( 0xFFFFFFFF );
- uTN->setSchriftSize( 12 );
- uTN->setRahmenFarbe( 0xFFFFFFFF );
- uTN->setText( info->name );
- updateT->setZeichnungZ( 0, i + 1, uTN );
- TextFeld * uTS = new TextFeld();
- uTS->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
- uTS->setRahmenFarbe( 0xFFFFFFFF );
- uTS->setSchriftZ( schrift ? schrift->getThis() : 0 );
- uTS->setSchriftSize( 12 );
- if( info->status.istGleich( "Fehlt" ) )
- uTS->setSchriftFarbe( 0xFFFF0000 );
- if( info->status.istGleich( "Aktuell" ) )
- uTS->setSchriftFarbe( 0xFF00FF00 );
- if( info->status.istGleich( "Veraltet" ) )
- uTS->setSchriftFarbe( 0xFFFFFF00 );
- if( info->status.istGleich( "Update" ) )
- uTS->setSchriftFarbe( 0xFFFFFFFF );
- uTS->setText( info->status.getText() );
- updateT->setZeichnungZ( 1, i + 1, uTS );
- if( info->status.istGleich( "Veraltet" ) || info->status.istGleich( "Fehlt" ) )
- {
- KontrollKnopf *auswahl = new KontrollKnopf();
- auswahl->setStyle( KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer | KontrollKnopf::Style::Rahmen );
- auswahl->loadData( "data/bilder/icons.ltdb" );
- auswahl->setMausEreignisParameter( this );
- auswahl->setMausEreignis( patchServerAuswahlKnopfMausEreignis );
- auswahl->setRahmenFarbe( 0xFFFFFFFF );
- updateT->setZeichnungZ( 2, i + 1, auswahl );
- }
- delete info;
- }
- }
- else
- WMessageBox( 0, new Text( "Fehler" ), new Text( psc->getLetzterFehler() ), MB_ICONERROR );
- }
- }
- return 1;
- }
- bool PatchServer::auswahlKnopfMausEreignis( void *o, MausEreignis me )
- {
- if( !o )
- return 0;
- if( me.id == ME_RLinks )
- {
- if( liste->hatStyle( Fenster::Style::Sichtbar ) )
- {
- for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
- ( (KontrollKnopf *)tabelle->zZeichnung( 6, i ) )->removeStyle( KontrollKnopf::Style::Selected );
- weiter->addStyle( Knopf::Style::Erlaubt );
- }
- }
- return 1;
- }
- bool PatchServer::weiterMausEreignis( void *o, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- liste->removeStyle( Fenster::Style::Sichtbar );
- details->addStyle( Fenster::Style::Sichtbar );
- aktualisieren->removeStyle( Knopf::Style::Erlaubt );
- zurück->removeStyle( Knopf::Style::Erlaubt );
- update->removeStyle( Knopf::Style::Erlaubt );
- pausieren->removeStyle( Knopf::Style::Erlaubt );
- stoppen->removeStyle( Knopf::Style::Erlaubt );
- beenden->removeStyle( Knopf::Style::Erlaubt );
- terminieren->removeStyle( Knopf::Style::Erlaubt );
- setMaxClients->removeStyle( Knopf::Style::Erlaubt );
- maxClients->removeStyle( TextFeld::Style::Erlaubt );
- int id = -1;
- for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
- {
- if( ( (KontrollKnopf *)tabelle->zZeichnung( 6, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
- {
- id = TextZuInt( tabelle->zZeilenName( i )->getText(), 10 );
- break;
- }
- }
- getDetails->setServerId( id );
- getDetails->start();
- }
- return 1;
- }
- bool PatchServer::zurückMausEreignis( void *o, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- if( details->hatStyle( Fenster::Style::Sichtbar ) )
- {
- details->removeStyle( Fenster::Style::Sichtbar );
- liste->addStyle( Fenster::Style::Sichtbar );
- if( !suchen->isRunning() )
- {
- for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
- tabelle->removeZeile( 1 );
- weiter->removeStyle( Knopf::Style::Erlaubt );
- zurück->removeStyle( Knopf::Style::Erlaubt );
- aktualisieren->removeStyle( Knopf::Style::Erlaubt );
- suchen->start();
- }
- if( psc )
- {
- psc->trenne();
- psc = (PSKlient *)psc->release();
- }
- }
- else if( updateF->hatStyle( Fenster::Style::Sichtbar ) )
- {
- updateF->removeStyle( Fenster::Style::Sichtbar );
- details->addStyle( Fenster::Style::Sichtbar );
- aktualisierenMausEreignis( 0, me );
- }
- }
- return 1;
- }
- bool PatchServer::updateMausEreignis( void *o, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- zurück->addStyle( Knopf::Style::Erlaubt );
- weiter->removeStyle( Knopf::Style::Erlaubt );
- details->removeStyle( Fenster::Style::Sichtbar );
- updateF->addStyle( Fenster::Style::Sichtbar );
- aktualisieren->addStyle( Knopf::Style::Erlaubt );
- aktualisierenMausEreignis( 0, me );
- }
- return 1;
- }
- bool PatchServer::pausierenMausEreignis( void *o, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- if( pausieren->zText()->istGleich( "Pausieren" ) )
- {
- if( psc->pause() )
- {
- aktualisieren->removeStyle( Knopf::Style::Erlaubt );
- zurück->removeStyle( Knopf::Style::Erlaubt );
- update->removeStyle( Knopf::Style::Erlaubt );
- pausieren->removeStyle( Knopf::Style::Erlaubt );
- stoppen->removeStyle( Knopf::Style::Erlaubt );
- beenden->removeStyle( Knopf::Style::Erlaubt );
- terminieren->removeStyle( Knopf::Style::Erlaubt );
- setMaxClients->removeStyle( Knopf::Style::Erlaubt );
- maxClients->removeStyle( TextFeld::Style::Erlaubt );
- getDetails->start();
- }
- else
- serverFehler->setText( psc->getLetzterFehler() );
- }
- else
- {
- if( psc->fortsetzen() )
- {
- aktualisieren->removeStyle( Knopf::Style::Erlaubt );
- zurück->removeStyle( Knopf::Style::Erlaubt );
- update->removeStyle( Knopf::Style::Erlaubt );
- pausieren->removeStyle( Knopf::Style::Erlaubt );
- stoppen->removeStyle( Knopf::Style::Erlaubt );
- beenden->removeStyle( Knopf::Style::Erlaubt );
- terminieren->removeStyle( Knopf::Style::Erlaubt );
- setMaxClients->removeStyle( Knopf::Style::Erlaubt );
- maxClients->removeStyle( TextFeld::Style::Erlaubt );
- getDetails->start();
- }
- else
- serverFehler->setText( psc->getLetzterFehler() );
- }
- }
- return 1;
- }
- bool PatchServer::stoppenMausEreignis( void *o, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- if( stoppen->zText()->istGleich( "Stoppen" ) )
- {
- if( psc->stop() )
- {
- aktualisieren->removeStyle( Knopf::Style::Erlaubt );
- zurück->removeStyle( Knopf::Style::Erlaubt );
- update->removeStyle( Knopf::Style::Erlaubt );
- pausieren->removeStyle( Knopf::Style::Erlaubt );
- stoppen->removeStyle( Knopf::Style::Erlaubt );
- beenden->removeStyle( Knopf::Style::Erlaubt );
- terminieren->removeStyle( Knopf::Style::Erlaubt );
- setMaxClients->removeStyle( Knopf::Style::Erlaubt );
- maxClients->removeStyle( TextFeld::Style::Erlaubt );
- getDetails->start();
- }
- else
- serverFehler->setText( psc->getLetzterFehler() );
- }
- else
- {
- if( psc->start() )
- {
- aktualisieren->removeStyle( Knopf::Style::Erlaubt );
- zurück->removeStyle( Knopf::Style::Erlaubt );
- update->removeStyle( Knopf::Style::Erlaubt );
- pausieren->removeStyle( Knopf::Style::Erlaubt );
- stoppen->removeStyle( Knopf::Style::Erlaubt );
- beenden->removeStyle( Knopf::Style::Erlaubt );
- terminieren->removeStyle( Knopf::Style::Erlaubt );
- setMaxClients->removeStyle( Knopf::Style::Erlaubt );
- maxClients->removeStyle( TextFeld::Style::Erlaubt );
- getDetails->start();
- }
- else
- serverFehler->setText( psc->getLetzterFehler() );
- }
- }
- return 1;
- }
- bool PatchServer::beendenMausEreignis( void *o, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- if( psc->beenden() )
- {
- aktualisieren->removeStyle( Knopf::Style::Erlaubt );
- zurück->removeStyle( Knopf::Style::Erlaubt );
- update->removeStyle( Knopf::Style::Erlaubt );
- pausieren->removeStyle( Knopf::Style::Erlaubt );
- stoppen->removeStyle( Knopf::Style::Erlaubt );
- beenden->removeStyle( Knopf::Style::Erlaubt );
- terminieren->removeStyle( Knopf::Style::Erlaubt );
- setMaxClients->removeStyle( Knopf::Style::Erlaubt );
- maxClients->removeStyle( TextFeld::Style::Erlaubt );
- zurückMausEreignis( 0, me );
- }
- else
- serverFehler->setText( psc->getLetzterFehler() );
- }
- return 1;
- }
- bool PatchServer::terminierenMausEreignis( void *o, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- if( psc->terminieren() )
- {
- aktualisieren->removeStyle( Knopf::Style::Erlaubt );
- zurück->removeStyle( Knopf::Style::Erlaubt );
- update->removeStyle( Knopf::Style::Erlaubt );
- pausieren->removeStyle( Knopf::Style::Erlaubt );
- stoppen->removeStyle( Knopf::Style::Erlaubt );
- beenden->removeStyle( Knopf::Style::Erlaubt );
- terminieren->removeStyle( Knopf::Style::Erlaubt );
- setMaxClients->removeStyle( Knopf::Style::Erlaubt );
- maxClients->removeStyle( TextFeld::Style::Erlaubt );
- zurückMausEreignis( 0, me );
- }
- else
- serverFehler->setText( psc->getLetzterFehler() );
- }
- return 1;
- }
- bool PatchServer::setMaxClientsMausEreignis( void *o, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- if( psc->setMaxTasks( TextZuInt( maxClients->zText()->getText(), 10 ) ) )
- {
- aktualisieren->removeStyle( Knopf::Style::Erlaubt );
- zurück->removeStyle( Knopf::Style::Erlaubt );
- update->removeStyle( Knopf::Style::Erlaubt );
- pausieren->removeStyle( Knopf::Style::Erlaubt );
- stoppen->removeStyle( Knopf::Style::Erlaubt );
- beenden->removeStyle( Knopf::Style::Erlaubt );
- terminieren->removeStyle( Knopf::Style::Erlaubt );
- setMaxClients->removeStyle( Knopf::Style::Erlaubt );
- maxClients->removeStyle( TextFeld::Style::Erlaubt );
- getDetails->start();
- }
- else
- serverFehler->setText( psc->getLetzterFehler() );
- }
- return 1;
- }
- bool PatchServer::updateStartenMausEreignis( void *o, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- int id = -1;
- for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
- {
- if( ( (KontrollKnopf *)tabelle->zZeichnung( 6, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
- {
- id = TextZuInt( tabelle->zZeilenName( i )->getText(), 10 );
- break;
- }
- }
- if( id > 0 )
- {
- int anzahl = 0;
- Array< int > *gruppen = new Array< int >();
- for( int i = 1; i < updateT->getZeilenAnzahl(); i++ )
- {
- if( updateT->zZeichnung( 2, i ) && ( (KontrollKnopf *)updateT->zZeichnung( 2, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
- {
- int gId = TextZuInt( updateT->zZeilenName( i )->getText(), 10 );
- gruppen->set( gId, anzahl );
- anzahl++;
- }
- }
- if( anzahl )
- {
- updateStarten->removeStyle( Knopf::Style::Erlaubt );
- zurück->removeStyle( Knopf::Style::Erlaubt );
- aktualisieren->removeStyle( Knopf::Style::Erlaubt );
- updateT->removeStyle( ObjTabelle::Style::Erlaubt );
- updateTh->setUpdateListe( anzahl, gruppen );
- updateTh->start();
- }
- gruppen->release();
- }
- }
- return 1;
- }
- bool PatchServer::maxClientsTastaturEreignis( void *o, TastaturEreignis te )
- {
- bool ret = 0;
- if( te.taste >= '0' && te.taste <= '9' )
- ret = 1;
- if( te.taste == T_Entf || te.taste == T_BackSpace )
- ret = 1;
- if( te.taste == T_Links || te.taste == T_Rechts )
- ret = 1;
- if( ret )
- setMaxClients->addStyle( Knopf::Style::Erlaubt );
- return ret;
- }
- void PatchServer::updateAll()
- {
- std::cout << "Searching for Patch Servers ...\n";
- while( suchen->isRunning() )
- {
- Sleep( 100 );
- }
- MausEreignis me;
- me.id = ME_RLinks;
- me.verarbeitet = 0;
- for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
- {
- if( ( (TextFeld *)tabelle->zZeichnung( 5, i ) )->zText()->istGleich( "Veraltet" ) )
- {
- std::cout << "Request details from server " << ( (TextFeld *)tabelle->zZeichnung( 0, i ) )->zText()->getText() << " ...\n";
- Zeichnung *z = tabelle->zZeichnung( 6, i );
- me.mx = z->getX();
- me.my = z->getY();
- me.verarbeitet = 0;
- z->doPublicMausEreignis( me );
- me.verarbeitet = 0;
- weiterMausEreignis( weiter, me );
- while( getDetails->isRunning() )
- {
- Sleep( 100 );
- }
- updateMausEreignis( update, me );
- for( int j = 1; j < updateT->getZeilenAnzahl(); j++ )
- {
- if( ( (TextFeld *)updateT->zZeichnung( 1, j ) )->zText()->istGleich( "Veraltet" ) )
- {
- std::cout << "Update group " << ( (TextFeld *)updateT->zZeichnung( 0, j ) )->zText()->getText() << " ... ";
- Zeichnung *z = updateT->zZeichnung( 2, j );
- me.mx = z->getX();
- me.my = z->getY();
- me.verarbeitet = 0;
- z->doPublicMausEreignis( me );
- me.verarbeitet = 0;
- updateStartenMausEreignis( updateStarten, me );
- while( updateTh->isRunning() )
- {
- Sleep( 100 );
- }
- std::cout << ( (TextFeld *)updateT->zZeichnung( 1, j ) )->zText()->getText() << "\n";
- j = 0;
- }
- }
- zurückMausEreignis( zurück, me );
- while( getDetails->isRunning() )
- {
- Sleep( 100 );
- }
- zurückMausEreignis( zurück, me );
- while( suchen->isRunning() )
- {
- Sleep( 100 );
- }
- i = 0;
- }
- }
- std::cout << "Everything is up to date!\n";
- }
- // constant
- // Reference Counting
- Abschnitt * PatchServer::getThis()
- {
- ref++;
- return this;
- }
- Abschnitt *PatchServer::release()
- {
- ref--;
- if( !ref )
- delete this;
- return 0;
- }
- // Ereignisse
- bool patchServerAktualisierenMausEreignis( void *p, void *o, MausEreignis me )
- {
- if( !p )
- return 0;
- return ( (PatchServer *)p )->aktualisierenMausEreignis( o, me );
- }
- bool patchServerAuswahlKnopfMausEreignis( void *p, void *o, MausEreignis me )
- {
- if( !p )
- return 0;
- return ( (PatchServer *)p )->auswahlKnopfMausEreignis( o, me );
- }
- bool patchServerWeiterMausEreignis( void *p, void *o, MausEreignis me )
- {
- if( !p )
- return 0;
- return ( (PatchServer *)p )->weiterMausEreignis( o, me );
- }
- bool patchServerZurückMausEreignis( void *p, void *o, MausEreignis me )
- {
- if( !p )
- return 0;
- return ( (PatchServer *)p )->zurückMausEreignis( o, me );
- }
- bool patchServerUpdateMausEreignis( void *p, void *o, MausEreignis me )
- {
- if( !p )
- return 0;
- return ( (PatchServer *)p )->updateMausEreignis( o, me );
- }
- bool patchServerPausierenMausEreignis( void *p, void *o, MausEreignis me )
- {
- if( !p )
- return 0;
- return ( (PatchServer *)p )->pausierenMausEreignis( o, me );
- }
- bool patchServerStoppenMausEreignis( void *p, void *o, MausEreignis me )
- {
- if( !p )
- return 0;
- return ( (PatchServer *)p )->stoppenMausEreignis( o, me );
- }
- bool patchServerBeendenMausEreignis( void *p, void *o, MausEreignis me )
- {
- if( !p )
- return 0;
- return ( (PatchServer *)p )->beendenMausEreignis( o, me );
- }
- bool patchServerTerminierenMausEreignis( void *p, void *o, MausEreignis me )
- {
- if( !p )
- return 0;
- return ( (PatchServer *)p )->terminierenMausEreignis( o, me );
- }
- bool patchServerSetMaxClientsMausEreignis( void *p, void *o, MausEreignis me )
- {
- if( !p )
- return 0;
- return ( (PatchServer *)p )->setMaxClientsMausEreignis( o, me );
- }
- bool patchServerUpdateStartenMausEreignis( void *p, void *o, MausEreignis me )
- {
- if( !p )
- return 0;
- return ( (PatchServer *)p )->updateStartenMausEreignis( o, me );
- }
- bool patchServerMaxClientsTastaturEreignis( void *p, void *o, TastaturEreignis te )
- {
- if( !p )
- return 0;
- return ( (PatchServer *)p )->maxClientsTastaturEreignis( o, te );
- }
|