MeOS version 3.5.860
This commit is contained in:
parent
5327deebbb
commit
b53348f17f
@ -987,20 +987,46 @@ void PunchMachine::process(gdioutput &gdi, oEvent *oe, AutoSyncType ast)
|
|||||||
{
|
{
|
||||||
#ifndef MEOSDB
|
#ifndef MEOSDB
|
||||||
SICard sic(ConvertedTimeStatus::Hour24);
|
SICard sic(ConvertedTimeStatus::Hour24);
|
||||||
oe->generateTestCard(sic);
|
|
||||||
SportIdent &si = TabSI::getSI(gdi);
|
SportIdent &si = TabSI::getSI(gdi);
|
||||||
|
|
||||||
|
if (radio == 0) {
|
||||||
|
oe->generateTestCard(sic);
|
||||||
if (!sic.empty()) {
|
if (!sic.empty()) {
|
||||||
if (!radio) si.addCard(sic);
|
if (!radio) si.addCard(sic);
|
||||||
}
|
}
|
||||||
else gdi.addInfoBox("", L"Failed to generate card.", interval * 2);
|
else gdi.addInfoBox("", L"Failed to generate card.", interval * 2);
|
||||||
|
}
|
||||||
if (radio && !sic.empty()) {
|
else {
|
||||||
pRunner r=oe->getRunnerByCardNo(sic.CardNumber, 0, false);
|
SICard sic(ConvertedTimeStatus::Hour24);
|
||||||
if (r && r->getCardNo()) {
|
vector<pRunner> rr;
|
||||||
|
oe->getRunners(0, 0, rr);
|
||||||
|
vector<pRunner> cCand;
|
||||||
|
vector<pFreePunch> pp;
|
||||||
|
for (auto r : rr) {
|
||||||
|
if (r->getStatus() == StatusUnknown && r->startTimeAvailable()) {
|
||||||
|
auto pc = r->getCourse(false);
|
||||||
|
if (radio < 10 || pc->hasControlCode(radio)) {
|
||||||
|
pp.clear();
|
||||||
|
oe->getPunchesForRunner(r->getId(), pp);
|
||||||
|
bool hit = false;
|
||||||
|
for (auto p : pp) {
|
||||||
|
if (p->getTypeCode() == radio)
|
||||||
|
hit = true;
|
||||||
|
}
|
||||||
|
if (!hit)
|
||||||
|
cCand.push_back(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (cCand.size() > 0) {
|
||||||
|
int ix = rand() % cCand.size();
|
||||||
|
pRunner r = cCand[ix];
|
||||||
|
sic.convertedTime = ConvertedTimeStatus::Done;
|
||||||
sic.CardNumber = r->getCardNo();
|
sic.CardNumber = r->getCardNo();
|
||||||
sic.punchOnly = true;
|
sic.punchOnly = true;
|
||||||
sic.nPunch = 1;
|
sic.nPunch = 1;
|
||||||
sic.Punch[0].Code = radio;
|
sic.Punch[0].Code = radio;
|
||||||
|
sic.Punch[0].Time = 600 + rand() % 1200 + r->getStartTime();
|
||||||
si.addCard(sic);
|
si.addCard(sic);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -432,7 +432,7 @@ int TabClass::multiCB(gdioutput &gdi, int type, void *data)
|
|||||||
wstring st=gdi.getText("StartTime");
|
wstring st=gdi.getText("StartTime");
|
||||||
|
|
||||||
int nst = oe->convertAbsoluteTime(st);
|
int nst = oe->convertAbsoluteTime(st);
|
||||||
if (warnDrawStartTime(gdi, nst)) {
|
if (nst >= 0 && warnDrawStartTime(gdi, nst, true)) {
|
||||||
nst = 3600;
|
nst = 3600;
|
||||||
st = oe->getAbsTime(nst);
|
st = oe->getAbsTime(nst);
|
||||||
}
|
}
|
||||||
@ -876,9 +876,11 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
specs[ci.classId].push_back(cds);
|
specs[ci.classId].push_back(cds);
|
||||||
|
|
||||||
|
maxST = max(cds.firstStart + drawInfo.nFields * drawInfo.baseInterval * ci.interval, maxST);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (warnDrawStartTime(gdi, maxST))
|
if (warnDrawStartTime(gdi, maxST, false))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
for (map<int, vector<ClassDrawSpecification> >::iterator it = specs.begin();
|
for (map<int, vector<ClassDrawSpecification> >::iterator it = specs.begin();
|
||||||
@ -1409,7 +1411,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data)
|
|||||||
else if (bi.id=="DoDrawBefore")
|
else if (bi.id=="DoDrawBefore")
|
||||||
dtype = oEvent::remainingBefore;
|
dtype = oEvent::remainingBefore;
|
||||||
else {
|
else {
|
||||||
if (warnDrawStartTime(gdi, t))
|
if (warnDrawStartTime(gdi, t, false))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
//bool pairwise = false;
|
//bool pairwise = false;
|
||||||
@ -4181,11 +4183,14 @@ void TabClass::setLockForkingState(gdioutput &gdi, bool poolState, bool lockStat
|
|||||||
|
|
||||||
bool TabClass::warnDrawStartTime(gdioutput &gdi, const wstring &firstStart) {
|
bool TabClass::warnDrawStartTime(gdioutput &gdi, const wstring &firstStart) {
|
||||||
int st = oe->getRelativeTime(firstStart);
|
int st = oe->getRelativeTime(firstStart);
|
||||||
return warnDrawStartTime(gdi, st);
|
return warnDrawStartTime(gdi, st, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TabClass::warnDrawStartTime(gdioutput &gdi, int time) {
|
bool TabClass::warnDrawStartTime(gdioutput &gdi, int time, bool absTime) {
|
||||||
if (!hasWarnedStartTime && time > 3600 * 8 && !oe->useLongTimes()) {
|
if (absTime)
|
||||||
|
time = oe->getRelativeTime(formatTimeHMS(time));
|
||||||
|
|
||||||
|
if (!hasWarnedStartTime && (time > 3600 * 11 && !oe->useLongTimes())) {
|
||||||
bool res = gdi.ask(L"warn:latestarttime#" + itow(time/3600));
|
bool res = gdi.ask(L"warn:latestarttime#" + itow(time/3600));
|
||||||
if (res)
|
if (res)
|
||||||
hasWarnedStartTime = true;
|
hasWarnedStartTime = true;
|
||||||
|
|||||||
@ -82,7 +82,7 @@ class TabClass :
|
|||||||
|
|
||||||
void pursuitDialog(gdioutput &gdi);
|
void pursuitDialog(gdioutput &gdi);
|
||||||
|
|
||||||
bool warnDrawStartTime(gdioutput &gdi, int time);
|
bool warnDrawStartTime(gdioutput &gdi, int time, bool absTime);
|
||||||
bool warnDrawStartTime(gdioutput &gdi, const wstring &firstStart);
|
bool warnDrawStartTime(gdioutput &gdi, const wstring &firstStart);
|
||||||
|
|
||||||
void static clearPage(gdioutput &gdi, bool autoRefresh);
|
void static clearPage(gdioutput &gdi, bool autoRefresh);
|
||||||
|
|||||||
@ -1710,6 +1710,13 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data)
|
|||||||
else if (bi.id=="DoFreeImport") {
|
else if (bi.id=="DoFreeImport") {
|
||||||
fi.addEntries(oe, entries);
|
fi.addEntries(oe, entries);
|
||||||
entryText.clear();
|
entryText.clear();
|
||||||
|
|
||||||
|
// Update qualification/final
|
||||||
|
vector<pClass> cls;
|
||||||
|
oe->getClasses(cls, false);
|
||||||
|
for (pClass c : cls) {
|
||||||
|
c->updateFinalClasses(0, false);
|
||||||
|
}
|
||||||
loadPage(gdi);
|
loadPage(gdi);
|
||||||
}
|
}
|
||||||
else if (bi.id=="Startlist") {
|
else if (bi.id=="Startlist") {
|
||||||
@ -2377,7 +2384,8 @@ void TabCompetition::loadAboutPage(gdioutput &gdi) const
|
|||||||
"\n\nDanish Translation by Michael Leth Jess and Chris Bagge"
|
"\n\nDanish Translation by Michael Leth Jess and Chris Bagge"
|
||||||
"\n\nRussian Translation by Paul A. Kazakov and Albert Salihov"
|
"\n\nRussian Translation by Paul A. Kazakov and Albert Salihov"
|
||||||
"\n\nOriginal French Translation by Jerome Monclard"
|
"\n\nOriginal French Translation by Jerome Monclard"
|
||||||
"\n\nAdaption to French conditions and extended translation by Pierre Gaufillet");
|
"\n\nAdaption to French conditions and extended translation by Pierre Gaufillet"
|
||||||
|
"\n\nCzech Translation by Marek Kustka");
|
||||||
|
|
||||||
gdi.dropLine();
|
gdi.dropLine();
|
||||||
gdi.addString("", 0, "Det här programmet levereras utan någon som helst garanti. Programmet är ");
|
gdi.addString("", 0, "Det här programmet levereras utan någon som helst garanti. Programmet är ");
|
||||||
@ -2514,7 +2522,7 @@ bool TabCompetition::loadPage(gdioutput &gdi)
|
|||||||
gdi.dropLine(1.2);
|
gdi.dropLine(1.2);
|
||||||
gdi.addCheckbox("LongTimes", "Aktivera stöd för tider över 24 timmar", CompetitionCB, oe->useLongTimes());
|
gdi.addCheckbox("LongTimes", "Aktivera stöd för tider över 24 timmar", CompetitionCB, oe->useLongTimes());
|
||||||
|
|
||||||
if (oe->isClient()) {
|
if (false && oe->isClient()) {
|
||||||
gdi.popX();
|
gdi.popX();
|
||||||
gdi.disableInput("ZeroTime");
|
gdi.disableInput("ZeroTime");
|
||||||
gdi.disableInput("LongTimes");
|
gdi.disableInput("LongTimes");
|
||||||
@ -3502,6 +3510,12 @@ TabCompetition::FlowOperation TabCompetition::saveEntries(gdioutput &gdi, bool r
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update qualification/final
|
||||||
|
vector<pClass> cls;
|
||||||
|
oe->getClasses(cls, false);
|
||||||
|
for (pClass c : cls) {
|
||||||
|
c->updateFinalClasses(0, false);
|
||||||
|
}
|
||||||
return FlowContinue;
|
return FlowContinue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1124,7 +1124,7 @@ wstring TabCourse::encodeCourse(const wstring &in, bool firstStart, bool lastFin
|
|||||||
out.reserve(in.length() * 2);
|
out.reserve(in.length() * 2);
|
||||||
wstring bf;
|
wstring bf;
|
||||||
for (size_t i = 0; i < newC.size(); ++i) {
|
for (size_t i = 0; i < newC.size(); ++i) {
|
||||||
if (i == 0) {
|
if (i == 0 && (newC.size() > 1 || firstStart)) {
|
||||||
out += lang.tl("Start");
|
out += lang.tl("Start");
|
||||||
if (firstStart)
|
if (firstStart)
|
||||||
out += L"(" + itow(newC[i]) + L")";
|
out += L"(" + itow(newC[i]) + L")";
|
||||||
@ -1141,6 +1141,9 @@ wstring TabCourse::encodeCourse(const wstring &in, bool firstStart, bool lastFin
|
|||||||
out += dash;
|
out += dash;
|
||||||
|
|
||||||
if (i+1 == newC.size()) {
|
if (i+1 == newC.size()) {
|
||||||
|
if (i == 0) {
|
||||||
|
out = lang.tl("Start") + dash;
|
||||||
|
}
|
||||||
if (lastFinish)
|
if (lastFinish)
|
||||||
out += lang.tl("Mål") + L"(" + itow(newC[i]) + L")";
|
out += lang.tl("Mål") + L"(" + itow(newC[i]) + L")";
|
||||||
else
|
else
|
||||||
|
|||||||
@ -111,9 +111,6 @@ void TabSI::logCard(gdioutput &gdi, const SICard &card)
|
|||||||
extern SportIdent *gSI;
|
extern SportIdent *gSI;
|
||||||
extern pEvent gEvent;
|
extern pEvent gEvent;
|
||||||
|
|
||||||
void LoadRunnerPage(gdioutput &gdi);
|
|
||||||
|
|
||||||
|
|
||||||
int SportIdentCB(gdioutput *gdi, int type, void *data) {
|
int SportIdentCB(gdioutput *gdi, int type, void *data) {
|
||||||
TabSI &tsi = dynamic_cast<TabSI &>(*gdi->getTabs().get(TSITab));
|
TabSI &tsi = dynamic_cast<TabSI &>(*gdi->getTabs().get(TSITab));
|
||||||
|
|
||||||
@ -1580,17 +1577,6 @@ bool TabSI::loadPage(gdioutput &gdi) {
|
|||||||
|
|
||||||
gdi.addInput("C" + itos(i+1), itow(c), 3, 0, L"#C" + itow(i+1));
|
gdi.addInput("C" + itos(i+1), itow(c), 3, 0, L"#C" + itow(i+1));
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
gdi.addInput("C1", "33", 5, 0, "#C1");
|
|
||||||
gdi.addInput("C2", "34", 5, 0, "#C2");
|
|
||||||
gdi.addInput("C3", "45", 5, 0, "#C3");
|
|
||||||
gdi.addInput("C4", "50", 5, 0, "#C4");
|
|
||||||
gdi.addInput("C5", "61", 5, 0, "#C5");
|
|
||||||
gdi.addInput("C6", "62", 5, 0, "#C6");
|
|
||||||
gdi.addInput("C7", "67", 5, 0, "#C7");
|
|
||||||
|
|
||||||
gdi.addInput("C8", "100", 5, 0, "#C8");
|
|
||||||
*/
|
|
||||||
|
|
||||||
gdi.dropLine();
|
gdi.dropLine();
|
||||||
gdi.addButton("Save", "Bricka", SportIdentCB);
|
gdi.addButton("Save", "Bricka", SportIdentCB);
|
||||||
@ -3867,6 +3853,19 @@ void TabSI::handleAutoComplete(gdioutput &gdi, AutoCompleteInfo &info) {
|
|||||||
directEntryGUI.updateFees(gdi, cls, getThisYear() - year);
|
directEntryGUI.updateFees(gdi, cls, getThisYear() - year);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (r) {
|
||||||
|
if (gdi.hasField("Club") && r->dbe().clubNo) {
|
||||||
|
if (gdi.getText("Club").empty()) {
|
||||||
|
auto pclub = oe->getRunnerDatabase().getClub(r->dbe().clubNo);
|
||||||
|
if (pclub)
|
||||||
|
gdi.setText("Club", pclub->getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (gdi.hasField("CardNo") && r->dbe().cardNo) {
|
||||||
|
if (gdi.getText("CardNo").empty())
|
||||||
|
gdi.setText("CardNo", r->dbe().cardNo);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gdi.clearAutoComplete("");
|
gdi.clearAutoComplete("");
|
||||||
|
|||||||
@ -40,6 +40,7 @@ class TabSI : public TabBase, AutoCompleteHandler {
|
|||||||
ModeCardData
|
ModeCardData
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void setMode(SIMode m) { mode = m; }
|
||||||
private:
|
private:
|
||||||
/** Try to automatcally assign a class to runner (if none is given)
|
/** Try to automatcally assign a class to runner (if none is given)
|
||||||
Return true if runner has a class on exist */
|
Return true if runner has a class on exist */
|
||||||
|
|||||||
@ -1 +0,0 @@
|
|||||||
encoding = EASTEUROPE
|
|
||||||
@ -1 +0,0 @@
|
|||||||
encoding = HEBREW
|
|
||||||
2316
code/czech.lng
Normal file
2316
code/czech.lng
Normal file
File diff suppressed because it is too large
Load Diff
182
code/danish.lng
182
code/danish.lng
@ -16,6 +16,39 @@
|
|||||||
[Radera] = [Slet]
|
[Radera] = [Slet]
|
||||||
[Uppdaterad anmälan] = [Opdateret tilmelding]
|
[Uppdaterad anmälan] = [Opdateret tilmelding]
|
||||||
[VARNING] ingen/okänd = [ADVARSEL] ingen/ukendt
|
[VARNING] ingen/okänd = [ADVARSEL] ingen/ukendt
|
||||||
|
ÅÅÅÅ-MM-DD = ÅÅÅÅ-MM-DD
|
||||||
|
Åldersfilter = Aldersfilter
|
||||||
|
Åldersgräns äldre = Aldersgrænse ældre
|
||||||
|
Åldersgräns ungdom = Aldersgrænse ungdom
|
||||||
|
Åldersgränser, reducerad anmälningsavgift = Aldersgrænser, reduceret løbsafgift
|
||||||
|
Ångra = Fortryd
|
||||||
|
Återansluten mot databasen, tävlingen synkroniserad = Gentilsluttet til databasen, løbet synkroniseret
|
||||||
|
Återbud = Slet tilmelding
|
||||||
|
Återbud[status] = Afbud
|
||||||
|
Återgå = Gå tilbage
|
||||||
|
Återskapa = Gendan
|
||||||
|
Återskapa tidigare sparade fönster- och speakerinställningar = Gendan vidues- og speakerindstillinger.
|
||||||
|
Återställ / uppdatera klasstillhörighet = Gendan / opdater klassetilhørsforhold
|
||||||
|
Återställ <Ej Start> till <Status Okänd> = Tilbagefør <Ej Startet> till <Status ukendt>
|
||||||
|
Återställ = Fortryd
|
||||||
|
Återställ löpare <Ej Start> med registrering till <Status Okänd> = Gendan løber med status <Ikke startet> til <Status ukendt>
|
||||||
|
Återställ säkerhetskopia = Gendan fra sikkerhedskopi
|
||||||
|
Återställ tabeldesignen och visa allt = Gendan tabeldesign og vis alt
|
||||||
|
övriga = øvrige
|
||||||
|
är först i mål med tiden X = er først i mål med tiden X
|
||||||
|
är först vid växeln med tiden X = er først ved skiftet med tiden X
|
||||||
|
är först vid X med tiden Y = er først ved X med tiden Y
|
||||||
|
är inte godkänd = er diskvalificeret
|
||||||
|
är nu på delad X plats med tiden Y = er nu på delt X plads med tiden Y
|
||||||
|
är nu på X plats med tiden Y = er nu på X plads med tiden Y
|
||||||
|
är X efter = er X efter
|
||||||
|
är X efter Y = er X efter Y
|
||||||
|
är X efter; har tagit in Y = er X efter; har indhentet Y
|
||||||
|
är X efter; har tappat Y = er X efter; har tabt Y
|
||||||
|
är X före Y = er X foran Y
|
||||||
|
återställd = gendannet
|
||||||
|
åtta = otte
|
||||||
|
åttonde = ottende
|
||||||
Ökande = Stigende
|
Ökande = Stigende
|
||||||
Öppen = Åben
|
Öppen = Åben
|
||||||
Öppen klass = Åben klasse
|
Öppen klass = Åben klasse
|
||||||
@ -56,39 +89,6 @@
|
|||||||
Ändra X = Ændr X
|
Ändra X = Ændr X
|
||||||
Ändrad = Ændret
|
Ändrad = Ændret
|
||||||
Ändrade avgift för X deltagare = Ændret afgift for X deltager(e)
|
Ändrade avgift för X deltagare = Ændret afgift for X deltager(e)
|
||||||
är först i mål med tiden X = er først i mål med tiden X
|
|
||||||
är först vid växeln med tiden X = er først ved skiftet med tiden X
|
|
||||||
är först vid X med tiden Y = er først ved X med tiden Y
|
|
||||||
är inte godkänd = er diskvalificeret
|
|
||||||
är nu på delad X plats med tiden Y = er nu på delt X plads med tiden Y
|
|
||||||
är nu på X plats med tiden Y = er nu på X plads med tiden Y
|
|
||||||
är X efter = er X efter
|
|
||||||
är X efter Y = er X efter Y
|
|
||||||
är X efter; har tagit in Y = er X efter; har indhentet Y
|
|
||||||
är X efter; har tappat Y = er X efter; har tabt Y
|
|
||||||
är X före Y = er X foran Y
|
|
||||||
återställd = gendannet
|
|
||||||
åtta = otte
|
|
||||||
åttonde = ottende
|
|
||||||
övriga = øvrige
|
|
||||||
ÅÅÅÅ-MM-DD = ÅÅÅÅ-MM-DD
|
|
||||||
Åldersfilter = Aldersfilter
|
|
||||||
Åldersgräns äldre = Aldersgrænse ældre
|
|
||||||
Åldersgräns ungdom = Aldersgrænse ungdom
|
|
||||||
Åldersgränser, reducerad anmälningsavgift = Aldersgrænser, reduceret løbsafgift
|
|
||||||
Ångra = Fortryd
|
|
||||||
Återansluten mot databasen, tävlingen synkroniserad = Gentilsluttet til databasen, løbet synkroniseret
|
|
||||||
Återbud = Slet tilmelding
|
|
||||||
Återbud[status] = Afbud
|
|
||||||
Återgå = Gå tilbage
|
|
||||||
Återskapa = Gendan
|
|
||||||
Återskapa tidigare sparade fönster- och speakerinställningar = Gendan vidues- og speakerindstillinger.
|
|
||||||
Återställ / uppdatera klasstillhörighet = Gendan / opdater klassetilhørsforhold
|
|
||||||
Återställ <Ej Start> till <Status Okänd> = Tilbagefør <Ej Startet> till <Status ukendt>
|
|
||||||
Återställ = Fortryd
|
|
||||||
Återställ löpare <Ej Start> med registrering till <Status Okänd> = Gendan løber med status <Ikke startet> til <Status ukendt>
|
|
||||||
Återställ säkerhetskopia = Gendan fra sikkerhedskopi
|
|
||||||
Återställ tabeldesignen och visa allt = Gendan tabeldesign og vis alt
|
|
||||||
Accepterade elektroniska fakturor = Godkendte elektroniske fakturaer
|
Accepterade elektroniska fakturor = Godkendte elektroniske fakturaer
|
||||||
Adress = Adresse
|
Adress = Adresse
|
||||||
Adress och kontakt = Adresse og kontakt
|
Adress och kontakt = Adresse og kontakt
|
||||||
@ -527,11 +527,10 @@ Extra avstånd ovanför textblock = Ekstra plads over tekstblok
|
|||||||
Extra stämplingar = Ekstra stemplinger
|
Extra stämplingar = Ekstra stemplinger
|
||||||
Extralöparstafett = Ekstraløberstafet
|
Extralöparstafett = Ekstraløberstafet
|
||||||
Extraplatser = Ekstra pladser
|
Extraplatser = Ekstra pladser
|
||||||
Färg = Farve
|
|
||||||
Födelseår = Fødselsår
|
Födelseår = Fødselsår
|
||||||
|
Följande deltagare överfördes ej = Følgende deltagere blev ikke overført
|
||||||
Följande deltagare är anmälda till nästa etapp men inte denna = Følgende deltagere er tilmeldt næste etape, men ikke denne
|
Följande deltagare är anmälda till nästa etapp men inte denna = Følgende deltagere er tilmeldt næste etape, men ikke denne
|
||||||
Följande deltagare är nyanmälda = Følgende deltagere er nytilmeldte
|
Följande deltagare är nyanmälda = Følgende deltagere er nytilmeldte
|
||||||
Följande deltagare överfördes ej = Følgende deltagere blev ikke overført
|
|
||||||
Följande deltagare deltar ej = Følgende deltagere deltager ikke
|
Följande deltagare deltar ej = Følgende deltagere deltager ikke
|
||||||
Följande deltagare har bytt klass (inget totalresultat) = Følgende deltagere har skiftet klasse (intet samlet resultat)
|
Följande deltagare har bytt klass (inget totalresultat) = Følgende deltagere har skiftet klasse (intet samlet resultat)
|
||||||
Följande deltagare har bytt klass = Følgende deltagere har skiftet klasse
|
Följande deltagare har bytt klass = Følgende deltagere har skiftet klasse
|
||||||
@ -567,6 +566,7 @@ Förväntad andel efteranmälda = Forventet andel eftertilmeldte
|
|||||||
Förväntat antal besökare: X = Forventet antal deltagere: X
|
Förväntat antal besökare: X = Forventet antal deltagere: X
|
||||||
Förvarning på (SI-kod): alla stämplingar = Forvarsel (SI kode): alle stemplinger
|
Förvarning på (SI-kod): alla stämplingar = Forvarsel (SI kode): alle stemplinger
|
||||||
Förvarningsröst = Forvarselsstemme
|
Förvarningsröst = Forvarselsstemme
|
||||||
|
Färg = Farve
|
||||||
Failed to generate card = FEJL: Kunne ikke indlæse
|
Failed to generate card = FEJL: Kunne ikke indlæse
|
||||||
Failed to open 'X' for reading = FEJL: Kunne ikke læse 'X'
|
Failed to open 'X' for reading = FEJL: Kunne ikke læse 'X'
|
||||||
Failed to read file = Kunne ikke læse fil
|
Failed to read file = Kunne ikke læse fil
|
||||||
@ -680,6 +680,8 @@ Grund avg. = Grundafg.
|
|||||||
Grundavgift = Grundafgift
|
Grundavgift = Grundafgift
|
||||||
Grundinställningar = Grundindstillinger
|
Grundinställningar = Grundindstillinger
|
||||||
Gruppera = Grupper
|
Gruppera = Grupper
|
||||||
|
Hög avgift = Forhøjet afgift
|
||||||
|
Höger = Højre
|
||||||
Hämta (efter)anmälningar från Eventor = Hent (efter)tilmeldinger fra Eventor
|
Hämta (efter)anmälningar från Eventor = Hent (efter)tilmeldinger fra Eventor
|
||||||
Hämta data från Eventor = Hent data fra Eventor
|
Hämta data från Eventor = Hent data fra Eventor
|
||||||
Hämta efteranmälningar = Hent eftertilmeldinger
|
Hämta efteranmälningar = Hent eftertilmeldinger
|
||||||
@ -697,8 +699,6 @@ Hämtar löpardatabasen = Henter løberdatabasen
|
|||||||
Hämtar tävling = Henter løb
|
Hämtar tävling = Henter løb
|
||||||
Händelser - tidslinje = Begivenheder - tidslinje
|
Händelser - tidslinje = Begivenheder - tidslinje
|
||||||
Händelser = Begivenheder
|
Händelser = Begivenheder
|
||||||
Hög avgift = Forhøjet afgift
|
|
||||||
Höger = Højre
|
|
||||||
handskakning = handshaking
|
handskakning = handshaking
|
||||||
Hantera brickor = Håndter brikker
|
Hantera brickor = Håndter brikker
|
||||||
Hantera deltagare som bytt klass = Håndtering af deltagere der har skiftet klasse
|
Hantera deltagare som bytt klass = Håndtering af deltagere der har skiftet klasse
|
||||||
@ -856,6 +856,7 @@ Informationsserver = Informationsserver
|
|||||||
Inga = Ingen
|
Inga = Ingen
|
||||||
Inga bommar registrerade =
|
Inga bommar registrerade =
|
||||||
Inga deltagare = Ingen deltagere
|
Inga deltagare = Ingen deltagere
|
||||||
|
Inga klasser tillåter direktanmälan. På sidan klasser kan du ändra denna egenskap. = Ingen klasser tillader tilmeldong på stævneplads.\n\nDu kan ændre dette på siden klasser.
|
||||||
Inga vakanser tillgängliga. Vakanser skapas vanligen vid lottning = Ingen vakante. Vakante pladser oprettes normalt ved lodtrækning
|
Inga vakanser tillgängliga. Vakanser skapas vanligen vid lottning = Ingen vakante. Vakante pladser oprettes normalt ved lodtrækning
|
||||||
Ingen / okänd = Ingen / ukendt
|
Ingen / okänd = Ingen / ukendt
|
||||||
Ingen = Ingen
|
Ingen = Ingen
|
||||||
@ -908,19 +909,19 @@ IOF Startlista, version 3.0 (xml) = IOF Startliste, version 3.0 (xml)
|
|||||||
IP-adress eller namn på en MySQL-server = IP addresse eller navn på en MySQL server
|
IP-adress eller namn på en MySQL-server = IP addresse eller navn på en MySQL server
|
||||||
Italic = Kursiv
|
Italic = Kursiv
|
||||||
ItalicMediumPlus = Kursiv, større
|
ItalicMediumPlus = Kursiv, større
|
||||||
Ja = Ja
|
|
||||||
Jämna klasser (placering) = Udjævn klasser (placering)
|
Jämna klasser (placering) = Udjævn klasser (placering)
|
||||||
Jämna klasser (ranking) = Udjævn klasser (ranking)
|
Jämna klasser (ranking) = Udjævn klasser (ranking)
|
||||||
Jämna klasser (tid) = Udjævn klasser (tid)
|
Jämna klasser (tid) = Udjævn klasser (tid)
|
||||||
|
Ja = Ja
|
||||||
Jag sköter lottning själv = Jeg foretager lodtrækning manuelt
|
Jag sköter lottning själv = Jeg foretager lodtrækning manuelt
|
||||||
Jaktstart = Jagtstart
|
Jaktstart = Jagtstart
|
||||||
Justera blockvis = Blokvis justering
|
Justera blockvis = Blokvis justering
|
||||||
Justera mot = Juster i forhold til
|
Justera mot = Juster i forhold til
|
||||||
Justera visningsinställningar = Juster visningsindstilninger
|
Justera visningsinställningar = Juster visningsindstilninger
|
||||||
Källa = Kilde(fra)
|
|
||||||
Källkatalog = Mappe at hente fra
|
|
||||||
Kön = Køn
|
Kön = Køn
|
||||||
Kör kontroll inför tävlingen = Foretag kontrol før løbet
|
Kör kontroll inför tävlingen = Foretag kontrol før løbet
|
||||||
|
Källa = Kilde(fra)
|
||||||
|
Källkatalog = Mappe at hente fra
|
||||||
Kalkylblad/csv = Regneark/csv
|
Kalkylblad/csv = Regneark/csv
|
||||||
kartor = kort
|
kartor = kort
|
||||||
klar = færdig
|
klar = færdig
|
||||||
@ -986,8 +987,8 @@ Kontant = Kontant
|
|||||||
Kontant betalning = Kontant betaling
|
Kontant betalning = Kontant betaling
|
||||||
Konto = Konto
|
Konto = Konto
|
||||||
Kontroll %s = Post %s
|
Kontroll %s = Post %s
|
||||||
kontroll = post
|
|
||||||
Kontroll = Post
|
Kontroll = Post
|
||||||
|
kontroll = post
|
||||||
Kontroll inför tävlingen = Kontrol før løbet
|
Kontroll inför tävlingen = Kontrol før løbet
|
||||||
kontroll X (Y) = post X (Y)
|
kontroll X (Y) = post X (Y)
|
||||||
Kontroll X = Post X
|
Kontroll X = Post X
|
||||||
@ -1017,30 +1018,6 @@ Kval-Final-Schema = Kval-Finale-Skema
|
|||||||
Kvar-i-skogen = Løbere i skoven
|
Kvar-i-skogen = Løbere i skoven
|
||||||
Kvinna = Kvinde
|
Kvinna = Kvinde
|
||||||
Kvinnor = Kvinder
|
Kvinnor = Kvinder
|
||||||
Lägg till = Tilføj
|
|
||||||
Lägg till alla = Tilføj alle
|
|
||||||
Lägg till en ny rad i tabellen (X) = Tilføj række i tabellen (X)
|
|
||||||
Lägg till klasser = Tilføj klasser
|
|
||||||
Lägg till ny = Tilføj ny
|
|
||||||
Lägg till ny etapp = Tilføj ny etape
|
|
||||||
Lägg till rad = Tilføj række
|
|
||||||
Lägg till stämpling = Tilføj stempling
|
|
||||||
Lägger till klubbar = Tilføjer klubber
|
|
||||||
Lägger till löpare = Tilføjer løbere
|
|
||||||
Längd (m) = Længde (m)
|
|
||||||
Längd = Længde
|
|
||||||
Längsta svarstid: X ms = Længste svarstid: X ms
|
|
||||||
Längsta tid i sekunder att vänta med utskrift = Det længste, i sekunder, der ventes med udskrift
|
|
||||||
Länk till resultatlistan = Link til resultatlisten
|
|
||||||
Länk till startlistan = Link til startlisten
|
|
||||||
Läs brickor = Læs brikker
|
|
||||||
Läser klubbar = Læser klubber
|
|
||||||
Läser löpare = Læser løbere
|
|
||||||
Långt namn = Langt navn
|
|
||||||
Lås gafflingar = Lås gafflinger
|
|
||||||
Lås startlista = Lås startliste
|
|
||||||
Låt de bästa start först = Lad de bedste starte først
|
|
||||||
Låt klassen ha mer än en bana eller sträcka = Lad klassen have mere end en bane eller en tur
|
|
||||||
Löpande = Løbende
|
Löpande = Løbende
|
||||||
Löpande information om viktiga händelser i tävlingen = Løbende information om vigtige begivenheder i løbet
|
Löpande information om viktiga händelser i tävlingen = Løbende information om vigtige begivenheder i løbet
|
||||||
Löparbricka %d = Løberbrik %d
|
Löparbricka %d = Løberbrik %d
|
||||||
@ -1063,6 +1040,30 @@ Löpare: X, kontroll: Y, kl Z = Løber: X, post: Y, kl: Z
|
|||||||
Löparen hittades inte = Løber ikke fundet
|
Löparen hittades inte = Løber ikke fundet
|
||||||
Löptid = Løbstid
|
Löptid = Løbstid
|
||||||
Lösenord = Password
|
Lösenord = Password
|
||||||
|
Lägg till = Tilføj
|
||||||
|
Lägg till alla = Tilføj alle
|
||||||
|
Lägg till en ny rad i tabellen (X) = Tilføj række i tabellen (X)
|
||||||
|
Lägg till klasser = Tilføj klasser
|
||||||
|
Lägg till ny = Tilføj ny
|
||||||
|
Lägg till ny etapp = Tilføj ny etape
|
||||||
|
Lägg till rad = Tilføj række
|
||||||
|
Lägg till stämpling = Tilføj stempling
|
||||||
|
Lägger till klubbar = Tilføjer klubber
|
||||||
|
Lägger till löpare = Tilføjer løbere
|
||||||
|
Längd (m) = Længde (m)
|
||||||
|
Längd = Længde
|
||||||
|
Längsta svarstid: X ms = Længste svarstid: X ms
|
||||||
|
Längsta tid i sekunder att vänta med utskrift = Det længste, i sekunder, der ventes med udskrift
|
||||||
|
Långt namn = Langt navn
|
||||||
|
Länk till resultatlistan = Link til resultatlisten
|
||||||
|
Länk till startlistan = Link til startlisten
|
||||||
|
Läs brickor = Læs brikker
|
||||||
|
Lås gafflingar = Lås gafflinger
|
||||||
|
Lås startlista = Lås startliste
|
||||||
|
Läser klubbar = Læser klubber
|
||||||
|
Läser löpare = Læser løbere
|
||||||
|
Låt de bästa start först = Lad de bedste starte først
|
||||||
|
Låt klassen ha mer än en bana eller sträcka = Lad klassen have mere end en bane eller en tur
|
||||||
Ladda upp öppnad tävling på server = Upload åbnet løb til server
|
Ladda upp öppnad tävling på server = Upload åbnet løb til server
|
||||||
Lag %d = Hold %d
|
Lag %d = Hold %d
|
||||||
Lag + sträcka = Hold + tur
|
Lag + sträcka = Hold + tur
|
||||||
@ -1138,7 +1139,6 @@ Lottar: X = Trækker lod: X
|
|||||||
Lottning = Lodtrækning
|
Lottning = Lodtrækning
|
||||||
Lyssna = Lyt
|
Lyssna = Lyt
|
||||||
Lyssnar på X = Lytter på X
|
Lyssnar på X = Lytter på X
|
||||||
Män = Mænd
|
|
||||||
mål = mål
|
mål = mål
|
||||||
Mål = Mål
|
Mål = Mål
|
||||||
målet (X) = målet (X)
|
målet (X) = målet (X)
|
||||||
@ -1148,6 +1148,7 @@ Målstämpling saknas = Manglende målstempling
|
|||||||
Måltid = Måltid
|
Måltid = Måltid
|
||||||
Måltid saknas = Måltid mangler
|
Måltid saknas = Måltid mangler
|
||||||
Måltid: X = Måltid: X
|
Måltid: X = Måltid: X
|
||||||
|
Män = Mænd
|
||||||
Man = Mand
|
Man = Mand
|
||||||
Manual point reductions and adjustments = Manuel pointreduktion og justering
|
Manual point reductions and adjustments = Manuel pointreduktion og justering
|
||||||
Manual time penalties and adjustments = Manuelle tidsstraf og justeringer
|
Manual time penalties and adjustments = Manuelle tidsstraf og justeringer
|
||||||
@ -1186,12 +1187,12 @@ MediumPlus = Noget større tekst
|
|||||||
Medlöpare = Medløber
|
Medlöpare = Medløber
|
||||||
Mellantider visas för namngivna kontroller = Mellemtider vises for navngivne poster
|
Mellantider visas för namngivna kontroller = Mellemtider vises for navngivne poster
|
||||||
MeOS = MeOS
|
MeOS = MeOS
|
||||||
MeOS – Funktioner = MeOS – Funktioner
|
|
||||||
MeOS – Resultatkiosk = MeOS – Resultatformidling
|
|
||||||
MeOS Features = MeOS Specialfunktioner
|
MeOS Features = MeOS Specialfunktioner
|
||||||
MeOS Funktioner = MeOS Funktioner
|
MeOS Funktioner = MeOS Funktioner
|
||||||
MeOS Informationsserver REST-API = MeOS Informationsserver REST-API
|
MeOS Informationsserver REST-API = MeOS Informationsserver REST-API
|
||||||
MeOS lokala datakatalog är = MeOS lokale datamappe er
|
MeOS lokala datakatalog är = MeOS lokale datamappe er
|
||||||
|
MeOS – Funktioner = MeOS – Funktioner
|
||||||
|
MeOS – Resultatkiosk = MeOS – Resultatformidling
|
||||||
MeOS Three Days Race X = MeOS Tredages Løb X
|
MeOS Three Days Race X = MeOS Tredages Løb X
|
||||||
MeOS Timing = MeOS Timing
|
MeOS Timing = MeOS Timing
|
||||||
Metod = Metode
|
Metod = Metode
|
||||||
@ -1371,6 +1372,7 @@ prefsAutoTie = Knyt automatisk Si brik til løber
|
|||||||
prefsCardFee = Forvalgt Si brik leje
|
prefsCardFee = Forvalgt Si brik leje
|
||||||
prefsclasslimit = Begräns antal viste resultater per klasse
|
prefsclasslimit = Begräns antal viste resultater per klasse
|
||||||
prefsClient = Klientnavn i netværket
|
prefsClient = Klientnavn i netværket
|
||||||
|
prefsCodePage = Tegnsæt for 8-bits text vid im- og export
|
||||||
prefsControlFrom = Senest brugte <fra> post
|
prefsControlFrom = Senest brugte <fra> post
|
||||||
prefsControlTo = Senest brugte <til> post
|
prefsControlTo = Senest brugte <til> post
|
||||||
prefsCurrencyFactor = Valutakurs
|
prefsCurrencyFactor = Valutakurs
|
||||||
@ -1430,8 +1432,8 @@ Prel. bomtid = Forel. tidstab
|
|||||||
Prel. placering = Forel. placering
|
Prel. placering = Forel. placering
|
||||||
Prepare start lists = Forbered startliste
|
Prepare start lists = Forbered startliste
|
||||||
Press Enter to continue = Tast <Enter> for at fortsætte
|
Press Enter to continue = Tast <Enter> for at fortsætte
|
||||||
Print card data = Udskriv brikdata
|
|
||||||
Print Card Data = Udskriv brikdata
|
Print Card Data = Udskriv brikdata
|
||||||
|
Print card data = Udskriv brikdata
|
||||||
Printing failed (X: Y) Z = Utskrivning fejlede (X: Y) Z
|
Printing failed (X: Y) Z = Utskrivning fejlede (X: Y) Z
|
||||||
Prioritering = Prioritering
|
Prioritering = Prioritering
|
||||||
Prisutdelningslista = Prisuddelingsliste
|
Prisutdelningslista = Prisuddelingsliste
|
||||||
@ -1496,8 +1498,8 @@ Reserverade = Reserveret
|
|||||||
RestService = RestService
|
RestService = RestService
|
||||||
Result at a control = Resultat ved post
|
Result at a control = Resultat ved post
|
||||||
Result Calculation = Resultatberegning
|
Result Calculation = Resultatberegning
|
||||||
Result Module – X = Resultatmodul – X
|
|
||||||
Result module identifier = Resultatmodul ID
|
Result module identifier = Resultatmodul ID
|
||||||
|
Result Module – X = Resultatmodul – X
|
||||||
Result Modules = Resultatmoduler
|
Result Modules = Resultatmoduler
|
||||||
Result on leg = Result for stræk
|
Result on leg = Result for stræk
|
||||||
Result score calculation for runner = Resultatberegning for løber
|
Result score calculation for runner = Resultatberegning for løber
|
||||||
@ -1628,18 +1630,18 @@ RunnerTotalTimeAfter = Løbers totaltid efter
|
|||||||
RunnerTotalTimeStatus = Løbers totaltid / status
|
RunnerTotalTimeStatus = Løbers totaltid / status
|
||||||
RunnerUMMasterPoint = Uppsala möte, mesterskabspoints
|
RunnerUMMasterPoint = Uppsala möte, mesterskabspoints
|
||||||
Running time for each team member = Løbstid for hvert holdmedlem
|
Running time for each team member = Løbstid for hvert holdmedlem
|
||||||
Säkerhetskopiera = Lav sikkerhedskopi
|
|
||||||
Säkerhetskopierar om = Laver sikkerhedskopi om
|
|
||||||
Säkerhetskopiering = Interval Backup
|
|
||||||
Sätt okända löpare utan registrering till <Ej Start> = Sæt ukendte løbere uden registrering til <Ikke startet>
|
|
||||||
Sätt som oparad = Sæt som uparret
|
|
||||||
Sätter reptid (X) och omstartstid (Y) för = Sætter sidste skiftetid (X) og omstarttid (Y) for
|
|
||||||
Sök (X) = Søg (X)
|
Sök (X) = Søg (X)
|
||||||
Sök = Søg
|
Sök = Søg
|
||||||
Sök deltagare = Søg deltagere
|
Sök deltagare = Søg deltagere
|
||||||
Sök och starta automatiskt = Søg og start automatisk
|
Sök och starta automatiskt = Søg og start automatisk
|
||||||
Sök på namn, bricka eller startnummer = Søg efter et navn, en brik eller et startnummer
|
Sök på namn, bricka eller startnummer = Søg efter et navn, en brik eller et startnummer
|
||||||
Söker efter SI-enheter = Søger efter SI-enheder
|
Söker efter SI-enheter = Søger efter SI-enheder
|
||||||
|
Säkerhetskopiera = Lav sikkerhedskopi
|
||||||
|
Säkerhetskopierar om = Laver sikkerhedskopi om
|
||||||
|
Säkerhetskopiering = Interval Backup
|
||||||
|
Sätt okända löpare utan registrering till <Ej Start> = Sæt ukendte løbere uden registrering til <Ikke startet>
|
||||||
|
Sätt som oparad = Sæt som uparret
|
||||||
|
Sätter reptid (X) och omstartstid (Y) för = Sætter sidste skiftetid (X) og omstarttid (Y) for
|
||||||
Saknad starttid = Manglende starttid
|
Saknad starttid = Manglende starttid
|
||||||
saknas = mangler
|
saknas = mangler
|
||||||
Samlade poäng = Samlet antal point
|
Samlade poäng = Samlet antal point
|
||||||
@ -1783,6 +1785,10 @@ Speakerstöd = Speaker funktion
|
|||||||
SportIdent = SPORTident
|
SportIdent = SPORTident
|
||||||
Språk = Sprog
|
Språk = Sprog
|
||||||
SRR Dongle = SRR Dongle
|
SRR Dongle = SRR Dongle
|
||||||
|
Större = Større
|
||||||
|
Störst = Meget stor
|
||||||
|
Största gruppen med samma inledning har X platser = Største gruppe med samme indledning har X pladser
|
||||||
|
Största intervall i klass = Største interval i klasse
|
||||||
Stämpelkod = Stempelkode
|
Stämpelkod = Stempelkode
|
||||||
Stämpelkod(er) = Stempelkode(r)
|
Stämpelkod(er) = Stempelkode(r)
|
||||||
Stämpelkoder = Stempelkoder
|
Stämpelkoder = Stempelkoder
|
||||||
@ -1800,10 +1806,6 @@ Stämplingstest = Stemplingstest
|
|||||||
Stämplingstid = Stemplingstid
|
Stämplingstid = Stemplingstid
|
||||||
Stäng = Luk
|
Stäng = Luk
|
||||||
Stäng tävlingen = Luk løbet
|
Stäng tävlingen = Luk løbet
|
||||||
Större = Større
|
|
||||||
Störst = Meget stor
|
|
||||||
Största gruppen med samma inledning har X platser = Største gruppe med samme indledning har X pladser
|
|
||||||
Största intervall i klass = Største interval i klasse
|
|
||||||
Stad = By
|
Stad = By
|
||||||
Stafett - sammanställning = Stafet - sammenfatning
|
Stafett - sammanställning = Stafet - sammenfatning
|
||||||
Stafett - sträcka = Stafet - tur
|
Stafett - sträcka = Stafet - tur
|
||||||
@ -1884,8 +1886,8 @@ Str. X = Tur X
|
|||||||
Sträcka %d = Tur %d
|
Sträcka %d = Tur %d
|
||||||
Sträcka = Tur
|
Sträcka = Tur
|
||||||
Sträcka att lotta = Ture til lodtrækning
|
Sträcka att lotta = Ture til lodtrækning
|
||||||
sträcka X = tur X
|
|
||||||
Sträcka X = Tur X
|
Sträcka X = Tur X
|
||||||
|
sträcka X = tur X
|
||||||
Sträckans banor = Strækkets baner
|
Sträckans banor = Strækkets baner
|
||||||
Sträcktider (WinSplits) = Stræktider (WinSplits)
|
Sträcktider (WinSplits) = Stræktider (WinSplits)
|
||||||
Sträcktider / WinSplits = Stræktider / WinSplits
|
Sträcktider / WinSplits = Stræktider / WinSplits
|
||||||
@ -1910,13 +1912,8 @@ Support time from control = Understøt tid fra post
|
|||||||
Support time to control = Understøt tid til post
|
Support time to control = Understøt tid til post
|
||||||
Symboler = Symboler
|
Symboler = Symboler
|
||||||
Synkronisera med Eventor = Synkroniser med Eventor
|
Synkronisera med Eventor = Synkroniser med Eventor
|
||||||
Ta bort / slå ihop = Fjern / slå sammen
|
Töm = Clear
|
||||||
Ta bort = Fjern
|
Töm databasen = Ryd database
|
||||||
Ta bort eventuella avanmälda deltagare = Fjern evt. afmeldte deltagere
|
|
||||||
Ta bort listposten = Fjern listeposten
|
|
||||||
Ta bort markerad = Fjern valgte
|
|
||||||
Ta bort stämpling = Fjern stempling
|
|
||||||
Ta bort valda rader från tabellen (X) = Fjern valgte rækker fra tabellen (X)
|
|
||||||
Tävling = Løb
|
Tävling = Løb
|
||||||
Tävling från Eventor = Løb fra Eventor
|
Tävling från Eventor = Løb fra Eventor
|
||||||
Tävling med lag = Løb med hold
|
Tävling med lag = Løb med hold
|
||||||
@ -1933,8 +1930,13 @@ Tävlingsnamn = Løbsnavn
|
|||||||
Tävlingsrapport = Løbsrapport
|
Tävlingsrapport = Løbsrapport
|
||||||
Tävlingsregler = Løbsreglement
|
Tävlingsregler = Løbsreglement
|
||||||
Tävlingsstatistik = Løbsstatistik
|
Tävlingsstatistik = Løbsstatistik
|
||||||
Töm = Clear
|
Ta bort / slå ihop = Fjern / slå sammen
|
||||||
Töm databasen = Ryd database
|
Ta bort = Fjern
|
||||||
|
Ta bort eventuella avanmälda deltagare = Fjern evt. afmeldte deltagere
|
||||||
|
Ta bort listposten = Fjern listeposten
|
||||||
|
Ta bort markerad = Fjern valgte
|
||||||
|
Ta bort stämpling = Fjern stempling
|
||||||
|
Ta bort valda rader från tabellen (X) = Fjern valgte rækker fra tabellen (X)
|
||||||
Tabell = Tabel
|
Tabell = Tabel
|
||||||
Tabelläge = Tabelindstilling
|
Tabelläge = Tabelindstilling
|
||||||
Tabellverktyg = Tabelværktøj
|
Tabellverktyg = Tabelværktøj
|
||||||
|
|||||||
@ -2315,3 +2315,9 @@ Ingen nummerlapp = No bib
|
|||||||
Rogaining results for a team, where each team member collects points individually = Rogaining results for a team, where each team member collects points individually
|
Rogaining results for a team, where each team member collects points individually = Rogaining results for a team, where each team member collects points individually
|
||||||
prefsCodePage = Code table for 8 bit text on import/export.
|
prefsCodePage = Code table for 8 bit text on import/export.
|
||||||
Inga klasser tillåter direktanmälan. På sidan klasser kan du ändra denna egenskap. = No class is marked to allow quick entry.\n\nOn the page Classes you can change this property.
|
Inga klasser tillåter direktanmälan. På sidan klasser kan du ändra denna egenskap. = No class is marked to allow quick entry.\n\nOn the page Classes you can change this property.
|
||||||
|
Database is used and cannot be deleted = Database is used and cannot be deleted
|
||||||
|
Classes together = Classes together
|
||||||
|
Finish order = Finish order
|
||||||
|
First to finish = First to finish
|
||||||
|
Individual result by finish time = Individual result by finish time
|
||||||
|
Endast tidtagning = Only timing
|
||||||
|
|||||||
@ -2389,6 +2389,11 @@ LRESULT gdioutput::ProcessMsgWrp(UINT iMessage, LPARAM lParam, WPARAM wParam)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (iMessage==WM_LBUTTONDOWN) {
|
else if (iMessage==WM_LBUTTONDOWN) {
|
||||||
|
if (autoCompleteInfo) {
|
||||||
|
autoCompleteInfo.reset();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
list<InfoBox>::iterator it=IBox.begin();
|
list<InfoBox>::iterator it=IBox.begin();
|
||||||
|
|
||||||
POINT pt;
|
POINT pt;
|
||||||
@ -6919,10 +6924,18 @@ AutoCompleteInfo &gdioutput::addAutoComplete(const string &key) {
|
|||||||
GetWindowRect(hWndTarget, &rcMain);
|
GetWindowRect(hWndTarget, &rcMain);
|
||||||
POINT pt;
|
POINT pt;
|
||||||
int height = scaleLength(200);
|
int height = scaleLength(200);
|
||||||
|
pt.x = rc.right;
|
||||||
|
//pt.y = min(rc.top, rcMain.bottom-height);
|
||||||
|
pt.y = rc.bottom;
|
||||||
|
if (pt.y + height > rcMain.bottom)
|
||||||
|
pt.y = rc.top - height;
|
||||||
|
|
||||||
|
ScreenToClient(hWndTarget, &pt);
|
||||||
|
if (pt.y < 0) { //Fallback
|
||||||
pt.x = rc.right;
|
pt.x = rc.right;
|
||||||
pt.y = min(rc.top, rcMain.bottom - height);
|
pt.y = min(rc.top, rcMain.bottom - height);
|
||||||
ScreenToClient(hWndTarget, &pt);
|
ScreenToClient(hWndTarget, &pt);
|
||||||
// TODO Place window
|
}
|
||||||
|
|
||||||
if (autoCompleteInfo && autoCompleteInfo->matchKey(key)) {
|
if (autoCompleteInfo && autoCompleteInfo->matchKey(key)) {
|
||||||
return *autoCompleteInfo;
|
return *autoCompleteInfo;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
/************************************************************************
|
/************************************************************************
|
||||||
MeOS - Orienteering Software
|
MeOS - Orienteering Software
|
||||||
Copyright (C) 2009-2018 Melin Software HB
|
Copyright (C) 2009-2018 Melin Software HB
|
||||||
|
|
||||||
@ -16,7 +16,7 @@
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
Melin Software HB - software@melin.nu - www.melin.nu
|
Melin Software HB - software@melin.nu - www.melin.nu
|
||||||
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
|
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
|
||||||
|
|
||||||
************************************************************************/
|
************************************************************************/
|
||||||
|
|
||||||
@ -287,17 +287,18 @@ int APIENTRY WinMain(HINSTANCE hInstance,
|
|||||||
lang.get().addLangResource(L"Svenska", L"103");
|
lang.get().addLangResource(L"Svenska", L"103");
|
||||||
lang.get().addLangResource(L"Deutsch", L"105");
|
lang.get().addLangResource(L"Deutsch", L"105");
|
||||||
lang.get().addLangResource(L"Dansk", L"106");
|
lang.get().addLangResource(L"Dansk", L"106");
|
||||||
lang.get().addLangResource(L"Français", L"110");
|
lang.get().addLangResource(L"Český", L"108");
|
||||||
|
lang.get().addLangResource(L"Français", L"110");
|
||||||
lang.get().addLangResource(L"Russian", L"107");
|
lang.get().addLangResource(L"Russian", L"107");
|
||||||
|
|
||||||
if (fileExist(L"extra.lng")) {
|
if (fileExist(L"extra.lng")) {
|
||||||
lang.get().addLangResource(L"Extraspråk", L"extra.lng");
|
lang.get().addLangResource(L"Extraspråk", L"extra.lng");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
wchar_t lpath[260];
|
wchar_t lpath[260];
|
||||||
getUserFile(lpath, L"extra.lng");
|
getUserFile(lpath, L"extra.lng");
|
||||||
if (fileExist(lpath))
|
if (fileExist(lpath))
|
||||||
lang.get().addLangResource(L"Extraspråk", lpath);
|
lang.get().addLangResource(L"Extraspråk", lpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
wstring defLang = gEvent->getPropertyString("Language", L"Svenska");
|
wstring defLang = gEvent->getPropertyString("Language", L"Svenska");
|
||||||
@ -1020,7 +1021,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
{
|
{
|
||||||
case WM_CREATE:
|
case WM_CREATE:
|
||||||
|
|
||||||
tabList->push_back(TabObject(gdi_main->getTabs().get(TCmpTab), "Tävling"));
|
tabList->push_back(TabObject(gdi_main->getTabs().get(TCmpTab), "Tävling"));
|
||||||
tabList->push_back(TabObject(gdi_main->getTabs().get(TRunnerTab), "Deltagare"));
|
tabList->push_back(TabObject(gdi_main->getTabs().get(TRunnerTab), "Deltagare"));
|
||||||
tabList->push_back(TabObject(gdi_main->getTabs().get(TTeamTab), "Lag(flera)"));
|
tabList->push_back(TabObject(gdi_main->getTabs().get(TTeamTab), "Lag(flera)"));
|
||||||
tabList->push_back(TabObject(gdi_main->getTabs().get(TListTab), "Listor"));
|
tabList->push_back(TabObject(gdi_main->getTabs().get(TListTab), "Listor"));
|
||||||
@ -1174,7 +1175,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WM_USER+1:
|
case WM_USER+1:
|
||||||
MessageBox(hWnd, lang.tl(L"Kommunikationen med en SI-enhet avbröts.").c_str(), L"SportIdent", MB_OK);
|
MessageBox(hWnd, lang.tl(L"Kommunikationen med en SI-enhet avbröts.").c_str(), L"SportIdent", MB_OK);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_USER + 3:
|
case WM_USER + 3:
|
||||||
@ -1209,7 +1210,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_CLOSE:
|
case WM_CLOSE:
|
||||||
if (!gEvent || gEvent->empty() || gdi_main->ask(L"Vill du verkligen stänga MeOS?"))
|
if (!gEvent || gEvent->empty() || gdi_main->ask(L"Vill du verkligen stänga MeOS?"))
|
||||||
DestroyWindow(hWnd);
|
DestroyWindow(hWnd);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1227,20 +1228,20 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
gEvent->save();
|
gEvent->save();
|
||||||
}
|
}
|
||||||
catch (meosException &ex) {
|
catch (meosException &ex) {
|
||||||
MessageBox(hWnd, lang.tl(ex.wwhat()).c_str(), L"Fel när tävlingen skulle sparas", MB_OK);
|
MessageBox(hWnd, lang.tl(ex.wwhat()).c_str(), L"Fel när tävlingen skulle sparas", MB_OK);
|
||||||
}
|
}
|
||||||
catch(std::exception &ex) {
|
catch(std::exception &ex) {
|
||||||
MessageBox(hWnd, lang.tl(ex.what()).c_str(), L"Fel när tävlingen skulle sparas", MB_OK);
|
MessageBox(hWnd, lang.tl(ex.what()).c_str(), L"Fel när tävlingen skulle sparas", MB_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
gEvent->saveRunnerDatabase(L"database", true);
|
gEvent->saveRunnerDatabase(L"database", true);
|
||||||
}
|
}
|
||||||
catch (meosException &ex) {
|
catch (meosException &ex) {
|
||||||
MessageBox(hWnd, lang.tl(ex.wwhat()).c_str(), L"Fel när löpardatabas skulle sparas", MB_OK);
|
MessageBox(hWnd, lang.tl(ex.wwhat()).c_str(), L"Fel när löpardatabas skulle sparas", MB_OK);
|
||||||
}
|
}
|
||||||
catch(std::exception &ex) {
|
catch(std::exception &ex) {
|
||||||
MessageBox(hWnd, lang.tl(ex.what()).c_str(), L"Fel när löpardatabas skulle sparas", MB_OK);
|
MessageBox(hWnd, lang.tl(ex.what()).c_str(), L"Fel när löpardatabas skulle sparas", MB_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gEvent)
|
if (gEvent)
|
||||||
|
|||||||
@ -37,6 +37,7 @@
|
|||||||
#include "../progress.h"
|
#include "../progress.h"
|
||||||
#include "../metalist.h"
|
#include "../metalist.h"
|
||||||
#include "../MeOSFeatures.h"
|
#include "../MeOSFeatures.h"
|
||||||
|
#include "../meosexception.h"
|
||||||
|
|
||||||
using namespace mysqlpp;
|
using namespace mysqlpp;
|
||||||
|
|
||||||
@ -3493,7 +3494,7 @@ bool MeosSQL::checkConnection(oEvent *oe)
|
|||||||
monitorId=static_cast<int>(res.insert_id);
|
monitorId=static_cast<int>(res.insert_id);
|
||||||
}
|
}
|
||||||
catch (const mysqlpp::Exception& er){
|
catch (const mysqlpp::Exception& er){
|
||||||
oe->connectedClients.push_back(er.what());
|
oe->connectedClients.push_back(L"Error: " + fromUTF(er.what()));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3505,7 +3506,7 @@ bool MeosSQL::checkConnection(oEvent *oe)
|
|||||||
query.execute();
|
query.execute();
|
||||||
}
|
}
|
||||||
catch (const mysqlpp::Exception& er){
|
catch (const mysqlpp::Exception& er){
|
||||||
oe->connectedClients.push_back(er.what());
|
oe->connectedClients.push_back(L"Error: " + fromUTF(er.what()));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3521,7 +3522,7 @@ bool MeosSQL::checkConnection(oEvent *oe)
|
|||||||
if (res) {
|
if (res) {
|
||||||
for (int i=0; i<res.num_rows(); i++) {
|
for (int i=0; i<res.num_rows(); i++) {
|
||||||
Row row=res.at(i);
|
Row row=res.at(i);
|
||||||
oe->connectedClients.push_back(string(row["Client"]));
|
oe->connectedClients.push_back(fromUTF(string(row["Client"])));
|
||||||
|
|
||||||
if (int(row["Id"])==monitorId)
|
if (int(row["Id"])==monitorId)
|
||||||
callback=true;
|
callback=true;
|
||||||
@ -3529,7 +3530,7 @@ bool MeosSQL::checkConnection(oEvent *oe)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (const mysqlpp::Exception& er){
|
catch (const mysqlpp::Exception& er){
|
||||||
oe->connectedClients.push_back(er.what());
|
oe->connectedClients.push_back(L"Error: " + fromUTF(er.what()));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return callback;
|
return callback;
|
||||||
@ -3554,16 +3555,14 @@ void MeosSQL::setDefaultDB()
|
|||||||
|
|
||||||
bool MeosSQL::dropDatabase(oEvent *oe)
|
bool MeosSQL::dropDatabase(oEvent *oe)
|
||||||
{
|
{
|
||||||
// Check if other cients are connected.
|
// Check if other clients are connected.
|
||||||
if ( !checkConnection(oe) ) {
|
if ( !checkConnection(oe) ) {
|
||||||
if (!oe->connectedClients.empty())
|
if (!oe->connectedClients.empty())
|
||||||
alert(oe->connectedClients[0]);
|
throw meosException("Database is used and cannot be deleted.");
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (oe->connectedClients.size()!=1) {
|
if (oe->connectedClients.size()!=1) {
|
||||||
alert("Database is used and cannot be deleted");
|
throw meosException("Database is used and cannot be deleted.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -12,8 +12,7 @@ IDR_3002 300 DISCARDABLE "english.lng"
|
|||||||
IDR_3003 300 DISCARDABLE "german.lng"
|
IDR_3003 300 DISCARDABLE "german.lng"
|
||||||
IDR_3004 300 DISCARDABLE "danish.lng"
|
IDR_3004 300 DISCARDABLE "danish.lng"
|
||||||
IDR_3005 300 DISCARDABLE "russian.lng"
|
IDR_3005 300 DISCARDABLE "russian.lng"
|
||||||
IDR_3006 300 DISCARDABLE "cp1250.lng"
|
IDR_3006 300 DISCARDABLE "czech.lng"
|
||||||
IDR_3007 300 DISCARDABLE "cp1255.lng"
|
|
||||||
IDR_3008 300 DISCARDABLE "french.lng"
|
IDR_3008 300 DISCARDABLE "french.lng"
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|||||||
@ -27,9 +27,9 @@
|
|||||||
//V2: ABCDEFGHIHJKMN
|
//V2: ABCDEFGHIHJKMN
|
||||||
//V31: a
|
//V31: a
|
||||||
//V33: abcde
|
//V33: abcde
|
||||||
//V35: abcde
|
//V35: abcdef
|
||||||
int getMeosBuild() {
|
int getMeosBuild() {
|
||||||
string revision("$Rev: 669 $");
|
string revision("$Rev: 686 $");
|
||||||
return 174 + atoi(revision.substr(5, string::npos).c_str());
|
return 174 + atoi(revision.substr(5, string::npos).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,12 +41,12 @@ int getMeosBuild() {
|
|||||||
//V33: abcdefghij
|
//V33: abcdefghij
|
||||||
//V34: abcdfge
|
//V34: abcdfge
|
||||||
wstring getMeosDate() {
|
wstring getMeosDate() {
|
||||||
wstring date(L"$Date: 2018-03-25 07:29:55 +0200 (sö, 25 mar 2018) $");
|
wstring date(L"$Date: 2018-04-17 21:45:35 +0200 (ti, 17 apr 2018) $");
|
||||||
return date.substr(7,10);
|
return date.substr(7,10);
|
||||||
}
|
}
|
||||||
|
|
||||||
wstring getBuildType() {
|
wstring getBuildType() {
|
||||||
return L"RC2"; // No parantheses (...)
|
return L""; // No parantheses (...)
|
||||||
}
|
}
|
||||||
|
|
||||||
wstring getMajorVersion() {
|
wstring getMajorVersion() {
|
||||||
@ -188,4 +188,6 @@ void getSupporters(vector<wstring> &supp)
|
|||||||
supp.push_back(L"Siguldas Takas, Latvia");
|
supp.push_back(L"Siguldas Takas, Latvia");
|
||||||
supp.push_back(L"Eric Teutsch, Ottawa Orienteering Club, Canada");
|
supp.push_back(L"Eric Teutsch, Ottawa Orienteering Club, Canada");
|
||||||
supp.push_back(L"Silkeborg OK, Denmark");
|
supp.push_back(L"Silkeborg OK, Denmark");
|
||||||
|
supp.push_back(L"Erik Ivarsson Sandberg");
|
||||||
|
supp.push_back(L"Stenungsunds OK");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4006,17 +4006,20 @@ void oClass::drawSeeded(ClassSeedMethod seed, int leg, int firstStart,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (noClubNb) {
|
if (noClubNb) {
|
||||||
|
set<int> pushed_back;
|
||||||
for (size_t k = 1; k < startOrder.size(); k++) {
|
for (size_t k = 1; k < startOrder.size(); k++) {
|
||||||
int idMe = startOrder[k]->getClubId();
|
int idMe = startOrder[k]->getClubId();
|
||||||
if (idMe != 0 && idMe == startOrder[k-1]->getClubId()) {
|
if (idMe != 0 && idMe == startOrder[k-1]->getClubId()) {
|
||||||
// Make sure the runner with worst ranking is moved back. (Swedish SM rules)
|
// Make sure the runner with worst ranking is moved back. (Swedish SM rules)
|
||||||
if (startOrder[k-1]->getRanking() > startOrder[k]->getRanking())
|
bool skipRank = pushed_back.count(startOrder[k - 1]->getId()) != 0;
|
||||||
|
if (!skipRank && startOrder[k-1]->getRanking() > startOrder[k]->getRanking())
|
||||||
swap(startOrder[k-1], startOrder[k]);
|
swap(startOrder[k-1], startOrder[k]);
|
||||||
|
pushed_back.insert(startOrder[k]->getId());
|
||||||
vector<pair<int, pRunner> > rqueue;
|
vector<pair<int, pRunner> > rqueue;
|
||||||
rqueue.push_back(make_pair(k, startOrder[k]));
|
rqueue.push_back(make_pair(k, startOrder[k]));
|
||||||
for (size_t j = k + 1; j < startOrder.size(); j++) {
|
for (size_t j = k + 1; j < startOrder.size(); j++) {
|
||||||
if (idMe != startOrder[j]->getClubId()) {
|
if (idMe != startOrder[j]->getClubId()) {
|
||||||
|
pushed_back.insert(startOrder[j]->getId());
|
||||||
swap(startOrder[j], startOrder[k]); // k-1 now has a non-club nb behind
|
swap(startOrder[j], startOrder[k]); // k-1 now has a non-club nb behind
|
||||||
rqueue.push_back(make_pair(j, pRunner(0)));
|
rqueue.push_back(make_pair(j, pRunner(0)));
|
||||||
// Shift the queue
|
// Shift the queue
|
||||||
|
|||||||
@ -1377,6 +1377,14 @@ bool oCourse::hasControl(const oControl *ctrl) const {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool oCourse::hasControlCode(int code) const {
|
||||||
|
for (int i = 0; i < nControls; i++) {
|
||||||
|
if (Controls[i]->hasNumber(code))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void oCourse::getClasses(vector<pClass> &usageClass) const {
|
void oCourse::getClasses(vector<pClass> &usageClass) const {
|
||||||
vector<pClass> cls;
|
vector<pClass> cls;
|
||||||
oe->getClasses(cls, false);
|
oe->getClasses(cls, false);
|
||||||
|
|||||||
@ -103,6 +103,7 @@ public:
|
|||||||
wstring getRadioName(int courseControlId) const;
|
wstring getRadioName(int courseControlId) const;
|
||||||
|
|
||||||
bool hasControl(const oControl *ctrl) const;
|
bool hasControl(const oControl *ctrl) const;
|
||||||
|
bool hasControlCode(int code) const;
|
||||||
|
|
||||||
/// Returns course specific id for specified control (taking duplicats of the control into account)
|
/// Returns course specific id for specified control (taking duplicats of the control into account)
|
||||||
int getCourseControlId(int controlIx) const;
|
int getCourseControlId(int controlIx) const;
|
||||||
|
|||||||
@ -4825,7 +4825,7 @@ void oEvent::analyzeClassResultStatus() const
|
|||||||
void oEvent::generateTestCard(SICard &sic) const
|
void oEvent::generateTestCard(SICard &sic) const
|
||||||
{
|
{
|
||||||
sic.clear(0);
|
sic.clear(0);
|
||||||
sic.convertedTime == ConvertedTimeStatus::Hour24;
|
sic.convertedTime = ConvertedTimeStatus::Hour24;
|
||||||
|
|
||||||
if (Runners.empty())
|
if (Runners.empty())
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -393,7 +393,7 @@ protected:
|
|||||||
void storeChangeStatus(bool onlyChangable=true);
|
void storeChangeStatus(bool onlyChangable=true);
|
||||||
|
|
||||||
wstring clientName;
|
wstring clientName;
|
||||||
vector<string> connectedClients;
|
vector<wstring> connectedClients;
|
||||||
DWORD clientCheckSum() const; //Calculate a check sum for current clients
|
DWORD clientCheckSum() const; //Calculate a check sum for current clients
|
||||||
DWORD currentClientCS; //The current, stored check sum.
|
DWORD currentClientCS; //The current, stored check sum.
|
||||||
|
|
||||||
|
|||||||
@ -836,7 +836,7 @@ void oEvent::drawList(const vector<ClassDrawSpecification> &spec,
|
|||||||
|
|
||||||
int minStartNo = Runners.size();
|
int minStartNo = Runners.size();
|
||||||
for(unsigned k=0;k<stimes.size(); k++) {
|
for(unsigned k=0;k<stimes.size(); k++) {
|
||||||
runners[k]->setStartTime(stimes[k], true, false);
|
runners[k]->setStartTime(stimes[k], true, false, false);
|
||||||
minStartNo = min(minStartNo, runners[k]->getStartNo());
|
minStartNo = min(minStartNo, runners[k]->getStartNo());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1113,12 +1113,14 @@ void oEvent::drawListClumped(int ClassID, int FirstStart, int Interval, int Vaca
|
|||||||
|
|
||||||
k=0;
|
k=0;
|
||||||
|
|
||||||
for (it=Runners.begin(); it != Runners.end(); ++it)
|
for (it = Runners.begin(); it != Runners.end(); ++it) {
|
||||||
if (it->Class && it->Class->Id == ClassID) {
|
if (it->Class && it->Class->Id == ClassID) {
|
||||||
it->setStartTime(stimes[k++], true, false);
|
it->setStartTime(stimes[k++], true, false, false);
|
||||||
it->StartNo = k;
|
it->StartNo = k;
|
||||||
it->synchronize();
|
it->synchronize();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
reCalculateLeaderTimes(ClassID);
|
||||||
|
|
||||||
delete[] stimes;
|
delete[] stimes;
|
||||||
}
|
}
|
||||||
@ -1426,15 +1428,15 @@ void oEvent::drawPersuitList(int classId, int firstTime, int restartTime,
|
|||||||
|
|
||||||
if ((times[k].first - delta) < maxTime && breakIndex == -1) {
|
if ((times[k].first - delta) < maxTime && breakIndex == -1) {
|
||||||
if (!reverse)
|
if (!reverse)
|
||||||
r->setStartTime(firstTime + times[k].first - delta, true, false);
|
r->setStartTime(firstTime + times[k].first - delta, true, false, false);
|
||||||
else
|
else
|
||||||
r->setStartTime(firstTime - times[k].first + reverseDelta, true, false);
|
r->setStartTime(firstTime - times[k].first + reverseDelta, true, false, false);
|
||||||
}
|
}
|
||||||
else if (!reverse) {
|
else if (!reverse) {
|
||||||
if (breakIndex == -1)
|
if (breakIndex == -1)
|
||||||
breakIndex = k;
|
breakIndex = k;
|
||||||
|
|
||||||
r->setStartTime(restartTime + ((k - breakIndex)/pairSize) * interval, true, false);
|
r->setStartTime(restartTime + ((k - breakIndex)/pairSize) * interval, true, false, false);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (breakIndex == -1) {
|
if (breakIndex == -1) {
|
||||||
@ -1442,8 +1444,9 @@ void oEvent::drawPersuitList(int classId, int firstTime, int restartTime,
|
|||||||
odd = times.size() % 2;
|
odd = times.size() % 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
r->setStartTime(restartTime + ((breakIndex - k + odd)/pairSize) * interval, true, false);
|
r->setStartTime(restartTime + ((breakIndex - k + odd)/pairSize) * interval, true, false, false);
|
||||||
}
|
}
|
||||||
r->synchronize(true);
|
r->synchronize(true);
|
||||||
}
|
}
|
||||||
|
reCalculateLeaderTimes(classId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -468,13 +468,23 @@ pFreePunch oEvent::addFreePunch(int time, int type, int card, bool updateStartFi
|
|||||||
|
|
||||||
fp->updateChanged();
|
fp->updateChanged();
|
||||||
fp->synchronize();
|
fp->synchronize();
|
||||||
|
|
||||||
// Update start/finish time
|
|
||||||
if (updateStartFinish && type == oPunch::PunchStart || type == oPunch::PunchFinish) {
|
|
||||||
pRunner tr = fp->getTiedRunner();
|
pRunner tr = fp->getTiedRunner();
|
||||||
if (tr && tr->getStatus() == StatusUnknown && time > 0) {
|
|
||||||
|
if (tr != nullptr) {
|
||||||
|
// Update start/finish time
|
||||||
|
if (updateStartFinish) {
|
||||||
|
int startType = oPunch::PunchStart;
|
||||||
|
int finishType = oPunch::PunchFinish;
|
||||||
|
pCourse pCrs = tr->getCourse(false);
|
||||||
|
if (pCrs) {
|
||||||
|
startType = pCrs->getStartPunchType();
|
||||||
|
finishType = pCrs->getFinishPunchType();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == startType || type == finishType) {
|
||||||
|
if (tr->getStatus() == StatusUnknown && time > 0) {
|
||||||
tr->synchronize();
|
tr->synchronize();
|
||||||
if (type == oPunch::PunchStart) {
|
if (type == startType) {
|
||||||
if (tr->getClassRef(false) && !tr->getClassRef(true)->ignoreStartPunch())
|
if (tr->getClassRef(false) && !tr->getClassRef(true)->ignoreStartPunch())
|
||||||
tr->setStartTime(time, true, false);
|
tr->setStartTime(time, true, false);
|
||||||
}
|
}
|
||||||
@ -482,7 +492,7 @@ pFreePunch oEvent::addFreePunch(int time, int type, int card, bool updateStartFi
|
|||||||
tr->setFinishTime(time);
|
tr->setFinishTime(time);
|
||||||
|
|
||||||
// Direct result
|
// Direct result
|
||||||
if (type == oPunch::PunchFinish && tr->getClassRef(false) && tr->getClassRef(true)->hasDirectResult()) {
|
if (type == finishType && tr->getClassRef(false) && tr->getClassRef(true)->hasDirectResult()) {
|
||||||
if (tr->getCourse(false) == 0 && tr->getCard() == 0) {
|
if (tr->getCourse(false) == 0 && tr->getCard() == 0) {
|
||||||
tr->setStatus(StatusOK, true, false, true);
|
tr->setStatus(StatusOK, true, false, true);
|
||||||
}
|
}
|
||||||
@ -498,8 +508,10 @@ pFreePunch oEvent::addFreePunch(int time, int type, int card, bool updateStartFi
|
|||||||
tr->synchronize(true);
|
tr->synchronize(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (fp->getTiedRunner())
|
}
|
||||||
|
|
||||||
pushDirectChange();
|
pushDirectChange();
|
||||||
|
}
|
||||||
return fp;
|
return fp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2317,3 +2317,9 @@ Ingen nummerlapp = Ingen nummerlapp
|
|||||||
Rogaining results for a team, where each team member collects points individually = Rogainingresultat för ett lag där varje lagmedlem samlar poäng individuellt
|
Rogaining results for a team, where each team member collects points individually = Rogainingresultat för ett lag där varje lagmedlem samlar poäng individuellt
|
||||||
prefsCodePage = Kodtabell för 8-bitars text vid import/export
|
prefsCodePage = Kodtabell för 8-bitars text vid import/export
|
||||||
Inga klasser tillåter direktanmälan. På sidan klasser kan du ändra denna egenskap. = Inga klasser tillåter direktanmälan.\n\nPå sidan klasser kan du ändra denna egenskap.
|
Inga klasser tillåter direktanmälan. På sidan klasser kan du ändra denna egenskap. = Inga klasser tillåter direktanmälan.\n\nPå sidan klasser kan du ändra denna egenskap.
|
||||||
|
Database is used and cannot be deleted = Databasen används och kan inte tas bort
|
||||||
|
Classes together = Klasser gemensamt
|
||||||
|
Finish order = Målgångsordning
|
||||||
|
First to finish = Först i mål
|
||||||
|
Individual result by finish time = Individuella resultat efter måltid
|
||||||
|
Endast tidtagning = Endast tidtagning
|
||||||
|
|||||||
@ -135,9 +135,12 @@ void TestMeOS::runProtected(bool protect) const {
|
|||||||
oe_main->setProperty("FirstTime", 0);
|
oe_main->setProperty("FirstTime", 0);
|
||||||
oe_main->setProperty("TestPath", tp);
|
oe_main->setProperty("TestPath", tp);
|
||||||
oe_main->getPropertyInt("UseEventor", 1);
|
oe_main->getPropertyInt("UseEventor", 1);
|
||||||
|
TabSI *tsi = dynamic_cast<TabSI*>(gdi_main->getTabs().get(TabType::TSITab));
|
||||||
|
tsi->setMode(TabSI::ModeReadOut);
|
||||||
//string pmOrig = oe_main->getPropertyString("PayModes", "");
|
//string pmOrig = oe_main->getPropertyString("PayModes", "");
|
||||||
//oe_main->setProperty("PayModes", "");
|
//oe_main->setProperty("PayModes", "");
|
||||||
|
|
||||||
|
OutputDebugString((L"Running test" + gdi_main->widen(test) + L"\n").c_str());
|
||||||
try {
|
try {
|
||||||
status = RUNNING;
|
status = RUNNING;
|
||||||
run();
|
run();
|
||||||
@ -153,6 +156,7 @@ void TestMeOS::runProtected(bool protect) const {
|
|||||||
gdi_main->isTestMode = false;
|
gdi_main->isTestMode = false;
|
||||||
}
|
}
|
||||||
catch (const meosAssertionFailure & ex) {
|
catch (const meosAssertionFailure & ex) {
|
||||||
|
OutputDebugString(L"Test FAILED (assert)\n");
|
||||||
status = FAILED;
|
status = FAILED;
|
||||||
oe_main->useDefaultProperties(false);
|
oe_main->useDefaultProperties(false);
|
||||||
gdi_main->clearDialogAnswers(false);
|
gdi_main->clearDialogAnswers(false);
|
||||||
@ -166,6 +170,8 @@ void TestMeOS::runProtected(bool protect) const {
|
|||||||
}
|
}
|
||||||
catch (const std::exception &ex) {
|
catch (const std::exception &ex) {
|
||||||
status = FAILED;
|
status = FAILED;
|
||||||
|
OutputDebugString(L"Test FAILED (std)\n");
|
||||||
|
|
||||||
oe_main->useDefaultProperties(false);
|
oe_main->useDefaultProperties(false);
|
||||||
gdi_main->clearDialogAnswers(false);
|
gdi_main->clearDialogAnswers(false);
|
||||||
gdi_main->dbRegisterSubCommand(0, "");
|
gdi_main->dbRegisterSubCommand(0, "");
|
||||||
@ -177,6 +183,8 @@ void TestMeOS::runProtected(bool protect) const {
|
|||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
catch (...) {
|
catch (...) {
|
||||||
|
OutputDebugString(L"Test FAILED (...)\n");
|
||||||
|
|
||||||
status = FAILED;
|
status = FAILED;
|
||||||
oe_main->useDefaultProperties(false);
|
oe_main->useDefaultProperties(false);
|
||||||
gdi_main->clearDialogAnswers(false);
|
gdi_main->clearDialogAnswers(false);
|
||||||
@ -195,7 +203,7 @@ void TestMeOS::runProtected(bool protect) const {
|
|||||||
for (size_t k = 0; k < tmpFiles.size(); k++)
|
for (size_t k = 0; k < tmpFiles.size(); k++)
|
||||||
removeTempFile(tmpFiles[k]);
|
removeTempFile(tmpFiles[k]);
|
||||||
tmpFiles.clear();
|
tmpFiles.clear();
|
||||||
|
OutputDebugString(L"Test PASSED\n");
|
||||||
if (protect) {
|
if (protect) {
|
||||||
cleanup();
|
cleanup();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user