Merge pull request #1 from DenioD/chat

Chat
This commit is contained in:
Strider
2020-05-01 14:33:50 +02:00
committed by GitHub
5 changed files with 67 additions and 7 deletions

View File

@@ -8,8 +8,11 @@
#include "ui_memodialog.h"
#include "addressbook.h"
#include <QUuid>
#include <bits/stdc++.h>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost;
ChatModel::ChatModel(std::map<long, ChatItem> chatItems)
{
@@ -89,13 +92,18 @@ void ChatModel::renderChatBox(Ui::MainWindow* ui, QListWidget *view)
myDateTime.setTime_t(c.second.getTimestamp());
//////Render only Memos for selected contacts. Do not render empty Memos
//////Render only Memos for selected contacts. Do not render empty Memos //// Render only memos where cid=cid
if ((ui->ContactZaddr->text().trimmed() == c.second.getAddress()) && (c.second.getMemo().startsWith("{") == false) && (c.second.getMemo().isEmpty() == false)) {
// if (c.second.getMemo.find())
line += QString("[") + myDateTime.toString("dd.MM.yyyy hh:mm:ss ") + QString("] ");
line += QString("<") + QString("Outgoing") + QString("> :\n");
line += QString(c.second.getMemo()) + QString("\n");
view->addItem(line);
line ="";
////////////////////////////////// Todo : Render green checkmark for contacts if cid = cid - We have to search for cid in txid/cid list
QString cid = c.second.getCid();
}else{}
if ((ui->MyZaddr->text().trimmed() == c.second.getAddress()) && (c.second.getMemo().startsWith("{") == false) && (c.second.getMemo().isEmpty() == false)){

View File

@@ -17,27 +17,33 @@ class ChatItem
QString _address;
QString _contact;
QString _memo;
QString _cid;
QString _txid;
bool _outgoing = false;
public:
ChatItem() {}
ChatItem(long timestamp, QString address, QString contact, QString memo)
ChatItem(long timestamp, QString address, QString contact, QString memo, QString cid, QString txid)
{
_timestamp = timestamp;
_address = address;
_contact = contact;
_memo = memo;
_cid = cid;
_txid = txid;
_outgoing = false;
}
ChatItem(long timestamp, QString address, QString contact, QString memo, bool outgoing)
ChatItem(long timestamp, QString address, QString contact, QString memo, QString cid, QString txid, bool outgoing)
{
_timestamp = timestamp;
_address = address;
_contact = contact;
_memo = memo;
_cid = cid;
_txid = txid;
_outgoing = outgoing;
}
@@ -62,6 +68,16 @@ class ChatItem
return _memo;
}
QString getCid()
{
return _cid;
}
QString getTxid()
{
return _txid;
}
bool isOutgoing()
{
return _outgoing;
@@ -87,6 +103,15 @@ class ChatItem
_memo = memo;
}
void setCid(QString cid)
{
_cid = cid;
}
void setTxid(QString txid)
{
_txid = txid;
}
void toggleOutgo()
{
_outgoing = true;

View File

@@ -884,7 +884,9 @@ void Controller::refreshTransactions() {
datetime,
address,
QString(""),
memo
memo,
"", // we have to set the cid here, its included in our Addressbook for this contact
txid
// true // is an outgoing message
);
chatModel->addMessage(item);
@@ -922,19 +924,30 @@ void Controller::refreshTransactions() {
if (!it["memo"].is_null()) {
memo = QString::fromStdString(it["memo"]);
}
TransactionItem tx{
"Receive", datetime, address, txid,confirmations, items
};
txdata.push_back(tx);
QString cid;
if (memo.startsWith("{")) {
cid = memo.mid(14,36);
}else{ cid = "";}
ChatItem item = ChatItem(
datetime,
address,
QString(""),
memo
memo,
cid, // we have to set the cid here, its included in the headermemo
txid
);
qDebug()<<cid;
qDebug()<<txid;
chatModel->addMessage(item);
items.push_back(TransactionItemDetail{

View File

@@ -1001,6 +1001,7 @@ void MainWindow::setupchatTab() {
ui->ContactZaddr->setText(p.getPartnerAddress());
ui->MyZaddr->setText(p.getMyAddress());
ui->contactNameMemo->setText(p.getName());
ui->contactCid->setText(p.getCid());
rpc->refresh(true);
}

View File

@@ -1524,6 +1524,19 @@
<string/>
</property>
</widget>
<widget class="QLabel" name="contactCid">
<property name="geometry">
<rect>
<x>870</x>
<y>90</y>
<width>331</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</widget>
</widget>
</item>