From cfcfd20956f849e5db120b6cb14eec2f61779400 Mon Sep 17 00:00:00 2001 From: stubbfel Date: Mon, 14 Oct 2013 18:07:01 +0200 Subject: [PATCH 1/9] rm unuse pic --- .../CampusAppWP8/Api/GeoApi/CampusSpsApi.cs | 39 +++++++++--------- .../CampusAppWP8/Api/GeoApi/PisApi.cs | 27 ++++++------ .../CampusAppWP8/Api/GeoApi/PssApi.cs | 27 ++++++------ .../CampusAppWP8/Api/GeoApi/SpsApi.cs | 35 ++++++++-------- .../CampusAppWP8/Api/Lecture/LectureApi.cs | 25 +++++------ .../Api/Person/PersonSearchApi.cs | 21 +++++----- .../CampusAppWP8/Assets/AlignmentGrid.png | Bin 9042 -> 0 bytes .../Assets/Tiles/FlipCycleTileLarge.png | Bin 9930 -> 0 bytes .../Assets/Tiles/FlipCycleTileMedium.png | Bin 9070 -> 0 bytes .../Assets/Tiles/FlipCycleTileSmall.png | Bin 3674 -> 0 bytes .../Assets/Tiles/IconicTileMediumLarge.png | Bin 4937 -> 0 bytes .../Assets/Tiles/IconicTileSmall.png | Bin 3724 -> 0 bytes .../Assets/Tiles/kachel_large.png | Bin 32650 -> 0 bytes .../Assets/Tiles/kachel_medium.png | Bin 21377 -> 0 bytes .../Assets/Tiles/kachel_small.png | Bin 9727 -> 0 bytes .../Assets/psd/holo_optionsbuttons.psd | Bin 92796 -> 0 bytes .../Assets/psd/iconbutton_effects2.psd | Bin 665169 -> 0 bytes CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj | 21 ---------- 18 files changed, 87 insertions(+), 108 deletions(-) delete mode 100644 CampusAppWP8/CampusAppWP8/Assets/AlignmentGrid.png delete mode 100644 CampusAppWP8/CampusAppWP8/Assets/Tiles/FlipCycleTileLarge.png delete mode 100644 CampusAppWP8/CampusAppWP8/Assets/Tiles/FlipCycleTileMedium.png delete mode 100644 CampusAppWP8/CampusAppWP8/Assets/Tiles/FlipCycleTileSmall.png delete mode 100644 CampusAppWP8/CampusAppWP8/Assets/Tiles/IconicTileMediumLarge.png delete mode 100644 CampusAppWP8/CampusAppWP8/Assets/Tiles/IconicTileSmall.png delete mode 100644 CampusAppWP8/CampusAppWP8/Assets/Tiles/kachel_large.png delete mode 100644 CampusAppWP8/CampusAppWP8/Assets/Tiles/kachel_medium.png delete mode 100644 CampusAppWP8/CampusAppWP8/Assets/Tiles/kachel_small.png delete mode 100644 CampusAppWP8/CampusAppWP8/Assets/psd/holo_optionsbuttons.psd delete mode 100644 CampusAppWP8/CampusAppWP8/Assets/psd/iconbutton_effects2.psd diff --git a/CampusAppWP8/CampusAppWP8/Api/GeoApi/CampusSpsApi.cs b/CampusAppWP8/CampusAppWP8/Api/GeoApi/CampusSpsApi.cs index 8809c8a2..94ef65b8 100644 --- a/CampusAppWP8/CampusAppWP8/Api/GeoApi/CampusSpsApi.cs +++ b/CampusAppWP8/CampusAppWP8/Api/GeoApi/CampusSpsApi.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 12.08.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the campus sps API class +//----------------------------------------------------------------------- namespace CampusAppWP8.Api.GeoApi { using System; @@ -12,16 +13,15 @@ namespace CampusAppWP8.Api.GeoApi using CampusAppWP8.Resources; using CampusAppWP8.Utility; - /// - /// Class for SPSAPI - /// + /// Class for SPSAPI. + /// Stubbfel, 14.10.2013. + /// public class CampusSpsApi : SpsApi { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. public CampusSpsApi() : base() { @@ -32,18 +32,18 @@ namespace CampusAppWP8.Api.GeoApi #region Method /// - /// Method set the UriParameter of a campusRequest for a given latitude and longitude + /// Method set the UriParameter of a campusRequest for a given latitude and longitude. /// - /// latitude parameter - /// longitude parameter + /// Stubbfel, 14.10.2013. + /// latitude parameter. + /// longitude parameter. public void SetupCampusRequest(string lat, string log) { this.SetupPlaceRequest(lat, log, Constants.SpsApi_CampusDomain); } - /// - /// Method set the UriParameter of a campusRequest for the actualPosition - /// + /// Method set the UriParameter of a campusRequest for the actualPosition. + /// Stubbfel, 14.10.2013. public void SetupCurrentCampusRequest() { Utilities.DetermineAndStoreCurrentPosition(); @@ -52,10 +52,9 @@ namespace CampusAppWP8.Api.GeoApi this.SetupCampusRequest(lat, log); } - /// - /// Method return the campus of the placeList - /// - /// actual campus + /// Method return the campus of the placeList. + /// Stubbfel, 14.10.2013. + /// actual campus. public CampusAppWPortalLib8.Model.Settings.Campus GetCampus() { if (this.Model == null) diff --git a/CampusAppWP8/CampusAppWP8/Api/GeoApi/PisApi.cs b/CampusAppWP8/CampusAppWP8/Api/GeoApi/PisApi.cs index a35d987b..9d8b112d 100644 --- a/CampusAppWP8/CampusAppWP8/Api/GeoApi/PisApi.cs +++ b/CampusAppWP8/CampusAppWP8/Api/GeoApi/PisApi.cs @@ -1,11 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 09.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 14.10.2013 +// Implements the pis API class +//----------------------------------------------------------------------- namespace CampusAppWP8.Api.GeoApi { using System.Collections.Generic; @@ -15,14 +15,15 @@ namespace CampusAppWP8.Api.GeoApi using CampusAppWPortalLib8.Model; using CampusAppWPortalLib8.Model.Utility; - /// Pis api. - /// Stubbfel, 09.09.2013. + /// Pis api. + /// Stubbfel, 09.09.2013. + /// public class PisApi : XmlModel { #region Constructor - /// Initializes a new instance of the PisApi class. - /// Stubbfel, 09.09.2013. + /// Initializes a new instance of the PisApi class. + /// Stubbfel, 09.09.2013. public PisApi() : base(ModelType.Feed, Constants.UrlPisService) { @@ -32,10 +33,10 @@ namespace CampusAppWP8.Api.GeoApi #region Method - /// Sets up the information request. - /// Stubbfel, 09.09.2013. - /// List of pids. - /// (Optional) list of names of the information. + /// Sets up the information request. + /// Stubbfel, 09.09.2013. + /// List of pids. + /// (Optional) list of names of the information. public void SetupInformationRequest(List pidList, List infoNames = null) { string pidListStr = string.Empty; diff --git a/CampusAppWP8/CampusAppWP8/Api/GeoApi/PssApi.cs b/CampusAppWP8/CampusAppWP8/Api/GeoApi/PssApi.cs index 77e91e24..52e5afb3 100644 --- a/CampusAppWP8/CampusAppWP8/Api/GeoApi/PssApi.cs +++ b/CampusAppWP8/CampusAppWP8/Api/GeoApi/PssApi.cs @@ -1,11 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 09.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 14.10.2013 +// Implements the pss API class +//----------------------------------------------------------------------- namespace CampusAppWP8.Api.GeoApi { using System.Collections.Generic; @@ -15,14 +15,15 @@ namespace CampusAppWP8.Api.GeoApi using CampusAppWPortalLib8.Model; using CampusAppWPortalLib8.Model.Utility; - /// Pss api. - /// Stubbfel, 09.09.2013. + /// Pss api. + /// Stubbfel, 09.09.2013. + /// public class PssApi : XmlModel { #region Constructor - /// Initializes a new instance of the PssApi class. - /// Stubbfel, 09.09.2013. + /// Initializes a new instance of the PssApi class. + /// Stubbfel, 09.09.2013. public PssApi() : base(ModelType.Feed, Constants.UrlPssService) { @@ -32,10 +33,10 @@ namespace CampusAppWP8.Api.GeoApi #region Method - /// Sets up the service request. - /// Stubbfel, 09.09.2013. - /// List of pids. - /// (Optional) list of names of the services. + /// Sets up the service request. + /// Stubbfel, 09.09.2013. + /// List of pids. + /// (Optional) list of names of the services. public void SetupServiceRequest(List pidList, List serviceNames = null) { string pidListStr = string.Empty; diff --git a/CampusAppWP8/CampusAppWP8/Api/GeoApi/SpsApi.cs b/CampusAppWP8/CampusAppWP8/Api/GeoApi/SpsApi.cs index 6c00b9ee..806d1ca2 100644 --- a/CampusAppWP8/CampusAppWP8/Api/GeoApi/SpsApi.cs +++ b/CampusAppWP8/CampusAppWP8/Api/GeoApi/SpsApi.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 06.08.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the sps API class +//----------------------------------------------------------------------- namespace CampusAppWP8.Api.GeoApi { using System.Collections.Generic; @@ -15,16 +16,15 @@ namespace CampusAppWP8.Api.GeoApi using CampusAppWPortalLib8.Model; using CampusAppWPortalLib8.Model.Utility; - /// - /// Class for SPSAPI - /// + /// Class for SPSAPI. + /// Stubbfel, 14.10.2013. + /// public class SpsApi : XmlModel { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. public SpsApi() : base(ModelType.Feed, Constants.UrlSpsService) { @@ -35,11 +35,12 @@ namespace CampusAppWP8.Api.GeoApi #region Method /// - /// Method set the UriParameter of a placeRequest for a given latitude and longitude + /// Method set the UriParameter of a placeRequest for a given latitude and longitude. /// - /// latitude of the place - /// longitude of the place - /// request domain + /// Stubbfel, 14.10.2013. + /// latitude of the place. + /// longitude of the place. + /// (Optional) request domain. public void SetupPlaceRequest(string lat, string log, string domian = null) { List parameterList = new List(); @@ -53,9 +54,9 @@ namespace CampusAppWP8.Api.GeoApi this.SetUriParams(parameterList); } - /// Sets up the current place request. - /// Stubbfel, 09.09.2013. - /// (Optional) request domain. + /// Sets up the current place request. + /// Stubbfel, 09.09.2013. + /// (Optional) request domain. public void SetupCurrentPlaceRequest(string domian = null) { Utilities.DetermineAndStoreCurrentPosition(); diff --git a/CampusAppWP8/CampusAppWP8/Api/Lecture/LectureApi.cs b/CampusAppWP8/CampusAppWP8/Api/Lecture/LectureApi.cs index 6ad81728..d724ae54 100644 --- a/CampusAppWP8/CampusAppWP8/Api/Lecture/LectureApi.cs +++ b/CampusAppWP8/CampusAppWP8/Api/Lecture/LectureApi.cs @@ -1,30 +1,27 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 13.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the lecture API class +//----------------------------------------------------------------------- namespace CampusAppWP8.Api.Lecture { using CampusAppWP8.Model; using CampusAppWP8.Model.Lecture; using CampusAppWP8.Resources; using CampusAppWPortalLib8.Model; - - /// - /// Class for the feed of the Lecture - /// - /// - /// need the XmlAPI - /// + + /// Class for the feed of the Lecture. + /// need the XmlAPI. + /// public class LectureApi : XmlModel { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. public LectureApi() : base(ModelType.Feed, Constants.UrlLecture_ApiBaseAddr) { diff --git a/CampusAppWP8/CampusAppWP8/Api/Person/PersonSearchApi.cs b/CampusAppWP8/CampusAppWP8/Api/Person/PersonSearchApi.cs index e44e2dbd..0e989bb6 100644 --- a/CampusAppWP8/CampusAppWP8/Api/Person/PersonSearchApi.cs +++ b/CampusAppWP8/CampusAppWP8/Api/Person/PersonSearchApi.cs @@ -1,11 +1,11 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 05.09.2013 -//----------------------------------------------------------------------------- - +// Stubbfel +// 14.10.2013 +// Implements the person search API class +//----------------------------------------------------------------------- namespace CampusAppWP8.Api.Person { using CampusAppWP8.Model; @@ -13,14 +13,15 @@ namespace CampusAppWP8.Api.Person using CampusAppWP8.Resources; using CampusAppWPortalLib8.Model; - /// Person search api. - /// Stubbfel, 05.09.2013. + /// Person search api. + /// Stubbfel, 05.09.2013. + /// public class PersonSearchApi : XmlModel { #region Constructor - /// Initializes a new instance of the PersonSearchApi class. - /// Stubbfel, 05.09.2013. + /// Initializes a new instance of the PersonSearchApi class. + /// Stubbfel, 05.09.2013. public PersonSearchApi() : base(ModelType.Feed, Constants.UrlPerson_PersonSearchByName) { diff --git a/CampusAppWP8/CampusAppWP8/Assets/AlignmentGrid.png b/CampusAppWP8/CampusAppWP8/Assets/AlignmentGrid.png deleted file mode 100644 index f7d2e97804e451530960b57429a2b0a26c86f5d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9042 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 UTjRcjfq{X+)78&qol`;+0Fo!fF8}}l diff --git a/CampusAppWP8/CampusAppWP8/Assets/Tiles/FlipCycleTileMedium.png b/CampusAppWP8/CampusAppWP8/Assets/Tiles/FlipCycleTileMedium.png deleted file mode 100644 index e93b89d600641c9d5b05f94493a9fde6afa850e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9070 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 II;Vst08+r4s{jB1 diff --git a/CampusAppWP8/CampusAppWP8/Assets/Tiles/FlipCycleTileSmall.png b/CampusAppWP8/CampusAppWP8/Assets/Tiles/FlipCycleTileSmall.png deleted file mode 100644 index 550b1b5e8d003a61a751d27fc699c5931af855c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3674 zcmeAS@N?(olHy`uVBq!ia0y~yV3-fW9Bd2>49}&xA22X5Fct^7J29*~C-ahlfq^C6 z(btiIVPik{pF~y$1_sUokH}&M20djEW~^9hU&g?|``**VF{C2y?cCfB*{hPrbMKi| z>+g1(eAi`-s_5-mIl4hFl5$p?`*!z=ab8_2FQpRbeeg@O?%i!38?*nUFxPF+Icl

9}1M{12(zgFkH#WZ``|RADnbyV6W?KJm zJbZWW_dWm4)t@WA_w0=6^$$vnLJAb18Quv+MMb`webUm>cCEVl%J=NC!yj0c7%ql9 zaGNc7?!bWqHb)8{e0qACnbqm|A~SD>rb@X(6JJZjRL}V#aC~!~jQZo2^chS-4GFiF zEnj{-_Td=^7wbhyGiJ@Y6~O(zE^N^;$N#J<3>&{xwkR{z+z~l?-}F+aKc2b z7K2{@mtUm$B_3?Icd#*5dgb=<;cxY(LyxvQ2NoRoZ|m`Xf8LzZa9B(LTK4%GR>44=oZnnU_B;pKlkQq1|B+Z!BC#efd&lK36k_bf-uh0P$#wHnqrY|DwXYHvY})@lVb9IYeSdzo z`FriaBM$pZSr|V0=I6&Ovq(A8@jmtYNg;iMn(Y^tu+KNP-~FdW(Ofy=4^L{P?7COF zmw$eK9=&OO##6P4qKy+QcWVl2{IS(kJ9gLhPsF*F)Jb=3nPT$HcCg<$yH4Ht22b?L zC2B$wFV4HgU7&qp&c`O3KlM!i<&#x@rfzNRnrJx1JIu}R;9AF<&!pWp^48TSzAzWg zzjgFF+Xtm(uZGp(YN-JawI7|-AZm?bbRP``~IcJBPRF|T#3 z*%26jbpronnXRq?iltT@*Y0u1xKVJN! zro3p!#+1yw?8qo!|RgDMy0Xy1LU;ACu zj?Mh}zuoFqvsZ51+`gmbItxGucDpScS`mgnVov7@euY}X>H*juM zk+_of|D68qYrkshIycMDSTIS+Wvc6cKi|{G>k?R&s=P5>{co<-$E!vyGrz2Cku=^V zBe3A+Sw~gXxknGpj@@JaSgtZ?-sd_`Z*3bpgLsbk+lG5LImboF$|=dpUvuBRsh_{~ zpX#;`d)PRr9GJ+Z=HA_ohpq9-f;t z{ma`a&I+^78zpzL5tGP6DYI~T%p8Y`;nc=BPAHSEDm&-fO ztySD8A?-3H>a_a$+d9)v>pPc}FN@_kHs6M^V|`cM1GO*A-__)+Pu1FedGB`d)nA#D zdm5T*W`!|IIyFxs zvaI>H@wRjCk2ya4?`OVMdt>B^s7 z8~gC;@?{7Aq^a4>y8Wg_T{GKY|IC@Ovu@`cU4HOS+NDny@1$wl=svr?>qkc3R}TH` z&)Ik1T)Oj0D1O?r>s6=KqhE)wkBi+^@X$#zy7I_Wh6O#cn^oWZ)Lxu*Y6gpLqKVmW z^Eo!(1KZ}8)*LgB*ipowekbq8r04ppK5_2j+i~t6?>fG3uR|XmXNOMP{r)seN4&kw8Aetjf7f$7Q;gD=Ic3~78tiJDis_4O4@IpdctHF>%`Fz!k> z|L2f7ah)qvI{fcdF0X4?7FEL}pl2S;E@(PwS-If7Sti0BN_kfw2{#ngOwV+@EBUY7 z_wVzg@~29L-sxIY+OK=LwCS|!vabBt zZnU@g-Es4eJ9#SW1fJgQJKx{*iC@pi{FJsHqeGpr!1I_N??lw*mY>pOFYw+|_}JQ# zapBckKXdQPsakLe5V$KI`4|Z=O?qzQVyDAuda+4hT*T(Ay?_R43Y-HQV*0 zV9F zSLQanEWMjJ-Cn%)1IK2ecWXQ& zG7Fne$zR|)m#Ld;kRoNsxj;z&+7W>(w<;IAOH2;)nYQg&499l9mp+ml1*s7erM5JQ z#7kJ{?ssNcthRP;f5$K9U)}8=tE-te|8?p3p>)=^D(c{csj|9nxaaeS%vn?V>)YF= z2Nr$B&JNsWTI&llMB?IRh#N876xo`TwN@cad!K}<&fn(~7+iMWUw^*i{W~u0J{{IW z_p9w5%37+a=-AZjTQG9Cmz_Sd(;%SYjtDoK-u6m%g-zVYO>F*(&R}S{%=XzbE_nVP zE;}v0n*t9n>a+6%DvDjTXZgNIdtP!cn?zy`xIeM4xH|FS&uT|b2NO|A!{mm-;20Jo z21gn8L(jfFI(EK5*GHjqZ-GF3xG_^+;vO9-&It^(M-7UN|Cv`xd_D7K@!cE-1_lOC LS3j3^P6_9u#q`kEJa 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 X-+l>Zgx51LFfe$!`njxgN@xNAK;0hE diff --git a/CampusAppWP8/CampusAppWP8/Assets/Tiles/IconicTileSmall.png b/CampusAppWP8/CampusAppWP8/Assets/Tiles/IconicTileSmall.png deleted file mode 100644 index d4b5ede1b567fd4b90505217330edf7de0474432..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3724 zcmeAS@N?(olHy`uVBq!ia0y~yU~p$(V94WOV_;w?73O=$z`(#+;1OBOz`!jG!i)^F z=14FwaQSCCI|l@0&Ql|}l*f)3`szJ?yrKpmbgt{d!66c_b1 zFYf3%_4{G<;_PdCzCSzrZ|ilt=W9OC-F%+?00+-B592`72A-8pa)J+TGPZl@74)V_>Yf%+0}Yz<2fm1DW>!{I8s5#xORtFditG zXyMJ#Aj05K)#tQ~!NHBOVeSmIV1@-O3<;-`lO8h!=rSaz*FU?=&@lJM%xXr4=qZY# zj0+|*C}b_wV5w$EIH9au!O$|3LB#D-xXnlHbpp?|7#J#MZnD{_V(Ho#&7oV!9v-eIr*Y0x zTwBB}ktuPOgWjRanUY40Cj1XRpJ8BFFi}+SLG$Oo73cWYojYgNw~a4e_tk#3|4Ky-n{wr$&(viN1UP)Pleb1OFtBUApCF6&pMkw-@iWC_eiDDD7Mj^<;R0VXTJC> zl{r6&vnA=yvwrtK+qwV$k-e;R#4~AUgqFzTK%v4umsvfZjg~5PI!)3%s(R^v%A@-_ zznSgsn=)+3vSX~CsJkLInfaTyx= zXh`#%RLH;(=c1w)a%!{vaSjFsmj#Vl8yuy-9F)*Gz$SB$_0B==KM7_nPAW$ZISDv% zr8LMCC1|c`a?)r!yFpefLH~+_tjU4EjJC-Ie0qmMcktO3@c&BWn0HWPPa`Lb;|UJo zM8#Vjj7eP)%6%N-Gh2Ts9`s-l>Q+%W*&!0B3~!Vz->4qo94F z^~u~Pho2Zfk$$51DVl3;l0)H=AHk0_f=*?5Nj?>LYVwpVb%v2+=;B#HcULS75j5?O za$37^ThRKz_7%b=rL!#0Hj8Sd`6@r>`8>tB@Y61+QA&TsmK@Jpv(y1$tI zg85514{w`j^YM;!4awOO>=Nmc>_$-sW+%0)L#K7F}^^E5;`Df;bMrdu*su7)d zifgLZRJEznTKXX?S1nt0Zxwgw=g`w3{VU^wYuCAj8V5gK$$4ek>d;kl16~J92dA&J zUeUfPeMNqV{gS%KznyH6hkXwFJ1+@burdDeo?{B!$&#BZbQH6BSGScmnjTTxc=l#Z znbz(Ze`R-f+pb!<(9+r1%Q$><(B~;>_Uw;m6#ke~;>Y=1WBK&YbzS#F-fKS6lwM}y zv(qp&CVSPi>C+-sd#nyz?f!bN*}AvO=Pujpx;yfBBcJ1OFZCF8_w@dAtaG0S-weLH zoNKw5udUVBb$Y9^mr5_(?NYu!Z~40!^Y+Cx%=5`#ey?)x^ItNx`hP?I=Kfm#)tx7T zZ8MJw+ijk65;jLo3-fJc^^f2F80Z{(*ui;e;?%_H4_hYgylAuds#~uce^2JIn8zxQ zbC2a7Tdc;Wrl{ua`^xv-tRUZ=%QTl+`&j!NKYQlvqO;d#n$EU0yl(V-_Vd}-XW!qR z5LFSSvu(w;9jTt1o9x1HR!a=YY)r#IMcuiKWptu`?|Nj!b~(RGL4P2M}Xc2{lhUt4zG_M3dGWus*4 zinkPrScO^Ln{{r^JNw$BU#7j(Pmee+aQ=qz<88vHHIHP@4W513JzYF~XL0lAj_ywH zrqg=U?eu0#AG>>E?-Q?*uZ6J>t1f+=JA3o&LvL5yUjNSQUFN&?JM+(&%-5V3X`jY`Ks@U@5SxD*%i%yZ1>p4 z{GQRh$oMnn2ezNse%k+V{=E3s`_A>s|5N@~{lCbtyg`*Qow>8ou`!zI_m8R?#r=Ku zR<~2XZMyl^v1h?fM^VTArnOB^53W_rIPqq}TE*|rXPldOE|ae{pzg)B3+#!{61xxA z@u;`9w}!Xb_Z4(RNL@6XZd!ivj&t#SmtQW^T<*d|8{wJbEn}&twazRrXW#ulZ$Gy`n)`_Rakcmi{S&bTl?%@u`qH{wY^9!% zj@2{=pAJ8ZDIXjKv{s1qsD2VISMB4fJS2N4T}l6<*~N|<&M{hYexE$Fe5)qCnYhQa zQst=eQk|zeThv!h*yF?Nb9c7YJh5423b{tMR(lPbCrzAC=(I}Fck;IMSLx5v%1*CI zZQb5r%eBpE*^7`Ujq6(Mo6=Lm)Apb3JY_j;^*rsfZ_jK# zb$f#OocHtpzZE(p^l;L)rET8fy0Q_^_O8jY++CTJho3?8Dv*~h0(~-~Za3+;=;aG1T{J+SSzGp1(JLw_n$}>gA7VzjI^P`sEhBJf0yI6x>eRw zz2+hNW%)AMbXol@r&*t7xy=rq^*cH#dYAthyNlOe-K+ZJep{Y@j)_fVrPt?>lbN?( zHeH^a{^@+r+^KVG>-2u!Nw~deTlMqgbN93O^WX0hD0z6v^?&zs>pj-zVm|FC`LyZw zQ{nI(;j`9T#pk{%d1do&@@40-a6iNzT1A)KKkFC8}IMb zXB{YC@cH5$_wQ`2&FBA3{Myg&%-TP*|8yH~+v|B2c9xcp?2G=s{IlHoe9C#XdE);T z{X4x*Tui_2$JN)@&t05xapCk&(u(=BbWCpF$qHk`xG!P9-yST# zQ!e{{@qK>(Cp8N78viqXZu}a2VfpXLl9MO@XJMZ4`A@R3?rjDJ28CpgAYTTCDpdxC zhGqtapZ^&c8eTFmlo~KFyh>nTu$sZZAf7)d{-_%R1M_xI7srr_TW{vxEq!Dl(E9#I zK!dk}>hfJfg5R3s9z3X;nPr|b+n{rQ`>7MYQ=5t`M z^X`>d-(|UGwETZ{;7sSTy9+OweXM=3(sg!^{?_zoJFcmP%@3biTKIo{OR-eWqRiq4 z*{N&|XU?!Uo4(t5{x z7eC{?yP*9}ZyQ@jq5MN1o@T2Omg6OJJNqSz?reTt!tSn`7j3$d&(_;=Wx8?<{BB5j(TrWwrnLhZbM&i=LbQykO2R|8?Q%{qjmGO3Od;`FJxicshH0 z-?(j(dCGZ9!Kv52O7KOmytZ~m<@=SXC4wj2mT^}08JL>8X)B##T*Jh?Iq31W?l8uk z*QZ+Fd}8@I;OreaF>kGC<|*Omtz7-`SF(~Ao-@t6 zR&+)0;A}0vqa6OKeXSe5p1kVuR($WnO;KXIxENl0M0PgpydvP>b86`_hD{E4SDxJa z%w@~ssFYi5yVk7=lZo>e)LHe!l(iw9VYb7;90r?kXX~vkpI95dHyqIEd~sOod?2rL zWX-x+2Rfcg=(J}AB(bK7y_mCk%{1TFl0|A4xjq-S=~VWqoey+<8h_|X)uKL;l}-^c zYu9>3PJJErRCi$w+XL6es*<-1f7BNBhRzG-e%l}QL94JvW@%1#Le+$X#^dW)^h$V3 zqK!HGzCL!pzGCf(b(`n#Bx)2FX;1y#GD%ZCSAR;tfp;k->opR}jry#)Zp`g@mpb|R zmBhW(Tn6kL*3>UMUHoLGL$8v%L7cvN%!=J@NNyUz{lNx$;@g zb*bN)#aHzq-`-f2w=SN|5zgQiyLR5f`^V2$XYMOfYP6lR<>BuK=Qm9V z4v4av8MTG;^B)=ShQxV$p3DgN_V3KPgZv*OnLB)s+X!6jn;HK7Os?KL{r`qb6#=yX^=Ki-;3=CYBna<7u0U7xv`NbLe z1qztGWdkK?TX(}%^`5| z^x4*VibYKEEQ}wjBK9y9T)tr3;K%-d{*uU-HH|N3FbK}xY$>TDDBfYA>ODbk+xe~; zQqy(PBvjM(X*dd=?zBvt$ZPjoXVc;tH&@zh>o{t;d~@*4q<5kpxA`c#AL&@%!EL;A zj*j4cp^a``22-^knLoM_!e`9PAmW)LUJ%i#WF~0XDKGRy>Csb$2Oga9g?GYr9;9#| znO@}Seg0vwun=pB>@>Z*S8mO6{Qe|mX#oqgV_5&kw%Yh zU2=8ZX0mnL784U=qra;H{+E8v_quc2wMz2G&UAsb|GVF=|8q%-A>mAC*5=RMy6dZXAu{?c=aiq+yhx6Ni$g}?|m1A?9Q^7a?u&`@O=dzyD z-U3@^AAiQRBh$ue`uF*>e()dux8&$fvCd0B1Ot+L8m^RTIn=#n*WeOVxcK{M?El62 z`+gWG)Kxyzn%rId|GoL&^n*(usW#94V0lheqvf2?Cu8yNN6rf^U}W@Q(we}2%0c!8 zgL4Agng-nhmb?SfKbi#uIK!C5JXlsX@NaUEyTQWcXn2G3TSHa=yOg7G2J3N0bqm&W z&E5~Bb};5O|4tC`X-H2H+r!2!z>=tFE*tRLMMO{i$;U*q02 zfoln4rt7YWc2Crdy3Q!%2TF*ry1Gj)$_bpeB0z+DE8AAN(56*xvTmgdsshaelUGDu zaW|1%+i}hP_JX|^1YfX}i0u-HZOn7pzF2=z{$lkD>kTD%co+9>JXDdSWav3#>kOeY zc0SV2WYPqT`(_?a+W0A=c8%;c`O`2j?E-eW+H*U7@*0?H=3v{`AMiAC~@bt1UmjW+kUh2J6o#}H; z$$HY_6HK4@ij03U{S^G!%i?;--i3R4qbQ?1qnw#cGnd6DUVNxp4@u!?zC!k|LNtE{ioem zy|4K{fN|-9tFI}_L)w^GR?{W_9SDI{^>q2c-+*oh1e94+8 z3#Y6LSz6+l={9rOn-z1G#H_1vtBh)0l(ha(sAjn3>Q7Vjyvr9Yzo7kc@0Z9>*HHh^ zg;{%FHN0w?wJmBz)V`?Mx139xtekD*_QvdWuMKl{J?yXSzu5KhJhiyV3ums_8NS)S zILHXAe)jLl*Tf$xPz0o`4 ze;G-MlaelF6x|OwcICFo{Vlh@lpEU`PmAomsaw2h=kA|upY=YApZ+qvaN67Wvg1uj z57ReZU3C0W^U|rR_cvWFy5)6P>)NVoSuKvKECyZ@)7M_ScJ7+=8vn@sTQ_bIydksw z=hmN3KxXAIiqg3#^lBm+oiLrq!?W5C=`m5ehed9O7uf$`G$DD_|3RdsbpJX%n)ud;W|4!ytt@q;e z&-6aJ^w_d_PfmWARJk|vROZdh=9j--w!U1PopbF?r19zR56x2@Bv%{lVhOo;K4gD@ z`wmx&X_@mQC;wE_)_Lu+t;9@!x4pZ5diA-Kb=B{-X9s3SW>s{hC{X`;!-3*;Ml1?~LEQ za}Q(rcJod5oc?rL@B44J?*{tm>uc3-RZlxVwJTM$w3@TJwc1^~R(tmg22MU#L6&cWtRx>Cw{ndR(@acKI1~x3X2ZQ8I>PAlOvMv zZ|}*UJzHc}*K9kPN3v43G9^2<-(0oxXUC(7m&A6s-Y}{)`Sqgrea!yXS*AH_^A~Rw zm1jQQa(rH${O`XX3g%_C0yAyZ1i&_MqU!hq)79OuT6Q#yYq>_}#u8(<}2I{yWD0g58yW zsa%*%P|cMOo8O(!T|8~^^5Zebf624k@3TKARsYTVnErcpu6YyYhxn}WG4r44J9k#u z{Cyuwo?h-ue|cUkjjMj@zpdYPp8G6cSNvyfy;)M(Bi8>%m*4k}JGI~DOV-WR^L94u zbYCAFuYX2-@5K7zAG(io@9+LlKAAi6{l@p&_AlyQ{Cn~Fl6Z1#K8 z=EXB#CNF&#*1af7#Fb%c=#GlcB_3TW6$~mJi`UsG9lE=}c11^4yRnisw?pVcuK)8R zBT~~+-Q21wTK@n2{9b{HVHAvp0KGz>L6mJV=YgqbE-rRY&VDPUB&D{esB3vYt^;rTc4~oPZSRWgF@Ot zuH>4UIj%05Yo{7M(^mQU}B@aI7@zt`rQG75{%x|FQ%$WdQ(yECKK&U3TN7fHdr&Mx^zpQT+&x@O*1a#B`S z2Ib-arxrDa@H;%+m1{fh%uKymd+k>BoZ|BC6LXb{lm#;d71PXIOb(ur*IIfn+-vXh zt#z|I;!d*WaqDufQ)oMO?AW%b?DxVGWv|^@t5nq9aYskV*(7^v=$V>%9d;*ve_@Y$ z-9PguZ(3bz$GJt4j0_80%olJTn0n~r!o=ys(j0}w;El$qF$e$`I9y6AE)5nJ>~E3X>QSq@SAluO-1Rt;Kje^cCNR2 z{>}P%-u7#JQQ7TlwtijUKl$3OwNtX(1Fv*0I$`u#Fzw&@Gd5O6MxP|3M8P3D)%t_| zt2xz|qIO@lEZ@GhY_(zAnypXfC_k6!i%^}SX;@5m^5 ze{b*n1*r#%K3wwFU#Zcx&EWHX(_?Q;j@`*!dpC+BqJH*nMdQiWs@C~G|68TjwJ6@` zvw!Cc*6g>P?ecXJdh84g42In6MEKcu^9_Zd^LT8g*4?i|Gmy# zDD5hEHOsW?@s6ci>pExt=QjS|GBe%H%}qdtZCX*1nDz5K)kW)tFaA&Lxj8|FGc~fT zv10Cef9<79;?@_h4O3qGHUE>{-#x|e_Wu3--T49&1H)N1S%wX3ES_I8{A}K9Se_cW zY_pDX@)_|p>(AJ17d_vZ@ov3g+a#5RDxPgUhQD2(-0wVL>{9ag;o)}EC@CFQ{e3@_ zgfH5j`Ln;{#Q%BAUhXpSJsDN)IRD%4;+xarrROZuEZrS@YEzDj%fE1?Uv|d#FXxyE zer8}`Xkjqe&?94C7gM_XZtt-fu}YtEv){@dn=xzaH>QbE0XE-tBmQM8IbDldcvH09 z)Mbly-(x<(T0N!7E?3-EHy>RVxBh*>xxa4U3&j=cm*rx*mLg zI<@xp`^zpOnoH$W7EMXDZsnfax%PO!{QAXL4<=p8F=PKcC3?HX^C?@yxUM(V z{VtiQ%_O+7*ssU%$(-cpcc#0h6mPyMT1PvSi95BSmS~i+h^3xm+>2 zxF&yx;W9O)-JKbqCn~#VWz;epxXJ@^KkuLTvU9noxfRds6#db(r6OkApD34>-!FG{ zU7r&4@6wvSMH%{nXP>NN%U}HUVA6v**#Z}1UB0NMtrM3tJ5(p@^J3qIsb4ey|GgHq z>DoQ9;~(o47I{9uBkAPG%D`|$hr#dySk5+__MO|Y&&Nf&b4A#+jSGCv{Cc$Y#pR>fslq${ zY%Drg+d0#`(}UTUpP^v}YeJ{s#ORI}erfv}JDyF8Io!DajL~cEt4R;^|2^-%tEBBT zZ^piJXRgn+sVq_!oV)Pmivk8cbzY@iy))ORKZ}~-cJBT4)W16`)=W`)ekVq2{h|#{ zhK<~I#u`e7v*bXz^uVR=o3A@wczdnfrJvS)R(#XZ1@HNvv`+YHp8fVt`r(7|E?YX* z2v6*FDe3EwImZ;iVpwf$9Dn@Gt`AdnPj|;Wje79??IQW=n*#e3T3l7c1b>`i0>>zu zVRX2cYpP>xYS@~96ThMp8^7vCv(CF}rnE>=Ny_bYvuo0Xj=a=ojRpl91-3j?(G}U~ z8n1U)eA~PoxdIm#7`83eIF!ZAz>p-?pn61bqQ+8bv5t84PV!8Wb|>V`Siqd4g(~fY(9vu?Do1W zBFbbMGwEw<&Wj`i^Ihz9ovDrH3_4Ep)zZpbyLMXiX{%@Ko55R~a`>Ojub%0V`K~RT zbq^RAIwBdS)jXIlym?>hHm&rWsS|j=zutde{HVm6gFyjbo+eESi%4HxlXkl1!0BIG z^mDw`GG5$<=#pCRaY+2g8hL}q{D10N%GV#f*U!b@qQh3ZA?5F`Q{sEh>Fw?CaHaaEH$MoQ$Kh{LhFfg=O1@TP)1+6l+*2 zviaYWH9uZ|kF6I9`*E}_&*<8%oyY&Ja=uy41dfyN69?j_o>dTGI;tSw^h}gWB_@{gfZe>qrJ?A)1PvGF;|2-^z7e%!IzQQJ|gGO z8Oet%YnLe96`%Kg^QnNT-C`hn7$e#m_xqd)3-#7wS)0F;Yx}0g{XQ8C8$^V+7_DA4 zf7WU7eW9yG{yndXl}-&k$N)*60-IYs)(UNTnEp(7Q)<&T_tpG!*uKUkz;^Bql=bdbSKNQ~l{Y;oM^kCe>y3=I$; z-ni?RV?y`YiOTN(LQ^XwrRAz#C`O!hi2qx)P}nqW-s|Ycj~{p2O%C>oHT?VY!^6Wd zOH2-%mSxIVm-Te7k?_*IwX<0LmN2L$n&4Qo@!RH*uv^#Ts&$Qyxm>$tC3y79`qgrM z9hZ`i_oZfEU+0^@|8Loo048pst)Dp~)7Ht_R+Y>xUgzf0eeGd!IGel6$?WxeukC!l z@Aov*)k$gS>umT(}qFB7QFNKD!xuD}1! zrcKw}&h7MY5fMCkZYQIlq{zgDFJHc76TIr0(lJwd=K@tFqceBZ7JYkpdHL;jKG`hI zrD-#EE}r5wC8(|A%!3CD_Wpjidt(TX*rok5JJyL#tlo9^U8#%7o)g!bl$4xZ)|&X9 z@9*oIm;8)#ZRzT`_2uHXuRi?o@p0g+WzOezZgnZ~oune&k+HYKz(xc2Pr;!PI&&)7&F|9GaE z-)_dDr=Y4tJLH1d?6Zw|+pBd2WBpyEJ6}jC-O^Ap?>bQ>C@CWw(c}{EwM4 zbp@B6nIlr~y2RII`I@csBeLyP7hMhx4xZoN+grOY{k)tC4{NQWQk09Fz(ih`DMEqH zVh86R+r4c{M?{+6jGb$z%u-rZzIJQ=mfLUd%i2_YnEdzmclGWPUb9ImJAGZYb)PU3 z+^M<$9b56oP?^g;#qWFtEAL8t{dA8NdE;fM*bM2TD`~G}7J!e^FZ%39= zQ2Dvo=W}lBC`G%ZXbax;a@j6$QCF#`JAQ)VomHP6KYLn!UihN5%NH}jzw>6=Cp;5g zym+zt)S%}xcAh=+a$W3hg}jUVy+0dvcL+_ac6l;y1HazUk55>=?2?|T8Ow)w$>y2O z&d*w_UjFu0X{64gvuVWvE@oEG-w8|<6s!z#DeFGbP@JciUs7oEbL-dYG`kt{mp7(u z{(0`efdf~*y}iA@O8&yejT;%C-$~1UtEY79{haCumv_bIVlR|8X_e($J^wdxCVyXF z-@c_&td>rhwKL|q1gM(OQ+~hix88i)>TkDVw%pTH`Yv>lS!vT%OY@wbi|2Ok>bT;v zZpD`sUzH8Bo*@ZIpYo=7iy42;Y{hO|26XS~ZkZKeBXH{~QxOEum9zU6tOrfbw|efPjG z_QwnVyx(%I-Q|h=nyvfQ7WEg1GIvBWh*cg~E5PC8QtTM9e$OW_UEj;TN}Ha3K5xJO ztY!J?jyq50{GL?&PE2rTq|3D~j_7Px7YlKoJN`58$R#;wFJ+q=#C$F4Bs=fXGuNNo z&W(EQKP4#mY})4~L9ez)z208-?oK6J`kz+|ba?0HH|qQfzgf0(-BP=v2gj6zx=&0f z&I`!)je5QC?SYWk)Q(=Vrf6zIIFZT9nbT z4O_Q;DSs9gne@!+?639w*=w(7uH71xm64P4=DM@9^ZxtWa&Lz||7~e!SLZz~b@%6O zHFu(_yA9RMj!of;-0wTL_$ZgCYv7k9*Qz|SZLj2*)!P{vePR^6c(9p$=FFE_b5uY{ zVp@o_2!GaADdCAGv(NIb4STKa@?}EDo04<6!V{%G%`U$iWj!N0sr%sM>dxK|^`AK# zYZg3sbmLR%-o&L>-bTHC?Yd;~R<-AM($Cb~kobJ)#fumDGk;#T=u0nqcc-(VXSKtH zu$`+#P9JFX_Wro<(bn#t>jG55z9!czg>xunzujfgSN^$vz)? z_{EDC4TjGQpWi88vz0$JvTW~GGd(rd(C-@;=@xH1{Zs3JX`#$}8|>o=9Z zzZd-b`}^t5?EFdx%|R{Mi4$usM^0NSD=oeITGZ~tmfP=JZoh0} zgLiWs&E7vd=oM4p_8HS|ZkpQh=(kPwODm;YuA5iO8z(0x3%itLou6l0`_s;3_E}S< zPYuQI_}6ajPmSDmQo?!R2QJsLlZKvp`z-92*}6>WJn`hljTOJ;S z*1GIKyBMfmJRxF!>#NeH(^0<{6u;xleyf-Lwk_!ZkLI5bP6sdcYkXj5j?ZcN{qf%M zqX!;#XRI~NUYp8eBqdu*X?mS>UVI|)5?(J$B)0hc1yqe#O7;Qhm+o7&^`DQ+Bo$9S!HbnKM?od}>5Q9N2Msna zyVB@f>+PtuV_iw@B+V+3byflrD z2^g=x8r6Rx=hNT%7vX2RPB<%llFfdrmds;p>>3y%^(U-M_UG{@yW>+L-OlWB%>KKf z!>9Yi{xxNW+MscoiT}Qz+o|8Gv~7*=-!k1>8_!hDPL&i4v@tOFkiYfXe523SJN|<* zt6sC|>gg5&6H6=mPFc?_E|1RMy1yiH>c16hj%2)89HHuTm@#SJ@z5~+`*#)P6WF@0 zxOlBB^;+3>?bouy?fmkpi}+uC{gwXxe!aa`@7f9fq|;0}e#d1@)osZMt>^#kw|~*L zQ=)1mot&-f@2A%$=B|xR?%C<9S$h4(jT;|rtG|VG9pAWd;|a_1;JVs-GoJVDb=VNz z`Tj$c)-4U2cXw9pIA&SCyW>vfj}H%5#_ld#d&)=gc)xtV_1tq|&+qJ2DvG^nyYW@r z)%Dq)@3haJsgV}ETlVM2M`7!-Hy#C{pz>KS@WQuje)F4Z zC&Qqvf1*_5s{gL{QW5vAJton$=*29JF1gd(7I%)GaqlraKKtx5cJsR>m!CX4J6kYz z57V!F4JYU9oSE5<8B=vP$;9-W&(WX%Zq>e(|k2nAKA8FbSCei`-y8)lh1rDl(By{$NKZH*X#Fh&Aq)X zw7hpo=B~~(=4g2hHMY1{o94ZhoOk|1>HobuTfe2H?bAQK>Hg(Vu^4txdr-tNK+U83 z*VoFr8}r_;|53Aa1@F;Z{nKt12494>AASAsKv2ZYPrfcKbBkXu)~GsRS-$w%FTbT% zWW833`_Hqf?D=$ORzm96#}|$sDA(oqJx4!D-1*F})8CGk|I}uE_`7@Qn>)H`xiZJ= zJzVl5vi$`v`uw)E;%llP_EVs9I$fZ5|J*QafjrraqYw~Y?`yKjmmwr~S;gTu40<&xPckE#_(cZBDPOw<>?s1|b)R4~}F z{nq+_=+V}K%x!PnVz{(o)t`myH>Q_Pd!J&Q7uWsdtF zE!;D$!_46Gc@D8#+Pm`GQ(gX^44)Z#Ry;4!bWJNuL+ksurW>_BcZYhNO=bKTE9lK4N|LtUae#hYJ{LF`4&o3-=_HmijaZMob z3HyasyBmoQGBuJ8mwkEfe9%SX-1*#|)shZpm@c$mUE$>s=33YO^_X+~l~uEAe(agv zpl5w=ljEZ44jg~w4ljM&WHeDaD)`g?Saqe{i#58oTq`%3eOB4!%c|mcNA}hJo-q3x zm%xU^|9q#8OsiY>V)DX{y;ryrQW@=1#Uk%VJztu+Ye9WmliB|oTk$oi_t(y})T^7n ze`;j<>2=ES5$#Q@U(M)Pp{B&VdTsX8w=uJG*F_pi-@AS2_YC`$eA^ER$=_>ldT>*s zipk*&Q$gpU1v;Osw`BaBI`NPW+r#wgpJ%^4&N7(4J}0uUZPWD{ZO=#sznKDs=K|-= z{~RSKskrE^(x&d2_3Nhms@#0@&)pLzIvmgM+{CiBzOQ?q)UF*rk~W?CzAHy)hk)bl z(@#}JHl|*8(oo};ofpmHZCbT&V^G&4i+u?}QDtYR{w$fc^oI6sy}i0g&wd=~6n=Fr zIzQIba@ObjOJ~mf98woQL*d8UkhF*2j^@lv-Mys$rQCCIP|^BJaO1x)meVbcnyF!{ zwFIL}AHNr6xz<19t!h&3>*@2uw@DU^Hdd(=@;ZdD9l)zf)%&ohbaVhxE*KHPYuKIV<` z8h?2^e&*wwbQbHJUJ|zY>Z`B6{L=CaKC>AAFUrYzv)H!!+X1I))-S34S7JZd$2SB1Pq@{N)@iZdT;mnPPP-&;6n(VJX~C~)Px;P@1!z>S7umm3AbuYM_vPoU*MlTh zgvf-y$d`N9-qA8MJUL;B$bR2!-$0RA1IroyXWAw+&wsQpN+`j+T8I(U#`@>D|CH?l zt;nj-3n8JcOSKH6Il2QHz9cKIEHdSo?(vt=HTy4XVDz^;;#*V0UMQ`yS$|5T`^4R? zQE%-9E=oPWV=rr4_2unc>+&RlsI=^;(D|QgQ%-P2y zsgZ6HFeK$SDUE}mY$`OUru!B5pTPEvQT zt3Fn^N5Q;#Raf@H=*vsLSc2xFLhT>4D;bMyPF1?H|K#+}n_AbK3|7@BPV4xoRX_FT z>9C*cS|6GAXnn8upW${=zNhQy^{BPq1O#~nFS059%G`WYMqX0VQS(&li~Du;oWIi| zFZQfDB(w0u+w@DJY96O*f@=5Qb^7yl)|$%q_TDb`YKy{G9m&zS#XbL~(f-KzGv9>b z7B1bPv-V1jaK}`gw9~gXPrvO}v0u}Af9g%+gsH3on;Bx3EYRINYnrIpic^(0Pv76> z^Q6uEO>5W9O^#+VGEUzcH#N+@;3d{|!zp9RR103+C>N2=6ShBX6_TG#KAZNLWs{6f z{(rsMHLYS>R&mBn)z};1_@usmqyGIaNiMhbZ`N5n?~*t2bouY%^8U@u&FZuLYeZKr zc_zGh;p<-gJzWd|`)|11n6`TArcmwuy4^b(4m8~h{t)iF&-t_k1K4pK8mFBlmu-6W zb!S}CHmzz$dp)+$X`5D^@=9z7k38TjAt1I(;)mE&gO`;Vihh^3oOu5;HSOQBpjRq_ ze?LDw+Ut(CFev>avCZ9>gc$4 zYj=76^7-%IiZ;fZYU=*JyKjPS-`)SRt7kr%Bl2ATi{rYet)Je@*DVOQi2SI2LSQ2( z0d~v0IDEa9J5Az8=(L)BTKPFM74}7}&Y9V|I(!;){F%1Kglo5U?oTw?sh`%J%)R#F zzXc+EahbEOb-p-PwfEoqPLCeL|0Qp3Y!v3V`=K!B;k1SI(~m!U)dyP(u-4(sbE6Bd zH&0heJN(5vG1Msj!Zeobtu9XtjQ`6{ow7k!c)`EY8`=pgUp!uT^p^k0=f4+(i^fN+ zZ4sV$$S9iQ_Nt<7slPv--@4!GNp}=S6oVo6fm9*Jx&)`l#KwRV)21$8>$N{L&5(QT zzEJZoaZ{%{opyh5UwjwWl*mb^C(W9^^y)|5u)6A}k$h57uYYg3c0WDMbJ7!Wc7C~< z`v3p_irMD8{9POx5V78_eCHqW)oO7IPkar|Z2dRgC8hI4snRb^!N0}-_PoFUey8@A zlJATt*htFg!*>{HJ@08VZ z^{?mLbddZd*LFOd!~6f&L;hwwr#RLsCAL()u$KO(tNl8&XJOuU@2^#VR|kq{D!s~B ztA70W@$>KQ?UmMJKYeGv_-o_6N4DfY)fe8p@OC3;w&+^aY|H2O)D}H=ebV~(_xJie z7v8TwrT1vPTZ>roeh25skCO{3?<`+c^1(}m=L{Ef%<3b1?=MSzdrdnv@#ZN8P=XA( zvt%_}{{LsPyQD%QwNI@P|I2YLZfa|n4`ZrhdSXjiXl3pSD)C3{7SXlTzmh~qqrzj%@^jb zieR@z^gI(@9cq^l`lw{zf!T4U54r8H>6|_ykvyk3D8%FwTSlPQ(Lj-xn^>OxI}n(b zs3*KWHIF^@(VjQof9*`Kb)3!K8XLX-`u6S5dFzUmo1sTYY}K~?oW~z30Bu1X}lwFqMo42|xHngy?*pZfykl?#FuK%&czb0)bjhNGyid(~`Z|ZW}yGrI~*n>My zA4sL$6Lr1FV!VC!*=LR-ArWzb(%(*-_+}<0IYq6#mVRu8vCEano@|{O9i>?vEgg2E z6BoODkpd0Py|?}KVsX4d;kopwZ@=!{tF|gJYen4k&oy-)!Y|uy&JtbqCeA9}AjkeW z7pR>jrs1LgJiR-0m)~+_V`Jk>SzBY4U!JJqne_b5YnLy^f|Z9Yzpw0=BRVlNJJ;Ri z&6{_TpWY`tpJPyb8xaBX=nHE_ubv)=`TvX)niu2 zeU3BtS~U*=l%88;)cRlo0@T(IFptH$*#(^n-{ce1vA`Stbnb%W2d&-}>}aa|lJ zayNDD-${ng&Xw){JGHT~@z#Y40=zst0V1yAQ&zrpKcTlox69*0&HqW!bvGq8&+902 z3;eR`+ON&Z?tMNsUoJRDc*n3QO0#)Bo#vVNtk~ttxySwX|GqUcvu`n+zP=$kLiN=9 za3!Uk)y+0PpG@9#<9g-H4A!f{m%C3+t=$+F2~K-F&G(juS!;a@cKKRvB|C54yk#d( zo}8)T*_Rqwb|C8as;%Gl>YP^VH4M(2b*|>iMfaEU|K6Pcb@r}P_8z~V*Z+I|d|u6` zlP}#CfAm}%R;}9iID75Z?IpYKwlCJGT68z>ernH3!NA&rf&fuV^V5rVJTIO(!{0=d zIYDp6j*5AylA2532~D&;HskuYH#duq{yZmVUuRQvE_2pasUp1(F>Av%-`%=I{48Z{SoLv<&9ghUb)K-jb}PHByK$=!ZC*4@R~B}856=$UC9R++Q>%x9nd3|iEn z?R#Qc=S?j~Z6!g$tMwn6db%5u0{84KA$o6R_fUIeeZi;;fts1zlPU;J(b*V zTV~)nX?c&~ebZxalooA0eE6_>Y3g*otG{yMuvupJJ<{2*KvG!zo+JVI4G4xs4)sg z?VF^su=x48i(kHcIa#*5*24EPv)9T(!OGG(5q^fDP1RKd+Vmn zKAV=)vvVS7MT(qYrHjiu0l{;wbHxPD#j3Q-oEzjdCCJZZS?3E;B`X!B#piaKXIvAi zJNo_frnNufXRONIs``&#J!5+C3&`pL!KSU#6F!_iTDCiO*36ln%a$#(%iVta|Bbh0 z^SviM*}8Dy!pmpw#IC#lVR`+p<$WE?>b|ay|9dOy^_*hiGk**Ob8l@(Y?hLen)Q3` zzSeE?%Q$a4X4f99J`}XDGHa8S@%`0X@0I@f@v+#t?9B|dS!b223|~(Fl~_|#BP*D@ z@!GxYwRa!R*?rn_yQ_tFY2vj4o=Z#Uz+J<7ul-&nron)#Ki ztvhwt7oK*EoSm^&d+mmW9a{5#J87LZQdQb+@cH^B6Wj71A09UEE_>^xw|&CjACLQg zURfF3eC?KgWcGH;=VeyU%bxaMmq?a6w{uqd+$VAW8oe~no{`>qE!#C^bw^J5IoZT# z%Ex9TCnqPr=i}q^yHkF@wruC`9DT*t;lH%hB>w%3+Fxg@_pi$ivbNwTcl7?6)%iEG zw%;}}HFdpw`EvRsm7lver=K_5|NHLyZR?lZ|8Q9TUqIcD!}9ZL{{4K;Z}D8|`JG)e zXU?qcbxYRMSW{rCuqepUdVYfL@A>oZsq?cXEA0x?{AwY%bxP3Pj~_oi-d+BF-#nj= z`>nU%e%!cm<9GG9H<6bZwCoEE=OnZ^U5lzdn4Orq{op~zm=BEhG_8nb) zH}CVAGdx>wzwON1{(Dx(o)355*KIFe`fuCv`E|d(6rZ>KzFMP;?bh2e8$-j71tPA^ zQQ3Td8J!)YRnuw<<+n}T-yajO(Qw(qDZA#*+<*AYsi@nzX0!8qdU|3uS-Wk%nW7Z+ zdd_V{rTb;)Y7bkM&o*q^q%)g4>-E$vd#87pADdv#E#W55&(F8FHZl3qzc$R&iuL3qHq6} zw6n7sqt+gCHJA}U?^?OIM$>_={pWV-v$ToM{}|7II{DeZS%vfDR==CG`&`s+OV3I7 z`}+Fk1$u3r5+s}E*Lk8+sWMX?9gQ=~jf&k|=B91Fx$gSwZUh@?k%keBWvIZiXZ0cHUmB zAr<6xchOe6gJ+CgN^V(}PnvmNC{RgBO?;E#SuyhncbD07i=|ytHh0{4J7@RO2q*Pf zrIQ1^zOLcD-!Jf``Np67)1%j`zL%bpdNXS2l{}@aP7n3do8q(A`d@5K?U?R+;@7oE zdx!z5c#EHlx#` zZ@%%d7;9VGz5Bve=SoRP%n;7omwK&SQe&IJ_BS=s7jxJ;oGwIVYo6ZZ6mwU?^z;!@}4^7iSA>z^Z259hEI7(%~4+D?DA!0@ws(Z?*H%2uUY*0QMdlSSt=*Xlz!cM@ZiCmty>R#pZPVG z@6ZB+_&1{OwYLR)5%c~Q_1aQ9OL5&M9ql9O%`>+fd{$E`^3punxZ^ zT1BsIKlZEt@7e9^+7|7$(EDHh^F4R`XWjijKgKWKdQVqL-Q~%T7cX8^SATyu_2`@9 zshP)4o%6Qvd~Lds8B$DkOwbi(NoB5|mO4d+Q+@NpAL|W2-?aa8*xp2Yr>tD|OK7Uqht{d{&rhG3{jcSnB_ezeOAVJugb!*EsWi=b{&l8eQiEFaBKm>iXVoo91jjn%|*x z=M*EjB9%C#FfUGQP11++n|e0sY(6%l*lVS*lF{Bvw;xX5|7WSuv6`sWSMP1QcJJcL z60@I88@w+3a!g9RwJwh7n)u{>4!Yid;=k`ZDPd(~2spXQ1YWCaA z=XauAN}gSGm*1+rSN0Rbvdv1Lx(uJ)3tPQ)W!(B;nd9Oek?|MWUT*8!#%(NdCOmPq zK;6GhbyL4?_1g369ZzcX%oTI}8QNM|x#DB~Zw%`ClVH4`x5zth$<}*M=G;DhM!&bO zZ{ODP_i>wL{_a^7-!9D25eZ&1ryX+Q-1K87B%D1b1x!nwd~Tx-KVv9ooR5$K6`|qwc=zg6S2yI-5h2u8AM} zo3`P@+D)NiQU6Q*SG@^=UVw zqLZKf-g1pUBKv$#Z?EtBo133+T6t{Kl*GM9a(~Qb1m&eBQLjjm>QKoGhpe)DURpf2 zOMd2`(OJ~4w{VC3{M4I0*Jf?fQOlqzoohNp?n0UEdK3&oGyNnUC zMsi)v$8W6Op&3)Zw&wh^5uNz?OikX_&YOALXJ5(MI@6}YbIn$nUmJe)S5Mvfb$O*$ zbs|dXmq@rg$d60~k*+!RoX?6IlR7foT$atK4DGx*bEf3(#KUd=u1{pM-->1DzL_)I zduOOx#$m3+eH=V@dHhfCYLGF0tf*Yl%K76|ktrqqVAwQ8--nYv)D)~pMQdG}3--e$oTFEG9H z@P-bTlhw)3??^2T@o_m>H23+>TMUq8mWfTSHiSnXt9XA3J zrsmrL#Hp(CRa16}BAuWw)98<8N7#~feEFNYG^O^UIM=OJ z=g&@$z9zmo^k-@{?}dMcKkiE}d#EM+qm_g2uI`_oO&u;SOX`2$zW-_O_j}c<-<0DH z{++%4()+kG(Tr>ypdnc=fekJtjRkX;_t~xw%XZDHEOB|#6_{hED9yFYAU8bnlvezK zwxnzJ=KDUZ5!#e`p4&0{Y0`z&2F_Dw%=KsZ-6~&m|E7_kkIT}3M^5YXb)D1I{y8fy zOm(l-du}HAY>*A2T1lr_azno^KVY%L9@QWoCt zN=&_WEl#OypAO4jtv=D;AC2`|{vO?a^ycRi*xNcz5Af(3Kxyh zxcM`0M<`R-zDe^NFI+kkqpW0A@6_n#wk1wv{cjw)f8nb4KkC;1+bF({CDrNLb_@0-tHn3B0C0-EgMg%)jBjgtT<`8u@$ss@OJsb=eZB zc{RXmQ8QJg#f>3!FbjsU@s#$+`OeL;vmXjC{s& zKN{2bP2fGc%RIo}`uV0xmLM;eGq=9&b<=!mV;ubdBdX`4~G zw&TjIvuRdFMw_J6cKEnRPYKHAHr(xU%YhKe*V^&|S;#wQ0wEc`y z^dsZdohu&BkzSIjrjt$$ZTZHRjIY(bX7g?Z43QJ20kvY zGp{*S*QtKHe`l|PsNi#d2l1cQoincsTr_pLqOfRYXo+{k@iW;oD?N|s7+WhDv7FXv zn86yZ_`KtV@$)-V4AWw#&fq=zx@H|~>dHl*j+ZLk@^CR12+TH(6nypdm&3j-E4n^y zsCy8+{?nGa+igw;XZQldN}k)V6Pmto!P-p+&Q0gv-tV~ed3jr9UhV$K?6=~7$~sRN ze0Fy!nbM*5dyAiMx5xFU*Q<<_VwNOmWGkyJ%AWC)O(|+~(C>V`wA`DeyCb}x{49@| ze4n2!?DSrR`44h}yzUAdFI>EWX-7nEWQ@AW>)?5b5zMDsorD`wAMH_3(`NOZxj?r% z?%96HhzhouKh*?xP7MoGxWQll!}(fNytM1ZT^e1_x&#GcXT+@v-#sn#*R1^4p=VFm zpS^!-llYfUoqJmjZZ&cZulTb!s8MjD;6!JaFG_;GUmvFDc4l0%yk2(hX5HFu@$A+! ztM}xJOrk>k{Fxsk^6qdwI40Q*EBwqTO?frNg`hB#hn9)a(v=bxotI zZIQ;S*Y~PAYfY3F<>_TGMu;WMWIcU!NynV6*S2laiN4Tq^|V*CQd0MGXO|Lg3eFXtIBl-!S-ll=#ee;tQ+(!(xxweVN}Dp5etUeU#dhh|y7?V> z+pn#Q)G=>fFgIUp;_jJ0y6@J$E=rqbcI2rkNy*AS-CO;A-3kY_?6n4;w{+~$R4SKDez)n`DvLgGEx+G& z{&oHxpUQ6UkkVQuV^N@x^z8MNpzY5X6Q-)J(*JCFZQ0GK+cbM}5_UGsW{l9wJ~O3b zPU*R=T~CR%U^!e;kc;z_Ot5KpU*AUO+LdKX{^`2;O*CsHme%nV5W7o+mESQh1XM*4hw-W`(6vozDob5g)0mAfjQQJJ&Uu0=hbqwO`7>-;m` z%Yh8V`1w4&V%1y9^9 zkqhzKo4odKOWNi&Yb>s&tuKA7#=b@TbWYP~S8+^bRd z1zj)BD)21SY+29|FiGV~*4B))w67~?X&PwZbdu*J1 zW{TmlAHrK&b!MKQzHg1n{`@6VZs{oT3tU{5w%O9y$Y@iNPS5>c*S0@dZvQv4JR#x1 zWS!IJmSw)`F}$U}tVnaw8m|k_a<{u_ZaoVcUpOAVYR1~DS=Y6fz6ze6{ z>u#?-CA#oc-J`vBt}e^Jzq@-|3AC=`YTMRrs!H-!&+nbw^yZw->1VzB-ikVy#BcD; zn;EOEWId<2JU#LooI&Z$NJfv-_lA_$E`&-|OCo21X`MJM#r#DIOzWeUNg9i`x{4A+vT|V_|`v0v-MUF1cg);VT zF7N$)e0(l&6`SAKU7r8z5V!uEf^&Pb*X}hxy{XZnZ|9q+_fPEt#MVTFDp~GV7g0_4 z-g)BomQQOon;U*UXVLdwGt7L|ttHbP6BH*O_){+_SnJ@jUp>W$L16QPtfLZ_l@@)U zQ@p;+YOXtb`pjbP7pe)>p?$APnaj^jG;}lm9RB%>_uT1mRWEnC%T+Gf+;r=0;?gVs z#au70tJ-T9@#EAv@gGGSSv74|&yYy2C@PwCZoYkf)Y@ya@8*4v-=y>Vxz6c6o3B@b z|8_Mj3JUoC^ZESw0bX;v9{+I8&UJI~mrPz4zd4O}ZRF->i|+E(2uepx>?)gJ;=A)| zR^al>nbFz(T_^fopZxS&Ui|6h^7;ERRxc}lm;C(B>|-r*1joF}Q6UwvJA_xzJG#hHd) zYD}jrw+Cu|wGf;uD=YifM5_1x+Z!7ncdgI(ddXYAcIM3aeT!bKj9OckzWCycOr96+ zC%#R7Wl*oXG;;c!@{H1{%xu~MOP(>EKDPP1-EF~%{cE=7Z@r!CHR%cW)%vQt9nUvs zh4L2c%zwi6{El7rTl2>j_iW9~wkZWk$yyX7FdN&ino_kaZ1vjJ*I&nPI1=Nh_?kCi z(lX7nXU<$Wa-?PUoH>7Lx8MF7IW6`7-n)6`;tDDH4_+>x?^pMsS-$2*-uC**%U<5! z8nt%*eEa%;dpD<_FFQZq-v4dcY%wXGkZbid7pF%jaVu7v`Cc~6etX~I`8@AQPwpiO+FL8W^26qqV&rqcZ-&8zk9Hm z-Q3{wj5h1ux2Xp17sGcWqqF$D@g9_ts9iCFvTd z?4PTe+9)T!dCiS%gW_|6yYD{x{QUgoGiT2H_MG%b$@g--$K@|K%=dll^^QvVb5y@h zG5-Ir>&q{h*j{*9@~?RJ-GA$YgM;(u*wtEDmcNtP8l`J^?8{T(JCA=Hm2keBH$5#a z?aq}eB3p02y_`8q?$o9?$FJS0Key>kv--S>N0a{gsH>~{TRy+%d-==dJGBeH*o1Vx zTb24LuCl88uVnI;t>5CF-?_eKYrn6rZ*HF1Z0$5wJ^l}^gv%V4 z?pmZd{ZW!heCU3MJ87U(CTch3-?y8xiB(|pgI7-{y2}|Jn_+xzXa6Rh&EWC28pCO; zRynTLN!-6RY?IF8JCnZlblfpDGczms^5UX)(Fd!72L~KPT=|VYmoL)z<+V0!u|=O} z_F3`hjs=U}yk}+F_Tl)OvfVbu#?F%`PfoX*d+xK>%Kz6b%b&blKL1_Zy8Az#O!lw4 zmSIvibJ@%Pwzjr^@2jb)-LouzcjskiXXne9nxI+BQr6D3-nMD2$Hq{Wgr%8Yck`xy zUc-Iz%$YMUXU?4IZ#DNE_purO-8H}d&s=-I_RYrQ&wLL2{`PivM&R$i@9XWoFMnBV z;%m=Y{O((J?XU4>MWAnV!2oIeyM^vdYPA zCce^NtM=-1J5_wvTkR0~%}yx^e1d_?7Q4R3_F@yaX3p9NE~V@Kd_2B>#*|ogJ{gIm zXX}M7elPyNWA>j*Tc>ZD6QPdMjJpYwZb#~(kJb1s2bc8YwAa+|eGI8bD-meN_j<;C?f z$D5g%nQMO_4bF)%MTYa@{v4++!(QwwiU$sM?bI&@nURPO3Uf|;Tju$@5FBh^f9MRcv zOK@Uln%xAIlkfbN7l#Y7T1W_(;<_jPr*n9S!h#^)uJth`;)<0~Gv8hfn_4iwp&wf1h-+PhO!PO7c_s-`5x z!Jd16(H#Cg^CgqdsdyF{`Ck6MNvGP^#m)7}_I|rxFBZA}UY==XY+&%At@xdJaBy(B zd!WnKsNO#!S#|Q?xdU66bl;qhdcEjVc; z?VH}QO=D@+IbGrN-Y;yRU8^*(;AO{J9Fc8$J`mUGbG-BcJn!M=CIAV%N8<*hWztx-0h64 z&doWHzwN++ErRV{g;-u@p-$FQ2$jSUrU*V*#7)?t+^<^HEQjf zHD`jC`=tq8v{F10>(s$J@A=&KesRs4d{c!(uRdRWinqt`%GGgcD-B{EFW$yV^#9v!lR?z{nxX$s<#NtzZ|76?xdr>=&8#WSEWy%%o5TJKR@1l zLaupU!ZY#C7YfGq={=PvB|ewQ9G@GVzxV5$Yd>=D?%Mi)ZGP=*-sCfn=lVULSGCvf zQr6ZLKaMP1b#CXIXRF^l{a5*~`ZV+7H-dZpU8Z05@r>-9xfe8Dd2_0E_&2+ij~&-v zf8Cz=W0m2vrxtzJufG0T`Sw>p=q$tQym^tgHJ5hGbWV$V`P)u-;=DO?Y797b+{`=_c^U2SoTLj9v6xV&X$+y{WdFuP4()iTeVAFYg5f4h;Uiy98nD|WDWb=>J z?UFnKXP5*o_L|?z=y>t>?(XvcioTbfy;gRrc&13SO`Uz@y!r;&DKm9h7=p58(}Zt| zH!1u$@6=%>__yZ%zS{HaW{_`|3^>wSN4mi%7{xdD<)2z#J>)r3>eQycM+I0WDKd6vRzU%*~`u^{EOJ`2K zG`If$_xk$$nwmcgo>!jdQamT@q$B2JvUJMN`lt(M_HApLDV+V*Gy83#l2u|)=n)s?u30kYsbxy-nBQ5oLRZ5)L9Wmpc zcf6fJr;?v}&xov;_k3yQD}O(~e~oE;TMZH=KB=$#^WdEI`zz7g^J>Gh|AtLcnXBUI zk^Q%E+a0MXSI^zvP$4{Fd;GrY_G?iBfetRyQ~$f1IJ3X<&&T8Om!jsM>PvVwRXcp% z)os=V4;m8E5_<$)u57s$=iqW(;No1Tj_jpVgy%gE{HG<&Z+F7?-GYsaJ}hb8JiGqv znd2=2>n|+N(NA_T;4V0~H1k)|tY!Y+e*f+CTVDL|#fukjj=WD3Tb;$)J#)sN!Zp7m zu6^EfneA1L(P_2Xv}Y4K_IbH?|DhFF@=s(qw`lyu}bQxRO30k z{r@NZ|DXE9y#J)ve@oB0y)C!B!*_O{`8(q`@df<@6}$n3Nf>uVyL*XStBVAa@kZC_4L<)Z7a*M6{he`w)CMXsiV1h!*y4}A9All7=*^X5E; zIq6w5B9~-(U5m=>naR=gpnBf(*wnSQ2hRMS`Saw})#3Xq_5Qtⅆa6b@I&XnU$u3 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%0AmbbVbczf`i+ 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 J);T3K0RW&SFjW8m diff --git a/CampusAppWP8/CampusAppWP8/Assets/Tiles/kachel_medium.png b/CampusAppWP8/CampusAppWP8/Assets/Tiles/kachel_medium.png deleted file mode 100644 index 98634e93a7032e26b7e582276859121131c8e748..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21377 zcmeAS@N?(olHy`uVBq!ia0y~yUL7=A<$(cpRTQtvn>;x>)=9z2#L4&l)fVwcXo&fZQt}8m(r__ACCp``fJn#&b`=f{LkZUqoqV@z-Rsuu`TptC@5gKM-){cC z^Y@#*=cB|KCN0;WKAp{*al$F#56w1nUJ6bOEP2Dwz$ll{pvmA9=C&(-Lp6uM$1>?q0by%kle@l%)kMOotiNv}c}7zZ`oh=<>`xG7Mtx|3n%+x^>Cb zb(_i7ZCgxCjE(-T3ix08Ip6EfZPzNvA3M_p*8cB)yZ+B5DTahIomrbdck8a>YB;CM zaN_Roq{|iz4NF$!%U<8Vi{IBqzmv&vSMSEcu&`-@(+?X7iGSh$>)*bA;re~)Dt7Ps zKV68m{OFU|)u6XdT3c7u_r&t_CB~65yB^MO{~^!*uT+lBaZUx_{KLYoEuG7HPJ0V% zoqhZn*N#jZtLfk8&-%fC_}`MFJHclC)FXU8t zA#H_(R`aTbRVyTa$yssEZC~fmd?7Z2XI5KX`@Mr4K20k(2(4k2KFo82^IN0ygU|w| zJ#6P%xgW?DsNP|aZ?%5#`Ge^XGaD}Z=H~(p0)kSDx+Ii%j<9}oUo@ejrGJfk*95L5 zjG3;xCfYqwGwM2{kRK=^!s_ZSxhN-a-iiPb?yYQFFRV9|;Ne}|yYWy(l9Hk4jIA?-&e-`# zKa)ulFz%aqIBDajh}t!>*W^zh;o8u8L+ef8o5(i;WlX=>+>fk$aHinh4hHVt@ z$R3<~koTclA$Nu59<_UH@B7mq7k^m#!>z{rpH&^xeuoKa8NzQk6kAjdsX3`GoLVsP zL&Jwj9xAH@*LF6#=oKn&oK(?MG1J1W#(R?D%ZV`_7gZE9*yPQ)|7QAtxq^lzMf

DXzKfO4UlKm6L;%gNiSSWCmx}zYKXP^iug!_>$!*8;qii@{Dq3GRGj% z$>BQpkyB!zS+JC*xTbIjPw4DduD*-Jg7+`x3rJ5*O__eO?PS{NYbWMSlU=H4qB~1m zw>8Ym+E04f-snYJj%0GCpZun}*1K)mnbW#ci>Ew3A$oG_$-C34)%~ZJPxha7U-iD` z{{Y6N3ziG4n6Pw1{KG|u&IG**y1jJGQdjSO{k_XMv|nkmX|4;kS#e{%#quRMHWjFOTpOc!)HaB{gL~L8$rgwICrK>i~YmHkJ*L$zD zHsXHJ{MGyY>n||mCgdJ4&M=TLRFSljOq1Fs(I6H)uT}3n>1+vi$@fO@jQ?dM zB~D7Zlu>j)}Mev5q_Md03 zT`;@(t>f*LqPI`yJncPw{Oy%DGs?b}E&f*WJK{I0W>dQH$UA z)tt{R)xRp5oZRqY!?O)P3$B0I^x-1Mq??ZJ152l-dM3=#j+JUr{-yYUo)p;TZdkc zT-?&VTGdylUgcUH95%miVo&0+IUTOY+m6e1)}H^8Zf5ZO(Vjr?0P7zg0c${M4>g(b8(p>egy^?ON^Kt4vmvh3#GMw`O1L z&YvBRCSDTT;d;ZU*5ucV-uE&4UuT)-tj%A%RaBn& zc+2s5b@IReekh#(*j8OaJ*xh~pM~4zUW&WISo);oOqp6)Uzuwe@4PQ|H!tVjzWZQ?Xi!t>DQ;7tGY;`8U`dfS^9+dceK;qP<)FSnq0-dDD7d@)~kR{Wgw zdntFVUv0Yn?O40gqt8yAT-~#J?sc8@rC*}IZ2zC~G5B}GQ-|ZFt6#^OugNdr*ORv~ zeqvDaZ`td!-rM)&#qQqw=-Y#W7a!(Md@=E&^&9Kp^5A#-c1*9#fB5eh`wMng{-ttZ zHbFI4K5Tw>K6ml7#mkS!9RDTHZokj|oK*cc?_>J!)w$+Pm>=S^%E!!qrtjQYW%Kua zEO~mlGyUaxu{5swssFZq+j;J@d|mOMwe@C6Wsg|@A6E*@x2r4i+|`o&b`0;L-}Ox$oCuHYumr5d-3nZ=Z^=MU-6&+kCl1G=RdoSytvH3 zz`$AH5n0T@z%2~Ij105pNH8!cFnGE+hE&{oyEn5W=6dP#-RE}(hb}aj_&}v=3)|_S z9N#G(Od1SInn5C|(WfURTlYOW(wDS*?vI-SPdYcZq@GI&Wt^aKa+Z$fEYCn0hXnzTWzXGw&-_}6z5RQbs7C|KfxpqK#XK2U z0=~cdyubSW=JWR$SR4gL(NGD2BdzVRJ@UU^Ebfom_nx2OfEvRNJ_a3z2Miyq7;HEh z`oDesYU{SWJwQ@UZXc7NIg^7u!x}aQW`-<=4>}AoX+5^LZr`q+vrc5A25U)5%92>G zoq=9EH94AQFP&np{7A~h=JRQTu!Nqy84|~emu1==mblH!(Ej_^udI^Qda-V9ZtHlO z5*)mCMsgIco$^Vxn! zWcJxI!(;ozSq`RMFTGeAD^@jE@z;Le%PlTSjN5YUk4yZvNq%$s@87>qI^&d5Hb=5E zv`HlYf3)k}rKq)SjskO1*RQ&3aO}V)9gn3!2@=P)Gd|Ean&~rdo!Z6(){=^f9ll;a z1@C|Vzxe&{Y@745)4u$=f3;q^jd5G9v(m(h#^QgH=YI14{`KqFi*349AAJmu-P2$C zC;0s5Ypdkar<`3;-=_4+qA&gSH#vqM@;w{>{{8z`FE%o1o8fbdocDZ93DvO<)7c#v zdJGeKT&o0EH7F@@C|>w%b4+5l+C+~UDTX+vhT4+bVn2iDZj7HA^v_X%CA(RHK~r^; z@tjoiU2heXe(dXKNKk%ccD#_uVzc2-HIU&Ci+`RK{HVt8!$pAQ_0lPP$vnJ=8&-%v zuX%M;g8TouB~u>k(&JFfn-=t~udi>}i*34j0w3ixpYoO}vK%&um~+?VCLe>r`OgZ|%rmxY|ocgTEvtbv{w$#Y~`bzs48SXDz?W4oN$lB1$uz`=^(4|Ssm{#pOwEnWa-qIRx zyZP~r9qPY+|DKrlaFMs>US@`>D4y|9ykW~%h_8qwIeq=Ot9 zO8a^Z%cjm--St`J5UaqymF+oQGnQFA4`(=_$ska|EiTH&aOZ?&{4t5y)9&YdyTE(Y z_|95>+u*0!!u~cNTPiR6nzNS7>}*w7@U|^+#yWyRS9)C+$ylI=Dz*w>efV?jTI}qW!uV*t4lHGe-x)C+d^1Ss$xo}sp&ier6P#*w!dvIDstb!_-ebX)^x z*|>0NJgh<|JPRY zXT^nx#w8UBb7j2fY?E8@uOPHF*o$*nrk{2z_uFm-u_f$MZOIRvI=CJ#F7tENS6an4 zVTZ|~icptOMqXCqbxSnw#B_ZM;7mHmxgttnZS{gzor0!cg2Wr6mM!Ae+qi=@BwuJz z_rgSp%bynhx<08xsQVD})m}>xXVdjd+umf|?2_6i+%3Iz`Et41mikv^i|q;?@2V0! z(jNI+>xA$O)Q)_NA?S@_^Y@v!1luDzxA7S=k?os@?a8NTUBktey)T` zsAr>8@|tO0OIN+GIBuPBP**@OH%&i%S@VZ?4|)(i@)>9c-v9g7fT=$iLjw0P$oiR3pT$!i!GQjbMc zK0elKGP|y^V#(z@{zqQd+^^SX*mAyz`Yt<)2y>;k+#QAF(xb(cx1(}L-1Tr*A70x z_3lUf_HN$!>SV_5{r-#xlo>uqFxbpIn>L@Z!SLKp2bTpKl|EmuJM=r^eb9e9hKl$87dBuF|l}n^B5Y!JvKdazp?JV_1AlCyfY3@lz(3A7AKytRP1Zo?QQEzWu7h+hUb(vVzCXL8!CJnkmDA-)WYYJhM*1@z zh`0asV)6Z*U#~?sht)r``EGMxtL4WEfk$=MONAW;wyc)jcIb72#4)4Oo9q&Ae{<(K z{3FqB{(rCd`1{J!*EG0EW*l)6WMF9Lmp7}uzn@Pq|Eo>@-YK8BG@p7Y9*J^^S-1U2 z_LX}&uabKVCl}unWN~aSlKC2U?&sEJnfoT5P3xZX`R|<1w$kQ#HN8u6>s<7H9qe5Z zc=LJIfV8fWe`n#k8}-Q}M`z%voYeWqo~pb@hkac-6%|?LG7SbNR1*|5rN-+!19t zXmtPka=ALIucrH4I2fm;{@s-tnY%OQUH8?^g>9m(5vSzdKr*5=Up~oKh&n)v$1#1=k2MRZ`wTnv+~`$ zcj4>yev9IItG~fq>N}Tw&GX4>T|yUD*dK1yTe^o+&{{ySt-XE!mD{(YbG{iD?TlG2 z@Tl3TqrZAy`O@c=mz}u+$sJN;KP+tMj>89vmV-gG9%EZRdw=={B+)4Ijeq~ki6v=|Re z47#VY^p4unKM4XX?>TtGRbSnB;nNcQH+W@i>OzOz>!izgcir3e_O$1cR?yr<*4YRIZS$1)ixYYK9()_UPbF;Q`byTP_{1JP;XTsUE z{j*M{q%dFH!1%y?$rSl-wf|3D*mmW<^{VQ~3dto?0@j8xGTh^1*nieipXork*n;Of z!#F;^-uFKLo6UK?>XajQnb$6xb5-7o^W4w%l5K@&O7H439r!$bNyD*<9wCN%T^;pu zEC++`f1kTy_TF2@TP|L_=+>>Qb>^~o=fCp%-xWES40sN2$o*Y+ywFam<%cH2A4`Uw zNoQg$&IgP8m(C0O@pDJOhS2xMuSBbwv-mmAe?DN)Bb|Hup9I4nZUz%A>sJm(?sGRi z*rmX6z~tyh&uk`;l(?sQBeP3S3t6*Cv8D;Sav*xd=UYrpb7UZ?l*{gDEq6DZ>FDWN?@9yo} z)lEgt&muU%gZwV@hREyGw8ei>Ct9*P^Y={ z@{0c}|9w7u?9#708-7hVHudZLpWX}>TOIbC&t=#kD|pc4>lrq?-He_rD+9 zv?g2T_|9XS*3>aXOg;Vd-@5(#_q%*D-_0Mj^>~iNuH!BSy4)FyPq_Szd)T&A@5;mX zDlHy|XG&c;f1Kk*D8q-mtMf_)dxhV9c)n`$;a8TwR6BksGW zJ#po^S>d_e$#o&p3`fi+UfZj;^^!}x@vHOhF7gc1&V8?*c{WXw;R}O9lOfx*)VZa+ zC5)l(Gk?tc`Z`uUus&AG^1_Y@I$jIDoNd&2oGo_h_*3J@F2=8xilw`^7JUs8o)ENd zT2S4QO>5TfjCohh@L}!0e|18aiaBn7{a_;!X!@m_>t(vqf~poF^`wPsUxq6DTI6=* z%8M5(HYXl#TN(4?-{0T73>!ioUdWC7|I=$;@vVmqE9TfRY_a|IV)3=L+wZ+P|NJ%= zgC~Q*AXT%L^U` zUoYtHnOJ4#CLYKT(cF>kb2%n?R+`rI)3q!2@Bi;R>DcGfjjNXGJ>=U~<^RQ(?e5_m zSC_BtSvxwK6)a9ChXgu(RGJLu7oCRa9 znUG~(`re5JuY?t@t`96u3{>^s_deNZX3SxU-y+Xzl%}7q-MxSRe+kb=XO0?g;WmA~ zBL4r53$@D={z2F}6--n{xr@iJsV=P{=kt<{IWaVAUC7;&1`4;4u*7S2d{(8aM z%i*i~f?q+CeoU0+`YK)=D=x56eWuU9a)yl4PmBKFxPQOCWl5o1-03Yb88h5N%u5z2 z_00Ukb9MIR&-uR|Sk-=9m1^28FEz9&1?qBhJL08%0kSTKC^ro~g zde`XIyM=Fk?u(zRuRG`m&wed;h+C@-4lG>*p>rl#Xl67zIuj-ZCwg<>}B=UvuKD=7T_Ul;Sl_=Zk?N6J8 zFRa)oS9Q+)eCkSZ>s2KyZ~A-)W7%@iH}LSc5B{MxU*`sHojYsS&!ycO3~L;Y{MI>r zC`PZm=g`lYH~Zzzxi3wX>U`v58?-k^Gi&nlJmZM-_F)VUycs^EDNp1pUQoy+b!*1I z-z{=8eWwIka&1k0jtj_jC30~F^ah9zm-dj($TKsY=?OL?1aaLczUjMtl z`PLt9owYRW9Q)(z`U~_H1ja@z%5sx_yK8%q;o@BeD-W&A6KnOa3AG6Q7;;pE;ha|C z#d%ZKyz5+-lb!v$USMO;{fI@u-nuvX-*vvSJaAJeu=aD1?w$Us4cA)B_>3t=ro}?oVy5zFwdAO1Fx!H;U(#->SMx>Zg8R`G5BX z&z^l7zL+?L)am@W`SAVH>x{2LnRivV?fsJUI$%ca{dTXVlYCT!{|Kk07 zdG(b!e;sAYr%Iz&v%t`w`t03RTQhbm*r=Y$6R@lE8|W^^3?^4oHkl~?D1khQd_@t$KN$y9ARR!<@_^<0jXJOWZf~2<&~R5};&b`CFXHax+{%05 z8MZof#nr4!pZAEj2>2^K`p%FLt~R+-wo1&-XSOU`plgWeO%1_bExUM+@4BxV7sOYW zF5WQnh2ATHIPG7yuZs<1A4zXp)&0rg>SSq0frjUm4}RB0dP#a{F4gL4OI+f6d5g~J zS<`NW&wuyoXI81Rqv+)wBF?Mc-;45Rl~8bB^+}(ZN+b`$XPF% zU$d`jQQ=>mD_fVW-|5zODrVpR%0Tv2-5GcIvgafmtDKqTJ|}1;ORJNkShwqnt64T2 zO(;Fqabbej{e1uLi2Ja5 zzFeT|mU-c^f-DF3e)V0d|NZ;-a1Xxd?;MA-b(Xd)cJDv*>gu|5!=p>#;-`Mk(zeZ5IzNB)%iZ4V_)64%uG(?F zoqKtJ#(^hKRHk^TuDF`T!0=yTsf`HB!EC1vVW*DHs>7@aJ&Fu1cjpPs`K)&=qJK)! z+Sj|Jj~ze0J!0C|Z6#K`v9Yliu3c-JQ@pGzp6OV+Vz*pus0}~Z`9NZ;g5@dcCyY zLzAD)@x!TaZ*NE6ni07@Pxkklbo<*!C8Rg%WN**C{klnE$F8Wgd7evyZ0F9MJHc=H z@;z?0;a9r~SI=7!Hm%W7z~KDnbz5?O$IkgIuCPd8_7P#F;<;6iCC~l5IC0{{iS~aE z+lz3kmP>&IKIYPV>F2bo=X_pu zEAT~9clzRs+FtjJcjn#QRmLzQ!sFo^ALsk6dfSXOZF9ER7cKm>@0pX~oHTW>76AiG zOU-*VpM8^)k{)HA`zc>|t~~$luF`AAB;VZFxR{ASxt&keDrRNKznkCx@>kFM{#rY1 z&5L(0URb>Tkuhh+wqN^RJzOrxaE;{no{fdaX0&%K+Q0vQ)7y|EUkgKBjaRLGko4)nELXGc zw|~z)JDhfrJ42h>Bi3c!^Mjqj>Iq3nj|!FsRSGcFskKzR*>*c`_T)$dW@hGt^Z&h^ z-4_dip`|{<_pZxmz`nk#Vuj=)m z)HxWAm%qLB^}16B6T_YMj{NAYS)tx%WoGeeT=t)R<@6#mK7RiD7jNJGZQ$_u(+tU~ zdEv|s^#UyA9Ey1yO$oe8-&%UB7Ek*A)#<(7VS~I4I@!NJeE6WpaN_&7Z~F=iT})Pe z?ABT^eU`i1gob0!b{^UjCct80Xn4?Xo=v3QRIhq#GqZ1dtKaYa-t_F*w!FK)9=*G} zdw*9)5XZ-pC02VE?cG}&wJ_iKW6sm$ujhQji_h6lJN?ve>(;Hdg^zp9=Y_X^`S9UG zk>*o2#Urv#9S0RS@_1iME#{M0@qJ<3s;ili*LZ_YNw)}?7oFoz*?e>UtYwy)3LhT} zF3y!M{2P5$?``7W^gDYO2uzEZ!gTAD!}_F+C%9Ufrg$wC7xe(l@U(G7`^P_OaoH=*STmJWdxbbxN z(Q9j?!=+GQi#^UcA_{T$bZo&LS=e|g_ynHR5L?|#w$ zfSH|d4=AndKYr{On?$nq<(DRH#c_*f{e1QQtjXCE``Ui}UwJjFE%)~RtjMtEA3l88 z&Y*Dp_U-B|H{VY`|Gb*vfu815_a=oMm%jfs%}W33X1yzLfBlt+=T)m7R=NDiJznTy zHTRztL(loJecJ-HT;BJE&OcdqaMxsEl?9)Vz3%yBaA?AssI`xtJb99N|NDNur8OJY zuh*Z!zyG)V|Bv#?X0vOT1g(6tGDIs}to!J?Z{NP1c$og`gixr>C)%d@g&OI6jKG+|gP3hWGQF9zzqJ=B-K# zerYcgw*Iy6ykzqA;&b*oOJ$@bB`Y%?AM1TwoT^=@^y>G&Ext>R&S6&da7cb$uv-6m z>B11Lt2XCvzuooj{I;B%M(ep28_(>yu{r(x{vGRf7v`oD4>yQ9DoozqfVa;rDoyS18u!Jp}Xr$z9m6vJb?UTvLoedSsGLo(?VGFt=L zXRnyJFOe_gzr^!7t!sZ;Jbx{7{O6P@m)INf&pl-}&$A!dfG+jc0So>bMA|?9GvpwCG&|8eG`#OD=NPPCRaGW*T3^; zW&L};bCveVJX71$eY{RynZMrrO>frxWz{owWxSGId8JxxpZoRFgC=Kt+Y;~0J^hqV z>5=qi(PQp&?{!IA`v^=A;gC0#G>+j}_qwguk#G09=o#z9uYLdfyh)*AW7z80%voyu zM}yvPT3=?8zfGIpVDI0Vdh3F`+B({9^;oTop0ZE#O2)d%DHbdFP4~WE@@x0?qkpT8 z7jFCd{d;}xy2C$KJglF>tg1Itz%I{_Lvcaa>c;1ljRKD}87khMvwlBk`@2?wN1`rw ztSv2fUMrN5YkT_8sZVObb&ZzmoUPjHj;F?yzYnnZYA@aE*fHC075}Bn?DJYJvkx1r zn;5iDefC+q87EVY=}o!&B3Me3-Al)dG1tt`;!I}f>d+6h|4m(LB+hN&o4sA(k#x{0 z=gE^N@4tBUYO3nwlbfqLURl4X@{m`Z_iBPw?esWN|GhO{qGwiIQmJjLyt0>b@2&ue zuM4YQoxkpOaL<==*jj-3OIif}wk58Smy@%*aQk-jOz)39vsQQsO!wiC50#L8XIDM1 zT!w+~`tR~{(c5xwmsw3eZ5z8bEY-rwMc!@MGw#Pnf^C~t^m*_dU32lo_01g1z46Zoigotr9#V$Tevs|35el+y7<$qK&Dk(t$GUzMtkLF zucb!%_4rkgqLX0u~C7Irc+ zcw0W778Nd8-aAWn@0IHIsA;9wPH)TIkX!xgexa?~;v-uw&UvdLn3uZPOZ0=)a?nzP ziPQ9!_II3Tc2IrSa&@PhRlzd$tm`$#6ZZc(z5htn^EHwE8w4gQCYdX#J= zD{XevDRXa@uh*MCJNSEPo}Tx7tEy0ESnr-h&EUV;It(6%ZR|Tk%zIcE?wpf&9diDV zyKTm!bJ?$5-)1T9tJ=HhU%ysIU|jl?a!K`fuimel|2SN^&7v{%U;XCaWn6-*gHB!1 z=~(vbyBW+M^r6Xxr6syykv= z_MC=eb7eX|*-Q-=Pky7tU|~0X-On{U=C^HZDZVFIRsX8GS4cb7{Ok#w*f#zMhxi&pW3X9uzT1%xh&^17JBbk8BQ}kP@D05cenljpXYD+0JjvcFr*@D^{9laK+E3FtL2jcM;W~v!5nD^cIh|4Y8j-_nk&!zS^&^ z*9#derkqUi>OI52(C4kGow)ZU&)zd`FZ-W%>`1JrsJM5tcgiOfhBw?z3##_b+y1Um z>Csn)g0nXMrMi#jtT*RTmgIV&Q?=kRLqXL+P7S4b6N2V(H6<+jzdkXdzvC{00Sm+F zgt}tMG9uk2|ZHxt1h5f2JRvMADEz(5VP3n8?RM{WT86MPcpV02ipy8#txA>+@ zmvxv_)xw}tdYVtq?u^OXXL@lZ(}BSI-;d_lSSVc!Iey~Ai9L5bZf#EY?=mb~n|u4t zrZqP_HyB?Pcq%2!-e4{k!)L*G{^+JP2fo){ z-uCwMK8=S?0!|TgK06+}q0C_Lo~7jdy}jDLm-pN=@jbq2%{1{NKI>gAymmzBG(E4( z-?6Ux%I7_viY@G4^FrqopWd{l?08|-si&W&t_(Tlvoz>}SL%_SHb1W}uismL(39cD z^ph!Zd2gd1yx#XdyykxYC$+REQ&-Bb=YFB(vgfl?Nz1H-n*&{rEYIFLD`0uYxhGFz zV?+YPpD1cR{rt1$UqO8Q{XMrTOnDw#9lNo6^2wA_o7Q}`%ath1c$~4f`t~8A3%|}* z`+EK4zFwN|r6RO(UPR1GKc9UZ3<{aEo~3C%?SFR3)}DXyjhtD}e%%z(jIBAmFn99g z$p=>kFFz$LEbOXyWV^t}gjfl#5BYEZ-I7S2uKeh>?&)2-*RFm0Y~DP%;**n9HIEmj zosIZzvQg zZfN4$IYB?qUS%W)!vU^w#_c*>6fUOzw0LLiqKxVr`zz`-iHq# zF0Zbxe(tJ$;_vV8@oBT3sa-b7_f-+{eP6n{!!*lzmSNeN{rmTCQeYKf@MAonzv}8M z-rU?=H|@BL#jFb}EW-p?qN&8k+$OV4}ssrLSc+~0C8e^eQ4%;V*D1)U1+_~9YIa@ywn>wxOx$6DV6 z?)<1xy?VK`o-xnkd%ql6%jfNR+q*0?&u{tV%T*80sf5dK{~c#Pr$B-sZr0_HyE4*8 zUk9D~do<}|b8KvE*y4a~k!KhE;@W-Ly6MH_@Sm$w=QU2*!+2V@7_K2=ba6|7&crlz57~w z>M84>l~*jE+m|}7m2clSr}&@ZWt0Bio*tVGg^!PQM@7_scyQ3#=Q5}#WppxS)6zPg zvwH&8Cb=J&x$Cjz)mBT}Q#(svU%Two5g(!@x;t!jqX5(F$~kMR#J}o&J*mJ^H?{cR z#~8ixK=rn__x9d?HYeYZCmB>K3wN>{6J4`iYhKh>#%ZTh%RW8voH1vP%*wFU@tGR9+LHVIs>Y^ZA4GdC*|gp&vgi zw5OkTkGcN0TJgyJG^3g6?{_@rv%H+VJ?PZ(n)~&eLbQBm|B_T)vTLu&YAXkqXTR&F zgJ-|*pLqWH^z-J1Ym3|ePW5^ku`?!bmRe@WT)~g~0=-V!p5M(TSRc-@@##f(`Mnv> zA8)?-=4#Kz`x|qsS3kBWdyz3G`!eLuKN4Cr+trkjE=o4mvOh~V_ufIDQ#iu>PMPO zS+19YM*QYjmA+zi`BSXh(KiAeq z_wQc!yJT&ca8>9*pB9yMgagMjD@OkC;b?EWu(y=#5Q>Z{9k`rj3JX_BC|a-`P|7xl;XD{_eNi3=bRpV`t!*XI1*@e0(AS4=V3n4LbF|r(^z!r$y7xvipZ{6dG_e zxpyB;TJl|1-7GM9)#6>bSJiLdYwnmoF{n;q_SrZC|0@PP(Gtn^MM z+NVF!W6y1ap7ZiH6(983+1azj4{2<=`G%eG!Q*9_eot+sdrx(6yN7-Z;Z^2fnlWci z%gK``)3v6a3a`2U|I;+x=(Jqngp3RirUR>Ym%sm4eR|V3<70VTO$mp8{P@A_W+)~>~ZTh~QL8o!DXbXqWFl46o5L!02m z*bhum-;1)UzrDE`x;CtSX@JI^T{$;5ZFc)@X3TMQ_J!w+S8ZcgT+QN0-*x_vVsg*( zqMhwLhbtr*x}?qXY~D-S96o$lOsULUbN$pHK7(WL5_;~Y%~IQ}!)^I|&D6Nrz4KOO ziLX-NSP-?=X=%{PAN%SPet&zbf9~tvTN{(z1yDDt; zX=^JhDYMGFqiJ9Cet!L9#Bku$u8uO}V|CL`KdnoYI40e*@g%Rb*$?qow)bnl-`)E6 z_jmhz3AcqITBU8Z@n6|)uQiz-cz^q=)}nKfKlVu`zZSeG<`gsW^wV!f$L2ksGym3( z!pD~OD?b0MVPe>|WJ2&426r6t3 z-Q@W^wMF~h>zB(s-=1^(pDu$%Lx(*}!`+)X-=;GJtloaxdU@|g$z^-%6qo+FbK}Mh zd5gZw%gk?-f#Kk|Aj}pM44@EZFS!KU7kOuWqH7><&n#BlYZ>8|7utow`ZS) zL~_EcW$CxeE^b=Wl_;@XGP$0cA@bbM(`#)KKmV*@SBm3gcr94Cc}kIk*G*1_xowFO z3(Ez{8pEv*u1@UIThVKC{=?o7El~{-uE&obKj!z={J$kc>u=HTZ*Lz3317UsyL|Sx z-2c~8PfxqMzv}C&rz=CUqM9>n|9EGZuUgx(`_@D4KeIFvL(TMKPjBLymKtjLJoVU( z?~=*=hi7iS>MogVdMx6A<@&Yp`|GYbA9Zf$i#=%h|IjSc?6#_^s#`M0XR7_F+WfI# zZA-TDtJ>ph#Y201FY8233pMlo%zD^Bj=dqC=>Rvw2d(5B83v|f5drVNq%b*fF0b&f|?3v5)r^D)Fd zXN8lbsoCP0?5n!dcNB)`i1}B{`!0L``~2M^M~%-ce1B_ecKObjeNUg9oP7KGy4c$W zRh+qMIf^U(*{(}nlxO`_@K)cHqMh%5Km6-cd@ld_oPOhDTwnd3HyNrG?~Lg*{AQE< zMwOvr+xG3>Q*E1OzWi-h_vgoJ@9BDfA09b!Wb3rl*qt>$KW+ZTBehoiuT;x>-}zHk zt((5<@6u)k59zjzhYWhMEuSB^e6B8;EZnovYj0fWwd>sOF40~$TRXf3K4vkz;M>3d z-eR-7y(ZqJu2X+#Hg)ZLzd38`sU=hRl^?O@&M0zZEjivN`}p_w_xE*|)+`LsikW!d7E?M?7V{6piqn78V zcr7ilnmaE{QXt)W)!8GQ%j+r}_&J>~8u=ElO_a!9T-Nit-u{$Cbz5-HG?xqK}Z3Uyz-?d;`TgBbm`L>*(E zQBE=E;m)+e{omg-_zg! ze`4;^YaPotz(R-m7=~==D)6X3{G(%e_@nb$*^L|Ey(|Uq3!RZl5F3 zcKO=1YX;&{T^YvbgKcjvGm*7?%_wWvA$?|kRPL;2S+}>nH}JjedPF~D_0|0=+xI`; z^ihl9!BN}lZ#CPa)~=J2mw*5ID{}Ll}3O6x6HpTedCzz)x*=R1cUz?pVC;w;~YQZ)qy=x zYuP}x{K}BB%6Z?zot>TSnVA?Ew&mRXbmm|)`~T}VZrrfGb^G@9+uPp0xO+NOKZN)B z(ka2#Hw$;)+%>_aGOSRrf7gQ7iu)(~sDXO2n`-R-o7dLX-u!&S<958()T*UZYFCDE z1+BcYCF!$9bnhnPzgDi6vTN6DOq*RE$Rzc&;Kl6tU*B`o=6ucW-5S-qb6qq`L%x?L zx44bfE{X2MgoFi~s=vRJ_x16)!^Dt%C@d_?ac|YGl9o&sdvKev@?#`)>Lrtqp4~+8Luc)oby-_x0<7R?4W{oa47Ptor7*x9rD{9b0F} zll*g2>gi>s?bnXA<{owiwNF3)%&x7i zeSSqW6N4G^Ofx@*R1fp;r2*6 z+)H%&=aB22cAHm6-ZNeo5y!!JG-=|_b-y=F`J_GPv$%QgEfsxEMplLbndck5mVPQe z_w#IWa`NeEI+0AP+!yjY%zpXBvvym};+o7mFYd2U&zd5BOJn(E9U0EO(~>rFOrAV> z`Rc2$%x%wCSN#6=)^yUD%{j*&&#{lt5i`HF?e9AmrNouG%wOB{r@S?>HkVgj6v&@w zx?bYz&t2-bj#=(+FRs&?efHmVF{@9Nr2&uC^*vYiiZ*L5Ui#wRYi^-hUVGK2oK9U4wi>jK;bvp_aAjZZ?|nfUA~FmW&!0|@=j(J) z3UawRr|ga`f3BPTMqzc0huU5dU(f&E*WZ@7#?1HgVTKQ`83vbjdj49pr~3Q5x!ZEr zTULI0qHg*8`nrgXkJi{W@AxW|en0TFYSx}2?Yrw2Ej#2^Ij>jk*s-_bD_-xYOJL(_ zZIWg=XwP`So}Y(DW_N^HTBy_xjS8yj7%3zYkRqM(JJ1TX3MH=3-1M7IUi!5f7{HWulUZkxAulS zk8khYyZ3p`o6`69_D;*3HUHhKSHB|s{m*aJ4qMZ)hBvhM^{-hM?^iG0dP%1xJUF&6 zdF$8GMe^l&Tf)A)i~qVoR!vQ9)zhM%(M}!bdHDF^t}MIp%;tkuoK?k#2hY8i2EDqn zGWfmgk$0)5r}=X4eVjJ)^~nzgDl-GEV63)&t4bTv=@}FyEdgb!vWECM!7Z;|j+nxs{^YQ&06TnNnZ3 z@#yD8+!+xmHWn5?{>-zj-e+NH$;t2`?p$SgdiwJ%$+KUb<@VNIwClo(N0Oq`=JYqb zvVI%*yz;ToqgUt4W5u~znY2Z?Hbt$q>*<)k|LwNha*C02Cf;Sa|LfXzzBMsBKXotn zpKr#nVEyjhx4Eo$u2z!Tn!VOtdf|i@NkXA{%c{2h(oXur#vPVoXoZ&$5^UwFT z=ijf(0j>M-(DXfaKFw8={TJVSefE<@)OLvvHvC+zP1V1?WUdI&syudMd8>f`)!U~8jZ;!m zT0*s^{=W3`i~H`~yFp7O^%H$1S?%{bTvB zt%3Zep*C0V>*uT}esqL$d(g_7>!o-1-`$dV`QOi^`kZ~b9nI|g`_7u2^;e&K@_yvT zBv&Wiz(=Pfr6kL=tv~K+IJT87TWwC^Bgub!TcddW=2$QuO)Bhvz3YBrk1Y?w|5+zf zJZ#R}Pp_+1n)su{YHr>6TU)agr+UpTJ-?VwZ^btu)k%St=QS?&oIcpT`_9*2XYZHD zJa7E^`ug>>m$uP88~ZBy5W5M~WmEFy`miNUDJ$UfoGdrKm4;cm@IqR}F|FX93 zN_u)~>I@H+8G0>QCxd?Ee?9Yl=d`pVwy~uTuLN@k?ws>s{?Vj~z5V@^AS6&a?{h{zTf8gt-f%bQH1gX~UZK-Bi?l(8-Xj0*xu+_EN98LSH9(AhEo0(r` zzMjS8OgaxQ@7@jh_xG)@n)lpW(_Urio>jYdOJ90vGGke1kKwZN^MSLUnBCG1&5yZ~ z780VHF=xXox24jp0!*i#8cjK!8m2e>ZqUjttE1M|Jv?iE|IX(|{u%{^o3roEdBMzY zQ&8~p(^E60u%%PVcdomA@8(U*(kl0@lCckFz1^`oF6Ku8AM2L5O(L1hvtoTgmF?!L z`{i$L6jp)q5r<-v0>?kucxwS+n1JlPo6t> zuIA}Y%gUZCzUFkN`YNlQm(AiieJjqpa&EXMsC7qPWBTc$q@<)h0U9Aq3O}q}{`|Ud z;lk?ASKr;JiI-sKlSybx)M0P<&2#uiN_zV9tJ>k~TE2bz<{_Ay!c)j3B|htjr1Rpt z&I~iGF4z6~^3rQ-)ZcW?r{)sL{V7H>l|1jV3STi%TK9O){plVmb=fa3EnPWpo}7o; zWM6+l(@m;-&l!pMgj!skH>cFvI&s#s`G&{#UA%w4K8x?ZF?&O3(5c(GxA*B!^?Dnz zx5{+O_U-I?%c}ww5DbDmMC)_w!-1-syTloA8cI!hD(x+04*2i>w|NEesU(MRuI)6*< zZ}Z&S|5DuD*-OgHo!#A!o8+6k`+Iz;(xPkLs~1VS3a~`147qXSh|7(}oc-^A#}~wY zf4=X1|NYA6b3gCvRgU%mj~sZO|GaKfZgp~X_3yi&B+}_}$ZKiP1P>L3IbAn3reA)c zQ!|J0NbfY>@@uQFYK5%6x8?%9UhlxO5 zYRwIf-J9yS{QA6b;JL&zsy?f_;_P@QY);l_S_DsL!yDz;g@z0RR zl61XudF#YP6RXpDEiD|der|L^$zsGOOy&b0Ta#sAGC+hZ@ z-b;hNOSOG8JYG1hyrg7HX-SEWuZqyhf+H<)HFDyYj<kBkgI=Fjv= z`=R8Pe?4N_SI5gH_vd>p6_S;eo%^z6m-R%Ch;6y^w}z!@E$F>AscLP_eg3&UP8%a^ zV)drm-v2&-N>E+qG7`YyARxN8GttV%K@8FE+}Zu?%|vwrQ`+*Eh>cAw>!b*6e5 zp57#7HZ|j@!In>48dJS2EGLL>>8$vr^Dl-K&(CsETKY#%>EG1@2M*k;{IqX3!-FuF zJ86;E`dpL>i{0JZbMo`kSB7-8vJ0d!e{~F=AI>s)^5iu!di_85{TF7a5MU_k`0?w( zg9lA_eNwv<9pBvAs(sQje|v6qZ))Ug-or1_d+w%0UOU_O*uiKf%kjbkg)$p-vZI7s zcFbO{Hz8`RS#BbS;ymXg@?45;vDa(QeE%!l5pi={uJlwjU4gn^m*-0@%iK0|+0G-| z-mdn!{O0kTbc^S&b8p8@^if;>MomO4G^CVqEx#FPo?vSfufWI89X~=fp9(iOH-BDs zt^E7DyPPgQmVL!DQzOkK+6+%f?A~fO(^#_Yd!mZ?^+cchuHl!ZzUqAp*1!M#f2h~b z8B>g;Sq`pvUa9Y`$vt`U)+Bvu5 zGG{$2I`>oST;(joXABKzB{nZw$Ed``@Ii2++EN{E#Xfe&f+L^zD6e}xkEiK@r{a;x z^PbD@e7$bBmWq4#BgH*z4C@Sd9-neiDqQ>6B3tKlRIbD^u5*><$vQ_Rycrr=JKBCN zm>T4z=;F#zc;)-w^xFI984vW=-mkCv{Os)KFon85kL9!vq!vc7_}VgDtNc7z7T?bSxHS zn8DI;o$&#y=F|Q6>VCg<_sA17=ePY5U^LY$HdbD52OGmQW{2tw^B%*^dB$trO=a!b zsKl^`gW=}Fg$rwb>=g^z`+i;Q?y!P$>(hE-IT^AU7cAfBHi`FI7Yla_5~E8FjP9#0MxWEnlNX6S^#=HvhQl_uWZ_fE&Zmw|zS!PC{xWt~$(69AVF BxFY}n diff --git a/CampusAppWP8/CampusAppWP8/Assets/Tiles/kachel_small.png b/CampusAppWP8/CampusAppWP8/Assets/Tiles/kachel_small.png deleted file mode 100644 index 66e4b500566befb5d0a4b6c4551db0da7baa4c5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9727 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 fv9Ix8KEv6aH~igTe~DWM4fGnBgp diff --git a/CampusAppWP8/CampusAppWP8/Assets/psd/holo_optionsbuttons.psd b/CampusAppWP8/CampusAppWP8/Assets/psd/holo_optionsbuttons.psd deleted file mode 100644 index 53796ff01688de7cc0257773c2622a07659d30f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92796 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 ={m)Ren1M;|(*I}w8FZN#I9EUY&p4TR83VKK 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ⅈ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 N-AZH7S~;RRj{u0~37!A| diff --git a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj index f095f044..fa91da9a 100644 --- a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj +++ b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj @@ -432,8 +432,6 @@ - - @@ -445,7 +443,6 @@ - PreserveNewest @@ -543,24 +540,6 @@ - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - - Designer From 67a56535ba29c650c8430a3390c33b0a6b8858e4 Mon Sep 17 00:00:00 2001 From: stubbfel Date: Mon, 14 Oct 2013 18:22:05 +0200 Subject: [PATCH 2/9] refactory feeds --- .../Feed/Departments/DepartmentFeed.cs | 63 +++++++++--------- .../CampusAppWP8/Feed/Events/EventFeed.cs | 59 ++++++++--------- .../CampusAppWP8/Feed/Exams/ExamFeed.cs | 36 +++++----- .../CampusAppWP8/Feed/Link/ClubLinkFeed.cs | 49 +++++++------- .../CampusAppWP8/Feed/Link/CommonLinkFeed.cs | 49 +++++++------- .../CampusAppWP8/Feed/Mensa/MensaFeed.cs | 66 +++++++++---------- .../Feed/Mensa/MensaFeedCBMain.cs | 20 +++--- .../Feed/Mensa/MensaFeedCBNorth.cs | 20 +++--- .../Feed/Mensa/MensaFeedCBSouth.cs | 20 +++--- .../Feed/Mensa/MensaFeedSBFMain.cs | 20 +++--- .../CampusAppWP8/Feed/News/NewsFeed.cs | 63 +++++++++--------- .../Feed/Openinghours/OpeninghoursFeed.cs | 59 ++++++++--------- .../Feed/StudentCouncil/StudentCouncilFeed.cs | 40 +++++------ .../CampusAppWP8/Feed/Utility/CourseFeed.cs | 14 ++-- .../Departments/DepartmentFavoriteFile.cs | 50 +++++++------- .../CampusAppWP8/File/Exams/ExamFile.cs | 50 +++++++------- .../CampusAppWP8/File/Places/PlacesFile.cs | 34 +++++----- 17 files changed, 346 insertions(+), 366 deletions(-) diff --git a/CampusAppWP8/CampusAppWP8/Feed/Departments/DepartmentFeed.cs b/CampusAppWP8/CampusAppWP8/Feed/Departments/DepartmentFeed.cs index e3c749f7..bbc55dcf 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Departments/DepartmentFeed.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Departments/DepartmentFeed.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 24.06.2013 -//---------------------------------------------------------------------- +// 14.10.2013 +//

Implements the department feed class +//----------------------------------------------------------------------- namespace CampusAppWP8.Feed.Departments { using System; @@ -14,18 +15,17 @@ namespace CampusAppWP8.Feed.Departments using CampusAppWP8.Utility; using CampusAppWPortalLib8.Model; using CampusAppWPortalLib8.Model.Departments; - - /// - /// Feed class for the department information. - /// + + /// Feed class for the department information. + /// fiedlchr, 14.10.2013. + /// public class DepartmentFeed : XmlModel { #region Constructor - - /// - /// Initializes a new instance of the class. - /// - /// automatic loading of the data + + /// Initializes a new instance of the class. + /// fiedlchr, 14.10.2013. + /// (Optional) automatic loading of the data. public DepartmentFeed(bool autoLoad = true) : base(ModelType.FileAndFeed, Constants.FileDepartment_Name, Constants.UrlDepartment_Addr) { @@ -44,11 +44,10 @@ namespace CampusAppWP8.Feed.Departments #region Method - /// - /// Method implement CheckIsModelUpToDate()-Method . - /// - /// model object - /// true, if model is up-to-date, otherwise false + /// Method implement CheckIsModelUpToDate()-Method . + /// fiedlchr, 14.10.2013. + /// model object. + /// true, if model is up-to-date, otherwise false. private bool CheckIsModelUpToDate(DepartmentModel model) { bool retValue = true; @@ -65,12 +64,11 @@ namespace CampusAppWP8.Feed.Departments return retValue; } - /// - /// Method implement CheckIsFileUpToDate()-Method . - /// - /// model object - /// file info object - /// true, if file is up-to-date, otherwise false + /// Method implement CheckIsFileUpToDate()-Method . + /// fiedlchr, 14.10.2013. + /// model object. + /// file info object. + /// true, if file is up-to-date, otherwise false. private bool CheckIsFileUpToDateOnLoad(DepartmentModel model, FileInfo info) { bool retValue = true; @@ -87,12 +85,11 @@ namespace CampusAppWP8.Feed.Departments return retValue; } - /// - /// Method implement CheckIsFileUpToDate()-Method . - /// - /// model object - /// file info object - /// true, if file is up-to-date, otherwise false + /// Method implement CheckIsFileUpToDate()-Method . + /// fiedlchr, 14.10.2013. + /// model object. + /// file info object. + /// true, if file is up-to-date, otherwise false. private bool CheckIsFileUpToDateOnSave(DepartmentModel model, FileInfo info) { bool retValue = true; @@ -112,10 +109,10 @@ namespace CampusAppWP8.Feed.Departments return retValue; } - /// Check if the model or file is up-to-date. - /// Stubbfel, 12.09.2013. - /// Date of the last modification. - /// true, if is up-to-date, otherwise false. + /// Check if the model or file is up-to-date. + /// fiedlchr, 12.09.2013. + /// Date of the last modification. + /// true, if is up-to-date, otherwise false. private bool CheckIsUpToDate(DateTime lastModified) { return Utilities.DayDifference(Utilities.DifferenceType.Less, lastModified, 30); diff --git a/CampusAppWP8/CampusAppWP8/Feed/Events/EventFeed.cs b/CampusAppWP8/CampusAppWP8/Feed/Events/EventFeed.cs index 995f34dd..31e9aa46 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Events/EventFeed.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Events/EventFeed.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 24.06.2013 -//---------------------------------------------------------------------- +// 14.10.2013 +// Implements the event feed class +//----------------------------------------------------------------------- namespace CampusAppWP8.Feed.Events { using System; @@ -15,17 +16,16 @@ namespace CampusAppWP8.Feed.Events using CampusAppWPortalLib8.Model.RSS; using CampusAppWPortalLib8.Model; - /// - /// Event Feed. - /// + /// Event Feed. + /// fiedlchr, 14.10.2013. + /// public class EventFeed : XmlModel { #region Constructor - /// - /// Initializes a new instance of the class. - /// - /// automatic loading of the data + /// Initializes a new instance of the class. + /// fiedlchr, 14.10.2013. + /// (Optional) automatic loading of the data. public EventFeed(bool autoLoad = true) : base(ModelType.FileAndFeed, Constants.FileEvents_Name, CampusAppWPortalLib8.Resources.Constants.UrlEvents_Addr) { @@ -43,11 +43,10 @@ namespace CampusAppWP8.Feed.Events #region Method - /// - /// Method implement CheckIsModelUpToDate()-Method - /// - /// model object - /// true, if model is up-to-date, otherwise false + /// Method implement CheckIsModelUpToDate()-Method + /// fiedlchr, 14.10.2013. + /// model object. + /// true, if model is up-to-date, otherwise false. private bool CheckIsModelUpToDate(RSSViewModel model) { bool retValue = true; @@ -64,12 +63,11 @@ namespace CampusAppWP8.Feed.Events return retValue; } - /// - /// Method implement CheckIsFileUpToDate()-Method - /// - /// model object - /// file info object - /// true, if file is up-to-date, otherwise false + /// Method implement CheckIsFileUpToDate()-Method + /// fiedlchr, 14.10.2013. + /// model object. + /// file info object. + /// true, if file is up-to-date, otherwise false. private bool CheckIsFileUpToDateOnLoad(RSSViewModel model, FileInfo info) { bool retValue = true; @@ -86,12 +84,11 @@ namespace CampusAppWP8.Feed.Events return retValue; } - /// - /// Method implement CheckIsFileUpToDate()-Method - /// - /// model object - /// file info object - /// true, if file is up-to-date, otherwise false + /// Method implement CheckIsFileUpToDate()-Method + /// fiedlchr, 14.10.2013. + /// model object. + /// file info object. + /// true, if file is up-to-date, otherwise false. private bool CheckIsFileUpToDateOnSave(RSSViewModel model, FileInfo info) { bool retValue = true; @@ -111,10 +108,10 @@ namespace CampusAppWP8.Feed.Events return retValue; } - /// Check if the model or file is up-to-date. - /// Stubbfel, 12.09.2013. - /// Date of the last modification. - /// true, if is up-to-date, otherwise false. + /// Check if the model or file is up-to-date. + /// fiedlchr, 12.09.2013. + /// Date of the last modification. + /// true, if is up-to-date, otherwise false. private bool CheckIsUpToDate(DateTime lastModified) { return Utilities.DayDifference(Utilities.DifferenceType.Less, lastModified, 1.0); diff --git a/CampusAppWP8/CampusAppWP8/Feed/Exams/ExamFeed.cs b/CampusAppWP8/CampusAppWP8/Feed/Exams/ExamFeed.cs index 107d0804..d9c03999 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Exams/ExamFeed.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Exams/ExamFeed.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 02.09.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the exam feed class +//----------------------------------------------------------------------- namespace CampusAppWP8.Feed.Exams { using System.IO; @@ -14,14 +15,15 @@ namespace CampusAppWP8.Feed.Exams using CampusAppWP8.Utility; using CampusAppWPortalLib8.Model; - /// Exam feed. - /// Stubbfel, 02.09.2013. + /// Exam feed. + /// Stubbfel, 02.09.2013. + /// public class ExamFeed : XmlModel { #region Constructor - /// Initializes a new instance of the ExamFeed class. - /// Stubbfel, 02.09.2013. + /// Initializes a new instance of the ExamFeed class. + /// Stubbfel, 02.09.2013. public ExamFeed() : base(ModelType.FileAndFeed, Constants.FileExamApp_ExamFeed, Constants.UrlExamApp_ExamFeed) { @@ -35,10 +37,10 @@ namespace CampusAppWP8.Feed.Exams #region Method - /// Check is model up to date. - /// Stubbfel, 02.09.2013. - /// The model. - /// true if it succeeds, false if it fails. + /// Check is model up to date. + /// Stubbfel, 02.09.2013. + /// The model. + /// true if it succeeds, false if it fails. private bool CheckIsModelUpToDate(ExamListWp8Model model) { if (model == null) @@ -49,11 +51,11 @@ namespace CampusAppWP8.Feed.Exams return true; } - /// Check is file up to date. - /// Stubbfel, 02.09.2013. - /// The model. - /// Information describing the file. - /// true if it succeeds, false if it fails. + /// Check is file up to date. + /// Stubbfel, 02.09.2013. + /// The model. + /// Information describing the file. + /// true if it succeeds, false if it fails. private bool CheckIsFileUpToDate(ExamListWp8Model model, FileInfo fileInfo) { if (fileInfo == null || !fileInfo.Exists || fileInfo.Length < 1) diff --git a/CampusAppWP8/CampusAppWP8/Feed/Link/ClubLinkFeed.cs b/CampusAppWP8/CampusAppWP8/Feed/Link/ClubLinkFeed.cs index 5e8237e7..fbe2dc3d 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Link/ClubLinkFeed.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Link/ClubLinkFeed.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 02.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the club link feed class +//----------------------------------------------------------------------- namespace CampusAppWP8.Feed.Link { using System; @@ -15,16 +16,15 @@ namespace CampusAppWP8.Feed.Link using CampusAppWP8.Utility; using CampusAppWPortalLib8.Model; - /// - /// This Class is for ClubLinkFeeds - /// + /// This Class is for ClubLinkFeeds. + /// Stubbfel, 14.10.2013. + /// public class ClubLinkFeed : XmlModel { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. public ClubLinkFeed() : base(ModelType.FileAndFeed, Constants.FileLink_ClubLinks, Constants.UrlLink_ClubLinks) { @@ -37,11 +37,10 @@ namespace CampusAppWP8.Feed.Link #region Method - /// - /// Method check if the FeedModel is up-to-date - /// - /// reference of the FeedModel - /// true, if model is up-to-date, otherwise false + /// Method check if the FeedModel is up-to-date. + /// Stubbfel, 14.10.2013. + /// reference of the FeedModel. + /// true, if model is up-to-date, otherwise false. private bool CheckIsModelUpToDate(LinkListModel model) { if (model == null) @@ -53,12 +52,11 @@ namespace CampusAppWP8.Feed.Link return this.CheckIsUpToDate(lastModified); } - /// - /// Method check if the FeedFile is up-to-date - /// - /// reference of the FeedModel - /// info about the file - /// true, if file is up-to-date, otherwise false + /// Method check if the FeedFile is up-to-date. + /// Stubbfel, 14.10.2013. + /// reference of the FeedModel. + /// info about the file. + /// true, if file is up-to-date, otherwise false. private bool CheckIsFileUpToDate(LinkListModel model, FileInfo fileInfo) { if (fileInfo == null || !fileInfo.Exists || fileInfo.Length < 1) @@ -70,11 +68,10 @@ namespace CampusAppWP8.Feed.Link return this.CheckIsUpToDate(lastModified); } - /// - /// Check if the model or file is up-to-date. - /// - /// Date of the last modification - /// true, if is up-to-date, otherwise false + /// Check if the model or file is up-to-date. + /// Stubbfel, 14.10.2013. + /// Date of the last modification. + /// true, if is up-to-date, otherwise false. private bool CheckIsUpToDate(DateTime lastModified) { return Utilities.DayDifference(Utilities.DifferenceType.Less, lastModified, 7.0); diff --git a/CampusAppWP8/CampusAppWP8/Feed/Link/CommonLinkFeed.cs b/CampusAppWP8/CampusAppWP8/Feed/Link/CommonLinkFeed.cs index 4be0b0d5..d8a4cc74 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Link/CommonLinkFeed.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Link/CommonLinkFeed.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 02.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the common link feed class +//----------------------------------------------------------------------- namespace CampusAppWP8.Feed.Link { using System; @@ -15,16 +16,15 @@ namespace CampusAppWP8.Feed.Link using CampusAppWP8.Utility; using CampusAppWPortalLib8.Model; - /// - /// This Class is for CommonLinkFeeds - /// + /// This Class is for CommonLinkFeeds. + /// Stubbfel, 14.10.2013. + /// public class CommonLinkFeed : XmlModel { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. public CommonLinkFeed() : base(ModelType.FileAndFeed, Constants.FileLink_CommonLinks, Constants.UrlLink_CommonLinks) { @@ -37,11 +37,10 @@ namespace CampusAppWP8.Feed.Link #region Method - /// - /// Method check if the FeedModel is up-to-date - /// - /// reference of the FeedModel - /// true, if model is up-to-date, otherwise false + /// Method check if the FeedModel is up-to-date. + /// Stubbfel, 14.10.2013. + /// reference of the FeedModel. + /// true, if model is up-to-date, otherwise false. private bool CheckIsModelUpToDate(LinkListModel model) { if (model == null) @@ -53,12 +52,11 @@ namespace CampusAppWP8.Feed.Link return this.CheckIsUpToDate(lastModified); } - /// - /// Method check if the FeedFile is up-to-date - /// - /// reference of the FeedModel - /// info about the file - /// true, if file is up-to-date, otherwise false + /// Method check if the FeedFile is up-to-date. + /// Stubbfel, 14.10.2013. + /// reference of the FeedModel. + /// info about the file. + /// true, if file is up-to-date, otherwise false. private bool CheckIsFileUpToDate(LinkListModel model, FileInfo fileInfo) { if (fileInfo == null || !fileInfo.Exists || fileInfo.Length < 1) @@ -70,11 +68,10 @@ namespace CampusAppWP8.Feed.Link return this.CheckIsUpToDate(lastModified); } - /// - /// Check if the model or file is up-to-date. - /// - /// Date of the last modification - /// true, if is up-to-date, otherwise false + /// Check if the model or file is up-to-date. + /// Stubbfel, 14.10.2013. + /// Date of the last modification. + /// true, if is up-to-date, otherwise false. private bool CheckIsUpToDate(DateTime lastModified) { return Utilities.DayDifference(Utilities.DifferenceType.Less, lastModified, 7.0); diff --git a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeed.cs b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeed.cs index 39755ba2..030d6aae 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeed.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeed.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 03.05.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the mensa feed class +//----------------------------------------------------------------------- namespace CampusAppWP8.Feed.Mensa { using System; @@ -13,18 +14,17 @@ namespace CampusAppWP8.Feed.Mensa using CampusAppWPortalLib8.Model.Mensa; using CampusAppWPortalLib8.Model; - /// - /// This Class is for MensaFeeds - /// + /// This Class is for MensaFeeds. + /// Stubbfel, 14.10.2013. + /// public abstract class MensaFeed : XmlModel { #region Constructor - /// - /// Initializes a new instance of the class. - /// - /// name of the file - /// url of the feed + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. + /// name of the file. + /// url of the feed. protected MensaFeed(string fileName, string feedUrl) : base(ModelType.FileAndFeed, fileName, feedUrl) { @@ -37,8 +37,8 @@ namespace CampusAppWP8.Feed.Mensa #region Property - /// Gets or sets the title. - /// The title. + /// Gets the title. + /// The title. public string Title { get; protected set; } #endregion @@ -47,11 +47,10 @@ namespace CampusAppWP8.Feed.Mensa #region public - /// - /// Method creates a MensaFeed depends of certain Campus - /// - /// camus parameter - /// the correct mensaFeed + /// Method creates a MensaFeed depends of certain Campus. + /// Stubbfel, 14.10.2013. + /// camus parameter. + /// the correct mensaFeed. public static MensaFeed CreateCampusMensaFeed(CampusAppWPortalLib8.Model.Settings.Campus campus) { switch (campus) @@ -73,11 +72,10 @@ namespace CampusAppWP8.Feed.Mensa #region Private - /// - /// Method check if the FeedModel is up-to-date - /// - /// reference of the FeedModel - /// true, if model is up-to-date, otherwise false + /// Method check if the FeedModel is up-to-date. + /// Stubbfel, 14.10.2013. + /// reference of the FeedModel. + /// true, if model is up-to-date, otherwise false. private bool CheckIsModelUpToDate(MenuWeekModel model) { if (model == null) @@ -89,12 +87,11 @@ namespace CampusAppWP8.Feed.Mensa return this.CheckIsUpToDate(lastModified); } - /// - /// Method check if the FeedFile is up-to-date - /// - /// reference of the FeedModel - /// info about the file - /// true, if file is up-to-date, otherwise false + /// Method check if the FeedFile is up-to-date. + /// Stubbfel, 14.10.2013. + /// reference of the FeedModel. + /// info about the file. + /// true, if file is up-to-date, otherwise false. private bool CheckIsFileUpToDate(MenuWeekModel model, FileInfo fileInfo) { if (fileInfo == null || !fileInfo.Exists || fileInfo.Length < 1) @@ -106,11 +103,10 @@ namespace CampusAppWP8.Feed.Mensa return this.CheckIsUpToDate(lastModified); } - /// - /// Method check if the last modification was later as the NewMenuWeekDay - /// - /// Date of the last modification - /// true, if is up-to-date, otherwise false + /// Method check if the last modification was later as the NewMenuWeekDay. + /// Stubbfel, 14.10.2013. + /// Date of the last modification. + /// true, if is up-to-date, otherwise false. private bool CheckIsUpToDate(DateTime lastModified) { int diff = lastModified.CompareTo(MenuWeekModel.CalcFirstWeekDay()); diff --git a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBMain.cs b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBMain.cs index e07ffd42..e0765814 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBMain.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBMain.cs @@ -1,24 +1,24 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 12.08.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the mensa feed cb main class +//----------------------------------------------------------------------- namespace CampusAppWP8.Feed.Mensa { using CampusAppWP8.Resources; - /// - /// MensaFeed for main campus of cottbus - /// + /// MensaFeed for main campus of cottbus. + /// Stubbfel, 14.10.2013. + /// public class MensaFeedCBMain : MensaFeed { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. public MensaFeedCBMain() : base(Constants.FileMensa_Shedule_CBMain, CampusAppWPortalLib8.Resources.Constants.UrlMensa_Week_CBMain) { diff --git a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBNorth.cs b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBNorth.cs index 4c9d8d5b..a6956d5f 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBNorth.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBNorth.cs @@ -1,24 +1,24 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 12.08.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the mensa feed cb north class +//----------------------------------------------------------------------- namespace CampusAppWP8.Feed.Mensa { using CampusAppWP8.Resources; - /// - /// MensaFeed for main campus of cottbus - /// + /// MensaFeed for main campus of cottbus. + /// Stubbfel, 14.10.2013. + /// public class MensaFeedCBNorth : MensaFeed { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. public MensaFeedCBNorth() : base(Constants.FileMensa_Shedule_CBNorth, CampusAppWPortalLib8.Resources.Constants.UrlMensa_Week_CBNorth) { diff --git a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBSouth.cs b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBSouth.cs index 941e5cb4..fc33a1da 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBSouth.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBSouth.cs @@ -1,24 +1,24 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 12.08.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the mensa feed cb south class +//----------------------------------------------------------------------- namespace CampusAppWP8.Feed.Mensa { using CampusAppWP8.Resources; - /// - /// MensaFeed for main campus of cottbus - /// + /// MensaFeed for main campus of cottbus. + /// Stubbfel, 14.10.2013. + /// public class MensaFeedCBSouth : MensaFeed { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. public MensaFeedCBSouth() : base(Constants.FileMensa_Shedule_CBSouth, CampusAppWPortalLib8.Resources.Constants.UrlMensa_Week_CBSouth) { diff --git a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedSBFMain.cs b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedSBFMain.cs index 3d562a3c..0fe1fc1e 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedSBFMain.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedSBFMain.cs @@ -1,24 +1,24 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 12.08.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the mensa feed sbf main class +//----------------------------------------------------------------------- namespace CampusAppWP8.Feed.Mensa { using CampusAppWP8.Resources; - /// - /// MensaFeed for main campus of cottbus - /// + /// MensaFeed for main campus of cottbus. + /// Stubbfel, 14.10.2013. + /// public class MensaFeedSBFMain : MensaFeed { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. public MensaFeedSBFMain() : base(Constants.FileMensa_Shedule_SBFMain, CampusAppWPortalLib8.Resources.Constants.UrlMensa_Week_SBFMain) { diff --git a/CampusAppWP8/CampusAppWP8/Feed/News/NewsFeed.cs b/CampusAppWP8/CampusAppWP8/Feed/News/NewsFeed.cs index 8eb21ab2..134f00c3 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/News/NewsFeed.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/News/NewsFeed.cs @@ -1,10 +1,11 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 24.06.2013 -//----------------------------------------------------------------------------- +// 14.10.2013 +// Implements the news feed class +//----------------------------------------------------------------------- namespace CampusAppWP8.Feed.News { using System; @@ -15,17 +16,16 @@ namespace CampusAppWP8.Feed.News using CampusAppWPortalLib8.Model.RSS; using CampusAppWPortalLib8.Model; - /// - /// News Feed. - /// + /// News Feed. + /// fiedlchr, 14.10.2013. + /// public class NewsFeed : XmlModel { #region Constructor - /// - /// Initializes a new instance of the class. - /// - /// automatic loading of the data + /// Initializes a new instance of the class. + /// fiedlchr, 14.10.2013. + /// (Optional) automatic loading of the data. public NewsFeed(bool autoLoad = true) : base(ModelType.FileAndFeed, Constants.FileNews_Name, CampusAppWPortalLib8.Resources.Constants.UrlNews_Addr) { @@ -43,11 +43,10 @@ namespace CampusAppWP8.Feed.News #region Method - /// - /// Method implement CheckIsModelUpToDate()-Method - /// - /// model object - /// true, if model is up-to-date, otherwise false + /// Method implement CheckIsModelUpToDate()-Method + /// fiedlchr, 14.10.2013. + /// model object. + /// true, if model is up-to-date, otherwise false. private bool CheckIsModelUpToDate(RSSViewModel model) { bool retValue = true; @@ -64,12 +63,11 @@ namespace CampusAppWP8.Feed.News return retValue; } - /// - /// Method implement CheckIsFileUpToDate()-Method - /// - /// model object - /// info object of the file - /// true, if file is up-to-date, otherwise false + /// Method implement CheckIsFileUpToDate()-Method + /// fiedlchr, 14.10.2013. + /// model object. + /// info object of the file. + /// true, if file is up-to-date, otherwise false. private bool CheckIsFileUpToDateOnLoad(RSSViewModel model, FileInfo info) { bool retValue = true; @@ -84,13 +82,12 @@ namespace CampusAppWP8.Feed.News return retValue; } - - /// - /// Method implement CheckIsFileUpToDate()-Method - /// - /// model object - /// info object of the file - /// true, if file is up-to-date, otherwise false + + /// Method implement CheckIsFileUpToDate()-Method + /// fiedlchr, 14.10.2013. + /// model object. + /// info object of the file. + /// true, if file is up-to-date, otherwise false. private bool CheckIsFileUpToDateOnSave(RSSViewModel model, FileInfo info) { bool retValue = true; @@ -110,10 +107,10 @@ namespace CampusAppWP8.Feed.News return retValue; } - /// Check if the model or file is up-to-date. - /// Stubbfel, 12.09.2013. - /// Date of the last modification. - /// true, if is up-to-date, otherwise false. + /// Check if the model or file is up-to-date. + /// fiedlchr, 12.09.2013. + /// Date of the last modification. + /// true, if is up-to-date, otherwise false. private bool CheckIsUpToDate(DateTime lastModified) { return Utilities.DayDifference(Utilities.DifferenceType.Less, lastModified, 1.0); diff --git a/CampusAppWP8/CampusAppWP8/Feed/Openinghours/OpeninghoursFeed.cs b/CampusAppWP8/CampusAppWP8/Feed/Openinghours/OpeninghoursFeed.cs index d77a8369..5c4c974d 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Openinghours/OpeninghoursFeed.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Openinghours/OpeninghoursFeed.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 24.06.2013 -//---------------------------------------------------------------------- +// 14.10.2013 +// Implements the openinghours feed class +//----------------------------------------------------------------------- namespace CampusAppWP8.Feed.Openinghours { using System; @@ -14,17 +15,16 @@ namespace CampusAppWP8.Feed.Openinghours using CampusAppWP8.Resources; using CampusAppWP8.Utility; using CampusAppWPortalLib8.Model; - - /// - /// This Class is for MesaFeeds - /// + + /// This Class is for MesaFeeds. + /// fiedlchr, 14.10.2013. + /// public class OpeninghoursFeed : XmlModel { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// fiedlchr, 14.10.2013. public OpeninghoursFeed() : base(ModelType.FileAndFeed, Constants.FileOpeningHours_OpeningHours, Constants.UrlOpeningHours_OpeningHours) { @@ -37,11 +37,10 @@ namespace CampusAppWP8.Feed.Openinghours #region Method - /// - /// Method check if the FeedModel is up-to-date - /// - /// reference of the FeedModel - /// true, if model is up-to-date, otherwise false + /// Method check if the FeedModel is up-to-date. + /// fiedlchr, 14.10.2013. + /// reference of the FeedModel. + /// true, if model is up-to-date, otherwise false. private bool CheckIsModelUpToDate(OpeninghoursWp8Model model) { bool retValue = true; @@ -58,12 +57,11 @@ namespace CampusAppWP8.Feed.Openinghours return retValue; } - /// - /// Method check if the FeedFile is up-to-date - /// - /// reference of the FeedModel - /// info about the file - /// true, if file is up-to-date, otherwise false + /// Method check if the FeedFile is up-to-date. + /// fiedlchr, 14.10.2013. + /// reference of the FeedModel. + /// info about the file. + /// true, if file is up-to-date, otherwise false. private bool CheckIsFileUpToDateOnLoad(OpeninghoursWp8Model model, FileInfo info) { bool retValue = true; @@ -79,12 +77,11 @@ namespace CampusAppWP8.Feed.Openinghours return retValue; } - /// - /// Method check if the FeedFile is up-to-date - /// - /// reference of the FeedModel - /// info about the file - /// true, if file is up-to-date, otherwise false + /// Method check if the FeedFile is up-to-date. + /// fiedlchr, 14.10.2013. + /// reference of the FeedModel. + /// info about the file. + /// true, if file is up-to-date, otherwise false. private bool CheckIsFileUpToDateOnSave(OpeninghoursWp8Model model, FileInfo info) { bool retValue = true; @@ -103,10 +100,10 @@ namespace CampusAppWP8.Feed.Openinghours return retValue; } - /// Check if the model or file is up-to-date. - /// Stubbfel, 12.09.2013. - /// Date of the last modification. - /// true, if is up-to-date, otherwise false. + /// Check if the model or file is up-to-date. + /// fiedlchr, 12.09.2013. + /// Date of the last modification. + /// true, if is up-to-date, otherwise false. private bool CheckIsUpToDate(DateTime lastModified) { return Utilities.DayDifference(Utilities.DifferenceType.Less, lastModified, 7.0); diff --git a/CampusAppWP8/CampusAppWP8/Feed/StudentCouncil/StudentCouncilFeed.cs b/CampusAppWP8/CampusAppWP8/Feed/StudentCouncil/StudentCouncilFeed.cs index 26c1e860..7bc6f61e 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/StudentCouncil/StudentCouncilFeed.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/StudentCouncil/StudentCouncilFeed.cs @@ -15,16 +15,15 @@ namespace CampusAppWP8.Feed.StudentCouncil using CampusAppWP8.Utility; using CampusAppWPortalLib8.Model; - /// - /// This Class is for StudentCouncilFeed - /// + /// This Class is for StudentCouncilFeed. + /// Stubbfel, 14.10.2013. + /// public class StudentCouncilFeed : XmlModel { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. public StudentCouncilFeed() : base(ModelType.FileAndFeed, Constants.FileStudentCouncil_StudentCouncils, Constants.UrlStudentCouncil_StudentCouncils) { @@ -37,11 +36,10 @@ namespace CampusAppWP8.Feed.StudentCouncil #region Method - /// - /// Method check if the FeedModel is up-to-date - /// - /// reference of the FeedModel - /// true, if model is up-to-date, otherwise false + /// Method check if the FeedModel is up-to-date. + /// Stubbfel, 14.10.2013. + /// reference of the FeedModel. + /// true, if model is up-to-date, otherwise false. private bool CheckIsModelUpToDate(StudentCouncilListModel model) { if (model == null) @@ -53,12 +51,11 @@ namespace CampusAppWP8.Feed.StudentCouncil return this.CheckIsUpToDate(lastModified); } - /// - /// Method check if the FeedFile is up-to-date - /// - /// reference of the FeedModel - /// info about the file - /// true, if file is up-to-date, otherwise false + /// Method check if the FeedFile is up-to-date. + /// Stubbfel, 14.10.2013. + /// reference of the FeedModel. + /// info about the file. + /// true, if file is up-to-date, otherwise false. private bool CheckIsFileUpToDate(StudentCouncilListModel model, FileInfo fileInfo) { if (fileInfo == null || !fileInfo.Exists || fileInfo.Length < 1) @@ -70,11 +67,10 @@ namespace CampusAppWP8.Feed.StudentCouncil return this.CheckIsUpToDate(lastModified); } - /// - /// Check if the model or file is up-to-date. - /// - /// Date of the last modification - /// true, if is up-to-date, otherwise false + /// Check if the model or file is up-to-date. + /// Stubbfel, 14.10.2013. + /// Date of the last modification. + /// true, if is up-to-date, otherwise false. private bool CheckIsUpToDate(DateTime lastModified) { return Utilities.DayDifference(Utilities.DifferenceType.Less, lastModified, 7.0); diff --git a/CampusAppWP8/CampusAppWP8/Feed/Utility/CourseFeed.cs b/CampusAppWP8/CampusAppWP8/Feed/Utility/CourseFeed.cs index 10a6ecce..63b3c4bf 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Utility/CourseFeed.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Utility/CourseFeed.cs @@ -1,16 +1,18 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 02.09.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the course feed class +//----------------------------------------------------------------------- namespace CampusAppWP8.Feed.Utility { using CampusAppWP8.Feed.Exams; - /// Course Feed. - /// Stubbfel, 02.09.2013. + /// Course Feed. + /// Stubbfel, 02.09.2013. + /// public class CourseFeed : ExamFeed { } diff --git a/CampusAppWP8/CampusAppWP8/File/Departments/DepartmentFavoriteFile.cs b/CampusAppWP8/CampusAppWP8/File/Departments/DepartmentFavoriteFile.cs index fd5f4248..44983e0f 100644 --- a/CampusAppWP8/CampusAppWP8/File/Departments/DepartmentFavoriteFile.cs +++ b/CampusAppWP8/CampusAppWP8/File/Departments/DepartmentFavoriteFile.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 01.07.2013 -//---------------------------------------------------------------------- +// 14.10.2013 +// Implements the department favorite file class +//----------------------------------------------------------------------- namespace CampusAppWP8.File.Departments { using System.IO; @@ -13,16 +14,16 @@ namespace CampusAppWP8.File.Departments using CampusAppWPortalLib8.Model; using CampusAppWPortalLib8.Model.Departments; - /// - /// Feed object to handle favorite department feeds. - /// + /// Feed object to handle favorite department feeds. + /// fiedlchr, 14.10.2013. + /// public class DepartmentFavoriteFile : XmlModel { #region Constructor - /// Initializes a new instance of the DepartmentFavoriteFile class. - /// Stubbfel, 12.09.2013. - /// (Optional) the automatic load. + /// Initializes a new instance of the DepartmentFavoriteFile class. + /// fiedlchr, 12.09.2013. + /// (Optional) the automatic load. public DepartmentFavoriteFile(bool autoLoad = true) : base(ModelType.File, Constants.FileDepartment_Favorite_Name, string.Empty) { @@ -40,11 +41,10 @@ namespace CampusAppWP8.File.Departments #region Method - /// - /// Method implement CheckIsModelUpToDate()-Method . - /// - /// model object - /// true, if model is up-to-date, otherwise false + /// Method implement CheckIsModelUpToDate()-Method . + /// fiedlchr, 14.10.2013. + /// model object. + /// true, if model is up-to-date, otherwise false. private bool CheckIsModelUpToDate(DepartmentModel model) { bool retValue = true; @@ -59,12 +59,11 @@ namespace CampusAppWP8.File.Departments return retValue; } - /// - /// Method implement CheckIsFileUpToDate()-Method . - /// - /// model object - /// file info object - /// true, if file is up-to-date, otherwise false + /// Method implement CheckIsFileUpToDate()-Method . + /// fiedlchr, 14.10.2013. + /// model object. + /// file info object. + /// true, if file is up-to-date, otherwise false. private bool CheckIsFileUpToDateOnLoad(DepartmentModel model, FileInfo info) { bool retValue = false; @@ -77,12 +76,11 @@ namespace CampusAppWP8.File.Departments return retValue; } - /// - /// Method implement CheckIsFileUpToDate()-Method . - /// - /// model object - /// file info object - /// true, if file is up-to-date, otherwise false + /// Method implement CheckIsFileUpToDate()-Method . + /// fiedlchr, 14.10.2013. + /// model object. + /// file info object. + /// true, if file is up-to-date, otherwise false. private bool CheckIsFileUpToDateOnSave(DepartmentModel model, FileInfo info) { bool retValue = false; diff --git a/CampusAppWP8/CampusAppWP8/File/Exams/ExamFile.cs b/CampusAppWP8/CampusAppWP8/File/Exams/ExamFile.cs index e4f71f58..c148e2b1 100644 --- a/CampusAppWP8/CampusAppWP8/File/Exams/ExamFile.cs +++ b/CampusAppWP8/CampusAppWP8/File/Exams/ExamFile.cs @@ -1,34 +1,35 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 03.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 14.10.2013 +// Implements the exam file class +//----------------------------------------------------------------------- namespace CampusAppWP8.File.Exams { using System.IO; using CampusAppWP8.Model; using Windows.Storage; - /// Exam file. - /// Stubbfel, 03.09.2013. + /// Exam file. + /// Stubbfel, 03.09.2013. + /// public class ExamFile : BinaryModel { #region Member - /// The storage file. + /// The storage file. private StorageFile storageFile; #endregion #region Constructor - /// Initializes a new instance of the ExamFile class. - /// Stubbfel, 03.09.2013. - /// Filename of the file. - /// URL of the document. + /// Initializes a new instance of the ExamFile class. + /// Stubbfel, 03.09.2013. + /// Filename of the file. + /// URL of the document. public ExamFile(string fileName, string url) : base(CampusAppWPortalLib8.Model.ModelType.FileAndFeed, fileName, url) { @@ -46,6 +47,9 @@ namespace CampusAppWP8.File.Exams /// Executes the file operation. /// Stubbfel, 03.09.2013. #pragma warning disable 4014 + + /// Executes the file operation. + /// Stubbfel, 14.10.2013. public async void LaunchFile() { if (this.storageFile == null) @@ -62,8 +66,8 @@ namespace CampusAppWP8.File.Exams #endregion - /// Saves the and launch file. - /// Stubbfel, 03.09.2013. + /// Saves the and launch file. + /// Stubbfel, 03.09.2013. public void SaveAndLaunchFile() { if (this.File.Exist()) @@ -79,10 +83,10 @@ namespace CampusAppWP8.File.Exams #region private - /// Check is model up to date. - /// Stubbfel, 03.09.2013. - /// The model. - /// true if it succeeds, false if it fails. + /// Check is model up to date. + /// Stubbfel, 03.09.2013. + /// The model. + /// true if it succeeds, false if it fails. private bool CheckIsModelUpToDate(byte[] model) { if (model == null) @@ -93,11 +97,11 @@ namespace CampusAppWP8.File.Exams return true; } - /// Check is file up to date. - /// Stubbfel, 03.09.2013. - /// The model. - /// Information describing the file. - /// true if it succeeds, false if it fails. + /// Check is file up to date. + /// Stubbfel, 03.09.2013. + /// The model. + /// Information describing the file. + /// true if it succeeds, false if it fails. private bool CheckIsFileUpToDate(byte[] model, FileInfo fileInfo) { if (fileInfo == null || !fileInfo.Exists || fileInfo.Length < 1 || model != null) diff --git a/CampusAppWP8/CampusAppWP8/File/Places/PlacesFile.cs b/CampusAppWP8/CampusAppWP8/File/Places/PlacesFile.cs index e6d2945a..e39c9ad0 100644 --- a/CampusAppWP8/CampusAppWP8/File/Places/PlacesFile.cs +++ b/CampusAppWP8/CampusAppWP8/File/Places/PlacesFile.cs @@ -1,11 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 09.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 14.10.2013 +// Implements the places file class +//----------------------------------------------------------------------- namespace CampusAppWP8.File.Places { using CampusAppWP8.Model; @@ -13,14 +13,15 @@ namespace CampusAppWP8.File.Places using CampusAppWP8.Resources; using CampusAppWPortalLib8.Utility; - /// Places file. - /// Stubbfel, 09.09.2013. + /// Places file. + /// Stubbfel, 09.09.2013. + /// public class PlacesFile : XmlModel { #region Constructor - /// Initializes a new instance of the PlacesFile class. - /// Stubbfel, 09.09.2013. + /// Initializes a new instance of the PlacesFile class. + /// Stubbfel, 09.09.2013. public PlacesFile() : base(CampusAppWPortalLib8.Model.ModelType.File, Constants.FilePlace_AllPlaces) { @@ -33,11 +34,11 @@ namespace CampusAppWP8.File.Places #region Method - /// Check is file up to date. - /// Stubbfel, 09.09.2013. - /// The model. - /// Information describing the file. - /// true if it succeeds, false if it fails. + /// Check is file up to date. + /// Stubbfel, 09.09.2013. + /// The model. + /// Information describing the file. + /// true if it succeeds, false if it fails. private bool CheckIsFileUpToDate(SpsModel model, System.IO.FileInfo fileInfo) { if (fileInfo == null || !fileInfo.Exists || fileInfo.Length < 1 || (model != null && model.HasChanged)) @@ -48,9 +49,8 @@ namespace CampusAppWP8.File.Places return false; } - /// - /// Method load OfflineMap as Fallback - /// + /// Method load OfflineMap as Fallback. + /// Stubbfel, 14.10.2013. public void FallBackLoad() { SpsModel fallBackModel = XmlManager.DeserializationFileToModel(Constants.FileMap_OfflineMap); From 85c196df786a2e771cf65bd27b9f66ab9a28288a Mon Sep 17 00:00:00 2001 From: stubbfel Date: Mon, 14 Oct 2013 18:38:41 +0200 Subject: [PATCH 3/9] refactory campusmapmodel --- CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj | 4 +- .../Model/Campusmap/BuildingMapModel.cs | 40 ++-- .../Model/Campusmap/CBMainMapModel.cs | 35 +-- .../Model/Campusmap/CBMainMapRoomModel.cs | 30 +-- .../Model/Campusmap/CampusMapModel.cs | 38 +-- .../Model/Campusmap/ClickAblePlacePinModel.cs | 35 ++- .../Campusmap/CurrentPositionPinModel.cs | 21 +- .../Model/Campusmap/HiddenPinPlaceModel.cs | 17 +- .../Model/Campusmap/InfoLabPlacePinModel.cs | 21 +- .../Campusmap/InfoPlaceAccessPinModel.cs | 23 +- .../Model/Campusmap/InfoPlacePinModel.cs | 21 +- .../Model/Campusmap/InfoPlaceWCPinModel.cs | 23 +- .../CampusAppWP8/Model/Campusmap/MapModel.cs | 222 ++++++++---------- .../Model/Campusmap/MapPinModel.cs | 145 ++++++------ .../Model/Campusmap/SearchPlacePinModel.cs | 17 +- .../Pages/Campusmap/CampusMapPage.xaml.cs | 2 +- CampusAppWP8/CampusAppWP8/Settings.StyleCop | 1 + Doc/atominnerSettings/PrefSets.xml | 4 +- 18 files changed, 338 insertions(+), 361 deletions(-) diff --git a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj index fa91da9a..b87004b2 100644 --- a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj +++ b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj @@ -200,7 +200,9 @@ - + + False + diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/BuildingMapModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/BuildingMapModel.cs index 6f222579..9c9dc708 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/BuildingMapModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/BuildingMapModel.cs @@ -1,25 +1,35 @@ -using CampusAppWP8.Model.GeoDb; -using CampusAppWP8.Resources; -using CampusAppWPortalLib8.Utility; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; - +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. +// +// Stubbfel +// 14.10.2013 +// Implements the building map model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Campusmap { + using System.Globalization; + using System.Linq; + using System.Windows; + using CampusAppWP8.Model.GeoDb; + using CampusAppWP8.Resources; + using CampusAppWPortalLib8.Utility; + + /// A data Model for the building map. + /// Stubbfel, 14.10.2013. + /// public class BuildingMapModel : MapModel { + /// Initializes a new instance of the BuildingMapModel class. + /// Stubbfel, 14.10.2013. + /// The identifier. public BuildingMapModel(string id) { SpsModel buildings = XmlManager.DeserializationFileToModel(Constants.FileMap_BuildingsMap); PlaceModel building = buildings.GetPlaceById(id); if (buildings == null) { - return; + return; } this.ImageSource = building.GetInformationsValue("ImageSource"); @@ -29,7 +39,7 @@ namespace CampusAppWP8.Model.Campusmap this.ImageWidth = tmpVal; } - if (double.TryParse(building.GetInformationsValue("ImageHeight"), NumberStyles.Number, CultureInfo.InvariantCulture, out tmpVal)) + if (double.TryParse(building.GetInformationsValue("ImageHeight"), NumberStyles.Number, CultureInfo.InvariantCulture, out tmpVal)) { this.ImageHeight = tmpVal; } @@ -52,6 +62,7 @@ namespace CampusAppWP8.Model.Campusmap { return; } + double x; double y; @@ -60,7 +71,7 @@ namespace CampusAppWP8.Model.Campusmap return; } - this.RefPoint = new Point(x,y); + this.RefPoint = new Point(x, y); if (double.TryParse(building.GetInformationsValue("ScaleX"), NumberStyles.Number, CultureInfo.InvariantCulture, out tmpVal)) { @@ -74,7 +85,6 @@ namespace CampusAppWP8.Model.Campusmap this.GeoOffsetX = building.GeoRefPoint.Longitude; this.GeoOffsetY = building.GeoRefPoint.Latitude; - } } } diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/CBMainMapModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/CBMainMapModel.cs index 3363f686..2e2757c5 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/CBMainMapModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/CBMainMapModel.cs @@ -1,36 +1,37 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 13.08.2013 -//----------------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the main map model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Campusmap { - using System.Windows; - using CampusAppWP8.File.Places; + using System.Collections.Generic; + using System.Windows; using CampusAppWP8.Model.GeoDb; - using CampusAppWP8.Resources; - using System.Collections.Generic; + using CampusAppWP8.Resources; - /// - /// Class for the MapModel of the mainCampus of cottbus - /// + /// Class for the MapModel of the mainCampus of cottbus. + /// Stubbfel, 14.10.2013. + /// public class CBMainMapModel : CampusMapModel { #region Member - /// Variable for the identify of the campus. + /// Variable for the identify of the campus. private static readonly string Campus = ((int)CampusAppWPortalLib8.Model.Settings.Campus.CB_MAIN).ToString(); #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// - public CBMainMapModel(List placeList) : base (placeList,CBMainMapModel.Campus) + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. + /// List of places. + public CBMainMapModel(List placeList) + : base(placeList, CBMainMapModel.Campus) { this.ImageSource = Constants.FileMap_CBMainMap; this.ImageWidth = 2000; diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/CBMainMapRoomModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/CBMainMapRoomModel.cs index 3c3740b7..a98fb364 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/CBMainMapRoomModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/CBMainMapRoomModel.cs @@ -1,31 +1,25 @@ -//----------------------------------------------------------------------------- -// -// Company copyright tag. +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 13.08.2013 -//----------------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the main map room model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Campusmap { - using System.Windows; - using CampusAppWP8.File.Places; - using CampusAppWP8.Model.GeoDb; - using CampusAppWP8.Resources; - using System.Collections.Generic; - - /// - /// Class for the MapModel of the mainCampus of cottbus - /// + /// Class for the MapModel of the mainCampus of cottbus. + /// Stubbfel, 14.10.2013. public class CBMainMapRoomModel { #region Constructor + + /// Initializes a new instance of the CBMainMapRoomModel class. + /// Stubbfel, 14.10.2013. public CBMainMapRoomModel() { - } #endregion - - } } diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/CampusMapModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/CampusMapModel.cs index 579a80f3..45a71407 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/CampusMapModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/CampusMapModel.cs @@ -1,28 +1,27 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 26.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 14.10.2013 +// Implements the campus map model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Campusmap { using System.Collections.Generic; using CampusAppWP8.Model.GeoDb; - /// - /// Class for the CampusMapModel - /// + /// Class for the CampusMapModel. + /// Stubbfel, 14.10.2013. + /// public class CampusMapModel : MapModel { #region constructor - /// - /// Initializes a new instance of the class. - /// - /// list of places - /// id of the campus + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. + /// list of places. + /// id of the campus. public CampusMapModel(List placeList, string campusId) { this.CampusId = campusId; @@ -30,6 +29,8 @@ namespace CampusAppWP8.Model.Campusmap this.IsReady = true; } + /// Initializes a new instance of the CampusMapModel class. + /// Stubbfel, 14.10.2013. public CampusMapModel() { } @@ -38,18 +39,17 @@ namespace CampusAppWP8.Model.Campusmap #region property - /// - /// Gets or sets the campusId - /// + /// Gets or sets the campusId. + /// The identifier of the campus. public string CampusId { get; protected set; } #endregion #region method - /// Loads the spatial./. - /// Stubbfel, 19.08.2013. - /// list of places + /// Loads the spatial./. + /// Stubbfel, 14.10.2013. + /// protected override void LoadSpatials(List placeList) { List campusPlaces = new List(); diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/ClickAblePlacePinModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/ClickAblePlacePinModel.cs index 8267acd1..9fc74d80 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/ClickAblePlacePinModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/ClickAblePlacePinModel.cs @@ -1,42 +1,39 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 26.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 14.10.2013 +// Implements the click able place pin model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Campusmap { using System.Collections.Generic; using CampusAppWP8.Model.GeoDb; - /// - /// abstract class for click abel bins - /// + /// abstract class for click abel bins. + /// Stubbfel, 14.10.2013. + /// public abstract class ClickAblePlacePinModel : MapPinModel { #region property - /// - /// Gets or sets Callback Function, to show place information of the Pin - /// + /// Gets or sets Callback Function, to show place information of the Pin. + /// The call back. public MapModel.MapInfos CallBack { get; set; } - /// - /// Gets or sets place which are associative with this pin - /// + /// Gets or sets place which are associative with this pin. + /// The associated places. public List AssocPlaces { get; set; } #endregion #region Method - /// - /// Show Information of this pin places - /// - /// sender of the Event - /// MouseButtonEvent Arguments + /// Show Information of this pin places. + /// Stubbfel, 14.10.2013. + /// sender of the Event. + /// MouseButtonEvent Arguments. public void ShowInfo(object sender, System.Windows.Input.MouseButtonEventArgs e) { this.CallBack(this.AssocPlaces); diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/CurrentPositionPinModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/CurrentPositionPinModel.cs index ab11ad7d..78d17ad9 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/CurrentPositionPinModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/CurrentPositionPinModel.cs @@ -1,24 +1,25 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 27.08.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 14.10.2013 +// Implements the current position pin model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Campusmap { using System.Windows; using CampusAppWP8.Resources; - /// Current position pin model. - /// Stubbfel, 27.08.2013. + /// Current position pin model. + /// Stubbfel, 27.08.2013. + /// public class CurrentPositionPinModel : MapPinModel { #region Constructor - /// Initializes a new instance of the CurrentPositionPinModel class. - /// Stubbfel, 27.08.2013. + /// Initializes a new instance of the CurrentPositionPinModel class. + /// Stubbfel, 27.08.2013. public CurrentPositionPinModel() { this.ImageSource = Icons.CurrentPosition; @@ -26,7 +27,7 @@ namespace CampusAppWP8.Model.Campusmap this.ImageHeight = 60; this.PinImageOffsetX = -25; this.PinImageOffsetY = -34; - this.Tag = MapPinModel.CurrendPositionPlacePinString; + this.Tag = MapPinModel.CurrentPositionPlacePinString; this.ZIndex = 3; } diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/HiddenPinPlaceModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/HiddenPinPlaceModel.cs index e8343a76..57290f3a 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/HiddenPinPlaceModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/HiddenPinPlaceModel.cs @@ -1,19 +1,22 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// fiedlchr -// 13.08.2013 -//----------------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the hidden pin place model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Campusmap { - /// Hidden pin place model. - /// Stubbfel, 27.08.2013. + /// Hidden pin place model. + /// Stubbfel, 27.08.2013. + /// public class HiddenPinPlaceModel : MapPinModel { /// /// Initializes a new instance of the class. /// + /// Stubbfel, 14.10.2013. public HiddenPinPlaceModel() { this.Tag = MapPinModel.HiddenPlacePinString; diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoLabPlacePinModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoLabPlacePinModel.cs index da79014f..2d63a436 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoLabPlacePinModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoLabPlacePinModel.cs @@ -1,25 +1,24 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 27.08.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 14.10.2013 +// Implements the information lab place pin model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Campusmap { using CampusAppWP8.Resources; - /// Search pin place model. - /// Stubbfel, 27.08.2013. + /// Search pin place model. + /// Stubbfel, 27.08.2013. + /// public class InfoLabPlacePinModel : InfoPlacePinModel { #region Constructor - /// - /// Initializes a new instance of the class. - /// - /// Stubbfel, 27.08.2013. + /// Initializes a new instance of the class. + /// Stubbfel, 27.08.2013. public InfoLabPlacePinModel() { this.ImageSource = Icons.PlaceLab; diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoPlaceAccessPinModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoPlaceAccessPinModel.cs index 2b89ddbd..0c5e5d2e 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoPlaceAccessPinModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoPlaceAccessPinModel.cs @@ -1,25 +1,24 @@ //----------------------------------------------------------------------- -// -// Company copyright tag. +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 27.08.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 14.10.2013 +// Implements the information place access pin model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Campusmap { using CampusAppWP8.Resources; - /// Search pin place model. - /// Stubbfel, 27.08.2013. + /// Search pin place model. + /// Stubbfel, 27.08.2013. + /// public class InfoPlaceAccessPinModel : InfoPlacePinModel { #region Constructor - /// - /// Initializes a new instance of the class. - /// - /// Stubbfel, 27.08.2013. + /// Initializes a new instance of the class. + /// Stubbfel, 27.08.2013. public InfoPlaceAccessPinModel() { this.ImageSource = Icons.PlaceInfoAccess; diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoPlacePinModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoPlacePinModel.cs index 70ca24f4..1111da33 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoPlacePinModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoPlacePinModel.cs @@ -1,25 +1,24 @@ //----------------------------------------------------------------------- // -// BTU/IIT +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 27.08.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 14.10.2013 +// Implements the information place pin model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Campusmap { using CampusAppWP8.Resources; - /// Search pin place model. - /// Stubbfel, 27.08.2013. + /// Search pin place model. + /// Stubbfel, 27.08.2013. + /// public class InfoPlacePinModel : ClickAblePlacePinModel { #region Constructor - /// - /// Initializes a new instance of the class. - /// - /// Stubbfel, 27.08.2013. + /// Initializes a new instance of the class. + /// Stubbfel, 27.08.2013. public InfoPlacePinModel() { this.ImageSource = Icons.PlaceInfo; diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoPlaceWCPinModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoPlaceWCPinModel.cs index 223f429f..e070250f 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoPlaceWCPinModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/InfoPlaceWCPinModel.cs @@ -1,25 +1,24 @@ //----------------------------------------------------------------------- -// -// Company copyright tag. +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 27.08.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 14.10.2013 +// Implements the information place wc pin model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Campusmap { using CampusAppWP8.Resources; - /// Search pin place model. - /// Stubbfel, 27.08.2013. + /// Search pin place model. + /// Stubbfel, 27.08.2013. + /// public class InfoPlaceWCPinModel : InfoPlacePinModel { #region Constructor - /// - /// Initializes a new instance of the class. - /// - /// Stubbfel, 27.08.2013. + /// Initializes a new instance of the InfoPlaceWCPinModel class. + /// Stubbfel, 14.10.2013. public InfoPlaceWCPinModel() { this.ImageSource = Icons.PlaceInfoWc; diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapModel.cs index f97360ae..5e105c5d 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapModel.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 24.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the map model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Campusmap { using System; @@ -15,25 +16,22 @@ namespace CampusAppWP8.Model.Campusmap using System.Windows.Media.Imaging; using CampusAppWP8.Model.GeoDb; - /// - /// This Class manage the properties of a Map - /// + /// This Class manage the properties of a Map. + /// Stubbfel, 14.10.2013. public class MapModel { #region Constructors - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. public MapModel() { this.IsReady = false; } - /// - /// Initializes a new instance of the class. - /// - /// list of places + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. + /// list of places. public MapModel(List placeList) { this.IsReady = false; @@ -45,77 +43,63 @@ namespace CampusAppWP8.Model.Campusmap #region Events - /// - /// Delegate for MapInfo - /// - /// list of places + /// Delegate for MapInfo. + /// Stubbfel, 14.10.2013. + /// list of places. public delegate void MapInfos(List places); - /// - /// Event ShowMapInfo - /// + /// Event ShowMapInfo. public event MapInfos ShowMapInfos = null; #endregion #region Property - /// - /// Gets or sets a value indicating whether the map is ready or not - /// + /// Gets or sets a value indicating whether the map is ready or not. + /// true if this object is ready, false if not. public bool IsReady { get; protected set; } - /// - /// Gets or sets the ImageSource of the map - /// + /// Gets or sets the ImageSource of the map. + /// The image source. public string ImageSource { get; set; } - /// - /// Gets or sets the ImageWidth of the map - /// + /// Gets or sets the ImageWidth of the map. + /// The width of the image. public double ImageWidth { get; set; } - /// - /// Gets or sets the ImageHeight of the map - /// + /// Gets or sets the ImageHeight of the map. + /// The height of the image. public double ImageHeight { get; set; } - /// - /// Gets or sets the ImageOffsetX of the map - /// + /// Gets or sets the ImageOffsetX of the map. + /// The map image offset x coordinate. public double MapImageOffsetX { get; set; } - /// - /// Gets or sets the ImageOffsetY of the map - /// + /// Gets or sets the ImageOffsetY of the map. + /// The map image offset y coordinate. public double MapImageOffsetY { get; set; } - /// - /// Gets or sets the GeoOffsetX of the map - /// + /// Gets or sets the GeoOffsetX of the map. + /// The geo offset x coordinate. public double GeoOffsetX { get; set; } - /// - /// Gets or sets the GeoOffsetY of the map - /// + /// Gets or sets the GeoOffsetY of the map. + /// The geo offset y coordinate. public double GeoOffsetY { get; set; } - /// - /// Gets or sets the Scale (to pixel) of the map - /// + /// Gets or sets the Scale (to pixel) of the map. + /// The scale x coordinate. public double ScaleX { get; set; } - /// - /// Gets or sets the Scale (to pixel) of the map - /// + /// Gets or sets the Scale (to pixel) of the map. + /// The scale y coordinate. public double ScaleY { get; set; } - /// - /// Gets or sets the reference point - /// + /// Gets or sets the reference point. + /// The reference point. public Point RefPoint { get; set; } - /// Gets or sets the spatial of the map. - /// The spatial. + /// Gets or sets the spatial of the map. + /// The spatial. public SpsModel Spatial { get; set; } #endregion @@ -124,23 +108,20 @@ namespace CampusAppWP8.Model.Campusmap #region public - /// - /// Method calculate the coordinates of ScrollToOffsets point - /// - /// input point - /// point (in pixel) + /// Method calculate the coordinates of ScrollToOffsets point. + /// Stubbfel, 14.10.2013. + /// input point. + /// point (in pixel) public Point GetScrollPoint(Point point) { return this.GetScrollPoint(point.X, point.Y); } - /// - /// Method calculate the coordinates of ScrollToOffsets point - /// - /// the input-point will be shown in the center - /// x - coordinate - /// y - coordinate - /// point (in pixel) + /// Method calculate the coordinates of ScrollToOffsets point. + /// the input-point will be shown in the center. + /// x - coordinate. + /// y - coordinate. + /// point (in pixel) public Point GetScrollPoint(double x, double y) { x = this.RefPoint.X + this.MapImageOffsetX + x; @@ -149,13 +130,13 @@ namespace CampusAppWP8.Model.Campusmap return new Point(x, y); } - /// Method create in image, which can show at a certain position. - /// Stubbfel, 27.08.2013. - /// the x- coordinate. - /// the y-coordinate. - /// The type. - /// list of places - /// image of the pin. + /// Method create in image, which can show at a certain position. + /// Stubbfel, 27.08.2013. + /// the x- coordinate. + /// the y-coordinate. + /// The type. + /// (Optional) list of places. + /// image of the pin. public Image AddPin(double x, double y, MapPinModel.PinType type, List places = null) { Point position = new Point(x, y); @@ -166,12 +147,12 @@ namespace CampusAppWP8.Model.Campusmap /// Method create in image, which can show at a certain position depend of the /// /// - /// Stubbfel, 27.08.2013. - /// the x-coordinate. - /// the y-coordinate. - /// The type. - /// list of places - /// image of the pin. + /// Stubbfel, 27.08.2013. + /// the x-coordinate. + /// the y-coordinate. + /// The type. + /// (Optional) list of places. + /// image of the pin. public Image AddPinFromRefPoint(double x, double y, MapPinModel.PinType type, List places = null) { Point position = new Point(this.RefPoint.X + x, this.RefPoint.Y - y); @@ -182,22 +163,22 @@ namespace CampusAppWP8.Model.Campusmap /// Method create in image, which can show at a certain position depend of the /// /// - /// Stubbfel, 27.08.2013. - /// input point. - /// The type. - /// list of places - /// image of the pin. + /// Stubbfel, 27.08.2013. + /// input point. + /// The type. + /// (Optional) list of places. + /// image of the pin. public Image AddPinFromRefPoint(Point position, MapPinModel.PinType type, List places = null) { return this.AddPinFromRefPoint(position.X, position.Y, type, places); } - /// Method create in image, which can show at a certain position. - /// Stubbfel, 27.08.2013. - /// input point. - /// The type. - /// list of places - /// image of the pin. + /// Method create in image, which can show at a certain position. + /// Stubbfel, 27.08.2013. + /// input point. + /// The type. + /// (Optional) list of places. + /// image of the pin. public Image AddPin(Point position, MapPinModel.PinType type, List places = null) { Image pinImg = new Image(); @@ -216,43 +197,40 @@ namespace CampusAppWP8.Model.Campusmap return pinImg; } - /// Convert a coordinates to coordinates which address pixels. - /// Stubbfel, 27.08.2013. - /// the x-coordinate. - /// the y-coordinate. - /// Point in pixel-size. + /// Convert a coordinates to coordinates which address pixels. + /// Stubbfel, 27.08.2013. + /// the x-coordinate. + /// the y-coordinate. + /// Point in pixel-size. public Point ConverToPixelPoint(double x, double y) { Point p = new Point { X = this.ScaleX * x, Y = this.ScaleY * y }; return p; } - /// - /// Convert a coordinates to coordinates which address pixels - /// - /// not scaled pointd - /// Point in pixel-size + /// Convert a coordinates to coordinates which address pixels. + /// Stubbfel, 14.10.2013. + /// not scaled point. + /// Point in pixel-size. public Point ConverToPixelPoint(Point point) { return this.ConverToPixelPoint(point.X, point.Y); } - /// - /// Convert a coordinates to coordinates which address mapPoint - /// - /// the x-coordinate - /// the y-coordinate - /// Point in pixel-size + /// Convert a coordinates to coordinates which address mapPoint. + /// Stubbfel, 14.10.2013. + /// the x-coordinate. + /// the y-coordinate. + /// Point in pixel-size. public Point ConverToMapPoint(double x, double y) { return new Point { X = x - this.GeoOffsetX, Y = y - this.GeoOffsetY }; } - /// - /// Convert a coordinates to coordinates which address mapPoint - /// - /// not scaled point - /// Point in pixel-size + /// Convert a coordinates to coordinates which address mapPoint. + /// Stubbfel, 14.10.2013. + /// not scaled point. + /// Point in pixel-size. public Point ConverToMapPoint(Point point) { return this.ConverToMapPoint(point.X, point.Y); @@ -262,9 +240,9 @@ namespace CampusAppWP8.Model.Campusmap #region protected - /// Loads the spatial./ - /// Stubbfel, 19.08.2013. - /// list of places + /// Loads the spatial object + /// Stubbfel, 19.08.2013. + /// list of places. protected virtual void LoadSpatials(List placeList) { this.Spatial = new SpsModel(); @@ -275,12 +253,12 @@ namespace CampusAppWP8.Model.Campusmap #region private - /// Creates a pin. - /// Stubbfel, 27.08.2013. - /// The type. - /// list of places - /// image of the pin - /// The new pin. + /// Creates a pin. + /// Stubbfel, 27.08.2013. + /// The type. + /// list of places. + /// image of the pin. + /// The new pin. private MapPinModel CreatePin(MapPinModel.PinType type, List places, Image pinImg) { MapPinModel pin; diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapPinModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapPinModel.cs index 79a8cb43..7067bd7d 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapPinModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapPinModel.cs @@ -1,67 +1,56 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 24.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 14.10.2013 +// Implements the map pin model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Campusmap { using System.Windows; using System.Windows.Input; using CampusAppWP8.Resources; - /// - /// This Class manage the properties of a MapPin - /// + /// This Class manage the properties of a MapPin. + /// Stubbfel, 14.10.2013. public abstract class MapPinModel { #region Member - /// - /// String for info pins - /// + /// String for info pins. private static string infoPlacePinString = MapPinModel.PinTypeToString(PinType.InfoPlace); - /// - /// String for info pins - /// + /// String for info pins. private static string infoLabPlacePinString = MapPinModel.PinTypeToString(PinType.InfoLabPlace); - /// - /// String for hidden pins - /// + /// String for hidden pins. private static string hiddenPlacePinString = MapPinModel.PinTypeToString(PinType.Hidden); - /// - /// String for search pins - /// + /// String for search pins. private static string searchPlacePinString = MapPinModel.PinTypeToString(PinType.SearchPlace); - /// - /// String for current position pins - /// - private static string currendPositionPlacePinString = MapPinModel.PinTypeToString(PinType.CurrentPosition); + /// String for current position pins. + private static string currentPositionPlacePinString = MapPinModel.PinTypeToString(PinType.CurrentPosition); + /// The information wc place pin string. private static string infoWcPlacePinString = MapPinModel.PinTypeToString(PinType.InfoWcPlace); + /// The information access place pin string. private static string infoAccesPlacePinString = MapPinModel.PinTypeToString(PinType.InfoAccesPlace); + /// The information red place pin string. private static string infoRedPlacePinString = MapPinModel.PinTypeToString(PinType.InfoRedPlace); - - - /// - /// Variable of the actual position of the pin - /// + /// Variable of the actual position of the pin. private Point position; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + + /// Initializes a new instance of the class. + /// Stubbfel, 14.10.2013. public MapPinModel() { } @@ -69,8 +58,9 @@ namespace CampusAppWP8.Model.Campusmap #endregion #region enums - /// Values that represent PinType. - /// Stubbfel, 27.08.2013. + + /// Values that represent PinType. + /// Stubbfel, 27.08.2013. public enum PinType { /// An enum constant representing the hidden option. @@ -84,100 +74,105 @@ namespace CampusAppWP8.Model.Campusmap /// An enum constant representing the info place option. InfoPlace = 3, + + /// An enum constant representing the information lab place option. InfoLabPlace = 4, + + /// An enum constant representing the information wc place option. InfoWcPlace = 5, + + /// An enum constant representing the information red place option. InfoRedPlace = 6, + + /// An enum constant representing the information access place option. InfoAccesPlace = 7 } #endregion #region Property + /// Gets the information red place pin string. + /// The information red place pin string. public static string InfoRedPlacePinString { get { return MapPinModel.infoRedPlacePinString; } } + /// Gets the information access place pin string. + /// The information access place pin string. public static string InfoAccesPlacePinString { get { return MapPinModel.infoAccesPlacePinString; } } + /// Gets the information wc place pin string. + /// The information wc place pin string. public static string InfoWcPlacePinString { get { return MapPinModel.infoWcPlacePinString; } } - /// - /// Gets the string of current position pins - /// - public static string CurrendPositionPlacePinString + /// Gets the string of current position pins. + /// The current position place pin string. + public static string CurrentPositionPlacePinString { - get { return MapPinModel.currendPositionPlacePinString; } + get { return MapPinModel.currentPositionPlacePinString; } } - /// - /// Gets the string of search pins - /// + /// Gets the string of search pins. + /// The search place pin string. public static string SearchPlacePinString { get { return MapPinModel.searchPlacePinString; } } - /// - /// Gets the string of hidden pins - /// + /// Gets the string of hidden pins. + /// The hidden place pin string. public static string HiddenPlacePinString { get { return MapPinModel.hiddenPlacePinString; } } - /// - /// Gets the string of info pins - /// + /// Gets the string of info pins. + /// The information place pin string. public static string InfoPlacePinString { get { return MapPinModel.infoPlacePinString; } } + /// Gets the information lab place pin string. + /// The information lab place pin string. public static string InfoLabPlacePinString { get { return MapPinModel.infoLabPlacePinString; } } - /// - /// Gets or sets the ImageSource of the pin - /// + /// Gets or sets the ImageSource of the pin. + /// The image source. public string ImageSource { get; set; } - /// - /// Gets or sets the ImageWidth of the pin - /// + /// Gets or sets the ImageWidth of the pin. + /// The width of the image. public double ImageWidth { get; set; } - /// - /// Gets or sets the ImageHeight of the pin - /// + /// Gets or sets the ImageHeight of the pin. + /// The height of the image. public double ImageHeight { get; set; } - /// - /// Gets or sets the ZIndex of the pin - /// + /// Gets or sets the ZIndex of the pin. + /// The z coordinate index. public int ZIndex { get; set; } - /// - /// Gets or sets the ImageOffsetX of the pin - /// + /// Gets or sets the ImageOffsetX of the pin. + /// The pin image offset x coordinate. public double PinImageOffsetX { get; set; } - /// - /// Gets or sets the ImageOffsetY of the pin - /// + /// Gets or sets the ImageOffsetY of the pin. + /// The pin image offset y coordinate. public double PinImageOffsetY { get; set; } - /// - /// Gets or sets position of the pin - /// + /// Gets or sets position of the pin. + /// The position. public Point Position { get @@ -213,20 +208,18 @@ namespace CampusAppWP8.Model.Campusmap } } - /// - /// Gets or sets the tag of the pin - /// + /// Gets or sets the tag of the pin. + /// The tag. public object Tag { get; set; } #endregion #region Method - /// - /// Method convert PinType to a string - /// - /// type of the Pin - /// PinType as string + /// Method convert PinType to a string. + /// Stubbfel, 14.10.2013. + /// type of the Pin. + /// PinType as string. public static string PinTypeToString(PinType type) { string result = null; diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/SearchPlacePinModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/SearchPlacePinModel.cs index aec1cd5b..252be325 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/SearchPlacePinModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/SearchPlacePinModel.cs @@ -1,17 +1,18 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 27.08.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 14.10.2013 +// Implements the search place pin model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Campusmap { using CampusAppWP8.Resources; - /// Search pin place model. - /// Stubbfel, 27.08.2013. + /// Search pin place model. + /// Stubbfel, 27.08.2013. + /// public class SearchPlacePinModel : ClickAblePlacePinModel { #region Constructor @@ -19,7 +20,7 @@ namespace CampusAppWP8.Model.Campusmap /// /// Initializes a new instance of the class. /// - /// Stubbfel, 27.08.2013. + /// Stubbfel, 27.08.2013. public SearchPlacePinModel() { this.ImageSource = Icons.SearchPlace; diff --git a/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml.cs index 8a9b7ab1..2777809c 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml.cs @@ -738,7 +738,7 @@ namespace CampusAppWP8.Pages.Campusmap } else { - this.ClearMap(new List() { MapPinModel.CurrendPositionPlacePinString }); + this.ClearMap(new List() { MapPinModel.CurrentPositionPlacePinString }); this.SetPinToPosition(lat, log, MapPinModel.PinType.CurrentPosition, scroll); } } diff --git a/CampusAppWP8/CampusAppWP8/Settings.StyleCop b/CampusAppWP8/CampusAppWP8/Settings.StyleCop index bf58560e..acb474fe 100644 --- a/CampusAppWP8/CampusAppWP8/Settings.StyleCop +++ b/CampusAppWP8/CampusAppWP8/Settings.StyleCop @@ -22,6 +22,7 @@ sps Stubbfel uni + wc wifi diff --git a/Doc/atominnerSettings/PrefSets.xml b/Doc/atominnerSettings/PrefSets.xml index 3fd3a41c..e40fd996 100644 --- a/Doc/atominnerSettings/PrefSets.xml +++ b/Doc/atominnerSettings/PrefSets.xml @@ -19,7 +19,7 @@ - + @@ -95,7 +95,7 @@ - + From 354bbfc2e42ac87f593686ef3eecf2003791d6a2 Mon Sep 17 00:00:00 2001 From: stubbfel Date: Tue, 15 Oct 2013 11:28:01 +0200 Subject: [PATCH 4/9] refactor all model --- CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj | 1 + .../CampusAppWP8/Model/BinaryModel.cs | 47 +++--- .../Model/Exams/ExamListWp8Model.cs | 14 +- .../CampusAppWP8/Model/Exams/ExamWp8Model.cs | 18 ++- .../Model/GeoDb/CampusBuildingLayerModel.cs | 34 ++-- .../Model/GeoDb/CampusBuildingModel.cs | 47 +++--- .../Model/GeoDb/PlaceInformation.cs | 30 ++-- .../CampusAppWP8/Model/GeoDb/PlaceModel.cs | 97 ++++++----- .../CampusAppWP8/Model/GeoDb/PlaceService.cs | 41 ++--- .../CampusAppWP8/Model/GeoDb/SpsModel.cs | 105 ++++++------ .../Model/Lecture/LecturePageModel.cs | 151 +++++++----------- .../Model/Lecture/LectureWp8Activity.cs | 34 ++-- .../Model/Lecture/LectureWp8List.cs | 24 +-- CampusAppWP8/CampusAppWP8/Model/MainModel.cs | 112 ++++++------- .../Model/Person/PersonFunctionWp8Model.cs | 28 ++-- .../Model/Person/PersonListWp8Model.cs | 38 ++--- .../Model/Person/PersonWp8Model.cs | 28 ++-- .../CampusAppWP8/Model/Setting/AppSettings.cs | 59 +++---- .../Model/Setting/BTUTagHandlerTypes.cs | 21 +++ .../TagHandlerListPickerItemListModel.cs | 29 ++-- .../Model/Setting/UserProfilModel.cs | 69 ++++---- .../CourseListPickerItemListWp8Model.cs | 55 ++++--- CampusAppWP8/CampusAppWP8/Model/XmlModel.cs | 60 ++++--- .../Pages/Setting/AppSettingPage.xaml | 2 +- 24 files changed, 551 insertions(+), 593 deletions(-) create mode 100644 CampusAppWP8/CampusAppWP8/Model/Setting/BTUTagHandlerTypes.cs diff --git a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj index b87004b2..1f098b7d 100644 --- a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj +++ b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj @@ -138,6 +138,7 @@ + diff --git a/CampusAppWP8/CampusAppWP8/Model/BinaryModel.cs b/CampusAppWP8/CampusAppWP8/Model/BinaryModel.cs index bcb8b39b..f98219f1 100644 --- a/CampusAppWP8/CampusAppWP8/Model/BinaryModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/BinaryModel.cs @@ -1,35 +1,36 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 03.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the binary model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model { using CampusAppWPortalLib8.Model; - /// Binary model. - /// Stubbfel, 03.09.2013. + /// Binary model. + /// Stubbfel, 03.09.2013. + /// public abstract class BinaryModel : MainModel { #region Constructor - /// Initializes a new instance of the BinaryModel class. - /// Stubbfel, 03.09.2013. - /// Type of the model. - /// Filename of the file. - /// URL of the document. + /// Initializes a new instance of the BinaryModel class. + /// Stubbfel, 03.09.2013. + /// Type of the model. + /// Filename of the file. + /// URL of the document. public BinaryModel(ModelType modelType, string fileName, string url) : base(modelType, fileName, url) { } - /// Initializes a new instance of the BinaryModel class. - /// Stubbfel, 03.09.2013. - /// Type of the model. - /// Name of the source. + /// Initializes a new instance of the BinaryModel class. + /// Stubbfel, 03.09.2013. + /// Type of the model. + /// Name of the source. public BinaryModel(ModelType modelType, string sourceName) : base(modelType, sourceName) { @@ -39,10 +40,10 @@ namespace CampusAppWP8.Model #region Method - /// Deserialize model. - /// Stubbfel, 03.09.2013. - /// Information describing the model. - /// true if it succeeds, false if it fails. + /// Deserialize model. + /// Stubbfel, 03.09.2013. + /// Information describing the model. + /// true if it succeeds, false if it fails. protected override bool DeserializeModel(byte[] modelData) { bool retValue = true; @@ -59,9 +60,9 @@ namespace CampusAppWP8.Model return retValue; } - /// Gets the serialize model. - /// Stubbfel, 03.09.2013. - /// an byte Array. + /// Gets the serialize model. + /// Stubbfel, 03.09.2013. + /// an byte Array. protected override byte[] SerializeModel() { return this.Model; diff --git a/CampusAppWP8/CampusAppWP8/Model/Exams/ExamListWp8Model.cs b/CampusAppWP8/CampusAppWP8/Model/Exams/ExamListWp8Model.cs index 0e112c99..c7c4c200 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Exams/ExamListWp8Model.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Exams/ExamListWp8Model.cs @@ -1,16 +1,18 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 02.09.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the exam list wp 8 model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Exams { using System.Xml.Serialization; - /// Exam list model. - /// Stubbfel, 02.09.2013. + /// Exam list model. + /// Stubbfel, 02.09.2013. + /// [XmlRoot("links")] public class ExamListWp8Model : CampusAppWPortalLib8.Model.Exams.ExamListModel { diff --git a/CampusAppWP8/CampusAppWP8/Model/Exams/ExamWp8Model.cs b/CampusAppWP8/CampusAppWP8/Model/Exams/ExamWp8Model.cs index f0d89d4e..b48bb444 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Exams/ExamWp8Model.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Exams/ExamWp8Model.cs @@ -1,22 +1,24 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 02.09.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the exam wp 8 model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Exams { using CampusAppWP8.Utility; - /// Exam model. - /// Stubbfel, 02.09.2013. + /// Exam model. + /// Stubbfel, 02.09.2013. + /// public class ExamWp8Model : CampusAppWPortalLib8.Model.Exams.ExamModel { #region Property - /// Gets the caption. - /// The caption. + /// Gets the caption of the exam. + /// The caption. public string Caption { get diff --git a/CampusAppWP8/CampusAppWP8/Model/GeoDb/CampusBuildingLayerModel.cs b/CampusAppWP8/CampusAppWP8/Model/GeoDb/CampusBuildingLayerModel.cs index 32307073..d55db74c 100644 --- a/CampusAppWP8/CampusAppWP8/Model/GeoDb/CampusBuildingLayerModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/GeoDb/CampusBuildingLayerModel.cs @@ -1,28 +1,28 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 23.09.2013 -//----------------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the campus building layer model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.GeoDb { using System.Collections.Generic; using CampusAppWP8.Resources; - /// - /// Class is model for buildings of a campus - /// + /// Class is model for buildings of a campus. + /// Stubbfel, 15.10.2013. public class CampusBuildingLayerModel { #region Constructor /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// id of the layer - /// list of place which can be room of the layer + /// Stubbfel, 15.10.2013. + /// id of the layer. + /// list of place which can be room of the layer. public CampusBuildingLayerModel(string layerId, List places) { this.LayerId = layerId; @@ -42,14 +42,12 @@ namespace CampusAppWP8.Model.GeoDb #region property - /// - /// Gets or sets Rooms - /// + /// Gets or sets Rooms. + /// The rooms. public SpsModel Rooms { get; set; } - /// - /// Gets or sets LayerId - /// + /// Gets or sets LayerId. + /// The identifier of the layer. public string LayerId { get; set; } #endregion diff --git a/CampusAppWP8/CampusAppWP8/Model/GeoDb/CampusBuildingModel.cs b/CampusAppWP8/CampusAppWP8/Model/GeoDb/CampusBuildingModel.cs index cbee3c67..05da5f80 100644 --- a/CampusAppWP8/CampusAppWP8/Model/GeoDb/CampusBuildingModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/GeoDb/CampusBuildingModel.cs @@ -1,28 +1,28 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 23.09.2013 -//----------------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the campus building model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.GeoDb { using System.Collections.Generic; using CampusAppWP8.Resources; - /// - /// Class is model for buildings of a campus - /// + /// Class is model for buildings of a campus. + /// Stubbfel, 15.10.2013. public class CampusBuildingModel { #region constructor /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// id of the building - /// list of place which can be room of the buildings + /// Stubbfel, 15.10.2013. + /// id of the building. + /// list of place which can be room of the buildings. public CampusBuildingModel(string buildingId, List places) { this.Layers = new Dictionary(); @@ -57,25 +57,22 @@ namespace CampusAppWP8.Model.GeoDb #region Property - /// - /// Gets the Layer of the building - /// + /// Gets the Layer of the building. + /// The layers. public Dictionary Layers { get; private set; } - /// - /// Gets or sets the Building PlaceModel - /// + /// Gets or sets the Building PlaceModel. + /// The building. public PlaceModel Building { get; set; } #endregion #region method - /// - /// Method gets a place by their placeID - /// - /// the placeId of the place - /// The place by identifier. + /// Method gets a place by their placeID. + /// Stubbfel, 15.10.2013. + /// the placeId of the place. + /// The place by identifier. public PlaceModel GetPlaceById(string placeID) { PlaceModel result = null; @@ -91,6 +88,10 @@ namespace CampusAppWP8.Model.GeoDb return result; } + /// Gets layer key. + /// Stubbfel, 15.10.2013. + /// Identifier for the place. + /// The layer key. public string GetLayerKey(string placeId) { PlaceModel tmpPlace = null; diff --git a/CampusAppWP8/CampusAppWP8/Model/GeoDb/PlaceInformation.cs b/CampusAppWP8/CampusAppWP8/Model/GeoDb/PlaceInformation.cs index d504afd3..4882a456 100644 --- a/CampusAppWP8/CampusAppWP8/Model/GeoDb/PlaceInformation.cs +++ b/CampusAppWP8/CampusAppWP8/Model/GeoDb/PlaceInformation.cs @@ -1,28 +1,30 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 19.08.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the place information class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.GeoDb { using System; using System.Xml.Serialization; - /// Information about the place. - /// Stubbfel, 19.08.2013. + /// Information about the place. + /// Stubbfel, 19.08.2013. + /// public class PlaceInformation : IEquatable { #region Property - /// Gets or sets the name of the information. - /// The name of the information. + /// Gets or sets the name of the information. + /// The name of the information. [XmlAttribute("placeInformationName")] public string InformationName { get; set; } - /// Gets or sets the information value. - /// The information value. + /// Gets or sets the information value. + /// The information value. [XmlText] public string InformationValue { get; set; } @@ -30,10 +32,10 @@ namespace CampusAppWP8.Model.GeoDb #region Method - /// Tests if this PlaceInformation is considered equal to another. - /// Stubbfel, 09.09.2013. - /// The place information to compare to this object. - /// true if the objects are considered equal, false if they are not. + /// Tests if this PlaceInformation is considered equal to another. + /// Stubbfel, 09.09.2013. + /// The place information to compare to this object. + /// true if the objects are considered equal, false if they are not. public bool Equals(PlaceInformation other) { if (other.InformationName.Equals(this.InformationName)) diff --git a/CampusAppWP8/CampusAppWP8/Model/GeoDb/PlaceModel.cs b/CampusAppWP8/CampusAppWP8/Model/GeoDb/PlaceModel.cs index 03e8661d..f6b29595 100644 --- a/CampusAppWP8/CampusAppWP8/Model/GeoDb/PlaceModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/GeoDb/PlaceModel.cs @@ -1,11 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 08.08.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the place model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.GeoDb { using System; @@ -18,33 +18,30 @@ namespace CampusAppWP8.Model.GeoDb using CampusAppWP8.Resources; using CampusAppWPortalLib8.Utility; - /// - /// Model for a place of the SPSService - /// + /// Model for a place of the SPSService. + /// Stubbfel, 15.10.2013. + /// public class PlaceModel : IEquatable { #region Property - /// - /// Gets or sets the placeId - /// + /// Gets or sets the placeId. + /// The identifier of the place. [XmlAttribute("id")] public string PlaceId { get; set; } - /// - /// Gets or sets the id of the "parent" of a place - /// + /// Gets or sets the id of the "parent" of a place. + /// The identifier of the parent. [XmlAttribute("parentId")] public string ParentId { get; set; } - /// - /// Gets or sets the ReferencePoint of a place - /// + /// Gets or sets the ReferencePoint of a place. + /// The reference point. [XmlAttribute("refpoint")] public string RefPoint { get; set; } - /// Gets the geo reference point. - /// The geo reference point. + /// Gets the geo reference point. + /// The geo reference point. public GeoCoordinate GeoRefPoint { get @@ -77,38 +74,39 @@ namespace CampusAppWP8.Model.GeoDb } } - /// Gets or sets the information. - /// The information. + /// Gets or sets the information. + /// The information. [XmlElement("placeInformation")] public ObservableCollection Informations { get; set; } - /// Gets or sets the services. - /// The services. + /// Gets or sets the services. + /// The services. [XmlElement("placeService")] public ObservableCollection Services { get; set; } /// - /// Gets or sets a string, which is the caption of the place (e.g. for contents of UIElements) + /// Gets or sets a string, which is the caption of the place (e.g. for contents of UIElements) /// + /// The caption. public string Caption { get; set; } #endregion #region Method - /// Converts this object to a nfc string. - /// Stubbfel, 21.08.2013. - /// This object as a string. + /// Converts this object to a nfc string. + /// Stubbfel, 21.08.2013. + /// This object as a string. public string ToNfcString() { string nfcStr = "{\n\"url\":\"http://www.tu-cottbus.de/campusapp\",\n\"pid\":\"" + this.PlaceId + "\",\n\"parent\":\"" + this.ParentId + "\"\n}"; return nfcStr; } - /// Tests if this PlaceModel is considered equal to another. - /// Stubbfel, 09.09.2013. - /// The place model to compare to this object. - /// true if the objects are considered equal, false if they are not. + /// Tests if this PlaceModel is considered equal to another. + /// Stubbfel, 09.09.2013. + /// The place model to compare to this object. + /// true if the objects are considered equal, false if they are not. public bool Equals(PlaceModel other) { if (other.PlaceId.Equals(this.PlaceId)) @@ -119,9 +117,9 @@ namespace CampusAppWP8.Model.GeoDb return false; } - /// Adds a place information. - /// Stubbfel, 09.09.2013. - /// The place information. + /// Adds a place information. + /// Stubbfel, 09.09.2013. + /// The place information. public void AddPlaceInformations(List placeInformations) { foreach (PlaceInformation info in placeInformations) @@ -138,9 +136,9 @@ namespace CampusAppWP8.Model.GeoDb } } - /// Adds a place services. - /// Stubbfel, 09.09.2013. - /// The place services. + /// Adds a place services. + /// Stubbfel, 09.09.2013. + /// The place services. public void AddPlaceServices(List placeServices) { foreach (PlaceService service in placeServices) @@ -158,10 +156,10 @@ namespace CampusAppWP8.Model.GeoDb } } - /// Query if 'names' contains information names. - /// Stubbfel, 09.09.2013. - /// The names. - /// true if it succeeds, false if it fails. + /// Query if 'names' contains information names. + /// Stubbfel, 09.09.2013. + /// The names. + /// true if it succeeds, false if it fails. public bool ContainsInformationNames(List names) { foreach (string name in names) @@ -185,10 +183,10 @@ namespace CampusAppWP8.Model.GeoDb return true; } - /// Query if 'services' contains service names. - /// Stubbfel, 09.09.2013. - /// The services. - /// true if it succeeds, false if it fails. + /// Query if 'services' contains service names. + /// Stubbfel, 09.09.2013. + /// The services. + /// true if it succeeds, false if it fails. public bool ContainsServiceNames(List services) { foreach (string name in services) @@ -212,11 +210,10 @@ namespace CampusAppWP8.Model.GeoDb return true; } - /// - /// Method gets the InformationValue of a certain InformationName - /// - /// string for InformationName - /// value of the information + /// Method gets the InformationValue of a certain InformationName. + /// Stubbfel, 15.10.2013. + /// string for InformationName. + /// value of the information. public string GetInformationsValue(string key) { foreach (PlaceInformation info in this.Informations) diff --git a/CampusAppWP8/CampusAppWP8/Model/GeoDb/PlaceService.cs b/CampusAppWP8/CampusAppWP8/Model/GeoDb/PlaceService.cs index 9f318365..a4d00deb 100644 --- a/CampusAppWP8/CampusAppWP8/Model/GeoDb/PlaceService.cs +++ b/CampusAppWP8/CampusAppWP8/Model/GeoDb/PlaceService.cs @@ -1,34 +1,35 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 19.08.2013 -//----------------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the place service class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.GeoDb { using System; using System.Xml.Serialization; - /// Place service. - /// Stubbfel, 19.08.2013. + /// Place service. + /// Stubbfel, 19.08.2013. + /// public class PlaceService : IEquatable { #region Property - /// Gets or sets the name of the service. - /// The name of the service. + /// Gets or sets the name of the service. + /// The name of the service. [XmlAttribute("placeServiceName")] public string ServiceName { get; set; } - /// Gets or sets the SAP of an service. - /// The sap. + /// Gets or sets the SAP of an service. + /// The sap. [XmlElement("sap")] public string SAP { get; set; } - /// Gets or sets the request for a place. - /// The request. + /// Gets or sets the request for a place. + /// The request. [XmlElement("request")] public string Request { get; set; } @@ -36,8 +37,8 @@ namespace CampusAppWP8.Model.GeoDb #region Method - /// Gets the URL string. - /// The URL string. + /// Gets the URL string. + /// The URL string. public string URLString { get @@ -46,10 +47,10 @@ namespace CampusAppWP8.Model.GeoDb } } - /// Tests if this PlaceService is considered equal to another. - /// Stubbfel, 09.09.2013. - /// The place service to compare to this object. - /// true if the objects are considered equal, false if they are not. + /// Tests if this PlaceService is considered equal to another. + /// Stubbfel, 09.09.2013. + /// The place service to compare to this object. + /// true if the objects are considered equal, false if they are not. public bool Equals(PlaceService other) { if (other.ServiceName.Equals(this.ServiceName)) diff --git a/CampusAppWP8/CampusAppWP8/Model/GeoDb/SpsModel.cs b/CampusAppWP8/CampusAppWP8/Model/GeoDb/SpsModel.cs index 4982eeb3..00219adc 100644 --- a/CampusAppWP8/CampusAppWP8/Model/GeoDb/SpsModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/GeoDb/SpsModel.cs @@ -1,11 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 08.08.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the sps model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.GeoDb { using System.Collections.Generic; @@ -13,16 +13,15 @@ namespace CampusAppWP8.Model.GeoDb using System.Linq; using System.Xml.Serialization; - /// - /// Model for a xml-response of the SPSService - /// + /// Model for a xml-response of the SPSService. + /// Stubbfel, 15.10.2013. [XmlRoot("root")] public class SpsModel { #region Constructor - /// Initializes a new instance of the SpsModel class. - /// Stubbfel, 20.08.2013. + /// Initializes a new instance of the SpsModel class. + /// Stubbfel, 20.08.2013. public SpsModel() { this.HasChanged = false; @@ -33,14 +32,13 @@ namespace CampusAppWP8.Model.GeoDb #region Property - /// - /// Gets or sets a list of places - /// + /// Gets or sets a list of places. + /// The places. [XmlElement("place")] public ObservableCollection Places { get; set; } - /// Gets or sets a value indicating whether this object has changed. - /// true if this object has changed, false if not. + /// Gets or sets a value indicating whether this object has changed. + /// true if this object has changed, false if not. public bool HasChanged { get; set; } #endregion @@ -48,13 +46,13 @@ namespace CampusAppWP8.Model.GeoDb #region Method #region public - - /// Gets places by information. - /// Stubbfel, 19.08.2013. - /// The query. - /// (Optional) the ignore cases. - /// (Optional) name of the information. - /// The places by information. + + /// Gets places by information. + /// Stubbfel, 19.08.2013. + /// The query. + /// (Optional) the ignore cases. + /// (Optional) name of the information. + /// The places by information. public List GetPlacesByInformation(string query, bool ignoreCases = true, List informationNames = null) { string querryStr = string.Empty; @@ -71,9 +69,9 @@ namespace CampusAppWP8.Model.GeoDb return resultplaces; } - /// Adds the places. - /// Stubbfel, 09.09.2013. - /// A list of places. + /// Adds the places. + /// Stubbfel, 09.09.2013. + /// A list of places. public void AddPlaces(List places) { foreach (PlaceModel place in places) @@ -93,9 +91,9 @@ namespace CampusAppWP8.Model.GeoDb this.HasChanged = true; } - /// Creates PID list. - /// Stubbfel, 09.09.2013. - /// The new PID list. + /// Creates PID list. + /// Stubbfel, 09.09.2013. + /// The new PID list. public List CreatePidList() { List pidList = new List(); @@ -107,10 +105,10 @@ namespace CampusAppWP8.Model.GeoDb return pidList; } - /// Gets place by identifier. - /// Stubbfel, 09.09.2013. - /// The identifier. - /// The place by identifier. + /// Gets place by identifier. + /// Stubbfel, 09.09.2013. + /// The identifier. + /// The place by identifier. public PlaceModel GetPlaceById(string id) { foreach (PlaceModel place in this.Places) @@ -124,11 +122,11 @@ namespace CampusAppWP8.Model.GeoDb return null; } - /// Query if 'pidList' contains information names. - /// Stubbfel, 09.09.2013. - /// List of pids. - /// The names. - /// true if it succeeds, false if it fails. + /// Query if 'pidList' contains information names. + /// Stubbfel, 09.09.2013. + /// List of pids. + /// The names. + /// true if it succeeds, false if it fails. public bool ContainsInformationNames(List pidList, List names) { foreach (string pid in pidList) @@ -143,11 +141,11 @@ namespace CampusAppWP8.Model.GeoDb return true; } - /// Query if 'pidList' contains service names. - /// Stubbfel, 09.09.2013. - /// List of pids. - /// The names. - /// true if it succeeds, false if it fails. + /// Query if 'pidList' contains service names. + /// Stubbfel, 09.09.2013. + /// List of pids. + /// The names. + /// true if it succeeds, false if it fails. public bool ContainsServiceNames(List pidList, List names) { foreach (string pid in pidList) @@ -162,10 +160,10 @@ namespace CampusAppWP8.Model.GeoDb return true; } - /// Filter by PID. - /// Stubbfel, 11.09.2013. - /// List of pids. - /// filtered list of places. + /// Filter by PID. + /// Stubbfel, 11.09.2013. + /// List of pids. + /// filtered list of places. public List FilterByPid(List pidList) { List fitlerList = new List(); @@ -190,14 +188,13 @@ namespace CampusAppWP8.Model.GeoDb #region private - /// - /// Method check if a certain place matched by query string - /// - /// the Place - /// the Query - /// (Optional) the ignore cases. - /// (Optional) name of the information. - /// true if it match otherwise false + /// Method check if a certain place matched by query string. + /// Stubbfel, 15.10.2013. + /// the Place. + /// the Query. + /// (Optional) the ignore cases. + /// (Optional) name of the information. + /// true if it match otherwise false. private bool IsPlaceQueryMatched(PlaceModel place, string query, bool ignoreCases = true, List informationNames = null) { string queryString = query; diff --git a/CampusAppWP8/CampusAppWP8/Model/Lecture/LecturePageModel.cs b/CampusAppWP8/CampusAppWP8/Model/Lecture/LecturePageModel.cs index 6afc7a82..62d7e7be 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Lecture/LecturePageModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Lecture/LecturePageModel.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 18.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the lecture page model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Lecture { using System.Runtime.Serialization; @@ -12,79 +13,54 @@ namespace CampusAppWP8.Model.Lecture using CampusAppWP8.Model.Utility; using CampusAppWPortalLib8.Model.Utility; - /// - /// Model for the LecturePage - /// + /// Model for the LecturePage. + /// Stubbfel, 15.10.2013. [DataContract] public class LecturePageModel { #region Members - /// - /// Variable for the courseIndex - /// + /// Variable for the courseIndex. [DataMember] public int selectCourseIndex; - /// - /// Variable for the degreeIndex - /// + /// Variable for the degreeIndex. [DataMember] public int selectDegreeIndex; - /// - /// Variable for the semesterIndex - /// + /// Variable for the semesterIndex. [DataMember] public int selectSemesterIndex; - /// - /// Variable for the fromIndex - /// + /// Variable for the fromIndex. [DataMember] public int selectFromIndex; - /// - /// Variable for the toIndex - /// + /// Variable for the toIndex. [DataMember] public int selectToIndex; - /// - /// List for the courses of the BTU - /// - /// - /// need to be extend to full list - /// + /// List for the courses of the BTU. private CourseListPickerItemListWp8Model courseList; - /// - /// List of the degrees - /// + /// List of the degrees. private ListPickerItemListModel degreeList; - /// - /// List of the semester - /// + /// List of the semester. private ListPickerItemListModel semesterList; - /// - /// List for the number of semester (from) - /// + /// List for the number of semester (from) private ListPickerItemListModel fromNumberList; - /// - /// List for the number of semester (to) - /// + /// List for the number of semester (to) private ListPickerItemListModel toNumberList; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public LecturePageModel() { } @@ -92,23 +68,19 @@ namespace CampusAppWP8.Model.Lecture #region events - /// - /// Delegate of the OnIO callback function. - /// + /// Delegate of the OnIO callback function. + /// Stubbfel, 15.10.2013. public delegate void OnIO(); - /// - /// Callback pointer, called after loading. - /// + /// Callback pointer, called after loading. public event OnIO OnLoaded = null; #endregion #region Proberty - /// - /// Gets or sets the selected course index - /// + /// Gets or sets the selected course index. + /// The select course index. public int SelectCourseIndex { get @@ -125,9 +97,8 @@ namespace CampusAppWP8.Model.Lecture } } - /// - /// Gets or sets the selected degree index - /// + /// Gets or sets the selected degree index. + /// The select degree index. public int SelectDegreeIndex { get @@ -144,9 +115,8 @@ namespace CampusAppWP8.Model.Lecture } } - /// - /// Gets or sets the selected semester-index - /// + /// Gets or sets the selected semester-index. + /// The select semester index. public int SelectSemesterIndex { get @@ -163,9 +133,8 @@ namespace CampusAppWP8.Model.Lecture } } - /// - /// Gets or sets the selected from-index - /// + /// Gets or sets the selected from-index. + /// The select from index. public int SelectFromIndex { get @@ -182,9 +151,8 @@ namespace CampusAppWP8.Model.Lecture } } - /// - /// Gets or sets the selected to-index - /// + /// Gets or sets the selected to-index. + /// The select to index. public int SelectToIndex { get @@ -201,9 +169,8 @@ namespace CampusAppWP8.Model.Lecture } } - /// - /// Gets List for the courses of the BTU - /// + /// Gets List for the courses of the BTU. + /// A List of courses. public ListPickerItemListModel CourseList { get @@ -212,9 +179,8 @@ namespace CampusAppWP8.Model.Lecture } } - /// - /// Gets List of the degrees - /// + /// Gets List of the degrees. + /// A List of degrees. public ListPickerItemListModel DegreeList { get @@ -223,9 +189,8 @@ namespace CampusAppWP8.Model.Lecture } } - /// - /// Gets List of the semester - /// + /// Gets List of the semester. + /// A List of semesters. public ListPickerItemListModel SemesterList { get @@ -234,9 +199,8 @@ namespace CampusAppWP8.Model.Lecture } } - /// - /// Gets List for the number of semester - /// + /// Gets List for the number of semester (from). + /// A List of from numbers. public ListPickerItemListModel FromNumberList { get @@ -245,9 +209,8 @@ namespace CampusAppWP8.Model.Lecture } } - /// - /// Gets the NumberList - /// + /// Gets List for the number of semester (to). + /// A List of to numbers. public ListPickerItemListModel ToNumberList { get @@ -261,9 +224,8 @@ namespace CampusAppWP8.Model.Lecture #region public - /// - /// Load all ListPickerLists - /// + /// Load all ListPickerLists. + /// Stubbfel, 15.10.2013. public void LoadLists() { this.courseList = new CourseListPickerItemListWp8Model(); @@ -271,9 +233,8 @@ namespace CampusAppWP8.Model.Lecture this.courseList.LoadCourseList(); } - /// - /// Load the NumberList - /// + /// Load the NumberList. + /// Stubbfel, 15.10.2013. public void LoadFromNumberList() { string selectValue = null; @@ -286,9 +247,8 @@ namespace CampusAppWP8.Model.Lecture this.SelectFromIndex = this.fromNumberList.GetIndexOrDefault(selectValue); } - /// - /// Load the NumberList - /// + /// Load the NumberList. + /// Stubbfel, 15.10.2013. public void LoadToNumberList() { string selectValue = null; @@ -305,8 +265,8 @@ namespace CampusAppWP8.Model.Lecture #region private - /// Course list is ready. - /// Stubbfel, 10.09.2013. + /// Course list is ready. + /// Stubbfel, 10.09.2013. private void CourseListIsReady() { this.degreeList = new DegreeListPickerItemListModel(); @@ -324,12 +284,11 @@ namespace CampusAppWP8.Model.Lecture } } - /// - /// Method create a NumberList - /// - /// startValue of the list - /// endValue of the list - /// return list + /// Method create a NumberList. + /// Stubbfel, 15.10.2013. + /// startValue of the list. + /// endValue of the list. + /// return list. private ListPickerItemListModel CreateNumberList(int startvalue, int endvalue) { ListPickerItemListModel list = new ListPickerItemListModel(); diff --git a/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureWp8Activity.cs b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureWp8Activity.cs index a0a3eb0e..cef0c89e 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureWp8Activity.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureWp8Activity.cs @@ -1,33 +1,34 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 13.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the lecture wp 8 activity class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Lecture { + using System.Xml.Serialization; using CampusAppWP8.Resources; using CampusAppWP8.Utility; - using CampusAppWPortalLib8.Model.Lecture; - using System.Xml.Serialization; + using CampusAppWPortalLib8.Model.Lecture; - /// - /// Model for a Activity - /// + /// Model for a Activity. + /// Stubbfel, 15.10.2013. + /// public class LectureWp8Activity : LectureActivity { #region Members - /// URL of the icon. + /// URL of the icon. private string iconUrl; #endregion #region Proberty - /// Gets URL of the icon. - /// The icon URL. + /// Gets URL of the icon. + /// The icon URL. public string IconUrl { get @@ -37,9 +38,8 @@ namespace CampusAppWP8.Model.Lecture } } - /// - /// Gets or sets the topic of the Lecture - /// + /// Gets or sets the topic of the Lecture. + /// The topic. [XmlElement("lehrinhalt")] public new string Topic { @@ -62,8 +62,8 @@ namespace CampusAppWP8.Model.Lecture #region private - /// Creates icon URL. - /// Stubbfel, 12.09.2013. + /// Creates icon URL. + /// Stubbfel, 12.09.2013. private void CreateIconUrl() { string typeStr = this.Type; diff --git a/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureWp8List.cs b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureWp8List.cs index a2ca637d..92fa8c2e 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureWp8List.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureWp8List.cs @@ -1,28 +1,28 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 10.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the lecture wp 8 list class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Lecture { using System.Linq; using System.Xml.Serialization; - /// - /// Model for a List of LectureActivity - /// + /// Model for a List of LectureActivity. + /// Stubbfel, 15.10.2013. + /// [XmlRoot("lsf_auszug")] public class LectureWp8List : CampusAppWPortalLib8.Model.Lecture.LectureList { #region Methods - /// - /// Method return a certain activity - /// - /// id of the activity - /// the activity (FirstOrDefault) + /// Method return a certain activity. + /// Stubbfel, 15.10.2013. + /// id of the activity. + /// the activity (FirstOrDefault) public new LectureWp8Activity GetActivity(int id) { LectureWp8Activity activity = this.Activities.Where(p => p.Id == id).FirstOrDefault(); diff --git a/CampusAppWP8/CampusAppWP8/Model/MainModel.cs b/CampusAppWP8/CampusAppWP8/Model/MainModel.cs index 74abbcac..cbbc9b8a 100644 --- a/CampusAppWP8/CampusAppWP8/Model/MainModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/MainModel.cs @@ -1,10 +1,11 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 05.07.2013 -//----------------------------------------------------------------------------- +// 15.10.2013 +// Implements the main model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model { using System; @@ -13,30 +14,27 @@ namespace CampusAppWP8.Model using CampusAppWP8.Utility; using CampusAppWPortalLib8.Model; - /// - /// Base model io handling class. - /// - /// model type + /// Base model io handling class. + /// fiedlchr, 15.10.2013. + /// public abstract class MainModel : AbstractMainModel { #region Constructor - /// - /// Initializes a new instance of the class. - /// - /// Model IO type - /// name of the file - /// url of the feed + /// Initializes a new instance of the class. + /// fiedlchr, 15.10.2013. + /// Model IO type. + /// name of the file. + /// url of the feed. public MainModel(ModelType modelType, string fileName, string url) : base(modelType, fileName, url) { } - /// - /// Initializes a new instance of the class. - /// - /// Model IO type - /// name of the file or the url of the feed + /// Initializes a new instance of the class. + /// fiedlchr, 15.10.2013. + /// Model IO type. + /// name of the file or the url of the feed. public MainModel(ModelType modelType, string sourceName) : base(modelType, sourceName) { @@ -46,31 +44,25 @@ namespace CampusAppWP8.Model #region Events - /// - /// Delegate of the IsFileUpToDate callback function. - /// - /// data model - /// info of the file - /// true, is file is up to date + /// Delegate of the IsFileUpToDate callback function. + /// fiedlchr, 15.10.2013. + /// data model. + /// info of the file. + /// true, is file is up to date. public delegate bool IsFileUpToDate(T model, FileInfo fileInfo); - /// - /// Callback pointer, for checking if file is up to date at loading. - /// + /// Callback pointer, for checking if file is up to date at loading. public event IsFileUpToDate IsFileUpToDateOnLoad = null; - /// - /// Callback pointer, for checking if file is up to date at saving. - /// + /// Callback pointer, for checking if file is up to date at saving. public event IsFileUpToDate IsFileUpToDateOnSave = null; #endregion #region property - /// - /// Gets or sets the file - /// + /// Gets the file. + /// The file. public new CampusAppWP8.Utility.File File { get @@ -84,9 +76,8 @@ namespace CampusAppWP8.Model } } - /// - /// Gets or sets the api - /// + /// Gets the api. + /// The API. public new HttpRequest Api { get @@ -105,36 +96,32 @@ namespace CampusAppWP8.Model #region protected - /// - /// Method overrides the base CheckLoadFileIsNotUpToDate Method - /// - /// true if it is not up-to-date, otherwise false + /// Method overrides the base CheckLoadFileIsNotUpToDate Method. + /// fiedlchr, 15.10.2013. + /// true if it is not up-to-date, otherwise false. protected override bool CheckLoadFileIsNotUpToDate() { return this.CheckIsNotUpToDate(this.IsFileUpToDateOnLoad); } - /// - /// Method overrides the base CheckSaveFileIsNotUpToDate Method - /// - /// true if it is not up-to-date, otherwise false + /// Method overrides the base CheckSaveFileIsNotUpToDate Method. + /// fiedlchr, 15.10.2013. + /// true if it is not up-to-date, otherwise false. protected override bool CheckSaveFileIsNotUpToDate() { return this.CheckIsNotUpToDate(this.IsFileUpToDateOnSave); } - /// - /// Method overrides the base SendHttpGet Method - /// - /// the url + /// Method overrides the base SendHttpGet Method. + /// fiedlchr, 15.10.2013. + /// the url. protected override void SendHttpGet(Uri url) { ((HttpRequest)this.Api).HttpGet(url, this.OnLoadDataComplete); } - /// - /// Initializes the file object. - /// + /// Initializes the file object. + /// fiedlchr, 15.10.2013. protected override void InitFile() { if ((this.IsFile() == true) @@ -144,9 +131,8 @@ namespace CampusAppWP8.Model } } - /// - /// Initializes the web object. - /// + /// Initializes the web object. + /// fiedlchr, 15.10.2013. protected override void InitHttpApi() { if ((this.IsHttpApi() == true) @@ -156,9 +142,10 @@ namespace CampusAppWP8.Model } } - /// Check if model or file is not up to date. - /// The check function. - /// true if model or file is not up to date, false if it is. + /// Check if model or file is not up to date. + /// fiedlchr, 15.10.2013. + /// The check function. + /// true if model or file is not up to date, false if it is. protected override bool CheckIsNotUpToDate(object checkFunc) { bool retValue = false; @@ -189,11 +176,10 @@ namespace CampusAppWP8.Model #region private - /// - /// Is called after the loading from web is complete. - /// - /// sending object - /// event args + /// Is called after the loading from web is complete. + /// fiedlchr, 15.10.2013. + /// sending object. + /// event args. private void OnLoadDataComplete(object sender, OpenReadCompletedEventArgs e) { Exception downloadError = e.Error; diff --git a/CampusAppWP8/CampusAppWP8/Model/Person/PersonFunctionWp8Model.cs b/CampusAppWP8/CampusAppWP8/Model/Person/PersonFunctionWp8Model.cs index 944cf9e1..62eb6b32 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Person/PersonFunctionWp8Model.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Person/PersonFunctionWp8Model.cs @@ -1,23 +1,25 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 05.09.2013 -//----------------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the person function wp 8 model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Person { using System.Xml.Serialization; using CampusAppWP8.Utility; - /// Person function model. - /// Stubbfel, 05.09.2013. + /// Person function model. + /// Stubbfel, 05.09.2013. + /// public class PersonFunctionWp8Model : CampusAppWPortalLib8.Model.Person.PersonFunctionModel { #region Property - /// Gets or sets the function. - /// The function. + /// Gets or sets the function. + /// The function. [XmlAttribute("funktion")] public new string Function { @@ -35,8 +37,8 @@ namespace CampusAppWP8.Model.Person } } - /// Gets or sets the appointment. - /// The appointment. + /// Gets or sets the appointment. + /// The appointment. [XmlAttribute("einrichtung")] public new string Appointment { @@ -54,8 +56,8 @@ namespace CampusAppWP8.Model.Person } } - /// Gets or sets the building. - /// The building. + /// Gets or sets the building. + /// The building. [XmlAttribute("gebaeude")] public new string Building { diff --git a/CampusAppWP8/CampusAppWP8/Model/Person/PersonListWp8Model.cs b/CampusAppWP8/CampusAppWP8/Model/Person/PersonListWp8Model.cs index fe47181e..5e64ccdc 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Person/PersonListWp8Model.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Person/PersonListWp8Model.cs @@ -1,30 +1,27 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 05.09.2013 -//----------------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the person list wp 8 model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Person { using System.Xml.Serialization; using CampusAppWPortalLib8.Model.Person; using System.Collections.Generic; - /// Person list model. - /// Stubbfel, 05.09.2013. + /// Person list model. + /// Stubbfel, 05.09.2013. + /// [XmlRoot("Uebersicht")] public class PersonListWp8Model : CampusAppWPortalLib8.Model.Person.PersonListModel { - /// Gets a person. - /// Stubbfel, 05.09.2013. - /// The identifier. - /// The person. - /// Gets a person. - /// Stubbfel, 05.09.2013. - /// The identifier. - /// The person. + /// Gets a person. + /// Stubbfel, 15.10.2013. + /// The identifier. + /// The person. public override PersonWp8Model GetPerson(string id) { foreach (PersonWp8Model tmpPerson in this.Persons) @@ -38,9 +35,8 @@ namespace CampusAppWP8.Model.Person return null; } - - /// Removes the non function person. - /// Stubbfel, 05.09.2013. + /// Removes the non function person. + /// Stubbfel, 05.09.2013. public override void RemoveNonFunctionPerson() { List removeList = new List(); @@ -58,8 +54,8 @@ namespace CampusAppWP8.Model.Person } } - /// Sets person identifier to function. - /// Stubbfel, 05.09.2013. + /// Sets person identifier to function. + /// Stubbfel, 05.09.2013. public override void SetPersonIdToFunction() { foreach (PersonWp8Model person in this.Persons) diff --git a/CampusAppWP8/CampusAppWP8/Model/Person/PersonWp8Model.cs b/CampusAppWP8/CampusAppWP8/Model/Person/PersonWp8Model.cs index ccceb929..ccc49410 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Person/PersonWp8Model.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Person/PersonWp8Model.cs @@ -1,23 +1,25 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 05.09.2013 -//----------------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the person wp 8 model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Person { using System.Xml.Serialization; using CampusAppWP8.Utility; - /// Person model. - /// Stubbfel, 05.09.2013. + /// Person model. + /// Stubbfel, 05.09.2013. + /// public class PersonWp8Model : CampusAppWPortalLib8.Model.Person.PersonModel { #region property - /// Gets or sets the akadgrad. - /// The akadgrad. + /// Gets or sets the akadgrad. + /// The akadgrad. [XmlAttribute("akadgrad")] public new string Akadgrad { @@ -35,8 +37,8 @@ namespace CampusAppWP8.Model.Person } } - /// Gets or sets the name of the sur. - /// The name of the sur. + /// Gets or sets the name of the sur. + /// The name of the sur. [XmlAttribute("nachname")] public new string SurName { @@ -54,8 +56,8 @@ namespace CampusAppWP8.Model.Person } } - /// Gets or sets the person's first name. - /// The name of the first. + /// Gets or sets the person's first name. + /// The name of the first. [XmlAttribute("vorname")] public new string FirstName { diff --git a/CampusAppWP8/CampusAppWP8/Model/Setting/AppSettings.cs b/CampusAppWP8/CampusAppWP8/Model/Setting/AppSettings.cs index af3dd11e..b1a1b976 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Setting/AppSettings.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Setting/AppSettings.cs @@ -1,35 +1,37 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 08.08.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the application settings class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Setting { using CampusAppWP8.Resources; - /// - /// Model for settings of the app - /// + /// Model for settings of the app. + /// Stubbfel, 15.10.2013. public class AppSettings { - #region Enum + /// Values that represent BTUTagDefaultHandler. + /// Stubbfel, 15.10.2013. public enum BTUTagDefaultHandler { + /// An enum constant representing the information page option. InfoPage = 0, + + /// An enum constant representing the campus map option. CampusMap = 1 } #endregion #region Property - /// - /// Gets or sets a value indicating whether the GeoWatch-Flag - /// + /// Gets or sets a value indicating whether the GeoWatch-Flag. + /// true if geo watch enable, false if not. public bool GeoWatchEnable { get @@ -43,9 +45,8 @@ namespace CampusAppWP8.Model.Setting } } - /// - /// Gets or sets a value indicating whether the InitializationApp-Flag - /// + /// Gets or sets a value indicating whether the InitializationApp-Flag. + /// true if initialise application, false if not. public bool InitApp { get @@ -59,8 +60,8 @@ namespace CampusAppWP8.Model.Setting } } - /// Gets or sets a value indicating whether the development mode. - /// true if development mode, false if not. + /// Gets or sets a value indicating whether the development mode. + /// true if development mode, false if not. public bool DevMode { get @@ -74,8 +75,8 @@ namespace CampusAppWP8.Model.Setting } } - /// Gets or sets a value indicating whether the uni network. - /// true if uni network, false if not. + /// Gets or sets a value indicating whether the uni network. + /// true if uni network, false if not. public bool UniNetwork { get @@ -89,8 +90,8 @@ namespace CampusAppWP8.Model.Setting } } - /// Gets or sets a value indicating whether this object is WiFi enable. - /// true if WiFi enable, false if not. + /// Gets or sets a value indicating whether this object is WiFi enable. + /// true if WiFi enable, false if not. public bool WifiEnable { get @@ -104,8 +105,8 @@ namespace CampusAppWP8.Model.Setting } } - /// Gets or sets a value indicating whether the only WiFi. - /// true if only wifi, false if not. + /// Gets or sets a value indicating whether the only WiFi. + /// true if only wifi, false if not. public bool OnlyWifi { get @@ -119,28 +120,30 @@ namespace CampusAppWP8.Model.Setting } } - /// - /// Gets or sets the DeploymentNumber of the app - /// + /// Gets or sets the DeploymentNumber of the app. + /// The deployment number. public int DeploymentNumber { get { return App.LoadFromAppState(Constants.AppSetting_DeploymentNumber); } + set { - App.SaveToAppState(Constants.AppSetting_DeploymentNumber,value); + App.SaveToAppState(Constants.AppSetting_DeploymentNumber, value); } } - + /// Gets or sets the tag default handler. + /// The tag default handler. public BTUTagDefaultHandler TagDefaultHandler { get { return App.LoadFromAppState(Constants.AppSetting_BTUTagDefaultHandler); } + set { App.SaveToAppState(Constants.AppSetting_BTUTagDefaultHandler, value); diff --git a/CampusAppWP8/CampusAppWP8/Model/Setting/BTUTagHandlerTypes.cs b/CampusAppWP8/CampusAppWP8/Model/Setting/BTUTagHandlerTypes.cs new file mode 100644 index 00000000..1967f073 --- /dev/null +++ b/CampusAppWP8/CampusAppWP8/Model/Setting/BTUTagHandlerTypes.cs @@ -0,0 +1,21 @@ +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. +// +// Stubbfel +// 15.10.2013 +// Implements the btu tag handler types class +//----------------------------------------------------------------------- +namespace CampusAppWP8.Model.Setting +{ + /// Values that represent BTUTagDefaultHandler. + /// Stubbfel, 15.10.2013. + public enum BTUTagDefaultHandler + { + /// An enum constant representing the information page option. + InfoPage = 0, + + /// An enum constant representing the campus map option. + CampusMap = 1 + } +} diff --git a/CampusAppWP8/CampusAppWP8/Model/Setting/TagHandlerListPickerItemListModel.cs b/CampusAppWP8/CampusAppWP8/Model/Setting/TagHandlerListPickerItemListModel.cs index 96eec5f6..645a2bc7 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Setting/TagHandlerListPickerItemListModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Setting/TagHandlerListPickerItemListModel.cs @@ -1,25 +1,28 @@ -// -// Company copyright tag.List +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 25.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the tag handler list picker item list model class +//----------------------------------------------------------------------- namespace CampusApp8.Model.Setting { - using CampusAppWPortalLib8.Model.Utility; using CampusAppWP8.Model.Setting; using CampusAppWP8.Resources; + using CampusAppWPortalLib8.Model.Utility; - /// - /// Class for the RoleList - /// + /// A data Model for the tag handler list picker item list. + /// Stubbfel, 15.10.2013. + /// public class TagHandlerListPickerItemListModel : ListPickerItemListModel { #region Constructor /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the TagHandlerListPickerItemListModel class. /// + /// Stubbfel, 15.10.2013. public TagHandlerListPickerItemListModel() : base() { @@ -30,9 +33,9 @@ namespace CampusApp8.Model.Setting #region Method - /// - /// Overrides the LoadList-Method - /// + /// Overrides the LoadList-Method + /// Stubbfel, 15.10.2013. + /// protected override void LoadList() { this.AddItem(new ListPickerItemModel(AppSettings.BTUTagDefaultHandler.InfoPage.ToString(), AppResources.Setting_TagHandlerInfo)); diff --git a/CampusAppWP8/CampusAppWP8/Model/Setting/UserProfilModel.cs b/CampusAppWP8/CampusAppWP8/Model/Setting/UserProfilModel.cs index f61df5a4..2951d780 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Setting/UserProfilModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Setting/UserProfilModel.cs @@ -1,46 +1,39 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 23.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the user profil model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Setting { using System.Xml.Serialization; using CampusAppWP8.Resources; using CampusAppWPortalLib8.Model.Settings; - /// - /// Model for the profile of an user - /// + /// Model for the profile of an user. + /// Stubbfel, 15.10.2013. [XmlRoot("root")] public class UserProfilModel { #region Members - /// - /// constant for the first validate semester - /// + /// constant for the first validate semester. private static readonly int FirstSemester = int.Parse(Constants.Valid_FirstSemseter); - /// - /// constant for the last validate semester - /// + /// constant for the last validate semester. private static readonly int LastSemester = int.Parse(Constants.Valid_LastSemseter); - /// - /// constant for the max. number of a validate course - /// + /// constant for the max. number of a validate course. private static readonly int MaxCourseNumber = int.Parse(Constants.Valid_MaxCourseNumber); #endregion #region Proberties - /// - /// Gets or sets the course of the user - /// + /// Gets or sets the course of the user. + /// The course. public int Course { get @@ -57,9 +50,8 @@ namespace CampusAppWP8.Model.Setting } } - /// - /// Gets or sets the defaultCampus of the user - /// + /// Gets or sets the defaultCampus of the user. + /// The default campus. public Campus DefaultCampus { get @@ -73,9 +65,8 @@ namespace CampusAppWP8.Model.Setting } } - /// - /// Gets or sets the role of the user - /// + /// Gets or sets the role of the user. + /// The role. public RoleType Role { get @@ -89,9 +80,8 @@ namespace CampusAppWP8.Model.Setting } } - /// - /// Gets or sets the degree of the user - /// + /// Gets or sets the degree of the user. + /// The degree. public DegreeType Degree { get @@ -105,9 +95,8 @@ namespace CampusAppWP8.Model.Setting } } - /// - /// Gets or sets the semester of the user - /// + /// Gets or sets the semester of the user. + /// The semester. public int Semester { get @@ -127,11 +116,10 @@ namespace CampusAppWP8.Model.Setting #region Methods - /// - /// Methods check if a value could be a valid semester - /// - /// value which has to be checked - /// true if it is an valid semester, otherwise false + /// Methods check if a value could be a valid semester. + /// Stubbfel, 15.10.2013. + /// value which has to be checked. + /// true if it is an valid semester, otherwise false. private bool ValditateSemester(int possibleSemester) { if (possibleSemester < UserProfilModel.FirstSemester || possibleSemester > UserProfilModel.LastSemester) @@ -142,11 +130,10 @@ namespace CampusAppWP8.Model.Setting return true; } - /// - /// Methods check if a value could be a valid course - /// - /// value which has to be checked - /// true if it is an valid course, otherwise false + /// Methods check if a value could be a valid course. + /// Stubbfel, 15.10.2013. + /// value which has to be checked. + /// true if it is an valid course, otherwise false. private bool ValditateCourse(int possibleCourse) { if (possibleCourse > UserProfilModel.MaxCourseNumber) diff --git a/CampusAppWP8/CampusAppWP8/Model/Utility/CourseListPickerItemListWp8Model.cs b/CampusAppWP8/CampusAppWP8/Model/Utility/CourseListPickerItemListWp8Model.cs index d520b49d..d7437a86 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Utility/CourseListPickerItemListWp8Model.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Utility/CourseListPickerItemListWp8Model.cs @@ -1,9 +1,11 @@ -// -// Company copyright tag.List +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 25.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the course list picker item list wp 8 model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model.Utility { using System.Collections.Generic; @@ -12,14 +14,14 @@ namespace CampusAppWP8.Model.Utility using CampusAppWP8.Utility; using CampusAppWPortalLib8.Model.Utility; - /// - /// This is a class for the courseList - /// + /// This is a class for the courseList. + /// Stubbfel, 15.10.2013. + /// public class CourseListPickerItemListWp8Model : CampusAppWPortalLib8.Model.Utility.CourseListPickerItemListModel { #region Member - /// List of courses. + /// List of courses. private CourseFeed courseList; #endregion @@ -27,8 +29,9 @@ namespace CampusAppWP8.Model.Utility #region Constructor /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// + /// Stubbfel, 15.10.2013. public CourseListPickerItemListWp8Model() { } @@ -37,14 +40,11 @@ namespace CampusAppWP8.Model.Utility #region Events - /// - /// Delegate of the OnIO callback function. - /// + /// Delegate of the OnIO callback function. + /// Stubbfel, 15.10.2013. public delegate void OnIO(); - /// - /// Callback pointer, called after loading. - /// + /// Callback pointer, called after loading. public event OnIO OnLoaded = null; #endregion @@ -53,9 +53,8 @@ namespace CampusAppWP8.Model.Utility #region public - /// - /// Overrides the LoadList-Method - /// + /// Overrides the LoadList-Method + /// Stubbfel, 15.10.2013. public void LoadCourseList() { if (this.courseList == null || this.courseList.Model == null) @@ -76,25 +75,25 @@ namespace CampusAppWP8.Model.Utility #region private - /// Feed is fail. - /// Stubbfel, 10.09.2013. + /// Feed is fail. + /// Stubbfel, 10.09.2013. private void FeedIsFail() { this.FallBackList(); this.CallOnLoaded(); } - /// Feed is ready. - /// Stubbfel, 10.09.2013. + /// Feed is ready. + /// Stubbfel, 10.09.2013. private void FeedIsReady() { this.ConvertToListPickerItemModel(this.courseList.Model.CreateCourseList()); this.CallOnLoaded(); } - /// Converts a courseList to a list picker item model. - /// Stubbfel, 10.09.2013. - /// List of courses. + /// Converts a courseList to a list picker item model. + /// Stubbfel, 10.09.2013. + /// List of courses. private void ConvertToListPickerItemModel(List courseList) { foreach (CourseModel course in courseList) @@ -106,8 +105,8 @@ namespace CampusAppWP8.Model.Utility this.courseList.SaveData(); } - /// Call on loaded. - /// Stubbfel, 10.09.2013. + /// Call on loaded. + /// Stubbfel, 10.09.2013. private void CallOnLoaded() { if (this.OnLoaded != null) diff --git a/CampusAppWP8/CampusAppWP8/Model/XmlModel.cs b/CampusAppWP8/CampusAppWP8/Model/XmlModel.cs index c0a24f9d..958f118a 100644 --- a/CampusAppWP8/CampusAppWP8/Model/XmlModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/XmlModel.cs @@ -1,31 +1,31 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 05.07.2013 -//----------------------------------------------------------------------------- +// 15.10.2013 +// Implements the XML model class +//----------------------------------------------------------------------- namespace CampusAppWP8.Model { using System.Text; using CampusAppWPortalLib8.Utility; using CampusAppWPortalLib8.Model; using CampusAppWPortalLib8.Resources; - - /// - /// Xml model io handler class. - /// - /// model type + + /// Xml model io handler class. + /// fiedlchr, 15.10.2013. + /// + /// public abstract class XmlModel : MainModel, IXmlModel { #region Constructor - /// - /// Initializes a new instance of the class. - /// - /// model io type - /// filename of the data file - /// url of the feed data + /// Initializes a new instance of the class. + /// fiedlchr, 15.10.2013. + /// model io type. + /// filename of the data file. + /// url of the feed data. public XmlModel(ModelType modelType, string fileName, string url) : base(modelType, fileName, url) { @@ -33,11 +33,12 @@ namespace CampusAppWP8.Model } /// - /// Initializes a new instance of the class. - /// Use only if the model io type is file or feed, not both. + /// Initializes a new instance of the class. Use only if the model + /// io type is file or feed, not both. /// - /// model io type - /// name of the file or the url of the feed + /// fiedlchr, 15.10.2013. + /// model io type. + /// name of the file or the url of the feed. public XmlModel(ModelType modelType, string sourceName) : base(modelType, sourceName) { @@ -48,20 +49,18 @@ namespace CampusAppWP8.Model #region Property - /// - /// Gets or sets for the name of the root-tag - /// + /// Gets or sets for the name of the root-tag. + /// public string ValidRootName { get; set; } #endregion #region Method - /// - /// Create the model from a xml byte array. - /// - /// model data - /// true, if succeeded + /// Create the model from a xml byte array. + /// fiedlchr, 15.10.2013. + /// model data. + /// true, if succeeded. protected override bool DeserializeModel(byte[] modelData) { bool retValue = true; @@ -81,10 +80,9 @@ namespace CampusAppWP8.Model return retValue; } - /// - /// Serializes the model to a byte array. - /// - /// model data + /// Serializes the model to a byte array. + /// fiedlchr, 15.10.2013. + /// model data. protected override byte[] SerializeModel() { byte[] retValue = null; diff --git a/CampusAppWP8/CampusAppWP8/Pages/Setting/AppSettingPage.xaml b/CampusAppWP8/CampusAppWP8/Pages/Setting/AppSettingPage.xaml index 20e6192b..5fcb9e65 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Setting/AppSettingPage.xaml +++ b/CampusAppWP8/CampusAppWP8/Pages/Setting/AppSettingPage.xaml @@ -41,7 +41,7 @@ - + From 82761a616871c0b6db3a27f2dd6fb5c60cce2002 Mon Sep 17 00:00:00 2001 From: stubbfel Date: Tue, 15 Oct 2013 12:06:10 +0200 Subject: [PATCH 5/9] refacto all pages --- .../Pages/BTUTag/BTUTagInfo.xaml.cs | 22 +- .../Pages/Campusmap/CampusMapPage.xaml.cs | 319 +++++++++--------- .../Pages/Campusmap/RoomListPage.xaml.cs | 87 ++--- .../CampusAppWP8/Pages/Dev/NFC.xaml.cs | 112 +++--- .../CampusAppWP8/Pages/Dev/QRScanner.xaml.cs | 118 +++---- .../CampusAppWP8/Pages/Exams/Exams.xaml.cs | 90 ++--- .../Pages/Lecture/LecturePage.xaml.cs | 113 +++---- .../Pages/Lecture/ModulWebPage.xaml.cs | 27 +- .../Pages/Lecture/ResultDetailPage.xaml.cs | 35 +- .../Pages/Lecture/ResultPage.xaml.cs | 27 +- .../CampusAppWP8/Pages/Links/LinkPage.xaml.cs | 116 +++---- .../Pages/Mensa/MensaPage.xaml.cs | 150 ++++---- .../Pages/Person/PersonPage.xaml.cs | 76 +++-- .../Pages/PlaceNews/PlaceNews.xaml.cs | 183 +++++----- .../Pages/PlaceNews/ShowPad.xaml.cs | 25 +- .../Pages/Setting/AppSettingPage.xaml.cs | 34 +- .../Pages/Setting/Impressum.xaml.cs | 21 +- .../Pages/Setting/UserProfil.xaml.cs | 49 ++- .../CampusAppWP8/Pages/StartPage.xaml.cs | 170 +++++----- .../StudentCouncil/StudentCouncilPage.xaml.cs | 78 ++--- .../Pages/Webmail/WebmailPage.xaml.cs | 25 +- CampusAppWP8/CampusAppWP8/Settings.StyleCop | 7 + 22 files changed, 910 insertions(+), 974 deletions(-) diff --git a/CampusAppWP8/CampusAppWP8/Pages/BTUTag/BTUTagInfo.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/BTUTag/BTUTagInfo.xaml.cs index 954a455e..8bf66f31 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/BTUTag/BTUTagInfo.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/BTUTag/BTUTagInfo.xaml.cs @@ -1,4 +1,11 @@ - +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. +// +// Stubbfel +// 15.10.2013 +// Implements the btu tag info.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.BTTTag { using System; @@ -6,15 +13,21 @@ namespace CampusAppWP8.Pages.BTTTag using CampusApp8.Model.Setting; using Microsoft.Phone.Controls; + /// Information about the btu tag. + /// Stubbfel, 15.10.2013. + /// public partial class BTUTagInfo : PhoneApplicationPage { #region Member + /// The taghandler model. private TagHandlerListPickerItemListModel taghandlerModel; #endregion #region Constructor + /// Initializes a new instance of the BTUTagInfo class. + /// Stubbfel, 15.10.2013. public BTUTagInfo() { InitializeComponent(); @@ -28,10 +41,9 @@ namespace CampusAppWP8.Pages.BTTTag #region Method - /// - /// Override the OnNavigatedFrom method - /// - /// Arguments of navigation + /// Override the OnNavigatedFrom method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedFrom(NavigationEventArgs e) { if (NavigationMode.Back == e.NavigationMode) diff --git a/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml.cs index 2777809c..0ee3bd2a 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml.cs @@ -1,10 +1,11 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// fiedlchr -// 13.08.2013 -//----------------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the campus map page.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.Campusmap { using System; @@ -29,51 +30,43 @@ namespace CampusAppWP8.Pages.Campusmap using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; - /// Class for the campusMap page. - /// Stubbfel, 19.08.2013. + /// Class for the campusMap page. + /// Stubbfel, 19.08.2013. + /// public partial class CampusMapPage : PhoneApplicationPage { #region Member - /// The device. + /// The device. private readonly ProximityDevice device = ProximityDevice.GetDefault(); - /// Variable for the map model. + /// Variable for the map model. private CampusMapModel campusMap; - /// - /// Variable for the PlaceFile - /// + /// Variable for the PlaceFile. private PlacesFile file; - /// - /// List of information names - /// + /// List of information names. private List informationsNames; - /// - /// Flag which indicates if an qrCode scan is running - /// + /// Flag which indicates if an qrCode scan is running. private bool qrcodeScan = false; - /// - /// Variable for the last query - /// + /// Variable for the last query. private string lastQuery; - /// - /// Flag which indicates the map show information of all buildings - /// + /// Flag which indicates the map show information of all buildings. private bool buildInfoEnable; + /// Identifier for the ndef. private long ndefId; #endregion #region Constructor - /// Initializes a new instance of the class. - /// Stubbfel, 19.08.2013. + /// Initializes a new instance of the class. + /// Stubbfel, 19.08.2013. public CampusMapPage() { this.InitializeComponent(); @@ -110,15 +103,12 @@ namespace CampusAppWP8.Pages.Campusmap #region Events - /// - /// Delegate for LoadingPlace events - /// - /// the events args + /// Delegate for LoadingPlace events. + /// Stubbfel, 15.10.2013. + /// the events args. public delegate void LoadingPlace(string args); - /// - /// Event for loading places - /// + /// Event for loading places. public event LoadingPlace OnLoadingPlace; #endregion @@ -127,9 +117,9 @@ namespace CampusAppWP8.Pages.Campusmap #region protected - /// Methods overrides the OnNavigatedTo-Method. - /// Stubbfel, 19.08.2013. - /// some NavigationEventArgs. + /// Methods overrides the OnNavigatedTo-Method. + /// Stubbfel, 19.08.2013. + /// protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); @@ -189,10 +179,9 @@ namespace CampusAppWP8.Pages.Campusmap ndefId = this.device.SubscribeForMessage(Constants.NCFMessageType_NDEF, this.NDEFHandler); } - /// - /// Methods overrides the OnNavigatedFrom-Method - /// - /// some NavigationEventArgs + /// Methods overrides the OnNavigatedFrom-Method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedFrom(NavigationEventArgs e) { this.device.StopSubscribingForMessage(ndefId); @@ -205,21 +194,19 @@ namespace CampusAppWP8.Pages.Campusmap #region private - /// - /// Method set the lastQuery and register to OnLoadingPlace-Event - /// - /// the query string - /// the event callback + /// Method set the lastQuery and register to OnLoadingPlace-Event. + /// Stubbfel, 15.10.2013. + /// the query string. + /// the event callback. private void SetLastQuery(string query, Action action) { this.lastQuery = query; this.OnLoadingPlace = new CampusMapPage.LoadingPlace(action); } - /// - /// Method shows certain places as hidden Pin - /// - /// the query string + /// Method shows certain places as hidden Pin. + /// Stubbfel, 15.10.2013. + /// the query string. private void ShowPlacesByQueryAsHiddenPin(string query) { if (!this.IsMapReady()) @@ -232,10 +219,9 @@ namespace CampusAppWP8.Pages.Campusmap } } - /// - /// Method shows certain places as search Pin - /// - /// the query string + /// Method shows certain places as search Pin. + /// Stubbfel, 15.10.2013. + /// the query string. private void ShowPlacesByQueryAsSearchPin(string query) { if (!this.IsMapReady()) @@ -254,32 +240,33 @@ namespace CampusAppWP8.Pages.Campusmap } } - /// - /// Method show all places, which match with the query as a pin - /// - /// the query string - /// the type of the pin - /// if its true then send query to the place file otherwise to the CampusMapModel + /// Method show all places, which match with the query as a pin. + /// Stubbfel, 15.10.2013. + /// the query string. + /// the type of the pin. + /// + /// if its true then send query to the place file otherwise to the CampusMapModel. + /// private void ShowPlacesByQuery(string query, MapPinModel.PinType pintype, bool allPlaces) { this.AddPins(this.SearchPlaces(query, allPlaces), pintype); } - /// - /// Method show all places by placeId - /// - /// the placeId - /// the type of the pin - /// if its true then send query to the place file otherwise to the CampusMapModel + /// Method show all places by placeId. + /// Stubbfel, 15.10.2013. + /// the placeId. + /// the type of the pin. + /// + /// if its true then send query to the place file otherwise to the CampusMapModel. + /// private void ShowPlacesByPlaceId(string placeId, MapPinModel.PinType pintype, bool allPlaces) { this.AddPinsByPids(new List() { placeId }, pintype, false, allPlaces); } - /// - /// Method shows places by placeId from place file as search Pin - /// - /// the placeId + /// Method shows places by placeId from place file as search Pin. + /// Stubbfel, 15.10.2013. + /// the placeId. private void ShowAllPlacesByPlaceIdAsSearchPin(string placeId) { if (!this.IsMapReady()) @@ -292,10 +279,9 @@ namespace CampusAppWP8.Pages.Campusmap } } - /// - /// Method shows places by placeId from CampusMapModel as search Pin - /// - /// the placeId + /// Method shows places by placeId from CampusMapModel as search Pin. + /// Stubbfel, 15.10.2013. + /// the placeId. private void ShowPlacesByPlaceIdAsSearchPin(string placeId) { if (!this.IsMapReady()) @@ -308,10 +294,9 @@ namespace CampusAppWP8.Pages.Campusmap } } - /// - /// Method show all buildings of a campus - /// - /// the id of the campus + /// Method show all buildings of a campus. + /// Stubbfel, 15.10.2013. + /// the id of the campus. private void ShowAllCampusBuilding(string campusId) { if (!this.IsMapReady()) @@ -324,10 +309,9 @@ namespace CampusAppWP8.Pages.Campusmap } } - /// - /// Method check if the map loading is finish - /// - /// true, if the map is ready to use, otherwise false + /// Method check if the map loading is finish. + /// Stubbfel, 15.10.2013. + /// true, if the map is ready to use, otherwise false. private bool IsMapReady() { if (this.campusMap == null || !this.campusMap.IsReady) @@ -338,9 +322,8 @@ namespace CampusAppWP8.Pages.Campusmap return true; } - /// - /// Method will be execute if the place file is ready - /// + /// Method will be execute if the place file is ready. + /// Stubbfel, 15.10.2013. private void FileIsReady() { this.campusMap = new CBMainMapModel(this.file.Model.Places.ToList()); @@ -352,10 +335,10 @@ namespace CampusAppWP8.Pages.Campusmap } } - /// TextSearch click method. - /// Stubbfel, 19.08.2013. - /// caller object. - /// some EventArgs. + /// TextSearch click method. + /// Stubbfel, 19.08.2013. + /// caller object. + /// some EventArgs. private void SearchByText(object sender, RoutedEventArgs e) { string query = QString.Text.Trim(); @@ -369,11 +352,10 @@ namespace CampusAppWP8.Pages.Campusmap this.ShowPlacesByQueryAsSearchPin(query); } - /// - /// Method insert or remove the buildings pins - /// - /// caller object. - /// some EventArgs. + /// Method insert or remove the buildings pins. + /// Stubbfel, 15.10.2013. + /// caller object. + /// some EventArgs. private void ShowBuildingsInformation(object sender, EventArgs e) { string menuText; @@ -394,10 +376,9 @@ namespace CampusAppWP8.Pages.Campusmap item.Text = menuText; } - /// - /// Method clear the Map - /// - /// (optional) tags of the UIElement + /// Method clear the Map. + /// Stubbfel, 15.10.2013. + /// (optional) tags of the UIElement. private void ClearMap(List removeTags = null) { if (removeTags == null) @@ -424,13 +405,14 @@ namespace CampusAppWP8.Pages.Campusmap } } - /// - /// Method adds pin to the map by given list of placeId - /// - /// list of placeId - /// type of pin - /// (optional) if its true, clear canvas before adding - /// (optional) if its true, load place from place file, otherwise from CampusMapModel + /// Method adds pin to the map by given list of placeId. + /// Stubbfel, 15.10.2013. + /// list of placeId. + /// type of pin. + /// (optional) if its true, clear canvas before adding. + /// + /// (optional) if its true, load place from place file, otherwise from CampusMapModel. + /// private void AddPinsByPids(List pidList, MapPinModel.PinType pinType, bool clearCanvas = true, bool allPlaces = false) { // clear canvas @@ -477,11 +459,10 @@ namespace CampusAppWP8.Pages.Campusmap } } - /// - /// Method start a NFCScan - /// - /// sender of event - /// the event args + /// Method start a NFCScan. + /// Stubbfel, 15.10.2013. + /// sender of event. + /// the event args. private void SearchPlaceByNFC_Click(object sender, EventArgs e) { MessageBoxes.ShowMainModelInfoMessageBox(AppResources.ScarNfc_Search); @@ -490,11 +471,10 @@ namespace CampusAppWP8.Pages.Campusmap this.ndefId = this.device.SubscribeForMessage(Constants.NCFMessageType_NDEF, this.NDEFHandler); } - /// - /// Method start a QRCodeScan - /// - /// sender of event - /// the event args + /// Method start a QRCodeScan. + /// Stubbfel, 15.10.2013. + /// sender of event. + /// the event args. private void SearchPlaceByQR_Click(object sender, EventArgs e) { this.qrcodeScan = true; @@ -504,11 +484,10 @@ namespace CampusAppWP8.Pages.Campusmap this.NavigationService.Navigate(url); } - /// - /// Method handle the result of a NFCScan - /// - /// the sender device - /// the message of the device + /// Method handle the result of a NFCScan. + /// Stubbfel, 15.10.2013. + /// the sender device. + /// the message of the device. private void NDEFHandler(ProximityDevice sender, ProximityMessage message) { // create ndefMessage @@ -575,11 +554,13 @@ namespace CampusAppWP8.Pages.Campusmap } - /// Searches for the first places. - /// Stubbfel, 19.08.2013. - /// The query. - /// (optional) if its true, search places in place file, otherwise in CampusMapModel - /// The found places. + /// Searches for the first places. + /// Stubbfel, 19.08.2013. + /// The query. + /// + /// (optional) if its true, search places in place file, otherwise in CampusMapModel. + /// + /// The found places. private List SearchPlaces(string query, bool allPlaces = false) { SpsModel spatial; @@ -609,11 +590,11 @@ namespace CampusAppWP8.Pages.Campusmap return spatial.GetPlacesByInformation(query, true, this.informationsNames); } - /// Adds the pins. - /// Stubbfel, 19.08.2013. - /// The places. - /// The type. - /// (Optional) the scroll. + /// Adds the pins. + /// Stubbfel, 19.08.2013. + /// The places. + /// The type. + /// (Optional) the scroll. private void AddPins(List places, MapPinModel.PinType type, bool scroll = true) { foreach (PlaceModel place in places) @@ -633,13 +614,15 @@ namespace CampusAppWP8.Pages.Campusmap } } - /// Add Pin to an certain position. - /// Stubbfel, 19.08.2013. - /// longitude parameter. - /// latitude parameter. - /// The type. - /// (Optional) the scroll. - /// (Optional) List of places, whose are associative with the pin + /// Add Pin to an certain position. + /// Stubbfel, 19.08.2013. + /// longitude parameter. + /// latitude parameter. + /// The type. + /// (Optional) the scroll. + /// + /// (Optional) List of places, whose are associative with the pin. + /// private void AddPin(double x, double y, MapPinModel.PinType type, bool scroll = true, List assocPlaces = null) { Point scrollPoint = this.campusMap.GetScrollPoint(this.campusMap.ConverToPixelPoint(this.campusMap.ConverToMapPoint(x, y))); @@ -670,18 +653,18 @@ namespace CampusAppWP8.Pages.Campusmap } } - /// On clicking the update button in the ApplicationBar. - /// Stubbfel, 19.08.2013. - /// caller object. - /// some EventArgs. + /// On clicking the update button in the ApplicationBar. + /// Stubbfel, 19.08.2013. + /// caller object. + /// some EventArgs. private void UpdateButtonAppBar_Click(object sender, System.EventArgs e) { this.ShowCurrentPositionDispatcher(); } - /// execute ShowCurrentPosition-Method via Dispatcher. - /// Stubbfel, 19.08.2013. - /// (Optional) the scroll. + /// execute ShowCurrentPosition-Method via Dispatcher. + /// Stubbfel, 19.08.2013. + /// (Optional) the scroll. private void ShowCurrentPositionDispatcher(bool scroll = true) { this.DefHeader.ProgressVisibility = Visibility.Visible; @@ -690,9 +673,9 @@ namespace CampusAppWP8.Pages.Campusmap thread.Start(); } - /// Method add a pin on the at the position of the phone. - /// Stubbfel, 19.08.2013. - /// (Optional) the scroll. + /// Method add a pin on the at the position of the phone. + /// Stubbfel, 19.08.2013. + /// (Optional) the scroll. private void ShowCurrentPosition(bool scroll = true) { if (Settings.AppSetting.GeoWatchEnable) @@ -720,9 +703,9 @@ namespace CampusAppWP8.Pages.Campusmap } } - /// Sets pin to current position. - /// Stubbfel, 19.08.2013. - /// (Optional) the scroll. + /// Sets pin to current position. + /// Stubbfel, 19.08.2013. + /// (Optional) the scroll. private void SetPinToCurrentPosition(bool scroll = true) { string lat = App.LoadFromAppState(Constants.GeoWatch_CurrentPosition_Lat); @@ -743,12 +726,12 @@ namespace CampusAppWP8.Pages.Campusmap } } - /// Sets pin to position. - /// Stubbfel, 27.08.2013. - /// The latitude. - /// The longitude. - /// The type. - /// (Optional) the scroll. + /// Sets pin to position. + /// Stubbfel, 27.08.2013. + /// The latitude. + /// The longitude. + /// The type. + /// (Optional) the scroll. private void SetPinToPosition(string latitude, string longitude, MapPinModel.PinType type, bool scroll = true) { double x; @@ -762,10 +745,9 @@ namespace CampusAppWP8.Pages.Campusmap this.DefHeader.ProgressVisibility = Visibility.Collapsed; } - /// - /// Method show same PlaceInformation - /// - /// List of places + /// Method show same PlaceInformation. + /// Stubbfel, 15.10.2013. + /// List of places. private void ShowMapInfo(List places) { if (places == null) @@ -821,6 +803,10 @@ namespace CampusAppWP8.Pages.Campusmap } } + /// Go to room list. + /// Stubbfel, 15.10.2013. + /// Identifier for the building. + /// (Optional) identifier for the room. private void GoToRoomList(string buildingId, string roomId = null) { string urlString = Constants.PathCampusmap_RoomListPage; @@ -833,12 +819,10 @@ namespace CampusAppWP8.Pages.Campusmap this.NavigationService.Navigate(url); } - - /// - /// Method check if a certain place has some rooms - /// - /// the place id - /// true, if the place has got rooms, otherwise false + /// Method check if a certain place has some rooms. + /// Stubbfel, 15.10.2013. + /// the place id. + /// true, if the place has got rooms, otherwise false. private bool HasRooms(string placeId) { foreach (PlaceModel place in this.file.Model.Places) @@ -852,7 +836,10 @@ namespace CampusAppWP8.Pages.Campusmap return false; } - + /// Event handler. Called by Button for key down events. + /// Stubbfel, 15.10.2013. + /// caller object. + /// Key event information. private void Button_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) { if (e.Key == Key.Enter) diff --git a/CampusAppWP8/CampusAppWP8/Pages/Campusmap/RoomListPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Campusmap/RoomListPage.xaml.cs index daa0a1aa..70ca3d7b 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Campusmap/RoomListPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Campusmap/RoomListPage.xaml.cs @@ -1,29 +1,28 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 23.09.2013 -//----------------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the room list page.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.Campusmap { - using System; using System.Collections.Generic; using System.Linq; - using System.Windows.Navigation; - using CampusAppWP8.File.Places; - using CampusAppWP8.Model.GeoDb; - using CampusAppWP8.Resources; - using Microsoft.Phone.Controls; - using CampusAppWP8.Utility.Lui.MessageBoxes; - using CampusAppWP8.Model.Campusmap; using System.Windows; using System.Windows.Controls; - using CampusAppWP8.Utility; using System.Windows.Input; using System.Windows.Media; + using System.Windows.Navigation; + using CampusAppWP8.File.Places; + using CampusAppWP8.Model.Campusmap; + using CampusAppWP8.Model.GeoDb; + using CampusAppWP8.Resources; + using CampusAppWP8.Utility; + using CampusAppWP8.Utility.Lui.MessageBoxes; using CampusAppWPortalLib8.Model.Utility; + using Microsoft.Phone.Controls; /// Class of the RoomListPage. /// Stubbfel, 14.10.2013. @@ -42,10 +41,13 @@ namespace CampusAppWP8.Pages.Campusmap /// true to pinch run. private bool pinchRun = false; - /// The mappoint. + + /// The MapPoint. private Point mappoint; + /// The offset point. private Point offsetPoint; + /// The layer list picker. private ListPickerItemListModel layerListPicker; @@ -109,8 +111,8 @@ namespace CampusAppWP8.Pages.Campusmap { if (NavigationContext.QueryString.ContainsKey(Constants.ParamBuildingId)) { - this.setupCanvas(NavigationContext.QueryString[Constants.ParamBuildingId]); - this.createLayerListPicker(); + this.SetupCanvas(NavigationContext.QueryString[Constants.ParamBuildingId]); + this.CreateLayerListPicker(); if (this.building != null && this.building.Layers != null && this.building.Layers.Count > 0) { @@ -120,10 +122,11 @@ namespace CampusAppWP8.Pages.Campusmap if (layerKey != null) { this.Layer.SelectedIndex = this.layerListPicker.GetIndexOrDefault(layerKey); - this.showCurrentRoom(NavigationContext.QueryString[Constants.ParamRoomId]); + this.ShowCurrentRoom(NavigationContext.QueryString[Constants.ParamRoomId]); } } - this.showLayerPlaces(((ListPickerItemModel)this.Layer.SelectedItem).Value); + + this.ShowLayerPlaces(((ListPickerItemModel)this.Layer.SelectedItem).Value); } else { @@ -134,15 +137,13 @@ namespace CampusAppWP8.Pages.Campusmap { MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoad); } - } /// Shows the current room. /// Stubbfel, 14.10.2013. /// Identifier for the place. - private void showCurrentRoom(string placeId) + private void ShowCurrentRoom(string placeId) { - double x; double y; @@ -153,7 +154,7 @@ namespace CampusAppWP8.Pages.Campusmap x = room.GeoRefPoint.Longitude; y = room.GeoRefPoint.Latitude; Point roompoint = this.buildingMap.GetScrollPoint(this.buildingMap.ConverToPixelPoint(this.buildingMap.ConverToMapPoint(x, y))); - Point viewPoint = new Point(roompoint.X - mappoint.X + offsetPoint.X, roompoint.Y - mappoint.Y + offsetPoint.Y); + Point viewPoint = new Point(roompoint.X - this.mappoint.X + this.offsetPoint.X, roompoint.Y - this.mappoint.Y + this.offsetPoint.Y); MapCanvas.Children.Add(this.buildingMap.AddPin(viewPoint, MapPinModel.PinType.InfoRedPlace, new List { room })); } @@ -167,11 +168,13 @@ namespace CampusAppWP8.Pages.Campusmap { return; } + string msgText = string.Empty; if (places == null) { return; } + foreach (PlaceModel place in places) { msgText += AppResources.PlaceLabel_Name + ": "; @@ -228,7 +231,6 @@ namespace CampusAppWP8.Pages.Campusmap double scaleVal = pinch.CumulativeScale; if (scaleVal < 1) { - scaleVal = 1; } else if (scaleVal > 1.5) @@ -239,8 +241,6 @@ namespace CampusAppWP8.Pages.Campusmap scale.ScaleX = scaleVal; scale.ScaleY = scaleVal; - - var newCenter = e.PinchManipulation.Current.Center; scale.CenterX = newCenter.X; scale.CenterY = newCenter.Y; @@ -266,21 +266,22 @@ namespace CampusAppWP8.Pages.Campusmap /// Creates layer list picker. /// Stubbfel, 14.10.2013. - private void createLayerListPicker() + private void CreateLayerListPicker() { - layerListPicker = new ListPickerItemListModel(); + this.layerListPicker = new ListPickerItemListModel(); foreach (string layername in this.building.Layers.Keys) { - layerListPicker.AddItem(layername, layername); + this.layerListPicker.AddItem(layername, layername); } - this.Layer.ItemsSource = layerListPicker.List; + + this.Layer.ItemsSource = this.layerListPicker.List; } /// Shows the layer places. /// Stubbfel, 14.10.2013. /// (Optional) the layer key. - private void showLayerPlaces(string layerKey = null) + private void ShowLayerPlaces(string layerKey = null) { if (layerKey == null) { @@ -298,7 +299,7 @@ namespace CampusAppWP8.Pages.Campusmap x = room.GeoRefPoint.Longitude; y = room.GeoRefPoint.Latitude; Point roompoint = this.buildingMap.GetScrollPoint(this.buildingMap.ConverToPixelPoint(this.buildingMap.ConverToMapPoint(x, y))); - Point viewPoint = new Point(roompoint.X - mappoint.X + offsetPoint.X, roompoint.Y - mappoint.Y + offsetPoint.Y); + Point viewPoint = new Point(roompoint.X - this.mappoint.X + this.offsetPoint.X, roompoint.Y - this.mappoint.Y + this.offsetPoint.Y); MapPinModel.PinType type; @@ -318,8 +319,8 @@ namespace CampusAppWP8.Pages.Campusmap default: type = MapPinModel.PinType.InfoPlace; break; - } + MapCanvas.Children.Add(this.buildingMap.AddPin(viewPoint, type, new List { room })); } @@ -329,16 +330,16 @@ namespace CampusAppWP8.Pages.Campusmap /// Shows the layer places. /// Stubbfel, 14.10.2013. /// (Optional) zero-based index of the. - private void showLayerPlaces(int index = 0) + private void ShowLayerPlaces(int index = 0) { string layerKey = this.building.Layers.Keys.ElementAt(index); - this.showLayerPlaces(layerKey); + this.ShowLayerPlaces(layerKey); } /// Sets up the canvas. /// Stubbfel, 14.10.2013. /// Identifier for the building. - private void setupCanvas(string buildingId) + private void SetupCanvas(string buildingId) { this.building = new CampusBuildingModel(buildingId, this.placeFile.Model.Places.ToList()); @@ -348,13 +349,13 @@ namespace CampusAppWP8.Pages.Campusmap double y = this.building.Building.GeoRefPoint.Latitude; double x = this.building.Building.GeoRefPoint.Longitude; - mappoint = this.buildingMap.GetScrollPoint(this.buildingMap.ConverToPixelPoint(this.buildingMap.ConverToMapPoint(x, y))); - offsetPoint = new Point(-this.buildingMap.MapImageOffsetX, -this.buildingMap.MapImageOffsetY); + this.mappoint = this.buildingMap.GetScrollPoint(this.buildingMap.ConverToPixelPoint(this.buildingMap.ConverToMapPoint(x, y))); + this.offsetPoint = new Point(-this.buildingMap.MapImageOffsetX, -this.buildingMap.MapImageOffsetY); - this.MapCanvas.DataContext = buildingMap; + this.MapCanvas.DataContext = this.buildingMap; - Canvas.SetLeft(this.imgMap, -1 * mappoint.X); - Canvas.SetTop(this.imgMap, -1 * mappoint.Y); + Canvas.SetLeft(this.imgMap, -1 * this.mappoint.X); + Canvas.SetTop(this.imgMap, -1 * this.mappoint.Y); Canvas.SetZIndex(this.imgMap, 0); } @@ -364,7 +365,7 @@ namespace CampusAppWP8.Pages.Campusmap /// Selection changed event information. private void Layer_SelectionChanged(object sender, SelectionChangedEventArgs e) { - this.showLayerPlaces(((ListPickerItemModel)this.Layer.SelectedItem).Value); + this.ShowLayerPlaces(((ListPickerItemModel)this.Layer.SelectedItem).Value); } /// Clears the map described by removeTags. diff --git a/CampusAppWP8/CampusAppWP8/Pages/Dev/NFC.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Dev/NFC.xaml.cs index 228bef0c..ca19f7d8 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Dev/NFC.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Dev/NFC.xaml.cs @@ -1,11 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 08.08.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the nfc .xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.Dev { using System; @@ -14,36 +14,37 @@ namespace CampusAppWP8.Pages.Dev using System.Runtime.InteropServices.WindowsRuntime; using System.Windows; using System.Windows.Navigation; - using CampusAppWP8.Model.Campusmap; + using CampusAppWP8.File.Places; using CampusAppWP8.Model.GeoDb; using CampusAppWP8.Utility.NDEF; using Microsoft.Phone.Controls; using Windows.Networking.Proximity; - using CampusAppWP8.File.Places; - /// Nfc page. - /// Stubbfel, 22.08.2013. + /// Nfc page. + /// Stubbfel, 22.08.2013. + /// public partial class NFC : PhoneApplicationPage { #region Member - /// The device. + /// The device. private readonly ProximityDevice device = ProximityDevice.GetDefault(); - /// Zero-based index of the act ndef. + /// Zero-based index of the act ndef. private int actNDEFIndex; - /// List of ndefs. + /// List of ndefs. private List ndefList; + /// The file. private PlacesFile file; #endregion #region Constructor - /// Initializes a new instance of the NFC class. - /// Stubbfel, 22.08.2013. + /// Initializes a new instance of the NFC class. + /// Stubbfel, 22.08.2013. public NFC() { this.InitializeComponent(); @@ -56,32 +57,18 @@ namespace CampusAppWP8.Pages.Dev this.file.OnLoaded += new PlacesFile.OnIO(this.FileIsReady); this.file.LoadData(); - - this.actNDEFIndex = 0; } - private void FileIsReady() - { - this.ndefList = new List(); - //MapModel map = new CBMainMapModel(this.file.Model.Places.ToList()); - foreach (PlaceModel place in this.file.Model.Places.ToList()) - { - this.ndefList.Add(new NDEFMessage(place.ToNfcString(), NDEFMessage.TYPEVAL.TEXT)); - } - - this.Writecontent.Text = this.ndefList[this.actNDEFIndex].GetContent(); - } - #endregion #region Method #region protected - /// Override the OnNavigatedTo method. - /// Stubbfel, 22.08.2013. - /// Arguments of navigation. + /// Override the OnNavigatedTo method. + /// Stubbfel, 22.08.2013. + /// protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); @@ -91,20 +78,35 @@ namespace CampusAppWP8.Pages.Dev #region private - /// Handler, called when the publish. - /// Stubbfel, 22.08.2013. - /// The sender. - /// Identifier for the message. + /// File is ready. + /// Stubbfel, 15.10.2013. + private void FileIsReady() + { + this.ndefList = new List(); + + // MapModel map = new CBMainMapModel(this.file.Model.Places.ToList()); + foreach (PlaceModel place in this.file.Model.Places.ToList()) + { + this.ndefList.Add(new NDEFMessage(place.ToNfcString(), NDEFMessage.TYPEVAL.TEXT)); + } + + this.Writecontent.Text = this.ndefList[this.actNDEFIndex].GetContent(); + } + + /// Handler, called when the publish. + /// Stubbfel, 22.08.2013. + /// The sender. + /// Identifier for the message. private void PublishHandler(ProximityDevice sender, long messageId) { this.device.StopPublishingMessage(messageId); this.Dispatcher.BeginInvoke(new Action(() => MessageBox.Show("Writed:" + this.actNDEFIndex))); } - /// Handler, called when the ndef. - /// Stubbfel, 22.08.2013. - /// The sender. - /// The message. + /// Handler, called when the ndef. + /// Stubbfel, 22.08.2013. + /// The sender. + /// The message. private void NDEFHandler(ProximityDevice sender, ProximityMessage message) { this.device.StopSubscribingForMessage(message.SubscriptionId); @@ -115,19 +117,19 @@ namespace CampusAppWP8.Pages.Dev this.Dispatcher.BeginInvoke(new Action(() => MessageBox.Show(ndef.GetContent()))); } - /// Event handler. Called by Read for click events. - /// Stubbfel, 22.08.2013. - /// The sender. - /// Routed event information. + /// Event handler. Called by Read for click events. + /// Stubbfel, 22.08.2013. + /// The sender. + /// Routed event information. private void Read_Click(object sender, RoutedEventArgs e) { this.device.SubscribeForMessage("NDEF", this.NDEFHandler); } - /// Event handler. Called by Next for click events. - /// Stubbfel, 22.08.2013. - /// The sender. - /// Routed event information. + /// Event handler. Called by Next for click events. + /// Stubbfel, 22.08.2013. + /// The sender. + /// Routed event information. private void Next_Click(object sender, RoutedEventArgs e) { if (this.actNDEFIndex < this.ndefList.Count - 1) @@ -137,10 +139,10 @@ namespace CampusAppWP8.Pages.Dev } } - /// Event handler. Called by Prev for click events. - /// Stubbfel, 22.08.2013. - /// The sender. - /// Routed event information. + /// Event handler. Called by Prev for click events. + /// Stubbfel, 22.08.2013. + /// The sender. + /// Routed event information. private void Prev_Click(object sender, RoutedEventArgs e) { if (this.actNDEFIndex > 0) @@ -150,10 +152,10 @@ namespace CampusAppWP8.Pages.Dev } } - /// Event handler. Called by Write for click events. - /// Stubbfel, 22.08.2013. - /// The sender. - /// Routed event information. + /// Event handler. Called by Write for click events. + /// Stubbfel, 22.08.2013. + /// The sender. + /// Routed event information. private void Write_Click(object sender, RoutedEventArgs e) { this.device.PublishBinaryMessage("NDEF:WriteTag", this.ndefList[this.actNDEFIndex].ToByteArray().AsBuffer(), this.PublishHandler); diff --git a/CampusAppWP8/CampusAppWP8/Pages/Dev/QRScanner.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Dev/QRScanner.xaml.cs index 8c7c9b23..00fc417d 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Dev/QRScanner.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Dev/QRScanner.xaml.cs @@ -1,66 +1,67 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 15.08.2013 -// +// 15.10.2013 +// Implements the qr scanner.xaml class +// // This Class uses the ZXing library, which is under the Apache License 2.0. -// +// // Therefor, see: // http://zxingnet.codeplex.com/license // http://www.apache.org/licenses/LICENSE-2.0 // -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- + namespace CampusAppWP8.Pages.Dev { using System; using System.Threading; using System.Windows; - using System.Windows.Media.Imaging; + using System.Windows.Media.Imaging; + using CampusAppWP8.Model.Setting; using CampusAppWP8.Resources; using CampusAppWP8.Utility; + using CampusAppWP8.Utility.Lui.MessageBoxes; using Microsoft.Devices; using Microsoft.Phone.Controls; using ZXing; - using CampusAppWP8.Utility.Lui.MessageBoxes; - using CampusAppWP8.Model.Setting; - /// - /// QR Code scanner. - /// + /// QR Code scanner. + /// fiedlchr, 15.10.2013. + /// public partial class QRScanner : PhoneApplicationPage { #region Member - /// The camera object. + /// The camera object. private PhotoCamera cam = null; - /// Thread for transfer the preview image to the reader. + /// Thread for transfer the preview image to the reader. private Thread captureThread = null; - /// For ending the thread. + /// For ending the thread. private volatile bool captureThreadExit = false; - /// QR reader object. + /// QR reader object. private IBarcodeReader barcodeReader = null; - /// Bitmap for transfer the camera image to the reader. + /// Bitmap for transfer the camera image to the reader. private WriteableBitmap bit = null; - /// true if this object is in autofocus. + /// true if this object is in autofocus. private bool isInAutofocus = false; - /// - /// Variable for the storage key of the result - /// + /// Variable for the storage key of the result. private string resultAppStoreKey; #endregion #region Constructor - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. + /// fiedlchr, 15.10.2013. public QRScanner() { this.InitializeComponent(); @@ -73,10 +74,9 @@ namespace CampusAppWP8.Pages.Dev #region protected - /// - /// Is called when this page will become the current page of a frame. - /// - /// event args. + /// Is called when this page will become the current page of a frame. + /// fiedlchr, 15.10.2013. + /// protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { if (PhotoCamera.IsCameraTypeSupported(CameraType.Primary) == true) @@ -85,6 +85,7 @@ namespace CampusAppWP8.Pages.Dev { this.resultAppStoreKey = NavigationContext.QueryString[Constants.ParamQRResultKey]; } + this.isInAutofocus = true; this.cam = new PhotoCamera(CameraType.Primary); this.cam.Initialized += new EventHandler(this.Cam_Initialized); @@ -102,10 +103,9 @@ namespace CampusAppWP8.Pages.Dev } } - /// - /// Is called when this page will not be the current page of a frame. - /// - /// event args. + /// Is called when this page will not be the current page of a frame. + /// fiedlchr, 15.10.2013. + /// protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e) { if (this.cam != null) @@ -116,7 +116,6 @@ namespace CampusAppWP8.Pages.Dev { this.captureThread.Join(); } - this.cam.Dispose(); @@ -124,10 +123,9 @@ namespace CampusAppWP8.Pages.Dev } } - /// - /// Is called after the orientation has changed. - /// - /// event args. + /// Is called after the orientation has changed. + /// fiedlchr, 15.10.2013. + /// protected override void OnOrientationChanged(OrientationChangedEventArgs e) { base.OnOrientationChanged(e); @@ -159,11 +157,10 @@ namespace CampusAppWP8.Pages.Dev #region private - /// - /// Event handler. Called by Cam for initialized events. - /// - /// Source of the event. - /// Camera operation completed event information. + /// Event handler. Called by Cam for initialized events. + /// fiedlchr, 15.10.2013. + /// Source of the event. + /// Camera operation completed event information. private void Cam_Initialized(object sender, Microsoft.Devices.CameraOperationCompletedEventArgs e) { if (e.Succeeded) @@ -179,21 +176,18 @@ namespace CampusAppWP8.Pages.Dev } } - /// - /// Event handler. Called by Cam for automatic focus completed events. - /// - /// Source of the event. - /// Camera operation completed event information. + /// Event handler. Called by Cam for automatic focus completed events. + /// fiedlchr, 15.10.2013. + /// Source of the event. + /// Camera operation completed event information. private void Cam_AutoFocusCompl(object sender, CameraOperationCompletedEventArgs e) { - //this.isInAutofocus = false; } - /// - /// Event handler. Called by CamView for tap events. - /// - /// Source of the event. - /// Gesture event information. + /// Event handler. Called by CamView for tap events. + /// fiedlchr, 15.10.2013. + /// Source of the event. + /// Gesture event information. private void CamView_Tap(object sender, System.Windows.Input.GestureEventArgs e) { if (this.cam != null && this.isInAutofocus == false) @@ -213,12 +207,11 @@ namespace CampusAppWP8.Pages.Dev } } - /// - /// Executes the capture image action. - /// - /// The image. - /// The width. - /// The height. + /// Executes the capture image action. + /// fiedlchr, 15.10.2013. + /// The image. + /// The width. + /// The height. private void OnCaptureImage(int[] img, int width, int height) { Array.Copy(img, this.bit.Pixels, img.Length); @@ -266,6 +259,9 @@ namespace CampusAppWP8.Pages.Dev } } + /// Go to campus-mappage. + /// fiedlchr, 15.10.2013. + /// The tag content. private void GoToCampusMappage(string tagContent) { string pid = Wp8StringManager.FilterPlaceIdinQRResultString(tagContent); @@ -275,9 +271,8 @@ namespace CampusAppWP8.Pages.Dev NavigationService.Navigate(url); } - /// - /// Capture thread function. - /// + /// Capture thread function. + /// fiedlchr, 15.10.2013. private void CaptureThreadFunc() { Size resolution = this.cam.PreviewResolution; @@ -285,13 +280,10 @@ namespace CampusAppWP8.Pages.Dev while (!this.captureThreadExit) { - //if (this.isInAutofocus == false) - //{ this.cam.GetPreviewBufferArgb32(buffer); this.OnCaptureImage(buffer, (int)resolution.Width, (int)resolution.Height); this.isInAutofocus = true; - //} System.Threading.Thread.Sleep(1000); } diff --git a/CampusAppWP8/CampusAppWP8/Pages/Exams/Exams.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Exams/Exams.xaml.cs index cf2c0e0a..afca0713 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Exams/Exams.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Exams/Exams.xaml.cs @@ -1,12 +1,16 @@ -// -// Company copyright tag. +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 02.09.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the exams.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.Exams { + using System; using System.Linq; + using System.Threading; using System.Windows; using System.Windows.Controls; using System.Windows.Navigation; @@ -16,27 +20,26 @@ namespace CampusAppWP8.Pages.Exams using CampusAppWP8.Utility; using CampusAppWP8.Utility.Lui.MessageBoxes; using Microsoft.Phone.Controls; - using System.Threading; - using System; - /// class of ExamsPage. - /// Stubbfel, 02.09.2013. + /// class of ExamsPage. + /// Stubbfel, 02.09.2013. + /// public partial class Exams : PhoneApplicationPage { #region Member - /// The feed. + /// The feed. private ExamFeed feed; - /// The exam file. + /// The exam file. private ExamFile file; #endregion #region Constructor - /// Initializes a new instance of the Exams class. - /// Stubbfel, 02.09.2013. + /// Initializes a new instance of the Exams class. + /// Stubbfel, 02.09.2013. public Exams() { this.InitializeComponent(); @@ -52,9 +55,9 @@ namespace CampusAppWP8.Pages.Exams #region protected - /// Wird aufgerufen, wenn eine Seite die aktive Seite in einem Frame wird. - /// Stubbfel, 02.09.2013. - /// Ein Objekt, das die Ereignisdaten enthält. + /// Is called when this page will become the current page of a frame. + /// stubbfel, 15.10.2013. + /// protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); @@ -67,14 +70,11 @@ namespace CampusAppWP8.Pages.Exams this.DefHeader.ProgressVisibility = Visibility.Visible; Thread thread = new Thread(new ThreadStart(this.LoadingFeed)); thread.Start(); - } - /// - /// Wird aufgerufen, wenn eine Seite nicht mehr die aktive Seite in einem Frame ist. - /// - /// Stubbfel, 02.09.2013. - /// Ein Objekt, das die Ereignisdaten enthält. + /// Is called when this page will not be the current page of a frame. + /// stubbfel, 15.10.2013. + /// protected override void OnNavigatedFrom(NavigationEventArgs e) { if (NavigationMode.Back == e.NavigationMode) @@ -99,9 +99,8 @@ namespace CampusAppWP8.Pages.Exams this.feed.LoadData(Utilities.GetLoadModus()); } - - /// Method initialize the Feed. - /// Stubbfel, 02.09.2013. + /// Method initialize the Feed. + /// Stubbfel, 02.09.2013. private void InitializeFeed() { this.feed = new ExamFeed(); @@ -110,8 +109,8 @@ namespace CampusAppWP8.Pages.Exams this.feed.OnFailedFile += new ExamFeed.OnFailed(this.FeedIsFailFile); } - /// Method will be execute if the feed is ready. - /// Stubbfel, 02.09.2013. + /// Method will be execute if the feed is ready. + /// Stubbfel, 02.09.2013. private void FeedIsReady() { if (this.Dispatcher != null) @@ -124,16 +123,16 @@ namespace CampusAppWP8.Pages.Exams } } - /// Executes the PDF reader operation. - /// Stubbfel, 03.09.2013. + /// Executes the PDF reader operation. + /// Stubbfel, 03.09.2013. private void LaunchPDFReader() { this.DefHeader.ProgressVisibility = Visibility.Collapsed; this.file.SaveAndLaunchFile(); } - /// Sets up the exam list. - /// Stubbfel, 02.09.2013. + /// Sets up the exam list. + /// Stubbfel, 02.09.2013. private void SetupExamList() { var bachelorList = from exam in this.feed.Model.Exams @@ -158,9 +157,9 @@ namespace CampusAppWP8.Pages.Exams this.DefHeader.ProgressVisibility = Visibility.Collapsed; } - /// Calculates the selected index. - /// Stubbfel, 02.09.2013. - /// The calculated selected index. + /// Calculates the selected index. + /// Stubbfel, 02.09.2013. + /// The calculated selected index. private int CalcSelectedIndex() { int result = App.LoadFromIsolatedStorage(Constants.ExamPageModelKey); @@ -184,12 +183,12 @@ namespace CampusAppWP8.Pages.Exams break; } } - + return result; } - /// Method will be execute if the feed is failed. - /// Stubbfel, 02.09.2013. + /// Method will be execute if the feed is failed. + /// Stubbfel, 02.09.2013. private void FeedIsFailWeb() { if (this.Dispatcher != null) @@ -200,29 +199,30 @@ namespace CampusAppWP8.Pages.Exams { MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoadWeb); } + this.feed.ForceReadFile(); } - /// Method will be execute if the feed is failed. - /// Stubbfel, 02.09.2013. + /// Method will be execute if the feed is failed. + /// Stubbfel, 02.09.2013. private void FeedIsFailFile() { if (this.Dispatcher != null) { - this.Dispatcher.BeginInvoke(new Action(() => MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoadFile))); + this.Dispatcher.BeginInvoke(new Action(() => MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoadFile))); this.Dispatcher.BeginInvoke(new Action(() => this.DefHeader.ProgressVisibility = Visibility.Collapsed)); } else { - MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoadFile); + MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoadFile); this.DefHeader.ProgressVisibility = Visibility.Collapsed; } } - /// Event handler. Called by Button for click events. - /// Stubbfel, 03.09.2013. - /// Source of the event. - /// Routed event information. + /// Event handler. Called by Button for click events. + /// Stubbfel, 03.09.2013. + /// Source of the event. + /// Routed event information. private void Button_Click(object sender, RoutedEventArgs e) { Button button = sender as Button; diff --git a/CampusAppWP8/CampusAppWP8/Pages/Lecture/LecturePage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Lecture/LecturePage.xaml.cs index 606a9366..87ae249c 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Lecture/LecturePage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Lecture/LecturePage.xaml.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 13.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the lecture page.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.Lecture { using System; @@ -18,38 +19,28 @@ namespace CampusAppWP8.Pages.Lecture using CampusAppWPortalLib8.Model.Utility; using Microsoft.Phone.Controls; - - /// - /// Class for the LecturePage - /// + /// Class for the LecturePage. + /// Stubbfel, 15.10.2013. + /// public partial class LecturePage : PhoneApplicationPage { #region Member - /// - /// actual LectureAPI - /// + /// actual LectureAPI. private LectureApi api; - /// - /// List for the courses of the BTU - /// - /// - /// need to be extend to full list - /// + /// List for the courses of the BTU. private LecturePageModel pageModel; - /// - /// flag for initialed page - /// + /// flag for initialed page. private bool init; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public LecturePage() { this.InitializeComponent(); @@ -63,10 +54,9 @@ namespace CampusAppWP8.Pages.Lecture #region protected - /// - /// Methods overrides the OnNavigatedFrom-Method - /// - /// some NavigationEventArgs + /// Methods overrides the OnNavigatedFrom-Method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedFrom(NavigationEventArgs e) { if (NavigationMode.Back == e.NavigationMode) @@ -88,9 +78,8 @@ namespace CampusAppWP8.Pages.Lecture #region private - /// - /// Load the PageModel - /// + /// Load the PageModel. + /// Stubbfel, 15.10.2013. private void LoadPageModel() { this.DefHeader.ProgressVisibility = Visibility.Visible; @@ -99,9 +88,8 @@ namespace CampusAppWP8.Pages.Lecture this.pageModel.LoadLists(); } - /// - /// Method sets the ItemSource of the ListPickers - /// + /// Method sets the ItemSource of the ListPickers. + /// Stubbfel, 15.10.2013. private void SetupListPickers() { this.Course.ItemsSource = this.pageModel.CourseList.List; @@ -122,10 +110,9 @@ namespace CampusAppWP8.Pages.Lecture this.DefHeader.ProgressVisibility = Visibility.Collapsed; } - /// - /// Method set the last selected index of the ListPickers - /// - /// Last PageModel + /// Method set the last selected index of the ListPickers. + /// Stubbfel, 15.10.2013. + /// Last PageModel. private void SetLastSelectedIndex(LecturePageModel lastPageModel) { this.pageModel.SelectCourseIndex = lastPageModel.SelectCourseIndex; @@ -135,9 +122,8 @@ namespace CampusAppWP8.Pages.Lecture this.pageModel.SelectSemesterIndex = lastPageModel.SelectSemesterIndex; } - /// - /// Method set the last selected index of the ListPickers - /// + /// Method set the last selected index of the ListPickers. + /// Stubbfel, 15.10.2013. private void SetSelectedIndex() { this.Course.SelectedIndex = this.pageModel.SelectCourseIndex; @@ -147,9 +133,8 @@ namespace CampusAppWP8.Pages.Lecture this.To.SelectedIndex = this.pageModel.SelectToIndex; } - /// - /// Method store the actual selectIndex to the models - /// + /// Method store the actual selectIndex to the models. + /// Stubbfel, 15.10.2013. private void StoreSelectedIndex() { this.pageModel.SelectCourseIndex = this.Course.SelectedIndex; @@ -159,11 +144,10 @@ namespace CampusAppWP8.Pages.Lecture this.pageModel.SelectToIndex = this.To.SelectedIndex; } - /// - /// Method send a request to the Feed - /// - /// sender of this event - /// events arguments + /// Method send a request to the Feed. + /// Stubbfel, 15.10.2013. + /// sender of this event. + /// events arguments. private void SendRequest(object sender, RoutedEventArgs e) { this.api = new LectureApi(); @@ -176,9 +160,10 @@ namespace CampusAppWP8.Pages.Lecture } /// - /// Method read the values from the inputs and put them in a list of parameters + /// Method read the values from the inputs and put them in a list of parameters. /// - /// a list of parameters + /// Stubbfel, 15.10.2013. + /// a list of parameters. private List CreateUrlParameter() { ListPickerItemModel semester = (ListPickerItemModel)this.Semester.SelectedItem; @@ -196,9 +181,8 @@ namespace CampusAppWP8.Pages.Lecture return parameterList; } - /// - /// Method will be execute if the feed is ready - /// + /// Method will be execute if the feed is ready. + /// Stubbfel, 15.10.2013. private void ApiIsReady() { string query = this.ActivtyName.Text; @@ -213,11 +197,10 @@ namespace CampusAppWP8.Pages.Lecture NavigationService.Navigate(url); } - /// - /// EventHandler for changed degree selection - /// - /// sender object - /// some args + /// EventHandler for changed degree selection. + /// Stubbfel, 15.10.2013. + /// sender object. + /// some args. private void DegreeSelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { if (!this.init) @@ -230,11 +213,10 @@ namespace CampusAppWP8.Pages.Lecture this.From.ItemsSource = this.pageModel.FromNumberList.List; } - /// - /// EventHandler for changed from selection - /// - /// sender object - /// some args + /// EventHandler for changed from selection. + /// Stubbfel, 15.10.2013. + /// sender object. + /// some args. private void FromSelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { if (!this.init) @@ -248,9 +230,8 @@ namespace CampusAppWP8.Pages.Lecture this.To.ItemsSource = this.pageModel.ToNumberList.List; } - /// - /// Method will be execute if the feed is failed - /// + /// Method will be execute if the feed is failed. + /// Stubbfel, 15.10.2013. private void ApiIsFail() { MessageBoxResult result = MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoad); diff --git a/CampusAppWP8/CampusAppWP8/Pages/Lecture/ModulWebPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ModulWebPage.xaml.cs index b7a08572..4864a549 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Lecture/ModulWebPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ModulWebPage.xaml.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 11.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the modul web page.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.Lecture { using System; @@ -12,16 +13,15 @@ namespace CampusAppWP8.Pages.Lecture using CampusAppWP8.Resources; using Microsoft.Phone.Controls; - /// - /// Class for the page which shows Webpages from the BaseAddress - /// + /// A modul web page. + /// Stubbfel, 15.10.2013. + /// public partial class ModulWebPage : PhoneApplicationPage { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public ModulWebPage() { this.InitializeComponent(); @@ -31,10 +31,9 @@ namespace CampusAppWP8.Pages.Lecture #region Method - /// - /// Override the OnNavigatedTo method - /// - /// Arguments of navigation + /// Override the OnNavigatedTo method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedTo(NavigationEventArgs e) { if (NavigationContext.QueryString.ContainsKey(Constants.ParamModelLecture_ModulNumber)) diff --git a/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultDetailPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultDetailPage.xaml.cs index 30de8370..dd005180 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultDetailPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultDetailPage.xaml.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 11.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the result detail page.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.Lecture { using System.Windows.Navigation; @@ -12,16 +13,15 @@ namespace CampusAppWP8.Pages.Lecture using CampusAppWP8.Resources; using Microsoft.Phone.Controls; - /// - /// Class for the page which shows details of an activity - /// + /// Class for the page which shows details of an activity. + /// Stubbfel, 15.10.2013. + /// public partial class ResultDetailPage : PhoneApplicationPage { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public ResultDetailPage() { this.InitializeComponent(); @@ -32,10 +32,10 @@ namespace CampusAppWP8.Pages.Lecture #region Method #region protected - /// - /// Override the OnNavigatedTo method - /// - /// Arguments of navigation + + /// Override the OnNavigatedTo method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedTo(NavigationEventArgs e) { if (NavigationContext.QueryString.ContainsKey(Constants.ParamModelLecture_ActivityId)) @@ -51,10 +51,9 @@ namespace CampusAppWP8.Pages.Lecture #region private - /// - /// Method load a certain Activity from the model - /// - /// id of the activity + /// Method load a certain Activity from the model. + /// Stubbfel, 15.10.2013. + /// id of the activity. private void LoadActivity(int activityId) { LectureWp8List list = App.LoadFromIsolatedStorage(Constants.IsolatedStorage_LectureModel); diff --git a/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultPage.xaml.cs index 296593b0..4a99fffb 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultPage.xaml.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 11.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the result page.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.Lecture { using System; @@ -16,16 +17,15 @@ namespace CampusAppWP8.Pages.Lecture using CampusAppWP8.Utility.Lui.MessageBoxes; using Microsoft.Phone.Controls; - /// - /// Class for the page which shows the results of an LectureRequest - /// + /// Class for the page which shows the results of an LectureRequest. + /// Stubbfel, 15.10.2013. + /// public partial class ResultPage : PhoneApplicationPage { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public ResultPage() { this.InitializeComponent(); @@ -35,10 +35,9 @@ namespace CampusAppWP8.Pages.Lecture #region Method - /// - /// Override the OnNavigatedTo method - /// - /// Arguments of navigation + /// Override the OnNavigatedTo method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); diff --git a/CampusAppWP8/CampusAppWP8/Pages/Links/LinkPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Links/LinkPage.xaml.cs index b4962976..0e3a5bac 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Links/LinkPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Links/LinkPage.xaml.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 02.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the link page.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.Links { using System; @@ -16,35 +17,28 @@ namespace CampusAppWP8.Pages.Links using CampusAppWP8.Utility.Lui.MessageBoxes; using Microsoft.Phone.Controls; - /// - /// Class for the LinkPage - /// + /// Class for the LinkPage. + /// Stubbfel, 15.10.2013. + /// public partial class LinkPage : PhoneApplicationPage { #region Members - /// - /// the feed of the CommonLinks - /// + /// the feed of the CommonLinks. private CommonLinkFeed commonLinkFeed; - /// - /// the feed of the ClubLinks - /// + /// the feed of the ClubLinks. private ClubLinkFeed clubLinkFeed; - /// - /// how many feeds are currently loading - /// + /// how many feeds are currently loading. private int loadingFeeds; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public LinkPage() { this.InitializeComponent(); @@ -56,10 +50,9 @@ namespace CampusAppWP8.Pages.Links #region protected - /// - /// Override the OnNavigatedTo method - /// - /// Arguments of navigation + /// Override the OnNavigatedTo method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); @@ -77,10 +70,9 @@ namespace CampusAppWP8.Pages.Links this.clubLinkFeed.LoadData(Utilities.GetLoadModus()); } - /// - /// Override the OnNavigatedFrom method - /// - /// Arguments of navigation + /// Override the OnNavigatedFrom method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedFrom(NavigationEventArgs e) { this.clubLinkFeed.SaveData(); @@ -90,9 +82,8 @@ namespace CampusAppWP8.Pages.Links #endregion #region private - /// - /// Method initialize the Feeds - /// + /// Method initialize the Feeds. + /// Stubbfel, 15.10.2013. private void InitializeFeeds() { if (this.commonLinkFeed == null) @@ -106,9 +97,8 @@ namespace CampusAppWP8.Pages.Links } } - /// - /// Method initialize the CommonLinkFeed - /// + /// Method initialize the CommonLinkFeed. + /// Stubbfel, 15.10.2013. private void InitializeCommonLinkFeed() { this.commonLinkFeed = new CommonLinkFeed(); @@ -117,9 +107,8 @@ namespace CampusAppWP8.Pages.Links this.commonLinkFeed.OnFailedFile += new CommonLinkFeed.OnFailed(this.FeedIsFailFile); } - /// - /// Method initialize the ClubLinkFeed - /// + /// Method initialize the ClubLinkFeed. + /// Stubbfel, 15.10.2013. private void InitializeClubLinkFeed() { this.clubLinkFeed = new ClubLinkFeed(); @@ -128,46 +117,42 @@ namespace CampusAppWP8.Pages.Links this.clubLinkFeed.OnFailedFile += new ClubLinkFeed.OnFailed(this.FeedIsFailFile); } - /// - /// Method will be execute if the CommonLinkFeed is ready - /// + /// Method will be execute if the CommonLinkFeed is ready. + /// Stubbfel, 15.10.2013. private void CommonLinkFeedIsReady() { this.SetupCommonPivot(); this.SetupProgressBarVisibilityCollapsed(); } - /// - /// Method will be execute if the ClubLinkFeed is ready - /// + /// Method will be execute if the ClubLinkFeed is ready. + /// Stubbfel, 15.10.2013. private void ClubLinkFeedIsReady() { this.SetupClubPivot(); this.SetupProgressBarVisibilityCollapsed(); } - /// - /// Method set ItemSource for the CommonLinkPanel - /// + /// Method set ItemSource for the CommonLinkPanel. + /// Stubbfel, 15.10.2013. private void SetupCommonPivot() { this.CommonLinkPanel.ItemsSource = this.commonLinkFeed.Model.Links; } - /// - /// Method set ItemSource for the ClubLinkPanel - /// + /// Method set ItemSource for the ClubLinkPanel. + /// Stubbfel, 15.10.2013. private void SetupClubPivot() { this.ClubLinkPanel.ItemsSource = this.clubLinkFeed.Model.Links; } /// - /// On clicking the update button in the ApplicationBar. - /// Force a data update from the web. + /// On clicking the update button in the ApplicationBar. Force a data update from the web. /// - /// button object - /// event args + /// Stubbfel, 15.10.2013. + /// button object. + /// event args. private void LinkForceUpdate_Click(object sender, EventArgs e) { this.loadingFeeds = 2; @@ -177,27 +162,24 @@ namespace CampusAppWP8.Pages.Links this.clubLinkFeed.ForceWebUpdate(); } - /// - /// Method will be execute if the feed is failed - /// + /// Method will be execute if the feed is failed. + /// Stubbfel, 15.10.2013. private void ClubLinkFeedIsFailWeb() { MessageBoxResult result = MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoadWeb); this.clubLinkFeed.ForceReadFile(); } - /// - /// Method will be execute if the feed is failed - /// + /// Method will be execute if the feed is failed. + /// Stubbfel, 15.10.2013. private void CommonLinkFeedIsFailWeb() { MessageBoxResult result = MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoadWeb); this.commonLinkFeed.ForceReadFile(); } - /// - /// Method will be execute if the feed is failed - /// + /// Method will be execute if the feed is failed. + /// Stubbfel, 15.10.2013. private void FeedIsFailFile() { MessageBoxResult result = MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoadFile); @@ -205,8 +187,9 @@ namespace CampusAppWP8.Pages.Links } /// - /// Method set the visibility of the ProgressBar to Collapsed if loadingFeeds less then 1 + /// Method set the visibility of the ProgressBar to Collapsed if loadingFeeds less then 1. /// + /// Stubbfel, 15.10.2013. private void SetupProgressBarVisibilityCollapsed() { this.loadingFeeds--; @@ -216,11 +199,10 @@ namespace CampusAppWP8.Pages.Links } } - /// - /// Method handle OrientationPage - /// - /// Caller of the function - /// some EventArgs + /// Method handle OrientationPage. + /// Stubbfel, 15.10.2013. + /// Caller of the function. + /// some EventArgs. private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e) { if (this.Orientation == PageOrientation.LandscapeLeft || this.Orientation == PageOrientation.LandscapeRight) diff --git a/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs index 0ee00176..ac8acaec 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs @@ -1,51 +1,43 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 04.05.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the mensa page.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.Mensa { using System; using System.Threading; using System.Windows; using System.Windows.Navigation; - using CampusAppWP8.Api.GeoApi; using CampusAppWP8.Feed.Mensa; using CampusAppWP8.Resources; using CampusAppWP8.Utility; using CampusAppWP8.Utility.Lui.MessageBoxes; using CampusAppWPortalLib8.Model.Mensa; + using CampusAppWPortalLib8.Model.Settings; using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; - using CampusAppWPortalLib8.Model.Settings; - /// - /// Class for the MensaPage - /// + /// Class for the MensaPage. + /// Stubbfel, 15.10.2013. + /// public partial class MensaPage : PhoneApplicationPage { #region Members - /// - /// the feed of the mensa - /// + /// the feed of the mensa. private MensaFeed feed; /// - /// Index representing the weekday of today - /// 0 - Monday(Default) - /// 1 - Tuesday - /// 2 - Wednesday - /// 3 - Thursday - /// 4 - Friday + /// Index representing the weekday of today 0 - Monday(Default) + /// 1 - Tuesday 2 - Wednesday 3 - Thursday 4 - Friday. /// private int selectedIndex; - /// - /// Flag indicate that the feed was refreshed - /// + /// Flag indicate that the feed was refreshed. private bool refreshed = false; /// @@ -53,18 +45,15 @@ namespace CampusAppWP8.Pages.Mensa /// // private CampusSpsApi campusApi; - /// - /// Flag for forcing webLoad - /// + /// Flag for forcing webLoad. private bool forceLoad = false; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public MensaPage() { this.InitializeComponent(); @@ -96,10 +85,9 @@ namespace CampusAppWP8.Pages.Mensa #region protected - /// - /// Override the OnNavigatedTo method - /// - /// Arguments of navigation + /// Override the OnNavigatedTo method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); @@ -108,13 +96,13 @@ namespace CampusAppWP8.Pages.Mensa { ApplicationBar.Mode = Microsoft.Phone.Shell.ApplicationBarMode.Default; } + this.InitializeFeed(); } - /// - /// Override the OnNavigatedFrom method - /// - /// Arguments of navigation + /// Override the OnNavigatedFrom method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedFrom(NavigationEventArgs e) { if (this.feed != null) @@ -154,9 +142,8 @@ namespace CampusAppWP8.Pages.Mensa } }*/ - /// - /// Method determine campus and load data from correct feed - /// + /// Method determine campus and load data from correct feed. + /// Stubbfel, 15.10.2013. private void DeterminCurrentCampusAndLoadFeed() { Campus mensaCampus = Utilities.DetermineCampus(); @@ -171,7 +158,6 @@ namespace CampusAppWP8.Pages.Mensa { this.Dispatcher.BeginInvoke(new Action(() => this.InitializeFeed(mensaCampus))); } - } else { @@ -192,10 +178,9 @@ namespace CampusAppWP8.Pages.Mensa this.campusApi.LoadData();*/ } - /// - /// Method initialize the Feed depends of a campus - /// - /// campus parameter + /// Method initialize the Feed depends of a campus. + /// Stubbfel, 15.10.2013. + /// campus parameter. private void InitializeFeed(CampusAppWPortalLib8.Model.Settings.Campus campus) { this.feed = MensaFeed.CreateCampusMensaFeed(campus); @@ -215,9 +200,8 @@ namespace CampusAppWP8.Pages.Mensa } } - /// - /// Method initialize the Feed - /// + /// Method initialize the Feed. + /// Stubbfel, 15.10.2013. private void InitializeFeed() { if (Settings.AppSetting.GeoWatchEnable) @@ -231,36 +215,32 @@ namespace CampusAppWP8.Pages.Mensa } } - /// - /// Method will be execute if the feed is ready - /// + /// Method will be execute if the feed is ready. + /// Stubbfel, 15.10.2013. private void FeedIsReady() { this.SetupMensaPivot(); this.DefHeader.ProgressVisibility = Visibility.Collapsed; } - /// - /// Method will be execute if the feed is failed - /// + /// Method will be execute if the feed is failed. + /// Stubbfel, 15.10.2013. private void FeedIsFailWeb() { MessageBoxResult result = MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoadWeb); this.feed.ForceReadFile(); } - /// - /// Method will be execute if the feed is failed - /// + /// Method will be execute if the feed is failed. + /// Stubbfel, 15.10.2013. private void FeedIsFailFile() { MessageBoxResult result = MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoadFile); this.DefHeader.ProgressVisibility = Visibility.Collapsed; } - /// - /// Method set ItemSource and SelectedIndex for the pivot - /// + /// Method set ItemSource and SelectedIndex for the pivot. + /// Stubbfel, 15.10.2013. private void SetupMensaPivot() { this.DefHeader.HeaderName = AppResources.MensaApp_Title + ": " + this.feed.Title; @@ -270,9 +250,8 @@ namespace CampusAppWP8.Pages.Mensa this.MensaPivot.SelectedIndex = this.selectedIndex; } - /// - /// Method create the IconsUrl for the meals - /// + /// Method create the IconsUrl for the meals. + /// Stubbfel, 15.10.2013. private void CreatesMealIcons() { foreach (MenuModel menus in this.feed.Model.Menus) @@ -316,9 +295,8 @@ namespace CampusAppWP8.Pages.Mensa } } - /// - /// Method calculate which pivot has to be selected - /// + /// Method calculate which pivot has to be selected. + /// Stubbfel, 15.10.2013. private void CalcSelectedIndex() { DayOfWeek today = DateTime.Now.DayOfWeek; @@ -349,11 +327,11 @@ namespace CampusAppWP8.Pages.Mensa } /// - /// On clicking the update button in the ApplicationBar. - /// Force a data update from the web. + /// On clicking the update button in the ApplicationBar. Force a data update from the web. /// - /// button object - /// event args + /// Stubbfel, 15.10.2013. + /// button object. + /// event args. private void MensaForceUpdate_Click(object sender, EventArgs e) { this.DefHeader.ProgressVisibility = Visibility.Visible; @@ -362,41 +340,40 @@ namespace CampusAppWP8.Pages.Mensa this.refreshed = true; } - /// Event handler. Called by ApplicationBarMenuItem for click events. - /// Stubbfel, 26.08.2013. - /// button object. - /// Event information. + /// Event handler. Called by ApplicationBarMenuItem for click events. + /// Stubbfel, 26.08.2013. + /// button object. + /// Event information. private void ApplicationBarMenuItem_Click(object sender, EventArgs e) { this.DefHeader.ProgressVisibility = Visibility.Visible; this.InitializeFeed(CampusAppWPortalLib8.Model.Settings.Campus.CB_MAIN); } - /// Event handler. Called by ApplicationBarMenuItem2 for click events. - /// Stubbfel, 26.08.2013. - /// button object. - /// Event information. + /// Event handler. Called by ApplicationBarMenuItem2 for click events. + /// Stubbfel, 26.08.2013. + /// button object. + /// Event information. private void ApplicationBarMenuItem2_Click(object sender, EventArgs e) { this.DefHeader.ProgressVisibility = Visibility.Visible; this.InitializeFeed(CampusAppWPortalLib8.Model.Settings.Campus.CB_SOUTH); } - /// Event handler. Called by ApplicationBarMenuItem3 for click events. - /// Stubbfel, 26.08.2013. - /// button object. - /// Event information. + /// Event handler. Called by ApplicationBarMenuItem3 for click events. + /// Stubbfel, 26.08.2013. + /// button object. + /// Event information. private void ApplicationBarMenuItem3_Click(object sender, EventArgs e) { this.DefHeader.ProgressVisibility = Visibility.Visible; this.InitializeFeed(CampusAppWPortalLib8.Model.Settings.Campus.SFB_MAIN); } - /// - /// Method handle OrientationPage - /// - /// Caller of the function - /// some EventArgs + /// Method handle OrientationPage. + /// Stubbfel, 15.10.2013. + /// Caller of the function. + /// some EventArgs. private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e) { if (this.Orientation == PageOrientation.LandscapeLeft || this.Orientation == PageOrientation.LandscapeRight) @@ -418,8 +395,9 @@ namespace CampusAppWP8.Pages.Mensa FrameworkElement frameelement = sender as FrameworkElement; if (frameelement == null) { - + return; } + string copyText = frameelement.Tag.ToString() + " (" + AppResources.Setting_UserCampus + " " + this.feed.Title + ")"; Clipboard.SetText(copyText); } diff --git a/CampusAppWP8/CampusAppWP8/Pages/Person/PersonPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Person/PersonPage.xaml.cs index 520f1d88..886c8239 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Person/PersonPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Person/PersonPage.xaml.cs @@ -1,14 +1,16 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 09.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the person page.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.Person { + using System.Collections.Generic; using System.Windows; + using System.Windows.Controls; using System.Windows.Input; using CampusAppWP8.Api.Person; using CampusAppWP8.Model.Person; @@ -18,24 +20,23 @@ namespace CampusAppWP8.Pages.Person using CampusAppWPortalLib8.Model.Utility; using Microsoft.Phone.Controls; using Microsoft.Phone.Tasks; - using System.Collections.Generic; - using System.Windows.Controls; - /// Person page. - /// Stubbfel, 09.09.2013. + /// Person page. + /// Stubbfel, 09.09.2013. + /// public partial class PersonPage : PhoneApplicationPage { #region Member - /// The API. + /// The API. private PersonSearchApi api; #endregion #region Constructor - /// Initializes a new instance of the PersonPage class. - /// Stubbfel, 09.09.2013. + /// Initializes a new instance of the PersonPage class. + /// Stubbfel, 09.09.2013. public PersonPage() { this.InitializeComponent(); @@ -45,10 +46,10 @@ namespace CampusAppWP8.Pages.Person #region Method - /// Sends a request. - /// Stubbfel, 09.09.2013. - /// Source of the event. - /// Routed event information. + /// Sends a request. + /// Stubbfel, 09.09.2013. + /// Source of the event. + /// Routed event information. private void SendRequest(object sender, RoutedEventArgs e) { string query = this.SearchName.Text.Trim(); @@ -66,10 +67,10 @@ namespace CampusAppWP8.Pages.Person this.api.LoadData(); } - /// Creates URL parameter. - /// Stubbfel, 09.09.2013. - /// The name. - /// The new URL parameter. + /// Creates URL parameter. + /// Stubbfel, 09.09.2013. + /// The name. + /// The new URL parameter. private List CreateUrlParameter(string name) { List parameterList = new List(); @@ -77,24 +78,24 @@ namespace CampusAppWP8.Pages.Person return parameterList; } - /// API is fail. - /// Stubbfel, 09.09.2013. + /// API is fail. + /// Stubbfel, 09.09.2013. private void ApiIsFail() { MessageBoxResult result = MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoad); this.DefHeader.ProgressVisibility = Visibility.Collapsed; } - /// API is ready. - /// Stubbfel, 09.09.2013. + /// API is ready. + /// Stubbfel, 09.09.2013. private void ApiIsReady() { this.SetupResultBox(); this.DefHeader.ProgressVisibility = Visibility.Collapsed; } - /// Sets up the result box. - /// Stubbfel, 09.09.2013. + /// Sets up the result box. + /// Stubbfel, 09.09.2013. private void SetupResultBox() { this.api.Model.RemoveNonFunctionAndSetIdsPerson(); @@ -105,10 +106,10 @@ namespace CampusAppWP8.Pages.Person } } - /// Event handler. Called by Button for click events. - /// Stubbfel, 09.09.2013. - /// Source of the event. - /// Routed event information. + /// Event handler. Called by Button for click events. + /// Stubbfel, 09.09.2013. + /// Source of the event. + /// Routed event information. private void Button_Click(object sender, RoutedEventArgs e) { AddPersonButton btn = sender as AddPersonButton; @@ -144,20 +145,23 @@ namespace CampusAppWP8.Pages.Person saveContactTask.Show(); } + /// Event handler. Called by SearchName for key down events. + /// Stubbfel, 15.10.2013. + /// Source of the event. + /// Key event information. private void SearchName_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) { if (e.Key == Key.Enter) { - this.SendRequest(sender,e); + this.SendRequest(sender, e); this.ResultBox.Focus(); } } - /// - /// Method is called when the selection in the listbox is changed. - /// - /// listbox object. - /// event args. + /// Method is called when the selection in the ListBox is changed. + /// Stubbfel, 15.10.2013. + /// ListBox object. + /// event args. private void Box_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { (sender as ListBox).SelectedIndex = -1; diff --git a/CampusAppWP8/CampusAppWP8/Pages/PlaceNews/PlaceNews.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/PlaceNews/PlaceNews.xaml.cs index e4a529f5..0bd1f127 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/PlaceNews/PlaceNews.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/PlaceNews/PlaceNews.xaml.cs @@ -1,16 +1,17 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 09.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the place news.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.PlaceNews { using System; using System.Collections.Generic; using System.Linq; + using System.Runtime.InteropServices.WindowsRuntime; using System.Threading; using System.Windows; using System.Windows.Controls; @@ -21,49 +22,50 @@ namespace CampusAppWP8.Pages.PlaceNews using CampusAppWP8.Resources; using CampusAppWP8.Utility; using CampusAppWP8.Utility.Lui.MessageBoxes; + using CampusAppWP8.Utility.NDEF; using Microsoft.Phone.Controls; using Windows.Networking.Proximity; - using CampusAppWP8.Utility.NDEF; - using System.Runtime.InteropServices.WindowsRuntime; - using Microsoft.Phone.Shell; - /// Place news. - /// Stubbfel, 09.09.2013. + /// Place news. + /// Stubbfel, 09.09.2013. + /// public partial class PlaceNews : PhoneApplicationPage { #region Member - /// The sps API. + + /// The device. + private readonly ProximityDevice device = ProximityDevice.GetDefault(); + + /// The sps API. private SpsApi spsApi; - /// The pis API. + /// The pis API. private PisApi pisApi; - /// The pss API. + /// The pss API. private PssApi pssApi; - /// The places. + /// The places. private PlacesFile places; - /// variable indicates how many apis are running. + /// variable indicates how many apis are running. private int waitForApi; - /// true to force request. + /// true to force request. private bool forceRequest; - /// List of search pids. + /// List of search pids. private List searchPidList; + /// true to qr scan. private bool qrScan = false; - /// The device. - private readonly ProximityDevice device = ProximityDevice.GetDefault(); - #endregion #region Constructor - /// Initializes a new instance of the PlaceNews class. - /// Stubbfel, 09.09.2013. + /// Initializes a new instance of the PlaceNews class. + /// Stubbfel, 09.09.2013. public PlaceNews() { this.InitializeComponent(); @@ -76,9 +78,9 @@ namespace CampusAppWP8.Pages.PlaceNews #region protected - /// Wird aufgerufen, wenn eine Seite die aktive Seite in einem Frame wird. - /// Stubbfel, 09.09.2013. - /// Ein Objekt, das die Ereignisdaten enthält. + /// Wird aufgerufen, wenn eine Seite die aktive Seite in einem Frame wird. + /// Stubbfel, 09.09.2013. + /// protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); @@ -91,9 +93,9 @@ namespace CampusAppWP8.Pages.PlaceNews this.places.Model = App.LoadFromIsolatedStorage(Constants.IsolatedStorage_AllPlaces); } - if (qrScan) + if (this.qrScan) { - qrScan = false; + this.qrScan = false; string qrResult = App.LoadFromIsolatedStorage("PlaceNewsQCCode"); App.SaveToIsolatedStorage("PlaceNewsQCCode", null); @@ -108,7 +110,6 @@ namespace CampusAppWP8.Pages.PlaceNews { this.SetupResultBox(); } - } else { @@ -124,8 +125,8 @@ namespace CampusAppWP8.Pages.PlaceNews /// /// Wird aufgerufen, wenn eine Seite nicht mehr die aktive Seite in einem Frame ist. /// - /// Stubbfel, 09.09.2013. - /// Ein Objekt, das die Ereignisdaten enthält. + /// Stubbfel, 09.09.2013. + /// protected override void OnNavigatedFrom(NavigationEventArgs e) { if (NavigationMode.Back == e.NavigationMode) @@ -138,8 +139,8 @@ namespace CampusAppWP8.Pages.PlaceNews #region private - /// Initializes the API. - /// Stubbfel, 09.09.2013. + /// Initializes the API. + /// Stubbfel, 09.09.2013. private void InitializeApi() { // init place file @@ -158,7 +159,6 @@ namespace CampusAppWP8.Pages.PlaceNews this.spsApi.OnLoaded += new SpsApi.OnIO(this.SpsApiIsReady); this.spsApi.OnFailedLoad += new SpsApi.OnFailed(this.ApiIsFail); this.spsApi.SetupCurrentPlaceRequest(Constants.SpsDomain_Buildings); - } if (this.forceRequest) @@ -195,8 +195,8 @@ namespace CampusAppWP8.Pages.PlaceNews } } - /// Places file is fail. - /// Stubbfel, 09.09.2013. + /// Places file is fail. + /// Stubbfel, 09.09.2013. private void PlacesFileIsFail() { this.places.Model = new SpsModel(); @@ -212,8 +212,8 @@ namespace CampusAppWP8.Pages.PlaceNews this.waitForApi++; } - /// Places file is ready. - /// Stubbfel, 09.09.2013. + /// Places file is ready. + /// Stubbfel, 09.09.2013. private void PlacesFileIsReady() { if (this.spsApi == null) @@ -228,8 +228,8 @@ namespace CampusAppWP8.Pages.PlaceNews this.waitForApi++; } - /// Pss API is ready. - /// Stubbfel, 09.09.2013. + /// Pss API is ready. + /// Stubbfel, 09.09.2013. private void PssApiIsReady() { this.waitForApi--; @@ -238,8 +238,8 @@ namespace CampusAppWP8.Pages.PlaceNews this.CheckedSetupResultBox(); } - /// Pis API is ready. - /// Stubbfel, 09.09.2013. + /// Pis API is ready. + /// Stubbfel, 09.09.2013. private void PisApiIsReady() { this.waitForApi--; @@ -248,8 +248,8 @@ namespace CampusAppWP8.Pages.PlaceNews this.CheckedSetupResultBox(); } - /// API is fail. - /// Stubbfel, 09.09.2013. + /// API is fail. + /// Stubbfel, 09.09.2013. private void ApiIsFail() { if (this.Dispatcher != null) @@ -259,25 +259,26 @@ namespace CampusAppWP8.Pages.PlaceNews } } - /// Sps API is ready. - /// Stubbfel, 09.09.2013. + /// Sps API is ready. + /// Stubbfel, 09.09.2013. private void SpsApiIsReady() { this.waitForApi--; - if (spsApi.Model.Places.Count > 0) + if (this.spsApi.Model.Places.Count > 0) { this.places.Model.AddPlaces(this.spsApi.Model.Places.ToList()); this.searchPidList = this.spsApi.Model.CreatePidList(); this.SendGetPisPssForPlacenews(this.searchPidList); } + this.CheckedSetupResultBox(); } - - /// - /// send get request to pis andd pss for PlaceNews service - /// - /// list of place id - private void SendGetPisPssForPlacenews(List pidList) { + + /// send get request to pis and pss for PlaceNews service. + /// Stubbfel, 15.10.2013. + /// list of place id. + private void SendGetPisPssForPlacenews(List pidList) + { List infoNames = new List() { Constants.PisInformationName_Name }; List serviceNames = new List() { Constants.PssServiceName_PlaceNews }; @@ -288,14 +289,13 @@ namespace CampusAppWP8.Pages.PlaceNews this.SendGetPlaceService(this.searchPidList, serviceNames); this.CheckedSetupResultBox(); - } - /// - /// Method send get for PlaceInformation of certain places - /// - /// list of place id - /// list of informations name - /// if its true then force api load + + /// Method send get for PlaceInformation of certain places. + /// Stubbfel, 15.10.2013. + /// list of place id. + /// list of information names. + /// (Optional) if its true then force api load. private void SendGetPlaceInformation(List pidList, List infoNames, bool force = false) { if (force || !this.places.Model.ContainsInformationNames(pidList, infoNames)) @@ -306,12 +306,11 @@ namespace CampusAppWP8.Pages.PlaceNews } } - /// - /// Method send get for PlaceSetvice of certain places - /// - /// list of place id - /// list of service name - /// if its true then force api load + /// Method send get for PlaceService of certain places. + /// Stubbfel, 15.10.2013. + /// list of place id. + /// list of service name. + /// (Optional) if its true then force api load. private void SendGetPlaceService(List pidList, List serviceNames, bool force = false) { if (this.forceRequest || !this.places.Model.ContainsServiceNames(pidList, serviceNames)) @@ -322,8 +321,8 @@ namespace CampusAppWP8.Pages.PlaceNews } } - /// Sets up the result box. - /// Stubbfel, 09.09.2013. + /// Sets up the result box. + /// Stubbfel, 09.09.2013. private void SetupResultBox() { this.ResultBox.ItemsSource = this.places.Model.FilterByPid(this.searchPidList); @@ -333,10 +332,10 @@ namespace CampusAppWP8.Pages.PlaceNews this.forceRequest = false; } - /// Event handler. Called by UpdateButtonAppBar for click events. - /// Stubbfel, 09.09.2013. - /// Source of the event. - /// Event information. + /// Event handler. Called by UpdateButtonAppBar for click events. + /// Stubbfel, 09.09.2013. + /// Source of the event. + /// Event information. private void UpdateButtonAppBar_Click(object sender, EventArgs e) { this.ProgressBar.Visibility = Visibility.Visible; @@ -344,8 +343,8 @@ namespace CampusAppWP8.Pages.PlaceNews thread.Start(); } - /// Initialises the API current position force. - /// Stubbfel, 09.09.2013. + /// Initialises the API current position force. + /// Stubbfel, 09.09.2013. private void InitApiCurrentPositionForce() { Utilities.DetermineAndStoreCurrentPositionForce(); @@ -353,10 +352,10 @@ namespace CampusAppWP8.Pages.PlaceNews this.InitializeApi(); } - /// Event handler. Called by ApplicationBarMenuItem for click events. - /// Stubbfel, 09.09.2013. - /// Source of the event. - /// Event information. + /// Event handler. Called by ApplicationBarMenuItem for click events. + /// Stubbfel, 09.09.2013. + /// Source of the event. + /// Event information. private void ApplicationBarMenuItem_Click(object sender, EventArgs e) { this.qrScan = true; @@ -366,18 +365,18 @@ namespace CampusAppWP8.Pages.PlaceNews this.NavigationService.Navigate(url); } - /// Event handler. Called by ApplicationBarMenuItem_Click for 1 events. - /// Stubbfel, 09.09.2013. - /// Source of the event. - /// Event information. + /// Event handler. Called by ApplicationBarMenuItem_Click for 1 events. + /// Stubbfel, 09.09.2013. + /// Source of the event. + /// Event information. private void ApplicationBarMenuItem_Click_1(object sender, EventArgs e) { this.ProgressBar.Visibility = Visibility.Visible; this.device.SubscribeForMessage("NDEF", this.NDEFHandler); } - /// Checked setup result box. - /// Stubbfel, 10.09.2013. + /// Checked setup result box. + /// Stubbfel, 10.09.2013. private void CheckedSetupResultBox() { if (this.waitForApi < 1) @@ -395,11 +394,10 @@ namespace CampusAppWP8.Pages.PlaceNews #endregion - /// - /// Method set correct text of the TextBlock - /// - /// sender of the event - /// some args + /// Method set correct text of the TextBlock. + /// Stubbfel, 15.10.2013. + /// sender of the event. + /// some args. private void TextBlock_Loaded(object sender, RoutedEventArgs e) { TextBlock txt = sender as TextBlock; @@ -418,10 +416,10 @@ namespace CampusAppWP8.Pages.PlaceNews txt.Text = place.GetInformationsValue(Constants.PisInformationName_Name); } - /// Handler, called when the ndef. - /// Stubbfel, 22.08.2013. - /// The sender. - /// The message. + /// Handler, called when the ndef. + /// Stubbfel, 22.08.2013. + /// The sender. + /// The message. private void NDEFHandler(ProximityDevice sender, ProximityMessage message) { this.device.StopSubscribingForMessage(message.SubscriptionId); @@ -436,6 +434,7 @@ namespace CampusAppWP8.Pages.PlaceNews this.searchPidList = new List() { pid }; this.SendGetPisPssForPlacenews(this.searchPidList); } + // this.Dispatcher.BeginInvoke(new Action(() => MessageBox.Show(ndef.GetContent()))); } #endregion diff --git a/CampusAppWP8/CampusAppWP8/Pages/PlaceNews/ShowPad.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/PlaceNews/ShowPad.xaml.cs index 31828bcc..d26c4b46 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/PlaceNews/ShowPad.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/PlaceNews/ShowPad.xaml.cs @@ -1,11 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 09.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the show pad.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.PlaceNews { using System; @@ -14,14 +14,15 @@ namespace CampusAppWP8.Pages.PlaceNews using CampusAppWP8.Resources; using Microsoft.Phone.Controls; - /// Show pad. - /// Stubbfel, 09.09.2013. + /// Show pad. + /// Stubbfel, 09.09.2013. + /// public partial class ShowPad : PhoneApplicationPage { #region Constructor - /// Initializes a new instance of the ShowPad class. - /// Stubbfel, 09.09.2013. + /// Initializes a new instance of the ShowPad class. + /// Stubbfel, 09.09.2013. public ShowPad() { this.InitializeComponent(); @@ -31,9 +32,9 @@ namespace CampusAppWP8.Pages.PlaceNews #region Method - /// Wird aufgerufen, wenn eine Seite die aktive Seite in einem Frame wird. - /// Stubbfel, 09.09.2013. - /// Ein Objekt, das die Ereignisdaten enthält. + /// Wird aufgerufen, wenn eine Seite die aktive Seite in einem Frame wird. + /// Stubbfel, 09.09.2013. + /// protected override void OnNavigatedTo(NavigationEventArgs e) { if (NavigationContext.QueryString.ContainsKey(Constants.ParamPlaceID)) diff --git a/CampusAppWP8/CampusAppWP8/Pages/Setting/AppSettingPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Setting/AppSettingPage.xaml.cs index 9239915d..1537d0a4 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Setting/AppSettingPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Setting/AppSettingPage.xaml.cs @@ -1,30 +1,31 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 12.08.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the application setting page.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.Setting { - using System.Windows.Navigation; - using Microsoft.Phone.Controls; + using System; + using System.Windows.Navigation; using CampusApp8.Model.Setting; - using System; + using Microsoft.Phone.Controls; - /// - /// Class for the AppSettingPage - /// + /// Class for the AppSettingPage. + /// Stubbfel, 15.10.2013. + /// public partial class AppSettingPage : PhoneApplicationPage { #region Member + /// The TagHandler model. private TagHandlerListPickerItemListModel taghandlerModel; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public AppSettingPage() { this.InitializeComponent(); @@ -40,10 +41,9 @@ namespace CampusAppWP8.Pages.Setting #region Method - /// - /// Override the OnNavigatedFrom method - /// - /// Arguments of navigation + /// Override the OnNavigatedFrom method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedFrom(NavigationEventArgs e) { if (NavigationMode.Back == e.NavigationMode) diff --git a/CampusAppWP8/CampusAppWP8/Pages/Setting/Impressum.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Setting/Impressum.xaml.cs index 539a75dd..2adc476f 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Setting/Impressum.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Setting/Impressum.xaml.cs @@ -1,17 +1,22 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Navigation; +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. +// +// Stubbfel +// 15.10.2013 +// Implements the impressum.xaml class +//----------------------------------------------------------------------- using Microsoft.Phone.Controls; -using Microsoft.Phone.Shell; namespace CampusAppWP8.Pages.Setting { + /// An impressum. + /// Stubbfel, 15.10.2013. + /// public partial class Impressum : PhoneApplicationPage { + /// Initializes a new instance of the Impressum class. + /// Stubbfel, 15.10.2013. public Impressum() { InitializeComponent(); diff --git a/CampusAppWP8/CampusAppWP8/Pages/Setting/UserProfil.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Setting/UserProfil.xaml.cs index 6436902b..95dcd530 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Setting/UserProfil.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Setting/UserProfil.xaml.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 23.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the user profil.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.Setting { using System; @@ -12,32 +13,29 @@ namespace CampusAppWP8.Pages.Setting using System.Windows.Navigation; using CampusAppWP8.Model.Setting; using CampusAppWP8.Model.Utility; + using CampusAppWPortalLib8.Model.Utility; using CampusAppWPortalLib8.Utility; using Microsoft.Phone.Controls; - using CampusAppWPortalLib8.Model.Utility; - /// - /// Class for the UserProfilePage - /// + /// Class for the UserProfilePage. + /// Stubbfel, 15.10.2013. + /// public partial class UserProfil : PhoneApplicationPage { #region Member - /// - /// Reference of the profileFile - /// + /// Reference of the profileFile. private UserProfilModel userProfil; - /// List of courses. + /// List of courses. private CourseListPickerItemListWp8Model courseList; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public UserProfil() { this.InitializeComponent(); @@ -51,10 +49,9 @@ namespace CampusAppWP8.Pages.Setting #region protected - /// - /// Override the OnNavigatedFrom method - /// - /// Arguments of navigation + /// Override the OnNavigatedFrom method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedFrom(NavigationEventArgs e) { if (NavigationMode.Back == e.NavigationMode) @@ -67,8 +64,8 @@ namespace CampusAppWP8.Pages.Setting #region private - /// Loads list picker. - /// Stubbfel, 10.09.2013. + /// Loads list picker. + /// Stubbfel, 10.09.2013. private void LoadListPicker() { this.DefHeader.ProgressVisibility = Visibility.Visible; @@ -77,9 +74,8 @@ namespace CampusAppWP8.Pages.Setting this.courseList.LoadCourseList(); } - /// - /// Method sets the ItemSource of the ListPickers - /// + /// Method sets the ItemSource of the ListPickers. + /// Stubbfel, 15.10.2013. private void SetupListPickers() { DegreeListPickerItemListModel degreeList = new DegreeListPickerItemListModel(); @@ -101,9 +97,8 @@ namespace CampusAppWP8.Pages.Setting this.DefHeader.ProgressVisibility = Visibility.Collapsed; } - /// - /// Method save the current profile - /// + /// Method save the current profile. + /// Stubbfel, 15.10.2013. private void SaveProfile() { try diff --git a/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml.cs index 8e0c4389..d7d1ba75 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml.cs @@ -1,22 +1,22 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 21.05.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the start page.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages { using System; - using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; using System.Threading; using System.Windows; using System.Windows.Controls; using System.Windows.Navigation; - using Windows.Networking.Proximity; using CampusAppWP8.Feed.Utility; using CampusAppWP8.File.Places; + using CampusAppWP8.Model.Setting; using CampusAppWP8.Resources; using CampusAppWP8.Utility; using CampusAppWP8.Utility.Lui.MessageBoxes; @@ -24,30 +24,33 @@ namespace CampusAppWP8.Pages using CampusAppWP8.Utility.NDEF; using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; - using CampusAppWP8.Model.Setting; + using Windows.Networking.Proximity; - /// - /// Class for the StartPage - /// + /// Class for the StartPage. + /// Stubbfel, 15.10.2013. + /// public partial class StartPage : PhoneApplicationPage { #region Member - /// The device. + /// The device. private readonly ProximityDevice device = ProximityDevice.GetDefault(); - /// List of initialise courses. + /// List of initialise courses. private CourseFeed initCourseList; + /// The previous orientation. private PageOrientation prevOrientation; + /// Identifier for the ndef. + private long ndefId; + #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public StartPage() { this.InitializeComponent(); @@ -82,7 +85,6 @@ namespace CampusAppWP8.Pages { menuItem5.Text = AppResources.Setting_ImpressumTitle; } - else { ApplicationBar.MenuItems.RemoveAt(ApplicationBar.MenuItems.Count - 1); @@ -91,7 +93,7 @@ namespace CampusAppWP8.Pages if (!Settings.AppSetting.InitApp) { - this.initPlaceFile(); + this.InitPlaceFile(); this.initCourseList = new CourseFeed(); this.initCourseList.OnLoaded += new CourseFeed.OnIO(this.StoreCourseFeed); this.initCourseList.LoadData(); @@ -107,24 +109,15 @@ namespace CampusAppWP8.Pages } } - private void initPlaceFile() - { - PlacesFile file = new PlacesFile(); - file.LoadData(); - } - - private long ndefId; - #endregion #region Method #region protected - /// - /// Methods overrides the OnNavigatedTo-Method - /// - /// some NavigationEventArgs + /// Methods overrides the OnNavigatedTo-Method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); @@ -137,16 +130,15 @@ namespace CampusAppWP8.Pages this.prevOrientation = PageOrientation.Landscape; } - ndefId = this.device.SubscribeForMessage(Constants.NCFMessageType_NDEF, this.NDEFHandler); + this.ndefId = this.device.SubscribeForMessage(Constants.NCFMessageType_NDEF, this.NDEFHandler); } - /// - /// Methods overrides the OnNavigatedFrom-Method - /// - /// some NavigationEventArgs + /// Methods overrides the OnNavigatedFrom-Method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedFrom(NavigationEventArgs e) { - this.device.StopSubscribingForMessage(ndefId); + this.device.StopSubscribingForMessage(this.ndefId); base.OnNavigatedFrom(e); } @@ -155,18 +147,25 @@ namespace CampusAppWP8.Pages #region private - /// Stores course feed. - /// Stubbfel, 10.09.2013. + /// Initialises the place file. + /// Stubbfel, 15.10.2013. + private void InitPlaceFile() + { + PlacesFile file = new PlacesFile(); + file.LoadData(); + } + + /// Stores course feed. + /// Stubbfel, 10.09.2013. private void StoreCourseFeed() { this.initCourseList.SaveData(); } - /// - /// Method handle OrientationPage - /// - /// Caller of the function - /// some EventArgs + /// Method handle OrientationPage. + /// Stubbfel, 15.10.2013. + /// Caller of the function. + /// some EventArgs. private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e) { // Switch the placement of the buttons based on an orientation change. @@ -203,8 +202,8 @@ namespace CampusAppWP8.Pages } } - /// Move to Portrait format. - /// Stubbfel, 27.08.2013. + /// Move to Portrait format. + /// Stubbfel, 27.08.2013. private void MoveToPortrait() { if (!this.Row0.Children.Contains(this.MailAppButton) @@ -213,6 +212,7 @@ namespace CampusAppWP8.Pages { return; } + this.Row0.Children.Remove(this.MailAppButton); this.Row3.Children.Add(this.MailAppButton); this.MailAppButton.SetValue(Grid.ColumnProperty, 0); @@ -226,8 +226,8 @@ namespace CampusAppWP8.Pages this.LinkAppButton.SetValue(Grid.ColumnProperty, 2); } - /// Move Grid to landscape format. - /// Stubbfel, 27.08.2013. + /// Move Grid to landscape format. + /// Stubbfel, 27.08.2013. private void MoveGridToLandscape() { if (!this.Row3.Children.Contains(this.MailAppButton) @@ -238,7 +238,7 @@ namespace CampusAppWP8.Pages } this.Row3.Children.Remove(this.MailAppButton); - this.Row0.Children.Add(this.MailAppButton); ; + this.Row0.Children.Add(this.MailAppButton); this.MailAppButton.SetValue(Grid.ColumnProperty, 3); this.Row3.Children.Remove(this.OpenHoursAppButton); @@ -250,33 +250,30 @@ namespace CampusAppWP8.Pages this.LinkAppButton.SetValue(Grid.ColumnProperty, 3); } - /// - /// Method Navigate to - /// - /// Caller of the function - /// some EventArgs + /// Method Navigate to + /// Stubbfel, 15.10.2013. + /// Caller of the function. + /// some EventArgs. private void ApplicationBarMenuItem_Click(object sender, EventArgs e) { Uri url = new Uri(Constants.PathSetting_User, UriKind.Relative); NavigationService.Navigate(url); } - /// - /// Method Navigate to - /// - /// Caller of the function - /// some EventArgs + /// Method Navigate to + /// Stubbfel, 15.10.2013. + /// Caller of the function. + /// some EventArgs. private void ApplicationBarMenuItem2_Click(object sender, EventArgs e) { Uri url = new Uri(Constants.PathSetting_App, UriKind.Relative); NavigationService.Navigate(url); } - /// - /// Method Navigate to - /// - /// Caller of the function - /// some EventArgs + /// Method Navigate to + /// Stubbfel, 15.10.2013. + /// Caller of the function. + /// some EventArgs. private void ApplicationBarMenuItem4_Click(object sender, EventArgs e) { this.device.StopSubscribingForMessage(this.ndefId); @@ -290,25 +287,23 @@ namespace CampusAppWP8.Pages private void ApplicationBarMenuItem5_Click(object sender, EventArgs e) { Uri url = new Uri("/Pages/Setting/Impressum.xaml", UriKind.Relative); - NavigationService.Navigate(url); + NavigationService.Navigate(url); } - /// - /// Event handler. Called by ApplicationBarMenuItem4 for click events. - /// - /// Caller of the function. - /// Event information. + /// Event handler. Called by ApplicationBarMenuItem4 for click events. + /// Stubbfel, 15.10.2013. + /// Caller of the function. + /// Event information. private void ApplicationBarMenuItem3_Click(object sender, EventArgs e) { Uri url = new Uri("/Pages/Dev/QRScanner.xaml", UriKind.Relative); NavigationService.Navigate(url); } - /// - /// Method change the Opacity of the ApplicationBar - /// - /// Caller of the function - /// some EventArgs + /// Method change the Opacity of the ApplicationBar. + /// Stubbfel, 15.10.2013. + /// Caller of the function. + /// some EventArgs. private void ApplicationBar_StateChanged(object sender, ApplicationBarStateChangedEventArgs e) { if (e.IsMenuVisible) @@ -321,17 +316,15 @@ namespace CampusAppWP8.Pages } } - /// - /// Method show all OptIns - /// + /// Method show all OptIns. + /// Stubbfel, 15.10.2013. private void ShowOptIns() { this.GeoWatchOptIN(); } - /// - /// Method show the GeoWatchOptIn in a MessageBox - /// + /// Method show the GeoWatchOptIn in a MessageBox. + /// Stubbfel, 15.10.2013. private void GeoWatchOptIN() { MessageBoxResult result = MessageBoxes.ShowGoeWatchOptInBox(); @@ -348,6 +341,10 @@ namespace CampusAppWP8.Pages } } + /// Event handler. Called by PintoStart for click events. + /// Stubbfel, 15.10.2013. + /// Caller of the function. + /// Routed event information. private void PintoStart_Click(object sender, RoutedEventArgs e) { FrameworkElement elment = sender as FrameworkElement; @@ -404,9 +401,12 @@ namespace CampusAppWP8.Pages TileCreator.CreatePlaceNewsTile(); break; } - } + /// Handler, called when the ndef. + /// Stubbfel, 15.10.2013. + /// Caller of the function. + /// The message. private void NDEFHandler(ProximityDevice sender, ProximityMessage message) { // create ndefMessage @@ -433,10 +433,13 @@ namespace CampusAppWP8.Pages this.ShowBtuTagMessageBox(); } } - - ndefId = this.device.SubscribeForMessage(Constants.NCFMessageType_NDEF, this.NDEFHandler); + + this.ndefId = this.device.SubscribeForMessage(Constants.NCFMessageType_NDEF, this.NDEFHandler); } + /// Go to campus MapPage. + /// Stubbfel, 15.10.2013. + /// The tag content. private void GoToCampusMappage(string tagContent) { string pid = Wp8StringManager.FilterPlaceIdinNFCResultString(tagContent); @@ -452,9 +455,10 @@ namespace CampusAppWP8.Pages { NavigationService.Navigate(url); } - } + /// Shows the btu tag message box. + /// Stubbfel, 15.10.2013. private void ShowBtuTagMessageBox() { MessageBoxResult msgResult = MessageBoxes.ShowBtuTagInfoOkCancelMessageBox(); diff --git a/CampusAppWP8/CampusAppWP8/Pages/StudentCouncil/StudentCouncilPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/StudentCouncil/StudentCouncilPage.xaml.cs index a1ea39e0..81615043 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/StudentCouncil/StudentCouncilPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/StudentCouncil/StudentCouncilPage.xaml.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 03.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the student council page.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.StudentCouncil { using System; @@ -16,25 +17,22 @@ namespace CampusAppWP8.Pages.StudentCouncil using CampusAppWP8.Utility.Lui.MessageBoxes; using Microsoft.Phone.Controls; - /// - /// Class for the StudentCouncilPage - /// + /// Class for the StudentCouncilPage. + /// Stubbfel, 15.10.2013. + /// public partial class StudentCouncilPage : PhoneApplicationPage { #region Members - /// - /// the feed of the StudentCouncil - /// + /// the feed of the StudentCouncil. private StudentCouncilFeed feed; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public StudentCouncilPage() { this.InitializeComponent(); @@ -47,10 +45,9 @@ namespace CampusAppWP8.Pages.StudentCouncil #region protected - /// - /// Override the OnNavigatedTo method - /// - /// Arguments of navigation + /// Override the OnNavigatedTo method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); @@ -69,19 +66,17 @@ namespace CampusAppWP8.Pages.StudentCouncil this.feed.LoadData(Utilities.GetLoadModus()); } - /// - /// Override the OnNavigatedFrom method - /// - /// Arguments of navigation + /// Override the OnNavigatedFrom method. + /// Stubbfel, 15.10.2013. + /// protected override void OnNavigatedFrom(NavigationEventArgs e) { this.feed.SaveData(); } - /// - /// Override the OnOrientationChanged method. - /// - /// orientation changed args. + /// Override the OnOrientationChanged method. + /// Stubbfel, 15.10.2013. + /// protected override void OnOrientationChanged(OrientationChangedEventArgs e) { if (e.Orientation == PageOrientation.Landscape @@ -101,9 +96,8 @@ namespace CampusAppWP8.Pages.StudentCouncil #endregion #region private - /// - /// Method initialize the Feed - /// + /// Method initialize the Feed. + /// Stubbfel, 15.10.2013. private void InitializeFeed() { this.feed = new StudentCouncilFeed(); @@ -112,47 +106,43 @@ namespace CampusAppWP8.Pages.StudentCouncil this.feed.OnFailedFile += new StudentCouncilFeed.OnFailed(this.FeedIsFailFile); } - /// - /// Method will be execute if the feed is ready - /// + /// Method will be execute if the feed is ready. + /// Stubbfel, 15.10.2013. private void FeedIsReady() { this.SetupStudentCouncilPivot(); this.DefHeader.ProgressVisibility = System.Windows.Visibility.Collapsed; } - /// - /// Method set ItemSource - /// + /// Method set ItemSource. + /// Stubbfel, 15.10.2013. private void SetupStudentCouncilPivot() { this.StudentCouncilPivot.ItemsSource = this.feed.Model.GetStudentCouncilsGroupByFaculty(); } /// - /// On clicking the update button in the ApplicationBar. - /// Force a data update from the web. + /// On clicking the update button in the ApplicationBar. Force a data update from the web. /// - /// button object - /// event args + /// Stubbfel, 15.10.2013. + /// button object. + /// event args. private void StudentForceUpdate_Click(object sender, EventArgs e) { this.DefHeader.ProgressVisibility = System.Windows.Visibility.Visible; this.feed.ForceWebUpdate(); } - /// - /// Method will be execute if the feed is failed - /// + /// Method will be execute if the feed is failed. + /// Stubbfel, 15.10.2013. private void FeedIsFailWeb() { MessageBoxResult result = MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoadWeb); this.feed.ForceReadFile(); } - /// - /// Method will be execute if the feed is failed - /// + /// Method will be execute if the feed is failed. + /// Stubbfel, 15.10.2013. private void FeedIsFailFile() { MessageBoxResult result = MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoadFile); diff --git a/CampusAppWP8/CampusAppWP8/Pages/Webmail/WebmailPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Webmail/WebmailPage.xaml.cs index 0344e9d7..af68dc3e 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Webmail/WebmailPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Webmail/WebmailPage.xaml.cs @@ -1,26 +1,26 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 12.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the webmail page.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Pages.Webmail { using System; using CampusAppWP8.Resources; using Microsoft.Phone.Controls; - /// - /// Class for the WebmailPage - /// + /// Class for the WebmailPage. + /// Stubbfel, 15.10.2013. + /// public partial class WebmailPage : PhoneApplicationPage { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public WebmailPage() { this.InitializeComponent(); @@ -31,9 +31,8 @@ namespace CampusAppWP8.Pages.Webmail #region Method - /// - /// Method load WebmailPage - /// + /// Method load WebmailPage. + /// Stubbfel, 15.10.2013. private void LoadWebmailPage() { this.WebmailBrowser.Navigate(new Uri(Constants.UrlWebMail_Addr, UriKind.Absolute)); diff --git a/CampusAppWP8/CampusAppWP8/Settings.StyleCop b/CampusAppWP8/CampusAppWP8/Settings.StyleCop index acb474fe..c76ad7db 100644 --- a/CampusAppWP8/CampusAppWP8/Settings.StyleCop +++ b/CampusAppWP8/CampusAppWP8/Settings.StyleCop @@ -28,6 +28,13 @@ + + + + False + + + BTU/IIT The MIT License (MIT). Copyright (c) 2013 BTU/IIT. From 0554b0d2e004d766727468563e1733c73262c796 Mon Sep 17 00:00:00 2001 From: stubbfel Date: Tue, 15 Oct 2013 12:17:51 +0200 Subject: [PATCH 6/9] refactor utility --- .../CampusAppWP8/Utility/AppUriMapper.cs | 27 ++- .../CampusAppWP8/Utility/BackgroundTasks.cs | 43 ++--- .../Utility/BoolToVisibilityConverter.cs | 23 ++- CampusAppWP8/CampusAppWP8/Utility/File.cs | 81 ++++----- .../CampusAppWP8/Utility/HttpRequest.cs | 168 ++++++++---------- .../Utility/Lui/Button/AddPersonButton.cs | 33 ++-- .../Utility/Lui/Button/EmailButton.cs | 42 ++--- .../Utility/Lui/Button/GoToMapButton.cs | 42 ++--- .../Utility/Lui/Button/LinkButton.cs | 40 ++--- .../Utility/Lui/Button/NavigateButton.cs | 56 +++--- .../Utility/Lui/Button/PhoneButton.cs | 51 +++--- .../Utility/Lui/Button/ToggleButton.cs | 99 +++++------ .../Utility/Lui/Button/UpdateButtonAppBar.cs | 28 ++- .../Utility/Lui/Header/DefaultHeader.xaml.cs | 38 ++-- .../Utility/Lui/MessageBoxes/MessageBoxes.cs | 62 +++---- .../Utility/Lui/Tiles/TileCreator.cs | 99 +++++------ .../CampusAppWP8/Utility/NDEF/NDEFMessage.cs | 47 ++--- .../CampusAppWP8/Utility/NDEF/NDEFRecord.cs | 93 +++++----- .../Utility/NDEF/NDEFShortRecord.cs | 32 ++-- .../CampusAppWP8/Utility/Wp8StringManager.cs | 24 +-- 20 files changed, 520 insertions(+), 608 deletions(-) diff --git a/CampusAppWP8/CampusAppWP8/Utility/AppUriMapper.cs b/CampusAppWP8/CampusAppWP8/Utility/AppUriMapper.cs index c37ee3c8..16a95862 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/AppUriMapper.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/AppUriMapper.cs @@ -1,28 +1,25 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 26.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the application URI mapper class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility { using System; using System.Windows.Navigation; using CampusAppWP8.Resources; - using System.Windows.Controls; - - /// - /// Class map Uri to AppPages - /// + + /// Class map Uri to AppPages. + /// Stubbfel, 15.10.2013. + /// public class AppUriMapper : UriMapperBase { - /// - /// Method overrides MapUri from UriMapperBase - /// - /// the url - /// the mapped url + /// Method overrides MapUri from UriMapperBase. + /// Stubbfel, 15.10.2013. + /// public override Uri MapUri(Uri uri) { string tempUri = uri.ToString(); diff --git a/CampusAppWP8/CampusAppWP8/Utility/BackgroundTasks.cs b/CampusAppWP8/CampusAppWP8/Utility/BackgroundTasks.cs index 753d7939..940b7ce9 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/BackgroundTasks.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/BackgroundTasks.cs @@ -1,11 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 18.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the background tasks class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility { using System; @@ -13,16 +13,15 @@ namespace CampusAppWP8.Utility using CampusAppWPortalLib8.Utility; using Microsoft.Phone.Scheduler; - /// - /// Class provide some static methods for background tasks - /// + /// Class provide some static methods for background tasks. + /// Stubbfel, 15.10.2013. + /// public class BackgroundTasks : AbstractBackgroundTasks { - /// - /// Method start a certain PerodicTask - /// - /// name of the task - /// description of the task + /// Method start a certain PerodicTask. + /// Stubbfel, 15.10.2013. + /// name of the task. + /// description of the task. public static void StartPerodicTask(string taskName, string taskDesc) { BackgroundTasks.StopPerodicTask(BackgroundTasks.LastAddedTaskName); @@ -48,10 +47,9 @@ namespace CampusAppWP8.Utility BackgroundTasks.LastAddedTaskName = taskName; } - /// - /// Method stop a certain PerodicTask - /// - /// name of the task + /// Method stop a certain PerodicTask. + /// Stubbfel, 15.10.2013. + /// name of the task. public static void StopPerodicTask(string taskName) { if (taskName == null) @@ -73,22 +71,19 @@ namespace CampusAppWP8.Utility } } - /// - /// Method start BTUCampusAppBackgroundTask - /// + /// Method start BTUCampusAppBackgroundTask. + /// Stubbfel, 15.10.2013. public static void StartBTUCampusAppTask() { int campusId = (int)Settings.UserProfil.DefaultCampus; BackgroundTasks.StartPerodicTask(Constants.BackgroundTask_BTUCampusApp, AppResources.BackGroundTaskDesc_BTUCampusApp + " - Feed " + campusId); } - /// - /// Method stop BTUCampusAppBackgroundTask - /// + /// Method stop BTUCampusAppBackgroundTask. + /// Stubbfel, 15.10.2013. public static void StopBTUCampusAppTask() { BackgroundTasks.StopPerodicTask(Constants.BackgroundTask_BTUCampusApp); } - } } diff --git a/CampusAppWP8/CampusAppWP8/Utility/BoolToVisibilityConverter.cs b/CampusAppWP8/CampusAppWP8/Utility/BoolToVisibilityConverter.cs index 83ed3adc..c8723978 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/BoolToVisibilityConverter.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/BoolToVisibilityConverter.cs @@ -1,23 +1,38 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 10.10.2013 -//----------------------------------------------------------------------------- +// 15.10.2013 +// Implements to visibility converter class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility { using System; using System.Windows; using System.Windows.Data; + /// to visibility converter. + /// fiedlchr, 15.10.2013. + /// public sealed class BoolToVisibilityConverter : IValueConverter { + /// + /// Ändert die Quelldaten vor der Übergabe an das Ziel zur Anzeige in der Benutzeroberfläche. + /// + /// fiedlchr, 15.10.2013. + /// public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo language) { return (value is bool && (bool)value) ? Visibility.Visible : Visibility.Collapsed; } + /// + /// Ändert die Zieldaten vor der Übergabe an das Quellobjekt. Diese Methode wird nur in + /// -Bindungen aufgerufen. + /// + /// fiedlchr, 15.10.2013. + /// public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo language) { return (value is Visibility && (Visibility)value == Visibility.Visible); diff --git a/CampusAppWP8/CampusAppWP8/Utility/File.cs b/CampusAppWP8/CampusAppWP8/Utility/File.cs index b247c0e7..f3e40167 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/File.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/File.cs @@ -1,10 +1,11 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 03.05.2013 -//----------------------------------------------------------------------------- +// 15.10.2013 +// Implements the file class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility { using System; @@ -14,30 +15,26 @@ namespace CampusAppWP8.Utility using CampusAppWPortalLib8.Utility; using Windows.Storage; - /// - /// File class. - /// + /// File class. + /// fiedlchr, 15.10.2013. + /// public class File : AbstractFile { #region Member - /// - /// Folder object. - /// + /// Folder object. private static readonly IStorageFolder LocalFolder = ApplicationData.Current.LocalFolder; - /// - /// File name. - /// + /// File name. private string filename = string.Empty; #endregion #region Constructor - /// Initializes a new instance of the class. - /// Stubbfel, 03.09.2013. - /// file name. + /// Initializes a new instance of the class. + /// fiedlchr, 03.09.2013. + /// file name. public File(string filename) { this.filename = filename; @@ -49,9 +46,9 @@ namespace CampusAppWP8.Utility #region public - /// Read data from file to a string. - /// Stubbfel, 03.09.2013. - /// data string. + /// Read data from file to a string. + /// fiedlchr, 03.09.2013. + /// public override byte[] ReadFile() { byte[] retValue = null; @@ -64,31 +61,27 @@ namespace CampusAppWP8.Utility return retValue; } - /// Write bytes to the file. - /// Stubbfel, 03.09.2013. - /// data byte array. - /// callback function, called after writing is done. - /// callback function, called when writing failed. + /// Write bytes to the file. + /// fiedlchr, 03.09.2013. + /// public override void WriteFile(byte[] data, WriteCallbackFunc onSavedCallback, WriteCallbackFunc onFailedCallback) { Thread th = new Thread(delegate() { this.WriteAsync(data, onSavedCallback, onFailedCallback); }); th.Start(); } - /// - /// Return a info object of the file. - /// - /// info of the file + /// Return a info object of the file. + /// fiedlchr, 15.10.2013. + /// info of the file. public FileInfo GetFileInfo() { FileInfo info = new FileInfo(File.LocalFolder.Path + "\\" + this.filename); return info; } - /// - /// Check if a file is existing. - /// - /// true, if file exists, otherwise false + /// Check if a file is existing. + /// fiedlchr, 15.10.2013. + /// public override bool Exist() { FileInfo info = this.GetFileInfo(); @@ -102,9 +95,9 @@ namespace CampusAppWP8.Utility } } - /// Converts this object to a storage file. - /// Stubbfel, 03.09.2013. - /// Storage File + /// Converts this object to a storage file. + /// fiedlchr, 03.09.2013. + /// Storage File. public async Task AsStorageFile() { if (this.Exist()) @@ -119,10 +112,9 @@ namespace CampusAppWP8.Utility #region private - /// - /// Read data synchronous from file. - /// - /// data string + /// Read data synchronous from file. + /// fiedlchr, 15.10.2013. + /// data string. private byte[] ReadSync() { byte[] retValue = null; @@ -139,12 +131,11 @@ namespace CampusAppWP8.Utility return retValue; } - /// - /// Write data asynchronous to file. - /// - /// data array. - /// callback function, called when writing is done. - /// callback function, called when writing failed. + /// Write data asynchronous to file. + /// fiedlchr, 15.10.2013. + /// data array. + /// callback function, called when writing is done. + /// callback function, called when writing failed. private async void WriteAsync(byte[] data, WriteCallbackFunc onSavedCallback, WriteCallbackFunc onFailedCallback) { Logger.LogMsg("writeasync file: " + this.filename); diff --git a/CampusAppWP8/CampusAppWP8/Utility/HttpRequest.cs b/CampusAppWP8/CampusAppWP8/Utility/HttpRequest.cs index 3d1b2ae5..dfa6104f 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/HttpRequest.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/HttpRequest.cs @@ -1,37 +1,33 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 10.06.2013 -//----------------------------------------------------------------------using System; +// Stubbfel +// 15.10.2013 +// Implements the HTTP request class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility { using System; - using System.Collections.Generic; using System.Net; - using CampusAppWP8.Model.Utility; - using CampusAppWPortalLib8.Model.Utility; using CampusAppWPortalLib8.Utility; - /// - /// Class realize the access of restful HttpRequest - /// + /// Class realize the access of restful HttpRequest. + /// Stubbfel, 15.10.2013. + /// public class HttpRequest : AbstractHttpRequest { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public HttpRequest() { } - /// - /// Initializes a new instance of the class. - /// - /// the url of the HttpRequest base address + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. + /// the url of the HttpRequest base address. public HttpRequest(Uri apiBaseAddress) { this.BaseAddress = apiBaseAddress.AbsoluteUri; @@ -42,11 +38,10 @@ namespace CampusAppWP8.Utility #region Methods #region public - /// - /// Method realize the http-get-method resource - /// - /// Url of the resource - /// callback method + /// Method realize the http-get-method resource. + /// Stubbfel, 15.10.2013. + /// Url of the resource. + /// callback method. public void HttpGet(Uri url, Action action) { WebClient client = new WebClient(); @@ -54,10 +49,10 @@ namespace CampusAppWP8.Utility client.DownloadStringAsync(url); } - /// Method realize the http-get-method resource. - /// Stubbfel, 03.09.2013. - /// Url of the resource. - /// The action. + /// Method realize the http-get-method resource. + /// Stubbfel, 03.09.2013. + /// Url of the resource. + /// The action. public void HttpGet(Uri url, Action action) { WebClient client = new WebClient(); @@ -65,99 +60,91 @@ namespace CampusAppWP8.Utility client.OpenReadAsync(url); } - /// - /// Method realize the http-delete-method - /// - /// - /// is not supported by WebClient - /// - /// Url of the resource - /// callback method + /// Method realize the http-delete-method. + /// is not supported by WebClient. + /// + /// Thrown when the requested operation is not supported. + /// + /// Url of the resource. + /// callback method. public void HttpDelete(Uri url, Action action) { throw new NotSupportedException(); } - /// - /// Method realize the http-head-method - /// - /// - /// is not supported by WebClient - /// - /// Url of the resource - /// callback method + /// Method realize the http-head-method. + /// is not supported by WebClient. + /// + /// Thrown when the requested operation is not supported. + /// + /// Url of the resource. + /// callback method. public void HttpHead(Uri url, Action action) { throw new NotSupportedException(); } - /// - /// Method realize the http-options-method - /// - /// - /// is not supported by WebClient - /// - /// Url of the resource - /// callback method + /// Method realize the http-options-method. + /// is not supported by WebClient. + /// + /// Thrown when the requested operation is not supported. + /// + /// Url of the resource. + /// callback method. public void HttpOptions(Uri url, Action action) { throw new NotSupportedException(); } - /// - /// Method realize the http-connect-method - /// - /// - /// is not supported by WebClient - /// - /// Url of the resource - /// callback method + /// Method realize the http-connect-method. + /// is not supported by WebClient. + /// + /// Thrown when the requested operation is not supported. + /// + /// Url of the resource. + /// callback method. public void HttpConnect(Uri url, Action action) { throw new NotSupportedException(); } - /// - /// Method realize the http-trace-method - /// - /// - /// is not supported by WebClient - /// - /// Url of the resource - /// callback method + /// Method realize the http-trace-method. + /// is not supported by WebClient. + /// + /// Thrown when the requested operation is not supported. + /// + /// Url of the resource. + /// callback method. public void HttpTrace(Uri url, Action action) { throw new NotSupportedException(); } - /// - /// Method realize the http-post-method - /// - /// Url of the resource - /// callback method - /// Data which are sending via post to the HttpRequest + /// Method realize the http-post-method. + /// Stubbfel, 15.10.2013. + /// Url of the resource. + /// callback method. + /// Data which are sending via post to the HttpRequest. public void HttpPost(Uri url, Action action, string postData) { this.UploadData(url, action, "POST", postData); } - /// - /// Method realize the http-put-method - /// - /// Url of the resource - /// callback method - /// Data which are sending via put to the HttpRequest + /// Method realize the http-put-method. + /// Stubbfel, 15.10.2013. + /// Url of the resource. + /// callback method. + /// Data which are sending via put to the HttpRequest. public void HttpPut(Uri url, Action action, string putData) { this.UploadData(url, action, "PUT", putData); } - /// - /// Method realize the http-patch-method - /// - /// Url of the resource - /// callback method - /// Data which are sending via patch to the HttpRequest + /// Method realize the http-patch-method. + /// Stubbfel, 15.10.2013. + /// Url of the resource. + /// callback method. + /// Data which are sending via patch to the HttpRequest. public void HttpPatch(Uri url, Action action, string patchData) { this.UploadData(url, action, "PATCH", patchData); @@ -167,13 +154,12 @@ namespace CampusAppWP8.Utility #region private - /// - /// Method uploaded Data to the HttpRequest - /// - /// Url of the resource - /// callback method - /// name of APIMethod, how the data will be uploaded - /// Data which are sending to the HttpRequest + /// Method uploaded Data to the HttpRequest. + /// Stubbfel, 15.10.2013. + /// Url of the resource. + /// callback method. + /// name of APIMethod, how the data will be uploaded. + /// Data which are sending to the HttpRequest. private void UploadData(Uri url, Action action, string method, string data) { WebClient client = new WebClient(); diff --git a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/AddPersonButton.cs b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/AddPersonButton.cs index f02e2040..2233786e 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/AddPersonButton.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/AddPersonButton.cs @@ -1,11 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 09.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the add person button class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility.Lui.Button { using System; @@ -14,27 +14,28 @@ namespace CampusAppWP8.Utility.Lui.Button using System.Windows.Media.Imaging; using CampusAppWP8.Resources; - /// Add person button. - /// Stubbfel, 12.09.2013. + /// Add person button. + /// Stubbfel, 12.09.2013. + /// public class AddPersonButton : System.Windows.Controls.Button { #region Member - /// The person identifier property. + /// The person identifier property. public static readonly DependencyProperty PersonIdProperty = DependencyProperty.Register("PersonID", typeof(object), typeof(AddPersonButton), new PropertyMetadata(false)); - /// The function index property. + /// The function index property. public static readonly DependencyProperty FunctionIndexProperty = DependencyProperty.Register("FunctionIndex", typeof(object), typeof(AddPersonButton), new PropertyMetadata(false)); - /// The icon. + /// The icon. private static BitmapImage icon = new BitmapImage(new Uri(Icons.AddContact, UriKind.Relative)); #endregion #region Constructor - /// Initializes a new instance of the AddPersonButton class. - /// Stubbfel, 12.09.2013. + /// Initializes a new instance of the AddPersonButton class. + /// Stubbfel, 12.09.2013. public AddPersonButton() : base() { @@ -48,16 +49,16 @@ namespace CampusAppWP8.Utility.Lui.Button #region Property - /// Gets or sets the identifier of the person. - /// The identifier of the person. + /// Gets or sets the identifier of the person. + /// The identifier of the person. public object PersonId { get { return (object)this.GetValue(PersonIdProperty); } set { this.SetValue(PersonIdProperty, value); } } - /// Gets or sets zero-based index of the function. - /// The function index. + /// Gets or sets zero-based index of the function. + /// The function index. public object FunctionIndex { get { return (object)this.GetValue(FunctionIndexProperty); } diff --git a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/EmailButton.cs b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/EmailButton.cs index e5be0944..925288f9 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/EmailButton.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/EmailButton.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 04.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the email button class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility.Lui.Button { using System; @@ -14,30 +15,25 @@ namespace CampusAppWP8.Utility.Lui.Button using CampusAppWP8.Resources; using Microsoft.Phone.Tasks; - /// - /// This class create an Button which start the Email-Client - /// + /// This class create an Button which start the Email-Client. + /// Stubbfel, 15.10.2013. + /// public class EmailButton : System.Windows.Controls.Button { #region Members - /// - /// Register the EmailProperty - /// + /// Register the EmailProperty. public static readonly DependencyProperty EmailProperty = DependencyProperty.Register("EmailAddress", typeof(object), typeof(EmailButton), new PropertyMetadata(false)); - /// - /// Icon of the Button - /// + /// Icon of the Button. private static BitmapImage icon = new BitmapImage(new Uri(Icons.WebMail, UriKind.Relative)); #endregion #region Constructors - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public EmailButton() : base() { @@ -51,9 +47,8 @@ namespace CampusAppWP8.Utility.Lui.Button #region Proberties - /// - /// Gets or sets the EmailAddress - /// + /// Gets or sets the EmailAddress. + /// The email address. public object EmailAddress { get { return (object)this.GetValue(EmailProperty); } @@ -64,12 +59,9 @@ namespace CampusAppWP8.Utility.Lui.Button #region Methods - /// - /// Overrides the OnClick-Method from button - /// - /// - /// now method start the EmailComposeTask - /// + /// Overrides the OnClick-Method from button. + /// now method start the EmailComposeTask. + /// protected override void OnClick() { EmailComposeTask emailTask = new EmailComposeTask(); diff --git a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/GoToMapButton.cs b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/GoToMapButton.cs index 7247612e..c0859710 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/GoToMapButton.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/GoToMapButton.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 08.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the go to map button class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility.Lui.Button { using System; @@ -15,30 +16,25 @@ namespace CampusAppWP8.Utility.Lui.Button using CampusAppWP8.Resources; using Microsoft.Phone.Tasks; - /// - /// This class create an Button which open a Map - /// + /// This class create an Button which open a Map. + /// Stubbfel, 15.10.2013. + /// public class GoToMapButton : System.Windows.Controls.Button { #region Members - /// - /// Register the SearchTermProperty - /// + /// Register the SearchTermProperty. public static readonly DependencyProperty SearchTermProperty = DependencyProperty.Register("SearchTerm", typeof(object), typeof(GoToMapButton), new PropertyMetadata(false)); - /// - /// Icon of the Button - /// + /// Icon of the Button. private static BitmapImage icon = new BitmapImage(new Uri(Icons.Campus, UriKind.Relative)); #endregion #region Constructors - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public GoToMapButton() : base() { @@ -52,9 +48,8 @@ namespace CampusAppWP8.Utility.Lui.Button #region Proberties - /// - /// Gets or sets the Url - /// + /// Gets or sets the Url. + /// The search term. public object SearchTerm { get { return (object)this.GetValue(SearchTermProperty); } @@ -65,12 +60,9 @@ namespace CampusAppWP8.Utility.Lui.Button #region Methods - /// - /// Overrides the OnClick-Method from button - /// - /// - /// now method start the MapTask - /// + /// Overrides the OnClick-Method from button. + /// now method start the MapTask. + /// protected override void OnClick() { string urlString = Constants.PathCampusmap_Campusmap; diff --git a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/LinkButton.cs b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/LinkButton.cs index e2adeeb2..e1b292cd 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/LinkButton.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/LinkButton.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 08.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the link button class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility.Lui.Button { using System; @@ -15,29 +16,26 @@ namespace CampusAppWP8.Utility.Lui.Button using Microsoft.Phone.Tasks; /// - /// This class create an Button which start the WebBrowser, which an certain url + /// This class create an Button which start the WebBrowser, which an certain url. /// + /// Stubbfel, 15.10.2013. + /// public class LinkButton : System.Windows.Controls.Button { #region Members - /// - /// Register the EmailProperty - /// + /// Register the EmailProperty. public static readonly DependencyProperty LinkProperty = DependencyProperty.Register("Url", typeof(object), typeof(LinkButton), new PropertyMetadata(false)); - /// - /// Icon of the Button - /// + /// Icon of the Button. private static BitmapImage icon = new BitmapImage(new Uri(Icons.Link, UriKind.Relative)); #endregion #region Constructors - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public LinkButton() : base() { @@ -51,9 +49,8 @@ namespace CampusAppWP8.Utility.Lui.Button #region Proberties - /// - /// Gets or sets the Url - /// + /// Gets or sets the Url. + /// The URL. public object Url { get { return (object)this.GetValue(LinkProperty); } @@ -64,12 +61,9 @@ namespace CampusAppWP8.Utility.Lui.Button #region Methods - /// - /// Overrides the OnClick-Method from button - /// - /// - /// now method start the WebBrowserTask - /// + /// Overrides the OnClick-Method from button. + /// now method start the WebBrowserTask. + /// protected override void OnClick() { Uri linkUrl = new Uri(this.Url as string, UriKind.Absolute); diff --git a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/NavigateButton.cs b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/NavigateButton.cs index 2f0a02a5..9a03e8a9 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/NavigateButton.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/NavigateButton.cs @@ -1,45 +1,39 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 08.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the navigate button class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility.Lui.Button { using System; using System.Windows; using System.Windows.Controls; - /// - /// This class create an Button which navigate to a certain page - /// + /// This class create an Button which navigate to a certain page. + /// Stubbfel, 15.10.2013. + /// public class NavigateButton : System.Windows.Controls.Button { #region Members - /// - /// Register the UrlProperty - /// + /// Register the UrlProperty. public static readonly DependencyProperty NavigateProperty = DependencyProperty.Register("Url", typeof(object), typeof(NavigateButton), new PropertyMetadata(false)); - /// - /// Register the QueryValueProperty - /// + /// Register the QueryValueProperty. public static readonly DependencyProperty QueryValueProperty = DependencyProperty.Register("QuerryStringValue", typeof(object), typeof(NavigateButton), new PropertyMetadata(false)); - /// - /// Register the QueryNameProperty - /// + /// Register the QueryNameProperty. public static readonly DependencyProperty QueryNameProperty = DependencyProperty.Register("QuerryStringName", typeof(object), typeof(NavigateButton), new PropertyMetadata(false)); #endregion #region Constructors - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public NavigateButton() : base() { @@ -49,27 +43,24 @@ namespace CampusAppWP8.Utility.Lui.Button #region Proberties - /// - /// Gets or sets the Url - /// + /// Gets or sets the Url. + /// The URL. public object Url { get { return (object)this.GetValue(NavigateProperty); } set { this.SetValue(NavigateProperty, value); } } - /// - /// Gets or sets the QueryStringName - /// + /// Gets or sets the QueryStringName. + /// The name of the query string. public object QuerryStringName { get { return (object)this.GetValue(QueryNameProperty); } set { this.SetValue(QueryNameProperty, value); } } - /// - /// Gets or sets the QueryStringValue - /// + /// Gets or sets the QueryStringValue. + /// The query string value. public object QuerryStringValue { get { return (object)this.GetValue(QueryValueProperty); } @@ -80,12 +71,9 @@ namespace CampusAppWP8.Utility.Lui.Button #region Methods - /// - /// Overrides the OnClick-Method from button - /// - /// - /// now method navigate to a certain page - /// + /// Overrides the OnClick-Method from button. + /// now method navigate to a certain page. + /// protected override void OnClick() { string urlString = this.Url as string; diff --git a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/PhoneButton.cs b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/PhoneButton.cs index a65f0a4e..32033122 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/PhoneButton.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/PhoneButton.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 08.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the phone button class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility.Lui.Button { using System; @@ -14,35 +15,28 @@ namespace CampusAppWP8.Utility.Lui.Button using CampusAppWP8.Resources; using Microsoft.Phone.Tasks; - /// - /// This class create an Button which start a PhoneCall - /// + /// This class create an Button which start a PhoneCall. + /// Stubbfel, 15.10.2013. + /// public class PhoneButton : System.Windows.Controls.Button { #region Members - /// - /// Register the PhoneProperty - /// + /// Register the PhoneProperty. public static readonly DependencyProperty PhoneProperty = DependencyProperty.Register("Number", typeof(object), typeof(PhoneButton), new PropertyMetadata(false)); - /// - /// Register the DisplayNameProperty - /// + /// Register the DisplayNameProperty. public static readonly DependencyProperty DisplayNameProperty = DependencyProperty.Register("DisplayName", typeof(object), typeof(PhoneButton), new PropertyMetadata(false)); - /// - /// Icon of the Button - /// + /// Icon of the Button. private static BitmapImage icon = new BitmapImage(new Uri(Icons.Phone, UriKind.Relative)); #endregion #region Constructors - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public PhoneButton() : base() { @@ -56,18 +50,16 @@ namespace CampusAppWP8.Utility.Lui.Button #region Proberties - /// - /// Gets or sets the PhoneNumber - /// + /// Gets or sets the PhoneNumber. + /// The new PhoneNumber. public object Number { get { return (object)this.GetValue(PhoneProperty); } set { this.SetValue(PhoneProperty, value); } } - /// - /// Gets or sets the DisplayName - /// + /// Gets or sets the DisplayName. + /// The name which is showing on the display public object DisplayName { get { return (object)this.GetValue(DisplayNameProperty); } @@ -78,12 +70,9 @@ namespace CampusAppWP8.Utility.Lui.Button #region Methods - /// - /// Overrides the OnClick-Method from button - /// - /// - /// now method start the PhoneTask - /// + /// Overrides the OnClick-Method from button. + /// now method start the PhoneTask. + /// protected override void OnClick() { PhoneCallTask phoneCallTask = new PhoneCallTask(); diff --git a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/ToggleButton.cs b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/ToggleButton.cs index b59f43ad..0f738929 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/ToggleButton.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/ToggleButton.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 08.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the toggle button class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility.Lui.Button { using System.Collections.Generic; @@ -12,29 +13,25 @@ namespace CampusAppWP8.Utility.Lui.Button using System.Windows.Controls; /// - /// This class create an Button which can toggle the Visibility of certain FrameworkElements + /// This class create an Button which can toggle the Visibility of certain FrameworkElements. /// + /// Stubbfel, 15.10.2013. + /// public class ToggleButton : System.Windows.Controls.Button { #region Members #region public - /// - /// Register the ToggleContentTag - /// + /// Register the ToggleContentTag. public static readonly DependencyProperty ToggleContentTagProperty = DependencyProperty.Register("ToggleContentTag", typeof(object), typeof(ToggleButton), new PropertyMetadata(false)); #endregion #region private - /// - /// List of FrameworkElement which can change their Visibility by this button - /// + /// List of FrameworkElement which can change their Visibility by this button. private List toggleElements = null; - /// - /// EventHandler of the ToggleButton - /// + /// EventHandler of the ToggleButton. private ToggleButtonHandler eventHandler; #endregion @@ -43,9 +40,8 @@ namespace CampusAppWP8.Utility.Lui.Button #region Constructors - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public ToggleButton() : base() { @@ -55,22 +51,18 @@ namespace CampusAppWP8.Utility.Lui.Button #region Events - /// - /// Delegate for the ToggleButton events - /// + /// Delegate for the ToggleButton events. + /// Stubbfel, 15.10.2013. private delegate void ToggleButtonHandler(); - /// - /// The closeButtonEvent - /// + /// The closeButtonEvent. private static event ToggleButtonHandler CloseButtonEvent; #endregion #region Proberties - /// - /// Gets or sets the ToggleContentTag - /// + /// Gets or sets the ToggleContentTag. + /// The toggle content tag. public object ToggleContentTag { get { return (object)this.GetValue(ToggleContentTagProperty); } @@ -84,8 +76,9 @@ namespace CampusAppWP8.Utility.Lui.Button #region public /// - /// Method close the ToggleContent of the old ToggleContent and then show the new one + /// Method close the ToggleContent of the old ToggleContent and then show the new one. /// + /// Stubbfel, 15.10.2013. public void ToggleToggleContent() { if (this.toggleElements != null) @@ -103,9 +96,8 @@ namespace CampusAppWP8.Utility.Lui.Button } } - /// - /// Method show all Element of the ToggleContent - /// + /// Method show all Element of the ToggleContent. + /// Stubbfel, 15.10.2013. public void ShowToggleContent() { if (this.toggleElements != null) @@ -117,9 +109,8 @@ namespace CampusAppWP8.Utility.Lui.Button } } - /// - /// Method show all Element of the ToggleContent - /// + /// Method show all Element of the ToggleContent. + /// Stubbfel, 15.10.2013. public void HideToggleContent() { if (this.toggleElements != null) @@ -134,12 +125,9 @@ namespace CampusAppWP8.Utility.Lui.Button #region protected - /// - /// Overrides the OnClick-Method from button - /// - /// - /// now method toggle the visibility of some FrameWorkElements - /// + /// Overrides the OnClick-Method from button. + /// now method toggle the visibility of some FrameWorkElements. + /// protected override void OnClick() { if (this.toggleElements == null) @@ -154,9 +142,8 @@ namespace CampusAppWP8.Utility.Lui.Button #region private - /// - /// Method look for some ToggleContent - /// + /// Method look for some ToggleContent. + /// Stubbfel, 15.10.2013. private void SetupToggleElements() { this.toggleElements = new List(); @@ -177,10 +164,9 @@ namespace CampusAppWP8.Utility.Lui.Button } } - /// - /// Gets the first panel, which is a parent of this button - /// - /// first panel of the parents + /// Gets the first panel, which is a parent of this button. + /// Stubbfel, 15.10.2013. + /// first panel of the parents. private Panel GetFirstParentPanel() { FrameworkElement parentElement = this.Parent as FrameworkElement; @@ -199,10 +185,9 @@ namespace CampusAppWP8.Utility.Lui.Button return parentPanel; } - /// - /// Method toggle the visibility of a certain element - /// - /// element of the ToggleContent + /// Method toggle the visibility of a certain element. + /// Stubbfel, 15.10.2013. + /// element of the ToggleContent. private void ToggleToggleContentElement(UIElement element) { if (element != null) @@ -218,10 +203,9 @@ namespace CampusAppWP8.Utility.Lui.Button } } - /// - /// Method show the visibility of a certain element - /// - /// element of the ToggleContent + /// Method show the visibility of a certain element. + /// Stubbfel, 15.10.2013. + /// element of the ToggleContent. private void ShowToggleContentElement(UIElement element) { if (element != null) @@ -235,10 +219,9 @@ namespace CampusAppWP8.Utility.Lui.Button } } - /// - /// Method hide the visibility of a certain element - /// - /// element of the ToggleContent + /// Method hide the visibility of a certain element. + /// Stubbfel, 15.10.2013. + /// element of the ToggleContent. private void HideToggleContentElement(UIElement element) { if (element != null) diff --git a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/UpdateButtonAppBar.cs b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/UpdateButtonAppBar.cs index 466ac72c..b94d306a 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/UpdateButtonAppBar.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/Lui/Button/UpdateButtonAppBar.cs @@ -1,40 +1,36 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 22.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the update button application bar class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility.Lui.Button { using System; using CampusAppWP8.Resources; using Microsoft.Phone.Shell; - /// - /// This class create an Button which start the Email-Client - /// + /// This class create an Button which start the Email-Client. + /// Stubbfel, 15.10.2013. + /// public class UpdateButtonAppBar : ApplicationBarIconButton { #region Members - /// - /// IconUri of the Button - /// + /// IconUri of the Button. private static Uri iconUri = new Uri(Icons.Update, UriKind.Relative); - /// - /// Text of the Button - /// + /// Text of the Button. private static string text = AppResources.UpdateBtn; #endregion #region Constructors - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public UpdateButtonAppBar() : base() { diff --git a/CampusAppWP8/CampusAppWP8/Utility/Lui/Header/DefaultHeader.xaml.cs b/CampusAppWP8/CampusAppWP8/Utility/Lui/Header/DefaultHeader.xaml.cs index 8604b6cd..7d5ec48d 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/Lui/Header/DefaultHeader.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/Lui/Header/DefaultHeader.xaml.cs @@ -1,33 +1,33 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 07.10.2013 -//----------------------------------------------------------------------------- +// 15.10.2013 +// Implements the default header.xaml class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility.Lui.Header { using System.Windows; using System.Windows.Controls; using CampusAppWP8.Resources; - /// - /// Default Header Template. - /// + /// Default Header Template. + /// fiedlchr, 15.10.2013. + /// public partial class DefaultHeader : UserControl { - /// AppTitle property object. + /// AppTitle property object. public static readonly DependencyProperty AppTitleProperty = DependencyProperty.Register("AppTitle", typeof(string), typeof(DefaultHeader), new PropertyMetadata(null)); - /// HeaderName property object. + /// HeaderName property object. public static readonly DependencyProperty HeaderNameProperty = DependencyProperty.Register("HeaderName", typeof(string), typeof(DefaultHeader), new PropertyMetadata(null)); - /// ProgressVisibility property object. + /// ProgressVisibility property object. public static readonly DependencyProperty ProgressVisibilityProperty = DependencyProperty.Register("ProgressVisibility", typeof(Visibility), typeof(DefaultHeader), new PropertyMetadata(null)); - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// fiedlchr, 15.10.2013. public DefaultHeader() { this.InitializeComponent(); @@ -35,9 +35,8 @@ namespace CampusAppWP8.Utility.Lui.Header this.ProgressVisibility = Visibility.Collapsed; } - /// - /// Gets or sets the AppTitle property. - /// + /// Gets or sets the AppTitle property. + /// The application title. public string AppTitle { get @@ -51,9 +50,8 @@ namespace CampusAppWP8.Utility.Lui.Header } } - /// - /// Gets or sets the HeaderName property. - /// + /// Gets or sets the HeaderName property. + /// The name of the header. public string HeaderName { get @@ -67,6 +65,8 @@ namespace CampusAppWP8.Utility.Lui.Header } } + /// Gets or sets the progress visibility. + /// The progress visibility. public Visibility ProgressVisibility { get diff --git a/CampusAppWP8/CampusAppWP8/Utility/Lui/MessageBoxes/MessageBoxes.cs b/CampusAppWP8/CampusAppWP8/Utility/Lui/MessageBoxes/MessageBoxes.cs index 21fcefc1..e9851bbb 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/Lui/MessageBoxes/MessageBoxes.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/Lui/MessageBoxes/MessageBoxes.cs @@ -1,80 +1,82 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 15.08.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the message boxes class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility.Lui.MessageBoxes { using System.Windows; using CampusAppWP8.Resources; - /// - /// Class creates some MessageBoxes - /// + /// Class creates some MessageBoxes. + /// Stubbfel, 15.10.2013. public class MessageBoxes { #region Method - /// - /// Method show the MessageBox for the GeoWatch-OptIn - /// - /// result of the UserInteraction + /// Method show the MessageBox for the GeoWatch-OptIn. + /// Stubbfel, 15.10.2013. + /// result of the UserInteraction. public static MessageBoxResult ShowGoeWatchOptInBox() { return MessageBox.Show(AppResources.MsgBox_GeoWatchOptInText, AppResources.MsgBox_GeoWatchOptInHeader, MessageBoxButton.OKCancel); } - /// - /// Method show the MessageBox for the ErrorMessageBox - /// - /// custom text for the box - /// result of the UserInteraction + /// Method show the MessageBox for the ErrorMessageBox. + /// Stubbfel, 15.10.2013. + /// custom text for the box. + /// result of the UserInteraction. public static MessageBoxResult ShowMainModelErrorMessageBox(string text) { return MessageBox.Show(text, AppResources.MsgBox_ErrorHeader, MessageBoxButton.OK); } - /// Shows the main model information message box. - /// Stubbfel, 10.09.2013. - /// custom text for the box. - /// result of the UserInteraction + /// Shows the main model information message box. + /// Stubbfel, 10.09.2013. + /// custom text for the box. + /// result of the UserInteraction. public static MessageBoxResult ShowMainModelInfoMessageBox(string text) { return MessageBox.Show(text, AppResources.MsgBox_InfoHeader, MessageBoxButton.OK); } - /// Shows the place information message box. - /// Stubbfel, 10.09.2013. - /// custom text for the box. - /// result of the UserInteraction + /// Shows the place information message box. + /// Stubbfel, 10.09.2013. + /// custom text for the box. + /// result of the UserInteraction. public static MessageBoxResult ShowPlaceInfoMessageBox(string text) { return MessageBox.Show(text, AppResources.MsgBox_PlaceInfoHeader, MessageBoxButton.OK); } - /// Shows the place information message box (OKCancel-Box). - /// Stubbfel, 10.09.2013. - /// custom text for the box. - /// result of the UserInteraction + /// Shows the place information message box (OKCancel-Box). + /// Stubbfel, 10.09.2013. + /// custom text for the box. + /// result of the UserInteraction. public static MessageBoxResult ShowPlaceInfoOkCancelMessageBox(string text) { return MessageBox.Show(text, AppResources.MsgBox_PlaceInfoHeader, MessageBoxButton.OKCancel); } + /// Shows the btu tag information ok cancel message box. + /// Stubbfel, 15.10.2013. + /// (Optional) custom text for the box. + /// A MessageBoxResult. public static MessageBoxResult ShowBtuTagInfoOkCancelMessageBox(string text = null) { - string tagString; if (text != null) { - tagString = ":\n" + Wp8StringManager.ToShortString(text, 160, "..."); + tagString = ":\n" + Wp8StringManager.ToShortString(text, 160, "..."); } else { tagString = "!"; } + string btuString = AppResources.BTUTag_Prefix + tagString + "\n" + AppResources.BTUTag_Suffix; return MessageBox.Show(btuString, AppResources.MsgBox_BtuInfoHeader, MessageBoxButton.OKCancel); } diff --git a/CampusAppWP8/CampusAppWP8/Utility/Lui/Tiles/TileCreator.cs b/CampusAppWP8/CampusAppWP8/Utility/Lui/Tiles/TileCreator.cs index 3745abfa..ba0fe5aa 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/Lui/Tiles/TileCreator.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/Lui/Tiles/TileCreator.cs @@ -1,11 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 18.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the tile creator class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility.Lui.Tiles { using System; @@ -13,21 +13,19 @@ namespace CampusAppWP8.Utility.Lui.Tiles using CampusAppWP8.Resources; using Microsoft.Phone.Shell; - /// - /// Class creates different live tiles - /// + /// Class creates different live tiles. + /// Stubbfel, 15.10.2013. public class TileCreator { - /// - /// Method creates an IconicTile - /// - /// title of the tile - /// path the the page - /// icon url of the main icon - /// icon url of the small icon - /// string for the wide content 1 - /// string for the wide content 2 - /// string for the wide content 3 + /// Method creates an IconicTile. + /// Stubbfel, 15.10.2013. + /// title of the tile. + /// path the the page. + /// icon url of the main icon. + /// icon url of the small icon. + /// (Optional) string for the wide content 1. + /// (Optional) string for the wide content 2. + /// (Optional) string for the wide content 3. public static void CreateIconicTile(string title, string path, string iconUrl, string smallIcon, string wideContent1 = null, string wideContent2 = null, string wideContent3 = null) { IconicTileData iconTile = new IconicTileData(); @@ -50,9 +48,8 @@ namespace CampusAppWP8.Utility.Lui.Tiles ShellTile.Create(new Uri(path, UriKind.Relative), iconTile, true); } - /// - /// Method creates the MensaTile - /// + /// Method creates the MensaTile. + /// Stubbfel, 15.10.2013. public static void CreateMensaTile() { TileCreator.CreateIconicTile(AppResources.MensaApp_Title, Constants.PathMensa_MensaPage, Icons.Mensa, Icons.Mensa); @@ -61,17 +58,15 @@ namespace CampusAppWP8.Utility.Lui.Tiles BackgroundTasks.StartBTUCampusAppTask(); } - /// - /// Method creates the MailTile - /// + /// Method creates the MailTile. + /// Stubbfel, 15.10.2013. public static void CreateWebMailTile() { TileCreator.CreateIconicTile(AppResources.MailApp_Title, Constants.PathMail_WebMailPage, Icons.WebMail, Icons.WebMail); } - /// - /// Method creates the NewsTile - /// + /// Method creates the NewsTile. + /// Stubbfel, 15.10.2013. public static void CreateNewsTile() { TileCreator.CreateIconicTile(AppResources.NewsApp_Title, Constants.PathNews_NewsIndexPage, Icons.News, Icons.News); @@ -80,17 +75,15 @@ namespace CampusAppWP8.Utility.Lui.Tiles BackgroundTasks.StartBTUCampusAppTask(); } - /// - /// Method creates the LectureTile - /// + /// Method creates the LectureTile. + /// Stubbfel, 15.10.2013. public static void CreateLectureTile() { TileCreator.CreateIconicTile(AppResources.LectureApp_Title, Constants.PathLecture_LecturePage, Icons.Lectures, Icons.Lectures); } - /// - /// Method creates the EventTile - /// + /// Method creates the EventTile. + /// Stubbfel, 15.10.2013. public static void CreateEventTile() { TileCreator.CreateIconicTile(AppResources.EventApp_Title, Constants.PathEvents_EventsIndexPage, Icons.Events, Icons.Events); @@ -99,65 +92,57 @@ namespace CampusAppWP8.Utility.Lui.Tiles BackgroundTasks.StartBTUCampusAppTask(); } - /// - /// Method creates the DepartmentTile - /// + /// Method creates the DepartmentTile. + /// Stubbfel, 15.10.2013. public static void CreateDepartmentTile() { TileCreator.CreateIconicTile(AppResources.DepartmentApp_Title, Constants.PathDepartment_DepartmentIndexPage, Icons.Departments, Icons.Departments); } - /// - /// Method creates the OpeningHoursTile - /// + /// Method creates the OpeningHoursTile. + /// Stubbfel, 15.10.2013. public static void CreateOpeningHoursTile() { TileCreator.CreateIconicTile(AppResources.OpenHoursApp_Title, Constants.PathOpeninghours_OpeninghoursPage, Icons.Openhours, Icons.Openhours); } - /// - /// Method creates the linkTile - /// + /// Method creates the linkTile. + /// Stubbfel, 15.10.2013. public static void CreateLinkTile() { TileCreator.CreateIconicTile(AppResources.LinkApp_Title, Constants.PathLinks_LinkPage, Icons.Link, Icons.Link); } - /// - /// Method creates the StudentCouncilTile - /// + /// Method creates the StudentCouncilTile. + /// Stubbfel, 15.10.2013. public static void CreateStudentCouncilTile() { TileCreator.CreateIconicTile(AppResources.OSAApp_Title, Constants.PathStudentCouncil_StudentCouncilPage, Icons.StudentCouncil, Icons.StudentCouncil); } - /// - /// Method creates the ExamsTile - /// + /// Method creates the ExamsTile. + /// Stubbfel, 15.10.2013. public static void CreateExamsTile() { TileCreator.CreateIconicTile(AppResources.ExaminationApp_Header, Constants.PathExams_ExamsPage, Icons.Exams, Icons.Exams); } - /// - /// Method creates the PersonTile - /// + /// Method creates the PersonTile. + /// Stubbfel, 15.10.2013. public static void CreatePersonTile() { TileCreator.CreateIconicTile(AppResources.PersonApp_Title, Constants.PathPerson_Person, Icons.Person, Icons.Person); } - /// - /// Method creates the PlaceNewsTile - /// + /// Method creates the PlaceNewsTile. + /// Stubbfel, 15.10.2013. public static void CreatePlaceNewsTile() { TileCreator.CreateIconicTile(AppResources.PlaceNewsApp_Title, Constants.PathPlaceNews_PlaceNewsPage, Icons.News, Icons.News); } - /// - /// Method creates the CampusMapTile - /// + /// Method creates the CampusMapTile. + /// Stubbfel, 15.10.2013. public static void CreateCampusMapTile() { TileCreator.CreateIconicTile(AppResources.CampusMapApp_Title, Constants.PathCampusmap_Campusmap, Icons.Campus, Icons.Campus); diff --git a/CampusAppWP8/CampusAppWP8/Utility/NDEF/NDEFMessage.cs b/CampusAppWP8/CampusAppWP8/Utility/NDEF/NDEFMessage.cs index f4038e46..09e10bb0 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/NDEF/NDEFMessage.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/NDEF/NDEFMessage.cs @@ -10,24 +10,24 @@ namespace CampusAppWP8.Utility.NDEF using System.Collections.Generic; using System.IO; - /// Ndef message. - /// Stubbfel, 21.08.2013. + /// Ndef message. + /// Stubbfel, 21.08.2013. public class NDEFMessage { #region Members - /// The records. + /// The records. private List records; #endregion #region constructors - /// Initializes a new instance of the NDEFMessage class. - /// Stubbfel, 21.08.2013. - /// The content. - /// The type. - /// (Optional) the tnf. + /// Initializes a new instance of the NDEFMessage class. + /// Stubbfel, 21.08.2013. + /// The content. + /// The type. + /// (Optional) the tnf. public NDEFMessage(string content, TYPEVAL type, NDEFRecord.TNFVAL tnf = NDEFRecord.TNFVAL.WKT) { this.records = new List(); @@ -60,9 +60,9 @@ namespace CampusAppWP8.Utility.NDEF this.records[this.records.IndexOf(tmpRecord)].ME = NDEFRecord.NDEFFlags.MESET; } - /// Initializes a new instance of the NDEFMessage class. - /// Stubbfel, 21.08.2013. - /// The array. + /// Initializes a new instance of the NDEFMessage class. + /// Stubbfel, 21.08.2013. + /// The array. public NDEFMessage(byte[] array) { this.records = new List(); @@ -80,8 +80,8 @@ namespace CampusAppWP8.Utility.NDEF #region enum - /// Values that represent TYPEVAL. - /// Stubbfel, 21.08.2013. + /// Values that represent TYPEVAL. + /// Stubbfel, 21.08.2013. public enum TYPEVAL { /// An enum constant representing the empty option. @@ -97,10 +97,11 @@ namespace CampusAppWP8.Utility.NDEF #endregion #region Methods - /// Gets a praefix. - /// Stubbfel, 21.08.2013. - /// The type. - /// The praefix. + + /// Gets a praefix. + /// Stubbfel, 21.08.2013. + /// The type. + /// The praefix. public static string GetPraefix(TYPEVAL type) { string praefix = string.Empty; @@ -120,9 +121,9 @@ namespace CampusAppWP8.Utility.NDEF return praefix; } - /// Gets the content. - /// Stubbfel, 21.08.2013. - /// The content. + /// Gets the content. + /// Stubbfel, 21.08.2013. + /// The content. public string GetContent() { string result = string.Empty; @@ -135,9 +136,9 @@ namespace CampusAppWP8.Utility.NDEF return result; } - /// Converts this object to a byte array. - /// Stubbfel, 21.08.2013. - /// This object as a byte[]. + /// Converts this object to a byte array. + /// Stubbfel, 21.08.2013. + /// This object as a byte[]. public byte[] ToByteArray() { MemoryStream ms = new MemoryStream(); diff --git a/CampusAppWP8/CampusAppWP8/Utility/NDEF/NDEFRecord.cs b/CampusAppWP8/CampusAppWP8/Utility/NDEF/NDEFRecord.cs index 8d3a0c7e..4b26a89f 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/NDEF/NDEFRecord.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/NDEF/NDEFRecord.cs @@ -1,40 +1,42 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 21.08.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the ndef record class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility.NDEF { using System.IO; using System.Text; - /// Ndef record of a NDEFMessage. - /// Stubbfel, 21.08.2013. + /// Ndef record of a NDEFMessage. + /// Stubbfel, 21.08.2013. public abstract class NDEFRecord { #region Members - /// The maximum record pay load. + /// The maximum record pay load. public const int MaxRecordPayLoad = 255; - /// Size of the type. + /// Size of the type. protected const byte TypeSize = 0x01; #endregion #region Constructors - /// Initializes a new instance of the NDEFRecord class. - /// Stubbfel, 21.08.2013. + + /// Initializes a new instance of the NDEFRecord class. + /// Stubbfel, 21.08.2013. public NDEFRecord() { } - /// Initializes a new instance of the NDEFRecord class. - /// Stubbfel, 21.08.2013. - /// The array. - /// (Optional) zero-based index of the. + /// Initializes a new instance of the NDEFRecord class. + /// Stubbfel, 21.08.2013. + /// The array. + /// (Optional) zero-based index of the. public NDEFRecord(byte[] array, int index = 0) { this.FormatFlags = array[index]; @@ -44,8 +46,8 @@ namespace CampusAppWP8.Utility.NDEF #region enum - /// Values that represent NDEFFlags. - /// Stubbfel, 21.08.2013. + /// Values that represent NDEFFlags. + /// Stubbfel, 21.08.2013. public enum NDEFFlags { /// An Enum constant representing the UNSET option. @@ -70,8 +72,8 @@ namespace CampusAppWP8.Utility.NDEF TNFSET = 0x03 } - /// Values that represent TNFVAL. - /// Stubbfel, 21.08.2013. + /// Values that represent TNFVAL. + /// Stubbfel, 21.08.2013. public enum TNFVAL { /// An enum constant representing the empty option. @@ -102,36 +104,37 @@ namespace CampusAppWP8.Utility.NDEF #endregion #region Properties - /// Gets or sets the MBFlag. - /// The MBFlag. + + /// Gets or sets the MBFlag. + /// The MBFlag. public NDEFFlags MB { get; set; } - /// Gets or sets MEFlag. - /// The MEFlag . + /// Gets or sets MEFlag. + /// The MEFlag . public NDEFFlags ME { get; set; } - /// Gets or sets the CFFlag. - /// The CFFlag. + /// Gets or sets the CFFlag. + /// The CFFlag. public NDEFFlags CF { get; set; } - /// Gets or sets the SRFlag. - /// The SRFlag. + /// Gets or sets the SRFlag. + /// The SRFlag. public NDEFFlags SR { get; set; } - /// Gets or sets the ILFlag. - /// The ILFlag. + /// Gets or sets the ILFlag. + /// The ILFlag. public NDEFFlags IL { get; set; } - /// Gets or sets the TNFField. - /// The TNFField. + /// Gets or sets the TNFField. + /// The TNFField. public TNFVAL TNF { get; set; } - /// Gets or sets the type. - /// The type. + /// Gets or sets the type. + /// The type. public NDEFMessage.TYPEVAL Type { get; set; } - /// Gets or sets the format flags. - /// The format flags. + /// Gets the format flags. + /// The format flags. public byte FormatFlags { get @@ -150,12 +153,12 @@ namespace CampusAppWP8.Utility.NDEF } } - /// Gets or sets the payload. - /// The payload. + /// Gets or sets the payload. + /// The payload. public string Payload { get; set; } - /// Gets the size of the record. - /// The size of the record. + /// Gets the size of the record. + /// The size of the record. public int RecordSize { get @@ -164,21 +167,21 @@ namespace CampusAppWP8.Utility.NDEF } } - /// Gets or sets the payload praefix. - /// The payload praefix. + /// Gets or sets the payload praefix. + /// The payload praefix. public string PayloadPraefix { get; set; } - /// Gets or sets the size of the header. - /// The size of the header. + /// Gets or sets the size of the header. + /// The size of the header. protected int HeaderSize { get; set; } #endregion #region Methods - /// Converts the record to a byte array. - /// Stubbfel, 21.08.2013. - /// This object as a byte[]. + /// Converts the record to a byte array. + /// Stubbfel, 21.08.2013. + /// This object as a byte[]. public abstract byte[] ToByteArray(); #endregion diff --git a/CampusAppWP8/CampusAppWP8/Utility/NDEF/NDEFShortRecord.cs b/CampusAppWP8/CampusAppWP8/Utility/NDEF/NDEFShortRecord.cs index 438edc25..29785ef1 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/NDEF/NDEFShortRecord.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/NDEF/NDEFShortRecord.cs @@ -1,22 +1,24 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 21.08.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the ndef short record class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility.NDEF { using System.Text; - /// Ndef short record. - /// Stubbfel, 21.08.2013. + /// Ndef short record. + /// Stubbfel, 21.08.2013. + /// public class NDEFShortRecord : NDEFRecord { #region Constructor - /// Initializes a new instance of the NDEFShortRecord class. - /// Stubbfel, 21.08.2013. + /// Initializes a new instance of the NDEFShortRecord class. + /// Stubbfel, 21.08.2013. public NDEFShortRecord() { this.HeaderSize = 4; @@ -25,10 +27,10 @@ namespace CampusAppWP8.Utility.NDEF this.CF = NDEFFlags.UNSET; } - /// Initializes a new instance of the NDEFShortRecord class. - /// Stubbfel, 21.08.2013. - /// The array. - /// (Optional) zero-based index of the. + /// Initializes a new instance of the NDEFShortRecord class. + /// Stubbfel, 21.08.2013. + /// The array. + /// (Optional) zero-based index of the. public NDEFShortRecord(byte[] array, int index = 0) : base(array) { @@ -43,9 +45,9 @@ namespace CampusAppWP8.Utility.NDEF #region Method - /// Converts this NDEFShortRecord to a byte array. - /// Stubbfel, 21.08.2013. - /// This object as a byte[]. + /// Converts this NDEFShortRecord to a byte array. + /// Stubbfel, 21.08.2013. + /// public override byte[] ToByteArray() { byte[] payloadAr = Encoding.UTF8.GetBytes(this.PayloadPraefix + this.Payload); diff --git a/CampusAppWP8/CampusAppWP8/Utility/Wp8StringManager.cs b/CampusAppWP8/CampusAppWP8/Utility/Wp8StringManager.cs index f8c57b83..fe0a7735 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/Wp8StringManager.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/Wp8StringManager.cs @@ -1,26 +1,26 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 06.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the wp 8 string manager class +//----------------------------------------------------------------------- namespace CampusAppWP8.Utility { using System; using System.Text.RegularExpressions; using CampusAppWP8.Resources; - /// - /// Class provides some special StringMethods - /// + /// Class provides some special StringMethods. + /// Stubbfel, 15.10.2013. + /// public class Wp8StringManager : CampusAppWPortalLib8.Utility.DefaultStringManager { - /// - /// Method removes Html-Tag of a String - /// - /// String with Html-Tags - /// String without Html-Tags + /// Method removes Html-Tag of a String. + /// Stubbfel, 15.10.2013. + /// String with Html-Tags. + /// String without Html-Tags. public static string StripAndDecodeHTML(string inputString) { return System.Net.HttpUtility.HtmlDecode(Wp8StringManager.StripHTML(inputString)); From 4f658a0fbcfc5eb123a3b78eed2273b5cd30f57e Mon Sep 17 00:00:00 2001 From: stubbfel Date: Tue, 15 Oct 2013 12:21:01 +0200 Subject: [PATCH 7/9] refactor schedulagent --- .../ScheduledAgent.cs | 146 ++++++++---------- .../Settings.StyleCop | 3 +- .../Utility/BackgroundTasks.cs | 23 ++- .../Utility/HttpRequest.cs | 36 ++--- 4 files changed, 93 insertions(+), 115 deletions(-) diff --git a/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/ScheduledAgent.cs b/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/ScheduledAgent.cs index 813f7899..eb22f70b 100644 --- a/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/ScheduledAgent.cs +++ b/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/ScheduledAgent.cs @@ -1,11 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 18.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the scheduled agent class +//----------------------------------------------------------------------- namespace CampusAppWP8ScheduledTaskAgent { using System; @@ -21,40 +21,31 @@ namespace CampusAppWP8ScheduledTaskAgent using Microsoft.Phone.Scheduler; using Microsoft.Phone.Shell; - /// - /// Class for agent of the BackgroundTask - /// + /// Class for agent of the BackgroundTask. + /// Stubbfel, 15.10.2013. + /// public class ScheduledAgent : ScheduledTaskAgent { #region Member - /// - /// Model for the mensa feed - /// + /// Model for the mensa feed. private MenuWeekModel mensaModel; - /// - /// Model for the event feed - /// + /// Model for the event feed. private RSSViewModel eventModel; - /// - /// Model for the news feed - /// + /// Model for the news feed. private RSSViewModel newsModel; - /// - /// Variable for the runnig feeds - /// + /// Variable for the running feeds. private int runningFeeds; #endregion #region Constructor - /// - /// Initializes static members of the class. - /// + /// Initializes static members of the class. + /// Stubbfel, 15.10.2013. static ScheduledAgent() { Deployment.Current.Dispatcher.BeginInvoke(delegate @@ -69,10 +60,9 @@ namespace CampusAppWP8ScheduledTaskAgent #region protected - /// - /// override OnInvoke - /// - /// the background Task + /// override OnInvoke. + /// Stubbfel, 15.10.2013. + /// protected override void OnInvoke(ScheduledTask task) { int notRunningFeeds = 0; @@ -120,11 +110,10 @@ namespace CampusAppWP8ScheduledTaskAgent #region private - /// - /// Method handle UnhandledException - /// - /// sender of Exception - /// Exception Args + /// Method handle UnhandledException. + /// Stubbfel, 15.10.2013. + /// sender of Exception. + /// Exception Args. private static void UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) { if (Debugger.IsAttached) @@ -133,10 +122,9 @@ namespace CampusAppWP8ScheduledTaskAgent } } - /// - /// Method handle the EventBackgroundTask - /// - /// the eventTask + /// Method handle the EventBackgroundTask. + /// Stubbfel, 15.10.2013. + /// the eventTask. private void HandleEventTask(ScheduledTask task) { if (this.eventModel == null || !this.CheckRssIsUpToDate(this.eventModel.CreateTime)) @@ -155,10 +143,9 @@ namespace CampusAppWP8ScheduledTaskAgent } } - /// - /// Method handle the NewsBackgroundTask - /// - /// the newsTask + /// Method handle the NewsBackgroundTask. + /// Stubbfel, 15.10.2013. + /// the newsTask. private void HandleNewsTask(ScheduledTask task) { if (this.newsModel == null || !this.CheckRssIsUpToDate(this.newsModel.CreateTime)) @@ -177,11 +164,10 @@ namespace CampusAppWP8ScheduledTaskAgent } } - /// - /// ResponseHandler for the EventFeed - /// - /// sender of the Event - /// Event Args + /// ResponseHandler for the EventFeed. + /// Stubbfel, 15.10.2013. + /// sender of the Event. + /// Event Args. private void GetEventIsReady(object sender, System.Net.DownloadStringCompletedEventArgs arg) { if (arg.Result != null) @@ -200,11 +186,10 @@ namespace CampusAppWP8ScheduledTaskAgent } } - /// - /// ResponseHandler for the NewsFeed - /// - /// sender of the Event - /// Event Args + /// ResponseHandler for the NewsFeed. + /// Stubbfel, 15.10.2013. + /// sender of the Event. + /// Event Args. private void GetNewsIsReady(object sender, System.Net.DownloadStringCompletedEventArgs arg) { if (arg.Result != null) @@ -223,9 +208,8 @@ namespace CampusAppWP8ScheduledTaskAgent } } - /// - /// Method update the NewsTile - /// + /// Method update the NewsTile. + /// Stubbfel, 15.10.2013. private void UpdateNewsTile() { ShellTile tileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains(CampusAppWPortalLib8.Resources.Constants.PathNews_NewsIndexPage)); @@ -243,6 +227,7 @@ namespace CampusAppWP8ScheduledTaskAgent tileToFind.Update(data); } + this.runningFeeds--; } @@ -256,9 +241,8 @@ namespace CampusAppWP8ScheduledTaskAgent } } - /// - /// Method update the EventTile - /// + /// Method update the EventTile. + /// Stubbfel, 15.10.2013. private void UpdateEventTile() { ShellTile tileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains(CampusAppWPortalLib8.Resources.Constants.PathEvents_EventsIndexPage)); @@ -277,6 +261,7 @@ namespace CampusAppWP8ScheduledTaskAgent tileToFind.Update(data); } + this.runningFeeds--; } @@ -286,11 +271,10 @@ namespace CampusAppWP8ScheduledTaskAgent } } - /// - /// Determine the correct MensaFeed/Url - /// - /// the Description of the MensaTask - /// Url of a mensa, which is set is in the UserProfile + /// Determine the correct MensaFeed/Url. + /// Stubbfel, 15.10.2013. + /// the Description of the MensaTask. + /// Url of a mensa, which is set is in the UserProfile. private Uri CalcMensaUrl(string mensaTaskDesc) { Uri url; @@ -318,10 +302,9 @@ namespace CampusAppWP8ScheduledTaskAgent return url; } - /// - /// Method handle the MensaBackgroundTask - /// - /// the newsTask + /// Method handle the MensaBackgroundTask. + /// Stubbfel, 15.10.2013. + /// the newsTask. private void HandleMensaTask(ScheduledTask task) { if (this.mensaModel == null || !this.CheckMensaIsUpToDate(this.mensaModel.CreateTime)) @@ -336,11 +319,10 @@ namespace CampusAppWP8ScheduledTaskAgent } } - /// - /// ResponseHandler for the MensaFeed - /// - /// sender of the Event - /// Event Args + /// ResponseHandler for the MensaFeed. + /// Stubbfel, 15.10.2013. + /// sender of the Event. + /// Event Args. private void GetMensaIsReady(object sender, System.Net.DownloadStringCompletedEventArgs arg) { if (arg.Result != null) @@ -358,9 +340,8 @@ namespace CampusAppWP8ScheduledTaskAgent } } - /// - /// Method update the NewsTile - /// + /// Method update the NewsTile. + /// Stubbfel, 15.10.2013. private void UpdateMensaTile() { ShellTile tileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains(CampusAppWPortalLib8.Resources.Constants.PathMensa_MensaPage)); @@ -391,6 +372,7 @@ namespace CampusAppWP8ScheduledTaskAgent int randomNumber = random.Next(0, mealCount); MealModel meal = this.mensaModel.Menus[dayIndex].Meals[randomNumber]; data.WideContent3 = meal.MealName + ": " + DefaultStringManager.ToShortString(meal.MealDesc, 30, "..."); + // data.Count = this.mensaModel.Menus[dayIndex].Meals.Count; } } @@ -405,11 +387,10 @@ namespace CampusAppWP8ScheduledTaskAgent } } - /// - /// Check if the model of the mensa is up-to-date - /// - /// Date of the last modification - /// true, if it is up-to-date, otherwise false + /// Check if the model of the mensa is up-to-date. + /// Stubbfel, 15.10.2013. + /// Date of the last modification. + /// true, if it is up-to-date, otherwise false. private bool CheckMensaIsUpToDate(DateTime lastModified) { int diff = lastModified.CompareTo(MenuWeekModel.CalcFirstWeekDay()); @@ -422,11 +403,10 @@ namespace CampusAppWP8ScheduledTaskAgent return true; } - /// - /// Check if the model of the RSS feed is up-to-date - /// - /// Date of the last modification - /// true, if it is up-to-date, otherwise false + /// Check if the model of the RSS feed is up-to-date. + /// Stubbfel, 15.10.2013. + /// Date of the last modification. + /// true, if it is up-to-date, otherwise false. private bool CheckRssIsUpToDate(DateTime lastModified) { int diff = lastModified.CompareTo(DateTime.Now.AddDays(1)); diff --git a/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/Settings.StyleCop b/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/Settings.StyleCop index b0c0a6a8..97da1791 100644 --- a/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/Settings.StyleCop +++ b/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/Settings.StyleCop @@ -2,13 +2,14 @@ perodic + stubbfel BTU/IIT - BTU/IIT + The MIT License (MIT). Copyright (c) 2013 BTU/IIT. diff --git a/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/Utility/BackgroundTasks.cs b/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/Utility/BackgroundTasks.cs index 26963480..7913e2e8 100644 --- a/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/Utility/BackgroundTasks.cs +++ b/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/Utility/BackgroundTasks.cs @@ -1,26 +1,25 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 18.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the background tasks class +//----------------------------------------------------------------------- namespace CampusAppWP8ScheduledTaskAgent.Utility { using System; using CampusAppWPortalLib8.Utility; using Microsoft.Phone.Scheduler; - /// - /// Class provide some static methods for background tasks - /// + /// Class provide some static methods for background tasks. + /// Stubbfel, 15.10.2013. + /// public class BackgroundTasks : AbstractBackgroundTasks { - /// - /// Method stop a certain PerodicTask - /// - /// name of the task + /// Method stop a certain PerodicTask. + /// Stubbfel, 15.10.2013. + /// name of the task. public static void StopPerodicTask(string taskName) { PeriodicTask periodicTask = ScheduledActionService.Find(taskName) as PeriodicTask; diff --git a/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/Utility/HttpRequest.cs b/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/Utility/HttpRequest.cs index 2c558936..53632420 100644 --- a/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/Utility/HttpRequest.cs +++ b/CampusAppWP8/CampusAppWP8ScheduledTaskAgent/Utility/HttpRequest.cs @@ -1,34 +1,33 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 10.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the HTTP request class +//----------------------------------------------------------------------- namespace CampusAppWP8ScheduledTaskAgent.Utility { using System; using System.Net; using CampusAppWPortalLib8.Utility; - /// - /// Class realize the access of restful HttpRequest - /// + /// Class realize the access of restful HttpRequest. + /// Stubbfel, 15.10.2013. + /// public class HttpRequest : AbstractHttpRequest { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public HttpRequest() { } - /// - /// Initializes a new instance of the class. - /// - /// the url of the HttpRequest base address + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. + /// the url of the HttpRequest base address. public HttpRequest(Uri apiBaseAddress) { this.BaseAddress = apiBaseAddress.AbsoluteUri; @@ -38,11 +37,10 @@ namespace CampusAppWP8ScheduledTaskAgent.Utility #region Methods - /// - /// Method realize the http-get-method resource - /// - /// Url of the resource - /// callback method + /// Method realize the http-get-method resource. + /// Stubbfel, 15.10.2013. + /// Url of the resource. + /// callback method. public void HttpGet(Uri url, Action action) { WebClient client = new WebClient(); From be2fb8ff06d069648b7c106cb4850df460f2a0c8 Mon Sep 17 00:00:00 2001 From: stubbfel Date: Tue, 15 Oct 2013 13:10:29 +0200 Subject: [PATCH 8/9] refactor all plcmodels --- CampusAppWP8/CampusAppWP8/Settings.StyleCop | 1 + .../CampusAppWPortalLib8.csproj | 8 +- .../Model/AbstractMainModel.cs | 301 ++++++++---------- .../Model/Departments/ChairModel.cs | 56 ++-- .../Model/Departments/DepartmentModel.cs | 42 ++- .../Model/Departments/FacultyModel.cs | 104 +++--- .../Model/Exams/ExamListModel.cs | 26 +- .../Model/Exams/ExamModel.cs | 45 +-- .../CampusAppWPortalLib8/Model/ForcesTypes.cs | 17 +- .../CampusAppWPortalLib8/Model/IXmlModel.cs | 22 +- .../Model/Lecture/LectureActivity.cs | 120 +++---- .../Model/Lecture/LectureCourse.cs | 27 +- .../Model/Lecture/LectureDate.cs | 54 ++-- .../Model/Lecture/LectureLecturer.cs | 44 ++- .../Model/Lecture/LectureList.cs | 41 ++- .../Model/Lecture/LectureModule.cs | 47 ++- .../Model/Link/LinkListModel.cs | 36 +-- .../Model/Link/LinkModel.cs | 70 ++-- .../Model/Mensa/MealModel.cs | 99 ++---- .../Model/Mensa/MenuModel.cs | 42 +-- .../Model/Mensa/MenuWeekModel.cs | 50 ++- .../CampusAppWPortalLib8/Model/ModelTypes.cs | 19 +- .../OpeninghoursInstitutionModel.cs | 192 +++++------ .../Model/Openinghours/OpeninghoursModel.cs | 47 ++- .../Model/Person/IPersonFunctionModel.cs | 24 +- .../Model/Person/IPersonModel.cs | 30 +- .../Model/Person/PersonFunctionModel.cs | 66 ++-- .../Model/Person/PersonListModel.cs | 43 ++- .../Model/Person/PersonModel.cs | 55 ++-- .../Model/RSS/RSSChannelModel.cs | 41 ++- .../Model/RSS/RSSModel.cs | 137 ++++---- .../Model/RSS/RSSViewModel.cs | 37 +-- .../Model/Settings/CampusTypes.cs | 20 +- .../Model/Settings/DegreeTypes.cs | 19 +- .../Model/Settings/RolesTypes.cs | 19 +- .../StudentCouncil/StudentCouncilListModel.cs | 44 +-- .../StudentCouncil/StudentCouncilModel.cs | 46 ++- .../Utility/CampusListPickerItemListModel.cs | 28 +- .../Model/Utility/CleanUrlParamModel.cs | 41 ++- .../Utility/CourseListPickerItemListModel.cs | 22 +- .../Model/Utility/CourseModel.cs | 42 +-- .../Utility/DegreeListPickerItemListModel.cs | 28 +- .../Model/Utility/ListPickerItemListModel.cs | 79 ++--- .../Model/Utility/ListPickerItemModel.cs | 34 +- .../Utility/RoleListPickerItemListModel.cs | 28 +- .../SemesterListPickerItemListModel.cs | 27 +- .../Model/Utility/URLParamModel.cs | 63 ++-- .../CampusAppWPortalLib8/Settings.StyleCop | 3 +- 48 files changed, 1106 insertions(+), 1380 deletions(-) diff --git a/CampusAppWP8/CampusAppWP8/Settings.StyleCop b/CampusAppWP8/CampusAppWP8/Settings.StyleCop index c76ad7db..8c4162bf 100644 --- a/CampusAppWP8/CampusAppWP8/Settings.StyleCop +++ b/CampusAppWP8/CampusAppWP8/Settings.StyleCop @@ -5,6 +5,7 @@ api apis enum + fiedlchr initialise initialises ndef diff --git a/CampusAppWP8/CampusAppWPortalLib8/CampusAppWPortalLib8.csproj b/CampusAppWP8/CampusAppWPortalLib8/CampusAppWPortalLib8.csproj index f7e93044..dea60ce8 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/CampusAppWPortalLib8.csproj +++ b/CampusAppWP8/CampusAppWPortalLib8/CampusAppWPortalLib8.csproj @@ -61,7 +61,9 @@ - + + True + @@ -75,7 +77,9 @@ - + + True + diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/AbstractMainModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/AbstractMainModel.cs index d43496b5..d35965c1 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/AbstractMainModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/AbstractMainModel.cs @@ -1,10 +1,11 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 05.07.2013 -//----------------------------------------------------------------------------- +// 15.10.2013 +// Implements the abstract main model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model { using System; @@ -12,47 +13,32 @@ namespace CampusAppWPortalLib8.Model using CampusAppWPortalLib8.Model.Utility; using CampusAppWPortalLib8.Utility; - /// - /// abstract Base model io handling class. - /// - /// model type + /// abstract Base model io handling class. + /// fiedlchr, 15.10.2013. + /// model type. public abstract class AbstractMainModel { #region Member - /// - /// File object. - /// + /// File object. private AbstractFile file = null; - /// - /// Model io type. - /// + /// Model io type. private ModelType modelType; - /// - /// Model object. - /// + /// Model object. private T model = default(T); - /// - /// Web object. - /// + /// Web object. private AbstractHttpRequest api = null; - /// - /// Filename of saved data. - /// + /// Filename of saved data. private string fileName = string.Empty; - /// - /// Url of the feed data. - /// + /// Url of the feed data. private Uri httpApiUri = null; - /// - /// Parameterized uri of the feed. - /// + /// Parameterized uri of the feed. private Uri paramizedUri = null; #endregion @@ -60,21 +46,26 @@ namespace CampusAppWPortalLib8.Model #region Constructor /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// Model IO type - /// name of the file - /// url of the feed + /// fiedlchr, 15.10.2013. + /// Model IO type. + /// name of the file. + /// url of the feed. public AbstractMainModel(ModelType modelType, string fileName, string url) { this.Init(modelType, fileName, url); } /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// Model IO type - /// name of the file or the url of the feed + /// fiedlchr, 15.10.2013. + /// + /// Thrown when the requested operation is not supported. + /// + /// Model IO type. + /// name of the file or the url of the feed. public AbstractMainModel(ModelType modelType, string sourceName) { if (modelType == ModelType.File) @@ -95,67 +86,48 @@ namespace CampusAppWPortalLib8.Model #region Events - /// - /// Delegate of the OnIO callback function. - /// + /// Delegate of the OnIO callback function. + /// fiedlchr, 15.10.2013. public delegate void OnIO(); - /// - /// Delegate of the OnFailed(File/Web) callback function. - /// + /// Delegate of the OnFailed(File/Web) callback function. + /// fiedlchr, 15.10.2013. public delegate void OnFailed(); - /// - /// Delegate of the IsModelUpToDate callback function. - /// - /// data model - /// true, model is up to date + /// Delegate of the IsModelUpToDate callback function. + /// fiedlchr, 15.10.2013. + /// data model. + /// true, model is up to date. public delegate bool IsModelUpToDate(T model); - /// - /// Callback pointer, called before loading. - /// + /// Callback pointer, called before loading. public event OnIO OnLoading = null; - /// - /// Callback pointer, called after loading. - /// + /// Callback pointer, called after loading. public event OnIO OnLoaded = null; - /// - /// Callback pointer, called before saving. - /// + /// Callback pointer, called before saving. public event OnIO OnSaving = null; - /// - /// Callback pointer, called after saving. - /// + /// Callback pointer, called after saving. public event OnIO OnSaved = null; - /// - /// Callback pointer, called after failed file loading. - /// + /// Callback pointer, called after failed file loading. public event OnFailed OnFailedFile = null; - /// - /// Callback pointer, called after failed web loading. - /// + /// Callback pointer, called after failed web loading. public event OnFailed OnFailedWeb = null; /// - /// Callback pointer, called after failed file or web loading, if there - /// is no specialized onFailed callback set. + /// Callback pointer, called after failed file or web loading, if there is no specialized + /// onFailed callback set. /// public event OnFailed OnFailedLoad = null; - /// - /// Callback pointer, called after failed saving data to file. - /// + /// Callback pointer, called after failed saving data to file. public event OnFailed OnFailedSave = null; - /// - /// Callback pointer, for checking if model is up to date at loading. - /// + /// Callback pointer, for checking if model is up to date at loading. public event IsModelUpToDate IsModelUpToDateOnLoad = null; /// @@ -163,15 +135,15 @@ namespace CampusAppWPortalLib8.Model /// (currently unused) /// #pragma warning disable 0067 + /// Occurs when Is Model Up To Date On Save. public event IsModelUpToDate IsModelUpToDateOnSave = null; #endregion #region Property - /// - /// Gets or sets the Model. - /// + /// Gets or sets the Model. + /// The model. public T Model { get @@ -185,45 +157,40 @@ namespace CampusAppWPortalLib8.Model } } - /// - /// Gets or sets the File. - /// + /// Gets the File. + /// The file. public AbstractFile File { get { return this.file; } protected set { this.file = value; } } - /// - /// Gets or sets the ModelType. - /// + /// Gets the ModelType. + /// The type of the model. public ModelType ModelType { get { return this.modelType; } protected set { this.modelType = value; } } - /// - /// Gets or sets the Api. - /// + /// Gets the Api. + /// The API. public AbstractHttpRequest Api { get { return this.api; } protected set { this.api = value; } } - /// - /// Gets or sets the ApiUrl. - /// + /// Gets the ApiUrl. + /// The HTTP API URI. public Uri HttpApiUri { get { return this.httpApiUri; } protected set { this.httpApiUri = value; } } - /// - /// Gets or sets the FileName. - /// + /// Gets the FileName. + /// The name of the file. public string FileName { get { return this.fileName; } @@ -236,43 +203,42 @@ namespace CampusAppWPortalLib8.Model #region public - /// - /// Method Fire all Events for fail load - /// + /// Method Fire all Events for fail load. + /// fiedlchr, 15.10.2013. public void FireLoadFailEvents() { this.RunOnFailedCallback(this.OnFailedWeb, this.OnFailedLoad); } - /// - /// Method Fire all Events for load is complete - /// + /// Method Fire all Events for load is complete. + /// fiedlchr, 15.10.2013. public void FireLoadCompletedEvents() { this.RunOnIOCallback(this.OnLoaded); } - - /// - /// Forces a update from web. - /// + + /// Forces a update from web. + /// fiedlchr, 15.10.2013. public void ForceWebUpdate() { this.LoadData(ForceType.FORCE_WEB); } - /// - /// Forces a update from file. - /// + /// Forces a update from file. + /// fiedlchr, 15.10.2013. public void ForceReadFile() { this.LoadData(ForceType.FORCE_FILE); } /// - /// Load the data if necessary, from web or from file, regarding if - /// the file data is up to date. + /// Load the data if necessary, from web or from file, regarding if the file data is up to + /// date. /// - /// if set/not invalid/not default, force to load from web or file + /// fiedlchr, 15.10.2013. + /// + /// (Optional) if set/not invalid/not default, force to load from web or file. + /// public void LoadData(ForceType force = ForceType.INVALID) { this.RunOnIOCallback(this.OnLoading); @@ -364,10 +330,9 @@ namespace CampusAppWPortalLib8.Model } } - /// - /// Save the model data if necessary. - /// - /// force saving. DEFAULT: false + /// Save the model data if necessary. + /// fiedlchr, 15.10.2013. + /// (Optional) force saving. DEFAULT: false. public void SaveData(bool force = false) { if ((this.file != null) @@ -396,19 +361,17 @@ namespace CampusAppWPortalLib8.Model } } - /// - /// Return the model io type. - /// - /// model io type + /// Return the model io type. + /// fiedlchr, 15.10.2013. + /// model io type. public ModelType GetModelType() { return this.modelType; } - /// - /// Create the parameterized uri. - /// - /// uri parameter list + /// Create the parameterized uri. + /// fiedlchr, 15.10.2013. + /// uri parameter list. public void SetUriParams(List parameters) { if (this.api != null) @@ -417,9 +380,8 @@ namespace CampusAppWPortalLib8.Model } } - /// - /// Clear the parameterized uri. - /// + /// Clear the parameterized uri. + /// fiedlchr, 15.10.2013. public void ClearUriParams() { this.paramizedUri = null; @@ -429,58 +391,49 @@ namespace CampusAppWPortalLib8.Model #region protected - /// - /// Abstract declaration of the model deserialize function. - /// - /// model data as byte array - /// true, is succeeded + /// Abstract declaration of the model deserialize function. + /// fiedlchr, 15.10.2013. + /// model data as byte array. + /// true, is succeeded. protected abstract bool DeserializeModel(byte[] modelData); - /// - /// Abstract declaration of the model serialize function. - /// - /// model data as byte array + /// Abstract declaration of the model serialize function. + /// fiedlchr, 15.10.2013. + /// model data as byte array. protected abstract byte[] SerializeModel(); - /// - /// Method send a HttpGet - /// - /// the url + /// Method send a HttpGet. + /// fiedlchr, 15.10.2013. + /// the url. protected abstract void SendHttpGet(Uri url); - /// - /// Method check if model or file is Not up-to-date - /// - /// the check function - /// true if it is not up-to-date, otherwise false + /// Method check if model or file is Not up-to-date. + /// fiedlchr, 15.10.2013. + /// the check function. + /// true if it is not up-to-date, otherwise false. protected abstract bool CheckIsNotUpToDate(object checkFunc); - /// - /// Method check if file is Not up-to-date for load process - /// - /// true if it is not up-to-date, otherwise false + /// Method check if file is Not up-to-date for load process. + /// fiedlchr, 15.10.2013. + /// true if it is not up-to-date, otherwise false. protected abstract bool CheckLoadFileIsNotUpToDate(); - /// - /// Method check if file is Not up-to-date for load process - /// - /// true if it is not up-to-date, otherwise false + /// Method check if file is Not up-to-date for load process. + /// fiedlchr, 15.10.2013. + /// true if it is not up-to-date, otherwise false. protected abstract bool CheckSaveFileIsNotUpToDate(); - /// - /// Initializes the file object. - /// + /// Initializes the file object. + /// fiedlchr, 15.10.2013. protected abstract void InitFile(); - /// - /// Initializes the web object. - /// + /// Initializes the web object. + /// fiedlchr, 15.10.2013. protected abstract void InitHttpApi(); - /// - /// Check if the model io type is file. - /// - /// true, if the model io type has file. + /// Check if the model io type is file. + /// fiedlchr, 15.10.2013. + /// true, if the model io type has file. protected bool IsFile() { bool retValue = false; @@ -493,10 +446,9 @@ namespace CampusAppWPortalLib8.Model return retValue; } - /// - /// Check if the model io type is feed. - /// - /// true if the model io type has feed. + /// Check if the model io type is feed. + /// fiedlchr, 15.10.2013. + /// true if the model io type has feed. protected bool IsHttpApi() { bool retValue = false; @@ -513,12 +465,11 @@ namespace CampusAppWPortalLib8.Model #region private - /// - /// Initialize the class. Is called by the constructors. - /// - /// model IO type - /// name of the data file - /// url of the feed data + /// Initialize the class. Is called by the constructors. + /// fiedlchr, 15.10.2013. + /// model IO type. + /// name of the data file. + /// url of the feed data. private void Init(ModelType modelType, string fileName, string url) { this.modelType = modelType; @@ -543,10 +494,9 @@ namespace CampusAppWPortalLib8.Model } } - /// - /// Executes the on i/o callback operation. - /// - /// The callback function. + /// Executes the on i/o callback operation. + /// fiedlchr, 15.10.2013. + /// The callback function. private void RunOnIOCallback(OnIO callbackFunc) { if (callbackFunc != null) @@ -555,9 +505,10 @@ namespace CampusAppWPortalLib8.Model } } - /// Executes the on failed callback operation. - /// The special function. - /// The default function. + /// Executes the on failed callback operation. + /// fiedlchr, 15.10.2013. + /// The special function. + /// The default function. private void RunOnFailedCallback(OnFailed specialFunc, OnFailed defaultFunc) { if (specialFunc != null) diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Departments/ChairModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Departments/ChairModel.cs index 704796e6..ac3cf6c9 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Departments/ChairModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Departments/ChairModel.cs @@ -1,44 +1,37 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 24.06.2013 -//---------------------------------------------------------------------- +// 15.10.2013 +// Implements the chair model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Departments { using System.Globalization; using System.Xml.Serialization; - /// - /// Class to hold information about a professorship chair. - /// + /// Class to hold information about a professorship chair. + /// fiedlchr, 15.10.2013. public class ChairModel { #region Member - /// - /// German name of the chair. - /// + /// German name of the chair. private string nameDE = string.Empty; - /// - /// Link to the chair page. - /// + /// Link to the chair page. private string url = string.Empty; - /// - /// English name of the chair. - /// + /// English name of the chair. private string nameEN = string.Empty; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// fiedlchr, 15.10.2013. public ChairModel() { } @@ -47,19 +40,17 @@ namespace CampusAppWPortalLib8.Model.Departments #region Property - /// - /// Initializes a new instance of the class. - /// - /// name of the chair + /// Initializes a new instance of the class. + /// fiedlchr, 15.10.2013. + /// name of the chair. public ChairModel(string name) { this.nameDE = name; this.nameEN = name; } - /// - /// Gets or sets the german name of the chair. - /// + /// Gets or sets the german name of the chair. + /// The name de. [XmlAttribute("name_de")] public string NameDE { @@ -77,9 +68,8 @@ namespace CampusAppWPortalLib8.Model.Departments } } - /// - /// Gets or sets the english name of the chair. - /// + /// Gets or sets the english name of the chair. + /// The name en. [XmlAttribute("name_en")] public string NameEN { @@ -97,9 +87,8 @@ namespace CampusAppWPortalLib8.Model.Departments } } - /// - /// Gets or sets the url of the chair homepage. - /// + /// Gets or sets the url of the chair homepage. + /// The URL. [XmlAttribute("url")] public string Url { @@ -117,9 +106,8 @@ namespace CampusAppWPortalLib8.Model.Departments } } - /// - /// Gets the localized name of the chair. - /// + /// Gets the localized name of the chair. + /// The name. public string Name { get diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Departments/DepartmentModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Departments/DepartmentModel.cs index 37ca6719..0fc94839 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Departments/DepartmentModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Departments/DepartmentModel.cs @@ -1,41 +1,36 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 24.06.2013 -//---------------------------------------------------------------------- +// 15.10.2013 +// Implements the department model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Departments { using System; using System.Collections.ObjectModel; using System.Xml.Serialization; - /// - /// View model for department page. - /// + /// View model for department page. + /// fiedlchr, 15.10.2013. [XmlRoot("root")] public class DepartmentModel { #region Member - /// - /// Object to store the time when the instance was created. - /// + /// Object to store the time when the instance was created. private DateTime createTime; - /// - /// List of faculties. - /// + /// List of faculties. private ObservableCollection faculties; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// fiedlchr, 15.10.2013. public DepartmentModel() { this.Faculties = new ObservableCollection(); @@ -46,9 +41,8 @@ namespace CampusAppWPortalLib8.Model.Departments #region Property - /// - /// Gets or sets the faculty list. - /// + /// Gets or sets the faculty list. + /// The faculties. [XmlArray("professorships")] [XmlArrayItem("faculty")] public ObservableCollection Faculties @@ -67,9 +61,8 @@ namespace CampusAppWPortalLib8.Model.Departments } } - /// - /// Gets the creation time. - /// + /// Gets the creation time. + /// The create time. public DateTime CreateTime { get @@ -83,10 +76,11 @@ namespace CampusAppWPortalLib8.Model.Departments #region Method /// - /// Check if the content of the faculty lists hast changed since the - /// last call of this function. + /// Check if the content of the faculty lists hast changed since the last call of this + /// function. /// - /// true, if changes happen since last request, otherwise false + /// fiedlchr, 15.10.2013. + /// true, if changes happen since last request, otherwise false. public bool HasChanged() { bool retValue = false; diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Departments/FacultyModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Departments/FacultyModel.cs index 802fe20e..39df78b3 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Departments/FacultyModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Departments/FacultyModel.cs @@ -1,46 +1,38 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 24.06.2013 -//---------------------------------------------------------------------- +// 15.10.2013 +// Implements the faculty model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Departments { using System.Collections.ObjectModel; using System.Xml.Serialization; using CampusAppWPortalLib8.Resources; - - /// - /// Model for holding the faculty information. - /// + + /// Model for holding the faculty information. + /// fiedlchr, 15.10.2013. public class FacultyModel { #region Member - /// - /// Object to hold the information of the chair containing to this - /// faculty. - /// + /// Object to hold the information of the chair containing to this faculty. private ObservableCollection chairs; - /// - /// Name of the faculty. - /// + /// Name of the faculty. private string name = string.Empty; - /// - /// For checking of change. - /// + /// For checking of change. private bool hasChanged = false; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// fiedlchr, 15.10.2013. public FacultyModel() { this.chairs = new ObservableCollection(); @@ -50,19 +42,17 @@ namespace CampusAppWPortalLib8.Model.Departments #region Property - /// - /// Initializes a new instance of the class. - /// - /// name of the faculty + /// Initializes a new instance of the class. + /// fiedlchr, 15.10.2013. + /// name of the faculty. public FacultyModel(string name) { this.name = name; this.chairs = new ObservableCollection(); } - /// - /// Gets or sets the list of the chairs containing to this faculty. - /// + /// Gets or sets the list of the chairs containing to this faculty. + /// The chairs. [XmlElement("chair")] public ObservableCollection Chairs { @@ -80,9 +70,8 @@ namespace CampusAppWPortalLib8.Model.Departments } } - /// - /// Gets the name of the faculty. - /// + /// Gets the name of the faculty. + /// The name. public string Name { get @@ -91,9 +80,8 @@ namespace CampusAppWPortalLib8.Model.Departments } } - /// - /// Gets or sets the id of the faculty. - /// + /// Gets or sets the id of the faculty. + /// The identifier. [XmlAttribute("id")] public string Id { @@ -108,11 +96,10 @@ namespace CampusAppWPortalLib8.Model.Departments } } - /// - /// Remove a chair model from the lost. - /// - /// name of the chair - /// true, if succeeded + /// Remove a chair model from the lost. + /// fiedlchr, 15.10.2013. + /// name of the chair. + /// true, if succeeded. public bool RemoveChair(string chairName) { bool retValue = false; @@ -140,11 +127,10 @@ namespace CampusAppWPortalLib8.Model.Departments #region Method - /// - /// Add a chair to the list, if it does not already exist. - /// - /// chair model to add - /// true, is succeeded + /// Add a chair to the list, if it does not already exist. + /// fiedlchr, 15.10.2013. + /// chair model to add. + /// true, is succeeded. public bool AddChair(ChairModel chairModel) { bool retValue = false; @@ -174,14 +160,12 @@ namespace CampusAppWPortalLib8.Model.Departments return retValue; } - /// - /// Create a chair model and add it to the list, if it does not already - /// exist. - /// - /// german name of the chair - /// english name of the chair - /// url of the chair home page - /// true, if succeeded + /// Create a chair model and add it to the list, if it does not already exist. + /// fiedlchr, 15.10.2013. + /// german name of the chair. + /// english name of the chair. + /// url of the chair home page. + /// true, if succeeded. public bool AddChair(string nameDE, string nameEN, string url) { bool retValue = false; @@ -212,11 +196,10 @@ namespace CampusAppWPortalLib8.Model.Departments return retValue; } - /// - /// Return the chair model of the chair with the specified name. - /// - /// name of the chair - /// chair model, if succeeded, otherwise null + /// Return the chair model of the chair with the specified name. + /// fiedlchr, 15.10.2013. + /// name of the chair. + /// chair model, if succeeded, otherwise null. public ChairModel GetChairModel(string name) { ChairModel retValue = null; @@ -232,11 +215,10 @@ namespace CampusAppWPortalLib8.Model.Departments return retValue; } - /// - /// Return true if there were changes in the chair list, otherwise false. - /// - /// when true, the hasChanged flag will be reset - /// true, when changed, otherwise false + /// Return true if there were changes in the chair list, otherwise false. + /// fiedlchr, 15.10.2013. + /// (Optional) when true, the hasChanged flag will be reset. + /// true, when changed, otherwise false. public bool HasChanged(bool reset = true) { bool retValue = this.hasChanged; diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Exams/ExamListModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Exams/ExamListModel.cs index 551d5b7c..63dde71a 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Exams/ExamListModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Exams/ExamListModel.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- -// -// Company copyright tag. +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 02.09.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the exam list model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Exams { using System.Collections.Generic; @@ -13,15 +14,16 @@ namespace CampusAppWPortalLib8.Model.Exams using CampusAppWPortalLib8.Model.Utility; - /// Exam list model. - /// Stubbfel, 02.09.2013. + /// Exam list model. + /// Stubbfel, 02.09.2013. + /// Generic type parameter. [XmlRoot("links")] public class ExamListModel where T : ExamModel { #region Property - /// Gets or sets the exams. - /// The exams. + /// Gets or sets the exams. + /// The exams. [XmlElement("link")] public ObservableCollection Exams { get; set; } @@ -29,9 +31,9 @@ namespace CampusAppWPortalLib8.Model.Exams #region Property - /// Creates course list. - /// Stubbfel, 10.09.2013. - /// The new course list. + /// Creates course list. + /// Stubbfel, 10.09.2013. + /// The new course list. public List CreateCourseList() { List result = new List(); diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Exams/ExamModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Exams/ExamModel.cs index 31246ac3..4279ac2e 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Exams/ExamModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Exams/ExamModel.cs @@ -1,58 +1,59 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 02.09.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the exam model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Exams { using System.Xml.Serialization; using CampusAppWPortalLib8.Utility; - /// Exam model. - /// Stubbfel, 02.09.2013. + /// Exam model. + /// Stubbfel, 02.09.2013. public class ExamModel { #region Property - /// Gets or sets the course number. - /// The course number. + /// Gets or sets the course number. + /// The course number. [XmlAttribute("stg")] public string CourseNumber { get; set; } - /// Gets or sets the course text. - /// The course text. + /// Gets or sets the course text. + /// The course text. [XmlAttribute("stgtext")] public string CourseText { get; set; } - /// Gets or sets the degree number. - /// The degree number. + /// Gets or sets the degree number. + /// The degree number. [XmlAttribute("abschl")] public string DegreeNumber { get; set; } - /// Gets or sets the version. - /// The version. + /// Gets or sets the version. + /// The version. [XmlAttribute("pversion")] public string Version { get; set; } - /// Gets or sets the type. - /// The type. + /// Gets or sets the type. + /// The type. [XmlAttribute("typ")] public string Type { get; set; } - /// Gets or sets the title. - /// The title. + /// Gets or sets the title. + /// The title. [XmlAttribute("dtxt")] public string Title { get; set; } - /// Gets or sets the date. - /// The date. + /// Gets or sets the date. + /// The date. [XmlAttribute("datum")] public string Date { get; set; } - /// Gets or sets the link. - /// The link. + /// Gets or sets the link. + /// The link. [XmlAttribute("link")] public string Link { get; set; } diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/ForcesTypes.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/ForcesTypes.cs index 5bfd2377..eb90e532 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/ForcesTypes.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/ForcesTypes.cs @@ -1,12 +1,15 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. +// +// fiedlchr +// 15.10.2013 +// Implements the forces types class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model { - /// Values that represent ForceType for load function. + /// Values that represent ForceType for load function. + /// fiedlchr, 15.10.2013. public enum ForceType { /// An enumeration constant representing the invalid/default/unset option. diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/IXmlModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/IXmlModel.cs index 2543b356..2954ed92 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/IXmlModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/IXmlModel.cs @@ -1,25 +1,21 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 05.07.2013 -//----------------------------------------------------------------------------- +// 15.10.2013 +// Declares the IXmlModel interface +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model { - using CampusAppWPortalLib8.Utility; - - /// - /// Xml model io handler class. - /// - /// model type + /// Xml model io handler class. + /// fiedlchr, 15.10.2013. public interface IXmlModel { #region Property - /// - /// Gets or sets for the name of the root-tag - /// + /// Gets or sets for the name of the root-tag. + /// The name of the valid root. string ValidRootName { get; set; } #endregion diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureActivity.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureActivity.cs index 8f1a478e..f822f57a 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureActivity.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureActivity.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 13.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the lecture activity class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Lecture { using System.Collections.ObjectModel; @@ -12,55 +13,45 @@ namespace CampusAppWPortalLib8.Model.Lecture using CampusAppWPortalLib8.Resources; using CampusAppWPortalLib8.Utility; - /// - /// Model for a Activity - /// + /// Model for a Activity. + /// Stubbfel, 15.10.2013. public class LectureActivity { #region Members - /// The activity icon name lecture. + /// The activity icon name lecture. public const string ActivityTypeLecture = "Vorlesung"; - /// The activity icon name seminar. + /// The activity icon name seminar. public const string ActivityTypeSeminar = "Seminar"; - /// The activity icon name practice. + /// The activity icon name practice. public const string ActivityTypePract = "Übung"; - /// The activity icon name lab. + /// The activity icon name lab. public const string ActivityTypeLab = "Labor"; - /// The activity icon name exam. + /// The activity icon name exam. public const string ActivityTypeExam = "Prüfung"; - /// - /// List of lecturer - /// + /// List of lecturer. private ObservableCollection lecturer; - /// - /// a formatted string for the names of the lecturers - /// + /// a formatted string for the names of the lecturers. private string lecturerString; - /// - /// a formatted string for the names of the courses - /// + /// a formatted string for the names of the courses. private string courseString; - /// - /// a formatted string for the topic of the lecture - /// + /// a formatted string for the topic of the lecture. private string topic; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public LectureActivity() { } @@ -69,45 +60,38 @@ namespace CampusAppWPortalLib8.Model.Lecture #region Proberty - /// - /// Gets or sets the type of the activity - /// + /// Gets or sets the type of the activity. + /// The type. [XmlElement("art")] public string Type { get; set; } - /// - /// Gets or sets the id of the activity - /// + /// Gets or sets the id of the activity. + /// The identifier. [XmlAttribute("id")] public int Id { get; set; } - /// - /// Gets or sets semester of the activity - /// + /// Gets or sets semester of the activity. + /// The semester. [XmlElement("semester")] public int Semester { get; set; } - /// - /// Gets or sets the contact hour - /// + /// Gets or sets the contact hour. + /// The sws. [XmlElement("sws")] public string SWS { get; set; } - /// - /// Gets or sets LectureModule - /// + /// Gets or sets LectureModule. + /// The modul. [XmlElement("modul")] public LectureModule Modul { get; set; } - /// - /// Gets or sets LectureTitle - /// + /// Gets or sets LectureTitle. + /// The title. [XmlElement("titel")] public string Title { get; set; } - /// - /// Gets or sets the lecturers - /// + /// Gets or sets the lecturers. + /// The lecturer. [XmlElement("lehrperson")] public ObservableCollection Lecturer { @@ -125,9 +109,8 @@ namespace CampusAppWPortalLib8.Model.Lecture } } - /// - /// Gets or sets the formatted string of the lecturers - /// + /// Gets or sets the formatted string of the lecturers. + /// The lecturer string. public string LecturerString { get @@ -144,9 +127,8 @@ namespace CampusAppWPortalLib8.Model.Lecture } } - /// - /// Gets or sets formatted string of the courses - /// + /// Gets or sets formatted string of the courses. + /// The course string. public string CourseString { get @@ -163,27 +145,23 @@ namespace CampusAppWPortalLib8.Model.Lecture } } - /// - /// Gets or sets the courses - /// + /// Gets or sets the courses. + /// The course. [XmlElement("studiengang")] public ObservableCollection Course { get; set; } - /// - /// Gets or sets the dates of the activity - /// + /// Gets or sets the dates of the activity. + /// The dates. [XmlElement("termin")] public ObservableCollection Dates { get; set; } - /// - /// Gets or sets the Department - /// + /// Gets or sets the Department. + /// The department. [XmlElement("zugeordnete_einrichtung")] public string Department { get; set; } - /// - /// Gets or sets the topic of the Lecture - /// + /// Gets or sets the topic of the Lecture. + /// The topic. [XmlElement("lehrinhalt")] public string Topic { @@ -206,9 +184,8 @@ namespace CampusAppWPortalLib8.Model.Lecture #region public - /// - /// Method create a formatted string of the LecturerList - /// + /// Method create a formatted string of the LecturerList. + /// Stubbfel, 15.10.2013. public void CreateLectureString() { string result = string.Empty; @@ -220,9 +197,8 @@ namespace CampusAppWPortalLib8.Model.Lecture this.LecturerString = DefaultStringManager.RemoveNewLine(result); } - /// - /// Method create a formatted string of the CourseList - /// + /// Method create a formatted string of the CourseList. + /// Stubbfel, 15.10.2013. public void CreateCourseString() { string result = string.Empty; diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureCourse.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureCourse.cs index 1faedc53..6a030cbf 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureCourse.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureCourse.cs @@ -1,23 +1,23 @@ -// -// Company copyright tag. +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 10.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the lecture course class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Lecture { using System.Xml.Serialization; - /// - /// Model for a course - /// + /// Model for a course. + /// Stubbfel, 15.10.2013. public class LectureCourse { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public LectureCourse() { } @@ -26,9 +26,8 @@ namespace CampusAppWPortalLib8.Model.Lecture #region Property - /// - /// Gets or sets the title of the course - /// + /// Gets or sets the title of the course. + /// The title. [XmlElement("bezeichnung")] public string Title { get; set; } diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureDate.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureDate.cs index e14aac6f..d44efabd 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureDate.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureDate.cs @@ -1,24 +1,23 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 10.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the lecture date class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Lecture { using System.Xml.Serialization; - /// - /// Model for the date of an activity - /// + /// Model for the date of an activity. + /// Stubbfel, 15.10.2013. public class LectureDate { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public LectureDate() { } @@ -27,45 +26,38 @@ namespace CampusAppWPortalLib8.Model.Lecture #region Property - /// - /// Gets or sets WeekDay - /// + /// Gets or sets WeekDay. + /// The week day. [XmlElement("wochentag")] public string WeekDay { get; set; } - /// - /// Gets or sets From - /// + /// Gets or sets From. + /// from. [XmlElement("von")] public string From { get; set; } - /// - /// Gets or sets To - /// + /// Gets or sets To. + /// to. [XmlElement("bis")] public string To { get; set; } - /// - /// Gets or sets Interval - /// + /// Gets or sets Interval. + /// The interval. [XmlElement("rhythmus")] public string Interval { get; set; } - /// - /// Gets or sets Room - /// + /// Gets or sets Room. + /// The room. [XmlElement("raum")] public string Room { get; set; } - /// - /// Gets or sets StartDate - /// + /// Gets or sets StartDate. + /// The start date. [XmlElement("anfangsdatum")] public string StartDate { get; set; } - /// - /// Gets or sets EndDate - /// + /// Gets or sets EndDate. + /// The end date. [XmlElement("enddatum")] public string EndDate { get; set; } diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureLecturer.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureLecturer.cs index 2c69ab67..f78e47c5 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureLecturer.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureLecturer.cs @@ -1,24 +1,23 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 10.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the lecture lecturer class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Lecture { using System.Xml.Serialization; - /// - /// Model for a lecturer - /// + /// Model for a lecturer. + /// Stubbfel, 15.10.2013. public class LectureLecturer { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public LectureLecturer() { } @@ -27,27 +26,23 @@ namespace CampusAppWPortalLib8.Model.Lecture #region Property - /// - /// Gets or sets the FirstName of a lecturer - /// + /// Gets or sets the FirstName of a lecturer. + /// The name of the first. [XmlElement("vorname")] public string FirstName { get; set; } - /// - /// Gets or sets the LastName of a lecturer - /// + /// Gets or sets the LastName of a lecturer. + /// The name of the last. [XmlElement("name")] public string LastName { get; set; } - /// - /// Gets or sets the title of a lecturer - /// + /// Gets or sets the title of a lecturer. + /// The title. [XmlElement("titel")] public string Title { get; set; } - /// - /// Gets or sets the Responsibility of a lecturer - /// + /// Gets or sets the Responsibility of a lecturer. + /// The responsibility. [XmlAttribute("zustaendigkeit")] public string Responsibility { get; set; } @@ -56,9 +51,10 @@ namespace CampusAppWPortalLib8.Model.Lecture #region Method /// - /// Method overrides the base ToString() and create an formatted string of the lecturer + /// Method overrides the base ToString() and create an formatted string of the lecturer. /// - /// returns a string like: [Title] FirstName LastName [(Responsibility)] + /// Stubbfel, 15.10.2013. + /// returns a string like: [Title] FirstName LastName [(Responsibility)]. public override string ToString() { string result = string.Empty; diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureList.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureList.cs index 5891f1e8..a10e7895 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureList.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureList.cs @@ -1,28 +1,27 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 10.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the lecture list class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Lecture { using System.Collections.ObjectModel; using System.Linq; using System.Xml.Serialization; - /// - /// Model for a List of LectureActivity - /// - /// T : LectureActivity + /// Model for a List of LectureActivity. + /// Stubbfel, 15.10.2013. + /// T : LectureActivity. [XmlRoot("lsf_auszug")] public class LectureList where T : LectureActivity { #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public LectureList() { } @@ -31,9 +30,8 @@ namespace CampusAppWPortalLib8.Model.Lecture #region Proberty - /// - /// Gets or sets List of the activities - /// + /// Gets or sets List of the activities. + /// The activities. [XmlArray("veranstaltungsliste")] [XmlArrayItem("veranstaltung")] public ObservableCollection Activities { get; set; } @@ -42,20 +40,19 @@ namespace CampusAppWPortalLib8.Model.Lecture #region Methods - /// - /// Method return a certain activity - /// - /// id of the activity - /// the activity (FirstOrDefault) + /// Method return a certain activity. + /// Stubbfel, 15.10.2013. + /// id of the activity. + /// the activity (FirstOrDefault) public T GetActivity(int id) { T activity = this.Activities.Where(p => p.Id == id).FirstOrDefault(); return activity; } - /// Filter by course string. - /// Stubbfel, 10.09.2013. - /// Specifies the filter. + /// Filter by course string. + /// Stubbfel, 10.09.2013. + /// Specifies the filter. public void FilterByCourseTitle(string filter) { ObservableCollection filteredCollection = new ObservableCollection(); diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureModule.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureModule.cs index 0b20bf00..e7015654 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureModule.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Lecture/LectureModule.cs @@ -1,40 +1,35 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 10.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the lecture module class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Lecture { using System; using System.Xml.Serialization; using CampusAppWPortalLib8.Resources; - /// - /// Model for the module of an lecture - /// + /// Model for the module of an lecture. + /// Stubbfel, 15.10.2013. public class LectureModule { #region Members - /// - /// Number of the module (like an id) - /// + /// Number of the module (like an id) private int number; - /// - /// Url to the website of the module - /// + /// Url to the website of the module. private Uri url; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public LectureModule() { } @@ -43,15 +38,13 @@ namespace CampusAppWPortalLib8.Model.Lecture #region Property - /// - /// Gets or sets the title of the module - /// + /// Gets or sets the title of the module. + /// The title. [XmlElement("titel")] public string Title { get; set; } - /// - /// Gets or sets the number of the module and create the URL - /// + /// Gets or sets the number of the module and create the URL. + /// The total number of ber. [XmlElement("nummer")] public int Number { @@ -70,9 +63,8 @@ namespace CampusAppWPortalLib8.Model.Lecture } } - /// - /// Gets the URL of the module - /// + /// Gets the URL of the module. + /// The URL. public Uri Url { get @@ -85,9 +77,8 @@ namespace CampusAppWPortalLib8.Model.Lecture #region Methods - /// - /// Method create the url of the module - /// + /// Method create the url of the module. + /// Stubbfel, 15.10.2013. private void CreateUrl() { this.url = new Uri(Constants.UrlLecture_ModulBaseAddr + this.number.ToString()); diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Link/LinkListModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Link/LinkListModel.cs index 6895ca07..8177cfea 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Link/LinkListModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Link/LinkListModel.cs @@ -1,37 +1,33 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 02.07.2013 -//----------------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the link list model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Link { using System; using System.Collections.ObjectModel; using System.Xml.Serialization; - /// - /// Model for a list of links. - /// + /// Model for a list of links. + /// Stubbfel, 15.10.2013. [XmlRoot("root")] public class LinkListModel { #region Member - /// - /// Time when the model was created. - /// + /// Time when the model was created. private readonly DateTime createTime; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public LinkListModel() { this.createTime = DateTime.Now; @@ -41,16 +37,14 @@ namespace CampusAppWPortalLib8.Model.Link #region Property - /// - /// Gets or sets feed information item list. - /// + /// Gets or sets feed information item list. + /// The links. [XmlArray("data")] [XmlArrayItem("link")] public ObservableCollection Links { get; set; } - /// - /// Gets the creation time of the model. - /// + /// Gets the creation time of the model. + /// The create time. public DateTime CreateTime { get diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Link/LinkModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Link/LinkModel.cs index 9e2a67cb..d085c3c6 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Link/LinkModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Link/LinkModel.cs @@ -1,50 +1,40 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 02.07.2013 -//----------------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the link model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Link { using System.Globalization; using System.Xml.Serialization; - - /// - /// Model for menu - /// + + /// Model for menu. + /// Stubbfel, 15.10.2013. public class LinkModel { #region Member - /// - /// German version of the link title. - /// + /// German version of the link title. private string titleDE; - /// - /// English version of the link title. - /// + /// English version of the link title. private string titleEN; - /// - /// German version of the link. - /// + /// German version of the link. private string linkDE; - /// - /// English version of the link. - /// + /// English version of the link. private string linkEN; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public LinkModel() { } @@ -53,9 +43,8 @@ namespace CampusAppWPortalLib8.Model.Link #region Property - /// - /// Gets or sets the german title of the link. - /// + /// Gets or sets the german title of the link. + /// The title de. [XmlAttribute("title_de")] public string Title_DE { @@ -73,9 +62,8 @@ namespace CampusAppWPortalLib8.Model.Link } } - /// - /// Gets or sets the english title of the link. - /// + /// Gets or sets the english title of the link. + /// The title en. [XmlAttribute("title_en")] public string Title_EN { @@ -90,9 +78,8 @@ namespace CampusAppWPortalLib8.Model.Link } } - /// - /// Gets or sets the german link. - /// + /// Gets or sets the german link. + /// The link de. [XmlAttribute("link_de")] public string Link_DE { @@ -110,9 +97,8 @@ namespace CampusAppWPortalLib8.Model.Link } } - /// - /// Gets or sets the english link. - /// + /// Gets or sets the english link. + /// The link en. [XmlAttribute("link_en")] public string Link_EN { @@ -131,9 +117,10 @@ namespace CampusAppWPortalLib8.Model.Link } /// - /// Gets the localized title. If the phone is set to german language, - /// the german title will be returned otherwise the english title. + /// Gets the localized title. If the phone is set to german language, the german title will + /// be returned otherwise the english title. /// + /// The title. public string Title { get @@ -150,9 +137,10 @@ namespace CampusAppWPortalLib8.Model.Link } /// - /// Gets the localized link. if the phone is set to german language, - /// the german comment will be returned otherwise the english link. + /// Gets the localized link. if the phone is set to german language, the german comment will + /// be returned otherwise the english link. /// + /// The link. public string Link { get diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MealModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MealModel.cs index 80a239f1..18a32b4d 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MealModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MealModel.cs @@ -1,96 +1,66 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 06.08.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the meal model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Mensa { using System.Xml.Serialization; using CampusAppWPortalLib8.Resources; using CampusAppWPortalLib8.Utility; - /// - /// Model for a meal - /// + /// Model for a meal. + /// Stubbfel, 15.10.2013. public class MealModel { #region Members - /// - /// Constant for the vegetarian icon - /// + /// Constant for the vegetarian icon. public const string MealIconNameVegetarian = "CARROTTE"; - /// - /// Constant for the free icon - /// + /// Constant for the free icon. public const string MealIconNameFree = "FREI"; - /// - /// Constant for the pig icon - /// + /// Constant for the pig icon. public const string MealIconNamePig = "SCHWEIN"; - /// - /// Constant for the cow icon - /// + /// Constant for the cow icon. public const string MealIconNameCow = "RIND"; - /// - /// Constant for the fowl icon - /// + /// Constant for the fowl icon. public const string MealIconNameFowl = "GEFL"; - /// - /// Constant for the cow-pig icon - /// + /// Constant for the cow-pig icon. public const string MealIconNameCowPig = "RINDSCHWEIN"; - /// - /// Constant for the fish icon - /// + /// Constant for the fish icon. public const string MealIconNameFish = "FISCH"; - /// - /// Constant for the wild icon - /// + /// Constant for the wild icon. public const string MealIconNameWild = "WILD"; - /// - /// Constant for the lamb icon - /// + /// Constant for the lamb icon. public const string MealIconNameLamb = "LAMM"; - /// - /// Variable for the id of the meal - /// - /// - /// ValueRange : 0 - 7 - /// + /// Variable for the id of the meal. private int mealId; - /// - /// Name of the meal - /// + /// Name of the meal. private string mealName; - /// - /// Description of the meal - /// + /// Description of the meal. private string mealDesc; #endregion #region Proberty - /// - /// Gets or sets the mealId - /// - /// - /// ValueRange : 0 - 7 - /// + /// Gets or sets the mealId. + /// ValueRange : 0 - 7. + /// The identifier of the meal. [XmlAttribute("id")] public int MealId { @@ -109,9 +79,8 @@ namespace CampusAppWPortalLib8.Model.Mensa } } - /// - /// Gets the mealName - /// + /// Gets the mealName. + /// The name of the meal. public string MealName { get @@ -120,9 +89,8 @@ namespace CampusAppWPortalLib8.Model.Mensa } } - /// - /// Gets or sets the mealDescription - /// + /// Gets or sets the mealDescription. + /// Information describing the meal. [XmlAttribute("desc")] public string MealDesc { @@ -140,14 +108,12 @@ namespace CampusAppWPortalLib8.Model.Mensa } } - /// - /// Gets or sets the icon url - /// + /// Gets or sets the icon url. + /// The icon URL. public string IconUrl { get; set; } - /// - /// Gets or sets the icon name - /// + /// Gets or sets the icon name. + /// The name of the icon. [XmlAttribute("icon")] public string IconName { get; set; } @@ -155,9 +121,8 @@ namespace CampusAppWPortalLib8.Model.Mensa #region Methods - /// - /// Method create depends of the mealId the mealName - /// + /// Method create depends of the mealId the mealName. + /// Stubbfel, 15.10.2013. private void CreateMealName() { switch (this.mealId) diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MenuModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MenuModel.cs index 6e03d69d..5e4f7304 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MenuModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MenuModel.cs @@ -1,40 +1,35 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 04.05.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the menu model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Mensa { using System; using System.Collections.ObjectModel; using System.Xml.Serialization; - /// - /// Model for menu - /// + /// Model for menu. + /// Stubbfel, 15.10.2013. public class MenuModel { #region Member - /// - /// Name of the day - /// + /// Name of the day. private string dayName; - /// - /// DateTime of the day - /// + /// DateTime of the day. private string date; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public MenuModel() { } @@ -43,15 +38,13 @@ namespace CampusAppWPortalLib8.Model.Mensa #region Property - /// - /// Gets or sets the menus for the week - /// + /// Gets or sets the menus for the week. + /// The meals. [XmlElement("Meal")] public ObservableCollection Meals { get; set; } - /// - /// Gets or sets the WeekDay - /// + /// Gets or sets the WeekDay. + /// The day. [XmlAttribute("day")] public string Day { @@ -69,9 +62,8 @@ namespace CampusAppWPortalLib8.Model.Mensa } } - /// - /// Gets or sets of Date - /// + /// Gets or sets of Date. + /// The date. [XmlAttribute("date")] public string Date { diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MenuWeekModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MenuWeekModel.cs index 35338718..f16db12d 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MenuWeekModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MenuWeekModel.cs @@ -1,35 +1,32 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 03.05.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the menu week model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Mensa { using System; using System.Collections.ObjectModel; using System.Xml.Serialization; - /// - /// Model for menus in one week - /// + /// Model for menus in one week. + /// Stubbfel, 15.10.2013. [XmlRoot("root")] public class MenuWeekModel { #region Members - /// - /// Time when the model was created - /// + /// Time when the model was created. private readonly DateTime createTime; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. public MenuWeekModel() { this.createTime = DateTime.Now; @@ -39,16 +36,14 @@ namespace CampusAppWPortalLib8.Model.Mensa #region Proberty - /// - /// Gets or sets the menus for the week - /// + /// Gets or sets the menus for the week. + /// The menus. [XmlArray("Mealplan")] [XmlArrayItem("Menu")] public ObservableCollection Menus { get; set; } - /// - /// Gets the creation time of the model - /// + /// Gets the creation time of the model. + /// The create time. public DateTime CreateTime { get @@ -61,10 +56,9 @@ namespace CampusAppWPortalLib8.Model.Mensa #region Methods - /// - /// Method calculate this day of the week, which its gets new menus - /// - /// Date of NewMenuWeekDay + /// Method calculate this day of the week, which its gets new menus. + /// Stubbfel, 15.10.2013. + /// Date of NewMenuWeekDay. public static DateTime CalcFirstWeekDay() { DateTime now = DateTime.Now; @@ -77,15 +71,14 @@ namespace CampusAppWPortalLib8.Model.Mensa return monday; } - /// - /// Method determine holidays (Days with no meals) and add a pseudo meal - /// - /// text of the pseudo meal + /// Method determine holidays (Days with no meals) and add a pseudo meal. + /// Stubbfel, 15.10.2013. + /// text of the pseudo meal. public void SetHolidayCaption(string text) { MealModel holiday = new MealModel(); holiday.MealDesc = text; - holiday.MealId= -1; + holiday.MealId = -1; foreach (MenuModel menu in this.Menus) { @@ -95,6 +88,7 @@ namespace CampusAppWPortalLib8.Model.Mensa { menu.Meals = new ObservableCollection(); } + menu.Meals.Add(holiday); } } diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/ModelTypes.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/ModelTypes.cs index 9964b4e3..4ca51bac 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/ModelTypes.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/ModelTypes.cs @@ -1,14 +1,15 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. +// +// fiedlchr +// 15.10.2013 +// Implements the model types class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model { - /// - /// Specifies the I/O type of the model. - /// + /// Specifies the I/O type of the model. + /// fiedlchr, 15.10.2013. public enum ModelType { /// diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Openinghours/OpeninghoursInstitutionModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Openinghours/OpeninghoursInstitutionModel.cs index 33d038f5..5a59452b 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Openinghours/OpeninghoursInstitutionModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Openinghours/OpeninghoursInstitutionModel.cs @@ -1,97 +1,66 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// fiedlchr -// 24.06.2013 -//----------------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the openinghours institution model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Openinghours { using System.Globalization; using System.Windows; using System.Xml.Serialization; - - /// - /// Model for menu - /// + + /// Model for menu. + /// Stubbfel, 15.10.2013. public class OpeninghoursInstitutionModel { #region Member - /// - /// German version of the institution title. - /// + /// German version of the institution title. private string titleDE = string.Empty; - /// - /// English version of the institution title. - /// + /// English version of the institution title. private string titleEN = string.Empty; - /// - /// Opening hours on monday. - /// + /// Opening hours on monday. private string dayMonday = string.Empty; - /// - /// Opening hours on tuesday. - /// + /// Opening hours on tuesday. private string dayTuesday = string.Empty; - /// - /// Opening hours on wednesday. - /// + /// Opening hours on wednesday. private string dayWednesday = string.Empty; - /// - /// Opening hours on thursday. - /// + /// Opening hours on thursday. private string dayThursday = string.Empty; - /// - /// Opening hours on friday. - /// + /// Opening hours on friday. private string dayFriday = string.Empty; - /// - /// Opening hours on saturday. - /// + /// Opening hours on saturday. private string daySaturday = string.Empty; - /// - /// Opening hours on sunday. - /// + /// Opening hours on sunday. private string daySunday = string.Empty; - /// - /// Email address of the institution. - /// + /// Email address of the institution. private string infoEmail = string.Empty; - /// - /// Phone number of the institution. - /// + /// Phone number of the institution. private string infoPhone = string.Empty; - /// - /// Building name where the institution is located. - /// + /// Building name where the institution is located. private string infoBuilding = string.Empty; - /// - /// Room where the institution is located. - /// + /// Room where the institution is located. private string infoRoom = string.Empty; - /// - /// German version of the comment. - /// + /// German version of the comment. private string commentDE = string.Empty; - /// - /// English version of the comment. - /// + /// English version of the comment. private string commentEN = string.Empty; #endregion @@ -99,8 +68,9 @@ namespace CampusAppWPortalLib8.Model.Openinghours #region Constructor /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// + /// Stubbfel, 15.10.2013. public OpeninghoursInstitutionModel() { } @@ -109,9 +79,8 @@ namespace CampusAppWPortalLib8.Model.Openinghours #region Property - /// - /// Gets or sets the german title of the institution. - /// + /// Gets or sets the german title of the institution. + /// The title de. [XmlAttribute("title_de")] public string Title_DE { @@ -126,9 +95,8 @@ namespace CampusAppWPortalLib8.Model.Openinghours } } - /// - /// Gets or sets the english title of the institution. - /// + /// Gets or sets the english title of the institution. + /// The title en. [XmlAttribute("title_en")] public string Title_EN { @@ -143,9 +111,8 @@ namespace CampusAppWPortalLib8.Model.Openinghours } } - /// - /// Gets or sets the open hours on monday. - /// + /// Gets or sets the open hours on monday. + /// The monday. [XmlAttribute("monday")] public string Monday { @@ -160,9 +127,8 @@ namespace CampusAppWPortalLib8.Model.Openinghours } } - /// - /// Gets or sets the open hours on tuesday. - /// + /// Gets or sets the open hours on tuesday. + /// The tuesday. [XmlAttribute("tuesday")] public string Tuesday { @@ -176,10 +142,9 @@ namespace CampusAppWPortalLib8.Model.Openinghours this.dayTuesday = this.FixOpeninghoursString(value); } } - - /// - /// Gets or sets the open hours on wednesday. - /// + + /// Gets or sets the open hours on wednesday. + /// The wednesday. [XmlAttribute("wednesday")] public string Wednesday { @@ -194,9 +159,8 @@ namespace CampusAppWPortalLib8.Model.Openinghours } } - /// - /// Gets or sets the open hours on thursday. - /// + /// Gets or sets the open hours on thursday. + /// The thursday. [XmlAttribute("thursday")] public string Thursday { @@ -211,9 +175,8 @@ namespace CampusAppWPortalLib8.Model.Openinghours } } - /// - /// Gets or sets the open hours on friday. - /// + /// Gets or sets the open hours on friday. + /// The friday. [XmlAttribute("friday")] public string Friday { @@ -227,10 +190,9 @@ namespace CampusAppWPortalLib8.Model.Openinghours this.dayFriday = this.FixOpeninghoursString(value); } } - - /// - /// Gets or sets the open hours on saturday. - /// + + /// Gets or sets the open hours on saturday. + /// The saturday. [XmlAttribute("saturday")] public string Saturday { @@ -244,10 +206,9 @@ namespace CampusAppWPortalLib8.Model.Openinghours this.daySaturday = this.FixOpeninghoursString(value); } } - - /// - /// Gets or sets the open hours on sunday. - /// + + /// Gets or sets the open hours on sunday. + /// The sunday. [XmlAttribute("sunday")] public string Sunday { @@ -262,9 +223,8 @@ namespace CampusAppWPortalLib8.Model.Openinghours } } - /// - /// Gets or sets the email address of the institution. - /// + /// Gets or sets the email address of the institution. + /// The e mail. [XmlAttribute("email")] public string EMail { @@ -278,10 +238,9 @@ namespace CampusAppWPortalLib8.Model.Openinghours this.infoEmail = value; } } - - /// - /// Gets or sets the phone number of the institution. - /// + + /// Gets or sets the phone number of the institution. + /// The phone. [XmlAttribute("phone")] public string Phone { @@ -296,9 +255,8 @@ namespace CampusAppWPortalLib8.Model.Openinghours } } - /// - /// Gets or sets the building where the institution is located. - /// + /// Gets or sets the building where the institution is located. + /// The building. [XmlAttribute("location_building")] public string Building { @@ -313,9 +271,8 @@ namespace CampusAppWPortalLib8.Model.Openinghours } } - /// - /// Gets or sets the room where the institution is located. - /// + /// Gets or sets the room where the institution is located. + /// The room. [XmlAttribute("location_room")] public string Room { @@ -330,9 +287,8 @@ namespace CampusAppWPortalLib8.Model.Openinghours } } - /// - /// Gets or sets the german comment. - /// + /// Gets or sets the german comment. + /// The comment de. [XmlAttribute("comment_de")] public string Comment_DE { @@ -347,9 +303,8 @@ namespace CampusAppWPortalLib8.Model.Openinghours } } - /// - /// Gets or sets the english comment. - /// + /// Gets or sets the english comment. + /// The comment en. [XmlAttribute("comment_en")] public string Comment_EN { @@ -365,9 +320,10 @@ namespace CampusAppWPortalLib8.Model.Openinghours } /// - /// Gets the localized title. If the phone is set to german language, - /// the german title will be returned otherwise the english title. + /// Gets the localized title. If the phone is set to german language, the german title will + /// be returned otherwise the english title. /// + /// The title. public string Title { get @@ -384,9 +340,10 @@ namespace CampusAppWPortalLib8.Model.Openinghours } /// - /// Gets the localized comment. if the phone is set to german language, - /// the german comment will be returned otherwise the english comment. + /// Gets the localized comment. if the phone is set to german language, the german comment + /// will be returned otherwise the english comment. /// + /// The comment. public string Comment { get @@ -403,9 +360,9 @@ namespace CampusAppWPortalLib8.Model.Openinghours } /// - /// Gets a string containing the email address and the institution - /// title separated by ':'. + /// Gets a string containing the email address and the institution title separated by ':'. /// + /// The e mail title. public string EMailTitle { get @@ -415,9 +372,9 @@ namespace CampusAppWPortalLib8.Model.Openinghours } /// - /// Gets a string containing the phone number and the institution - /// title separated by ':'. + /// Gets a string containing the phone number and the institution title separated by ':'. /// + /// The phone title. public string PhoneTitle { get @@ -430,11 +387,10 @@ namespace CampusAppWPortalLib8.Model.Openinghours #region Method - /// - /// Removes unwanted chars in a string. - /// - /// input string - /// fixed string + /// Removes unwanted chars in a string. + /// Stubbfel, 15.10.2013. + /// input string. + /// fixed string. private string FixOpeninghoursString(string str) { string retValue = string.Empty; diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Openinghours/OpeninghoursModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Openinghours/OpeninghoursModel.cs index edb61de4..42492466 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Openinghours/OpeninghoursModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Openinghours/OpeninghoursModel.cs @@ -1,42 +1,37 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 24.06.2013 -//----------------------------------------------------------------------------- - +// 15.10.2013 +// Implements the openinghours model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Openinghours { using System; using System.Collections.ObjectModel; using System.Xml.Serialization; - /// - /// Model for opening hours. - /// + /// Model for opening hours. + /// fiedlchr, 15.10.2013. + /// Generic type parameter. [XmlRoot("root")] - public class OpeninghoursModel where T: OpeninghoursInstitutionModel + public class OpeninghoursModel where T : OpeninghoursInstitutionModel { #region Member - - /// - /// Time when the model was created. - /// + + /// Time when the model was created. private readonly DateTime createTime; - - /// - /// Gets or sets feed information item list. - /// + + /// Gets or sets feed information item list. private ObservableCollection institutions; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the OpeninghoursModel class. + /// fiedlchr, 15.10.2013. public OpeninghoursModel() { this.institutions = new ObservableCollection(); @@ -47,9 +42,8 @@ namespace CampusAppWPortalLib8.Model.Openinghours #region Property - /// - /// Gets the creation time of the model. - /// + /// Gets the creation time of the model. + /// The create time. public DateTime CreateTime { get @@ -57,10 +51,9 @@ namespace CampusAppWPortalLib8.Model.Openinghours return this.createTime; } } - - /// - /// Gets or sets the Institutions. - /// + + /// Gets or sets the Institutions. + /// The institutions. [XmlArray("data")] [XmlArrayItem("institution")] public ObservableCollection Institutions diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Person/IPersonFunctionModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Person/IPersonFunctionModel.cs index 6bc47b1b..243896e1 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Person/IPersonFunctionModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Person/IPersonFunctionModel.cs @@ -1,23 +1,23 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 01.10.2013 -//----------------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Declares the IPersonFunctionModel interface +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Person { - /// - /// Interface for PersonFunctionModel classes - /// + /// Interface for PersonFunctionModel classes. + /// Stubbfel, 15.10.2013. public interface IPersonFunctionModel { - /// Gets or sets the identifier of the person. - /// The identifier of the person. + /// Gets or sets the identifier of the person. + /// The identifier of the person. string PersonID { get; set; } - /// Gets or sets zero-based index of the function. - /// The function index. + /// Gets or sets zero-based index of the function. + /// The function index. int FunctionIndex { get; set; } } } diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Person/IPersonModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Person/IPersonModel.cs index fcb2db88..0456bd45 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Person/IPersonModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Person/IPersonModel.cs @@ -1,30 +1,30 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 01.10.2013 -//----------------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Declares the IPersonModel interface +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Person { using System.Collections.ObjectModel; - /// - /// Interface for PersonModel classes - /// - /// PersonFunctionModel template + /// Interface for PersonModel classes. + /// Stubbfel, 15.10.2013. + /// PersonFunctionModel template. public interface IPersonModel where T : IPersonFunctionModel { - /// Gets or sets the functions of a person. - /// The functions. + /// Gets or sets the functions of a person. + /// The functions. ObservableCollection Functions { get; set; } - /// Gets or sets the identifier. - /// The identifier. + /// Gets or sets the identifier. + /// The identifier. string ID { get; set; } - /// Sets person identifier to function. - /// Stubbfel, 05.09.2013. + /// Sets person identifier to function. + /// Stubbfel, 05.09.2013. void SetPersonIdToFunction(); } } diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Person/PersonFunctionModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Person/PersonFunctionModel.cs index 017e51df..52163d12 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Person/PersonFunctionModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Person/PersonFunctionModel.cs @@ -1,48 +1,50 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 05.09.2013 -//----------------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the person function model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Person { using System.Xml.Serialization; using CampusAppWPortalLib8.Utility; - /// Person function model. - /// Stubbfel, 05.09.2013. + /// Person function model. + /// Stubbfel, 05.09.2013. + /// public class PersonFunctionModel : IPersonFunctionModel { #region Member - /// The first tel. + /// The first tel. private string tel1; - /// The second tel. + /// The second tel. private string tel2; - /// The fax. + /// The fax. private string fax; - /// The mail. + /// The mail. private string mail; - /// The function. + /// The function. private string function; - /// The appointment. + /// The appointment. private string appointment; - /// The building. + /// The building. private string building; #endregion #region Property - /// Gets or sets the tel 1. - /// The tel 1. + /// Gets or sets the tel 1. + /// The tel 1. [XmlAttribute("telefon")] public string Tel1 { @@ -60,8 +62,8 @@ namespace CampusAppWPortalLib8.Model.Person } } - /// Gets or sets the tel 2. - /// The tel 2. + /// Gets or sets the tel 2. + /// The tel 2. [XmlAttribute("telefon2")] public string Tel2 { @@ -79,8 +81,8 @@ namespace CampusAppWPortalLib8.Model.Person } } - /// Gets or sets the fax. - /// The fax. + /// Gets or sets the fax. + /// The fax. [XmlAttribute("fax")] public string Fax { @@ -98,8 +100,8 @@ namespace CampusAppWPortalLib8.Model.Person } } - /// Gets or sets the function. - /// The function. + /// Gets or sets the function. + /// The function. [XmlAttribute("funktion")] public string Function { @@ -117,8 +119,8 @@ namespace CampusAppWPortalLib8.Model.Person } } - /// Gets or sets the appointment. - /// The appointment. + /// Gets or sets the appointment. + /// The appointment. [XmlAttribute("einrichtung")] public string Appointment { @@ -136,8 +138,8 @@ namespace CampusAppWPortalLib8.Model.Person } } - /// Gets or sets the building. - /// The building. + /// Gets or sets the building. + /// The building. [XmlAttribute("gebaeude")] public string Building { @@ -155,8 +157,8 @@ namespace CampusAppWPortalLib8.Model.Person } } - /// Gets or sets the mail. - /// The mail. + /// Gets or sets the mail. + /// The mail. [XmlAttribute("mail")] public string Mail { @@ -174,12 +176,12 @@ namespace CampusAppWPortalLib8.Model.Person } } - /// Gets or sets the identifier of the person. - /// The identifier of the person. + /// Gets or sets the identifier of the person. + /// public string PersonID { get; set; } - /// Gets or sets zero-based index of the function. - /// The function index. + /// Gets or sets zero-based index of the function. + /// public int FunctionIndex { get; set; } #endregion diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Person/PersonListModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Person/PersonListModel.cs index bed28637..c42361fd 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Person/PersonListModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Person/PersonListModel.cs @@ -1,27 +1,27 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 05.09.2013 -//----------------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the person list model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Person { using System.Collections.Generic; using System.Collections.ObjectModel; using System.Xml.Serialization; - /// Person list model. - /// Stubbfel, 05.09.2013. - /// personModel template + /// Person list model. + /// Stubbfel, 05.09.2013. + /// personModel template. [XmlRoot("Uebersicht")] public abstract class PersonListModel { #region Property - /// Gets or sets the persons. - /// The persons. + /// Gets or sets the persons. + /// The persons. [XmlElement("person")] public ObservableCollection Persons { get; set; } @@ -29,29 +29,28 @@ namespace CampusAppWPortalLib8.Model.Person #region Method - /// Sets person identifier to function. - /// Stubbfel, 05.09.2013. + /// Sets person identifier to function. + /// Stubbfel, 05.09.2013. public abstract void SetPersonIdToFunction(); - /// Gets a person. - /// Stubbfel, 05.09.2013. - /// The identifier. - /// The person. + /// Gets a person. + /// Stubbfel, 05.09.2013. + /// The identifier. + /// The person. public abstract T GetPerson(string id); - /// Removes the non function and set identifiers person. - /// Stubbfel, 05.09.2013. + /// Removes the non function and set identifiers person. + /// Stubbfel, 05.09.2013. public void RemoveNonFunctionAndSetIdsPerson() { this.RemoveNonFunctionPerson(); this.SetPersonIdToFunction(); } - /// Removes the non function person. - /// Stubbfel, 05.09.2013. + /// Removes the non function person. + /// Stubbfel, 05.09.2013. public abstract void RemoveNonFunctionPerson(); - #endregion } } diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Person/PersonModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Person/PersonModel.cs index 931104d3..a7fa8f93 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Person/PersonModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Person/PersonModel.cs @@ -1,43 +1,44 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 05.09.2013 -//----------------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the person model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Person { using System.Collections.ObjectModel; using System.Xml.Serialization; - /// Person model. - /// Stubbfel, 05.09.2013. - /// template for the PersonFunction-Class + /// A data Model for the person. + /// Stubbfel, 15.10.2013. + /// public class PersonModel : IPersonModel where T : IPersonFunctionModel { #region Member - /// The akadgrad. + /// The akadgrad. private string akadgrad; - /// Name of the sur. + /// Name of the sur. private string surName; - /// The person's first name. + /// The person's first name. private string firstName; - /// The identifier. + /// The identifier. private string id; - /// The functions. + /// The functions. private ObservableCollection functions; #endregion #region Property - /// Gets or sets the identifier. - /// The identifier. + /// Gets or sets the identifier. + /// The identifier. [XmlAttribute("id")] public string ID { @@ -56,8 +57,8 @@ namespace CampusAppWPortalLib8.Model.Person } } - /// Gets or sets the akadgrad. - /// The akadgrad. + /// Gets or sets the akadgrad. + /// The akadgrad. [XmlAttribute("akadgrad")] public string Akadgrad { @@ -75,8 +76,8 @@ namespace CampusAppWPortalLib8.Model.Person } } - /// Gets or sets the name of the sur. - /// The name of the sur. + /// Gets or sets the name of the sur. + /// The name of the sur. [XmlAttribute("nachname")] public string SurName { @@ -94,8 +95,8 @@ namespace CampusAppWPortalLib8.Model.Person } } - /// Gets or sets the person's first name. - /// The name of the first. + /// Gets or sets the person's first name. + /// The name of the first. [XmlAttribute("vorname")] public string FirstName { @@ -113,8 +114,8 @@ namespace CampusAppWPortalLib8.Model.Person } } - /// Gets or sets the functions of a person. - /// The functions. + /// Gets or sets the functions of a person. + /// The functions. [XmlElement("funktion")] public ObservableCollection Functions { @@ -133,8 +134,8 @@ namespace CampusAppWPortalLib8.Model.Person } } - /// Gets the name of a Person (FirstName SurName). - /// The name of a Person. + /// Gets the name of a Person (FirstName SurName). + /// The name of a Person. public string FullName { get @@ -147,8 +148,8 @@ namespace CampusAppWPortalLib8.Model.Person #region Method - /// Sets person identifier to function. - /// Stubbfel, 05.09.2013. + /// Sets person identifier to function. + /// Stubbfel, 05.09.2013. public void SetPersonIdToFunction() { if (this.id == null || this.id.Equals(string.Empty) || this.functions == null) diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/RSS/RSSChannelModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/RSS/RSSChannelModel.cs index 4b6284b2..c24f4c1f 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/RSS/RSSChannelModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/RSS/RSSChannelModel.cs @@ -1,10 +1,11 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 24.06.2013 -//----------------------------------------------------------------------------- +// 15.10.2013 +// Implements the RSS channel model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.RSS { using System.Collections.ObjectModel; @@ -12,21 +13,17 @@ namespace CampusAppWPortalLib8.Model.RSS using System.Linq; using System.Xml.Serialization; - /// - /// Channel Model, which contains the RSS feed item list. - /// + /// Channel Model, which contains the RSS feed item list. + /// fiedlchr, 15.10.2013. public class RSSChannelModel { - /// - /// RSS feed information item list. - /// + /// RSS feed information item list. private ObservableCollection item; #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// fiedlchr, 15.10.2013. public RSSChannelModel() { this.item = new ObservableCollection(); @@ -37,9 +34,8 @@ namespace CampusAppWPortalLib8.Model.RSS #region Property - /// - /// Gets or sets the RSS feed item list. - /// + /// Gets or sets the RSS feed item list. + /// The item. [XmlElement("item")] public ObservableCollection Item { @@ -61,6 +57,9 @@ namespace CampusAppWPortalLib8.Model.RSS #region Method + /// Order by date. + /// fiedlchr, 15.10.2013. + /// (Optional) the ascending. public void OrderByDate(bool asc = false) { this.item.CollectionChanged -= this.OnListChanged; @@ -86,12 +85,12 @@ namespace CampusAppWPortalLib8.Model.RSS } /// - /// Is called when the item list has changed. - /// Here used for the add event. - /// Set the index of the last list element. + /// Is called when the item list has changed. Here used for the add event. Set the index of + /// the last list element. /// - /// item list - /// event args + /// fiedlchr, 15.10.2013. + /// item list. + /// event args. private void OnListChanged(object sender, NotifyCollectionChangedEventArgs e) { if (e.Action == NotifyCollectionChangedAction.Add) diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/RSS/RSSModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/RSS/RSSModel.cs index 6d5efa62..f13f0aff 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/RSS/RSSModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/RSS/RSSModel.cs @@ -1,60 +1,56 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 24.06.2013 -//----------------------------------------------------------------------------- +// 15.10.2013 +// Implements the RSS model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.RSS { using System; + using System.ComponentModel; using System.Text; using System.Xml.Serialization; - using System.ComponentModel; - - /// - /// Contains the RSS feed information. - /// + + /// Contains the RSS feed information. + /// fiedlchr, 15.10.2013. + /// public class RSSModel : INotifyPropertyChanged { - #region Member - - public event PropertyChangedEventHandler PropertyChanged; + #region Member - /// - /// Index of this object. - /// + /// Index of this object. private int index = -1; - /// - /// Title of the fees - /// + /// Title of the fees. private string title; - /// - /// Description text of the feed. - /// + /// Description text of the feed. private string text; - /// - /// Timestamp (publication date) of the event or news. - /// + /// Timestamp (publication date) of the event or news. private DateTime timestamp; - /// - /// Url of the feed. - /// + /// Url of the feed. private string link; + /// true to show, false to hide the text. private bool textVisible = true; #endregion - + + #region event + + /// Occurs when Property Changed. + public event PropertyChangedEventHandler PropertyChanged; + + #endregion + #region Property - /// - /// Gets or sets the title of the feed. - /// + /// Gets or sets the title of the feed. + /// The title. [XmlElement("title")] public string Title { @@ -72,9 +68,8 @@ namespace CampusAppWPortalLib8.Model.RSS } } - /// - /// Gets or sets the text of the feed. - /// + /// Gets or sets the text of the feed. + /// The text. [XmlElement("description")] public string Text { @@ -92,9 +87,8 @@ namespace CampusAppWPortalLib8.Model.RSS } } - /// - /// Gets or sets the timestamp of the feed as string. - /// + /// Gets or sets the timestamp of the feed as string. + /// The timestamp. [XmlElement("pubDate")] public string Timestamp { @@ -112,9 +106,8 @@ namespace CampusAppWPortalLib8.Model.RSS } } - /// - /// Gets or sets the timestamp of the feed as DateTime object. - /// + /// Gets or sets the timestamp of the feed as DateTime object. + /// The DateTime timestamp. public DateTime DTTimestamp { get @@ -128,10 +121,8 @@ namespace CampusAppWPortalLib8.Model.RSS } } - /// - /// Gets the date of the timestamp as string. - /// example: Mon, 25.06.2013. - /// + /// Gets the date of the timestamp as string. example: Mon, 25.06.2013. + /// The date. public string Date { get @@ -140,10 +131,8 @@ namespace CampusAppWPortalLib8.Model.RSS } } - /// - /// Gets the date of the timestamp as string. - /// example: 25.06. - /// + /// Gets the date of the timestamp as string. example: 25.06. + /// The short date. public string ShortDate { get @@ -152,10 +141,8 @@ namespace CampusAppWPortalLib8.Model.RSS } } - /// - /// Gets the time of the timestamp as string. - /// example: 12:56. - /// + /// Gets the time of the timestamp as string. example: 12:56. + /// The time. public string Time { get @@ -164,9 +151,8 @@ namespace CampusAppWPortalLib8.Model.RSS } } - /// - /// Gets or sets the link/url of the feed. - /// + /// Gets or sets the link/url of the feed. + /// The link. [XmlElement("link")] public string Link { @@ -184,9 +170,8 @@ namespace CampusAppWPortalLib8.Model.RSS } } - /// - /// Gets or sets the ListIndex. - /// + /// Gets or sets the ListIndex. + /// The index. public int Index { get @@ -200,9 +185,8 @@ namespace CampusAppWPortalLib8.Model.RSS } } - /// - /// Gets or sets the visibility of the text. - /// + /// Gets or sets a value indicating whether the text visibility. + /// true if text visibility, false if not. public bool TextVisibility { get @@ -221,9 +205,8 @@ namespace CampusAppWPortalLib8.Model.RSS } } - /// - /// Gets or sets the visibility of the browser. - /// + /// Gets a value indicating whether the browser visibility. + /// true if browser visibility, false if not. public bool BrowserVisibility { get @@ -238,13 +221,11 @@ namespace CampusAppWPortalLib8.Model.RSS #region public - /// - /// Comparing function for DateTime timestamps. - /// (currently unused) - /// - /// first item - /// second item - /// -1 if item2 is older then item1, otherwise 0 + /// Comparing function for DateTime timestamps. (currently unused) + /// fiedlchr, 15.10.2013. + /// first item. + /// second item. + /// -1 if item2 is older then item1, otherwise 0. public static int CompareTimeStamp(RSSModel item1, RSSModel item2) { if (item1.DTTimestamp > item2.DTTimestamp) @@ -261,19 +242,21 @@ namespace CampusAppWPortalLib8.Model.RSS #region private + /// Notifies a property changed. + /// fiedlchr, 15.10.2013. + /// The information. private void NotifyPropertyChanged(string info) { - if (PropertyChanged != null) + if (this.PropertyChanged != null) { this.PropertyChanged(this, new PropertyChangedEventArgs(info)); } } - /// - /// Remove or transform html-unicode specific tags into ASCII. - /// - /// html string - /// ASCII string + /// Remove or transform html-unicode specific tags into ASCII. + /// fiedlchr, 15.10.2013. + /// html string. + /// ASCII string. private string HTMLUnicodeToString(string htmluni) { StringBuilder retValue = new StringBuilder(); diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/RSS/RSSViewModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/RSS/RSSViewModel.cs index 3049cad5..b62f471b 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/RSS/RSSViewModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/RSS/RSSViewModel.cs @@ -1,41 +1,36 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 24.06.2013 -//----------------------------------------------------------------------------- +// 15.10.2013 +// Implements the RSS view model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.RSS { using System; using System.Collections.ObjectModel; using System.Xml.Serialization; - /// - /// ViewModel of the RSS feed, containing the feed/channel object. - /// + /// ViewModel of the RSS feed, containing the feed/channel object. + /// fiedlchr, 15.10.2013. [XmlRoot("root")] public class RSSViewModel { #region Member - /// - /// Object to store the time when the instance was created. - /// + /// Object to store the time when the instance was created. private DateTime createTime; - /// - /// Channel list for the RSS feeds. - /// + /// Channel list for the RSS feeds. private ObservableCollection channel; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// + /// Initializes a new instance of the class. + /// fiedlchr, 15.10.2013. public RSSViewModel() { this.channel = new ObservableCollection(); @@ -46,9 +41,8 @@ namespace CampusAppWPortalLib8.Model.RSS #region Property - /// - /// Gets or sets the channel list. - /// + /// Gets or sets the channel list. + /// The channel. [XmlArray("rss")] [XmlArrayItem("channel")] public ObservableCollection Channel @@ -67,9 +61,8 @@ namespace CampusAppWPortalLib8.Model.RSS } } - /// - /// Gets the creation time. - /// + /// Gets the creation time. + /// The create time. public DateTime CreateTime { get diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Settings/CampusTypes.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Settings/CampusTypes.cs index dee8c063..65ec8454 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Settings/CampusTypes.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Settings/CampusTypes.cs @@ -1,18 +1,20 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. +// +// Stubbfel +// 15.10.2013 +// Implements the campus types class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Settings { - /// - /// Specifies the campus of the user. - /// + /// Specifies the campus of the user. + /// Stubbfel, 15.10.2013. public enum Campus { /// An enum constant representing the user setting campus option. UserSettingCampus = 0, + /// /// Cottbus -> MainCampus /// diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Settings/DegreeTypes.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Settings/DegreeTypes.cs index f1cbbb79..f72ee73c 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Settings/DegreeTypes.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Settings/DegreeTypes.cs @@ -1,14 +1,15 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. +// +// Stubbfel +// 15.10.2013 +// Implements the degree types class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Settings { - /// - /// Specifies the degrees. - /// + /// Specifies the degrees. + /// Stubbfel, 15.10.2013. public enum DegreeType { /// diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Settings/RolesTypes.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Settings/RolesTypes.cs index cda9ee5c..216e5e6e 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Settings/RolesTypes.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Settings/RolesTypes.cs @@ -1,14 +1,15 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. +// +// Stubbfel +// 15.10.2013 +// Implements the roles types class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Settings { - /// - /// Specifies the role of the user. - /// + /// Specifies the role of the user. + /// Stubbfel, 15.10.2013. public enum RoleType { /// diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/StudentCouncil/StudentCouncilListModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/StudentCouncil/StudentCouncilListModel.cs index 5f17053a..98a1965c 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/StudentCouncil/StudentCouncilListModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/StudentCouncil/StudentCouncilListModel.cs @@ -1,10 +1,11 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 02.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the student council list model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.StudentCouncil { using System; @@ -13,24 +14,23 @@ namespace CampusAppWPortalLib8.Model.StudentCouncil using System.Linq; using System.Xml.Serialization; - /// - /// Model for menus in one week - /// + /// Model for menus in one week. + /// Stubbfel, 15.10.2013. [XmlRoot("root")] public class StudentCouncilListModel { #region Members - /// - /// Time when the model was created - /// + /// Time when the model was created. private readonly DateTime createTime; #endregion #region Constructor + /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// + /// Stubbfel, 15.10.2013. public StudentCouncilListModel() { this.createTime = DateTime.Now; @@ -39,16 +39,15 @@ namespace CampusAppWPortalLib8.Model.StudentCouncil #endregion #region Proberty - /// - /// Gets or sets the StudentCouncils - /// + + /// Gets or sets the StudentCouncils. + /// The student councils. [XmlArray("data")] [XmlArrayItem("studentcouncil")] public ObservableCollection StudentCouncils { get; set; } - /// - /// Gets the creation time of the model - /// + /// Gets the creation time of the model. + /// The create time. public DateTime CreateTime { get @@ -60,10 +59,13 @@ namespace CampusAppWPortalLib8.Model.StudentCouncil #endregion #region Method - /// - /// Method group the StudentCouncilList by Faculty - /// - /// a Dictionary, where the Key is name of the Faculty und the value is a List of StudentCouncil + + /// Method group the StudentCouncilList by Faculty. + /// Stubbfel, 15.10.2013. + /// + /// a Dictionary, where the Key is name of the Faculty und the value is a List of + /// StudentCouncil. + /// public Dictionary> GetStudentCouncilsGroupByFaculty() { List> tmpList = this.StudentCouncils.GroupBy(p => p.Faculty).ToList(); diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/StudentCouncil/StudentCouncilModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/StudentCouncil/StudentCouncilModel.cs index 9b28289b..73936b78 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/StudentCouncil/StudentCouncilModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/StudentCouncil/StudentCouncilModel.cs @@ -1,26 +1,23 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 02.07.2013 -//----------------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the student council model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.StudentCouncil { - using CampusAppWPortalLib8.Resources; using System.Xml.Serialization; + using CampusAppWPortalLib8.Resources; - /// - /// Model for menu - /// + /// Model for menu. + /// Stubbfel, 15.10.2013. public class StudentCouncilModel { #region Member - /// - /// name of the faculty. - /// + /// name of the faculty. private string faculty; #endregion @@ -28,8 +25,9 @@ namespace CampusAppWPortalLib8.Model.StudentCouncil #region Constructor /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// + /// Stubbfel, 15.10.2013. public StudentCouncilModel() { } @@ -38,9 +36,8 @@ namespace CampusAppWPortalLib8.Model.StudentCouncil #region Property - /// - /// Gets or sets the faculty of the StudentCouncil. - /// + /// Gets or sets the faculty of the StudentCouncil. + /// The faculty. [XmlAttribute("faculty")] public string Faculty { @@ -63,21 +60,18 @@ namespace CampusAppWPortalLib8.Model.StudentCouncil } } - /// - /// Gets or sets the name of the StudentCouncil. - /// + /// Gets or sets the name of the StudentCouncil. + /// The name. [XmlAttribute("name")] public string Name { get; set; } - /// - /// Gets or sets the webpage-url of the StudentCouncil. - /// + /// Gets or sets the webpage-url of the StudentCouncil. + /// The URL. [XmlAttribute("url")] public string Url { get; set; } - /// - /// Gets or sets the email-address of the StudentCouncil. - /// + /// Gets or sets the email-address of the StudentCouncil. + /// The email. [XmlAttribute("email")] public string Email { get; set; } diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CampusListPickerItemListModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CampusListPickerItemListModel.cs index aa60217e..87d175ac 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CampusListPickerItemListModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CampusListPickerItemListModel.cs @@ -1,24 +1,26 @@ -// -// Company copyright tag.List +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 08.08.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the campus list picker item list model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Utility { using CampusAppWPortalLib8.Resources; - using CampusAppWPortalLib8.Model.Utility; - /// - /// This Class creates a list of degrees - /// + /// This Class creates a list of degrees. + /// Stubbfel, 15.10.2013. + /// public class CampusListPickerItemListModel : ListPickerItemListModel { #region Constructor /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// + /// Stubbfel, 15.10.2013. public CampusListPickerItemListModel() : base() { @@ -29,9 +31,9 @@ namespace CampusAppWPortalLib8.Model.Utility #region Method - /// - /// Overrides the LoadList-Method - /// + /// Overrides the LoadList-Method + /// Stubbfel, 15.10.2013. + /// protected override void LoadList() { this.AddItem(new ListPickerItemModel(((int)CampusAppWPortalLib8.Model.Settings.Campus.CB_MAIN).ToString(), AppResources.Campus_CBMain)); diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CleanUrlParamModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CleanUrlParamModel.cs index 3eb6a03d..c22cd50f 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CleanUrlParamModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CleanUrlParamModel.cs @@ -1,31 +1,32 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 06.08.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the clean URL parameter model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Utility { - /// - /// This class is a Model for the URLParameter like GET-Parameter - /// + /// This class is a Model for the URLParameter like GET-Parameter. + /// Stubbfel, 15.10.2013. + /// public class CleanUrlParamModel : UrlParamModel { #region Constructor - /// Initializes a new instance of the CleanUrlParamModel class. - /// Stubbfel, 12.09.2013. - /// the key for the parameter. + /// Initializes a new instance of the CleanUrlParamModel class. + /// Stubbfel, 12.09.2013. + /// the key for the parameter. public CleanUrlParamModel(string key) : base(key) { } - /// Initializes a new instance of the CleanUrlParamModel class. - /// Stubbfel, 12.09.2013. - /// the key for the parameter. - /// The value. + /// Initializes a new instance of the CleanUrlParamModel class. + /// Stubbfel, 12.09.2013. + /// the key for the parameter. + /// The value. public CleanUrlParamModel(string key, string value) : base(key, value) { @@ -34,9 +35,8 @@ namespace CampusAppWPortalLib8.Model.Utility #region Proberty - /// - /// Gets the token, which indicate that the parameterList started - /// + /// Gets the token, which indicate that the parameterList started. + /// public override string ParamToken { get @@ -48,10 +48,9 @@ namespace CampusAppWPortalLib8.Model.Utility #region Methods - /// - /// Method return a formatted string like Key=Value - /// - /// return formatted string + /// Method return a formatted string like Key=Value. + /// Stubbfel, 15.10.2013. + /// public override string ToString() { if (!this.IsParamValid()) diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CourseListPickerItemListModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CourseListPickerItemListModel.cs index 884df21a..eb3ac634 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CourseListPickerItemListModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CourseListPickerItemListModel.cs @@ -1,22 +1,24 @@ -// -// Company copyright tag.List +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 25.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the course list picker item list model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Utility { using System.Linq; - /// - /// This is a class for the courseList - /// + /// This is a class for the courseList. + /// Stubbfel, 15.10.2013. + /// public abstract class CourseListPickerItemListModel : ListPickerItemListModel { #region Method - /// Fall back list. - /// Stubbfel, 10.09.2013. + /// Fall back list. + /// Stubbfel, 10.09.2013. protected void FallBackList() { this.AddItem(new ListPickerItemModel("017", "Bauingenieurwesen")); diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CourseModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CourseModel.cs index 0921c76c..68c049f0 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CourseModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/CourseModel.cs @@ -1,24 +1,26 @@ -// -// Company copyright tag.List +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 25.07.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the course model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Utility { using System; - /// Course model. - /// Stubbfel, 10.09.2013. + /// Course model. + /// Stubbfel, 10.09.2013. + /// public class CourseModel : IEquatable { #region Constructor - /// Initializes a new instance of the CourseModel class. - /// Stubbfel, 10.09.2013. - /// The course number. - /// The course text. + /// Initializes a new instance of the CourseModel class. + /// Stubbfel, 10.09.2013. + /// The course number. + /// The course text. public CourseModel(string courseNumber, string courseText) { this.CourseNumber = courseNumber; @@ -29,22 +31,22 @@ namespace CampusAppWPortalLib8.Model.Utility #region Property - /// Gets or sets the course number. - /// The course number. + /// Gets or sets the course number. + /// The course number. public string CourseNumber { get; set; } - /// Gets or sets the course text. - /// The course text. + /// Gets or sets the course text. + /// The course text. public string CourseText { get; set; } #endregion #region Method - /// Tests if this CourseModel is considered equal to another. - /// Stubbfel, 10.09.2013. - /// The course model to compare to this object. - /// true if the objects are considered equal, false if they are not. + /// Tests if this CourseModel is considered equal to another. + /// Stubbfel, 10.09.2013. + /// The course model to compare to this object. + /// true if the objects are considered equal, false if they are not. public bool Equals(CourseModel other) { if (this.CourseNumber.Equals(other.CourseNumber)) diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/DegreeListPickerItemListModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/DegreeListPickerItemListModel.cs index 8ae21a53..5d78e388 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/DegreeListPickerItemListModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/DegreeListPickerItemListModel.cs @@ -1,24 +1,26 @@ -// -// Company copyright tag.List +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 25.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the degree list picker item list model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Utility { using CampusAppWPortalLib8.Resources; - using CampusAppWPortalLib8.Model.Utility; - /// - /// This Class creates a list of degrees - /// + /// This Class creates a list of degrees. + /// Stubbfel, 15.10.2013. + /// public class DegreeListPickerItemListModel : ListPickerItemListModel { #region Constructor /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// + /// Stubbfel, 15.10.2013. public DegreeListPickerItemListModel() : base() { @@ -29,9 +31,9 @@ namespace CampusAppWPortalLib8.Model.Utility #region Method - /// - /// Overrides the LoadList-Method - /// + /// Overrides the LoadList-Method + /// Stubbfel, 15.10.2013. + /// protected override void LoadList() { this.AddItem(new ListPickerItemModel(((int)CampusAppWPortalLib8.Model.Settings.DegreeType.BACHELOR).ToString(), AppResources.Degree_Bachelor)); diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/ListPickerItemListModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/ListPickerItemListModel.cs index bbcd1a64..8373f3a3 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/ListPickerItemListModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/ListPickerItemListModel.cs @@ -1,24 +1,22 @@ //----------------------------------------------------------------------- // -// Company copyright tag.List +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 25.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the list picker item list model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Utility { using System.Collections.Generic; - /// - /// Class for a List of ListPickerItems - /// + /// Class for a List of ListPickerItems. + /// Stubbfel, 15.10.2013. public class ListPickerItemListModel { #region Members - /// - /// reference of the itemList - /// + /// reference of the itemList. private List list; #endregion @@ -26,8 +24,9 @@ namespace CampusAppWPortalLib8.Model.Utility #region Constructor /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// + /// Stubbfel, 15.10.2013. public ListPickerItemListModel() { this.list = new List(); @@ -37,9 +36,8 @@ namespace CampusAppWPortalLib8.Model.Utility #region Property - /// - /// Gets or sets the ItemList - /// + /// Gets or sets the ItemList. + /// The list. public List List { get @@ -62,11 +60,10 @@ namespace CampusAppWPortalLib8.Model.Utility #region public - /// - /// Method return a the Index of an item which has a certain value - /// - /// a certain value - /// return index of value or default(0) + /// Method return a the Index of an item which has a certain value. + /// Stubbfel, 15.10.2013. + /// a certain value. + /// return index of value or default(0) public virtual int GetIndexOrDefault(string value) { int index = 0; @@ -85,41 +82,37 @@ namespace CampusAppWPortalLib8.Model.Utility return index; } - /// - /// add an new item to the list - /// - /// value of the item - /// text of the item + /// add an new item to the list. + /// Stubbfel, 15.10.2013. + /// value of the item. + /// text of the item. public void AddItem(string value, string text) { this.AddItem(new ListPickerItemModel(value, text)); } - /// - /// add an new item to the list - /// - /// new item of the list + /// add an new item to the list. + /// Stubbfel, 15.10.2013. + /// new item of the list. public void AddItem(ListPickerItemModel item) { this.list.Add(item); } - /// - /// remove an item - /// - /// value of the item - /// text of the item - /// true if removing was successful, otherwise false + /// remove an item. + /// Stubbfel, 15.10.2013. + /// value of the item. + /// text of the item. + /// true if removing was successful, otherwise false. public bool RemoveItem(string value, string text) { return this.RemoveItem(new ListPickerItemModel(value, text)); } - /// - /// remove an item - /// - /// item which has to be remove - /// true if removing was successful, otherwise false + /// remove an item. + /// Stubbfel, 15.10.2013. + /// item which has to be remove. + /// true if removing was successful, otherwise false. public bool RemoveItem(ListPickerItemModel item) { return this.list.Remove(item); @@ -129,12 +122,8 @@ namespace CampusAppWPortalLib8.Model.Utility #region protected - /// - /// Method load an default list - /// - /// - /// load an empty list - /// + /// Method load an default list. + /// load an empty list. protected virtual void LoadList() { return; diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/ListPickerItemModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/ListPickerItemModel.cs index 0a394f3a..0984aa42 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/ListPickerItemModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/ListPickerItemModel.cs @@ -1,31 +1,33 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 13.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the list picker item model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Utility { - /// - /// Model for the ListPickerItems - /// + /// Model for the ListPickerItems. + /// Stubbfel, 15.10.2013. public class ListPickerItemModel { #region Constructor /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// + /// Stubbfel, 15.10.2013. public ListPickerItemModel() { } /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// string for the value property of an item - /// string for the text property of an item + /// Stubbfel, 15.10.2013. + /// string for the value property of an item. + /// string for the text property of an item. public ListPickerItemModel(string value, string text) { this.Value = value; @@ -36,14 +38,12 @@ namespace CampusAppWPortalLib8.Model.Utility #region Property - /// - /// Gets or sets the Value of an Item - /// + /// Gets or sets the Value of an Item. + /// The value. public string Value { get; set; } - /// - /// Gets or sets the Text (caption) of an Item - /// + /// Gets or sets the Text (caption) of an Item. + /// The text. public string Text { get; set; } #endregion diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/RoleListPickerItemListModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/RoleListPickerItemListModel.cs index 24ceb6b3..3d10de16 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/RoleListPickerItemListModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/RoleListPickerItemListModel.cs @@ -1,24 +1,26 @@ -// -// Company copyright tag.List +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 25.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the role list picker item list model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Utility { using CampusAppWPortalLib8.Resources; - using CampusAppWPortalLib8.Model.Utility; - /// - /// Class for the RoleList - /// + /// Class for the RoleList. + /// Stubbfel, 15.10.2013. + /// public class RoleListPickerItemListModel : ListPickerItemListModel { #region Constructor /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// + /// Stubbfel, 15.10.2013. public RoleListPickerItemListModel() : base() { @@ -29,9 +31,9 @@ namespace CampusAppWPortalLib8.Model.Utility #region Method - /// - /// Overrides the LoadList-Method - /// + /// Overrides the LoadList-Method + /// Stubbfel, 15.10.2013. + /// protected override void LoadList() { this.AddItem(new ListPickerItemModel(CampusAppWPortalLib8.Model.Settings.RoleType.STUDENT.ToString(), AppResources.Setting_RoleStudent)); diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/SemesterListPickerItemListModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/SemesterListPickerItemListModel.cs index 07e254b0..2ec98742 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/SemesterListPickerItemListModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/SemesterListPickerItemListModel.cs @@ -1,21 +1,24 @@ -// -// Company copyright tag.List +//----------------------------------------------------------------------- +// +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 25.07.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the semester list picker item list model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Utility { - /// - /// Class for the SemesterList - /// + /// Class for the SemesterList. + /// Stubbfel, 15.10.2013. + /// public class SemesterListPickerItemListModel : ListPickerItemListModel { #region Constructor /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// + /// Stubbfel, 15.10.2013. public SemesterListPickerItemListModel() : base() { @@ -26,9 +29,9 @@ namespace CampusAppWPortalLib8.Model.Utility #region Method - /// - /// Overrides the LoadList-Method - /// + /// Overrides the LoadList-Method + /// Stubbfel, 15.10.2013. + /// protected override void LoadList() { this.AddItem(new ListPickerItemModel("20132", "WiSe 13/14")); diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/URLParamModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/URLParamModel.cs index 49ebf92a..470de426 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/URLParamModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Utility/URLParamModel.cs @@ -1,42 +1,38 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 17.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the URL parameter model class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Utility { - /// - /// This class is a Model for the URLParameter like GET-Parameter - /// + /// This class is a Model for the URLParameter like GET-Parameter. + /// Stubbfel, 15.10.2013. public class UrlParamModel { #region Members - /// - /// Variable of the key - /// + /// Variable of the key. protected readonly string key; #endregion #region Constructor - /// - /// Initializes a new instance of the class. - /// - /// the key for the parameter + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. + /// the key for the parameter. public UrlParamModel(string key) { this.key = key; } - /// - /// Initializes a new instance of the class. - /// - /// the key for the parameter> - /// value of the parameter + /// Initializes a new instance of the class. + /// Stubbfel, 15.10.2013. + /// the key for the parameter. + /// value of the parameter. public UrlParamModel(string key, string value) { this.key = key; @@ -46,14 +42,12 @@ namespace CampusAppWPortalLib8.Model.Utility #region Proberty - /// - /// Gets or sets the value of the Parameter - /// + /// Gets or sets the value of the Parameter. + /// The value. public string Value { get; set; } - /// - /// Gets the key of the parameter - /// + /// Gets the key of the parameter. + /// The key. public string Key { get @@ -62,9 +56,8 @@ namespace CampusAppWPortalLib8.Model.Utility } } - /// - /// Gets the token, which indicate that the parameterList started - /// + /// Gets the token, which indicate that the parameterList started. + /// The parameter token. public virtual string ParamToken { get @@ -76,10 +69,9 @@ namespace CampusAppWPortalLib8.Model.Utility #region Methods - /// - /// Method check if the parameter is valid - /// - /// true if is it valid, otherwise false + /// Method check if the parameter is valid. + /// Stubbfel, 15.10.2013. + /// true if is it valid, otherwise false. public virtual bool IsParamValid() { if (this.key == null || string.Empty.Equals(this.key) || string.Empty.Equals(this.Value)) @@ -90,10 +82,9 @@ namespace CampusAppWPortalLib8.Model.Utility return true; } - /// - /// Method return a formatted string like Key=Value - /// - /// return formatted string + /// Method return a formatted string like Key=Value. + /// Stubbfel, 15.10.2013. + /// public override string ToString() { if (!this.IsParamValid()) diff --git a/CampusAppWP8/CampusAppWPortalLib8/Settings.StyleCop b/CampusAppWP8/CampusAppWPortalLib8/Settings.StyleCop index 6211b689..d40e399f 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Settings.StyleCop +++ b/CampusAppWP8/CampusAppWPortalLib8/Settings.StyleCop @@ -3,6 +3,7 @@ akadgrad api + fiedlchr nfc param qr @@ -16,7 +17,7 @@ BTU/IIT - BTU/IIT + The MIT License (MIT). Copyright (c) 2013 BTU/IIT. From 6d29a46b635a8f0c6cbc69fc883889fef9c4e623 Mon Sep 17 00:00:00 2001 From: stubbfel Date: Tue, 15 Oct 2013 13:13:09 +0200 Subject: [PATCH 9/9] refatcor utilityplc --- .../Utility/AbstractBackgroundTasks.cs | 20 ++-- .../Utility/AbstractFile.cs | 44 ++++---- .../Utility/AbstractHttpRequest.cs | 35 +++--- .../Utility/DefaultStringManager.cs | 105 ++++++++---------- .../CampusAppWPortalLib8/Utility/Logger.cs | 30 +++-- .../Utility/XmlManager.cs | 48 ++++---- 6 files changed, 130 insertions(+), 152 deletions(-) diff --git a/CampusAppWP8/CampusAppWPortalLib8/Utility/AbstractBackgroundTasks.cs b/CampusAppWP8/CampusAppWPortalLib8/Utility/AbstractBackgroundTasks.cs index 434104b4..a3bdca7f 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Utility/AbstractBackgroundTasks.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Utility/AbstractBackgroundTasks.cs @@ -1,21 +1,19 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 18.09.2013 -//---------------------------------------------------------------------- - +// Stubbfel +// 15.10.2013 +// Implements the abstract background tasks class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Utility { - /// - /// abstract class for BackGroundTask - /// + /// abstract class for BackGroundTask. + /// Stubbfel, 15.10.2013. public abstract class AbstractBackgroundTasks { - /// - /// Gets or sets the name of the last running task - /// + /// Gets or sets the name of the last running task. + /// The name of the last added task. protected static string LastAddedTaskName { get; set; } } } diff --git a/CampusAppWP8/CampusAppWPortalLib8/Utility/AbstractFile.cs b/CampusAppWP8/CampusAppWPortalLib8/Utility/AbstractFile.cs index 0724f50e..311da049 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Utility/AbstractFile.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Utility/AbstractFile.cs @@ -1,22 +1,21 @@ -//----------------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // // fiedlchr -// 03.05.2013 -//----------------------------------------------------------------------------- +// 15.10.2013 +// Implements the abstract file class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Utility { - /// - /// File class. - /// + /// File class. + /// fiedlchr, 15.10.2013. public abstract class AbstractFile { #region Events - /// - /// Delegation of the write callback function prototype. - /// + /// Delegation of the write callback function prototype. + /// fiedlchr, 15.10.2013. public delegate void WriteCallbackFunc(); #endregion @@ -25,28 +24,25 @@ namespace CampusAppWPortalLib8.Utility #region public - /// Read data from file to a string. - /// Stubbfel, 03.09.2013. - /// data string. + /// Read data from file to a string. + /// fiedlchr, 03.09.2013. + /// data string. public abstract byte[] ReadFile(); - /// Write bytes to the file. - /// Stubbfel, 03.09.2013. - /// data byte array. - /// callback function, called after writing is done. - /// callback function, called when writing failed. + /// Write bytes to the file. + /// fiedlchr, 03.09.2013. + /// data byte array. + /// callback function, called after writing is done. + /// callback function, called when writing failed. public abstract void WriteFile(byte[] data, WriteCallbackFunc onSavedCallback, WriteCallbackFunc onFailedCallback); - /// - /// Check if a file is existing. - /// - /// true, if file exists, otherwise false + /// Check if a file is existing. + /// fiedlchr, 15.10.2013. + /// true, if file exists, otherwise false. public abstract bool Exist(); - #endregion - #endregion } } \ No newline at end of file diff --git a/CampusAppWP8/CampusAppWPortalLib8/Utility/AbstractHttpRequest.cs b/CampusAppWP8/CampusAppWPortalLib8/Utility/AbstractHttpRequest.cs index e52f9b50..8645f09d 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Utility/AbstractHttpRequest.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Utility/AbstractHttpRequest.cs @@ -1,36 +1,32 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 10.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the abstract HTTP request class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Utility -{ +{ using System; using System.Collections.Generic; - using System.Net; using CampusAppWPortalLib8.Model.Utility; - /// - /// abstract Class provides some methods and member for HttpRequest - /// + /// abstract Class provides some methods and member for HttpRequest. + /// Stubbfel, 15.10.2013. public abstract class AbstractHttpRequest { #region Member - /// - /// BaseAddress of the webClient - /// + /// BaseAddress of the webClient. private string baseAddress; #endregion #region property - /// - /// Gets or sets BaseAddress of the webClient - /// + /// Gets or sets BaseAddress of the webClient. + /// The base address. protected string BaseAddress { get @@ -50,11 +46,10 @@ namespace CampusAppWPortalLib8.Utility #region Methods - /// - /// Method create the Url for the http-get-method - /// - /// list of parameters - /// absolute API-Url include GetParameter + /// Method create the Url for the http-get-method. + /// Stubbfel, 15.10.2013. + /// list of parameters. + /// absolute API-Url include GetParameter. public Uri CreateGetUrl(List parameters) { string paramterStr = string.Empty; diff --git a/CampusAppWP8/CampusAppWPortalLib8/Utility/DefaultStringManager.cs b/CampusAppWP8/CampusAppWPortalLib8/Utility/DefaultStringManager.cs index 8f931d3a..37a2d796 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Utility/DefaultStringManager.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Utility/DefaultStringManager.cs @@ -1,68 +1,64 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 06.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the default string manager class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Utility { using System; using System.Text.RegularExpressions; using CampusAppWPortalLib8.Resources; - /// - /// Class provides some special StringMethods - /// + /// Class provides some special StringMethods. + /// Stubbfel, 15.10.2013. public class DefaultStringManager { #region Members - /// - /// Patter for Html-Tags - /// + /// Patter for Html-Tags. private static readonly string HtmlTagPattern = "<.*?>"; - /// The mail valid regular expression. + /// The mail valid regular expression. private static readonly string EMailValidRegex = @"^(?("")(""[^""]+?""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9]{2,17}))$"; #endregion #region Methods - /// - /// Method removes Html-Tag of a String - /// - /// String with Html-Tags - /// String without Html-Tags + /// Method removes Html-Tag of a String. + /// Stubbfel, 15.10.2013. + /// String with Html-Tags. + /// String without Html-Tags. public static string StripHTML(string inputString) { return Regex.Replace(inputString, DefaultStringManager.HtmlTagPattern, string.Empty); } - /// - /// Method add an Newline to a string - /// - /// input string - /// input string + newline + /// Method add an Newline to a string. + /// Stubbfel, 15.10.2013. + /// input string. + /// input string + newline. public static string AddNewLine(string str) { return str.ToString() + "\n"; } - /// Method remove(TrimEND!) an Newline to a string. - /// Stubbfel, 12.09.2013. - /// input string. - /// input string - newline. + /// Method remove(TrimEND!) an Newline to a string. + /// Stubbfel, 12.09.2013. + /// input string. + /// input string - newline. public static string RemoveNewLine(string str) { return str.TrimEnd('\n'); } - /// Query if 'strIn' is valid email. - /// Stubbfel, 04.09.2013. - /// The in. - /// true if valid email, false if not. + /// Query if 'strIn' is valid email. + /// Stubbfel, 04.09.2013. + /// The in. + /// true if valid email, false if not. public static bool IsValidEmail(string strIn) { // Return true if strIn is in valid e-mail format. @@ -79,10 +75,10 @@ namespace CampusAppWPortalLib8.Utility } } - /// Creates uni telefon number. - /// Stubbfel, 04.09.2013. - /// The input. - /// The new uni telefon number. + /// Creates uni telefon number. + /// Stubbfel, 04.09.2013. + /// The input. + /// The new uni telefon number. public static string CreateUniTelefonNumber(string input) { string result = null; @@ -101,13 +97,14 @@ namespace CampusAppWPortalLib8.Utility return result; } - /// - /// Method create from a long string a short string - /// - /// the long input String - /// max length of the short string - /// (optional) suffix which added to the short string, when long string has to be cut - /// the shorted string + /// Method create from a long string a short string. + /// Stubbfel, 15.10.2013. + /// the long input String. + /// max length of the short string. + /// + /// (optional) suffix which added to the short string, when long string has to be cut. + /// + /// the shorted string. public static string ToShortString(string longStr, int maxLenght, string suffix = "") { string shortStr = longStr; @@ -124,17 +121,15 @@ namespace CampusAppWPortalLib8.Utility return shortStr; } - /// - /// Method gets the placeId of the result string for an qrCode string - /// - /// input qrCode string - /// the id if it was found it in the string otherwise null + /// Method gets the placeId of the result string for an qrCode string. + /// Stubbfel, 15.10.2013. + /// input qrCode string. + /// the id if it was found it in the string otherwise null. public static string FilterPlaceIdinQRResultString(string qrcodeResult) { if (qrcodeResult == null) { return null; - } string[] lines = qrcodeResult.Split('\n'); @@ -152,11 +147,10 @@ namespace CampusAppWPortalLib8.Utility return null; } - /// - /// Method check if the string contains only digit - /// - /// input string - /// true if the string contains only digit, otherwise false + /// Method check if the string contains only digit. + /// Stubbfel, 15.10.2013. + /// input string. + /// true if the string contains only digit, otherwise false. public static bool IsDigitsOnly(string str) { if (str == null || str.Length < 1) @@ -175,11 +169,10 @@ namespace CampusAppWPortalLib8.Utility return true; } - /// - /// Method gets the placeId of the result string for an nfc string - /// - /// input nfc string - /// the id if it was found it in the string otherwise null + /// Method gets the placeId of the result string for an nfc string. + /// Stubbfel, 15.10.2013. + /// input nfc string. + /// the id if it was found it in the string otherwise null. public static string FilterPlaceIdinNFCResultString(string nfcResult) { string nfcResultTrim = nfcResult.Trim('{'); diff --git a/CampusAppWP8/CampusAppWPortalLib8/Utility/Logger.cs b/CampusAppWP8/CampusAppWPortalLib8/Utility/Logger.cs index f12400bc..b70453bf 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Utility/Logger.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Utility/Logger.cs @@ -1,32 +1,30 @@ -//-------------------------------------------------------------------- +//----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 03.05.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the logger class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Utility { using System; - /// - /// This Class creates logs for the app - /// + /// This Class creates logs for the app. + /// Stubbfel, 15.10.2013. public class Logger { - /// - /// Method log a Exception - /// - /// exception which has to log + /// Method log a Exception. + /// Stubbfel, 15.10.2013. + /// exception which has to log. public static void LogException(Exception exception) { // Console.WriteLine(exception); } - /// - /// Log a message. - /// - /// to be logged message + /// Log a message. + /// Stubbfel, 15.10.2013. + /// to be logged message. public static void LogMsg(string msg) { // Console.WriteLine(msg); diff --git a/CampusAppWP8/CampusAppWPortalLib8/Utility/XmlManager.cs b/CampusAppWP8/CampusAppWPortalLib8/Utility/XmlManager.cs index 95a622de..60e67935 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Utility/XmlManager.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Utility/XmlManager.cs @@ -1,28 +1,27 @@ //----------------------------------------------------------------------- // -// Company copyright tag. +// The MIT License (MIT). Copyright (c) 2013 BTU/IIT. // -// stubbfel -// 18.06.2013 -//---------------------------------------------------------------------- +// Stubbfel +// 15.10.2013 +// Implements the XML manager class +//----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Utility { using System.IO; using System.Xml.Linq; using System.Xml.Serialization; - /// - /// Class provides some Xml-methods - /// + /// Class provides some Xml-methods. + /// Stubbfel, 15.10.2013. public class XmlManager { - /// - /// Method deserialization a string to a Model - /// - /// the model - /// the XmlString - /// name of the RootTag - /// return the deserialization of the model + /// Method deserialization a string to a Model. + /// Stubbfel, 15.10.2013. + /// the model. + /// the XmlString. + /// name of the RootTag. + /// return the deserialization of the model. public static T DeserializationToModel(string xmlString, string validRootName) { XmlSerializer serializer = new XmlSerializer(typeof(T)); @@ -38,11 +37,11 @@ namespace CampusAppWPortalLib8.Utility return model; } - /// Deserialization a xml file to a model. - /// Stubbfel, 20.08.2013. - /// Generic type parameter. - /// Path to the a XmlFile. - /// model of the XmlFile. + /// Deserialization a xml file to a model. + /// Stubbfel, 20.08.2013. + /// Generic type parameter. + /// Path to the a XmlFile. + /// model of the XmlFile. public static T DeserializationFileToModel(string xmlFilePath) { XmlSerializer serializer = new XmlSerializer(typeof(T)); @@ -51,12 +50,11 @@ namespace CampusAppWPortalLib8.Utility return model; } - /// - /// Method serializes a model to a string. - /// - /// type of the model - /// model object - /// serialized string + /// Method serializes a model to a string. + /// Stubbfel, 15.10.2013. + /// type of the model. + /// model object. + /// serialized string. public static string SerializationToString(T model) { string retValue = string.Empty;