void LogUI::onGUI() { Lumix::MT::SpinLock lock(m_guard); showNotifications(); if (!m_is_opened) return; if (ImGui::Begin("Log", &m_is_opened)) { const char* labels[] = { "Info", "Warning", "Error", "BGFX" }; for (int i = 0; i < Lumix::lengthOf(labels); ++i) { char label[20]; fillLabel(label, sizeof(label), labels[i], m_new_message_count[i]); if(i > 0) ImGui::SameLine(); if (ImGui::Button(label)) { m_current_tab = i; m_new_message_count[i] = 0; } } auto* messages = &m_messages[m_current_tab]; if (ImGui::Button("Clear")) { for (int i = 0; i < m_messages.size(); ++i) { m_messages[i].clear(); m_new_message_count[i] = 0; } } ImGui::SameLine(); char filter[128] = ""; ImGui::InputText("Filter", filter, sizeof(filter)); if (ImGui::BeginChild("log_messages")) { for (int i = 0; i < messages->size(); ++i) { const char* msg = (*messages)[i].c_str(); if (filter[0] == '\0' || strstr(msg, filter) != nullptr) { ImGui::Text(msg); } } } ImGui::EndChild(); } ImGui::End(); }
ChatClient::ChatClient(ClientSocket *sockett, const QString& strHost, int nPort, int userIdx, const QString& pseud, QWidget *pwig):QWidget(pwig), userlist(new UserListWidget()), dialogFindFriends(NULL) { qDebug() << "chat client\n"; pSocket = sockett; myId = userIdx; pseudonym = pseud; //infoAboutFriend = NULL; dialogFindFriends = new DialogFindFriends(this); connect(dialogFindFriends, SIGNAL(findFriend(QString)), this, SLOT(slotFindFriend(QString))); connect(dialogFindFriends, SIGNAL(add(User*)), this, SLOT(slotAddFriend(User*))); connect(dialogFindFriends, SIGNAL(write(User*)), this, SLOT(slotWriteToFriend(User*))); setWindowTitle("FriendlyChatClient"); pButSend = new QPushButton("&Send", this); pButFind = new QPushButton("Find friends", this); QRect sizeOfMonitor = QApplication::desktop()->screenGeometry(); qDebug() << "MONITOR " << sizeOfMonitor; setGeometry(sizeOfMonitor); QVBoxLayout *lytVBox = new QVBoxLayout(); QHBoxLayout *lytHBox = new QHBoxLayout(); QHBoxLayout *lytHButtonBox = new QHBoxLayout(); tbwDialogs = new QTabWidget();/// lytVBox->addWidget(tbwDialogs); lytHButtonBox->addWidget(pButSend); lytHButtonBox->addWidget(pButFind); lytVBox->addLayout(lytHButtonBox); pButSend->setMaximumSize(50, 40); pButSend->setEnabled(false); pButFind->setMaximumSize(100, 40); //listOfFriends->setIconSize(QSize(48, 48)); userlist->setSelectionMode(QAbstractItemView::SingleSelection); QVector <User*> uss = pSocket->loadUserlist(myId); userlist->add(uss); for (int i = 0; i < uss.size(); ++i) connect(uss[i], SIGNAL(readMessages()), this, SLOT(slotReadMessageNotify())); notifs = Notification::convert(pSocket->loadNotifys(myId)); connect(userlist, SIGNAL(doubleClickUser(Dialog*)), this, SLOT(slotDoubleClickDialog(Dialog*))); //pItem1->setBackgroundColor(QColor(255, 0, 0)); //pItem1->setFlags(Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsSelectable); lytHBox->addLayout(lytVBox, 2); lytHBox->addWidget(userlist); setLayout(lytHBox); tbwDialogs->setMovable(true); tbwDialogs->setTabsClosable(true); connect(tbwDialogs, SIGNAL(tabCloseRequested(int)), this, SLOT(slotTabClosed(int))); connect(tbwDialogs, SIGNAL(currentChanged(int)), this, SLOT(slotCurrentTabChanged(int))); connect(pButSend, SIGNAL(clicked()), this, SLOT(slotPrepareSendMessage())); connect(pButFind, SIGNAL(clicked()), this, SLOT(slotFindFriendsOpen())); //connect(listener, SIGNAL(messageRecieved(quint16,quint16,QDateTime,QString)), this, SLOT(slotMessageRecieved(quint16,quint16,QDateTime,QString))); connect(pSocket->listener(), SIGNAL(messageReceived(quint16,quint16,QDateTime,QString)), this, SLOT(slotMessageReceived(quint16,quint16,QDateTime,QString)), Qt::QueuedConnection); connect(pSocket->listener(), SIGNAL(youAddedInUserlist(quint16, QString)), this, SLOT(slotYouAreAddedInUserlist(quint16, QString)), Qt::QueuedConnection); connect(pSocket->listener(), SIGNAL(notifyOnOff(quint16,bool)), this, SLOT(slotNotifyOnOff(quint16, bool))); connect(pSocket->socket(), SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(slotError(QAbstractSocket::SocketError))); connect(pSocket->listener(), SIGNAL(readAllYouMessageNotify(int)), SLOT(slotReadAllYouMessageNotify(int))); pSocket->initDateTime(); showNotifications(); }