<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Intersoft Solutions Corporate Blog &#187; Reference Samples</title>
	<atom:link href="http://blog.intersoftsolutions.com/category/reference-samples/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.intersoftsolutions.com</link>
	<description>All about development productivity – ASP.NET, Silverlight, WPF, iOS, Android, Windows Phone, Windows 8</description>
	<lastBuildDate>Sat, 21 Apr 2018 06:57:13 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.33</generator>
	<item>
		<title>Redesigning Xamarin Field Service Sample with Crosslight &#8211; Part 2</title>
		<link>http://blog.intersoftsolutions.com/2016/04/redesigning-xamarin-field-service-sample-with-crosslight-part-2/</link>
		<comments>http://blog.intersoftsolutions.com/2016/04/redesigning-xamarin-field-service-sample-with-crosslight-part-2/#comments</comments>
		<pubDate>Fri, 08 Apr 2016 04:03:36 +0000</pubDate>
		<dc:creator><![CDATA[Nicholas Lie]]></dc:creator>
				<category><![CDATA[2016 R1]]></category>
		<category><![CDATA[Crosslight]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Reference Samples]]></category>
		<category><![CDATA[Crosslight 5]]></category>
		<category><![CDATA[Samples]]></category>

		<guid isPermaLink="false">http://blog.intersoftsolutions.com/?p=7614</guid>
		<description><![CDATA[Back in November 2015 I wrote a blog post on Redesigning Xamarin Field Service Sample &#8211; Part 1. Well, in that post I&#8217;ve discussed various design quirks and what improvements can be made to made the overall Xamarin Field Service sample better. First of all, we&#8217;re glad to receive many [...]]]></description>
				<content:encoded><![CDATA[<img width="604" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/assignment-detail1-604x270.png" class="attachment-post-thumbnail wp-post-image" alt="assignment-detail" style="float:right; margin:0 0 10px 10px;" /><p>Back in November 2015 I wrote a blog post on <a href="http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/" target="_blank">Redesigning Xamarin Field Service Sample &#8211; Part 1</a>. Well, in that post I&#8217;ve discussed various design quirks and what improvements can be made to made the overall <a href="https://blog.xamarin.com/the-xamarin-field-service-app-a-cross-platform-starter-kit/" target="_blank">Xamarin Field Service</a> sample better. First of all, we&#8217;re glad to receive many positive responses towards that post and very happy to see many Crosslight developers are taking UI and UX very seriously in designing their cross-platform apps.</p>
<p>Many of you have asked when will the blogpost see the light of day. Well, now it is. We&#8217;re very excited to announce that the sample is now available for you guys to check out and experiment for yourself. It is available here: <a href="http://git.intersoftsolutions.com/projects/CS/repos/app-fieldservice/browse" target="_blank">http://git.intersoftsolutions.com/projects/CS/repos/app-fieldservice/browse</a>. Before I can delve into the technical aspects of this sample, in this second part of the post, I would like to re-highlight what we&#8217;ve promised in the first post and see it in action, in the form of shots and videos, with codes if possible. We tried to retain the business logic as much as we can to adhere to the original sample.</p>
<h1>Better Device Compatibility</h1>
<p>When you try to run the original sample, you won&#8217;t be able to run the sample on phone devices, which is kind of disappointing. But not with Crosslight. You can definitely deploy the sample on phones and tablet devices.</p>
<p><img class="alignnone size-full wp-image-7634" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/device-compatibility.png" alt="device-compatibility.png" width="1790" height="768" /></p>
<p>With this, you can easily target more devices as phone devices are greater in number when compared to tablets. One note: we&#8217;re discarding Windows-based platforms for now due to low market receptivity. Once it has gained more traction amongst cross-platform mobile developers, we&#8217;ll definitely revive the Windows lineup.</p>
<h1>The Login Screen</h1>
<p>First, let&#8217;s take a look at the original sample login screen experience.</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='604' height='370' src='http://www.youtube.com/embed/FZr02qsNqHU?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0' allowfullscreen='true'></iframe></span></p>
<p>One thing&#8217;s for sure: I can&#8217;t definitely use this screen on landscape orientation. When I try to focus on the username text box, the login box just flies away from the screen up to the point I can&#8217;t see where the text box is and input my username. You can still use this screen on portrait orientation though. Which is weird. Let&#8217;s take a look at Crosslight&#8217;s login screen.</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='604' height='370' src='http://www.youtube.com/embed/qMsxGoHeo4Y?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0' allowfullscreen='true'></iframe></span></p>
<p>No matter how you rotate it, it works consistently on both portrait and landscape orientation, on phones as well.</p>
<p>&nbsp;</p>
<p><img class="alignnone size-full wp-image-7707" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/android-login.png" alt="android-login.png" width="2000" height="716" /></p>
<p>&nbsp;</p>
<h1>The Assignment List Screen</h1>
<p>The assignment screen is pretty much the same, except for a few changes:</p>
<p><img class="alignnone size-full wp-image-7714" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/assignment-list.png" alt="assignment-list.png" width="2000" height="992" /></p>
<ol>
<li>We don&#8217;t feel that the &#8220;sticky&#8221; header feels common in modern mobile apps, therefore we opted for &#8220;grouped&#8221; assignments instead. Sticky headers tend to take too much space, obstructing the user&#8217;s view and may cause confusion. Active assignments are put on the top of the list, followed by Completed assignments and Pending assignments. On iOS, you can easily tap the status bar to get to the topmost part of the TableView (this is the default behavior of the TableView) to see the Active Assignment quickly.</li>
<li>We removed the the button click behavior from the &#8220;assignment status&#8221;. Instead, we opted for swipe gesture, as this is more commonly used in mobile apps. If the assignment is On Hold, you can only see Active and Complete as options (as shown in the shot above). It feels counter-intuitive to have two clickable UI elements inside an assignment. The user might wonder if there&#8217;s any additional UI elements that can be clicked in addition to the &#8220;Play&#8221; button.</li>
<li>Also notice that you can&#8217;t perform the swipe gesture if the assignment isn&#8217;t accepted yet, or is currently the running assignment. The secret lies in the <strong>AssignmentListViewModel.cs</strong> inside <strong>FieldService.Core/ViewModels</strong> folder.<span style="font-family: Menlo;"> <span style="font-style: italic; color: #888888;">///</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">&lt;</span><span style="font-style: italic; color: #888888;">summary</span><span style="font-style: italic; color: #888888;">&gt;</span><br />
<span style="font-style: italic; color: #888888;">///</span><span style="font-style: italic; color: #888888;"> Determines whether the edit command can be executed.</span><br />
<span style="font-style: italic; color: #888888;">///</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">&lt;</span><span style="font-style: italic; color: #888888;">/</span><span style="font-style: italic; color: #888888;">summary</span><span style="font-style: italic; color: #888888;">&gt;</span><br />
<span style="font-style: italic; color: #888888;">///</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">&lt;</span><span style="font-style: italic; color: #888888;">remarks</span><span style="font-style: italic; color: #888888;">&gt;</span><span style="font-style: italic; color: #888888;">&gt;</span><br />
<span style="font-style: italic; color: #888888;">///</span><span style="font-style: italic; color: #888888;"> Allow users to perform swipe actions only when:</span><br />
<span style="font-style: italic; color: #888888;">///</span><span style="font-style: italic; color: #888888;"> 1. The item status is Active or Pending</span><br />
<span style="font-style: italic; color: #888888;">///</span><span style="font-style: italic; color: #888888;"> 2. The active assignment is not currently running.</span><br />
<span style="font-style: italic; color: #888888;">///</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">&lt;</span><span style="font-style: italic; color: #888888;">/</span><span style="font-style: italic; color: #888888;">remarks</span><span style="font-style: italic; color: #888888;">&gt;</span><br />
<span style="color: #009695;">protected</span><span style="color: #333333;"> </span><span style="color: #009695;">override</span><span style="color: #333333;"> </span><span style="color: #009695;">bool</span><span style="color: #333333;"> </span><span style="color: #333333;">CanExecuteEdit</span><span style="color: #333333;">(</span><span style="color: #009695;">object</span><span style="color: #333333;"> </span><span style="color: #333333;">parameter</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">if</span><span style="color: #333333;"> </span><span style="color: #333333;">(</span><span style="color: #333333;">parameter</span><span style="color: #333333;"> </span><span style="color: #009695;">is</span><span style="color: #333333;"> </span><span style="color: #3364a4;">EditingParameter</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">        </span><span style="color: #3364a4;">EditingParameter</span><span style="color: #333333;"> </span><span style="color: #333333;">editingParameter</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #333333;">parameter</span><span style="color: #333333;"> </span><span style="color: #009695;">as</span><span style="color: #333333;"> </span><span style="color: #3364a4;">EditingParameter</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">if</span><span style="color: #333333;"> </span><span style="color: #333333;">(</span><span style="color: #333333;">editingParameter</span><span style="color: #333333;">.</span><span style="color: #333333;">Item</span><span style="color: #333333;"> </span><span style="color: #009695;">is</span><span style="color: #333333;"> </span><span style="color: #3364a4;">Assignment</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">            </span><span style="color: #3364a4;">Assignment</span><span style="color: #333333;"> </span><span style="color: #333333;">item</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #333333;">editingParameter</span><span style="color: #333333;">.</span><span style="color: #333333;">Item</span><span style="color: #333333;"> </span><span style="color: #009695;">as</span><span style="color: #333333;"> </span><span style="color: #3364a4;">Assignment</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">            </span><span style="color: #009695;">if</span><span style="color: #333333;"> </span><span style="color: #333333;">(</span><span style="color: #333333;">item</span><span style="color: #333333;"> </span><span style="color: #333333;">==</span><span style="color: #333333;"> </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">AssignmentViewModel</span><span style="color: #333333;">.</span><span style="color: #333333;">Item</span><span style="color: #333333;"> </span><span style="color: #333333;">&amp;&amp;</span><span style="color: #333333;"> </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">AssignmentViewModel</span><span style="color: #333333;">.</span><span style="color: #333333;">IsStarted</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">                </span><span style="color: #009695;">return</span><span style="color: #333333;"> </span><span style="color: #009695;">false</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">            </span><span style="color: #009695;">else</span><br />
<span style="color: #333333;">                </span><span style="color: #009695;">return</span><span style="color: #333333;"> </span><span style="color: #333333;">(</span><span style="color: #333333;">item</span><span style="color: #333333;">.</span><span style="color: #333333;">Status</span><span style="color: #333333;"> </span><span style="color: #333333;">==</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">Active</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;"> || </span><span style="color: #333333;">item</span><span style="color: #333333;">.</span><span style="color: #333333;">Status</span><span style="color: #333333;"> </span><span style="color: #333333;">==</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">Pending</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">}</span></span><span style="color: #333333;">    </span><span style="color: #009695;">return</span><span style="color: #333333;"> </span><span style="color: #009695;">false</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">}</span></li>
</ol>
<h1>The Assignment Detail Screen</h1>
<p>This is where things get pretty interesting.</p>
<p><img class="alignnone size-full wp-image-7748" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/assignment-detail.png" alt="assignment-detail.png" width="2000" height="649" /></p>
<p>&nbsp;</p>
<p>As promised, on tablets, we&#8217;ve used the new Dialog Presenter that will slide from the right hand side that will cover at least 3/4 of the screen. You can easily dismiss the detail by hitting the back button on Android or tapping on the area outside the dialog. On phones, normal push navigation is used. To use the Dialog Presenter on iPad, at the TabViewController&#8217;s constructor, simply use this code:</p>
<p><span style="font-family: Menlo;"> <span style="color: #009695;">public</span><span style="color: #333333;"> </span><span style="color: #3364a4;">AssignmentDetailTabViewController</span><span style="color: #333333;">()</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">var</span><span style="color: #333333;"> </span><span style="color: #333333;">isPad</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #3364a4;">UIDevice</span><span style="color: #333333;">.</span><span style="color: #333333;">CurrentDevice</span><span style="color: #333333;">.</span><span style="color: #333333;">UserInterfaceIdiom</span><span style="color: #333333;"> </span><span style="color: #333333;">==</span><span style="color: #333333;"> </span><span style="color: #3364a4;">UIUserInterfaceIdiom</span><span style="color: #333333;">.</span><span style="color: #333333;">Pad</span><span style="color: #333333;">;</span></span></p>
<p><span style="color: #333333;">    </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">ConfigurePresenter</span><span style="color: #333333;">(</span><span style="color: #333333;">o</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">o</span><span style="color: #333333;">.</span><span style="color: #333333;">PreferredContentSize</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">CGSize</span><span style="color: #333333;">(</span><span style="color: #f57d00;">640</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #f57d00;">768</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">o</span><span style="color: #333333;">.</span><span style="color: #333333;">PreferredContentSizeLandscape</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">CGSize</span><span style="color: #333333;">(</span><span style="color: #f57d00;">704</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #f57d00;">768</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">o</span><span style="color: #333333;">.</span><span style="color: #333333;">DismissOnTap</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">true</span><span style="color: #333333;">;</span></p>
<p><span style="color: #333333;">        </span><span style="color: #009695;">if</span><span style="color: #333333;"> </span><span style="color: #333333;">(</span><span style="color: #333333;">isPad</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">o</span><span style="color: #333333;">.</span><span style="color: #333333;">PresentationStyle</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #3364a4;">ContentPresentationStyle</span><span style="color: #333333;">.</span><span style="color: #333333;">Edge</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">o</span><span style="color: #333333;">.</span><span style="color: #333333;">EdgePresentationPosition</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #3364a4;">EdgePresentationPosition</span><span style="color: #333333;">.</span><span style="color: #333333;">Right</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">o</span><span style="color: #333333;">.</span><span style="color: #333333;">EntryTransition</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">SlideFromRightTransition</span><span style="color: #333333;">()</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">                FadeOutSource </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">false</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">}</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">o</span><span style="color: #333333;">.</span><span style="color: #333333;">ContentShadowRadius</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #f57d00;">10</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">})</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">}</span></p>
<p>And when navigating, you can do something similar as follows:</p>
<p><span style="font-family: Menlo;"> <span style="font-style: italic; color: #888888;">//</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">on</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">phone</span><span style="font-style: italic; color: #888888;">,</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">perform</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">standard</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">navigation</span><span style="font-style: italic; color: #888888;">,</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">while</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">on</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">tablet</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">show</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">the</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">dialog</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">presenter</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">for</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">better</span><span style="font-style: italic; color: #888888;"> experience</span><br />
<span style="color: #009695;">if</span><span style="color: #333333;"> </span><span style="color: #333333;">(</span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">GetService</span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">IApplicationService</span><span style="color: #333333;">&gt;()</span><span style="color: #333333;">.</span><span style="color: #333333;">GetContext</span><span style="color: #333333;">()</span><span style="color: #333333;">.</span><span style="color: #333333;">Device</span><span style="color: #333333;">.</span><span style="color: #333333;">Kind</span><span style="color: #333333;"> </span><span style="color: #333333;">==</span><span style="color: #333333;"> </span><span style="color: #3364a4;">DeviceKind</span><span style="color: #333333;">.</span><span style="color: #333333;">Phone</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">ActiveViewModel</span><span style="color: #333333;">.</span><span style="color: #333333;">NavigationService</span><span style="color: #333333;">.</span><span style="color: #333333;">Navigate</span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">AssignmentDetailTabViewModel</span><span style="color: #333333;">&gt;(</span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">NavigationParameter</span><span style="color: #333333;">(</span><span style="color: #333333;">parameter</span><span style="color: #333333;">))</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">}</span><br />
<span style="color: #009695;">else</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">ActiveViewModel</span><span style="color: #333333;">.</span><span style="color: #333333;">DialogPresenter</span><span style="color: #333333;">.</span><span style="color: #333333;">ShowAsync</span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">AssignmentDetailTabViewModel</span><span style="color: #333333;">&gt;(</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">NavigationParameter</span><span style="color: #333333;">(</span><span style="color: #333333;">parameter</span><span style="color: #333333;">)</span><span style="color: #333333;">,</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">DialogOptions</span><span style="color: #333333;">()</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">        HideButtons </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">true</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">})</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">}</span></span></p>
<p>You can see more detail on that inside the <strong>FieldService.Core/ViewModels/AssignmentViewModel.cs</strong> file.</p>
<p><strong>Special and very important note for iOS</strong>: When using the TabViewController after push navigation, you must hide the root navigation controller in order for many correct UX to work properly, for example, the navigation controller transitions, search bar controller, and much more. This needs to be done because the TabViewController has its own NavigationController. It is simply done by calling the following code in the <strong>AssignmentDetailTabViewController</strong>.</p>
<p><span style="font-family: Menlo;"> <span style="color: #009695;">protected</span><span style="color: #333333;"> </span><span style="color: #009695;">override</span><span style="color: #333333;"> </span><span style="color: #009695;">bool</span><span style="color: #333333;"> </span><span style="color: #333333;">EnsureNavigationContext</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">get</span><span style="color: #333333;"> </span><span style="color: #333333;">{</span><span style="color: #333333;"> </span><span style="color: #009695;">return</span><span style="color: #333333;"> </span><span style="color: #009695;">true</span><span style="color: #333333;">;</span><span style="color: #333333;"> </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">}</span></span></p>
<p><span style="font-family: Menlo;"><span style="color: #009695;">protected</span><span style="color: #333333;"> </span><span style="color: #009695;">override</span><span style="color: #333333;"> </span><span style="color: #009695;">void</span><span style="color: #333333;"> </span><span style="color: #333333;">InitializeView</span><span style="color: #333333;">()</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">base</span><span style="color: #333333;">.</span><span style="color: #333333;">InitializeView</span><span style="color: #333333;">()</span><span style="color: #333333;">;</span></span></p>
<p><span style="color: #333333;">    </span><span style="font-style: italic; color: #888888;">//</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">Important</span><span style="font-style: italic; color: #888888;">:</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">Hide</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">the</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">root</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">navigation</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">bar</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">since</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">the</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">tab</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">will</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">have</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">its</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">own</span><span style="font-style: italic; color: #888888;">.</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">NavigationController</span><span style="color: #333333;">.</span><span style="color: #333333;">SetNavigationBarHidden</span><span style="color: #333333;">(</span><span style="color: #009695;">true</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #009695;">true</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">}</span></p>
<p>We also added a little touch.</p>
<p><img class="alignnone size-full wp-image-7856" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/call-map-ios.png" alt="call-map-ios.png" width="300" height="1136" /></p>
<p>You can click the call button to immediately call the specified number, or click on the address to launch Maps with immediate directions to the specified location. If you try to click any of the documents below, the report will be displayed in a modal ViewController.</p>
<p><img class="alignnone size-full wp-image-7866" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/report-ios.png" alt="report-ios.png" width="1388" height="1136" /></p>
<p>To launch the report on Android devices, you&#8217;ll need a PDF viewer installed to the emulator or device.</p>
<p><img class="alignnone size-full wp-image-7869" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/report-android.png" alt="report-android.png" width="1388" height="1136" /></p>
<p>&nbsp;</p>
<h1>The Footer View Template</h1>
<p>On iOS, notice that the new FooterViewTemplate is used, which resembles Apple-music style view template. On Android, since the tabs are placed on the top, the view template is used at the bottom of the screen.</p>
<p><img class="alignnone size-full wp-image-7817" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/footer-view-template.png" alt="footer-view-template.png" width="1519" height="918" /></p>
<p>The FooterViewTemplate is a new feature added in Crosslight 5.1. In iOS, to use thew new <strong>FotoerViewTemplate</strong>, simply override the property in the TabViewController and return the Nib file.</p>
<p><span style="font-family: Menlo;"> <span style="color: #009695;">public</span><span style="color: #333333;"> </span><span style="color: #009695;">override</span><span style="color: #333333;"> </span><span style="color: #3364a4;">UIViewTemplate</span><span style="color: #333333;"> </span><span style="color: #333333;">FooterViewTemplate</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">get</span><span style="color: #333333;"> </span><span style="color: #333333;">{</span><span style="color: #333333;"> </span><span style="color: #009695;">return</span><span style="color: #333333;"> </span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">UIViewTemplate</span><span style="color: #333333;">(</span><span style="color: #3364a4;">AssignmentDetailTabFooter</span><span style="color: #333333;">.</span><span style="color: #333333;">Nib</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><span style="color: #333333;"> </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">}</span></span></p>
<p>If you&#8217;d like, you can also apply the translucent blur effect to the FooterViewTemplate by providing a <strong>Visual Effect View</strong> element using Xcode.</p>
<p><img class="alignnone size-full wp-image-7824" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/Screen-Shot-2016-03-29-at-4.15.07-PM.png" alt="Screen Shot 2016-03-29 at 4.15.07 PM.png" width="2264" height="1204" /></p>
<p>Here&#8217;s the result when applied.</p>
<p><video style="width: 300px; height: 100%;" src="http://developer.intersoftsolutions.com/download/attachments/24805642/blur-footer.mp4?api=v2" preload="metadata" controls="controls" width="700" height="150"><source type="video/mp4" src="http://developer.intersoftsolutions.com/download/attachments/24805642/blur-footer.mp4?api=v2" /><a href="http://developer.intersoftsolutions.com/download/attachments/24805642/blur-footer.mp4?api=v2"> http://developer.intersoftsolutions.com/download/attachments/24805642/blur-footer.mp4?api=v2 </a></video></p>
<p>Also note that when you use the <strong>FooterViewTemplate</strong>, Crosslight.iOS automatically calculates the height of the <strong>FooterViewTemplate</strong> and readjusts the content bounds above it, so that the contents not &#8220;overlayed&#8221; and obscured by the <strong>FooterViewTemplate</strong>. Very nifty.</p>
<p>On Android, you would simply override the <strong>ContentLayoutId</strong> of the <strong>AssignmentDetailTabFragment</strong> and return the layout you would like to use.</p>
<p><span style="font-family: Menlo;"> <span style="color: #009695;">&lt;?</span><span style="color: #333333;">xml</span><span style="color: #333333;"> </span><span style="color: #333333;">version</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">1</span><span style="color: #f57d00;">.</span><span style="color: #f57d00;">0</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;"> </span><span style="color: #333333;">encoding</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">utf</span><span style="color: #f57d00;">&#8211;</span><span style="color: #f57d00;">8</span><span style="color: #f57d00;">&#8220;</span><span style="color: #009695;">?&gt;</span><br />
<span style="color: #333333;">&lt;</span><span style="color: #3364a4;">LinearLayout</span><span style="color: #3364a4;"> </span><span style="color: #333333;">xmlns:android</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">http</span><span style="color: #f57d00;">:</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">schemas</span><span style="color: #f57d00;">.</span><span style="color: #f57d00;">android</span><span style="color: #f57d00;">.</span><span style="color: #f57d00;">com</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">apk</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">res</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">android</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">xmlns:app</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">http</span><span style="color: #f57d00;">:</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">schemas</span><span style="color: #f57d00;">.</span><span style="color: #f57d00;">android</span><span style="color: #f57d00;">.</span><span style="color: #f57d00;">com</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">apk</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">res</span><span style="color: #f57d00;">&#8211;</span><span style="color: #f57d00;">auto</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">match_parent</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">match_parent</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:orientation</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">vertical</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">android</span><span style="color: #3364a4;">.</span><span style="color: #3364a4;">support</span><span style="color: #3364a4;">.</span><span style="color: #3364a4;">design</span><span style="color: #3364a4;">.</span><span style="color: #3364a4;">widget</span><span style="color: #3364a4;">.TabLayout</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:id</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@</span><span style="color: #f57d00;">+</span><span style="color: #f57d00;">id</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">tab_layout</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">match_parent</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">wrap_content</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">app:tabTextAppearance</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@style</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">CustomTabText</span><span style="color: #f57d00;">&#8220;</span><span style="color: #3364a4;"> </span><span style="color: #333333;">/</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">FrameLayout</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:id</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@</span><span style="color: #f57d00;">+</span><span style="color: #f57d00;">id</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">fragment_container</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">match_parent</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">match_parent</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_weight</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">1</span><span style="color: #f57d00;">&#8220;</span><span style="color: #3364a4;"> </span><span style="color: #333333;">/</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">LinearLayout</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:id</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@</span><span style="color: #f57d00;">+</span><span style="color: #f57d00;">id</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">FooterLayout</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">match_parent</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">50dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:orientation</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">horizontal</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:paddingLeft</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">10dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:paddingRight</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">10dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:background</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">#</span><span style="color: #f57d00;">DADADA</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">LinearLayout</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:orientation</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">horizontal</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_weight</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">1</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">0dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">50dp</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">FrameLayout</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:id</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@</span><span style="color: #f57d00;">+</span><span style="color: #f57d00;">id</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">StartButtonLayout</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:orientation</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">horizontal</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">30dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">wrap_content</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">                </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">ImageButton</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:id</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@</span><span style="color: #f57d00;">+</span><span style="color: #f57d00;">id</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">StartButton</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_gravity</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">center</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:scaleType</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">fitCenter</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">match_parent</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">match_parent</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:background</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">#</span><span style="color: #f57d00;">00000000</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:src</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@drawable</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">Start</span><span style="color: #f57d00;">&#8220;</span><span style="color: #3364a4;"> </span><span style="color: #333333;">/</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">&lt;</span><span style="color: #333333;">/</span><span style="color: #3364a4;">FrameLayout</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">TextView</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:id</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@</span><span style="color: #f57d00;">+</span><span style="color: #f57d00;">id</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">FooterElapsedTimeLabel</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">wrap_content</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">wrap_content</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_marginLeft</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">10dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:text</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">ElapsedTime</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_gravity</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">center_vertical</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:textColor</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">#</span><span style="color: #f57d00;">000000</span><span style="color: #f57d00;">&#8220;</span><span style="color: #3364a4;"> </span><span style="color: #333333;">/</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">&lt;</span><span style="color: #333333;">/</span><span style="color: #3364a4;">LinearLayout</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">LinearLayout</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:orientation</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">vertical</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_weight</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">1</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">0dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:gravity</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">center_horizontal</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">match_parent</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">LinearLayout</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:orientation</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">horizontal</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_weight</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">1</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">wrap_content</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">0dp</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">                </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">TextView</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:id</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@</span><span style="color: #f57d00;">+</span><span style="color: #f57d00;">id</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">FooterNameLabel</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">wrap_content</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">wrap_content</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:text</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">Name</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:textStyle</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">bold</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:singleLine</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">true</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_gravity</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">center_vertical</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:textColor</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">#</span><span style="color: #f57d00;">000000</span><span style="color: #f57d00;">&#8220;</span><span style="color: #3364a4;"> </span><span style="color: #333333;">/</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">&lt;</span><span style="color: #333333;">/</span><span style="color: #3364a4;">LinearLayout</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">LinearLayout</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:orientation</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">horizontal</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_weight</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">1</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">wrap_content</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">0dp</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">                </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">TextView</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:id</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@</span><span style="color: #f57d00;">+</span><span style="color: #f57d00;">id</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">FooterContactPersonLabel</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">wrap_content</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">wrap_content</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:text</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">ContactPerson</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:singleLine</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">true</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_gravity</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">center_vertical</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:textColor</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">#</span><span style="color: #f57d00;">000000</span><span style="color: #f57d00;">&#8220;</span><span style="color: #3364a4;"> </span><span style="color: #333333;">/</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">&lt;</span><span style="color: #333333;">/</span><span style="color: #3364a4;">LinearLayout</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">&lt;</span><span style="color: #333333;">/</span><span style="color: #3364a4;">LinearLayout</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">FrameLayout</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:orientation</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">horizontal</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_weight</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">1</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">0dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">match_parent</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:gravity</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">right</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">LinearLayout</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:id</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@</span><span style="color: #f57d00;">+</span><span style="color: #f57d00;">id</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">ActivePendingLayout</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:orientation</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">horizontal</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">70dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_gravity</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">right</span><span style="color: #f57d00;">|</span><span style="color: #f57d00;">center_vertical</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">30dp</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">                </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">Button</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:id</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@</span><span style="color: #f57d00;">+</span><span style="color: #f57d00;">id</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">ActivePendingButton</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:text</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">ACTIVE</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:textColor</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">#</span><span style="color: #f57d00;">3BD606</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:textSize</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">10sp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_gravity</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">right</span><span style="color: #f57d00;">|</span><span style="color: #f57d00;">center_vertical</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">70dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">30dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:background</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@drawable</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">circularTextViewGreen</span><span style="color: #f57d00;">&#8220;</span><span style="color: #3364a4;"> </span><span style="color: #333333;">/</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">&lt;</span><span style="color: #333333;">/</span><span style="color: #3364a4;">LinearLayout</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">LinearLayout</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:id</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@</span><span style="color: #f57d00;">+</span><span style="color: #f57d00;">id</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">AcceptRejectLayout</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:orientation</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">horizontal</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">80dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">match_parent</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_gravity</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">right</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">                </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">LinearLayout</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:orientation</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">vertical</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">0dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">match_parent</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:gravity</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">center</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_weight</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">1</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">                    </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">Button</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:text</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">✓</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:textColor</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">#</span><span style="color: #f57d00;">ffffff</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:textSize</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">22sp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">32dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">32dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:gravity</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">center</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:background</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@drawable</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">circularButtonBlue</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:id</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@</span><span style="color: #f57d00;">+</span><span style="color: #f57d00;">id</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">AcceptButton</span><span style="color: #f57d00;">&#8220;</span><span style="color: #3364a4;"> </span><span style="color: #333333;">/</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">                </span><span style="color: #333333;">&lt;</span><span style="color: #333333;">/</span><span style="color: #3364a4;">LinearLayout</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">                </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">LinearLayout</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:orientation</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">vertical</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">0dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">match_parent</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_weight</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">1</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:gravity</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">center</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">                    </span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">Button</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:text</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">X</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:textColor</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">#</span><span style="color: #f57d00;">ffffff</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:textSize</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">22sp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:gravity</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">center</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_width</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">32dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:layout_height</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">32dp</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:background</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@drawable</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">circularButtonRed</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #3364a4;"> </span><span style="color: #333333;">android:id</span><span style="color: #333333;">=</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">@</span><span style="color: #f57d00;">+</span><span style="color: #f57d00;">id</span><span style="color: #f57d00;">/</span><span style="color: #f57d00;">RejectButton</span><span style="color: #f57d00;">&#8220;</span><span style="color: #3364a4;"> </span><span style="color: #333333;">/</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">                </span><span style="color: #333333;">&lt;</span><span style="color: #333333;">/</span><span style="color: #3364a4;">LinearLayout</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">            </span><span style="color: #333333;">&lt;</span><span style="color: #333333;">/</span><span style="color: #3364a4;">LinearLayout</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">&lt;</span><span style="color: #333333;">/</span><span style="color: #3364a4;">FrameLayout</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">&lt;</span><span style="color: #333333;">/</span><span style="color: #3364a4;">LinearLayout</span><span style="color: #333333;">&gt;</span><br />
<span style="color: #333333;">&lt;</span><span style="color: #333333;">/</span><span style="color: #3364a4;">LinearLayout</span><span style="color: #333333;">&gt;</span></span></p>
<p>One thing to note is the middle FrameLayout with the ID <strong>fragment_container</strong>. You&#8217;ll need to provide this or the fragment transaction would not work properly.</p>
<h1>Single-Responsibility Principle</h1>
<p>Before we proceed, I want you to think about this problem for a second: since an assignment can be manipulated from so many places: the list screen, the detail screen and the map screen, what design approach is best used to &#8220;sync&#8221; the assignment state from any screens, but in an elegant way? For example, the user can start an assignment from the list screen, then from the detail screen, the user pauses, changes the assignment status, then go back to the map screen, plays the assignment once more, change the assignment status to Active, and so on.</p>
<p>We need to access the assignment from various ViewModels across the app, but we must ensure that the assignment states are correct whenever it is accessed anywhere. In this sample, we&#8217;ve used the <a href="https://en.wikipedia.org/wiki/Single_responsibility_principle" target="_blank">Single-Responsibility Principle</a> to address this problem, exhibited by <strong>AssignmentViewModel.cs</strong> located inside <strong>FieldService.Core/ViewModels</strong> folder. This single class holds a unified information for the Active Assignment as well as any other commands that can interact with the assignment, such as accepting, rejecting, starting, changing status, etc.</p>
<p>Crosslight provides an elegant solution to this problem with the IoC (Inversion of Control) pattern. By registering the ViewModel once in the Container class, you can easily resolve and use this ViewModel anywhere. To begin with, open the <strong>AppService.cs</strong> file inside <strong>FieldService.Core/Infrastructure</strong> folder where you&#8217;ll an entry that looks similar to the following.</p>
<p><span style="font-family: Menlo;"> <span style="font-style: italic; color: #888888;">//</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">the</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">assignment</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">view</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">model</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">streamlines</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">all</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">assignment</span><span style="font-style: italic; color: #888888;">&#8211;</span><span style="font-style: italic; color: #888888;">related</span><span style="font-style: italic; color: #888888;"> logics</span><br />
<span style="font-style: italic; color: #888888;">//</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">which</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">is</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">resolved</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">in</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">numerous</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">ViewModels</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">such</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">as</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">list</span><span style="font-style: italic; color: #888888;">,</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">map</span><span style="font-style: italic; color: #888888;">,</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">and</span><span style="font-style: italic; color: #888888;"> detail</span><br />
<span style="color: #3364a4;">Container</span><span style="color: #333333;">.</span><span style="color: #333333;">Current</span><span style="color: #333333;">.</span><span style="color: #333333;">Register</span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">AssignmentViewModel</span><span style="color: #333333;">&gt;(</span><span style="color: #333333;">c</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;">&gt;</span><span style="color: #333333;"> </span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">AssignmentViewModel</span><span style="color: #333333;">())</span><span style="color: #333333;">.</span><span style="color: #333333;">WithLifetimeManager</span><span style="color: #333333;">(</span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">ContainerLifetime</span><span style="color: #333333;">())</span><span style="color: #333333;">;</span></span></p>
<p>To resolve the registered ViewModel anyhwere, all you need to do is create a getter-only property that resolves the ViewModel from the Container. For example, as follows.</p>
<p><span style="font-family: Menlo;"> <span style="color: #009695;">public</span><span style="color: #333333;"> </span><span style="color: #3364a4;">AssignmentViewModel</span><span style="color: #333333;"> </span><span style="color: #333333;">AssignmentViewModel</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">get</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">return</span><span style="color: #333333;"> </span><span style="color: #3364a4;">Container</span><span style="color: #333333;">.</span><span style="color: #333333;">Current</span><span style="color: #333333;">.</span><span style="color: #333333;">Resolve</span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">AssignmentViewModel</span><span style="color: #333333;">&gt;()</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">}</span></span></p>
<p>Once this is done, you can easily use the object inside your BindingProvider and ensure that the data bindings work flawlessly across screens.</p>
<p><span style="font-family: Menlo;"> <span style="font-style: italic; color: #888888;">//</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">Command</span><span style="font-style: italic; color: #888888;"> bindings</span><br />
<span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">AddBinding</span><span style="color: #333333;">(</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">ActivePendingButton</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #3364a4;">BindableProperties</span><span style="color: #333333;">.</span><span style="color: #333333;">CommandProperty</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">AssignmentViewModel</span><span style="color: #f57d00;">.</span><span style="color: #f57d00;">ChangeStatusCommand</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">AddBinding</span><span style="color: #333333;">(</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">ActivePendingButton</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #3364a4;">BindableProperties</span><span style="color: #333333;">.</span><span style="color: #333333;">CommandParameterProperty</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">Assignment</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">AddBinding</span><span style="color: #333333;">(</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">RejectButton</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #3364a4;">BindableProperties</span><span style="color: #333333;">.</span><span style="color: #333333;">CommandProperty</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">AssignmentViewModel</span><span style="color: #f57d00;">.</span><span style="color: #f57d00;">RejectCommand</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">AddBinding</span><span style="color: #333333;">(</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">RejectButton</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #3364a4;">BindableProperties</span><span style="color: #333333;">.</span><span style="color: #333333;">CommandParameterProperty</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">Assignment</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">AddBinding</span><span style="color: #333333;">(</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">AcceptButton</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #3364a4;">BindableProperties</span><span style="color: #333333;">.</span><span style="color: #333333;">CommandProperty</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">AssignmentViewModel</span><span style="color: #f57d00;">.</span><span style="color: #f57d00;">AcceptCommand</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">AddBinding</span><span style="color: #333333;">(</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">AcceptButton</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #3364a4;">BindableProperties</span><span style="color: #333333;">.</span><span style="color: #333333;">CommandParameterProperty</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">Assignment</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">AddBinding</span><span style="color: #333333;">(</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">StartButton</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #3364a4;">BindableProperties</span><span style="color: #333333;">.</span><span style="color: #333333;">CommandProperty</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">AssignmentViewModel</span><span style="color: #f57d00;">.</span><span style="color: #f57d00;">StartCommand</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span></span></p>
<p>Very simple and elegant.</p>
<h1>The Items Screen</h1>
<p>Let&#8217;s take a brief look at the Items screen.</p>
<p><img class="alignnone size-full wp-image-7876" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/items-screen.png" alt="items-screen.png" width="1332" height="1136" /></p>
<p>At a first glance, there&#8217;s nothing quite special in the Items screen. Until you try to swipe down.</p>
<p><img class="alignnone size-full wp-image-7881" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/search.png" alt="search.png" width="1416" height="1136" /></p>
<p>&nbsp;</p>
<p>Notice that when you hit on the search bar, the status bar color changes according to the overridden <strong>PreferredStatusBarStyle.</strong></p>
<p><span style="font-family: Menlo;"> <span style="color: #009695;">public</span><span style="color: #333333;"> </span><span style="color: #009695;">override</span><span style="color: #333333;"> </span><span style="color: #3364a4;">UIStatusBarStyle</span><span style="color: #333333;"> </span><span style="color: #333333;">PreferredStatusBarStyle</span><span style="color: #333333;">()</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">if</span><span style="color: #333333;"> </span><span style="color: #333333;">(</span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">SearchDisplayController</span><span style="color: #333333;"> !</span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">null</span><span style="color: #333333;"> </span><span style="color: #333333;">&amp;&amp;</span><span style="color: #333333;"> </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">SearchDisplayController</span><span style="color: #333333;">.</span><span style="color: #333333;">Active</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">return</span><span style="color: #333333;"> </span><span style="color: #3364a4;">UIStatusBarStyle</span><span style="color: #333333;">.</span><span style="color: #333333;">Default</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">else</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">return</span><span style="color: #333333;"> </span><span style="color: #3364a4;">UIAppearanceSettings</span><span style="color: #333333;">.</span><span style="color: #333333;">StatusBarStyle</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">}</span></span></p>
<p>When you try to run this project on an iPad, you&#8217;ll get a popover controller when you try to add an item, and when you edit an item, you&#8217;ll get a nice modal ViewController that is displayed in the middle of the screen.</p>
<p><img class="alignnone size-full wp-image-7887" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/items-ipad.png" alt="items-ipad.png" width="2000" height="756" /></p>
<p>This corresponds to the BindingProvider defined for this view.</p>
<p><span style="font-family: Menlo;"><span style="color: #009695;">if</span><span style="color: #333333;"> </span><span style="color: #333333;">(</span><span style="color: #333333;">isTablet</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">AddBinding</span><span style="color: #333333;">(</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">TableView</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #3364a4;">BindableProperties</span><span style="color: #333333;">.</span><span style="color: #333333;">SelectedCommandProperty</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">NavigateToEditorCommand</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #009695;">else</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">AddBinding</span><span style="color: #333333;">(</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">TableView</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #3364a4;">BindableProperties</span><span style="color: #333333;">.</span><span style="color: #333333;">DetailNavigationTargetProperty</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">NavigationTarget</span><span style="color: #333333;">(</span><span style="color: #009695;">typeof</span><span style="color: #333333;">(</span><span style="color: #3364a4;">AssignmentExpenseEditorViewModel</span><span style="color: #333333;">))</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #009695;">true</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span></span></p>
<p>And in the ViewModel, the <strong>NavigateToEditorCommand</strong> invokes the following method.</p>
<p><span style="font-family: Menlo;"><span style="color: #009695;">public</span><span style="color: #333333;"> </span><span style="color: #009695;">void</span><span style="color: #333333;"> </span><span style="color: #333333;">ExecuteNavigateToEditor</span><span style="color: #333333;">(</span><span style="color: #009695;">object</span><span style="color: #333333;"> </span><span style="color: #333333;">parameter</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">DialogPresenter</span><span style="color: #333333;">.</span><span style="color: #333333;">ShowAsync</span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">AssignmentItemsEditorViewModel</span><span style="color: #333333;">&gt;(</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">NavigationParameter</span><span style="color: #333333;">(</span><span style="color: #333333;">parameter</span><span style="color: #333333;">)</span><span style="color: #333333;">,</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">DialogOptions</span><span style="color: #333333;">()</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">            NeutralButtonStyle </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">DialogButtonStyle</span><span style="color: #333333;">(</span><span style="color: #3364a4;">Colors</span><span style="color: #333333;">.</span><span style="color: #333333;">Red</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">})</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">}</span></span></p>
<p>When executing the Add command:</p>
<p><span style="font-family: Menlo;"> <span style="color: #009695;">protected</span><span style="color: #333333;"> </span><span style="color: #009695;">override</span><span style="color: #333333;"> </span><span style="color: #009695;">void</span><span style="color: #333333;"> </span><span style="color: #333333;">ExecuteAdd</span><span style="color: #333333;">(</span><span style="color: #009695;">object</span><span style="color: #333333;"> </span><span style="color: #333333;">parameter</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">     </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">NavigationService</span><span style="color: #333333;">.</span><span style="color: #333333;">Navigate</span><span style="color: #333333;">&lt;</span><span style="color: #3364a4;">AssignmentItemsEditorViewModel</span><span style="color: #333333;">&gt;(</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">NavigationParameter</span><span style="color: #333333;">(</span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">TabViewModel</span><span style="color: #333333;">.</span><span style="color: #333333;">Assignment</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">            NavigationMode </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #3364a4;">NavigationMode</span><span style="color: #333333;">.</span><span style="color: #333333;">Modal</span><span style="color: #333333;">,</span><br />
<span style="color: #333333;">            EnsureNavigationContext </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">true</span><span style="color: #333333;">,</span><br />
<span style="color: #333333;">            ModalPresentationStyle </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #3364a4;">ModalPresentationStyle</span><span style="color: #333333;">.</span><span style="color: #333333;">FormSheet</span><span style="color: #333333;">,</span><br />
<span style="color: #333333;">            PreferPopover </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">true</span><span style="color: #333333;">,</span><br />
<span style="color: #333333;">            CommandId </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">Add</span><span style="color: #f57d00;">&#8220;</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">})</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">}</span></span></p>
<h1>The Labor Hours Screen</h1>
<p>In the Labor Hours screen, the experience is pretty similar when adding or editing an item.</p>
<p><img class="alignnone size-full wp-image-7902" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/labor-hours-ipad.png" alt="labor-hours-ipad.png" width="2000" height="730" /></p>
<p>Perhaps one particular interesting technique is how to update the footer total Labor Hours at runtime. If you notice closely, when you edit any of the labor hours or add a new entry with a specified Labor Hours, the total labor hours sums up automatically.</p>
<p><img class="alignnone size-full wp-image-7926" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/labor-hours.png" alt="labor-hours.png" width="2000" height="618" /></p>
<p>To achieve that effect, we provide the <strong>FooterViewTemplate</strong> for the Labor Hours screen.</p>
<p><span style="font-family: Menlo;"> <span style="color: #009695;">public</span><span style="color: #333333;"> </span><span style="color: #009695;">override</span><span style="color: #333333;"> </span><span style="color: #3364a4;">UIViewTemplate</span><span style="color: #333333;"> </span><span style="color: #333333;">FooterViewTemplate</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">get</span><span style="color: #333333;"> </span><span style="color: #333333;">{</span><span style="color: #333333;"> </span><span style="color: #009695;">return</span><span style="color: #333333;"> </span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">UIViewTemplate</span><span style="color: #333333;">(</span><span style="color: #3364a4;">DetailFooterLayout</span><span style="color: #333333;">.</span><span style="color: #333333;">Nib</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><span style="color: #333333;"> </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">}</span></span></p>
<p>And here&#8217;s the <strong>DetailFooterLayout</strong>.</p>
<p><img class="alignnone size-full wp-image-7916" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/status-label-ios.png" alt="status-label-ios.png" width="1822" height="1080" /></p>
<p>Then in the BindingProvider, we bind the label to.</p>
<p><span style="font-family: Menlo;"> <span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">AddBinding</span><span style="color: #333333;">(</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">StatusLabel</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #3364a4;">BindableProperties</span><span style="color: #333333;">.</span><span style="color: #333333;">TextProperty</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #009695;">new</span><span style="color: #333333;"> </span><span style="color: #3364a4;">BindingDescription</span><span style="color: #333333;">(</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">TabViewModel</span><span style="color: #f57d00;">.</span><span style="color: #f57d00;">Assignment</span><span style="color: #f57d00;">.</span><span style="color: #f57d00;">TotalLaborHours</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><span style="color: #333333;"> </span><span style="color: #333333;">{</span><span style="color: #333333;"> StringFormat </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">Labor</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">Hours</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">(</span><span style="color: #f57d00;">{</span><span style="color: #f57d00;">0</span><span style="color: #f57d00;">:</span><span style="color: #f57d00;">0</span><span style="color: #f57d00;">.</span><span style="color: #f57d00;">#</span><span style="color: #f57d00;">}</span><span style="color: #f57d00;">)</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;"> </span><span style="color: #333333;">})</span><span style="color: #333333;">;</span></span></p>
<p>Which corresponds to the parent ViewModel (TabViewModel) property&#8217;s active Assignment with its <strong>TotalLaborHours</strong> property.</p>
<p><span style="font-family: Menlo;"> <span style="color: #333333;">[</span><span style="color: #3364a4;">IgnoreDataMember</span><span style="color: #333333;">]</span><br />
<span style="color: #009695;">public</span><span style="color: #333333;"> </span><span style="color: #009695;">double</span><span style="color: #333333;"> </span><span style="color: #333333;">TotalLaborHours</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">get</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">return</span><span style="color: #333333;"> </span><span style="color: #3364a4;">TimeSpan</span><span style="color: #333333;">.</span><span style="color: #333333;">FromTicks</span><span style="color: #333333;">(</span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">Labors</span><span style="color: #333333;">.</span><span style="color: #333333;">Sum</span><span style="color: #333333;">(</span><span style="color: #333333;">o</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;">&gt;</span><span style="color: #333333;"> </span><span style="color: #333333;">o</span><span style="color: #333333;">.</span><span style="color: #333333;">Ticks</span><span style="color: #333333;">))</span><span style="color: #333333;">.</span><span style="color: #333333;">TotalHours</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">}</span></span></p>
<p>This way, we should be able to centralize the labor hours binding to the same property, eliminating unnecessary workarounds to elegantly achieve this effect.</p>
<h1>Validating Input Using Form Validation Metadata</h1>
<p>When you input a new labor hour entry, or edit an existing one. If you open the <strong>FieldServiceModel.Metadata.cs</strong> file inside <strong>FieldService.Core/DomainModels</strong> folder, you&#8217;ll see the following.</p>
<p><img class="alignnone size-full wp-image-7937" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/validation-metadata.png" alt="validation-metadata.png" width="1976" height="960" /></p>
<p>If you notice there, there are two validation metadata, one is for the Expense entry and one is for the Labor entry. In this example, we&#8217;ve ensured that the Ticks property is a Required Entry and the minimum number for the ticks is 1. Once these conditions are satisfied, then the form is considered a vaild entry and the changes will be saved. Similar to the Expense entry, we&#8217;ve enforced that the Price should be greater than 1.</p>
<p><img class="alignnone size-full wp-image-7944" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/labor-hours-validation.png" alt="labor-hours-validation.png" width="1496" height="1136" /></p>
<p>The important thing to ensure that the validation metadata works properly is that you create a partial class from the model that you want to validate, and decorate it with the <strong>EntityMetadataAttribute</strong>.</p>
<p><span style="font-family: Menlo;"> <span style="color: #333333;">[</span><span style="color: #3364a4;">EntityMetadata</span><span style="color: #333333;">(</span><span style="color: #009695;">typeof</span><span style="color: #333333;">(</span><span style="color: #3364a4;">Labor</span><span style="color: #333333;">.</span><span style="color: #3364a4;">LaborValidationMetadata</span><span style="color: #333333;">))]</span><br />
<span style="color: #009695;">partial</span><span style="color: #333333;"> </span><span style="color: #009695;">class</span><span style="color: #333333;"> </span><span style="color: #3364a4;">Labor</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">class</span><span style="color: #333333;"> </span><span style="color: #3364a4;">LaborValidationMetadata</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">[</span><span style="color: #3364a4;">Required</span><span style="color: #333333;">]</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">[</span><span style="color: #3364a4;">Min</span><span style="color: #333333;">(</span><span style="color: #009695;">typeof</span><span style="color: #333333;">(</span><span style="color: #009695;">long</span><span style="color: #333333;">)</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">1</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">,</span><span style="color: #333333;"> ErrorMessage </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">Hours</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">must</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">be</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">greater</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">than</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">0</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)]</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">public</span><span style="color: #333333;"> </span><span style="color: #009695;">long</span><span style="color: #333333;"> </span><span style="color: #333333;">Ticks</span><span style="color: #333333;"> </span><span style="color: #333333;">{</span><span style="color: #333333;"> </span><span style="color: #009695;">get</span><span style="color: #333333;">;</span><span style="color: #333333;"> </span><span style="color: #009695;">set</span><span style="color: #333333;">;</span><span style="color: #333333;"> </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">}</span></span></p>
<h1>The Expense Screen</h1>
<p>The Expense screen also uses pretty much the same technique with the Items and Labor Hours screen, which uses popover for adding new items and modal ViewController for the editing screen.</p>
<p><img class="alignnone size-full wp-image-7959" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/expense-screen-ios.png" alt="expense-screen-ios.png" width="1938" height="1458" /></p>
<p>When you go to the editor screen, we improved on the Form Builder experience a bit to support the image editor detail scenario as follows.</p>
<p><img class="alignnone size-full wp-image-7964" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/edit-image-form-builder.png" alt="edit-image-form-builder.png" width="2000" height="1417" /></p>
<p>And in Android,</p>
<p><img class="alignnone size-full wp-image-7966" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/image-editor-android.png" alt="image-editor-android.png" width="2000" height="1239" /></p>
<p>The FormMetadata is as simply as follows.</p>
<p><span style="font-family: Menlo;"> <span style="color: #009695;">public</span><span style="color: #333333;"> </span><span style="color: #009695;">class</span><span style="color: #333333;"> </span><span style="color: #3364a4;">ImageSection</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">[</span><span style="color: #333333;">Editor</span><span style="color: #333333;">(</span><span style="color: #333333;">EditorType</span><span style="color: #333333;">.</span><span style="color: #333333;">Image</span><span style="color: #333333;">)]</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">[</span><span style="color: #333333;">Layout</span><span style="color: #333333;">(</span><span style="color: #333333;">Style </span><span style="color: #333333;">=</span><span style="color: #333333;"> LayoutStyle</span><span style="color: #333333;">.</span><span style="color: #333333;">DetailOnly</span><span style="color: #333333;">)]</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">[</span><span style="color: #333333;">Image</span><span style="color: #333333;">(</span><span style="color: #333333;">Height </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #f57d00;">200</span><span style="color: #333333;">,</span><span style="color: #333333;"> Placeholder </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">photo</span><span style="color: #f57d00;">.</span><span style="color: #f57d00;">png</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">,</span><span style="color: #333333;"> Padding </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #f57d00;">8</span><span style="color: #333333;">,</span><span style="color: #333333;"> ScaleMode </span><span style="color: #333333;">=</span><span style="color: #333333;"> ImageScaleMode</span><span style="color: #333333;">.</span><span style="color: #333333;">ScaleAspectFill</span><span style="color: #333333;">)]</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">[</span><span style="color: #333333;">ImagePicker</span><span style="color: #333333;">(</span><span style="color: #333333;">ImageResultMode </span><span style="color: #333333;">=</span><span style="color: #333333;"> ImageResultMode</span><span style="color: #333333;">.</span><span style="color: #333333;">Both</span><span style="color: #333333;">,</span><span style="color: #333333;"> UseThumbnailResult </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">false</span><span style="color: #333333;">,</span><span style="color: #333333;"> PickerResultCommand </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">FinishImagePickerCommand</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)]</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">public</span><span style="color: #333333;"> </span><span style="color: #009695;">static</span><span style="color: #333333;"> </span><span style="color: #009695;">byte</span><span style="color: #333333;">[]</span><span style="color: #333333;"> </span><span style="color: #333333;">Image</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">}</span></span></p>
<h1>Jump to Complete Screen</h1>
<p>Another interesting interaction in this app is how you can directly jump to the Complete screen when you decide Complete the assignment, either from the List screen, Map screen, or from the assignment detail.</p>
<p><img class="alignnone size-full wp-image-7970" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/jump-complete-android.png" alt="jump-complete-android.png" width="2000" height="620" /></p>
<p>Due to the Single Responsibility principle that we&#8217;ve used in this application, achieving this scenario is very easy. In the <strong>AssignmentViewModel</strong>, simply navigate to the Confirmation screen.</p>
<p><span style="font-family: Menlo;"> <span style="color: #009695;">public</span><span style="color: #333333;"> </span><span style="color: #009695;">void</span><span style="color: #333333;"> </span><span style="color: #333333;">ExecuteComplete</span><span style="color: #333333;">(</span><span style="color: #009695;">object</span><span style="color: #333333;"> </span><span style="color: #333333;">parameter</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #009695;">bool</span><span style="color: #333333;"> </span><span style="color: #333333;">isFromConfirmationPage</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">false</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">if</span><span style="color: #333333;"> </span><span style="color: #333333;">(</span><span style="color: #333333;">isFromConfirmationPage</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">ExecutePendingOrComplete</span><span style="color: #333333;">(</span><span style="color: #333333;">parameter</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">Complete</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">else</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">if</span><span style="color: #333333;"> </span><span style="color: #333333;">(</span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">ActiveViewModel</span><span style="color: #333333;"> </span><span style="color: #009695;">is</span><span style="color: #333333;"> </span><span style="color: #3364a4;">AssignmentDetailTabViewModel</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">            </span><span style="font-style: italic; color: #888888;">//</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">already</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">in</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">the</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">detail</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">view</span><span style="font-style: italic; color: #888888;">,</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">focus</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">to</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">the</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">confirmation</span><span style="font-style: italic; color: #888888;"> screen</span><br />
<span style="color: #333333;">            </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">SetDetailSelectedIndex</span><span style="color: #333333;">()</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">else</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">            </span><span style="font-style: italic; color: #888888;">//</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">we</span><span style="font-style: italic; color: #888888;">&#8216;</span><span style="font-style: italic; color: #888888;">re</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">in</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">the</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">main</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">view</span><span style="font-style: italic; color: #888888;">,</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">perform</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">navigation</span><span style="font-style: italic; color: #888888;"> </span><span style="font-style: italic; color: #888888;">to</span><span style="font-style: italic; color: #888888;"> detail</span><br />
<span style="color: #333333;">            </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">AutoFocusToConfirmation</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">true</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">            </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">ExecuteNavigateToDetail</span><span style="color: #333333;">(</span><span style="color: #333333;">parameter</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">}</span></span></p>
<h1>The Completion Screen</h1>
<p>In the Completion screen, you&#8217;ll be greeted with two major UI elements: the Photos Grid/Collection View and a Signature Pad. If you try to complete the assignment immediately without entering any signature, you&#8217;ll get a toast message as follows.</p>
<p><img class="alignnone size-full wp-image-7989" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/android-completion.png" alt="android-completion.png" width="1783" height="1136" /></p>
<p>You can add additional photos when completing the assignment for extra information.</p>
<p><img class="alignnone size-full wp-image-7992" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/04/add-photo-completion.png" alt="add-photo-completion.png" width="1784" height="1136" /></p>
<p>The code to execute the completion of an assignment is pretty straightforward.</p>
<p><span style="font-family: Menlo;"> <span style="color: #009695;">public</span><span style="color: #333333;"> </span><span style="color: #009695;">void</span><span style="color: #333333;"> </span><span style="color: #333333;">ExecuteComplete</span><span style="color: #333333;">(</span><span style="color: #009695;">object</span><span style="color: #333333;"> </span><span style="color: #333333;">parameter</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">if</span><span style="color: #333333;"> </span><span style="color: #333333;">(</span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">Assignment</span><span style="color: #333333;">.</span><span style="color: #333333;">Status</span><span style="color: #333333;"> </span><span style="color: #333333;">==</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">Complete</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">ToastPresenter</span><span style="color: #333333;">.</span><span style="color: #333333;">Show</span><span style="color: #333333;">(</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">This</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">assignment</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">already</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">completed</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">else</span><span style="color: #333333;"> </span><span style="color: #009695;">if</span><span style="color: #333333;"> </span><span style="color: #333333;">(</span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">Assignment</span><span style="color: #333333;">.</span><span style="color: #333333;">Status</span><span style="color: #333333;"> </span><span style="color: #333333;">==</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">Active</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">if</span><span style="color: #333333;"> </span><span style="color: #333333;">(</span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">Signature</span><span style="color: #333333;"> </span><span style="color: #333333;">==</span><span style="color: #333333;"> </span><span style="color: #009695;">null</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">            </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">ToastPresenter</span><span style="color: #333333;">.</span><span style="color: #333333;">Show</span><span style="color: #333333;">(</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">To</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">complete</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">this</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">assignment</span><span style="color: #f57d00;">,</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">please</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">draw</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">your</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">sign</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">in</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">the</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">signature</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">pad</span><span style="color: #f57d00;">.</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">            </span><span style="color: #009695;">return</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">        </span><span style="color: #333333;">}</span></span></p>
<p><span style="color: #333333;">        </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">Assignment</span><span style="color: #333333;">.</span><span style="color: #333333;">Signature</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">Signature</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">TabViewModel</span><span style="color: #333333;">.</span><span style="color: #333333;">AssignmentViewModel</span><span style="color: #333333;">.</span><span style="color: #333333;">ExecuteComplete</span><span style="color: #333333;">(</span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">Assignment</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #009695;">true</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span></p>
<p><span style="color: #333333;">        </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">IsSignatureImageViewVisible</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">true</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">IsSignatureCanvasVisible</span><span style="color: #333333;"> </span><span style="color: #333333;">=</span><span style="color: #333333;"> </span><span style="color: #009695;">false</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">CompleteCommand</span><span style="color: #333333;">.</span><span style="color: #333333;">RaiseCanExecuteChanged</span><span style="color: #333333;">()</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">AddPhotoCommand</span><span style="color: #333333;">.</span><span style="color: #333333;">RaiseCanExecuteChanged</span><span style="color: #333333;">()</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">ClearSignatureCommand</span><span style="color: #333333;">.</span><span style="color: #333333;">RaiseCanExecuteChanged</span><span style="color: #333333;">()</span><span style="color: #333333;">;</span></p>
<p><span style="color: #333333;">        </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">ToastPresenter</span><span style="color: #333333;">.</span><span style="color: #333333;">Show</span><span style="color: #333333;">(</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">Assignment</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">completed</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">else</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">{</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">ToastPresenter</span><span style="color: #333333;">.</span><span style="color: #333333;">Show</span><span style="color: #333333;">(</span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">You</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">need</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">to</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">activate</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">the</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">assignment</span><span style="color: #f57d00;"> </span><span style="color: #f57d00;">first</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">    </span><span style="color: #333333;">}</span><br />
<span style="color: #333333;">}</span></p>
<p>You can also clear the signature you&#8217;ve entered by hitting the Clear button above the Signature Pad.</p>
<h1>Disable Editing After Completed</h1>
<p>After you&#8217;ve completed an assignment, you won&#8217;t be able to make any changes to any of the items available in the Assignment Detail. This includes Items, Labor Hours, Expenses, Photos and Signature. This is possible because we simply need to check for the current Assignment&#8217;s Status and see if an operation can be completed.</p>
<p><span style="font-family: Menlo;"> <span style="color: #333333;">[</span><span style="color: #3364a4;">MaxLength</span><span style="color: #333333;">(</span><span style="color: #f57d00;">255</span><span style="color: #333333;">)]</span><br />
<span style="color: #009695;">public</span><span style="color: #333333;"> </span><span style="color: #009695;">string</span><span style="color: #333333;"> </span><span style="color: #333333;">Status</span><span style="color: #333333;"> </span><br />
<span style="color: #333333;">{</span><span style="color: #333333;"> </span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">get</span><span style="color: #333333;"> </span><span style="color: #333333;">{</span><span style="color: #333333;"> </span><span style="color: #009695;">return</span><span style="color: #333333;"> </span><span style="color: #333333;">(</span><span style="color: #009695;">string</span><span style="color: #333333;">)</span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">GetValue</span><span style="color: #333333;">(</span><span style="color: #333333;">StatusPropertyMetadata</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><span style="color: #333333;"> </span><span style="color: #333333;">}</span><span style="color: #333333;"> </span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">set</span><span style="color: #333333;"> </span><span style="color: #333333;">{</span><span style="color: #333333;"> </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">SetValue</span><span style="color: #333333;">(</span><span style="color: #333333;">StatusPropertyMetadata</span><span style="color: #333333;">,</span><span style="color: #333333;"> </span><span style="color: #009695;">value</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><span style="color: #333333;"> </span><span style="color: #333333;">}</span><span style="color: #333333;"> </span><br />
<span style="color: #333333;">}</span></span></p>
<p>In the ViewModel, you would simply override the CanExecute method and see if the assignment is completed before executing your method.</p>
<p><span style="font-family: Menlo;"> <span style="color: #009695;">protected</span><span style="color: #333333;"> </span><span style="color: #009695;">override</span><span style="color: #333333;"> </span><span style="color: #009695;">bool</span><span style="color: #333333;"> </span><span style="color: #333333;">CanExecuteSave</span><span style="color: #333333;">(</span><span style="color: #009695;">object</span><span style="color: #333333;"> </span><span style="color: #333333;">parameter</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">{</span><br />
<span style="color: #333333;">    </span><span style="color: #009695;">if</span><span style="color: #333333;"> </span><span style="color: #333333;">(</span><span style="color: #333333;">!</span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">IsNewItem</span><span style="color: #333333;"> </span><span style="color: #333333;">&amp;&amp;</span><span style="color: #333333;"> </span><span style="color: #009695;">this</span><span style="color: #333333;">.</span><span style="color: #333333;">Item</span><span style="color: #333333;">.</span><span style="color: #333333;">Assignment</span><span style="color: #333333;">.</span><span style="color: #333333;">Status</span><span style="color: #333333;"> </span><span style="color: #333333;">==</span><span style="color: #333333;"> </span><span style="color: #f57d00;">&#8220;</span><span style="color: #f57d00;">Complete</span><span style="color: #f57d00;">&#8220;</span><span style="color: #333333;">)</span><br />
<span style="color: #333333;">        </span><span style="color: #009695;">return</span><span style="color: #333333;"> </span><span style="color: #009695;">false</span><span style="color: #333333;">;</span></p>
<p><span style="color: #333333;">    </span><span style="color: #009695;">return</span><span style="color: #333333;"> </span><span style="color: #009695;">base</span><span style="color: #333333;">.</span><span style="color: #333333;">CanExecuteSave</span><span style="color: #333333;">(</span><span style="color: #333333;">parameter</span><span style="color: #333333;">)</span><span style="color: #333333;">;</span><br />
<span style="color: #333333;">}</span></span></p>
<p>This is done so elegantly that you don&#8217;t have to access any of the platform-specific views to accomplish this.</p>
<h1>Wrapping Up</h1>
<p>Hopefully this post provides you with even more insights on what&#8217;s happening behind the scenes with the new Crosslight Field Service sample. If you&#8217;d like to see more Xamarin samples to be converted to Crosslight, please do let us know in the comments section below.</p>
<p>Till next post,<br />
Nicholas Lie</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2016/04/redesigning-xamarin-field-service-sample-with-crosslight-part-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://developer.intersoftsolutions.com/download/attachments/24805642/blur-footer.mp4?api=v2" length="406271" type="video/mp4" />
		</item>
		<item>
		<title>Crosslight Field Service is now available!</title>
		<link>http://blog.intersoftsolutions.com/2016/04/crosslight-field-service-is-now-available/</link>
		<comments>http://blog.intersoftsolutions.com/2016/04/crosslight-field-service-is-now-available/#comments</comments>
		<pubDate>Fri, 01 Apr 2016 10:28:22 +0000</pubDate>
		<dc:creator><![CDATA[Nicholas Lie]]></dc:creator>
				<category><![CDATA[2016 R1]]></category>
		<category><![CDATA[Crosslight]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Reference Samples]]></category>
		<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Crosslight 5]]></category>
		<category><![CDATA[Samples]]></category>

		<guid isPermaLink="false">http://blog.intersoftsolutions.com/?p=7586</guid>
		<description><![CDATA[Good news! For those of you who&#8217;ve waited for so long for Crosslight Field Service sample, it&#8217;s now available here. This sample highlights many of the best practices found when developing Crosslight applications with no tedious workarounds whatsoever. Works on iPhone, iPad, Android phones and tablets, this sample sets a new standard for Crosslight [...]]]></description>
				<content:encoded><![CDATA[<img width="604" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/03/banner-fieldservice2-604x270.png" class="attachment-post-thumbnail wp-post-image" alt="banner-fieldservice" style="float:right; margin:0 0 10px 10px;" /><p>Good news! For those of you who&#8217;ve waited for so long for Crosslight Field Service sample, it&#8217;s now available <a href="http://git.intersoftsolutions.com/projects/CS/repos/app-fieldservice/browse" target="_blank">here</a>. This sample highlights many of the best practices found when developing Crosslight applications with no tedious workarounds whatsoever. Works on iPhone, iPad, Android phones and tablets, this sample sets a new standard for Crosslight app development.</p>
<p><img class="alignnone size-full wp-image-7612" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/03/banner-fieldservice2.png" alt="banner-fieldservice.png" width="2560" height="1005" /></p>
<p class="p1"><span class="s1">Features highlight:</span></p>
<ul class="ul1">
<li class="li1"><span class="s1">Works on iOS and Android, on both phones and tablets devices.</span></li>
<li class="li1"><span class="s1">Showcases best coding practices when using Crosslight.</span></li>
<li class="li1"><span class="s1">Supports Dialog Presenter on tablet mode.</span></li>
<li class="li1"><span class="s1">True data binding capabilities with UI live updates.</span></li>
<li class="li1"><span class="s1">Saving and loading data through SQLite.</span></li>
<li class="li1"><span class="s1">Crosslight Form Builder to create a truly versatile form that works consistently on iOS and Android.</span></li>
<li class="li1"><span class="s1">FooterViewTemplate on iOS that mimics Apple-style app.</span></li>
<li class="li1"><span class="s1">The use of Crosslight Signature Pad to obtain customer&#8217;s signature upon assignment completion.</span></li>
<li class="li1"><span class="s1">Deep navigation to the completion screen when attempting to complete an assignment.</span></li>
<li class="li1"><span class="s1">Full iOS storyboard support.</span></li>
<li class="li1"><span class="s1">Use of CollectionView/GridView for photos.</span></li>
<li class="li1"><span class="s1">Supports changing ViewController&#8217;s Status Bar Style at runtime.</span></li>
<li class="li1">Showing directions with the Crosslight Location Service.</li>
</ul>
<p>If you haven&#8217;t figured out why we made this sample, I highly recommend you to check out the my previous <a href="http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/" target="_blank">blog post</a> where I highlight many parts of the sample that can be fixed and enhanced to produce a better app with Crosslight.</p>
<p>In the next blogpost, I&#8217;m going to elaborate more on the interesting scenarios found in this sample and the code behind to achieve each scenarios gracefully, which will hopefully be of great tips for seasoned and pro Crosslight developers alike.</p>
<p>Stay tuned,<br />
Nicholas Lie</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2016/04/crosslight-field-service-is-now-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Started with Premier Studio 2016</title>
		<link>http://blog.intersoftsolutions.com/2016/03/getting-started-with-premier-studio-2016/</link>
		<comments>http://blog.intersoftsolutions.com/2016/03/getting-started-with-premier-studio-2016/#comments</comments>
		<pubDate>Mon, 07 Mar 2016 11:52:18 +0000</pubDate>
		<dc:creator><![CDATA[Nicholas Lie]]></dc:creator>
				<category><![CDATA[2016 R1]]></category>
		<category><![CDATA[ClientUI]]></category>
		<category><![CDATA[Crosslight]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[Reference Samples]]></category>
		<category><![CDATA[WebUI]]></category>
		<category><![CDATA[Get Started]]></category>
		<category><![CDATA[Premier Studio 2016]]></category>
		<category><![CDATA[Samples]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WebUI Studio]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://blog.intersoftsolutions.com/?p=5827</guid>
		<description><![CDATA[In our past releases, getting started with Intersoft Premier Studio was quite inconvenience and tedious. With tons of shortcuts to choose from, you can be easily confused where to start from. In this release, we think hard on what&#8217;s the best possible scenario for users [...]]]></description>
				<content:encoded><![CDATA[<img width="604" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/03/getting-started-604x270.png" class="attachment-post-thumbnail wp-post-image" alt="getting-started" style="float:right; margin:0 0 10px 10px;" /><p>In our past releases, getting started with Intersoft Premier Studio was quite inconvenience and tedious. With tons of shortcuts to choose from, you can be easily confused where to start from. In this release, we think hard on what&#8217;s the best possible scenario for users to get started quickly with our products. At the end, we came to a conclusion: <strong>samples</strong>.</p>
<p><img class="aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/03/getting-started.png" alt="getting-started.png" width="700" align="middle" /></p>
<p>Samples provide a hands-on experience for developers as well as practical code for implementing the desired features to their applications. We&#8217;ve made it super easy for you to run the samples and opening the sample solution in Visual Studio, all right from a single web interface.</p>
<h1>Introducing the New Get Started Experience</h1>
<p>When you install Premier Studio, you&#8217;ll get the following dialog box.</p>
<p><img class="aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/03/dialog-box.png" alt="dialog-box.png" width="700" align="middle" /></p>
<p>When you click Finish with the checkbox ticked, a new browser will be opened, this will lead you to a landing page that will help you get started with our products (assuming that you have a working internet connection).</p>
<p><img class="alignnone size-full wp-image-5967" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/03/getting-started2.png" alt="getting-started2.png" width="1326" height="814" /></p>
<p>Simply select one of the products you would like to get started with, you will be immediately presented with the available samples designed in stunning card view interface. Then hover on the samples you&#8217;re interested in to perform an action.</p>
<p>Note that the Get Started experience works only on Windows with Premier Studio (2016 and above) properly installed.</p>
<h1>Getting Started with WebUI</h1>
<p>Nothing explains better than a video. Here&#8217;s a 1-minute video experience on how to get started with WebUI through the new Get Started experience.</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='604' height='370' src='http://www.youtube.com/embed/FTLtFX4ZTsI?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0' allowfullscreen='true'></iframe></span></p>
<p>The samples for WebUI is categorized according to its respective controls, so you can quickly jump to the controls you&#8217;re interested in.</p>
<p><img class="aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/03/webui.png" alt="webui.png" width="700" align="middle" /></p>
<p>When you hover on a sample, you&#8217;ll get the following experience.</p>
<p><img class="aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/03/webgrid-first-experience1.png" alt="webgrid-first-experience.png" width="500" align="middle" /></p>
<p>When you click on <strong>Open Solution</strong>, a new Visual Studio instance that contains the sample will be automatically opened. When you click on <strong>Run Sample</strong>, a locally-running sample for that particular sample will be launched. Clicking on Learn More takes you to the WebGrid documentation.</p>
<h1>Getting Started with Crosslight</h1>
<p>And here&#8217;s a minute-and-a-half video that shows the Get Started experience with Crosslight.</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='604' height='370' src='http://www.youtube.com/embed/2kwHgjbawqI?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0' allowfullscreen='true'></iframe></span></p>
<p>The samples for Crosslight are categorized as follows:</p>
<p><img class="aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/03/crosslight.png" alt="crosslight.png" width="700" align="middle" /></p>
<ul>
<li><strong>Basic Samples</strong>: These are the basic and recommended samples if you&#8217;re just starting out with Crosslight. It contains the basic fundamentals of Crosslight development, such as MVVM pattern, data binding, display data list, perform CRUD operation, and more.</li>
<li><strong>App Samples</strong>: These samples showcases small, working apps made with Crosslight.</li>
<li><strong>UI Samples</strong>: These samples showcases various UI components available in Crosslight, such as Crosslight Charting, Crosslight Material Design, Crosslight Signature Pad, Crosslight Maps, Crosslight View Slider and more.</li>
<li><strong>Services Samples</strong>: These samples demonstrates how you can work with Crosslight services which are built-in to the Crosslight ViewModel and other library extensions as well. For example, performing calls, scanning barcode, sending emails, sharing content to social media and more.</li>
<li><strong>Data Samples</strong>: These samples shows you how to work with data-related operations with the built-in repositories and how they work together in harmony with the open-source Crosslight App Framework.</li>
</ul>
<p>When you hover on an item, you&#8217;ll be presented with the following.</p>
<p><img class="aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/03/mvvm-samples.png" alt="mvvm-samples.png" width="500" align="middle" /></p>
<p>When you click on <strong>Download</strong>, you&#8217;ll immediately get a zip file that is immediately runnable using Xamarin Studio or Visual Studio (works on either Mac or Windows). If you click on <strong>Learn More</strong>, you&#8217;ll be taken to the respective sample page in the Developer Center.</p>
<h1>Getting Started with ClientUI</h1>
<p>Last but not least, here&#8217;s another minute-and-a-half video that shows the Get Started experience with ClientUI.</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='604' height='370' src='http://www.youtube.com/embed/mgK21rwJkj0?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0' allowfullscreen='true'></iframe></span></p>
<p>The samples for ClientUI are categorized as follows.</p>
<p><img class="aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/03/clientui.png" alt="clientui.png" width="700" align="middle" /></p>
<p>The categorization follows the previous categories available in the <a href="http://live.clientui.com" target="_blank">ClientUI Live Samples</a>. When hovering to an item, you&#8217;ll be presented with the following experience.</p>
<p><img class="aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2016/03/clientui-item.png" alt="clientui-item.png" width="700" align="middle" /></p>
<p>If the sample has a WPF counterpart, then an additional combo box will be displayed for WPF, as well as the <strong>Run Sample</strong> option. If the WPF counterpart is not available, then the combo box will not appear. When clicking on the <strong>Open Solution</strong>, then the Silverlight solution will be opened. Similarly, clicking on <strong>Run Sample</strong> will run the Silverlight sample locally on your computer.</p>
<h1>Conclusion</h1>
<p>We hope you enjoyed the new Getting Started experience available in this new release. Should you have any feedback with the Getting Started experience, feel free to <a href="http://www.intersoftsolutions.com/#livechat" target="_blank">initiate a chat with us</a>, and we’ll be more than happy to assist you for the best on-boarding experience.</p>
<p>Till next post,<br />
Nicholas Lie</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2016/03/getting-started-with-premier-studio-2016/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redesigning Xamarin Field Service Sample with Crosslight &#8211; Part 1</title>
		<link>http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/</link>
		<comments>http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/#comments</comments>
		<pubDate>Fri, 20 Nov 2015 07:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Nicholas Lie]]></dc:creator>
				<category><![CDATA[Crosslight]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Reference Samples]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Design Pattern]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[UI Design]]></category>
		<category><![CDATA[UX Design]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Xamarin]]></category>

		<guid isPermaLink="false">http://blog.intersoftsolutions.com/?p=4878</guid>
		<description><![CDATA[Hi guys, Nicholas here. I’m back with another blog post, this time covering the Xamarin Field Service sample. Many of you have asked: “How can I transform the Xamarin Field Service sample using Crosslight?” And that tickled something in the back of our minds. This [...]]]></description>
				<content:encoded><![CDATA[<img width="604" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabList-604x270.png" class="attachment-post-thumbnail wp-post-image" alt="TabList" style="float:right; margin:0 0 10px 10px;" /><p>Hi guys, Nicholas here. I’m back with another blog post, this time covering the <a href="https://xamarin.com/prebuilt/field-service" target="_blank">Xamarin Field Service</a> sample. Many of you have asked: “How can I transform the Xamarin Field Service sample using Crosslight?” And that tickled something in the back of our minds. This could be our next Crosslight reference sample! So we embarked on a quest to transform the Xamarin Field Service completely using Crosslight and see how much we can do about it.</p>
<h1>Tablet-only Design?</h1>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/1446536283_full1.png"><img class=" size-large wp-image-4941 aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/1446536283_full1-1024x378.png" alt="1446536283_full" width="604" height="223" /></a></p>
<p style="text-align: center;"><em>Xamarin Field Service on Android, iPad and Windows 8.1</em></p>
<p>Before delving further, we need to take a step back and have a good look on overall UI and UX design of this app. When talking about cross-platform, yes, it would be valid to say that this app works cross-platform. But it only works on tablets. Why can’t the design be brought to the phone as well?</p>
<p>Let me share with you some of the design quirks found in the app, and how we decided to transform the experience in overall. We’re not talking about any code stuff first in this post. Just pure, plain UX, then we’ll move on to code sharing aspects in the next post.</p>
<h2>The Assignments Screen</h2>
<p>The assignments screen. At a first glance, nothing seems to be wrong with it. So, we decided to add additional swipe gesture touches to it, to change statuses quickly. Overall, I’m totally fine with it.</p>
<h2>The Assignment Detail</h2>
<p>Until it pushes the entire screen to display the assignment detail. Let&#8217;s take a look at Xamarin&#8217;s Field Service push navigation.</p>
<div style="text-align: center;">
<div style="width: 604px; " class="wp-video"><!--[if lt IE 9]><script>document.createElement('video');</script><![endif]-->
<video class="wp-video-shortcode" id="video-4878-1" width="604" height="311" loop="1" autoplay="1" preload="metadata" controls="controls"><source type="video/mp4" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/iPad-Transition.mp4?_=1" /><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/iPad-Transition.mp4">http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/iPad-Transition.mp4</a></video></div>
<p><em>Xamarin Field Service &#8211; iPad Push Navigation</em></p>
</div>
<p>The transition between the assignments list and the assignment detail screen. It’s quite rare to see an iPad app performs a push navigation in such manner, especially in a list navigation. Most mobile apps will present itself with a SplitView on iPad, in which the push navigation will be contained within itself, not navigating the entire view. This is apparent in several iPad’s default apps, such as Mail, Contacts, Messages and Notes. I’m not saying this design is incorrect. But what if there is a way to enhance the navigation experience, much like the Apple’s native experience?</p>
<p><strong>Problem</strong>: User experiences abrupt changes when navigating to detail view, hindering the user experience.<strong><br />
Objective</strong>: Show the detail view without abrupt, major changes in screen presentation.<br />
<strong>Considerations</strong>: Obviously, we can’t add a SplitView to do that.<br />
<strong>Our solution:</strong> Crosslight Dialog Presenter.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/ipad-dialog-presenter.png"><img class="alignnone size-large wp-image-5029" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/ipad-dialog-presenter-1024x891.png" alt="ipad-dialog-presenter" width="604" height="526" /></a></p>
<p style="text-align: center;"><em>Crosslight Field Service &#8211; iPad Dialog Presenter</em></p>
<p>The Dialog Presenter is be a perfect candidate to replace the push navigation. By displaying a beautiful translucent modal panel from the right-hand side to the center that covers third-quarter of the screen, we managed to simulate the “content navigation” found in split view apps, enhancing the overall detail navigation experience. To close the dialog presenter, users can simply tap on the left hand side of the screen, outside the dialog presenter.</p>
<blockquote><p>Have you managed to get started with the Dialog Presenter? If not, I’ve covered how to <a href="http://blog.intersoftsolutions.com/2015/11/getting-started-with-crosslight-dialog-presenter/" target="_blank">get started with the Dialog Presenter</a> in another post.</p></blockquote>
<p>Reusing the same view, the dialog presenter&#8217;s content can be easily adapted to iPhone&#8217;s more compact screen and uses simple push navigation, as follows.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/iphone-summary1.png"><img class=" wp-image-5020 aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/iphone-summary1-630x1024.png" alt="iphone-summary" width="300" height="488" /></a></p>
<p style="text-align: center;"><em>Crosslight Field Service &#8211; iPhone Push Navigation</em></p>
<p style="text-align: left;">Crosslight is all about reusability, efficiency and design pattern consistency. You can easily design views that work perfectly in either phone or tablets, thanks to its robust, thoughtfully engineered navigation service.</p>
<h2>Displaying the Navigation Items</h2>
<p>Okay, we’ve managed to solve the list navigation experience. But how about containing all those navigation items in the detail view of our dialog presenter? Currently, we have 7 items: <strong>Summary</strong>, <strong>Map</strong>, <strong>Items</strong>, <strong>Labor Hours</strong>, <strong>Expenses</strong>, <strong>Documents</strong>, <strong>Confirmations</strong>. I’m not including History since it’s not supported by Xamarin just yet.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/2navigation1.png"><img class="alignnone wp-image-4991" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/2navigation1.png" alt="2navigation" width="700" height="500" /></a></p>
<p style="text-align: center;"><em>Xamarin Field Service &#8211; iPad Navigation List</em></p>
<p><strong>Problem</strong>: The navigation items takes up too much space and exceeds the 5-items-limit for the tabs.<strong><br />
Objective</strong>: Display the navigation items inside the dialog presenter, while still maintaining a native and pleasant iPad UX.<br />
<strong>Considerations</strong>: Can we simplify the navigation items even futher?<br />
<strong>Our solution</strong>: Tabbed navigation.</p>
<p>Up to this point, you might have several objections in mind, such as: “What if Xamarin decided to bring that History menu back up and even adding more modules to the app? Your tabbed solution will not be able to solve that issue, no?” Yes. We admit it won’t be able fit more items inside it, as Apple has provided a maximum threshold of 5 items of the tab controllers.</p>
<p>However, we can improve the navigation item categorization to include lesser items and display them as needed. Remember, as a UI/UX designer, you have to keeps things simple for your users. And contextual. Imagine you’re designing the app for your mom, therefore, you have to keep it as simple as possible.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/2navigation2.png"><img class="alignnone wp-image-4992" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/2navigation2.png" alt="2navigation2" width="700" height="774" /></a></p>
<p style="text-align: center;"><em>Crosslight Field Service &#8211; iPad Tabs</em></p>
<p>Our answer was to reduce the number of navigation items into maximum of 5 items: <strong>Summary</strong>, <strong>Items</strong>, <strong>Labor Hours</strong>, <strong>Expenses</strong>, and <strong>Confirmations</strong>. The <strong>Map</strong> and <strong>Documents</strong> can easily fit into the <strong>Summary</strong> tab. It all makes sense, considering that the <strong>Map</strong> and <strong>Documents</strong> do not contain any data entry capabilities and does not require any user interactions whatsoever. In other words, they’re designed to be <em>read-only</em>, which would fit the <strong>Summary</strong> tab. Why use 7 tabs if you can manage with just 5? And here&#8217;s how it looks on the iPhone.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/iphonesummary-2.png"><img class=" wp-image-5024 aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/iphonesummary-2-722x1024.png" alt="iphonesummary-2" width="300" height="425" /></a></p>
<p style="text-align: center;"><em>Crosslight Field Service &#8211; iPhone Tabs</em></p>
<p>As for the <strong>History</strong> problem, since users can&#8217;t perform any data interaction with it, you can simply add a <strong>History</strong> icon button within the <strong>Summary</strong> tab that displays the previous records related with the assignment, or if you would like to separate each the list of <strong>Documents</strong> and list of <strong>History </strong>records, you can introduce a segmented button, like the one found in Apple&#8217;s App Store Purchased screen, especially the &#8220;<strong>All</strong>&#8221; and &#8220;<strong>Not on This iPad</strong>&#8220;.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/ipad-app-store-purchased.png"><img class="alignnone size-large wp-image-5023" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/ipad-app-store-purchased-1024x776.png" alt="ipad-app-store-purchased" width="604" height="458" /></a></p>
<p style="text-align: center;"><em>App Store &#8211; iPad &#8211; Purchased</em></p>
<h2>The Summary Screen</h2>
<p>When I think of <strong>Summary</strong>, I always assume that the user expects the view to contain <em>read-only</em><b> </b>information. For that same reason, the <strong>Summary</strong> screen is perfect to display static list of items, in which the user can perform only one action upon it.</p>
<p><img class=" wp-image-5039 aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/xamarin-map-1024x617.png" alt="xamarin-map" width="700" height="422" /></p>
<p style="text-align: center;"><em>Xamarin Field Service &#8211; iPad &#8211; Summary</em></p>
<p><strong>Problem</strong>: The number of items to be included tab navigation can only contain max. 5 items.<strong><br />
Objective</strong>: Reduce the number of navigation items and display relevant information in a simpler manner.<br />
<strong>Considerations</strong>: Decide which navigation menus that don&#8217;t need user interaction.<br />
<strong>Our solution</strong>: Put <strong>Maps</strong> and <strong>Documents</strong> inside the Summary screen.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/ipad-summary-map.png"><img class=" size-large wp-image-5040 aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/ipad-summary-map-1024x602.png" alt="ipad-summary-map" width="604" height="355" /></a></p>
<p>&nbsp;</p>
<p style="text-align: center;"><em>Crosslight Field Service &#8211; Maps and Documents in Summary</em></p>
<p>Therefore, we decide to inject <strong>Map</strong> and <strong>Documents</strong> inside the <strong>Summary</strong> screen. Including the <strong>Map</strong> was pretty simple. We display then <strong>Map</strong> on the top header, along with other relevant information about the customer. If users were to click on the map view, then Apple Maps will be fired up with a placemark showing more details about the location in the form of map annotations. As for the <strong>Documents</strong>, it is achievable simply by adding the documents list at the very bottom of the <strong>Summary</strong> page.</p>
<h2>The Items Screen</h2>
<p>How many times have you encountered an iPad app with adding and editing experience that is not located in the navigation bar? I’m sure, not much. For me, it’s my first time.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/items-old.png"><img class=" wp-image-5031 aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/items-old.png" alt="items-old" width="700" height="490" /></a></p>
<p style="text-align: center;"><em>Xamarin Field Service &#8211; Items</em></p>
<p>And because of that, I’m pretty sure this is not Apple’s standard design.</p>
<p><strong>Problem</strong>: The user actions are not part of the navigation bar and it&#8217;s confusing.<br />
<strong>Objective</strong>: Provide a method for the user to display the relevant information as needed.<br />
<strong>Considerations</strong>: What does the user usually expect when perform user actions?<br />
<strong>Our solution</strong>: By removing the sticky header altogether, we&#8217;ve managed to place the user actions where it truly belongs.</p>
<p style="text-align: center;"><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Item-Search.png"><img class="alignnone size-large wp-image-5185" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Item-Search-1024x768.png" alt="Item-Search" width="604" height="453" /></a></p>
<p style="text-align: center;"><em>Crosslight Field Service &#8211; Items</em></p>
<p>The addition and editing of items generally occurs from the navigation bar, in which we have done so with the dialog presenter approach. Since the Items screen is similar to the <strong>Labor Hours</strong> and <strong>Expenses</strong> screen, we’re taking the same approach to both of the screens.</p>
<h2>The Sticky Header</h2>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/xamarin-sticky-header.png"><img class=" wp-image-5034 aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/xamarin-sticky-header-1024x878.png" alt="xamarin-sticky-header" width="700" height="600" /></a></p>
<p style="text-align: center;"><em>Xamarin Field Service &#8211; Sticky Header</em></p>
<p><strong>Problem</strong>: With the sticky header gone, what is the best place to put it?<br />
<strong>Objective</strong>: Find an alternative to place the sticky header with global accessibility.<br />
<strong>Considerations</strong>: The information should be globally accessible, anytime, anywhere.<br />
<strong>Our solution</strong>: Provide a header callout that displays the removed information.</p>
<p>In my personal opinion, it’s the &#8220;sticky header” in the content detail view is what breaks the overall iPad experience. This is why we have removed this view and opted to stick it in only the <strong>Summary</strong> view, the correct place where it belongs. Users also do not have to see this information the whole time.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/ipad-callout.png"><img class="alignnone size-large wp-image-5035" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/ipad-callout-1024x913.png" alt="ipad-callout" width="604" height="539" /></a></p>
<p style="text-align: center;"><em>Crosslight Field Service &#8211; iPad</em></p>
<p>However, if the user wants to see that quick information, he can just tap on the top header anytime and a callout will present the temporary information he needed.</p>
<h2>The &#8220;Active Work&#8221; Indicator/Player</h2>
<p>Before we proceed, we might have forgotten one other thing. The “active work” indicator/player. If you notice, when the assignment is marked as Active, the player pops out from the bottom of the screen to let the user know that the current assignment is active and he can pause at any time. This will count automatically as a new entry in the <strong>Labor Hours</strong> screen.</p>
<p><strong>Problem</strong>: Display globally-available information that shows the current work is active that adheres to Apple&#8217;s standard user experience.<strong><br />
Objective</strong>: Display the “active work” indicator/player in the dialog presenter content detail.<br />
<strong>Considerations</strong>: It has to be global (user should be able to see it all the time). The dialog presenter content is already cramped up. Where would be the correct place to put the view?</p>
<p>Before I present you with our approach to the above problem, I want you to think how to solve this problem. Think of all the possible places and approaches to tackle this problem. And yes, Apple did have this exact same problem in one of their apps. Can you guess what the app is?</p>
<p>Did you come up with any solution to the above problem? If not, let me tell you what <strong>our solution</strong> is: <strong>Apple’s Music Player View</strong>.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/applemusic.png"><img class="alignnone wp-image-4998" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/applemusic-1024x652.png" alt="applemusic" width="700" height="446" /></a></p>
<p style="text-align: center;"><em>Apply Music &#8211; Player</em></p>
<p>Think about it. The Music app introduced in iOS 8.4 has this exact same problem. When the music is playing, how can Apple show the user on what music is playing, globally, and whether the user can perform any actions upon it?</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/ipad-player.png"><img class=" wp-image-5036 aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/ipad-player-1024x884.png" alt="ipad-player" width="700" height="605" /></a></p>
<p style="text-align: center;"><em>Crosslight Field Service &#8211; Active Work View</em></p>
<p>Yes, we dealt with the problem the same way. Both of the solutions are consistent in iPhone and iPad.</p>
<h2>The Confirmation Screen</h2>
<p>The last, but not the least view in the app: the confirmation screen. This screen also presents quite a challenge to be redesigned and optimized.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/9confirm-before.png"><img class=" size-full wp-image-4983 aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/9confirm-before.png" alt="9confirm-before" width="938" height="714" /></a></p>
<p style="text-align: center;"><em>Xamarin Field Service &#8211; Confirmation</em></p>
<p>Take a look at the design above. And imagine running it on a phone.<br />
The design is quite tricky to address, since it has one list and a signature pad.</p>
<p><strong>Problem</strong>: The screen&#8217;s design cannot be adapted to phones.<strong><br />
Objective</strong>: Revamp the screen in such a way that will accommodate users running on tablets and phones.<br />
<strong>Considerations</strong>: The vertical-scrolling list might be a problem.<br />
<strong>Our solution</strong>: Change the vertical-scrolling list into a horizontal-scrolling list and add the signature pad directly beneath it.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/8confirmation1.png"><img class=" wp-image-4996 aligncenter" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/8confirmation1-1024x660.png" alt="8confirmation" width="700" height="451" /></a></p>
<p style="text-align: center;"><em>Crosslight Field Service &#8211; Confirmation Screen</em></p>
<p>Therefore, we’ve elegantly redefined how things work in the <strong>Confirmation</strong> screen by making the <em>Photos</em> section acts as a carousel view with <em>Signature Pad</em> placed directly underneath it. This way, it can work on smaller screens like phones.</p>
<h1>How about Android?</h1>
<p>Android fans, do not fret. Let&#8217;s take a look at the Android designs of the Field Service app.</p>
<p>Here&#8217;s a gallery of how it looks on the phone.</p>

<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/androidphone-expenses-popup/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Expenses-Popup-150x150.png" class="attachment-thumbnail" alt="AndroidPhone-Expenses-Popup" data-attachment-id="5041" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Expenses-Popup.png" data-orig-size="720,1280" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="AndroidPhone-Expenses-Popup" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Expenses-Popup-169x300.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Expenses-Popup-576x1024.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/androidphone-expenses/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Expenses-150x150.png" class="attachment-thumbnail" alt="AndroidPhone-Expenses" data-attachment-id="5042" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Expenses.png" data-orig-size="720,1280" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="AndroidPhone-Expenses" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Expenses-169x300.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Expenses-576x1024.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/androidphone-items-popup/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-items-popup-150x150.png" class="attachment-thumbnail" alt="AndroidPhone-items-popup" data-attachment-id="5043" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-items-popup.png" data-orig-size="720,1280" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="AndroidPhone-items-popup" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-items-popup-169x300.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-items-popup-576x1024.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/androidphone-items/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-items-150x150.png" class="attachment-thumbnail" alt="AndroidPhone-items" data-attachment-id="5044" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-items.png" data-orig-size="720,1280" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="AndroidPhone-items" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-items-169x300.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-items-576x1024.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/androidphone-labor-popup/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Labor-Popup-150x150.png" class="attachment-thumbnail" alt="AndroidPhone-Labor-Popup" data-attachment-id="5045" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Labor-Popup.png" data-orig-size="720,1280" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="AndroidPhone-Labor-Popup" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Labor-Popup-169x300.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Labor-Popup-576x1024.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/androidphone-labor/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Labor-150x150.png" class="attachment-thumbnail" alt="AndroidPhone-Labor" data-attachment-id="5046" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Labor.png" data-orig-size="720,1280" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="AndroidPhone-Labor" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Labor-169x300.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Labor-576x1024.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/androidphone-list/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-list-150x150.png" class="attachment-thumbnail" alt="AndroidPhone-list" data-attachment-id="5047" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-list.png" data-orig-size="720,1280" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="AndroidPhone-list" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-list-169x300.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-list-576x1024.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/androidphone-login/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Login-150x150.png" class="attachment-thumbnail" alt="AndroidPhone-Login" data-attachment-id="5048" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Login.png" data-orig-size="720,1280" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="AndroidPhone-Login" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Login-169x300.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-Login-576x1024.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/androidphone-map/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-map-150x150.png" class="attachment-thumbnail" alt="AndroidPhone-map" data-attachment-id="5049" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-map.png" data-orig-size="720,1280" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="AndroidPhone-map" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-map-169x300.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-map-576x1024.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/androidphone-summary/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-summary-150x150.png" class="attachment-thumbnail" alt="AndroidPhone-summary" data-attachment-id="5050" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-summary.png" data-orig-size="720,1280" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="AndroidPhone-summary" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-summary-169x300.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhone-summary-576x1024.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/androidphoneconfirmation/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhoneconfirmation-150x150.png" class="attachment-thumbnail" alt="AndroidPhoneconfirmation" data-attachment-id="5051" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhoneconfirmation.png" data-orig-size="720,1280" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="AndroidPhoneconfirmation" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhoneconfirmation-169x300.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/AndroidPhoneconfirmation-576x1024.png" /></a>

<p>And here&#8217;s how it looks on Android tablets.</p>

<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/tabconfirmation/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabConfirmation-150x150.png" class="attachment-thumbnail" alt="TabConfirmation" data-attachment-id="5053" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabConfirmation.png" data-orig-size="1280,800" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="TabConfirmation" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabConfirmation-300x188.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabConfirmation-1024x640.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/tabexpense-popup/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabExpense-Popup-150x150.png" class="attachment-thumbnail" alt="TabExpense-Popup" data-attachment-id="5054" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabExpense-Popup.png" data-orig-size="1280,800" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="TabExpense-Popup" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabExpense-Popup-300x188.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabExpense-Popup-1024x640.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/tabexpense/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabExpense-150x150.png" class="attachment-thumbnail" alt="TabExpense" data-attachment-id="5055" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabExpense.png" data-orig-size="1280,800" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="TabExpense" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabExpense-300x188.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabExpense-1024x640.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/tabitem-popup/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabItem-Popup-150x150.png" class="attachment-thumbnail" alt="TabItem-Popup" data-attachment-id="5056" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabItem-Popup.png" data-orig-size="1280,800" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="TabItem-Popup" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabItem-Popup-300x188.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabItem-Popup-1024x640.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/tablabor-popup/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabLabor-popup-150x150.png" class="attachment-thumbnail" alt="TabLabor-popup" data-attachment-id="5057" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabLabor-popup.png" data-orig-size="1280,800" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="TabLabor-popup" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabLabor-popup-300x188.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabLabor-popup-1024x640.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/tablabor/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabLabor-150x150.png" class="attachment-thumbnail" alt="TabLabor" data-attachment-id="5058" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabLabor.png" data-orig-size="1280,800" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="TabLabor" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabLabor-300x188.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabLabor-1024x640.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/tablist/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabList-150x150.png" class="attachment-thumbnail" alt="TabList" data-attachment-id="5059" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabList.png" data-orig-size="1280,800" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="TabList" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabList-300x188.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabList-1024x640.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/tablogin/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabLogin-150x150.png" class="attachment-thumbnail" alt="TabLogin" data-attachment-id="5060" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabLogin.png" data-orig-size="1280,800" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="TabLogin" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabLogin-300x188.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabLogin-1024x640.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/tabmap/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabMap-150x150.png" class="attachment-thumbnail" alt="TabMap" data-attachment-id="5061" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabMap.png" data-orig-size="1280,800" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="TabMap" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabMap-300x188.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabMap-1024x640.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/tabsummary-popup/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabSummary-Popup-150x150.png" class="attachment-thumbnail" alt="TabSummary-Popup" data-attachment-id="5062" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabSummary-Popup.png" data-orig-size="1280,800" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="TabSummary-Popup" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabSummary-Popup-300x188.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabSummary-Popup-1024x640.png" /></a>
<a href='http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/tabsummary/'><img width="150" height="150" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabSummary-150x150.png" class="attachment-thumbnail" alt="TabSummary" data-attachment-id="5063" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabSummary.png" data-orig-size="1280,800" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="TabSummary" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabSummary-300x188.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/TabSummary-1024x640.png" /></a>

<p>Umm, wait, the images above look very similar with iOS rather than Android, particularly the <em>swipe-to-action</em> screens. Could it be possibly that I attach wrong images, you might asked. Nope! We&#8217;ve great surprises for you, Android fans! Stay tuned for my answer in the next post.</p>
<h1>Wrapping Up</h1>
<p>I hope this post may give you meaningful insights on better design for cross-platform, especially one that works for both tablets and phones. By streamlining the design and user flow at the beginning, jumping into development becomes much an easier task with clearer goal in mind.</p>
<blockquote><p>If you haven&#8217;t try out Crosslight, you can quickly jump start by requesting your free 30 day trial <a href="http://intersoftsolutions.com/RequestTrial">here</a>. You will be guided by our consultant team during your evaluation period.</p></blockquote>
<p>In the next post, we’ll see how can we use Crosslight to create this app and make it work across all platforms of different screen sizes and see how much code for this app can be optimized to work for multiple platforms.</p>
<h1>Update</h1>
<p>Read the <a href="http://blog.intersoftsolutions.com/2016/04/redesigning-xamarin-field-service-sample-with-crosslight-part-2/" target="_blank">part 2 here</a>, which contains highlights of the finished sample along with snippet codes and detailed explanations.</p>
<p>Till next post,<br />
Nicholas Lie</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2015/11/redesigning-xamarin-field-service-sample-with-crosslight/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
<enclosure url="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/iPad-Transition.mp4" length="569039" type="video/mp4" />
		</item>
		<item>
		<title>Extending Crosslight Form Builder</title>
		<link>http://blog.intersoftsolutions.com/2015/11/extending-crosslight-form-builder-2/</link>
		<comments>http://blog.intersoftsolutions.com/2015/11/extending-crosslight-form-builder-2/#comments</comments>
		<pubDate>Tue, 17 Nov 2015 07:00:18 +0000</pubDate>
		<dc:creator><![CDATA[Nicholas Lie]]></dc:creator>
				<category><![CDATA[Crosslight]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Reference Samples]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[form builder]]></category>
		<category><![CDATA[general]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[tips and tricks]]></category>

		<guid isPermaLink="false">http://blog.intersoftsolutions.com/?p=5101</guid>
		<description><![CDATA[Since you’ve managed to get started with Crosslight Form Builder, let’s move on a bit to see how we can extend the capabilities of the Crosslight Form Builder beyond its original capabilities. In this post we’re going to learn how to add an option to [...]]]></description>
				<content:encoded><![CDATA[<img width="604" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Untitled.001-604x270.png" class="attachment-post-thumbnail wp-post-image" alt="Untitled.001" style="float:right; margin:0 0 10px 10px;" data-attachment-id="5108" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Untitled.001.png" data-orig-size="1024,768" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Untitled.001" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Untitled.001-300x225.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Untitled.001-1024x768.png" /><p>Since you’ve managed to <a href="http://blog.intersoftsolutions.com/2015/11/getting-started-with-crosslight-form-builder/">get started with Crosslight Form Builder</a>, let’s move on a bit to see how we can extend the capabilities of the Crosslight Form Builder beyond its original capabilities. In this post we’re going to learn how to add an option to choose the driver in <a href="http://git.intersoftsolutions.com/projects/CT/repos/crosslightformbuilder/browse">CrosslightFormBuilder sample</a>, as well as showing a custom view with the driver’s photo in the form, with the driver&#8217;s phone number, which when tapped, will initiate a call to the driver.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Untitled.001.png"><img class="alignnone size-large wp-image-5108" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Untitled.001-1024x768.png" alt="Untitled.001" width="604" height="453" /></a></p>
<p>&nbsp;</p>
<p>There are two major enhancements to be done:</p>
<ul>
<li>Providing driver selection</li>
<li>Providing custom driver view</li>
</ul>
<h1>Providing Driver Selection</h1>
<p>Let&#8217;s try to create the <strong>Driver</strong> selection. At a quick overview, here&#8217;s a list of subtasks to be done in order to achieve this functionality:</p>
<ul>
<li>Prepare the <strong>Driver</strong> model</li>
<li>Prepare the <strong>Driver Repository</strong> that populates the list of drivers.</li>
<li>Prepare the <strong>DriverListViewModel </strong>that populates the items from the repository.</li>
<li>Update the <strong>Form Metadata </strong>and connect the <strong>DriverListViewModel</strong>.</li>
</ul>
<p>Let&#8217;s go through each one, step-by-step.</p>
<h2>Prepare the Driver model</h2>
<p>To create the <strong>Driver</strong> model, let&#8217;s create a new file named <em>Driver.cs</em> under <strong>CrosslightFormBuilder.Core/Models</strong> folder. The contents are as follows.</p><pre class="crayon-plain-tag">#region Usings

using CrosslightFormBuilder.Models;

#endregion

namespace CrosslightFormBuilder.Core.Models
{
    public class Driver : ModelBase
    {
        #region Constructors

        public Driver(int id, string name, string phone, byte[] image)
        {
            this.Id = id;
            this.Name = name;
            this.Phone = phone;
            this.Image = image;
        }

        #endregion

        #region Fields

        private int _id;
        private byte[] _image;
        private string _name;
        private string _phone;

        #endregion

        #region Properties

        public int Id
        {
            get { return _id; }
            set
            {
                if (_id != value)
                {
                    _id = value;
                    OnPropertyChanged("Id");
                }
            }
        }

        public byte[] Image
        {
            get { return _image; }
            set
            {
                if (_image != value)
                {
                    _image = value;
                    OnPropertyChanged("Image");
                }
            }
        }

        public string Name
        {
            get { return _name; }
            set
            {
                if (_name != value)
                {
                    _name = value;
                    OnPropertyChanged("Name");
                }
            }
        }

        public string Phone
        {
            get { return _phone; }
            set
            {
                if (_phone != value)
                {
                    _phone = value;
                    OnPropertyChanged("Phone");
                }
            }
        }

        #endregion
    }
}</pre><p>The Driver model contain 4 MVVM-ready properties: <strong>ID</strong> (<em>int</em>), <strong>Image</strong> (<em>byte[]</em>), <strong>Name </strong>(<em>string</em>), and <strong>Phone</strong> (<em>string</em>). That&#8217;s basically it. I&#8217;ve also prepared a constructor for quick and easy initialization. Now your Driver model is ready. Let&#8217;s move on.</p>
<h2>Prepare the Driver Repository</h2>
<p>Upon reading the heading, you might have two questions: What is this repository thingy and why do I need it? The repository pattern is more of a best-practice design pattern that handles the actual data processing for your applications. A data repository for your app.</p>
<p>For example, right now your app might currently retrieve data by performing queries to a database server, then one day you decided to change the data retrieval process. Rather than making changes to each and every <em>ViewModel</em>, you can do so by just replacing the data repository. No changes in ViewModel needed. To learn more about the Repository Pattern, check out our Developer Center documentation <a href="http://developer.intersoftsolutions.com/display/crosslight/Repository+Pattern">here</a>.</p>
<p>So, let&#8217;s get started in creating our <strong>Driver repository</strong>. First thing you need to do is define the interfaces needed for the repository. Create a new interface in <em>CrosslightFormBuilder.Core/ModelServices</em>, named <strong>IDataRepository.cs</strong>, also creating the folder as necessary. The contents of the file are as follows.</p><pre class="crayon-plain-tag">public interface IDataRepository&lt;TEntity, in TKey&gt; where TEntity : class
{
    #region Methods

    TEntity Get(TKey id);
    IEnumerable&lt;TEntity&gt; GetAll();

    #endregion
}</pre><p>We&#8217;ll prepare an interface to get the <em>Driver</em> entity based on the given ID. Notice that everything is defined as generic here. Also another interface to return all entities when calling <em>GetAll()</em> method.</p>
<p>Proceed by creating the interface for the <em>Driver</em> repository in <em>CrosslightFormBuilder.Core/ModelServices </em>folder, named <strong>IDriverRepository.cs</strong>, also creating the folder as necessary.</p><pre class="crayon-plain-tag">public interface IDriverRepository : IDataRepository&lt;Driver, int&gt;
{
    #region Methods

    Driver GetByName(string name);

    #endregion
}</pre><p>There&#8217;s nothing much to see here, we simply added a new method to get the <em>Driver</em> entity by the driver&#8217;s <em>Name </em>by subclassing the previously created <em>IDataRepository</em> interface. Let&#8217;s move on by creating the concrete <em>DriverRepository</em> implementation. Create a new file called <strong>DriverRepository.cs </strong>inside <em>CrosslightFormBuilder.Core/ModelServices</em> folder.</p><pre class="crayon-plain-tag">public class DriverRepository : IDriverRepository
{
    #region Properties

    public List&lt;Driver&gt; _items { get; set; }

    #endregion

    #region Methods

    public Driver Get(int id)
    {
        return this.GetAll().FirstOrDefault(o =&gt; o.Id == id);
    }

    public IEnumerable&lt;Driver&gt; GetAll()
    {
        if (_items == null)
        {
            _items = new List&lt;Driver&gt;();
            _items.Add(new Driver(1, "John", "+123456", this.GetType().Assembly.GetManifestResourceStream("CrosslightFormBuilder.Core.Assets.john.png").ToByte()));
            _items.Add(new Driver(2, "Brad", "+134567", this.GetType().Assembly.GetManifestResourceStream("CrosslightFormBuilder.Core.Assets.brad.png").ToByte()));
            _items.Add(new Driver(2, "Charles", "+145678", this.GetType().Assembly.GetManifestResourceStream("CrosslightFormBuilder.Core.Assets.charles.png").ToByte()));
        }

        return _items;
    }

    public Driver GetByName(string name)
    {
        return this.GetAll().FirstOrDefault(o =&gt; o.Name == name);
    }

    #endregion
}</pre><p>Here, you can then provide the real implementation to retrieve the list of drivers, also getting the drivers by name and ID. The highlighted line shows how the list of <em>Drivers</em> are populated, by utilizing the constructor we&#8217;ve provided for our <em>Driver</em> model earlier. Also notice that we&#8217;ve provided the image to be used for each driver. Oh yeah, before we forget, let&#8217;s go ahead and use these images for the drivers and put it inside the <strong>CrosslightFormBuilder.Core/Assets</strong> folder, also creating the folder as needed.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/brad.png"><img class=" size-full wp-image-5118 alignleft" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/brad.png" alt="brad" width="200" height="200" /></a>  <a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/charles.png"><img class=" size-large wp-image-5119 alignleft" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/charles.png" alt="charles" width="200" height="200" /></a>  <a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/john.png"><img class=" size-large wp-image-5120 alignleft" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/john.png" alt="john" width="200" height="200" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Make sure that these images&#8217; <em>BuildAction</em> is set to <em>EmbeddedResource</em> so that they can be used in your application. Also, if you try to build the project now, you might get an error on the <em>ToByte()</em> method. To fix this, create a new file that contains an extension method to convert a <em>Stream</em> to array of bytes. Create a file named <em>StreamExtensions.cs, </em>and put it inside the <strong>CrosslightFormBuilder.Core/Extensions</strong> folder.</p><pre class="crayon-plain-tag">public static class StreamExtensions
{
    #region Methods

    public static byte[] ToByte(this Stream input)
    {
        using (MemoryStream ms = new MemoryStream())
        {
            input.CopyTo(ms);
            return ms.ToArray();
        }
    }

    #endregion
}</pre><p>A handy tip for you: these extension method provides an easy way to extend the functionalities of a certain class, that is reusable within your application. For example, if you wish to create an extension, for let&#8217;s say, converting a <em>string </em>to a <em>byte[]</em>, you can definitely do something similar to this.</p>
<p>Now that you&#8217;ve the got the repository part ready, let&#8217;s hook it up to the <em>ViewModel</em>.</p>
<h2>Prepare the DriverListViewModel</h2>
<p>Start by creating a new ViewModel file called <strong>DriverListViewModel.cs</strong> and put it inside <strong>CrosslightFormBuilder.Core/ViewModels</strong> folder. Here&#8217;s the contents of the file.</p><pre class="crayon-plain-tag">public class DriverListViewModel : ListViewModelBase&lt;Driver&gt;
{
    #region Constructors

    public DriverListViewModel()
    {
        this.SourceItems = this.Repository.GetAll().ToObservable();
    }

    #endregion

    #region Properties

    private IDriverRepository Repository
    {
        get
        {
            if (Container.Current.CanResolve&lt;IDriverRepository&gt;())
                return Container.Current.Resolve&lt;IDriverRepository&gt;();
            return new DriverRepository();
        }
    }

    #endregion
}</pre><p>Here, we populate the <em>SourceItems</em> when the <strong>DriverListViewModel</strong> is constructed, just by calling the previously created <em>GetAll()</em> method from our interface. Also notice that we&#8217;ve provided the <em>Repository</em> property which is resolved upon the property&#8217;s getter. This is also called as <em>IoC</em> (Inversion of Control). To use the <em>IoC</em> pattern, you&#8217;ll need to register the previously created <em>DriverRepository</em> to be used globally in the application. To do this, open up the <strong>AppService.cs</strong> file in the <em>CrosslightFormBuilder.Core/Infrastructure</em> folder and add this line in the constructor.</p><pre class="crayon-plain-tag">public CrosslightAppAppService(IApplicationContext context) : base(context)
{
    Container.Current.Register&lt;IDriverRepository, DriverRepository&gt;().WithLifetimeManager(new ContainerLifetime());
}</pre><p>Your <em>ViewModel</em> is now ready to be used to populate the list of <em>Drivers</em>.</p>
<h2>Update the FormMetadata</h2>
<p>Since you already have the list of drivers properly populated from the DriverListViewModel, we&#8217;ll need to modify the <strong>OrderFormMetadata</strong> a bit. From the initial <strong>OrderFormMetadata </strong>class in the <em>Order.cs </em>file, let&#8217;s modify the <strong>TaxiChoiceSection</strong> class to include the driver selection.</p><pre class="crayon-plain-tag">public class TaxiChoiceSection
{
    #region Fields

    [Display(Caption = "Car Type")]
    [Editor(EditorType.AutoDetect)]
    [Layout(Style = LayoutStyle.RightDetail)]
    public CarType CarType;

    [Editor(EditorType.Selection)]
    [SelectedItemBinding(Path = "Driver")]
    [Binding(Path = "Driver.Name")]
    [SelectionInput(SelectionMode.Single, DisplayMemberPath = "Name", ListSourceType = typeof(DriverListViewModel))]
    public Driver Driver;

    [Display(Caption = "Airport?")]
    [Editor(EditorType.Switch)]
    [Layout(Style = LayoutStyle.RightDetail)]
    public bool IsAirport;

    #endregion
}</pre><p>The highlighted lines above shows the added definition for the driver selection. Let&#8217;s inspect this line by line.</p>
<ul>
<li><em>[Editor(EditorType.Selection)]</em><br />
This determines which editor type to be used.<br />
<a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/selection.002.png"><img class="alignnone size-large wp-image-5122" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/selection.002-1024x768.png" alt="selection.002" width="604" height="453" /></a></li>
<li><em>[SelectedItemBinding(Path = &#8220;Driver&#8221;)]</em><br />
This attribute determines which binding path for the selected item used in the Form Builder. In this case, the item for the Form Builder is of type <strong>Order</strong>, which has the <strong>Driver</strong> property. That&#8217;s where we&#8217;re going to bind our selection into. (<strong>OrderViewModel.Item.Driver</strong>)</li>
<li><em>[Binding(Path = &#8220;Driver.Name&#8221;)]</em><br />
The <strong>BindingAttribute</strong> determines which property of the <strong>Driver</strong> model that is going to be displayed in the form after selection has completed.<br />
<a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/binding.png"><img class="alignnone size-full wp-image-5123" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/binding.png" alt="binding" width="491" height="232" /></a></li>
<li><em>[SelectionInput(SelectionMode.Single, DisplayMemberPath = &#8220;Name&#8221;, ListSourceType = typeof(DriverListViewModel))]</em><strong><br />
</strong>The <strong>SelectionInputAttribute </strong>determines the selection editor behavior, which <em>ViewModel</em> provides the items source for the list, as well as the property to be displayed on the list of selection, or also often known as <strong>DisplayMemberPath</strong>.<br />
<a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/selection-editor.png"><img class="alignnone size-full wp-image-5124" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/selection-editor.png" alt="selection editor" width="476" height="192" /></a></li>
</ul>
<p>By now, you&#8217;ve successfully provided a driver selection for the Form Builder. How about adding the custom view on the bottom of the form?</p>
<h1>Providing Custom Driver View</h1>
<p>After the user has selected the driver, it&#8217;s best for us to show the driver that the user has selected by providing a custom view at the bottom of the form. Let&#8217;s learn how you can use a custom view resource to be used along with the Form Builder, complete with data binding capabilities. In overall, there are several steps needed to achieve this:</p>
<ul>
<li>Provide the custom driver view for iOS</li>
<li>Update the Form Metadata</li>
<li>Provide the Binding Provider</li>
<li>Bind to ViewModel</li>
<li>Provide the custom driver view for Android</li>
</ul>
<p>Let&#8217;s go through each step, one-by-one.</p>
<h2>Provide the Custom Driver View for iOS</h2>
<p>To provide the custom driver view for iOS, all you need to do is creating a new Crosslight view for iPhone. To do this, you can utilize the item template shipped with Crosslight. In your iOS project, in the <em>Views</em> folder, right-click and add a new file. Under <strong>Crosslight</strong>, choose <strong>Crosslight iOS View for iPhone</strong>.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Screen-Shot-2015-11-13-at-6.27.32-PM.png"><img class="alignnone size-large wp-image-5125" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Screen-Shot-2015-11-13-at-6.27.32-PM-1024x669.png" alt="Screen Shot 2015-11-13 at 6.27.32 PM" width="604" height="395" /></a></p>
<p>Let&#8217;s give it a name of <strong>CallDriverButton</strong>. What this will do is Crosslight will create two files, namely <strong>CallDriverButton.xib</strong> and <strong>CallDriverButton.cs</strong>. All you need to do is create a new layout by opening the <strong>CallDriverButton.xib</strong> in <em>Xcode Interface Builder</em>.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/xcode-interface-builder.png"><img class="alignnone size-large wp-image-5126" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/xcode-interface-builder-1024x282.png" alt="xcode-interface-builder" width="604" height="166" /></a></p>
<p>Create your layout any way you want it. Just create an <em>ImageView</em>, a <em>Label</em>, and a <em>Button</em>.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/outlet1.png"><img class="alignnone size-full wp-image-5128" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/outlet1.png" alt="outlet" width="1021" height="449" /></a></p>
<p>Set the outlet for each.</p>
<ul>
<li><strong>ImageView</strong>: DriverImage</li>
<li><strong>Label</strong>: DriverName</li>
<li><strong>Button</strong>: CallButton</li>
</ul>
<p>I know, my layout looks awful. But all I really want to show you is how you can inject your own custom views into the form using the Form Builder. So, after your layout&#8217;s done, save it and go back to Xamarin Studio.</p>
<h2>Update the Form Metadata</h2>
<p>Now that your layout is done, let&#8217;s update our <strong>OrderFormMetadata</strong> a bit to include this new view in our form layout. Open up <strong>Order.cs</strong>, and let&#8217;s create a new section and call it <strong>CallDriverSection</strong>, or anything you want.</p><pre class="crayon-plain-tag">public class CallDriverSection
{
    [Editor(EditorType.Custom, CustomEditorIdentifier = "CallDriverButton")]
    public object CallDriver;
}</pre><p>Now I&#8217;d like you to pay attention how easy it is to embed a custom view into a Crosslight Form. From the definition above, you can see that we simply set the editor type to custom, then set the <strong>CustomEditorIdentifier</strong> set to <strong>CallDriverButton</strong>. In iOS, this corresponds to the name of the XIB that we&#8217;ve defined for our custom view. While on Android, this also corresponds to the name of the Android Layout file we&#8217;ve defined for our custom view layout. Simple as that.</p>
<blockquote><p>We&#8217;ve made it super easy for developers to create a beautiful platform-specific data form by combining robust pre-built editors for common input and flexible custom views for more complex user interface. This allows you to mix and match what works best for you, and let Crosslight do the magic at runtime.</p></blockquote>
<p>After you&#8217;ve created this section, let&#8217;s add this at the bottom of our form.</p><pre class="crayon-plain-tag">[Form(Title = "Order Form")]
public class OrderFormMetadata
{
    #region Fields

    [Section(Header = "Passenger Details")]
    public PassengerDetailsSection PassengerDetails;

    [Section(Header = "Taxi Choice")]
    public TaxiChoiceSection TaxiChoiceSection;

    [Section]
    public CallDriverSection CallDriverSection;

    #endregion
}</pre><p>You&#8217;re done with the form metadata. But there&#8217;s something missing. What about those outlets we&#8217;ve defined earlier? How can we bind data to it?</p>
<h2>Provide the Binding Provider</h2>
<p>Simple. It&#8217;s basically the way you would do any data binding with Crosslight. Yes, you should provide a <strong>BindingProvider</strong> for the form. In addition to automatic bindings, Form Builder also supports natural data binding process through the use of <strong>BindingProvider</strong>. In this case, let&#8217;s create a new <strong>BindingProvider</strong> called <strong>OrderBindingProvider.cs</strong>. Let&#8217;s put this under <strong>CrosslightFormBuilder.Core/BindingProviders</strong> folder. The contents of the <strong>OrderBindingProvider</strong> are as follows.</p><pre class="crayon-plain-tag">public class OrderBindingProvider : BindingProvider
{
    #region Constructors

    public OrderBindingProvider()
    {
        this.AddBinding("DriverImage", BindableProperties.ImageProperty, "Item.Driver.Image");
        this.AddBinding("DriverName", BindableProperties.TextProperty, "Item.Driver.Name");
        this.AddBinding("CallButton", BindableProperties.TextProperty, "Item.Driver.Phone");
        this.AddBinding("CallButton", BindableProperties.CommandProperty, "CallCommand");
    }

    #endregion
}</pre><p>Here, we&#8217;ve simply used the outlets we&#8217;ve defined earlier and bind them automatically to the selected Driver in the form. We&#8217;ve also added a binding from the <strong>CallButton</strong> to the <strong>CallCommand</strong> in the ViewModel, which can be used to call the driver immediately upon click. And don&#8217;t forget to use the newly created <strong>OrderBindingProvider</strong> in your <strong>OrderViewController</strong>.</p>
<blockquote><p>Again, Crosslight does a lot of magic behind the scene which enables you to define data binding in such a simple definition. Looking back, we just need to create a view, define the outlets, and provide the bindings. Crosslight takes care the connection between all those layers at runtime.</p></blockquote>
<p></p><pre class="crayon-plain-tag">[Register("OrderViewController")]
[ImportBinding(typeof(OrderBindingProvider))]
public class OrderViewController : UIFormViewController&lt;OrderViewModel&gt;
{
    ...
}</pre><p></p>
<h2>Bind to ViewModel</h2>
<p>Afterwards, in the <strong>OrderViewModel</strong>, we simply add a new DelegateCommand for the phone number.</p><pre class="crayon-plain-tag">public class OrderViewModel : EditorViewModelBase&lt;Order&gt;
{
    #region Properties

    /// &lt;summary&gt;
    /// Gets the type of the form metadata associated to the editor.
    /// &lt;/summary&gt;
    /// &lt;value&gt;
    /// The type of the form metadata.
    /// &lt;/value&gt;
    public override Type FormMetadataType
    {
        get { return typeof(OrderFormMetadata); }
    }
    
    public DelegateCommand CallCommand { get; set; }

    #endregion
    
    #region Constructors
    
    public OrderViewModel()
    {
        this.CallCommand = new DelegateCommand(ExecuteCall);
    }
    
    #endregion

    #region Methods
    
    private void ExecuteCall(object obj)
    {
        this.MobileService.Telephony.Call(this.Item.Driver.Phone);
    }

    /// &lt;summary&gt;
    /// Executes the save command.
    /// &lt;/summary&gt;
    /// &lt;param name="parameter"&gt;Parameter.&lt;/param&gt;
    protected override void ExecuteSave(object parameter)
    {
        this.Validate();

        if (!this.HasErrors)
        {
            StringBuilder passengerDetails = new StringBuilder();
            passengerDetails.Append("Name: " + this.Item.Name + "\n");
            passengerDetails.Append("Pickup Time: " + this.Item.PickupTime + "\n");
            passengerDetails.Append("Going to the airport? " + this.Item.IsAirport + "\n");
            passengerDetails.Append("Car Type: " + this.Item.CarType + "\n");
            passengerDetails.Append("Driver: " + this.Item.Driver.Name);

            this.MessagePresenter.Show(passengerDetails.ToString(), "Confirm Order", new[] {"Yes", "No"}, selection =&gt;
            {
                if (selection == 0) //Yes
                {
                    this.ToastPresenter.Show("Your order has been placed.");
                }
                else
                {
                    this.ToastPresenter.Show("You cancelled the order.");
                }
            });
        }
        else
        {
            this.MessagePresenter.Show(this.ErrorMessage);
        }

    }
    

    /// &lt;summary&gt;
    /// Called when this instance is navigated.
    /// &lt;/summary&gt;
    /// &lt;param name="parameter"&gt;Parameter.&lt;/param&gt;
    public override void Navigated(NavigatedParameter parameter)
    {
        base.Navigated(parameter);

        this.Item = new Order();
        this.Item.PickupTime = DateTime.Now;
    }

    #endregion
}</pre><p>Everything seems pretty much the same, except for the additional <strong>CallCommand</strong> we&#8217;ve defined for the <strong>CallButton</strong>. Run the project and you should now see iOS version is now working properly. Try selecting a driver and that driver detail will be automatically shown in the custom view you&#8217;ve defined. When you run this on an iPhone, you can even immediately perform a phone call to the driver&#8217;s number directly.</p>
<div style="width: 400px; " class="wp-video"><video class="wp-video-shortcode" id="video-5101-2" width="400" height="360" loop="1" autoplay="1" preload="auto" controls="controls"><source type="video/mp4" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/iOS.mp4?_=2" /><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/iOS.mp4">http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/iOS.mp4</a></video></div>
<p>&nbsp;</p>
<p>What about Android?</p>
<h2>Provide the Custom Driver View for Android</h2>
<p>This is where the Form Builder excels. Since you&#8217;ve completed the iOS version, all you need to do is just provide the custom layout and use the previously created <strong>OrderBindingProvider</strong>. Let&#8217;s take a look how to achieve this.</p>
<p>First, create a new Android Layout file by right clicking on the <strong>CrosslightFormBuilder.Android/Resources/layout</strong> folder. Then choose <strong>Add</strong>, <strong>New Item</strong>. Select <strong>Android, Layout</strong>. Remember to give it a name of <strong>CallDriverButton</strong>, as this corresponds to the <strong>CustomViewIdentifier</strong> defined in the FormMetadata earlier.</p>
<p><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Screen-Shot-2015-11-13-at-9.49.39-PM.png"><img class="alignnone size-large wp-image-5134" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Screen-Shot-2015-11-13-at-9.49.39-PM-1024x579.png" alt="Screen Shot 2015-11-13 at 9.49.39 PM" width="604" height="342" /></a></p>
<p>Provide the layout as follows.</p><pre class="crayon-plain-tag">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"&gt;
    &lt;LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"&gt;
        &lt;ImageView
            android:id="@+id/DriverImage"
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:layout_gravity="center" /&gt;
        &lt;TextView
            android:id="@+id/DriverName"
            android:layout_width="wrap_content"
            android:layout_height="20sp"
            android:layout_gravity="center" /&gt;
        &lt;Button
            android:id="@+id/CallButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center" /&gt;
    &lt;/LinearLayout&gt;
&lt;/RelativeLayout&gt;</pre><p>After ensuring the IDs are correct, you&#8217;re only left to hook up the <strong>OrderBindingProvider</strong> in your <strong>OrderActivity</strong>. Let&#8217;s do that now.</p><pre class="crayon-plain-tag">[Activity(Label = "Order Form")]
[ImportBinding(typeof(OrderBindingProvider))]
public class OrderActivity : FormActivity&lt;OrderViewModel&gt;
{
    ...
}</pre><p>You&#8217;re done. Run the project and you&#8217;ll get the same result with iOS version.</p>
<div style="width: 400px; " class="wp-video"><video class="wp-video-shortcode" id="video-5101-3" width="400" height="360" loop="1" autoplay="1" preload="auto" controls="controls"><source type="video/mp4" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Android.mp4?_=3" /><a href="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Android.mp4">http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Android.mp4</a></video></div>
<p>&nbsp;</p>
<p>Beautiful, isn&#8217;t it?</p>
<h1>Wrapping Up</h1>
<p>The entire project for this tutorial can be found <a href="http://git.intersoftsolutions.com/projects/CT/repos/crosslightformbuilderextended/browse">here</a>. To use this sample, you&#8217;ll need to use at least Crosslight <a href="http://git.intersoftpt.com/projects/CROS/repos/updates/browse/Crosslight4_0_5000_321">4.0.5000.321</a> and above. Hopefully this will help you learn more about the Crosslight Form Builder.</p>
<p>You&#8217;ve seen how you can easily inject a custom view to the form by using the ViewResource custom editor. Probably some time in the future I&#8217;ll add a custom ViewBuilder tutorial as well. This will be very useful for those of you who wants to build a custom control that works seamlessly with the FormBuilder. We&#8217;ve also used this approach in building Crosslight Form Builder for each platform inside Crosslight framework.</p>
<p>Cheers,<br />
Nicholas Lie</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2015/11/extending-crosslight-form-builder-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/iOS.mp4" length="608488" type="video/mp4" />
<enclosure url="http://blog.intersoftsolutions.com/wp-content/uploads/2015/11/Android.mp4" length="562423" type="video/mp4" />
		</item>
		<item>
		<title>Implement GridViewFragment on Android</title>
		<link>http://blog.intersoftsolutions.com/2015/03/implement-gridviewfragment-on-android/</link>
		<comments>http://blog.intersoftsolutions.com/2015/03/implement-gridviewfragment-on-android/#comments</comments>
		<pubDate>Wed, 25 Mar 2015 09:42:32 +0000</pubDate>
		<dc:creator><![CDATA[martinlie]]></dc:creator>
				<category><![CDATA[2014-r2]]></category>
		<category><![CDATA[intersoft-blog]]></category>
		<category><![CDATA[kb-how-to-article]]></category>
		<category><![CDATA[Reference Samples]]></category>

		<guid isPermaLink="false">http://blog.intersoftpt.com/?p=4441</guid>
		<description><![CDATA[This topic describes how you can easily display your data in a grid view for Android in Crosslight apps. You will learn how to configure GridFragment and create the binding provider for GridFragment. If you haven&#8217;t familiar with simple list in Crosslight, please check out Displaying Simple List. It is expected [...]]]></description>
				<content:encoded><![CDATA[<img width="604" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/Tablet-604x270.jpg" class="attachment-post-thumbnail wp-post-image" alt="Tablet" style="float:right; margin:0 0 10px 10px;" data-attachment-id="4445" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/Tablet.jpg" data-orig-size="1022,597" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Administrator&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1425052732&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Tablet" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/Tablet-300x175.jpg" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/Tablet.jpg" /><p>This topic describes how you can easily display your data in a grid view for Android in Crosslight apps. You will learn how to configure GridFragment and create the binding provider for GridFragment. If you haven&#8217;t familiar with simple list in Crosslight, please check out <a href="http://developer.intersoftpt.com/display/crosslight/Displaying+Simple+List#DisplayingSimpleList-DisplayingSimpleListoniOS" target="_blank" rel="nofollow">Displaying Simple List</a>. It is expected that you have successfully displayed a simple list and created the required View Model before continuing. <a href="http://developer.intersoftpt.com/display/crosslight/Implement+GridViewFragment+on+Android" target="_blank">Learn more</a>.</p>
<p><a href="http://blog.intersoftpt.com/wp-content/uploads/2015/03/Phone.jpg"><img class="aligncenter wp-image-4444" src="http://blog.intersoftpt.com/wp-content/uploads/2015/03/Phone.jpg" alt="Android Phone" width="299" height="500" /></a></p>
<p><a href="http://blog.intersoftpt.com/wp-content/uploads/2015/03/Tablet.jpg"><img class="aligncenter wp-image-4445" src="http://blog.intersoftpt.com/wp-content/uploads/2015/03/Tablet.jpg" alt="Android Tablet" width="500" height="292" /></a></p>
<p>The sample code is available to download in our Git server <a href="http://git.intersoftpt.com/projects/CROS-SUPP/repos/android-gridview/browse" target="_blank">here</a>. Feel free to leave any comment or feedback.</p>
<p>Cheers,<br />
Martin Lie</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2015/03/implement-gridviewfragment-on-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implement Circular Image on ListView</title>
		<link>http://blog.intersoftsolutions.com/2015/03/how-to-implement-circular-image-on-listview/</link>
		<comments>http://blog.intersoftsolutions.com/2015/03/how-to-implement-circular-image-on-listview/#comments</comments>
		<pubDate>Wed, 25 Mar 2015 09:19:11 +0000</pubDate>
		<dc:creator><![CDATA[martinlie]]></dc:creator>
				<category><![CDATA[2014-r2]]></category>
		<category><![CDATA[intersoft-blog]]></category>
		<category><![CDATA[kb-how-to-article]]></category>
		<category><![CDATA[Reference Samples]]></category>

		<guid isPermaLink="false">http://blog.intersoftpt.com/?p=4438</guid>
		<description><![CDATA[Nowadays, you can see a lot of mobile apps displaying circular image on list view. This how-to topic shows how you can customize the appearance and presentation of cell template with image in a table view to achieve round corner in iOS, Android and Windows platforms. Learn [...]]]></description>
				<content:encoded><![CDATA[<img width="604" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/circular-image-on-Android-604x270.png" class="attachment-post-thumbnail wp-post-image" alt="circular-image-on-Android" style="float:right; margin:0 0 10px 10px;" data-attachment-id="4450" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/circular-image-on-Android.png" data-orig-size="768,1280" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="circular-image-on-Android" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/circular-image-on-Android-180x300.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/circular-image-on-Android-614x1024.png" /><p>Nowadays, you can see a lot of mobile apps displaying circular image on list view. This how-to topic shows how you can customize the appearance and presentation of cell template with image in a table view to achieve round corner in iOS, Android and Windows platforms. <a href="http://developer.intersoftpt.com/display/crosslight/Implement+Circular+Image+on+ListView" target="_blank">Learn more</a>.</p>
<p><a href="http://blog.intersoftpt.com/wp-content/uploads/2015/03/circular-image-on-iOS.png"><img class="aligncenter wp-image-4451" src="http://blog.intersoftpt.com/wp-content/uploads/2015/03/circular-image-on-iOS.png" alt="circular-image-on-iOS" width="301" height="500" /></a></p>
<p><a href="http://blog.intersoftpt.com/wp-content/uploads/2015/03/circular-image-on-Android.png"><img class="aligncenter wp-image-4450" src="http://blog.intersoftpt.com/wp-content/uploads/2015/03/circular-image-on-Android.png" alt="circular-image-on-Android" width="300" height="500" /></a></p>
<p><a href="http://blog.intersoftpt.com/wp-content/uploads/2015/03/circular-image-on-WinPhone.png"><img class="aligncenter wp-image-4439" src="http://blog.intersoftpt.com/wp-content/uploads/2015/03/circular-image-on-WinPhone.png" alt="circular-image-on-WinPhone" width="300" height="500" /></a></p>
<p>The sample code is available to download in our Git server <a href="http://git.intersoftpt.com/projects/CROS-SUPP/repos/listview-with-circular-image/browse" target="_blank">here</a>. Feel free to leave any comment or feedback.</p>
<p>Cheers,<br />
Martin Lie</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2015/03/how-to-implement-circular-image-on-listview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implement Data Synchronization using Crosslight Enterprise Framework</title>
		<link>http://blog.intersoftsolutions.com/2015/03/implement-data-synchronization-using-crosslight-enterprise-framework/</link>
		<comments>http://blog.intersoftsolutions.com/2015/03/implement-data-synchronization-using-crosslight-enterprise-framework/#comments</comments>
		<pubDate>Tue, 03 Mar 2015 09:03:54 +0000</pubDate>
		<dc:creator><![CDATA[martinlie]]></dc:creator>
				<category><![CDATA[2014-r2]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[intersoft-blog]]></category>
		<category><![CDATA[kb-how-to-article]]></category>
		<category><![CDATA[Reference Samples]]></category>

		<guid isPermaLink="false">http://blog.intersoftpt.com/?p=4405</guid>
		<description><![CDATA[This how-to topic describes how to implement data synchronization using Crosslight Enterprise Framework. There is no doubt that data synchronization has becoming essential requirement in today&#8217;s business apps that allows online offline synschronization. This post guides you how to implement data synchronization by creating a new [...]]]></description>
				<content:encoded><![CDATA[<img width="604" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/2015-03-02-09-34-09-604x270.png" class="attachment-post-thumbnail wp-post-image" alt="2015-03-02-09-34-09" style="float:right; margin:0 0 10px 10px;" data-attachment-id="4406" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/2015-03-02-09-34-09.png" data-orig-size="1079,1775" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2015-03-02-09-34-09" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/2015-03-02-09-34-09-182x300.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/2015-03-02-09-34-09-622x1024.png" /><p>This how-to topic describes how to implement data synchronization using Crosslight Enterprise Framework. There is no doubt that data synchronization has becoming essential requirement in today&#8217;s business apps that allows online offline synschronization.</p>
<p>This post guides you how to implement data synchronization by creating a new Crosslight app from the <a href="http://developer.intersoftpt.com/display/crosslight/Business+Template">Crosslight Business Template</a>. You will learn how to enable the local data storage feature, configure the synchronization settings, preparing the domain models, and calling the synchronization API to perform two-way data sync. <a href="http://developer.intersoftpt.com/display/crosslight/Implement+Data+Synchronization+using+Crosslight+Enterprise+Framework" target="_blank">Learn more</a>.</p>
<p><a href="http://blog.intersoftpt.com/wp-content/uploads/2015/03/2015-03-02-09-34-09.png" target="_blank"><img class="aligncenter wp-image-4406" src="http://blog.intersoftpt.com/wp-content/uploads/2015/03/2015-03-02-09-34-09-622x1024.png" alt="2015-03-02-09-34-09" width="304" height="500" /></a></p>
<p><a href="http://blog.intersoftpt.com/wp-content/uploads/2015/03/2015-03-02-09-35-28.png" target="_blank"><img class="aligncenter wp-image-4407" src="http://blog.intersoftpt.com/wp-content/uploads/2015/03/2015-03-02-09-35-28-622x1024.png" alt="2015-03-02-09-35-28" width="304" height="500" /></a></p>
<p>You can download the sample code from our Git server <a href="http://git.intersoftpt.com/projects/CROS-SUPP/repos/synchronization-sample/browse" target="_blank">here</a>. Feel free to leave your comment or feedback if any.</p>
<p>Cheers,<br />
Martin Lie</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2015/03/implement-data-synchronization-using-crosslight-enterprise-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create Crosslight Business Apps with Local Data Storage (SQLite)</title>
		<link>http://blog.intersoftsolutions.com/2015/03/create-crosslight-business-apps-with-local-data-storage-sqlite/</link>
		<comments>http://blog.intersoftsolutions.com/2015/03/create-crosslight-business-apps-with-local-data-storage-sqlite/#comments</comments>
		<pubDate>Tue, 03 Mar 2015 08:14:18 +0000</pubDate>
		<dc:creator><![CDATA[martinlie]]></dc:creator>
				<category><![CDATA[2014-r2]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[intersoft-blog]]></category>
		<category><![CDATA[kb-how-to-article]]></category>
		<category><![CDATA[Reference Samples]]></category>

		<guid isPermaLink="false">http://blog.intersoftpt.com/?p=4402</guid>
		<description><![CDATA[This blog post shows you in-depth how to create apps that use SQLite as its local data storage using Crosslight Business Template. You will learn how to configure SQLite for the first time, setting up the domain model through Intersoft Entity Designer and add some [...]]]></description>
				<content:encoded><![CDATA[<img width="604" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/2015-03-02-09-29-43-604x270.png" class="attachment-post-thumbnail wp-post-image" alt="2015-03-02-09-29-43" style="float:right; margin:0 0 10px 10px;" data-attachment-id="4403" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/2015-03-02-09-29-43.png" data-orig-size="1079,1775" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2015-03-02-09-29-43" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/2015-03-02-09-29-43-182x300.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/2015-03-02-09-29-43-622x1024.png" /><p>This blog post shows you in-depth how to create apps that use SQLite as its local data storage using Crosslight Business Template. You will learn how to configure SQLite for the first time, setting up the domain model through Intersoft Entity Designer and add some simple settings and code to enable SQLite. <a href="http://developer.intersoftpt.com/pages/viewpage.action?pageId=16812361" target="_blank">Learn more</a>.</p>
<p><a href="http://blog.intersoftpt.com/wp-content/uploads/2015/03/2015-03-02-09-29-43.png" target="_blank"><img class="aligncenter wp-image-4403" src="http://blog.intersoftpt.com/wp-content/uploads/2015/03/2015-03-02-09-29-43-622x1024.png" alt="2015-03-02-09-29-43" width="304" height="500" /></a></p>
<p>We have made the sample code available to be downloaded from out Git server <a href="http://git.intersoftpt.com/projects/CROS-SUPP/repos/sqlite-sample-businesstemplate/browse" target="_blank">here</a>. Feel free to post any comment or feedback.</p>
<p>Cheers,<br />
Martin Lie</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2015/03/create-crosslight-business-apps-with-local-data-storage-sqlite/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Using Crosslight SQLite for Local Data Storage</title>
		<link>http://blog.intersoftsolutions.com/2015/03/using-crosslight-sqlite-for-local-data-storage/</link>
		<comments>http://blog.intersoftsolutions.com/2015/03/using-crosslight-sqlite-for-local-data-storage/#comments</comments>
		<pubDate>Mon, 02 Mar 2015 09:36:45 +0000</pubDate>
		<dc:creator><![CDATA[martinlie]]></dc:creator>
				<category><![CDATA[2014-r2]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[intersoft-blog]]></category>
		<category><![CDATA[kb-how-to-article]]></category>
		<category><![CDATA[Reference Samples]]></category>

		<guid isPermaLink="false">http://blog.intersoftpt.com/?p=4390</guid>
		<description><![CDATA[This blog post will discuss topic on how you can use Crosslight SQLite as a local data storage for your apps. Before you start using Crosslight SQLite, it is recommended that you have basic knowledge about data binding and MVVM design pattern. Learn more. We have [...]]]></description>
				<content:encoded><![CDATA[<img width="604" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/2015-03-02-09-25-49-604x270.png" class="attachment-post-thumbnail wp-post-image" alt="2015-03-02-09-25-49" style="float:right; margin:0 0 10px 10px;" data-attachment-id="4391" data-orig-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/2015-03-02-09-25-49.png" data-orig-size="1079,1775" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2015-03-02-09-25-49" data-image-description="" data-medium-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/2015-03-02-09-25-49-182x300.png" data-large-file="http://blog.intersoftsolutions.com/wp-content/uploads/2015/03/2015-03-02-09-25-49-622x1024.png" /><p>This blog post will discuss topic on how you can use Crosslight SQLite as a local data storage for your apps. Before you start using Crosslight SQLite, it is recommended that you have basic knowledge about <a href="http://developer.intersoftpt.com/display/crosslight/Understanding+Data+Binding+and+MVVM+Design+Pattern" target="_blank">data binding and MVVM design pattern</a>. <a href="http://developer.intersoftpt.com/display/crosslight/Using+Crosslight+SQLite+for+Local+Data+Storage" target="_blank">Learn more</a>.</p>
<p><a href="http://blog.intersoftpt.com/wp-content/uploads/2015/03/2015-03-02-09-25-49.png"><img class="aligncenter wp-image-4391" src="http://blog.intersoftpt.com/wp-content/uploads/2015/03/2015-03-02-09-25-49-622x1024.png" alt="2015-03-02-09-25-49" width="304" height="500" /></a></p>
<p><a href="http://blog.intersoftpt.com/wp-content/uploads/2015/03/2015-03-02-09-25-58.png"><img class="aligncenter wp-image-4392" src="http://blog.intersoftpt.com/wp-content/uploads/2015/03/2015-03-02-09-25-58-622x1024.png" alt="2015-03-02-09-25-58" width="304" height="500" /></a></p>
<p>We have created a sample that lets you learn how to create SQLite tables with capability to insert, update and delete the record, use LINQ Query and custom SQL Query and many more. The sample code can be downloaded from our Git server <a href="http://git.intersoftpt.com/projects/CROS-SUPP/repos/sqlite-sample/browse" target="_blank">here</a>.</p>
<p>Happy Learning!</p>
<p>Cheers,<br />
Martin Lie</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2015/03/using-crosslight-sqlite-for-local-data-storage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
