223 Commits

Author SHA1 Message Date
stubbfel
43cfeea2d7 Merge branch 'release/r#119' into develmaster 2013-07-22 15:09:11 +02:00
stubbfel
d17b4b7e33 Merge branch 'feature/#119' into develop 2013-07-22 15:08:41 +02:00
stubbfel
b78250401c finish #119 2013-07-22 14:46:44 +02:00
Christian Fiedler
d167dbfb9e Merge branch 'release/#120' into develmaster 2013-07-22 13:48:53 +02:00
Christian Fiedler
0072df1186 #120 2013-07-22 13:48:05 +02:00
Christian Fiedler
218353393e Merge branch 'hotfix/#118' into develop 2013-07-22 11:46:46 +02:00
Christian Fiedler
de91ac2d76 Merge branch 'hotfix/#118' into develmaster 2013-07-22 11:46:45 +02:00
Christian Fiedler
74224a4fc5 #118 2013-07-22 11:46:22 +02:00
Christian Fiedler
0ceb0584d1 #115 2013-07-19 17:45:16 +02:00
Christian Fiedler
88b664284f #115 2013-07-19 17:42:55 +02:00
Christian Fiedler
92614e7128 Merge branch 'release/#103' into develmaster 2013-07-19 17:18:45 +02:00
Christian Fiedler
9eff5be228 Merge branch 'feature/#103' into develop 2013-07-19 17:17:12 +02:00
Christian Fiedler
9ebeaa8147 const 2013-07-19 17:16:36 +02:00
Christian Fiedler
b9f268d594 #103 and fixes in events and news 2013-07-19 17:15:47 +02:00
stubbfel
7978e27049 Merge branch 'develmaster'
Conflicts:
	Doc/html/annotated.html
	Doc/html/class_campus_app_w_p8_1_1_app-members.html
	Doc/html/class_campus_app_w_p8_1_1_app.html
	Doc/html/class_campus_app_w_p8_1_1_feed_1_1_openinghours_1_1_openinghours_feed-members.html
	Doc/html/class_campus_app_w_p8_1_1_feed_1_1_openinghours_1_1_openinghours_feed.html
	Doc/html/class_campus_app_w_p8_1_1_feed_1_1_openinghours_1_1_openinghours_feed.png
	Doc/html/class_campus_app_w_p8_1_1_localized_strings-members.html
	Doc/html/class_campus_app_w_p8_1_1_localized_strings.html
	Doc/html/class_campus_app_w_p8_1_1_main_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_main_page.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_base_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_base_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_base_view_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_base_view_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_campusmap_1_1_map_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_campusmap_1_1_map_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_campusmap_1_1_map_pin_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_campusmap_1_1_map_pin_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_departments_1_1_chair_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_departments_1_1_chair_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_departments_1_1_department_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_departments_1_1_department_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_departments_1_1_department_view_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_departments_1_1_department_view_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_departments_1_1_faculty_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_departments_1_1_faculty_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_activity-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_activity.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_course-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_course.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_date-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_date.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_lecturer-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_lecturer.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_list-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_list.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_module-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_module.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_page_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_page_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_modul_web_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_modul_web_page.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_mensa_1_1_menu_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_mensa_1_1_menu_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_mensa_1_1_menu_week_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_mensa_1_1_menu_week_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_openinghours_1_1_openinghours_institution_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_openinghours_1_1_openinghours_institution_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_openinghours_1_1_openinghours_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_openinghours_1_1_openinghours_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_utility_1_1_list_picker_item_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_utility_1_1_list_picker_item_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_utility_1_1_url_param_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1_utility_1_1_url_param_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1events__news_1_1_r_s_s_channel_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1events__news_1_1_r_s_s_channel_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1events__news_1_1_r_s_s_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1events__news_1_1_r_s_s_model.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1events__news_1_1_r_s_s_view_model-members.html
	Doc/html/class_campus_app_w_p8_1_1_model_1_1events__news_1_1_r_s_s_view_model.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_campusmap_1_1_campus_map_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_campusmap_1_1_campus_map_page.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_departments_1_1_department_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_departments_1_1_department_page.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_events_1_1_event_index_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_events_1_1_event_index_page.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_events_1_1_event_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_events_1_1_event_page.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_lecture_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_lecture_page.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_modul_web_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_modul_web_page.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_result_detail_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_result_detail_page.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_result_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_result_page.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_results-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_results.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_mensa_1_1_mensa_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_mensa_1_1_mensa_page.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_news_1_1_news_index_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_news_1_1_news_index_page.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_news_1_1_news_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_news_1_1_news_page.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_openinghours_1_1_openinghours_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_openinghours_1_1_openinghours_page.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_openinghours_1_1_openinghours_page.png
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_start_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_start_page.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_webmail_1_1_webmail_page-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1_webmail_1_1_webmail_page.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1news_1_1_r_s_s_item-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1news_1_1_r_s_s_item.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1news_1_1_r_s_s_news_template-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1news_1_1_r_s_s_news_template.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1webmail_1_1_webmail-members.html
	Doc/html/class_campus_app_w_p8_1_1_pages_1_1webmail_1_1_webmail.html
	Doc/html/class_campus_app_w_p8_1_1_resources_1_1_app_resources-members.html
	Doc/html/class_campus_app_w_p8_1_1_resources_1_1_app_resources.html
	Doc/html/class_campus_app_w_p8_1_1_resources_1_1_icons-members.html
	Doc/html/class_campus_app_w_p8_1_1_resources_1_1_icons.html
	Doc/html/class_campus_app_w_p8_1_1_themelized_icons-members.html
	Doc/html/class_campus_app_w_p8_1_1_themelized_icons.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_api_3_01_t_01_4-members.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_api_3_01_t_01_4.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_api_event_handler-members.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_api_event_handler.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_feed_3_01_t_01_4-members.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_feed_3_01_t_01_4.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_feed_3_01_t_01_4.png
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_feed_event_handler-members.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_feed_event_handler.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_http_request-members.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_http_request.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_http_request.png
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_logger-members.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_logger.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_xml_api_3_01_t_01_4-members.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_xml_api_3_01_t_01_4.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_xml_feed_3_01_t_01_4-members.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_xml_feed_3_01_t_01_4.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_xml_feed_3_01_t_01_4.png
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_xml_manager-members.html
	Doc/html/class_campus_app_w_p8_1_1_utility_1_1_xml_manager.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1_page1-members.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1_page1.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1_start_page-members.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1_start_page.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1campusmap_1_1_page1-members.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1campusmap_1_1_page1.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1lecture_1_1_lecture-members.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1lecture_1_1_lecture.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1lecture_1_1_page1-members.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1lecture_1_1_page1.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1mensa_1_1_mensa-members.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1mensa_1_1_mensa.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1mensa_1_1_mensa_page-members.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1mensa_1_1_mensa_page.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1news_1_1_news_page-members.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1news_1_1_news_page.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1news_1_1_r_s_s_news_template-members.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1news_1_1_r_s_s_news_template.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1webmail_1_1_page1-members.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1webmail_1_1_page1.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1webmail_1_1_webmail-members.html
	Doc/html/class_campus_app_w_p8_1_1pages_1_1webmail_1_1_webmail.html
	Doc/html/classes.html
	Doc/html/dir_07d4c02db4037bb0bfdef01a0daf6030.html
	Doc/html/dir_0a0262648802c8fa7405f815eca989e4.html
	Doc/html/dir_1073e9f439c87c111068755896d82c05.html
	Doc/html/dir_13969638f06df799347bce25efcb3a16.html
	Doc/html/dir_21535ccf759c2a522698b0b6a65b0eb5.html
	Doc/html/dir_2a8f810c3f9bbb1cb1ccf83264a53774.html
	Doc/html/dir_2d311ea570d9e1c140e3775582f0c6e6.html
	Doc/html/dir_2d53bace0827e2bf2f77ef9b5661f678.html
	Doc/html/dir_3193f1d6fb141dd24ccdf3ab919c59e1.html
	Doc/html/dir_43c9fdb099d661ab6adf29f06188c90c.html
	Doc/html/dir_4ee4bf09d6a96bb5475eb8efb397b98b.html
	Doc/html/dir_61694d696174b41f9f942e5b19002064.html
	Doc/html/dir_6bacb8829aeb51ed3b0d715b6a3da162.html
	Doc/html/dir_6c1b508c19440a399d17c73bbbf14cb6.html
	Doc/html/dir_6de442f01690ad19364998fec61f3845.html
	Doc/html/dir_7165f1354b38a80f29943ecc19b7740c.html
	Doc/html/dir_7992d2ae2f44549358f6bbac582ef56c.html
	Doc/html/dir_7f12a6abf42a32e793ec2672821d39ef.html
	Doc/html/dir_8cb11b48f8851fbd9a1032c9b3b20f54.html
	Doc/html/dir_8e2bb6ed875431774c2c5ec3d327b5af.html
	Doc/html/dir_8effc334115523b582ac57fdba9e762a.html
	Doc/html/dir_93a662dedef0a167f025fa842da5b025.html
	Doc/html/dir_af3a313bd21a45ca7168411249229c16.html
	Doc/html/dir_b4437153e4904c41e1f33bcad5707ff0.html
	Doc/html/dir_c2e72ee4966602e4b455c4ea040a3c82.html
	Doc/html/dir_c5add0b19063b6242461e8e811903b23.html
	Doc/html/dir_c96c24b29d5f5a7edd4a32cfcf0ce524.html
	Doc/html/dir_ccd35b6bf37d1a47cc7b6a40c3b9a180.html
	Doc/html/dir_d41793d8c394d152b5e09a3e26715b0f.html
	Doc/html/dir_d96a967f964c1de2cbce6cdd2c6f9987.html
	Doc/html/dir_db660fa6ccabfebae5ecfcb91b23cb0b.html
	Doc/html/dir_e01013a89c0db186579be3bde17b6d61.html
	Doc/html/dir_e1864963f19accb1eed35087a40e2ce7.html
	Doc/html/dir_e29671f860be0283b1e43fd2c2c54c8d.html
	Doc/html/dir_e5003b30e146229ea390d69e22496900.html
	Doc/html/dir_e7609f5a50dfa281e7e0cb66859d2aae.html
	Doc/html/dir_e97261cef6f1d192a7010cc49059f2e2.html
	Doc/html/dir_ec3d220e6deb3baaa30cfdec1c46791f.html
	Doc/html/dir_f430e31c3cc30ed9318a1321b6bff73e.html
	Doc/html/dir_f8272e37d6159d9ca7e64f5775e84948.html
	Doc/html/dir_fbd722b3c940652002633e6ed0c44f4f.html
	Doc/html/dir_fd54810065c522d18968f48cf271eca3.html
	Doc/html/dir_fe309a583d11a5902082c112d0275875.html
	Doc/html/functions.html
	Doc/html/functions_0x62.html
	Doc/html/functions_0x63.html
	Doc/html/functions_0x64.html
	Doc/html/functions_0x65.html
	Doc/html/functions_0x66.html
	Doc/html/functions_0x67.html
	Doc/html/functions_0x68.html
	Doc/html/functions_0x69.html
	Doc/html/functions_0x6b.html
	Doc/html/functions_0x6c.html
	Doc/html/functions_0x6d.html
	Doc/html/functions_0x6e.html
	Doc/html/functions_0x6f.html
	Doc/html/functions_0x70.html
	Doc/html/functions_0x72.html
	Doc/html/functions_0x73.html
	Doc/html/functions_0x74.html
	Doc/html/functions_0x75.html
	Doc/html/functions_0x76.html
	Doc/html/functions_0x77.html
	Doc/html/functions_0x78.html
	Doc/html/functions_evnt.html
	Doc/html/functions_func.html
	Doc/html/functions_prop.html
	Doc/html/functions_prop_0x62.html
	Doc/html/functions_prop_0x63.html
	Doc/html/functions_prop_0x64.html
	Doc/html/functions_prop_0x65.html
	Doc/html/functions_prop_0x66.html
	Doc/html/functions_prop_0x67.html
	Doc/html/functions_prop_0x68.html
	Doc/html/functions_prop_0x69.html
	Doc/html/functions_prop_0x6b.html
	Doc/html/functions_prop_0x6c.html
	Doc/html/functions_prop_0x6d.html
	Doc/html/functions_prop_0x6e.html
	Doc/html/functions_prop_0x6f.html
	Doc/html/functions_prop_0x70.html
	Doc/html/functions_prop_0x72.html
	Doc/html/functions_prop_0x73.html
	Doc/html/functions_prop_0x74.html
	Doc/html/functions_prop_0x75.html
	Doc/html/functions_prop_0x76.html
	Doc/html/functions_prop_0x77.html
	Doc/html/hierarchy.html
	Doc/html/index.hhc
	Doc/html/index.hhk
	Doc/html/index.hhp
	Doc/html/index.html
	Doc/html/namespace_campus_app_w_p8.html
	Doc/html/namespace_campus_app_w_p8_1_1_feed.html
	Doc/html/namespace_campus_app_w_p8_1_1_feed_1_1_openinghours.html
	Doc/html/namespace_campus_app_w_p8_1_1_model.html
	Doc/html/namespace_campus_app_w_p8_1_1_model_1_1_campusmap.html
	Doc/html/namespace_campus_app_w_p8_1_1_model_1_1_departments.html
	Doc/html/namespace_campus_app_w_p8_1_1_model_1_1_lecture.html
	Doc/html/namespace_campus_app_w_p8_1_1_model_1_1_mensa.html
	Doc/html/namespace_campus_app_w_p8_1_1_model_1_1_openinghours.html
	Doc/html/namespace_campus_app_w_p8_1_1_model_1_1_utility.html
	Doc/html/namespace_campus_app_w_p8_1_1_model_1_1events__news.html
	Doc/html/namespace_campus_app_w_p8_1_1_pages.html
	Doc/html/namespace_campus_app_w_p8_1_1_pages_1_1_campusmap.html
	Doc/html/namespace_campus_app_w_p8_1_1_pages_1_1_departments.html
	Doc/html/namespace_campus_app_w_p8_1_1_pages_1_1_events.html
	Doc/html/namespace_campus_app_w_p8_1_1_pages_1_1_lecture.html
	Doc/html/namespace_campus_app_w_p8_1_1_pages_1_1_mensa.html
	Doc/html/namespace_campus_app_w_p8_1_1_pages_1_1_news.html
	Doc/html/namespace_campus_app_w_p8_1_1_pages_1_1_openinghours.html
	Doc/html/namespace_campus_app_w_p8_1_1_pages_1_1_webmail.html
	Doc/html/namespace_campus_app_w_p8_1_1_pages_1_1news.html
	Doc/html/namespace_campus_app_w_p8_1_1_pages_1_1webmail.html
	Doc/html/namespace_campus_app_w_p8_1_1_resources.html
	Doc/html/namespace_campus_app_w_p8_1_1_utility.html
	Doc/html/namespace_campus_app_w_p8_1_1pages.html
	Doc/html/namespace_campus_app_w_p8_1_1pages_1_1campusmap.html
	Doc/html/namespace_campus_app_w_p8_1_1pages_1_1lecture.html
	Doc/html/namespace_campus_app_w_p8_1_1pages_1_1mensa.html
	Doc/html/namespace_campus_app_w_p8_1_1pages_1_1news.html
	Doc/html/namespace_campus_app_w_p8_1_1pages_1_1webmail.html
	Doc/html/namespaces.html
	Doc/latex/annotated.tex
	Doc/latex/class_campus_app_w_p8_1_1_app.pdf
	Doc/latex/class_campus_app_w_p8_1_1_app.tex
	Doc/latex/class_campus_app_w_p8_1_1_feed_1_1_departments_1_1_department_favorite_feed.pdf
	Doc/latex/class_campus_app_w_p8_1_1_feed_1_1_link_1_1_common_link_feed.pdf
	Doc/latex/class_campus_app_w_p8_1_1_feed_1_1_openinghours_1_1_openinghours_feed.eps
	Doc/latex/class_campus_app_w_p8_1_1_feed_1_1_openinghours_1_1_openinghours_feed.pdf
	Doc/latex/class_campus_app_w_p8_1_1_feed_1_1_openinghours_1_1_openinghours_feed.tex
	Doc/latex/class_campus_app_w_p8_1_1_feed_1_1_student_council_1_1_student_council_feed.pdf
	Doc/latex/class_campus_app_w_p8_1_1_main_model_3_01_t_01_4.eps
	Doc/latex/class_campus_app_w_p8_1_1_model_1_1_base_view_model.pdf
	Doc/latex/class_campus_app_w_p8_1_1_model_1_1_campusmap_1_1_map_model.tex
	Doc/latex/class_campus_app_w_p8_1_1_model_1_1_campusmap_1_1_map_pin_model.tex
	Doc/latex/class_campus_app_w_p8_1_1_model_1_1_departments_1_1_faculty_model.pdf
	Doc/latex/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_page_model.tex
	Doc/latex/class_campus_app_w_p8_1_1_model_1_1_openinghours_1_1_openinghours_institution_model.tex
	Doc/latex/class_campus_app_w_p8_1_1_model_1_1_openinghours_1_1_openinghours_model.tex
	Doc/latex/class_campus_app_w_p8_1_1_model_1_1_utility_1_1_url_param_model.tex
	Doc/latex/class_campus_app_w_p8_1_1_model_1_1_xml_model_3_01_t_01_4.eps
	Doc/latex/class_campus_app_w_p8_1_1_model_1_1events__news_1_1_r_s_s_channel_model.pdf
	Doc/latex/class_campus_app_w_p8_1_1_model_1_1events__news_1_1_r_s_s_model.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_campusmap_1_1_campus_map_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_campusmap_1_1_campus_map_page.tex
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_departments_1_1_department_favorite_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_departments_1_1_department_info_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_departments_1_1_department_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_events_1_1_event_index_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_events_1_1_event_index_page.tex
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_events_1_1_event_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_lecture_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_lecture_page.tex
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_modul_web_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_modul_web_page.tex
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_result_detail_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_result_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_links_1_1_link_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_mensa_1_1_mensa_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_news_1_1_news_index_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_news_1_1_news_index_page.tex
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_news_1_1_news_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_openinghours_1_1_openinghours_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_openinghours_1_1_openinghours_page.tex
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_start_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_start_page.tex
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_student_council_1_1_student_council_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1_webmail_1_1_webmail_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1_pages_1_1news_1_1_r_s_s_news_template.pdf
	Doc/latex/class_campus_app_w_p8_1_1_resources_1_1_app_resources.tex
	Doc/latex/class_campus_app_w_p8_1_1_resources_1_1_icons.tex
	Doc/latex/class_campus_app_w_p8_1_1_themelized_icons.tex
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_api_3_01_t_01_4.pdf
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_api_3_01_t_01_4.tex
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_api_event_handler.tex
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_http_request.pdf
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_http_request.pdf~HEAD
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_http_request.tex
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_lui_1_1_button_1_1_email_button.pdf
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_lui_1_1_button_1_1_go_to_map_button.pdf
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_lui_1_1_button_1_1_link_button.pdf
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_lui_1_1_button_1_1_phone_button.pdf
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_lui_1_1_button_1_1_toggle_button.pdf
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_xml_api_3_01_t_01_4.pdf
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_xml_api_3_01_t_01_4.tex
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_xml_feed_3_01_t_01_4.pdf
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_xml_feed_3_01_t_01_4.tex
	Doc/latex/class_campus_app_w_p8_1_1_utility_1_1_xml_manager.tex
	Doc/latex/class_campus_app_w_p8_1_1pages_1_1campusmap_1_1_page1.pdf
	Doc/latex/class_campus_app_w_p8_1_1pages_1_1lecture_1_1_lecture.pdf
	Doc/latex/class_campus_app_w_p8_1_1pages_1_1lecture_1_1_page1.pdf
	Doc/latex/class_campus_app_w_p8_1_1pages_1_1mensa_1_1_mensa_page.pdf
	Doc/latex/class_campus_app_w_p8_1_1pages_1_1webmail_1_1_webmail.pdf
	Doc/latex/dir_1073e9f439c87c111068755896d82c05.tex
	Doc/latex/dir_2a8f810c3f9bbb1cb1ccf83264a53774.tex
	Doc/latex/dir_2d311ea570d9e1c140e3775582f0c6e6.tex
	Doc/latex/dir_4ee4bf09d6a96bb5475eb8efb397b98b.tex
	Doc/latex/dir_6bacb8829aeb51ed3b0d715b6a3da162.tex
	Doc/latex/dir_6c1b508c19440a399d17c73bbbf14cb6.tex
	Doc/latex/dir_7992d2ae2f44549358f6bbac582ef56c.tex
	Doc/latex/dir_7f12a6abf42a32e793ec2672821d39ef.tex
	Doc/latex/dir_8effc334115523b582ac57fdba9e762a.tex
	Doc/latex/dir_af3a313bd21a45ca7168411249229c16.tex
	Doc/latex/dir_c2e72ee4966602e4b455c4ea040a3c82.tex
	Doc/latex/dir_ec3d220e6deb3baaa30cfdec1c46791f.tex
	Doc/latex/dir_f8272e37d6159d9ca7e64f5775e84948.tex
	Doc/latex/hierarchy.tex
	Doc/latex/namespace_campus_app_w_p8.tex
	Doc/latex/namespace_campus_app_w_p8_1_1_feed.tex
	Doc/latex/namespace_campus_app_w_p8_1_1_model.tex
	Doc/latex/namespace_campus_app_w_p8_1_1_model_1_1_lecture.tex
	Doc/latex/namespace_campus_app_w_p8_1_1_pages.tex
	Doc/latex/namespace_campus_app_w_p8_1_1_pages_1_1_lecture.tex
	Doc/latex/namespace_campus_app_w_p8_1_1_utility.tex
	Doc/latex/namespaces.tex
	Doc/latex/refman.tex
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Api_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Api_Lecture_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Feed_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Feed_Departments_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Feed_Events_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Feed_Mensa_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Feed_News_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Feed_Openinghours_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Model_Campusmap_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Model_Events_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Model_Lecture_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Model_Openinghours_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Model_Utility_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Pages_Events_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Pages_Openinghours_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Properties_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Resources_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_Utility_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_model_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_model_departments_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_model_mensa_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_obj_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_obj_Debug_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_obj_Debug_Model_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_obj_Debug_Model_Lecture_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_obj_Debug_pages_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_obj_Debug_pages_campusmap_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_obj_Debug_pages_departments_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_obj_Debug_pages_events_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_obj_Debug_pages_lecture_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_obj_Debug_pages_lecturepage_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_obj_Debug_pages_mensa_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_obj_Debug_pages_news_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_obj_Debug_pages_webmail_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_pages_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_pages_campusmap_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_pages_departments_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_pages_lecture_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_pages_mensa_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_pages_news_.3
	Doc/man/man3/C__Users_stubbfel_Documents_CampusAppWP8_CampusAppWP8_CampusAppWP8_pages_webmail_.3
	Doc/man/man3/CampusAppWP8.3
	Doc/man/man3/CampusAppWP8_App.3
	Doc/man/man3/CampusAppWP8_Feed.3
	Doc/man/man3/CampusAppWP8_Feed_Openinghours.3
	Doc/man/man3/CampusAppWP8_Feed_Openinghours_OpeninghoursFeed.3
	Doc/man/man3/CampusAppWP8_LocalizedStrings.3
	Doc/man/man3/CampusAppWP8_MainPage.3
	Doc/man/man3/CampusAppWP8_Model_Campusmap.3
	Doc/man/man3/CampusAppWP8_Model_Campusmap_MapModel.3
	Doc/man/man3/CampusAppWP8_Model_Campusmap_MapPinModel.3
	Doc/man/man3/CampusAppWP8_Model_Lecture.3
	Doc/man/man3/CampusAppWP8_Model_Lecture_LectureActivity.3
	Doc/man/man3/CampusAppWP8_Model_Lecture_LectureCourse.3
	Doc/man/man3/CampusAppWP8_Model_Lecture_LectureDate.3
	Doc/man/man3/CampusAppWP8_Model_Lecture_LectureLecturer.3
	Doc/man/man3/CampusAppWP8_Model_Lecture_LectureList.3
	Doc/man/man3/CampusAppWP8_Model_Lecture_LectureModule.3
	Doc/man/man3/CampusAppWP8_Model_Lecture_LecturePageModel.3
	Doc/man/man3/CampusAppWP8_Model_Lecture_ModulWebPage.3
	Doc/man/man3/CampusAppWP8_Model_Openinghours.3
	Doc/man/man3/CampusAppWP8_Model_Openinghours_OpeninghoursInstitutionModel.3
	Doc/man/man3/CampusAppWP8_Model_Openinghours_OpeninghoursModel.3
	Doc/man/man3/CampusAppWP8_Model_Utility.3
	Doc/man/man3/CampusAppWP8_Model_Utility_ListPickerItemModel.3
	Doc/man/man3/CampusAppWP8_Model_Utility_UrlParamModel.3
	Doc/man/man3/CampusAppWP8_Model_events_news.3
	Doc/man/man3/CampusAppWP8_Model_events_news_RSSChannelModel.3
	Doc/man/man3/CampusAppWP8_Model_events_news_RSSModel.3
	Doc/man/man3/CampusAppWP8_Model_events_news_RSSViewModel.3
	Doc/man/man3/CampusAppWP8_Pages_Events.3
	Doc/man/man3/CampusAppWP8_Pages_Events_EventIndexPage.3
	Doc/man/man3/CampusAppWP8_Pages_Events_EventPage.3
	Doc/man/man3/CampusAppWP8_Pages_Lecture_LecturePage.3
	Doc/man/man3/CampusAppWP8_Pages_Lecture_ModulWebPage.3
	Doc/man/man3/CampusAppWP8_Pages_Lecture_ResultDetailPage.3
	Doc/man/man3/CampusAppWP8_Pages_Lecture_ResultPage.3
	Doc/man/man3/CampusAppWP8_Pages_Lecture_Results.3
	Doc/man/man3/CampusAppWP8_Pages_News_NewsIndexPage.3
	Doc/man/man3/CampusAppWP8_Pages_Openinghours.3
	Doc/man/man3/CampusAppWP8_Pages_Openinghours_OpeninghoursPage.3
	Doc/man/man3/CampusAppWP8_Pages_Webmail_WebmailPage.3
	Doc/man/man3/CampusAppWP8_Resources.3
	Doc/man/man3/CampusAppWP8_Resources_AppResources.3
	Doc/man/man3/CampusAppWP8_Resources_Icons.3
	Doc/man/man3/CampusAppWP8_ThemelizedIcons.3
	Doc/man/man3/CampusAppWP8_Utility.3
	Doc/man/man3/CampusAppWP8_Utility_ApiEventHandler.3
	Doc/man/man3/CampusAppWP8_Utility_Api_ T _.3
	Doc/man/man3/CampusAppWP8_Utility_FeedEventHandler.3
	Doc/man/man3/CampusAppWP8_Utility_Feed_ T _.3
	Doc/man/man3/CampusAppWP8_Utility_HttpRequest.3
	Doc/man/man3/CampusAppWP8_Utility_Logger.3
	Doc/man/man3/CampusAppWP8_Utility_XmlApi_ T _.3
	Doc/man/man3/CampusAppWP8_Utility_XmlFeed_ T _.3
	Doc/man/man3/CampusAppWP8_Utility_XmlManager.3
	Doc/man/man3/CampusAppWP8_model.3
	Doc/man/man3/CampusAppWP8_model_BaseModel.3
	Doc/man/man3/CampusAppWP8_model_BaseViewModel.3
	Doc/man/man3/CampusAppWP8_model_departments.3
	Doc/man/man3/CampusAppWP8_model_departments_ChairModel.3
	Doc/man/man3/CampusAppWP8_model_departments_DepartmentModel.3
	Doc/man/man3/CampusAppWP8_model_departments_DepartmentViewModel.3
	Doc/man/man3/CampusAppWP8_model_departments_FacultyModel.3
	Doc/man/man3/CampusAppWP8_model_mensa.3
	Doc/man/man3/CampusAppWP8_model_mensa_MenuModel.3
	Doc/man/man3/CampusAppWP8_model_mensa_MenuWeekModel.3
	Doc/man/man3/CampusAppWP8_pages.3
	Doc/man/man3/CampusAppWP8_pages_Page1.3
	Doc/man/man3/CampusAppWP8_pages_StartPage.3
	Doc/man/man3/CampusAppWP8_pages_campusmap.3
	Doc/man/man3/CampusAppWP8_pages_campusmap_CampusMapPage.3
	Doc/man/man3/CampusAppWP8_pages_campusmap_Page1.3
	Doc/man/man3/CampusAppWP8_pages_departments.3
	Doc/man/man3/CampusAppWP8_pages_departments_DepartmentPage.3
	Doc/man/man3/CampusAppWP8_pages_lecture.3
	Doc/man/man3/CampusAppWP8_pages_lecture_Lecture.3
	Doc/man/man3/CampusAppWP8_pages_lecture_Page1.3
	Doc/man/man3/CampusAppWP8_pages_mensa.3
	Doc/man/man3/CampusAppWP8_pages_mensa_Mensa.3
	Doc/man/man3/CampusAppWP8_pages_mensa_MensaPage.3
	Doc/man/man3/CampusAppWP8_pages_news.3
	Doc/man/man3/CampusAppWP8_pages_news_NewsPage.3
	Doc/man/man3/CampusAppWP8_pages_news_RSSItem.3
	Doc/man/man3/CampusAppWP8_pages_news_RSSNewsTemplate.3
	Doc/man/man3/CampusAppWP8_pages_webmail.3
	Doc/man/man3/CampusAppWP8_pages_webmail_Page1.3
	Doc/man/man3/CampusAppWP8_pages_webmail_Webmail.3
	Doc/rtf/class_campus_app_w_p8_1_1_feed_1_1_openinghours_1_1_openinghours_feed.png
	Doc/rtf/class_campus_app_w_p8_1_1_pages_1_1_openinghours_1_1_openinghours_page.png
	Doc/rtf/class_campus_app_w_p8_1_1_utility_1_1_feed_3_01_t_01_4.png
	Doc/rtf/class_campus_app_w_p8_1_1_utility_1_1_http_request.png
	Doc/rtf/class_campus_app_w_p8_1_1_utility_1_1_xml_feed_3_01_t_01_4.png
	Doc/rtf/dir_05f18060c68559a865c9d41f7fb907cc.rtf
	Doc/rtf/dir_0a0262648802c8fa7405f815eca989e4.rtf
	Doc/rtf/dir_1073e9f439c87c111068755896d82c05.rtf
	Doc/rtf/dir_13969638f06df799347bce25efcb3a16.rtf
	Doc/rtf/dir_21535ccf759c2a522698b0b6a65b0eb5.rtf
	Doc/rtf/dir_2d311ea570d9e1c140e3775582f0c6e6.rtf
	Doc/rtf/dir_2d53bace0827e2bf2f77ef9b5661f678.rtf
	Doc/rtf/dir_3193f1d6fb141dd24ccdf3ab919c59e1.rtf
	Doc/rtf/dir_43c9fdb099d661ab6adf29f06188c90c.rtf
	Doc/rtf/dir_61694d696174b41f9f942e5b19002064.rtf
	Doc/rtf/dir_6739d22265f79723af173738d7f6d953.rtf
	Doc/rtf/dir_6bacb8829aeb51ed3b0d715b6a3da162.rtf
	Doc/rtf/dir_6c1b508c19440a399d17c73bbbf14cb6.rtf
	Doc/rtf/dir_6de442f01690ad19364998fec61f3845.rtf
	Doc/rtf/dir_7992d2ae2f44549358f6bbac582ef56c.rtf
	Doc/rtf/dir_7f12a6abf42a32e793ec2672821d39ef.rtf
	Doc/rtf/dir_8e2bb6ed875431774c2c5ec3d327b5af.rtf
	Doc/rtf/dir_8effc334115523b582ac57fdba9e762a.rtf
	Doc/rtf/dir_93a662dedef0a167f025fa842da5b025.rtf
	Doc/rtf/dir_9ec96b030a893d44df644289638c5455.rtf
	Doc/rtf/dir_af3a313bd21a45ca7168411249229c16.rtf
	Doc/rtf/dir_c2e72ee4966602e4b455c4ea040a3c82.rtf
	Doc/rtf/dir_c5add0b19063b6242461e8e811903b23.rtf
	Doc/rtf/dir_c96c24b29d5f5a7edd4a32cfcf0ce524.rtf
	Doc/rtf/dir_ccd35b6bf37d1a47cc7b6a40c3b9a180.rtf
	Doc/rtf/dir_d41793d8c394d152b5e09a3e26715b0f.rtf
	Doc/rtf/dir_d96a967f964c1de2cbce6cdd2c6f9987.rtf
	Doc/rtf/dir_db660fa6ccabfebae5ecfcb91b23cb0b.rtf
	Doc/rtf/dir_e01013a89c0db186579be3bde17b6d61.rtf
	Doc/rtf/dir_e29671f860be0283b1e43fd2c2c54c8d.rtf
	Doc/rtf/dir_e5003b30e146229ea390d69e22496900.rtf
	Doc/rtf/dir_e7609f5a50dfa281e7e0cb66859d2aae.rtf
	Doc/rtf/dir_eb8ec6a25613bee50fda0a22a7c3fec2.rtf
	Doc/rtf/dir_ec3d220e6deb3baaa30cfdec1c46791f.rtf
	Doc/rtf/dir_f430e31c3cc30ed9318a1321b6bff73e.rtf
	Doc/rtf/dir_fbd722b3c940652002633e6ed0c44f4f.rtf
	Doc/rtf/dir_fd54810065c522d18968f48cf271eca3.rtf
	Doc/rtf/dir_fe309a583d11a5902082c112d0275875.rtf
	Doc/rtf/refman.rtf
	Doc/xml/_api_8cs.xml
	Doc/xml/_api_event_handler_8cs.xml
	Doc/xml/_app_8g_8cs.xml
	Doc/xml/_app_8g_8i_8cs.xml
	Doc/xml/_app_resources_8_designer_8cs.xml
	Doc/xml/_campus_map_page_8g_8cs.xml
	Doc/xml/_campus_map_page_8g_8i_8cs.xml
	Doc/xml/_campus_map_page_8xaml_8cs.xml
	Doc/xml/_constants_8_designer_8cs.xml
	Doc/xml/_department_feed_8cs.xml
	Doc/xml/_department_page_8xaml_8cs.xml
	Doc/xml/_event_feed_8cs.xml
	Doc/xml/_event_index_page_8xaml_8cs.xml
	Doc/xml/_event_page_8g_8cs.xml
	Doc/xml/_event_page_8g_8i_8cs.xml
	Doc/xml/_event_page_8xaml_8cs.xml
	Doc/xml/_feed_8cs.xml
	Doc/xml/_file_list_8cs.xml
	Doc/xml/_file_manager_8cs.xml
	Doc/xml/_http_request_8cs.xml
	Doc/xml/_lecture_api_8cs.xml
	Doc/xml/_lecture_module_8cs.xml
	Doc/xml/_lecture_page_8g_8cs.xml
	Doc/xml/_lecture_page_8g_8i_8cs.xml
	Doc/xml/_lecture_page_8xaml_8cs.xml
	Doc/xml/_lecture_page_model_8cs.xml
	Doc/xml/_mensa_feed_8cs.xml
	Doc/xml/_mensa_page_8g_8cs.xml
	Doc/xml/_mensa_page_8xaml_8cs.xml
	Doc/xml/_modul_web_page_8xaml_8cs.xml
	Doc/xml/_news_feed_8cs.xml
	Doc/xml/_news_index_page_8xaml_8cs.xml
	Doc/xml/_news_page_8g_8cs.xml
	Doc/xml/_news_page_8xaml_8cs.xml
	Doc/xml/_openinghours_feed_8cs.xml
	Doc/xml/_openinghours_institution_model_8cs.xml
	Doc/xml/_openinghours_page_8xaml_8cs.xml
	Doc/xml/_result_detail_page_8g_8cs.xml
	Doc/xml/_result_detail_page_8g_8i_8cs.xml
	Doc/xml/_result_detail_page_8xaml_8cs.xml
	Doc/xml/_result_page_8g_8cs.xml
	Doc/xml/_result_page_8g_8i_8cs.xml
	Doc/xml/_result_page_8xaml_8cs.xml
	Doc/xml/_start_page_8g_8cs.xml
	Doc/xml/_start_page_8g_8i_8cs.xml
	Doc/xml/_start_page_8xaml_8cs.xml
	Doc/xml/_themelized_icons_8cs.xml
	Doc/xml/_u_r_l_list_8cs.xml
	Doc/xml/_u_r_l_param_model_8cs.xml
	Doc/xml/_webmail_page_8xaml_8cs.xml
	Doc/xml/_xml_api_8cs.xml~HEAD
	Doc/xml/_xml_manager_8cs.xml
	Doc/xml/class_campus_app_w_p8_1_1_app.xml
	Doc/xml/class_campus_app_w_p8_1_1_feed_1_1_openinghours_1_1_openinghours_feed.xml
	Doc/xml/class_campus_app_w_p8_1_1_main_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_model_1_1_base_model.xml
	Doc/xml/class_campus_app_w_p8_1_1_model_1_1_base_view_model.xml
	Doc/xml/class_campus_app_w_p8_1_1_model_1_1_departments_1_1_chair_model.xml
	Doc/xml/class_campus_app_w_p8_1_1_model_1_1_departments_1_1_department_model.xml
	Doc/xml/class_campus_app_w_p8_1_1_model_1_1_departments_1_1_department_view_model.xml
	Doc/xml/class_campus_app_w_p8_1_1_model_1_1_departments_1_1_faculty_model.xml
	Doc/xml/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_lecture_page_model.xml
	Doc/xml/class_campus_app_w_p8_1_1_model_1_1_lecture_1_1_modul_web_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_model_1_1events__news_1_1_r_s_s_channel_model.xml
	Doc/xml/class_campus_app_w_p8_1_1_model_1_1events__news_1_1_r_s_s_model.xml
	Doc/xml/class_campus_app_w_p8_1_1_model_1_1events__news_1_1_r_s_s_view_model.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1_campusmap_1_1_campus_map_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1_departments_1_1_department_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1_events_1_1_event_index_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1_events_1_1_event_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_lecture_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_modul_web_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_result_detail_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_result_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1_lecture_1_1_results.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1_mensa_1_1_mensa_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1_news_1_1_news_index_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1_news_1_1_news_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1_openinghours_1_1_openinghours_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1_start_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1_webmail_1_1_webmail_page.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1news_1_1_r_s_s_news_template.xml
	Doc/xml/class_campus_app_w_p8_1_1_pages_1_1webmail_1_1_webmail.xml
	Doc/xml/class_campus_app_w_p8_1_1_resources_1_1_app_resources.xml
	Doc/xml/class_campus_app_w_p8_1_1_resources_1_1_constants.xml
	Doc/xml/class_campus_app_w_p8_1_1_resources_1_1_icons.xml
	Doc/xml/class_campus_app_w_p8_1_1_utility_1_1_feed_3_01_t_01_4.xml
	Doc/xml/class_campus_app_w_p8_1_1_utility_1_1_file_list.xml
	Doc/xml/class_campus_app_w_p8_1_1_utility_1_1_http_request.xml
	Doc/xml/class_campus_app_w_p8_1_1_utility_1_1_u_r_l_list.xml
	Doc/xml/class_campus_app_w_p8_1_1_utility_1_1_xml_api_3_01_t_01_4.xml
	Doc/xml/class_campus_app_w_p8_1_1_utility_1_1_xml_feed_3_01_t_01_4.xml
	Doc/xml/class_campus_app_w_p8_1_1_utility_1_1_xml_manager.xml
	Doc/xml/class_campus_app_w_p8_1_1pages_1_1_page1.xml
	Doc/xml/class_campus_app_w_p8_1_1pages_1_1_start_page.xml
	Doc/xml/class_campus_app_w_p8_1_1pages_1_1campusmap_1_1_page1.xml
	Doc/xml/class_campus_app_w_p8_1_1pages_1_1lecture_1_1_lecture.xml
	Doc/xml/class_campus_app_w_p8_1_1pages_1_1lecture_1_1_page1.xml
	Doc/xml/class_campus_app_w_p8_1_1pages_1_1mensa_1_1_mensa.xml
	Doc/xml/class_campus_app_w_p8_1_1pages_1_1mensa_1_1_mensa_page.xml
	Doc/xml/class_campus_app_w_p8_1_1pages_1_1news_1_1_news_page.xml
	Doc/xml/class_campus_app_w_p8_1_1pages_1_1news_1_1_r_s_s_news_template.xml
	Doc/xml/class_campus_app_w_p8_1_1pages_1_1webmail_1_1_page1.xml
	Doc/xml/class_campus_app_w_p8_1_1pages_1_1webmail_1_1_webmail.xml
	Doc/xml/dir_0a0262648802c8fa7405f815eca989e4.xml
	Doc/xml/dir_1073e9f439c87c111068755896d82c05.xml
	Doc/xml/dir_6bacb8829aeb51ed3b0d715b6a3da162.xml
	Doc/xml/dir_6c1b508c19440a399d17c73bbbf14cb6.xml
	Doc/xml/dir_7f12a6abf42a32e793ec2672821d39ef.xml
	Doc/xml/dir_8effc334115523b582ac57fdba9e762a.xml
	Doc/xml/dir_ec3d220e6deb3baaa30cfdec1c46791f.xml
	Doc/xml/index.xml
	Doc/xml/mensa_2_mensa_page_8g_8i_8cs.xml
	Doc/xml/namespace_campus_app_w_p8.xml
	Doc/xml/namespace_campus_app_w_p8_1_1_feed.xml
	Doc/xml/namespace_campus_app_w_p8_1_1_model.xml
	Doc/xml/namespace_campus_app_w_p8_1_1_model_1_1_lecture.xml
	Doc/xml/namespace_campus_app_w_p8_1_1_pages.xml
	Doc/xml/namespace_campus_app_w_p8_1_1_pages_1_1_openinghours.xml
	Doc/xml/namespace_campus_app_w_p8_1_1_utility.xml
	Doc/xml/namespace_system_1_1_i_o.xml
	Doc/xml/namespace_system_1_1_xml_1_1_linq.xml
	Doc/xml/news_2_news_page_8g_8i_8cs.xml
2013-07-17 14:00:15 +02:00
stubbfel
be65f4056b addd 2013-07-17 13:55:02 +02:00
stubbfel
73a186cf28 Merge branch 'release/r114' into develmaster 2013-07-17 13:51:16 +02:00
stubbfel
7a7c478277 Merge branch 'feature/#114' into develop 2013-07-17 13:47:17 +02:00
stubbfel
c886b3e573 finish #114 2013-07-17 13:47:02 +02:00
stubbfel
98a51bce24 change tilestyle 2013-07-17 12:22:32 +02:00
stubbfel
a7769184d5 Merge branch 'hotfix/#87' into develop 2013-07-17 11:53:16 +02:00
stubbfel
40145c727e Merge branch 'hotfix/#87' into develmaster 2013-07-17 11:53:13 +02:00
stubbfel
6ead6414e6 third patch 2013-07-17 11:40:17 +02:00
stubbfel
03789a9a38 add all 2013-07-17 11:33:11 +02:00
stubbfel
92db7d16f3 clear git 2013-07-17 11:31:47 +02:00
stubbfel
9454a764d6 patch two 2013-07-17 10:49:34 +02:00
stubbfel
a433d47583 fist patch to prj file 2013-07-17 10:07:37 +02:00
stubbfel
486058687d Merge branch 'hotfix/#113' into develop 2013-07-16 15:09:44 +02:00
stubbfel
ce3c953b64 Merge branch 'hotfix/#113' into develmaster 2013-07-16 15:09:43 +02:00
stubbfel
e2ee1aad9f fix #113 2013-07-16 15:09:17 +02:00
stubbfel
281cd06bab Merge branch 'release/rdel' into develmaster 2013-07-16 14:00:15 +02:00
stubbfel
d71f6db920 deletion 2013-07-16 13:59:42 +02:00
stubbfel
eb68b666f7 Merge branch 'develmaster' into develop 2013-07-16 13:48:11 +02:00
stubbfel
8a69101cbf Merge branch 'hotfix/#72' into develmaster
Conflicts:
	CampusAppWP8/CampusAppWP8/Resources/Constants.resx
2013-07-16 13:47:42 +02:00
stubbfel
d9a54b2b13 delete #72 2013-07-16 13:43:15 +02:00
Christian Fiedler
92d580f270 fixed constants 2013-07-16 13:42:45 +02:00
Christian Fiedler
8b4ee44520 Merge branch 'develop' of 141.43.76.143:repos/bare/win8phoneApp into develop 2013-07-16 13:40:40 +02:00
Christian Fiedler
9c0415ddbb fixed constants 2013-07-16 13:39:53 +02:00
stubbfel
52a3154caf Merge branch 'develmaster' of 141.43.76.143:repos/bare/win8phoneApp into develmaster 2013-07-16 13:38:33 +02:00
stubbfel
18f72e6096 Merge branch 'develop' of 141.43.76.143:repos/bare/win8phoneApp into develop 2013-07-16 13:38:23 +02:00
stubbfel
82625f7aa4 Merge branch 'hotfix/#73' into develop 2013-07-16 13:37:42 +02:00
stubbfel
0b82c3b18a Merge branch 'hotfix/#73' into develmaster 2013-07-16 13:37:41 +02:00
Christian Fiedler
3616bd233f Merge branch 'hotfix/#79' into develop
Conflicts:
	CampusAppWP8/CampusAppWP8/Pages/Events/EventIndexPage.xaml.cs
	CampusAppWP8/CampusAppWP8/Pages/News/NewsIndexPage.xaml.cs
	CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs
	CampusAppWP8/CampusAppWP8/Resources/Constants.resx
2013-07-16 13:35:38 +02:00
Christian Fiedler
573a562e03 Merge branch 'hotfix/#79' into develmaster
Conflicts:
	CampusAppWP8/CampusAppWP8/Pages/Events/EventIndexPage.xaml.cs
	CampusAppWP8/CampusAppWP8/Pages/News/NewsIndexPage.xaml.cs
	CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs
	CampusAppWP8/CampusAppWP8/Resources/Constants.resx
2013-07-16 13:33:10 +02:00
stubbfel
25d6217a9b delete BaseModel 2013-07-16 13:29:33 +02:00
stubbfel
5fbd297af5 delete FileList 2013-07-16 13:26:09 +02:00
Christian Fiedler
f1e41b1fce #79 #96 2013-07-16 13:22:04 +02:00
stubbfel
c0692dfca9 Merge branch 'release/r#112' into develmaster 2013-07-16 12:21:37 +02:00
stubbfel
cf4c5dc486 change to XMLModel 2013-07-16 12:20:16 +02:00
stubbfel
707e7c0761 Merge branch 'release/r#111' into develmaster 2013-07-16 12:00:19 +02:00
stubbfel
347e45f561 change to XMLModel 2013-07-16 11:59:38 +02:00
stubbfel
4395f4f6cd Merge branch 'release/r#108' into develmaster 2013-07-16 11:43:05 +02:00
stubbfel
182b50eca2 Merge branch 'feature/#108' into develop 2013-07-16 11:42:00 +02:00
stubbfel
544ae68f2c enable department 2013-07-16 11:41:32 +02:00
stubbfel
db15808e24 change to xmlmodel 2013-07-16 10:40:09 +02:00
stubbfel
7e99840b6c rrefactor linkpage 2013-07-15 18:53:29 +02:00
Christian Fiedler
0f82e4512d Merge branch 'release/new_file_system' into develmaster 2013-07-15 17:34:15 +02:00
Christian Fiedler
19e18a4daa Merge branch 'develop' of 141.43.76.143:repos/bare/win8phoneApp into develop 2013-07-15 17:30:43 +02:00
Christian Fiedler
2a24c01854 removed icon 2013-07-15 17:29:37 +02:00
Christian Fiedler
2ef3d053b1 mega merge 2013-07-15 17:28:36 +02:00
stubbfel
c0a880e771 Merge branch 'hotfix/#100' into develop 2013-07-15 17:22:00 +02:00
stubbfel
46cedaeeb4 Merge branch 'hotfix/#100' into develmaster 2013-07-15 17:21:59 +02:00
stubbfel
bda60de4f5 reafactor #100 2013-07-15 17:21:36 +02:00
Christian Fiedler
e70a6d36f1 Merge branch 'develop' of 141.43.76.143:repos/bare/win8phoneApp into develop
Conflicts:
	CampusAppWP8/CampusAppWP8/Resources/AppResources.Designer.cs
2013-07-15 16:59:59 +02:00
Christian Fiedler
80d008a431 Merge branch 'develop' of 141.43.76.143:repos/bare/win8phoneApp into develop
Conflicts:
	CampusAppWP8/CampusAppWP8/Model/Events/RSSChannelModel.cs
	CampusAppWP8/CampusAppWP8/Model/Events/RSSModel.cs
	CampusAppWP8/CampusAppWP8/Pages/Events/EventIndexPage.xaml.cs
	CampusAppWP8/CampusAppWP8/Pages/News/NewsIndexPage.xaml.cs
	CampusAppWP8/CampusAppWP8/Pages/Openinghours/OpeninghoursPage.xaml.cs
	CampusAppWP8/CampusAppWP8/Resources/AppResources.resx
	CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs
	CampusAppWP8/CampusAppWP8/Resources/Constants.resx
	CampusAppWP8/CampusAppWP8/pages/StartPage.xaml
	CampusAppWP8/CampusAppWP8/pages/StartPage.xaml.cs
2013-07-15 16:58:31 +02:00
stubbfel
175765a3c0 Merge branch 'hotfix/#107' into develop 2013-07-15 15:17:30 +02:00
stubbfel
5a709e7445 Merge branch 'hotfix/#107' into develmaster 2013-07-15 15:17:30 +02:00
stubbfel
a2eeb54c55 finish #107 2013-07-15 15:17:21 +02:00
stubbfel
511e6640ba Merge branch 'release/r#104' into develmaster 2013-07-15 15:09:33 +02:00
stubbfel
505b19e57d Merge branch 'hotfix/#100' into develop 2013-07-15 15:02:31 +02:00
stubbfel
5d2614d59b Merge branch 'hotfix/#100' into develmaster 2013-07-15 15:02:28 +02:00
stubbfel
5c8756ac21 finish #100 2013-07-15 15:02:13 +02:00
stubbfel
10018077fc add style 2013-07-15 13:35:18 +02:00
stubbfel
ca13f3f581 finish #104 2013-07-15 13:26:47 +02:00
Christian Fiedler
6f1eae3ca8 no message 2013-07-12 18:25:17 +02:00
Christian Fiedler
8774683a80 Merge branch 'hotfix/#57' into develop 2013-07-12 18:12:48 +02:00
Christian Fiedler
8335c47b0f #57 #90 #80 2013-07-12 18:08:17 +02:00
stubbfel
ceeaabac1c Merge branch 'release/r#106' into develmaster 2013-07-11 16:45:41 +02:00
stubbfel
e1abe121bf Merge branch 'feature/#106' into develop 2013-07-11 16:43:53 +02:00
stubbfel
ed891074e0 add listbuttonstyle to all pages 2013-07-11 16:43:39 +02:00
stubbfel
6dc522b6a8 add listButtonstyle 2013-07-11 15:31:02 +02:00
stubbfel
b54be92e3c Merge branch 'release/#94' into develmaster 2013-07-09 10:21:00 +02:00
stubbfel
12acceff32 Merge branch 'release/#94' into develop 2013-07-09 10:21:00 +02:00
stubbfel
9e31f121ba add Landscape Orientation at studentencouncil 2013-07-09 10:20:23 +02:00
stubbfel
a06133b173 Merge branch 'hotfix/#95' into develmaster 2013-07-09 10:17:51 +02:00
stubbfel
4fa7c9d9dd Merge branch 'hotfix/#95' into develop 2013-07-09 10:17:51 +02:00
stubbfel
e46a7a22e1 add Landscape Orientation at linkpage 2013-07-09 10:17:38 +02:00
stubbfel
7396edc095 Merge branch 'hotfix/#93' into develmaster 2013-07-09 10:14:08 +02:00
stubbfel
b6b003315f Merge branch 'hotfix/#93' into develop 2013-07-09 10:14:08 +02:00
stubbfel
e1ea814861 change homeworkicon at startpage (fix #93) 2013-07-09 10:13:50 +02:00
stubbfel
579217ec1c Merge branch 'release/r#92' into develmaster 2013-07-08 18:47:53 +02:00
stubbfel
2f247e29b4 add toogleButton and in import in Studentcouncil 2013-07-08 18:46:31 +02:00
stubbfel
3003508139 Merge branch 'release/r#91#83#84#86#85' into develmaster 2013-07-08 15:34:57 +02:00
stubbfel
cb242fc2fd Merge branch 'feature/#85' into develop 2013-07-08 15:32:19 +02:00
stubbfel
4f10725531 finisch #85 2013-07-08 15:31:56 +02:00
stubbfel
c3a572c6f6 add Qurreystring to navbtn #85 2013-07-08 15:29:01 +02:00
stubbfel
e60bfae1a8 add Navbutton anud add Constatn.rex to global 2013-07-08 14:12:45 +02:00
stubbfel
731e3305b9 finish #86 2013-07-08 12:33:01 +02:00
stubbfel
bc77d076c9 add Phonebotton and import them to openinghours 2013-07-08 12:31:53 +02:00
stubbfel
b3ef2ab81f Merge branch 'feature/#84' into develop 2013-07-08 12:15:08 +02:00
stubbfel
ea54e23d56 finish #84 2013-07-08 12:14:41 +02:00
stubbfel
0f64e15c3f add GoToMapButton aund add them to Openinghours + change Mailbutton 2013-07-08 12:13:20 +02:00
stubbfel
476a626de4 Merge branch 'feature/#83' into develop 2013-07-08 11:37:43 +02:00
stubbfel
2b4b980883 finish #83 2013-07-08 11:37:28 +02:00
stubbfel
086317fef5 add linkbutto and import button in linkpage und studentcouncil 2013-07-08 11:35:19 +02:00
stubbfel
3755348854 add btuLogo #91 2013-07-08 11:15:48 +02:00
stubbfel
cc4cfd9afd Merge branch 'release/r#78' into develmaster 2013-07-04 14:11:26 +02:00
stubbfel
7053571f6c Merge branch 'feature/#78' into develop 2013-07-04 14:10:08 +02:00
stubbfel
170067df02 finish #78 2013-07-04 13:52:07 +02:00
stubbfel
38becf5ae6 add emaibtn #78 2013-07-04 13:51:32 +02:00
stubbfel
0e90a7a03c Merge branch 'release/r#74' into develmaster 2013-07-03 13:45:05 +02:00
stubbfel
7e65f09ca8 Merge branch 'release/r#74' into develop 2013-07-03 13:45:05 +02:00
stubbfel
7056650095 add #74 to startpage 2013-07-03 13:44:46 +02:00
stubbfel
5e5074a534 Merge branch 'feature/#74' into develop 2013-07-03 13:37:58 +02:00
stubbfel
f5ef147baa finish #74 2013-07-03 13:37:12 +02:00
stubbfel
c9b3553d2a add models and feed #74 2013-07-02 15:18:40 +02:00
stubbfel
f8280d1ce1 Merge branch 'release/r#71' into develmaster 2013-07-02 12:25:44 +02:00
stubbfel
448cfd5118 finish #71 2013-07-02 12:25:05 +02:00
stubbfel
655b4c0638 add Linkpage, Model and feeds 2013-07-02 12:17:15 +02:00
stubbfel
ff39d78658 Merge branch 'release/r#67' into develmaster 2013-07-01 13:20:12 +02:00
stubbfel
d8071e76eb finish #67 2013-07-01 13:19:07 +02:00
stubbfel
2e883b1e98 Merge branch 'release/r#68' into develmaster 2013-07-01 11:45:16 +02:00
stubbfel
5a55355f98 finish #68 2013-07-01 11:43:56 +02:00
stubbfel
cfb7b74610 add doku 2013-06-27 14:27:52 +02:00
Christian Fiedler
22a0315fdd Merge branch 'release/#55' into develmaster 2013-06-25 14:10:40 +02:00
Christian Fiedler
fe46e28a26 Merge branch 'feature/#55' into develop 2013-06-25 14:08:48 +02:00
Christian Fiedler
31b4e4459e #55 2013-06-25 14:06:27 +02:00
stubbfel
0991901c90 Merge branch 'release/#51' into develmaster 2013-06-24 13:51:04 +02:00
stubbfel
94a12f2a77 change icon source of lecture and map 2013-06-24 13:50:24 +02:00
stubbfel
2b96528c7d Merge branch 'feature/#51' into develop 2013-06-24 13:33:39 +02:00
stubbfel
7ee3fa5535 finish testmap 2013-06-24 13:27:16 +02:00
Christian Fiedler
a8d93ee943 Merge branch 'develop' into develmaster 2013-06-24 12:56:49 +02:00
Christian Fiedler
2a8d321a64 fixed a wrong merged line 2013-06-24 12:54:12 +02:00
Christian Fiedler
4b5587770c Merge branch 'feature/#44' into develop
Conflicts:
	CampusAppWP8/CampusAppWP8/pages/StartPage.xaml.cs
2013-06-24 12:44:16 +02:00
Christian Fiedler
a750b5e1a2 #44 themerized icons 2013-06-21 16:25:13 +02:00
stubbfel
709f7fc289 end of day2 #51 2013-06-21 13:02:13 +02:00
stubbfel
811ad35fa9 add mapmodel 2013-06-21 12:37:17 +02:00
stubbfel
ab0ba5ac6b Merge branch 'release/r#45' into develmaster 2013-06-21 11:25:37 +02:00
stubbfel
bb3de8beec add links to the startpage and doku 2013-06-21 11:22:33 +02:00
stubbfel
c5ea535489 finish day 2013-06-20 15:56:13 +02:00
stubbfel
bbc6269ed1 add search icon #51 2013-06-20 13:11:27 +02:00
stubbfel
d8b3848086 Merge branch 'release/r#52' into develmaster 2013-06-20 12:35:13 +02:00
stubbfel
775533ec32 Merge branch 'feature/#52' into develop 2013-06-20 12:32:49 +02:00
stubbfel
eb91cbae44 change namespace 2013-06-20 12:32:32 +02:00
stubbfel
b52c0c8625 add and mv #52 2013-06-20 12:31:30 +02:00
stubbfel
52872b108b Merge branch 'release/r#48' into develop 2013-06-19 10:37:42 +02:00
stubbfel
d06b86bc41 Merge branch 'release/r#48' into develmaster 2013-06-19 10:37:41 +02:00
stubbfel
c293c331fb change nav to startpage 2013-06-19 10:37:16 +02:00
stubbfel
e044450f1d Merge branch 'feature/#48' into develop 2013-06-19 10:35:02 +02:00
stubbfel
ce6358b9f7 clear stylecop warning #48 2013-06-19 10:32:55 +02:00
stubbfel
e27a8bb989 add api class 2013-06-19 10:30:51 +02:00
stubbfel
c666a526f0 Merge branch 'hotfix/#47' into develop 2013-06-19 10:09:01 +02:00
stubbfel
6fed7482ca Merge branch 'hotfix/#47' into develmaster 2013-06-19 10:09:00 +02:00
stubbfel
4d79854ee7 rename RestApa to HttpRequst 2013-06-19 10:08:28 +02:00
stubbfel
57da34fc6b Merge branch 'release/#46' into develmaster 2013-06-19 09:57:02 +02:00
stubbfel
518bbc00ce finish #46 2013-06-18 15:22:50 +02:00
stubbfel
38b379c6d6 Merge branch 'hotfix/#32' into develop 2013-06-18 15:07:18 +02:00
stubbfel
24f7607f84 Merge branch 'hotfix/#32' into develmaster 2013-06-18 15:07:15 +02:00
stubbfel
55d55c64e0 finisch #32 2013-06-18 15:06:30 +02:00
stubbfel
8f472d7662 add LecturepageModel 2013-06-18 10:34:09 +02:00
Christian Fiedler
919c1f8d08 Merge branch 'release/#43' into develmaster 2013-06-17 15:27:05 +02:00
Christian Fiedler
ff81278aba embedded webbrowser in events and news 2013-06-17 15:24:43 +02:00
Christian Fiedler
0b71ef13fe Merge branch 'hotfix/#28' into develop 2013-06-17 14:51:37 +02:00
Christian Fiedler
e180ca3a45 Merge branch 'hotfix/#28' into develmaster 2013-06-17 14:51:36 +02:00
Christian Fiedler
978fb9b83b #28 2013-06-17 14:49:00 +02:00
stubbfel
fcd674aa4e Merge branch 'release/r#33' into develmaster 2013-06-17 14:04:43 +02:00
stubbfel
7e2552a8e3 add search button to lecturepage 2013-06-17 14:03:29 +02:00
stubbfel
ffc902c78f Merge branch 'feature/#33' into develop 2013-06-17 13:50:07 +02:00
stubbfel
5dbcc01dd2 add doku + refactor to lectur and api #33 2013-06-17 13:48:10 +02:00
stubbfel
a2463795f9 add Api to LecturePage 2013-06-17 12:39:05 +02:00
Christian Fiedler
53d5fa413e Merge branch 'release/icons' into develmaster 2013-06-17 12:21:03 +02:00
Christian Fiedler
5c3a8a3432 #34 and changed background opacity of other images 2013-06-17 12:15:09 +02:00
stubbfel
e451f7ff89 add CreateGetUrl #33 2013-06-17 12:14:02 +02:00
stubbfel
25b05855a2 finish xmlApi 2013-06-17 11:50:01 +02:00
stubbfel
52625e6bee init #33 2013-06-17 11:25:08 +02:00
stubbfel
6da4552e79 Merge branch 'feature/#35' into develop 2013-06-17 11:21:26 +02:00
stubbfel
1c890fd43d finish #35 2013-06-17 11:20:51 +02:00
stubbfel
f8f90ab247 init #35 2013-06-17 10:49:43 +02:00
stubbfel
0f6196a521 Merge branch 'release/#37' into develmaster 2013-06-17 10:45:51 +02:00
stubbfel
eac32fadd3 Merge branch 'feature/#37' into develop 2013-06-17 10:44:35 +02:00
stubbfel
3d3a0fa9e2 Merge branch 'release/release' into develmaster 2013-06-17 10:30:36 +02:00
stubbfel
a93ea28794 resolved #38 2013-06-17 10:28:05 +02:00
stubbfel
f49d1bba36 change LecturreActivity (add Feature #37) 2013-06-17 10:12:22 +02:00
stubbfel
db46c1a451 add methods #37 2013-06-17 10:09:39 +02:00
stubbfel
7068d54406 add doku 2013-06-13 13:32:21 +02:00
stubbfel
2f4034a4f2 Merge branch 'release/add#29' into develmaster 2013-06-13 12:14:41 +02:00
stubbfel
ec3fd17234 Merge branch 'feature/#29' into develop 2013-06-13 12:13:17 +02:00
stubbfel
bff8eb07c8 add documention to the models 2013-06-13 12:11:56 +02:00
stubbfel
512d367a7e add docmumentation to the pages 2013-06-13 10:50:37 +02:00
stubbfel
eb533e8008 update lecture 2013-06-12 15:21:16 +02:00
stubbfel
6071f96b3b lecture sendrequest and shows result 2013-06-12 13:07:24 +02:00
stubbfel
72495a5bc5 Merge branch 'hotfix/#30' into develop 2013-06-12 10:57:20 +02:00
stubbfel
84266dfb59 Merge branch 'hotfix/#30' into develmaster 2013-06-12 10:54:55 +02:00
stubbfel
9c973b2b8f resoved issue #30 2013-06-12 10:54:20 +02:00
stubbfel
590cf43751 Merge branch 'pagesdraft' into devel 2013-06-11 16:45:04 +02:00
stubbfel
5b66041f81 chaneg using 2013-06-11 16:44:21 +02:00
stubbfel
9a81b166cd Merge branch 'cf_departments' into pagesdraft
Conflicts:
	CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj
	CampusAppWP8/CampusAppWP8/Properties/WMAppManifest.xml
	CampusAppWP8/CampusAppWP8/Resources/AppResources.resx
	CampusAppWP8/CampusAppWP8/pages/news/RSSItem.cs
	CampusAppWP8/CampusAppWP8/pages/news/RSSNewsTemplate.xaml
	CampusAppWP8/CampusAppWP8/pages/news/RSSNewsTemplate.xaml.cs
	CampusAppWP8/CampusAppWP8/utility/URLList.cs
2013-06-11 16:39:33 +02:00
stubbfel
70a8f7a266 commit department 2013-06-11 15:47:32 +02:00
stubbfel
4bde4a8ba2 Merge branch 'ĺecturepage' into HEAD
Conflicts:
	CampusAppWP8/CampusAppWP8/Properties/WMAppManifest.xml
2013-06-11 15:37:54 +02:00
stubbfel
66e5bd95b8 Merge branch 'pagesdraft2' into HEAD
Conflicts:
	CampusAppWP8/CampusAppWP8/Properties/WMAppManifest.xml
2013-06-11 15:35:25 +02:00
stubbfel
8c8d5bc2ce bla 2013-06-11 15:31:52 +02:00
stubbfel
a71a67cd06 finish ResultPage 2013-06-11 15:15:49 +02:00
stubbfel
d935b7c2d9 i18 to ResultDetailPage 2013-06-11 14:14:52 +02:00
Christian Fiedler
61c0a9c736 added startpage icons 2013-06-11 14:02:58 +02:00
stubbfel
4b41d8b764 finish ResultDetailPage 2013-06-11 13:42:20 +02:00
stubbfel
1bf0531e34 add save and load to isolatedstorage 2013-06-11 12:01:57 +02:00
stubbfel
6f92d8f268 finish ModulWepPage 2013-06-11 10:28:05 +02:00
Christian Fiedler
13c2e96867 events and news page changed and commited 2013-06-10 18:50:28 +02:00
stubbfel
faa5dc7440 add resultpage 2013-06-10 18:46:39 +02:00
stubbfel
29bc862035 add resultpage 2013-06-10 18:45:55 +02:00
stubbfel
c2bfc2b1d3 add model 2013-06-10 15:25:35 +02:00
stubbfel
78ff7bf24f add restthhp method 2013-06-10 12:26:11 +02:00
stubbfel
c3a9109a7e add RestApi httpget 2013-06-10 11:27:02 +02:00
Christian Fiedler
1265e916c7 Merge branch 'cf_eventsnews' into cf_departments 2013-06-07 13:32:35 +02:00
Christian Fiedler
586718d983 department stuff 2013-06-07 12:43:54 +02:00
stubbfel
ffa0d8a009 finish #25 2013-06-06 16:07:11 +02:00
stubbfel
04695ee32f model can calc date of week date 2013-06-06 15:51:43 +02:00
stubbfel
159dab18f3 mensamodec remove html tags 2013-06-06 15:14:46 +02:00
stubbfel
4ef5e7995b add Stringmanager 2013-06-06 15:12:27 +02:00
stubbfel
fa9f3c0fe2 adjust gui mensa 2013-06-06 15:03:30 +02:00
Christian Fiedler
a5c37eef1e update 2013-06-03 11:34:49 +02:00
Christian Fiedler
c60fb42122 added events, sort events by date, added link in news and events 2013-05-31 18:36:59 +02:00
stubbfel
56d7145878 add Wp8 demos (jump start) 2013-05-24 10:19:58 +02:00
2296 changed files with 231448 additions and 2314 deletions

64
.gitattributes vendored Normal file
View File

@@ -0,0 +1,64 @@
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp
###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
*.csproj -text merge=union
*.sln -text merge=union
*.resx -text merge=union
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary
###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary
###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain

163
.gitignore vendored Normal file
View File

@@ -0,0 +1,163 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
[Dd]ebug/
[Rr]elease/
x64/
build/
[Bb]in/
[Oo]bj/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.log
*.scc
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
*.ncrunch*
.*crunch*.local.xml
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.Publish.xml
*.pubxml
# NuGet Packages Directory
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
#packages/
# Windows Azure Build Output
csx
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.[Pp]ublish.xml
*.pfx
*.publishsettings
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
App_Data/*.mdf
App_Data/*.ldf
#LightSwitch generated files
GeneratedArtifacts/
_Pvt_Extensions/
ModelManifest.xml
# =========================
# Windows detritus
# =========================
# Windows image file caches
Thumbs.db
ehthumbs.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Mac desktop service store files
.DS_Store
gitattributes
gitignore
winphone/
.spl
.srum
*.spl
*.srum
Doxyfile
screenshots/

View File

@@ -0,0 +1,32 @@
//-----------------------------------------------------------------------
// <copyright file="LectureApi.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>13.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Feed.Lecture
{
using System;
using CampusAppWP8.Model.Lecture;
using CampusAppWP8.Resources;
using CampusAppWP8.Utility;
/// <summary>
/// Class for the feed of the Lecture
/// </summary>
/// <remarks>
/// need the XmlAPI
/// </remarks>
public class LectureApi : XmlApi<LectureList>
{
/// <summary>
/// Initializes a new instance of the <see cref="LectureApi" /> class.
/// </summary>
public LectureApi()
: base(new Uri(Constants.UrlLecture_ApiBaseAddr))
{
this.ValidRootName = Constants.LectureXmlValidRootName;
}
}
}

View File

@@ -8,7 +8,17 @@
<!--Anwendungsressourcen-->
<Application.Resources>
<local:LocalizedStrings xmlns:local="clr-namespace:CampusAppWP8" x:Key="LocalizedStrings"/>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles/ListButton.xaml"/>
<ResourceDictionary Source="Styles/StartPageStyles.xaml"/>
<ResourceDictionary>
<local:LocalizedStrings xmlns:local="clr-namespace:CampusAppWP8" x:Key="LocalizedStrings"/>
<local:ThemelizedIcons xmlns:local="clr-namespace:CampusAppWP8" x:Key="ThemelizedIcons"/>
<local:Const xmlns:local="clr-namespace:CampusAppWP8" x:Key="Const"/>
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
<Application.ApplicationLifetimeObjects>

View File

@@ -7,6 +7,7 @@ using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using CampusAppWP8.Resources;
using System.IO.IsolatedStorage;
namespace CampusAppWP8
@@ -59,6 +60,70 @@ namespace CampusAppWP8
}
}
/// <summary>
/// Method save any object to the IsolatedStorage
/// </summary>
/// <param name="key"> key of the object</param>
/// <param name="value">value of the object, if value == null => remove key</param>
public static void SaveToIsolatedStorage<T>(string key, T value)
{
IsolatedStorageSettings isolatedStore = IsolatedStorageSettings.ApplicationSettings;
isolatedStore.Remove(key);
if (value != null)
{
isolatedStore.Add(key, value);
}
isolatedStore.Save();
}
/// <summary>
/// Method load any object to the IsolatedStorage
/// </summary>
/// <param name="key"> key of the object</param>
public static T LoadFromIsolatedStorage<T>(string key)
{
IsolatedStorageSettings isolatedStore = IsolatedStorageSettings.ApplicationSettings;
if(isolatedStore.Contains(key)) {
object value = isolatedStore[key];
return (T)value;
}
return default(T);
}
/// <summary>
/// Method save any object to the IsolatedStorage
/// </summary>
/// <param name="key"> key of the object</param>
/// <param name="value">value of the object, if value == null => remove key</param>
public static void SaveToAppState<T>(string key, T value)
{
IsolatedStorageSettings isolatedStore = IsolatedStorageSettings.ApplicationSettings;
isolatedStore.Remove(key);
if (value != null)
{
isolatedStore.Add(key, value);
}
isolatedStore.Save();
}
/// <summary>
/// Method load any object to the IsolatedStorage
/// </summary>
/// <param name="key"> key of the object</param>
public static T LoadFromAppState<T>(string key)
{
IsolatedStorageSettings isolatedStore = IsolatedStorageSettings.ApplicationSettings;
if (isolatedStore.Contains(key))
{
object value = isolatedStore[key];
return (T)value;
}
return default(T);
}
// Code, der beim Starten der Anwendung ausgeführt werden soll (z. B. über "Start")
// Dieser Code wird beim Reaktivieren der Anwendung nicht ausgeführt
private void Application_Launching(object sender, LaunchingEventArgs e)

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -1,253 +1,425 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>10.0.20506</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{120B88CC-F3F0-4C5A-A3FD-C26E835338CC}</ProjectGuid>
<ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CampusAppWP8</RootNamespace>
<AssemblyName>CampusAppWP8</AssemblyName>
<TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
<SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
<SilverlightApplication>true</SilverlightApplication>
<SupportedCultures>
</SupportedCultures>
<XapOutputs>true</XapOutputs>
<GenerateSilverlightManifest>true</GenerateSilverlightManifest>
<XapFilename>CampusAppWP8_$(Configuration)_$(Platform).xap</XapFilename>
<SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
<SilverlightAppEntry>CampusAppWP8.App</SilverlightAppEntry>
<ValidateXaml>true</ValidateXaml>
<MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
<ThrowErrorsInValidation>true</ThrowErrorsInValidation>
<ExpressionBlendVersion>5.0.40218.0</ExpressionBlendVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Bin\Debug</OutputPath>
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>
</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>Bin\Release</OutputPath>
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Bin\x86\Debug</OutputPath>
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>Bin\x86\Release</OutputPath>
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Bin\ARM\Debug</OutputPath>
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>Bin\ARM\Release</OutputPath>
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
</Compile>
<Compile Include="LocalizedStrings.cs" />
<Compile Include="Model\departments\ChairModel.cs" />
<Compile Include="Model\departments\DepartmentModel.cs" />
<Compile Include="Model\departments\DepartmentViewModel.cs" />
<Compile Include="Model\departments\FacultyModel.cs" />
<Compile Include="Model\Mensa\MenuModel.cs" />
<Compile Include="Model\Mensa\MenuWeekModel.cs" />
<Compile Include="Pages\campusmap\CampusMapPage.xaml.cs">
<DependentUpon>CampusMapPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\departments\DepartmentPage.xaml.cs">
<DependentUpon>DepartmentPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\lecture\LecturePage.xaml.cs">
<DependentUpon>LecturePage.xaml</DependentUpon>
</Compile>
<Compile Include="Model\BaseModel.cs" />
<Compile Include="Model\BaseViewModel.cs" />
<Compile Include="Feed\Mensa\MensaFeed.cs" />
<Compile Include="Pages\Mensa\MensaPage.xaml.cs">
<DependentUpon>MensaPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\news\NewsPage.xaml.cs">
<DependentUpon>NewsPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\news\RSSItem.cs" />
<Compile Include="Pages\news\RSSNewsTemplate.xaml.cs">
<DependentUpon>RSSNewsTemplate.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\StartPage.xaml.cs">
<DependentUpon>StartPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\webmail\WebmailPage.xaml.cs">
<DependentUpon>WebmailPage.xaml</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Resources\AppResources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>AppResources.resx</DependentUpon>
</Compile>
<Compile Include="Resources\Constants.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Constants.resx</DependentUpon>
</Compile>
<Compile Include="Utility\Feed.cs" />
<Compile Include="Utility\FeedEventHandler.cs" />
<Compile Include="Utility\FileList.cs" />
<Compile Include="Utility\FileManager.cs" />
<Compile Include="Utility\Logger.cs" />
<Compile Include="Utility\URLList.cs" />
<Compile Include="Utility\XmlFeed.cs" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</ApplicationDefinition>
<Page Include="Pages\campusmap\CampusMapPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\departments\DepartmentPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\lecture\LecturePage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\Mensa\MensaPage.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Pages\news\NewsPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\news\RSSNewsTemplate.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\StartPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\webmail\WebmailPage.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
</ItemGroup>
<ItemGroup>
<None Include="Assets\psd\holo_optionsbuttons.psd" />
<None Include="Assets\psd\iconbutton_effects2.psd" />
<None Include="packages.config" />
<None Include="Properties\AppManifest.xml" />
<None Include="Properties\WMAppManifest.xml">
<SubType>Designer</SubType>
</None>
</ItemGroup>
<ItemGroup>
<Content Include="Assets\AlignmentGrid.png" />
<Content Include="Assets\ApplicationIcon.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Tiles\FlipCycleTileLarge.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Tiles\FlipCycleTileMedium.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Tiles\FlipCycleTileSmall.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Tiles\IconicTileMediumLarge.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Tiles\IconicTileSmall.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="README_FIRST.txt" />
<Content Include="Toolkit.Content\ApplicationBar.Cancel.png" />
<Content Include="Toolkit.Content\ApplicationBar.Check.png" />
<Content Include="Toolkit.Content\ApplicationBar.Delete.png" />
<Content Include="Toolkit.Content\ApplicationBar.Select.png" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\AppResources.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>AppResources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Constants.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Constants.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.Phone.Controls, Version=8.0.0.0, Culture=neutral, PublicKeyToken=24eec0d8c86cda1e, processorArchitecture=MSIL" />
<Reference Include="Microsoft.Phone.Controls.Toolkit">
<HintPath>..\packages\WPtoolkit.4.2012.10.30\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<ProjectExtensions />
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>10.0.20506</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{120B88CC-F3F0-4C5A-A3FD-C26E835338CC}</ProjectGuid>
<ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CampusAppWP8</RootNamespace>
<AssemblyName>CampusAppWP8</AssemblyName>
<TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
<SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
<SilverlightApplication>true</SilverlightApplication>
<SupportedCultures>
</SupportedCultures>
<XapOutputs>true</XapOutputs>
<GenerateSilverlightManifest>true</GenerateSilverlightManifest>
<XapFilename>CampusAppWP8_$(Configuration)_$(Platform).xap</XapFilename>
<SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
<SilverlightAppEntry>CampusAppWP8.App</SilverlightAppEntry>
<ValidateXaml>true</ValidateXaml>
<MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
<ThrowErrorsInValidation>true</ThrowErrorsInValidation>
<ExpressionBlendVersion>5.0.40218.0</ExpressionBlendVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Bin\Debug</OutputPath>
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>
</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>Bin\Release</OutputPath>
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Bin\x86\Debug</OutputPath>
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>Bin\x86\Release</OutputPath>
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Bin\ARM\Debug</OutputPath>
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>Bin\ARM\Release</OutputPath>
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
</Compile>
<Compile Include="Feed\Departments\DepartmentFavoriteFeed.cs" />
<Compile Include="Const.cs" />
<Compile Include="Resources\Icons.Designer.cs" />
<Compile Include="Utility\Lui\Button\EmailButton.cs" />
<Compile Include="Feed\Link\CommonLinkFeed.cs" />
<Compile Include="Feed\Link\ClubLinkFeed.cs" />
<Compile Include="Feed\Openinghours\OpeninghoursFeed.cs" />
<Compile Include="Feed\StudentCouncil\StudentCouncilFeed.cs" />
<Compile Include="LocalizedStrings.cs" />
<Compile Include="Model\Campusmap\MapModel.cs" />
<Compile Include="Model\Campusmap\MapPinModel.cs" />
<Compile Include="Model\Departments\ChairModel.cs" />
<Compile Include="Model\Departments\DepartmentModel.cs" />
<Compile Include="Model\Departments\FacultyModel.cs" />
<Compile Include="Model\RSS\RSSChannelModel.cs" />
<Compile Include="Model\RSS\RSSViewModel.cs" />
<Compile Include="Model\Lecture\LectureActivity.cs" />
<Compile Include="Model\Lecture\LectureCourse.cs" />
<Compile Include="Model\Lecture\LectureDate.cs" />
<Compile Include="Model\Lecture\LectureLecturer.cs" />
<Compile Include="Model\Lecture\LectureList.cs" />
<Compile Include="Model\Lecture\LectureModule.cs" />
<Compile Include="Model\Lecture\LecturePageModel.cs" />
<Compile Include="Model\MainModel.cs" />
<Compile Include="Model\Link\LinkModel.cs" />
<Compile Include="Model\Link\LinkListModel.cs" />
<Compile Include="Model\Mensa\MenuModel.cs" />
<Compile Include="Model\Mensa\MenuWeekModel.cs" />
<Compile Include="Model\Openinghours\OpeninghoursInstitutionModel.cs" />
<Compile Include="Model\Openinghours\OpeninghoursModel.cs" />
<Compile Include="Model\StudentCouncil\StudentCouncilListModel.cs" />
<Compile Include="Model\StudentCouncil\StudentCouncilModel.cs" />
<Compile Include="Model\Utility\UrlParamModel.cs" />
<Compile Include="Model\XmlModel.cs" />
<Compile Include="Pages\Campusmap\CampusMapPage.xaml.cs">
<DependentUpon>CampusMapPage.xaml</DependentUpon>
</Compile>
<Compile Include="Api\Lecture\LectureApi.cs" />
<Compile Include="Feed\Departments\DepartmentFeed.cs" />
<Compile Include="Pages\Departments\DepartmentFavoritePage.xaml.cs">
<DependentUpon>DepartmentFavoritePage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\Departments\DepartmentIndexPage.xaml.cs">
<DependentUpon>DepartmentIndexPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\Departments\DepartmentInfoPage.xaml.cs">
<DependentUpon>DepartmentInfoPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\Departments\DepartmentPage.xaml.cs">
<DependentUpon>DepartmentPage.xaml</DependentUpon>
</Compile>
<Compile Include="Feed\Events\EventFeed.cs" />
<Compile Include="Pages\Events\EventIndexPage.xaml.cs">
<DependentUpon>EventIndexPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\Events\EventPage.xaml.cs">
<DependentUpon>EventPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\Lecture\LecturePage.xaml.cs">
<DependentUpon>LecturePage.xaml</DependentUpon>
</Compile>
<Compile Include="Feed\Mensa\MensaFeed.cs" />
<Compile Include="Pages\Lecture\ModulWebPage.xaml.cs">
<DependentUpon>ModulWebPage.xaml</DependentUpon>
</Compile>
<Compile Include="Model\Utility\ListPickerItemModel.cs" />
<Compile Include="Pages\Lecture\ResultDetailPage.xaml.cs">
<DependentUpon>ResultDetailPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\Lecture\ResultPage.xaml.cs">
<DependentUpon>ResultPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\Links\LinkPage.xaml.cs">
<DependentUpon>LinkPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\Mensa\MensaPage.xaml.cs">
<DependentUpon>MensaPage.xaml</DependentUpon>
</Compile>
<Compile Include="Feed\News\NewsFeed.cs" />
<Compile Include="Pages\News\NewsIndexPage.xaml.cs">
<DependentUpon>NewsIndexPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\News\NewsPage.xaml.cs">
<DependentUpon>NewsPage.xaml</DependentUpon>
</Compile>
<Compile Include="Model\RSS\RSSModel.cs" />
<Compile Include="Pages\Openinghours\OpeninghoursPage.xaml.cs">
<DependentUpon>OpeninghoursPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\StartPage.xaml.cs">
<DependentUpon>StartPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\StudentCouncil\StudentCouncilPage.xaml.cs">
<DependentUpon>StudentCouncilPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\Webmail\WebmailPage.xaml.cs">
<DependentUpon>WebmailPage.xaml</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Resources\AppResources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>AppResources.resx</DependentUpon>
</Compile>
<Compile Include="Resources\Constants.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Constants.resx</DependentUpon>
</Compile>
<Compile Include="ThemelizedIcons.cs" />
<Compile Include="Utility\Api.cs" />
<Compile Include="Utility\ApiEventHandler.cs" />
<Compile Include="Utility\File.cs" />
<Compile Include="Utility\Logger.cs" />
<Compile Include="Utility\HttpRequest.cs" />
<Compile Include="Utility\Lui\Button\GoToMapButton.cs" />
<Compile Include="Utility\Lui\Button\ToggleButton.cs" />
<Compile Include="Utility\Lui\Button\NavigateButton.cs" />
<Compile Include="Utility\Lui\Button\PhoneButton.cs" />
<Compile Include="Utility\Lui\Button\LinkButton.cs" />
<Compile Include="Utility\StringManager.cs" />
<Compile Include="Utility\Utilities.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Utility\XmlApi.cs" />
<Compile Include="Utility\XmlManager.cs" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</ApplicationDefinition>
<Page Include="Pages\Campusmap\CampusMapPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\Departments\DepartmentFavoritePage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\Departments\DepartmentIndexPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\Departments\DepartmentInfoPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\Departments\DepartmentPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\Lecture\LecturePage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\Lecture\ModulWebPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\Lecture\ResultDetailPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\Lecture\ResultPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\Events\EventIndexPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\Events\EventPage.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Pages\Links\LinkPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\Mensa\MensaPage.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Pages\News\NewsIndexPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\News\NewsPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\Openinghours\OpeninghoursPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="pages\StartPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\StudentCouncil\StudentCouncilPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\Webmail\WebmailPage.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Styles\StartPageStyles.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Styles\ListButton.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<None Include="Assets\psd\holo_optionsbuttons.psd" />
<None Include="Assets\psd\iconbutton_effects2.psd" />
<None Include="packages.config" />
<None Include="Properties\AppManifest.xml" />
<None Include="Properties\WMAppManifest.xml">
<SubType>Designer</SubType>
</None>
</ItemGroup>
<ItemGroup>
<Content Include="Assets\AlignmentGrid.png" />
<Content Include="Assets\ApplicationIcon.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Icons\DarkTheme\add_159.png" />
<Content Include="Assets\Icons\DarkTheme\btulogo_159.png" />
<Content Include="Assets\Icons\DarkTheme\campus_159.png" />
<Content Include="Assets\Icons\DarkTheme\delete_159.png" />
<Content Include="Assets\Icons\DarkTheme\favorite_159.png" />
<Content Include="Assets\Icons\DarkTheme\info_159.png" />
<Content Include="Assets\Icons\DarkTheme\phone_159.png" />
<Content Include="Assets\Icons\DarkTheme\update_159.png" />
<Content Include="Assets\Icons\LightTheme\add_159.png" />
<Content Include="Assets\Icons\LightTheme\btulogo_159.png" />
<Content Include="Assets\Icons\LightTheme\campus_159.png" />
<Content Include="Assets\Icons\DarkTheme\departments_159.png" />
<Content Include="Assets\Icons\LightTheme\delete_159.png" />
<Content Include="Assets\Icons\LightTheme\departments_159.png" />
<Content Include="Assets\Icons\DarkTheme\homework_159.png" />
<Content Include="Assets\Icons\LightTheme\favorite_159.png" />
<Content Include="Assets\Icons\LightTheme\homework_159.png" />
<Content Include="Assets\Icons\DarkTheme\link_159.png" />
<Content Include="Assets\Icons\LightTheme\info_159.png" />
<Content Include="Assets\Icons\LightTheme\link_159.png" />
<Content Include="Assets\Icons\DarkTheme\lectures_159.png" />
<Content Include="Assets\Icons\LightTheme\lectures_159.png" />
<Content Include="Assets\Icons\DarkTheme\mensa_159.png" />
<Content Include="Assets\Icons\LightTheme\mensa_159.png" />
<Content Include="Assets\Icons\DarkTheme\news_159.png" />
<Content Include="Assets\Icons\LightTheme\news_159.png" />
<Content Include="Assets\Icons\DarkTheme\openhours_159.png" />
<Content Include="Assets\Icons\LightTheme\openhours_159.png" />
<Content Include="Assets\Icons\DarkTheme\schedule_159.png" />
<Content Include="Assets\Icons\LightTheme\phone_159.png" />
<Content Include="Assets\Icons\LightTheme\schedule_159.png" />
<Content Include="Assets\Icons\DarkTheme\search_159.png" />
<Content Include="Assets\Icons\LightTheme\search_159.png" />
<Content Include="Assets\Icons\DarkTheme\student_council_159.png" />
<Content Include="Assets\Icons\LightTheme\student_council_159.png" />
<Content Include="Assets\Icons\DarkTheme\webmail_159.png" />
<Content Include="Assets\Icons\LightTheme\update_159.png" />
<Content Include="Assets\Icons\LightTheme\webmail_159.png" />
<Content Include="Assets\testmap.png" />
<Content Include="Assets\Tiles\FlipCycleTileLarge.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Tiles\FlipCycleTileMedium.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Tiles\FlipCycleTileSmall.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Tiles\IconicTileMediumLarge.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Tiles\IconicTileSmall.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Tiles\kachel_large.png" />
<Content Include="Assets\Tiles\kachel_medium.png" />
<Content Include="Assets\Tiles\kachel_small.png" />
<Content Include="README_FIRST.txt" />
<Content Include="Toolkit.Content\ApplicationBar.Cancel.png" />
<Content Include="Toolkit.Content\ApplicationBar.Check.png" />
<Content Include="Toolkit.Content\ApplicationBar.Delete.png" />
<Content Include="Toolkit.Content\ApplicationBar.Select.png" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\AppResources.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>AppResources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Constants.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Constants.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Icons.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.Phone.Controls, Version=8.0.0.0, Culture=neutral, PublicKeyToken=24eec0d8c86cda1e, processorArchitecture=MSIL" />
<Reference Include="Microsoft.Phone.Controls.Toolkit">
<HintPath>..\packages\WPtoolkit.4.2012.10.30\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<ProjectExtensions />
</Project>

View File

@@ -0,0 +1,33 @@
//-----------------------------------------------------------------------
// <copyright file="Const.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>08.07.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8
{
using CampusAppWP8.Resources;
/// <summary>
/// Access to Constants.rex
/// </summary>
public class Const
{
/// <summary>
/// Resource object.
/// </summary>
private static Constants constantResources = new Constants();
/// <summary>
/// Gets the resource object.
/// </summary>
public Constants Constants
{
get
{
return constantResources;
}
}
}
}

View File

@@ -0,0 +1,105 @@
//-----------------------------------------------------------------------
// <copyright file="DepartmentFavoriteFeed.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>01.07.2013</sience>
//----------------------------------------------------------------------using System;
namespace CampusAppWP8.Feed.Departments
{
using System;
using System.IO;
using CampusAppWP8.Model;
using CampusAppWP8.Model.Departments;
using CampusAppWP8.Resources;
using CampusAppWP8.Utility;
/// <summary>
/// Feed object to handle favorite department feeds.
/// </summary>
public class DepartmentFavoriteFeed : XmlModel<DepartmentModel>
{
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="DepartmentFavoriteFeed" /> class.
/// </summary>
/// <param name="autoLoad">automatic loading of the data</param>
public DepartmentFavoriteFeed(bool autoLoad = true)
: base(ModelType.File, Constants.FileDepartment_Favorite_Name, string.Empty)
{
this.isFileUpToDateOnLoad += new IsFileUpToDate(this.CheckIsFileUpToDateOnLoad);
this.isFileUpToDateOnSave += new IsFileUpToDate(this.CheckIsFileUpToDateOnSave);
if (autoLoad == true)
{
this.LoadData();
}
}
// Constructor
#endregion
#region Method
#region Protected
/// <summary>
/// Method implement CheckIsModelUpToDate()-Method <see cref="Pages"/>.
/// </summary>
/// <param name="model">model object</param>
/// <returns>true, if model is up-to-date, otherwise false</returns>
private bool CheckIsModelUpToDate(DepartmentModel model)
{
bool retValue = true;
if ((model == null)
|| (model.Faculties == null)
|| (model.Faculties.Count != 1))
{
retValue = false;
}
return retValue;
}
/// <summary>
/// Method implement CheckIsFileUpToDate()-Method <see cref="Pages"/>.
/// </summary>
/// <param name="model">model object</param>
/// <param name="info">file info object</param>
/// <returns>true, if file is up-to-date, otherwise false</returns>
private bool CheckIsFileUpToDateOnLoad(DepartmentModel model, FileInfo info)
{
bool retValue = false;
if (this.Model == null)
{
retValue = true;
}
return retValue;
}
/// <summary>
/// Method implement CheckIsFileUpToDate()-Method <see cref="Pages"/>.
/// </summary>
/// <param name="model">model object</param>
/// <param name="info">file info object</param>
/// <returns>true, if file is up-to-date, otherwise false</returns>
private bool CheckIsFileUpToDateOnSave(DepartmentModel model, FileInfo info)
{
bool retValue = false;
retValue = (model.HasChanged() == false) ? true : false;
return retValue;
}
// Protected
#endregion
// Method
#endregion
}
}

View File

@@ -0,0 +1,116 @@
//-----------------------------------------------------------------------
// <copyright file="DepartmentFeed.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>24.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Feed.Departments
{
using System.IO;
using CampusAppWP8.Model;
using CampusAppWP8.Model.Departments;
using CampusAppWP8.Resources;
using CampusAppWP8.Utility;
/// <summary>
/// Feed class for the department information.
/// </summary>
public class DepartmentFeed : XmlModel<DepartmentModel>
{
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="DepartmentFeed" /> class.
/// </summary>
/// <param name="autoLoad">automatic loading of the data</param>
public DepartmentFeed(bool autoLoad = true)
: base(ModelType.FileAndFeed, Constants.FileDepartment_Name, Constants.UrlDepartment_Addr)
{
this.isFileUpToDateOnLoad += new IsFileUpToDate(this.CheckIsFileUpToDateOnLoad);
this.isFileUpToDateOnSave += new IsFileUpToDate(this.CheckIsFileUpToDateOnSave);
this.isModelUpToDateOnLoad += new IsModelUpToDate(this.CheckIsModelUpToDate);
if (autoLoad == true)
{
this.LoadData();
}
}
// Constructor
#endregion
#region Method
#region Protected
/// <summary>
/// Method implement CheckIsModelUpToDate()-Method <see cref="Pages"/>.
/// </summary>
/// <param name="model">model object</param>
/// <returns>true, if model is up-to-date, otherwise false</returns>
private bool CheckIsModelUpToDate(DepartmentModel model)
{
bool retValue = true;
if (model == null)
{
retValue = false;
}
else
{
retValue = Utilities.DayDifference(Utilities.DifferenceType.Less, model.CreateTime, 7.0);
}
return retValue;
}
/// <summary>
/// Method implement CheckIsFileUpToDate()-Method <see cref="Pages"/>.
/// </summary>
/// <param name="model">model object</param>
/// <param name="info">file info object</param>
/// <returns>true, if file is up-to-date, otherwise false</returns>
private bool CheckIsFileUpToDateOnLoad(DepartmentModel model, FileInfo info)
{
bool retValue = true;
if (model == null)
{
// at loading
if (info.Exists == true)
{
retValue = Utilities.DayDifference(Utilities.DifferenceType.Less, info.LastWriteTime, 7.0);
}
}
return retValue;
}
/// <summary>
/// Method implement CheckIsFileUpToDate()-Method <see cref="Pages"/>.
/// </summary>
/// <param name="model">model object</param>
/// <param name="info">file info object</param>
/// <returns>true, if file is up-to-date, otherwise false</returns>
private bool CheckIsFileUpToDateOnSave(DepartmentModel model, FileInfo info)
{
bool retValue = true;
// at saving
if ((info.Exists == false)
|| (info.Length == 0))
{
retValue = false;
}
return retValue;
}
// Protedted
#endregion
// Method
#endregion
}
}

View File

@@ -0,0 +1,100 @@
//-----------------------------------------------------------------------
// <copyright file="EventFeed.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>24.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Feed.Events
{
using System.IO;
using CampusAppWP8.Model;
using CampusAppWP8.Model.RSS;
using CampusAppWP8.Resources;
using CampusAppWP8.Utility;
/// <summary>
/// Event Feed.
/// </summary>
public class EventFeed : XmlModel<RSSViewModel>
{
/// <summary>
/// Initializes a new instance of the <see cref="EventFeed" /> class.
/// </summary>
/// <param name="autoLoad">automatic loading of the data</param>
public EventFeed(bool autoLoad = true)
: base(ModelType.FileAndFeed, Constants.FileEvents_Name, Constants.UrlEvents_Addr)
{
this.isFileUpToDateOnLoad += new IsFileUpToDate(this.CheckIsFileUpToDateOnLoad);
this.isFileUpToDateOnSave += new IsFileUpToDate(this.CheckIsFileUpToDateOnSave);
this.isModelUpToDateOnLoad += new IsModelUpToDate(this.CheckIsModelUpToDate);
if (autoLoad == true)
{
this.LoadData();
}
}
/// <summary>
/// Method implement CheckIsModelUpToDate()-Method <see cref="Pages"/>
/// </summary>
/// <param name="model">model object</param>
/// <returns>true, if model is up-to-date, otherwise false</returns>
private bool CheckIsModelUpToDate(RSSViewModel model)
{
bool retValue = true;
if (model == null)
{
retValue = false;
}
else
{
retValue = Utilities.DayDifference(Utilities.DifferenceType.Less, model.CreateTime, 1.0);
}
return retValue;
}
/// <summary>
/// Method implement CheckIsFileUpToDate()-Method <see cref="Pages"/>
/// </summary>
/// <param name="model">model object</param>
/// <param name="info">file info object</param>
/// <returns>true, if file is up-to-date, otherwise false</returns>
private bool CheckIsFileUpToDateOnLoad(RSSViewModel model, FileInfo info)
{
bool retValue = true;
if (model == null)
{
// at loading
if (info.Exists == true)
{
retValue = Utilities.DayDifference(Utilities.DifferenceType.Less, info.LastWriteTime, 1.0);
}
}
return retValue;
}
/// <summary>
/// Method implement CheckIsFileUpToDate()-Method <see cref="Pages"/>
/// </summary>
/// <param name="model">model object</param>
/// <param name="info">file info object</param>
/// <returns>true, if file is up-to-date, otherwise false</returns>
private bool CheckIsFileUpToDateOnSave(RSSViewModel model, FileInfo info)
{
bool retValue = true;
if ((info.Exists == false)
|| (info.Length == 0))
{
retValue = false;
}
return retValue;
}
}
}

View File

@@ -0,0 +1,90 @@
//-----------------------------------------------------------------------
// <copyright file="ClubLinkFeed.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>02.07.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Feed.Link
{
using System;
using System.IO;
using CampusAppWP8.Model;
using CampusAppWP8.Model.Link;
using CampusAppWP8.Resources;
/// <summary>
/// This Class is for ClubLinkFeeds
/// </summary>
public class ClubLinkFeed : XmlModel<LinkListModel>
{
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="ClubLinkFeed" /> class.
/// </summary>
public ClubLinkFeed()
: base(ModelType.FileAndFeed, Constants.FileLink_ClubLinks, Constants.UrlLink_ClubLinks)
{
this.isFileUpToDate += new IsFileUpToDate(this.CheckIsFileUpToDate);
this.isModelUpToDate += new IsModelUpToDate(this.CheckIsModelUpToDate);
}
#endregion
#region Method
#region Private
/// <summary>
/// Method check if the FeedModel is up-to-date
/// </summary>
/// <param name="model">reference of the FeedModel</param>
/// <returns>true, if model is up-to-date, otherwise false</returns>
private bool CheckIsModelUpToDate(LinkListModel model)
{
if (model == null)
{
return false;
}
DateTime lastModified = model.CreateTime;
return this.CheckIsUpToDate(lastModified);
}
/// <summary>
/// Method check if the FeedFile is up-to-date
/// </summary>
/// <param name="model">reference of the FeedModel</param>
/// <param name="fileInfo">info about the file</param>
/// <returns>true, if file is up-to-date, otherwise false</returns>
private bool CheckIsFileUpToDate(LinkListModel model, FileInfo fileInfo)
{
DateTime lastModified = fileInfo.LastWriteTime;
return this.CheckIsUpToDate(lastModified);
}
/// <summary>
/// Check if the model or file is up-to-date.
/// </summary>
/// <param name="lastModified">Date of the last modification</param>
/// <returns>true, if is up-to-date, otherwise false</returns>
private bool CheckIsUpToDate(DateTime lastModified)
{
DateTime temp = lastModified.AddDays(1);
int diff = temp.CompareTo(DateTime.Now);
if (diff < 0)
{
return false;
}
return true;
}
#endregion
#endregion
}
}

View File

@@ -0,0 +1,90 @@
//-----------------------------------------------------------------------
// <copyright file="CommonLinkFeed.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>02.07.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Feed.Link
{
using System;
using System.IO;
using CampusAppWP8.Model;
using CampusAppWP8.Model.Link;
using CampusAppWP8.Resources;
/// <summary>
/// This Class is for CommonLinkFeeds
/// </summary>
public class CommonLinkFeed : XmlModel<LinkListModel>
{
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="CommonLinkFeed" /> class.
/// </summary>
public CommonLinkFeed()
: base(ModelType.FileAndFeed, Constants.FileLink_CommonLinks, Constants.UrlLink_CommonLinks)
{
this.isFileUpToDate += new IsFileUpToDate(this.CheckIsFileUpToDate);
this.isModelUpToDate += new IsModelUpToDate(this.CheckIsModelUpToDate);
}
#endregion
#region Method
#region Private
/// <summary>
/// Method check if the FeedModel is up-to-date
/// </summary>
/// <param name="model">reference of the FeedModel</param>
/// <returns>true, if model is up-to-date, otherwise false</returns>
private bool CheckIsModelUpToDate(LinkListModel model)
{
if (model == null)
{
return false;
}
DateTime lastModified = model.CreateTime;
return this.CheckIsUpToDate(lastModified);
}
/// <summary>
/// Method check if the FeedFile is up-to-date
/// </summary>
/// <param name="model">reference of the FeedModel</param>
/// <param name="fileInfo">info about the file</param>
/// <returns>true, if file is up-to-date, otherwise false</returns>
private bool CheckIsFileUpToDate(LinkListModel model, FileInfo fileInfo)
{
DateTime lastModified = fileInfo.LastWriteTime;
return this.CheckIsUpToDate(lastModified);
}
/// <summary>
/// Check if the model or file is up-to-date.
/// </summary>
/// <param name="lastModified">Date of the last modification</param>
/// <returns>true, if is up-to-date, otherwise false</returns>
private bool CheckIsUpToDate(DateTime lastModified)
{
DateTime temp = lastModified.AddDays(1);
int diff = temp.CompareTo(DateTime.Now);
if (diff < 0)
{
return false;
}
return true;
}
#endregion
#endregion
}
}

View File

@@ -5,17 +5,18 @@
// <author>stubbfel</author>
// <sience>03.05.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Pages.Mensa
namespace CampusAppWP8.Feed.Mensa
{
using System;
using System.Collections.ObjectModel;
using System.IO;
using CampusAppWP8.Model;
using CampusAppWP8.Model.Mensa;
using CampusAppWP8.Utility;
using CampusAppWP8.Resources;
/// <summary>
/// This Class is for MesaFeeds
/// This Class is for MensaFeeds
/// </summary>
public class MensaFeed : XmlFeed<MenuWeekModel>
public class MensaFeed : XmlModel<MenuWeekModel>
{
#region Constructor
@@ -23,63 +24,44 @@ namespace CampusAppWP8.Pages.Mensa
/// Initializes a new instance of the <see cref="MensaFeed" /> class.
/// </summary>
public MensaFeed()
: base(URLList.MensaFeedURL, FileList.MensaXmlFile)
: base(ModelType.FileAndFeed, Constants.FileMensa_Shedule, Constants.UrlMensa_Week)
{
this.isFileUpToDate += new IsFileUpToDate(this.CheckIsFileUpToDate);
this.isModelUpToDate += new IsModelUpToDate(this.CheckIsModelUpToDate);
}
#endregion
#region Proberty
/// <summary>
/// Gets or sets i List of MenuModel
/// </summary>
public ObservableCollection<MenuModel> Menus { get; set; }
#endregion
#region Method
#region Protected
/// <summary>
/// Method implement CheckIsModelUpToDate()-Method <see cref="Feed"/>
/// </summary>
/// <returns>true, if model is up-to-date, otherwise false</returns>
protected override bool CheckIsModelUpToDate()
{
DateTime lastModified = this.Model.CreateTime;
return this.CheckIsUpToDate(lastModified);
}
/// <summary>
/// Method implement CheckIsFileUpToDate()-Method <see cref="Feed"/>
/// </summary>
/// <returns>true, if file is up-to-date, otherwise false</returns>
protected override bool CheckIsFileUpToDate()
{
DateTime lastModified = FileManager.GetFileInfo(FileName).LastWriteTime;
return this.CheckIsUpToDate(lastModified);
}
#endregion
#region Private
/// <summary>
/// Method calculate this day of the week, which its gets new menus
/// Method check if the FeedModel is up-to-date
/// </summary>
/// <returns>Date of NewMenuWeekDay</returns>
private DateTime CalcNewMenuWeekDay()
/// <param name="model">reference of the FeedModel</param>
/// <returns>true, if model is up-to-date, otherwise false</returns>
private bool CheckIsModelUpToDate(MenuWeekModel model)
{
DateTime now = DateTime.Now;
while (now.DayOfWeek != DayOfWeek.Monday)
if (model == null)
{
now = now.Subtract(new TimeSpan(1, 0, 0, 0));
return false;
}
DateTime monday = new DateTime(now.Year, now.Month, now.Day);
return monday;
DateTime lastModified = model.CreateTime;
return this.CheckIsUpToDate(lastModified);
}
/// <summary>
/// Method check if the FeedFile is up-to-date
/// </summary>
/// <param name="model">reference of the FeedModel</param>
/// <param name="fileInfo">info about the file</param>
/// <returns>true, if file is up-to-date, otherwise false</returns>
private bool CheckIsFileUpToDate(MenuWeekModel model, FileInfo fileInfo)
{
DateTime lastModified = fileInfo.LastWriteTime;
return this.CheckIsUpToDate(lastModified);
}
/// <summary>
@@ -89,7 +71,7 @@ namespace CampusAppWP8.Pages.Mensa
/// <returns>true, if is up-to-date, otherwise false</returns>
private bool CheckIsUpToDate(DateTime lastModified)
{
int diff = lastModified.CompareTo(this.CalcNewMenuWeekDay());
int diff = lastModified.CompareTo(MenuWeekModel.CalcFirstWeekDay());
if (diff < 0)
{

View File

@@ -0,0 +1,99 @@
//-----------------------------------------------------------------------------
// <copyright file="NewsFeed.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>24.06.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8.Feed.News
{
using System.IO;
using CampusAppWP8.Model;
using CampusAppWP8.Model.RSS;
using CampusAppWP8.Resources;
using CampusAppWP8.Utility;
/// <summary>
/// News Feed.
/// </summary>
public class NewsFeed : XmlModel<RSSViewModel>
{
/// <summary>
/// Initializes a new instance of the <see cref="NewsFeed" /> class.
/// </summary>
/// <param name="autoLoad">automatic loading of the data</param>
public NewsFeed(bool autoLoad = true)
: base(ModelType.FileAndFeed, Constants.FileNews_Name, Constants.UrlNews_Addr)
{
this.isFileUpToDateOnLoad += new IsFileUpToDate(this.CheckIsFileUpToDateOnLoad);
this.isFileUpToDateOnSave += new IsFileUpToDate(this.CheckIsFileUpToDateOnSave);
this.isModelUpToDateOnLoad += new IsModelUpToDate(this.CheckIsModelUpToDate);
if (autoLoad == true)
{
this.LoadData();
}
}
/// <summary>
/// Method implement CheckIsModelUpToDate()-Method <see cref="Pages"/>
/// </summary>
/// <param name="model">model object</param>
/// <returns>true, if model is up-to-date, otherwise false</returns>
private bool CheckIsModelUpToDate(RSSViewModel model)
{
bool retValue = true;
if (model == null)
{
retValue = false;
}
else
{
retValue = Utilities.DayDifference(Utilities.DifferenceType.Less, model.CreateTime, 1.0);
}
return retValue;
}
/// <summary>
/// Method implement CheckIsFileUpToDate()-Method <see cref="Pages"/>
/// </summary>
/// <param name="model">model object</param>
/// <param name="info">info object of the file</param>
/// <returns>true, if file is up-to-date, otherwise false</returns>
private bool CheckIsFileUpToDateOnLoad(RSSViewModel model, FileInfo info)
{
bool retValue = true;
if (model == null)
{
if (info.Exists == true)
{
retValue = Utilities.DayDifference(Utilities.DifferenceType.Less, info.LastWriteTime, 1.0);
}
}
return retValue;
}
/// <summary>
/// Method implement CheckIsFileUpToDate()-Method <see cref="Pages"/>
/// </summary>
/// <param name="model">model object</param>
/// <param name="info">info object of the file</param>
/// <returns>true, if file is up-to-date, otherwise false</returns>
private bool CheckIsFileUpToDateOnSave(RSSViewModel model, FileInfo info)
{
bool retValue = true;
if ((info.Exists == false)
|| (info.Length == 0))
{
retValue = false;
}
return retValue;
}
}
}

View File

@@ -0,0 +1,106 @@
//-----------------------------------------------------------------------
// <copyright file="OpeninghoursFeed.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>24.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Feed.Openinghours
{
using System;
using System.IO;
using CampusAppWP8.Model;
using CampusAppWP8.Model.Openinghours;
using CampusAppWP8.Resources;
using CampusAppWP8.Utility;
/// <summary>
/// This Class is for MesaFeeds
/// </summary>
public class OpeninghoursFeed : XmlModel<OpeninghoursModel>
{
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="OpeninghoursFeed" /> class.
/// </summary>
public OpeninghoursFeed()
: base(ModelType.FileAndFeed, Constants.FileOpeningHours_OpeningHours, Constants.UrlOpeningHours_OpeningHours)
{
this.isFileUpToDateOnLoad += new IsFileUpToDate(this.CheckIsFileUpToDateOnLoad);
this.isFileUpToDateOnSave += new IsFileUpToDate(this.CheckIsFileUpToDateOnSave);
this.isModelUpToDateOnLoad += new IsModelUpToDate(this.CheckIsModelUpToDate);
}
#endregion
#region Method
#region Private
/// <summary>
/// Method check if the FeedModel is up-to-date
/// </summary>
/// <param name="model">reference of the FeedModel</param>
/// <returns>true, if model is up-to-date, otherwise false</returns>
private bool CheckIsModelUpToDate(OpeninghoursModel model)
{
bool retValue = true;
if (model == null)
{
retValue = false;
}
else
{
retValue = Utilities.DayDifference(Utilities.DifferenceType.Less, model.CreateTime, 7.0);
}
return retValue;
}
/// <summary>
/// Method check if the FeedFile is up-to-date
/// </summary>
/// <param name="model">reference of the FeedModel</param>
/// <param name="info">info about the file</param>
/// <returns>true, if file is up-to-date, otherwise false</returns>
private bool CheckIsFileUpToDateOnLoad(OpeninghoursModel model, FileInfo info)
{
bool retValue = true;
if (model == null)
{
if (info.Exists == true)
{
retValue = Utilities.DayDifference(Utilities.DifferenceType.Less, info.LastWriteTime, 7.0);
}
}
return retValue;
}
/// <summary>
/// Method check if the FeedFile is up-to-date
/// </summary>
/// <param name="model">reference of the FeedModel</param>
/// <param name="info">info about the file</param>
/// <returns>true, if file is up-to-date, otherwise false</returns>
private bool CheckIsFileUpToDateOnSave(OpeninghoursModel model, FileInfo info)
{
bool retValue = true;
if ((info.Exists == false)
|| (info.Length == 0))
{
retValue = false;
}
return retValue;
}
#endregion
#endregion
}
}

View File

@@ -0,0 +1,90 @@
//-----------------------------------------------------------------------
// <copyright file="StudentCouncilFeed.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>02.07.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Feed.StudentCouncil
{
using System;
using System.IO;
using CampusAppWP8.Model;
using CampusAppWP8.Model.StudentCouncil;
using CampusAppWP8.Resources;
/// <summary>
/// This Class is for StudentCouncilFeed
/// </summary>
public class StudentCouncilFeed : XmlModel<StudentCouncilListModel>
{
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="StudentCouncilFeed" /> class.
/// </summary>
public StudentCouncilFeed()
: base(ModelType.FileAndFeed, Constants.FileStudentCouncil_StudentCouncils, Constants.UrlStudentCouncil_StudentCouncils)
{
this.isFileUpToDate += new IsFileUpToDate(this.CheckIsFileUpToDate);
this.isModelUpToDate += new IsModelUpToDate(this.CheckIsModelUpToDate);
}
#endregion
#region Method
#region Private
/// <summary>
/// Method check if the FeedModel is up-to-date
/// </summary>
/// <param name="model">reference of the FeedModel</param>
/// <returns>true, if model is up-to-date, otherwise false</returns>
private bool CheckIsModelUpToDate(StudentCouncilListModel model)
{
if (model == null)
{
return false;
}
DateTime lastModified = model.CreateTime;
return this.CheckIsUpToDate(lastModified);
}
/// <summary>
/// Method check if the FeedFile is up-to-date
/// </summary>
/// <param name="model">reference of the FeedModel</param>
/// <param name="fileInfo">info about the file</param>
/// <returns>true, if file is up-to-date, otherwise false</returns>
private bool CheckIsFileUpToDate(StudentCouncilListModel model, FileInfo fileInfo)
{
DateTime lastModified = fileInfo.LastWriteTime;
return this.CheckIsUpToDate(lastModified);
}
/// <summary>
/// Check if the model or file is up-to-date.
/// </summary>
/// <param name="lastModified">Date of the last modification</param>
/// <returns>true, if is up-to-date, otherwise false</returns>
private bool CheckIsUpToDate(DateTime lastModified)
{
DateTime temp = lastModified.AddDays(1);
int diff = temp.CompareTo(DateTime.Now);
if (diff < 0)
{
return false;
}
return true;
}
#endregion
#endregion
}
}

View File

@@ -0,0 +1,177 @@
//-----------------------------------------------------------------------
// <copyright file="MapModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>24.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.Campusmap
{
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
/// <summary>
/// This Class manage the properties of a Map
/// </summary>
public class MapModel
{
#region Constructors
/// <summary>
/// Initializes a new instance of the <see cref="MapModel" /> class.
/// </summary>
public MapModel()
{
}
#endregion
#region Property
/// <summary>
/// Gets or sets the ImageSource of the map
/// </summary>
public string ImageSource { get; set; }
/// <summary>
/// Gets or sets the ImageWidth of the map
/// </summary>
public double ImageWidth { get; set; }
/// <summary>
/// Gets or sets the ImageHeight of the map
/// </summary>
public double ImageHeight { get; set; }
/// <summary>
/// Gets or sets the ImageOffsetX of the map
/// </summary>
public double MapImageOffsetX { get; set; }
/// <summary>
/// Gets or sets the ImageOffsetY of the map
/// </summary>
public double MapImageOffsetY { get; set; }
/// <summary>
/// Gets or sets the GeoOffsetX of the map
/// </summary>
public double GeoOffsetX { get; set; }
/// <summary>
/// Gets or sets the GeoOffsetY of the map
/// </summary>
public double GeoOffsetY { get; set; }
/// <summary>
/// Gets or sets the Scale (to pixel) of the map
/// </summary>
public double Scale { get; set; }
/// <summary>
/// Gets or sets the reference point
/// </summary>
public Point RefPoint { get; set; }
#endregion
#region Methods
/// <summary>
/// Method calculate the coordinates of ScrollToOffsets point
/// </summary>
/// <param name="point">input point</param>
/// <returns>point (in pixel)</returns>
public Point GetScrollPoint(Point point)
{
return this.GetScrollPoint(point.X, point.Y);
}
/// <summary>
/// Method calculate the coordinates of ScrollToOffsets point
/// </summary>
/// <remarks>the input-point will be shown in the center</remarks>
/// <param name="x">x - coordinate</param>
/// <param name="y">y - coordinate</param>
/// <returns>point (in pixel)</returns>
public Point GetScrollPoint(double x, double y)
{
x = this.RefPoint.X + this.MapImageOffsetX + x;
y = this.RefPoint.Y + this.MapImageOffsetY - y;
return new Point(x, y);
}
/// <summary>
/// Method create in image, which can show at a certain position
/// </summary>
/// <param name="x">the x- coordinate</param>
/// <param name="y">the y-coordinate</param>
/// <returns>image of the pin</returns>
public Image AddPin(double x, double y)
{
Point position = new Point(x, y);
return this.AddPin(position);
}
/// <summary>
/// Method create in image, which can show at a certain position depend of the <see cref="RefPoint" />
/// </summary>
/// <param name="x">the x-coordinate</param>
/// <param name="y">the y-coordinate</param>
/// <returns>image of the pin</returns>
public Image AddPinFromRefPoint(double x, double y)
{
Point position = new Point(this.RefPoint.X + x, this.RefPoint.Y - y);
return this.AddPin(position);
}
/// <summary>
/// Method create in image, which can show at a certain position depend of the <see cref="RefPoint" />
/// </summary>
/// <param name="position">input point</param>
/// <returns>image of the pin</returns>
public Image AddPinFromRefPoint(Point position)
{
return this.AddPinFromRefPoint(position.X, position.Y);
}
/// <summary>
/// Method create in image, which can show at a certain position
/// </summary>
/// <param name="position">input point</param>
/// <returns>image of the pin</returns>
public Image AddPin(Point position)
{
MapPinModel pin = new MapPinModel() { Position = position };
Image pinImg = new Image() { Source = new BitmapImage(new Uri(pin.ImageSource, UriKind.Relative)), Width = pin.ImageWidth };
Canvas.SetTop(pinImg, pin.Position.Y);
Canvas.SetLeft(pinImg, pin.Position.X);
return pinImg;
}
/// <summary>
/// Convert a coordinates to coordinates which address pixels
/// </summary>
/// <param name="x">the x-coordinate</param>
/// <param name="y">the y-coordinate</param>
/// <returns>Point in pixel-size</returns>
public Point ConverToPixelPoint(double x, double y)
{
return new Point { X = this.Scale * x, Y = this.Scale * y };
}
/// <summary>
/// Convert a coordinates to coordinates which address pixels
/// </summary>
/// <param name="point">not scaled point</param>
/// <returns>Point in pixel-size</returns>
public Point ConverToPixelPoint(Point point)
{
return this.ConverToPixelPoint(point.X, point.Y);
}
#endregion
}
}

View File

@@ -0,0 +1,106 @@
//-----------------------------------------------------------------------
// <copyright file="MapPinModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>24.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.Campusmap
{
using System.Windows;
/// <summary>
/// This Class manage the properties of a MapPin
/// </summary>
public class MapPinModel
{
#region Member
/// <summary>
/// Variable of the actual position of the pin
/// </summary>
private Point position;
#endregion
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="MapPinModel" /> class.
/// </summary>
public MapPinModel()
{
this.ImageSource = "/Assets/icons/search_159_light.png";
this.ImageWidth = 60;
this.ImageHeight = 60;
this.PinImageOffsetX = -24;
this.PinImageOffsetY = -24;
}
#endregion
#region Property
/// <summary>
/// Gets or sets the ImageSource of the pin
/// </summary>
public string ImageSource { get; set; }
/// <summary>
/// Gets or sets the ImageWidth of the pin
/// </summary>
public double ImageWidth { get; set; }
/// <summary>
/// Gets or sets the ImageHeight of the pin
/// </summary>
public double ImageHeight { get; set; }
/// <summary>
/// Gets or sets the ImageOffsetX of the pin
/// </summary>
public double PinImageOffsetX { get; set; }
/// <summary>
/// Gets or sets the ImageOffsetY of the pin
/// </summary>
public double PinImageOffsetY { get; set; }
/// <summary>
/// Gets or sets position of the pin
/// </summary>
public Point Position
{
get
{
return this.position;
}
set
{
// null assert
if (value == null)
{
return;
}
if (this.position == null)
{
this.position = value;
return;
}
// check the x-value
if (value.X + this.PinImageOffsetX != this.position.X)
{
this.position.X = value.X + this.PinImageOffsetX;
}
// check the y-value
if (value.Y + this.PinImageOffsetY != this.position.Y)
{
this.position.Y = value.Y + this.PinImageOffsetY;
}
}
}
#endregion
}
}

View File

@@ -0,0 +1,128 @@
//-----------------------------------------------------------------------
// <copyright file="ChairModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>24.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.Departments
{
using System.Globalization;
using System.Xml.Serialization;
/// <summary>
/// Class to hold information about a professorship chair.
/// </summary>
public class ChairModel
{
/// <summary>
/// German name of the chair.
/// </summary>
private string nameDE = string.Empty;
/// <summary>
/// Link to the chair page.
/// </summary>
private string url = string.Empty;
/// <summary>
/// English name of the chair.
/// </summary>
private string nameEN = string.Empty;
/// <summary>
/// Initializes a new instance of the <see cref="ChairModel" /> class.
/// </summary>
public ChairModel()
{
}
/// <summary>
/// Initializes a new instance of the <see cref="ChairModel" /> class.
/// </summary>
/// <param name="name">name of the chair</param>
public ChairModel(string name)
{
this.nameDE = name;
this.nameEN = name;
}
/// <summary>
/// Gets or sets the german name of the chair.
/// </summary>
[XmlAttribute("name_de")]
public string NameDE
{
get
{
return this.nameDE;
}
set
{
if (value != this.nameDE)
{
this.nameDE = value;
}
}
}
/// <summary>
/// Gets or sets the english name of the chair.
/// </summary>
[XmlAttribute("name_en")]
public string NameEN
{
get
{
return this.nameEN;
}
set
{
if (value != this.nameEN)
{
this.nameEN = value;
}
}
}
/// <summary>
/// Gets or sets the url of the chair homepage.
/// </summary>
[XmlAttribute("url")]
public string Url
{
get
{
return this.url;
}
set
{
if (value != this.url)
{
this.url = value;
}
}
}
/// <summary>
/// Gets the localized name of the chair.
/// </summary>
public string Name
{
get
{
if (CultureInfo.CurrentUICulture.Name.StartsWith("de"))
{
return this.NameDE;
}
else
{
return this.NameEN;
}
}
}
}
}

View File

@@ -0,0 +1,91 @@
//-----------------------------------------------------------------------
// <copyright file="DepartmentModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>24.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.Departments
{
using System;
using System.Collections.ObjectModel;
using System.Xml.Serialization;
/// <summary>
/// View model for department page.
/// </summary>
[XmlRoot("root")]
public class DepartmentModel
{
/// <summary>
/// Object to store the time when the instance was created.
/// </summary>
private DateTime createTime;
/// <summary>
/// List of faculties.
/// </summary>
private ObservableCollection<FacultyModel> faculties;
/// <summary>
/// Initializes a new instance of the <see cref="DepartmentModel" /> class.
/// </summary>
public DepartmentModel()
{
this.Faculties = new ObservableCollection<FacultyModel>();
this.createTime = DateTime.Now;
}
/// <summary>
/// Gets or sets the faculty list.
/// </summary>
[XmlArray("professorships")]
[XmlArrayItem("faculty")]
public ObservableCollection<FacultyModel> Faculties
{
get
{
return this.faculties;
}
set
{
if (value != this.faculties)
{
this.faculties = value;
}
}
}
/// <summary>
/// Gets the creation time.
/// </summary>
public DateTime CreateTime
{
get
{
return this.createTime;
}
}
/// <summary>
/// Check if the content of the faculty lists hast changed since the
/// last call of this function.
/// </summary>
/// <returns>true, if changes happen since last request, otherwise false</returns>
public bool HasChanged()
{
bool retValue = false;
foreach (FacultyModel temp in this.Faculties)
{
if ((temp.HasChanged() == true) && (retValue == false))
{
retValue = true;
}
}
return retValue;
}
}
}

View File

@@ -0,0 +1,238 @@
//-----------------------------------------------------------------------
// <copyright file="FacultyModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>24.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.Departments
{
using System.Collections.ObjectModel;
using System.Xml.Serialization;
using CampusAppWP8.Resources;
/// <summary>
/// Model for holding the faculty information.
/// </summary>
public class FacultyModel
{
/// <summary>
/// Object to hold the information of the chair containing to this
/// faculty.
/// </summary>
private ObservableCollection<ChairModel> chairs;
/// <summary>
/// Name of the faculty.
/// </summary>
private string name = string.Empty;
/// <summary>
/// For checking of change.
/// </summary>
private bool hasChanged = false;
/// <summary>
/// Initializes a new instance of the <see cref="FacultyModel" /> class.
/// </summary>
public FacultyModel()
{
this.chairs = new ObservableCollection<ChairModel>();
}
/// <summary>
/// Initializes a new instance of the <see cref="FacultyModel" /> class.
/// </summary>
/// <param name="name">name of the faculty</param>
public FacultyModel(string name)
{
this.name = name;
this.chairs = new ObservableCollection<ChairModel>();
}
/// <summary>
/// Gets or sets the list of the chairs containing to this faculty.
/// </summary>
[XmlElement("chair")]
public ObservableCollection<ChairModel> Chairs
{
get
{
return this.chairs;
}
set
{
if (value != this.chairs)
{
this.chairs = value;
}
}
}
/// <summary>
/// Gets the name of the faculty.
/// </summary>
public string Name
{
get
{
return AppResources.Faculty + " " + this.name;
}
}
/// <summary>
/// Gets or sets the id of the faculty.
/// </summary>
[XmlAttribute("id")]
public string Id
{
get
{
return this.name;
}
set
{
this.name = value;
}
}
/// <summary>
/// Remove a chair model from the lost.
/// </summary>
/// <param name="chairName">name of the chair</param>
/// <returns>true, if succeeded</returns>
public bool RemoveChair(string chairName)
{
bool retValue = false;
ChairModel tempChair = null;
foreach (ChairModel temp in this.Chairs)
{
if (temp.Name.Equals(chairName) == true)
{
tempChair = temp;
}
}
if (tempChair != null)
{
retValue = this.Chairs.Remove(tempChair);
this.hasChanged = true;
}
return retValue;
}
/// <summary>
/// Add a chair to the list, if it does not already exist.
/// </summary>
/// <param name="chairModel">chair model to add</param>
/// <returns>true, is succeeded</returns>
public bool AddChair(ChairModel chairModel)
{
bool retValue = false;
if ((chairModel != null)
&& (this.Chairs.Contains(chairModel) == false))
{
bool isIn = false;
foreach (ChairModel temp in this.Chairs)
{
if ((temp.NameDE.Equals(chairModel.NameDE) == true)
|| (temp.NameEN.Equals(chairModel.NameEN) == true))
{
isIn = true;
}
}
if (isIn == false)
{
this.Chairs.Add(chairModel);
this.hasChanged = true;
retValue = true;
}
}
return retValue;
}
/// <summary>
/// Create a chair model and add it to the list, if it does not already
/// exist.
/// </summary>
/// <param name="nameDE">german name of the chair</param>
/// <param name="nameEN">english name of the chair</param>
/// <param name="url">url of the chair home page</param>
/// <returns>true, if succeeded</returns>
public bool AddChair(string nameDE, string nameEN, string url)
{
bool retValue = false;
bool isIn = false;
foreach (ChairModel temp in this.Chairs)
{
if ((temp.NameDE.Equals(nameDE) == true)
|| (temp.NameEN.Equals(nameEN) == true))
{
isIn = true;
}
}
if (isIn == false)
{
ChairModel newModel = new ChairModel();
newModel.NameDE = nameDE;
newModel.NameEN = nameEN;
newModel.Url = url;
this.Chairs.Add(newModel);
this.hasChanged = true;
retValue = true;
}
return retValue;
}
/// <summary>
/// Return the chair model of the chair with the specified name.
/// </summary>
/// <param name="name">name of the chair</param>
/// <returns>chair model, if succeeded, otherwise null</returns>
public ChairModel GetChairModel(string name)
{
ChairModel retValue = null;
foreach (ChairModel temp in this.Chairs)
{
if (temp.Name.Equals(name) == true)
{
retValue = temp;
}
}
return retValue;
}
/// <summary>
/// Return true if there were changes in the chair list, otherwise false.
/// </summary>
/// <param name="reset">when true, the hasChanged flag will be reset</param>
/// <returns>true, when changed, otherwise false</returns>
public bool HasChanged(bool reset = true)
{
bool retValue = this.hasChanged;
if (reset == true)
{
this.hasChanged = false;
}
return retValue;
}
}
}

View File

@@ -0,0 +1,50 @@
using CampusAppWP8.Model;
using System.Collections.ObjectModel;
using System.Xml.Serialization;
namespace CampusAppWP8.Model.events_news
{
/// <summary>
/// Channel Model, which contains the rss feed item list.
/// </summary>
public class RSSChannelModel : BaseModel
{
/// <summary>
/// RssFeed information item list.
/// </summary>
[XmlElement("item")]
public ObservableCollection<RSSModel> item { get; set; }
/// <summary>
/// Default constructor.
/// </summary>
public RSSChannelModel()
{
this.item = new ObservableCollection<RSSModel>();
}
/// <summary>
/// Set/Get the rss feed item list.
/// </summary>
public ObservableCollection<RSSModel> Item
{
get
{
return this.item;
}
set
{
if (value != this.item)
{
this.item = value;
int i = 0;
foreach (RSSModel rssItem in this.item)
{
rssItem.Index = i++;
}
NotifyPropertyChanged("item");
}
}
}
}
}

View File

@@ -0,0 +1,209 @@
using CampusAppWP8.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
namespace CampusAppWP8.Model.events_news
{
/// <summary>
/// Contains the rss feed informations.
/// </summary>
public class RSSModel : BaseModel
{
/// <summary>
/// Title of the fees
/// </summary>
private string title;
/// <summary>
/// Description text of the feed.
/// </summary>
private string text;
/// <summary>
/// Timestamp (publication date) of the event or news.
/// </summary>
private DateTime timestamp;
/// <summary>
/// Url of the feed.
/// </summary>
private string link;
/// <summary>
/// Set/Get the title of the feed.
/// </summary>
[XmlElement("title")]
public string Title
{
get { return this.title; }
set
{
if (this.title != value)
{
this.title = value;
NotifyPropertyChanged("rss");
}
}
}
/// <summary>
/// Set/Get the text of the feed.
/// </summary>
[XmlElement("description")]
public string Text
{
get { return this.text; }
set
{
if (this.text != HTMLUnicodeToString(value))
{
this.text = HTMLUnicodeToString(value);
NotifyPropertyChanged("rss");
}
}
}
/// <summary>
/// Set/Get the timestamp of the feed as string.
/// </summary>
[XmlElement("pubDate")]
public string Timestamp
{
get { return this.timestamp.ToString("R"); }
set
{
if (this.timestamp != DateTime.Parse(value))
{
this.timestamp = DateTime.Parse(value);
NotifyPropertyChanged("rss");
}
}
}
/// <summary>
/// Set/Get the timestamp of the feed as DateTime object.
/// </summary>
public DateTime DTTimestamp
{
get { return this.timestamp; }
set { this.timestamp = value; }
}
/// <summary>
/// Return the date of the timestamp as string.
/// example: Mon, 25.06.2013.
/// </summary>
public string Date
{
get { return String.Format("{0:ddd, dd.MM.yyyy}", this.timestamp); }
}
/// <summary>
/// Return the time of the timestamp as string.
/// example: 12:56 Uhr.
/// </summary>
public string Time
{
get { return String.Format("{0:h:mm} Uhr", this.timestamp); }
}
/// <summary>
/// Gets or sets the ListIndex
/// </summary>
public int Index { get; set; }
/// <summary>
/// Set/Get the link/url of the feed.
/// </summary>
[XmlElement("link")]
public string Link
{
get { return this.link; }
set
{
if (this.link != value)
{
this.link = value;
NotifyPropertyChanged("rss");
}
}
}
/// <summary>
/// Remove or transform html-unicode specific tags into ascii.
/// </summary>
/// <param name="htmluni">html string</param>
/// <returns>ascii string</returns>
private string HTMLUnicodeToString(string htmluni)
{
StringBuilder retValue = new StringBuilder();
for(int i = 0; i < htmluni.Length; i++)
{
switch (htmluni[i])
{
// beginning tag of the unicode
case '&':
{
int startOff = i + 2;
// sear closing tag of the unicode
int endOff = htmluni.IndexOf(';', startOff);
// get and parse value inbetween
string sub = htmluni.Substring(startOff, endOff - startOff);
int cVal = int.Parse(sub);
switch (cVal)
{
// if the unicode value is 128 (€)
case 128:
retValue.Append('€');
break;
default:
retValue.Append((char)cVal);
break;
}
// set the current index to the end of the unicode tag
i = endOff;
}
break;
case '<':
{
// ignoring <..> html tags
i = htmluni.IndexOf('>', i);
}
break;
case '\t':
// removing tabs
break;
default:
{
// adding other characters to the return string
retValue.Append(htmluni[i]);
}
break;
}
}
return retValue.ToString();
}
/// <summary>
/// Comparing function for Datetime-Timestamps.
/// (currently unused)
/// </summary>
/// <param name="item1">first item</param>
/// <param name="item2">secound item</param>
/// <returns></returns>
public static int CompareTimeStamp(RSSModel item1, RSSModel item2)
{
if (item1.DTTimestamp > item2.DTTimestamp)
return -1;
else
return 0;
}
}
}

View File

@@ -0,0 +1,221 @@
//-----------------------------------------------------------------------
// <copyright file="LectureActivity.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>13.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.Lecture
{
using System.Collections.ObjectModel;
using System.Xml.Serialization;
using CampusAppWP8.Utility;
/// <summary>
/// Model for a Activity
/// </summary>
public class LectureActivity
{
#region Members
/// <summary>
/// List of lecturer
/// </summary>
private ObservableCollection<LectureLecturer> lecturer;
/// <summary>
/// a formatted string for the names of the lecturers
/// </summary>
private string lecturerString;
/// <summary>
/// a formatted string for the names of the courses
/// </summary>
private string courseString;
/// <summary>
/// a formatted string for the topic of the lecture
/// </summary>
private string topic;
#endregion
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="LectureActivity" /> class.
/// </summary>
public LectureActivity()
{
}
#endregion
#region Proberty
/// <summary>
/// Gets or sets the type of the activity
/// </summary>
[XmlElement("art")]
public string Type { get; set; }
/// <summary>
/// Gets or sets the id of the activity
/// </summary>
[XmlAttribute("id")]
public int Id { get; set; }
/// <summary>
/// Gets or sets semester of the activity
/// </summary>
[XmlElement("semester")]
public int Semester { get; set; }
/// <summary>
/// Gets or sets the contact hour
/// </summary>
[XmlElement("sws")]
public string SWS { get; set; }
/// <summary>
/// Gets or sets LectureModule
/// </summary>
[XmlElement("modul")]
public LectureModule Modul { get; set; }
/// <summary>
/// Gets or sets LectureTitel
/// </summary>
[XmlElement("titel")]
public string Title { get; set; }
/// <summary>
/// Gets or sets the lecturers
/// </summary>
[XmlElement("lehrperson")]
public ObservableCollection<LectureLecturer> Lecturer
{
get
{
return this.lecturer;
}
set
{
if (value != this.lecturer)
{
this.lecturer = value;
}
}
}
/// <summary>
/// Gets or sets the formatted string of the lecturers
/// </summary>
public string LecturerString
{
get
{
return this.lecturerString;
}
set
{
if (value != this.lecturerString)
{
this.lecturerString = value;
}
}
}
/// <summary>
/// Gets or sets formatted string of the courses
/// </summary>
public string CourseString
{
get
{
return this.courseString;
}
set
{
if (value != this.courseString)
{
this.courseString = value;
}
}
}
/// <summary>
/// Gets or sets the courses
/// </summary>
[XmlElement("studiengang")]
public ObservableCollection<LectureCourse> Course { get; set; }
/// <summary>
/// Gets or sets the dates of the activity
/// </summary>
[XmlElement("termin")]
public ObservableCollection<LectureDate> Dates { get; set; }
/// <summary>
/// Gets or sets the Department
/// </summary>
[XmlElement("zugeordnete_einrichtung")]
public string Department { get; set; }
/// <summary>
/// Gets or sets the topic of the Lecture
/// </summary>
[XmlElement("lehrinhalt")]
public string Topic
{
get
{
return this.topic;
}
set
{
if (value != this.topic)
{
this.topic = StringManager.StripHTML(value);
}
}
}
#endregion
#region Methods
/// <summary>
/// Method create a formatted string of the LecturerList
/// </summary>
public void CreateLectureString()
{
string result = string.Empty;
foreach (LectureLecturer tmpLecturer in this.Lecturer)
{
result += StringManager.AddNewLine(tmpLecturer.ToString());
}
this.LecturerString = StringManager.RemvoveNewLine(result);
}
/// <summary>
/// Method create a formatted string of the CourseList
/// </summary>
public void CreateCourseString()
{
string result = string.Empty;
foreach (LectureCourse course in this.Course)
{
result += StringManager.AddNewLine(course.Title);
}
this.CourseString = StringManager.RemvoveNewLine(result);
}
#endregion
}
}

View File

@@ -0,0 +1,29 @@
// <copyright file="LectureCourse.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>10.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.Lecture
{
using System.Xml.Serialization;
/// <summary>
/// Model for a course
/// </summary>
public class LectureCourse
{
/// <summary>
/// Initializes a new instance of the <see cref="LectureCourse" /> class.
/// </summary>
public LectureCourse()
{
}
/// <summary>
/// Gets or sets the title of the course
/// </summary>
[XmlElement("bezeichnung")]
public string Title { get; set; }
}
}

View File

@@ -0,0 +1,67 @@
//-----------------------------------------------------------------------
// <copyright file="LectureDate.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>10.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.Lecture
{
using System.Xml.Serialization;
/// <summary>
/// Model for the date of an activity
/// </summary>
public class LectureDate
{
/// <summary>
/// Initializes a new instance of the <see cref="LectureDate" /> class.
/// </summary>
public LectureDate()
{
}
/// <summary>
/// Gets or sets WeekDay
/// </summary>
[XmlElement("wochentag")]
public string WeekDay { get; set; }
/// <summary>
/// Gets or sets From
/// </summary>
[XmlElement("von")]
public string From { get; set; }
/// <summary>
/// Gets or sets To
/// </summary>
[XmlElement("bis")]
public string To { get; set; }
/// <summary>
/// Gets or sets Interval
/// </summary>
[XmlElement("rhythmus")]
public string Interval { get; set; }
/// <summary>
/// Gets or sets Room
/// </summary>
[XmlElement("raum")]
public string Room { get; set; }
/// <summary>
/// Gets or sets StartDate
/// </summary>
[XmlElement("anfangsdatum")]
public string StartDate { get; set; }
/// <summary>
/// Gets or sets EndDate
/// </summary>
[XmlElement("enddatum")]
public string EndDate { get; set; }
}
}

View File

@@ -0,0 +1,72 @@
//-----------------------------------------------------------------------
// <copyright file="LectureLecturer.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>10.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.Lecture
{
using System.Xml.Serialization;
/// <summary>
/// Model for a lecturer
/// </summary>
public class LectureLecturer
{
/// <summary>
/// Initializes a new instance of the <see cref="LectureLecturer" /> class.
/// </summary>
public LectureLecturer()
{
}
/// <summary>
/// Gets or sets the FirstName of a lecturer
/// </summary>
[XmlElement("vorname")]
public string FirstName { get; set; }
/// <summary>
/// Gets or sets the LastName of a lecturer
/// </summary>
[XmlElement("name")]
public string LastName { get; set; }
/// <summary>
/// Gets or sets the title of a lecturer
/// </summary>
[XmlElement("titel")]
public string Title { get; set; }
/// <summary>
/// Gets or sets the Responsibility of a lecturer
/// </summary>
[XmlAttribute("zustaendigkeit")]
public string Responsibility { get; set; }
/// <summary>
/// Method overrides the base ToString() and create an formatted string of the lecturer
/// </summary>
/// <returns>returns a string like: [Title] FirstName LastName [(Responsibility)]</returns>
public override string ToString()
{
string result = string.Empty;
if (!this.Title.Equals(string.Empty))
{
result += this.Title + " ";
}
result += this.FirstName + " ";
result += this.LastName + " ";
if (!this.Responsibility.Equals(string.Empty))
{
result += "(" + this.Responsibility + ") ";
}
return result;
}
}
}

View File

@@ -0,0 +1,57 @@
//-----------------------------------------------------------------------
// <copyright file="LectureList.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>10.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.Lecture
{
using System.Collections.ObjectModel;
using System.Linq;
using System.Xml.Serialization;
/// <summary>
/// Model for a List of LectureActivity
/// </summary>
[XmlRoot("lsf_auszug")]
public class LectureList
{
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="LectureList" /> class.
/// </summary>
public LectureList()
{
}
#endregion
#region Proberty
/// <summary>
/// Gets or sets List of the activities
/// </summary>
[XmlArray("veranstaltungsliste")]
[XmlArrayItem("veranstaltung")]
public ObservableCollection<LectureActivity> Activities { get; set; }
#endregion
#region Methods
/// <summary>
/// Method return a certain activity
/// </summary>
/// <param name="id"> id of the activity</param>
/// <returns> the activity (FirstOrDefault)</returns>
public LectureActivity GetActivity(int id)
{
LectureActivity activity = this.Activities.Where(p => p.Id == id).FirstOrDefault();
return activity;
}
#endregion
}
}

View File

@@ -0,0 +1,98 @@
//-----------------------------------------------------------------------
// <copyright file="LectureModule.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>10.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.Lecture
{
using System;
using System.Xml.Serialization;
using CampusAppWP8.Resources;
/// <summary>
/// Model for the module of an lecture
/// </summary>
public class LectureModule
{
#region Members
/// <summary>
/// Number of the module (like an id)
/// </summary>
private int number;
/// <summary>
/// Url to the website of the module
/// </summary>
private Uri url;
#endregion
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="LectureModule" /> class.
/// </summary>
public LectureModule()
{
}
#endregion
#region Property
/// <summary>
/// Gets or sets the title of the module
/// </summary>
[XmlElement("titel")]
public string Title { get; set; }
/// <summary>
/// Gets or sets the number of the module and create the URL
/// </summary>
[XmlElement("nummer")]
public int Number
{
get
{
return this.number;
}
set
{
if (value != this.number)
{
this.number = value;
this.CreateUrl();
}
}
}
/// <summary>
/// Gets the URL of the module
/// </summary>
public Uri Url
{
get
{
return this.url;
}
}
#endregion
#region Methods
/// <summary>
/// Method create the url of the module
/// </summary>
private void CreateUrl()
{
this.url = new Uri(Constants.UrlLecture_ModulBaseAddr + this.number.ToString());
}
#endregion
}
}

View File

@@ -0,0 +1,421 @@
//-----------------------------------------------------------------------
// <copyright file="LecturePageModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>18.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.Lecture
{
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using CampusAppWP8.Model.Utility;
using CampusAppWP8.Resources;
/// <summary>
/// Model for the LecturePage
/// </summary>
[DataContract]
public class LecturePageModel
{
#region Members
/// <summary>
/// List for the courses of the BTU
/// </summary>
/// <remarks>
/// need to be extend to full list
/// </remarks>
private List<ListPickerItemModel> courseList;
/// <summary>
/// List of the degrees
/// </summary>
private List<ListPickerItemModel> degreeList;
/// <summary>
/// List of the semester
/// </summary>
private List<ListPickerItemModel> semesterList;
/// <summary>
/// List for the number of semester (from)
/// </summary>
private List<ListPickerItemModel> fromNumberList;
/// <summary>
/// List for the number of semester (to)
/// </summary>
private List<ListPickerItemModel> toNumberList;
/// <summary>
/// Variable for the courseIndex
/// </summary>
private int selectCourseIndex;
/// <summary>
/// Variable for the degreeIndex
/// </summary>
private int selectDegreeIndex;
/// <summary>
/// Variable for the semesterIndex
/// </summary>
private int selectSemesterIndex;
/// <summary>
/// Variable for the fromIndex
/// </summary>
private int selectFromIndex;
/// <summary>
/// Variable for the toIndex
/// </summary>
private int selectToIndex;
#endregion
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="LecturePageModel" /> class.
/// </summary>
public LecturePageModel()
{
}
#endregion
#region Proberty
/// <summary>
/// Gets or sets the selected course index
/// </summary>
[DataMember]
public int SelectCourseIndex
{
get
{
return this.selectCourseIndex;
}
set
{
if (value != this.selectCourseIndex && this.courseList != null && value < this.courseList.Count)
{
this.selectCourseIndex = value;
}
}
}
/// <summary>
/// Gets or sets the selected degree index
/// </summary>
[DataMember]
public int SelectDegreeIndex
{
get
{
return this.selectDegreeIndex;
}
set
{
if (value != this.selectDegreeIndex && this.degreeList != null && value < this.degreeList.Count)
{
this.selectDegreeIndex = value;
}
}
}
/// <summary>
/// Gets or sets the selected semester-index
/// </summary>
[DataMember]
public int SelectSemesterIndex
{
get
{
return this.selectSemesterIndex;
}
set
{
if (value != this.selectSemesterIndex && this.semesterList != null && value < this.semesterList.Count)
{
this.selectSemesterIndex = value;
}
}
}
/// <summary>
/// Gets or sets the selected from-index
/// </summary>
[DataMember]
public int SelectFromIndex
{
get
{
return this.selectFromIndex;
}
set
{
if (value != this.selectFromIndex && this.fromNumberList != null && value < this.fromNumberList.Count)
{
this.selectFromIndex = value;
}
}
}
/// <summary>
/// Gets or sets the selected to-index
/// </summary>
[DataMember]
public int SelectToIndex
{
get
{
return this.selectToIndex;
}
set
{
if (value != this.selectToIndex && this.toNumberList != null && value < this.toNumberList.Count)
{
this.selectToIndex = value;
}
}
}
/// <summary>
/// Gets List for the courses of the BTU
/// </summary>
public List<ListPickerItemModel> CourseList
{
get
{
return this.courseList;
}
}
/// <summary>
/// Gets List of the degrees
/// </summary>
public List<ListPickerItemModel> DegreeList
{
get
{
return this.degreeList;
}
}
/// <summary>
/// Gets List of the semester
/// </summary>
public List<ListPickerItemModel> SemesterList
{
get
{
return this.semesterList;
}
}
/// <summary>
/// Gets List for the number of semester
/// </summary>
public List<ListPickerItemModel> FromNumberList
{
get
{
return this.fromNumberList;
}
}
/// <summary>
/// Gets the NumberList
/// </summary>
public List<ListPickerItemModel> ToNumberList
{
get
{
return this.toNumberList;
}
}
#endregion
#region Methods
#region public
/// <summary>
/// Load all ListPickerLists
/// </summary>
public void LoadLists()
{
this.LoadCourseList();
this.LoadDegreeList();
this.LoadFromNumberList();
this.LoadToNumberList();
this.LoadSemesterList();
}
#endregion
#region private
/// <summary>
/// Load the NumberList
/// </summary>
public void LoadFromNumberList()
{
string selectValue = null;
if (this.fromNumberList != null)
{
selectValue = this.fromNumberList[this.SelectFromIndex].Value;
}
this.fromNumberList = this.CreateNumberList(1, 10);
this.SelectFromIndex = this.GetIndexOrDefault(this.fromNumberList, selectValue);
}
/// <summary>
/// Load the NumberList
/// </summary>
public void LoadToNumberList()
{
string selectValue = null;
if (this.toNumberList != null)
{
selectValue = this.toNumberList[this.SelectToIndex].Value;
}
this.toNumberList = this.CreateNumberList(this.SelectFromIndex + 1, 10);
this.SelectToIndex = this.GetIndexOrDefault(this.toNumberList, selectValue);
}
/// <summary>
/// Method create a NumberList
/// </summary>
/// <param name="startvalue">startValue of the list</param>
/// <param name="endvalue">endValue of the list</param>
/// <returns>return list</returns>
private List<ListPickerItemModel> CreateNumberList(int startvalue, int endvalue)
{
List<ListPickerItemModel> list = new List<ListPickerItemModel>();
string degree = this.DegreeList[this.SelectDegreeIndex].Value;
for (int i = startvalue; i <= endvalue; i++)
{
if ((i > 4 && "88".Equals(degree)) || (i > 6 && "82".Equals(degree)))
{
break;
}
list.Add(new ListPickerItemModel() { Text = i.ToString(), Value = i.ToString() });
}
return list;
}
/// <summary>
/// Load the SemesterList
/// </summary>
private void LoadSemesterList()
{
this.semesterList = new List<ListPickerItemModel>();
this.semesterList.Add(new ListPickerItemModel() { Text = "SoSe 13", Value = "20131" });
this.semesterList.Add(new ListPickerItemModel() { Text = "WiSe 13/14", Value = "20132" });
this.semesterList.Add(new ListPickerItemModel() { Text = "SoSe 14", Value = "20131" });
}
/// <summary>
/// Load the DegreeList
/// </summary>
private void LoadDegreeList()
{
this.degreeList = new List<ListPickerItemModel>();
this.degreeList.Add(new ListPickerItemModel() { Text = AppResources.Degree_Bachelor, Value = "82" });
this.degreeList.Add(new ListPickerItemModel() { Text = AppResources.Degree_Master, Value = "88" });
this.degreeList.Add(new ListPickerItemModel() { Text = AppResources.Degree_Diploma, Value = "11" });
}
/// <summary>
/// Load the DegreeList
/// </summary>
private void LoadCourseList()
{
this.courseList = new List<ListPickerItemModel>();
this.courseList.Add(new ListPickerItemModel() { Text = "Architektur", Value = "013" });
this.courseList.Add(new ListPickerItemModel() { Text = "Bauingenieurwesen", Value = "017" });
this.courseList.Add(new ListPickerItemModel() { Text = "Betriebswirtschaftslehre", Value = "021" });
this.courseList.Add(new ListPickerItemModel() { Text = "Wirtschaftsrecht für Technologieunternehmen", Value = "042" });
this.courseList.Add(new ListPickerItemModel() { Text = "Elektrotechnik", Value = "048" });
this.courseList.Add(new ListPickerItemModel() { Text = "Informatik ", Value = "079" });
this.courseList.Add(new ListPickerItemModel() { Text = "Maschinenbau", Value = "104" });
this.courseList.Add(new ListPickerItemModel() { Text = "Mathematik", Value = "105" });
this.courseList.Add(new ListPickerItemModel() { Text = "Physik ", Value = "128" });
this.courseList.Add(new ListPickerItemModel() { Text = "Wirtschaftsingenieurwesen", Value = "179" });
this.courseList.Add(new ListPickerItemModel() { Text = "Wirtschaftswissenschaften ", Value = "184" });
this.courseList.Add(new ListPickerItemModel() { Text = "Biomedizinische Gerätetechnik ", Value = "215" });
this.courseList.Add(new ListPickerItemModel() { Text = "Verfahrenstechnik", Value = "226" });
this.courseList.Add(new ListPickerItemModel() { Text = "Wirtschaftsmathematik ", Value = "276" });
this.courseList.Add(new ListPickerItemModel() { Text = "Kultur und Technik ", Value = "711" });
this.courseList.Add(new ListPickerItemModel() { Text = "Physik der Halbleiter-Technologie", Value = "744" });
this.courseList.Add(new ListPickerItemModel() { Text = "Angewandte Mathematik ", Value = "749" });
this.courseList.Add(new ListPickerItemModel() { Text = "Technologie- und Innovationsmanagement", Value = "764" });
this.courseList.Add(new ListPickerItemModel() { Text = "Stadt- und Regionalplanung", Value = "766" });
this.courseList.Add(new ListPickerItemModel() { Text = "Informations- und Medientechnik ", Value = "767" });
this.courseList.Add(new ListPickerItemModel() { Text = "World Heritage Studies", Value = "768" });
this.courseList.Add(new ListPickerItemModel() { Text = "Umweltingenieurwesen und Verfahrenstechnik", Value = "770" });
this.courseList.Add(new ListPickerItemModel() { Text = "Environmental and Resource Management", Value = "771" });
this.courseList.Add(new ListPickerItemModel() { Text = "Landnutzung und Wasserbewirtschaftung", Value = "772" });
this.courseList.Add(new ListPickerItemModel() { Text = "Bauen und Erhalten", Value = "773" });
this.courseList.Add(new ListPickerItemModel() { Text = "Umweltingenieurwesen", Value = "774" });
this.courseList.Add(new ListPickerItemModel() { Text = "eBusiness", Value = "794" });
this.courseList.Add(new ListPickerItemModel() { Text = "Civil Engineering", Value = "798" });
this.courseList.Add(new ListPickerItemModel() { Text = "Structural Engineering", Value = "799" });
this.courseList.Add(new ListPickerItemModel() { Text = "Electrical Power Engineering ", Value = "800" });
this.courseList.Add(new ListPickerItemModel() { Text = "Euro Hydroinformatics and Water Management", Value = "841" });
this.courseList.Add(new ListPickerItemModel() { Text = "Technologien Biogener Rohstoffe", Value = "842" });
this.courseList.Add(new ListPickerItemModel() { Text = "Environmental Technologies", Value = "843" });
this.courseList.Add(new ListPickerItemModel() { Text = "Process Engineering and Plant Design", Value = "844" });
this.courseList.Add(new ListPickerItemModel() { Text = "Architekturvermittlung", Value = "845" });
this.courseList.Add(new ListPickerItemModel() { Text = "Nachwachsende Rohstoffe und Erneuerbare Energien", Value = "851" });
this.courseList.Add(new ListPickerItemModel() { Text = "Energieträger aus Biomasse und Abfällen", Value = "852" });
this.courseList.Add(new ListPickerItemModel() { Text = "Power Engineering", Value = "853" });
this.courseList.Add(new ListPickerItemModel() { Text = "Verfahrenstechnik - Prozess- und Anlagentechnik", Value = "857" });
this.courseList.Add(new ListPickerItemModel() { Text = "Architektur.Studium.Generale", Value = "858" });
this.courseList.Add(new ListPickerItemModel() { Text = "Verarbeitungstechnologien der Werkstoffe", Value = "860" });
this.courseList.Add(new ListPickerItemModel() { Text = "Forensic Sciences and Engineering", Value = "871" });
this.courseList = this.courseList.OrderBy(o => o.Text).ToList();
}
/// <summary>
/// Method return a the Index of an item which has a certain value
/// </summary>
/// <param name="list">list for items</param>
/// <param name="value">a certain value</param>
/// <returns>return index of value or default(0)</returns>
private int GetIndexOrDefault(List<ListPickerItemModel> list, string value)
{
int index = 0;
int i = 0;
foreach (ListPickerItemModel item in list)
{
if (item.Value.Equals(value))
{
index = i;
break;
}
i++;
}
return index;
}
#endregion
#endregion
}
}

View File

@@ -0,0 +1,64 @@
//-----------------------------------------------------------------------------
// <copyright file="LinkListModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>02.07.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8.Model.Link
{
using System;
using System.Collections.ObjectModel;
using System.Xml.Serialization;
/// <summary>
/// Model for a list of links.
/// </summary>
[XmlRoot("root")]
public class LinkListModel
{
#region Member
/// <summary>
/// Time when the model was created.
/// </summary>
private readonly DateTime createTime;
#endregion
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="LinkListModel" /> class.
/// </summary>
public LinkListModel()
{
this.createTime = DateTime.Now;
}
#endregion
#region Property
/// <summary>
/// Gets or sets feed information item list.
/// </summary>
[XmlArray("data")]
[XmlArrayItem("link")]
public ObservableCollection<LinkModel> Links { get; set; }
/// <summary>
/// Gets the creation time of the model.
/// </summary>
public DateTime CreateTime
{
get
{
return this.createTime;
}
}
#endregion
}
}

View File

@@ -0,0 +1,173 @@
//-----------------------------------------------------------------------------
// <copyright file="LinkModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>02.07.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8.Model.Link
{
using System.Globalization;
using System.Xml.Serialization;
/// <summary>
/// Model for menu
/// </summary>
public class LinkModel
{
#region Member
/// <summary>
/// German version of the link title.
/// </summary>
private string titleDE;
/// <summary>
/// English version of the link title.
/// </summary>
private string titleEN;
/// <summary>
/// German version of the link.
/// </summary>
private string linkDE;
/// <summary>
/// English version of the link.
/// </summary>
private string linkEN;
#endregion
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="LinkModel" /> class.
/// </summary>
public LinkModel()
{
}
#endregion
#region Property
/// <summary>
/// Gets or sets the german title of the link.
/// </summary>
[XmlAttribute("title_de")]
public string Title_DE
{
get
{
return this.titleDE;
}
set
{
if (value != this.titleDE)
{
this.titleDE = value;
}
}
}
/// <summary>
/// Gets or sets the english title of the link.
/// </summary>
[XmlAttribute("title_en")]
public string Title_EN
{
get
{
return this.titleEN;
}
set
{
this.titleEN = value;
}
}
/// <summary>
/// Gets or sets the german link.
/// </summary>
[XmlAttribute("link_de")]
public string Link_DE
{
get
{
return this.linkDE;
}
set
{
if (value != this.linkDE)
{
this.linkDE = value;
}
}
}
/// <summary>
/// Gets or sets the english link.
/// </summary>
[XmlAttribute("link_en")]
public string Link_EN
{
get
{
return this.linkEN;
}
set
{
if (value != this.linkEN)
{
this.linkEN = value;
}
}
}
/// <summary>
/// Gets the localized title. If the phone is set to german language,
/// the german title will be returned otherwise the english title.
/// </summary>
public string Title
{
get
{
if (CultureInfo.CurrentUICulture.Name.StartsWith("de"))
{
return this.titleDE;
}
else
{
return this.titleEN;
}
}
}
/// <summary>
/// Gets the localized link. if the phone is set to german language,
/// the german comment will be returned otherwise the english link.
/// </summary>
public string Link
{
get
{
if (CultureInfo.CurrentUICulture.Name.StartsWith("de"))
{
return this.Link_DE;
}
else
{
return this.Link_EN;
}
}
}
#endregion
}
}

View File

@@ -0,0 +1,434 @@
//-----------------------------------------------------------------------------
// <copyright file="MainModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>05.07.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8
{
using System;
using System.IO;
using System.Net;
using System.Text;
using CampusAppWP8.Utility;
/// <summary>
/// Base model io handling class.
/// </summary>
/// <typeparam name="T">model type</typeparam>
public abstract class MainModel<T> : IDisposable
{
/// <summary>
/// Model io type.
/// </summary>
private ModelType modelType;
/// <summary>
/// Model object.
/// </summary>
private T model = default(T);
/// <summary>
/// File object.
/// </summary>
private CampusAppWP8.Utility.File file = null;
/// <summary>
/// Web object.
/// </summary>
private HttpRequest api = null;
/// <summary>
/// Filename of saved data.
/// </summary>
private string fileName = string.Empty;
/// <summary>
/// Url of the feed data.
/// </summary>
private Uri httpApiUri = null;
/// <summary>
/// Initializes a new instance of the <see cref="MainModel{T}" /> class.
/// </summary>
/// <param name="modelType">Model IO type</param>
/// <param name="fileName">name of the file</param>
/// <param name="url">url of the feed</param>
public MainModel(ModelType modelType, string fileName, string url)
{
this.modelType = modelType;
if ((url != null) && (url.Equals(string.Empty) == false))
{
this.httpApiUri = new Uri(url, UriKind.Absolute);
}
this.fileName = fileName;
if ((this.IsFile() == true)
&& (fileName.Equals(string.Empty) == false))
{
this.InitFile(CampusAppWP8.Utility.File.IOTypeRead.ReadSync, CampusAppWP8.Utility.File.IOTypeWrite.WriteAsync);
}
if ((this.IsHttpApi() == true)
&& (url.Equals(string.Empty) == false))
{
this.InitHttpApi();
}
}
/// <summary>
/// Finalizes an instance of the <see cref="MainModel{T}" /> class.
/// </summary>
~MainModel()
{
this.SaveData();
}
/// <summary>
/// Delegate of the OnLoading callback function.
/// </summary>
public delegate void OnLoading();
/// <summary>
/// Delegate of the OnLoaded callback function.
/// </summary>
public delegate void OnLoaded();
/// <summary>
/// Delegate of the OnSaving callback function.
/// </summary>
public delegate void OnSaving();
/// <summary>
/// Delegate of the OnSaved callback function.
/// </summary>
public delegate void OnSaved();
/// <summary>
/// Delegate of the IsModelUpToDate callback function.
/// </summary>
/// <param name="model">data model</param>
/// <returns>true, model is up to date</returns>
public delegate bool IsModelUpToDate(T model);
/// <summary>
/// Delegate of the IsFileUpToDate callback function.
/// </summary>
/// <param name="model">data model</param>
/// <param name="fileInfo">info of the file</param>
/// <returns>true, is file is up to date</returns>
public delegate bool IsFileUpToDate(T model, FileInfo fileInfo);
/// <summary>
/// Callback pointer, called before loading.
/// </summary>
public event OnLoading onLoading = null;
/// <summary>
/// Callback pointer, called after loading.
/// </summary>
public event OnLoaded onLoaded = null;
/// <summary>
/// Callback pointer, called before saving.
/// </summary>
public event OnSaving onSaving = null;
/// <summary>
/// Callback pointer, called after saving.
/// </summary>
public event OnSaved onSaved = null;
/// <summary>
/// Callback pointer, for checking if file is up to date at loading.
/// </summary>
public event IsFileUpToDate isFileUpToDateOnLoad = null;
/// <summary>
/// Callback pointer, for checking if file is up to date at saving.
/// </summary>
public event IsFileUpToDate isFileUpToDateOnSave = null;
/// <summary>
/// Callback pointer, for checking if model is up to date at loading.
/// </summary>
public event IsModelUpToDate isModelUpToDateOnLoad = null;
/// <summary>
/// Callback pointer, for checking if model is up to date at saving.
/// (currently unused)
/// </summary>
public event IsModelUpToDate isModelUpToDateOnSave = null;
/// <summary>
/// Specifies the I/O type of the model.
/// </summary>
public enum ModelType
{
/// <summary>
/// Invalid/unset state.
/// </summary>
INVALID = 0,
/// <summary>
/// File only (01).
/// </summary>
File = 1,
/// <summary>
/// Feed only (10).
/// </summary>
Feed = 2,
/// <summary>
/// File and feed (11).
/// </summary>
FileAndFeed = 3
}
/// <summary>
/// Gets or sets the Model.
/// </summary>
public T Model
{
get
{
return this.model;
}
set
{
this.model = value;
}
}
/// <summary>
/// Called before finalizing. Can maybe be removed.
/// </summary>
public void Dispose()
{
this.SaveData();
}
/// <summary>
/// Forces a update from web.
/// </summary>
public void ForceWebUpdate()
{
if (this.api != null)
{
if (this.onLoading != null)
{
this.onLoading();
}
this.api.HttpGet(this.httpApiUri, this.OnLoadDataComplete);
}
}
/// <summary>
/// Load the data if necessary, from web or from file, regarding if
/// the file data is up to date.
/// </summary>
public void LoadData()
{
bool loadFromFile = true;
if (this.onLoading != null)
{
this.onLoading();
}
if (((this.isModelUpToDateOnLoad == null)
|| (this.isModelUpToDateOnLoad(this.model) == false))
&& ((this.file != null) || this.api != null))
{
if (this.file != null)
{
if ((this.file.Exist() == false)
|| (this.file.GetFileInfo().Length == 0))
{
loadFromFile = false;
}
if (((this.isFileUpToDateOnLoad != null) && (this.isFileUpToDateOnLoad(this.model, this.file.GetFileInfo()) == false))
|| (this.isFileUpToDateOnLoad == null))
{
loadFromFile = false;
}
}
else
{
loadFromFile = false;
}
if (this.api == null)
{
loadFromFile = true;
}
if (loadFromFile == false)
{
this.api.HttpGet(this.httpApiUri, this.OnLoadDataComplete);
}
else
{
string data = this.file.ReadFile();
if (data != null && !data.Equals(string.Empty))
{
this.DeserializeModel(Encoding.UTF8.GetBytes(data));
}
}
}
if (loadFromFile == true)
{
if (this.onLoaded != null)
{
this.onLoaded();
}
}
}
/// <summary>
/// Save the model data if necessary.
/// </summary>
public void SaveData()
{
if ((this.file != null)
&& ((this.isFileUpToDateOnSave == null) || (this.isFileUpToDateOnSave(this.model, this.file.GetFileInfo()) == false)))
{
if (this.onSaving != null)
{
this.onSaving();
}
byte[] data = this.SerializeModel();
this.file.WriteFile(data);
if (this.onSaved != null)
{
this.onSaved();
}
}
}
/// <summary>
/// Return the model io type.
/// </summary>
/// <returns>model io type</returns>
public ModelType GetModelType()
{
return this.modelType;
}
/// <summary>
/// Return the model.
/// </summary>
/// <returns>model object</returns>
public T GetModel()
{
return this.model;
}
/// <summary>
/// Abstract declaration of the model deserialize function.
/// </summary>
/// <param name="modelData">model data as byte array</param>
/// <returns>true, is succeeded</returns>
protected abstract bool DeserializeModel(byte[] modelData);
/// <summary>
/// Abstract declaration of the model serialize function.
/// </summary>
/// <returns>model data as byte array</returns>
protected abstract byte[] SerializeModel();
/// <summary>
/// Check if the model io type is file.
/// </summary>
/// <returns>true, if the model io type has file.</returns>
protected bool IsFile()
{
bool retValue = false;
if ((this.modelType & ModelType.File) != 0)
{
retValue = true;
}
return retValue;
}
/// <summary>
/// Check if the model io type is feed.
/// </summary>
/// <returns>true if the model io type has feed.</returns>
protected bool IsHttpApi()
{
bool retValue = false;
if ((this.modelType & ModelType.Feed) != 0)
{
retValue = true;
}
return retValue;
}
/// <summary>
/// Initializes the file object.
/// </summary>
/// <param name="readType">read io type (Default: sync)</param>
/// <param name="writeType">write io type (Default: async)</param>
private void InitFile(CampusAppWP8.Utility.File.IOTypeRead readType = CampusAppWP8.Utility.File.IOTypeRead.ReadSync, CampusAppWP8.Utility.File.IOTypeWrite writeType = CampusAppWP8.Utility.File.IOTypeWrite.WriteAsync)
{
if ((this.IsFile() == true)
&& (this.file == null))
{
this.file = new CampusAppWP8.Utility.File(this.fileName, readType, writeType);
}
}
/// <summary>
/// Initializes the web object.
/// </summary>
private void InitHttpApi()
{
if ((this.IsHttpApi() == true)
&& (this.api == null))
{
this.api = new HttpRequest();
}
}
/// <summary>
/// Is called after the loading from web is complete.
/// </summary>
/// <param name="sender">sending object</param>
/// <param name="e">event args</param>
private void OnLoadDataComplete(object sender, DownloadStringCompletedEventArgs e)
{
Exception downloadError = e.Error;
if (downloadError != null)
{
return;
}
string downloadResult = e.Result;
if (downloadResult != null && !downloadResult.Equals(string.Empty))
{
this.DeserializeModel(Encoding.UTF8.GetBytes(downloadResult));
}
if (this.onLoaded != null)
{
this.onLoaded();
}
}
}
}

View File

@@ -3,13 +3,14 @@
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>03.05.2013</sience>
// <sience>04.05.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.Mensa
{
using System;
using System.Xml.Serialization;
using CampusAppWP8.Resources;
using CampusAppWP8.Utility;
/// <summary>
/// Model for menu
@@ -22,22 +23,22 @@ namespace CampusAppWP8.Model.Mensa
/// Name for bio dinner
/// </summary>
private string bio = AppResources.MensaApp_NotToday;
/// <summary>
/// Name for 1. dinner
/// </summary>
private string dinner1 = AppResources.MensaApp_NotToday;
/// <summary>
/// Name for 2. dinner
/// </summary>
private string dinner2 = AppResources.MensaApp_NotToday;
/// <summary>
/// Name for 3. dinner
/// </summary>
private string dinner3 = AppResources.MensaApp_NotToday;
/// <summary>
/// Name for 4. dinner
/// </summary>
@@ -48,6 +49,21 @@ namespace CampusAppWP8.Model.Mensa
/// </summary>
private string action = AppResources.MensaApp_NotToday;
/// <summary>
/// Name of the day
/// </summary>
private string dayName;
/// <summary>
/// DateTime of the day
/// </summary>
private DateTime date;
/// <summary>
/// DateTime of the monday
/// </summary>
private DateTime monday;
#endregion
#region Constructor
@@ -57,6 +73,7 @@ namespace CampusAppWP8.Model.Mensa
/// </summary>
public MenuModel()
{
this.monday = MenuWeekModel.CalcFirstWeekDay();
}
#endregion
@@ -67,7 +84,38 @@ namespace CampusAppWP8.Model.Mensa
/// Gets or sets the WeekDay
/// </summary>
[XmlElement("Wochentag")]
public string Day { get; set; }
public string Day
{
get
{
return this.dayName;
}
set
{
this.SetValue(value, ref this.dayName);
this.CalcDateOfDay();
}
}
/// <summary>
/// Gets or sets of Date
/// </summary>
public DateTime Date
{
get
{
return this.date;
}
set
{
if (value != this.date)
{
this.date = value;
}
}
}
/// <summary>
/// Gets or sets dinner 1
@@ -185,7 +233,35 @@ namespace CampusAppWP8.Model.Mensa
{
if (value != null && !string.Empty.Equals(value) && !value.Equals(property))
{
property = value;
property = StringManager.StripHTML(value);
}
}
/// <summary>
/// Method calculate the DateTime of the MenuDay
/// </summary>
private void CalcDateOfDay()
{
switch (this.dayName)
{
case "Montag":
this.date = this.monday;
break;
case "Diensttag":
this.date = this.monday.AddDays(1);
break;
case "Mittwoch":
this.date = this.monday.AddDays(2);
break;
case "Donnerstag":
this.date = this.monday.AddDays(3);
break;
case "Freitag":
this.date = this.monday.AddDays(4);
break;
default:
this.date = this.monday;
break;
}
}
#endregion

View File

@@ -17,6 +17,7 @@ namespace CampusAppWP8.Model.Mensa
[XmlRoot("root")]
public class MenuWeekModel
{
#region Members
/// <summary>
/// Time when the model was created
/// </summary>
@@ -30,6 +31,10 @@ namespace CampusAppWP8.Model.Mensa
this.createTime = DateTime.Now;
}
#endregion
#region Constructor
/// <summary>
/// Gets or sets the menus for the week
/// </summary>
@@ -37,6 +42,9 @@ namespace CampusAppWP8.Model.Mensa
[XmlArrayItem("Tagesmenu")]
public ObservableCollection<MenuModel> Menus { get; set; }
#endregion
#region Proberty
/// <summary>
/// Gets the creation time of the model
/// </summary>
@@ -47,5 +55,27 @@ namespace CampusAppWP8.Model.Mensa
return this.createTime;
}
}
#endregion
#region Methods
/// <summary>
/// Method calculate this day of the week, which its gets new menus
/// </summary>
/// <returns>Date of NewMenuWeekDay</returns>
public static DateTime CalcFirstWeekDay()
{
DateTime now = DateTime.Now;
while (now.DayOfWeek != DayOfWeek.Monday)
{
now = now.Subtract(new TimeSpan(1, 0, 0, 0));
}
DateTime monday = new DateTime(now.Year, now.Month, now.Day);
return monday;
}
#endregion
}
}

View File

@@ -0,0 +1,581 @@
//-----------------------------------------------------------------------------
// <copyright file="OpeninghoursInstitutionModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>24.06.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8.Model.Openinghours
{
using System.Globalization;
using System.Windows;
using System.Xml.Serialization;
/// <summary>
/// Model for menu
/// </summary>
public class OpeninghoursInstitutionModel
{
#region Member
/// <summary>
/// German version of the institution title.
/// </summary>
private string titleDE = string.Empty;
/// <summary>
/// English version of the institution title.
/// </summary>
private string titleEN = string.Empty;
/// <summary>
/// Opening hours on monday.
/// </summary>
private string dayMonday = string.Empty;
/// <summary>
/// Opening hours on tuesday.
/// </summary>
private string dayTuesday = string.Empty;
/// <summary>
/// Opening hours on wednesday.
/// </summary>
private string dayWednesday = string.Empty;
/// <summary>
/// Opening hours on thursday.
/// </summary>
private string dayThursday = string.Empty;
/// <summary>
/// Opening hours on friday.
/// </summary>
private string dayFriday = string.Empty;
/// <summary>
/// Opening hours on saturday.
/// </summary>
private string daySaturday = string.Empty;
/// <summary>
/// Opening hours on sunday.
/// </summary>
private string daySunday = string.Empty;
/// <summary>
/// Email address of the institution.
/// </summary>
private string infoEmail = string.Empty;
/// <summary>
/// Phone number of the institution.
/// </summary>
private string infoPhone = string.Empty;
/// <summary>
/// Building name where the institution is located.
/// </summary>
private string infoBuilding = string.Empty;
/// <summary>
/// Room where the institution is located.
/// </summary>
private string infoRoom = string.Empty;
/// <summary>
/// German version of the comment.
/// </summary>
private string commentDE = string.Empty;
/// <summary>
/// English version of the comment.
/// </summary>
private string commentEN = string.Empty;
#endregion
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="OpeninghoursInstitutionModel" /> class.
/// </summary>
public OpeninghoursInstitutionModel()
{
}
#endregion
#region Property
/// <summary>
/// Gets or sets the german title of the institution.
/// </summary>
[XmlAttribute("title_de")]
public string Title_DE
{
get
{
return this.titleDE;
}
set
{
this.titleDE = value;
}
}
/// <summary>
/// Gets or sets the english title of the institution.
/// </summary>
[XmlAttribute("title_en")]
public string Title_EN
{
get
{
return this.titleEN;
}
set
{
this.titleEN = value;
}
}
/// <summary>
/// Gets or sets the open hours on monday.
/// </summary>
[XmlAttribute("monday")]
public string Monday
{
get
{
return this.dayMonday;
}
set
{
this.dayMonday = this.FixOpeninghoursString(value);
}
}
/// <summary>
/// Gets or sets the open hours on tuesday.
/// </summary>
[XmlAttribute("tuesday")]
public string Tuesday
{
get
{
return this.dayTuesday;
}
set
{
this.dayTuesday = this.FixOpeninghoursString(value);
}
}
/// <summary>
/// Gets or sets the open hours on wednesday.
/// </summary>
[XmlAttribute("wednesday")]
public string Wednesday
{
get
{
return this.dayWednesday;
}
set
{
this.dayWednesday = this.FixOpeninghoursString(value);
}
}
/// <summary>
/// Gets or sets the open hours on thursday.
/// </summary>
[XmlAttribute("thursday")]
public string Thursday
{
get
{
return this.dayThursday;
}
set
{
this.dayThursday = this.FixOpeninghoursString(value);
}
}
/// <summary>
/// Gets or sets the open hours on friday.
/// </summary>
[XmlAttribute("friday")]
public string Friday
{
get
{
return this.dayFriday;
}
set
{
this.dayFriday = this.FixOpeninghoursString(value);
}
}
/// <summary>
/// Gets or sets the open hours on saturday.
/// </summary>
[XmlAttribute("saturday")]
public string Saturday
{
get
{
return this.daySaturday;
}
set
{
this.daySaturday = this.FixOpeninghoursString(value);
}
}
/// <summary>
/// Gets or sets the open hours on sunday.
/// </summary>
[XmlAttribute("sunday")]
public string Sunday
{
get
{
return this.daySunday;
}
set
{
this.daySunday = this.FixOpeninghoursString(value);
}
}
/// <summary>
/// Gets or sets the email address of the institution.
/// </summary>
[XmlAttribute("email")]
public string EMail
{
get
{
return this.infoEmail;
}
set
{
this.infoEmail = value;
}
}
/// <summary>
/// Gets or sets the phone number of the institution.
/// </summary>
[XmlAttribute("phone")]
public string Phone
{
get
{
return this.infoPhone;
}
set
{
this.infoPhone = value;
}
}
/// <summary>
/// Gets or sets the building where the institution is located.
/// </summary>
[XmlAttribute("location_building")]
public string Building
{
get
{
return this.infoBuilding;
}
set
{
this.infoBuilding = value;
}
}
/// <summary>
/// Gets or sets the room where the institution is located.
/// </summary>
[XmlAttribute("location_room")]
public string Room
{
get
{
return this.infoRoom;
}
set
{
this.infoRoom = value;
}
}
/// <summary>
/// Gets or sets the german comment.
/// </summary>
[XmlAttribute("comment_de")]
public string Comment_DE
{
get
{
return this.commentDE;
}
set
{
this.commentDE = value;
}
}
/// <summary>
/// Gets or sets the english comment.
/// </summary>
[XmlAttribute("comment_en")]
public string Comment_EN
{
get
{
return this.commentEN;
}
set
{
this.commentEN = value;
}
}
/// <summary>
/// Gets the localized title. If the phone is set to german language,
/// the german title will be returned otherwise the english title.
/// </summary>
public string Title
{
get
{
if (CultureInfo.CurrentUICulture.Name.StartsWith("de"))
{
return this.titleDE;
}
else
{
return this.titleEN;
}
}
}
/// <summary>
/// Gets the localized comment. if the phone is set to german language,
/// the german comment will be returned otherwise the english comment.
/// </summary>
public string Comment
{
get
{
if (CultureInfo.CurrentUICulture.Name.StartsWith("de"))
{
return this.commentDE;
}
else
{
return this.commentEN;
}
}
}
/// <summary>
/// Gets a string containing the email address and the institution
/// title separated by ':'.
/// </summary>
public string EMailTitle
{
get
{
return this.EMail + ":" + this.Title;
}
}
/// <summary>
/// Gets a string containing the phone number and the institution
/// title separated by ':'.
/// </summary>
public string PhoneTitle
{
get
{
return this.Phone + ":" + this.Title;
}
}
/// <summary>
/// Gets the visibility state of the monday TextBlock.
/// </summary>
public Visibility VisibleMonday
{
get
{
return ((this.dayMonday == string.Empty) || (this.dayMonday.Length == 0)) ? Visibility.Collapsed : Visibility.Visible;
}
}
/// <summary>
/// Gets the visibility state of the tuesday TextBlock.
/// </summary>
public Visibility VisibleTuesday
{
get
{
return ((this.dayTuesday == string.Empty) || (this.dayTuesday.Length == 0)) ? Visibility.Collapsed : Visibility.Visible;
}
}
/// <summary>
/// Gets the visibility state of the wednesday TextBlock.
/// </summary>
public Visibility VisibleWednesday
{
get
{
return ((this.dayWednesday == string.Empty) || (this.dayWednesday.Length == 0)) ? Visibility.Collapsed : Visibility.Visible;
}
}
/// <summary>
/// Gets the visibility state of the thursday TextBlock.
/// </summary>
public Visibility VisibleThursday
{
get
{
return ((this.dayThursday == string.Empty) || (this.dayThursday.Length == 0)) ? Visibility.Collapsed : Visibility.Visible;
}
}
/// <summary>
/// Gets the visibility state of the friday TextBlock.
/// </summary>
public Visibility VisibleFriday
{
get
{
return ((this.dayFriday == string.Empty) || (this.dayFriday.Length == 0)) ? Visibility.Collapsed : Visibility.Visible;
}
}
/// <summary>
/// Gets the visibility state of the saturday TextBlock.
/// </summary>
public Visibility VisibleSaturday
{
get
{
return ((this.daySaturday == string.Empty) || (this.daySaturday.Length == 0)) ? Visibility.Collapsed : Visibility.Visible;
}
}
/// <summary>
/// Gets the visibility state of the sunday TextBlock.
/// </summary>
public Visibility VisibleSunday
{
get
{
return ((this.daySunday == string.Empty) || (this.daySunday.Length == 0)) ? Visibility.Collapsed : Visibility.Visible;
}
}
/// <summary>
/// Gets the visibility state of the comment.
/// </summary>
public Visibility VisibleComment
{
get
{
return ((this.Comment == string.Empty) || (this.Comment.Length == 0)) ? Visibility.Collapsed : Visibility.Visible;
}
}
/// <summary>
/// Gets the visibility state of the email address.
/// </summary>
public Visibility VisibleEMail
{
get
{
return ((this.infoEmail == string.Empty) || (this.infoEmail.Length == 0)) ? Visibility.Collapsed : Visibility.Visible;
}
}
/// <summary>
/// Gets the visibility state of the phone number.
/// </summary>
public Visibility VisiblePhone
{
get
{
return ((this.infoPhone == string.Empty) || (this.infoPhone.Length == 0)) ? Visibility.Collapsed : Visibility.Visible;
}
}
/// <summary>
/// Gets the visibility state of the room.
/// </summary>
public Visibility VisibleRoom
{
get
{
return ((this.infoRoom == string.Empty) || (this.infoRoom.Length == 0)) ? Visibility.Collapsed : Visibility.Visible;
}
}
/// <summary>
/// Gets the visibility state of the building.
/// </summary>
public Visibility VisibleBuilding
{
get
{
return ((this.infoBuilding == string.Empty) || (this.infoBuilding.Length == 0)) ? Visibility.Collapsed : Visibility.Visible;
}
}
#endregion
#region Method
/// <summary>
/// Removes unwanted chars in a string.
/// </summary>
/// <param name="str">input string</param>
/// <returns>fixed string</returns>
private string FixOpeninghoursString(string str)
{
string retValue = string.Empty;
retValue = str.Replace(" | ", "\n");
return retValue;
}
#endregion
}
}

View File

@@ -0,0 +1,79 @@
//-----------------------------------------------------------------------------
// <copyright file="OpeninghoursModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>24.06.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8.Model.Openinghours
{
using System;
using System.Collections.ObjectModel;
using System.Xml.Serialization;
/// <summary>
/// Model for opening hours.
/// </summary>
[XmlRoot("root")]
public class OpeninghoursModel
{
#region Member
/// <summary>
/// Time when the model was created.
/// </summary>
private readonly DateTime createTime;
/// <summary>
/// Gets or sets feed information item list.
/// </summary>
[XmlArray("data")]
[XmlArrayItem("institution")]
public ObservableCollection<OpeninghoursInstitutionModel> institutions { get; set; }
#endregion
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="OpeninghoursModel" /> class.
/// </summary>
public OpeninghoursModel()
{
this.createTime = DateTime.Now;
}
#endregion
#region Property
/// <summary>
/// Gets the creation time of the model.
/// </summary>
public DateTime CreateTime
{
get
{
return this.createTime;
}
}
/// <summary>
/// Gets the Institutions.
/// </summary>
public ObservableCollection<OpeninghoursInstitutionModel> Institutions
{
get
{
return this.institutions;
}
}
#endregion
#region Method
#endregion
}
}

View File

@@ -0,0 +1,70 @@
//-----------------------------------------------------------------------------
// <copyright file="RSSChannelModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>24.06.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8.Model.RSS
{
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Xml.Serialization;
/// <summary>
/// Channel Model, which contains the RSS feed item list.
/// </summary>
public class RSSChannelModel
{
/// <summary>
/// RSS feed information item list.
/// </summary>
private ObservableCollection<RSSModel> item;
/// <summary>
/// Initializes a new instance of the <see cref="RSSChannelModel" /> class.
/// </summary>
public RSSChannelModel()
{
this.item = new ObservableCollection<RSSModel>();
this.item.CollectionChanged += new NotifyCollectionChangedEventHandler(this.OnListChanged);
}
/// <summary>
/// Gets or sets the RSS feed item list.
/// </summary>
[XmlElement("item")]
public ObservableCollection<RSSModel> Item
{
get
{
return this.item;
}
set
{
if (value != this.item)
{
this.item = value;
}
}
}
/// <summary>
/// Is called when the item list has changed.
/// Here used for the add event.
/// Set the index of the last list element.
/// </summary>
/// <param name="sender">item list</param>
/// <param name="e">event args</param>
private void OnListChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (e.Action == NotifyCollectionChangedAction.Add)
{
ObservableCollection<RSSModel> list = sender as ObservableCollection<RSSModel>;
list[list.Count - 1].Index = list.Count - 1;
}
}
}
}

View File

@@ -0,0 +1,256 @@
//-----------------------------------------------------------------------------
// <copyright file="RSSModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>24.06.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8.Model.RSS
{
using System;
using System.Text;
using System.Xml.Serialization;
/// <summary>
/// Contains the RSS feed information.
/// </summary>
public class RSSModel
{
/// <summary>
/// Index of this object.
/// </summary>
private int index = -1;
/// <summary>
/// Title of the fees
/// </summary>
private string title;
/// <summary>
/// Description text of the feed.
/// </summary>
private string text;
/// <summary>
/// Timestamp (publication date) of the event or news.
/// </summary>
private DateTime timestamp;
/// <summary>
/// Url of the feed.
/// </summary>
private string link;
/// <summary>
/// Gets or sets the title of the feed.
/// </summary>
[XmlElement("title")]
public string Title
{
get
{
return this.title;
}
set
{
if (this.title != value)
{
this.title = value;
}
}
}
/// <summary>
/// Gets or sets the text of the feed.
/// </summary>
[XmlElement("description")]
public string Text
{
get
{
return this.text;
}
set
{
if (this.text != this.HTMLUnicodeToString(value))
{
this.text = this.HTMLUnicodeToString(value);
}
}
}
/// <summary>
/// Gets or sets the timestamp of the feed as string.
/// </summary>
[XmlElement("pubDate")]
public string Timestamp
{
get
{
return this.timestamp.ToString("R");
}
set
{
if (this.timestamp != DateTime.Parse(value))
{
this.timestamp = DateTime.Parse(value);
}
}
}
/// <summary>
/// Gets or sets the timestamp of the feed as DateTime object.
/// </summary>
public DateTime DTTimestamp
{
get
{
return this.timestamp;
}
set
{
this.timestamp = value;
}
}
/// <summary>
/// Gets the date of the timestamp as string.
/// example: Mon, 25.06.2013.
/// </summary>
public string Date
{
get
{
return string.Format("{0:ddd, dd.MM.yyyy}", this.timestamp);
}
}
/// <summary>
/// Gets the time of the timestamp as string.
/// example: 12:56 Uhr.
/// </summary>
public string Time
{
get
{
return string.Format("{0:h:mm} Uhr", this.timestamp);
}
}
/// <summary>
/// Gets or sets the link/url of the feed.
/// </summary>
[XmlElement("link")]
public string Link
{
get
{
return this.link;
}
set
{
if (this.link != value)
{
this.link = value;
}
}
}
/// <summary>
/// Gets or sets the ListIndex.
/// </summary>
public int Index
{
get
{
return this.index;
}
set
{
this.index = value;
}
}
/// <summary>
/// Comparing function for DateTime timestamps.
/// (currently unused)
/// </summary>
/// <param name="item1">first item</param>
/// <param name="item2">second item</param>
/// <returns>-1 if item2 is older then item1, otherwise 0</returns>
public static int CompareTimeStamp(RSSModel item1, RSSModel item2)
{
if (item1.DTTimestamp > item2.DTTimestamp)
{
return -1;
}
else
{
return 0;
}
}
/// <summary>
/// Remove or transform html-unicode specific tags into ASCII.
/// </summary>
/// <param name="htmluni">html string</param>
/// <returns>ASCII string</returns>
private string HTMLUnicodeToString(string htmluni)
{
StringBuilder retValue = new StringBuilder();
for (int i = 0; i < htmluni.Length; i++)
{
switch (htmluni[i])
{
// beginning tag of the unicode
case '&':
int startOff = i + 2;
//// sear closing tag of the unicode
int endOff = htmluni.IndexOf(';', startOff);
//// get and parse value inbetween
string sub = htmluni.Substring(startOff, endOff - startOff);
int charVal = int.Parse(sub);
switch (charVal)
{
// if the unicode value is 128 (€)
case 128:
retValue.Append('€');
break;
default:
retValue.Append((char)charVal);
break;
}
// set the current index to the end of the unicode tag
i = endOff;
break;
case '<':
// ignoring <..> html tags
i = htmluni.IndexOf('>', i);
break;
case '\t':
// removing tabs
break;
default:
// adding other characters to the return string
retValue.Append(htmluni[i]);
break;
}
}
return retValue.ToString();
}
}
}

View File

@@ -0,0 +1,71 @@
//-----------------------------------------------------------------------------
// <copyright file="RSSViewModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>24.06.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8.Model.RSS
{
using System;
using System.Collections.ObjectModel;
using System.Xml.Serialization;
/// <summary>
/// ViewModel of the RSS feed, containing the feed/channel object.
/// </summary>
[XmlRoot("root")]
public class RSSViewModel
{
/// <summary>
/// Object to store the time when the instance was created.
/// </summary>
private DateTime createTime;
/// <summary>
/// Channel list for the RSS feeds.
/// </summary>
private ObservableCollection<RSSChannelModel> channel;
/// <summary>
/// Initializes a new instance of the <see cref="RSSViewModel" /> class.
/// </summary>
public RSSViewModel()
{
this.channel = new ObservableCollection<RSSChannelModel>();
this.createTime = DateTime.Now;
}
/// <summary>
/// Gets or sets the channel list.
/// </summary>
[XmlArray("rss")]
[XmlArrayItem("channel")]
public ObservableCollection<RSSChannelModel> Channel
{
get
{
return this.channel;
}
set
{
if (value != this.channel)
{
this.channel = value;
}
}
}
/// <summary>
/// Gets the creation time.
/// </summary>
public DateTime CreateTime
{
get
{
return this.createTime;
}
}
}
}

View File

@@ -0,0 +1,80 @@
//-----------------------------------------------------------------------
// <copyright file="StudentCouncilListModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>02.07.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.StudentCouncil
{
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Xml.Serialization;
/// <summary>
/// Model for menus in one week
/// </summary>
[XmlRoot("root")]
public class StudentCouncilListModel
{
#region Members
/// <summary>
/// Time when the model was created
/// </summary>
private readonly DateTime createTime;
#endregion
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="StudentCouncilListModel" /> class.
/// </summary>
public StudentCouncilListModel()
{
this.createTime = DateTime.Now;
}
#endregion
#region Proberty
/// <summary>
/// Gets or sets the StudentCouncils
/// </summary>
[XmlArray("data")]
[XmlArrayItem("studentcouncil")]
public ObservableCollection<StudentCouncilModel> StudentCouncils { get; set; }
/// <summary>
/// Gets the creation time of the model
/// </summary>
public DateTime CreateTime
{
get
{
return this.createTime;
}
}
#endregion
#region Method
/// <summary>
/// Method group the StudentCouncilList by Faculty
/// </summary>
/// <returns>a Dictionary, where the Key is name of the Faculty und the value is a List of StudentCouncil</returns>
public Dictionary<string, List<StudentCouncilModel>> GetStudentCouncilsGroupByFaculty()
{
List<IGrouping<string, StudentCouncilModel>> tmpList = this.StudentCouncils.GroupBy(p => p.Faculty).ToList();
Dictionary<string, List<StudentCouncilModel>> itemMap = new Dictionary<string, List<StudentCouncilModel>>();
foreach (IGrouping<string, StudentCouncilModel> group in tmpList)
{
Dictionary<string, List<StudentCouncilModel>> tempDic = new Dictionary<string, List<StudentCouncilModel>>();
itemMap.Add(group.Key, group.ToList());
}
return itemMap;
}
#endregion
}
}

View File

@@ -0,0 +1,86 @@
//-----------------------------------------------------------------------------
// <copyright file="StudentCouncilModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>02.07.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8.Model.StudentCouncil
{
using System.Xml.Serialization;
using CampusAppWP8.Resources;
/// <summary>
/// Model for menu
/// </summary>
public class StudentCouncilModel
{
#region Member
/// <summary>
/// name of the faculty.
/// </summary>
private string faculty;
#endregion
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="StudentCouncilModel" /> class.
/// </summary>
public StudentCouncilModel()
{
}
#endregion
#region Property
/// <summary>
/// Gets or sets the faculty of the StudentCouncil.
/// </summary>
[XmlAttribute("faculty")]
public string Faculty
{
get
{
return this.faculty;
}
set
{
if (value != this.faculty)
{
this.faculty = value;
int num;
if (int.TryParse(this.faculty, out num))
{
this.faculty = AppResources.Faculty + " " + num;
}
}
}
}
/// <summary>
/// Gets or sets the name of the StudentCouncil.
/// </summary>
[XmlAttribute("name")]
public string Name { get; set; }
/// <summary>
/// Gets or sets the webpage-url of the StudentCouncil.
/// </summary>
[XmlAttribute("url")]
public string Url { get; set; }
/// <summary>
/// Gets or sets the email-address of the StudentCouncil.
/// </summary>
[XmlAttribute("email")]
public string Email { get; set; }
#endregion
}
}

View File

@@ -0,0 +1,25 @@
//-----------------------------------------------------------------------
// <copyright file="ListPickerItemModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>13.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.Utility
{
/// <summary>
/// Model for the ListPickerItems
/// </summary>
public class ListPickerItemModel
{
/// <summary>
/// Gets or sets the Value of an Item
/// </summary>
public string Value { get; set; }
/// <summary>
/// Gets or sets the Text (caption) of an Item
/// </summary>
public string Text { get; set; }
}
}

View File

@@ -0,0 +1,96 @@
//-----------------------------------------------------------------------
// <copyright file="URLParamModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>17.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Model.Utility
{
/// <summary>
/// This class is a Model for the URLParameter like GET-Parameter
/// </summary>
public class UrlParamModel
{
#region Members
/// <summary>
/// Variable of the key
/// </summary>
private readonly string key;
#endregion
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="UrlParamModel" /> class.
/// </summary>
/// <param name="key">the key for the parameter</param>
public UrlParamModel(string key)
{
this.key = key;
}
/// <summary>
/// Initializes a new instance of the <see cref="UrlParamModel" /> class.
/// </summary>
/// <param name="key">the key for the parameter</param>>
/// <param name="value">value of the parameter</param>
public UrlParamModel(string key, string value)
{
this.key = key;
this.Value = value;
}
#endregion
#region Proberty
/// <summary>
/// Gets or sets the value of the Parameter
/// </summary>
public string Value { get; set; }
/// <summary>
/// Gets the key of the parameter
/// </summary>
public string Key
{
get
{
return this.key;
}
}
#endregion
#region Methods
/// <summary>
/// Method check if the parameter is valid
/// </summary>
/// <returns>true if is it valid, otherwise false</returns>
public virtual bool IsParamValid()
{
if (this.key == null || string.Empty.Equals(this.key) || string.Empty.Equals(this.Value))
{
return false;
}
return true;
}
/// <summary>
/// Method return a formatted string like Key=Value
/// </summary>
/// <returns> return formatted string</returns>
public override string ToString()
{
if (!this.IsParamValid())
{
return string.Empty;
}
return "&" + this.key + "=" + this.Value;
}
#endregion
}
}

View File

@@ -0,0 +1,71 @@
//-----------------------------------------------------------------------------
// <copyright file="XmlModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>05.07.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8.Model
{
using System.Text;
using CampusAppWP8.Resources;
using CampusAppWP8.Utility;
/// <summary>
/// Xml model io handler class.
/// </summary>
/// <typeparam name="T">model type</typeparam>
public class XmlModel<T> : MainModel<T>
{
/// <summary>
/// Initializes a new instance of the <see cref="XmlModel{T}" /> class.
/// </summary>
/// <param name="modelType">model io type</param>
/// <param name="fileName">filename of the data file</param>
/// <param name="url">url of the feed data</param>
public XmlModel(ModelType modelType, string fileName, string url)
: base(modelType, fileName, url)
{
}
/// <summary>
/// Create the model from a xml byte array.
/// </summary>
/// <param name="modelData">model data</param>
/// <returns>true, if succeeded</returns>
protected override bool DeserializeModel(byte[] modelData)
{
bool retValue = true;
string data = Encoding.UTF8.GetString(modelData, 0, modelData.Length);
T tempModel = XmlManager.DeserializationToModel<T>(data, Constants.XMLRootElementName);
if (tempModel != null)
{
this.Model = tempModel;
}
else
{
retValue = false;
}
return retValue;
}
/// <summary>
/// Serializes the model to a byte array.
/// </summary>
/// <returns>model data</returns>
protected override byte[] SerializeModel()
{
byte[] retValue = null;
if (this.Model != null)
{
retValue = Encoding.UTF8.GetBytes(XmlManager.SerializationToString<T>(this.Model));
}
return retValue;
}
}
}

View File

@@ -6,7 +6,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:Location="clr-namespace:System.Device.Location;assembly=System.Device"
x:Class="CampusAppWP8.Pages.campusmap.CampusMapPage"
x:Class="CampusAppWP8.Pages.Campusmap.CampusMapPage"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
@@ -35,17 +35,25 @@
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" />
<Image Grid.Column="1" Source="/Toolkit.Content/ApplicationBar.Check.png" />
<TextBox Name="XPoint" Grid.Column="0" Text="0" />
<TextBox Name="YPoint" Grid.Column="1" Text="0"/>
<Button Grid.Column="2" Click="Button_Click">
<Image Source="{Binding Path=ThemelizedIcon.Search, Source={StaticResource ThemelizedIcons}}" Width="60"/>
</Button>
</Grid>
<Controls:Map Grid.Row="1" ZoomLevel="16">
<Controls:Map.Center>
<Location:GeoCoordinate Altitude="NaN" Course="NaN" HorizontalAccuracy="NaN" Longitude="14.3242" Latitude="51.7662" Speed="NaN" VerticalAccuracy="NaN"/>
</Controls:Map.Center>
</Controls:Map>
<ScrollViewer Name="MapScroller" Grid.Row="1" HorizontalScrollBarVisibility="Auto" RenderTransformOrigin="0,0">
<Canvas Name="MapCanvas" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" Height="{Binding ImageHeight}" Width="{Binding ImageWidth}">
<Canvas.Background>
<ImageBrush Stretch="Fill" ImageSource="{Binding ImageSource}">
</ImageBrush>
</Canvas.Background>
</Canvas>
</ScrollViewer>
</Grid>
</Grid>

View File

@@ -0,0 +1,51 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using System.Windows.Media;
using CampusAppWP8.Model.Campusmap;
using System.Windows.Media.Imaging;
namespace CampusAppWP8.Pages.Campusmap
{
public partial class CampusMapPage : PhoneApplicationPage
{
private MapModel map;
public CampusMapPage()
{
InitializeComponent();
this.map = new MapModel() { ImageSource = "/Assets/testmap.png", ImageWidth = 2000, ImageHeight = 2000, MapImageOffsetX = -228, MapImageOffsetY = -300, RefPoint = new Point(1000, 1000), Scale = 20};
this.MapCanvas.DataContext = map;
}
private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
{
}
/// <summary>
/// Methods overrides the OnNavigatedTo-Method
/// </summary>
/// <param name="e">some NavigationEventArgs</param>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MapCanvas.Children.Clear();
Point scrollPoint = map.GetScrollPoint(map.ConverToPixelPoint(double.Parse(XPoint.Text), double.Parse(YPoint.Text)));
MapCanvas.Children.Add(map.AddPinFromRefPoint(map.ConverToPixelPoint(double.Parse(XPoint.Text), double.Parse(YPoint.Text))));
MapScroller.ScrollToVerticalOffset(scrollPoint.Y);
MapScroller.ScrollToHorizontalOffset(scrollPoint.X);
}
}
}

View File

@@ -0,0 +1,74 @@
<phone:PhoneApplicationPage
x:Class="CampusAppWP8.Pages.Departments.DepartmentFavoritePage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot ist das Stammraster, in dem alle anderen Seiteninhalte platziert werden-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel enthält den Namen der Anwendung und den Seitentitel-->
<StackPanel Grid.Row="0" Margin="12,17,0,28">
<TextBlock Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock Text="{Binding Path=LocalizedResources.Favorites, Source={StaticResource LocalizedStrings}}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel - zusätzliche Inhalte hier platzieren-->
<ListBox x:Name="ContentPanel" ItemsSource="{Binding Chairs}" Grid.Row="1" Margin="12,0,12,0">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<!--chair main button-->
<Button Tag="{Binding Url}" Click="ChairTB_Click" HorizontalContentAlignment="Left">
<TextBlock Text="{Binding Name}" HorizontalAlignment="Stretch" TextWrapping="Wrap" FontSize="24"/>
</Button>
<StackPanel Visibility="Collapsed">
<!--delete button-->
<Button BorderBrush="Transparent" Tag="{Binding Name}" Click="DeleteBtn_Click" HorizontalContentAlignment="Left">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="64"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Grid.Row="0" Height="32" Width="32" Source="{Binding Path=ThemelizedIcon.Delete, Source={StaticResource ThemelizedIcons}}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding Path=LocalizedResources.Delete, Source={StaticResource LocalizedStrings}}" VerticalAlignment="Center"/>
</Grid>
</Button>
<!--info button-->
<Button x:Name="InfoBtn" BorderBrush="Transparent" Tag="{Binding Url}" Click="InfoBtn_Click" HorizontalContentAlignment="Left">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="64"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Grid.Row="0" Height="32" Width="32" Source="{Binding Path=ThemelizedIcon.Info, Source={StaticResource ThemelizedIcons}}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding Path=LocalizedResources.Info, Source={StaticResource LocalizedStrings}}" VerticalAlignment="Center"/>
</Grid>
</Button>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</phone:PhoneApplicationPage>

View File

@@ -0,0 +1,112 @@
//-----------------------------------------------------------------------
// <copyright file="DepartmentFavoritePage.xaml.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>01.07.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Pages.Departments
{
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using CampusAppWP8.Resources;
using Microsoft.Phone.Controls;
/// <summary>
/// Page to visualize the favorite department list.
/// </summary>
public partial class DepartmentFavoritePage : PhoneApplicationPage
{
/// <summary>
/// Object to store the last clicked chair button.
/// </summary>
private FrameworkElement lastClickedBtn = null;
/// <summary>
/// Initializes a new instance of the <see cref="DepartmentFavoritePage" /> class.
/// </summary>
public DepartmentFavoritePage()
{
this.InitializeComponent();
}
/// <summary>
/// On navigation to this page.
/// Initialize the list source.
/// </summary>
/// <param name="e">event args</param>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.ContentPanel.ItemsSource = DepartmentIndexPage.GetFavoriteFeed().GetModel().Faculties[0].Chairs;
}
/// <summary>
/// On clicking on a chair button.
/// Open or close the chair details.
/// </summary>
/// <param name="sender">clicked button</param>
/// <param name="e">event args</param>
private void ChairTB_Click(object sender, RoutedEventArgs e)
{
FrameworkElement tempBtn = sender as FrameworkElement;
StackPanel tempParent = null;
if (tempBtn == this.lastClickedBtn)
{
tempParent = this.lastClickedBtn.Parent as StackPanel;
tempParent.Children[1].Visibility = Visibility.Collapsed;
this.lastClickedBtn = null;
}
else
{
if (this.lastClickedBtn != null)
{
tempParent = this.lastClickedBtn.Parent as StackPanel;
tempParent.Children[1].Visibility = Visibility.Collapsed;
}
tempParent = tempBtn.Parent as StackPanel;
tempParent.Children[1].Visibility = Visibility.Visible;
this.lastClickedBtn = tempBtn;
}
}
/// <summary>
/// On clicking on a delete button.
/// Removes the chair from the favorite list.
/// </summary>
/// <param name="sender">clicked button</param>
/// <param name="e">event args</param>
private void DeleteBtn_Click(object sender, RoutedEventArgs e)
{
Button btn = this.lastClickedBtn as Button;
TextBlock btnText = btn.Content as TextBlock;
if (DepartmentIndexPage.GetFavoriteFeed().GetModel().Faculties[0].RemoveChair(btnText.Text) == true)
{
MessageBox.Show(AppResources.DeleteSucceeded);
}
else
{
MessageBox.Show(AppResources.DeleteFailed);
}
}
/// <summary>
/// On clicking on a info button.
/// Open a department info page.
/// </summary>
/// <param name="sender">clicked button</param>
/// <param name="e">event args</param>
private void InfoBtn_Click(object sender, RoutedEventArgs e)
{
FrameworkElement infoBtn = sender as FrameworkElement;
string chairName = ((this.lastClickedBtn as Button).Content as TextBlock).Text.ToString();
NavigationService.Navigate(new Uri(Constants.PathDepartment_DepartmentInfoPage + "?url=" + infoBtn.Tag.ToString() + "&name=" + chairName, UriKind.Relative));
}
}
}

View File

@@ -0,0 +1,77 @@
<phone:PhoneApplicationPage
x:Class="CampusAppWP8.Pages.Departments.DepartmentIndexPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot ist das Stammraster, in dem alle anderen Seiteninhalte platziert werden-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel enthält den Namen der Anwendung und den Seitentitel-->
<StackPanel Grid.Row="0" Margin="12,17,0,28">
<TextBlock Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock Text="{Binding Path=LocalizedResources.DepartmentApp_Title, Source={StaticResource LocalizedStrings}}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel - zusätzliche Inhalte hier platzieren-->
<ListBox x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
<!--favorite button-->
<Button x:Name="Favorite" Click="FavoriteBtn_Click" HorizontalContentAlignment="Left">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="64"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Width="32" Height="32" Grid.Row="0" Grid.Column="0" Source="{Binding Path=ThemelizedIcon.Favorite, Source={StaticResource ThemelizedIcons}}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=LocalizedResources.Favorites, Source={StaticResource LocalizedStrings}}" VerticalAlignment="Center"/>
</Grid>
</Button>
</ListBox>
<!--faculty button list-->
<ListBox x:Name="FacultyList" Grid.Row="2" Margin="12,0,12,0">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<!--faculty button-->
<Button Tag="{Binding Id}" Click="FacultyBtn_Click" HorizontalContentAlignment="Left">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="64"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Width="32" Height="32" Grid.Row="0" Grid.Column="0" Source="{Binding Path=ThemelizedIcon.Departments, Source={StaticResource ThemelizedIcons}}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Name}" VerticalAlignment="Center"/>
</Grid>
</Button>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</phone:PhoneApplicationPage>

View File

@@ -0,0 +1,160 @@
//-----------------------------------------------------------------------
// <copyright file="DepartmentIndexPage.xaml.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>24.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Pages.Departments
{
using System;
using System.Linq;
using System.Windows;
using System.Windows.Navigation;
using CampusAppWP8.Feed.Departments;
using CampusAppWP8.Resources;
using Microsoft.Phone.Controls;
/// <summary>
/// Page with a list of the faculties.
/// </summary>
public partial class DepartmentIndexPage : PhoneApplicationPage
{
/// <summary>
/// Department/chair feed object, storing the model and data.
/// </summary>
private static DepartmentFeed feed = null;
/// <summary>
/// Department feed object for storing the favorite list.
/// </summary>
private static DepartmentFavoriteFeed favorite = null;
/// <summary>
/// Initializes a new instance of the <see cref="DepartmentIndexPage" /> class.
/// </summary>
public DepartmentIndexPage()
{
this.InitializeComponent();
//// init feed objects
if (DepartmentIndexPage.feed == null)
{
DepartmentIndexPage.feed = new DepartmentFeed(false);
}
DepartmentIndexPage.feed.onLoaded += new DepartmentFeed.OnLoaded(this.SetupFacultyList);
DepartmentIndexPage.feed.LoadData();
if (DepartmentIndexPage.favorite == null)
{
DepartmentIndexPage.favorite = new DepartmentFavoriteFeed(false);
}
DepartmentIndexPage.favorite.onLoaded += new DepartmentFavoriteFeed.OnLoaded(this.CheckFavoriteFeed);
DepartmentIndexPage.favorite.LoadData();
}
/// <summary>
/// Return the feed object of the departments.
/// </summary>
/// <returns>feed object</returns>
public static DepartmentFeed GetFeed()
{
return DepartmentIndexPage.feed; // DepartmentIndexPage.feed;
}
/// <summary>
/// Return the feed object of the favorite departments.
/// </summary>
/// <returns>feed object</returns>
public static DepartmentFavoriteFeed GetFavoriteFeed()
{
return DepartmentIndexPage.favorite; // DepartmentIndexPage.favorite;
}
/// <summary>
/// On navigation to this page.
/// Initialize the feed loading.
/// </summary>
/// <param name="e">event args</param>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (NavigationMode.Back != e.NavigationMode)
{
}
}
/// <summary>
/// On navigation from this page.
/// Store the favorite list.
/// </summary>
/// <param name="e">event args</param>
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
if (NavigationMode.Back == e.NavigationMode)
{
DepartmentIndexPage.favorite.SaveData();
}
base.OnNavigatedFrom(e);
}
/// <summary>
/// On orientation changed.
/// </summary>
/// <param name="sender">sender object</param>
/// <param name="e">event args</param>
private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
{
}
/// <summary>
/// Setup the faculty list.
/// </summary>
private void SetupFacultyList()
{
this.FacultyList.ItemsSource = DepartmentIndexPage.feed.GetModel().Faculties;
}
/// <summary>
/// Checks if the favorite feed is valid.
/// </summary>
private void CheckFavoriteFeed()
{
if (DepartmentIndexPage.favorite.GetModel() == null)
{
DepartmentIndexPage.favorite.Model = new Model.Departments.DepartmentModel();
}
if (DepartmentIndexPage.favorite.GetModel().Faculties.Count() == 0)
{
DepartmentIndexPage.favorite.Model.Faculties.Add(new Model.Departments.FacultyModel("favorites"));
}
}
/// <summary>
/// On clicking on the favorite button.
/// </summary>
/// <param name="sender">clicked button</param>
/// <param name="e">event args</param>
private void FavoriteBtn_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri(Constants.PathDepartment_DepartmentFavoritePage, UriKind.Relative));
}
/// <summary>
/// On clicking on a faculty button.
/// </summary>
/// <param name="sender">clicked button</param>
/// <param name="e">event args</param>
private void FacultyBtn_Click(object sender, RoutedEventArgs e)
{
FrameworkElement tempElem = sender as FrameworkElement;
NavigationService.Navigate(new Uri(Constants.PathDepartment_DepartmentPage + "?pivotindex=" + tempElem.Tag, UriKind.Relative));
}
}
}

View File

@@ -0,0 +1,36 @@
<phone:PhoneApplicationPage
x:Class="CampusAppWP8.Pages.Departments.DepartmentInfoPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
OrientationChanged="PhoneApplicationPage_OrientationChanged"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot ist das Stammraster, in dem alle anderen Seiteninhalte platziert werden-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--title-->
<StackPanel Grid.Row="0" Margin="12,17,0,28">
<TextBlock Text="{Binding Path=LocalizedResources.DepartmentApp_Title, Source={StaticResource LocalizedStrings}}" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageHeadline" Text="Seitenname" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" FontSize="36" TextWrapping="Wrap"/>
</StackPanel>
<!--webbrowser-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<phone:WebBrowser x:Name="WebBrowser" Grid.Row="0" IsScriptEnabled="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Grid>
</Grid>
</phone:PhoneApplicationPage>

View File

@@ -0,0 +1,56 @@
//-----------------------------------------------------------------------
// <copyright file="DepartmentInfoPage.xaml.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>01.07.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Pages.Departments
{
using System;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
/// <summary>
/// Info page of a chair.
/// </summary>
public partial class DepartmentInfoPage : PhoneApplicationPage
{
/// <summary>
/// Initializes a new instance of the <see cref="DepartmentInfoPage" /> class.
/// </summary>
public DepartmentInfoPage()
{
this.InitializeComponent();
}
/// <summary>
/// On navigation to this page.
/// Initialize the page headline text.
/// </summary>
/// <param name="e">event args</param>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
string url = string.Empty;
string chairName = string.Empty;
if (NavigationContext.QueryString.TryGetValue("url", out url)
&& NavigationContext.QueryString.TryGetValue("name", out chairName))
{
this.PageHeadline.Text = chairName;
this.WebBrowser.Navigate(new Uri(url, UriKind.Absolute));
}
}
/// <summary>
/// On orientation changed.
/// </summary>
/// <param name="sender">sender object</param>
/// <param name="e">event args</param>
private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
{
}
}
}

View File

@@ -0,0 +1,79 @@
<phone:PhoneApplicationPage
x:Class="CampusAppWP8.Pages.Departments.DepartmentPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModel="clr-namespace:CampusAppWP8.Model.Departments"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
OrientationChanged="PhoneApplicationPage_OrientationChanged"
shell:SystemTray.IsVisible="True">
<!-- LayoutRoot -->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.DataContext>
<viewModel:DepartmentModel />
</Grid.DataContext>
<!-- Pivot -->
<phone:Pivot x:Name="DepartmentPivot" Title="{Binding Path=LocalizedResources.DepartmentApp_Title, Source={StaticResource LocalizedStrings}}" ItemsSource="{Binding Faculties}">
<!-- Pivotitem template -->
<phone:Pivot.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name, Mode=OneWay}" />
</DataTemplate>
</phone:Pivot.HeaderTemplate>
<phone:Pivot.ItemTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding Chairs}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<!--chair button-->
<Button Tag="{Binding Url}" Click="ChairTB_Click" HorizontalContentAlignment="Left">
<TextBlock Text="{Binding Name}" HorizontalAlignment="Stretch" TextWrapping="Wrap" FontSize="24"/>
</Button>
<StackPanel Visibility="Collapsed">
<!--add to favorite button-->
<Button BorderBrush="Transparent" Tag="{Binding Name}" Click="AddBtn_Click" HorizontalContentAlignment="Left">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="64"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Grid.Row="0" Height="32" Width="32" Source="{Binding Path=ThemelizedIcon.Add, Source={StaticResource ThemelizedIcons}}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding Path=LocalizedResources.Add, Source={StaticResource LocalizedStrings}}" VerticalAlignment="Center"/>
</Grid>
</Button>
<!--info button-->
<Button x:Name="InfoBtn" BorderBrush="Transparent" Tag="{Binding Url}" Click="InfoBtn_Click" HorizontalContentAlignment="Left">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="64"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Grid.Row="0" Height="32" Width="32" Source="{Binding Path=ThemelizedIcon.Info, Source={StaticResource ThemelizedIcons}}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding Path=LocalizedResources.Info, Source={StaticResource LocalizedStrings}}" VerticalAlignment="Center"/>
</Grid>
</Button>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</phone:Pivot.ItemTemplate>
</phone:Pivot>
</Grid>
</phone:PhoneApplicationPage>

View File

@@ -0,0 +1,149 @@
//-----------------------------------------------------------------------
// <copyright file="DepartmentPage.xaml.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>24.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Pages.Departments
{
using System;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using CampusAppWP8.Resources;
using Microsoft.Phone.Controls;
/// <summary>
/// Pivot page with list of the chairs of the faculties.
/// </summary>
public partial class DepartmentPage : PhoneApplicationPage
{
/// <summary>
/// For checking, if the source of the list is already set.
/// </summary>
private bool isSourceSet = false;
/// <summary>
/// Last clicked button object.
/// </summary>
private FrameworkElement lastClickedBtn = null;
/// <summary>
/// Initializes a new instance of the <see cref="DepartmentPage" /> class.
/// </summary>
public DepartmentPage()
{
this.InitializeComponent();
}
/// <summary>
/// On navigation to this page.
/// Initialize the feed loading.
/// </summary>
/// <param name="e">event args</param>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (this.isSourceSet == false)
{
this.DepartmentPivot.ItemsSource = DepartmentIndexPage.GetFeed().GetModel().Faculties;
this.isSourceSet = true;
}
string pivotIndex = string.Empty;
// Navigate to the selected pivotitem
if (NavigationContext.QueryString.TryGetValue("pivotindex", out pivotIndex))
{
int pivotIndexInt = int.Parse(pivotIndex) - 1;
// if the index is in the range of the array
if ((pivotIndexInt >= 0) && (pivotIndexInt < DepartmentIndexPage.GetFeed().GetModel().Faculties.Count()))
{
DepartmentPivot.SelectedIndex = pivotIndexInt;
}
else
{
MessageBox.Show("ERROR: pivotIndex out of range!!!");
}
}
}
/// <summary>
/// On orientation changed.
/// </summary>
/// <param name="sender">sender object</param>
/// <param name="e">event args</param>
private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
{
}
/// <summary>
/// On clicking a chair TextBlock.
/// Open the browser with the url of the chair.
/// </summary>
/// <param name="sender">clicked chair TextBlock</param>
/// <param name="e">event args</param>
private void ChairTB_Click(object sender, RoutedEventArgs e)
{
FrameworkElement tempBtn = sender as FrameworkElement;
StackPanel tempParent = null;
if (this.lastClickedBtn != tempBtn)
{
if (this.lastClickedBtn != null)
{
tempParent = this.lastClickedBtn.Parent as StackPanel;
tempParent.Children[1].Visibility = Visibility.Collapsed;
}
tempParent = tempBtn.Parent as StackPanel;
tempParent.Children[1].Visibility = Visibility.Visible;
this.lastClickedBtn = tempBtn;
}
else
{
tempParent = this.lastClickedBtn.Parent as StackPanel;
tempParent.Children[1].Visibility = Visibility.Collapsed;
this.lastClickedBtn = null;
}
}
/// <summary>
/// On clicking on a add button.
/// Add the chair to the favorite list.
/// </summary>
/// <param name="sender">clicked button</param>
/// <param name="e">event args</param>
private void AddBtn_Click(object sender, RoutedEventArgs e)
{
Button btn = this.lastClickedBtn as Button;
TextBlock btnText = btn.Content as TextBlock;
Model.Departments.ChairModel tempModel = DepartmentIndexPage.GetFeed().GetModel().Faculties[this.DepartmentPivot.SelectedIndex].GetChairModel(btnText.Text);
if (tempModel != null)
{
DepartmentIndexPage.GetFavoriteFeed().GetModel().Faculties[0].AddChair(tempModel);
}
}
/// <summary>
/// On clicking on a info button.
/// Open the info page to this chair.
/// </summary>
/// <param name="sender">clicked button</param>
/// <param name="e">event args</param>
private void InfoBtn_Click(object sender, RoutedEventArgs e)
{
FrameworkElement infoBtn = sender as FrameworkElement;
string chairName = ((this.lastClickedBtn as Button).Content as TextBlock).Text.ToString();
NavigationService.Navigate(new Uri(Constants.PathDepartment_DepartmentInfoPage + "?url=" + infoBtn.Tag.ToString() + "&name=" + chairName, UriKind.Relative));
}
}
}

View File

@@ -0,0 +1,51 @@
<phone:PhoneApplicationPage
x:Class="CampusAppWP8.Pages.Events.EventIndexPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:lui="clr-namespace:CampusAppWP8.Utility.Lui.Button"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot -->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- Title and headline -->
<StackPanel Grid.Row="0" Margin="12,17,0,28">
<TextBlock Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock Text="{Binding Path=LocalizedResources.EventApp_Title, Source={StaticResource LocalizedStrings}}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!-- Content -->
<ListBox x:Name="EventList" Grid.Row="1">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<lui:NavigateButton Name="EventItem" QuerryStringValue="{Binding Index}" Url="{Binding Path=Constants.PathEvent_EventPage, Source={StaticResource Const}}" QuerryStringName="{Binding Path=Constants.ParamPivotIndex, Source={StaticResource Const}}" Style="{StaticResource ListButtonStyle}">
<TextBlock TextWrapping="Wrap" Text="{Binding Title}" />
</lui:NavigateButton>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar IsVisible="True" IsMenuEnabled="False" Mode="Minimized" Opacity="1.0" >
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>
</phone:PhoneApplicationPage>

View File

@@ -0,0 +1,90 @@
//-----------------------------------------------------------------------------
// <copyright file="EventIndexPage.xaml.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>fiedlchr</author>
// <sience>03.05.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8.Pages.Events
{
using System;
using System.Linq;
using System.Windows.Navigation;
using CampusAppWP8.Feed.Events;
using CampusAppWP8.Resources;
using CampusAppWP8.Utility;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
/// <summary>
/// Overview page of all events.
/// </summary>
public partial class EventIndexPage : PhoneApplicationPage
{
/// <summary>
/// Event Feed object, which contains the RSS models and data.
/// </summary>
private static EventFeed eventFeed = null;
/// <summary>
/// Initializes a new instance of the <see cref="EventIndexPage" /> class.
/// </summary>
public EventIndexPage()
{
this.InitializeComponent();
ApplicationBarIconButton updateBtn = new ApplicationBarIconButton();
updateBtn.IconUri = new Uri(Icons.Update, UriKind.Relative);
updateBtn.Text = AppResources.UpdateBtn;
updateBtn.Click += new EventHandler(this.EventForceUpdate_Click);
ApplicationBar.Buttons.Add(updateBtn);
if (EventIndexPage.eventFeed == null)
{
EventIndexPage.eventFeed = new EventFeed(false);
}
EventIndexPage.eventFeed.onLoaded += new EventFeed.OnLoaded(this.SetupEventPageList);
EventIndexPage.eventFeed.LoadData();
}
/// <summary>
/// Return the eventFeed object.
/// </summary>
/// <returns>event feed object</returns>
public static EventFeed GetEventFeed()
{
return EventIndexPage.eventFeed;
}
/// <summary>
/// On navigation to this page, creates a FeedEventHandler and load the RSS feed data.
/// </summary>
/// <param name="e">event args</param>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
}
/// <summary>
/// Is called after the RSS feeds are loaded into the eventFeed model.
/// If there was no feed information set to the UI, the feed list
/// will be sorted by timestamp and the buttons will be created.
/// </summary>
private void SetupEventPageList()
{
this.EventList.ItemsSource = EventIndexPage.eventFeed.Model.Channel[0].Item;
}
/// <summary>
/// On clicking the update button in the ApplicationBar.
/// Force a data update from the web.
/// </summary>
/// <param name="sender">button object</param>
/// <param name="e">event args</param>
private void EventForceUpdate_Click(object sender, EventArgs e)
{
EventIndexPage.eventFeed.ForceWebUpdate();
}
}
}

View File

@@ -0,0 +1,61 @@
<phone:PhoneApplicationPage
x:Class="CampusAppWP8.Pages.Events.EventPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModel="clr-namespace:CampusAppWP8.Model.RSS"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
shell:SystemTray.IsVisible="True">
<phone:PhoneApplicationPage.Resources>
<viewModel:RSSViewModel x:Key="RssViewModel" x:Name="RssView" />
</phone:PhoneApplicationPage.Resources>
<!-- LayoutRoot -->
<Grid x:Name="LayoutRoot" Background="Transparent">
<!-- Pivotpage -->
<phone:Pivot x:Name="EventPivot" Title="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}" SelectionChanged="OnPivotSelectionChange">
<!-- Pivotitem template -->
<phone:Pivot.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Date, Mode=OneWay}" />
</DataTemplate>
</phone:Pivot.HeaderTemplate>
<phone:Pivot.ItemTemplate>
<DataTemplate>
<Grid x:Name="EventParentGrid">
<Grid.RowDefinitions>
<!--<RowDefinition Height="100"/>-->
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid x:Name="EventTextGrid" Grid.Row="0">
<Grid.RowDefinitions>
<RowDefinition Height="100" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock x:Name="EventHeadline" Text="{Binding Path=Title, Mode=OneWay}" Grid.Row="0" Height="Auto" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Left" FontSize="42"/>
<ScrollViewer x:Name="EventTextScroll" Grid.Row="1">
<TextBlock x:Name="EventText" Text="{Binding Path=Text, Mode=OneWay}" Height="Auto" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Left" FontSize="24" />
</ScrollViewer>
</Grid>
<phone:WebBrowser x:Name="EventWebBrowser" Source="{Binding Path=Link, Mode=OneWay}" Grid.Row="0" IsScriptEnabled="True" Visibility="Collapsed"/>
</Grid>
</DataTemplate>
</phone:Pivot.ItemTemplate>
</phone:Pivot>
</Grid>
<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar IsVisible="True" IsMenuEnabled="False" Mode="Default" Opacity="1.0" >
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>
</phone:PhoneApplicationPage>

Some files were not shown because too many files have changed in this diff Show More