Преглед изворни кода

PRS MOBILE - enhancement to Digital Forms viewing from Task

Nick-PRSDigital@bitbucket.org пре 2 година
родитељ
комит
54cf07b311

+ 98 - 7
prs.mobile/comal.timesheet.sln

@@ -177,30 +177,42 @@ Global
 		{0E153B89-280B-4485-9FD1-E055B8EDA078}.STATIC_ONLY NO_EXPRESSIONS|iPhone.Build.0 = Release|Any CPU
 		{0E153B89-280B-4485-9FD1-E055B8EDA078}.STATIC_ONLY NO_EXPRESSIONS|iPhoneSimulator.ActiveCfg = Release|Any CPU
 		{0E153B89-280B-4485-9FD1-E055B8EDA078}.STATIC_ONLY NO_EXPRESSIONS|iPhoneSimulator.Build.0 = Release|Any CPU
+		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
+		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhone
+		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.AppStore|iPhone.Build.0 = AppStore|iPhone
+		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhone
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.CodeAnalysis|Any CPU.ActiveCfg = Debug|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.CodeAnalysis|Any CPU.Build.0 = Debug|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.CodeAnalysis|iPhone.ActiveCfg = Release|iPhone
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.CodeAnalysis|iPhone.Build.0 = Release|iPhone
+		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.CodeAnalysis|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Debug|Any CPU.ActiveCfg = Debug|iPhone
+		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Debug|Any CPU.Build.0 = Debug|iPhone
+		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Debug|Any CPU.Deploy.0 = Debug|iPhone
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Debug|iPhone.ActiveCfg = Debug|iPhone
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Debug|iPhone.Build.0 = Debug|iPhone
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Debug|iPhoneSimulator.Deploy.0 = Debug|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Instrument|Any CPU.ActiveCfg = Debug|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Instrument|Any CPU.Build.0 = Debug|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Instrument|iPhone.ActiveCfg = Release|iPhone
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Instrument|iPhone.Build.0 = Release|iPhone
+		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Instrument|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.MonoTouch|Any CPU.ActiveCfg = Debug|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.MonoTouch|Any CPU.Build.0 = Debug|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.MonoTouch|iPhone.ActiveCfg = Release|iPhone
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.MonoTouch|iPhone.Build.0 = Release|iPhone
+		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.MonoTouch|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.PerformanceTest|Any CPU.ActiveCfg = Debug|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.PerformanceTest|Any CPU.Build.0 = Debug|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.PerformanceTest|iPhone.ActiveCfg = Release|iPhone
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.PerformanceTest|iPhone.Build.0 = Release|iPhone
+		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.PerformanceTest|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Release|Any CPU.Build.0 = Release|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Release|iPhone.ActiveCfg = Release|iPhone
@@ -211,10 +223,89 @@ Global
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.STATIC_ONLY NO_EXPRESSIONS|Any CPU.Build.0 = Debug|iPhoneSimulator
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.STATIC_ONLY NO_EXPRESSIONS|iPhone.ActiveCfg = Release|iPhone
 		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.STATIC_ONLY NO_EXPRESSIONS|iPhone.Build.0 = Release|iPhone
-		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Debug|Any CPU.ActiveCfg = Debug|iPhone
-		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Debug|Any CPU.Build.0 = Debug|iPhone
-		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Debug|Any CPU.Deploy.0 = Debug|iPhone
-		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.Debug|iPhoneSimulator.Deploy.0 = Debug|iPhoneSimulator
+		{C94220A8-3034-4CC7-B13D-8551DAACE4C6}.STATIC_ONLY NO_EXPRESSIONS|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.CodeAnalysis|Any CPU.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.CodeAnalysis|iPhone.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.CodeAnalysis|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.Instrument|Any CPU.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.Instrument|iPhone.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.Instrument|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.MonoTouch|Any CPU.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.MonoTouch|iPhone.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.MonoTouch|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.PerformanceTest|Any CPU.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.PerformanceTest|iPhone.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.PerformanceTest|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.Release|iPhone.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.STATIC_ONLY NO_EXPRESSIONS|Any CPU.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.STATIC_ONLY NO_EXPRESSIONS|iPhone.ActiveCfg = Release|Any CPU
+		{DFE1F0D0-3362-4E88-A723-ADA5A3F0CFF8}.STATIC_ONLY NO_EXPRESSIONS|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.CodeAnalysis|Any CPU.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.CodeAnalysis|iPhone.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.CodeAnalysis|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.Instrument|Any CPU.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.Instrument|iPhone.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.Instrument|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.MonoTouch|Any CPU.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.MonoTouch|iPhone.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.MonoTouch|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.PerformanceTest|Any CPU.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.PerformanceTest|iPhone.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.PerformanceTest|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.Release|iPhone.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.STATIC_ONLY NO_EXPRESSIONS|Any CPU.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.STATIC_ONLY NO_EXPRESSIONS|iPhone.ActiveCfg = Release|Any CPU
+		{B9411B74-F425-4044-986B-773F85FC1985}.STATIC_ONLY NO_EXPRESSIONS|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.CodeAnalysis|Any CPU.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.CodeAnalysis|iPhone.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.CodeAnalysis|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.Instrument|Any CPU.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.Instrument|iPhone.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.Instrument|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.MonoTouch|Any CPU.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.MonoTouch|iPhone.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.MonoTouch|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.PerformanceTest|Any CPU.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.PerformanceTest|iPhone.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.PerformanceTest|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.Release|Any CPU.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.Release|iPhone.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.Release|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.STATIC_ONLY NO_EXPRESSIONS|Any CPU.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.STATIC_ONLY NO_EXPRESSIONS|iPhone.ActiveCfg = Debug|Any CPU
+		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.STATIC_ONLY NO_EXPRESSIONS|iPhoneSimulator.ActiveCfg = Debug|Any CPU
 		{DAC39203-29E5-4730-AF8F-8119DE28BDFC}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
 		{DAC39203-29E5-4730-AF8F-8119DE28BDFC}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
 		{DAC39203-29E5-4730-AF8F-8119DE28BDFC}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
@@ -246,6 +337,7 @@ Global
 		{DAC39203-29E5-4730-AF8F-8119DE28BDFC}.Debug|iPhone.Build.0 = Debug|Any CPU
 		{DAC39203-29E5-4730-AF8F-8119DE28BDFC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
 		{DAC39203-29E5-4730-AF8F-8119DE28BDFC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+		{DAC39203-29E5-4730-AF8F-8119DE28BDFC}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
 		{DAC39203-29E5-4730-AF8F-8119DE28BDFC}.Instrument|Any CPU.ActiveCfg = Debug|Any CPU
 		{DAC39203-29E5-4730-AF8F-8119DE28BDFC}.Instrument|Any CPU.Build.0 = Debug|Any CPU
 		{DAC39203-29E5-4730-AF8F-8119DE28BDFC}.Instrument|iPhone.ActiveCfg = Release|Any CPU
@@ -285,7 +377,6 @@ Global
 		{DAC39203-29E5-4730-AF8F-8119DE28BDFC}.STATIC_ONLY NO_EXPRESSIONS|iPhoneSimulator.ActiveCfg = Release|Any CPU
 		{DAC39203-29E5-4730-AF8F-8119DE28BDFC}.STATIC_ONLY NO_EXPRESSIONS|iPhoneSimulator.Build.0 = Release|Any CPU
 		{DAC39203-29E5-4730-AF8F-8119DE28BDFC}.STATIC_ONLY NO_EXPRESSIONS|iPhoneSimulator.Deploy.0 = Release|Any CPU
-		{DAC39203-29E5-4730-AF8F-8119DE28BDFC}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
 		{6E02A9D5-8DFB-48E6-A585-632AF0B1B5D9}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
 		{6E02A9D5-8DFB-48E6-A585-632AF0B1B5D9}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
 		{6E02A9D5-8DFB-48E6-A585-632AF0B1B5D9}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
@@ -610,8 +701,6 @@ Global
 		{63845795-416F-4848-9DC1-63E992803D29}.STATIC_ONLY NO_EXPRESSIONS|iPhone.Build.0 = Debug|Any CPU
 		{63845795-416F-4848-9DC1-63E992803D29}.STATIC_ONLY NO_EXPRESSIONS|iPhoneSimulator.ActiveCfg = Debug|Any CPU
 		{63845795-416F-4848-9DC1-63E992803D29}.STATIC_ONLY NO_EXPRESSIONS|iPhoneSimulator.Build.0 = Debug|Any CPU
-		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{803042CA-E67E-44E6-B73C-244AE5BB2A09}.Debug|Any CPU.Build.0 = Debug|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -622,7 +711,9 @@ Global
 	GlobalSection(SharedMSBuildProjectFiles) = preSolution
 		..\..\InABox\InABox.Mobile\Android\InABox.Mobile.Android.projitems*{058c4717-24f4-4408-a02f-bc72adf504c0}*SharedItemsImports = 13
 		..\..\InABox\inabox.client.remote.shared\InABox.Client.Remote.Shared.projitems*{67b6cae5-188b-42a0-ae5d-0e5c6049a910}*SharedItemsImports = 5
+		..\..\inabox\InABox.Remote.Shared\InABox.Remote.Shared.projitems*{67b6cae5-188b-42a0-ae5d-0e5c6049a910}*SharedItemsImports = 5
 		..\..\InABox\inabox.client.remote.shared\InABox.Client.Remote.Shared.projitems*{803042ca-e67e-44e6-b73c-244ae5bb2a09}*SharedItemsImports = 13
+		..\..\inabox\InABox.Remote.Shared\InABox.Remote.Shared.projitems*{803042ca-e67e-44e6-b73c-244ae5bb2a09}*SharedItemsImports = 13
 		comal.timesheets\comal.timesheets.projitems*{8ead5e7e-80a9-4af5-9a67-4c31db899cad}*SharedItemsImports = 13
 		..\..\InABox\InABox.Mobile\iOS\InABox.Mobile.iOS.projitems*{b9411b74-f425-4044-986b-773f85fc1985}*SharedItemsImports = 13
 		..\..\InABox\inabox.client.remote.shared\InABox.Client.Remote.Shared.projitems*{c94220a8-3034-4cc7-b13d-8551daace4c6}*SharedItemsImports = 4

+ 1 - 2
prs.mobile/comal.timesheets.Android/Resources/Resource.designer.cs

@@ -2,7 +2,6 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.42000
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -15,7 +14,7 @@ namespace comal.timesheets.Droid
 {
 	
 	
-	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "13.2.0.93")]
+	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "13.0.0.73")]
 	public partial class Resource
 	{
 		

+ 6 - 3
prs.mobile/comal.timesheets/CustomControls/Pages/ListSelectionPage.xaml.cs

@@ -24,17 +24,19 @@ namespace comal.timesheets
         public event ListSelectionDictionaryItemTapped OnDictionaryItemTapped;
         Dictionary<Guid, string> IDValues = new Dictionary<Guid, string>();
         bool Multiselect = false;
-        public ListSelectionPage(List<string> values)
+        public ListSelectionPage(List<string> values, string title = "Select")
         {
             InitializeComponent();
             Values = values;
+            Title = title;
             Load();
         }
 
-        public ListSelectionPage(Dictionary<string, Guid> valueImageIDs)
+        public ListSelectionPage(Dictionary<string, Guid> valueImageIDs, string title = "Select")
         {
             InitializeComponent();
             Values = valueImageIDs.Keys.ToList();
+            Title = title;
             StringImageIDs = valueImageIDs;
             List<Guid> ids = StringImageIDs.Values.ToList();
             Filter<Document> filter = new Filter<Document>(x => x.ID).IsEqualTo(ids[0]);
@@ -45,10 +47,11 @@ namespace comal.timesheets
             Load(filter);
         }
 
-        public ListSelectionPage(Dictionary<Guid, string> idValues)
+        public ListSelectionPage(Dictionary<Guid, string> idValues, string title = "Select")
         {
             InitializeComponent();
             IDValues = idValues;
+            Title = title;
             Values = idValues.Values.ToList();
             Load(IDValues);
         }

+ 22 - 74
prs.mobile/comal.timesheets/CustomControls/Pages/PDFList.xaml.cs

@@ -50,15 +50,6 @@ namespace comal.timesheets
             LoadScreen(fileNameIDs);
         }
 
-        //Loading from site module
-        public PDFList(Guid jobID)
-        {
-            InitializeComponent();
-            NavigationPage.SetHasBackButton(this, false);
-            DeviceIdiom = DeviceInfo.Idiom;
-            LoadMileStones(jobID);
-        }
-
         //standard load
         private void LoadScreen(Dictionary<string, Guid> fileNameIDs)
         {
@@ -73,69 +64,6 @@ namespace comal.timesheets
             pdfListView.ItemsSource = pDFShells;
         }
 
-        //load from site module
-        private async void LoadMileStones(Guid jobID)
-        {
-            using (await MaterialDialog.Instance.LoadingDialogAsync(message: "Loading"))
-            {
-                CoreTable table = new Client<JobDocumentSetMileStone>().Query(
-                    new Filter<JobDocumentSetMileStone>(x => x.DocumentSet.Job.ID).IsEqualTo(jobID)
-                    .And(x => x.Status).IsEqualTo(JobDocumentSetMileStoneStatus.Submitted)
-                    .And(x => x.Type.SiteVisible).IsEqualTo(true),
-                        new Columns<JobDocumentSetMileStone>(
-                            x => x.ID, //0
-                            x => x.Type.Description,  //1
-                            x => x.Submitted,  //2
-                            x => x.Employee.Name //3
-                            ));
-                foreach (CoreRow row in table.Rows)
-                {
-                    LoadFilesForMileStone(row);
-                }
-                pdfListView.ItemsSource = pDFShells;
-            }
-        }
-
-        private void LoadFilesForMileStone(CoreRow row)
-        {
-            List<object> list = row.Values;
-            if (list[0] == null) list[0] = Guid.Empty;  //0
-            if (list[1] == null) list[1] = ""; //1
-            if (list[2] == null) list[2] = DateTime.MinValue; //2
-            if (list[3] == null) list[3] = ""; //3
-
-            Guid id = Guid.Parse(list[0].ToString());
-            string type = list[1].ToString();
-            string date = DateTime.Parse(list[2].ToString()).ToString("dd MMM yy");
-            string empName = list[3].ToString();
-            string fileDetails = "Issued: " + date + Environment.NewLine + "By " + empName;
-
-            CoreTable fileTable = new Client<JobDocumentSetMileStoneFile>().Query
-                (
-                new Filter<JobDocumentSetMileStoneFile>(x => x.EntityLink.ID).IsEqualTo(id),
-                new Columns<JobDocumentSetMileStoneFile>(x => x.DocumentLink.ID, x => x.Thumbnail, x => x.DocumentLink.FileName)
-                );
-            foreach (CoreRow fileTableRow in fileTable.Rows)
-            {
-                List<object> fileTableList = fileTableRow.Values;
-                DocShell shell = new DocShell();
-                shell.FirstRowHeight = 30;
-                shell.Type = type;
-                shell.FileName = fileTableRow.Values[2].ToString();
-                shell.DocID = Guid.Parse(fileTableRow.Values[0].ToString());                
-                shell.FileDetails = shell.FileName + Environment.NewLine + fileDetails;
-                if (fileTableRow.Values[1] != null)
-                {
-                    shell.ThumbNail = fileTableRow.Get<byte[]>("Thumbnail");
-                    shell = AssignThumbnail(shell);
-                }
-                else
-                    shell = AssignIcon(shell);
-
-                pDFShells.Add(shell);
-            }
-        }
-
         private DocShell AssignThumbnail(DocShell shell)
         {
             shell.ImageRow = 0;
@@ -297,8 +225,13 @@ namespace comal.timesheets
             shell.FileName = shell.FileName.ToLower();
             if (shell.FileName.EndsWith("pdf"))
             {
-                PDFViewer viewer = new PDFViewer(shell.DocID, bAllowPrintShare);
-                Navigation.PushAsync(viewer);
+                if (Device.RuntimePlatform.Equals(Device.Android) && Security.IsAllowed<CanOpenMobileNativePDFViewer>())
+                    OpenNativeViewer(shell);
+                else
+                {
+                    PDFViewer viewer = new PDFViewer(shell.DocID, bAllowPrintShare);
+                    Navigation.PushAsync(viewer);
+                }
             }
             else if (shell.FileName.EndsWith("docx") || shell.FileName.EndsWith("doc"))
             {
@@ -319,6 +252,21 @@ namespace comal.timesheets
             }
         }
 
+        private async void OpenNativeViewer(DocShell shell)
+        {
+            CoreTable table = new Client<Document>().Query(new Filter<Document>(x => x.ID).IsEqualTo(shell.DocID));
+            Document doc = table.Rows.First().ToObject<Document>();
+
+            var filePath = Path.Combine(FileSystem.AppDataDirectory, doc.FileName);
+
+            File.WriteAllBytes(filePath, doc.Data);
+
+            await Launcher.OpenAsync(new OpenFileRequest
+            {
+                File = new ReadOnlyFile(filePath)
+            });
+        }
+
         void SearchEnt_Changed(object sender, EventArgs e)
         {
             pdfListView.ItemsSource = pDFShells.Where(x =>

+ 16 - 1
prs.mobile/comal.timesheets/CustomControls/Pages/PDFViewer.xaml.cs

@@ -80,7 +80,10 @@ namespace comal.timesheets
                         if (doc.FileName.EndsWith("pdf") || doc.FileName.EndsWith("pdf") || doc.FileName.EndsWith("pdf"))
                         {
                             byte[] data = table2.Rows.First().Get<Document, byte[]>(x => x.Data);
-                            ShowPDF(data);
+                            if (Device.RuntimePlatform.Equals(Device.Android) && Security.IsAllowed<CanOpenMobileNativePDFViewer>())
+                                OpenNativeViewer(doc.FileName, data);
+                            else
+                                ShowPDF(data);
                         }
                         else
                         {
@@ -95,6 +98,18 @@ namespace comal.timesheets
             }
             catch { }
         }
+        private async void OpenNativeViewer(string filename, byte[] data)
+        {
+            var filePath = Path.Combine(FileSystem.AppDataDirectory, filename);
+
+            File.WriteAllBytes(filePath, data);
+
+            await Launcher.OpenAsync(new OpenFileRequest
+            {
+                File = new ReadOnlyFile(filePath)
+            });
+        }
+
 
         void ShowPDF(byte[] data)
         {

+ 64 - 43
prs.mobile/comal.timesheets/Tasks/AddEditTask.xaml.cs

@@ -178,6 +178,7 @@ namespace comal.timesheets.Tasks
                             x => x.BlobData,
                             x => x.FormCompleted,
                             x => x.FormCompletedBy.ID,
+                            x => x.FormCompletedBy.UserID,
                             x => x.FormOpen,
                             x => x.FormStarted
                             ),
@@ -308,7 +309,7 @@ namespace comal.timesheets.Tasks
             if (privateCheckBox.IsChecked)
             {
                 Employee employee = new Employee();
-                var table = new Client<Employee>().Query(new Filter<Employee>(x => x.UserID).IsEqualTo(ClientFactory.UserGuid));
+                var table = new Client<Employee>().Query(new Filter<Employee>(x => x.UserLink.ID).IsEqualTo(ClientFactory.UserGuid));
                 foreach (CoreRow row in table.Rows)
                 {
                     employee = row.ToObject<Employee>();
@@ -753,17 +754,17 @@ namespace comal.timesheets.Tasks
                 }
                 else if (kanbanFormList.Count > 0)
                 {
-                    chosenOptionOne = await DisplayActionSheet("Choose An Option", "Cancel", null, "Add Form to Task", "View Completed Form (s)");
+                    chosenOptionOne = await DisplayActionSheet("Choose An Option", "Cancel", null, "Add Form to Task", "View Form(s)");
                 }
                 switch (chosenOptionOne)
                 {
                     case "Cancel":
                         return;
                     case "Add Form to Task":
-                         DigitalFormsPicker digitalFormPicker = new DigitalFormsPicker(kanban);
+                        DigitalFormsPicker digitalFormPicker = new DigitalFormsPicker(kanban);
                         Navigation.PushAsync(digitalFormPicker);
                         break;
-                    case "View Completed Form (s)":
+                    case "View Form(s)":
                         ChooseForm();
                         break;
                     default: break;
@@ -774,47 +775,67 @@ namespace comal.timesheets.Tasks
 
         private async void ChooseForm()
         {
-            try
+            ListSelectionPage page = new ListSelectionPage(CreatePairs(), "Forms");
+
+            page.OnDictionaryItemTapped += (id, value) => { LaunchForm(id); };
+
+            Navigation.PushAsync(page);
+        }
+
+        private Dictionary<Guid, string> CreatePairs()
+        {
+            Dictionary<Guid, string> pairs = new Dictionary<Guid, string>();
+            foreach (KanbanForm kanbanForm in kanbanFormList)
             {
-                string chosenOption = "";
-                List<string> formDescriptions = new List<string>();
-                Dictionary<KanbanForm, string> pairs = new Dictionary<KanbanForm, string>();
-                foreach (KanbanForm kanbanForm in kanbanFormList)
-                {
-                    string formDescription = kanbanForm.Form.Description + " Created " + kanbanForm.Created.ToString("hh:mm:ss tt - dd MMM yy");
-                    formDescriptions.Add(formDescription);
-                    pairs.Add(kanbanForm, formDescription);
-                }
-                string[] array = pairs.Values.ToArray();
-                chosenOption = await DisplayActionSheet("Choose An Option", "Cancel", null, array);
-                if (!string.IsNullOrEmpty(chosenOption))
-                {
-                    if (chosenOption != "Cancel")
-                    {
-                        KanbanForm form = pairs.FirstOrDefault(x => x.Value == chosenOption).Key;
-                        CoreTable table = new Client<DigitalFormLayout>().Query(
-                             new Filter<DigitalFormLayout>(x => x.Type).IsEqualTo(DFLayoutType.Mobile).And(x => x.Active).IsEqualTo(true).And(x => x.Form.Description).IsEqualTo(form.Form.Description),
-                             new Columns<DigitalFormLayout>(x => x.Description, x => x.ID, x => x.Code, x => x.Form.AppliesTo, x => x.Form.ID, x => x.Layout),
-                             new SortOrder<DigitalFormLayout>(x => x.Description)
-                            );
-                        CoreRow row = table.Rows.FirstOrDefault();
-                        DigitalFormLayout layout = row.ToObject<DigitalFormLayout>();
-                        DigitalFormHost host = new DigitalFormHost(
-                            DigitalFormsHelper.LoadModel(
-                                layout, typeof(KanbanForm), kanban, Guid.Empty,
-                                new ExistingFormShell 
-                                { 
-                                    ID = form.ID,
-                                    ParentID = kanban.ID,
-                                    Type = typeof(KanbanForm),
-                                    FormID = form.ID,
-                                }
-                                ));
-                        Navigation.PushAsync(host);
-                    }
-                }
+                string formDescription = CreateDescription(kanbanForm);
+                pairs.Add(kanbanForm.ID, formDescription);
+            }
+            return pairs;
+        }
+
+        private string CreateDescription(KanbanForm kanbanForm)
+        {
+            string formDescription = kanbanForm.Form.Description;
+            if (kanbanForm.FormCompleted != DateTime.MinValue)
+                formDescription = formDescription
+                    + " (Completed: "
+                    + kanbanForm.FormCompleted.ToString("hh:mm - dd MMM yy")
+                    + " by "
+                    + kanbanForm.FormCompletedBy.UserID
+                    + ")";
+            else
+                formDescription = formDescription
+                    + " (Created: "
+                    + kanbanForm.Created.ToString("hh:mm - dd MMM yy")
+                    + ")";
+            return formDescription;
+        }
+
+        private async void LaunchForm(Guid id)
+        {
+            KanbanForm form = kanbanFormList.FirstOrDefault(x => x.ID == id);
+            CoreTable table = new Client<DigitalFormLayout>().Query(
+                 new Filter<DigitalFormLayout>(x => x.Type).IsEqualTo(DFLayoutType.Mobile).And(x => x.Active).IsEqualTo(true).And(x => x.Form.Description).IsEqualTo(form.Form.Description),
+                 new Columns<DigitalFormLayout>(x => x.Description, x => x.ID, x => x.Code, x => x.Form.AppliesTo, x => x.Form.ID, x => x.Layout),
+                 new SortOrder<DigitalFormLayout>(x => x.Description)
+                );
+            CoreRow row = table.Rows.FirstOrDefault();
+            DigitalFormLayout layout = row.ToObject<DigitalFormLayout>();
+            using (await MaterialDialog.Instance.LoadingDialogAsync(message: "Loading"))
+            {
+                DigitalFormHost host = new DigitalFormHost(
+                    DigitalFormsHelper.LoadModel(
+                        layout, typeof(KanbanForm), kanban, Guid.Empty,
+                        new ExistingFormShell
+                        {
+                            ID = form.ID,
+                            ParentID = kanban.ID,
+                            Type = typeof(KanbanForm),
+                            FormID = form.ID,
+                        }
+                        ));
+                Navigation.PushAsync(host);
             }
-            catch { }
         }
 
         #endregion