2 /*global $, tizen, App, app */
6 (function () { // strict mode wrapper
9 var prepareCallerName = function prepareCallerName(contact) {
10 var callerName, firstName, lastName;
12 firstName = contact.name.firstName;
13 lastName = contact.name.lastName;
14 if (firstName !== '' && firstName !== null) {
15 callerName = firstName;
17 if (lastName !== '' && lastName !== null) {
18 if (callerName === '') {
19 callerName += lastName;
22 callerName += lastName;
25 if (callerName === '') {
26 callerName = 'no name';
31 App.Ui = function App_Ui(app) {
38 showPopup: function showPopup(message, page) {
39 this.popup = $('<div id="popup" data-role="popupwindow" data-style="center_basic_1btn"><p data-role="text">' + message + '</p><div data-role="button-bg"><a href="#" data-role="button" data-inline="true" onclick="closePopup();">OK</a></div></div>');
40 this.page.append(this.popup);
41 this.page.trigger('create');
42 this.popup.data('page', page);
43 this.popup.popupwindow('open');
46 closePopup: function closePopup() {
47 var page = this.popup.data('page');
48 page.data('monit', '');
49 this.popup.popupwindow('close');
54 disableAccept: function disableAccept() {
55 $('#accept-choose').css('pointer-events', 'none').addClass('ui-disabled');
58 enableAccept: function enableAccept() {
59 $('#accept-choose').css('pointer-events', 'auto').removeClass('ui-disabled');
62 createListRecord: function createListRecord(contacts) {
63 $.mobile.changePage('#choose');
66 prepareWaitingPage: function prepareWaitingPage(title, text) {
67 var waitingBox, waitingContent;
68 waitingBox = $('<div class="box" id="waitingBox"></div>');
69 waitingContent = $('<p class="defaultVeryBigText">' + text + '</p><p class="defaultCounterText" id="counter"></p>');
70 $('#header-transfer H1').text(title);
71 $('#content-transfer .ui-scrollview-view').empty();
72 waitingBox.append(waitingContent);
73 $('#content-transfer .ui-scrollview-view').append(waitingBox);
74 $('#content-start').trigger('create');
75 this.app.countDown(10, $('#counter'));
78 loadTemporaryContent: function loadTemporaryContent() {
79 var temporaryBox, temporaryContent, temporaryButton;
80 temporaryBox = $('<div class="box" id="temporaryBox"></div>');
81 temporaryContent = $('<p class="defaultText">Default card hasn\'t defined yet!<br>Do you want to define it now?</p>');
82 temporaryButton = $('<div data-role="button" class="ui-btn-create">Create default card</div>');
84 temporaryButton.on('tap', function (event) {
85 event.preventDefault();
86 $.mobile.changePage('#choose');
89 $('#content-start .ui-scrollview-view').empty();
90 temporaryBox.append(temporaryContent).append(temporaryButton);
91 $('#content-start .ui-scrollview-view').append(temporaryBox);
92 $('#content-start').trigger('create');
95 loadStartContent: function loadStartContent() {
96 var startBox, gap, comment, changeContact, readFromCard, writeToCard, communicateWithOtherDevice;
97 startBox = $('<div class="box" id="startBox"></div>');
98 gap = $('<div class="gap"></div>');
99 comment = $('<div id="comment"><p class="comment">Your default contact</p><p class="comment" id="comment-name">' + (localStorage.firstName || '') + ' ' + (localStorage.lastName || '') + '</p></div>');
100 changeContact = $('<div data-role="button" class="ui-btn-create">Change your default contact</div>');
101 changeContact.on('tap', function (event) {
102 event.preventDefault();
103 $.mobile.changePage('#choose');
105 readFromCard = $('<div data-role="button" class="ui-btn-create">Read from card</div>');
106 readFromCard.on('tap', function (event) {
107 event.preventDefault();
108 $('#transfer').data('option', 'read');
109 $.mobile.changePage('#transfer');
111 writeToCard = $('<div data-role="button" class="ui-btn-create">Write to card</div>');
112 writeToCard.on('tap', function (event) {
113 event.preventDefault();
114 $('#transfer').data('option', 'write');
115 $.mobile.changePage('#transfer');
117 communicateWithOtherDevice = $('<div data-role="button" class="ui-btn-create">Communicate with other device</div>');
118 communicateWithOtherDevice.on('tap', function (event) {
119 event.preventDefault();
120 $('#transfer').data('option', 'communicate');
121 $.mobile.changePage('#transfer');
124 $('#content-start .ui-scrollview-view').empty();
125 startBox.append(changeContact).append(gap.clone()).append(readFromCard).append(gap.clone()).append(writeToCard).append(gap.clone()).append(communicateWithOtherDevice).prepend(comment);
126 //$('#content-start .ui-scrollview-view').append(comment);
127 $('#content-start .ui-scrollview-view').append(startBox);
128 $('#content-start').trigger('create');
131 loadStartPage: function loadStartPage() {
132 if (localStorage.started === undefined) {
133 console.log('localStorage.started === undefined');
134 this.loadTemporaryContent();
136 console.log('localStorage.started !== undefined');
137 this.loadStartContent();
141 prepareContactsTemplate: function prepareContactsTemplate(phone, first, last) {
144 ul = $('<ul data-role="listview" id="contacts-data"></ul>');
145 $('#contact > #content-contact > .ui-scrollview-view').empty().append(ul);
147 ul.append($('<li class="ui-li-multiline"><a href="#">' + ((first === '' || first === 'null') ? '...' : first) + '<span class="ui-li-text-sub">First Name</span></a></li>'));
148 ul.append($('<li class="ui-li-multiline"><a href="#">' + ((last === '' || last === 'null') ? '...' : last) + '<span class="ui-li-text-sub">Last Name</span></a></li>'));
149 ul.append($('<li class="ui-li-multiline"><a href="#">' + ((phone === '' || phone === 'null') ? '...' : phone) + '<span class="ui-li-text-sub">Phone Number</span></a></li>'));
151 $('#contact > #content-contact').trigger('create');
154 showContactsList: function showContactsList(contacts) {
155 console.log(this, 'showContactsList');
157 ul = $('<ul data-role="listview" id="list-choose"></ul>'),
159 sortedContactList = [],
171 $('#choose > #content-choose > .ui-scrollview-view').empty().append(ul);
173 listElementTap = function (event) {
174 event.preventDefault();
175 console.log(self, 'listElementTap');
177 console.log($(this), 'jQuery $(this)');
178 $(this).parent().find('li').css('background-color', 'inherit').removeClass('selected');
179 $(this).css('background-color', '#ccc').addClass('selected');
182 for (i = 0, len = contacts.length; i < len; i += 1) {
187 vCard = contacts[i].convertToString('VCARD_30');
188 if (contacts[i].name.firstName !== null) {
189 firstName = contacts[i].name.firstName;
191 if (contacts[i].name.lastName !== null) {
192 lastName = contacts[i].name.lastName;
194 if (contacts[i].phoneNumbers[0] !== undefined) {
195 phoneNumber = contacts[i].phoneNumbers[0].number;
197 sortedContactList.push({caller: prepareCallerName(contacts[i]), firstName: firstName, lastName: lastName, phoneNumber: phoneNumber, id: id, vCard: vCard, contact: contacts[i]});
200 sortedContactList.sort(function (a, b) {
201 if (a.caller < b.caller) {
204 if (a.caller > b.caller) {
210 for (j = 0, length = sortedContactList.length; j < length; j += 1) {
211 listElement = $('<li class="ui-li-multiline" firstName="' + sortedContactList[j].firstName + '" lastName="' + sortedContactList[j].lastName + '" phoneNumber="' + sortedContactList[j].phoneNumber + '" id="' + sortedContactList[j].id + '" vCard="' + sortedContactList[j].vCard + '"><a href="#">' + sortedContactList[j].caller + '<span class="ui-li-text-sub">' + sortedContactList[j].phoneNumber + '</span></a></li>');
212 if (localStorage.id === listElement.attr('id')) {
213 listElement.css('background-color', '#ccc');
215 listElement.on('tap', listElementTap);
216 ul.append(listElement);
219 $('#choose > #content-choose').trigger('create');
222 moveToStartPage: function moveToStartPage(monit) {
223 $('#start').data('monit', monit || '');
224 $.mobile.changePage('#start');
227 moveToContactPage: function moveToContactPage(obj) {
228 $('#start').data('monit', '');
229 $('#contact').data('contactsData', obj);
230 $.mobile.changePage('#contact');
234 defineEvents: function defineEvents() {
237 $('#header-start .ui-btn-back').on('tap', function (event) {
238 event.preventDefault();
239 self.app.nfc.stopNFC();
242 $('#footer-transfer').on('tap', '.ui-btn-back', function (event) {
243 event.preventDefault();
244 self.app.nfc.timeExpired();
247 $('#footer-contact').on('tap', '.ui-btn-back', function (event) {
248 event.preventDefault();
249 $.mobile.changePage('#start');
252 $('#choose').on('pagebeforeshow', function () {
253 self.disableAccept();
256 $('#choose').on('pageshow', function (event) {
257 console.log('#choose pageshow');
258 self.app.loadContacts();
261 $('#contact').on('pageshow', function (event) {
262 var phone, first, last;
263 phone = $(this).data('contactsData').phone;
264 first = $(this).data('contactsData').first;
265 last = $(this).data('contactsData').last;
266 self.prepareContactsTemplate(phone, first, last);
269 $('#accept-choose').on('tap', function (event) {
270 event.preventDefault();
271 self.app.saveDefaultCard();
274 $('#save-contact').on('tap', function (event) {
275 event.preventDefault();
276 self.app.saveContact();
279 $('#start').on('pagebeforeshow', function () {
280 if (self.app.started) {
281 self.loadStartPage();
285 $('#start').on('pageshow', function () {
288 monit = obj.data('monit');
289 if (monit !== '' && monit !== undefined) {
290 self.showPopup(obj.data('monit'), obj);
294 $('#transfer').on('pageshow', function () {
295 console.log($('#transfer').data('option'), 'XXXXXXXXx');
296 console.log($(this).data('option'), 'ZZZZZZ');
297 var option = $(this).data('option');
298 if (option === 'read') {
299 self.prepareWaitingPage('Card to Device', 'PUT WIRELESS TAG<br>CLOSE TO<br>YOUR DEVICE');
301 self.app.nfc.card.setTagDetectRead();
305 } else if (option === 'write') {
306 self.prepareWaitingPage('Device to Card', 'PUT WIRELESS TAG<br>CLOSE TO<br>YOUR DEVICE');
308 self.app.nfc.card.setTagDetectWrite();
313 self.prepareWaitingPage('Device to Device', 'PUT YOUR DEVICE<br>CLOSE TO<br>OTHER DEVICE');
315 self.app.nfc.peer.setTargetDetect();