1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00
This commit is contained in:
apprb 2014-09-05 22:29:14 +07:00
parent 2826e83cef
commit 502229a6f2
6 changed files with 26 additions and 52 deletions

View File

@ -16,19 +16,11 @@
#include "chatform.h" #include "chatform.h"
#include "friend.h" #include "friend.h"
#include "smileypack.h"
#include "widget/friendwidget.h" #include "widget/friendwidget.h"
#include "widget/widget.h" #include "widget/widget.h"
#include "widget/filetransfertwidget.h" #include "widget/filetransfertwidget.h"
#include "widget/emoticonswidget.h"
#include "style.h"
#include <QFont>
#include <QTime>
#include <QScrollBar> #include <QScrollBar>
#include <QFileDialog> #include <QFileDialog>
#include <QMenu>
#include <QWidgetAction>
#include <QGridLayout>
#include <QMessageBox> #include <QMessageBox>
ChatForm::ChatForm(Friend* chatFriend) ChatForm::ChatForm(Friend* chatFriend)
@ -50,8 +42,6 @@ ChatForm::ChatForm(Friend* chatFriend)
connect(callButton, &QPushButton::clicked, this, &ChatForm::onCallTriggered); connect(callButton, &QPushButton::clicked, this, &ChatForm::onCallTriggered);
connect(videoButton, &QPushButton::clicked, this, &ChatForm::onVideoCallTriggered); connect(videoButton, &QPushButton::clicked, this, &ChatForm::onVideoCallTriggered);
connect(msgEdit, &ChatTextEdit::enterPressed, this, &ChatForm::onSendTriggered); connect(msgEdit, &ChatTextEdit::enterPressed, this, &ChatForm::onSendTriggered);
connect(chatArea->verticalScrollBar(), &QScrollBar::rangeChanged, this, &ChatForm::onSliderRangeChanged);
connect(chatArea, &QScrollArea::customContextMenuRequested, this, &ChatForm::onChatContextMenuRequested);
connect(micButton, SIGNAL(clicked()), this, SLOT(onMicMuteToggle())); connect(micButton, SIGNAL(clicked()), this, SLOT(onMicMuteToggle()));
} }

View File

@ -17,19 +17,7 @@
#ifndef CHATFORM_H #ifndef CHATFORM_H
#define CHATFORM_H #define CHATFORM_H
#include <QLabel>
#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QGridLayout>
#include <QTextEdit>
#include <QScrollArea>
#include <QTime>
#include <QPoint>
#include "genericchatform.h" #include "genericchatform.h"
#include "widget/tool/chattextedit.h"
#include "ui_mainwindow.h"
#include "core.h" #include "core.h"
#include "widget/netcamview.h" #include "widget/netcamview.h"

View File

@ -147,6 +147,8 @@ GenericChatForm::GenericChatForm(QObject *parent) :
emoteButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); emoteButton->setAttribute(Qt::WA_LayoutUsesWidgetRect);
connect(emoteButton, SIGNAL(clicked()), this, SLOT(onEmoteButtonClicked())); connect(emoteButton, SIGNAL(clicked()), this, SLOT(onEmoteButtonClicked()));
connect(chatArea, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onChatContextMenuRequested(QPoint)));
connect(chatArea->verticalScrollBar(), SIGNAL(rangeChanged(int,int)), this, SLOT(onSliderRangeChanged()));
} }
void GenericChatForm::setName(const QString &newName) void GenericChatForm::setName(const QString &newName)
@ -214,7 +216,7 @@ void GenericChatForm::onSaveLogClicked()
void GenericChatForm::addMessage(QString author, QString message, QString date) void GenericChatForm::addMessage(QString author, QString message, QString date)
{ {
QLabel *authorLabel = new QLabel(author); QLabel *authorLabel = new QLabel(author);
QLabel *messageLabel = new QLabel(message); QLabel *messageLabel = new QLabel();
QLabel *dateLabel = new QLabel(date); QLabel *dateLabel = new QLabel(date);
QScrollBar* scroll = chatArea->verticalScrollBar(); QScrollBar* scroll = chatArea->verticalScrollBar();
@ -253,9 +255,9 @@ void GenericChatForm::addMessage(QString author, QString message, QString date)
for (QString& s : messageLines) for (QString& s : messageLines)
{ {
if (QRegExp("^[ ]*>.*").exactMatch(s)) if (QRegExp("^[ ]*>.*").exactMatch(s))
finalMessage += fontTemplate.arg(greentext.name(), s.replace(" ", "&nbsp;")); finalMessage += fontTemplate.arg(greentext.name(), toHtmlChars(s));
else else
finalMessage += s.replace(" ", "&nbsp;"); finalMessage += toHtmlChars(s);
finalMessage += "<br>"; finalMessage += "<br>";
} }
messageLabel->setText(finalMessage.left(finalMessage.length()-4)); messageLabel->setText(finalMessage.left(finalMessage.length()-4));
@ -308,3 +310,14 @@ void GenericChatForm::onEmoteInsertRequested(QString str)
msgEdit->setFocus(); // refocus so that we can continue typing msgEdit->setFocus(); // refocus so that we can continue typing
} }
QString GenericChatForm::toHtmlChars(const QString &str)
{
static QList<QPair<QString, QString>> replaceList = {{"&","&amp;"}, {" ","&nbsp;"}, {">","&gt;"}, {"<","&lt;"}};
QString res = str;
for (auto &it : replaceList)
res = res.replace(it.first,it.second);
return res;
}

View File

@ -46,7 +46,7 @@ public:
virtual void setName(const QString &newName); virtual void setName(const QString &newName);
virtual void show(Ui::MainWindow &ui); virtual void show(Ui::MainWindow &ui);
virtual void addMessage(QString author, QString message, QString date=QTime::currentTime().toString("hh:mm")); void addMessage(QString author, QString message, QString date=QTime::currentTime().toString("hh:mm"));
signals: signals:
void sendMessage(int, QString); void sendMessage(int, QString);
@ -72,6 +72,9 @@ protected:
QString previousName; QString previousName;
int curRow; int curRow;
bool lockSliderToBottom; bool lockSliderToBottom;
private:
QString toHtmlChars(const QString &str);
}; };
#endif // GENERICCHATFORM_H #endif // GENERICCHATFORM_H

View File

@ -18,20 +18,11 @@
#include "group.h" #include "group.h"
#include "widget/groupwidget.h" #include "widget/groupwidget.h"
#include "widget/widget.h" #include "widget/widget.h"
#include "friend.h"
#include "friendlist.h"
#include "style.h"
#include <QFont>
#include <QTime>
#include <QScrollBar>
#include <QMenu>
#include <QFile>
#include <QFileDialog>
GroupChatForm::GroupChatForm(Group* chatGroup) GroupChatForm::GroupChatForm(Group* chatGroup)
: group(chatGroup) : group(chatGroup)
{ {
nusers = new QLabel(); nusersLabel = new QLabel();
namesList = new QLabel(); namesList = new QLabel();
fileButton->setEnabled(false); fileButton->setEnabled(false);
@ -44,8 +35,8 @@ GroupChatForm::GroupChatForm(Group* chatGroup)
small.setPixelSize(10); small.setPixelSize(10);
nameLabel->setText(group->widget->name.text()); nameLabel->setText(group->widget->name.text());
nusers->setFont(small); nusersLabel->setFont(small);
nusers->setText(GroupChatForm::tr("%1 users in chat","Number of users in chat").arg(group->peers.size())); nusersLabel->setText(GroupChatForm::tr("%1 users in chat","Number of users in chat").arg(group->peers.size()));
avatarLabel->setPixmap(QPixmap(":/img/group_dark.png")); avatarLabel->setPixmap(QPixmap(":/img/group_dark.png"));
QString names; QString names;
@ -60,7 +51,7 @@ GroupChatForm::GroupChatForm(Group* chatGroup)
mainChatLayout->setColumnStretch(1,1); mainChatLayout->setColumnStretch(1,1);
mainChatLayout->setHorizontalSpacing(10); mainChatLayout->setHorizontalSpacing(10);
headTextLayout->addWidget(nusers); headTextLayout->addWidget(nusersLabel);
headTextLayout->addWidget(namesList); headTextLayout->addWidget(namesList);
headTextLayout->setMargin(0); headTextLayout->setMargin(0);
headTextLayout->setSpacing(0); headTextLayout->setSpacing(0);
@ -68,8 +59,6 @@ GroupChatForm::GroupChatForm(Group* chatGroup)
connect(sendButton, SIGNAL(clicked()), this, SLOT(onSendTriggered())); connect(sendButton, SIGNAL(clicked()), this, SLOT(onSendTriggered()));
connect(msgEdit, SIGNAL(enterPressed()), this, SLOT(onSendTriggered())); connect(msgEdit, SIGNAL(enterPressed()), this, SLOT(onSendTriggered()));
connect(chatArea->verticalScrollBar(), SIGNAL(rangeChanged(int,int)), this, SLOT(onSliderRangeChanged()));
connect(chatArea, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onChatContextMenuRequested(QPoint)));
} }
GroupChatForm::~GroupChatForm() GroupChatForm::~GroupChatForm()
@ -99,7 +88,7 @@ void GroupChatForm::addGroupMessage(QString message, int peerId)
void GroupChatForm::onUserListChanged() void GroupChatForm::onUserListChanged()
{ {
nusers->setText(tr("%1 users in chat").arg(group->nPeers)); nusersLabel->setText(tr("%1 users in chat").arg(group->nPeers));
QString names; QString names;
for (QString& s : group->peers) for (QString& s : group->peers)
names.append(s+", "); names.append(s+", ");

View File

@ -17,15 +17,6 @@
#ifndef GROUPCHATFORM_H #ifndef GROUPCHATFORM_H
#define GROUPCHATFORM_H #define GROUPCHATFORM_H
#include <QLabel>
#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QGridLayout>
#include <QTextEdit>
#include <QScrollArea>
#include <QTime>
#include "genericchatform.h" #include "genericchatform.h"
#include "widget/tool/chattextedit.h" #include "widget/tool/chattextedit.h"
#include "ui_mainwindow.h" #include "ui_mainwindow.h"
@ -46,7 +37,7 @@ private slots:
private: private:
Group* group; Group* group;
QLabel *nusers, *namesList; QLabel *nusersLabel, *namesList;
}; };
#endif // GROUPCHATFORM_H #endif // GROUPCHATFORM_H