From 811c1e0f554a4298955bad5cd11959267713e5ff Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jouko=20Kylm=C3=A4oja?= Date: Tue, 11 May 2010 15:47:21 +0300 Subject: [PATCH] Initial commit --- golfscorecard.pro | 29 + src/Makefile | 143 ++++ src/Makefile.Debug | 295 +++++++ src/Makefile.Release | 295 +++++++ src/basicscorecard.cpp | 538 ++++++++++++ src/basicscorecard.h | 58 ++ src/basicscorecard.ui | 1427 +++++++++++++++++++++++++++++++ src/courses.h | 145 ++++ src/datahandling.cpp | 300 +++++++ src/datahandling.h | 91 ++ src/images/Add-icon.png | Bin 0 -> 10909 bytes src/images/YaST-icon.png | Bin 0 -> 5210 bytes src/images/arrow-down-icon.png | Bin 0 -> 6051 bytes src/images/arrow-left-icon.png | Bin 0 -> 5910 bytes src/images/arrow-right-icon.png | Bin 0 -> 16635 bytes src/images/arrow-right-icon_2.png | Bin 0 -> 5897 bytes src/images/arrow-up-icon.png | Bin 0 -> 6064 bytes src/images/course-icon.png | Bin 0 -> 23721 bytes src/images/edit-course.png | Bin 0 -> 13843 bytes src/images/edit-player.png | Bin 0 -> 26933 bytes src/images/golf-icon.png | Bin 0 -> 9752 bytes src/images/golf-icon_2.png | Bin 0 -> 2592 bytes src/images/new-course.png | Bin 0 -> 12163 bytes src/images/new-player.png | Bin 0 -> 25442 bytes src/images/person-icon.png | Bin 0 -> 28931 bytes src/images/stats-icon.png | Bin 0 -> 14263 bytes src/main.cpp | 14 + src/mainwindow.cpp | 41 + src/mainwindow.h | 27 + src/mainwindow.ui | 190 ++++ src/newround.cpp | 269 ++++++ src/newround.h | 36 + src/newround.ui | 589 +++++++++++++ src/object_script.golfscorecard.Debug | 18 + src/object_script.golfscorecard.Release | 18 + src/pcmanagement.cpp | 25 + src/pcmanagement.h | 25 + src/pcmanagement.ui | 246 ++++++ src/player.h | 17 + src/playermanagement.cpp | 121 +++ src/playermanagement.h | 28 + src/playermanagement.ui | 206 +++++ src/resources.qrc | 17 + src/ui_basicscorecard.h | 656 ++++++++++++++ src/ui_mainwindow.h | 128 +++ src/ui_newround.h | 274 ++++++ src/ui_pcmanagement.h | 148 ++++ src/ui_playermanagement.h | 138 +++ src/xml/courses/coursedata.xml | 5 + src/xml/courses/coursedata_example.xml | 21 + src/xml/courses/sankivaara-sanki.xml | 140 +++ src/xml/players/playerdata.xml | 4 + src/xmlparser.cpp | 245 ++++++ src/xmlparser.h | 18 + 54 files changed, 6985 insertions(+) create mode 100644 golfscorecard.pro create mode 100644 src/Makefile create mode 100644 src/Makefile.Debug create mode 100644 src/Makefile.Release create mode 100644 src/basicscorecard.cpp create mode 100644 src/basicscorecard.h create mode 100644 src/basicscorecard.ui create mode 100644 src/courses.h create mode 100644 src/datahandling.cpp create mode 100644 src/datahandling.h create mode 100644 src/images/Add-icon.png create mode 100644 src/images/YaST-icon.png create mode 100644 src/images/arrow-down-icon.png create mode 100644 src/images/arrow-left-icon.png create mode 100644 src/images/arrow-right-icon.png create mode 100644 src/images/arrow-right-icon_2.png create mode 100644 src/images/arrow-up-icon.png create mode 100644 src/images/course-icon.png create mode 100644 src/images/edit-course.png create mode 100644 src/images/edit-player.png create mode 100644 src/images/golf-icon.png create mode 100644 src/images/golf-icon_2.png create mode 100644 src/images/new-course.png create mode 100644 src/images/new-player.png create mode 100644 src/images/person-icon.png create mode 100644 src/images/stats-icon.png create mode 100644 src/main.cpp create mode 100644 src/mainwindow.cpp create mode 100644 src/mainwindow.h create mode 100644 src/mainwindow.ui create mode 100644 src/newround.cpp create mode 100644 src/newround.h create mode 100644 src/newround.ui create mode 100644 src/object_script.golfscorecard.Debug create mode 100644 src/object_script.golfscorecard.Release create mode 100644 src/pcmanagement.cpp create mode 100644 src/pcmanagement.h create mode 100644 src/pcmanagement.ui create mode 100644 src/player.h create mode 100644 src/playermanagement.cpp create mode 100644 src/playermanagement.h create mode 100644 src/playermanagement.ui create mode 100644 src/resources.qrc create mode 100644 src/ui_basicscorecard.h create mode 100644 src/ui_mainwindow.h create mode 100644 src/ui_newround.h create mode 100644 src/ui_pcmanagement.h create mode 100644 src/ui_playermanagement.h create mode 100644 src/xml/courses/coursedata.xml create mode 100644 src/xml/courses/coursedata_example.xml create mode 100644 src/xml/courses/sankivaara-sanki.xml create mode 100644 src/xml/players/playerdata.xml create mode 100644 src/xmlparser.cpp create mode 100644 src/xmlparser.h diff --git a/golfscorecard.pro b/golfscorecard.pro new file mode 100644 index 0000000..3569111 --- /dev/null +++ b/golfscorecard.pro @@ -0,0 +1,29 @@ +# ------------------------------------------------- +# Project created by QtCreator 2010-04-13T16:47:30 +# ------------------------------------------------- +QT += xml +TARGET = golfscorecard +TEMPLATE = app +SOURCES += main.cpp \ + mainwindow.cpp \ + newround.cpp \ + xmlparser.cpp \ + datahandling.cpp \ + basicscorecard.cpp \ + pcmanagement.cpp \ + playermanagement.cpp +HEADERS += mainwindow.h \ + newround.h \ + xmlparser.h \ + datahandling.h \ + player.h \ + courses.h \ + basicscorecard.h \ + pcmanagement.h \ + playermanagement.h +FORMS += mainwindow.ui \ + newround.ui \ + basicscorecard.ui \ + pcmanagement.ui \ + playermanagement.ui +RESOURCES += resources.qrc diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..6b7fea7 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,143 @@ +############################################################################# +# Makefile for building: golfscorecard +# Generated by qmake (2.01a) (Qt 4.6.2) on: pe 30. huhti 00:49:00 2010 +# Project: golfscorecard.pro +# Template: app +# Command: c:\qt\2010.02.1\qt\bin\qmake.exe -spec c:\Qt\2010.02.1\qt\mkspecs\win32-g++ -win32 CONFIG+=release -o Makefile golfscorecard.pro +############################################################################# + +first: release +install: release-install +uninstall: release-uninstall +MAKEFILE = Makefile +QMAKE = c:\qt\2010.02.1\qt\bin\qmake.exe +DEL_FILE = del +CHK_DIR_EXISTS= if not exist +MKDIR = mkdir +COPY = copy /y +COPY_FILE = $(COPY) +COPY_DIR = xcopy /s /q /y /i +INSTALL_FILE = $(COPY_FILE) +INSTALL_PROGRAM = $(COPY_FILE) +INSTALL_DIR = $(COPY_DIR) +DEL_FILE = del +SYMLINK = +DEL_DIR = rmdir +MOVE = move +CHK_DIR_EXISTS= if not exist +MKDIR = mkdir +SUBTARGETS = \ + release \ + debug + +release: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release +release-make_default: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release +release-make_first: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release first +release-all: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release all +release-clean: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release clean +release-distclean: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release distclean +release-install: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release install +release-uninstall: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release uninstall +debug: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug +debug-make_default: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug +debug-make_first: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug first +debug-all: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug all +debug-clean: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug clean +debug-distclean: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug distclean +debug-install: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug install +debug-uninstall: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug uninstall + +Makefile: golfscorecard.pro c:/Qt/2010.02.1/qt/mkspecs/win32-g++/qmake.conf c:/Qt/2010.02.1/qt/mkspecs/qconfig.pri \ + c:/Qt/2010.02.1/qt/mkspecs/features/qt_functions.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/qt_config.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/exclusive_builds.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/default_pre.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/win32/default_pre.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/release.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/debug_and_release.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/default_post.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/win32/default_post.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/win32/rtti.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/win32/exceptions.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/win32/stl.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/shared.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/warn_on.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/qt.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/win32/thread.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/moc.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/win32/windows.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/resources.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/uic.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/yacc.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/lex.prf \ + c:/Qt/2010.02.1/qt/mkspecs/features/include_source_dir.prf \ + c:/Qt/2010.02.1/qt/lib/qtmain.prl + $(QMAKE) -spec c:\Qt\2010.02.1\qt\mkspecs\win32-g++ -win32 CONFIG+=release -o Makefile golfscorecard.pro +c:\Qt\2010.02.1\qt\mkspecs\qconfig.pri: +c:\Qt\2010.02.1\qt\mkspecs\features\qt_functions.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\qt_config.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\exclusive_builds.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\default_pre.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\win32\default_pre.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\release.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\debug_and_release.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\default_post.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\win32\default_post.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\win32\rtti.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\win32\exceptions.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\win32\stl.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\shared.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\warn_on.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\qt.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\win32\thread.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\moc.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\win32\windows.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\resources.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\uic.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\yacc.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\lex.prf: +c:\Qt\2010.02.1\qt\mkspecs\features\include_source_dir.prf: +c:\Qt\2010.02.1\qt\lib\qtmain.prl: +qmake: qmake_all FORCE + @$(QMAKE) -spec c:\Qt\2010.02.1\qt\mkspecs\win32-g++ -win32 CONFIG+=release -o Makefile golfscorecard.pro + +qmake_all: FORCE + +make_default: release-make_default debug-make_default FORCE +make_first: release-make_first debug-make_first FORCE +all: release-all debug-all FORCE +clean: release-clean debug-clean FORCE +distclean: release-distclean debug-distclean FORCE + -$(DEL_FILE) Makefile + +release-mocclean: $(MAKEFILE).Release + $(MAKE) -f $(MAKEFILE).Release mocclean +debug-mocclean: $(MAKEFILE).Debug + $(MAKE) -f $(MAKEFILE).Debug mocclean +mocclean: release-mocclean debug-mocclean + +release-mocables: $(MAKEFILE).Release + $(MAKE) -f $(MAKEFILE).Release mocables +debug-mocables: $(MAKEFILE).Debug + $(MAKE) -f $(MAKEFILE).Debug mocables +mocables: release-mocables debug-mocables +FORCE: + +$(MAKEFILE).Release: Makefile +$(MAKEFILE).Debug: Makefile diff --git a/src/Makefile.Debug b/src/Makefile.Debug new file mode 100644 index 0000000..29b4ca5 --- /dev/null +++ b/src/Makefile.Debug @@ -0,0 +1,295 @@ +############################################################################# +# Makefile for building: golfscorecard +# Generated by qmake (2.01a) (Qt 4.6.2) on: pe 30. huhti 00:48:59 2010 +# Project: golfscorecard.pro +# Template: app +############################################################################# + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN +CFLAGS = -g -Wall $(DEFINES) +CXXFLAGS = -g -frtti -fexceptions -mthreads -Wall $(DEFINES) +INCPATH = -I"c:\Qt\2010.02.1\qt\include\QtCore" -I"c:\Qt\2010.02.1\qt\include\QtGui" -I"c:\Qt\2010.02.1\qt\include\QtXml" -I"c:\Qt\2010.02.1\qt\include" -I"c:\Qt\2010.02.1\qt\include\ActiveQt" -I"debug" -I"." -I"c:\Qt\2010.02.1\qt\mkspecs\win32-g++" +LINK = g++ +LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows +LIBS = -L"c:\Qt\2010.02.1\qt\lib" -lmingw32 -lqtmaind -lQtXmld4 -lQtGuid4 -lQtCored4 +QMAKE = c:\qt\2010.02.1\qt\bin\qmake.exe +IDC = c:\Qt\2010.02.1\qt\bin\idc.exe +IDL = midl +ZIP = zip -r -9 +DEF_FILE = +RES_FILE = +COPY = copy /y +COPY_FILE = $(COPY) +COPY_DIR = xcopy /s /q /y /i +DEL_FILE = del +DEL_DIR = rmdir +MOVE = move +CHK_DIR_EXISTS= if not exist +MKDIR = mkdir +INSTALL_FILE = $(COPY_FILE) +INSTALL_PROGRAM = $(COPY_FILE) +INSTALL_DIR = $(COPY_DIR) + +####### Output directory + +OBJECTS_DIR = debug + +####### Files + +SOURCES = main.cpp \ + mainwindow.cpp \ + newround.cpp \ + xmlparser.cpp \ + datahandling.cpp \ + basicscorecard.cpp \ + pcmanagement.cpp \ + playermanagement.cpp debug\moc_mainwindow.cpp \ + debug\moc_newround.cpp \ + debug\moc_xmlparser.cpp \ + debug\moc_datahandling.cpp \ + debug\moc_basicscorecard.cpp \ + debug\moc_pcmanagement.cpp \ + debug\moc_playermanagement.cpp \ + debug\qrc_resources.cpp +OBJECTS = debug/main.o \ + debug/mainwindow.o \ + debug/newround.o \ + debug/xmlparser.o \ + debug/datahandling.o \ + debug/basicscorecard.o \ + debug/pcmanagement.o \ + debug/playermanagement.o \ + debug/moc_mainwindow.o \ + debug/moc_newround.o \ + debug/moc_xmlparser.o \ + debug/moc_datahandling.o \ + debug/moc_basicscorecard.o \ + debug/moc_pcmanagement.o \ + debug/moc_playermanagement.o \ + debug/qrc_resources.o +DIST = +QMAKE_TARGET = golfscorecard +DESTDIR = debug\ #avoid trailing-slash linebreak +TARGET = golfscorecard.exe +DESTDIR_TARGET = debug\golfscorecard.exe + +####### Implicit rules + +.SUFFIXES: .cpp .cc .cxx .c + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< + +####### Build rules + +first: all +all: Makefile.Debug $(DESTDIR_TARGET) + +$(DESTDIR_TARGET): ui_mainwindow.h ui_newround.h ui_basicscorecard.h ui_pcmanagement.h ui_playermanagement.h $(OBJECTS) + $(LINK) $(LFLAGS) -o $(DESTDIR_TARGET) object_script.golfscorecard.Debug $(LIBS) + + +qmake: FORCE + @$(QMAKE) -spec c:\Qt\2010.02.1\qt\mkspecs\win32-g++ -win32 CONFIG+=release -o Makefile.Debug golfscorecard.pro + +dist: + $(ZIP) golfscorecard.zip $(SOURCES) $(DIST) golfscorecard.pro c:\Qt\2010.02.1\qt\mkspecs\qconfig.pri c:\Qt\2010.02.1\qt\mkspecs\features\qt_functions.prf c:\Qt\2010.02.1\qt\mkspecs\features\qt_config.prf c:\Qt\2010.02.1\qt\mkspecs\features\exclusive_builds.prf c:\Qt\2010.02.1\qt\mkspecs\features\default_pre.prf c:\Qt\2010.02.1\qt\mkspecs\features\win32\default_pre.prf c:\Qt\2010.02.1\qt\mkspecs\features\debug.prf c:\Qt\2010.02.1\qt\mkspecs\features\debug_and_release.prf c:\Qt\2010.02.1\qt\mkspecs\features\default_post.prf c:\Qt\2010.02.1\qt\mkspecs\features\win32\default_post.prf c:\Qt\2010.02.1\qt\mkspecs\features\build_pass.prf c:\Qt\2010.02.1\qt\mkspecs\features\win32\rtti.prf c:\Qt\2010.02.1\qt\mkspecs\features\win32\exceptions.prf c:\Qt\2010.02.1\qt\mkspecs\features\win32\stl.prf c:\Qt\2010.02.1\qt\mkspecs\features\shared.prf c:\Qt\2010.02.1\qt\mkspecs\features\warn_on.prf c:\Qt\2010.02.1\qt\mkspecs\features\qt.prf c:\Qt\2010.02.1\qt\mkspecs\features\win32\thread.prf c:\Qt\2010.02.1\qt\mkspecs\features\moc.prf c:\Qt\2010.02.1\qt\mkspecs\features\win32\windows.prf c:\Qt\2010.02.1\qt\mkspecs\features\resources.prf c:\Qt\2010.02.1\qt\mkspecs\features\uic.prf c:\Qt\2010.02.1\qt\mkspecs\features\yacc.prf c:\Qt\2010.02.1\qt\mkspecs\features\lex.prf c:\Qt\2010.02.1\qt\mkspecs\features\include_source_dir.prf c:\Qt\2010.02.1\qt\lib\qtmaind.prl HEADERS RESOURCES IMAGES SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES + +clean: compiler_clean + -$(DEL_FILE) debug\main.o debug\mainwindow.o debug\newround.o debug\xmlparser.o debug\datahandling.o debug\basicscorecard.o debug\pcmanagement.o debug\playermanagement.o debug\moc_mainwindow.o debug\moc_newround.o debug\moc_xmlparser.o debug\moc_datahandling.o debug\moc_basicscorecard.o debug\moc_pcmanagement.o debug\moc_playermanagement.o debug\qrc_resources.o + +distclean: clean + -$(DEL_FILE) $(DESTDIR_TARGET) + -$(DEL_FILE) Makefile.Debug + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +compiler_moc_header_make_all: debug/moc_mainwindow.cpp debug/moc_newround.cpp debug/moc_xmlparser.cpp debug/moc_datahandling.cpp debug/moc_basicscorecard.cpp debug/moc_pcmanagement.cpp debug/moc_playermanagement.cpp +compiler_moc_header_clean: + -$(DEL_FILE) debug\moc_mainwindow.cpp debug\moc_newround.cpp debug\moc_xmlparser.cpp debug\moc_datahandling.cpp debug\moc_basicscorecard.cpp debug\moc_pcmanagement.cpp debug\moc_playermanagement.cpp +debug/moc_mainwindow.cpp: mainwindow.h + C:/Qt/2010.02.1/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 mainwindow.h -o debug\moc_mainwindow.cpp + +debug/moc_newround.cpp: datahandling.h \ + player.h \ + courses.h \ + newround.h + C:/Qt/2010.02.1/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 newround.h -o debug\moc_newround.cpp + +debug/moc_xmlparser.cpp: xmlparser.h + C:/Qt/2010.02.1/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 xmlparser.h -o debug\moc_xmlparser.cpp + +debug/moc_datahandling.cpp: player.h \ + courses.h \ + datahandling.h + C:/Qt/2010.02.1/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 datahandling.h -o debug\moc_datahandling.cpp + +debug/moc_basicscorecard.cpp: datahandling.h \ + player.h \ + courses.h \ + basicscorecard.h + C:/Qt/2010.02.1/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 basicscorecard.h -o debug\moc_basicscorecard.cpp + +debug/moc_pcmanagement.cpp: pcmanagement.h + C:/Qt/2010.02.1/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 pcmanagement.h -o debug\moc_pcmanagement.cpp + +debug/moc_playermanagement.cpp: playermanagement.h + C:/Qt/2010.02.1/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 playermanagement.h -o debug\moc_playermanagement.cpp + +compiler_rcc_make_all: debug/qrc_resources.cpp +compiler_rcc_clean: + -$(DEL_FILE) debug\qrc_resources.cpp +debug/qrc_resources.cpp: resources.qrc \ + images/new-player.png \ + images/golf-icon.png \ + images/arrow-left-icon.png \ + images/edit-player.png \ + images/edit-course.png \ + images/arrow-right-icon_2.png \ + images/arrow-up-icon.png \ + images/new-course.png \ + images/arrow-down-icon.png \ + images/stats-icon.png \ + images/golf-icon_2.png \ + images/arrow-right-icon.png \ + images/course-icon.png + c:\Qt\2010.02.1\qt\bin\rcc.exe -name resources resources.qrc -o debug\qrc_resources.cpp + +compiler_image_collection_make_all: qmake_image_collection.cpp +compiler_image_collection_clean: + -$(DEL_FILE) qmake_image_collection.cpp +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_uic_make_all: ui_mainwindow.h ui_newround.h ui_basicscorecard.h ui_pcmanagement.h ui_playermanagement.h +compiler_uic_clean: + -$(DEL_FILE) ui_mainwindow.h ui_newround.h ui_basicscorecard.h ui_pcmanagement.h ui_playermanagement.h +ui_mainwindow.h: mainwindow.ui + c:\Qt\2010.02.1\qt\bin\uic.exe mainwindow.ui -o ui_mainwindow.h + +ui_newround.h: newround.ui + c:\Qt\2010.02.1\qt\bin\uic.exe newround.ui -o ui_newround.h + +ui_basicscorecard.h: basicscorecard.ui + c:\Qt\2010.02.1\qt\bin\uic.exe basicscorecard.ui -o ui_basicscorecard.h + +ui_pcmanagement.h: pcmanagement.ui + c:\Qt\2010.02.1\qt\bin\uic.exe pcmanagement.ui -o ui_pcmanagement.h + +ui_playermanagement.h: playermanagement.ui + c:\Qt\2010.02.1\qt\bin\uic.exe playermanagement.ui -o ui_playermanagement.h + +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_moc_header_clean compiler_rcc_clean compiler_uic_clean + + + +####### Compile + +debug/main.o: main.cpp mainwindow.h \ + datahandling.h \ + player.h \ + courses.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\main.o main.cpp + +debug/mainwindow.o: mainwindow.cpp mainwindow.h \ + ui_mainwindow.h \ + newround.h \ + datahandling.h \ + player.h \ + courses.h \ + pcmanagement.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\mainwindow.o mainwindow.cpp + +debug/newround.o: newround.cpp newround.h \ + datahandling.h \ + player.h \ + courses.h \ + ui_newround.h \ + xmlparser.h \ + basicscorecard.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\newround.o newround.cpp + +debug/xmlparser.o: xmlparser.cpp xmlparser.h \ + datahandling.h \ + player.h \ + courses.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\xmlparser.o xmlparser.cpp + +debug/datahandling.o: datahandling.cpp datahandling.h \ + player.h \ + courses.h \ + newround.h \ + xmlparser.h \ + basicscorecard.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\datahandling.o datahandling.cpp + +debug/basicscorecard.o: basicscorecard.cpp basicscorecard.h \ + datahandling.h \ + player.h \ + courses.h \ + ui_basicscorecard.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\basicscorecard.o basicscorecard.cpp + +debug/pcmanagement.o: pcmanagement.cpp pcmanagement.h \ + ui_pcmanagement.h \ + mainwindow.h \ + playermanagement.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\pcmanagement.o pcmanagement.cpp + +debug/playermanagement.o: playermanagement.cpp playermanagement.h \ + ui_playermanagement.h \ + pcmanagement.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\playermanagement.o playermanagement.cpp + +debug/moc_mainwindow.o: debug/moc_mainwindow.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_mainwindow.o debug\moc_mainwindow.cpp + +debug/moc_newround.o: debug/moc_newround.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_newround.o debug\moc_newround.cpp + +debug/moc_xmlparser.o: debug/moc_xmlparser.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_xmlparser.o debug\moc_xmlparser.cpp + +debug/moc_datahandling.o: debug/moc_datahandling.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_datahandling.o debug\moc_datahandling.cpp + +debug/moc_basicscorecard.o: debug/moc_basicscorecard.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_basicscorecard.o debug\moc_basicscorecard.cpp + +debug/moc_pcmanagement.o: debug/moc_pcmanagement.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_pcmanagement.o debug\moc_pcmanagement.cpp + +debug/moc_playermanagement.o: debug/moc_playermanagement.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\moc_playermanagement.o debug\moc_playermanagement.cpp + +debug/qrc_resources.o: debug/qrc_resources.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\qrc_resources.o debug\qrc_resources.cpp + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff --git a/src/Makefile.Release b/src/Makefile.Release new file mode 100644 index 0000000..11ce188 --- /dev/null +++ b/src/Makefile.Release @@ -0,0 +1,295 @@ +############################################################################# +# Makefile for building: golfscorecard +# Generated by qmake (2.01a) (Qt 4.6.2) on: pe 30. huhti 00:48:57 2010 +# Project: golfscorecard.pro +# Template: app +############################################################################# + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN +CFLAGS = -O2 -Wall $(DEFINES) +CXXFLAGS = -O2 -frtti -fexceptions -mthreads -Wall $(DEFINES) +INCPATH = -I"c:\Qt\2010.02.1\qt\include\QtCore" -I"c:\Qt\2010.02.1\qt\include\QtGui" -I"c:\Qt\2010.02.1\qt\include\QtXml" -I"c:\Qt\2010.02.1\qt\include" -I"c:\Qt\2010.02.1\qt\include\ActiveQt" -I"release" -I"." -I"c:\Qt\2010.02.1\qt\mkspecs\win32-g++" +LINK = g++ +LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows +LIBS = -L"c:\Qt\2010.02.1\qt\lib" -lmingw32 -lqtmain -lQtXml4 -lQtGui4 -lQtCore4 +QMAKE = c:\qt\2010.02.1\qt\bin\qmake.exe +IDC = c:\Qt\2010.02.1\qt\bin\idc.exe +IDL = midl +ZIP = zip -r -9 +DEF_FILE = +RES_FILE = +COPY = copy /y +COPY_FILE = $(COPY) +COPY_DIR = xcopy /s /q /y /i +DEL_FILE = del +DEL_DIR = rmdir +MOVE = move +CHK_DIR_EXISTS= if not exist +MKDIR = mkdir +INSTALL_FILE = $(COPY_FILE) +INSTALL_PROGRAM = $(COPY_FILE) +INSTALL_DIR = $(COPY_DIR) + +####### Output directory + +OBJECTS_DIR = release + +####### Files + +SOURCES = main.cpp \ + mainwindow.cpp \ + newround.cpp \ + xmlparser.cpp \ + datahandling.cpp \ + basicscorecard.cpp \ + pcmanagement.cpp \ + playermanagement.cpp release\moc_mainwindow.cpp \ + release\moc_newround.cpp \ + release\moc_xmlparser.cpp \ + release\moc_datahandling.cpp \ + release\moc_basicscorecard.cpp \ + release\moc_pcmanagement.cpp \ + release\moc_playermanagement.cpp \ + release\qrc_resources.cpp +OBJECTS = release/main.o \ + release/mainwindow.o \ + release/newround.o \ + release/xmlparser.o \ + release/datahandling.o \ + release/basicscorecard.o \ + release/pcmanagement.o \ + release/playermanagement.o \ + release/moc_mainwindow.o \ + release/moc_newround.o \ + release/moc_xmlparser.o \ + release/moc_datahandling.o \ + release/moc_basicscorecard.o \ + release/moc_pcmanagement.o \ + release/moc_playermanagement.o \ + release/qrc_resources.o +DIST = +QMAKE_TARGET = golfscorecard +DESTDIR = release\ #avoid trailing-slash linebreak +TARGET = golfscorecard.exe +DESTDIR_TARGET = release\golfscorecard.exe + +####### Implicit rules + +.SUFFIXES: .cpp .cc .cxx .c + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< + +####### Build rules + +first: all +all: Makefile.Release $(DESTDIR_TARGET) + +$(DESTDIR_TARGET): ui_mainwindow.h ui_newround.h ui_basicscorecard.h ui_pcmanagement.h ui_playermanagement.h $(OBJECTS) + $(LINK) $(LFLAGS) -o $(DESTDIR_TARGET) object_script.golfscorecard.Release $(LIBS) + + +qmake: FORCE + @$(QMAKE) -spec c:\Qt\2010.02.1\qt\mkspecs\win32-g++ -win32 CONFIG+=release -o Makefile.Release golfscorecard.pro + +dist: + $(ZIP) golfscorecard.zip $(SOURCES) $(DIST) golfscorecard.pro c:\Qt\2010.02.1\qt\mkspecs\qconfig.pri c:\Qt\2010.02.1\qt\mkspecs\features\qt_functions.prf c:\Qt\2010.02.1\qt\mkspecs\features\qt_config.prf c:\Qt\2010.02.1\qt\mkspecs\features\exclusive_builds.prf c:\Qt\2010.02.1\qt\mkspecs\features\default_pre.prf c:\Qt\2010.02.1\qt\mkspecs\features\win32\default_pre.prf c:\Qt\2010.02.1\qt\mkspecs\features\release.prf c:\Qt\2010.02.1\qt\mkspecs\features\debug_and_release.prf c:\Qt\2010.02.1\qt\mkspecs\features\default_post.prf c:\Qt\2010.02.1\qt\mkspecs\features\win32\default_post.prf c:\Qt\2010.02.1\qt\mkspecs\features\build_pass.prf c:\Qt\2010.02.1\qt\mkspecs\features\win32\rtti.prf c:\Qt\2010.02.1\qt\mkspecs\features\win32\exceptions.prf c:\Qt\2010.02.1\qt\mkspecs\features\win32\stl.prf c:\Qt\2010.02.1\qt\mkspecs\features\shared.prf c:\Qt\2010.02.1\qt\mkspecs\features\warn_on.prf c:\Qt\2010.02.1\qt\mkspecs\features\qt.prf c:\Qt\2010.02.1\qt\mkspecs\features\win32\thread.prf c:\Qt\2010.02.1\qt\mkspecs\features\moc.prf c:\Qt\2010.02.1\qt\mkspecs\features\win32\windows.prf c:\Qt\2010.02.1\qt\mkspecs\features\resources.prf c:\Qt\2010.02.1\qt\mkspecs\features\uic.prf c:\Qt\2010.02.1\qt\mkspecs\features\yacc.prf c:\Qt\2010.02.1\qt\mkspecs\features\lex.prf c:\Qt\2010.02.1\qt\mkspecs\features\include_source_dir.prf c:\Qt\2010.02.1\qt\lib\qtmain.prl HEADERS RESOURCES IMAGES SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES + +clean: compiler_clean + -$(DEL_FILE) release\main.o release\mainwindow.o release\newround.o release\xmlparser.o release\datahandling.o release\basicscorecard.o release\pcmanagement.o release\playermanagement.o release\moc_mainwindow.o release\moc_newround.o release\moc_xmlparser.o release\moc_datahandling.o release\moc_basicscorecard.o release\moc_pcmanagement.o release\moc_playermanagement.o release\qrc_resources.o + +distclean: clean + -$(DEL_FILE) $(DESTDIR_TARGET) + -$(DEL_FILE) Makefile.Release + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +compiler_moc_header_make_all: release/moc_mainwindow.cpp release/moc_newround.cpp release/moc_xmlparser.cpp release/moc_datahandling.cpp release/moc_basicscorecard.cpp release/moc_pcmanagement.cpp release/moc_playermanagement.cpp +compiler_moc_header_clean: + -$(DEL_FILE) release\moc_mainwindow.cpp release\moc_newround.cpp release\moc_xmlparser.cpp release\moc_datahandling.cpp release\moc_basicscorecard.cpp release\moc_pcmanagement.cpp release\moc_playermanagement.cpp +release/moc_mainwindow.cpp: mainwindow.h + C:/Qt/2010.02.1/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 mainwindow.h -o release\moc_mainwindow.cpp + +release/moc_newround.cpp: datahandling.h \ + player.h \ + courses.h \ + newround.h + C:/Qt/2010.02.1/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 newround.h -o release\moc_newround.cpp + +release/moc_xmlparser.cpp: xmlparser.h + C:/Qt/2010.02.1/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 xmlparser.h -o release\moc_xmlparser.cpp + +release/moc_datahandling.cpp: player.h \ + courses.h \ + datahandling.h + C:/Qt/2010.02.1/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 datahandling.h -o release\moc_datahandling.cpp + +release/moc_basicscorecard.cpp: datahandling.h \ + player.h \ + courses.h \ + basicscorecard.h + C:/Qt/2010.02.1/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 basicscorecard.h -o release\moc_basicscorecard.cpp + +release/moc_pcmanagement.cpp: pcmanagement.h + C:/Qt/2010.02.1/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 pcmanagement.h -o release\moc_pcmanagement.cpp + +release/moc_playermanagement.cpp: playermanagement.h + C:/Qt/2010.02.1/qt/bin\moc.exe $(DEFINES) $(INCPATH) -D__GNUC__ -DWIN32 playermanagement.h -o release\moc_playermanagement.cpp + +compiler_rcc_make_all: release/qrc_resources.cpp +compiler_rcc_clean: + -$(DEL_FILE) release\qrc_resources.cpp +release/qrc_resources.cpp: resources.qrc \ + images/new-player.png \ + images/golf-icon.png \ + images/arrow-left-icon.png \ + images/edit-player.png \ + images/edit-course.png \ + images/arrow-right-icon_2.png \ + images/arrow-up-icon.png \ + images/new-course.png \ + images/arrow-down-icon.png \ + images/stats-icon.png \ + images/golf-icon_2.png \ + images/arrow-right-icon.png \ + images/course-icon.png + c:\Qt\2010.02.1\qt\bin\rcc.exe -name resources resources.qrc -o release\qrc_resources.cpp + +compiler_image_collection_make_all: qmake_image_collection.cpp +compiler_image_collection_clean: + -$(DEL_FILE) qmake_image_collection.cpp +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_uic_make_all: ui_mainwindow.h ui_newround.h ui_basicscorecard.h ui_pcmanagement.h ui_playermanagement.h +compiler_uic_clean: + -$(DEL_FILE) ui_mainwindow.h ui_newround.h ui_basicscorecard.h ui_pcmanagement.h ui_playermanagement.h +ui_mainwindow.h: mainwindow.ui + c:\Qt\2010.02.1\qt\bin\uic.exe mainwindow.ui -o ui_mainwindow.h + +ui_newround.h: newround.ui + c:\Qt\2010.02.1\qt\bin\uic.exe newround.ui -o ui_newround.h + +ui_basicscorecard.h: basicscorecard.ui + c:\Qt\2010.02.1\qt\bin\uic.exe basicscorecard.ui -o ui_basicscorecard.h + +ui_pcmanagement.h: pcmanagement.ui + c:\Qt\2010.02.1\qt\bin\uic.exe pcmanagement.ui -o ui_pcmanagement.h + +ui_playermanagement.h: playermanagement.ui + c:\Qt\2010.02.1\qt\bin\uic.exe playermanagement.ui -o ui_playermanagement.h + +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_moc_header_clean compiler_rcc_clean compiler_uic_clean + + + +####### Compile + +release/main.o: main.cpp mainwindow.h \ + datahandling.h \ + player.h \ + courses.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\main.o main.cpp + +release/mainwindow.o: mainwindow.cpp mainwindow.h \ + ui_mainwindow.h \ + newround.h \ + datahandling.h \ + player.h \ + courses.h \ + pcmanagement.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\mainwindow.o mainwindow.cpp + +release/newround.o: newround.cpp newround.h \ + datahandling.h \ + player.h \ + courses.h \ + ui_newround.h \ + xmlparser.h \ + basicscorecard.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\newround.o newround.cpp + +release/xmlparser.o: xmlparser.cpp xmlparser.h \ + datahandling.h \ + player.h \ + courses.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\xmlparser.o xmlparser.cpp + +release/datahandling.o: datahandling.cpp datahandling.h \ + player.h \ + courses.h \ + newround.h \ + xmlparser.h \ + basicscorecard.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\datahandling.o datahandling.cpp + +release/basicscorecard.o: basicscorecard.cpp basicscorecard.h \ + datahandling.h \ + player.h \ + courses.h \ + ui_basicscorecard.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\basicscorecard.o basicscorecard.cpp + +release/pcmanagement.o: pcmanagement.cpp pcmanagement.h \ + ui_pcmanagement.h \ + mainwindow.h \ + playermanagement.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\pcmanagement.o pcmanagement.cpp + +release/playermanagement.o: playermanagement.cpp playermanagement.h \ + ui_playermanagement.h \ + pcmanagement.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\playermanagement.o playermanagement.cpp + +release/moc_mainwindow.o: release/moc_mainwindow.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_mainwindow.o release\moc_mainwindow.cpp + +release/moc_newround.o: release/moc_newround.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_newround.o release\moc_newround.cpp + +release/moc_xmlparser.o: release/moc_xmlparser.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_xmlparser.o release\moc_xmlparser.cpp + +release/moc_datahandling.o: release/moc_datahandling.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_datahandling.o release\moc_datahandling.cpp + +release/moc_basicscorecard.o: release/moc_basicscorecard.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_basicscorecard.o release\moc_basicscorecard.cpp + +release/moc_pcmanagement.o: release/moc_pcmanagement.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_pcmanagement.o release\moc_pcmanagement.cpp + +release/moc_playermanagement.o: release/moc_playermanagement.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\moc_playermanagement.o release\moc_playermanagement.cpp + +release/qrc_resources.o: release/qrc_resources.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release\qrc_resources.o release\qrc_resources.cpp + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff --git a/src/basicscorecard.cpp b/src/basicscorecard.cpp new file mode 100644 index 0000000..4fd9090 --- /dev/null +++ b/src/basicscorecard.cpp @@ -0,0 +1,538 @@ +#include "basicscorecard.h" +#include "ui_basicscorecard.h" +#include "datahandling.h" +#include "courses.h" +#include + +BasicScorecard::BasicScorecard(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::BasicScorecard) +{ + ui->setupUi(this); + currentCourse = 1; + loadPlayers(); + loadCourses(); + hideNotNeededFields(); + drawPlayers(); + displayCourseData(); + calculateHcpsPerCourse(); +} + +void BasicScorecard::loadPlayers() +{ + datahandling *CAPData = datahandling::instance(); + + players << CAPData->selectedPlayers; + qDebug() << players; + + for(int i = 0; i < players.count(); i++) + { + for(int j = 0; j < 19; j++) + { + scores[i][j] = 0; + hcpPerCourse[i][j] = 0; + } + } + + for(int i = 0; i < players.count(); i++) + { + hcp[i] = CAPData->selectedPlayersHandicap[i].toInt(); + qDebug() << hcp[i]; + } + + for(int y = 0; y < 19; y++) + { + hcpOrder[y] = 0; + } + + + +} + +void BasicScorecard::drawPlayers() +{ + if(players.count() >= 1 ) + { + ui->label_leaderboardPlayer1->setText(players[0]); + ui->label_player1->setText(players[0]); + } + if(players.count() >= 2) + { + ui->label_leaderboardPlayer2->setText(players[1]); + ui->label_player2->setText(players[1]); + } + if(players.count() >= 3) + { + ui->label_leaderboardPlayer3->setText(players[2]); + ui->label_player3->setText(players[2]); + } + if(players.count() >= 4) + { + ui->label_leaderboardPlayer4->setText(players[3]); + ui->label_player4->setText(players[3]); + } +} + +void BasicScorecard::saveShots() +{ + if(players.count() >= 1 ) + scores[0][currentCourse] = ui->label_player1_score->text().toInt(); + if(players.count() >= 2 ) + scores[1][currentCourse] = ui->label_player2_score->text().toInt(); + if(players.count() >= 3 ) + scores[2][currentCourse] = ui->label_player3_score->text().toInt(); + if(players.count() >= 4 ) + scores[3][currentCourse] = ui->label_player4_score->text().toInt(); +} + +void BasicScorecard::loadShots() +{ + if(players.count() >= 1 ) + ui->label_player1_score->setText(QString::number(scores[0][currentCourse])); + if(players.count() >= 2 ) + ui->label_player2_score->setText(QString::number(scores[1][currentCourse])); + if(players.count() >= 3 ) + ui->label_player3_score->setText(QString::number(scores[2][currentCourse])); + if(players.count() >= 4 ) + ui->label_player4_score->setText(QString::number(scores[3][currentCourse])); +} + +void BasicScorecard::loadCourses() +{ + datahandling *CAPData = datahandling::instance(); + + const QList& holeData_2 = CAPData->getHoleData(); + const QList& whiteTee_2 = CAPData->getWhiteTee(); + const QList& yellowTee_2 = CAPData->getYellowTee(); + const QList& blueTee_2 = CAPData->getBlueTee(); + const QList& redTee_2 = CAPData->getRedTee(); + + courseDataName << ""; + courseDataPar << ""; + courseDataHcp << ""; + courseDataWhite << ""; + courseDataYellow << ""; + courseDataRed << ""; + courseDataBlue << ""; + + foreach(holeData hD, holeData_2) + { + courseDataName.push_back(hD.m_id); + courseDataPar.push_back(hD.m_par); + courseDataHcp.push_back(hD.m_hcp); + } + + foreach(whiteTee wT, whiteTee_2) + { + courseDataWhite.push_back(wT.m_length); + } + + foreach(yellowTee yT, yellowTee_2) + { + courseDataYellow.push_back(yT.m_length); + } + + foreach(blueTee bT, blueTee_2) + { + courseDataBlue.push_back(bT.m_length); + } + + foreach(redTee rT, redTee_2) + { + courseDataRed.push_back(rT.m_length); + } +} + +void BasicScorecard::displayCourseData() +{ + ui->label_course->setText(courseDataName[currentCourse]); + ui->label_par->setText(courseDataPar[currentCourse]); + ui->label_hcp->setText(courseDataHcp[currentCourse]); + ui->label_white->setText(courseDataWhite[currentCourse]); + ui->label_yellow->setText(courseDataYellow[currentCourse]); + ui->label_red->setText(courseDataRed[currentCourse]); + ui->label_blue->setText(courseDataBlue[currentCourse]); + + for(int i = 0; i < players.count(); i++) + { + qDebug() << hcpPerCourse[i][currentCourse]; + } + qDebug() << "----------"; + +} + +void BasicScorecard::updateLeaderboard() +{ + int sp[4]; + int hcpsp[4]; + int order[4]; + int flag[4]; + int flag2[4]; + int set = 0; + + for(int i = 0; i < 4; i++) + { + sp[i] = 0; + hcpsp[i] = 0; + order[i] = 0; + flag[i] = 0; + flag2[i] = 0; + } + + for(int i = 0; i < players.count(); i++) + { + for(int j = 1; j < 19; j++) + { + if(scores[i][j] != 0) + { + sp[i] = sp[i] + (scores[i][j] - courseDataPar[j].toInt()); + hcpsp[i] = hcpsp[i] + (scores[i][j] - hcpPerCourse[i][j] - courseDataPar[j].toInt()); + } + } + } + + QList list; + for(int i = 0; i < players.count(); i++) + { + list.append(sp[i]); + } + + qSort(list); + + for(int i = 0; i < players.count(); i++) + { + order[i] = (int)list.takeFirst(); + } + + for(int i = 0; i < players.count(); i++) + { + for(int j = 0; j < players.count(); j++) + { + if((order[i] == sp[j])) + { + if(flag[0] != 1 && set == 0 && flag2[j] == 0) + { + flag[0] = 1; + set = 1; + + if(j == 0) + flag2[0] = 1; + else if(j == 1 && players.count() >= 2) + flag2[1] = 1; + else if(j == 2 && players.count() >= 3) + flag2[2] = 1; + else if(j == 3 && players.count() >= 4) + flag2[3] = 1; + + + ui->label_leaderboardPlayer1->setText(players[j]); + + if(sp[j] > 0) + ui->label_leaderboardPlayer1_2->setText("+"+QString::number(sp[j])); + else if (sp[j] == 0) + ui->label_leaderboardPlayer1_2->setText("PAR"); + else + ui->label_leaderboardPlayer1_2->setText(QString::number(sp[j])); + + if(hcpsp[j] > 0) + ui->label_leaderboardPlayer1_3->setText("+"+QString::number(hcpsp[j])); + else if (hcpsp[j] == 0) + ui->label_leaderboardPlayer1_3->setText("PAR"); + else + ui->label_leaderboardPlayer1_3->setText(QString::number(hcpsp[j])); + } + else if(flag[1] != 1 && set == 0 && flag2[j] == 0 && players.count() >= 2) + { + flag[1] = 1; + set = 1; + + if(j == 0) + flag2[0] = 1; + else if(j == 1 && players.count() >= 2) + flag2[1] = 1; + else if(j == 2 && players.count() >= 3) + flag2[2] = 1; + else if(j == 3 && players.count() >= 4) + flag2[3] = 1; + + ui->label_leaderboardPlayer2->setText(players[j]); + + if(sp[j] > 0) + ui->label_leaderboardPlayer2_2->setText("+"+QString::number(sp[j])); + else if (sp[j] == 0) + ui->label_leaderboardPlayer2_2->setText("PAR"); + else + ui->label_leaderboardPlayer2_2->setText(QString::number(sp[j])); + + if(hcpsp[j] > 0) + ui->label_leaderboardPlayer2_3->setText("+"+QString::number(hcpsp[j])); + else if (hcpsp[j] == 0) + ui->label_leaderboardPlayer2_3->setText("PAR"); + else + ui->label_leaderboardPlayer2_3->setText(QString::number(hcpsp[j])); + } + else if(flag[2] != 1 && set == 0 && flag2[j] == 0 && players.count() >= 3) + { + flag[2] = 1; + set = 1; + + if(j == 0) + flag2[0] = 1; + else if(j == 1 && players.count() >= 2) + flag2[1] = 1; + else if(j == 2 && players.count() >= 3) + flag2[2] = 1; + else if(j == 3 && players.count() >= 4) + flag2[3] = 1; + + ui->label_leaderboardPlayer3->setText(players[j]); + + if(sp[j] > 0) + ui->label_leaderboardPlayer3_2->setText("+"+QString::number(sp[j])); + else if (sp[j] == 0) + ui->label_leaderboardPlayer3_2->setText("PAR"); + else + ui->label_leaderboardPlayer3_2->setText(QString::number(sp[j])); + + if(hcpsp[j] > 0) + ui->label_leaderboardPlayer3_3->setText("+"+QString::number(hcpsp[j])); + else if (hcpsp[j] == 0) + ui->label_leaderboardPlayer3_3->setText("PAR"); + else + ui->label_leaderboardPlayer3_3->setText(QString::number(hcpsp[j])); + } + else if(flag[3] != 1 && set == 0 && flag2[j] == 0 && players.count() >= 4) + { + flag[3] = 1; + set = 1; + + if(j == 0) + flag2[0] = 1; + else if(j == 1 && players.count() >= 2) + flag2[1] = 1; + else if(j == 2 && players.count() >= 3) + flag2[2] = 1; + else if(j == 3 && players.count() >= 4) + flag2[3] = 1; + + ui->label_leaderboardPlayer4->setText(players[j]); + + if(sp[j] > 0) + ui->label_leaderboardPlayer4_2->setText("+"+QString::number(sp[j])); + else if (sp[j] == 0) + ui->label_leaderboardPlayer4_2->setText("PAR"); + else + ui->label_leaderboardPlayer4_2->setText(QString::number(sp[j])); + + if(hcpsp[j] > 0) + ui->label_leaderboardPlayer4_3->setText("+"+QString::number(hcpsp[j])); + else if (hcpsp[j] == 0) + ui->label_leaderboardPlayer4_3->setText("PAR"); + else + ui->label_leaderboardPlayer4_3->setText(QString::number(hcpsp[j])); + } + set = 0; + } + } + } +} + +void BasicScorecard::calculateHcpsPerCourse() +{ + int temp = 1; + bool found = false; + + for(int i = 1; i < 19; i++) + { + for(int j = 1; j < 19; j++) + { + if(courseDataHcp[j].toInt() == temp && found == false) + { + hcpOrder[i] = j; + temp++; + found = true; + } + + } + found = false; + } + int k=1; + int temp2; + for(int j = 0; j < players.count(); j++) + { + for(int i = 0; i < hcp[j]; i++) + { + if(k == 19) + k = 1; + temp2 = hcpOrder[k]; + hcpPerCourse[j][temp2]++; + k++; + } + k=1; + } +} + +void BasicScorecard::on_player1_up_clicked() +{ + int temp; + temp = ui->label_player1_score->text().toInt(); + if(temp < 99) + temp++; + ui->label_player1_score->setText(QString::number(temp)); +} + +void BasicScorecard::on_player1_down_clicked() +{ + int temp; + temp = ui->label_player1_score->text().toInt(); + if(temp > 0) + temp--; + ui->label_player1_score->setText(QString::number(temp)); +} + +void BasicScorecard::on_player2_up_clicked() +{ + int temp; + temp = ui->label_player2_score->text().toInt(); + if(temp < 99) + temp++; + ui->label_player2_score->setText(QString::number(temp)); +} + +void BasicScorecard::on_player2_down_clicked() +{ + int temp; + temp = ui->label_player2_score->text().toInt(); + if(temp > 0) + temp--; + ui->label_player2_score->setText(QString::number(temp)); +} + +void BasicScorecard::on_player3_up_clicked() +{ + int temp; + temp = ui->label_player3_score->text().toInt(); + if(temp < 99) + temp++; + ui->label_player3_score->setText(QString::number(temp)); +} + +void BasicScorecard::on_player3_down_clicked() +{ + int temp; + temp = ui->label_player3_score->text().toInt(); + if(temp > 0) + temp--; + ui->label_player3_score->setText(QString::number(temp)); +} + +void BasicScorecard::on_player4_up_clicked() +{ + int temp; + temp = ui->label_player4_score->text().toInt(); + if(temp < 99) + temp++; + ui->label_player4_score->setText(QString::number(temp)); +} + +void BasicScorecard::on_player4_down_clicked() +{ + int temp; + temp = ui->label_player4_score->text().toInt(); + if(temp > 0) + temp--; + ui->label_player4_score->setText(QString::number(temp)); +} + +void BasicScorecard::on_pushButton_nextCourse_clicked() +{ + saveShots(); + + if(currentCourse < 18) + currentCourse++; + else + currentCourse = 1; + + loadShots(); + displayCourseData(); + updateLeaderboard(); + +} + + +void BasicScorecard::on_pushButton_prevCourse_clicked() +{ + saveShots(); + + if(currentCourse > 1) + currentCourse--; + else + currentCourse = 18; + + loadShots(); + displayCourseData(); + updateLeaderboard(); +} + +void BasicScorecard::on_courseMap_clicked() +{ + +} + +void BasicScorecard::hideNotNeededFields() +{ + if(players.count() == 1) + { + ui->label_player2->setText(""); + ui->label_player2_score->setText("");; + ui->player2_down->setHidden(true); + ui->player2_up->setHidden(true); + ui->label_leaderboardPlayer2->setHidden(true); + ui->label_leaderboardPlayer2_2->setHidden(true); + ui->label_leaderboardPlayer2_3->setHidden(true); + + ui->label_player3->setText(""); + ui->label_player3_score->setText("");; + ui->player3_down->setHidden(true); + ui->player3_up->setHidden(true); + ui->label_leaderboardPlayer3->setHidden(true); + ui->label_leaderboardPlayer3_2->setHidden(true); + ui->label_leaderboardPlayer3_3->setHidden(true); + + ui->label_player4->setText(""); + ui->label_player4_score->setText("");; + ui->player4_down->setHidden(true); + ui->player4_up->setHidden(true); + ui->label_leaderboardPlayer4->setHidden(true); + ui->label_leaderboardPlayer4_2->setHidden(true); + ui->label_leaderboardPlayer4_3->setHidden(true); + } + else if(players.count() == 2) + { + ui->label_player3->setText(""); + ui->label_player3_score->setText("");; + ui->player3_down->setHidden(true); + ui->player3_up->setHidden(true); + ui->label_leaderboardPlayer3->setHidden(true); + ui->label_leaderboardPlayer3_2->setHidden(true); + ui->label_leaderboardPlayer3_3->setHidden(true); + + ui->label_player4->setText(""); + ui->label_player4_score->setText("");; + ui->player4_down->setHidden(true); + ui->player4_up->setHidden(true); + ui->label_leaderboardPlayer4->setHidden(true); + ui->label_leaderboardPlayer4_2->setHidden(true); + ui->label_leaderboardPlayer4_3->setHidden(true); + } + else if(players.count() == 3) + { + ui->label_player4->setText(""); + ui->label_player4_score->setText("");; + ui->player4_down->setHidden(true); + ui->player4_up->setHidden(true); + ui->label_leaderboardPlayer4->setHidden(true); + ui->label_leaderboardPlayer4_2->setHidden(true); + ui->label_leaderboardPlayer4_3->setHidden(true); + } +} diff --git a/src/basicscorecard.h b/src/basicscorecard.h new file mode 100644 index 0000000..6f2ae47 --- /dev/null +++ b/src/basicscorecard.h @@ -0,0 +1,58 @@ +#ifndef BASICSCORECARD_H +#define BASICSCORECARD_H + +#include +#include "datahandling.h" + +namespace Ui { + class BasicScorecard; +} + +class BasicScorecard : public QMainWindow { + Q_OBJECT +public: + BasicScorecard(QWidget *parent = 0); + +private: + Ui::BasicScorecard *ui; + + void loadPlayers(); + void drawPlayers(); + void saveShots(); + void loadShots(); + void loadCourses(); + void displayCourseData(); + void updateLeaderboard(); + void calculateHcpsPerCourse(); + void hideNotNeededFields(); + + QStringList players; + int scores[4][19]; + int hcp[4]; + int hcpPerCourse[4][19]; + int currentCourse; + int hcpOrder[19]; + + QStringList courseDataName; + QStringList courseDataPar; + QStringList courseDataHcp; + QStringList courseDataWhite; + QStringList courseDataYellow; + QStringList courseDataRed; + QStringList courseDataBlue; + +private slots: + void on_courseMap_clicked(); + void on_pushButton_prevCourse_clicked(); + void on_pushButton_nextCourse_clicked(); + void on_player4_down_clicked(); + void on_player4_up_clicked(); + void on_player3_down_clicked(); + void on_player3_up_clicked(); + void on_player2_down_clicked(); + void on_player2_up_clicked(); + void on_player1_down_clicked(); + void on_player1_up_clicked(); +}; + +#endif // BASICSCORECARD_H diff --git a/src/basicscorecard.ui b/src/basicscorecard.ui new file mode 100644 index 0000000..b02fc43 --- /dev/null +++ b/src/basicscorecard.ui @@ -0,0 +1,1427 @@ + + + BasicScorecard + + + + 0 + 0 + 800 + 480 + + + + BasicScorecard + + + + + + 0 + 0 + 320 + 175 + + + + QFrame#frame_leaderboard +{ + border: 2px solid; + border-color: rgb(255, 255, 0); + + background-color: rgb(0, 0, 0); +} + + + QFrame::StyledPanel + + + QFrame::Raised + + + 1 + + + 0 + + + + + 9 + 0 + 181 + 30 + + + + + 11 + 75 + true + true + + + + QLabel#label_leaderboardHeader +{ + color: white; +} + + + LEADERBOARD + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 9 + 30 + 181 + 30 + + + + + 11 + false + + + + QLabel#label_leaderboardPlayer1 +{ + color: white; +} + + + PLAYER 1 + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + true + + + + + + 9 + 60 + 181 + 30 + + + + + 11 + false + + + + QLabel#label_leaderboardPlayer2 +{ + color: white; +} + + + PLAYER 2 + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + true + + + + + + 10 + 90 + 181 + 30 + + + + + 11 + false + + + + QLabel#label_leaderboardPlayer3 +{ + color: white; +} + + + PLAYER 3 + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + true + + + + + + 9 + 120 + 181 + 30 + + + + + 11 + false + + + + QLabel#label_leaderboardPlayer4 +{ + color: white; +} + + + PLAYER 4 + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + true + + + + + + 190 + 0 + 61 + 30 + + + + + 11 + 75 + true + true + + + + QLabel#label_leaderboardHeader_2 +{ + color: white; +} + + + S + + + Qt::AlignCenter + + + + + + 251 + 0 + 61 + 30 + + + + + 11 + 75 + true + true + + + + QLabel#label_leaderboardHeader_3 +{ + color: white; +} + + + HCP + + + Qt::AlignCenter + + + + + + 190 + 30 + 61 + 30 + + + + + 11 + false + + + + QLabel#label_leaderboardPlayer1_2 +{ + color: white; +} + + + PAR + + + Qt::AlignCenter + + + + + + 250 + 30 + 61 + 30 + + + + + 11 + false + + + + QLabel#label_leaderboardPlayer1_3 +{ + color: white; +} + + + PAR + + + Qt::AlignCenter + + + + + + 190 + 60 + 61 + 30 + + + + + 11 + false + + + + QLabel#label_leaderboardPlayer2_2 +{ + color: white; +} + + + PAR + + + Qt::AlignCenter + + + + + + 250 + 60 + 61 + 30 + + + + + 11 + false + + + + QLabel#label_leaderboardPlayer2_3 +{ + color: white; +} + + + PAR + + + Qt::AlignCenter + + + + + + 190 + 90 + 61 + 30 + + + + + 11 + false + + + + QLabel#label_leaderboardPlayer3_2 +{ + color: white; +} + + + PAR + + + Qt::AlignCenter + + + + + + 250 + 90 + 61 + 30 + + + + + 11 + false + + + + QLabel#label_leaderboardPlayer3_3 +{ + color: white; +} + + + PAR + + + Qt::AlignCenter + + + + + + 190 + 120 + 61 + 30 + + + + + 11 + false + + + + QLabel#label_leaderboardPlayer4_2 +{ + color: white; +} + + + PAR + + + Qt::AlignCenter + + + + + + 250 + 120 + 61 + 30 + + + + + 11 + false + + + + QLabel#label_leaderboardPlayer4_3 +{ + color: white; +} + + + PAR + + + Qt::AlignCenter + + + + + + + 0 + 349 + 800 + 71 + + + + QFrame#frame_icons +{ + border-color: rgb(255, 255, 0); + + background-color: rgb(0, 0, 0); + +} + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + 10 + 10 + 111 + 51 + + + + + + + + :/new/images/images/arrow-left-icon.png + + + + + 55 + 55 + + + + true + + + + + + 680 + 10 + 111 + 51 + + + + + + + + :/new/images/images/arrow-right-icon_2.png + + + + + 55 + 55 + + + + true + + + + + + + 0 + 174 + 320 + 175 + + + + QFrame#frame_courseInformation +{ + border: 2px solid; + border-color: rgb(255, 255, 0); + + background-color: rgb(0, 0, 0); + +} + + + QFrame::StyledPanel + + + QFrame::Raised + + + 1 + + + 0 + + + + + 10 + 10 + 91 + 81 + + + + + 44 + 75 + true + + + + QLabel#label_course +{ + color: white; + border: 2px solid; + border-color: rgb(255, 255, 255); + +} + + + 1 + + + Qt::AlignCenter + + + + + + 110 + 10 + 61 + 21 + + + + QFrame#frame_white +{ + background-color: rgb(255, 255, 255); +} + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + 110 + 40 + 61 + 21 + + + + QFrame#frame_yellow +{ + + background-color: rgb(255, 255, 0); +} + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + 180 + 10 + 61 + 21 + + + + + 13 + 75 + true + + + + QLabel#label_white +{ + color: white; +} + + + 350 + + + + + + 180 + 40 + 61 + 21 + + + + + 13 + 75 + true + + + + QLabel#label_yellow +{ + color: white; +} + + + 323 + + + + + + 180 + 100 + 61 + 21 + + + + + 13 + 75 + true + + + + QLabel#label_red +{ + color: white; +} + + + 298 + + + + + + 110 + 100 + 61 + 21 + + + + QFrame#frame_red +{ + + background-color: rgb(255, 0, 0); +} + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + 180 + 70 + 61 + 21 + + + + + 13 + 75 + true + + + + QLabel#label_blue +{ + color: white; +} + + + 256 + + + + + + 110 + 70 + 61 + 21 + + + + QFrame#frame_blue +{ + + background-color: rgb(0, 0, 255); +} + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + 70 + 100 + 41 + 21 + + + + + 18 + 75 + true + + + + QLabel#label_par +{ + color: white; +} + + + 4 + + + + + + 10 + 100 + 51 + 21 + + + + + 18 + 75 + true + + + + QLabel#label_par_const +{ + color: white; +} + + + PAR + + + + + + 70 + 130 + 41 + 21 + + + + + 18 + 75 + true + + + + QLabel#label_hcp +{ + color: white; +} + + + 13 + + + + + + 10 + 130 + 51 + 21 + + + + + 18 + 75 + true + + + + QLabel#label_hcp_const +{ + color: white; +} + + + HCP + + + + + + 230 + 20 + 81 + 61 + + + + + + + + :/new/images/images/golf-icon_2.png + + + + + 80 + 80 + + + + true + + + + + + + 320 + 0 + 120 + 30 + + + + QLabel#label_player1 +{ + border: 2px solid; + border-color: rgb(255, 255, 0); + color: white; + background-color: rgb(0, 0, 0); +} + + + Player 1 + + + Qt::AlignCenter + + + true + + + + + + 440 + 0 + 120 + 30 + + + + QLabel#label_player2 +{ + border: 2px solid; + border-color: rgb(255, 255, 0); + color: white; + background-color: rgb(0, 0, 0); +} + + + Player 2 + + + Qt::AlignCenter + + + true + + + + + + 560 + 0 + 120 + 30 + + + + QLabel#label_player3 +{ + border: 2px solid; + border-color: rgb(255, 255, 0); + color: white; + background-color: rgb(0, 0, 0); +} + + + Player 3 + + + Qt::AlignCenter + + + true + + + + + + 680 + 0 + 120 + 30 + + + + QLabel#label_player4 +{ + border: 2px solid; + border-color: rgb(255, 255, 0); + color: white; + background-color: rgb(0, 0, 0); +} + + + Player 4 + + + Qt::AlignCenter + + + true + + + + + + 320 + 30 + 121 + 319 + + + + + 45 + + + + QLabel#label_player1_score +{ + border: 2px solid; + border-color: rgb(255, 255, 0); + color: white; + background-color: rgb(0, 0, 0); +} + + + 0 + + + Qt::AlignCenter + + + + + + 440 + 30 + 121 + 319 + + + + + 45 + + + + QLabel#label_player2_score +{ + border: 2px solid; + border-color: rgb(255, 255, 0); + color: white; + background-color: rgb(0, 0, 0); +} + + + 0 + + + Qt::AlignCenter + + + + + + 560 + 30 + 121 + 319 + + + + + 45 + + + + QLabel#label_player3_score +{ + border: 2px solid; + border-color: rgb(255, 255, 0); + color: white; + background-color: rgb(0, 0, 0); +} + + + 0 + + + Qt::AlignCenter + + + + + + 680 + 30 + 121 + 319 + + + + + 45 + + + + QLabel#label_player4_score +{ + border: 2px solid; + border-color: rgb(255, 255, 0); + color: white; + background-color: rgb(0, 0, 0); +} + + + 0 + + + Qt::AlignCenter + + + + + + 330 + 60 + 101 + 71 + + + + + + + + :/new/images/images/arrow-up-icon.png + + + + + 64 + 64 + + + + true + + + + + + 330 + 250 + 101 + 71 + + + + + + + + :/new/images/images/arrow-down-icon.png + + + + + 64 + 64 + + + + true + + + + + + 450 + 250 + 101 + 71 + + + + + + + + :/new/images/images/arrow-down-icon.png + + + + + 64 + 64 + + + + true + + + + + + 570 + 250 + 101 + 71 + + + + + + + + :/new/images/images/arrow-down-icon.png + + + + + 64 + 64 + + + + true + + + + + + 690 + 250 + 101 + 71 + + + + + + + + :/new/images/images/arrow-down-icon.png + + + + + 64 + 64 + + + + true + + + + + + 450 + 60 + 101 + 71 + + + + + + + + :/new/images/images/arrow-up-icon.png + + + + + 64 + 64 + + + + true + + + + + + 570 + 60 + 101 + 71 + + + + + + + + :/new/images/images/arrow-up-icon.png + + + + + 64 + 64 + + + + true + + + + + + 690 + 60 + 101 + 71 + + + + + + + + :/new/images/images/arrow-up-icon.png + + + + + 64 + 64 + + + + true + + + + + + + 0 + 0 + 800 + 20 + + + + + + TopToolBarArea + + + false + + + + + + + + diff --git a/src/courses.h b/src/courses.h new file mode 100644 index 0000000..72bf213 --- /dev/null +++ b/src/courses.h @@ -0,0 +1,145 @@ +#ifndef COURSES_H +#define COURSES_H + +#include + +struct course { + course(QString name,QString file) : + m_name(name),m_file(file) + { + } + + QString m_name; + QString m_file; +}; + +struct courseData { + courseData(QString name, QString par, double latitude, double longitude, QString country, QString city) : + m_name(name), m_par(par), m_latitude(latitude), m_longitude(longitude), m_country(country), m_city(city) + { + } + + QString m_name; + QString m_par; + double m_latitude; + double m_longitude; + QString m_country; + QString m_city; +}; + +struct courseCrMale { + courseCrMale(double white, double yellow, double blue, double red) : + m_white(white), m_yellow(yellow), m_blue(blue), m_red(red) + { + } + + double m_white; + double m_yellow; + double m_blue; + double m_red; + +}; + +struct courseCrFemale { + courseCrFemale(double yellow, double blue, double red) : + m_yellow(yellow), m_blue(blue), m_red(red) + { + } + + double m_yellow; + double m_blue; + double m_red; +}; + +struct courseSlopeMale { + courseSlopeMale(double white, double yellow, double blue, double red) : + m_white(white), m_yellow(yellow), m_blue(blue), m_red(red) + { + } + + double m_white; + double m_yellow; + double m_blue; + double m_red; +}; + +struct courseSlopeFemale { + courseSlopeFemale(double yellow, double blue, double red) : + m_yellow(yellow), m_blue(blue), m_red(red) + { + } + + double m_yellow; + double m_blue; + double m_red; +}; + +struct holeData { + holeData(QString id, QString hcp, QString par, QString map_uri) : + m_id(id), m_hcp(hcp), m_par(par), m_map_uri(map_uri) + { + } + + QString m_id; + QString m_hcp; + QString m_par; + QString m_map_uri; + +}; + +struct whiteTee { + whiteTee(QString length, double latitude, double longitude) : + m_length(length), m_latitude(latitude), m_longitude(longitude) + { + } + + QString m_length; + double m_latitude; + double m_longitude; +}; + +struct yellowTee { + yellowTee(QString length, double latitude, double longitude) : + m_length(length), m_latitude(latitude), m_longitude(longitude) + { + } + + QString m_length; + double m_latitude; + double m_longitude; +}; + +struct blueTee { + blueTee(QString length, double latitude, double longitude) : + m_length(length), m_latitude(latitude), m_longitude(longitude) + { + } + + QString m_length; + double m_latitude; + double m_longitude; +}; + +struct redTee { + redTee(QString length, double latitude, double longitude) : + m_length(length), m_latitude(latitude), m_longitude(longitude) + { + } + + QString m_length; + double m_latitude; + double m_longitude; +}; + +struct greenInfo { + greenInfo(double latitude, double longitude) : + m_latitude(latitude), m_longitude(longitude) + { + } + + double m_latitude; + double m_longitude; +}; + + +#endif // COURSES_H diff --git a/src/datahandling.cpp b/src/datahandling.cpp new file mode 100644 index 0000000..87b6f45 --- /dev/null +++ b/src/datahandling.cpp @@ -0,0 +1,300 @@ +#include "datahandling.h" +#include "newround.h" +#include "xmlparser.h" +#include "basicscorecard.h" +#include + +datahandling::datahandling() +{ + +} + +const QList& datahandling::getPlayers() +{ + return m_players; +} + +void datahandling::addPlayer(QString name,QString hcp,QString gender) +{ + m_players.push_back(player(name,hcp,gender)); +} + +const QList& datahandling::getCourses() +{ + return m_courses; +} + +void datahandling::addCourses(QString name, QString file) +{ + m_courses.push_back(course(name, file)); +} + +const QList& datahandling::getCourseData() +{ + return m_courseData; +} + +void datahandling::addCourseData(QString name, QString par, double latitude, double longitude, QString country, QString city) +{ + m_courseData.push_back(courseData(name, par, latitude, longitude, country, city)); +} + +const QList& datahandling::getCourseCrMale() +{ + return m_courseCrMale; +} + +void datahandling::addCourseCrMale(double white, double yellow, double blue, double red) +{ + m_courseCrMale.push_back(courseCrMale(white, yellow, blue, red)); +} + +const QList& datahandling::getCourseCrFemale() +{ + return m_courseCrFemale; +} + +void datahandling::addCourseCrFemale(double yellow, double blue, double red) +{ + m_courseCrFemale.push_back(courseCrFemale(yellow, blue, red)); +} + +const QList& datahandling::getCourseSlopeMale() +{ + return m_courseSlopeMale; +} + +void datahandling::addCourseSlopeMale(double white, double yellow, double blue, double red) +{ + m_courseSlopeMale.push_back(courseSlopeMale(white, yellow, blue, red)); +} + +const QList& datahandling::getCourseSlopeFemale() +{ + return m_courseSlopeFemale; +} + +void datahandling::addCourseSlopeFemale(double yellow, double blue, double red) +{ + m_courseSlopeFemale.push_back(courseSlopeFemale(yellow, blue, red)); +} + +const QList& datahandling::getHoleData() +{ + return m_holeData; +} + +void datahandling::addHoleData(QString id, QString hcp, QString par, QString map_uri) +{ + m_holeData.push_back(holeData(id, hcp, par, map_uri)); +} + +const QList& datahandling::getWhiteTee() +{ + return m_whiteTee; +} + +void datahandling::addWhiteTee(QString length, double latitude, double longitude) +{ + m_whiteTee.push_back(whiteTee(length, latitude, longitude)); +} + +const QList& datahandling::getYellowTee() +{ + return m_yellowTee; +} + +void datahandling::addYellowTee(QString length, double latitude, double longitude) +{ + m_yellowTee.push_back(yellowTee(length, latitude, longitude)); +} + +const QList& datahandling::getBlueTee() +{ + return m_blueTee; +} + +void datahandling::addBlueTee(QString length, double latitude, double longitude) +{ + m_blueTee.push_back(blueTee(length, latitude, longitude)); +} + +const QList& datahandling::getRedTee() +{ + return m_redTee; +} + +void datahandling::addRedTee(QString length, double latitude, double longitude) +{ + m_redTee.push_back(redTee(length, latitude, longitude)); +} + +const QList& datahandling::getGreenInfo() +{ + return m_greenInfo; +} + +void datahandling::addGreenInfo(double latitude, double longitude) +{ + m_greenInfo.push_back(greenInfo(latitude, longitude)); +} + +void datahandling::clearData() +{ + m_players.clear(); + m_courses.clear(); +} + +datahandling* datahandling::instance() +{ + if (m_instance==0) + m_instance = new datahandling(); + + return (m_instance); +} + +void datahandling::calculateHandicaps() +{ + double cr[4]; + double fcr[3]; + double slope[4]; + double fslope[3]; + int par=0; + QStringList temp; + + for(int i = 0; i < 4; i++) + { + cr[i] = 0; + slope[i] = 0; + } + + for(int i = 0; i < 3; i++) + { + fcr[i] = 0; + fslope[i] = 0; + } + + + this->selectedPlayersHandicap.clear(); + + foreach(courseData cD,this->m_courseData) + { + temp.push_back(cD.m_par); + par = temp[0].toInt(); + } + + temp.clear(); + + foreach(courseCrMale crM, this->m_courseCrMale) + { + cr[0] = (double)crM.m_white; + cr[1] = (double)crM.m_yellow; + cr[2] = (double)crM.m_blue; + cr[3] = (double)crM.m_red; + } + + temp.clear(); + + foreach(courseSlopeMale sM, this->m_courseSlopeMale) + { + slope[0] = sM.m_white; + slope[1] = sM.m_yellow; + slope[2] = sM.m_blue; + slope[3] = sM.m_red; + } + + temp.clear(); + + foreach(courseCrFemale crF, this->m_courseCrFemale) + { + fcr[0] = crF.m_yellow; + fcr[1] = crF.m_blue; + fcr[2] = crF.m_red; + } + + temp.clear(); + + foreach(courseSlopeFemale sF, this->m_courseSlopeFemale) + { + fslope[0] = sF.m_yellow; + fslope[1] = sF.m_blue; + fslope[2] = sF.m_red; + } + + for(int i = 0; i < this->selectedPlayers.count(); i++) + { + int handicap; + if(QString::compare(this->selectedPlayersTee[i], "White", Qt::CaseInsensitive) == 0 && + QString::compare(this->selectedPlayersGender[i], "male", Qt::CaseInsensitive) == 0) + { + + handicap = this->selectedPlayersHcp[i].toDouble() * (double)(slope[0] / 113) + (double)(cr[0] - par) + 0.5; + selectedPlayersHandicap << QString::number(handicap); + qDebug() << "Male White: " << handicap; + qDebug() << "Slope: " << slope[0] << " CR: " << cr[0]; + + } + else if(QString::compare(this->selectedPlayersTee[i], "Yellow", Qt::CaseInsensitive) == 0 && + QString::compare(this->selectedPlayersGender[i], "male", Qt::CaseInsensitive) == 0) + { + handicap = this->selectedPlayersHcp[i].toDouble() * (double)(slope[1] / 113) + (double)(cr[1] - par) + 0.5; + selectedPlayersHandicap << QString::number(handicap); + qDebug() << "Male Yellow: " << handicap; + + } + else if(QString::compare(this->selectedPlayersTee[i], "Blue", Qt::CaseInsensitive) == 0 && + QString::compare(this->selectedPlayersGender[i], "male", Qt::CaseInsensitive) == 0) + { + handicap = this->selectedPlayersHcp[i].toDouble() * (double)(slope[2] / 113) + (double)(cr[2] - par) + 0.5; + selectedPlayersHandicap << QString::number(handicap); + qDebug() << "Male Blue: " << handicap; + + } + else if(QString::compare(this->selectedPlayersTee[i], "Red", Qt::CaseInsensitive) == 0 && + QString::compare(this->selectedPlayersGender[i], "male", Qt::CaseInsensitive) == 0) + { + handicap = this->selectedPlayersHcp[i].toDouble() * (double)(slope[3] / 113) + (double)(cr[3] - par) + 0.5; + selectedPlayersHandicap << QString::number(handicap); + qDebug() << "Male Red: " << handicap; + + } + + if(QString::compare(this->selectedPlayersTee[i], "White", Qt::CaseInsensitive) == 0 && + QString::compare(this->selectedPlayersGender[i], "female", Qt::CaseInsensitive) == 0) + { + + handicap = this->selectedPlayersHcp[i].toDouble() * (double)(fslope[0] / 113) + (double)(fcr[0] - par) + 0.5; + selectedPlayersHandicap << QString::number(handicap); + qDebug() << "Female White: " << handicap; + + } + else if(QString::compare(this->selectedPlayersTee[i], "Yellow", Qt::CaseInsensitive) == 0 && + QString::compare(this->selectedPlayersGender[i], "female", Qt::CaseInsensitive) == 0) + { + handicap = this->selectedPlayersHcp[i].toDouble() * (double)(fslope[0] / 113) + (double)(fcr[0] - par) + 0.5; + selectedPlayersHandicap << QString::number(handicap); + qDebug() << "Female Yellow: " << handicap; + + } + else if(QString::compare(this->selectedPlayersTee[i], "Blue", Qt::CaseInsensitive) == 0 && + QString::compare(this->selectedPlayersGender[i], "female", Qt::CaseInsensitive) == 0) + { + handicap = this->selectedPlayersHcp[i].toDouble() * (double)(fslope[1] / 113) + (double)(fcr[1] - par) + 0.5; + selectedPlayersHandicap << QString::number(handicap); + qDebug() << "Female Blue: " << handicap; + + } + else if(QString::compare(this->selectedPlayersTee[i], "Red", Qt::CaseInsensitive) == 0 && + QString::compare(this->selectedPlayersGender[i], "female", Qt::CaseInsensitive) == 0) + { + handicap = this->selectedPlayersHcp[i].toDouble() * (double)(fslope[2] / 113) + (double)(fcr[2] - par) + 0.5; + selectedPlayersHandicap << QString::number(handicap); + qDebug() << "Female Red: " << handicap; + + } + + + } +} + + diff --git a/src/datahandling.h b/src/datahandling.h new file mode 100644 index 0000000..7e843d1 --- /dev/null +++ b/src/datahandling.h @@ -0,0 +1,91 @@ +#ifndef DATAHANDLING_H +#define DATAHANDLING_H + +#include +#include +#include "player.h" +#include "courses.h" + +class datahandling : public QMainWindow +{ + Q_OBJECT + +public: + static datahandling* instance(); + + const QList& getPlayers(); + void addPlayer(QString name,QString hcp,QString gender); + + const QList& getCourses(); + void addCourses(QString name, QString file); + + const QList& getCourseData(); + void addCourseData(QString name, QString par, double latitude, double longitude, QString country, QString city); + + const QList& getCourseCrMale(); + void addCourseCrMale(double white, double yellow, double blue, double red); + + const QList& getCourseCrFemale(); + void addCourseCrFemale(double yellow, double blue, double red); + + const QList& getCourseSlopeMale(); + void addCourseSlopeMale(double white, double yellow, double blue, double red); + + const QList& getCourseSlopeFemale(); + void addCourseSlopeFemale(double yellow, double blue, double red); + + const QList& getHoleData(); + void addHoleData(QString id, QString hcp, QString par, QString map_uri); + + const QList& getWhiteTee(); + void addWhiteTee(QString length, double latitude, double longitude); + + const QList& getYellowTee(); + void addYellowTee(QString length, double latitude, double longitude); + + const QList& getBlueTee(); + void addBlueTee(QString length, double latitude, double longitude); + + const QList& getRedTee(); + void addRedTee(QString length, double latitude, double longitude); + + const QList& getGreenInfo(); + void addGreenInfo(double latitude, double longitude); + + void calculateHandicaps(); + + void clearData(); + + QString selectedCourse; + + QStringList selectedPlayers; + QStringList selectedPlayersHcp; + QStringList selectedPlayersTee; + QStringList selectedPlayersHandicap; + QStringList selectedPlayersGender; + +private: + static datahandling* m_instance; + datahandling(); + QList m_players; + QList m_courses; + QList m_courseData; + QList m_courseCrMale; + QList m_courseCrFemale; + QList m_courseSlopeMale; + QList m_courseSlopeFemale; + QList m_holeData; + QList m_whiteTee; + QList m_yellowTee; + QList m_blueTee; + QList m_redTee; + QList m_greenInfo; + + + + +}; + + + +#endif // DATAHANDLING_H diff --git a/src/images/Add-icon.png b/src/images/Add-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..17eefccac473f247aa8504024547a3bb429775c3 GIT binary patch literal 10909 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 literal 0 HcmV?d00001 diff --git a/src/images/YaST-icon.png b/src/images/YaST-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..47e94150ce506da8b9d0715acbe0709f130b106a GIT binary patch literal 5210 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 literal 0 HcmV?d00001 diff --git a/src/images/arrow-left-icon.png b/src/images/arrow-left-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6c50df130286f83de1d2dd1ebc79f30325a6982b GIT binary patch literal 5910 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 literal 0 HcmV?d00001 diff --git a/src/images/arrow-right-icon_2.png b/src/images/arrow-right-icon_2.png new file mode 100644 index 0000000000000000000000000000000000000000..854df897ad6052e29285f20d458c862471fccd4e GIT binary patch literal 5897 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 literal 0 HcmV?d00001 diff --git a/src/images/arrow-up-icon.png b/src/images/arrow-up-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..acc72cdb7230f4ed1202fe88e1359e974e42e483 GIT binary patch literal 6064 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 Y1-9AtSED>`eQ0BL9 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 Al>h($ literal 0 HcmV?d00001 diff --git a/src/images/edit-player.png b/src/images/edit-player.png new file mode 100644 index 0000000000000000000000000000000000000000..9ce7dd882b0def50f3784fbd4c11a10e62bfe797 GIT binary patch literal 26933 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 literal 0 HcmV?d00001 diff --git a/src/images/new-course.png b/src/images/new-course.png new file mode 100644 index 0000000000000000000000000000000000000000..6ffcbfaca7c935608d1b8145e590487d55d5299e GIT binary patch literal 12163 zcmbVSgL5X%&wpy$wr!hN+ve5A)i$nI+qP|9^%Pgzw)OP={{Dq`HrY%vv%8s0X0n-l zqE(b+kl^v*0RRBf4_QgI|76hr7#8}!eOTCZ>OTSIrY0i}sGB7``%i&3lb4YMeE)A1 z^p+?8XMuB;)pY{^5HSA7V1TR~-2aR)?mrZzVAdfCF`yaGH<82v08+pYNihxY^{d`r zIYdhyHy>NwRkQz^yGoY@$-u-Bv5V1G6KD`ehU3ibEjjr`>f8+tPeI5PepF5T<14ENVYg5%iTs7>`R4fc;I_24|5z{Ugjdy)v7j66bSJ(*Of z5M=!%+f1SLHE2t-uItavj{hi*=Q|G-NqK<|?hFIB(C06bAP)I8+PspO%Qk|=c?L_RJbMOr1F_`!oVwkrXe=f();`V|pr zcLOR|`5{P?nsNu0)zYa8ma*{7c`J)aa!($X9I?ypo?QqVO$Cg-x{2{ZxyHRd$-X-` zLVS1b@&@%dfEEvW%#6j^t(SqX)OzctvqFv11}1ghhHmZ5-V@<09=G0`^cw;0kBQp} zUG>z-HKMu?-*OhChW(ChWUr~!5$zy1{e7R@xDUqZN7<4n+a zJW)F6v}L=}xTn^*&(m+*S6};j6RoPHP=Y-R^y+*=X;To=m&)hC3tLL-Fk&GjP1d9hUw&@@Tyg-9jlqSN z(N``Y0i$NBWJSn00Avrr*WJ){y=#^QV&No)SVwR}xuETsv>2DA&yKSMP|=V+Usym_IKuzXztA9qPJX%EDHA0<1fKZr z=p}oqYloRekwCr%C*FKO_9^3zn7|glhcsfFBP~mlHY}q1pS<cWBr|74}SrASwKl8A#lo2J8lY;Uv>L#a-$*{k-qu6x}(Nc0D7yzD%E zyXU5Vok5l7fo5hd68j!rgzs{9X8=JI=;d4fz%6-h!fw->#K6ykLV1>6_t8P4@3blH z(=-3n=4Xf89$HM_!KQd21nvB}@jt~~&V-69v#E?50pxTnijxn{LMXr|XM=L$8yc`( zTX`>~pFkb{rnyvg##850dpBnyu4=YQPdef)t^u#>{>U4V*Vw{j?Yge_nkAX8rStmaQjX_enzs)GW+Tv-3^6F% zX(wor3Badfm=lVG4ZtadO%Bw5PfH6$r&7}%D?3`aF4&0dy&i|Xu|qAdOxQ7oq)P$Vg+8dJqB&c11}COtDQck z%j@s-0U2zd>$30G{R8Vj*Oi&}O@sH%+WhX78^(U?yT;t@KL=fBr!$gSb>xF9ib6<$ z3Vz%ocUL0BBuz0qMcb-mjmmiL+`ZWG{>YYUqgMIn$Gk0rw*eu)mq8e5C4;v8b@lX` z&hzR(xAA2jA;9*_($0he@(Hl{*H?GDKd235>ob|;p6O)Do#`(Zf-cYT57d7_s%}v9 zrcnF7sTLW*Xw48%fd?Cl>~?Ptc@LmrmV<|3-_HAB-%ilr2MzmjHz<^V$Nz-D`2EezNfz*E zyj?lD5xO`v3>q~Z4QO#QwE7$JVl?@7{@zYL9<+{gD z4Z^))HJ&IJrT)L{Q>sZi((QzqU~md+eqf9rW*bF6;&;H~66QvBzRR$uR}Jnw1OPCi^1^k0g?D~_3f=35G6 z)Igu;GV4~N;YfaEQ^l&pm@vfmVnOY-;p8K+Hm!(CInfdPBA(TEIjTYO4&IzB{VAAk z<>To#kB1YqfZU#_)=kj#qQTp)&}Q#ZIL)kH_x1UX;IG9O(Br}djd3#I^z*sK6B9aPLBqhE-|Ad?pl&;_fsgGz~Sg1yj~}TnN+o z9_$-4TDh<2Byg5dtwq#(8_Xd5hVh01HBbe7J}xU~z)`wlGE6!5+BvIr7IF#?UAf{+ zZqW(yXcLBsHBK}9`{dLazH!|VU;pIi5&^W1aLOlp4J#mch+ws2h^M;Svy?7VKA$C{ z^E+P`Awjj@;@7Decy|{uHvAG`R3-uuhN8W;;~4Ev!rUBv3qHLfYVxO+9QT*82nLU0TGv3fTg&uSuaPb$b{E>|Lw~C7%X~8Z53-0b?=;wVm zYVZ4t0mbq{#HGsV>7{}}F81|2G5s_9(x zz)e#>s|s;nK;Q!FQJWTF=c?34OL_27iS};e7ZddE@(}Ge0QY>2B z%polTSv?my)2BqzG+Wt&b3lVpM+MpY3c2&hrYjNHxciU0B^lCy@F6y9*tn7}`JIEL z(#C5Te|qk{t2+t+#icX{IA~iCzRn5=e(@yA%ypRLJ}f)?a7kp@v)7<&u73dMI5jrO zr@uKYHc;eQxpnX)Vnb-yAA<6EO{hf1b_O+`Ft4@PdXS7W>W65>G@c1+QJQKI;IRFg zm(nm}eqFY1^}wN z;?1}muwf5nU#lRP_)LJt*s5=p`%(Az~zk;U+9uK{54=JdoX!9$`m)aZ8vVZ8O& zs7c^^fum~wNH$jfAjrl#Az8ROy?#RGJd+rz5q2&bC4z1SAHoDD7o0s`lK$&(x!lirij-i-rbVyzG}NdnH&Mww}<=b-S8Yu0f|}5$0(o{e$}FyYBRo zRNez|u)%zgK*FI)q4s9>+1Y!YX)^qq#vcxOc(%)Ys}Sle4{wiC8hkR z=n1$zbm@=L%=E?RjzM@hJz#)i*5PJD>E;jA)HsVjlr3)t99;Rj1H2>iV6KABgj=>5 zA|}5@e!nz^{};oA8#lg4Or*+D|bR6DD294kW2wM@ssnhKgkQD}>kVoc=3dC``Op;PBix#w)KMp@|DW6?u2 zp!6}PQ$`hZrc%WyC3SeVbCJ7V}r~xUX-SDxki{D9?#4wt|F^`7p4`lC^l zRu;-$^|vi0-;reEhTv+*Xj<`#EUr+!FXpvcyivtG5&kCLynON)7eWRfBN#`A=&*^2C$nmNWd`pgX|6%|xX0(zrSpP|Kr1|Q1}0cm?`7_$ zR+aGgbl#{Kt`&COxnw82{ZRT3%GY(lEAN_9J<(-FHeF_PTn+(Ho&R1YPD8*RzJfqz zemmFVx#V?-r^*$4YP^x1ot|+VzyuVOYnK|BPw5e_l6-8T@kw-P zke_BY z$8TB-Xi{6p^5=C(RNHU+s|6de%~eZxdX0Q>7PV6&6$kj9R|7dxgniX1E^Y`$mw;?p zD1H0=yD?w;#gmNKUJjUfJDsrqzLr@uv8BkW2bRPI6%nx}U=7f9rW68e z&>g{K{6odgrx#e@)_Fo5K`2 zy5o=*So)OV z0#jj|pFZrHDHexGm~spK%hN83Bo~epa=NkLE|7l#4y1TR{iP=} z#&+be(=DVuHIQ4ctBy0OCH!vuOtNAbmB71$Ob1}-2RyGWa&YJlc;25SASGmD=v5@o zMQL|AW{9E7jhJ!TdU=~BOcoK+T8lY7NI5@Nqnv%$3q=;CmVdBerNGsc(viwh>sWnJ zpv6ze$ySudS}#9agPQ-MvQ(aNa{8CCDBF52+Wir=lL9LfW9xuKm zGZ)S9c7Vd&wT^orbSmZVh8m+8DUOoBk^mbHUiFS+oy_RmaP)U{2I6f5@^zhsxuunB z<*gFH?Tpo#K%+{AZEFZ@ZSh6O!Qj#-n%n--L}v@EjD(B6p?wJW4mCXCw@s-kmOb{X zolcUqrMB@9CM(d)qT0H#P#w2g@4@=HjtaqzX)o&sYpP!;A928gCWJHBb~EgL^@eHW!Ie5&&c?r!6Q1qDlnoU5Fsr`=vEHmXGce$Q zXaw7Pm99p|u7M+N>H?H<3V4I~V&dUA%w@$*nV_LkZxB5ES!6>Md;5;C#sf+PJMS=j zuZ+w;Lu4?iB!rG+a{bdHzn}UYxR7K6)eoU()Bz3Yx#7Wb0V})S#DG66i^hU$^LLI{MdxP!K*vJ=v%)^|ThSY-q3xd@7^Kd(`LLgDE--kGt5{D{t? zIkNgY5-!m63JJrP>G&T`=2ZDY)jlY2t!*9Sq6x?SI#~aY# zYoiSfaP53*-nfWO6c4m)3CW;Ck=IZ0KVbXXv*nJ%B^G_a+6#W5bbB8lPb$L-uhp~d zNb6dLXQ>P^=UKz7n6AkXq#FBU&>-L<()nRpGQQ!$zVQaKnn7RAHWvDM+B5ECU&&Rv zcW>-MaA*FoZ+MS;I!z-a7ng!^vkU8Z6ny#RllMW8Vw3$vWfxvHQpi;@L;rr?AL<&W zc1)*YwLI#$c)`p6k)E^ehULH3JiqQxBd+$u%Nm1-PQ5eM8kH49VJaVj%Z(u7ibPr{ z@v-_=f-tT=<2da7aiRz+d0_6G$E>u0vCM+nnb!Vynd1DT@R@;upNK1c2uo&L9umhR#V#@@jj+V{mb~4%3^v( z-I-tmqMB7^r&#+Bo`_q3RdMwCq=EBhMZc&oJWZ*yV0iMv>Lo5lE{~dm2snRZmI0itq1R~4qSGft{|xaR}-v;9N`3Qg0;;+S8d>*gKm{NIp^3av2{trnf4_fN|M?5nBzj%`D~l?eh4Yx2 zzI21Fast4@K9CG~3H1!-dti>64!2Ir7S87vZaYpE}SeU6x>s*r>UTBlAig(4d=bvVGChT;%O)p zw~6jb8j?OjZ;aBUCFsUUoxqkI%E{Krw(}#kpSA<8P=s|cDEt$K6z?Aip5MZJcB0TH z786K9kHXfVr@yAf;%fa@UF|}y7;Zun=Ddo%I?I9B2sP|1eoNsJVS=8H&Md61%Ie|G z69tPlFiw$^B!Vl3Yl>5BRqyW!On|Vy77-5o+{ft7c?P+w8;V_C{&ThZg|n92Mfcq# z`BX{2`i7Ja`&3t~$G5h=dL@t~nxaaJVb~GHFyfXfm?$M#h_oyF$e(JTMkWSMpfx}p zWP$Eim!>;%}Hm*W$K@TDw4vV`*rvTMCPt_3} zSf6m0X|b%YR`z(((2r6xg>ar9)0h5roK50qmU=5>-+Oj;9MfO)+nQ@xH&wKly=d%8 zfGl?py<8GM>wX!y%mkuKW^33>lDqz=dsvEqLa~zz-S1rBMDtPzM^vYslQO z&*iBfrit#LkN!y&*N@z#rNuP$PB(LxrBw>~mXy64?AYuMqJtM4qXdqvfl791%m&lv z!ys2X-=h;(f#WhnNje2_k%@&-mQB~#lX16{5~aDIvBAN{ncQ)!kFJ%IxjI`$_)2{! z0xX=G0@tid0rs$QNDY#w#^QyNt|Tbbk*Z^F!*Lm0toRyetYt`n;dmXD#@kv9eb}W2 z0N0d;8xxX)6KudU*wNPpuFoz3CQJZg*}$Z_&~k37#d} zT#7TViu;;S#VRQ7_8wy>_9Yxq7~K=hdMtW}CTKhu;^#fD2I^49nA>X8%y%Buf0LnD zvdB^a>KKOoC{w7Z)e`QC#jb?EZSD0FlDc9TO!JdWUkI-9AbEuzMsyu}livgAm+-Lp zXtdm25f}487|Db9WH~<&h34`ceU!T4iTdl6KrOamp`7pV1Zx9&Lo!*grtzClmibpA zAn@>X5YH;Q-A?wNL%xIcJiL^4`CK;ADNyt010p;bW_)9-u>7EUNHG&uF&fv0t8Yg%>?9y z-B@`J(e!b_H5+#`oycDX?6W~Tf)GJ@8#cyZH$6Rx9N!JOec?k@dGHtA@)m|uI#i?E z;t{>0jKiax6qboeW?8-AoZSyL(B;hvT0-kW4D#!KYBnml$ab?%t}9VQadcKOv|7RH$wKDATWG;Z2eZCbikOQONH0Au zga*$*ZJ_QpL8MIZe2;gKC*U0p&ME#nz53nlyyTipR)cMjS?EYKPD?d!faK%r* z8CqmtnJDQ{Ftbf*aloiq5O%K_J0N;1O;65w77Z_o%EHcO9AgaN4-W@Gf=U9Zru>AGh~ib>?%rBwHe)1r_=y% zJPa%^S%S;|N;0!OO{Sd#rBXlm_ir0Rlg<2s%XGG}F>DHWb%w+MD1kdjq5kf;MNsm% z%<@&KEm54qviHco&EQhV1?{}t=+y~41w6$_JDQ3Lyfy;f${cZMi3O+T!N0Aj#uy0A z#8d}MS9!w-MS@Y9`zh1}Xh)wb2+}ibMlzdmnM!gk+fNgG`6QR;%;3Ai{gGOSKEb7f zvSo%60lA?OY|%g1WT^H(E45-U?~6^sHL7Ztq5nC9{hedp`>sVBiYxqQSo)i355vy4 zmwDwa5yHA3ZJd|!s0;s@{LaPb$?)pO-qb?f!Tae-s+3SXw zDfPQ`oS%Xyp&2a>=LF6+rvQ!4q-b33jqV;sdTyO6b&`q^py<|U;u~(#y8EIVXMT|+ z=5BYfJot`9pBMn4zdf_hQh(y5j5oL#A~m|E*q}wGss&eV7F^Uok6y(h+@}FcNs21c z7k@n8goFd3g9S#1DYcB@Y9u?~p&?|m zWs0+d;O1qqT9-z;!FOu@DrkKqw$#&xR8)0jw$vb#7Y>D;dmFWUgBcpowDa=<9DQLG zhA@Sm_oBp=%~NU*m%)v8j#vuor9nxot8GzpfM0d>x&$nkZf?)dc{#xU`{zNtn} zl4_7QTY6qor1-9x6va=rqKYv7W3a{_`D`x^19w*>2Vu{#y1R9W$Shq~cL`>KxE6MI zO27Z}b$!*$qZDbekKh4ZYLxe}topE90JqmoPPNs403~aE%DXpS1(HHjP$<0m1)K#; z89b3(a178sWmvqT)n?RIdKowtwuj-ePd$ktJLJxzH;6fU_9Mm+!<)uZMVICs2|Tr; zcUfFksF=lgGUdfsiuDzc(-f4L%RiKIv-H`Gi%=?xp%X5)6uo8OW|v%BAHAe1$rVW9 zv;C6AORlq^B{q6NpNbA$?v~TlCVJlD7=!{rRByy~Dx2^#^+$LLGHgklZ0$a;_yjCV zlQJ|+9&*Ch#fCAdN z{;xaYQdU>A+uRiqz`4-fGJwk9$ehmf2r$18<*$LeN9QTOl02S)q?|9c(T!7GnHY4H zq2HFaDmM~Rw?bsr%z~;QGJe=rP21=G(P590A8mJgGI#8}X(K1-0C!-aXkt3)g%bS} z%H@=Yhfi zG$w_hz1Q4#bMj%v$1Lfm3eMt5Xo*!Rq=QM(Y<9DAFu%k6_m;w)VXan5UXL{ypu+<7DK7*#WNq;-XC#!AERJfwGQ{a-#O&@_8im^|rHZ0IRDvpsN?8?QNaqEZuD1!mGE0uG*nzMFrR) z1pF*XlOT+t#bWYL3_|soKgQeF%_BXpCrAw6{#oa)30FIW7g9eZJ6f34ngp!Hmom{% z?-$#x_!aJ_(k=}2wf#aaq-x^j8lltNDIXj$R7+I>?)hxn50jFD)xkGb;p1eDMd8yl zxzzdLXGm5H)>VT^*co)Q$09f z-dYiP6v+k^#<8LqqloPlR~C)zl4uw*1f@LONiRx55mUs>jS-Sw-&JM)Tv}awz4a#| zkb-*(V8`0x;jR-cf{krU(_m=_sPwz)6v(xNDh;0zzvpej1eus6R%UPLo#JqJ2GJ7N z=Ni#1>8vGZ0IN@7e)Y0tvHqj<%DI&&H{uX2;3q`w?uf<)93!>`)Uv^Al)psN;}kJ+ z1QmyqZVPmJ9*Y*BW5ZEd9Ag)Nmv}^^Bxf$}e3XeVX&rB}Z7mT8%QhpZ#8hcMRg7RV zfxJa)zRZ~bgxh!SrKAimHw}zB2PRTU3*2?fTr~rrN!)y&d!gy=2Tj#hEaAp`7Vqyr ziNMM)5rW=mJFhPxn_R0p2g&kKIL7#Xs-ns;rCzUwp6(bXJSf4XeL!U3=LE|njHd|E zLNm48x7B7v0Ve)dNu#-yAXx_`U@~RqQ-oKK+j5Nlpv1!p8Sw8ozTZ+x73qMP5^6Mk zGUKQ5DG4>OTE9tv@c@Q9EI1P4=pzZ}(K45cd|OM7sz^#Ne4MGz705)Y1O=l-H1wmiFkAHe%r4A|^=IuS0djIxTY3T;7Ze(P{cHt{1p*Iy4|vXoC6=&BQj=I)M@*yh;!Ws`I|_|!0r4D2_<4P z6{vvX4RgZ^t)Q5Q5+|G)$;FsFL>kbx%4>%T8s^D^aqNG&L9jKO2*Q9Xpm5Onjdbqv z{uwDODod0;HNxnsQC(z`l*u>x!|U2$NiBZijml z-_iv=Jyex?N_zXIKQf@8@<{B;QN151skzhxf*a3qgOQ4NY~pZYJ0?vhSx{rB8+^7o zBg98%J$+N1%nKc5aBb*nXm~F*0e*_whby%FxX`vXrepl!{SlcEWh$z`S*aEc5o5Lpdit z>-cWBV^1!$Tir3J(O5z4n3`0@tDP3ueE?=&)Y%@U?W#i;5~2qe89xjAiB!UR06p3N z)sGWry(WHgb9`?N#uKM+m&#(hT$%A0jUIg2JzjBR?tvw7K6lvK1f1U$p~S5zYGYg_ zxj$`Mlg489DnH0)#v2G;9gcO7m%#_BIU<65rB-_$PD%qXV0&pS=J4X-C`>I4vj6FF4*=l`{8n zehw(0zAA7>00==69(P(-gaGwElOv1gG=#KXjAds2U#J?YM*`JhXme6boP@cxoSUhqq_HDFho} zG<-n0OX1Sd7II3%POyPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igQ2 z6ABOH4l_Ie03ZNKL_t(|+U&h|oMvZT_y4}isdt|~yR&^aWz!P~2>}zDfF*(=DmIiN zh=BU|*if2XA3KT#E00}lh$sjM0U?Ay2w~H=mzkZNcGuIc>-zn1&dkoHV1nWIG7mYg z*R}WT%zd9ZbFR;~eZJ)g=NwNQU%rQYyj}2XUi0nyzxUPO_WCEb?#mDWuYdhZpDCrh zSt_~xu{fV75Ba0doZ9_{XHU1D0Kos?<41q=RhK9w|4u0xNh#j;7@k@kSV-3j>z?efU>?D+HdQLweqh*(`6j2^qw zIwypn?#tGdbMY@bPzbINaD{^(`k@=9ej+K{f~UmO|Mv}(FHllku<==V<&QmU`k6oX zfrZ5_5?tKn;L`%$B?RyN z`49fj)E58aHGq=hEfeDn#wQvGA#kvDdAa{Q;5}dD=Icvmqw#0#t-mAC;%hcZ^h4hu zCCQB?GnUX(v|}G71;aKm3g8zjpABU;5C(%})T} z5gtGOW8brXYNGMXRx_m4h>%L+tYdYo{)R6G073|F??fYdP-bvzku=+Kr8YY zZ}`*$4=n`;POgy|%XlqdU2(3T!q<|lun%{-Ch&6Les&YEw6jY7oqmG6tv%Y>++A>dVKhX`EKz~#*#S) zo7Y$^;F7sEd#36HN^z!_a?e7KtgsZuak`rj`5GnV#%H#+W3JfNVeeFf*;Yg&^h%BO zfO7*E3HTM~IP`JO!SD&{x!BpYcwe+1b`_zUfWhH~DDK zxN9t^KkxkJb-Txc>)Vlf3gBA@)0V0YDYmpD&YNy<<@OHyx3t(c7SpNucuH=(-#VJWo2=vGuYdZ~ zz9*c(hdAEwqpvu)ch}^uZQI6}nrso*0`kJq?I)aG>~Z|W$_M8c*1qm7Z+Tn)3!Ue? zo;(rsGtv&3X|LHys*gI9@ z_{s?D1X*F|j`9cnuFz8$YpDgAX5=y12+&e&n2VFEBTlT0c))Ex30(cFA6Yo@1OPVs z06+Y))m=NrTidpFn3`%)uZIYwNHasXm$I}x;Pjc^fyKq{&nHR#=Wl+?gCm1V^~=iN zsR3=W_1=p7!fEo#h_B z>;dqeu+DM+=^>|k z>E=^>2zcIaesm#w0sz44U-NDMxOJv+Fh?1*F4Ujsd4|}kcDo! z2m7XD^1^X=X;hhtkX}--HYy(Sn)gn{gr4L~FK6F$%qX|qyD->ze<$`f-UD#>%!p$v zXRpCJ-uU+aod2mO006x9)i3$>PBZ+|+35z;Qw_#CH5!eGAPmsHMoJA*;GDoXL18S$ zI0|FSRg|yG%Y6Yr2;&Gn$y_Jo zzSG0XoWS16n1g3Vn1_iWOO4UMSjR#yXU}AW0FEpr99bISs`u=fjF@ee+|#j@goBG4 zJW*z>yZHA$v2gE~Jr7{5`>XCCePi6!d&5AXl|TZ{Is)h8`JjbHc?zi%LdtTN5Lilk zYm8%jtWKj5^106)68NEYHo$SG$Q>Ssk*rHl*7dG3bvN4N|f+r6_W&F-R<) z5`?}Yj(wVqfOadQ-HGY6YmARIII?^jy6MwcwGe3RSMEezIfHk+$I7rE^)>dQ3B(}B zIylqMDeOkrMxZ6DqhfO?_mHcb817jZQV$ecIsvyI?_;c^6=|Ndvq>}58|VM{{c9Xv zN|z=mVweqyzoULvLVYFTAkoOM`han&ln-t;|ZQH7;H81j~P{5q@cgw9x# zMi3Hj4+#Rza5cpo>S7(VuHS|~9Wy%CW5c{_37hEMGWqK8D$T9!l!)KlV-l|k3Kd3k6+dr0O0Mv|5v6c?6f;1J1h3t+5o=Q51%{ zu^3|s3yZZ5V=bOB{NkVe9^FpH)I^(3r%t006Gk3VN{ZBw9q%JsKHFZfmy)9qNCR?f zgNbXlkoR+XsbRD{LIC~5(%C-7+@5K)6KDh&!Kq_sICgmcVXyuE#WKvR$01?hb7rN> zo%4?$BXDWJP&1lY%J9Kv@3c^k?a8 zYtm}hX*46^T7VxYlu{I#MSF^Py2jKc69@#N(9}C2wb(-y4pCTS%~5nL(Rt%U7frEc ztU)UdiM1wD8V^YkSTvGLFWtqbZoQ9QZ&>jGl4~wMkM3Z|=kGm+b8y|oJMpz=uon0g~5ibH}>qdkoj0%swtX{Mh%gBNg6xKD9!B;4wK^h`h$Ejj64nw zPZH0B#Bo3r1q7jo=WC>t<>pCHo}^au5f-d%q7w(SYas%dNOPQZ#DT_>5^Eh=S_12^*5QmrB3SB;2z`$S5{!l8 zo+kkCUzh~ot*?H?H~mbK*&9VKds)^jzPb^5_<@J-D?DGJltgNY6atAt1I}1nR)CT? zX*XW26d(jbt}hU-dKCg8Di8<|QsOB|(9pD_0Om=Hf_@2Vk>OlZ7)*XEU0FN+K1pXfQ`>*}+3ks!`(w;);auvDZ_WwMHvyMSOrN|9o z?6c>*X=bOIpcO(}tdcn8K-seZ5U%tSgg{onU>zjY|Fu#Co-EA)qT(t_X4;ki#cm4u zOH$h+9Y`rqN|F`kK>%=$l`nf9;L#pU=dWm8-c+qi>A&OC$5>q&-~}F6UblxW+sDX~ zoV!1Nl26@on3c5=I`B||LVL2*7?rKxyr|L*0#Rv!b6?MzhxH{l*5>bT{+gzCH*Y2S+-asnBu6?r{zIUF_-h7DBDC3@c z<_SZOb|a)2_{3VFwS&Sz!G;FdSd}?IijAMGbo(qWEOFw*BK2CtlP@sV5Z<^|8W zh70%3odtmq>j_Jwq|921QX`BtYMff?KF|adPXORi96#{7tH-#gc73Z+dHg#$wZgR;NbZ%g9$p6h@_>-KMaV6%)1C-9Ua@HFj4_~0nOvit-99^vt- z*IoIO>b&?3<2#!{d%QtZ3-LTfKS?=o*L+D68;jPGtFGM1c(aBS5S=|Jid z0JX?Jr&!d%=?~t2`uGz7_%DuEzWR!9T5V)+k1uL=w(lHccFP#GMu=7lCmf%-^%zHw zE|=~&4(l98jxO``YxdHrM?|5A=Xs^a?x?~wiwhJ)nl%bMX^1x6u8)3Zp1bZ}<<3K^ z96x>5Pun_Cqa6pFKiB5+-Q!%jYli>x8T9v>n zOz9=GqR{>Njo1G#;FrEs_f9*YcBc6Q=R0-EnCN#+cCl1wh21pO*~Iwon>WZ zz{fs$A8W%QxwA+Ck*{g#fL0uH|A{pw+BJ4&KmD6~xbJB95ntn#dnUNx5#@waW|v1 zEH~dfInMr>Nu1-CUi)!u2=1DUX>QaR?AQ}^ln`6tH0-p>ARb&^V4(V z%xxQIZpS3kv*W~ZfWy*X8*%i|B1eudG8ko;+#(8#$}K@|@hq&=6{pv7#_AE%V-0Fy zfK*@$N1Eigw7>@%o@Tn|^Y-8WJj<&o+qaJKw2ODLv)yK_5rF`uCA~Dm;Fw?ObMWL6 zx88Y-a^Q6 z;y6Hgiey-@x;$WIaR4I+J&Vc>zH!tNOMO%jB?X<(QFIh1PcC!jbdON0(l2meou$YM zw5Pak?<{}!PX}3EO}S+6EZ_MRR|1Z-DCmxovQAKd){-djxp>DE*Iu-p@A|^60Iar;IZ5<$)O8(j1zbo?WJmEHF+iQ z+Q&Tr)_e4-&5mj_-uTQFwP$)YdAZVJM*DJBY1z(3=BPDxG+H*FUb!#%N}zPb;L!0Bn-_aQoAm7mx1?-_)6`KR1p7 zqBy|!HG%J;R8{(|B+d!)q97Tj^!o`>9A4L)h@R5i8vNh;-n;S+;8dE}J}9K1%JfNu zDAO&qMno8SW$HC6$WnvJ3|LTw!|xZ&t!2#Yn#J3HHEUO0z=a3?gCp~wVzIx-(o{&l z=22LI7&t^ximI;_WuV}2%46q+mvTJb#$YAp&Yq^;G_=PO_A$jB$L}P~yM$RmrX^Y` zo_5JD4n1?3zxm*2dB?xs#jk(&wIJX({`u3~dT@asdBL^JPS+V9uWvMydcH<`DtcT3 zVAC9)+J!F~f9b@w##@`su-qIsi@!c&nv%q`qZG?ysU*QS=Nojj6hJYheS0Wa0sBt9sR;!Q%f!!NkfzGX))RF z5ic$=bN2~$oRF-1YQ)|BH9mWx;8feP7J1Y=5njEdbkFpL8yZEVBMyDyee8VU>o_lH z4vg9bF6y|XUfc4D}TB?2F*H8S`#B}3D?N*IeyH2}PI&HOPNErF} zzK8Y{TB|B?0!3jN_7fWIh^57dXt7%|dl#w~#g&Dd&6@Y7*mE+8~lnCI4z0m zA27`bYz}=?|U!xsagD`CGy21ba&TaXfVD)g_7x3olumw z>geeeq!4H&@I6g;;V5_g`OkC7bH0sBw_HG57OdX<&m6wx1GMWAQRovz9%1a2nl9A% zzGiN!#i5hSyz)2SM<@3AUtjek1|vhe84^bxN|m(()|JgI#=7~(6#&-Neq*aYcHZ;H z{&;ex`P_D^MyFG!J=SDwqCvA&Bd&+|p@-*}B#6=_PY+;?BdV2VB8mdS(8u#NN-OM@ z?q!GarGZMZ)>>(d#Z>uLAxb|Yss&_ej#R2-;EbhLIBelqOD!rfk_XllWW29 zz8a?+9;ai4Z3b-H)H`R;&38lI9%b-yM7fFL>$54W0>gF zY1TsOwSYMEsYL-nr13n3(sE<6$Yd+#7rx_Z-13=uf+t3QyQz);z zF(9zkDtEPeofx?y&yAlK1x0SKRndhIf;bN7t&LE+G!fWR6%U0VlY%8J=?98agB+C^ z3^4QrSu3PA*J5I_j?t2uDsR)SJxz`;kGSc;Azt!~E0CVV3q5KC8wH)7rwDzIDDbGo zKIMcHAKzD~%E6sq>2c&#ndbk6@A?XyF(_4P6{X4qleG?0Skkm?d@Tz5@y87SMCplz z7rtQpjgzyj=X5%C#>ShpS~2ah2F-SjMk^wUL;OG^RhfTBREd%*G!oKP8MpHP#u&1+ zAWd_!JfkR#a!W>}X-=BtWL0O7QVJmiLFCiwM5Ji}IO1l2@+5w!8P9+&YHT0;wgc;`BYO2tAGO zmC~%WLMw?-a>GRZ#lLz zF8P+J7fxAq&pWrRu`+UY*F@dM?e1)$SUR5HdHlmWV z0LD3v&ad+B50`}Ai?7?W@wX}^u+D94zBP{FD5pQj==IVAuXyLbK5jICnz^h#F}5}S zKb=mUPP@KQog3H6^6Vh;tJqyuC0A9FR6HQ(?gVaA?p;<==7%1&T1cAYtkugdpd`si zlZ-qs2m*_xtjXWZbcc~g5PCE_5fig5hTQ~DO7dP-)(F`07mr36{a%Xipl&3&Nf6e6 z6@1$Z_tEXMX^Ehw&1fEcMssw;~;NMam^JjYe@UQ(7!zAZxpS*+X zE}SXb*Z`#@MQ$kyN1m5XZNHz`y!{vVrSf|J>D$AM1?Or<$!A^+rTo4~Sx) zF!oD_&(o!|w;>_oAwk|6YmY5~b~gk2huWrjQ}{eZ$0NGEZwbPQL| z^cf8^MuT$b!`kwIqA-m58QqgTrsq10P1Ts5>fi?+?OMphj3n!46e}a#uz<`#H4^9* zFTQ|x{PkVje$O(md-LD$?CZ|w#m~Kh3wBO#fcJsNZFisGM}Fa?b>B{N}69 zl^P|mS(&cR(t<3v^!pjBYst61;+_Bc_m7u!u-x;k&W_G>{T0n-ybF6qug&-jaNGh03ig*Q}}@<41L1Lhb$$}atdR}^MX7tP)gEW8Sse@+|BCp;Gya` zh*HVKbd#yEI<-bzCiS&IdL;oPq$s)ijq5G>{$}0h4X?P8KYZ8S{M#pv@xGhx;(a&W z#bl?>lP=y)18*_Y4p)8F=F0L%> z*H3SI*&o06uO3hJ0D5e9^qq}HAn=H$QtX@BYYPK6h}LdylX2-kTn}k7Lhli)UWCh3~)dQf$@T zyaDtI0H&I10x%jC3irP}oMztdGFz!a7|D=>v5NpeP`{G*Q>008ph zZ=AZg-i&rcwScfPzA{AgsVVE(i^1|qk^KFlEwkC@`#WiHMs$iIYzyVmBj%?{s<>VxJ|F_tm!vKo2&YpFZbe7U?3R_BlVKBy& z613iwBTFZ3`NS&Gj)*iZJAI1Ga^S-!xcRS+V5`lUJHNxTUwSc5|E3EFV(&p0-kPp) z(e*np!vd2OoV;s^Lx;{_R}4kBAk~^gD*_}U7Zk&SK{utlI^u?>?t4_5f3EzOFV;DX zag0WJSqdd!I4W?)?gwuB9}j?a-oMre&W}Q$AW$2umJ_1P)X7TkuRC{-yxs;hdbDD*?{M~>|(~YHXiJMRM$4Wy@@X*_ujd{+F-=UNPH*o ztiYv~A~6)H;hHD!WcQBoN3j3Z-^|&m(PsxpmnIcgP&J&$YSYvN>kP8vpg?Z#Mgzr-pAtHeju#UJuY( zkS1o`K{^1u|M3C4XQ*sBXXox$H^dlw zwqmxD`l@-R?Cn?UjTMel3(Lg2>%@(a*|{->y_6z%NL8AXG|jo^mQx5IY?Q^K7wo!> ztFQbcKJ(cF{Nd|e?4{7i0Z zeBb&cjv(@I#xdw6#(2br4vrvl|}s+4#Q%f)Wy(C0R@9*A4BU z%(F+4&-i4M?#h7nL>(a%|Ne(}&|69nz;G~Rq7^eYGeIM;G@{FBjQ=`!eDuA%?R(zN z&Wjsd^EJCU@3N@}a|VroPCX)4`e9kihu-`3jpqUD!5}DAzaW|0eQ`IeU!3Q~^K6#m z#U4NPGjCZFLVnN~^B!yMd*1S1`_8SaU2uZ;+CiN3yZvXVXxmy z-tdz@{tNH?lXw2qv17;GCKnU;Mb!BJcQt?jf~lR&pKNz(G@21n&Bxc8qVVtnO`aLf z%&(!n(snmH5jOP7$Y5O?tlx~HY?3I7f^?LVrzN#ps)Q8evfOGUj&{{q5iV>fu9&(+UJu2w@*B2=sqf`mcV) z+)E~=nin+NF|~R`6b5*nq9|-hrwSN!6XuVumV`%Aud0AFUR7XejU~?wS(2A2+d;;# zpOTDnioy`ZJ`*!d;zoc}l28Bp5oB9d`S)@XNE8Qno~9@a)>%4R>l@Oq{SZG4Ns^Sc z)jmdP{^3u5pJR93#@E08XPKRuAPh9Sc5Y+pb#LU<``mx>p1-&a0c@FT za?$>2_MbP!-fiPV^#|X&Q)jxIIJL_1%8==?I#=)CMzhu7J^yhVopy)4+osA;w_4V? zs_>(f{xr8(6%dCS&-3tn58wCkv{#wIQizg%mu!^2czSB;-D_)WM^~0tQlJ0|A%uA} zAo%ZS06D%VYEEuz{8+nFquGp!;{f0HkXjN1hNxB&Lj7(+cXfy<4864x^+s4`1_KR3 zP~?VWm@yorB!l(5zQy-7^>)O>Oq21M7E$a|*n&^L?=VyQbveXANxZ-#2m_QVORZe) z*mu#7lYZ_x>z9ckLz$G)f94CntH@ z*S>`8dEZ2u8_pa*#PZ35tPFd6^d$V-=jSn_F5{iJB(@MNF8525cknhw%VnGR%y^Cc zJEvIaI!-V5*)unFPF`cZS=AUzky}ppQj9S)+s#c?&I0Soh$zc4j5UlFPoRe@`x=q= zj7FpJ?<>nIi$GE>9t{ZoI{?u8zH;I_#wHuvo2|Gk@`!yrzpTyod`(;nsJ9}zt0PAJ zk~m3|obJjHKhS8c%Haq_*&dbW1-5dAqMA=aOA)W!)`+1#Tz!L z1cIpg`pOVe`I;MEasluC?b`syvHR|zbH$Tb?G9L&pQpbxUk-mM(cuII!ho~NldL&l~WOwYAxkJpH5KDMgpIdT6AUacJV=*&88T+US$Qk2f1G6-Y1 z{@X6(^uF5o zR&)?;d_P%Rz>Inb;00fC5#RTsr=nyz`{y@);JM}3>--n+CVu@!Hd;PY;0+kO?8gBQXPC zGysC8zA+3ugs288RiW5=eV_IOLFmzF$Ba#87-NZIzp~kiASlbT{7`SadcLl*h*dJl zR~y~4!(qzm@_^Nq0a-smE&F6!3Woi1Oni|UTRhJ1#^Awf{1lwppgl>JmG2Eg zO%VBI48NY&uU4rQs)5c$L2fL=QOertfW?JX2HgSioofg`BtNep8RjITj4UfK#^I^b zlqe-JMOo4F&2PPqUw_FzGgwae@E^Q^i5>eNQu;Tqhb!%RIKWJHYP{u@&*8keiH(ha zs8?ewCbwi+!Dv*_ALR50Id>;e@6@Q(YnZ}NuvR^(3 zJX&Kl!pO&3TgLxdR<-`JQg3pj=u-$m5C-IVS>c-|8U5afr87O|k1vyc;1r!&bs?fB`K1vA~YVCk;eDhOz=MR0DbkODGfloYqIoczT{s)?c^LI}2 zt}R(8Fw!woRM|rf`B-T&`Ob5OOht#8X?9{-V>O!Xm`1B)41>@k2)qr+FTtSEN`r;0FboGNt1EpL zPp!~>$6ZXEPU!gHcZcXR1}7}5D+5M@lysD1jD@P6Pgfvt*0JZRX};yBpH_nIF_QjW z+s1hLH(kw7zxH{w>S0M^ZyNmIszjEvrMF+?rL#90=5+fRtKE$ImqvUh)x@=u0rY&2 zAPf;gkS0lKPL-nD?IKLU)L4@(V-3>0pqJ!yrnk~)G-$P2jCDFR>h;dl)YPB-($D>z z|E1CZQu%VHtfW?Z3hh_U9}h0;ma44e-N^q7aaL1^&1v!S3*Yxkr_YwsKNuveEcaP? z*S%~#*=HDluVG|ibU0zSHASr`dfg#W9HOv)Way^XnPtL@QkJp$QuQ5B-Wcy5uecLApgd!BBpVChX+HqJ(zdY;hSI;jnd0Ff^ z8s@C^Ggj6T4xJuyQ`g})>(uLYTCFC&?_;c~l2IW_X~31GZ^;1P<zPJuCy+_OygQlDBBas0?KVdx`-BdmpJPn}I9*%AN_ z%glLgUig#O@SN9N#=Rdsfk_RE_phEaniK2rwPb3##`c|U8ljJmAd()jQiM{M=aY`Y z89sLVaVFa_m+hG;M*(6t^8D6TYCks{lE1Q+aL=g$|F)PBG@Hb6OrzPPRFWp-^cSj3S)@EkY=OtvM&_?gdeDF z>yx)PIC$~E33!jrkrD`e|E$)^GDClD#Gs$hziokS!qEz#9>H1xMF#m`$Y{YbY>dFc z$>Ymd>xk2WF!IX|TUUl$c2h->1Hz`qCC}S|%N^tfo0YBOqz0E7$Sg9q$gG^`?VQ93 zi#3v7FX8CIkmJWzIdf*f_SqIszkEkYLLrdIbCOzFW*7~Na`U?h2TpW(&&dJx&KRv` zgLro^AZH6OHU>PLeLT)+l+s%p zF&re=V_lSnFe>S;%mQ&qcjO0$%#VXNr8%?E!x&3vtX4iFAkYX^4vZ+Bv&!B}S$=KG zQLwHkYY?3=6vKj*dsguSNxqh2hX!dO?PjFCobGahDJ*eVHh_+|W1eyK?y`nah>c0$ zu4?hhGRtUG&>Li|c2hokWQBh^)}_{L(eAWqwOYhcgg`PJC4^B_7R*$_lOzdAk`lEw z4ID);XO!mX))YYy5JeGj6cNQSS}Ae$FdU{dTMObE0}RmSX{M)7U)oM_@+~sw0x)owgk440^e7JjgUCd#DT|E7i}f- zby?U^ZN8wKN08^1G$|MibJn^kw;x;PFYh`LWuD_ zaj1RW*=T&+lmZoBBnpHOD6Kcnv$oPNWBa7+`W?5>oNkrXMQ#nRC<{Y7K6DdD@83_L zui3&vat6QQ)68lN2MK;ycIkS7hgY$V>&2={NtBRC>kvf+0#nX(ug}Kp`^q`i4)!o3 zL*CD!aClNtB!)QfXx0PvZXaiAyjH4yA+XiWv1Cdc6#T zjluV;b85ZovGxJPmdl$v{6I_3uO7d$5$~Q==Z`w8r1XaANYjig%}7Rh`4FhAU}kC$ zyLaxTR&UX}T3 z3p@g)@YX?4nFCQ+FcuvuCigXw1!x1l6GT#%OO%daASBLMte^sbz#?(hP-KQAE$EL* z$L~*WzKhW?VX{3&RN3ty2=IKb5~Pys(VmAN1b9kQ7>DnN_`WatgJonOND3%|7Eu&Y zk7L@c7PUAoYblK(&vQJjOYNf6-p3jMsy^voRNhRDD_ohy%gQXCbMB#|f&c0vD)sN2 zV>B9-PXJHKnBI;It*!g$?A%AQUZYlAL3jQ*q32Q4Iimv31m*J`^Te`v;53JBFCBUv z`%Ld{)7lmh&jxfS1%6zPm5btl*z*ar!j}r=Ko+Go5XK^m1>?#`%9!=yp7Mc|R>}=& zx58m%`7?{eI13ii%rLB&zFQA3a-u&#`vE~%+HKGCh-xu`?^TbwGhhTVuZn4XNuK94 z;<`(^%c31v=C;mp=)^p=xxF--O*)+pVHlQm0vpA$<*QbTFbuap)&P)xtS$>8O&I&6 zgPbhQtHKS7XB|q5N2U6MAVf-8dHyLyUTmm-V=OZB2&d=p#>uFkaIy8d5_o^5JC_J(Z=RG=Sb6xG$|NX ztX`2Dd{ZNAPoSC|g3c7RPMgWSSCZa;6SlBOsc33LQ4aB-073!79Hc4#z+4Jc7-Fp9 z;OD#CcSo1Yo<2@`X+~a)D1r(EQsP;GvZdNDHGsp~YSw@(!$B*nG_j4%zVy{nZsl zxg(z5N#Oe^rSQFyHPq_>kR<`t@Auaqq5EF~Kt2j-m9=p%Y<8ln!q_KT2Z4oQzkFP) zF_uS?f{;=Yh4IGb1Eg6w@nhIe>8^|z4a;EJR8brS0wwun-|LA~~Gd)&T`mA+_4Eiaf zQAVDY51}-LDG8sdQ>iTBvKvJw>(#uru-K}sE6WW@nll)d0Qks}Qy6RU!dS{D1AeX^^bhS>O3P z=iPIu{no9z`_kRF7jHm&Y%pVHg2Bv;Jux%bVb54Igo%ma zgD1i!kVbYmkg*jAkPWhADL?`wdQq$QyVSjPm)bKcmv=kMd^qRL%DR2KTMHlj!4;8_ zdGltzS(WEG&v};r^Z$ooL@3=tSz*B%tTrfXFiKBSJ5|?oTkW8?_6(tvRJB6KGjwO? zY5Ckgj$_g+BTG|?vZN>qlu|@dMC<{tfs`vi|GP4PX7qdUc>Bk@-HfcA(CWlsp}#w( zDr!dkf?~dQ3?TB(bN^u&k;E?_)^xjHGai-<`wli{tf3lL*q5$R-?dH|X$HC^N?Sx( zmx6@8R;;YvL;J*ef+xO06e;GUq!SpVf!H{n=t=-+qO?sISlUYqbVg&wWyS9GilkSQ zes92DI--tZT0w{k0u+H4cawwxC;>`}$$fyBD1<33uwGnZI8m?k>r$Oo=vbpgh?XHX2oN$vYVBy=g!YObuCl1DAv6M^1iCilW6NMz@kdu~5=0>@ zGaW`o(rUNexEg{`254i+ivlSmO6f@eXRKj78WBZtbz|*fxVyJU92hDaIZnbnCyrxU ztrl?{qm*iPsplLH98a>(2GS&1_^yrskN-adz&ds-5oo;r3*a<`C7CMXv?))C^ z=X7S$Lj+I=NaAFY>K(%38N+ZerpVpSAMWQ=rQ7{QSs|Y9fyl5XAk4ZH`4Cmt$T%Td zSiu528#hqf7tt0+^{x`MC`baBNkCetEr@zdoQ5pUb?MH|v$3&3mBlR0b%=&JdxhcV zjR>a0gkK{JL((MS#EBF9 zz{3yoBOm@S_uqG)tER@z!{m8RT{(P&vG(|P8v}%I`srg2FCU+MY<9No`uMR6JOT+b z^BLn&huzHqxySP-Sws-TPJj0fi|_LNg2DcfVqCG`&)MG_GuY3m>YAdg$Y0#1y*-Bc z1QEvAIH6WGdA~qj6Z7~Sq#G!-Gu2>|MLTFezx{56K$`n3Q0@QUWDVv1gobk z?Y1S5FdWs~x+>UQ-{*z3ZJz#TkMnE4{_C7Paf1Km=YO6LJ^Cn_#}YI(0c-8bcWeO7 z?mu$6^Q&|7UWGezgC7pr1MP0g{E|b$)Rmj)sY>Nau4zm><@TFYZ#)_?8kG$8at8e| zZ)#(BwTT(Wng$K0Q7l42>weXhUoIK$p8R^RyjbUTY!EzrgdQjD}kOSjXth1>*a zE9nFpQBNk)u?DKEYv>Dikp`0aPDYkQ%(X&JuPkwWYmaM%q}A!NFh9>Y&#CL0s~b6& zZ)m!yWxnOKgE~<_fCMY4Oo$9(_Ef-5f5frGa(ZPIl@I9W3Kez9(v&a=(MD4i1yxnk z+uh^x<;z^UbeXa&IrWx^w|!s6U2h3E`#Lyz#xg%+Xo;FOniR_rNlw7tDCF9jRSc4|0m4L$}j$#TQ@G$nzYd zYnFnHERHz3xIkeg?d21gXx4T6!jQ5k`QjJ<6YJO3>7I&s_y4@i-QOS4l{F_iIVUCt)wei(Q03#Z#3I;(t(j3Vu&UVM_#1T;|=EJ`+&+}haeCZ$b`RBj+n>_vW z)BNN|Kf3yD8$iSO@xYHP|Mi6tW8qRi0F>C%Ct|ax;FekYWy#KN;(z z?wtPK*pEb8HotV8>dWiQT0KlYk_S z==J)1_IE$aPJfrXe`cNserArlj~AS651307wGmtyWUlH67<<5*EDh);tMWjB{VHU) zh_DD|V#R!-n6rxXT?yHRRi66ieg6Ctf6m&qYZrd;mwxH(*4jV)c07P+FGcNz)y{v{ zxc(&dqg)6New1Lf8|o~Tx%%*{K?Ov@lMV?a@ zId`A!aQ5^Alp3D-=5+?8qP=p2S{rWN+Tb()?spj#LmvFqeINB;1)d72D zgs~ImIA36DCdwVq#!U4ajDNl%*w`yVcJhc&S{Boqcbx7~{OlsFdov#YpKeCLXM_+R zvDW_aw`u_4eUB}FWPY)Iw$sVTGB=?rg#hECZ0lLOs!~zpHTk$?JScrm@3H!YLMiRg zy2@ahhDGdje$sZtgFpW|ZvN3#@@Mvlu|$B4Tr)=*NEB3PDlsOkYpe|^ZGu5ENG+p| zz$787*DGdgOC+5aNRt>F2$U%?zC#xZ=T6nA&#mIjvu4Hy@3${QQAhOiY!SO?)CWW z@BTi+a>N7wM?I(p0@3PijeN_W!BLBIS)_>dWX3q5|k)OPE)@Y4I z*BY&?CpOd*9-n69sjdz@gOh6wXtiQD36w=-t(Y(kSUlS0=v$7keXYmFe_Chz@g2s4 ziX?)hhOl(QZiN7QDxx~xfzz`jt6j$nAOvMu@q905;cI&=uIEI;&<-`Vswj;?`+|^C zu2~~3j4ofJIJwOH>}*i%1CPCMKPupUkHe$ArO{O zxcYTb{WJT-@9Hr8M`!G%|84E88JkZF zA>LuFtzOLo1aJ7sm3Pf8v>tG--)Z?s?{AD|f(0~2`!TEoV2GS3e+iUw|3ACXrahC8 zwqjB*5D~@!Q6#99A*&Kv?S%OgGYlUq*}u|b@Z285?VK=@1b5AlU05KSbNmBwLp~V< zt^re2?9UeLbu-pJzs~%nAv$)Asc`{XL1;0OzqD#M|KICx#qbH>uieoAnwo!iIsIGhPUc9SBR4ZYp>k__-aZXS{ur;Vxd%y`u)TL_1m@Q5t2laB#9lL zKoq;*$EBMNc2yLWn+mqjd+#ZB{{1z?)iG%p5M~Nl*J$msiPC?$MF9PaYlQP%?mD$h z8bx%nh`UZKqpje@i{IeZ(G})B;-;?a$-K2vioyOqH*VZOZCycx?)y<%GuLggIShE| z(j_jwbdltNF8BRJmmj@njX@P1obi6wW37{sw}3zA?bL$5eDS9q`{!e6I6s@SHIBJC zO3=o~3l?7LwK+34=AoaO=a2uSWAmqmj|m}u&|3SsJ9z+k*LxOD&Mmaw+sYh-YJ&Oq zga!hz(&6kKctcT^8X*N~D<%vj!+yc}`&a4Aq_nzD!8`N|=RC&2D3}}C@Y*=Frmkvg zA1qo=BgRkDiJiAA+(q`0^)PbN1B&uJd zo*Fplw>7Lidzpo~4$Iw`GsjL4br;xOdkNF4xwW~;(vc&ie)Ost*c^^VY;0_BYkiFw zSptG~Xqa1G;No^p8D%{6#GjyrVfB|z^VqqYlscHu1sMlDbofC)doM7Vov;FBOKihW z-z>JTYDtk05<5fjnL(`uv#BNua;^)mHD z?><8WWZLlz<>QL}{s?oXMftC9A!# zx!GA)gHKbG*7SNkwsv+XH(p{!3YKS5viW7Mt>0jGSa7qKv%bDg{4-~G|C{|)0^-Sg!J>sAl5nP* zbID}vm!Ufj5bTU1-ud8|n?H4u@xQqGe&BV$*TdT@f1SDHM>4O)j9Bm&ps+m zRcUmsu*S^+y5l8sE$Jj6P8}p%1cJI&jD{sq9I$CD#n}w~%@GK=_WV_zUY%!WX`UmS zyS)D1^W1x8g|A#*V|#m><>h6vR?9=bVKf@CdFuvqW}mai7m1UE=U#e&7dHmn&~3i< z=TE>)#L2(f=8+SZ=vC3g?JEO?l2ehsxNSTJDr=aJ?&Dnc-YFwFa0FZGMM|ZKgm^i= z-oO4-x8Nn+VpxY*1j9Pyc#?De2WRa!J{<}6>%RwlWZDDBd)~iruGNX}i(|)775Iq6 zG^kmh2gtxr^!mQPH4Y+m?9_q_?!wR!MK_!Q-y&SxT2BFK4wN&>(%}y4T1~iv4=7d* zLb~Bo5X>!hNLx-xw9}z-y4;esbHGZG#^!f2>gqv^E)~jV0AA`t)fe?vnXHH4KIhTKU z=ih19A0mk~W-=FFmWnd3DD#SZTsqmbszz&1xh~znX`{i{oynM;ZxbhxBcF;x!oW=| z8*M3ziv8XQQ(4AoL7GJvDNr8mD=ciTZ*lF|5~q&LP>6_f;~D^6EH`i7ba6nt&0ep^ z^&2->33K*tY_hRmP$^AODF!Cw#Y<}t2rhhYz;d^Ai|LCzxsnvdjnN-s@VV`=GCn(a zg&$*aX`~c)zK%zPMuBB1t5_dqt_q4}r%pKcSG0ZZi$b97Uz;|7AWDL_MN!})>WO%x zTXZK}Dt%OHTzxe#NG%c4^~zm_A`S*d?BRvJeeow;xw@$xI5coEc2mLS*auWQCY3JMNLw*!mbjXQmx?u>gQpx<6T=!0O6pQ!6q7Hxq1Ed3hJ58u zpXMEJI!hWygwhdN#M{sDWWP_^?ot(F?h7^q`43+r?g~!d z<6XJ0?DfhJZ4Qsnz0w|6M*6_+&emeBdySOhRSm$!&VnPYl1sf7AkbRSIuQ`JrL9K# zp>VqS6D8rfK>9P=dQu}jCFZE*6#0~UY>n{r?E+;irop;}?l@=|K$_u&X)j>3bt6=j zn+3@8iqiKKioB%E6;q8B5C@JzHk1?j_#g;euR?38vSvIk7>^1@{hZy+ zA)7b$5dkbdG*AC4J+wKzATNI7CC;8+;llBlqEfV^WGNN2)eS~H$phz4lGH7(ZdMS4 ztem-zBNyJv^67in+TP~>`1t=xvaC3#2axCAGk+$If>t2qr0VCm?96TEDkqg7WBpVwZb(8K zOJG1@T(wX*WnPoEB05J~Bo{J@=iF$y1UgB~$;DantG6i9l!f_> zIxms!lq?ivp{2iZm4(yyapv6juzKN5%q<>qqEA7XVt z334Y{ldIC5zv)!1me}_Z?m4b*Gj& zyF5o6Ndh4NgC4l|6q|ia7$TC0qMfmocX`wDc{($5gi~2gUDseOi*p)~lOv!|0kxI~ z-=%=AT;gw^{sh{pg8|!Sb6{AAPQ2pgetq{toXp;Uu<~W^4MfOqto<|tyM4I6??J2v zNu>m>89@(ZV*p{&iQYFI{8_(12z!`w&}k>RbKf}req#dN}ZITNvD=i*SKgNN~sqtk2nn6qCNRtMVOoXu<~%4U3r3&6A!ceF`Vg zJZ@?VE<3OXY@q&mtYhYswL#Yh@k3SCq^-mSt)8m3-A%FB32kiyQ_IK2r17)0G9np- zbZ1i*=38{q$o(A+!$<8vE@e?u_*s9s`6BCA?`LUokxs|)`y@#+namMQm(QbkN-e0h zIFzW@fq2D5e(idReMOcPgdddEa;kVBrfLxaVO=q*=>^C$KQQ|}ffTc%d7**2c4JW{ za-Fcymo6vN_rBwYZ1jEY!S0`~N65witmhDPznG&>@w$M@k5_r6Fstok+IXTIGDWd& zJrkEUewXS462>M?6e5}!VMFaU>NV&g;Tc0<94kae(w$A1pU-G#v9nQgKxy*Pdw=pgoQ1*a9byENT%l;7uLF6HigYbc+ zyNRjK4gnEm@}VYgu*S{8)wQ5dHE|qbOaMtVVIy{wD-s*vkU?I>3ws;$mls=fjURu0 zdjm1npuGVY)d)q|i9+WzqxLl4-oXy=3SwSGw4t7DNFt@MSR0^KL>$+?@nlijqLrG& z4WW@7o$W9?m(iI`X=m{PzNqg8a~M&wBdjPC>rA2&J<9T(&&-wkZObZZV4 z9(#E4CsK1hvk0TWGmeIn8bHHWggq!L8;@61l`Ah7g`>)AmYO~7eIJbUoV8tK@zwf2AqaiGQPVgPf1A2bGSv^Rn&)vd#U1yZ;M zP#lNEUN6lG13m*nG;a#Zn_VwrcXo@QmK%j`@>nnaH8u#v9S z1|iKP%D2`ME9IzelaSWtWo~V3u)MrXx7+3D(W9hE!v0N5K0Kfy45X#DVhYshrj-gc zLR@ z{fM{DuClz)W?`;HnuG_HHUD={iei58Lv0A-h$vP>Q9viCcgZT{vH@0nVBJC(;5{Pd~+o)514ON&@R*9^?6q!zh?&71`^Tsj3QVEp=V)BhL!>X!PBVkL=Ap%C zfeh?qsN_H;w8;eQfm*272sWPgw>e0gg_eQa@j-(D@U3ZUK`Tv>R}A`Nb~guXZ}i#T z*k^xl%xG9pm9DEOBSDgcM8PXB{sA?robVwAfs?;;h9Ft$57_JV7z_raY09G?_y9lm z3vl_XHTQlX1t|!mWj3j~F$|}U%9lgCn#Z*{Ts6E?DY!OGY5fk@Y0iG@VzgXIlAb-!0W zsu&I2xOqM*{M4~GKxvr?;|b>BwcrX(Mbl{!xbk)&J#SzD+gqC`rLfl0>2&zW5C1SP ze7<7b_b_xLSk4>}R~r``y8AmnR+DJ`mD|BhRR6N;=&8rn)dNP#m4LMssG(u-)qQ~f z&sv+ysp5hG%IE&g?k9UY`ET?GBYOKo`uigWgWSojDTS4mFb+tvkl3G_VyYh5C}A0O zpa5>v)cLLsXjPQblk~57&ib6*G`YR@wSKQ1DW%)}Q52A*@nlrJ2>>kz-USO$Bx!e3 zIx`8KnS`VpVj|6nv`gms178!cGF8HDQqSfVNI{j4r%107e&v^cnendSsehLv0=G~W zIN2RjX-WNBHy^OQmItW6g=>veV6Ao6vw>vy-|q@N&;bABPM}Z&6wm$k&L_{kZ}#5K zO7+fA7P`|-vN(<=M2k@r5JjP15hvt~a`dKwy$t};^aO;fKxriof;H1DzV=6e-}&aY z{C|Rtmy-pE64wHr_5h~AeETdx`f6Vw1z{Xes+wBWEUA=xXBKIv4*4Ws%K+{q{XXS< z1L5RdvMeJA0?wa1$9v!N9{%Xp{*b$WFr%{)q7`%#%|ceQHHu#&kC(3w2=R3Vb$g@6 z9yVI-4MqFHU2&sg>l3#C{w?sr%M8E=gk4?R!Hb{m{R3bbSe`qRJT!YcdE>(A)`i(4 z*=!Prj%+bZ{2qwYcLH}P&HHMh%&_*=L)OwHYHlUhKfVTrG4Ovk!y$JX45@%EUY2c+!VPY^v%h56A2S+w-hpw+I4>BCa>_x;2RXxC^K&e;Q_?7K(6QI}nH*(P z>8YM7SD!e225SsOQ8-$bH06UI_yCVR`Y6BsJD=ujzd7QepXi`{_3y&MkY~0#4D09> z@Bos2HDtTorZ#HA0ce3x1oW#R%1U4Fzq88{LOAAIZvZ==-k^AHEPzj0Yri;g6t@=| zgb)D`0WpvO9bg7n02YCj<~~~tk1w20&(9o7R~AmT=F&8hk*ALjWK)tAhsMdRv8V?B zr!{%Mvc2nt4I*h5Pql-r6?;WcSBq$H1VK|$_T%Vo=%mZcT$?xvF~(Bl72`p{pzp+` z`n?hR{V{{#m}0-=2l8XQWo3oa$L3gCY}0PLDI*!avJn`MNLH1iE^4a0W;7_++a0sB zo3mACJoq>NE~ieOq}6g-hH2`^FYCJI`yY9Pr=EYDAN;3_oOowOUAVy%Z3XN58Mj99 z9XZyubqc6=a`93~0ukJKs8d*w)=s95V#)rW^tt|zuLxV(F9MHD>j{N-aCcgWNe@{0 zTL}z-0k8`k0dC|wYVG>Y@Y(AO=YW~{^Xa*nnT;eN0Y=D!u_NQAK~t$S?05dBoGK~vC5!?Ca{)90cGN;>_MYS*FK|Z23JZ& zT{*GGVD&WZR%_A{ZuE$o#?Zg|b6T@#@+F(Y22lFlUyLdS`vrTwg57>e=e-~04exk(!rL1J0hK3cYGw)l=<}cF zZ~vXY!~UShyMAqnfvj=yhD8Aun%jJBQq^)mGa z6#JWSuo6OV(9)0Wg{m-o^LI9Ho_%EQzN2?_=W3-L<$HKr!A49Wm#nY*D_4&w%8IR* zM#YVG`x~CaxLO5u+-gP?E~X398uA#6Z>t(z*#^f8V%!ZNY|;dZ5|m#2_8J!#0cqBoDg|~$o%tN|9smUMr-Q-8Uu)$zK36Y>95@!ZmlB^wC*|a zw(c9--8cz-OdzG}XImOffWa6?R52dZ)y~E7&fdjxYqU}C`|In4RvQ166GxAH@7dK8 zCl}jUrybF5#k5+kl9?n!n;~UJJj(F4mxWv-iGIS*-6T{8! zH5RL^oXiy%BPQPBV8Ha?URwc?r2l6FHvXUMR5wcj{A=JBthGC@xTfC;BIPzNf$5;J zHMP?dzu>7igv`G#@&*u3ExMiZ1dRct=mp*l0008MNklM zZaC*|=B2OTtjbS_< zv%S5|&0DwZ=H}*;fs~`VuJix+g)bbra`o!H*4pIQBW-){#}-JAhR8H@JV55~q8sab z`O}ldQ;+Mhp}bYG@msgV@J|QUQ^WovYwiE_nrryo7{IF-Md)wIZC;^yUQXS@gCPTV z3>+X2iM_!{Z(P#R%td@z{~ohtD5>=eEfkJU-^s2AODI!J`GOa_ZaYFzz2bug*T)uzPV**?$2nQO^A;~5C>>I z#U}wR{+8D3FWUfK!#KhzBM7FvL312r zQ;TM&*vzBb0>WfL1r3e`2=Ndgs|=Z#y+NbKhJRKd7$pSv|sSTzowkZt}L(wd=&U) z;J8c#K`IG5(#A(3lI0K?J1RO;7>bRWYDWn@)R@9xD+_QD__(j|?f9}j|JfP9x9LTi zO6zozF7Gf<(|8bZTf!7f{a<5H(Uft7Q^see45Kl?#@jTXTTLyzom$N13(WnZVy!K{ z!@v9Wz>fm&22Oep8ccl`&5>3Cmx2EPeA-(3+;{w4|L14`|K(@0308b+9Zgkf_pG(I d{<1#j{|5z7@$@8jMZEw3002ovPDHLkV1mvfO~C*F literal 0 HcmV?d00001 diff --git a/src/images/person-icon.png b/src/images/person-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eb13e464e10968e475acbcf17e73d0c62e3af9cc GIT binary patch literal 28931 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 Z0|3DWjwu1<7AgP$002ovPDHLkV1g*-_~8Hm literal 0 HcmV?d00001 diff --git a/src/images/stats-icon.png b/src/images/stats-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..09b77e84326cd2f9264ecd39837e41994561a5e8 GIT binary patch literal 14263 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 literal 0 HcmV?d00001 diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..4774d97 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,14 @@ +#include +#include "mainwindow.h" +#include "datahandling.h" + + +datahandling* datahandling::m_instance = 0; + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWindow w; + w.show(); + return a.exec(); +} diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp new file mode 100644 index 0000000..9260e8f --- /dev/null +++ b/src/mainwindow.cpp @@ -0,0 +1,41 @@ +#include "mainwindow.h" +#include "ui_mainwindow.h" +#include "newround.h" +#include "pcmanagement.h" + +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainWindow) +{ + ui->setupUi(this); +} + +MainWindow::~MainWindow() +{ + delete ui; +} + +void MainWindow::changeEvent(QEvent *e) +{ + QMainWindow::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } +} + +void MainWindow::on_newRoundButton_clicked() +{ + newround *newRound = new newround(); + newRound->show(); +} + +void MainWindow::on_courseEditorButton_clicked() +{ + PCManagement *pcManagement = new PCManagement(); + pcManagement->show(); + this->hide(); +} diff --git a/src/mainwindow.h b/src/mainwindow.h new file mode 100644 index 0000000..5716aef --- /dev/null +++ b/src/mainwindow.h @@ -0,0 +1,27 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +namespace Ui { + class MainWindow; +} + +class MainWindow : public QMainWindow { + Q_OBJECT +public: + MainWindow(QWidget *parent = 0); + ~MainWindow(); + +protected: + void changeEvent(QEvent *e); + +private: + Ui::MainWindow *ui; + +private slots: + void on_courseEditorButton_clicked(); + void on_newRoundButton_clicked(); +}; + +#endif // MAINWINDOW_H diff --git a/src/mainwindow.ui b/src/mainwindow.ui new file mode 100644 index 0000000..31f09b3 --- /dev/null +++ b/src/mainwindow.ui @@ -0,0 +1,190 @@ + + + MainWindow + + + + 0 + 0 + 800 + 480 + + + + Golf Scorecard + + + + + + + + + 100 + 140 + 128 + 128 + + + + + + + + :/new/images/images/golf-icon.png:/new/images/images/golf-icon.png + + + + 128 + 128 + + + + true + + + + + + 320 + 140 + 128 + 128 + + + + + + + + :/new/images/images/course-icon.png:/new/images/images/course-icon.png + + + + 128 + 128 + + + + true + + + + + + 550 + 140 + 128 + 128 + + + + + + + + :/new/images/images/stats-icon.png:/new/images/images/stats-icon.png + + + + 128 + 128 + + + + true + + + + + + 100 + 280 + 131 + 41 + + + + + 19 + + + + Play! + + + Qt::AlignHCenter|Qt::AlignTop + + + + + + 300 + 280 + 191 + 81 + + + + + 19 + + + + Player & Course Management + + + Qt::AlignHCenter|Qt::AlignTop + + + true + + + + + + 550 + 280 + 131 + 41 + + + + + 19 + + + + Stats + + + Qt::AlignHCenter|Qt::AlignTop + + + + + + + 0 + 0 + 800 + 20 + + + + + + TopToolBarArea + + + false + + + + + + + + + + diff --git a/src/newround.cpp b/src/newround.cpp new file mode 100644 index 0000000..a328717 --- /dev/null +++ b/src/newround.cpp @@ -0,0 +1,269 @@ +#include "newround.h" +#include "ui_newround.h" +#include "datahandling.h" +#include "xmlparser.h" +#include "basicscorecard.h" +#include + +#include + + +newround::newround(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::newround) +{ + ui->setupUi(this); + + ui->comboBox_player2->setHidden(true); + ui->comboBox_player3->setHidden(true); + ui->comboBox_player4->setHidden(true); + + ui->hcp_player2->setHidden(true); + ui->hcp_player3->setHidden(true); + ui->hcp_player4->setHidden(true); + + ui->tee_player2->setHidden(true); + ui->tee_player3->setHidden(true); + ui->tee_player4->setHidden(true); + + datahandling *playerAndCourseData = datahandling::instance(); + xmlparser *Parser = new xmlparser(); + + playerAndCourseData->clearData(); + Parser->loadPlayerXMLFile(); + Parser->loadCourseXMLFile(); + + const QList& players = playerAndCourseData->getPlayers(); + const QList& courses = playerAndCourseData->getCourses(); + + QStringList player_namelist; + + foreach(player plr,players) + { + player_namelist.push_back(plr.m_name); + hcps.push_back(plr.m_hcp); + } + + foreach(course crs, courses) + { + courseNames.push_back(crs.m_name); + courseFiles.push_back(crs.m_file); + } + + ui->comboBox_player1->addItems(player_namelist); + ui->comboBox_player2->addItems(player_namelist); + ui->comboBox_player3->addItems(player_namelist); + ui->comboBox_player4->addItems(player_namelist); + ui->comboBox_course->addItems(courseNames); +} + + + +void newround::on_checkBox_player1_toggled(bool checked) +{ + if(checked) + { + ui->comboBox_player1->setHidden(true); + ui->hcp_player1->setHidden(true); + ui->tee_player1->setHidden(true); + ui->comboBox_player1->setHidden(false); + ui->hcp_player1->setHidden(false); + ui->tee_player1->setHidden(false); + } + if(!checked) + { + ui->comboBox_player1->setHidden(true); + ui->hcp_player1->setHidden(true); + ui->tee_player1->setHidden(true); + ui->comboBox_player1->setHidden(true); + ui->hcp_player1->setHidden(true); + ui->tee_player1->setHidden(true); + } +} + +void newround::on_checkBox_player2_toggled(bool checked) +{ + if(checked) + { + ui->comboBox_player2->setEnabled(true); + ui->hcp_player2->setEnabled(true); + ui->tee_player2->setEnabled(true); + ui->comboBox_player2->setHidden(false); + ui->hcp_player2->setHidden(false); + ui->tee_player2->setHidden(false); + + } + if(!checked) + { + ui->comboBox_player2->setDisabled(true); + ui->hcp_player2->setDisabled(true); + ui->tee_player2->setDisabled(true); + ui->comboBox_player2->setHidden(true); + ui->hcp_player2->setHidden(true); + ui->tee_player2->setHidden(true); + + } +} + +void newround::on_checkBox_player3_toggled(bool checked) +{ + if(checked) + { + ui->comboBox_player3->setEnabled(true); + ui->hcp_player3->setEnabled(true); + ui->tee_player3->setEnabled(true); + ui->comboBox_player3->setHidden(false); + ui->hcp_player3->setHidden(false); + ui->tee_player3->setHidden(false); + + } + if(!checked) + { + ui->comboBox_player3->setDisabled(true); + ui->hcp_player3->setDisabled(true); + ui->tee_player3->setDisabled(true); + ui->comboBox_player3->setHidden(true); + ui->hcp_player3->setHidden(true); + ui->tee_player3->setHidden(true); + + } +} + +void newround::on_checkBox_player4_toggled(bool checked) +{ + if(checked) + { + ui->comboBox_player4->setEnabled(true); + ui->hcp_player4->setEnabled(true); + ui->tee_player4->setEnabled(true); + ui->comboBox_player4->setHidden(false); + ui->hcp_player4->setHidden(false); + ui->tee_player4->setHidden(false); + + } + if(!checked) + { + ui->comboBox_player4->setDisabled(true); + ui->hcp_player4->setDisabled(true); + ui->tee_player4->setDisabled(true); + ui->comboBox_player4->setHidden(true); + ui->hcp_player4->setHidden(true); + ui->tee_player4->setHidden(true); + + } +} + +void newround::on_comboBox_player1_currentIndexChanged(int index) +{ + for(int i = 0; i < hcps.length(); i++) + { + if(index == i) + ui->hcp_player1->setPlainText(hcps[index]); + } +} + +void newround::on_comboBox_player2_currentIndexChanged(int index) +{ + for(int i = 0; i < hcps.length(); i++) + { + if(index == i) + ui->hcp_player2->setPlainText(hcps[index]); + } +} + +void newround::on_comboBox_player3_currentIndexChanged(int index) +{ + for(int i = 0; i < hcps.length(); i++) + { + if(index == i) + ui->hcp_player3->setPlainText(hcps[index]); + } +} + +void newround::on_comboBox_player4_currentIndexChanged(int index) +{ + for(int i = 0; i < hcps.length(); i++) + { + if(index == i) + ui->hcp_player4->setPlainText(hcps[index]); + } +} + +void newround::on_pushButton_continue_clicked() +{ + datahandling *playerAndCourseData = datahandling::instance(); + xmlparser *Parser = new xmlparser(); + int courseIndex; + + courseIndex = ui->comboBox_course->currentIndex(); + playerAndCourseData->selectedCourse = courseFiles[courseIndex]; + + Parser->parseSelectedCourse(); + saveSelectedPlayers(); + playerAndCourseData->calculateHandicaps(); + + BasicScorecard *basicscorecard = new BasicScorecard(); + QMessageBox msgBox; + msgBox.setText("Do you want to start a round?"); + msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); + int ret = msgBox.exec(); + switch (ret) + { + case QMessageBox::Yes: + basicscorecard->show(); + this->hide(); + break; + case QMessageBox::No: + break; + } +} + +void newround::saveSelectedPlayers() +{ + datahandling *playerAndCourseData = datahandling::instance(); + const QList& players = playerAndCourseData->getPlayers(); + QStringList gender; + + playerAndCourseData->selectedPlayers.clear(); + playerAndCourseData->selectedPlayersHcp.clear(); + playerAndCourseData->selectedPlayersTee.clear(); + playerAndCourseData->selectedPlayersGender.clear(); + + foreach(player plr,players) + { + gender.push_back(plr.m_gender); + } + + if(ui->checkBox_player1->isChecked()) + { + playerAndCourseData->selectedPlayers << ui->comboBox_player1->currentText(); + playerAndCourseData->selectedPlayersHcp << ui->hcp_player1->toPlainText(); + playerAndCourseData->selectedPlayersTee << ui->tee_player1->currentText(); + playerAndCourseData->selectedPlayersGender << gender[ui->comboBox_player1->currentIndex()]; + } + if(ui->checkBox_player2->isChecked()) + { + playerAndCourseData->selectedPlayers << ui->comboBox_player2->currentText(); + playerAndCourseData->selectedPlayersHcp << ui->hcp_player2->toPlainText(); + playerAndCourseData->selectedPlayersTee << ui->tee_player2->currentText(); + playerAndCourseData->selectedPlayersGender << gender[ui->comboBox_player2->currentIndex()]; + + } + if(ui->checkBox_player3->isChecked()) + { + playerAndCourseData->selectedPlayers << ui->comboBox_player3->currentText(); + playerAndCourseData->selectedPlayersHcp << ui->hcp_player3->toPlainText(); + playerAndCourseData->selectedPlayersTee << ui->tee_player3->currentText(); + playerAndCourseData->selectedPlayersGender << gender[ui->comboBox_player3->currentIndex()]; + + } + if(ui->checkBox_player4->isChecked()) + { + playerAndCourseData->selectedPlayers << ui->comboBox_player4->currentText(); + playerAndCourseData->selectedPlayersHcp << ui->hcp_player4->toPlainText(); + playerAndCourseData->selectedPlayersTee << ui->tee_player4->currentText(); + playerAndCourseData->selectedPlayersGender << gender[ui->comboBox_player4->currentIndex()]; + + } +} + diff --git a/src/newround.h b/src/newround.h new file mode 100644 index 0000000..56e6699 --- /dev/null +++ b/src/newround.h @@ -0,0 +1,36 @@ +#ifndef NEWROUND_H +#define NEWROUND_H + +#include +#include "datahandling.h" + +namespace Ui { + class newround; +} + +class newround : public QMainWindow +{ + Q_OBJECT +public: + newround(QWidget *parent = 0); + +private: + Ui::newround *ui; + QStringList hcps; + QStringList courseNames; + QStringList courseFiles; + void saveSelectedPlayers(); + +private slots: + void on_pushButton_continue_clicked(); + void on_comboBox_player4_currentIndexChanged(int index); + void on_comboBox_player3_currentIndexChanged(int index); + void on_comboBox_player2_currentIndexChanged(int index); + void on_comboBox_player1_currentIndexChanged(int index); + void on_checkBox_player4_toggled(bool checked); + void on_checkBox_player3_toggled(bool checked); + void on_checkBox_player2_toggled(bool checked); + void on_checkBox_player1_toggled(bool checked); +}; + +#endif // NEWROUND_H diff --git a/src/newround.ui b/src/newround.ui new file mode 100644 index 0000000..62ef7e1 --- /dev/null +++ b/src/newround.ui @@ -0,0 +1,589 @@ + + + newround + + + + 0 + 0 + 800 + 480 + + + + Select Players & Course + + + + + + 0 + 0 + 801 + 441 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + 140 + 0 + 171 + 31 + + + + + 20 + 75 + true + true + + + + PLAYERS + + + + + + 10 + 50 + 121 + 50 + + + + + 20 + + + + + + + true + + + + + + 10 + 110 + 121 + 50 + + + + + 20 + + + + + + + + + + 10 + 170 + 121 + 50 + + + + + 20 + + + + + + + + + + 10 + 230 + 121 + 50 + + + + + 20 + + + + + + + + + true + + + + 140 + 50 + 320 + 50 + + + + + + true + + + + 140 + 110 + 320 + 50 + + + + + + true + + + + 140 + 170 + 320 + 50 + + + + + + true + + + + 140 + 230 + 320 + 50 + + + + + + true + + + + 480 + 50 + 120 + 50 + + + + + 20 + 75 + true + + + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAlwaysOff + + + + + + + + true + + + + 610 + 50 + 180 + 50 + + + + + 22 + 75 + true + + + + + White + + + + + Yellow + + + + + Blue + + + + + Red + + + + + + true + + + + 480 + 110 + 120 + 50 + + + + + 20 + 75 + true + + + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAlwaysOff + + + + + true + + + + 480 + 170 + 120 + 50 + + + + + 20 + 75 + true + + + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAlwaysOff + + + + + true + + + + 480 + 230 + 120 + 50 + + + + + 20 + 75 + true + + + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAlwaysOff + + + + + true + + + + 610 + 110 + 180 + 50 + + + + + 22 + 75 + true + + + + + White + + + + + Yellow + + + + + Blue + + + + + Red + + + + + + true + + + + 610 + 170 + 180 + 50 + + + + + 22 + 75 + true + + + + + White + + + + + Yellow + + + + + Blue + + + + + Red + + + + + + true + + + + 610 + 230 + 180 + 50 + + + + + 22 + 75 + true + + + + + White + + + + + Yellow + + + + + Blue + + + + + Red + + + + + + + 0 + 0 + 171 + 31 + + + + + 20 + 75 + true + true + + + + ACTIVE + + + + + + 480 + 0 + 121 + 31 + + + + + 20 + 75 + true + true + + + + HCP + + + + + + 610 + 0 + 121 + 31 + + + + + 20 + 75 + true + true + + + + TEE + + + + + + 0 + 330 + 240 + 50 + + + + + 20 + 75 + true + false + true + + + + SELECT COURSE: + + + + + true + + + + 240 + 330 + 320 + 50 + + + + + + + 650 + 300 + 141 + 111 + + + + + + + + :/new/images/images/arrow-right-icon.png:/new/images/images/arrow-right-icon.png + + + + 128 + 128 + + + + true + + + + + + + + 0 + 0 + 800 + 20 + + + + + + + + + + diff --git a/src/object_script.golfscorecard.Debug b/src/object_script.golfscorecard.Debug new file mode 100644 index 0000000..0e3c255 --- /dev/null +++ b/src/object_script.golfscorecard.Debug @@ -0,0 +1,18 @@ +INPUT( +./debug\main.o +./debug\mainwindow.o +./debug\newround.o +./debug\xmlparser.o +./debug\datahandling.o +./debug\basicscorecard.o +./debug\pcmanagement.o +./debug\playermanagement.o +./debug\moc_mainwindow.o +./debug\moc_newround.o +./debug\moc_xmlparser.o +./debug\moc_datahandling.o +./debug\moc_basicscorecard.o +./debug\moc_pcmanagement.o +./debug\moc_playermanagement.o +./debug\qrc_resources.o +); diff --git a/src/object_script.golfscorecard.Release b/src/object_script.golfscorecard.Release new file mode 100644 index 0000000..cd8a637 --- /dev/null +++ b/src/object_script.golfscorecard.Release @@ -0,0 +1,18 @@ +INPUT( +./release\main.o +./release\mainwindow.o +./release\newround.o +./release\xmlparser.o +./release\datahandling.o +./release\basicscorecard.o +./release\pcmanagement.o +./release\playermanagement.o +./release\moc_mainwindow.o +./release\moc_newround.o +./release\moc_xmlparser.o +./release\moc_datahandling.o +./release\moc_basicscorecard.o +./release\moc_pcmanagement.o +./release\moc_playermanagement.o +./release\qrc_resources.o +); diff --git a/src/pcmanagement.cpp b/src/pcmanagement.cpp new file mode 100644 index 0000000..dd6943f --- /dev/null +++ b/src/pcmanagement.cpp @@ -0,0 +1,25 @@ +#include "pcmanagement.h" +#include "ui_pcmanagement.h" +#include "mainwindow.h" +#include "playermanagement.h" + +PCManagement::PCManagement(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::PCManagement) +{ + ui->setupUi(this); +} + +void PCManagement::on_prevWindowButton_clicked() +{ + MainWindow *mw = new MainWindow(); + mw->show(); + this->hide(); +} + +void PCManagement::on_addPlayerButton_clicked() +{ + playermanagement *pm = new playermanagement(); + pm->show(); + this->hide(); +} diff --git a/src/pcmanagement.h b/src/pcmanagement.h new file mode 100644 index 0000000..af3f528 --- /dev/null +++ b/src/pcmanagement.h @@ -0,0 +1,25 @@ +#ifndef PCMANAGEMENT_H +#define PCMANAGEMENT_H + +#include + +namespace Ui { + class PCManagement; +} + +class PCManagement : public QMainWindow +{ + Q_OBJECT + +public: + PCManagement(QWidget *parent = 0); + +private: + Ui::PCManagement *ui; + +private slots: + void on_addPlayerButton_clicked(); + void on_prevWindowButton_clicked(); +}; + +#endif // PCMANAGEMENT_H diff --git a/src/pcmanagement.ui b/src/pcmanagement.ui new file mode 100644 index 0000000..57f1577 --- /dev/null +++ b/src/pcmanagement.ui @@ -0,0 +1,246 @@ + + + PCManagement + + + + 0 + 0 + 800 + 480 + + + + Course & Player Management + + + + + + 170 + 30 + 128 + 128 + + + + + + + + :/new/images/images/new-player.png:/new/images/images/new-player.png + + + + 128 + 128 + + + + true + + + + + + 170 + 220 + 128 + 128 + + + + + + + + :/new/images/images/edit-player.png:/new/images/images/edit-player.png + + + + 128 + 128 + + + + true + + + + + + 500 + 30 + 128 + 128 + + + + + + + + :/new/images/images/new-course.png:/new/images/images/new-course.png + + + + 128 + 128 + + + + true + + + + + + 500 + 220 + 128 + 128 + + + + + + + + :/new/images/images/edit-course.png:/new/images/images/edit-course.png + + + + 128 + 128 + + + + true + + + + + + 160 + 170 + 151 + 31 + + + + + 14 + + + + Create Player + + + Qt::AlignHCenter|Qt::AlignTop + + + + + + 160 + 360 + 151 + 31 + + + + + 14 + + + + Edit Player + + + Qt::AlignHCenter|Qt::AlignTop + + + + + + 490 + 170 + 151 + 31 + + + + + 14 + + + + Create Course + + + Qt::AlignHCenter|Qt::AlignTop + + + + + + 490 + 360 + 151 + 31 + + + + + 14 + + + + Edit Course + + + Qt::AlignHCenter|Qt::AlignTop + + + + + + 10 + 360 + 64 + 64 + + + + + + + + :/new/images/images/arrow-left-icon.png:/new/images/images/arrow-left-icon.png + + + + 64 + 64 + + + + true + + + + + + + 0 + 0 + 800 + 20 + + + + + + + + diff --git a/src/player.h b/src/player.h new file mode 100644 index 0000000..8c26984 --- /dev/null +++ b/src/player.h @@ -0,0 +1,17 @@ +#ifndef PLAYER_H +#define PLAYER_H + +#include + +struct player { + player(QString name,QString hcp,QString gender) : + m_name(name),m_hcp(hcp),m_gender(gender) + { + } + + QString m_name; + QString m_hcp; + QString m_gender; +}; + +#endif // PLAYER_H diff --git a/src/playermanagement.cpp b/src/playermanagement.cpp new file mode 100644 index 0000000..a4f002d --- /dev/null +++ b/src/playermanagement.cpp @@ -0,0 +1,121 @@ +#include "playermanagement.h" +#include "ui_playermanagement.h" +#include "pcmanagement.h" + +#include +#include +#include +#include + +#include + +#define N900 + +playermanagement::playermanagement(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::playermanagement) +{ + ui->setupUi(this); + fileName = (QCoreApplication::applicationDirPath() + "/xml/players/playerdata.xml"); + + #ifdef N900 + fileName = "/opt/GolfScorecard/xml/players/playerdata.xml"; + #endif +} + +playermanagement::~playermanagement() +{ + delete ui; +} + +void playermanagement::changeEvent(QEvent *e) +{ + QMainWindow::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } +} + +void playermanagement::on_saveAndContinue_clicked() +{ + if(!ui->fullName->toPlainText().isEmpty() && !ui->hcp->toPlainText().isEmpty()) + { + + if (fileName.isEmpty()){ + QMessageBox::warning(this, tr("Player file"), + tr("EMPTY! Cannot read file.")); + + } + + QFile file(fileName); + + if (!file.open(QFile::ReadOnly | QFile::Text)) { + QMessageBox::warning(this, tr("Player file"), + tr("Cannot read file %1:\n%2.") + .arg(fileName) + .arg(file.errorString())); + + } + + QDomDocument doc("Players"); + + if( !doc.setContent( &file ) ) + { + file.close(); + QMessageBox::warning(this, tr("Parsing failed"), tr("Parsing failed totally")); + } + file.close(); + + file.remove(fileName); + + QDomElement root = doc.documentElement(); + if( root.tagName() != "players" ) + QMessageBox::warning(this, tr("No root found!"), tr("There was no root in XML found!")); + + QDomElement tag = doc.createElement("player"); + tag.setAttribute("name", ui->fullName->toPlainText()); + tag.setAttribute("gender", ui->gender_comboBox->currentText()); + tag.setAttribute("hcp", ui->hcp->toPlainText()); + root.appendChild(tag); + + qDebug() << doc.toString(); + + if (!file.open(QFile::WriteOnly | QFile::Text)) { + QMessageBox::warning(this, tr("Player file"), + tr("Cannot read file %1:\n%2.") + .arg(fileName) + .arg(file.errorString())); + + } + + QTextStream ts( &file ); + ts << doc.toString(); + + file.close(); + + QMessageBox msgBox; + msgBox.setText("Player created!"); + msgBox.exec(); + + PCManagement *pcm = new PCManagement(); + pcm->show(); + this->hide(); + } + else + { + QMessageBox msgBox; + msgBox.setText("You have not filled all fields!"); + msgBox.exec(); + } +} + +void playermanagement::on_prevWindowButton_clicked() +{ + PCManagement *pcm = new PCManagement(); + pcm->show(); + this->hide(); +} diff --git a/src/playermanagement.h b/src/playermanagement.h new file mode 100644 index 0000000..9ab802e --- /dev/null +++ b/src/playermanagement.h @@ -0,0 +1,28 @@ +#ifndef PLAYERMANAGEMENT_H +#define PLAYERMANAGEMENT_H + +#include + +namespace Ui { + class playermanagement; +} + +class playermanagement : public QMainWindow { + Q_OBJECT +public: + playermanagement(QWidget *parent = 0); + ~playermanagement(); + +protected: + void changeEvent(QEvent *e); + +private: + Ui::playermanagement *ui; + QString fileName; + +private slots: + void on_prevWindowButton_clicked(); + void on_saveAndContinue_clicked(); +}; + +#endif // PLAYERMANAGEMENT_H diff --git a/src/playermanagement.ui b/src/playermanagement.ui new file mode 100644 index 0000000..c6ee002 --- /dev/null +++ b/src/playermanagement.ui @@ -0,0 +1,206 @@ + + + playermanagement + + + + 0 + 0 + 800 + 480 + + + + Player Management + + + + + + 0 + 0 + 801 + 441 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + 50 + 130 + 161 + 41 + + + + + 22 + + + + FULL NAME + + + + + + 50 + 190 + 161 + 41 + + + + + 22 + + + + GENDER: + + + + + + 50 + 250 + 161 + 41 + + + + + 22 + + + + HCP: + + + + + + 220 + 120 + 541 + 61 + + + + + 18 + + + + + + + 220 + 240 + 181 + 61 + + + + + 18 + + + + + + + 220 + 190 + 181 + 41 + + + + + Male + + + + + Female + + + + + + + 720 + 360 + 64 + 64 + + + + + + + + :/new/images/images/arrow-right-icon_2.png:/new/images/images/arrow-right-icon_2.png + + + + 64 + 64 + + + + true + + + + + + 10 + 360 + 64 + 64 + + + + + + + + :/new/images/images/arrow-left-icon.png:/new/images/images/arrow-left-icon.png + + + + 64 + 64 + + + + true + + + + + + + + 0 + 0 + 800 + 20 + + + + + + + + + + diff --git a/src/resources.qrc b/src/resources.qrc new file mode 100644 index 0000000..b55db82 --- /dev/null +++ b/src/resources.qrc @@ -0,0 +1,17 @@ + + + images/stats-icon.png + images/course-icon.png + images/golf-icon.png + images/arrow-right-icon.png + images/golf-icon_2.png + images/arrow-down-icon.png + images/arrow-left-icon.png + images/arrow-right-icon_2.png + images/arrow-up-icon.png + images/new-player.png + images/edit-course.png + images/edit-player.png + images/new-course.png + + diff --git a/src/ui_basicscorecard.h b/src/ui_basicscorecard.h new file mode 100644 index 0000000..318c091 --- /dev/null +++ b/src/ui_basicscorecard.h @@ -0,0 +1,656 @@ +/******************************************************************************** +** Form generated from reading UI file 'basicscorecard.ui' +** +** Created: Sun 18. Apr 23:30:11 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_BASICSCORECARD_H +#define UI_BASICSCORECARD_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_BasicScorecard +{ +public: + QWidget *centralWidget; + QFrame *frame_leaderboard; + QLabel *label_leaderboardHeader; + QLabel *label_leaderboardPlayer1; + QLabel *label_leaderboardPlayer2; + QLabel *label_leaderboardPlayer3; + QLabel *label_leaderboardPlayer4; + QLabel *label_leaderboardHeader_2; + QLabel *label_leaderboardHeader_3; + QLabel *label_leaderboardPlayer1_2; + QLabel *label_leaderboardPlayer1_3; + QLabel *label_leaderboardPlayer2_2; + QLabel *label_leaderboardPlayer2_3; + QLabel *label_leaderboardPlayer3_2; + QLabel *label_leaderboardPlayer3_3; + QLabel *label_leaderboardPlayer4_2; + QLabel *label_leaderboardPlayer4_3; + QFrame *frame_icons; + QPushButton *pushButton_prevCourse; + QPushButton *pushButton_nextCourse; + QFrame *frame_courseInformation; + QLabel *label_course; + QFrame *frame_white; + QFrame *frame_yellow; + QLabel *label_white; + QLabel *label_yellow; + QLabel *label_red; + QFrame *frame_red; + QLabel *label_blue; + QFrame *frame_blue; + QLabel *label_par; + QLabel *label_par_const; + QLabel *label_hcp; + QLabel *label_hcp_const; + QPushButton *courseMap; + QLabel *label_player1; + QLabel *label_player2; + QLabel *label_player3; + QLabel *label_player4; + QLabel *label_player1_score; + QLabel *label_player2_score; + QLabel *label_player3_score; + QLabel *label_player4_score; + QPushButton *player1_up; + QPushButton *player1_down; + QPushButton *player2_down; + QPushButton *player3_down; + QPushButton *player4_down; + QPushButton *player2_up; + QPushButton *player3_up; + QPushButton *player4_up; + QMenuBar *menuBar; + QToolBar *mainToolBar; + QStatusBar *statusBar; + + void setupUi(QMainWindow *BasicScorecard) + { + if (BasicScorecard->objectName().isEmpty()) + BasicScorecard->setObjectName(QString::fromUtf8("BasicScorecard")); + BasicScorecard->resize(800, 480); + centralWidget = new QWidget(BasicScorecard); + centralWidget->setObjectName(QString::fromUtf8("centralWidget")); + frame_leaderboard = new QFrame(centralWidget); + frame_leaderboard->setObjectName(QString::fromUtf8("frame_leaderboard")); + frame_leaderboard->setGeometry(QRect(0, 0, 320, 175)); + frame_leaderboard->setStyleSheet(QString::fromUtf8("QFrame#frame_leaderboard\n" +"{\n" +" border: 2px solid;\n" +" border-color: rgb(255, 255, 0);\n" +" \n" +" background-color: rgb(0, 0, 0);\n" +"}")); + frame_leaderboard->setFrameShape(QFrame::StyledPanel); + frame_leaderboard->setFrameShadow(QFrame::Raised); + frame_leaderboard->setLineWidth(1); + frame_leaderboard->setMidLineWidth(0); + label_leaderboardHeader = new QLabel(frame_leaderboard); + label_leaderboardHeader->setObjectName(QString::fromUtf8("label_leaderboardHeader")); + label_leaderboardHeader->setGeometry(QRect(9, 0, 181, 30)); + QFont font; + font.setPointSize(11); + font.setBold(true); + font.setUnderline(true); + font.setWeight(75); + label_leaderboardHeader->setFont(font); + label_leaderboardHeader->setStyleSheet(QString::fromUtf8("QLabel#label_leaderboardHeader\n" +"{\n" +" color: white;\n" +"}")); + label_leaderboardHeader->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter); + label_leaderboardPlayer1 = new QLabel(frame_leaderboard); + label_leaderboardPlayer1->setObjectName(QString::fromUtf8("label_leaderboardPlayer1")); + label_leaderboardPlayer1->setGeometry(QRect(9, 30, 181, 30)); + QFont font1; + font1.setPointSize(11); + font1.setUnderline(false); + label_leaderboardPlayer1->setFont(font1); + label_leaderboardPlayer1->setStyleSheet(QString::fromUtf8("QLabel#label_leaderboardPlayer1\n" +"{\n" +" color: white;\n" +"}")); + label_leaderboardPlayer1->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter); + label_leaderboardPlayer1->setWordWrap(true); + label_leaderboardPlayer2 = new QLabel(frame_leaderboard); + label_leaderboardPlayer2->setObjectName(QString::fromUtf8("label_leaderboardPlayer2")); + label_leaderboardPlayer2->setGeometry(QRect(9, 60, 181, 30)); + label_leaderboardPlayer2->setFont(font1); + label_leaderboardPlayer2->setStyleSheet(QString::fromUtf8("QLabel#label_leaderboardPlayer2\n" +"{\n" +" color: white;\n" +"}")); + label_leaderboardPlayer2->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter); + label_leaderboardPlayer2->setWordWrap(true); + label_leaderboardPlayer3 = new QLabel(frame_leaderboard); + label_leaderboardPlayer3->setObjectName(QString::fromUtf8("label_leaderboardPlayer3")); + label_leaderboardPlayer3->setGeometry(QRect(10, 90, 181, 30)); + label_leaderboardPlayer3->setFont(font1); + label_leaderboardPlayer3->setStyleSheet(QString::fromUtf8("QLabel#label_leaderboardPlayer3\n" +"{\n" +" color: white;\n" +"}")); + label_leaderboardPlayer3->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter); + label_leaderboardPlayer3->setWordWrap(true); + label_leaderboardPlayer4 = new QLabel(frame_leaderboard); + label_leaderboardPlayer4->setObjectName(QString::fromUtf8("label_leaderboardPlayer4")); + label_leaderboardPlayer4->setGeometry(QRect(9, 120, 181, 30)); + label_leaderboardPlayer4->setFont(font1); + label_leaderboardPlayer4->setStyleSheet(QString::fromUtf8("QLabel#label_leaderboardPlayer4\n" +"{\n" +" color: white;\n" +"}")); + label_leaderboardPlayer4->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter); + label_leaderboardPlayer4->setWordWrap(true); + label_leaderboardHeader_2 = new QLabel(frame_leaderboard); + label_leaderboardHeader_2->setObjectName(QString::fromUtf8("label_leaderboardHeader_2")); + label_leaderboardHeader_2->setGeometry(QRect(190, 0, 61, 30)); + label_leaderboardHeader_2->setFont(font); + label_leaderboardHeader_2->setStyleSheet(QString::fromUtf8("QLabel#label_leaderboardHeader_2\n" +"{\n" +" color: white;\n" +"}")); + label_leaderboardHeader_2->setAlignment(Qt::AlignCenter); + label_leaderboardHeader_3 = new QLabel(frame_leaderboard); + label_leaderboardHeader_3->setObjectName(QString::fromUtf8("label_leaderboardHeader_3")); + label_leaderboardHeader_3->setGeometry(QRect(251, 0, 61, 30)); + label_leaderboardHeader_3->setFont(font); + label_leaderboardHeader_3->setStyleSheet(QString::fromUtf8("QLabel#label_leaderboardHeader_3\n" +"{\n" +" color: white;\n" +"}")); + label_leaderboardHeader_3->setAlignment(Qt::AlignCenter); + label_leaderboardPlayer1_2 = new QLabel(frame_leaderboard); + label_leaderboardPlayer1_2->setObjectName(QString::fromUtf8("label_leaderboardPlayer1_2")); + label_leaderboardPlayer1_2->setGeometry(QRect(190, 30, 61, 30)); + label_leaderboardPlayer1_2->setFont(font1); + label_leaderboardPlayer1_2->setStyleSheet(QString::fromUtf8("QLabel#label_leaderboardPlayer1_2\n" +"{\n" +" color: white;\n" +"}")); + label_leaderboardPlayer1_2->setAlignment(Qt::AlignCenter); + label_leaderboardPlayer1_3 = new QLabel(frame_leaderboard); + label_leaderboardPlayer1_3->setObjectName(QString::fromUtf8("label_leaderboardPlayer1_3")); + label_leaderboardPlayer1_3->setGeometry(QRect(250, 30, 61, 30)); + label_leaderboardPlayer1_3->setFont(font1); + label_leaderboardPlayer1_3->setStyleSheet(QString::fromUtf8("QLabel#label_leaderboardPlayer1_3\n" +"{\n" +" color: white;\n" +"}")); + label_leaderboardPlayer1_3->setAlignment(Qt::AlignCenter); + label_leaderboardPlayer2_2 = new QLabel(frame_leaderboard); + label_leaderboardPlayer2_2->setObjectName(QString::fromUtf8("label_leaderboardPlayer2_2")); + label_leaderboardPlayer2_2->setGeometry(QRect(190, 60, 61, 30)); + label_leaderboardPlayer2_2->setFont(font1); + label_leaderboardPlayer2_2->setStyleSheet(QString::fromUtf8("QLabel#label_leaderboardPlayer2_2\n" +"{\n" +" color: white;\n" +"}")); + label_leaderboardPlayer2_2->setAlignment(Qt::AlignCenter); + label_leaderboardPlayer2_3 = new QLabel(frame_leaderboard); + label_leaderboardPlayer2_3->setObjectName(QString::fromUtf8("label_leaderboardPlayer2_3")); + label_leaderboardPlayer2_3->setGeometry(QRect(250, 60, 61, 30)); + label_leaderboardPlayer2_3->setFont(font1); + label_leaderboardPlayer2_3->setStyleSheet(QString::fromUtf8("QLabel#label_leaderboardPlayer2_3\n" +"{\n" +" color: white;\n" +"}")); + label_leaderboardPlayer2_3->setAlignment(Qt::AlignCenter); + label_leaderboardPlayer3_2 = new QLabel(frame_leaderboard); + label_leaderboardPlayer3_2->setObjectName(QString::fromUtf8("label_leaderboardPlayer3_2")); + label_leaderboardPlayer3_2->setGeometry(QRect(190, 90, 61, 30)); + label_leaderboardPlayer3_2->setFont(font1); + label_leaderboardPlayer3_2->setStyleSheet(QString::fromUtf8("QLabel#label_leaderboardPlayer3_2\n" +"{\n" +" color: white;\n" +"}")); + label_leaderboardPlayer3_2->setAlignment(Qt::AlignCenter); + label_leaderboardPlayer3_3 = new QLabel(frame_leaderboard); + label_leaderboardPlayer3_3->setObjectName(QString::fromUtf8("label_leaderboardPlayer3_3")); + label_leaderboardPlayer3_3->setGeometry(QRect(250, 90, 61, 30)); + label_leaderboardPlayer3_3->setFont(font1); + label_leaderboardPlayer3_3->setStyleSheet(QString::fromUtf8("QLabel#label_leaderboardPlayer3_3\n" +"{\n" +" color: white;\n" +"}")); + label_leaderboardPlayer3_3->setAlignment(Qt::AlignCenter); + label_leaderboardPlayer4_2 = new QLabel(frame_leaderboard); + label_leaderboardPlayer4_2->setObjectName(QString::fromUtf8("label_leaderboardPlayer4_2")); + label_leaderboardPlayer4_2->setGeometry(QRect(190, 120, 61, 30)); + label_leaderboardPlayer4_2->setFont(font1); + label_leaderboardPlayer4_2->setStyleSheet(QString::fromUtf8("QLabel#label_leaderboardPlayer4_2\n" +"{\n" +" color: white;\n" +"}")); + label_leaderboardPlayer4_2->setAlignment(Qt::AlignCenter); + label_leaderboardPlayer4_3 = new QLabel(frame_leaderboard); + label_leaderboardPlayer4_3->setObjectName(QString::fromUtf8("label_leaderboardPlayer4_3")); + label_leaderboardPlayer4_3->setGeometry(QRect(250, 120, 61, 30)); + label_leaderboardPlayer4_3->setFont(font1); + label_leaderboardPlayer4_3->setStyleSheet(QString::fromUtf8("QLabel#label_leaderboardPlayer4_3\n" +"{\n" +" color: white;\n" +"}")); + label_leaderboardPlayer4_3->setAlignment(Qt::AlignCenter); + frame_icons = new QFrame(centralWidget); + frame_icons->setObjectName(QString::fromUtf8("frame_icons")); + frame_icons->setGeometry(QRect(0, 349, 800, 71)); + frame_icons->setStyleSheet(QString::fromUtf8("QFrame#frame_icons\n" +"{\n" +" border-color: rgb(255, 255, 0);\n" +" \n" +" background-color: rgb(0, 0, 0);\n" +"\n" +"}")); + frame_icons->setFrameShape(QFrame::StyledPanel); + frame_icons->setFrameShadow(QFrame::Raised); + pushButton_prevCourse = new QPushButton(frame_icons); + pushButton_prevCourse->setObjectName(QString::fromUtf8("pushButton_prevCourse")); + pushButton_prevCourse->setGeometry(QRect(10, 10, 111, 51)); + QIcon icon; + icon.addFile(QString::fromUtf8(":/new/images/images/arrow-left-icon.png"), QSize(), QIcon::Normal, QIcon::On); + pushButton_prevCourse->setIcon(icon); + pushButton_prevCourse->setIconSize(QSize(55, 55)); + pushButton_prevCourse->setFlat(true); + pushButton_nextCourse = new QPushButton(frame_icons); + pushButton_nextCourse->setObjectName(QString::fromUtf8("pushButton_nextCourse")); + pushButton_nextCourse->setGeometry(QRect(680, 10, 111, 51)); + QIcon icon1; + icon1.addFile(QString::fromUtf8(":/new/images/images/arrow-right-icon_2.png"), QSize(), QIcon::Normal, QIcon::On); + pushButton_nextCourse->setIcon(icon1); + pushButton_nextCourse->setIconSize(QSize(55, 55)); + pushButton_nextCourse->setFlat(true); + frame_courseInformation = new QFrame(centralWidget); + frame_courseInformation->setObjectName(QString::fromUtf8("frame_courseInformation")); + frame_courseInformation->setGeometry(QRect(0, 174, 320, 175)); + frame_courseInformation->setStyleSheet(QString::fromUtf8("QFrame#frame_courseInformation\n" +"{\n" +" border: 2px solid;\n" +" border-color: rgb(255, 255, 0);\n" +" \n" +" background-color: rgb(0, 0, 0);\n" +"\n" +"}")); + frame_courseInformation->setFrameShape(QFrame::StyledPanel); + frame_courseInformation->setFrameShadow(QFrame::Raised); + frame_courseInformation->setLineWidth(1); + frame_courseInformation->setMidLineWidth(0); + label_course = new QLabel(frame_courseInformation); + label_course->setObjectName(QString::fromUtf8("label_course")); + label_course->setGeometry(QRect(10, 10, 91, 81)); + QFont font2; + font2.setPointSize(44); + font2.setBold(true); + font2.setWeight(75); + label_course->setFont(font2); + label_course->setStyleSheet(QString::fromUtf8("QLabel#label_course\n" +"{\n" +" color: white;\n" +" border: 2px solid;\n" +" border-color: rgb(255, 255, 255);\n" +" \n" +"}")); + label_course->setAlignment(Qt::AlignCenter); + frame_white = new QFrame(frame_courseInformation); + frame_white->setObjectName(QString::fromUtf8("frame_white")); + frame_white->setGeometry(QRect(110, 10, 61, 21)); + frame_white->setStyleSheet(QString::fromUtf8("QFrame#frame_white\n" +"{\n" +" background-color: rgb(255, 255, 255);\n" +"}")); + frame_white->setFrameShape(QFrame::StyledPanel); + frame_white->setFrameShadow(QFrame::Raised); + frame_yellow = new QFrame(frame_courseInformation); + frame_yellow->setObjectName(QString::fromUtf8("frame_yellow")); + frame_yellow->setGeometry(QRect(110, 40, 61, 21)); + frame_yellow->setStyleSheet(QString::fromUtf8("QFrame#frame_yellow\n" +"{\n" +" \n" +" background-color: rgb(255, 255, 0);\n" +"}")); + frame_yellow->setFrameShape(QFrame::StyledPanel); + frame_yellow->setFrameShadow(QFrame::Raised); + label_white = new QLabel(frame_courseInformation); + label_white->setObjectName(QString::fromUtf8("label_white")); + label_white->setGeometry(QRect(180, 10, 61, 21)); + QFont font3; + font3.setPointSize(13); + font3.setBold(true); + font3.setWeight(75); + label_white->setFont(font3); + label_white->setStyleSheet(QString::fromUtf8("QLabel#label_white\n" +"{\n" +" color: white;\n" +"}")); + label_yellow = new QLabel(frame_courseInformation); + label_yellow->setObjectName(QString::fromUtf8("label_yellow")); + label_yellow->setGeometry(QRect(180, 40, 61, 21)); + label_yellow->setFont(font3); + label_yellow->setStyleSheet(QString::fromUtf8("QLabel#label_yellow\n" +"{\n" +" color: white;\n" +"}")); + label_red = new QLabel(frame_courseInformation); + label_red->setObjectName(QString::fromUtf8("label_red")); + label_red->setGeometry(QRect(180, 100, 61, 21)); + label_red->setFont(font3); + label_red->setStyleSheet(QString::fromUtf8("QLabel#label_red\n" +"{\n" +" color: white;\n" +"}")); + frame_red = new QFrame(frame_courseInformation); + frame_red->setObjectName(QString::fromUtf8("frame_red")); + frame_red->setGeometry(QRect(110, 100, 61, 21)); + frame_red->setStyleSheet(QString::fromUtf8("QFrame#frame_red\n" +"{\n" +" \n" +" background-color: rgb(255, 0, 0);\n" +"}")); + frame_red->setFrameShape(QFrame::StyledPanel); + frame_red->setFrameShadow(QFrame::Raised); + label_blue = new QLabel(frame_courseInformation); + label_blue->setObjectName(QString::fromUtf8("label_blue")); + label_blue->setGeometry(QRect(180, 70, 61, 21)); + label_blue->setFont(font3); + label_blue->setStyleSheet(QString::fromUtf8("QLabel#label_blue\n" +"{\n" +" color: white;\n" +"}")); + frame_blue = new QFrame(frame_courseInformation); + frame_blue->setObjectName(QString::fromUtf8("frame_blue")); + frame_blue->setGeometry(QRect(110, 70, 61, 21)); + frame_blue->setStyleSheet(QString::fromUtf8("QFrame#frame_blue\n" +"{\n" +" \n" +" background-color: rgb(0, 0, 255);\n" +"}")); + frame_blue->setFrameShape(QFrame::StyledPanel); + frame_blue->setFrameShadow(QFrame::Raised); + label_par = new QLabel(frame_courseInformation); + label_par->setObjectName(QString::fromUtf8("label_par")); + label_par->setGeometry(QRect(70, 100, 41, 21)); + QFont font4; + font4.setPointSize(18); + font4.setBold(true); + font4.setWeight(75); + label_par->setFont(font4); + label_par->setStyleSheet(QString::fromUtf8("QLabel#label_par\n" +"{\n" +" color: white;\n" +"}")); + label_par_const = new QLabel(frame_courseInformation); + label_par_const->setObjectName(QString::fromUtf8("label_par_const")); + label_par_const->setGeometry(QRect(10, 100, 51, 21)); + label_par_const->setFont(font4); + label_par_const->setStyleSheet(QString::fromUtf8("QLabel#label_par_const\n" +"{\n" +" color: white;\n" +"}")); + label_hcp = new QLabel(frame_courseInformation); + label_hcp->setObjectName(QString::fromUtf8("label_hcp")); + label_hcp->setGeometry(QRect(70, 130, 41, 21)); + label_hcp->setFont(font4); + label_hcp->setStyleSheet(QString::fromUtf8("QLabel#label_hcp\n" +"{\n" +" color: white;\n" +"}")); + label_hcp_const = new QLabel(frame_courseInformation); + label_hcp_const->setObjectName(QString::fromUtf8("label_hcp_const")); + label_hcp_const->setGeometry(QRect(10, 130, 51, 21)); + label_hcp_const->setFont(font4); + label_hcp_const->setStyleSheet(QString::fromUtf8("QLabel#label_hcp_const\n" +"{\n" +" color: white;\n" +"}")); + courseMap = new QPushButton(frame_courseInformation); + courseMap->setObjectName(QString::fromUtf8("courseMap")); + courseMap->setGeometry(QRect(230, 20, 81, 61)); + QIcon icon2; + icon2.addFile(QString::fromUtf8(":/new/images/images/golf-icon_2.png"), QSize(), QIcon::Normal, QIcon::On); + courseMap->setIcon(icon2); + courseMap->setIconSize(QSize(80, 80)); + courseMap->setFlat(true); + label_player1 = new QLabel(centralWidget); + label_player1->setObjectName(QString::fromUtf8("label_player1")); + label_player1->setGeometry(QRect(320, 0, 120, 30)); + label_player1->setStyleSheet(QString::fromUtf8("QLabel#label_player1\n" +"{\n" +" border: 2px solid;\n" +" border-color: rgb(255, 255, 0);\n" +" color: white;\n" +" background-color: rgb(0, 0, 0);\n" +"}")); + label_player1->setAlignment(Qt::AlignCenter); + label_player1->setWordWrap(true); + label_player2 = new QLabel(centralWidget); + label_player2->setObjectName(QString::fromUtf8("label_player2")); + label_player2->setGeometry(QRect(440, 0, 120, 30)); + label_player2->setStyleSheet(QString::fromUtf8("QLabel#label_player2\n" +"{\n" +" border: 2px solid;\n" +" border-color: rgb(255, 255, 0);\n" +" color: white;\n" +" background-color: rgb(0, 0, 0);\n" +"}")); + label_player2->setAlignment(Qt::AlignCenter); + label_player2->setWordWrap(true); + label_player3 = new QLabel(centralWidget); + label_player3->setObjectName(QString::fromUtf8("label_player3")); + label_player3->setGeometry(QRect(560, 0, 120, 30)); + label_player3->setStyleSheet(QString::fromUtf8("QLabel#label_player3\n" +"{\n" +" border: 2px solid;\n" +" border-color: rgb(255, 255, 0);\n" +" color: white;\n" +" background-color: rgb(0, 0, 0);\n" +"}")); + label_player3->setAlignment(Qt::AlignCenter); + label_player3->setWordWrap(true); + label_player4 = new QLabel(centralWidget); + label_player4->setObjectName(QString::fromUtf8("label_player4")); + label_player4->setGeometry(QRect(680, 0, 120, 30)); + label_player4->setStyleSheet(QString::fromUtf8("QLabel#label_player4\n" +"{\n" +" border: 2px solid;\n" +" border-color: rgb(255, 255, 0);\n" +" color: white;\n" +" background-color: rgb(0, 0, 0);\n" +"}")); + label_player4->setAlignment(Qt::AlignCenter); + label_player4->setWordWrap(true); + label_player1_score = new QLabel(centralWidget); + label_player1_score->setObjectName(QString::fromUtf8("label_player1_score")); + label_player1_score->setGeometry(QRect(320, 30, 121, 319)); + QFont font5; + font5.setPointSize(45); + label_player1_score->setFont(font5); + label_player1_score->setStyleSheet(QString::fromUtf8("QLabel#label_player1_score\n" +"{\n" +" border: 2px solid;\n" +" border-color: rgb(255, 255, 0);\n" +" color: white;\n" +" background-color: rgb(0, 0, 0);\n" +"}")); + label_player1_score->setAlignment(Qt::AlignCenter); + label_player2_score = new QLabel(centralWidget); + label_player2_score->setObjectName(QString::fromUtf8("label_player2_score")); + label_player2_score->setGeometry(QRect(440, 30, 121, 319)); + label_player2_score->setFont(font5); + label_player2_score->setStyleSheet(QString::fromUtf8("QLabel#label_player2_score\n" +"{\n" +" border: 2px solid;\n" +" border-color: rgb(255, 255, 0);\n" +" color: white;\n" +" background-color: rgb(0, 0, 0);\n" +"}")); + label_player2_score->setAlignment(Qt::AlignCenter); + label_player3_score = new QLabel(centralWidget); + label_player3_score->setObjectName(QString::fromUtf8("label_player3_score")); + label_player3_score->setGeometry(QRect(560, 30, 121, 319)); + label_player3_score->setFont(font5); + label_player3_score->setStyleSheet(QString::fromUtf8("QLabel#label_player3_score\n" +"{\n" +" border: 2px solid;\n" +" border-color: rgb(255, 255, 0);\n" +" color: white;\n" +" background-color: rgb(0, 0, 0);\n" +"}")); + label_player3_score->setAlignment(Qt::AlignCenter); + label_player4_score = new QLabel(centralWidget); + label_player4_score->setObjectName(QString::fromUtf8("label_player4_score")); + label_player4_score->setGeometry(QRect(680, 30, 121, 319)); + label_player4_score->setFont(font5); + label_player4_score->setStyleSheet(QString::fromUtf8("QLabel#label_player4_score\n" +"{\n" +" border: 2px solid;\n" +" border-color: rgb(255, 255, 0);\n" +" color: white;\n" +" background-color: rgb(0, 0, 0);\n" +"}")); + label_player4_score->setAlignment(Qt::AlignCenter); + player1_up = new QPushButton(centralWidget); + player1_up->setObjectName(QString::fromUtf8("player1_up")); + player1_up->setGeometry(QRect(330, 60, 101, 71)); + QIcon icon3; + icon3.addFile(QString::fromUtf8(":/new/images/images/arrow-up-icon.png"), QSize(), QIcon::Normal, QIcon::On); + player1_up->setIcon(icon3); + player1_up->setIconSize(QSize(64, 64)); + player1_up->setFlat(true); + player1_down = new QPushButton(centralWidget); + player1_down->setObjectName(QString::fromUtf8("player1_down")); + player1_down->setGeometry(QRect(330, 250, 101, 71)); + QIcon icon4; + icon4.addFile(QString::fromUtf8(":/new/images/images/arrow-down-icon.png"), QSize(), QIcon::Normal, QIcon::On); + player1_down->setIcon(icon4); + player1_down->setIconSize(QSize(64, 64)); + player1_down->setFlat(true); + player2_down = new QPushButton(centralWidget); + player2_down->setObjectName(QString::fromUtf8("player2_down")); + player2_down->setGeometry(QRect(450, 250, 101, 71)); + player2_down->setIcon(icon4); + player2_down->setIconSize(QSize(64, 64)); + player2_down->setFlat(true); + player3_down = new QPushButton(centralWidget); + player3_down->setObjectName(QString::fromUtf8("player3_down")); + player3_down->setGeometry(QRect(570, 250, 101, 71)); + player3_down->setIcon(icon4); + player3_down->setIconSize(QSize(64, 64)); + player3_down->setFlat(true); + player4_down = new QPushButton(centralWidget); + player4_down->setObjectName(QString::fromUtf8("player4_down")); + player4_down->setGeometry(QRect(690, 250, 101, 71)); + player4_down->setIcon(icon4); + player4_down->setIconSize(QSize(64, 64)); + player4_down->setFlat(true); + player2_up = new QPushButton(centralWidget); + player2_up->setObjectName(QString::fromUtf8("player2_up")); + player2_up->setGeometry(QRect(450, 60, 101, 71)); + player2_up->setIcon(icon3); + player2_up->setIconSize(QSize(64, 64)); + player2_up->setFlat(true); + player3_up = new QPushButton(centralWidget); + player3_up->setObjectName(QString::fromUtf8("player3_up")); + player3_up->setGeometry(QRect(570, 60, 101, 71)); + player3_up->setIcon(icon3); + player3_up->setIconSize(QSize(64, 64)); + player3_up->setFlat(true); + player4_up = new QPushButton(centralWidget); + player4_up->setObjectName(QString::fromUtf8("player4_up")); + player4_up->setGeometry(QRect(690, 60, 101, 71)); + player4_up->setIcon(icon3); + player4_up->setIconSize(QSize(64, 64)); + player4_up->setFlat(true); + BasicScorecard->setCentralWidget(centralWidget); + menuBar = new QMenuBar(BasicScorecard); + menuBar->setObjectName(QString::fromUtf8("menuBar")); + menuBar->setGeometry(QRect(0, 0, 800, 20)); + BasicScorecard->setMenuBar(menuBar); + mainToolBar = new QToolBar(BasicScorecard); + mainToolBar->setObjectName(QString::fromUtf8("mainToolBar")); + BasicScorecard->addToolBar(Qt::TopToolBarArea, mainToolBar); + statusBar = new QStatusBar(BasicScorecard); + statusBar->setObjectName(QString::fromUtf8("statusBar")); + BasicScorecard->setStatusBar(statusBar); + + retranslateUi(BasicScorecard); + + QMetaObject::connectSlotsByName(BasicScorecard); + } // setupUi + + void retranslateUi(QMainWindow *BasicScorecard) + { + BasicScorecard->setWindowTitle(QApplication::translate("BasicScorecard", "BasicScorecard", 0, QApplication::UnicodeUTF8)); + label_leaderboardHeader->setText(QApplication::translate("BasicScorecard", "LEADERBOARD", 0, QApplication::UnicodeUTF8)); + label_leaderboardPlayer1->setText(QApplication::translate("BasicScorecard", "PLAYER 1", 0, QApplication::UnicodeUTF8)); + label_leaderboardPlayer2->setText(QApplication::translate("BasicScorecard", "PLAYER 2", 0, QApplication::UnicodeUTF8)); + label_leaderboardPlayer3->setText(QApplication::translate("BasicScorecard", "PLAYER 3", 0, QApplication::UnicodeUTF8)); + label_leaderboardPlayer4->setText(QApplication::translate("BasicScorecard", "PLAYER 4", 0, QApplication::UnicodeUTF8)); + label_leaderboardHeader_2->setText(QApplication::translate("BasicScorecard", "S", 0, QApplication::UnicodeUTF8)); + label_leaderboardHeader_3->setText(QApplication::translate("BasicScorecard", "HCP", 0, QApplication::UnicodeUTF8)); + label_leaderboardPlayer1_2->setText(QApplication::translate("BasicScorecard", "PAR", 0, QApplication::UnicodeUTF8)); + label_leaderboardPlayer1_3->setText(QApplication::translate("BasicScorecard", "PAR", 0, QApplication::UnicodeUTF8)); + label_leaderboardPlayer2_2->setText(QApplication::translate("BasicScorecard", "PAR", 0, QApplication::UnicodeUTF8)); + label_leaderboardPlayer2_3->setText(QApplication::translate("BasicScorecard", "PAR", 0, QApplication::UnicodeUTF8)); + label_leaderboardPlayer3_2->setText(QApplication::translate("BasicScorecard", "PAR", 0, QApplication::UnicodeUTF8)); + label_leaderboardPlayer3_3->setText(QApplication::translate("BasicScorecard", "PAR", 0, QApplication::UnicodeUTF8)); + label_leaderboardPlayer4_2->setText(QApplication::translate("BasicScorecard", "PAR", 0, QApplication::UnicodeUTF8)); + label_leaderboardPlayer4_3->setText(QApplication::translate("BasicScorecard", "PAR", 0, QApplication::UnicodeUTF8)); + pushButton_prevCourse->setText(QString()); + pushButton_nextCourse->setText(QString()); + label_course->setText(QApplication::translate("BasicScorecard", "1", 0, QApplication::UnicodeUTF8)); + label_white->setText(QApplication::translate("BasicScorecard", "350", 0, QApplication::UnicodeUTF8)); + label_yellow->setText(QApplication::translate("BasicScorecard", "323", 0, QApplication::UnicodeUTF8)); + label_red->setText(QApplication::translate("BasicScorecard", "298", 0, QApplication::UnicodeUTF8)); + label_blue->setText(QApplication::translate("BasicScorecard", "256", 0, QApplication::UnicodeUTF8)); + label_par->setText(QApplication::translate("BasicScorecard", "4", 0, QApplication::UnicodeUTF8)); + label_par_const->setText(QApplication::translate("BasicScorecard", "PAR", 0, QApplication::UnicodeUTF8)); + label_hcp->setText(QApplication::translate("BasicScorecard", "13", 0, QApplication::UnicodeUTF8)); + label_hcp_const->setText(QApplication::translate("BasicScorecard", "HCP", 0, QApplication::UnicodeUTF8)); + courseMap->setText(QString()); + label_player1->setText(QApplication::translate("BasicScorecard", "Player 1", 0, QApplication::UnicodeUTF8)); + label_player2->setText(QApplication::translate("BasicScorecard", "Player 2", 0, QApplication::UnicodeUTF8)); + label_player3->setText(QApplication::translate("BasicScorecard", "Player 3", 0, QApplication::UnicodeUTF8)); + label_player4->setText(QApplication::translate("BasicScorecard", "Player 4", 0, QApplication::UnicodeUTF8)); + label_player1_score->setText(QApplication::translate("BasicScorecard", "0", 0, QApplication::UnicodeUTF8)); + label_player2_score->setText(QApplication::translate("BasicScorecard", "0", 0, QApplication::UnicodeUTF8)); + label_player3_score->setText(QApplication::translate("BasicScorecard", "0", 0, QApplication::UnicodeUTF8)); + label_player4_score->setText(QApplication::translate("BasicScorecard", "0", 0, QApplication::UnicodeUTF8)); + player1_up->setText(QString()); + player1_down->setText(QString()); + player2_down->setText(QString()); + player3_down->setText(QString()); + player4_down->setText(QString()); + player2_up->setText(QString()); + player3_up->setText(QString()); + player4_up->setText(QString()); + } // retranslateUi + +}; + +namespace Ui { + class BasicScorecard: public Ui_BasicScorecard {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_BASICSCORECARD_H diff --git a/src/ui_mainwindow.h b/src/ui_mainwindow.h new file mode 100644 index 0000000..261d050 --- /dev/null +++ b/src/ui_mainwindow.h @@ -0,0 +1,128 @@ +/******************************************************************************** +** Form generated from reading UI file 'mainwindow.ui' +** +** Created: Wed 28. Apr 21:12:42 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_MAINWINDOW_H +#define UI_MAINWINDOW_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_MainWindow +{ +public: + QWidget *centralWidget; + QPushButton *newRoundButton; + QPushButton *courseEditorButton; + QPushButton *statsButton; + QLabel *label; + QLabel *label_2; + QLabel *label_3; + QMenuBar *menuBar; + QToolBar *mainToolBar; + QStatusBar *statusBar; + + void setupUi(QMainWindow *MainWindow) + { + if (MainWindow->objectName().isEmpty()) + MainWindow->setObjectName(QString::fromUtf8("MainWindow")); + MainWindow->resize(800, 480); + MainWindow->setStyleSheet(QString::fromUtf8("")); + centralWidget = new QWidget(MainWindow); + centralWidget->setObjectName(QString::fromUtf8("centralWidget")); + newRoundButton = new QPushButton(centralWidget); + newRoundButton->setObjectName(QString::fromUtf8("newRoundButton")); + newRoundButton->setGeometry(QRect(100, 140, 128, 128)); + QIcon icon; + icon.addFile(QString::fromUtf8(":/new/images/images/golf-icon.png"), QSize(), QIcon::Normal, QIcon::Off); + newRoundButton->setIcon(icon); + newRoundButton->setIconSize(QSize(128, 128)); + newRoundButton->setFlat(true); + courseEditorButton = new QPushButton(centralWidget); + courseEditorButton->setObjectName(QString::fromUtf8("courseEditorButton")); + courseEditorButton->setGeometry(QRect(320, 140, 128, 128)); + QIcon icon1; + icon1.addFile(QString::fromUtf8(":/new/images/images/course-icon.png"), QSize(), QIcon::Normal, QIcon::Off); + courseEditorButton->setIcon(icon1); + courseEditorButton->setIconSize(QSize(128, 128)); + courseEditorButton->setFlat(true); + statsButton = new QPushButton(centralWidget); + statsButton->setObjectName(QString::fromUtf8("statsButton")); + statsButton->setGeometry(QRect(550, 140, 128, 128)); + QIcon icon2; + icon2.addFile(QString::fromUtf8(":/new/images/images/stats-icon.png"), QSize(), QIcon::Normal, QIcon::Off); + statsButton->setIcon(icon2); + statsButton->setIconSize(QSize(128, 128)); + statsButton->setFlat(true); + label = new QLabel(centralWidget); + label->setObjectName(QString::fromUtf8("label")); + label->setGeometry(QRect(100, 280, 131, 41)); + QFont font; + font.setPointSize(19); + label->setFont(font); + label->setAlignment(Qt::AlignHCenter|Qt::AlignTop); + label_2 = new QLabel(centralWidget); + label_2->setObjectName(QString::fromUtf8("label_2")); + label_2->setGeometry(QRect(300, 280, 191, 81)); + label_2->setFont(font); + label_2->setAlignment(Qt::AlignHCenter|Qt::AlignTop); + label_2->setWordWrap(true); + label_3 = new QLabel(centralWidget); + label_3->setObjectName(QString::fromUtf8("label_3")); + label_3->setGeometry(QRect(550, 280, 131, 41)); + label_3->setFont(font); + label_3->setAlignment(Qt::AlignHCenter|Qt::AlignTop); + MainWindow->setCentralWidget(centralWidget); + menuBar = new QMenuBar(MainWindow); + menuBar->setObjectName(QString::fromUtf8("menuBar")); + menuBar->setGeometry(QRect(0, 0, 800, 20)); + MainWindow->setMenuBar(menuBar); + mainToolBar = new QToolBar(MainWindow); + mainToolBar->setObjectName(QString::fromUtf8("mainToolBar")); + MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar); + statusBar = new QStatusBar(MainWindow); + statusBar->setObjectName(QString::fromUtf8("statusBar")); + MainWindow->setStatusBar(statusBar); + + retranslateUi(MainWindow); + + QMetaObject::connectSlotsByName(MainWindow); + } // setupUi + + void retranslateUi(QMainWindow *MainWindow) + { + MainWindow->setWindowTitle(QApplication::translate("MainWindow", "Golf Scorecard", 0, QApplication::UnicodeUTF8)); + newRoundButton->setText(QString()); + courseEditorButton->setText(QString()); + statsButton->setText(QString()); + label->setText(QApplication::translate("MainWindow", "Play!", 0, QApplication::UnicodeUTF8)); + label_2->setText(QApplication::translate("MainWindow", "Player & Course Management", 0, QApplication::UnicodeUTF8)); + label_3->setText(QApplication::translate("MainWindow", "Stats", 0, QApplication::UnicodeUTF8)); + } // retranslateUi + +}; + +namespace Ui { + class MainWindow: public Ui_MainWindow {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_MAINWINDOW_H diff --git a/src/ui_newround.h b/src/ui_newround.h new file mode 100644 index 0000000..ff23433 --- /dev/null +++ b/src/ui_newround.h @@ -0,0 +1,274 @@ +/******************************************************************************** +** Form generated from reading UI file 'newround.ui' +** +** Created: Wed 28. Apr 22:35:27 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_NEWROUND_H +#define UI_NEWROUND_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_newround +{ +public: + QWidget *centralwidget; + QFrame *frame; + QLabel *label_players; + QCheckBox *checkBox_player1; + QCheckBox *checkBox_player2; + QCheckBox *checkBox_player3; + QCheckBox *checkBox_player4; + QComboBox *comboBox_player1; + QComboBox *comboBox_player2; + QComboBox *comboBox_player3; + QComboBox *comboBox_player4; + QPlainTextEdit *hcp_player1; + QComboBox *tee_player1; + QPlainTextEdit *hcp_player2; + QPlainTextEdit *hcp_player3; + QPlainTextEdit *hcp_player4; + QComboBox *tee_player2; + QComboBox *tee_player3; + QComboBox *tee_player4; + QLabel *label_active; + QLabel *label_hcp; + QLabel *label_tee; + QLabel *label_course; + QComboBox *comboBox_course; + QPushButton *pushButton_continue; + QMenuBar *menubar; + QStatusBar *statusbar; + + void setupUi(QMainWindow *newround) + { + if (newround->objectName().isEmpty()) + newround->setObjectName(QString::fromUtf8("newround")); + newround->resize(800, 480); + centralwidget = new QWidget(newround); + centralwidget->setObjectName(QString::fromUtf8("centralwidget")); + frame = new QFrame(centralwidget); + frame->setObjectName(QString::fromUtf8("frame")); + frame->setGeometry(QRect(0, 0, 801, 441)); + frame->setFrameShape(QFrame::StyledPanel); + frame->setFrameShadow(QFrame::Raised); + label_players = new QLabel(frame); + label_players->setObjectName(QString::fromUtf8("label_players")); + label_players->setGeometry(QRect(140, 0, 171, 31)); + QFont font; + font.setPointSize(20); + font.setBold(true); + font.setUnderline(true); + font.setWeight(75); + label_players->setFont(font); + checkBox_player1 = new QCheckBox(frame); + checkBox_player1->setObjectName(QString::fromUtf8("checkBox_player1")); + checkBox_player1->setGeometry(QRect(10, 50, 121, 50)); + QFont font1; + font1.setPointSize(20); + checkBox_player1->setFont(font1); + checkBox_player1->setChecked(true); + checkBox_player2 = new QCheckBox(frame); + checkBox_player2->setObjectName(QString::fromUtf8("checkBox_player2")); + checkBox_player2->setGeometry(QRect(10, 110, 121, 50)); + checkBox_player2->setFont(font1); + checkBox_player3 = new QCheckBox(frame); + checkBox_player3->setObjectName(QString::fromUtf8("checkBox_player3")); + checkBox_player3->setGeometry(QRect(10, 170, 121, 50)); + checkBox_player3->setFont(font1); + checkBox_player4 = new QCheckBox(frame); + checkBox_player4->setObjectName(QString::fromUtf8("checkBox_player4")); + checkBox_player4->setGeometry(QRect(10, 230, 121, 50)); + checkBox_player4->setFont(font1); + comboBox_player1 = new QComboBox(frame); + comboBox_player1->setObjectName(QString::fromUtf8("comboBox_player1")); + comboBox_player1->setEnabled(true); + comboBox_player1->setGeometry(QRect(140, 50, 320, 50)); + comboBox_player2 = new QComboBox(frame); + comboBox_player2->setObjectName(QString::fromUtf8("comboBox_player2")); + comboBox_player2->setEnabled(true); + comboBox_player2->setGeometry(QRect(140, 110, 320, 50)); + comboBox_player3 = new QComboBox(frame); + comboBox_player3->setObjectName(QString::fromUtf8("comboBox_player3")); + comboBox_player3->setEnabled(true); + comboBox_player3->setGeometry(QRect(140, 170, 320, 50)); + comboBox_player4 = new QComboBox(frame); + comboBox_player4->setObjectName(QString::fromUtf8("comboBox_player4")); + comboBox_player4->setEnabled(true); + comboBox_player4->setGeometry(QRect(140, 230, 320, 50)); + hcp_player1 = new QPlainTextEdit(frame); + hcp_player1->setObjectName(QString::fromUtf8("hcp_player1")); + hcp_player1->setEnabled(true); + hcp_player1->setGeometry(QRect(480, 50, 120, 50)); + QFont font2; + font2.setPointSize(20); + font2.setBold(true); + font2.setWeight(75); + hcp_player1->setFont(font2); + hcp_player1->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + hcp_player1->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + tee_player1 = new QComboBox(frame); + tee_player1->setObjectName(QString::fromUtf8("tee_player1")); + tee_player1->setEnabled(true); + tee_player1->setGeometry(QRect(610, 50, 180, 50)); + QFont font3; + font3.setPointSize(22); + font3.setBold(true); + font3.setWeight(75); + tee_player1->setFont(font3); + hcp_player2 = new QPlainTextEdit(frame); + hcp_player2->setObjectName(QString::fromUtf8("hcp_player2")); + hcp_player2->setEnabled(true); + hcp_player2->setGeometry(QRect(480, 110, 120, 50)); + hcp_player2->setFont(font2); + hcp_player2->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + hcp_player2->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + hcp_player3 = new QPlainTextEdit(frame); + hcp_player3->setObjectName(QString::fromUtf8("hcp_player3")); + hcp_player3->setEnabled(true); + hcp_player3->setGeometry(QRect(480, 170, 120, 50)); + hcp_player3->setFont(font2); + hcp_player3->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + hcp_player3->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + hcp_player4 = new QPlainTextEdit(frame); + hcp_player4->setObjectName(QString::fromUtf8("hcp_player4")); + hcp_player4->setEnabled(true); + hcp_player4->setGeometry(QRect(480, 230, 120, 50)); + hcp_player4->setFont(font2); + hcp_player4->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + hcp_player4->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + tee_player2 = new QComboBox(frame); + tee_player2->setObjectName(QString::fromUtf8("tee_player2")); + tee_player2->setEnabled(true); + tee_player2->setGeometry(QRect(610, 110, 180, 50)); + tee_player2->setFont(font3); + tee_player3 = new QComboBox(frame); + tee_player3->setObjectName(QString::fromUtf8("tee_player3")); + tee_player3->setEnabled(true); + tee_player3->setGeometry(QRect(610, 170, 180, 50)); + tee_player3->setFont(font3); + tee_player4 = new QComboBox(frame); + tee_player4->setObjectName(QString::fromUtf8("tee_player4")); + tee_player4->setEnabled(true); + tee_player4->setGeometry(QRect(610, 230, 180, 50)); + tee_player4->setFont(font3); + label_active = new QLabel(frame); + label_active->setObjectName(QString::fromUtf8("label_active")); + label_active->setGeometry(QRect(0, 0, 171, 31)); + label_active->setFont(font); + label_hcp = new QLabel(frame); + label_hcp->setObjectName(QString::fromUtf8("label_hcp")); + label_hcp->setGeometry(QRect(480, 0, 121, 31)); + label_hcp->setFont(font); + label_tee = new QLabel(frame); + label_tee->setObjectName(QString::fromUtf8("label_tee")); + label_tee->setGeometry(QRect(610, 0, 121, 31)); + label_tee->setFont(font); + label_course = new QLabel(frame); + label_course->setObjectName(QString::fromUtf8("label_course")); + label_course->setGeometry(QRect(0, 330, 240, 50)); + QFont font4; + font4.setPointSize(20); + font4.setBold(true); + font4.setUnderline(false); + font4.setWeight(75); + font4.setKerning(true); + label_course->setFont(font4); + comboBox_course = new QComboBox(frame); + comboBox_course->setObjectName(QString::fromUtf8("comboBox_course")); + comboBox_course->setEnabled(true); + comboBox_course->setGeometry(QRect(240, 330, 320, 50)); + pushButton_continue = new QPushButton(frame); + pushButton_continue->setObjectName(QString::fromUtf8("pushButton_continue")); + pushButton_continue->setGeometry(QRect(650, 300, 141, 111)); + QIcon icon; + icon.addFile(QString::fromUtf8(":/new/images/images/arrow-right-icon.png"), QSize(), QIcon::Normal, QIcon::Off); + pushButton_continue->setIcon(icon); + pushButton_continue->setIconSize(QSize(128, 128)); + pushButton_continue->setFlat(true); + newround->setCentralWidget(centralwidget); + menubar = new QMenuBar(newround); + menubar->setObjectName(QString::fromUtf8("menubar")); + menubar->setGeometry(QRect(0, 0, 800, 20)); + newround->setMenuBar(menubar); + statusbar = new QStatusBar(newround); + statusbar->setObjectName(QString::fromUtf8("statusbar")); + newround->setStatusBar(statusbar); + + retranslateUi(newround); + + QMetaObject::connectSlotsByName(newround); + } // setupUi + + void retranslateUi(QMainWindow *newround) + { + newround->setWindowTitle(QApplication::translate("newround", "Select Players & Course", 0, QApplication::UnicodeUTF8)); + label_players->setText(QApplication::translate("newround", "PLAYERS", 0, QApplication::UnicodeUTF8)); + checkBox_player1->setText(QString()); + checkBox_player2->setText(QString()); + checkBox_player3->setText(QString()); + checkBox_player4->setText(QString()); + hcp_player1->setPlainText(QString()); + tee_player1->clear(); + tee_player1->insertItems(0, QStringList() + << QApplication::translate("newround", "White", 0, QApplication::UnicodeUTF8) + << QApplication::translate("newround", "Yellow", 0, QApplication::UnicodeUTF8) + << QApplication::translate("newround", "Blue", 0, QApplication::UnicodeUTF8) + << QApplication::translate("newround", "Red", 0, QApplication::UnicodeUTF8) + ); + tee_player2->clear(); + tee_player2->insertItems(0, QStringList() + << QApplication::translate("newround", "White", 0, QApplication::UnicodeUTF8) + << QApplication::translate("newround", "Yellow", 0, QApplication::UnicodeUTF8) + << QApplication::translate("newround", "Blue", 0, QApplication::UnicodeUTF8) + << QApplication::translate("newround", "Red", 0, QApplication::UnicodeUTF8) + ); + tee_player3->clear(); + tee_player3->insertItems(0, QStringList() + << QApplication::translate("newround", "White", 0, QApplication::UnicodeUTF8) + << QApplication::translate("newround", "Yellow", 0, QApplication::UnicodeUTF8) + << QApplication::translate("newround", "Blue", 0, QApplication::UnicodeUTF8) + << QApplication::translate("newround", "Red", 0, QApplication::UnicodeUTF8) + ); + tee_player4->clear(); + tee_player4->insertItems(0, QStringList() + << QApplication::translate("newround", "White", 0, QApplication::UnicodeUTF8) + << QApplication::translate("newround", "Yellow", 0, QApplication::UnicodeUTF8) + << QApplication::translate("newround", "Blue", 0, QApplication::UnicodeUTF8) + << QApplication::translate("newround", "Red", 0, QApplication::UnicodeUTF8) + ); + label_active->setText(QApplication::translate("newround", "ACTIVE", 0, QApplication::UnicodeUTF8)); + label_hcp->setText(QApplication::translate("newround", "HCP", 0, QApplication::UnicodeUTF8)); + label_tee->setText(QApplication::translate("newround", "TEE", 0, QApplication::UnicodeUTF8)); + label_course->setText(QApplication::translate("newround", "SELECT COURSE:", 0, QApplication::UnicodeUTF8)); + pushButton_continue->setText(QString()); + } // retranslateUi + +}; + +namespace Ui { + class newround: public Ui_newround {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_NEWROUND_H diff --git a/src/ui_pcmanagement.h b/src/ui_pcmanagement.h new file mode 100644 index 0000000..ce08b80 --- /dev/null +++ b/src/ui_pcmanagement.h @@ -0,0 +1,148 @@ +/******************************************************************************** +** Form generated from reading UI file 'pcmanagement.ui' +** +** Created: Thu 29. Apr 00:07:28 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_PCMANAGEMENT_H +#define UI_PCMANAGEMENT_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_PCManagement +{ +public: + QWidget *centralwidget; + QPushButton *addPlayerButton; + QPushButton *editPlayerButton; + QPushButton *addCourseButton; + QPushButton *editCourseButton; + QLabel *label; + QLabel *label_2; + QLabel *label_3; + QLabel *label_4; + QPushButton *prevWindowButton; + QMenuBar *menubar; + QStatusBar *statusbar; + + void setupUi(QMainWindow *PCManagement) + { + if (PCManagement->objectName().isEmpty()) + PCManagement->setObjectName(QString::fromUtf8("PCManagement")); + PCManagement->resize(800, 480); + centralwidget = new QWidget(PCManagement); + centralwidget->setObjectName(QString::fromUtf8("centralwidget")); + addPlayerButton = new QPushButton(centralwidget); + addPlayerButton->setObjectName(QString::fromUtf8("addPlayerButton")); + addPlayerButton->setGeometry(QRect(170, 30, 128, 128)); + QIcon icon; + icon.addFile(QString::fromUtf8(":/new/images/images/new-player.png"), QSize(), QIcon::Normal, QIcon::Off); + addPlayerButton->setIcon(icon); + addPlayerButton->setIconSize(QSize(128, 128)); + addPlayerButton->setFlat(true); + editPlayerButton = new QPushButton(centralwidget); + editPlayerButton->setObjectName(QString::fromUtf8("editPlayerButton")); + editPlayerButton->setGeometry(QRect(170, 220, 128, 128)); + QIcon icon1; + icon1.addFile(QString::fromUtf8(":/new/images/images/edit-player.png"), QSize(), QIcon::Normal, QIcon::Off); + editPlayerButton->setIcon(icon1); + editPlayerButton->setIconSize(QSize(128, 128)); + editPlayerButton->setFlat(true); + addCourseButton = new QPushButton(centralwidget); + addCourseButton->setObjectName(QString::fromUtf8("addCourseButton")); + addCourseButton->setGeometry(QRect(500, 30, 128, 128)); + QIcon icon2; + icon2.addFile(QString::fromUtf8(":/new/images/images/new-course.png"), QSize(), QIcon::Normal, QIcon::Off); + addCourseButton->setIcon(icon2); + addCourseButton->setIconSize(QSize(128, 128)); + addCourseButton->setFlat(true); + editCourseButton = new QPushButton(centralwidget); + editCourseButton->setObjectName(QString::fromUtf8("editCourseButton")); + editCourseButton->setGeometry(QRect(500, 220, 128, 128)); + QIcon icon3; + icon3.addFile(QString::fromUtf8(":/new/images/images/edit-course.png"), QSize(), QIcon::Normal, QIcon::Off); + editCourseButton->setIcon(icon3); + editCourseButton->setIconSize(QSize(128, 128)); + editCourseButton->setFlat(true); + label = new QLabel(centralwidget); + label->setObjectName(QString::fromUtf8("label")); + label->setGeometry(QRect(160, 170, 151, 31)); + QFont font; + font.setPointSize(14); + label->setFont(font); + label->setAlignment(Qt::AlignHCenter|Qt::AlignTop); + label_2 = new QLabel(centralwidget); + label_2->setObjectName(QString::fromUtf8("label_2")); + label_2->setGeometry(QRect(160, 360, 151, 31)); + label_2->setFont(font); + label_2->setAlignment(Qt::AlignHCenter|Qt::AlignTop); + label_3 = new QLabel(centralwidget); + label_3->setObjectName(QString::fromUtf8("label_3")); + label_3->setGeometry(QRect(490, 170, 151, 31)); + label_3->setFont(font); + label_3->setAlignment(Qt::AlignHCenter|Qt::AlignTop); + label_4 = new QLabel(centralwidget); + label_4->setObjectName(QString::fromUtf8("label_4")); + label_4->setGeometry(QRect(490, 360, 151, 31)); + label_4->setFont(font); + label_4->setAlignment(Qt::AlignHCenter|Qt::AlignTop); + prevWindowButton = new QPushButton(centralwidget); + prevWindowButton->setObjectName(QString::fromUtf8("prevWindowButton")); + prevWindowButton->setGeometry(QRect(10, 360, 64, 64)); + QIcon icon4; + icon4.addFile(QString::fromUtf8(":/new/images/images/arrow-left-icon.png"), QSize(), QIcon::Normal, QIcon::Off); + prevWindowButton->setIcon(icon4); + prevWindowButton->setIconSize(QSize(64, 64)); + prevWindowButton->setFlat(true); + PCManagement->setCentralWidget(centralwidget); + menubar = new QMenuBar(PCManagement); + menubar->setObjectName(QString::fromUtf8("menubar")); + menubar->setGeometry(QRect(0, 0, 800, 20)); + PCManagement->setMenuBar(menubar); + statusbar = new QStatusBar(PCManagement); + statusbar->setObjectName(QString::fromUtf8("statusbar")); + PCManagement->setStatusBar(statusbar); + + retranslateUi(PCManagement); + + QMetaObject::connectSlotsByName(PCManagement); + } // setupUi + + void retranslateUi(QMainWindow *PCManagement) + { + PCManagement->setWindowTitle(QApplication::translate("PCManagement", "Course & Player Management", 0, QApplication::UnicodeUTF8)); + addPlayerButton->setText(QString()); + editPlayerButton->setText(QString()); + addCourseButton->setText(QString()); + editCourseButton->setText(QString()); + label->setText(QApplication::translate("PCManagement", "Create Player", 0, QApplication::UnicodeUTF8)); + label_2->setText(QApplication::translate("PCManagement", "Edit Player", 0, QApplication::UnicodeUTF8)); + label_3->setText(QApplication::translate("PCManagement", "Create Course", 0, QApplication::UnicodeUTF8)); + label_4->setText(QApplication::translate("PCManagement", "Edit Course", 0, QApplication::UnicodeUTF8)); + prevWindowButton->setText(QString()); + } // retranslateUi + +}; + +namespace Ui { + class PCManagement: public Ui_PCManagement {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_PCMANAGEMENT_H diff --git a/src/ui_playermanagement.h b/src/ui_playermanagement.h new file mode 100644 index 0000000..78266a7 --- /dev/null +++ b/src/ui_playermanagement.h @@ -0,0 +1,138 @@ +/******************************************************************************** +** Form generated from reading UI file 'playermanagement.ui' +** +** Created: Thu 29. Apr 00:07:28 2010 +** by: Qt User Interface Compiler version 4.6.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_PLAYERMANAGEMENT_H +#define UI_PLAYERMANAGEMENT_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_playermanagement +{ +public: + QWidget *centralwidget; + QFrame *frame; + QLabel *label; + QLabel *label_2; + QLabel *label_3; + QPlainTextEdit *fullName; + QPlainTextEdit *hcp; + QComboBox *gender_comboBox; + QPushButton *saveAndContinue; + QPushButton *prevWindowButton; + QMenuBar *menubar; + QStatusBar *statusbar; + + void setupUi(QMainWindow *playermanagement) + { + if (playermanagement->objectName().isEmpty()) + playermanagement->setObjectName(QString::fromUtf8("playermanagement")); + playermanagement->resize(800, 480); + centralwidget = new QWidget(playermanagement); + centralwidget->setObjectName(QString::fromUtf8("centralwidget")); + frame = new QFrame(centralwidget); + frame->setObjectName(QString::fromUtf8("frame")); + frame->setGeometry(QRect(0, 0, 801, 441)); + frame->setFrameShape(QFrame::StyledPanel); + frame->setFrameShadow(QFrame::Raised); + label = new QLabel(frame); + label->setObjectName(QString::fromUtf8("label")); + label->setGeometry(QRect(50, 130, 161, 41)); + QFont font; + font.setPointSize(22); + label->setFont(font); + label_2 = new QLabel(frame); + label_2->setObjectName(QString::fromUtf8("label_2")); + label_2->setGeometry(QRect(50, 190, 161, 41)); + label_2->setFont(font); + label_3 = new QLabel(frame); + label_3->setObjectName(QString::fromUtf8("label_3")); + label_3->setGeometry(QRect(50, 250, 161, 41)); + label_3->setFont(font); + fullName = new QPlainTextEdit(frame); + fullName->setObjectName(QString::fromUtf8("fullName")); + fullName->setGeometry(QRect(220, 120, 541, 61)); + QFont font1; + font1.setPointSize(18); + fullName->setFont(font1); + hcp = new QPlainTextEdit(frame); + hcp->setObjectName(QString::fromUtf8("hcp")); + hcp->setGeometry(QRect(220, 240, 181, 61)); + hcp->setFont(font1); + gender_comboBox = new QComboBox(frame); + gender_comboBox->setObjectName(QString::fromUtf8("gender_comboBox")); + gender_comboBox->setGeometry(QRect(220, 190, 181, 41)); + saveAndContinue = new QPushButton(frame); + saveAndContinue->setObjectName(QString::fromUtf8("saveAndContinue")); + saveAndContinue->setGeometry(QRect(720, 360, 64, 64)); + QIcon icon; + icon.addFile(QString::fromUtf8(":/new/images/images/arrow-right-icon_2.png"), QSize(), QIcon::Normal, QIcon::Off); + saveAndContinue->setIcon(icon); + saveAndContinue->setIconSize(QSize(64, 64)); + saveAndContinue->setFlat(true); + prevWindowButton = new QPushButton(frame); + prevWindowButton->setObjectName(QString::fromUtf8("prevWindowButton")); + prevWindowButton->setGeometry(QRect(10, 360, 64, 64)); + QIcon icon1; + icon1.addFile(QString::fromUtf8(":/new/images/images/arrow-left-icon.png"), QSize(), QIcon::Normal, QIcon::Off); + prevWindowButton->setIcon(icon1); + prevWindowButton->setIconSize(QSize(64, 64)); + prevWindowButton->setFlat(true); + playermanagement->setCentralWidget(centralwidget); + menubar = new QMenuBar(playermanagement); + menubar->setObjectName(QString::fromUtf8("menubar")); + menubar->setGeometry(QRect(0, 0, 800, 20)); + playermanagement->setMenuBar(menubar); + statusbar = new QStatusBar(playermanagement); + statusbar->setObjectName(QString::fromUtf8("statusbar")); + playermanagement->setStatusBar(statusbar); + + retranslateUi(playermanagement); + + QMetaObject::connectSlotsByName(playermanagement); + } // setupUi + + void retranslateUi(QMainWindow *playermanagement) + { + playermanagement->setWindowTitle(QApplication::translate("playermanagement", "Player Management", 0, QApplication::UnicodeUTF8)); + label->setText(QApplication::translate("playermanagement", "FULL NAME", 0, QApplication::UnicodeUTF8)); + label_2->setText(QApplication::translate("playermanagement", "GENDER:", 0, QApplication::UnicodeUTF8)); + label_3->setText(QApplication::translate("playermanagement", "HCP:", 0, QApplication::UnicodeUTF8)); + gender_comboBox->clear(); + gender_comboBox->insertItems(0, QStringList() + << QApplication::translate("playermanagement", "Male", 0, QApplication::UnicodeUTF8) + << QApplication::translate("playermanagement", "Female", 0, QApplication::UnicodeUTF8) + ); + saveAndContinue->setText(QString()); + prevWindowButton->setText(QString()); + } // retranslateUi + +}; + +namespace Ui { + class playermanagement: public Ui_playermanagement {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_PLAYERMANAGEMENT_H diff --git a/src/xml/courses/coursedata.xml b/src/xml/courses/coursedata.xml new file mode 100644 index 0000000..a6b696c --- /dev/null +++ b/src/xml/courses/coursedata.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/xml/courses/coursedata_example.xml b/src/xml/courses/coursedata_example.xml new file mode 100644 index 0000000..b6d5cae --- /dev/null +++ b/src/xml/courses/coursedata_example.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/xml/courses/sankivaara-sanki.xml b/src/xml/courses/sankivaara-sanki.xml new file mode 100644 index 0000000..89d2346 --- /dev/null +++ b/src/xml/courses/sankivaara-sanki.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/xml/players/playerdata.xml b/src/xml/players/playerdata.xml new file mode 100644 index 0000000..1b8ba82 --- /dev/null +++ b/src/xml/players/playerdata.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/xmlparser.cpp b/src/xmlparser.cpp new file mode 100644 index 0000000..c3944f4 --- /dev/null +++ b/src/xmlparser.cpp @@ -0,0 +1,245 @@ +#include "xmlparser.h" +#include "datahandling.h" + +#include +#include +#include +#include + +#include + +#define N900 + +xmlparser::xmlparser() +{ + fileName = (QCoreApplication::applicationDirPath() + "/xml/players/playerdata.xml"); + fileNameCourses = (QCoreApplication::applicationDirPath() + "/xml/courses/coursedata.xml"); + + #ifdef N900 + fileName = "/opt/GolfScorecard/xml/players/playerdata.xml"; + fileNameCourses = "/opt/GolfScorecard/xml/courses/coursedata.xml"; + #endif +} + +void xmlparser::loadPlayerXMLFile() +{ + datahandling *playerdata = datahandling::instance(); + + if (fileName.isEmpty()){ + QMessageBox::warning(this, tr("Player file"), + tr("EMPTY! Cannot read file.")); + + } + + QFile file(fileName); + + if (!file.open(QFile::ReadOnly | QFile::Text)) { + QMessageBox::warning(this, tr("Player file"), + tr("Cannot read file %1:\n%2.") + .arg(fileName) + .arg(file.errorString())); + + } + + QDomDocument doc("Players"); + + if( !doc.setContent( &file ) ) + { + file.close(); + QMessageBox::warning(this, tr("Parsing failed"), tr("Parsing failed totally")); + } + file.close(); + + QDomElement root = doc.documentElement(); + if( root.tagName() != "players" ) + QMessageBox::warning(this, tr("No root found!"), tr("There was no root in XML found!")); + + QDomElement child = root.firstChildElement("player"); + while (!child.isNull()) + { + playerdata->addPlayer(child.attribute("name",""),child.attribute("hcp",""),child.attribute("gender", "")); + child = child.nextSiblingElement("player"); + } +} + +void xmlparser::loadCourseXMLFile() +{ + datahandling *coursedata = datahandling::instance(); + + if (fileNameCourses.isEmpty()){ + QMessageBox::warning(this, tr("Course file"), + tr("EMPTY! Cannot read file.")); + + } + + QFile file(fileNameCourses); + + if (!file.open(QFile::ReadOnly | QFile::Text)) { + QMessageBox::warning(this, tr("Course file"), + tr("Cannot read file %1:\n%2.") + .arg(fileNameCourses) + .arg(file.errorString())); + + } + + QDomDocument doc("Courses"); + + if( !doc.setContent( &file ) ) + { + file.close(); + QMessageBox::warning(this, tr("Parsing failed"), tr("Parsing failed totally")); + } + file.close(); + + QDomElement root = doc.documentElement(); + if( root.tagName() != "courses" ) + QMessageBox::warning(this, tr("No root found!"), tr("There was no root in XML found!")); + + QDomElement child = root.firstChildElement("course"); + while (!child.isNull()) + { + coursedata->addCourses(child.attribute("name", ""), child.attribute("course_file", "")); + child = child.nextSiblingElement("course"); + } +} + +void xmlparser::parseSelectedCourse() +{ + datahandling *coursedata = datahandling::instance(); + QString selectedCourse = (QCoreApplication::applicationDirPath() + "/xml/courses/" + coursedata->selectedCourse); + + #ifdef N900 + selectedCourse = ("/opt/GolfScorecard/xml/courses/" + coursedata->selectedCourse); + #endif + + if (selectedCourse.isEmpty()){ + QMessageBox::warning(this, tr("Course file"), + tr("EMPTY! Cannot read file.")); + + } + + QFile file(selectedCourse); + + if (!file.open(QFile::ReadOnly | QFile::Text)) { + QMessageBox::warning(this, tr("Course file"), + tr("Cannot read file %1:\n%2.") + .arg(selectedCourse) + .arg(file.errorString())); + } + + QDomDocument doc("Courses"); + + if( !doc.setContent( &file ) ) + { + file.close(); + QMessageBox::warning(this, tr("Parsing failed"), tr("Parsing failed totally")); + } + file.close(); + + QDomElement root = doc.documentElement(); + if( root.tagName() != "courses" ) + QMessageBox::warning(this, tr("No root found!"), tr("There was no root in XML found!")); + + QDomElement course = root.firstChildElement("course"); + QDomElement cr = course.firstChildElement("cr"); + QDomElement male = cr.firstChildElement("male"); + QDomElement female = cr.firstChildElement("female"); + QDomElement slope = course.firstChildElement("slope"); + QDomElement hole = course.firstChildElement("hole"); + + QDomElement white = hole.firstChildElement("white"); + QDomElement yellow = hole.firstChildElement("yellow"); + QDomElement blue = hole.firstChildElement("blue"); + QDomElement red = hole.firstChildElement("red"); + QDomElement green = hole.firstChildElement("green"); + + + + while (!course.isNull()) + { + coursedata->addCourseData(course.attribute("name", ""), course.attribute("par", ""), + course.attribute("latitude", "").toDouble(), course.attribute("longitude", "").toDouble(), + course.attribute("country", ""), course.attribute("city", "")); + while (!cr.isNull()) + { + while (!male.isNull()) + { + coursedata->addCourseCrMale(male.attribute("white", "").toDouble(), male.attribute("yellow", "").toDouble(), + male.attribute("blue", "").toDouble(), male.attribute("red", "").toDouble()); + male = male.nextSiblingElement("male"); + } + + while (!female.isNull()) + { + coursedata->addCourseCrFemale(female.attribute("yellow", "").toDouble(), + female.attribute("blue", "").toDouble(), female.attribute("red", "").toDouble()); + female = female.nextSiblingElement("female"); + } + cr = cr.nextSiblingElement("cr"); + } + + male = slope.firstChildElement("male"); + female = slope.firstChildElement("female"); + + while (!slope.isNull()) + { + while (!male.isNull()) + { + coursedata->addCourseSlopeMale(male.attribute("white", "").toDouble(), male.attribute("yellow", "").toDouble(), + male.attribute("blue", "").toDouble(), male.attribute("red", "").toDouble()); + male = male.nextSiblingElement("male"); + } + + while (!female.isNull()) + { + coursedata->addCourseSlopeFemale(female.attribute("yellow", "").toDouble(), + female.attribute("blue", "").toDouble(), female.attribute("red", "").toDouble()); + female = female.nextSiblingElement("female"); + } + slope = slope.nextSiblingElement("slope"); + } + + while (!hole.isNull()) + { + coursedata->addHoleData(hole.attribute("id", ""), hole.attribute("hcp", ""), + hole.attribute("par", ""), hole.attribute("map_uri", "")); + while (!white.isNull()) + { + coursedata->addWhiteTee(white.attribute("length", ""), + white.attribute("latitude", "").toDouble(), white.attribute("longitude", "").toDouble()); + white = white.nextSiblingElement("white"); + } + while (!yellow.isNull()) + { + coursedata->addYellowTee(yellow.attribute("length", ""), + yellow.attribute("latitude", "").toDouble(), yellow.attribute("longitude", "").toDouble()); + yellow = yellow.nextSiblingElement("yellow"); + } + while (!blue.isNull()) + { + coursedata->addBlueTee(blue.attribute("length", ""), + blue.attribute("latitude", "").toDouble(), blue.attribute("longitude", "").toDouble()); + blue = blue.nextSiblingElement("blue"); + } + while (!red.isNull()) + { + coursedata->addRedTee(red.attribute("length", ""), + red.attribute("latitude", "").toDouble(), red.attribute("longitude", "").toDouble()); + red = red.nextSiblingElement("red"); + } + while (!green.isNull()) + { + coursedata->addGreenInfo(green.attribute("latitude", "").toDouble(), green.attribute("longitude", "").toDouble()); + green = green.nextSiblingElement("green"); + } + + hole = hole.nextSiblingElement("hole"); + white = hole.firstChildElement("white"); + yellow = hole.firstChildElement("yellow"); + blue = hole.firstChildElement("blue"); + red = hole.firstChildElement("red"); + green = hole.firstChildElement("green"); + } + course = course.nextSiblingElement("course"); + } +} diff --git a/src/xmlparser.h b/src/xmlparser.h new file mode 100644 index 0000000..2f13bea --- /dev/null +++ b/src/xmlparser.h @@ -0,0 +1,18 @@ +#ifndef XMLPARSER_H +#define XMLPARSER_H + +#include + +class xmlparser : public QMainWindow +{ + Q_OBJECT +public: + xmlparser(); + void loadPlayerXMLFile(); + void loadCourseXMLFile(); + void parseSelectedCourse(); + QString fileName; + QString fileNameCourses; +}; + +#endif // XMLPARSER_H -- 1.7.9.5