[fix:] check for changes on OnOpenClick()

This commit is contained in:
Elias Fierke
2025-03-15 14:33:22 +01:00
parent 3aead35971
commit fa39195bc3

View File

@@ -294,6 +294,17 @@ namespace PLG_Exam
if (result != null && result.Length > 0) if (result != null && result.Length > 0)
{ {
if (!_isSaved)
{
var result2 = await MessageBox.Show(this, "Möchten Sie die aktuellen Änderungen speichern?",
"Nicht gespeicherte Änderungen", MessageBoxButton.YesNoCancel);
if (result2 == MessageBoxResult.Cancel) return;
if (result2 == MessageBoxResult.Yes) {
if((await SaveAs()) != true){
return;
}
}
}
LoadFromFile(result[0]); LoadFromFile(result[0]);
} }
} }
@@ -663,8 +674,8 @@ namespace PLG_Exam
private async void ExportToPdf() private async void ExportToPdf()
{ {
try // try
{ // {
_ = GetCurrentExamDataAsJson(); _ = GetCurrentExamDataAsJson();
@@ -757,15 +768,21 @@ namespace PLG_Exam
informationRect informationRect
); );
var page = $"Seite {document.PageCount}";
endpageGfx.DrawString(page, fontsmall, XBrushes.Gray, new XRect(50, gfx.PageSize.Height - 50 + 15, gfx.PageSize.Width - 50 * 2, 50), XStringFormats.TopRight);
endpageGfx.Dispose();
gfx.Dispose();
//AddPageNumbers(document, fontsmall, 35);
document.Save(filePath); document.Save(filePath);
await MessageBox.Show(this, "PDF erfolgreich gespeichert!", "Erfolg", MessageBoxButton.Ok); await MessageBox.Show(this, "PDF erfolgreich gespeichert!", "Erfolg", MessageBoxButton.Ok);
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
Console.WriteLine($"Fehler beim PDF-Export: {ex.Message}"); // Console.WriteLine($"Fehler beim PDF-Export: {ex.Message}");
await MessageBox.Show(this, "Fehler beim PDF-Export.", "Fehler", MessageBoxButton.Ok); // await MessageBox.Show(this, "Fehler beim PDF-Export.", "Fehler", MessageBoxButton.Ok);
} // }
} }
private bool isInternetAvailable() private bool isInternetAvailable()
@@ -774,7 +791,7 @@ namespace PLG_Exam
{ {
using (var ping = new Ping()) using (var ping = new Ping())
{ {
var reply = ping.Send("8.8.8.8", 7000); // 3000 ms timeout var reply = ping.Send("8.8.8.8", 2000); // 3000 ms timeout
return reply.Status == IPStatus.Success; return reply.Status == IPStatus.Success;
} }
} }
@@ -801,6 +818,7 @@ namespace PLG_Exam
PdfPage page = null; PdfPage page = null;
XGraphics gfx = null; XGraphics gfx = null;
foreach (var line in lines) foreach (var line in lines)
{ {
// Neue Seite erstellen, falls nötig // Neue Seite erstellen, falls nötig
@@ -811,14 +829,17 @@ namespace PLG_Exam
currentHeight = 0; currentHeight = 0;
// Kopfzeile zeichnen // Kopfzeile zeichnen
DrawName(gfx, tab, smallFont, margin, headerHeight); DrawName(gfx, tab, smallFont, margin, headerHeight, document.PageCount);
DrawHeader(gfx, tab, headerFont, margin, headerHeight); DrawHeader(gfx, tab, headerFont, margin, headerHeight);
} }
// Zeile zeichnen // Zeile zeichnen
gfx.DrawString(line, font, XBrushes.Black, new XRect(corr_margin, margin + headerHeight*headerline_count + currentHeight, page.Width - margin, lineHeight), XStringFormats.TopLeft); gfx.DrawString(line, font, XBrushes.Black, new XRect(corr_margin, margin + headerHeight*headerline_count + currentHeight, page.Width - margin, lineHeight), XStringFormats.TopLeft);
currentHeight += lineHeight; currentHeight += lineHeight;
} }
gfx.Dispose();
} }
int headerline_count = 0; int headerline_count = 0;
@@ -836,10 +857,27 @@ namespace PLG_Exam
headerline_count++; headerline_count++;
} }
} }
private void AddPageNumbers(PdfDocument document, XFont font, double margin)
{
private void DrawName(XGraphics gfx, ExamTab tab, XFont font, double margin, double headerHeight) int totalPages = document.PageCount;
for (int i = 1; i < totalPages; i++) // Beginnt ab der zweiten Seite (Index 1)
{
PdfPage page = document.Pages[i];
XGraphics gfx = XGraphics.FromPdfPage(page);
string text = $"Seite {i + 1} von {totalPages}";
double yPosition = page.Height - margin;
gfx.DrawString(text, font, XBrushes.Gray, new XRect(margin, yPosition, page.Width - 2 * margin, 20), XStringFormats.Center);
gfx.Dispose();
}
}
private void DrawName(XGraphics gfx, ExamTab tab, XFont font, double margin, double headerHeight, int page_num)
{ {
var headerText = $"{_currentExam.Name}, {_currentExam.Vorname}"; var headerText = $"{_currentExam.Name}, {_currentExam.Vorname}";
gfx.DrawString(headerText, font, XBrushes.Gray, new XRect(margin, margin-15, gfx.PageSize.Width - margin * 2, headerHeight), XStringFormats.TopLeft); gfx.DrawString(headerText, font, XBrushes.Gray, new XRect(margin, margin-15, gfx.PageSize.Width - margin * 2, headerHeight), XStringFormats.TopLeft);
@@ -847,6 +885,9 @@ namespace PLG_Exam
var headerText2 = _currentExam.Datum.Value.ToString("dd.MM.yyyy", CultureInfo.CreateSpecificCulture("de-DE")); var headerText2 = _currentExam.Datum.Value.ToString("dd.MM.yyyy", CultureInfo.CreateSpecificCulture("de-DE"));
gfx.DrawString(headerText2, font, XBrushes.Gray, new XRect(margin, margin-15, gfx.PageSize.Width - margin * 2, headerHeight), XStringFormats.TopRight); gfx.DrawString(headerText2, font, XBrushes.Gray, new XRect(margin, margin-15, gfx.PageSize.Width - margin * 2, headerHeight), XStringFormats.TopRight);
var page = $"Seite {page_num}";
gfx.DrawString(page, font, XBrushes.Gray, new XRect(margin, gfx.PageSize.Height - margin + 15, gfx.PageSize.Width - margin * 2, headerHeight), XStringFormats.TopRight);
} }
// Methode zum Aufteilen des Textes in Zeilen // Methode zum Aufteilen des Textes in Zeilen
@@ -893,7 +934,10 @@ namespace PLG_Exam
{ {
lines.Add(currentLine); lines.Add(currentLine);
} }
} }
gfx.Dispose();
} }
return lines; return lines;