Wt examples  3.3.12
SimpleChatWidget.h
Go to the documentation of this file.
1 // This may look like C code, but it's really -*- C++ -*-
2 /*
3  * Copyright (C) 2008 Emweb bvba, Heverlee, Belgium.
4  *
5  * See the LICENSE file for terms of use.
6  */
7 
8 #ifndef SIMPLECHATWIDGET_H_
9 #define SIMPLECHATWIDGET_H_
10 
11 #include <Wt/WContainerWidget>
12 #include <Wt/WJavaScript>
13 #include <Wt/WSound>
14 
15 #include "SimpleChatServer.h"
16 
17 namespace Wt {
18  class WApplication;
19  class WPushButton;
20  class WText;
21  class WLineEdit;
22  class WTextArea;
23 }
24 
25 class ChatEvent;
26 
31 
34 class SimpleChatWidget : public Wt::WContainerWidget,
36 {
37 public:
40  SimpleChatWidget(SimpleChatServer& server, Wt::WContainerWidget *parent = 0);
41 
45 
46  void connect();
47  void disconnect();
48 
49 
52  void letLogin();
53 
58  bool startChat(const Wt::WString& user);
59 
60  void logout();
61 
63 
64  int userCount() { return users_.size(); }
65 
66  const Wt::WString& userName() const { return user_; }
67 
68 protected:
69  virtual void createLayout(Wt::WWidget *messages, Wt::WWidget *userList,
70  Wt::WWidget *messageEdit,
71  Wt::WWidget *sendButton, Wt::WWidget *logoutButton);
72 
73  virtual void updateUsers();
74  virtual void newMessage();
75 
76  virtual void render(Wt::WFlags<Wt::RenderFlag> flags);
77 
78 protected:
79  bool loggedIn() const;
80 
81 private:
82  typedef std::map<Wt::WString, bool> UserMap;
84 
86  bool loggedIn_;
87 
88  Wt::JSlot clearInput_;
89 
90  Wt::WString user_;
91 
92  Wt::WLineEdit *userNameEdit_;
93  Wt::WText *statusMsg_;
94 
95  Wt::WContainerWidget *messages_;
96  Wt::WTextArea *messageEdit_;
97  Wt::WPushButton *sendButton_;
98  Wt::WContainerWidget *userList_;
99 
100  Wt::WSound* messageReceived_;
101 
102  void login();
103  void changeName(const Wt::WString& name);
104  void send();
105  void updateUser();
106 
107  /* called from another session */
108  void processChatEvent(const ChatEvent& event);
109 };
110 
113 #endif // SIMPLECHATWIDGET
SimpleChatWidget::UserMap
std::map< Wt::WString, bool > UserMap
Definition: SimpleChatWidget.h:82
SimpleChatWidget::logout
void logout()
Definition: SimpleChatWidget.C:97
Wt
Definition: AddresseeEdit.h:16
SimpleChatWidget::loggedIn
bool loggedIn() const
Definition: SimpleChatWidget.C:167
SimpleChatWidget::connect
void connect()
Definition: SimpleChatWidget.C:46
SimpleChatWidget::processChatEvent
void processChatEvent(const ChatEvent &event)
Definition: SimpleChatWidget.C:358
SimpleChatWidget::messageReceived_
Wt::WSound * messageReceived_
Definition: SimpleChatWidget.h:100
SimpleChatWidget::startChat
bool startChat(const Wt::WString &user)
Start a chat for the given user.
Definition: SimpleChatWidget.C:187
SimpleChatWidget::disconnect
void disconnect()
Definition: SimpleChatWidget.C:53
SimpleChatWidget::SimpleChatWidget
SimpleChatWidget(SimpleChatServer &server, Wt::WContainerWidget *parent=0)
Create a chat widget that will connect to the given server.
Definition: SimpleChatWidget.C:28
SimpleChatServer::Client
Definition: SimpleChatServer.h:91
SimpleChatWidget::messageEdit_
Wt::WTextArea * messageEdit_
Definition: SimpleChatWidget.h:96
SimpleChatWidget::server_
SimpleChatServer & server_
Definition: SimpleChatWidget.h:85
SimpleChatWidget::user_
Wt::WString user_
Definition: SimpleChatWidget.h:90
ChatEvent
Encapsulate a chat event.
Definition: SimpleChatServer.h:30
SimpleChatWidget::createLayout
virtual void createLayout(Wt::WWidget *messages, Wt::WWidget *userList, Wt::WWidget *messageEdit, Wt::WWidget *sendButton, Wt::WWidget *logoutButton)
Definition: SimpleChatWidget.C:108
SimpleChatWidget::login
void login()
Definition: SimpleChatWidget.C:83
SimpleChatWidget::newMessage
virtual void newMessage()
Definition: SimpleChatWidget.C:349
SimpleChatWidget::userCount
int userCount()
Definition: SimpleChatWidget.h:64
SimpleChatWidget::sendButton_
Wt::WPushButton * sendButton_
Definition: SimpleChatWidget.h:97
SimpleChatServer.h
SimpleChatWidget::server
SimpleChatServer & server()
Definition: SimpleChatWidget.h:62
SimpleChatWidget::send
void send()
Definition: SimpleChatWidget.C:313
SimpleChatWidget::userNameEdit_
Wt::WLineEdit * userNameEdit_
Definition: SimpleChatWidget.h:92
SimpleChatWidget::clearInput_
Wt::JSlot clearInput_
Definition: SimpleChatWidget.h:88
SimpleChatWidget::updateUser
void updateUser()
Definition: SimpleChatWidget.C:352
SimpleChatServer
A simple chat server.
Definition: SimpleChatServer.h:85
SimpleChatWidget::changeName
void changeName(const Wt::WString &name)
Definition: SimpleChatWidget.C:305
SimpleChatWidget::~SimpleChatWidget
~SimpleChatWidget()
Delete a chat widget.
Definition: SimpleChatWidget.C:40
SimpleChatWidget
A self-contained chat widget.
Definition: SimpleChatWidget.h:34
SimpleChatWidget::letLogin
void letLogin()
Show a simple login screen.
Definition: SimpleChatWidget.C:59
SimpleChatWidget::userList_
Wt::WContainerWidget * userList_
Definition: SimpleChatWidget.h:98
SimpleChatWidget::loggedIn_
bool loggedIn_
Definition: SimpleChatWidget.h:86
SimpleChatWidget::render
virtual void render(Wt::WFlags< Wt::RenderFlag > flags)
Definition: SimpleChatWidget.C:172
SimpleChatWidget::messages_
Wt::WContainerWidget * messages_
Definition: SimpleChatWidget.h:95
SimpleChatWidget::statusMsg_
Wt::WText * statusMsg_
Definition: SimpleChatWidget.h:93
SimpleChatWidget::users_
UserMap users_
Definition: SimpleChatWidget.h:83
SimpleChatWidget::updateUsers
virtual void updateUsers()
Definition: SimpleChatWidget.C:319
SimpleChatWidget::userName
const Wt::WString & userName() const
Definition: SimpleChatWidget.h:66

Generated on Mon Sep 5 2022 for the C++ Web Toolkit (Wt) by doxygen 1.8.17