7#include <Wt/WApplication.h>
8#include <Wt/WEnvironment.h>
11#include <Wt/WVBoxLayout.h>
20 const std::string&
id)
26 if (Wt::WApplication::instance()->environment().agentIsIE()) {
27 if (Wt::WApplication::instance()->environment().agent()
28 == Wt::UserAgent::IE6)
29 setPositionScheme(Wt::PositionScheme::Absolute);
31 setPositionScheme(Wt::PositionScheme::Fixed);
37 """var s = $('#" +
id +
"');"
38 """s.toggleClass('chat-maximized chat-minimized');"
43 setStyleClass(
"chat-widget chat-minimized");
61 n = name + std::to_string(++tries);
70 auto bar(std::make_unique<Wt::WContainerWidget>());
71 bar->setStyleClass(
"chat-bar");
73 auto toggleButton(std::make_unique<Wt::WText>());
74 toggleButton->setInline(
false);
75 toggleButton->setStyleClass(
"chat-minmax");
79 bar->addWidget(std::move(toggleButton));
81 title_ = bar->addWidget(std::make_unique<Wt::WText>());
99 Wt::WString name =
name_;
107 name =
name_ + std::to_string(++tries);
114 bar_->removeStyleClass(
"alert");
118 std::unique_ptr<Wt::WWidget> userList,
119 std::unique_ptr<Wt::WWidget> messageEdit,
120 std::unique_ptr<Wt::WWidget> sendButton,
121 std::unique_ptr<Wt::WWidget> logoutButton)
123 auto layout(std::make_unique<Wt::WVBoxLayout>());
124 layout->setContentsMargins(0, 0, 0, 0);
125 layout->setSpacing(0);
127 auto bar = layout->addWidget(
createBar());
128 bar->setMinimumSize(Wt::WLength::Auto, 20);
129 layout->addWidget(std::move(messages), 1);
130 layout->addWidget(std::move(messageEdit));
132 setLayout(std::move(layout));
143 title_->setText(
"Thoughts? Ventilate.");
145 title_->setText(
"Chat: 1 user online");
147 title_->setText(Wt::WString(
"Chat: {1} users online").arg(count));
149 title_->setText(Wt::WString(
"Chat: <span class=\"self\">{1}</span>"
150 " <span class=\"online\">({2} user{3})</span>")
151 .arg(
userName()).arg(count).arg(count == 1 ?
"" :
"s"));
160 bar_->addStyleClass(
"alert");
UserSet users()
Get the users currently logged in.
Wt::WString suggestGuest()
Get a suggestion for a guest user name.