Convert encoding from ISO-8859-1 to UTF-8

iconv -f ISO-8859-1 -t UTF-8

No more broken umlauts!
This commit is contained in:
Sebastian Lohff 2022-06-30 23:11:22 +02:00
parent 9f1d3c81d2
commit 9898b3404a
12 changed files with 83 additions and 83 deletions

View File

@ -102,7 +102,7 @@ CChapter *pChapter=0;
CZipArchive zip;
if (!zip.open(strFileName, CZipArchive::OpenReadOnly))
{
QMessageBox::critical(pParent, pParent->tr("Datei-Fehler"), pParent->tr("Konnte folgende Datei nicht zum Lesen öffnen:\n%1").arg(strFileName));
QMessageBox::critical(pParent, pParent->tr("Datei-Fehler"), pParent->tr("Konnte folgende Datei nicht zum Lesen öffnen:\n%1").arg(strFileName));
return false;
}
@ -234,7 +234,7 @@ QFile file (strFileName);
if (strFileName.isEmpty()) return false;
if (!file.open(QIODevice::WriteOnly))
{
QMessageBox::critical(pParent, QString(pParent->tr("Datei-Fehler")), pParent->tr("Konnte folgende Datei nicht zum Schreiben öffnen:\n")+strFileName);
QMessageBox::critical(pParent, QString(pParent->tr("Datei-Fehler")), pParent->tr("Konnte folgende Datei nicht zum Schreiben öffnen:\n")+strFileName);
return false;
}
QTextStream out(&file);
@ -315,7 +315,7 @@ int iErrLine, iErrCol;
if (!file.exists()) return true;
if (!file.open (QIODevice::ReadOnly))
{
QMessageBox::critical(pParent, QString(pParent->tr("Datei-Fehler")), pParent->tr("Konnte folgende Datei nicht zum Lesen öffnen:\n")+statisticFileName());
QMessageBox::critical(pParent, QString(pParent->tr("Datei-Fehler")), pParent->tr("Konnte folgende Datei nicht zum Lesen öffnen:\n")+statisticFileName());
return false;
}
QTextStream in (&file);
@ -375,7 +375,7 @@ QFile file (strFileName);
if (!file.open (QIODevice::WriteOnly))
{
QMessageBox::critical (pParent, pParent->tr("Fehler"), pParent->tr("Konnte folgende Datei nicht zum Schreiben öffnen.\n")+strFileName);
QMessageBox::critical (pParent, pParent->tr("Fehler"), pParent->tr("Konnte folgende Datei nicht zum Schreiben öffnen.\n")+strFileName);
return false;
}
QTextStream out(&file);

View File

@ -67,14 +67,14 @@ QVariant CCatalogModel::headerData (int section, Qt::Orientation orientation, in
else if (section == COL_QUESTION)
return tr("Fragen");
else if (section == COL_AVG)
return tr("Ø");
return tr("Ø");
else if (section == COL_ASSIST)
return tr("Lernassistent");
}
else if (role == Qt::ToolTipRole)
{
if (section == COL_CHAPTER)
return tr("Kapitelname\nBitte markieren Sie das Kapitel, das Sie lernen möchten.");
return tr("Kapitelname\nBitte markieren Sie das Kapitel, das Sie lernen möchten.");
else if (section == COL_QUESTION)
return tr("Anzahl d. Fragen inkl. Unterkapitel");
else if (section == COL_AVG)

View File

@ -275,14 +275,14 @@ void CChapter::updateStatisticCount()
return false;
*/
// Alle Statistiken zurücksetzen
// Alle Statistiken zurücksetzen
m_uNeverAskedCount = 0;
m_bHasLearningNew = false;
m_bHasKnownQuestions = false;
m_bHasKnownQuestionsRepeatToday = false;
for (int i=0; i<=LEVEL_MAX; i++) m_uLevelCount[i] = 0;
// Zuerst Statistiken für Unterkapitel berechnen und integrieren
// Zuerst Statistiken für Unterkapitel berechnen und integrieren
for (int i=0; i<m_listChapter.size(); i++)
{
CChapter *p = m_listChapter.at(i);
@ -295,7 +295,7 @@ void CChapter::updateStatisticCount()
if (p->hasKnownQuestionsRepeatToday()) m_bHasKnownQuestionsRepeatToday = true;
}
// Anschließend Statistiken für eigene Fragen neu berechnen und hinzufügen
// Anschließend Statistiken für eigene Fragen neu berechnen und hinzufügen
for (int i=0; i<m_listQuestion.size(); i++)
{
CQuestion *q = m_listQuestion.at(i);
@ -322,7 +322,7 @@ void CChapter::updateRecommendationStatistic()
}
/*
Berechnet die Statistik für das Kapitel inkl. aller Unterkapitel neu.
Berechnet die Statistik für das Kapitel inkl. aller Unterkapitel neu.
*/
void CChapter::updateStatistic()
{
@ -369,10 +369,10 @@ QString str;
}
/*!
Das empfohlene Wiederholdatum eines Kapitels das frühestete Datum,
Das empfohlene Wiederholdatum eines Kapitels das frühestete Datum,
an dem eine Frage des Kapitels oder Unterkapitels wiederholt werden sollte.
\return Datum, wann das Kapitel wiederholt werden soll.
Gibt es kein solches Datum, so wird ein ungültiges Datum (QDate::isValid()) zurückgegeben.
Gibt es kein solches Datum, so wird ein ungültiges Datum (QDate::isValid()) zurückgegeben.
Hinweis: Das Datum kann auch in der Vergangenheit liegen!
*/
QDate CChapter::repeatDate() const
@ -392,7 +392,7 @@ QList<CQuestion*> list = questionPool();
/*!
Die Variable m_recomRepeatDate muss up to date sein!
\return Lernempfehlung dieses Kapitels ohne Berücksichtigung evt. vorhandener ünter- oder übergeordneter Kapitel.
\return Lernempfehlung dieses Kapitels ohne Berücksichtigung evt. vorhandener ünter- oder übergeordneter Kapitel.
\sa m_recomRepeatDate
*/
@ -417,7 +417,7 @@ CChapter::Recommendation CChapter::recommendationIndividual() const
}
/*!
Aktualisiert die Lernempfehlung für dieses Kapitel und alle Unterkapitel
Aktualisiert die Lernempfehlung für dieses Kapitel und alle Unterkapitel
\sa m_recom
*/
void CChapter::updateRecommendation()
@ -525,7 +525,7 @@ unsigned uDays=0;
case RecommendationSubChapter:
return tr("Zuerst Unterkapitel lernen");
case RecommendationParentChapter:
return tr("Übergeordnetes Kapitel lernen");
return tr("Übergeordnetes Kapitel lernen");
case RecommendationLearnNew:
return tr("Neue Fragen lernen");
case RecommendationRepeatToday:
@ -592,12 +592,12 @@ QString str;
str = tr("Keine Lernempfehlung");
break;
case RecommendationSubChapter:
str = tr("Dieses Kapitel enthält Unterkapitel, dessen Fragen Sie noch nicht ausreichend gelernt haben.\nEs wird empohlen in kleinen Etappen zu lernen und damit zuerst die Unterkapitel zu vertiefen.");
str = tr("Dieses Kapitel enthält Unterkapitel, dessen Fragen Sie noch nicht ausreichend gelernt haben.\nEs wird empohlen in kleinen Etappen zu lernen und damit zuerst die Unterkapitel zu vertiefen.");
break;
case RecommendationParentChapter:
if (levelAvgRounded() >= LEVEL_NORMAL)
str = tr("Sie können die Fragen dieses Kapitels gut beantworten.\n");
str += tr("Es wird empfohlen, alle Fragen des übergeordneten Kapitels gemischt zusammen zu lernen.");
str = tr("Sie können die Fragen dieses Kapitels gut beantworten.\n");
str += tr("Es wird empfohlen, alle Fragen des übergeordneten Kapitels gemischt zusammen zu lernen.");
break;
case RecommendationLearnNew:
if (!isRecommendedNow(pCatalog))
@ -606,23 +606,23 @@ QString str;
str = tr("Bitte beantworten Sie alle neuen Fragen mindestens einmal richtig.");
break;
case RecommendationRepeatToday:
str = tr("Bitte lernen Sie alle heute zu wiederholenden Fragen, bis sie eine Lernfortschritts-Stufe höher eingestuft sind.");
str = tr("Bitte lernen Sie alle heute zu wiederholenden Fragen, bis sie eine Lernfortschritts-Stufe höher eingestuft sind.");
break;
case RecommendationRepeatLater:
uDays = QDate::currentDate().daysTo(m_recomRepeatDate);
if (uDays > 1)
str = tr("Die Wiederholung dieses Kapitels ist erst in %1 Tagen geplant.\n").arg(uDays);
else
str = tr("Die Wiederholung dieses Kapitels ist erst für morgen geplant.\n");
str = tr("Die Wiederholung dieses Kapitels ist erst für morgen geplant.\n");
if (pCatalog->m_uRecomCount[RecommendationRepeatToday] > 0)
str += tr("Es gibt andere Kapitel, deren Fragen heute wiederholt werden müssen. Bitte lernen Sie diese Kapitel zuerst.");
str += tr("Es gibt andere Kapitel, deren Fragen heute wiederholt werden müssen. Bitte lernen Sie diese Kapitel zuerst.");
else if (pCatalog->m_uRecomCount[RecommendationLearnNew] > 0)
str += tr("Bitte lernen Sie zuerst Kapitel mit neuen Fragen.");
break;
}
if (hasRecommendedQuestions() && isRecommendedNow(pCatalog))
str += tr("<p>Dafür sind noch %1 Fragen zu lernen.").arg(recommendedQuestionCount());
str += tr("<p>Dafür sind noch %1 Fragen zu lernen.").arg(recommendedQuestionCount());
return str;
}
@ -634,14 +634,14 @@ QString str;
if (m_recom2 == RecommendationLearnNew || (m_recom == RecommendationLearnNew && !isRecommendedNow(pCatalog)))
{
//str = tr("Bitte beantworten Sie alle neuen Fragen mindestens einmal richtig.");
str = tr("Alternativ können Sie jetzt die neuen Fragen dieses Kapitels lernen (%1 Fragen).").arg(recommendedQuestionCount());
str = tr("Alternativ können Sie jetzt die neuen Fragen dieses Kapitels lernen (%1 Fragen).").arg(recommendedQuestionCount());
}
else if (m_recom2 == RecommendationRepeatToday)
{
if (m_recom == RecommendationSubChapter)
str = tr("Bitte lernen Sie alle heute zu wiederholenden Fragen, bis sie eine Lernfortschritts-Stufe höher eingestuft sind (%1 Fragen).").arg(recommendedQuestionCount());
str = tr("Bitte lernen Sie alle heute zu wiederholenden Fragen, bis sie eine Lernfortschritts-Stufe höher eingestuft sind (%1 Fragen).").arg(recommendedQuestionCount());
else
str = tr("Alternativ können Sie jetzt die heute zu wiederholenden Fragen dieses Kapitels lernen (%1 Fragen).").arg(recommendedQuestionCount());
str = tr("Alternativ können Sie jetzt die heute zu wiederholenden Fragen dieses Kapitels lernen (%1 Fragen).").arg(recommendedQuestionCount());
}
return str;
@ -676,7 +676,7 @@ QString CChapter::recommendationIconName(const CCatalog *pCatalog) const
/*!
\return true: Kapitel kann jetzt gelernt werden,
false: Kapitel sollte überhaupt nicht oder erst später gelernt werden
false: Kapitel sollte überhaupt nicht oder erst später gelernt werden
*/
bool CChapter::isRecommendedNow(const CCatalog *pCatalog) const
@ -700,7 +700,7 @@ bool CChapter::isRecommendedNow(const CCatalog *pCatalog) const
}
/*
\return true: Das Kapitel enthält noch neue Fragen, die gerade (="heute") gelernt werden
\return true: Das Kapitel enthält noch neue Fragen, die gerade (="heute") gelernt werden
bool CChapter::isLearningNew() const
{
for (int i=0; i<m_listQuestion.size(); i++)

View File

@ -139,14 +139,14 @@ QVariant CChapterModel::headerData (int section, Qt::Orientation orientation, in
else if (section == COL_QUESTION)
return tr("Fragen");
else if (section == COL_AVG)
return tr("Ø");
return tr("Ø");
else if (section == COL_ASSIST)
return tr("Lernassistent");
}
else if (role == Qt::ToolTipRole)
{
if (section == COL_CHAPTER)
return tr("Kapitelname\nBitte markieren Sie das Kapitel, das Sie lernen möchten.");
return tr("Kapitelname\nBitte markieren Sie das Kapitel, das Sie lernen möchten.");
else if (section == COL_QUESTION)
return tr("Anzahl d. Fragen inkl. Unterkapitel");
else if (section == COL_AVG)

View File

@ -71,7 +71,7 @@ bool CDlgExam::setup (const CExam& exam)
void CDlgExam::init()
{
// Zeitbalken & Zeitüberwachung
// Zeitbalken & Zeitüberwachung
m_timer.setInterval(1000);
m_timer.start();
m_dtStart = QDateTime::currentDateTime();
@ -141,7 +141,7 @@ unsigned uSecs = m_dtStart.secsTo(dt);
{
m_bTimeout = true;
m_timer.stop();
QMessageBox::information(this, tr("Information"), tr("Die Zeit ist abgelaufen.\nDie Prüfung wird deswegen beendet."));
QMessageBox::information(this, tr("Information"), tr("Die Zeit ist abgelaufen.\nDie Prüfung wird deswegen beendet."));
on_pbFinish_clicked();
}
}
@ -273,23 +273,23 @@ unsigned uSecs = m_dtStart.secsTo(dt);
bPassed = false;
bSaveStat = false;
labResult->setText(tr("Ohne Wertung\n(Nicht bestanden)"));
QMessageBox::information(this, tr("Information"), tr("Sie haben weniger als die Hälfte aller Fragen beantwortet.\nDiese Prüfung wird deswegen nicht gewertet."));
QMessageBox::information(this, tr("Information"), tr("Sie haben weniger als die Hälfte aller Fragen beantwortet.\nDiese Prüfung wird deswegen nicht gewertet."));
}
else if (uErrorPoints > m_exam.maxErrorPoints())
{
bPassed = false;
labResult->setText(tr("<font color='red'>Nicht bestanden</font>"));
QMessageBox::information(this, tr("Ergebnis"), tr("Sie haben die Prüfung leider nicht bestanden."));
QMessageBox::information(this, tr("Ergebnis"), tr("Sie haben die Prüfung leider nicht bestanden."));
}
else
{
bPassed = true;
labResult->setText(tr("<font color='green'>Bestanden</font>"));
QMessageBox::information(this, tr("Ergebnis"), tr("<b>Herzlichen Glückwunsch!</b><p>Sie haben die Prüfung bestanden!"));
QMessageBox::information(this, tr("Ergebnis"), tr("<b>Herzlichen Glückwunsch!</b><p>Sie haben die Prüfung bestanden!"));
}
if (bSaveStat)
{ // Prüfungsstatistik speichern
{ // Prüfungsstatistik speichern
CExamStat es(m_exam);
es.setSecs(uSecs);
es.setQuestions(m_listQuestion, m_listAnswerMask);

View File

@ -85,7 +85,7 @@ void CDlgExamSelect::on_buttonBox_accepted()
{
if (m_iSelectedExam == -1)
{
QMessageBox::information(this, tr("Information"), tr("Bitte eine Prüfung auswählen!"));
QMessageBox::information(this, tr("Information"), tr("Bitte eine Prüfung auswählen!"));
return;
}
accept();

View File

@ -34,7 +34,7 @@ CDlgExamStatistic::CDlgExamStatistic(QWidget *pParent) : QDialog(pParent)
twExamStat->headerItem()->setText(1, "Ergebnis");
twExamStat->headerItem()->setText(2, "Fehler");
twExamStat->headerItem()->setText(3, "Dauer");
twExamStat->headerItem()->setText(4, "Ø pro Frage");
twExamStat->headerItem()->setText(4, "Ø pro Frage");
twExamStat->header()->resizeSection(0, 130);
twExamStat->header()->resizeSection(2, 50);
@ -47,7 +47,7 @@ void CDlgExamStatistic::go (CCatalog *pCatalog)
if (pCatalog->countExamStat() == 0)
{
QMessageBox::information(parentWidget(), tr("Information"), tr("Es wurden bisher noch keine Prüfungen durchgeführt."));
QMessageBox::information(parentWidget(), tr("Information"), tr("Es wurden bisher noch keine Prüfungen durchgeführt."));
return;
}

View File

@ -177,7 +177,7 @@ CQuestion *p = 0;
if (m_bAssistantEnable && m_pChapter->hasRecommendedQuestions())
{
// if (afu_random (0, 99) >= 0) // hier kann ggf. das Verhältnis zwischen RecommendedQuestion und Zufalls-Question ausgewählt werden
// if (afu_random (0, 99) >= 0) // hier kann ggf. das Verhältnis zwischen RecommendedQuestion und Zufalls-Question ausgewählt werden
// {
p = findNextTargetQuestion();
// Wichtig: p kann hier immernoch 0 sein! Dies bedeutet, dass keine passende Frage im TargetPool gefunden wurde.
@ -202,7 +202,7 @@ unsigned uRnd=0;
{
if (list.at(0) == m_pQuestion)
// Regel: Niemals die gleiche Frage mehrfach hintereinander
// -> kann hier nicht erfüllt werden -> 0 zurückgeben -> hole Frage aus allg. Pool (siehe findNextQuestion)
// -> kann hier nicht erfüllt werden -> 0 zurückgeben -> hole Frage aus allg. Pool (siehe findNextQuestion)
return 0;
else
return list.at(0);
@ -257,7 +257,7 @@ unsigned uRndMax = 0;
do /* diese Schleife verhindert, dass eine Frage zweimal hintereinander kommt */
{
do /* diese Schleife wählt die Abfragehäufigkeit aus */
do /* diese Schleife wählt die Abfragehäufigkeit aus */
{
uRnd = afu_random (1, uRndMax);
uLevel = LEVEL_MAX;
@ -268,7 +268,7 @@ unsigned uRndMax = 0;
}
while (uCountQuestion[uLevel] == 0);
// Zufällige Frage bestimmen
// Zufällige Frage bestimmen
uRnd = afu_random (1, uCountQuestion[uLevel]);
for (i=0; i<m_listQuestion.size()-1; i++)
if (m_listQuestion[i]->level() == uLevel && --uRnd == 0) break;
@ -284,7 +284,7 @@ QString str, strCheat;
if (m_listQuestion.size() == 0)
{
QMessageBox::critical (this, "Fehler", "Es gibt keine Fragen, die gelernt werden könnten!");
QMessageBox::critical (this, "Fehler", "Es gibt keine Fragen, die gelernt werden könnten!");
accept();
return;
}
@ -367,7 +367,7 @@ unsigned uAnswerMask = 1<<i;
pbAssistant->setToolTip(tr("Lern-Assistent aufrufen"));
pbIgnore->setToolTip(tr("Meldung ignorieren, dieses Kapitel weiterlernen"));
pbExit->setToolTip(tr("Lernmodus beenden"));
msgBox.setText(tr("<b>Herzlichen Glückwunsch!</b><p>Sie haben das heutige Lernziel für dieses Kapitel erreicht.<br>Bitte folgen Sie den weiteren Empfehlungen des Lernassistents."));
msgBox.setText(tr("<b>Herzlichen Glückwunsch!</b><p>Sie haben das heutige Lernziel für dieses Kapitel erreicht.<br>Bitte folgen Sie den weiteren Empfehlungen des Lernassistents."));
msgBox.setWindowTitle(tr("Ziel erreicht"));
msgBox.exec();

View File

@ -97,7 +97,7 @@ void CDlgLearnAssistant::on_buttonBox_accepted()
QModelIndexList list = tvChapters->selectionModel()->selectedIndexes();
if (rbList->isChecked() && list.isEmpty())
{
QMessageBox::information(this, tr("Information"), tr("Bitte markieren Sie in der Liste ein Kapitel, das Sie lernen möchten!"));
QMessageBox::information(this, tr("Information"), tr("Bitte markieren Sie in der Liste ein Kapitel, das Sie lernen möchten!"));
return;
}
accept();

View File

@ -87,7 +87,7 @@ CQuestion *q=0;
if (listSelected.size() < questionCount())
{
throw CError (
QString("Für den regulären Ausdruck '%1' wurden nur %2 Fragen gefunden - zu wenig, um daraus %3 Fragen für die Prüfung auszuwählen.")
QString("Für den regulären Ausdruck '%1' wurden nur %2 Fragen gefunden - zu wenig, um daraus %3 Fragen für die Prüfung auszuwählen.")
.arg(m_strRegExp).arg(listSelected.size()).arg(questionCount()), __PRETTY_FUNCTION__, __FILE__, __LINE__);
}
@ -181,7 +181,7 @@ QList<CQuestion*> CExam::createQuestionPool(const QList<CQuestion*>& listAllQues
QList<CQuestion*> listRet;
#ifdef DEBUGMSG
qDebug ("Erzeuge Prüfungsfragen für '%s'", qPrintable(name()));
qDebug ("Erzeuge Prüfungsfragen für '%s'", qPrintable(name()));
#endif
try
@ -193,12 +193,12 @@ QList<CQuestion*> listRet;
}
catch (CError e)
{
e.preText(QString("Konnte Prüfung '%1' nicht erzeugen.").arg(name()));
e.preText(QString("Konnte Prüfung '%1' nicht erzeugen.").arg(name()));
throw;
}
#ifdef DEBUGMSG
qDebug ("Insg. %i Prüfungsfragen ausgewählt", listRet.size());
qDebug ("Insg. %i Prüfungsfragen ausgewählt", listRet.size());
for (int i=0; i<listRet.size(); i++)
qDebug ("\t%i. Frage ID '%s'", i+1, qPrintable(listRet.at(i)->id()));
#endif

View File

@ -137,11 +137,11 @@ void CMainWindow::setCatalog (CCatalog *pCatalog)
QDate d = m_pCatalog->validUntil();
if (d.isValid() && d < QDate::currentDate())
{
QString str = tr("<b>Dieser Fragenkatalog ist seit dem %1 nicht mehr gültig!</b>").arg(d.toString(Qt::LocalDate));
QString str = tr("<b>Dieser Fragenkatalog ist seit dem %1 nicht mehr gültig!</b>").arg(d.toString(Qt::LocalDate));
if (!m_pCatalog->publisher().isEmpty())
str += tr("<p>Weitere Informationen zur Gültigkeit erhalten Sie vom Herausgeber:<br>")+m_pCatalog->publisher();
str += tr("<p>Weitere Informationen zur Gültigkeit erhalten Sie vom Herausgeber:<br>")+m_pCatalog->publisher();
if (!m_pCatalog->contact().isEmpty())
str += tr("<p>Einen aktuellen Fragenkatalog für den AFUTrainer erhalten Sie evt. von:<br>")+m_pCatalog->contact();
str += tr("<p>Einen aktuellen Fragenkatalog für den AFUTrainer erhalten Sie evt. von:<br>")+m_pCatalog->contact();
QMessageBox::warning(this, tr("Warnung"), str);
}
@ -154,7 +154,7 @@ QString str;
if (m_pCatalog == 0) return false;
str = m_pCatalog->checkForErrors();
if (str.isEmpty()) return false;
QMessageBox::critical(this, tr("Fehler im Fragenkatalog"), tr("Die gewünschte Funktion kann nicht ausgeführt werden, da der Fragenkatalog folgende Fehler enthält:<p>")+ str);
QMessageBox::critical(this, tr("Fehler im Fragenkatalog"), tr("Die gewünschte Funktion kann nicht ausgeführt werden, da der Fragenkatalog folgende Fehler enthält:<p>")+ str);
return true;
}
@ -181,7 +181,7 @@ void CMainWindow::on_actFileOpen_triggered()
{
QString strFileName;
if (!checkForHomeDir()) return;
strFileName = QFileDialog::getOpenFileName(this, tr("Öffne Fragenkatalog"), QString(), tr("Amateur Radio Questionary Data Format (*.aqz)\nAlle Dateien (*.*)"));
strFileName = QFileDialog::getOpenFileName(this, tr("Öffne Fragenkatalog"), QString(), tr("Amateur Radio Questionary Data Format (*.aqz)\nAlle Dateien (*.*)"));
onOpenFile(strFileName);
}
@ -207,7 +207,7 @@ void CMainWindow::on_actFileInformation_triggered()
CDlgInformation dlg(this);
if (!m_pCatalog)
{
QMessageBox::information(this, tr("Information"), tr("Kein Fragenkatalog geladen, zu dem Informationen angezeigt werden könnten."));
QMessageBox::information(this, tr("Information"), tr("Kein Fragenkatalog geladen, zu dem Informationen angezeigt werden könnten."));
return;
}
dlg.setup(m_pCatalog);
@ -270,13 +270,13 @@ enum LastAdded {None, Chapter, Question, Answer};
LastAdded la=None;
CCatalog *pCatalog=0;
strFileName = QFileDialog::getOpenFileName(this, tr("Öffne Datei zum Fragenkatalog-Import"), QString("D:/projekte/afutrainer/fragenkataloge/2007-02/Klasse A Technik/"), tr("TXT-Dateien (*.txt)\nAlle Dateien (*.*)"));
strFileName = QFileDialog::getOpenFileName(this, tr("Öffne Datei zum Fragenkatalog-Import"), QString("D:/projekte/afutrainer/fragenkataloge/2007-02/Klasse A Technik/"), tr("TXT-Dateien (*.txt)\nAlle Dateien (*.*)"));
if (strFileName.isEmpty()) return;
QFile file(strFileName);
if(!file.open(QIODevice::ReadOnly))
{
QMessageBox::information(this, tr("Fehler"), tr("Konnte Datei '%1' nicht zum Lesen öffnen!").arg(strFileName));
QMessageBox::information(this, tr("Fehler"), tr("Konnte Datei '%1' nicht zum Lesen öffnen!").arg(strFileName));
return;
}
QTextStream in(&file);
@ -285,7 +285,7 @@ strFileName = QFileDialog::getOpenFileName(this, tr("
while (!in.atEnd())
{
strLine = in.readLine().trimmed();
if (strLine.isEmpty() || strLine.contains(QRegExp("^Prüfungsfragen")) || strLine.contains("^Bundesnetzagentur"))
if (strLine.isEmpty() || strLine.contains(QRegExp("^Prüfungsfragen")) || strLine.contains("^Bundesnetzagentur"))
{
la = None;
}
@ -370,7 +370,7 @@ strFileName = QFileDialog::getOpenFileName(this, tr("
}
}
// Bilder hinzufügen
// Bilder hinzufügen
QList<CQuestion*> listPool = pCatalog->questionPool();
QDir dirPath(strFileName.left(strFileName.lastIndexOf('/')));
for (int i=0; i<listPool.size(); i++)
@ -380,7 +380,7 @@ strFileName = QFileDialog::getOpenFileName(this, tr("
for (int j=0; j<strlFiles.size(); j++)
{
QString strImgFile = strlFiles.at(j).toLower();
// Überprüfen, ob Verweis
// Überprüfen, ob Verweis
if (strImgFile.contains("_"))
{ // Ja, Verweis
QString strImgFile1 = strImgFile.left(strImgFile.indexOf('_'));
@ -438,18 +438,18 @@ strFileName = QFileDialog::getOpenFileName(this, tr("
}
else
{
qDebug ("Konnte Grafik %s nicht zuordnen.\n\tMögliche Gründe: Frage oder Antwort existiert nicht. Dateiname der Grafik falsch geschrieben.", qPrintable(strImgFile));
qDebug ("Konnte Grafik %s nicht zuordnen.\n\tMögliche Gründe: Frage oder Antwort existiert nicht. Dateiname der Grafik falsch geschrieben.", qPrintable(strImgFile));
}
}
}
pCatalog->setName("Importierter Katalog von " + strFileName);
QMessageBox::information(this, tr("Information"),
"Bitte Debug-Ausgabe überprüfen, ob alle Grafik-Dateien zugeordnet wurden!<p>"
"Bitte überprüfen, ob alle Kapitel korrekt erkannt wurden. "
"Bitte Debug-Ausgabe überprüfen, ob alle Grafik-Dateien zugeordnet wurden!<p>"
"Bitte überprüfen, ob alle Kapitel korrekt erkannt wurden. "
"Wenn nicht, muss die TXT-Datei von Hand kontrolliert werden!<hr>"+strChapter);
qDebug("Weitere Vorgehensweise:\n\t1. Fragenkatalog als XML-Datei abspeichern.\n\t2. ggf. Korrekturen in der XML-Datei vornehmen\n\t3. XML-Datei und alle Grafik-Dateien in ein ZIP-Archiv packen und die Dateiänderung auf .atc ändern.\n\tFertig!");
qDebug("Weitere Vorgehensweise:\n\t1. Fragenkatalog als XML-Datei abspeichern.\n\t2. ggf. Korrekturen in der XML-Datei vornehmen\n\t3. XML-Datei und alle Grafik-Dateien in ein ZIP-Archiv packen und die Dateiänderung auf .atc ändern.\n\tFertig!");
setCatalog (pCatalog);
}
@ -481,13 +481,13 @@ enum LastAdded {None, Chapter, Question, Answer};
LastAdded la=None;
CCatalog *pCatalog=0;
strFileName = QFileDialog::getOpenFileName(this, tr("Öffne Datei zum Fragenkatalog-Import"), QString("D:/projekte/afutrainer/fragenkataloge/US/"), tr("TXT-Dateien (*.txt)\nAlle Dateien (*.*)"));
strFileName = QFileDialog::getOpenFileName(this, tr("Öffne Datei zum Fragenkatalog-Import"), QString("D:/projekte/afutrainer/fragenkataloge/US/"), tr("TXT-Dateien (*.txt)\nAlle Dateien (*.*)"));
if (strFileName.isEmpty()) return;
QFile file(strFileName);
if(!file.open(QIODevice::ReadOnly))
{
QMessageBox::information(this, tr("Fehler"), tr("Konnte Datei '%1' nicht zum Lesen öffnen!").arg(strFileName));
QMessageBox::information(this, tr("Fehler"), tr("Konnte Datei '%1' nicht zum Lesen öffnen!").arg(strFileName));
return;
}
QTextStream in(&file);
@ -633,10 +633,10 @@ strFileName = QFileDialog::getOpenFileName(this, tr("
pCatalog->setName("Importierter Katalog von " + strFileName);
QMessageBox::information(this, tr("Information"),
"Bitte überprüfen, ob alle Kapitel korrekt erkannt wurden. "
"Bitte überprüfen, ob alle Kapitel korrekt erkannt wurden. "
"Wenn nicht, muss die TXT-Datei von Hand kontrolliert werden!<hr>"+strChapter);
qDebug("Weitere Vorgehensweise:\n\t1. Fragenkatalog als XML-Datei abspeichern.\n\t2. ggf. Korrekturen in der XML-Datei vornehmen\n\t3. XML-Datei und alle Grafik-Dateien in ein ZIP-Archiv packen und die Dateiänderung auf .atc ändern.\n\tFertig!");
qDebug("Weitere Vorgehensweise:\n\t1. Fragenkatalog als XML-Datei abspeichern.\n\t2. ggf. Korrekturen in der XML-Datei vornehmen\n\t3. XML-Datei und alle Grafik-Dateien in ein ZIP-Archiv packen und die Dateiänderung auf .atc ändern.\n\tFertig!");
setCatalog (pCatalog);
}
@ -674,7 +674,7 @@ QModelIndexList list = m_pViewChapter->selectionModel()->selectedIndexes();
if (checkForErrors()) return;
if (list.isEmpty())
{
QMessageBox::information(this, tr("Information"), tr("Bitte ein Kapitel zum Lernen auswählen!"));
QMessageBox::information(this, tr("Information"), tr("Bitte ein Kapitel zum Lernen auswählen!"));
return;
}
CChapter *p = (CChapter*)list.first().internalPointer();
@ -707,7 +707,7 @@ CExam exam;
iCount = m_pCatalog->countExam();
if (iCount == 0)
{
QMessageBox::information(this, tr("Information"), tr("Dieser Fragenkatalog enthält keine Prüfungen."));
QMessageBox::information(this, tr("Information"), tr("Dieser Fragenkatalog enthält keine Prüfungen."));
return;
}
else if (iCount == 1)
@ -734,7 +734,7 @@ CDlgExamStatistic dlg(this);
if (checkForErrors()) return;
if (m_pCatalog->countExam() == 0)
{
QMessageBox::information(this, tr("Information"), tr("Dieser Fragenkatalog enthält keine Prüfungen."));
QMessageBox::information(this, tr("Information"), tr("Dieser Fragenkatalog enthält keine Prüfungen."));
return;
}
dlg.go(m_pCatalog);
@ -779,7 +779,7 @@ QString str = tr("<b>AFUTrainer Version 3.0</b><br>"
"along with this program; if not, write to the "
"Free Software Foundation, Inc., "
"59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.");
QMessageBox::about(this,tr("Über..."), str);
QMessageBox::about(this,tr("Über..."), str);
}
void CMainWindow::on_actHelpAboutQt_triggered()

View File

@ -153,7 +153,7 @@ QString str, strHints;
str += " " + repeatDateTextExtended();
if (!m_listAnswerClicked.isEmpty())
{
str += "<br><br><table><tr><th>Datum/Uhrzeit&nbsp;</th><th>Antwort&nbsp;</th><th>Richtig?&nbsp;</th><th>Benötigte Zeit</th></tr>";
str += "<br><br><table><tr><th>Datum/Uhrzeit&nbsp;</th><th>Antwort&nbsp;</th><th>Richtig?&nbsp;</th><th>Benötigte Zeit</th></tr>";
for (int i=0; i<m_listAnswerClicked.size(); i++)
{
CAnswerClicked ac = m_listAnswerClicked.at(i);
@ -337,17 +337,17 @@ int iAnswerCount = 0;
iAnswerCount = countAnswer();
if (iAnswerCount != 4)
str += QObject::tr("Die Frage %1 hat nicht exakt vier Antworten, sondern %2 Stück.").arg(id()).arg(iAnswerCount) + "<br>";
str += QObject::tr("Die Frage %1 hat nicht exakt vier Antworten, sondern %2 Stück.").arg(id()).arg(iAnswerCount) + "<br>";
iAnswerCount = countCorrectAnswer();
if (iAnswerCount != 1)
str += QObject::tr("Die Frage %1 hat nicht exakt eine richtige Antwort, sondern %2 Stück.").arg(id()).arg(iAnswerCount) + "<br>";
str += QObject::tr("Die Frage %1 hat nicht exakt eine richtige Antwort, sondern %2 Stück.").arg(id()).arg(iAnswerCount) + "<br>";
for (int j=0; j<countAnswer(); j++)
{
if (answerAt(j).text().isEmpty())
str += QObject::tr("Die Antwort %1 der Frage %2 enthält keinen Text.").arg(QChar('A' + j)).arg(id()) + "<br>";
str += QObject::tr("Die Antwort %1 der Frage %2 enthält keinen Text.").arg(QChar('A' + j)).arg(id()) + "<br>";
}
if (text().isEmpty())
str += QObject::tr("Die Frage %1 enthält keinen Text.").arg(id()) + "<br>";
str += QObject::tr("Die Frage %1 enthält keinen Text.").arg(id()) + "<br>";
return str;
}
@ -415,7 +415,7 @@ QString CQuestion::correctionText(const unsigned uAnswerMask)
}
else
{
return QObject::tr("Ihre Antwort %1 war leider falsch. Die richtige Antwort wäre %2 gewesen.")
return QObject::tr("Ihre Antwort %1 war leider falsch. Die richtige Antwort wäre %2 gewesen.")
.arg(answerMaskToString(uAnswerMask)).arg(answerMaskToString(correctAnswerMask()));
}
}
@ -488,7 +488,7 @@ QString CQuestion::levelText(const unsigned uLevel)
case LEVEL_VERYOFTEN:
return QObject::tr("Ahnungslos");
case LEVEL_OFTEN:
return QObject::tr("Anfänger");
return QObject::tr("Anfänger");
case LEVEL_NORMAL:
return QObject::tr("Fortgeschritten");
case LEVEL_RARE:
@ -553,16 +553,16 @@ unsigned uLevelOld=0, uLevelNew=0;
uLevelNew = levelAtEndOfDay(dtLastClicked.date());
if (uLevelOld == uLevelNew)
strRet += tr("Die Einstufung des Lernfortschritts änderte sich an diesem Tag nicht.");
strRet += tr("Die Einstufung des Lernfortschritts änderte sich an diesem Tag nicht.");
else
strRet += tr("Der Lernfortschritt änderte sich an diesem Tag von '%1' auf '%2'.").arg(levelText(uLevelOld), levelText(uLevelNew));
strRet += tr("Der Lernfortschritt änderte sich an diesem Tag von '%1' auf '%2'.").arg(levelText(uLevelOld), levelText(uLevelNew));
return strRet;
}
/*!
\return Datum, an dem die Frage wiederholt werden soll.
Gibt es kein solches Datum, so wird ein ungültiges Datum (QDate::isValid()) zurückgegeben.
Gibt es kein solches Datum, so wird ein ungültiges Datum (QDate::isValid()) zurückgegeben.
Hinweis: Das Datum kann auch in der Vergangenheit liegen!
*/
@ -699,7 +699,7 @@ bool CQuestion::isLearningNew() const
}
/*!
\return true: Die Frage wurde gestern oder früher zum ersten Mal beantwortet
\return true: Die Frage wurde gestern oder früher zum ersten Mal beantwortet
*/
bool CQuestion::isKnownQuestion() const
{