diff --git a/res/css/dark.css b/res/css/dark.css
index 7846b25..6dc6cfe 100644
--- a/res/css/dark.css
+++ b/res/css/dark.css
@@ -1,5 +1,5 @@
-QWidget, QMainWindow, QMenuBar, QMenu, QDialog, QTabWidget, QTableView, QTableView::item, QScrollArea, QGroupBox, QPlainTextEdit, QLineEdit, QLabel, MainWindow
+QWidget, QMainWindow, QMenuBar, QMenu, QDialog, QTabWidget, QTableView, QTableView::item, QScrollArea, QGroupBox, QPlainTextEdit, QLineEdit, QLabel, MainWindow, ChatModel, requestDialog
{
background-color: #303335;
color: #ffffff;
diff --git a/reuqestDialog.ui b/reuqestDialog.ui
deleted file mode 100644
index fb923db..0000000
--- a/reuqestDialog.ui
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
- Dialog
-
-
-
- 0
- 0
- 400
- 300
-
-
-
- Dialog
-
-
-
-
- 30
- 240
- 341
- 32
-
-
-
- Qt::Horizontal
-
-
- QDialogButtonBox::Cancel|QDialogButtonBox::Ok
-
-
-
-
-
-
-
- buttonBox
- accepted()
- Dialog
- accept()
-
-
- 248
- 254
-
-
- 157
- 274
-
-
-
-
- buttonBox
- rejected()
- Dialog
- reject()
-
-
- 316
- 260
-
-
- 286
- 274
-
-
-
-
-
-
diff --git a/silentdragon-lite.pro b/silentdragon-lite.pro
index 5e745f4..a3364d2 100644
--- a/silentdragon-lite.pro
+++ b/silentdragon-lite.pro
@@ -126,6 +126,7 @@ FORMS += \
src/mobileappconnector.ui \
src/createhushconfdialog.ui \
src/recurringdialog.ui \
+ src/requestContactDialog.ui \
src/newrecurring.ui \
src/requestdialog.ui \
src/recurringmultiple.ui \
diff --git a/src/addressbook.cpp b/src/addressbook.cpp
index 1dd1a8f..a16d7c8 100644
--- a/src/addressbook.cpp
+++ b/src/addressbook.cpp
@@ -1,3 +1,5 @@
+// Copyright 2019-2020 The Hush developers
+// GPLv3
#include "addressbook.h"
#include "ui_addressbook.h"
#include "ui_mainwindow.h"
diff --git a/src/chatmodel.cpp b/src/chatmodel.cpp
index b55dd5c..b9133b8 100644
--- a/src/chatmodel.cpp
+++ b/src/chatmodel.cpp
@@ -6,6 +6,7 @@
#include "controller.h"
#include "mainwindow.h"
#include "ui_mainwindow.h"
+#include "ui_requestContactDialog.h"
#include "addressbook.h"
#include "ui_memodialog.h"
#include "ui_contactrequest.h"
@@ -83,6 +84,7 @@ void ChatModel::showMessages()
{
qDebug() << c.second.toChatLine();
}
+
}
void ChatModel::renderChatBox(Ui::MainWindow* ui, QListView &view)
@@ -97,7 +99,10 @@ void ChatModel::renderChatBox(Ui::MainWindow* ui, QListView &view)
void ChatModel::renderChatBox(Ui::MainWindow* ui, QListView *view)
{
-
+ QObject::connect(ui->pushContact, &QPushButton::clicked,[&] ()
+ {
+ renderContactRequest();
+ });
QStandardItemModel* chat = new QStandardItemModel();
@@ -136,15 +141,98 @@ void ChatModel::renderChatBox(Ui::MainWindow* ui, QListView *view)
ui->listChat->setModel(chat);
}
-
+
+ }
+
}
+
+void ChatModel::renderContactRequest(){
+
+ Ui_requestDialog requestContact;
+ QDialog dialog(main);
+ requestContact.setupUi(&dialog);
+ Settings::saveRestore(&dialog);
+
+ {
+ QStandardItemModel* contactRequest = new QStandardItemModel();
+
+
+ for (auto &c : this->chatItems) {
+ if ((c.second.getType() == "cont") && (c.second.isOutgoing() == false) && (c.second.getMemo().startsWith("{"))) {
+
+
+
+ QStandardItem* Items = new QStandardItem(c.second.getAddress());
+ contactRequest->appendRow(Items);
+ requestContact.requestContact->setModel(contactRequest);
+ // requestContact.requestContact->show();
+
+
+
+ }
+ }
+ }
+ // }
+
+
+ QObject::connect(requestContact.requestContact, &QTableView::clicked, [&] () {
+
+ for (auto &c : this->chatItems){
+ QModelIndex index = requestContact.requestContact->currentIndex();
+ QString label_contact = index.data(Qt::DisplayRole).toString();
+ QStandardItemModel* contactMemo = new QStandardItemModel();
+
+ if (c.second.isOutgoing() == false) {
+ if (label_contact == c.second.getAddress()) {
+ if(c.second.getMemo().startsWith("{")){
+
+ }else{
+ QStandardItem* Items = new QStandardItem(c.second.getMemo());
+ contactMemo->appendRow(Items);
+ requestContact.requestMemo->setModel(contactMemo);
+ requestContact.requestMemo->show();
+
+ requestContact.requestZaddr->setText(c.second.getRequestZaddr());
+ requestContact.requestCID->setText(c.second.getCid());
+ requestContact.requestMyAddr->setText(c.second.getAddress());
+ }
+ }
+ }
+
+ }
+ });
+
+
+
+ QObject::connect(requestContact.pushButton, &QPushButton::clicked, [&] () {
+
+ QString cid = requestContact.requestCID->text();
+ auto addr = requestContact.requestZaddr->text().trimmed();
+ QString newLabel = requestContact.requestLabel->text().trimmed();
+ auto myAddr = requestContact.requestMyAddr->text().trimmed();
+
+ QString avatar = QString("res/") + requestContact.comboBoxAvatar->currentText() + QString(".png");
+
+ qDebug()<<"Beginn kopiert" <addAddressLabel(newLabel, addr, myAddr, cid, avatar);
+ });
+
+
+ dialog.exec();
}
+
+
void ChatModel::addCid(QString tx, QString cid)
{
this->cidMap[tx] = cid;
}
+void ChatModel::addrequestZaddr(QString tx, QString requestZaddr)
+{
+ this->requestZaddrMap[tx] = requestZaddr;
+}
+
QString ChatModel::getCidByTx(QString tx)
{
for(auto& pair : this->cidMap)
@@ -160,11 +248,31 @@ QString ChatModel::getCidByTx(QString tx)
return QString("0xdeadbeef");
}
+QString ChatModel::getrequestZaddrByTx(QString tx)
+{
+ for(auto& pair : this->requestZaddrMap)
+ {
+
+ }
+
+ if(this->requestZaddrMap.count(tx) > 0)
+ {
+ return this->requestZaddrMap[tx];
+ }
+
+ return QString("0xdeadbeef");
+}
+
void ChatModel::killCidCache()
{
this->cidMap.clear();
}
+void ChatModel::killrequestZaddrCache()
+{
+ this->requestZaddrMap.clear();
+}
+
QString MainWindow::createHeaderMemo(QString type, QString cid, QString zaddr, int version=0, int headerNumber=1)
{
@@ -183,6 +291,7 @@ QString MainWindow::createHeaderMemo(QString type, QString cid, QString zaddr,
header = j.toJson();
qDebug() << "made header=" << header;
return header;
+
}
diff --git a/src/chatmodel.h b/src/chatmodel.h
index cde16cb..945c27c 100644
--- a/src/chatmodel.h
+++ b/src/chatmodel.h
@@ -14,6 +14,7 @@
#include "camount.h"
+
class ListViewDelegate : public QAbstractItemDelegate
{
int d_radius;
@@ -163,7 +164,9 @@ class ChatItem
long _timestamp;
QString _address;
QString _contact;
- QString _memo;
+ QString _memo;
+ QString _requestZaddr;
+ QString _type;
QString _cid;
QString _txid;
bool _outgoing = false;
@@ -171,24 +174,28 @@ class ChatItem
public:
ChatItem() {}
- ChatItem(long timestamp, QString address, QString contact, QString memo, QString cid, QString txid)
+ ChatItem(long timestamp, QString address, QString contact, QString memo,QString requestZaddr, QString type, QString cid, QString txid)
{
_timestamp = timestamp;
_address = address;
_contact = contact;
_memo = memo;
+ _requestZaddr = requestZaddr;
+ _type = type;
_cid = cid;
_txid = txid;
_outgoing = false;
}
- ChatItem(long timestamp, QString address, QString contact, QString memo, QString cid, QString txid, bool outgoing)
+ ChatItem(long timestamp, QString address, QString contact, QString memo, QString requestZaddr, QString type, QString cid, QString txid, bool outgoing)
{
_timestamp = timestamp;
_address = address;
_contact = contact;
_memo = memo;
+ _requestZaddr = requestZaddr;
+ _type = type;
_cid = cid;
_txid = txid;
_outgoing = outgoing;
@@ -215,6 +222,15 @@ class ChatItem
return _memo;
}
+ QString getRequestZaddr()
+ {
+ return _requestZaddr;
+ }
+ QString getType()
+ {
+ return _type;
+ }
+
QString getCid()
{
return _cid;
@@ -224,6 +240,7 @@ class ChatItem
{
return _txid;
}
+
bool isOutgoing()
{
@@ -244,12 +261,22 @@ class ChatItem
{
_contact = contact;
}
-
+
void setMemo(QString memo)
{
_memo = memo;
}
+ void setRequestZaddr(QString requestZaddr)
+ {
+ _requestZaddr = requestZaddr;
+ }
+
+ void setType(QString type)
+ {
+ _type = type;
+ }
+
void setCid(QString cid)
{
_cid = cid;
@@ -258,7 +285,7 @@ class ChatItem
{
_txid = txid;
}
-
+
void toggleOutgo()
{
_outgoing = true;
@@ -291,6 +318,7 @@ class ChatModel
Ui::MainWindow* ui;
MainWindow* main;
std::map cidMap;
+ std::map requestZaddrMap;
public:
ChatModel() {};
@@ -303,13 +331,19 @@ class ChatModel
void setItems(std::vector items);
void renderChatBox(Ui::MainWindow* ui, QListView &view);
void renderChatBox(Ui::MainWindow* ui, QListView *view);
+ void renderContactRequest();
+ void triggerRequest();
void showMessages();
void clear();
+ //void renderContactRequest(Ui::MainWindow* ui, QListView *view);
void addMessage(ChatItem item);
void addMessage(QString timestamp, ChatItem item);
void addCid(QString tx, QString cid);
+ void addrequestZaddr(QString tx, QString requestZaddr);
QString getCidByTx(QString tx);
+ QString getrequestZaddrByTx(QString tx);
void killCidCache();
+ void killrequestZaddrCache();
};
diff --git a/src/connection.h b/src/connection.h
index 5ed3a09..7130710 100644
--- a/src/connection.h
+++ b/src/connection.h
@@ -5,6 +5,7 @@
#include "ui_connection.h"
#include "precompiled.h"
+
using json = nlohmann::json;
class Controller;
diff --git a/src/contactmodel.cpp b/src/contactmodel.cpp
index 17d3fd4..adeeb45 100644
--- a/src/contactmodel.cpp
+++ b/src/contactmodel.cpp
@@ -1,6 +1,9 @@
+// Copyright 2019-2020 The Hush developers
+// GPLv3
#include "contactmodel.h"
#include "addressbook.h"
#include "mainwindow.h"
+#include "chatmodel.h"
void ContactModel::renderContactList(QListView* view)
{
@@ -12,7 +15,7 @@ void ContactModel::renderContactList(QListView* view)
auto theme = Settings::getInstance()->get_theme_name();
if ((theme == "dark" || theme == "midnight")) {
- QString avatar = c.getAvatar();
+ QString avatar = c.getAvatar();
QStandardItem* Items1 = new QStandardItem(QIcon(avatar) ,c.getName());
contact->appendRow(Items1);
@@ -22,10 +25,8 @@ void ContactModel::renderContactList(QListView* view)
view->setDragDropMode(QAbstractItemView::DropOnly);
view->show();
- }
-
-
-
+ }
}
+
}
\ No newline at end of file
diff --git a/src/contactrequest.ui b/src/contactrequest.ui
index e2939ee..d2ae8ef 100644
--- a/src/contactrequest.ui
+++ b/src/contactrequest.ui
@@ -11,7 +11,7 @@
- Dialog
+ Send a contact request
-
diff --git a/src/controller.cpp b/src/controller.cpp
index fd1189f..4566827 100644
--- a/src/controller.cpp
+++ b/src/controller.cpp
@@ -1,3 +1,6 @@
+// Copyright 2019-2020 The Hush developers
+// GPLv3
+
#include "controller.h"
#include "mainwindow.h"
#include "addressbook.h"
@@ -6,6 +9,7 @@
#include "camount.h"
#include "websockets.h"
#include "DataStore.h"
+
template<>
DataStore* DataStore::instance = nullptr;
template<>
@@ -860,7 +864,8 @@ void Controller::refreshTransactions() {
QString memo;
if (!o["memo"].is_null()) {
memo = QString::fromStdString(o["memo"]);
-}
+ }
+
QString cid;
QString contact;
@@ -876,6 +881,8 @@ void Controller::refreshTransactions() {
address,
contact,
memo,
+ QString(""),
+ QString(""),
cid, // we have to set the cid here, its included in our Addressbook for this contact
txid,
true // is an outgoing message
@@ -930,37 +937,40 @@ void Controller::refreshTransactions() {
QString type;
QString cid;
+ QString requestZaddr1;
+ QString requestZaddr;
+
if (memo.startsWith("{")) {
type = memo.mid(75,4);
cid = memo.mid(14,36);
+ requestZaddr1 = memo.right(82);
+ requestZaddr = requestZaddr1.left(78);
- qDebug()<addCid(txid, cid);
+ chatModel->addrequestZaddr(txid, requestZaddr);
}
- if (type == "cont")
-
- {
-
- qDebug()<< "Als Request erkannt";
-
-
- }
-
-
+
if (chatModel->getCidByTx(txid) != QString("0xdeadbeef")){
cid = chatModel->getCidByTx(txid);
}
-
-
else{
cid = "";
}
+
+ if (chatModel->getrequestZaddrByTx(txid) != QString("0xdeadbeef")){
+
+ requestZaddr = chatModel->getrequestZaddrByTx(txid);
+
+ }
+
+ else{
+ requestZaddr = "";
+ }
QString contact;
for(auto &c : AddressBook::getInstance()->getAllAddressLabels())
@@ -968,23 +978,23 @@ void Controller::refreshTransactions() {
if (address == c.getMyAddress()){
contact = c.getName();
- qDebug()<< "Addressbuch Addresse: " << c.getMyAddress();
- qDebug()<< "Addresse: " << address;
}else{ contact = "";}
-
+ }
ChatItem item = ChatItem(
datetime,
address,
contact,
memo,
+ requestZaddr,
+ type,
cid, // we have to set the cid here, its included in the headermemo
txid,
false
);
chatModel->addMessage(item);
-}
+
}
}
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 5b71245..eb7b244 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -1,3 +1,5 @@
+// Copyright 2019-2020 The Hush developers
+// GPLv3
#include "mainwindow.h"
#include "addressbook.h"
#include "viewalladdresses.h"
@@ -15,6 +17,8 @@
#include "version.h"
#include "connection.h"
#include "ui_contactrequest.h"
+#include "ui_requestContactDialog.h"
+#include "chatmodel.h"
#include "requestdialog.h"
#include "websockets.h"
#include
@@ -1006,22 +1010,21 @@ void MainWindow::setupchatTab() {
// Is request Contact checked?
- if (ui->request->isChecked()) {
+ // if (ui->request->isChecked()) {
QObject::connect(ui->sendChatButton, &QPushButton::clicked, this, &MainWindow::ContactRequest);
// qDebug() <request->isChecked()->text();
- }else{
+ // }else{
- QObject::connect(ui->sendChatButton, &QPushButton::clicked, this, &MainWindow::sendChatButton);
+ // QObject::connect(ui->sendChatButton, &QPushButton::clicked, this, &MainWindow::sendChatButton);
- }
+ // }
QObject::connect(ui->safeContactRequest, &QPushButton::clicked, this, &MainWindow::addContact);
-
-///////// Set selected Zaddr for Chat with Doubleklick
+///////// Set selected Zaddr for Chat with Klick
QObject::connect(ui->listContactWidget, &QTableView::clicked, [=] () {
@@ -1046,6 +1049,19 @@ void MainWindow::setupchatTab() {
}
+
+/*
+void MainWindow::setChatItem(ChatItem * item)
+{
+ this->currentChatItem = item;
+}
+
+ChatItem* MainWindow::getChatItem()
+{
+ return this->currentChatItem;
+}*/
+
+
ChatMemoEdit::ChatMemoEdit(QWidget* parent) : QPlainTextEdit(parent) {
QObject::connect(this, &QPlainTextEdit::textChanged, this, &ChatMemoEdit::updateDisplay);
}
diff --git a/src/mainwindow.h b/src/mainwindow.h
index ee2e5ee..b077593 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -6,6 +6,7 @@
#include "logger.h"
#include "recurring.h"
+
// Forward declare to break circular dependency.
class Controller;
class Settings;
@@ -61,6 +62,10 @@ public:
void updateLabels();
void updateTAddrCombo(bool checked);
+ // void setChatItem(ChatItem* item);
+ //void ChatItem* getChatItem();
+
+
// Disable recurring on mainnet
void disableRecurring();
@@ -74,6 +79,8 @@ public:
QLabel* statusIcon;
QLabel* loadingLabel;
QWidget* hushdtab;
+ //ChatItem* currentChatItem;
+
Logger* logger;
@@ -83,8 +90,10 @@ public:
public slots:
void slot_change_theme(const QString& themeName);
void slot_change_currency(const QString& currencyName);
+
private:
+
void closeEvent(QCloseEvent* event);
void setupSendTab();
@@ -93,6 +102,7 @@ private:
void setupBalancesTab();
void setuphushdTab();
void setupchatTab();
+ void renderContactRequest();
void setLenDisplayLabel(QLabel* label);
void updateContacts();
@@ -147,6 +157,9 @@ private:
void restoreSavedStates();
bool eventFilter(QObject *object, QEvent *event);
+
+
+
bool uiPaymentsReady = false;
QString pendingURIPayment;
@@ -154,6 +167,7 @@ private:
WormholeClient* wormhole = nullptr;
Controller* rpc = nullptr;
+
QCompleter* labelCompleter = nullptr;
QRegExpValidator* amtValidator = nullptr;
QRegExpValidator* feesValidator = nullptr;
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
index b5f3539..74739f7 100644
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -1414,9 +1414,9 @@
- 30
+ 0
640
- 211
+ 91
25
@@ -1427,7 +1427,7 @@
- Add conversation contact
+ Add contact
false
@@ -1493,6 +1493,19 @@
Is this message a contact request?
+
+
+
+ 110
+ 640
+ 191
+ 25
+
+
+
+ Incoming contact request
+
+
@@ -1667,7 +1680,7 @@
AddressCombo
QComboBox
-
+
QRCodeLabel
diff --git a/src/requestContactDialog.ui b/src/requestContactDialog.ui
new file mode 100644
index 0000000..b862cda
--- /dev/null
+++ b/src/requestContactDialog.ui
@@ -0,0 +1,355 @@
+
+
+ requestDialog
+
+
+
+ 0
+ 0
+ 1011
+ 503
+
+
+
+ Incoming contact request
+
+
+
+
+ 9
+ 9
+ 256
+ 461
+
+
+
+ true
+
+
+ QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked
+
+
+ false
+
+
+ QAbstractItemView::SingleSelection
+
+
+
+
+
+ 263
+ 9
+ 741
+ 271
+
+
+
+ Qt::ScrollBarAlwaysOff
+
+
+ Qt::ScrollBarAlwaysOff
+
+
+ QAbstractScrollArea::AdjustToContents
+
+
+ QAbstractItemView::NoEditTriggers
+
+
+ QListView::Adjust
+
+
+ 0
+
+
+ false
+
+
+ true
+
+
+
+
+
+ 276
+ 296
+ 101
+ 17
+
+
+
+ Request from :
+
+
+
+
+
+ 393
+ 296
+ 601
+ 25
+
+
+
+
+
+
+ 276
+ 327
+ 30
+ 17
+
+
+
+ Cid :
+
+
+
+
+
+ 393
+ 327
+ 601
+ 25
+
+
+
+
+
+
+ 276
+ 358
+ 71
+ 17
+
+
+
+ My Zaddr :
+
+
+
+
+
+ 393
+ 358
+ 601
+ 25
+
+
+
+
+
+
+ 276
+ 389
+ 68
+ 17
+
+
+
+ Nickname
+
+
+
+
+
+ 393
+ 389
+ 221
+ 25
+
+
+
+
+
+
+ 276
+ 420
+ 228
+ 17
+
+
+
+ <html><head/><body><p align="right">Choose a avatar for your contact :</p></body></html>
+
+
+
+
+
+ 510
+ 420
+ 106
+ 25
+
+
+ -
+
+ Stag
+
+
+
+ :/icons/res/Stag.png
+
+
+
+ -
+
+ Elsa
+
+
+
+ :/icons/res/Elsa.png
+
+
+
+ -
+
+ Denio
+
+
+
+ :/icons/res/Denio.png
+
+
+
+ -
+
+ Duke
+
+
+
+ :/icons/res/Duke.png
+
+
+
+ -
+
+ Yoda
+
+
+
+ :/icons/res/Yoda.png
+
+
+
+ -
+
+ Berg
+
+
+
+ :/icons/res/Berg.png
+
+
+
+ -
+
+ Sharpee
+
+
+
+ :/icons/res/Sharpee.png
+
+
+
+ -
+
+ Garfield
+
+
+
+ :/icons/res/Garfield.png
+
+
+
+ -
+
+ Snoopy
+
+
+
+ :/icons/res/Snoopy.png
+
+
+
+ -
+
+ Popey
+
+
+
+ :/icons/res/Popey.png
+
+
+
+ -
+
+ Pinguin
+
+
+
+ :/icons/res/Pinguin.png
+
+
+
+ -
+
+ Mickey
+
+
+
+ :/icons/res/Mickey.png
+
+
+
+ -
+
+ SDLogo
+
+
+
+ :/icons/res/sdlogo2.png
+
+
+
+
+
+
+
+ 300
+ 470
+ 80
+ 25
+
+
+
+
+ 100
+ 0
+
+
+
+ Cancel
+
+
+ false
+
+
+
+
+
+ 400
+ 470
+ 101
+ 25
+
+
+
+ Add Contact
+
+
+
+
+
+