PSQL id 06.11.2024

This commit is contained in:
krivoshein
2024-11-06 16:06:32 +03:00
parent 0f1fa71c33
commit f4ca58ce91
89 changed files with 1131 additions and 763 deletions

Binary file not shown.

View File

@@ -1,99 +1,78 @@
# ninja log v5
16 52 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
377 1845 7521882090383278 CMakeFiles/InstructorsAndTrainees.dir/trainees/dialogeditgroup.cpp.obj 4bd8bab8b1110ba7
16 52 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
57 1647 7522449583762190 CMakeFiles/InstructorsAndTrainees.dir/trainees/editortrainees.cpp.obj 2e9a885629b6e173
74 1925 7522449586580602 CMakeFiles/InstructorsAndTrainees.dir/instructors/editorinstructors.cpp.obj b8e3d2e3a65912a8
32 42 0 clean 9c4b4372737ab8da
393 1902 7521882090955221 CMakeFiles/InstructorsAndTrainees.dir/instructors/dialogeditinstructor.cpp.obj e02fcfe10480c54f
16 52 0 InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
16 52 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
1002 3232 7521664817765595 CMakeFiles/InstructorsAndTrainees.dir/commonview.cpp.obj 3bdbb777b1ca4f9f
16 52 0 D:/LMS/DB_IaT/Debug64/CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
16 52 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
16 52 0 InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
16 52 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
65 1747 7522449584792147 CMakeFiles/InstructorsAndTrainees.dir/trainees/traineesview.cpp.obj a6ea1bfa14213881
1012 2854 7521664813846902 CMakeFiles/InstructorsAndTrainees.dir/trainees/computersLocations.cpp.obj 7aaac6302b47a301
13 253 7521784982976196 build.ninja 76aa11f472515be0
55 1879 7522449586124230 CMakeFiles/InstructorsAndTrainees.dir/instructorsandtraineeswidget.cpp.obj 8e8beb29ba6ba100
71 1413 7522449581447380 CMakeFiles/InstructorsAndTrainees.dir/instructors/databaseinstructors.cpp.obj 50eb3e676aec3cc5
16 52 0 InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
77 1659 7522449583926194 CMakeFiles/InstructorsAndTrainees.dir/instructors/instructorsview.cpp.obj d1fea9a96fa095b1
16 52 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
16 52 0 InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
949 996 7521664795567220 InstructorsAndTrainees_autogen/EWIEGA46WW/qrc_resources.cpp f2ed85aad0f78c7c
16 52 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
949 996 7521664795567220 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/EWIEGA46WW/qrc_resources.cpp f2ed85aad0f78c7c
8 32 0 CMakeFiles/clean.additional 7155004b3956b606
62 1506 7522449582370525 CMakeFiles/InstructorsAndTrainees.dir/trainees/viewertrainees.cpp.obj 99b246ecbf2b6f9b
1951 2311 7522449590411375 libInstructorsAndTrainees.dll.a d721655f2d9255b7
16 52 0 InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
16 52 0 CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
59 1508 7522449582401689 CMakeFiles/InstructorsAndTrainees.dir/trainees/databasetrainees.cpp.obj b3eab31811ef0e17
16 52 0 InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
16 52 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
302 1859 7522436505794702 CMakeFiles/InstructorsAndTrainees.dir/trainees/dialogedittrainee.cpp.obj 544a146272360182
68 1813 7522449585461950 CMakeFiles/InstructorsAndTrainees.dir/instructors/viewerinstructors.cpp.obj 2aa58696f5232c4b
16 52 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
16 52 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
16 52 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
16 52 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
52 1951 7522449586845975 CMakeFiles/InstructorsAndTrainees.dir/InstructorsAndTrainees_autogen/mocs_compilation.cpp.obj 639ec716a2902c9f
939 1049 7525981713172857 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/EWIEGA46WW/qrc_resources.cpp f2ed85aad0f78c7c
1076 3519 7525981737859367 CMakeFiles/InstructorsAndTrainees.dir/instructors/viewerinstructors.cpp.obj 2aa58696f5232c4b
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
57 1294 7526001966157653 CMakeFiles/InstructorsAndTrainees.dir/trainees/editortrainees.cpp.obj 2e9a885629b6e173
17 56 0 InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
17 56 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
17 56 0 InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
939 1049 7525981713172857 InstructorsAndTrainees_autogen/EWIEGA46WW/qrc_resources.cpp f2ed85aad0f78c7c
17 56 0 D:/LMS/DB_IaT/Debug64/CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
1053 3234 7525981734783034 CMakeFiles/InstructorsAndTrainees.dir/commonview.cpp.obj 3bdbb777b1ca4f9f
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
17 56 0 InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
1061 3402 7525981736671953 CMakeFiles/InstructorsAndTrainees.dir/trainees/dialogedittrainee.cpp.obj 544a146272360182
17 56 0 InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
1294 1665 7526001969842689 libInstructorsAndTrainees.dll d721655f2d9255b7
17 56 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
13 253 7524942129142836 build.ninja 76aa11f472515be0
1073 3685 7525981739493337 CMakeFiles/InstructorsAndTrainees.dir/trainees/traineesview.cpp.obj a6ea1bfa14213881
1064 2292 7525981725238885 CMakeFiles/InstructorsAndTrainees.dir/trainees/computersLocations.cpp.obj 7aaac6302b47a301
1079 3311 7525981735671562 CMakeFiles/InstructorsAndTrainees.dir/instructors/databaseinstructors.cpp.obj 50eb3e676aec3cc5
1294 1665 7526001969842689 libInstructorsAndTrainees.dll.a d721655f2d9255b7
17 56 0 InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
1101 1321 7525981715851341 CMakeFiles/InstructorsAndTrainees.dir/InstructorsAndTrainees_autogen/EWIEGA46WW/qrc_resources.cpp.obj 54d07c59b3f7a2cf
1012 3479 7520793522676004 CMakeFiles/InstructorsAndTrainees.dir/instructorsAndTrainees.cpp.obj ff3fcdc370580ca2
1052 1295 7521664798479005 CMakeFiles/InstructorsAndTrainees.dir/InstructorsAndTrainees_autogen/EWIEGA46WW/qrc_resources.cpp.obj 54d07c59b3f7a2cf
16 52 0 InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
1951 2311 7522449590411375 libInstructorsAndTrainees.dll d721655f2d9255b7
16 52 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
81 1679 7522449584107678 CMakeFiles/InstructorsAndTrainees.dir/tasks/taskswidget.cpp.obj 187ec526627f696e
16 52 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
16 52 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
1040 3227 7521664817775571 CMakeFiles/InstructorsAndTrainees.dir/instructors/dialogauthorizationinstructor.cpp.obj f1f85077e88e8c7
18 49 0 CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
18 49 0 InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
18 49 0 InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
18 49 0 InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
18 49 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
18 49 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
18 49 0 InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
18 49 0 InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
18 49 0 InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
18 49 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
18 49 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
18 49 0 InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
18 49 0 D:/LMS/DB_IaT/Debug64/CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
18 49 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
18 49 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
18 49 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
18 49 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
18 49 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
18 49 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
18 49 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
18 49 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
18 49 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
18 49 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
18 49 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
13 45 0 CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
13 45 0 InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
13 45 0 InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
13 45 0 InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
13 45 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
13 45 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
13 45 0 InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
13 45 0 InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
13 45 0 InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
13 45 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
13 45 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
13 45 0 InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
13 45 0 D:/LMS/DB_IaT/Debug64/CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
13 45 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
13 45 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
13 45 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
13 45 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
13 45 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
13 45 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
13 45 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
13 45 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
13 45 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
13 45 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
13 45 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
17 56 0 InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
17 56 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
1093 3696 7525981739656070 CMakeFiles/InstructorsAndTrainees.dir/instructors/instructorsview.cpp.obj d1fea9a96fa095b1
17 56 0 InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
1049 3541 7525981738084357 CMakeFiles/InstructorsAndTrainees.dir/InstructorsAndTrainees_autogen/mocs_compilation.cpp.obj 639ec716a2902c9f
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
1070 3598 7525981738646009 CMakeFiles/InstructorsAndTrainees.dir/trainees/viewertrainees.cpp.obj 99b246ecbf2b6f9b
13 41 0 CMakeFiles/clean.additional 7155004b3956b606
17 56 0 CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
1067 3354 7525981736197679 CMakeFiles/InstructorsAndTrainees.dir/trainees/databasetrainees.cpp.obj b3eab31811ef0e17
17 56 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
1058 3194 7525981734239997 CMakeFiles/InstructorsAndTrainees.dir/trainees/dialogeditgroup.cpp.obj 4bd8bab8b1110ba7
1083 3690 7525981739594632 CMakeFiles/InstructorsAndTrainees.dir/instructors/editorinstructors.cpp.obj b8e3d2e3a65912a8
1098 3612 7525981738797694 CMakeFiles/InstructorsAndTrainees.dir/tasks/taskswidget.cpp.obj 187ec526627f696e
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
1086 3403 7525981736691900 CMakeFiles/InstructorsAndTrainees.dir/instructors/dialogeditinstructor.cpp.obj e02fcfe10480c54f
41 51 0 clean 9c4b4372737ab8da
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
1090 3335 7525981736006531 CMakeFiles/InstructorsAndTrainees.dir/instructors/dialogauthorizationinstructor.cpp.obj f1f85077e88e8c7
1051 3803 7525981740695693 CMakeFiles/InstructorsAndTrainees.dir/instructorsandtraineeswidget.cpp.obj 8e8beb29ba6ba100
19 57 0 CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
57 1303 7526014018240729 CMakeFiles/InstructorsAndTrainees.dir/trainees/editortrainees.cpp.obj 2e9a885629b6e173
1303 1677 7526014021949564 libInstructorsAndTrainees.dll d721655f2d9255b7
1303 1677 7526014021949564 libInstructorsAndTrainees.dll.a d721655f2d9255b7

View File

@@ -1,45 +1,46 @@
# Generated by CMake. Changes will be overwritten.
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/instructorsview.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/instructorsAndTrainees_global.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/databaseinstructors.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/dialogeditinstructor.cpp
uic:ui_dialogeditinstructor.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/dialogedittrainee.cpp
uic:ui_dialogedittrainee.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/dialogeditgroup.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/computersLocations.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/instructorsandtraineeswidget.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/viewertrainees.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/editorinstructors.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/viewerinstructors.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/databasetrainees.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.cpp
uic:ui_dialogauthorizationinstructor.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructorsandtraineeswidget.cpp
uic:ui_instructorsandtraineeswidget.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/editorinstructors.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/instructorsAndTrainees_global.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/instructorsview.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/commonview.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/instructorsandtraineeswidget.cpp
uic:ui_instructorsandtraineeswidget.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.cpp
uic:ui_dialogauthorizationinstructor.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/computersLocations.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/dialogeditgroup.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/dialogedittrainee.cpp
uic:ui_dialogedittrainee.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/databasetrainees.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/instructorsview.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/databasetrainees.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/viewerinstructors.cpp
uic:ui_viewerinstructors.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/viewertrainees.cpp
uic:ui_viewertrainees.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/dialogeditgroup.h
mmc:Q_OBJECT
uic:ui_dialogeditgroup.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/editortrainees.cpp
uic:ui_editortrainees.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/dialogeditinstructor.h
mmc:Q_OBJECT
uic:ui_dialogeditinstructor.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.h
mmc:Q_OBJECT
uic:ui_dialogauthorizationinstructor.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/traineesview.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/databaseinstructors.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/dialogeditinstructor.h
mmc:Q_OBJECT
uic:ui_dialogeditinstructor.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/computersLocations.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/editortrainees.h
mmc:Q_OBJECT
@@ -49,13 +50,12 @@ D:/LMS/DB_IaT/InstructorsAndTrainees/tasks/taskswidget.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/traineesview.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/viewertrainees.cpp
uic:ui_viewertrainees.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/databasetrainees.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/viewerinstructors.cpp
uic:ui_viewerinstructors.h
D:/LMS/DB_IaT/InstructorsAndTrainees/tasks/taskswidget.cpp
uic:ui_taskswidget.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/editorinstructors.cpp
uic:ui_editorinstructors.h
D:/LMS/DB_IaT/InstructorsAndTrainees/commonview.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/dialogeditinstructor.cpp
uic:ui_dialogeditinstructor.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/databaseinstructors.h
mmc:Q_OBJECT

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2024-11-02T13:43:21. -->
<!-- Written by QtCreator 4.11.1, 2024-11-06T16:05:43. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>

View File

@@ -1,31 +1,25 @@
#include "commonview.h"
CommonView::CommonView(TypeView type, QWidget *parent):
CommonView::CommonView(TypeView type, bool adminMode, QWidget *parent):
QWidget(parent),
treeWidget(nullptr),
typeView(type),
archiveVisible(false),
notLoggedInVisible(false),
adminMode(false)
adminMode(adminMode)
{
}
void CommonView::setItemColorArchive(QTreeWidgetItem *item)
{
int columnCount = treeWidget->columnCount();
for (int i = 0; i < columnCount; i++)
item->setBackground(i, QBrush(QColor(220, 220, 220)));
setItemColor(item,QColor(220, 220, 220));
}
void CommonView::setItemColorNoArchive(QTreeWidgetItem *item)
{
int columnCount = treeWidget->columnCount();
for (int i = 0; i < columnCount; i++)
item->setBackground(i, QBrush(QColor(255, 255, 255)));
setItemColor(item,QColor(255, 255, 255));
}
void CommonView::setItemColor(QTreeWidgetItem *item, QColor color)

View File

@@ -7,7 +7,7 @@
//Родительский класс представления БД Инструкторов/Обучаемых (самого верхнего уровня)
class INSTRUCTORSANDTRAINEES_EXPORT CommonView : public QWidget
class CommonView : public QWidget
{
Q_OBJECT
@@ -19,7 +19,7 @@ public:
};
public:
CommonView(TypeView type, QWidget *parent = nullptr);
CommonView(TypeView type, bool adminMode, QWidget *parent = nullptr);
protected:
void setArchiveVisible(bool archiveVisible)

View File

@@ -36,9 +36,9 @@ bool DataBaseInstructors::AuthorizationInstructor(QString login, QString passwor
Instructor instructor = listOfInstructors[i];
instructor.setLoggedIn(true);
bool result = dbLMS->updateInstructor(instructor);
int id = dbLMS->updateInstructor(instructor);
if(result)
if(id)
{
LoadInstructorsPSQL();
return true;
@@ -63,9 +63,9 @@ bool DataBaseInstructors::deAuthorizationInstructor(QString login)
Instructor instructor = listOfInstructors[i];
instructor.setLoggedIn(false);
bool result = dbLMS->updateInstructor(instructor);
int id = dbLMS->updateInstructor(instructor);
if(result)
if(id)
{
LoadInstructorsPSQL();
return true;
@@ -77,12 +77,12 @@ bool DataBaseInstructors::deAuthorizationInstructor(QString login)
return false;
}
Instructor DataBaseInstructors::getInstructor(QString name)
Instructor DataBaseInstructors::getInstructor(int id)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getName() == name)
if(listOfInstructors[i].getID() == id)
return listOfInstructors[i];
}
return Instructor();
@@ -97,7 +97,7 @@ QString DataBaseInstructors::getNameInstructorByLogin(QString login)
}
return QString(QStringLiteral(""));
}
/*
QString DataBaseInstructors::getAuthorizedInstructorName()
{
//Инструкторы
@@ -107,9 +107,9 @@ QString DataBaseInstructors::getAuthorizedInstructorName()
return listOfInstructors[i].getName();
}
return QStringLiteral("");
}
}*/
QString DataBaseInstructors::newInstructor()
int DataBaseInstructors::newInstructor()
{
Instructor instructor;
instructor.setName(generateDefaultNameInstructor());
@@ -119,83 +119,80 @@ QString DataBaseInstructors::newInstructor()
instructor.setArchived(false);
instructor.setLoggedIn(false);
bool result = dbLMS->insertInstructor(instructor);
int id = dbLMS->insertInstructor(instructor);
if(result)
if(id)
{
//listOfInstructors.append(instructor);
LoadInstructorsPSQL();
return instructor.getName();
return id;
}
else
return QStringLiteral("");
return 0;
}
void DataBaseInstructors::deleteInstructor(QString name)
int DataBaseInstructors::deleteInstructor(int id)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getName() == name)
if(listOfInstructors[i].getID() == id)
{
int id = listOfInstructors[i].getID();
int id_del = dbLMS->deleteInstructor(id);
bool result = dbLMS->deleteInstructor(id);
if(result)
if(id_del)
{
LoadInstructorsPSQL();
//listOfInstructors.removeAt(i);
return;
return id_del;
}
else
return 0;
}
}
return 0;
}
bool DataBaseInstructors::editInstructor(QString name, Instructor instructor)
int DataBaseInstructors::editInstructor(Instructor instructor)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getName() == name)
if(listOfInstructors[i].getID() == instructor.getID())
{
if( (!checkExistNameInstructor(instructor.getName()) || instructor.getName() == name) &&
if( (!checkExistNameInstructor(instructor.getName()) || instructor.getName() == listOfInstructors[i].getName()) &&
(!checkExistLoginInstructor(instructor.getLogin()) || instructor.getLogin() == listOfInstructors[i].getLogin()) )
{
//instructor.setID(listOfInstructors[i].getID());
int id = dbLMS->updateInstructor(instructor);
bool result = dbLMS->updateInstructor(instructor);
if(result)
if(id)
{
//listOfInstructors.replace(i, instructor);
LoadInstructorsPSQL();
return true;
return id;
}
else
return false;
return 0;
}
}
}
return false;
return 0;
}
bool DataBaseInstructors::isAdmin(QString name)
bool DataBaseInstructors::isAdmin(int id)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getName() == name)
if(listOfInstructors[i].getID() == id)
return listOfInstructors[i].getIsAdmin();
}
return false;
}
bool DataBaseInstructors::isArchived(QString name)
bool DataBaseInstructors::isArchived(int id)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getName() == name)
if(listOfInstructors[i].getID() == id)
return listOfInstructors[i].getArchived();
}
return false;

View File

@@ -9,7 +9,7 @@
#include "databaselms.h"
class INSTRUCTORSANDTRAINEES_EXPORT DataBaseInstructors : QObject
class DataBaseInstructors : QObject
{
Q_OBJECT
@@ -24,18 +24,18 @@ public:
QList<Instructor> getListInstructors(){ return listOfInstructors; } //Для загрузки
Instructor getInstructor(QString name);
Instructor getInstructor(int id);
QString getNameInstructorByLogin(QString login);
QString getAuthorizedInstructorName();
//QString getAuthorizedInstructorName();
QString newInstructor();
void deleteInstructor(QString name);
bool editInstructor(QString name, Instructor instructor);
int newInstructor();
int deleteInstructor(int id);
int editInstructor(Instructor instructor);
bool isAdmin(QString name);
bool isArchived(QString name);
bool isAdmin(int id);
bool isArchived(int id);
private:

View File

@@ -4,8 +4,7 @@
#include "ui_editorinstructors.h"
EditorInstructors::EditorInstructors(DataBaseInstructors* db, bool adminMode, QWidget *parent) :
//QDialog(parent),
InstructorsView(db, CommonView::TypeView::control, parent),
InstructorsView(db, CommonView::TypeView::control, adminMode, parent),
ui(new Ui::EditorInstructors)
{
ui->setupUi((QDialog*)this);
@@ -22,9 +21,9 @@ EditorInstructors::~EditorInstructors()
void EditorInstructors::on_btnNewInstructor_clicked()
{
QString name = dbInstructors->newInstructor();
int id = dbInstructors->newInstructor();
loadInstructorsFromDB();
setCurrentInstructor(name);
setCurrentInstructor(id);
}
void EditorInstructors::on_btnDeleteInstructor_clicked()
@@ -37,9 +36,9 @@ void EditorInstructors::on_btnDeleteInstructor_clicked()
if(treeItemParent == nullptr)
{//Выбран Инструктор
QString name = treeItemCurrent->text(0);
int id = treeItemCurrent->text(0).toInt();
if(dbInstructors->isAdmin(name))
if(dbInstructors->isAdmin(id))
{//Это Админ!
QMessageBox::critical(this, tr("Error!"), tr("You cannot delete the Administrator."));
return;
@@ -47,7 +46,7 @@ void EditorInstructors::on_btnDeleteInstructor_clicked()
if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete it anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
{
dbInstructors->deleteInstructor(name);
dbInstructors->deleteInstructor(id);
loadInstructorsFromDB();
}
}
@@ -64,29 +63,29 @@ void EditorInstructors::on_btnToOrFromArchive_clicked()
if(treeItemParent == nullptr)
{//Выбран Инструктор
QString name = treeItemCurrent->text(0);
int id = treeItemCurrent->text(0).toInt();
Instructor instructor = dbInstructors->getInstructor(name);
Instructor instructor = dbInstructors->getInstructor(id);
if(instructor.getArchived())
{//Архивный
instructor.setArchived(false);
if(dbInstructors->editInstructor(name, instructor))
if(int id_edit = dbInstructors->editInstructor(instructor))
{
loadInstructorsFromDB();
setCurrentInstructor(instructor.getName());
setCurrentInstructor(id_edit);
}
}
else
{//Не Архивный
instructor.setArchived(true);
if(dbInstructors->editInstructor(name, instructor))
if(int id_edit = dbInstructors->editInstructor(instructor))
{
if(!archiveVisible)
ui->btnArchive->click();
loadInstructorsFromDB();
setCurrentInstructor(instructor.getName());
setCurrentInstructor(id_edit);
}
}
}
@@ -104,19 +103,19 @@ void EditorInstructors::on_btnEdit_clicked()
if(treeItemParent == nullptr)
{//Выбран Инструктор
QString name = treeItemCurrent->text(0);
int id = treeItemCurrent->text(0).toInt();
DialogEditInstructor dlg(this);
dlg.setInstructor(dbInstructors->getInstructor(name));
dlg.setInstructor(dbInstructors->getInstructor(id));
switch( dlg.exec() )
{
case QDialog::Accepted:
{
if(dbInstructors->editInstructor(name, dlg.getInstructor()))
if(int id_edit = dbInstructors->editInstructor(dlg.getInstructor()))
{
loadInstructorsFromDB();
setCurrentInstructor(dlg.getInstructor().getName());
setCurrentInstructor(id_edit);
}
else
QMessageBox::critical(this, tr("Editing error!"),
@@ -149,9 +148,9 @@ void EditorInstructors::on_treeWidget_currentItemChanged(QTreeWidgetItem *curren
if(treeItemParent == nullptr)
{//Выбран инструктор
QString name = current->text(0);
int id = current->text(0).toInt();
if(dbInstructors->isArchived(name))
if(dbInstructors->isArchived(id))
{//Архивный
ui->btnToOrFromArchive->setText(tr("From archive"));
ui->btnToOrFromArchive->setIcon(QIcon(QStringLiteral(":/icons/instructorFromArchive.png")));
@@ -164,7 +163,7 @@ void EditorInstructors::on_treeWidget_currentItemChanged(QTreeWidgetItem *curren
ui->btnNewInstructor->setEnabled(true);
if(dbInstructors->isAdmin(name))
if(dbInstructors->isAdmin(id))
{//Это Админ! Удалять/Архивировать нельзя!
ui->btnDeleteInstructor->setEnabled(false);
ui->btnToOrFromArchive->setEnabled(false);
@@ -173,7 +172,7 @@ void EditorInstructors::on_treeWidget_currentItemChanged(QTreeWidgetItem *curren
{
ui->btnToOrFromArchive->setEnabled(true);
if(dbInstructors->isArchived(name))
if(dbInstructors->isArchived(id))
ui->btnDeleteInstructor->setEnabled(true);
else
ui->btnDeleteInstructor->setEnabled(false);
@@ -184,13 +183,13 @@ void EditorInstructors::on_treeWidget_currentItemChanged(QTreeWidgetItem *curren
}
}
void EditorInstructors::setCurrentInstructor(QString name)
void EditorInstructors::setCurrentInstructor(int id)
{
for(int i = 0; i < treeWidget->topLevelItemCount(); i++)
{
QTreeWidgetItem * item = treeWidget->topLevelItem(i);
if(item != nullptr)
if(item->text(0) == name)
if(item->text(0).toInt() == id)
{
treeWidget->setCurrentItem(item);
break;

View File

@@ -17,7 +17,7 @@ class EditorInstructors : public InstructorsView
Q_OBJECT
public:
explicit EditorInstructors(DataBaseInstructors* db, bool adminMode = false, QWidget *parent = nullptr);
explicit EditorInstructors(DataBaseInstructors* db, bool adminMode, QWidget *parent = nullptr);
~EditorInstructors();
private Q_SLOTS:
@@ -29,7 +29,7 @@ private Q_SLOTS:
void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
private:
void setCurrentInstructor(QString name);
void setCurrentInstructor(int id);
private:
Ui::EditorInstructors *ui;

View File

@@ -2,8 +2,8 @@
#include <QTranslator>
#include "instructorsview.h"
InstructorsView::InstructorsView(DataBaseInstructors* db, TypeView type, QWidget *parent):
CommonView(type, parent),
InstructorsView::InstructorsView(DataBaseInstructors* db, TypeView type, bool adminMode, QWidget *parent):
CommonView(type, adminMode, parent),
dbInstructors(db)
{
@@ -16,34 +16,35 @@ void InstructorsView::preparationTreeWidget(QTreeWidget* tree)
if(treeWidget == nullptr)
return;
treeWidget->setColumnCount(6);
treeWidget->setColumnCount(7);
reSetHeadTreeWidget();
treeWidget->header()->setStyleSheet(QStringLiteral("font-size: 10pt;"));
treeWidget->setColumnWidth(0, 250);
treeWidget->setColumnWidth(1, 100);
treeWidget->setColumnWidth(0, 50);
treeWidget->setColumnWidth(1, 250);
treeWidget->setColumnWidth(2, 100);
treeWidget->setColumnWidth(3, 100);
treeWidget->setColumnWidth(4, 80);
treeWidget->setColumnWidth(4, 100);
treeWidget->setColumnWidth(5, 80);
treeWidget->setColumnWidth(6, 80);
if(typeView == TypeView::onlyView)
{//onlyView
treeWidget->setColumnHidden(1, true);
treeWidget->setColumnHidden(2, true);
treeWidget->setColumnHidden(4, true);
treeWidget->setColumnHidden(3, true);
treeWidget->setColumnHidden(5, true);
}
else
{//control
treeWidget->setColumnHidden(4, true);
treeWidget->setColumnHidden(5, true);
}
}
void InstructorsView::loadInstructorsFromDB()
{
//dbInstructors->LoadInstructorsPSQL();
dbInstructors->LoadInstructorsPSQL();
if(treeWidget == nullptr)
return;
@@ -58,47 +59,48 @@ void InstructorsView::loadInstructorsFromDB()
{
QTreeWidgetItem *ItemInstructor = new QTreeWidgetItem(treeWidget);
ItemInstructor->setText(0, instructor.getName());
ItemInstructor->setText(1, instructor.getLogin());
ItemInstructor->setText(2, instructor.getPassword());
ItemInstructor->setText(0, QString::number(instructor.getID()));
ItemInstructor->setText(1, instructor.getName());
ItemInstructor->setText(2, instructor.getLogin());
ItemInstructor->setText(3, instructor.getPassword());
if(instructor.getArchived())
{//Архивный
ItemInstructor->setText(4, tr("yes"));
ItemInstructor->setIcon(0, QIcon(QStringLiteral(":/icons/instructorArchive.png")));
ItemInstructor->setText(5, tr("yes"));
ItemInstructor->setIcon(1, QIcon(QStringLiteral(":/icons/instructorArchive.png")));
setItemColorArchive(ItemInstructor);
}
else
{//Не Архивный
ItemInstructor->setText(4, tr("no"));
ItemInstructor->setIcon(0, QIcon(QStringLiteral(":/icons/instructor.png")));
ItemInstructor->setText(5, tr("no"));
ItemInstructor->setIcon(1, QIcon(QStringLiteral(":/icons/instructor.png")));
setItemColorNoArchive(ItemInstructor);
}
if(instructor.getIsAdmin())
{//Админ
ItemInstructor->setText(3, tr("yes"));
ItemInstructor->setIcon(0, QIcon(QStringLiteral(":/icons/admin.png")));
ItemInstructor->setText(4, tr("yes"));
ItemInstructor->setIcon(1, QIcon(QStringLiteral(":/icons/admin.png")));
}
else
{//Не Админ
ItemInstructor->setText(3, tr("no"));
ItemInstructor->setText(4, tr("no"));
}
if(instructor.getLoggedIn())
{//Залогинен
ItemInstructor->setText(5, tr("yes"));
ItemInstructor->setIcon(5, QIcon(QStringLiteral(":/icons/circleGreen.png")));
ItemInstructor->setText(6, tr("yes"));
ItemInstructor->setIcon(6, QIcon(QStringLiteral(":/icons/circleGreen.png")));
}
else
{//Не Залогинен
ItemInstructor->setText(5, tr("no"));
ItemInstructor->setIcon(5, QIcon(QStringLiteral(":/icons/circleGray.png")));
ItemInstructor->setText(6, tr("no"));
ItemInstructor->setIcon(6, QIcon(QStringLiteral(":/icons/circleGray.png")));
}
//Скрываем архивных (при необходимости)
if(instructor.getArchived())
if(!archiveVisible)
if(! archiveVisible)
ItemInstructor->setHidden(true);
//Скрываем незалогиненых (при необходимости)
@@ -108,7 +110,7 @@ void InstructorsView::loadInstructorsFromDB()
}
treeWidget->setSortingEnabled(true);
treeWidget->sortItems(0, Qt::SortOrder::AscendingOrder);
treeWidget->sortItems(1, Qt::SortOrder::AscendingOrder);
treeWidget->expandAll();
if(typeView == TypeView::control)
@@ -121,7 +123,7 @@ void InstructorsView::loadInstructorsFromDB()
void InstructorsView::reSetHeadTreeWidget()
{
QStringList listHeaders = {tr("Instructor"), tr("Login"), tr("Password"), tr("Administrator"), tr("Archived"), tr("Logged")};
QStringList listHeaders = {tr("ID"), tr("Instructor"), tr("Login"), tr("Password"), tr("Administrator"), tr("Archived"), tr("Logged")};
treeWidget->setHeaderLabels(listHeaders);
}

View File

@@ -7,12 +7,12 @@
//Родительский класс представления БД Инструкторов (для просмотра и управления)
class INSTRUCTORSANDTRAINEES_EXPORT InstructorsView: public CommonView
class InstructorsView: public CommonView
{
Q_OBJECT
public:
InstructorsView(DataBaseInstructors* db, TypeView type, QWidget *parent = nullptr);
InstructorsView(DataBaseInstructors* db, TypeView type, bool adminMode, QWidget *parent = nullptr);
protected:
void preparationTreeWidget(QTreeWidget* tree);

View File

@@ -4,8 +4,7 @@
#include "ui_viewerinstructors.h"
ViewerInstructors::ViewerInstructors(DataBaseInstructors* db, bool adminMode, QWidget *parent) :
//QWidget(parent),
InstructorsView(db, CommonView::TypeView::onlyView, parent),
InstructorsView(db, CommonView::TypeView::onlyView, adminMode, parent),
ui(new Ui::ViewerInstructors)
{
ui->setupUi(this);
@@ -63,16 +62,12 @@ void ViewerInstructors::on_btnEditorInstructors_clicked()
}
EditorInstructors editorInstructors(dbInstructors, adminMode);
//dlg.setWindowTitle(tr("List instructors"));
//dlg.exec();
//dlg.show();
QDialog* dialog = new QDialog(this);
QHBoxLayout *layout = new QHBoxLayout(dialog);
layout->addWidget(&editorInstructors);
dialog->setWindowTitle(tr("List instructors"));
dialog->setWindowTitle(tr("Editor of instructors"));
dialog->setMinimumSize(1400, 800);
dialog->exec();
dbInstructors->LoadInstructorsPSQL();
loadInstructorsFromDB();
}

View File

@@ -12,7 +12,7 @@ class ViewerInstructors;
//Виджет только для просмотра БД Инструкторов
class INSTRUCTORSANDTRAINEES_EXPORT ViewerInstructors : public InstructorsView
class ViewerInstructors : public InstructorsView
{
Q_OBJECT
@@ -29,7 +29,7 @@ public Q_SLOTS:
void slot_LanguageChanged(QString language);
public:
void setFilterInstructorLoggedIn( bool enabled );
void setFilterInstructorLoggedIn(bool enabled);
private slots:
void on_btnEditorInstructors_clicked();

View File

@@ -16,7 +16,7 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
dataBaseTrainees = new DataBaseTrainees(dbLMS);
dataBaseInstructors = new DataBaseInstructors(dbLMS);
//Авторизация Инструктора (Администратора)
//Авторизация Инструктора локальная (Администратора)
authorizationInstructorLocal(this);
m_viewerTrainees = new ViewerTrainees(dataBaseTrainees, adminMode);
@@ -25,8 +25,8 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
ui->verticalLayout->addWidget(m_viewerTrainees);
ui->verticalLayout->addWidget(m_viewerInstructors);
m_viewerTrainees->setMinimumSize(1000, 800);
m_viewerInstructors->setMinimumSize(1000, 300);
m_viewerTrainees->setMinimumSize(1400, 700);
m_viewerInstructors->setMinimumSize(1400, 400);
}
InstructorsAndTraineesWidget::~InstructorsAndTraineesWidget()
@@ -90,9 +90,9 @@ bool InstructorsAndTraineesWidget::authorizationCompleted()
return true;
}
bool InstructorsAndTraineesWidget::authorizationTrainee(QString login, QString password, QString learnClass = QStringLiteral(""), QString computer = QStringLiteral(""))
bool InstructorsAndTraineesWidget::authorizationTrainee(QString login, QString password, QString classroom_name, QString computer_name)
{
return dataBaseTrainees->AuthorizationTrainee(login, password, learnClass, computer);
return dataBaseTrainees->AuthorizationTrainee(login, password, classroom_name, computer_name);
}
bool InstructorsAndTraineesWidget::deAuthorizationTrainee(QString login)
@@ -100,7 +100,7 @@ bool InstructorsAndTraineesWidget::deAuthorizationTrainee(QString login)
return dataBaseTrainees->deAuthorizationTrainee(login);
}
bool InstructorsAndTraineesWidget::authorizationInstructorLocal(QString login, QString password)
bool InstructorsAndTraineesWidget::authorizationInstructor(QString login, QString password)
{
return dataBaseInstructors->AuthorizationInstructor(login, password);
}

View File

@@ -26,11 +26,11 @@ public:
bool authorizationCompleted();
//Авторизация обучаемого на клиенте
bool authorizationTrainee(QString login, QString password, QString learnClass, QString computer);
bool authorizationTrainee(QString login, QString password, QString classroom_name = QStringLiteral(""), QString computer_name = QStringLiteral(""));
bool deAuthorizationTrainee(QString login);
//Авторизация инструктора на клиенте
bool authorizationInstructorLocal(QString login, QString password);
bool authorizationInstructor(QString login, QString password);
bool deAuthorizationInstructor(QString login);
private:

View File

@@ -1,5 +1,6 @@
#include "databasetrainees.h"
#include <QApplication>
#include <QMessageBox>
DataBaseTrainees::DataBaseTrainees(DataBaseLMS* dbLMS)
{
@@ -36,7 +37,7 @@ void DataBaseTrainees::LoadTraineesGroupsPSQL()
QApplication::beep();
}
bool DataBaseTrainees::AuthorizationTrainee(QString login, QString password, QString learnClass, QString computer)
bool DataBaseTrainees::AuthorizationTrainee(QString login, QString password, QString classroom_name, QString computer_name)
{
//Обучаемые
for(int i = 0; i < listOfTrainees.count(); i++)
@@ -48,12 +49,12 @@ bool DataBaseTrainees::AuthorizationTrainee(QString login, QString password, QSt
{
Trainee trainee = listOfTrainees[i];
trainee.setLoggedIn(true);
trainee.setLearnClass(learnClass);
trainee.setComputer(computer);
//trainee.setLearnClass(learnClass);
//trainee.setComputer(computer);
bool result = dbLMS->updateTrainee(trainee);
int id = dbLMS->updateTrainee(trainee);
if(result)
if(id)
{
LoadTraineesGroupsPSQL();
return true;
@@ -77,12 +78,12 @@ bool DataBaseTrainees::deAuthorizationTrainee(QString login)
{
Trainee trainee = listOfTrainees[i];
trainee.setLoggedIn(false);
trainee.setLearnClass(QStringLiteral(""));
trainee.setComputer(QStringLiteral(""));
//trainee.setLearnClass(QStringLiteral(""));
//trainee.setComputer(QStringLiteral(""));
bool result = dbLMS->updateTrainee(trainee);
int id = dbLMS->updateTrainee(trainee);
if(result)
if(id)
{
LoadTraineesGroupsPSQL();
return true;
@@ -94,6 +95,7 @@ bool DataBaseTrainees::deAuthorizationTrainee(QString login)
return false;
}
/*
void DataBaseTrainees::setTasks(QString login, QStringList tasks)
{
//Обучаемые
@@ -102,39 +104,43 @@ void DataBaseTrainees::setTasks(QString login, QStringList tasks)
if(listOfTrainees[i].getLogin() == login)
listOfTrainees[i].setTasks(tasks);
}
}
}*/
QStringList DataBaseTrainees::getTasks(QString login)
{
QStringList tasks;
QStringList tasksStrList;
//Обучаемые
for(int i = 0; i < listOfTrainees.count(); i++)
{
if(listOfTrainees[i].getLogin() == login)
{
tasks = listOfTrainees[i].getTasks();
QList<Task> tasks = listOfTrainees[i].getTasks();
for(Task task: tasks)
{
tasksStrList.append(task.getName());
}
}
}
return tasks;
return tasksStrList;
}
QString DataBaseTrainees::getNameTraineeOnComputer(QString computer)
QString DataBaseTrainees::getNameTraineeOnComputer(QString computer_name)
{
for(Trainee trainee : listOfTrainees)
{
if(trainee.getComputer() == computer)
if(trainee.getComputer().getName() == computer_name)
return trainee.getName();
}
return QString(QStringLiteral(""));
}
Trainee DataBaseTrainees::getTraineeOnComputer(QString computer)
Trainee DataBaseTrainees::getTraineeOnComputer(QString computer_name)
{
for(Trainee trainee : listOfTrainees)
{
if(trainee.getComputer() == computer)
if(trainee.getComputer().getName() == computer_name)
return trainee;
}
return Trainee();
@@ -149,7 +155,7 @@ QString DataBaseTrainees::getNameTraineeByLogin(QString login)
}
return QString(QStringLiteral(""));
}
/*
QColor DataBaseTrainees::getColorGroupByLogin(QString login)
{
QString nameTrainee = getNameTraineeByLogin(login);
@@ -157,15 +163,15 @@ QColor DataBaseTrainees::getColorGroupByLogin(QString login)
QString nameGroup = trainee.getGroup();
Group group = getGroup(nameGroup);
return getColorGroup(group.getColor());
}
}*/
QList<Trainee> DataBaseTrainees::getListTraineesInGroup(QString nameGroup)
QList<Trainee> DataBaseTrainees::getListTraineesInGroup(int id)
{
QList<Trainee> listTrainees;
for(Trainee trainee : listOfTrainees)
{
if(trainee.getGroup() == nameGroup)
if(trainee.getGroup().getID() == id)
listTrainees.append(trainee);
}
@@ -176,199 +182,185 @@ QList<Group> DataBaseTrainees::getListGroups()
{
return listOfGroups;
}
/*
QColor DataBaseTrainees::getColorGroup(Group::ColorGroup numColor)
{
if(numColor > listOfColorGroup.count() - 1)
return listOfColorGroup.at(Group::ColorGroup::colorAther);
return listOfColorGroup.at(numColor);
}
}*/
Trainee DataBaseTrainees::getTrainee(QString name)
Trainee DataBaseTrainees::getTrainee(int id)
{
//Обучаемые
for(int i = 0; i < listOfTrainees.count(); i++)
{
if(listOfTrainees[i].getName() == name)
if(listOfTrainees[i].getID() == id)
return listOfTrainees[i];
}
return Trainee();
}
Group DataBaseTrainees::getGroup(QString nameGroup)
Group DataBaseTrainees::getGroup(int id)
{
//Группы
for(int i = 0; i < listOfGroups.count(); i++)
{
if(listOfGroups[i].getName() == nameGroup)
if(listOfGroups[i].getID() == id)
return listOfGroups[i];
}
return Group();
}
QString DataBaseTrainees::newGroup()
int DataBaseTrainees::newGroup()
{
Group group;
group.setName(generateDefaultNameGroup());
group.setColor(generateDefaultColorGroup());
bool result = dbLMS->insertGroup(group);
int id = dbLMS->insertGroup(group);
if(result)
if(id)
{
//listOfGroups.append(group);
LoadTraineesGroupsPSQL();
return group.getName();
return id;
}
else
return QStringLiteral("");
return 0;
}
bool DataBaseTrainees::deleteGroup(QString name)
int DataBaseTrainees::deleteGroup(int id)
{
if(getListTraineesInGroup(name).count() > 0)
{//Группа не пуста
return false;
}
//Группы
for(int i = 0; i < listOfGroups.count(); i++)
{
if(listOfGroups[i].getName() == name)
if(listOfGroups[i].getID() == id)
{
int id = listOfGroups[i].getID();
int id_del = dbLMS->deleteGroup(id);
bool result = dbLMS->deleteGroup(id);
if(result)
if(id_del)
{
LoadTraineesGroupsPSQL();
//listOfGroups.removeAt(i);
break;
return id_del;
}
else
return 0;
}
}
return true;
return 0;
}
bool DataBaseTrainees::editGroup(QString name, Group group)
int DataBaseTrainees::editGroup(Group group)
{
//Группы
for(int i = 0; i < listOfGroups.count(); i++)
{
if(listOfGroups[i].getName() == name)
if(listOfGroups[i].getID() == group.getID())
{
if(!checkExistNameGroup(group.getName()) || group.getName() == name)
if(!checkExistNameGroup(group.getName()) || group.getName() == listOfGroups[i].getName())
{
//group.setID(listOfGroups[i].getID());
int id = dbLMS->updateGroup(group);
bool result = dbLMS->updateGroup(group);
if(result)
if(id)
{
/*
listOfGroups[i].setName(newName);
//Меняем имя группы у всех Обучаемых этой группы
//Обучаемые
for(int i = 0; i < listOfTrainees.count(); i++)
{
if(listOfTrainees[i].getGroup() == name)
listOfTrainees[i].setGroup(newName);
}
*/
LoadTraineesGroupsPSQL();
return true;
return id;
}
else
return false;
return 0;
}
else
{
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("An existing group name has been entered.\nThe changes will not be accepted."));
return 0;
}
}
}
return false;
return 0;
}
QString DataBaseTrainees::newTrainee(QString nameGroup)
int DataBaseTrainees::newTrainee(int id_group)
{
Trainee trainee;
trainee.setGroup(nameGroup);
Group group;
group.setID(id_group);
trainee.setGroup(group);
trainee.setName(generateDefaultNameTrainee());
trainee.setLogin(generateDefaultLoginTrainee());
trainee.setPassword(QStringLiteral("<password>"));
trainee.setLearnClass(QStringLiteral(""));
trainee.setComputer(QStringLiteral(""));
trainee.setArchived(false);
trainee.setLoggedIn(false);
//trainee.setWhatItDoes(QStringLiteral(""));
bool result = dbLMS->insertTrainee(trainee);
int id = dbLMS->insertTrainee(trainee);
if(result)
if(id)
{
//listOfTrainees.append(trainee);
LoadTraineesGroupsPSQL();
return trainee.getName();
return id;
}
else
return QStringLiteral("");
return 0;
}
void DataBaseTrainees::deleteTrainee(QString name)
int DataBaseTrainees::deleteTrainee(int id)
{
//Обучаемые
for(int i = 0; i < listOfTrainees.count(); i++)
{
if(listOfTrainees[i].getName() == name)
if(listOfTrainees[i].getID() == id)
{
int id = listOfTrainees[i].getID();
int id_del = dbLMS->deleteTrainee(id);
bool result = dbLMS->deleteTrainee(id);
if(result)
if(id_del)
{
LoadTraineesGroupsPSQL();
//listOfTrainees.removeAt(i);
return id_del;
}
return;
return 0;
}
}
return 0;
}
bool DataBaseTrainees::editTrainee(QString name, Trainee trainee)
int DataBaseTrainees::editTrainee(Trainee trainee)
{
//Обучаемые
for(int i = 0; i < listOfTrainees.count(); i++)
{
if(listOfTrainees[i].getName() == name)
if(listOfTrainees[i].getID() == trainee.getID())
{
if( (!checkExistNameTrainee(trainee.getName()) || trainee.getName() == name) &&
if( (!checkExistNameTrainee(trainee.getName()) || trainee.getName() == listOfTrainees[i].getName()) &&
(!checkExistLoginTrainee(trainee.getLogin()) || trainee.getLogin() == listOfTrainees[i].getLogin()) )
{
//trainee.setID(listOfTrainees[i].getID());
int id = dbLMS->updateTrainee(trainee);
bool result = dbLMS->updateTrainee(trainee);
if(result)
if(id)
{
//listOfTrainees.replace(i, trainee);
LoadTraineesGroupsPSQL();
return true;
return id;
}
else
return false;
return 0;
}
else
{
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("An existing trainee's name or login has been entered.\nThe changes will not be accepted."));
return 0;
}
}
}
return false;
return 0;
}
bool DataBaseTrainees::isArchived(QString name)
bool DataBaseTrainees::isArchived(int id)
{
//Обучаемые
for(int i = 0; i < listOfTrainees.count(); i++)
{
if(listOfTrainees[i].getName() == name)
if(listOfTrainees[i].getID()== id)
return listOfTrainees[i].getArchived();
}
return false;
@@ -439,7 +431,7 @@ bool DataBaseTrainees::checkExistLoginTrainee(QString login)
}
return false;
}
/*
Group::ColorGroup DataBaseTrainees::generateDefaultColorGroup()
{
for(int i = 0; i < Group::ColorGroup::countColor; i++)
@@ -449,8 +441,8 @@ Group::ColorGroup DataBaseTrainees::generateDefaultColorGroup()
return color;
}
return Group::ColorGroup::colorAther;
}
}*/
/*
bool DataBaseTrainees::checkExistColorGroup(Group::ColorGroup color)
{
//Группы
@@ -460,4 +452,4 @@ bool DataBaseTrainees::checkExistColorGroup(Group::ColorGroup color)
return true;
}
return false;
}
}*/

View File

@@ -11,7 +11,7 @@
#include <QColor>
#include <QObject>
class INSTRUCTORSANDTRAINEES_EXPORT DataBaseTrainees : QObject
class DataBaseTrainees : QObject
{
Q_OBJECT
@@ -21,35 +21,33 @@ public:
void LoadTraineesGroupsPSQL();
bool AuthorizationTrainee(QString login, QString password, QString learnClass, QString computer);
bool AuthorizationTrainee(QString login, QString password, QString classroom_name, QString computer_name);
bool deAuthorizationTrainee(QString login);
void setTasks(QString login, QStringList tasks);
//void setTasks(QString login, QStringList tasks);
QStringList getTasks(QString login);
QString getNameTraineeOnComputer(QString computer);
Trainee getTraineeOnComputer(QString computer);
QString getNameTraineeOnComputer(QString computer_name);
Trainee getTraineeOnComputer(QString computer_name);
QString getNameTraineeByLogin(QString login);
QColor getColorGroupByLogin(QString login);
//QColor getColorGroupByLogin(QString login);
QList<Trainee> getListTraineesInGroup(QString nameGroup);
QList<Trainee> getListTraineesInGroup(int id);
QList<Group> getListGroups();
QColor getColorGroup(Group::ColorGroup numColor);
Trainee getTrainee(int id);
Group getGroup(int id);
Trainee getTrainee(QString name);
Group getGroup(QString nameGroup);
int newGroup();
int deleteGroup(int id);
int editGroup(Group group);
QString newGroup();
bool deleteGroup(QString name);
bool editGroup(QString name, Group group);
int newTrainee(int id_group);
int deleteTrainee(int id);
int editTrainee(Trainee trainee);
QString newTrainee(QString nameGroup);
void deleteTrainee(QString name);
bool editTrainee(QString name, Trainee trainee);
bool isArchived(QString name);
bool isArchived(int id);
private:
QString generateDefaultNameGroup();
@@ -60,9 +58,6 @@ private:
QString generateDefaultLoginTrainee();
bool checkExistLoginTrainee(QString login);
Group::ColorGroup generateDefaultColorGroup();
bool checkExistColorGroup(Group::ColorGroup color);
private:
QList<Trainee> listOfTrainees;
QList<Group> listOfGroups;

View File

@@ -5,8 +5,7 @@
#include "dialogedittrainee.h"
EditorTrainees::EditorTrainees(DataBaseTrainees* db, bool adminMode, QWidget *parent) :
//QDialog(parent),
TraineesView(db, CommonView::TypeView::control, parent),
TraineesView(db, CommonView::TypeView::control, adminMode, parent),
ui(new Ui::EditorTrainees)
{
ui->setupUi((QDialog*)this);
@@ -23,9 +22,9 @@ EditorTrainees::~EditorTrainees()
void EditorTrainees::on_btnNewGroup_clicked()
{
QString nameGroup = dbTrainees->newGroup();
int id = dbTrainees->newGroup();
loadTraineesFromDB();
setCurrentGroup(nameGroup);
setCurrentGroup(id);
}
void EditorTrainees::on_btnDeleteGroup_clicked()
@@ -37,13 +36,24 @@ void EditorTrainees::on_btnDeleteGroup_clicked()
QTreeWidgetItem *treeItemParent = treeItemCurrent->parent();
if(treeItemParent == nullptr)
{//Выбрана группа
QString name = treeItemCurrent->text(0);
if(dbTrainees->deleteGroup(name))
{//Удалено
loadTraineesFromDB();
int id_group = treeItemCurrent->text(0).toInt();
if(dbTrainees->getListTraineesInGroup(id_group).count() > 0)
{
QMessageBox::critical(this, tr("Editing error!"), tr("The group is not empty.\nIt is not possible to delete a non-empty group."));
return;
}
else
QMessageBox::critical(this, tr("Editing error!"), tr("The group is not empty.\nIt is not possible to delete a non-empty group."));
{//Пустая группа
if(int id = dbTrainees->deleteGroup(id_group))
{//Удалено
loadTraineesFromDB();
}
else
{
//Ошибка удаления
}
}
}
}
}
@@ -57,10 +67,16 @@ void EditorTrainees::on_btnNewTrainee_clicked()
QTreeWidgetItem *treeItemParent = treeItemCurrent->parent();
if(treeItemParent == nullptr)
{//Выбрана группа. Можно добавить Обучаемого
QString nameGroup = treeItemCurrent->text(0);
dbTrainees->newTrainee(nameGroup);
loadTraineesFromDB();
setCurrentGroup(nameGroup);
int id_group = treeItemCurrent->text(0).toInt();
if(int id = dbTrainees->newTrainee(id_group))
{
loadTraineesFromDB();
setCurrentGroup(id_group);
}
else
{
//Ошибка добавления
}
}
}
}
@@ -75,14 +91,20 @@ void EditorTrainees::on_btnDeleteTrainee_clicked()
if(treeItemParent != nullptr)
{//Выбран обучаемый
QString name = treeItemCurrent->text(0);
QString nameGroup = treeItemParent->text(0);
int id_trainee = treeItemCurrent->text(0).toInt();
int id_group = treeItemParent->text(0).toInt();
if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
{
dbTrainees->deleteTrainee(name);
loadTraineesFromDB();
setCurrentGroup(nameGroup);
if(int id = dbTrainees->deleteTrainee(id_trainee))
{//Удалено
loadTraineesFromDB();
setCurrentGroup(id_group);
}
else
{
//Ошибка удаления
}
}
}
}
@@ -98,29 +120,37 @@ void EditorTrainees::on_btnToOrFromArchiveTrainee_clicked()
if(treeItemParent != nullptr)
{//Выбран обучаемый
QString name = treeItemCurrent->text(0);
int id_trainee = treeItemCurrent->text(0).toInt();
Trainee trainee = dbTrainees->getTrainee(name);
Trainee trainee = dbTrainees->getTrainee(id_trainee);
if(trainee.getArchived())
{//Архивный
trainee.setArchived(false);
if(dbTrainees->editTrainee(name, trainee))
{
if(int id = dbTrainees->editTrainee(trainee))
{//Отредактировано
loadTraineesFromDB();
setCurrentTrainee(trainee.getName());
setCurrentTrainee(id);
}
else
{
//Ошибка редактирования
}
}
else
{//Не Архивный
trainee.setArchived(true);
if(dbTrainees->editTrainee(name, trainee))
{
if(int id = dbTrainees->editTrainee(trainee))
{//Отредактировано
if(!archiveVisible)
ui->btnArchive->click();
loadTraineesFromDB();
setCurrentTrainee(trainee.getName());
setCurrentTrainee(id);
}
else
{
//Ошибка редактирования
}
}
}
@@ -138,23 +168,25 @@ void EditorTrainees::on_btnEdit_clicked()
if(treeItemParent == nullptr)
{//Выбрана группа
QString nameGroup = treeItemCurrent->text(0);
int id_group = treeItemCurrent->text(0).toInt();
DialogEditGroup dlg(this);
dlg.setGroup(dbTrainees->getGroup(nameGroup));
dlg.setGroup(dbTrainees->getGroup(id_group));
switch( dlg.exec() )
{
case QDialog::Accepted:
{
if(dbTrainees->editGroup(nameGroup, dlg.getGroup()))
{
if(int id = dbTrainees->editGroup(dlg.getGroup()))
{//Отредактировано
loadTraineesFromDB();
setCurrentGroup(dlg.getGroup().getName());
setCurrentGroup(id);
}
else
QMessageBox::critical(this, tr("Editing error!"),
tr("An existing group name has been entered.\nThe changes will not be accepted."));
{
//Ошибка редактирования
}
break;
}
case QDialog::Rejected:
@@ -166,23 +198,25 @@ void EditorTrainees::on_btnEdit_clicked()
else
{//Выбран обучаемый
QString name = treeItemCurrent->text(0);
int id_trainee = treeItemCurrent->text(0).toInt();
DialogEditTrainee dlg(this);
dlg.setTrainee(dbTrainees->getTrainee(name));
dlg.setTrainee(dbTrainees->getTrainee(id_trainee));
switch( dlg.exec() )
{
case QDialog::Accepted:
{
if(dbTrainees->editTrainee(name, dlg.getTrainee()))
{
if(int id = dbTrainees->editTrainee(dlg.getTrainee()))
{//Отредактировано
loadTraineesFromDB();
setCurrentTrainee(dlg.getTrainee().getName());
setCurrentTrainee(id);
}
else
QMessageBox::critical(this, tr("Editing error!"),
tr("An existing trainee's name or login has been entered.\nThe changes will not be accepted."));
{
//Ошибка редактирования
}
break;
}
case QDialog::Rejected:
@@ -210,8 +244,27 @@ void EditorTrainees::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
QTreeWidgetItem *treeItemParent = current->parent();
if(treeItemParent == nullptr)
{//Выбрана группа
ui->btnNewGroup->setEnabled(true);
ui->btnDeleteGroup->setEnabled(true);
int id_group = current->text(0).toInt();
if(adminMode)
{
ui->btnNewGroup->setEnabled(true);
if(dbTrainees->getListTraineesInGroup(id_group).count() > 0)
{//Группа не пуста
ui->btnDeleteGroup->setEnabled(false);
}
else
{//Группа пуста
ui->btnDeleteGroup->setEnabled(true);
}
}
else
{
ui->btnNewGroup->setEnabled(false);
ui->btnDeleteGroup->setEnabled(false);
}
ui->btnNewTrainee->setEnabled(true);
ui->btnDeleteTrainee->setEnabled(false);
ui->btnToOrFromArchiveTrainee->setEnabled(false);
@@ -223,13 +276,13 @@ void EditorTrainees::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
}
else
{//Выбран обучаемый
QString name = current->text(0);
int id_trainee = current->text(0).toInt();
ui->btnNewGroup->setEnabled(false);
ui->btnDeleteGroup->setEnabled(false);
ui->btnNewTrainee->setEnabled(false);
if(dbTrainees->isArchived(name))
if(dbTrainees->isArchived(id_trainee))
{//Архивный
ui->btnDeleteTrainee->setEnabled(true);
@@ -251,13 +304,13 @@ void EditorTrainees::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
}
}
void EditorTrainees::setCurrentGroup(QString nameGroup)
void EditorTrainees::setCurrentGroup(int id)
{
for(int i = 0; i < treeWidget->topLevelItemCount(); i++)
{
QTreeWidgetItem * item = treeWidget->topLevelItem(i);
if(item != nullptr)
if(item->text(0) == nameGroup)
if(item->text(0).toInt() == id)
{
treeWidget->setCurrentItem(item);
break;
@@ -265,7 +318,7 @@ void EditorTrainees::setCurrentGroup(QString nameGroup)
}
}
void EditorTrainees::setCurrentTrainee(QString name)
void EditorTrainees::setCurrentTrainee(int id)
{
for(int i = 0; i < treeWidget->topLevelItemCount(); i++)
{
@@ -276,7 +329,7 @@ void EditorTrainees::setCurrentTrainee(QString name)
{
QTreeWidgetItem * itemChild = item->child(j);
if(itemChild != nullptr)
if(itemChild->text(0) == name)
if(itemChild->text(0).toInt() == id)
{
treeWidget->setCurrentItem(itemChild);
break;

View File

@@ -18,7 +18,7 @@ class EditorTrainees : /*public QDialog,*/ public TraineesView
Q_OBJECT
public:
explicit EditorTrainees(DataBaseTrainees* db, bool adminMode = false, QWidget *parent = nullptr);
explicit EditorTrainees(DataBaseTrainees* db, bool adminMode, QWidget *parent = nullptr);
~EditorTrainees();
private Q_SLOTS:
@@ -32,8 +32,8 @@ private Q_SLOTS:
void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
private:
void setCurrentGroup(QString nameGroup);
void setCurrentTrainee(QString name);
void setCurrentGroup(int id);
void setCurrentTrainee(int id);
private:
Ui::EditorTrainees *ui;

View File

@@ -1,8 +1,8 @@
#include <QHeaderView>
#include "traineesview.h"
TraineesView::TraineesView(DataBaseTrainees* db, TypeView type, QWidget *parent):
CommonView(type, parent),
TraineesView::TraineesView(DataBaseTrainees* db, TypeView type, bool adminMode, QWidget *parent):
CommonView(type, adminMode, parent),
dbTrainees(db)
{
@@ -15,38 +15,38 @@ void TraineesView::preparationTreeWidget(QTreeWidget *tree)
if(treeWidget == nullptr)
return;
treeWidget->setColumnCount(9);
treeWidget->setColumnCount(10);
reSetHeadTreeWidget();
treeWidget->header()->setStyleSheet(QStringLiteral("font-size: 10pt;"));
treeWidget->setColumnWidth(0, 250);
treeWidget->setColumnWidth(1, 100);
treeWidget->setColumnWidth(0, 80);
treeWidget->setColumnWidth(1, 250);
treeWidget->setColumnWidth(2, 100);
treeWidget->setColumnWidth(3, 130);
treeWidget->setColumnWidth(3, 100);
treeWidget->setColumnWidth(4, 130);
treeWidget->setColumnWidth(5, 130);
treeWidget->setColumnWidth(6, 80);
treeWidget->setColumnWidth(6, 130);
treeWidget->setColumnWidth(7, 80);
treeWidget->setColumnWidth(8, 100);
treeWidget->setColumnWidth(8, 80);
treeWidget->setColumnWidth(9, 100);
if(typeView == TypeView::onlyView)
{//onlyView
treeWidget->setColumnHidden(1, true);
treeWidget->setColumnHidden(2, true);
treeWidget->setColumnHidden(6, true);
treeWidget->setColumnHidden(8, true);
treeWidget->setColumnHidden(3, true);
treeWidget->setColumnHidden(7, true);
}
else
{//control
treeWidget->setColumnHidden(6, true);
treeWidget->setColumnHidden(7, true);
}
}
void TraineesView::loadTraineesFromDB()
{
//dbTrainees->LoadTraineesGroupsPSQL();
dbTrainees->LoadTraineesGroupsPSQL();
if(treeWidget == nullptr)
return;
@@ -58,56 +58,62 @@ void TraineesView::loadTraineesFromDB()
{
//Группа
QTreeWidgetItem *ItemGroup = new QTreeWidgetItem(treeWidget);
ItemGroup->setText(0, group.getName());
ItemGroup->setIcon(0, QIcon(QStringLiteral(":/icons/group.png")));
QColor color = dbTrainees->getColorGroup(/*group.getColor()*/Group::color0);
setItemColor(ItemGroup, color);
ItemGroup->setText(0, QString::number(group.getID()));
ItemGroup->setText(1, group.getName());
ItemGroup->setIcon(1, QIcon(QStringLiteral(":/icons/group.png")));
setItemColor(ItemGroup, QColor(170, 190, 170));
//Обучаемые
QList<Trainee> listTrainees;
listTrainees = dbTrainees->getListTraineesInGroup(group.getName());
listTrainees = dbTrainees->getListTraineesInGroup(group.getID());
for(Trainee trainee : listTrainees)
{
QTreeWidgetItem *ItemTrainee = new QTreeWidgetItem();
ItemTrainee->setText(0, trainee.getName());
ItemTrainee->setText(1, trainee.getLogin());
ItemTrainee->setText(2, trainee.getPassword());
ItemTrainee->setText(3, trainee.getLearnClass());
ItemTrainee->setText(4, trainee.getComputer());
ItemTrainee->setText(5, trainee.getIpAddress());
ItemTrainee->setText(0, QString::number(trainee.getID()));
ItemTrainee->setText(1, trainee.getName());
ItemTrainee->setText(2, trainee.getLogin());
ItemTrainee->setText(3, trainee.getPassword());
ItemTrainee->setText(4, trainee.getComputer().getClassroom().getName());
ItemTrainee->setText(5, trainee.getComputer().getName());
ItemTrainee->setText(6, trainee.getComputer().getIpAddress());
if(trainee.getArchived())
{//Архивный
ItemTrainee->setText(6, tr("yes"));
ItemTrainee->setIcon(0, QIcon(QStringLiteral(":/icons/traineeArchive.png")));
ItemTrainee->setText(7, tr("yes"));
ItemTrainee->setIcon(1, QIcon(QStringLiteral(":/icons/traineeArchive.png")));
setItemColorArchive(ItemTrainee);
}
else
{//Не Архивный
ItemTrainee->setText(6, tr("no"));
ItemTrainee->setIcon(0, QIcon(QStringLiteral(":/icons/trainee.png")));
ItemTrainee->setText(7, tr("no"));
ItemTrainee->setIcon(1, QIcon(QStringLiteral(":/icons/trainee.png")));
setItemColorNoArchive(ItemTrainee);
}
if(trainee.getLoggedIn())
{//Залогинен
ItemTrainee->setText(7, tr("yes"));
ItemTrainee->setIcon(7, QIcon(QStringLiteral(":/icons/circleGreen.png")));
ItemTrainee->setText(8, tr("yes"));
ItemTrainee->setIcon(8, QIcon(QStringLiteral(":/icons/circleGreen.png")));
}
else
{//Не Залогинен
ItemTrainee->setText(7, tr("no"));
ItemTrainee->setIcon(7, QIcon(QStringLiteral(":/icons/circleGray.png")));
ItemTrainee->setText(8, tr("no"));
ItemTrainee->setIcon(8, QIcon(QStringLiteral(":/icons/circleGray.png")));
}
ItemTrainee->setText(8, QString(trainee.getTasks().join(QStringLiteral(";"))));
QString tasksStr;
for(Task task: trainee.getTasks())
{
tasksStr += task.getName() + QStringLiteral("; ");
}
ItemTrainee->setText(9, tasksStr);
ItemGroup->addChild(ItemTrainee);
//Скрываем архивных (при необходимости)
if(trainee.getArchived())
if(!archiveVisible)
if(! archiveVisible)
ItemTrainee->setHidden(true);
//Скрываем незалогиненых (при необходимости)
@@ -118,7 +124,7 @@ void TraineesView::loadTraineesFromDB()
}
treeWidget->setSortingEnabled(true);
treeWidget->sortItems(0, Qt::SortOrder::AscendingOrder);
treeWidget->sortItems(1, Qt::SortOrder::AscendingOrder);
treeWidget->expandAll();
if(typeView == TypeView::control)
@@ -131,6 +137,6 @@ void TraineesView::loadTraineesFromDB()
void TraineesView::reSetHeadTreeWidget()
{
QStringList listHeaders = {tr("Trainee"), tr("Login"), tr("Password"), tr("Class"), tr("Computer"), tr("IP address"), tr("Archived"), tr("Logged"), tr("Tasks")};
QStringList listHeaders = {tr("ID"), tr("Trainee"), tr("Login"), tr("Password"), tr("Class"), tr("Computer"), tr("IP address"), tr("Archived"), tr("Logged"), tr("Tasks")};
treeWidget->setHeaderLabels(listHeaders);
}

View File

@@ -7,12 +7,12 @@
//Родительский класс представления БД Обучаемых (для просмотра и управления)
class INSTRUCTORSANDTRAINEES_EXPORT TraineesView: public CommonView
class TraineesView: public CommonView
{
Q_OBJECT
public:
TraineesView(DataBaseTrainees* db, TypeView type, QWidget *parent = nullptr);
TraineesView(DataBaseTrainees* db, TypeView type, bool adminMode, QWidget *parent = nullptr);
protected:
void preparationTreeWidget(QTreeWidget* tree);

View File

@@ -3,8 +3,7 @@
#include "ui_viewertrainees.h"
ViewerTrainees::ViewerTrainees(DataBaseTrainees* db, bool adminMode, QWidget *parent) :
//QWidget(parent),
TraineesView(db, CommonView::TypeView::onlyView, parent),
TraineesView(db, CommonView::TypeView::onlyView, adminMode, parent),
ui(new Ui::ViewerTrainees)
{
ui->setupUi(this);
@@ -35,7 +34,7 @@ void ViewerTrainees::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column
{
if(item->childCount() == 0)
{//Выбран обучаемый
QString login = item->text(1);
QString login = item->text(2);
Q_EMIT signal_traineeSelected(login);
}
}
@@ -48,7 +47,7 @@ void ViewerTrainees::slot_tabMessengerChanged(QString login)
for (int j = 0; j < countChild; j++)
{//Проход по обучаемым
QString loginChild = ui->treeWidget->topLevelItem(i)->child(j)->text(1);
QString loginChild = ui->treeWidget->topLevelItem(i)->child(j)->text(2);
if(loginChild == login)
{
ui->treeWidget->setCurrentItem(ui->treeWidget->topLevelItem(i)->child(j));
@@ -80,16 +79,12 @@ void ViewerTrainees::slot_LanguageChanged(QString language)
void ViewerTrainees::on_btnEditorTrainees_clicked()
{
EditorTrainees editorTraineesGroups(dbTrainees, adminMode);
//dlg.setWindowTitle(tr("List trainees"));
//dlg.exec();
//dlg.show();
QDialog* dialog = new QDialog(this);
QHBoxLayout *layout = new QHBoxLayout(dialog);
layout->addWidget(&editorTraineesGroups);
dialog->setWindowTitle(tr("List trainees"));
dialog->setWindowTitle(tr("Editor of trainees"));
dialog->setMinimumSize(1400, 800);
dialog->exec();
dbTrainees->LoadTraineesGroupsPSQL();
loadTraineesFromDB();
}

View File

@@ -14,7 +14,7 @@ class ViewerTrainees;
//Виджет только для просмотра БД Обучаемых
class INSTRUCTORSANDTRAINEES_EXPORT ViewerTrainees : public TraineesView
class ViewerTrainees : public TraineesView
{
Q_OBJECT