-/*jslint devel: true*/
-/*global $, tizen, app */
-
-var client = {
- sendPing: function sendPing() {
- "use strict";
- var sendTextMsg, messageObj, messageObjToString, i, len;
- sendTextMsg = [];
- messageObj = {name: encodeURIComponent(app.currentName), text: '', ping: true, bye: false};
- messageObjToString = JSON.stringify(messageObj);
- len = messageObjToString.length;
-
- for (i = 0; i < len; i += 1) {
- sendTextMsg[i] = messageObjToString.charCodeAt(i);
- }
- try {
- if (app.globalSocket !== null && app.globalSocket.state === "OPEN") {
- app.globalSocket.writeData(sendTextMsg);
- }
- } catch (error) {
- console.error('sendPing: ' + error.message);
- }
- },
-
- onSocketConnected: function onSocketConnected(socket) {
- "use strict";
- var data, recvmsg, i, len, messageObj;
-
- app.globalSocket = socket;
- $.mobile.changePage('#chat');
-
- socket.onmessage = function () {
- data = socket.readData();
- len = data.length;
- recvmsg = '';
- for (i = 0; i < len; i += 1) {
- recvmsg += String.fromCharCode(data[i]);
- }
- messageObj = JSON.parse(recvmsg);
- app.displayReceivedMessage(messageObj.name, messageObj.text, messageObj.ping, messageObj.bye);
- };
-
- socket.onerror = function (e) {
- socket.close();
- };
- socket.onclose = function () {
- app.connection = false;
- app.checkChatSendButtonState();
- app.globalSocket = null;
- };
- $('#chat-title').text('Client: ' + app.currentName + ' << >> ' + app.chatServerDevice.name);
- app.connection = true;
- app.checkChatSendButtonState();
- client.sendPing();
- },
-
- onSocketError: function onSocketError(error) {
- "use strict";
- $('#choose-content').find('ul li').css('background-color', '#fff');
- app.showPopup('Server rejected the connection. Try again. ' + error.message, $('#choose'));
- },
-
- bondSuccess: function bondSuccess(device) {
- "use strict";
-
- app.chatServerDevice = device;
-
- try {
- device.connectToServiceByUUID(app.serviceUUID, client.onSocketConnected, client.onSocketError, 'RFCOMM');
- } catch (exc) {
- console.error('connectToServiceByUUID: ' + exc.message + '<br/>');
- }
- },
-
- bondError: function bondError(error) {
- "use strict";
-
- $('#choose-content').find('ul li').css('background-color', '#fff');
- app.showPopup('Bonding problem with selected device. Try again. ' + error.message, $('#choose'));
- },
-
- addDeviceToList: function addDeviceToList(ul, chooseContent, device) {
- "use strict";
- var listElement, address, sub2,
- startBonding = function (element, address) {
- app.adapter.createBonding(address, client.bondSuccess, client.bondError);
- ul.find('li').css('background-color', '#fff');
- element.css('background-color', '#aaa');
- };
- if ($.inArray(device.address, app.deviceAddresses) === -1) {
- app.deviceAddresses.push(device.address);
- listElement = $('<li class="ui-li-has-multiline" address="' + device.address + '">' + device.name + '</li>');
- address = $('<span class="ui-li-text-sub"></span>');
- address.text(device.address);
- sub2 = $('<span class="ui-li-text-sub2"></span>');
- listElement.append(address).append(sub2);
- listElement.on('tap', function (event) {
- event.stopPropagation();
- var address, element;
- address = $(this).attr('address');
- element = $(this);
- if (app.discovering) {
- app.adapter.stopDiscovery(function () {
- app.discovering = false;
- startBonding(element, address);
- }, function (e) {
- console.error('stopDiscovery error: ' + e.message);
- });
- } else {
- startBonding(element, address);
- }
- });
- ul.append(listElement);
- ul.listview('refresh');
- }
- },
-
- searchServer: function searchServer() {
- "use strict";
- var chooseContent, ul, discoverDevicesSuccessCallback;
- app.deviceAddresses = [];
- chooseContent = $('#choose-content');
- ul = $('<ul data-role="listview"></ul>');
- chooseContent.find('.ui-scrollview-view').append(ul);
- chooseContent.trigger('create');
-
- discoverDevicesSuccessCallback = {
- onstarted: function () { app.discovering = true; },
- ondevicefound: function (device) {
- client.addDeviceToList(ul, chooseContent, device);
- },
- ondevicedisappeared: function (address) {},
- onfinished: function (devices) { app.discovering = false; }
- };
-
- app.adapter.discoverDevices(discoverDevicesSuccessCallback, function (e) { app.discovering = false; });
- }
-};
\ No newline at end of file