EmailScreen.as 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. import flash.external.*;
  2. import gfx.controls.TextInput;
  3. import gfx.controls.Button;
  4. import gfx.controls.CheckBox;
  5. import mx.utils.Delegate;
  6. class Screens.EmailScreen extends ScreenWithPageNavigator
  7. {
  8. private var emailSendRecipient0EditBox:TextInput;
  9. private var emailSendRecipient1EditBox:TextInput;
  10. private var emailSendRecipient2EditBox:TextInput;
  11. private var emailSendRecipient3EditBox:TextInput;
  12. private var emailSendRecipient4EditBox:TextInput;
  13. private var emailSendRecipient5EditBox:TextInput;
  14. private var emailSendRecipient6EditBox:TextInput;
  15. private var emailSendRecipient7EditBox:TextInput;
  16. private var emailSubjectEditBox:TextInput;
  17. private var emailBodyEditBox:TextInput;
  18. private var emailStatusEditBox:TextInput;
  19. private var deleteEmailIDEditBox:TextInput;
  20. private var updateEmailIDEditBox:TextInput;
  21. private var newStatusFlagEditbox:TextInput;
  22. private var sendEmailButton:Button;
  23. private var getEmailsButton:Button;
  24. private var deleteEmailButton:Button;
  25. private var setEmailStatusButton:Button;
  26. private var updateStatusFlagCheckbox:CheckBox;
  27. private var updateMarkedReadCheckbox:CheckBox;
  28. private var isNowMarkedReadCheckbox:CheckBox;
  29. private var btnCompose:Button;
  30. private var btnDelete:Button;
  31. private var btnMarkUnread:Button;
  32. private var mcMail:Mail;
  33. public function EmailScreen()
  34. {
  35. ConsoleWindow.Trace("Constructing EmailScreen");
  36. mScreenId = ScreenID.EMAIL;
  37. mScreenTabId = ScreenTab.ID_EMAIL;
  38. mEntriesPerPage = 10;
  39. mFirstEntryX = 482;
  40. mFirstEntryY = -265;
  41. mDeltaY = 10;
  42. }
  43. public function VOnFinishedLoading():Void
  44. {
  45. //Add click event for buttons
  46. //sendEmailButton.addEventListener("click", this, "f2c_SendEmail");
  47. //deleteEmailButton.addEventListener("click", this, "f2c_DeleteEmail");
  48. //setEmailStatusButton.addEventListener("click", this, "f2c_UpdateEmail");
  49. //getEmailsButton.addEventListener("click", this, "f2c_GetEmails");
  50. btnCompose.addEventListener("click", this, "ComposeMail");
  51. //btnDelete.addEventListener("click", this, "f2c_DeleteEmail");
  52. //btnMarkUnread.addEventListener("click", this, "f2c_GetEmails");
  53. btnDelete.addEventListener("click", this, "DeleteSelectedEmails");
  54. //Add callbacks for C++
  55. ExternalInterface.addCallback("c2f_SendEmail", this, c2f_SendEmail);
  56. ExternalInterface.addCallback("c2f_DeleteEmail", this, c2f_DeleteEmail);
  57. ExternalInterface.addCallback("c2f_UpdateEmail", this, c2f_UpdateEmail);
  58. ExternalInterface.addCallback("c2f_GetEmails", this, c2f_GetEmails);
  59. mcMail._visible = false;
  60. super.VOnFinishedLoading();
  61. }
  62. public function OnShow():Void
  63. {
  64. super.OnShow();
  65. if ( mMovieClipList.length > 0 )
  66. {
  67. CleanUpMoveClipList( mMovieClipList );
  68. }
  69. mMovieClipList = new Array();
  70. mCurrentPage = 0;
  71. GoToPage( 1 );
  72. f2c_GetEmails();
  73. if ( LobbyInterface.Instance.IsInFlashMode() )
  74. {
  75. c2f_GetEmails();
  76. }
  77. }
  78. function f2c_SendEmail():Void
  79. {
  80. if ( mcMail.GetToField().length > 0 )
  81. {
  82. ExternalInterface.call("f2c_SendEmail",
  83. mcMail.GetToField(),//emailSendRecipient0EditBox.text, emailSendRecipient1EditBox.text, emailSendRecipient2EditBox.text,
  84. "", "", "", "", "", "", "",//emailSendRecipient3EditBox.text, emailSendRecipient4EditBox.text, emailSendRecipient5EditBox.text,
  85. //emailSendRecipient6EditBox.text, emailSendRecipient7EditBox.text,
  86. mcMail.GetSubjectField(), mcMail.GetMsgField(),//emailSubjectEditBox.text, emailBodyEditBox.text,
  87. ""//emailStatusEditBox.text
  88. );
  89. HideMail();
  90. }
  91. }
  92. function c2f_SendEmail(resultIdentifier:String):Void
  93. {
  94. switch (resultIdentifier)
  95. {
  96. case "SUCCESS":
  97. ConsoleWindow.Trace("c2f_SendEmail: " + resultIdentifier);
  98. break;
  99. }
  100. if ( resultIdentifier != "SUCCESS" )
  101. {
  102. LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
  103. }
  104. }
  105. function f2c_DeleteEmail( emailID:Number ):Void
  106. {
  107. ConsoleWindow.Trace("f2c_DeleteEmail(), emailID = " + emailID);
  108. if ( emailID != null )
  109. {
  110. ExternalInterface.call("f2c_DeleteEmail", String(emailID));
  111. }
  112. }
  113. function c2f_DeleteEmail(resultIdentifier:String):Void
  114. {
  115. switch (resultIdentifier)
  116. {
  117. case "DATABASE_CONSTRAINT_FAILURE":
  118. break;
  119. case "Emails_Delete_UNKNOWN_EMAIL_ID":
  120. break;
  121. case "Emails_Delete_ALREADY_DELETED":
  122. break;
  123. case "SUCCESS":
  124. ConsoleWindow.Trace("c2f_DeleteEmail()... resultIdentifier = " + resultIdentifier);
  125. break;
  126. }
  127. if ( resultIdentifier != "SUCCESS" )
  128. {
  129. LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
  130. }
  131. }
  132. function f2c_UpdateEmail():Void
  133. {
  134. ExternalInterface.call("f2c_UpdateEmail", updateEmailIDEditBox.text,
  135. updateStatusFlagCheckbox.selected, updateMarkedReadCheckbox.selected,
  136. newStatusFlagEditbox.text, isNowMarkedReadCheckbox.selected
  137. );
  138. }
  139. function c2f_UpdateEmail(resultIdentifier:String):Void
  140. {
  141. switch (resultIdentifier)
  142. {
  143. case "DATABASE_CONSTRAINT_FAILURE":
  144. break;
  145. case "Emails_SetStatus_UNKNOWN_EMAIL_ID":
  146. break;
  147. case "Emails_SetStatus_WAS_DELETED":
  148. break;
  149. case "SUCCESS":
  150. break;
  151. }
  152. if ( resultIdentifier != "SUCCESS" )
  153. {
  154. LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
  155. }
  156. }
  157. function f2c_GetEmails():Void
  158. {
  159. ExternalInterface.call("f2c_GetEmails");
  160. }
  161. public function DeleteEmail( emailEntry:MovieClip ):Void
  162. {
  163. }
  164. public function DeleteSelectedEmails():Void
  165. {
  166. var startIndex:Number = mCurrentPage * mEntriesPerPage - ( mEntriesPerPage );
  167. var endIndex:Number = startIndex + mEntriesPerPage;
  168. var listForRemoval:Array = new Array();;
  169. for ( var i:Number = 0; i < mEntriesPerPage; i++ )
  170. {
  171. var mcEntry:MovieClip = mMovieClipList[startIndex+i];
  172. if ( !mcEntry )
  173. {
  174. break;
  175. }
  176. if ( mcEntry.cbSelected.selected )
  177. {
  178. //RemoveEntryFromList(mcEntry, null, true);
  179. listForRemoval.push(mcEntry);
  180. }
  181. }
  182. var length:Number = listForRemoval.length;
  183. for ( var n:Number = 0; n < length; n++ )
  184. {
  185. ConsoleWindow.Trace("Removing: " + mcEntry);
  186. f2c_DeleteEmail( listForRemoval[n].emailID );
  187. RemoveEntryFromList( listForRemoval[n], null, true );
  188. }
  189. }
  190. function c2f_GetEmails():Void
  191. {
  192. ConsoleWindow.Trace("c2f_GetEmails: " );
  193. var numEmails:Number = arguments.length/9;
  194. for (var i:Number=0; i < numEmails; i++)
  195. {
  196. var sender:String = arguments[i*9+0];
  197. var recipient:String = arguments[i*9+1];
  198. var subject:String = arguments[i*9+2];
  199. var body:String = arguments[i*9+3];
  200. var status:Number = arguments[i*9+4];
  201. var wasSendByMe:Boolean = arguments[i*9+5];
  202. var wasReadByMe:Boolean = arguments[i*9+6];
  203. var emailID:Number = arguments[i*9+7];
  204. var creationDate:String = arguments[i * 9 + 8];
  205. ConsoleWindow.Trace("sender: " + sender + ", recipient: " + recipient + ", subject: " + subject + ", body: " + body + ", status: " + status + ", wasSendByMe: " + wasSendByMe
  206. + ", wasReadByMe: " + wasReadByMe + ", emailID: " + emailID + ", creationDate: " + creationDate);
  207. AddListEntry( sender, recipient, subject, body, creationDate, "", emailID );
  208. }
  209. //TODO: remove this once c++ sends down proper data
  210. for ( var n:Number = 0; n < 15; n++ )
  211. {
  212. AddListEntry( "from user" + mMovieClipList.length, "??", "Hi!", "lkajs;ldf", "mm/day/year" );
  213. }
  214. OnMoveClipListUpdated();
  215. ShowPage(1);
  216. }
  217. private function AddListEntry( usernameFrom:String, recipient:String, subject:String, body:String, date:String, time:String, emailID:Number ):MovieClip
  218. {
  219. var userEntry:MovieClip = attachMovie("EmailListEntry", "emailEntry" + mMovieClipList.length, getNextHighestDepth() );
  220. userEntry._visible = false;
  221. userEntry.tfUsername.text = usernameFrom;
  222. userEntry.tfSubject.text = subject;
  223. userEntry.tfDate.text = date;
  224. userEntry.emailID = emailID;
  225. userEntry.bodyText = body;
  226. mMovieClipList.push( userEntry );
  227. var self:EmailScreen = this;
  228. userEntry.mcMail.onPress = function() { self.ReadMail( this._parent.tfUsername.text, this._parent.tfSubject.text, this._parent.bodyText, this._parent ); }
  229. return userEntry;
  230. }
  231. private function OnShowMovieClipEntry( mcEntry:MovieClip, index:Number ):Void
  232. {
  233. super.OnShowMovieClipEntry( mcEntry, index );
  234. mcEntry.cbSelected.selected = false;
  235. }
  236. public function ComposeMail():Void
  237. {
  238. mcMail.Clear();
  239. mcMail.SetMode( Mail.cMode1 );
  240. mcMail.SetButton( 1, "CANCEL", Delegate.create(this, HideMail) );
  241. mcMail.SetButton( 2, "SEND", Delegate.create(this, f2c_SendEmail) );
  242. mcMail.HideButton( 3 );
  243. mcMail.SetTitle( "COMPOSE MESSAGE" );
  244. mcMail.SetToDisplayText( "TO:" );
  245. mcMail.SetToField( );
  246. mcMail.swapDepths( getNextHighestDepth() );
  247. mcMail._visible = true;
  248. }
  249. public function ReadMail( username:String, subject:String, body:String, mailEntry:MovieClip ):Void
  250. {
  251. mcMail.Clear();
  252. mcMail.SetMode( Mail.cMode2 );
  253. mcMail.SetButton( 1, "DELETE", Delegate.create(this, DeleteMail) );
  254. mcMail.SetButton( 2, "CLOSE", Delegate.create(this, HideMail) );
  255. mcMail.SetButton( 3, "REPLY", Delegate.create(this, ComposeMail) );
  256. mcMail["mailEntry"] = mailEntry;
  257. mcMail.SetTitle("RECEIVED MESSAGE:" );
  258. mcMail.SetUsername( username );
  259. mcMail.SetSubjectField( subject );
  260. mcMail.SetMsgField( body );
  261. mcMail.swapDepths( getNextHighestDepth() );
  262. mcMail._visible = true;
  263. }
  264. public function HideMail():Void
  265. {
  266. mcMail._visible = false;
  267. }
  268. public function DeleteMail( ):Void
  269. {
  270. mcMail._visible = false;
  271. var mailEntry:MovieClip = mcMail["mailEntry"];
  272. if ( mailEntry )
  273. {
  274. f2c_DeleteEmail( mailEntry.emailID );
  275. RemoveEntryFromList( mailEntry );
  276. }
  277. else
  278. {
  279. ConsoleWindow.Trace("DeleteMail, entry = " + mailEntry);
  280. }
  281. }
  282. }
粤ICP备19079148号