<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>Wt examples: SimpleChatWidget Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">Wt examples  <span id="projectnumber">3.2.3</span> </div> </td> </tr> </tbody> </table> </div> <!-- Generated by Doxygen 1.7.5.1 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> | <a href="#pro-methods">Protected Member Functions</a> | <a href="#pri-types">Private Types</a> | <a href="#pri-methods">Private Member Functions</a> | <a href="#pri-attribs">Private Attributes</a> </div> <div class="headertitle"> <div class="title">SimpleChatWidget Class Reference<div class="ingroups"><a class="el" href="group__chatexample.html">Chat example</a></div></div> </div> </div> <div class="contents"> <!-- doxytag: class="SimpleChatWidget" --><!-- doxytag: inherits="Wt::WContainerWidget,SimpleChatServer::Client" --> <p>A self-contained chat widget. <a href="classSimpleChatWidget.html#details">More...</a></p> <p><code>#include <<a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>></code></p> <div class="dynheader"> Inheritance diagram for SimpleChatWidget:</div> <div class="dyncontent"> <div class="center"><img src="classSimpleChatWidget__inherit__graph.png" border="0" usemap="#SimpleChatWidget_inherit__map" alt="Inheritance graph"/></div> <map name="SimpleChatWidget_inherit__map" id="SimpleChatWidget_inherit__map"> <area shape="rect" href="classPopupChatWidget.html" title="A popup chat widget." alt="" coords="112,453,237,480"/><area shape="rect" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html" title="Wt::WContainerWidget" alt="" coords="5,304,160,331"/><area shape="rect" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WInteractWidget.html" title="Wt::WInteractWidget" alt="" coords="11,229,155,256"/><area shape="rect" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html" title="Wt::WWebWidget" alt="" coords="19,155,147,181"/><area shape="rect" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html" title="Wt::WWidget" alt="" coords="33,80,132,107"/><area shape="rect" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WObject.html" title="Wt::WObject" alt="" coords="35,5,131,32"/><area shape="rect" href="classSimpleChatServer_1_1Client.html" title="SimpleChatServer::Client" alt="" coords="184,304,349,331"/></map> <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> <p><a href="classSimpleChatWidget-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#aa1cdfd4ad4b7442304c6f44b3346f2e0">SimpleChatWidget</a> (<a class="el" href="classSimpleChatServer.html">SimpleChatServer</a> &server, <a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html">Wt::WContainerWidget</a> *<a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html#a3461e31818c4d2f516641bdaf508312a">parent</a>=0)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a chat widget that will connect to the given server. <a href="#aa1cdfd4ad4b7442304c6f44b3346f2e0"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#afdf56768400ee025d0b71ccce476b1bf">~SimpleChatWidget</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Delete a chat widget. <a href="#afdf56768400ee025d0b71ccce476b1bf"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#a5fa75ab733ce294065a1233dfcbe83d6">connect</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#a7706247f4a599cd995003a260fd36b0a">disconnect</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#a71d98bf20e007af247f3b5a74f35efa2">letLogin</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Show a simple login screen. <a href="#a71d98bf20e007af247f3b5a74f35efa2"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#a19c0deeaf8952ec36791c3f444964878">startChat</a> (const <a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WString.html">Wt::WString</a> &user)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Start a chat for the given user. <a href="#a19c0deeaf8952ec36791c3f444964878"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#abff498a5a43a7e0caac5f2140f14e301">logout</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSimpleChatServer.html">SimpleChatServer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#a839a181c695589b066c4d68152ab05c0">server</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#a89bb84de7baa0e926a5c1d45fbd91256">userCount</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">const <a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WString.html">Wt::WString</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#af080cd053547503668a1ee29fd428d5f">userName</a> () const </td></tr> <tr><td colspan="2"><h2><a name="pro-methods"></a> Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#aad5e7beb8f1aa6a26715d93fa3a9952e">createLayout</a> (<a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html">Wt::WWidget</a> *messages, <a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html">Wt::WWidget</a> *userList, <a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html">Wt::WWidget</a> *messageEdit, <a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html">Wt::WWidget</a> *sendButton, <a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html">Wt::WWidget</a> *logoutButton)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#a282d3fa5a7aceea89558de31db4bb6e0">updateUsers</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#ab5f02d352a4f461edbe9a8f70859edd7">newMessage</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#aa1a93dff4800d783c80a9846cdc591b7">render</a> (Wt::WFlags< <a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/namespaceWt.html#a1097ddb5b58c20fe2f6c9d096e71575c">Wt::RenderFlag</a> > flags)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#aa05605599e6eb9e6a7aeb51234533241">loggedIn</a> () const </td></tr> <tr><td colspan="2"><h2><a name="pri-types"></a> Private Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef std::map< <a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WString.html">Wt::WString</a>, <br class="typebreak"/> bool > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#ae3fdaeefe19e26c6c6ad9f7c0445af57">UserMap</a></td></tr> <tr><td colspan="2"><h2><a name="pri-methods"></a> Private Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#ae085fda18af441e1630342395499478c">login</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#ad1c4dc9e6aca0c5b8e1db81ee7c5fad3">send</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#a76509fdffaf6a244c99977cf587c42e0">updateUser</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#acda2bbe138c3119e4c62a6132801a232">processChatEvent</a> (const <a class="el" href="classChatEvent.html">ChatEvent</a> &event)</td></tr> <tr><td colspan="2"><h2><a name="pri-attribs"></a> Private Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSimpleChatWidget.html#ae3fdaeefe19e26c6c6ad9f7c0445af57">UserMap</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#afe3350a7929733a5b93db803dee8704b">users_</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSimpleChatServer.html">SimpleChatServer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#ab29db4cbc3935964daf6b6c264ce68d3">server_</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#a8f56993c5967b22aff04009f4613a155">loggedIn_</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1JSlot.html">Wt::JSlot</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#a7e58bf2312b413d2d649500c26a6f8d6">clearInput_</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WString.html">Wt::WString</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#a596f7cbf70f45da9af017ac9d6f55ebc">user_</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WLineEdit.html">Wt::WLineEdit</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#a6216e8cf4d368c1550562e1c5525d34b">userNameEdit_</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html">Wt::WText</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#a98f69adc6f2381cd98584566ed4c497e">statusMsg_</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html">Wt::WContainerWidget</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#a32a593ed511997f32a33a55d651ce79d">messages_</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html">Wt::WContainerWidget</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#acf8ebb5abeec698a1f363a139d1dbf6a">messageEditArea_</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WTextArea.html">Wt::WTextArea</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">messageEdit_</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WPushButton.html">Wt::WPushButton</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#aa9a81423eda8238f8aa37be1a5a5bee8">sendButton_</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html">Wt::WContainerWidget</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#aee074d5eb739091af79eb8dccc90853e">userList_</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WSound.html">Wt::WSound</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSimpleChatWidget.html#af877bf2951965ee6832d7c5f5c5f885a">messageReceived_</a></td></tr> </table> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><p>A self-contained chat widget. </p> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00034">34</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> </div><hr/><h2>Member Typedef Documentation</h2> <a class="anchor" id="ae3fdaeefe19e26c6c6ad9f7c0445af57"></a><!-- doxytag: member="SimpleChatWidget::UserMap" ref="ae3fdaeefe19e26c6c6ad9f7c0445af57" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef std::map<<a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WString.html">Wt::WString</a>, bool> <a class="el" href="classSimpleChatWidget.html#ae3fdaeefe19e26c6c6ad9f7c0445af57">SimpleChatWidget::UserMap</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00082">82</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> </div> </div> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="aa1cdfd4ad4b7442304c6f44b3346f2e0"></a><!-- doxytag: member="SimpleChatWidget::SimpleChatWidget" ref="aa1cdfd4ad4b7442304c6f44b3346f2e0" args="(SimpleChatServer &server, Wt::WContainerWidget *parent=0)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">SimpleChatWidget::SimpleChatWidget </td> <td>(</td> <td class="paramtype"><a class="el" href="classSimpleChatServer.html">SimpleChatServer</a> & </td> <td class="paramname"><em>server</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html">Wt::WContainerWidget</a> * </td> <td class="paramname"><em>parent</em> = <code>0</code> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Create a chat widget that will connect to the given server. </p> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00026">26</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment"> : <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html#a520ba6e52a36a7f2efbef1a31a69e898">WContainerWidget</a>(parent), <a class="code" href="classSimpleChatWidget.html#ab29db4cbc3935964daf6b6c264ce68d3">server_</a>(server), <a class="code" href="classSimpleChatWidget.html#a8f56993c5967b22aff04009f4613a155">loggedIn_</a>(<span class="keyword">false</span>), <a class="code" href="classSimpleChatWidget.html#aee074d5eb739091af79eb8dccc90853e">userList_</a>(0), <a class="code" href="classSimpleChatWidget.html#af877bf2951965ee6832d7c5f5c5f885a">messageReceived_</a>(0) { <a class="code" href="classSimpleChatWidget.html#a596f7cbf70f45da9af017ac9d6f55ebc">user_</a> = <a class="code" href="classSimpleChatWidget.html#ab29db4cbc3935964daf6b6c264ce68d3">server_</a>.<a class="code" href="classSimpleChatServer.html#abf692567706118193111c2b2589c8d3f" title="Get a suggestion for a guest user name.">suggestGuest</a>(); <a class="code" href="classSimpleChatWidget.html#a71d98bf20e007af247f3b5a74f35efa2" title="Show a simple login screen.">letLogin</a>(); } </pre></div> </div> </div> <a class="anchor" id="afdf56768400ee025d0b71ccce476b1bf"></a><!-- doxytag: member="SimpleChatWidget::~SimpleChatWidget" ref="afdf56768400ee025d0b71ccce476b1bf" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">SimpleChatWidget::~SimpleChatWidget </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Delete a chat widget. </p> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00038">38</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keyword">delete</span> <a class="code" href="classSimpleChatWidget.html#af877bf2951965ee6832d7c5f5c5f885a">messageReceived_</a>; <a class="code" href="classSimpleChatWidget.html#abff498a5a43a7e0caac5f2140f14e301">logout</a>(); <a class="code" href="classSimpleChatWidget.html#a7706247f4a599cd995003a260fd36b0a">disconnect</a>(); } </pre></div> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a5fa75ab733ce294065a1233dfcbe83d6"></a><!-- doxytag: member="SimpleChatWidget::connect" ref="a5fa75ab733ce294065a1233dfcbe83d6" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void SimpleChatWidget::connect </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00045">45</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keywordflow">if</span> (<a class="code" href="classSimpleChatWidget.html#ab29db4cbc3935964daf6b6c264ce68d3">server_</a>.<a class="code" href="classSimpleChatServer.html#a916cec08c2aeb2d2ccf413e9c9a45036" title="Connects to the chat server.">connect</a> (<span class="keyword">this</span>, boost::bind(&<a class="code" href="classSimpleChatWidget.html#acda2bbe138c3119e4c62a6132801a232">SimpleChatWidget::processChatEvent</a>, <span class="keyword">this</span>, _1))) <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html#a38d922da0a0d83395519f3eaab85d0f6">Wt::WApplication::instance</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html#ad9631ca64e68d30d40cb49c90e55223d">enableUpdates</a>(<span class="keyword">true</span>); } </pre></div> </div> </div> <a class="anchor" id="aad5e7beb8f1aa6a26715d93fa3a9952e"></a><!-- doxytag: member="SimpleChatWidget::createLayout" ref="aad5e7beb8f1aa6a26715d93fa3a9952e" args="(Wt::WWidget *messages, Wt::WWidget *userList, Wt::WWidget *messageEdit, Wt::WWidget *sendButton, Wt::WWidget *logoutButton)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void SimpleChatWidget::createLayout </td> <td>(</td> <td class="paramtype"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html">Wt::WWidget</a> * </td> <td class="paramname"><em>messages</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html">Wt::WWidget</a> * </td> <td class="paramname"><em>userList</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html">Wt::WWidget</a> * </td> <td class="paramname"><em>messageEdit</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html">Wt::WWidget</a> * </td> <td class="paramname"><em>sendButton</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html">Wt::WWidget</a> * </td> <td class="paramname"><em>logoutButton</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Reimplemented in <a class="el" href="classPopupChatWidget.html#a0bef3d63c991081040b68d0f224a18fa">PopupChatWidget</a>.</p> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00108">108</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="comment">/*</span> <span class="comment"> * Create a vertical layout, which will hold 3 rows,</span> <span class="comment"> * organized like this:</span> <span class="comment"> *</span> <span class="comment"> * WVBoxLayout</span> <span class="comment"> * --------------------------------------------</span> <span class="comment"> * | nested WHBoxLayout (vertical stretch=1) |</span> <span class="comment"> * | | |</span> <span class="comment"> * | messages | userList |</span> <span class="comment"> * | (horizontal stretch=1) | |</span> <span class="comment"> * | | |</span> <span class="comment"> * --------------------------------------------</span> <span class="comment"> * | message edit area |</span> <span class="comment"> * --------------------------------------------</span> <span class="comment"> * | WHBoxLayout |</span> <span class="comment"> * | send | logout |</span> <span class="comment"> * --------------------------------------------</span> <span class="comment"> */</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WVBoxLayout.html">WVBoxLayout</a> *vLayout = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WVBoxLayout.html">WVBoxLayout</a>(); <span class="comment">// Create a horizontal layout for the messages | userslist.</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WHBoxLayout.html">WHBoxLayout</a> *hLayout = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WHBoxLayout.html">WHBoxLayout</a>(); <span class="comment">// Add widget to horizontal layout with stretch = 1</span> hLayout-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WBoxLayout.html#a7c1ec58e25d0b7add93f5f4342844db6">addWidget</a>(messages, 1); messages-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html#a4be23ecf48d5968efb5d926e38e01708">setStyleClass</a>(<span class="stringliteral">"chat-msgs"</span>); <span class="comment">// Add another widget to horizontal layout with stretch = 0</span> hLayout-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WBoxLayout.html#a7c1ec58e25d0b7add93f5f4342844db6">addWidget</a>(userList); userList-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html#a4be23ecf48d5968efb5d926e38e01708">setStyleClass</a>(<span class="stringliteral">"chat-users"</span>); hLayout-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WBoxLayout.html#ac2628c9ddfb9b6c079a8b5d5261b94c2">setResizable</a>(0, <span class="keyword">true</span>); <span class="comment">// Add nested layout to vertical layout with stretch = 1</span> vLayout-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WBoxLayout.html#a062d26b432841995a0be7b7d7aac6413">addLayout</a>(hLayout, 1); <span class="comment">// Add widget to vertical layout with stretch = 0</span> vLayout-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WBoxLayout.html#a7c1ec58e25d0b7add93f5f4342844db6">addWidget</a>(messageEdit); messageEdit-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html#a4be23ecf48d5968efb5d926e38e01708">setStyleClass</a>(<span class="stringliteral">"chat-noedit"</span>); <span class="comment">// Create a horizontal layout for the buttons.</span> hLayout = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WHBoxLayout.html">WHBoxLayout</a>(); <span class="comment">// Add button to horizontal layout with stretch = 0</span> hLayout-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WBoxLayout.html#a7c1ec58e25d0b7add93f5f4342844db6">addWidget</a>(sendButton); <span class="comment">// Add button to horizontal layout with stretch = 0</span> hLayout-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WBoxLayout.html#a7c1ec58e25d0b7add93f5f4342844db6">addWidget</a>(logoutButton); <span class="comment">// Add nested layout to vertical layout with stretch = 0</span> vLayout-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WBoxLayout.html#a062d26b432841995a0be7b7d7aac6413">addLayout</a>(hLayout, 0, AlignLeft); <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html#a1c84e0ffe330d4798f0ce217f75be08c">setLayout</a>(vLayout); } </pre></div> </div> </div> <a class="anchor" id="a7706247f4a599cd995003a260fd36b0a"></a><!-- doxytag: member="SimpleChatWidget::disconnect" ref="a7706247f4a599cd995003a260fd36b0a" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void SimpleChatWidget::disconnect </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00052">52</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keywordflow">if</span> (<a class="code" href="classSimpleChatWidget.html#ab29db4cbc3935964daf6b6c264ce68d3">server_</a>.<a class="code" href="classSimpleChatServer.html#a070e07e1a2a5ec5ecc4e944a761256c9" title="Disconnect from the chat server.">disconnect</a>(<span class="keyword">this</span>)) <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html#a38d922da0a0d83395519f3eaab85d0f6">Wt::WApplication::instance</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html#ad9631ca64e68d30d40cb49c90e55223d">enableUpdates</a>(<span class="keyword">false</span>); } </pre></div> </div> </div> <a class="anchor" id="a71d98bf20e007af247f3b5a74f35efa2"></a><!-- doxytag: member="SimpleChatWidget::letLogin" ref="a71d98bf20e007af247f3b5a74f35efa2" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void SimpleChatWidget::letLogin </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Show a simple login screen. </p> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00058">58</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment">{ <a class="code" href="classSimpleChatWidget.html#a7706247f4a599cd995003a260fd36b0a">disconnect</a>(); <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html#a608f748cbdda763f1a11556ddad9fbe1">clear</a>(); <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WVBoxLayout.html">WVBoxLayout</a> *vLayout = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WVBoxLayout.html">WVBoxLayout</a>(); <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html#a1c84e0ffe330d4798f0ce217f75be08c">setLayout</a>(vLayout); <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WHBoxLayout.html">WHBoxLayout</a> *hLayout = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WHBoxLayout.html">WHBoxLayout</a>(); vLayout-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WBoxLayout.html#a062d26b432841995a0be7b7d7aac6413">addLayout</a>(hLayout, 0, AlignTop | AlignLeft); hLayout-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WBoxLayout.html#a7c1ec58e25d0b7add93f5f4342844db6">addWidget</a>(<span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WLabel.html">WLabel</a>(<span class="stringliteral">"User name:"</span>), 0, AlignMiddle); hLayout-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WBoxLayout.html#a7c1ec58e25d0b7add93f5f4342844db6">addWidget</a>(<a class="code" href="classSimpleChatWidget.html#a6216e8cf4d368c1550562e1c5525d34b">userNameEdit_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WLineEdit.html">WLineEdit</a>(<a class="code" href="classSimpleChatWidget.html#a596f7cbf70f45da9af017ac9d6f55ebc">user_</a>), 0, AlignMiddle); <a class="code" href="classSimpleChatWidget.html#a6216e8cf4d368c1550562e1c5525d34b">userNameEdit_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFormWidget.html#afe33f5c3658ddbd08fec9f6c203c578b">setFocus</a>(); <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WPushButton.html">WPushButton</a> *b = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WPushButton.html">WPushButton</a>(<span class="stringliteral">"Login"</span>); hLayout-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WBoxLayout.html#a7c1ec58e25d0b7add93f5f4342844db6">addWidget</a>(b, 0, AlignMiddle); b-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WInteractWidget.html#ae11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(<span class="keyword">this</span>, &<a class="code" href="classSimpleChatWidget.html#ae085fda18af441e1630342395499478c">SimpleChatWidget::login</a>); <a class="code" href="classSimpleChatWidget.html#a6216e8cf4d368c1550562e1c5525d34b">userNameEdit_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WInteractWidget.html#a38f06d1ad95e7599b055f49931236c10">enterPressed</a>().<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1EventSignal.html#a36896f54a4db342af24efa6e9d703455">connect</a>(<span class="keyword">this</span>, &<a class="code" href="classSimpleChatWidget.html#ae085fda18af441e1630342395499478c">SimpleChatWidget::login</a>); vLayout-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WBoxLayout.html#a7c1ec58e25d0b7add93f5f4342844db6">addWidget</a>(<a class="code" href="classSimpleChatWidget.html#a98f69adc6f2381cd98584566ed4c497e">statusMsg_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html">WText</a>()); <a class="code" href="classSimpleChatWidget.html#a98f69adc6f2381cd98584566ed4c497e">statusMsg_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html#af22c64c4c5fed3d2aef0915a7e5c5866">setTextFormat</a>(PlainText); } </pre></div> </div> </div> <a class="anchor" id="aa05605599e6eb9e6a7aeb51234533241"></a><!-- doxytag: member="SimpleChatWidget::loggedIn" ref="aa05605599e6eb9e6a7aeb51234533241" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool SimpleChatWidget::loggedIn </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00167">167</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keywordflow">return</span> <a class="code" href="classSimpleChatWidget.html#a8f56993c5967b22aff04009f4613a155">loggedIn_</a>; } </pre></div> </div> </div> <a class="anchor" id="ae085fda18af441e1630342395499478c"></a><!-- doxytag: member="SimpleChatWidget::login" ref="ae085fda18af441e1630342395499478c" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void SimpleChatWidget::login </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00084">84</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keywordflow">if</span> (!<a class="code" href="classSimpleChatWidget.html#aa05605599e6eb9e6a7aeb51234533241">loggedIn</a>()) { <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WString.html">WString</a> name = <a class="code" href="classSimpleChatWidget.html#a6216e8cf4d368c1550562e1c5525d34b">userNameEdit_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WLineEdit.html#ac74b58779cb635898cac13e81d8b0c7a">text</a>(); <span class="keywordflow">if</span> (!<a class="code" href="classSimpleChatWidget.html#af877bf2951965ee6832d7c5f5c5f885a">messageReceived_</a>) <a class="code" href="classSimpleChatWidget.html#af877bf2951965ee6832d7c5f5c5f885a">messageReceived_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WSound.html">WSound</a>(<span class="stringliteral">"sounds/message_received.mp3"</span>); <span class="keywordflow">if</span> (!<a class="code" href="classSimpleChatWidget.html#a19c0deeaf8952ec36791c3f444964878" title="Start a chat for the given user.">startChat</a>(name)) <a class="code" href="classSimpleChatWidget.html#a98f69adc6f2381cd98584566ed4c497e">statusMsg_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html#a2f788aa524d51b3962642c9f565e66e6">setText</a>(<span class="stringliteral">"Sorry, name '"</span> + <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#a6cd1b8a84c7aaf72e5d44cb47ae90e9c">escapeText</a>(name) + <span class="stringliteral">"' is already taken."</span>); } } </pre></div> </div> </div> <a class="anchor" id="abff498a5a43a7e0caac5f2140f14e301"></a><!-- doxytag: member="SimpleChatWidget::logout" ref="abff498a5a43a7e0caac5f2140f14e301" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void SimpleChatWidget::logout </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00098">98</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keywordflow">if</span> (<a class="code" href="classSimpleChatWidget.html#aa05605599e6eb9e6a7aeb51234533241">loggedIn</a>()) { <a class="code" href="classSimpleChatWidget.html#a8f56993c5967b22aff04009f4613a155">loggedIn_</a> = <span class="keyword">false</span>; <a class="code" href="classSimpleChatWidget.html#ab29db4cbc3935964daf6b6c264ce68d3">server_</a>.<a class="code" href="classSimpleChatServer.html#a5d376e3ff441f24843be648dd420e027" title="Logout from the server.">logout</a>(<a class="code" href="classSimpleChatWidget.html#a596f7cbf70f45da9af017ac9d6f55ebc">user_</a>); <a class="code" href="classSimpleChatWidget.html#a71d98bf20e007af247f3b5a74f35efa2" title="Show a simple login screen.">letLogin</a>(); } } </pre></div> </div> </div> <a class="anchor" id="ab5f02d352a4f461edbe9a8f70859edd7"></a><!-- doxytag: member="SimpleChatWidget::newMessage" ref="ab5f02d352a4f461edbe9a8f70859edd7" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void SimpleChatWidget::newMessage </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Reimplemented in <a class="el" href="classPopupChatWidget.html#a23967836774a1de9984bbfcb5652e76c">PopupChatWidget</a>.</p> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00310">310</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment">{ } </pre></div> </div> </div> <a class="anchor" id="acda2bbe138c3119e4c62a6132801a232"></a><!-- doxytag: member="SimpleChatWidget::processChatEvent" ref="acda2bbe138c3119e4c62a6132801a232" args="(const ChatEvent &event)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void SimpleChatWidget::processChatEvent </td> <td>(</td> <td class="paramtype">const <a class="el" href="classChatEvent.html">ChatEvent</a> & </td> <td class="paramname"><em>event</em></td><td>)</td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00319">319</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment">{ <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html">WApplication</a> *app = WApplication::instance(); <span class="comment">/*</span> <span class="comment"> * This is where the "server-push" happens. The chat server posts to this</span> <span class="comment"> * event from other sessions, see SimpleChatServer::postChatEvent()</span> <span class="comment"> */</span> <span class="comment">/*</span> <span class="comment"> * Format and append the line to the conversation.</span> <span class="comment"> *</span> <span class="comment"> * This is also the step where the automatic XSS filtering will kick in:</span> <span class="comment"> * - if another user tried to pass on some JavaScript, it is filtered away.</span> <span class="comment"> * - if another user did not provide valid XHTML, the text is automatically</span> <span class="comment"> * interpreted as PlainText</span> <span class="comment"> */</span> <span class="comment">/*</span> <span class="comment"> * If it is not a plain message, also update the user list.</span> <span class="comment"> */</span> <span class="keywordflow">if</span> (event.<a class="code" href="classChatEvent.html#ac932234e63d23080f4f91f7ae1167418" title="Get the event type.">type</a>() != <a class="code" href="classChatEvent.html#afa84446dae17c08fe15cf932fc0b7d61ab8894351cd11a316e25495f677eb9ae1">ChatEvent::Message</a>) { <span class="keywordflow">if</span> (event.<a class="code" href="classChatEvent.html#ac932234e63d23080f4f91f7ae1167418" title="Get the event type.">type</a>() == <a class="code" href="classChatEvent.html#afa84446dae17c08fe15cf932fc0b7d61ab168d89affa0c72ba9a37d2881479ed8">ChatEvent::Rename</a> && <span class="keyword">event</span>.user() == <a class="code" href="classSimpleChatWidget.html#a596f7cbf70f45da9af017ac9d6f55ebc">user_</a>) <a class="code" href="classSimpleChatWidget.html#a596f7cbf70f45da9af017ac9d6f55ebc">user_</a> = event.<a class="code" href="classChatEvent.html#a7a16dc199e1da813b8fc6bc155dc04e2" title="Get the extra data for this event.">data</a>(); <a class="code" href="classSimpleChatWidget.html#a282d3fa5a7aceea89558de31db4bb6e0">updateUsers</a>(); } <a class="code" href="classSimpleChatWidget.html#ab5f02d352a4f461edbe9a8f70859edd7">newMessage</a>(); <span class="comment">/*</span> <span class="comment"> * Anything else doesn't matter if we are not logged in.</span> <span class="comment"> */</span> <span class="keywordflow">if</span> (!<a class="code" href="classSimpleChatWidget.html#aa05605599e6eb9e6a7aeb51234533241">loggedIn</a>()) { app-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html#a51f50e0641a6d702a7c6ab7f8dd5946a">triggerUpdate</a>(); <span class="keywordflow">return</span>; } <span class="keywordtype">bool</span> display = <span class="keyword">event</span>.type() != <a class="code" href="classChatEvent.html#afa84446dae17c08fe15cf932fc0b7d61ab8894351cd11a316e25495f677eb9ae1">ChatEvent::Message</a> || !<a class="code" href="classSimpleChatWidget.html#aee074d5eb739091af79eb8dccc90853e">userList_</a> || (<a class="code" href="classSimpleChatWidget.html#afe3350a7929733a5b93db803dee8704b">users_</a>.find(event.<a class="code" href="classChatEvent.html#adbeff19aece69e75ab0b69f2adecc5b6" title="Get the user who caused the event.">user</a>()) != <a class="code" href="classSimpleChatWidget.html#afe3350a7929733a5b93db803dee8704b">users_</a>.end() && <a class="code" href="classSimpleChatWidget.html#afe3350a7929733a5b93db803dee8704b">users_</a>[<span class="keyword">event</span>.user()]); <span class="keywordflow">if</span> (display) { <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html">WText</a> *w = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html">WText</a>(<a class="code" href="classSimpleChatWidget.html#a32a593ed511997f32a33a55d651ce79d">messages_</a>); <span class="comment">/*</span> <span class="comment"> * If it fails, it is because the content wasn't valid XHTML</span> <span class="comment"> */</span> <span class="keywordflow">if</span> (!w-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html#a2f788aa524d51b3962642c9f565e66e6">setText</a>(event.<a class="code" href="classChatEvent.html#a459911a1ba1c3e793c6c797e534691b7" title="Get the message formatted as HTML, rendered for the given user.">formattedHTML</a>(<a class="code" href="classSimpleChatWidget.html#a596f7cbf70f45da9af017ac9d6f55ebc">user_</a>, XHTMLText))) { w-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html#a2f788aa524d51b3962642c9f565e66e6">setText</a>(event.<a class="code" href="classChatEvent.html#a459911a1ba1c3e793c6c797e534691b7" title="Get the message formatted as HTML, rendered for the given user.">formattedHTML</a>(<a class="code" href="classSimpleChatWidget.html#a596f7cbf70f45da9af017ac9d6f55ebc">user_</a>, PlainText)); w-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html#af22c64c4c5fed3d2aef0915a7e5c5866">setTextFormat</a>(XHTMLText); } w-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#ad0957c892e70c6bf5399cf71e66f3e11">setInline</a>(<span class="keyword">false</span>); w-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#afd3a3b359681111460a93d13979d17dd">setStyleClass</a>(<span class="stringliteral">"chat-msg"</span>); <span class="comment">/*</span> <span class="comment"> * Leave no more than 100 messages in the back-log</span> <span class="comment"> */</span> <span class="keywordflow">if</span> (<a class="code" href="classSimpleChatWidget.html#a32a593ed511997f32a33a55d651ce79d">messages_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html#a85abd4d928575717052ff7fa04c3c2c9">count</a>() > 100) <span class="keyword">delete</span> <a class="code" href="classSimpleChatWidget.html#a32a593ed511997f32a33a55d651ce79d">messages_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#a72c4cd4ce0a6ed1ff2d7b6ddf2dbd917">children</a>()[0]; <span class="comment">/*</span> <span class="comment"> * Little javascript trick to make sure we scroll along with new content</span> <span class="comment"> */</span> app-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html#a2a92457b9212cef4057cb54e56183967">doJavaScript</a>(<a class="code" href="classSimpleChatWidget.html#a32a593ed511997f32a33a55d651ce79d">messages_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html#aa2b7078b3b43d53a85e5244b45d504f7">jsRef</a>() + <span class="stringliteral">".scrollTop += "</span> + <a class="code" href="classSimpleChatWidget.html#a32a593ed511997f32a33a55d651ce79d">messages_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html#aa2b7078b3b43d53a85e5244b45d504f7">jsRef</a>() + <span class="stringliteral">".scrollHeight;"</span>); <span class="comment">/* If this message belongs to another user, play a received sound */</span> <span class="keywordflow">if</span> (event.<a class="code" href="classChatEvent.html#adbeff19aece69e75ab0b69f2adecc5b6" title="Get the user who caused the event.">user</a>() != <a class="code" href="classSimpleChatWidget.html#a596f7cbf70f45da9af017ac9d6f55ebc">user_</a> && <a class="code" href="classSimpleChatWidget.html#af877bf2951965ee6832d7c5f5c5f885a">messageReceived_</a>) <a class="code" href="classSimpleChatWidget.html#af877bf2951965ee6832d7c5f5c5f885a">messageReceived_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WSound.html#a6ca6b48ebc9e49ee6745228961df3817">play</a>(); } <span class="comment">/*</span> <span class="comment"> * This is the server push action: we propagate the updated UI to the client,</span> <span class="comment"> * (when the event was triggered by another user)</span> <span class="comment"> */</span> app-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html#a51f50e0641a6d702a7c6ab7f8dd5946a">triggerUpdate</a>(); } </pre></div> </div> </div> <a class="anchor" id="aa1a93dff4800d783c80a9846cdc591b7"></a><!-- doxytag: member="SimpleChatWidget::render" ref="aa1a93dff4800d783c80a9846cdc591b7" args="(Wt::WFlags< Wt::RenderFlag > flags)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void SimpleChatWidget::render </td> <td>(</td> <td class="paramtype">Wt::WFlags< <a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/namespaceWt.html#a1097ddb5b58c20fe2f6c9d096e71575c">Wt::RenderFlag</a> > </td> <td class="paramname"><em>flags</em></td><td>)</td> <td><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00172">172</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keywordflow">if</span> (flags & RenderFull) { <span class="keywordflow">if</span> (<a class="code" href="classSimpleChatWidget.html#aa05605599e6eb9e6a7aeb51234533241">loggedIn</a>()) { <span class="comment">/* Handle a page refresh correctly */</span> <a class="code" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">messageEdit_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WTextArea.html#a1f05060c037d13c2c6c26f51f1fb9640">setText</a>(WString::Empty); <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#a159456e656af966117936b9024de4ca2">doJavaScript</a>(<span class="stringliteral">"setTimeout(function() { "</span> + <a class="code" href="classSimpleChatWidget.html#a32a593ed511997f32a33a55d651ce79d">messages_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html#aa2b7078b3b43d53a85e5244b45d504f7">jsRef</a>() + <span class="stringliteral">".scrollTop += "</span> + <a class="code" href="classSimpleChatWidget.html#a32a593ed511997f32a33a55d651ce79d">messages_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html#aa2b7078b3b43d53a85e5244b45d504f7">jsRef</a>() + <span class="stringliteral">".scrollHeight;}, 0);"</span>); } } <a class="code" href="classSimpleChatWidget.html#aa1a93dff4800d783c80a9846cdc591b7">WContainerWidget::render</a>(flags); } </pre></div> </div> </div> <a class="anchor" id="ad1c4dc9e6aca0c5b8e1db81ee7c5fad3"></a><!-- doxytag: member="SimpleChatWidget::send" ref="ad1c4dc9e6aca0c5b8e1db81ee7c5fad3" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void SimpleChatWidget::send </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00274">274</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keywordflow">if</span> (!<a class="code" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">messageEdit_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WTextArea.html#ad8b89ce30df2b02894c53b6ed71fe4a6">text</a>().<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WString.html#a87a90e69ab25d62ba029e10ea244abaf">empty</a>()) <a class="code" href="classSimpleChatWidget.html#ab29db4cbc3935964daf6b6c264ce68d3">server_</a>.<a class="code" href="classSimpleChatServer.html#aab42074f7904397b3547a6df89c16d9d" title="Send a message on behalve of a user.">sendMessage</a>(<a class="code" href="classSimpleChatWidget.html#a596f7cbf70f45da9af017ac9d6f55ebc">user_</a>, <a class="code" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">messageEdit_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WTextArea.html#ad8b89ce30df2b02894c53b6ed71fe4a6">text</a>()); } </pre></div> </div> </div> <a class="anchor" id="a839a181c695589b066c4d68152ab05c0"></a><!-- doxytag: member="SimpleChatWidget::server" ref="a839a181c695589b066c4d68152ab05c0" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classSimpleChatServer.html">SimpleChatServer</a>& SimpleChatWidget::server </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00062">62</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keywordflow">return</span> <a class="code" href="classSimpleChatWidget.html#ab29db4cbc3935964daf6b6c264ce68d3">server_</a>; } </pre></div> </div> </div> <a class="anchor" id="a19c0deeaf8952ec36791c3f444964878"></a><!-- doxytag: member="SimpleChatWidget::startChat" ref="a19c0deeaf8952ec36791c3f444964878" args="(const Wt::WString &user)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool SimpleChatWidget::startChat </td> <td>(</td> <td class="paramtype">const <a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WString.html">Wt::WString</a> & </td> <td class="paramname"><em>user</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Start a chat for the given user. </p> <p>Returns false if the user could not login. </p> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00187">187</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="comment">/*</span> <span class="comment"> * When logging in, we pass our processChatEvent method as the function that</span> <span class="comment"> * is used to indicate a new chat event for this user.</span> <span class="comment"> */</span> <span class="keywordflow">if</span> (<a class="code" href="classSimpleChatWidget.html#ab29db4cbc3935964daf6b6c264ce68d3">server_</a>.<a class="code" href="classSimpleChatServer.html#ada0ab17464e1711ca15f30b381ede57c" title="Try to login with given user name.">login</a>(user)) { <a class="code" href="classSimpleChatWidget.html#a8f56993c5967b22aff04009f4613a155">loggedIn_</a> = <span class="keyword">true</span>; <a class="code" href="classSimpleChatWidget.html#a5fa75ab733ce294065a1233dfcbe83d6">connect</a>(); <a class="code" href="classSimpleChatWidget.html#a596f7cbf70f45da9af017ac9d6f55ebc">user_</a> = user; <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html#a608f748cbdda763f1a11556ddad9fbe1">clear</a>(); <a class="code" href="classSimpleChatWidget.html#a6216e8cf4d368c1550562e1c5525d34b">userNameEdit_</a> = 0; <a class="code" href="classSimpleChatWidget.html#a32a593ed511997f32a33a55d651ce79d">messages_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html#a520ba6e52a36a7f2efbef1a31a69e898">WContainerWidget</a>(); <a class="code" href="classSimpleChatWidget.html#aee074d5eb739091af79eb8dccc90853e">userList_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html#a520ba6e52a36a7f2efbef1a31a69e898">WContainerWidget</a>(); <a class="code" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">messageEdit_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WTextArea.html">WTextArea</a>(); <a class="code" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">messageEdit_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WTextArea.html#ade46b47350f427f45c9b53ac7e41c5b2">setRows</a>(2); <a class="code" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">messageEdit_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFormWidget.html#afe33f5c3658ddbd08fec9f6c203c578b">setFocus</a>(); <span class="comment">// Display scroll bars if contents overflows</span> <a class="code" href="classSimpleChatWidget.html#a32a593ed511997f32a33a55d651ce79d">messages_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html#ae269f870992c5843d3097a63795b10d6">setOverflow</a>(WContainerWidget::OverflowAuto); <a class="code" href="classSimpleChatWidget.html#aee074d5eb739091af79eb8dccc90853e">userList_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html#ae269f870992c5843d3097a63795b10d6">setOverflow</a>(WContainerWidget::OverflowAuto); <a class="code" href="classSimpleChatWidget.html#aa9a81423eda8238f8aa37be1a5a5bee8">sendButton_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WPushButton.html">WPushButton</a>(<span class="stringliteral">"Send"</span>); <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WPushButton.html">WPushButton</a> *logoutButton = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WPushButton.html">WPushButton</a>(<span class="stringliteral">"Logout"</span>); <a class="code" href="classSimpleChatWidget.html#aad5e7beb8f1aa6a26715d93fa3a9952e">createLayout</a>(<a class="code" href="classSimpleChatWidget.html#a32a593ed511997f32a33a55d651ce79d">messages_</a>, <a class="code" href="classSimpleChatWidget.html#aee074d5eb739091af79eb8dccc90853e">userList_</a>, <a class="code" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">messageEdit_</a>, <a class="code" href="classSimpleChatWidget.html#aa9a81423eda8238f8aa37be1a5a5bee8">sendButton_</a>, logoutButton); <span class="comment">/*</span> <span class="comment"> * Connect event handlers:</span> <span class="comment"> * - click on button</span> <span class="comment"> * - enter in text area</span> <span class="comment"> *</span> <span class="comment"> * We will clear the input field using a small custom client-side</span> <span class="comment"> * JavaScript invocation.</span> <span class="comment"> */</span> <span class="comment">// Create a JavaScript 'slot' (JSlot). The JavaScript slot always takes</span> <span class="comment">// 2 arguments: the originator of the event (in our case the</span> <span class="comment">// button or text area), and the JavaScript event object.</span> <a class="code" href="classSimpleChatWidget.html#a7e58bf2312b413d2d649500c26a6f8d6">clearInput_</a>.<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1JSlot.html#a4e28a8ef6d2965aeaac0c5dcf587bbbb">setJavaScript</a> (<span class="stringliteral">"function(o, e) { setTimeout(function() {"</span> <span class="stringliteral">""</span> + <a class="code" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">messageEdit_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html#aa2b7078b3b43d53a85e5244b45d504f7">jsRef</a>() + <span class="stringliteral">".value='';"</span> <span class="stringliteral">"}, 0); }"</span>); <span class="comment">// Bind the C++ and JavaScript event handlers.</span> <a class="code" href="classSimpleChatWidget.html#aa9a81423eda8238f8aa37be1a5a5bee8">sendButton_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WInteractWidget.html#ae11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(<span class="keyword">this</span>, &<a class="code" href="classSimpleChatWidget.html#ad1c4dc9e6aca0c5b8e1db81ee7c5fad3">SimpleChatWidget::send</a>); <a class="code" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">messageEdit_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WInteractWidget.html#a38f06d1ad95e7599b055f49931236c10">enterPressed</a>().<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1EventSignal.html#a36896f54a4db342af24efa6e9d703455">connect</a>(<span class="keyword">this</span>, &<a class="code" href="classSimpleChatWidget.html#ad1c4dc9e6aca0c5b8e1db81ee7c5fad3">SimpleChatWidget::send</a>); <a class="code" href="classSimpleChatWidget.html#aa9a81423eda8238f8aa37be1a5a5bee8">sendButton_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WInteractWidget.html#ae11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(<a class="code" href="classSimpleChatWidget.html#a7e58bf2312b413d2d649500c26a6f8d6">clearInput_</a>); <a class="code" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">messageEdit_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WInteractWidget.html#a38f06d1ad95e7599b055f49931236c10">enterPressed</a>().<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1EventSignal.html#a36896f54a4db342af24efa6e9d703455">connect</a>(<a class="code" href="classSimpleChatWidget.html#a7e58bf2312b413d2d649500c26a6f8d6">clearInput_</a>); <a class="code" href="classSimpleChatWidget.html#aa9a81423eda8238f8aa37be1a5a5bee8">sendButton_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WInteractWidget.html#ae11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(<a class="code" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">messageEdit_</a>, &WLineEdit::setFocus); <a class="code" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">messageEdit_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WInteractWidget.html#a38f06d1ad95e7599b055f49931236c10">enterPressed</a>().<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1EventSignal.html#a36896f54a4db342af24efa6e9d703455">connect</a>(<a class="code" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">messageEdit_</a>, &WLineEdit::setFocus); <span class="comment">// Prevent the enter from generating a new line, which is its default</span> <span class="comment">// action</span> <a class="code" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">messageEdit_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WInteractWidget.html#a38f06d1ad95e7599b055f49931236c10">enterPressed</a>().<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1EventSignalBase.html#afd8983929683ffc4c6dda8a91a7bda7b">preventDefaultAction</a>(); logoutButton-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WInteractWidget.html#ae11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(<span class="keyword">this</span>, &<a class="code" href="classSimpleChatWidget.html#abff498a5a43a7e0caac5f2140f14e301">SimpleChatWidget::logout</a>); <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html">WText</a> *msg = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html">WText</a> (<span class="stringliteral">"<div><span class='chat-info'>You are joining as "</span> + <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#a6cd1b8a84c7aaf72e5d44cb47ae90e9c">escapeText</a>(<a class="code" href="classSimpleChatWidget.html#a596f7cbf70f45da9af017ac9d6f55ebc">user_</a>) + <span class="stringliteral">".</span></div>"</span>, <a class="code" href="classSimpleChatWidget.html#a32a593ed511997f32a33a55d651ce79d">messages_</a>); msg-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#afd3a3b359681111460a93d13979d17dd">setStyleClass</a>(<span class="stringliteral">"chat-msg"</span>); <span class="keywordflow">if</span> (!<a class="code" href="classSimpleChatWidget.html#aee074d5eb739091af79eb8dccc90853e">userList_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html#a3461e31818c4d2f516641bdaf508312a">parent</a>()) { <span class="keyword">delete</span> <a class="code" href="classSimpleChatWidget.html#aee074d5eb739091af79eb8dccc90853e">userList_</a>; <a class="code" href="classSimpleChatWidget.html#aee074d5eb739091af79eb8dccc90853e">userList_</a> = 0; } <span class="keywordflow">if</span> (!<a class="code" href="classSimpleChatWidget.html#aa9a81423eda8238f8aa37be1a5a5bee8">sendButton_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html#a3461e31818c4d2f516641bdaf508312a">parent</a>()) { <span class="keyword">delete</span> <a class="code" href="classSimpleChatWidget.html#aa9a81423eda8238f8aa37be1a5a5bee8">sendButton_</a>; <a class="code" href="classSimpleChatWidget.html#aa9a81423eda8238f8aa37be1a5a5bee8">sendButton_</a> = 0; } <span class="keywordflow">if</span> (!logoutButton-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html#a3461e31818c4d2f516641bdaf508312a">parent</a>()) <span class="keyword">delete</span> logoutButton; <a class="code" href="classSimpleChatWidget.html#a282d3fa5a7aceea89558de31db4bb6e0">updateUsers</a>(); <span class="keywordflow">return</span> <span class="keyword">true</span>; } <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>; } </pre></div> </div> </div> <a class="anchor" id="a76509fdffaf6a244c99977cf587c42e0"></a><!-- doxytag: member="SimpleChatWidget::updateUser" ref="a76509fdffaf6a244c99977cf587c42e0" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void SimpleChatWidget::updateUser </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00313">313</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment">{ <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WCheckBox.html">WCheckBox</a> *b = <span class="keyword">dynamic_cast<</span><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WCheckBox.html">WCheckBox</a> *<span class="keyword">></span>(<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WObject.html#a413deb54de40ee278dd554e4960d58ca">sender</a>()); <a class="code" href="classSimpleChatWidget.html#afe3350a7929733a5b93db803dee8704b">users_</a>[b-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WAbstractToggleButton.html#a3ef9682b5fe66d802380ccd6c698725d">text</a>()] = b-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WAbstractToggleButton.html#abd40ce7a6c4b4e924c9097015f4971ea">isChecked</a>(); } </pre></div> </div> </div> <a class="anchor" id="a282d3fa5a7aceea89558de31db4bb6e0"></a><!-- doxytag: member="SimpleChatWidget::updateUsers" ref="a282d3fa5a7aceea89558de31db4bb6e0" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void SimpleChatWidget::updateUsers </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Reimplemented in <a class="el" href="classPopupChatWidget.html#a5c9dd041e3ea9ea83a5723167064353c">PopupChatWidget</a>.</p> <p>Definition at line <a class="el" href="SimpleChatWidget_8C_source.html#l00280">280</a> of file <a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keywordflow">if</span> (<a class="code" href="classSimpleChatWidget.html#aee074d5eb739091af79eb8dccc90853e">userList_</a>) { <a class="code" href="classSimpleChatWidget.html#aee074d5eb739091af79eb8dccc90853e">userList_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html#a608f748cbdda763f1a11556ddad9fbe1">clear</a>(); <a class="code" href="classSimpleChatServer.html#a911329f24472ca7ed245ab18611488d4" title="Typedef for a collection of user names.">SimpleChatServer::UserSet</a> users = <a class="code" href="classSimpleChatWidget.html#ab29db4cbc3935964daf6b6c264ce68d3">server_</a>.<a class="code" href="classSimpleChatServer.html#a40f5c6465b1edb44278be93c97a29a39" title="Get the users currently logged in.">users</a>(); <a class="code" href="classSimpleChatWidget.html#ae3fdaeefe19e26c6c6ad9f7c0445af57">UserMap</a> oldUsers = <a class="code" href="classSimpleChatWidget.html#afe3350a7929733a5b93db803dee8704b">users_</a>; <a class="code" href="classSimpleChatWidget.html#afe3350a7929733a5b93db803dee8704b">users_</a>.clear(); <span class="keywordflow">for</span> (SimpleChatServer::UserSet::iterator i = users.begin(); i != users.end(); ++i) { <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WCheckBox.html">WCheckBox</a> *w = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WCheckBox.html">WCheckBox</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#a6cd1b8a84c7aaf72e5d44cb47ae90e9c">escapeText</a>(*i), <a class="code" href="classSimpleChatWidget.html#aee074d5eb739091af79eb8dccc90853e">userList_</a>); w-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#ad0957c892e70c6bf5399cf71e66f3e11">setInline</a>(<span class="keyword">false</span>); UserMap::const_iterator j = oldUsers.find(*i); <span class="keywordflow">if</span> (j != oldUsers.end()) w-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WAbstractToggleButton.html#a6838c9a37f3e9e3c466e9f48bde55e62">setChecked</a>(j->second); <span class="keywordflow">else</span> w-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WAbstractToggleButton.html#a6838c9a37f3e9e3c466e9f48bde55e62">setChecked</a>(<span class="keyword">true</span>); <a class="code" href="classSimpleChatWidget.html#afe3350a7929733a5b93db803dee8704b">users_</a>[*i] = w-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WAbstractToggleButton.html#abd40ce7a6c4b4e924c9097015f4971ea">isChecked</a>(); w-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFormWidget.html#a5216ba1594b5dc525cc47cad593c7ba8">changed</a>().<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1EventSignal.html#a36896f54a4db342af24efa6e9d703455">connect</a>(<span class="keyword">this</span>, &<a class="code" href="classSimpleChatWidget.html#a76509fdffaf6a244c99977cf587c42e0">SimpleChatWidget::updateUser</a>); <span class="keywordflow">if</span> (*i == <a class="code" href="classSimpleChatWidget.html#a596f7cbf70f45da9af017ac9d6f55ebc">user_</a>) w-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#afd3a3b359681111460a93d13979d17dd">setStyleClass</a>(<span class="stringliteral">"chat-self"</span>); } } } </pre></div> </div> </div> <a class="anchor" id="a89bb84de7baa0e926a5c1d45fbd91256"></a><!-- doxytag: member="SimpleChatWidget::userCount" ref="a89bb84de7baa0e926a5c1d45fbd91256" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int SimpleChatWidget::userCount </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00064">64</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keywordflow">return</span> <a class="code" href="classSimpleChatWidget.html#afe3350a7929733a5b93db803dee8704b">users_</a>.size(); } </pre></div> </div> </div> <a class="anchor" id="af080cd053547503668a1ee29fd428d5f"></a><!-- doxytag: member="SimpleChatWidget::userName" ref="af080cd053547503668a1ee29fd428d5f" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WString.html">Wt::WString</a>& SimpleChatWidget::userName </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00066">66</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keywordflow">return</span> <a class="code" href="classSimpleChatWidget.html#a596f7cbf70f45da9af017ac9d6f55ebc">user_</a>; } </pre></div> </div> </div> <hr/><h2>Member Data Documentation</h2> <a class="anchor" id="a7e58bf2312b413d2d649500c26a6f8d6"></a><!-- doxytag: member="SimpleChatWidget::clearInput_" ref="a7e58bf2312b413d2d649500c26a6f8d6" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1JSlot.html">Wt::JSlot</a> <a class="el" href="classSimpleChatWidget.html#a7e58bf2312b413d2d649500c26a6f8d6">SimpleChatWidget::clearInput_</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00088">88</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> </div> </div> <a class="anchor" id="a8f56993c5967b22aff04009f4613a155"></a><!-- doxytag: member="SimpleChatWidget::loggedIn_" ref="a8f56993c5967b22aff04009f4613a155" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="classSimpleChatWidget.html#a8f56993c5967b22aff04009f4613a155">SimpleChatWidget::loggedIn_</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00086">86</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> </div> </div> <a class="anchor" id="a4b658b56ef4ba1862765b9ad84fd9a9c"></a><!-- doxytag: member="SimpleChatWidget::messageEdit_" ref="a4b658b56ef4ba1862765b9ad84fd9a9c" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WTextArea.html">Wt::WTextArea</a>* <a class="el" href="classSimpleChatWidget.html#a4b658b56ef4ba1862765b9ad84fd9a9c">SimpleChatWidget::messageEdit_</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00097">97</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> </div> </div> <a class="anchor" id="acf8ebb5abeec698a1f363a139d1dbf6a"></a><!-- doxytag: member="SimpleChatWidget::messageEditArea_" ref="acf8ebb5abeec698a1f363a139d1dbf6a" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html">Wt::WContainerWidget</a>* <a class="el" href="classSimpleChatWidget.html#acf8ebb5abeec698a1f363a139d1dbf6a">SimpleChatWidget::messageEditArea_</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00096">96</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> </div> </div> <a class="anchor" id="af877bf2951965ee6832d7c5f5c5f885a"></a><!-- doxytag: member="SimpleChatWidget::messageReceived_" ref="af877bf2951965ee6832d7c5f5c5f885a" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WSound.html">Wt::WSound</a>* <a class="el" href="classSimpleChatWidget.html#af877bf2951965ee6832d7c5f5c5f885a">SimpleChatWidget::messageReceived_</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00101">101</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> </div> </div> <a class="anchor" id="a32a593ed511997f32a33a55d651ce79d"></a><!-- doxytag: member="SimpleChatWidget::messages_" ref="a32a593ed511997f32a33a55d651ce79d" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html">Wt::WContainerWidget</a>* <a class="el" href="classSimpleChatWidget.html#a32a593ed511997f32a33a55d651ce79d">SimpleChatWidget::messages_</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00095">95</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> </div> </div> <a class="anchor" id="aa9a81423eda8238f8aa37be1a5a5bee8"></a><!-- doxytag: member="SimpleChatWidget::sendButton_" ref="aa9a81423eda8238f8aa37be1a5a5bee8" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WPushButton.html">Wt::WPushButton</a>* <a class="el" href="classSimpleChatWidget.html#aa9a81423eda8238f8aa37be1a5a5bee8">SimpleChatWidget::sendButton_</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00098">98</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> </div> </div> <a class="anchor" id="ab29db4cbc3935964daf6b6c264ce68d3"></a><!-- doxytag: member="SimpleChatWidget::server_" ref="ab29db4cbc3935964daf6b6c264ce68d3" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classSimpleChatServer.html">SimpleChatServer</a>& <a class="el" href="classSimpleChatWidget.html#ab29db4cbc3935964daf6b6c264ce68d3">SimpleChatWidget::server_</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00085">85</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> </div> </div> <a class="anchor" id="a98f69adc6f2381cd98584566ed4c497e"></a><!-- doxytag: member="SimpleChatWidget::statusMsg_" ref="a98f69adc6f2381cd98584566ed4c497e" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html">Wt::WText</a>* <a class="el" href="classSimpleChatWidget.html#a98f69adc6f2381cd98584566ed4c497e">SimpleChatWidget::statusMsg_</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00093">93</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> </div> </div> <a class="anchor" id="a596f7cbf70f45da9af017ac9d6f55ebc"></a><!-- doxytag: member="SimpleChatWidget::user_" ref="a596f7cbf70f45da9af017ac9d6f55ebc" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WString.html">Wt::WString</a> <a class="el" href="classSimpleChatWidget.html#a596f7cbf70f45da9af017ac9d6f55ebc">SimpleChatWidget::user_</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00090">90</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> </div> </div> <a class="anchor" id="aee074d5eb739091af79eb8dccc90853e"></a><!-- doxytag: member="SimpleChatWidget::userList_" ref="aee074d5eb739091af79eb8dccc90853e" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html">Wt::WContainerWidget</a>* <a class="el" href="classSimpleChatWidget.html#aee074d5eb739091af79eb8dccc90853e">SimpleChatWidget::userList_</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00099">99</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> </div> </div> <a class="anchor" id="a6216e8cf4d368c1550562e1c5525d34b"></a><!-- doxytag: member="SimpleChatWidget::userNameEdit_" ref="a6216e8cf4d368c1550562e1c5525d34b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="elRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WLineEdit.html">Wt::WLineEdit</a>* <a class="el" href="classSimpleChatWidget.html#a6216e8cf4d368c1550562e1c5525d34b">SimpleChatWidget::userNameEdit_</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00092">92</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> </div> </div> <a class="anchor" id="afe3350a7929733a5b93db803dee8704b"></a><!-- doxytag: member="SimpleChatWidget::users_" ref="afe3350a7929733a5b93db803dee8704b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classSimpleChatWidget.html#ae3fdaeefe19e26c6c6ad9f7c0445af57">UserMap</a> <a class="el" href="classSimpleChatWidget.html#afe3350a7929733a5b93db803dee8704b">SimpleChatWidget::users_</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="SimpleChatWidget_8h_source.html#l00083">83</a> of file <a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a>.</p> </div> </div> <hr/>The documentation for this class was generated from the following files:<ul> <li>/home/koen/project/wt/public-git/wt/examples/simplechat/<a class="el" href="SimpleChatWidget_8h_source.html">SimpleChatWidget.h</a></li> <li>/home/koen/project/wt/public-git/wt/examples/simplechat/<a class="el" href="SimpleChatWidget_8C_source.html">SimpleChatWidget.C</a></li> </ul> </div> <hr size="1"><address style="text-align: right; margin: 3px"><small> Generated on Thu Nov 1 2012 for <a href="http://www.webtoolkit.eu/wt">the C++ Web Toolkit (Wt)</a> by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" border="0" style="vertical-align: middle; display: inline-block; height: 2em"></a> 1.7.5.1</small></address> </body> </html>