init
This commit is contained in:
148
filcnaplo/lib/modules/printing/main.dart
Normal file
148
filcnaplo/lib/modules/printing/main.dart
Normal file
@@ -0,0 +1,148 @@
|
||||
// import 'package:filcnaplo/data/context/app.dart';
|
||||
// import 'package:filcnaplo/data/models/lesson.dart';
|
||||
// import 'package:filcnaplo/generated/i18n.dart';
|
||||
// import 'package:filcnaplo/ui/common/custom_snackbar.dart';
|
||||
// import 'package:filcnaplo/ui/pages/planner/timetable/day.dart';
|
||||
// import 'package:filcnaplo/utils/format.dart';
|
||||
// import 'package:filcnaplo/modules/printing/printerDebugScreen.dart';
|
||||
// import 'package:flutter/material.dart';
|
||||
// import 'package:flutter/services.dart' show rootBundle;
|
||||
// import 'package:pdf/pdf.dart';
|
||||
// import 'package:pdf/widgets.dart' as pw;
|
||||
// import 'package:printing/printing.dart';
|
||||
// import 'package:filcnaplo/ui/pages/planner/timetable/builder.dart';
|
||||
// import 'package:flutter/foundation.dart';
|
||||
|
||||
// /*
|
||||
// Author: daaniiieel
|
||||
// Name: Timetable Printer (Experimental)
|
||||
// Description: This module prints out the timetable for the selected user on the
|
||||
// current week.
|
||||
// */
|
||||
|
||||
// class TimetablePrinter {
|
||||
// pw.Document build(
|
||||
// BuildContext context, pw.Document pdf, List<Day> days, int min, int max) {
|
||||
// List rows = <pw.TableRow>[];
|
||||
|
||||
// // build header row
|
||||
// List<pw.Widget> headerChildren = <pw.Widget>[pw.Container()];
|
||||
// days.forEach((day) => headerChildren.add(pw.Padding(
|
||||
// padding: pw.EdgeInsets.all(5),
|
||||
// child:
|
||||
// pw.Center(child: pw.Text(weekdayStringShort(context, day.date.weekday))))));
|
||||
// pw.TableRow headerRow = pw.TableRow(
|
||||
// children: headerChildren,
|
||||
// verticalAlignment: pw.TableCellVerticalAlignment.middle);
|
||||
// rows.add(headerRow);
|
||||
|
||||
// // for each row
|
||||
// for (int i = min; i < max; i++) {
|
||||
// var children = <pw.Widget>[];
|
||||
// var row = pw.TableRow(children: children);
|
||||
|
||||
// children.add(pw.Padding(
|
||||
// padding: pw.EdgeInsets.all(5),
|
||||
// child: pw.Center(child: pw.Text('$i. '))));
|
||||
// days.forEach((Day day) {
|
||||
// var lesson = day.lessons.firstWhere(
|
||||
// (element) => element.lessonIndex != '+'
|
||||
// ? int.parse(element.lessonIndex) == i
|
||||
// : false,
|
||||
// orElse: () => null);
|
||||
|
||||
// children.add(lesson != null
|
||||
// ? pw.Padding(
|
||||
// padding: pw.EdgeInsets.fromLTRB(5, 10, 5, 5),
|
||||
// child: pw.Column(children: [
|
||||
// pw.Text(lesson.name ?? lesson.subject.name),
|
||||
// pw.Footer(
|
||||
// leading: pw.Text(lesson.room),
|
||||
// trailing: pw.Text(monogram(lesson.teacher))),
|
||||
// ]))
|
||||
// : pw.Padding(padding: pw.EdgeInsets.all(5)));
|
||||
// });
|
||||
// rows.add(row);
|
||||
// }
|
||||
|
||||
// // add timetable to pdf
|
||||
// pw.Table table = pw.Table(
|
||||
// children: rows,
|
||||
// border: pw.TableBorder.all(),
|
||||
// defaultVerticalAlignment: pw.TableCellVerticalAlignment.middle,
|
||||
// );
|
||||
|
||||
// // header and footer
|
||||
// pw.Footer footer = pw.Footer(
|
||||
// trailing: pw.Text('filcnaplo.hu'),
|
||||
// margin: pw.EdgeInsets.only(top: 12.0),
|
||||
// );
|
||||
// String className = app.user.sync.student.student.className;
|
||||
|
||||
// pw.Footer header = pw.Footer(
|
||||
// margin: pw.EdgeInsets.all(5),
|
||||
// title: pw.Text(className, style: pw.TextStyle(fontSize: 30)),
|
||||
// );
|
||||
|
||||
// pdf.addPage(pw.Page(
|
||||
// pageFormat: PdfPageFormat.a4
|
||||
// .landscape, // so the page looks normal both in portrait and landscape
|
||||
// orientation: pw.PageOrientation.landscape,
|
||||
// build: (pw.Context context) =>
|
||||
// pw.Column(children: <pw.Widget>[header, table, footer])));
|
||||
|
||||
// return pdf;
|
||||
// }
|
||||
|
||||
// void printPDF(final _scaffoldKey, BuildContext context) {
|
||||
// // pdf theme (for unicode support)
|
||||
// rootBundle.load("assets/Roboto-Regular.ttf").then((font) {
|
||||
// pw.ThemeData myTheme = pw.ThemeData.withFont(base: pw.Font.ttf(font));
|
||||
// pw.Document pdf = pw.Document(theme: myTheme);
|
||||
|
||||
// // sync indicator
|
||||
// ScaffoldMessenger.of(context).showSnackBar(CustomSnackBar(
|
||||
// message: I18n.of(context).syncTimetable,
|
||||
// ));
|
||||
|
||||
// // get a builder and build current week
|
||||
// final timetableBuilder = TimetableBuilder();
|
||||
// timetableBuilder.build(timetableBuilder.getCurrentWeek());
|
||||
|
||||
// int minLessonIndex = 1;
|
||||
// int maxLessonIndex = 1;
|
||||
// List<Day> weekDays = timetableBuilder.week.days;
|
||||
// for (Day day in weekDays) {
|
||||
// for (Lesson lesson in day.lessons) {
|
||||
// if (lesson.lessonIndex == '+') {
|
||||
// continue;
|
||||
// }
|
||||
// if (int.parse(lesson.lessonIndex) < minLessonIndex) {
|
||||
// minLessonIndex = int.parse(lesson.lessonIndex);
|
||||
// }
|
||||
// if (int.parse(lesson.lessonIndex) > maxLessonIndex) {
|
||||
// maxLessonIndex = int.parse(lesson.lessonIndex);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// pdf = build(context, pdf, weekDays, minLessonIndex, maxLessonIndex);
|
||||
|
||||
// // print pdf
|
||||
// if (kReleaseMode) {
|
||||
// Printing.layoutPdf(onLayout: (format) => pdf.save()).then((success) {
|
||||
// if (success)
|
||||
// ScaffoldMessenger.of(context).showSnackBar(CustomSnackBar(
|
||||
// message: I18n.of(context).settingsExportExportTimetableSuccess,
|
||||
// ));
|
||||
// });
|
||||
// } else {
|
||||
// Navigator.push(
|
||||
// context,
|
||||
// MaterialPageRoute(
|
||||
// builder: (c) =>
|
||||
// PrintingDebugScreen((format) => Future.value(pdf.save()))));
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
Reference in New Issue
Block a user