Browse Source

Merge pull request #25 from DenioD/chat

Chat
pull/130/head
Strider 4 years ago
committed by GitHub
parent
commit
024bb9050a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      application.qrc
  2. 6
      lib/Cargo.lock
  3. 2
      lib/Cargo.toml
  4. BIN
      res/addContactBlack.png
  5. BIN
      res/addContactWhite.png
  6. BIN
      res/getAddrBlack.png
  7. BIN
      res/getAddrWhite.png
  8. BIN
      res/lock_green.png
  9. BIN
      res/requestBlack.png
  10. BIN
      res/requestWhite.png
  11. BIN
      res/send-white.png
  12. BIN
      res/sendBlack.png
  13. BIN
      res/unlocked.png
  14. 27
      src/DataStore/ChatDataStore.cpp
  15. 3
      src/DataStore/ChatDataStore.h
  16. 2
      src/Model/ChatItem.cpp
  17. 173
      src/chatmodel.cpp
  18. 5
      src/chatmodel.h
  19. 10
      src/contactrequest.ui
  20. 19
      src/controller.cpp
  21. 36
      src/mainwindow.cpp
  22. 6
      src/mainwindow.h
  23. 98
      src/mainwindow.ui
  24. 627
      src/requestContactDialog.ui

9
application.qrc

@ -41,6 +41,15 @@
<file>res/lock_green.svg</file> <file>res/lock_green.svg</file>
<file>res/lock_blue.svg</file> <file>res/lock_blue.svg</file>
<file>res/unlocked.svg</file> <file>res/unlocked.svg</file>
<file>res/getAddrWhite.png</file>
<file>res/send-white.png</file>
<file>res/requestWhite.png</file>
<file>res/addContactWhite.png</file>
<file>res/getAddrBlack.png</file>
<file>res/sendBlack.png</file>
<file>res/requestBlack.png</file>
<file>res/addContactBlack.png</file>
</qresource> </qresource>
<qresource prefix="/img"> <qresource prefix="/img">
<file>res/hushdlogo.gif</file> <file>res/hushdlogo.gif</file>

6
lib/Cargo.lock

@ -1177,7 +1177,7 @@ version = "0.1.0"
dependencies = [ dependencies = [
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"silentdragonlitelib 0.1.0 (git+https://github.com/DenioD/silentdragonlite-cli?rev=32ca60735b3529ff8589ab08fc16678f508a9359)", "silentdragonlitelib 0.1.0 (git+https://github.com/DenioD/silentdragonlite-cli?rev=e368816c6d12267f25fbebec0aaac4c15d62d2a3)",
] ]
[[package]] [[package]]
@ -1640,7 +1640,7 @@ dependencies = [
[[package]] [[package]]
name = "silentdragonlitelib" name = "silentdragonlitelib"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/DenioD/silentdragonlite-cli?rev=32ca60735b3529ff8589ab08fc16678f508a9359#32ca60735b3529ff8589ab08fc16678f508a9359" source = "git+https://github.com/DenioD/silentdragonlite-cli?rev=e368816c6d12267f25fbebec0aaac4c15d62d2a3#e368816c6d12267f25fbebec0aaac4c15d62d2a3"
dependencies = [ dependencies = [
"base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"bellman 0.1.0 (git+https://github.com/MyHush/librustzcash.git?rev=1a0204113d487cdaaf183c2967010e5214ff9e37)", "bellman 0.1.0 (git+https://github.com/MyHush/librustzcash.git?rev=1a0204113d487cdaaf183c2967010e5214ff9e37)",
@ -2631,7 +2631,7 @@ dependencies = [
"checksum serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)" = "691b17f19fc1ec9d94ec0b5864859290dff279dbd7b03f017afda54eb36c3c35" "checksum serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)" = "691b17f19fc1ec9d94ec0b5864859290dff279dbd7b03f017afda54eb36c3c35"
"checksum sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" "checksum sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0"
"checksum signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41" "checksum signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41"
"checksum silentdragonlitelib 0.1.0 (git+https://github.com/DenioD/silentdragonlite-cli?rev=32ca60735b3529ff8589ab08fc16678f508a9359)" = "<none>" "checksum silentdragonlitelib 0.1.0 (git+https://github.com/DenioD/silentdragonlite-cli?rev=e368816c6d12267f25fbebec0aaac4c15d62d2a3)" = "<none>"
"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
"checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" "checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6"
"checksum socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e8b74de517221a2cb01a53349cf54182acdc31a074727d3079068448c0676d85" "checksum socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e8b74de517221a2cb01a53349cf54182acdc31a074727d3079068448c0676d85"

2
lib/Cargo.toml

@ -11,4 +11,4 @@ crate-type = ["staticlib"]
[dependencies] [dependencies]
libc = "0.2.58" libc = "0.2.58"
lazy_static = "1.4.0" lazy_static = "1.4.0"
silentdragonlitelib = { git = "https://github.com/DenioD/silentdragonlite-cli", rev = "32ca60735b3529ff8589ab08fc16678f508a9359" } silentdragonlitelib = { git = "https://github.com/DenioD/silentdragonlite-cli", rev = "e368816c6d12267f25fbebec0aaac4c15d62d2a3" }

BIN
res/addContactBlack.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
res/addContactWhite.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
res/getAddrBlack.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
res/getAddrWhite.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
res/lock_green.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
res/requestBlack.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
res/requestWhite.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
res/send-white.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
res/sendBlack.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
res/unlocked.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1006 B

27
src/DataStore/ChatDataStore.cpp

@ -2,6 +2,7 @@
// GPLv3 // GPLv3
#include "ChatDataStore.h" #include "ChatDataStore.h"
#include "addressbook.h"
ChatDataStore* ChatDataStore::getInstance() ChatDataStore* ChatDataStore::getInstance()
{ {
@ -48,15 +49,18 @@ std::map<QString, ChatItem> ChatDataStore::getAllRawChatItems()
return this->data; return this->data;
} }
std::map<QString, ChatItem> ChatDataStore::getAllContactRequests() std::map<QString, ChatItem> ChatDataStore::getAllNewContactRequests()
{ {
std::map<QString, ChatItem> filteredItems; std::map<QString, ChatItem> filteredItems;
for(auto &c: this->data) for(auto &c: this->data)
{ {
if ( if (
(c.second.isOutgoing() == false) && (c.second.isOutgoing() == false) &&
(c.second.getType() == "cont") && (c.second.getType() == "Cont") &&
(c.second.getMemo().startsWith("{")) (c.second.getContact() == "")
) )
{ {
filteredItems[c.first] = c.second; filteredItems[c.first] = c.second;
@ -65,6 +69,23 @@ std::map<QString, ChatItem> ChatDataStore::getAllContactRequests()
return filteredItems; return filteredItems;
} }
std::map<QString, ChatItem> ChatDataStore::getAllOldContactRequests()
{
std::map<QString, ChatItem> filteredItems;
for(auto &p : AddressBook::getInstance()->getAllAddressLabels())
for(auto &c: this->data)
{
if (
(c.second.isOutgoing() == false) &&
(c.second.getType() == "Cont") &&
(p.getPartnerAddress() == c.second.getRequestZaddr())
)
{
filteredItems[c.first] = c.second;
}
}
return filteredItems;
}
std::map<QString, ChatItem> ChatDataStore::getAllMemos() std::map<QString, ChatItem> ChatDataStore::getAllMemos()
{ {

3
src/DataStore/ChatDataStore.h

@ -22,7 +22,8 @@ class ChatDataStore
void setData(QString key, ChatItem value); void setData(QString key, ChatItem value);
ChatItem getData(QString key); ChatItem getData(QString key);
std::map<QString, ChatItem> getAllRawChatItems(); std::map<QString, ChatItem> getAllRawChatItems();
std::map<QString, ChatItem> getAllContactRequests(); std::map<QString, ChatItem> getAllNewContactRequests();
std::map<QString, ChatItem> getAllOldContactRequests();
std::map<QString, ChatItem> getAllMemos(); std::map<QString, ChatItem> getAllMemos();
QString dump(); QString dump();

2
src/Model/ChatItem.cpp

@ -144,7 +144,7 @@ QString ChatItem::toChatLine()
} }
QString line = QString("<small style='background: rgba(255,255,255,0.1);'>") + myDateTime.toString("dd.MM.yyyy hh:mm"); QString line = QString("<small>") + myDateTime.toString("dd.MM.yyyy hh:mm");
line += QString(lock) + QString("</small>"); line += QString(lock) + QString("</small>");
line += QString("<p>") + _memo.toHtmlEscaped() + QString("</p>"); line += QString("<p>") + _memo.toHtmlEscaped() + QString("</p>");
return line; return line;

173
src/chatmodel.cpp

@ -10,7 +10,6 @@
#include "addressbook.h" #include "addressbook.h"
#include "ui_memodialog.h" #include "ui_memodialog.h"
#include "ui_contactrequest.h" #include "ui_contactrequest.h"
#include "addressbook.h"
#include <QtWidgets> #include <QtWidgets>
#include <QUuid> #include <QUuid>
#include "DataStore/DataStore.h" #include "DataStore/DataStore.h"
@ -27,20 +26,6 @@ ChatModel::ChatModel(std::vector<ChatItem> chatItems)
this->setItems(chatItems); this->setItems(chatItems);
} }
/*QString ChatModel::generateChatItemID(ChatItem item)
{
QString key = QString::number(item.getTimestamp()) + QString("-");
key += QString(QCryptographicHash::hash(
QString(
QString::number(item.getTimestamp()) +
item.getAddress() +
item.getContact() +
item.getMemo()
).toUtf8()
,QCryptographicHash::Md5).toHex());
return key;
}*/
std::map<QString, ChatItem> ChatModel::getItems() std::map<QString, ChatItem> ChatModel::getItems()
{ {
return this->chatItems; return this->chatItems;
@ -82,10 +67,12 @@ void ChatModel::showMessages()
{ {
for(auto &c : this->chatItems) for(auto &c : this->chatItems)
{ {
qDebug() << c.second.toChatLine(); // qDebug() << c.second.toChatLine();
} }
} }
void MainWindow::renderContactRequest(){ void MainWindow::renderContactRequest(){
@ -96,8 +83,8 @@ void MainWindow::renderContactRequest(){
QStandardItemModel* contactRequest = new QStandardItemModel(); QStandardItemModel* contactRequest = new QStandardItemModel();
{ for (auto &c : DataStore::getChatDataStore()->getAllNewContactRequests())
for (auto &c : DataStore::getChatDataStore()->getAllContactRequests())
{ {
QStandardItem* Items = new QStandardItem(c.second.getAddress()); QStandardItem* Items = new QStandardItem(c.second.getAddress());
@ -105,22 +92,34 @@ void MainWindow::renderContactRequest(){
requestContact.requestContact->setModel(contactRequest); requestContact.requestContact->setModel(contactRequest);
requestContact.requestContact->show(); requestContact.requestContact->show();
} }
}
QStandardItemModel* contactRequestOld = new QStandardItemModel();
for (auto &p : AddressBook::getInstance()->getAllAddressLabels())
for (auto &c : DataStore::getChatDataStore()->getAllOldContactRequests())
{
if (p.getPartnerAddress() == c.second.getRequestZaddr())
{
QStandardItem* Items = new QStandardItem(c.second.getAddress());
contactRequestOld->appendRow(Items);
requestContact.requestContactOld->setModel(contactRequestOld);
requestContact.requestContactOld->show();
}else{}
}
QObject::connect(requestContact.requestContact, &QTableView::clicked, [&] () { QObject::connect(requestContact.requestContact, &QTableView::clicked, [&] () {
for (auto &c : DataStore::getChatDataStore()->getAllRawChatItems()){//this->chatItems){ for (auto &c : DataStore::getChatDataStore()->getAllRawChatItems()){
QModelIndex index = requestContact.requestContact->currentIndex(); QModelIndex index = requestContact.requestContact->currentIndex();
QString label_contact = index.data(Qt::DisplayRole).toString(); QString label_contact = index.data(Qt::DisplayRole).toString();
QStandardItemModel* contactMemo = new QStandardItemModel(); QStandardItemModel* contactMemo = new QStandardItemModel();
if (c.second.isOutgoing() == false) { if ((c.second.isOutgoing() == false) && (label_contact == c.second.getAddress()) && (c.second.getType() != "Cont"))
if (label_contact == c.second.getAddress()) {
if(c.second.getMemo().startsWith("{")){ {
}else{
QStandardItem* Items = new QStandardItem(c.second.getMemo()); QStandardItem* Items = new QStandardItem(c.second.getMemo());
contactMemo->appendRow(Items); contactMemo->appendRow(Items);
requestContact.requestMemo->setModel(contactMemo); requestContact.requestMemo->setModel(contactMemo);
requestContact.requestMemo->show(); requestContact.requestMemo->show();
@ -128,11 +127,38 @@ void MainWindow::renderContactRequest(){
requestContact.requestZaddr->setText(c.second.getRequestZaddr()); requestContact.requestZaddr->setText(c.second.getRequestZaddr());
requestContact.requestCID->setText(c.second.getCid()); requestContact.requestCID->setText(c.second.getCid());
requestContact.requestMyAddr->setText(c.second.getAddress()); requestContact.requestMyAddr->setText(c.second.getAddress());
} }else{}
} }
}
}
});
QObject::connect(requestContact.requestContactOld, &QTableView::clicked, [&] () {
for (auto &c : DataStore::getChatDataStore()->getAllRawChatItems()){
QModelIndex index = requestContact.requestContactOld->currentIndex();
QString label_contactold = index.data(Qt::DisplayRole).toString();
QStandardItemModel* contactMemo = new QStandardItemModel();
if ((c.second.isOutgoing() == false) && (label_contactold == c.second.getAddress()) && (c.second.getType() != "Cont"))
{
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());
}else{}
}
}); });
QObject::connect(requestContact.pushButton, &QPushButton::clicked, [&] () { QObject::connect(requestContact.pushButton, &QPushButton::clicked, [&] () {
@ -173,9 +199,13 @@ void MainWindow::renderContactRequest(){
QMessageBox::information(this, "Added Contact","successfully added your new contact. You can now Chat with this contact"); QMessageBox::information(this, "Added Contact","successfully added your new contact. You can now Chat with this contact");
}); });
dialog.exec(); dialog.exec();
rpc->refreshContacts(
ui->listContactWidget
);
} }
void ChatModel::addCid(QString tx, QString cid) void ChatModel::addCid(QString tx, QString cid)
@ -286,7 +316,8 @@ Tx MainWindow::createTxFromChatPage() {
qDebug() << "pushback chattx"; qDebug() << "pushback chattx";
} } }
}
tx.fee = Settings::getMinerFee(); tx.fee = Settings::getMinerFee();
@ -425,7 +456,8 @@ QString MainWindow::doSendChatTxValidations(Tx tx) {
} }
void::MainWindow::addContact() { void::MainWindow::addContact() {
Ui_Dialog request; Ui_Dialog request;
QDialog dialog(this); QDialog dialog(this);
request.setupUi(&dialog); request.setupUi(&dialog);
@ -434,24 +466,29 @@ void::MainWindow::addContact() {
bool sapling = true; bool sapling = true;
rpc->createNewZaddr(sapling, [=] (json reply) { rpc->createNewZaddr(sapling, [=] (json reply) {
QString myAddr = QString::fromStdString(reply.get<json::array_t>()[0]); QString myAddr = QString::fromStdString(reply.get<json::array_t>()[0]);
QString cid = QUuid::createUuid().toString(QUuid::WithoutBraces); request.myzaddr->setText(myAddr);
ui->listReceiveAddresses->insertItem(0, myAddr); ui->listReceiveAddresses->insertItem(0, myAddr);
ui->listReceiveAddresses->setCurrentIndex(0); ui->listReceiveAddresses->setCurrentIndex(0);
qDebug() << "new generated myAddr" << myAddr; qDebug() << "new generated myAddr" << myAddr;
request.myzaddr->setText(myAddr);
request.cid->setText(cid);
}); });
QString cid = QUuid::createUuid().toString(QUuid::WithoutBraces);
request.cid->setText(cid);
QObject::connect(request.sendRequestButton, &QPushButton::clicked, [&] () { QObject::connect(request.sendRequestButton, &QPushButton::clicked, [&] () {
QString cid = request.cid->text(); QString cid = request.cid->text();
auto addr = request.zaddr->text().trimmed(); auto addr = request.zaddr->text().trimmed();
QString getrequest = addr;
QString newLabel = request.labelRequest->text().trimmed(); QString newLabel = request.labelRequest->text().trimmed();
auto myAddr = request.myzaddr->text().trimmed(); auto myAddr = request.myzaddr->text().trimmed();
// ChatModel->addSendRequest(myAddr, cid, addr);
QString avatar = QString(":/icons/res/") + request.comboBoxAvatar->currentText() + QString(".png"); QString avatar = QString(":/icons/res/") + request.comboBoxAvatar->currentText() + QString(".png");
if (addr.isEmpty() || newLabel.isEmpty()) if (addr.isEmpty() || newLabel.isEmpty())
@ -489,18 +526,28 @@ void::MainWindow::addContact() {
); );
return; return;
}); });
// QObject::connect(request.sendRequestButton, &QPushButton::clicked, this, &MainWindow::ContactRequest);
dialog.exec(); dialog.exec();
rpc->refreshContacts(
ui->listContactWidget
);
} }
// Create a Tx for a contact Request // Create a Tx for a contact Request
Tx MainWindow::createTxForSafeContactRequest() { Tx MainWindow::createTxForSafeContactRequest() {
Tx tx;
Tx tx; {
// For each addr/amt in the Chat tab
{ {
CAmount totalAmt; CAmount totalAmt;
QString amtStr = "0"; QString amtStr = "0";
@ -510,41 +557,45 @@ Tx MainWindow::createTxForSafeContactRequest() {
amt = CAmount::fromDecimalString("0"); amt = CAmount::fromDecimalString("0");
totalAmt = totalAmt + amt; totalAmt = totalAmt + amt;
for(auto &c : AddressBook::getInstance()->getAllAddressLabels()) for(auto &c : AddressBook::getInstance()->getAllAddressLabels())
if (ui->contactNameMemo->text().trimmed() == c.getName()) {
if (ui->contactNameMemo->text().trimmed() == c.getName()) {
QString cid = c.getCid(); QString cid = c.getCid();
QString myAddr = c.getMyAddress(); QString myAddr = c.getMyAddress();
QString type = "cont"; QString type = "Cont";
QString addr = c.getPartnerAddress(); QString addr = c.getPartnerAddress();
QString hmemo= createHeaderMemo(type,cid,myAddr); QString hmemo= createHeaderMemo(type,cid,myAddr);
QString memo = ui->memoTxtChat->toPlainText().trimmed(); QString memo = ui->memoTxtChat->toPlainText().trimmed();
tx.toAddrs.push_back(ToFields{addr, amt, memo}); // ui->memoSizeChat->setLenDisplayLabel();// Todo -> activate lendisplay for chat
tx.toAddrs.push_back(ToFields{addr, amt, hmemo});
tx.toAddrs.push_back(ToFields{addr, amt, hmemo});
tx.toAddrs.push_back(ToFields{addr, amt, memo});
qDebug() << "pushback chattx";
} qDebug() << "pushback chattx";
tx.fee = Settings::getMinerFee(); tx.fee = Settings::getMinerFee();
}
}
return tx; return tx;
qDebug() << "RequestTx created"; qDebug() << "RequestTx created";
}
}
} }
void MainWindow::ContactRequest() { void MainWindow::ContactRequest() {
if (ui->contactNameMemo->text().trimmed().isEmpty() || ui->memoTxtChat->toPlainText().trimmed().isEmpty()) { /* if (request.labelRequest->text().trimmed().isEmpty() || request.memorequest->toPlainText().trimmed().isEmpty()) {
// auto addr = ""; // auto addr = "";
// if (! Settings::isZAddress(AddressBook::addressFromAddressLabel(addr->text()))) { // if (! Settings::isZAddress(AddressBook::addressFromAddressLabel(addr->text()))) {
@ -554,7 +605,7 @@ void MainWindow::ContactRequest() {
msg.exec(); msg.exec();
return; return;
} }*/
Tx tx = createTxForSafeContactRequest(); Tx tx = createTxForSafeContactRequest();
@ -632,7 +683,7 @@ void MainWindow::ContactRequest() {
QMessageBox::critical(this, QObject::tr("Transaction Error"), errStr, QMessageBox::Ok); QMessageBox::critical(this, QObject::tr("Transaction Error"), errStr, QMessageBox::Ok);
} }
); );
} }
@ -664,4 +715,4 @@ QString MainWindow::doSendRequestTxValidations(Tx tx) {
} }
return ""; return "";
} }

5
src/chatmodel.h

@ -19,6 +19,9 @@
#include "Chat/Helper/ChatDelegator.h" #include "Chat/Helper/ChatDelegator.h"
#include "Chat/Helper/ChatIDGenerator.h" #include "Chat/Helper/ChatIDGenerator.h"
namespace Ui {
class MainWindow;
}
class ChatModel class ChatModel
{ {
private: private:
@ -28,6 +31,7 @@ class ChatModel
MainWindow* main; MainWindow* main;
std::map<QString, QString> cidMap; std::map<QString, QString> cidMap;
std::map<QString, QString> requestZaddrMap; std::map<QString, QString> requestZaddrMap;
std::map<int, std::tuple<QString, QString, QString>> sendrequestMap;
public: public:
ChatModel() {}; ChatModel() {};
@ -44,6 +48,7 @@ class ChatModel
void addMessage(QString timestamp, ChatItem item); void addMessage(QString timestamp, ChatItem item);
void addCid(QString tx, QString cid); void addCid(QString tx, QString cid);
void addrequestZaddr(QString tx, QString requestZaddr); void addrequestZaddr(QString tx, QString requestZaddr);
void addSendRequest(int i, QString myAddr, QString cid, QString addr );
QString getCidByTx(QString tx); QString getCidByTx(QString tx);
QString getrequestZaddrByTx(QString tx); QString getrequestZaddrByTx(QString tx);
void killCidCache(); void killCidCache();

10
src/contactrequest.ui

@ -6,15 +6,15 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>780</width> <width>777</width>
<height>416</height> <height>427</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Send a contact request</string> <string>Send a contact request</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="1" colspan="2"> <item row="0" column="2">
<widget class="QLabel" name="label_6"> <widget class="QLabel" name="label_6">
<property name="text"> <property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;right&quot;&gt;Choose a avatar for your contact :&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;right&quot;&gt;Choose a avatar for your contact :&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
@ -28,7 +28,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="1" column="2">
<widget class="QComboBox" name="comboBoxAvatar"> <widget class="QComboBox" name="comboBoxAvatar">
<item> <item>
<property name="text"> <property name="text">
@ -192,7 +192,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="8" column="0" colspan="3"> <item row="8" column="0">
<widget class="QLabel" name="cid"> <widget class="QLabel" name="cid">
<property name="text"> <property name="text">
<string/> <string/>

19
src/controller.cpp

@ -102,6 +102,10 @@ void Controller::setConnection(Connection* c)
DataStore::getSietchDataStore()->setData("Sietch" + QString(i), zdust.toUtf8()); DataStore::getSietchDataStore()->setData("Sietch" + QString(i), zdust.toUtf8());
}); });
} }
refreshContacts(
ui->listContactWidget
);
} }
// Build the RPC JSON Parameters for this tx // Build the RPC JSON Parameters for this tx
@ -797,6 +801,7 @@ void Controller::refreshBalances()
CAmount balAvailable = balT + balVerified; CAmount balAvailable = balT + balVerified;
model->setAvailableBalance(balAvailable); model->setAvailableBalance(balAvailable);
updateUIBalances(); updateUIBalances();
}); });
// 2. Get the UTXOs // 2. Get the UTXOs
@ -881,8 +886,8 @@ void Controller::refreshTransactions() {
confirmations, confirmations,
true true
); );
qDebug()<<"Memo : " <<memo; // qDebug()<<"Memo : " <<memo;
qDebug()<<"Confirmation :" << confirmations; // qDebug()<<"Confirmation :" << confirmations;
DataStore::getChatDataStore()->setData(ChatIDGenerator::getInstance()->generateID(item), item); DataStore::getChatDataStore()->setData(ChatIDGenerator::getInstance()->generateID(item), item);
@ -978,8 +983,8 @@ void Controller::refreshTransactions() {
confirmations, confirmations,
false false
); );
qDebug()<< "Position : " << position; // qDebug()<< "Position : " << position;
qDebug()<<"Confirmation :" << confirmations; // qDebug()<<"Confirmation :" << confirmations;
DataStore::getChatDataStore()->setData(ChatIDGenerator::getInstance()->generateID(item), item); DataStore::getChatDataStore()->setData(ChatIDGenerator::getInstance()->generateID(item), item);
} }
@ -1005,10 +1010,10 @@ void Controller::refreshTransactions() {
// Update model data, which updates the table view // Update model data, which updates the table view
transactionsTableModel->replaceData(txdata); transactionsTableModel->replaceData(txdata);
chat->renderChatBox(ui, ui->listChat); chat->renderChatBox(ui, ui->listChat);
refreshContacts( // refreshContacts(
ui->listContactWidget // ui->listContactWidget
); // );
}); });
} }

36
src/mainwindow.cpp

@ -1011,52 +1011,49 @@ void MainWindow::setupchatTab() {
auto theme = Settings::getInstance()->get_theme_name(); auto theme = Settings::getInstance()->get_theme_name();
if (theme == "dark" || theme == "midnight") { if (theme == "dark" || theme == "midnight") {
QPixmap send(":/icons/res/send-new-white.png"); QPixmap send(":/icons/res/send-white.png");
QIcon sendIcon(send); QIcon sendIcon(send);
ui->sendChatButton->setIcon(sendIcon); ui->sendChatButton->setIcon(sendIcon);
QPixmap notification(":/icons/res/notification.png"); QPixmap notification(":/icons/res/requestWhite.png");
QIcon notificationIcon(notification); QIcon notificationIcon(notification);
ui->pushContact->setIcon(notificationIcon); ui->pushContact->setIcon(notificationIcon);
QPixmap addContact(":/icons/res/add_contact.png"); QPixmap addContact(":/icons/res/addContactWhite.png");
QIcon addContactIcon(addContact); QIcon addContactIcon(addContact);
ui->safeContactRequest->setIcon(addContactIcon); ui->safeContactRequest->setIcon(addContactIcon);
QPixmap newAddr(":/icons/res/add_contact.png"); QPixmap newAddr(":/icons/res/getAddrWhite.png");
QIcon addnewAddrIcon(newAddr); QIcon addnewAddrIcon(newAddr);
ui->givemeZaddr->setIcon(addnewAddrIcon); ui->givemeZaddr->setIcon(addnewAddrIcon);
QPixmap sendContact(":/icons/res/upload.png"); ui->memoTxtChat->setTextColor("White");
QIcon addSendContactIcon(sendContact);
ui->sendContact->setIcon(addSendContactIcon);
}else{ }else{
QPixmap pixmap(":/icons/res/send-new.svg");
QIcon sendIcon(pixmap); QPixmap send(":/icons/res/sendBlack.png");
QIcon sendIcon(send);
ui->sendChatButton->setIcon(sendIcon); ui->sendChatButton->setIcon(sendIcon);
QPixmap notification(":/icons/res/notification.svg"); QPixmap notification(":/icons/res/requestBlack.png");
QIcon notificationIcon(notification); QIcon notificationIcon(notification);
ui->pushContact->setIcon(notificationIcon); ui->pushContact->setIcon(notificationIcon);
QPixmap addContact(":/icons/res/add_contact.svg"); QPixmap addContact(":/icons/res/addContactBlack.png");
QIcon addContactIcon(addContact); QIcon addContactIcon(addContact);
ui->safeContactRequest->setIcon(addContact); ui->safeContactRequest->setIcon(addContactIcon);
QPixmap newAddr(":/icons/res/add_contact.svg"); QPixmap newAddr(":/icons/res/getAddrBlack.png");
QIcon addnewAddrIcon(newAddr); QIcon addnewAddrIcon(newAddr);
ui->givemeZaddr->setIcon(addnewAddrIcon); ui->givemeZaddr->setIcon(addnewAddrIcon);
QPixmap sendContact(":/icons/res/upload.svg"); ui->memoTxtChat->setTextColor("Black");
QIcon addSendContactIcon(sendContact);
ui->sendContact->setIcon(addSendContactIcon);
} }
QObject::connect(ui->sendChatButton, &QPushButton::clicked, this, &MainWindow::sendChatButton); QObject::connect(ui->sendChatButton, &QPushButton::clicked, this, &MainWindow::sendChatButton);
QObject::connect(ui->sendContact, &QPushButton::clicked, this, &MainWindow::ContactRequest);
QObject::connect(ui->safeContactRequest, &QPushButton::clicked, this, &MainWindow::addContact); QObject::connect(ui->safeContactRequest, &QPushButton::clicked, this, &MainWindow::addContact);
QObject::connect(ui->pushContact, &QPushButton::clicked, this , &MainWindow::renderContactRequest); QObject::connect(ui->pushContact, &QPushButton::clicked, this , &MainWindow::renderContactRequest);
@ -1116,11 +1113,6 @@ void ChatMemoEdit::setMaxLen(int len) {
updateDisplay(); updateDisplay();
} }
void ChatMemoEdit::setSendChatButton(QPushButton* button) {
this->sendChatButton = button;
}
void MainWindow::updateChat() void MainWindow::updateChat()
{ {
rpc->refreshChat(ui->listChat); rpc->refreshChat(ui->listChat);

6
src/mainwindow.h

@ -50,6 +50,7 @@ public:
QString doSendTxValidations(Tx tx); QString doSendTxValidations(Tx tx);
QString doSendChatTxValidations(Tx tx); QString doSendChatTxValidations(Tx tx);
QString doSendRequestTxValidations(Tx tx); QString doSendRequestTxValidations(Tx tx);
QString getCid();
void replaceWormholeClient(WormholeClient* newClient); void replaceWormholeClient(WormholeClient* newClient);
bool isWebsocketListening(); bool isWebsocketListening();
@ -62,12 +63,7 @@ public:
void updateLabels(); void updateLabels();
void updateTAddrCombo(bool checked); void updateTAddrCombo(bool checked);
// void renderContactRequest();
// void setChatItem(ChatItem* item);
//void ChatItem* getChatItem();
// Disable recurring on mainnet // Disable recurring on mainnet
void disableRecurring(); void disableRecurring();

98
src/mainwindow.ui

@ -1409,9 +1409,21 @@
<height>81</height> <height>81</height>
</rect> </rect>
</property> </property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">font: 11pt &quot;Noto Color Emoji&quot;;</string> <string notr="true">font: 11pt &quot;Noto Color Emoji&quot;;</string>
</property> </property>
<property name="autoFormatting">
<set>QTextEdit::AutoNone</set>
</property>
<property name="lineWrapMode">
<enum>QTextEdit::FixedColumnWidth</enum>
</property>
<property name="lineWrapColumnOrWidth">
<number>80</number>
</property>
</widget> </widget>
<widget class="QLabel" name="contactNameMemo"> <widget class="QLabel" name="contactNameMemo">
<property name="geometry"> <property name="geometry">
@ -1435,7 +1447,7 @@
<widget class="QPushButton" name="sendChatButton"> <widget class="QPushButton" name="sendChatButton">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>1170</x> <x>1160</x>
<y>560</y> <y>560</y>
<width>91</width> <width>91</width>
<height>81</height> <height>81</height>
@ -1455,12 +1467,12 @@
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset>
<normalon>:/icons/res/send-new-white.png</normalon> <normalon>:/icons/res/sendBlack.png</normalon>
</iconset> </iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
<size> <size>
<width>41</width> <width>50</width>
<height>49</height> <height>49</height>
</size> </size>
</property> </property>
@ -1533,18 +1545,21 @@
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<property name="toolTip">
<string>Add a new contact</string>
</property>
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
<property name="icon"> <property name="icon">
<iconset theme="Dark"> <iconset theme="Dark">
<normalon>:/icons/res/add_contact.png</normalon> <normalon>:/icons/res/addContactBlack.png</normalon>
</iconset> </iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
<size> <size>
<width>43</width> <width>50</width>
<height>49</height> <height>45</height>
</size> </size>
</property> </property>
<property name="flat"> <property name="flat">
@ -1554,10 +1569,10 @@
<widget class="QPushButton" name="pushContact"> <widget class="QPushButton" name="pushContact">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>10</x> <x>50</x>
<y>30</y> <y>20</y>
<width>41</width> <width>61</width>
<height>41</height> <height>51</height>
</rect> </rect>
</property> </property>
<property name="baseSize"> <property name="baseSize">
@ -1566,6 +1581,9 @@
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<property name="toolTip">
<string>Incoming contact request</string>
</property>
<property name="autoFillBackground"> <property name="autoFillBackground">
<bool>false</bool> <bool>false</bool>
</property> </property>
@ -1574,71 +1592,41 @@
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="../application.qrc"> <iconset resource="../application.qrc">
<normaloff>:/icons/res/notification.png</normaloff>:/icons/res/notification.png</iconset> <normaloff>:/icons/res/requestBlack.png</normaloff>:/icons/res/requestBlack.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
<size> <size>
<width>33</width> <width>50</width>
<height>35</height> <height>45</height>
</size> </size>
</property> </property>
<property name="flat"> <property name="flat">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
<widget class="QPushButton" name="sendContact"> <widget class="QPushButton" name="givemeZaddr">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>270</x> <x>210</x>
<y>510</y> <y>20</y>
<width>51</width> <width>61</width>
<height>51</height> <height>51</height>
</rect> </rect>
</property> </property>
<property name="baseSize"> <property name="toolTip">
<size> <string>Get a new Address</string>
<width>100</width>
<height>0</height>
</size>
</property> </property>
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
<property name="icon">
<iconset theme="Dark">
<normalon>:/icons/res/add_contact.png</normalon>
</iconset>
</property>
<property name="iconSize">
<size>
<width>43</width>
<height>49</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
<widget class="QPushButton" name="givemeZaddr">
<property name="geometry">
<rect>
<x>60</x>
<y>30</y>
<width>111</width>
<height>41</height>
</rect>
</property>
<property name="text">
<string> New Addr</string>
</property>
<property name="icon"> <property name="icon">
<iconset resource="../application.qrc"> <iconset resource="../application.qrc">
<normaloff>:/icons/res/add_contact.png</normaloff>:/icons/res/add_contact.png</iconset> <normaloff>:/icons/res/getAddrBlack.png</normaloff>:/icons/res/getAddrBlack.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
<size> <size>
<width>33</width> <width>50</width>
<height>35</height> <height>45</height>
</size> </size>
</property> </property>
<property name="flat"> <property name="flat">
@ -1648,8 +1636,8 @@
<widget class="QLabel" name="label_40"> <widget class="QLabel" name="label_40">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>40</x> <x>90</x>
<y>20</y> <y>10</y>
<width>21</width> <width>21</width>
<height>16</height> <height>16</height>
</rect> </rect>
@ -2042,7 +2030,7 @@
<customwidget> <customwidget>
<class>AddressCombo</class> <class>AddressCombo</class>
<extends>QComboBox</extends> <extends>QComboBox</extends>
<header location="global">addresscombo.h</header> <header>addresscombo.h</header>
</customwidget> </customwidget>
<customwidget> <customwidget>
<class>QRCodeLabel</class> <class>QRCodeLabel</class>

627
src/requestContactDialog.ui

@ -6,350 +6,325 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1011</width> <width>1025</width>
<height>503</height> <height>562</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Incoming contact request</string> <string>Incoming contact request</string>
</property> </property>
<widget class="QListView" name="requestContact"> <layout class="QGridLayout" name="gridLayout">
<property name="geometry"> <item row="0" column="0">
<rect> <widget class="QLabel" name="label">
<x>9</x> <property name="text">
<y>9</y> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-weight:600; text-decoration: underline;&quot;&gt;Open requests&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<width>256</width> </property>
<height>461</height> </widget>
</rect>
</property>
<property name="mouseTracking">
<bool>true</bool>
</property>
<property name="editTriggers">
<set>QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked</set>
</property>
<property name="alternatingRowColors">
<bool>false</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
</widget>
<widget class="QListView" name="requestMemo">
<property name="geometry">
<rect>
<x>263</x>
<y>9</y>
<width>741</width>
<height>271</height>
</rect>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustToContents</enum>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="resizeMode">
<enum>QListView::Adjust</enum>
</property>
<property name="modelColumn">
<number>0</number>
</property>
<property name="uniformItemSizes">
<bool>false</bool>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
<widget class="QLabel" name="label_8">
<property name="geometry">
<rect>
<x>276</x>
<y>296</y>
<width>101</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>Request from :</string>
</property>
</widget>
<widget class="QLineEdit" name="requestZaddr">
<property name="geometry">
<rect>
<x>393</x>
<y>296</y>
<width>601</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_9">
<property name="geometry">
<rect>
<x>276</x>
<y>327</y>
<width>30</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>Cid :</string>
</property>
</widget>
<widget class="QLineEdit" name="requestCID">
<property name="geometry">
<rect>
<x>393</x>
<y>327</y>
<width>601</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_7">
<property name="geometry">
<rect>
<x>276</x>
<y>358</y>
<width>71</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>My Zaddr :</string>
</property>
</widget>
<widget class="QLineEdit" name="requestMyAddr">
<property name="geometry">
<rect>
<x>393</x>
<y>358</y>
<width>601</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_5">
<property name="geometry">
<rect>
<x>276</x>
<y>389</y>
<width>68</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>Nickname</string>
</property>
</widget>
<widget class="QLineEdit" name="requestLabel">
<property name="geometry">
<rect>
<x>393</x>
<y>389</y>
<width>221</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_6">
<property name="geometry">
<rect>
<x>276</x>
<y>420</y>
<width>228</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;right&quot;&gt;Choose a avatar for your contact :&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
<widget class="QComboBox" name="comboBoxAvatar">
<property name="geometry">
<rect>
<x>510</x>
<y>420</y>
<width>106</width>
<height>25</height>
</rect>
</property>
<item>
<property name="text">
<string>Stag</string>
</property>
<property name="icon">
<iconset>
<activeon>:/icons/res/Stag.png</activeon>
</iconset>
</property>
</item> </item>
<item> <item row="0" column="1" colspan="4">
<property name="text"> <widget class="QLabel" name="label_3">
<string>Elsa</string> <property name="text">
</property> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-weight:600; text-decoration: underline;&quot;&gt;Memo of the request&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<property name="icon"> </property>
<iconset> </widget>
<normalon>:/icons/res/Elsa.png</normalon>
</iconset>
</property>
</item> </item>
<item> <item row="1" column="0">
<property name="text"> <widget class="QListView" name="requestContact">
<string>Denio</string> <property name="mouseTracking">
</property> <bool>true</bool>
<property name="icon"> </property>
<iconset> <property name="editTriggers">
<activeon>:/icons/res/Denio.png</activeon> <set>QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked</set>
</iconset> </property>
</property> <property name="alternatingRowColors">
<bool>false</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
</widget>
</item> </item>
<item> <item row="1" column="1" colspan="4">
<property name="text"> <widget class="QListView" name="requestMemo">
<string>Duke</string> <property name="verticalScrollBarPolicy">
</property> <enum>Qt::ScrollBarAlwaysOff</enum>
<property name="icon"> </property>
<iconset> <property name="horizontalScrollBarPolicy">
<activeon>:/icons/res/Duke.png</activeon> <enum>Qt::ScrollBarAlwaysOff</enum>
</iconset> </property>
</property> <property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustToContents</enum>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="resizeMode">
<enum>QListView::Adjust</enum>
</property>
<property name="modelColumn">
<number>0</number>
</property>
<property name="uniformItemSizes">
<bool>false</bool>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item> <item row="2" column="0">
<property name="text"> <widget class="QLabel" name="label_2">
<string>Yoda</string> <property name="text">
</property> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-weight:600; text-decoration: underline;&quot;&gt;Recently closed requests&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<property name="icon"> </property>
<iconset> </widget>
<activeon>:/icons/res/Yoda.png</activeon>
</iconset>
</property>
</item> </item>
<item> <item row="2" column="1" rowspan="2" colspan="4">
<property name="text"> <widget class="QLabel" name="label_4">
<string>Berg</string> <property name="text">
</property> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-weight:600; text-decoration: underline;&quot;&gt;Details of the request&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<property name="icon"> </property>
<iconset> </widget>
<activeon>:/icons/res/Berg.png</activeon>
</iconset>
</property>
</item> </item>
<item> <item row="3" column="0" rowspan="7">
<property name="text"> <widget class="QListView" name="requestContactOld">
<string>Sharpee</string> <property name="mouseTracking">
</property> <bool>true</bool>
<property name="icon"> </property>
<iconset> <property name="editTriggers">
<activeon>:/icons/res/Sharpee.png</activeon> <set>QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked</set>
</iconset> </property>
</property> <property name="alternatingRowColors">
<bool>false</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
</widget>
</item> </item>
<item> <item row="4" column="1">
<property name="text"> <widget class="QLabel" name="label_8">
<string>Garfield</string> <property name="text">
</property> <string>Request from :</string>
<property name="icon"> </property>
<iconset> </widget>
<activeon>:/icons/res/Garfield.png</activeon>
</iconset>
</property>
</item> </item>
<item> <item row="4" column="2" colspan="3">
<property name="text"> <widget class="QLineEdit" name="requestZaddr"/>
<string>Snoopy</string>
</property>
<property name="icon">
<iconset>
<activeon>:/icons/res/Snoopy.png</activeon>
</iconset>
</property>
</item> </item>
<item> <item row="5" column="1">
<property name="text"> <widget class="QLabel" name="label_9">
<string>Popey</string> <property name="text">
</property> <string>Cid :</string>
<property name="icon"> </property>
<iconset> </widget>
<activeon>:/icons/res/Popey.png</activeon>
</iconset>
</property>
</item> </item>
<item> <item row="5" column="2" colspan="3">
<property name="text"> <widget class="QLineEdit" name="requestCID"/>
<string>Pinguin</string>
</property>
<property name="icon">
<iconset>
<activeon>:/icons/res/Pinguin.png</activeon>
</iconset>
</property>
</item> </item>
<item> <item row="6" column="1">
<property name="text"> <widget class="QLabel" name="label_7">
<string>Mickey</string> <property name="text">
</property> <string>My Zaddr :</string>
<property name="icon"> </property>
<iconset> </widget>
<activeon>:/icons/res/Mickey.png</activeon>
</iconset>
</property>
</item> </item>
<item> <item row="6" column="2" colspan="3">
<property name="text"> <widget class="QLineEdit" name="requestMyAddr"/>
<string>SDLogo</string>
</property>
<property name="icon">
<iconset>
<activeon>:/icons/res/sdlogo2.png</activeon>
</iconset>
</property>
</item> </item>
</widget> <item row="7" column="1">
<widget class="QPushButton" name="cancel"> <widget class="QLabel" name="label_5">
<property name="geometry"> <property name="text">
<rect> <string>Nickname</string>
<x>300</x> </property>
<y>470</y> </widget>
<width>80</width> </item>
<height>25</height> <item row="7" column="2" colspan="2">
</rect> <widget class="QLineEdit" name="requestLabel"/>
</property> </item>
<property name="baseSize"> <item row="8" column="1" colspan="2">
<size> <widget class="QLabel" name="label_6">
<width>100</width> <property name="text">
<height>0</height> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;right&quot;&gt;Choose a avatar for your contact :&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</size> </property>
</property> </widget>
<property name="text"> </item>
<string>Cancel</string> <item row="8" column="3">
</property> <widget class="QComboBox" name="comboBoxAvatar">
<property name="flat"> <item>
<bool>false</bool> <property name="text">
</property> <string>Stag</string>
</widget> </property>
<widget class="QPushButton" name="pushButton"> <property name="icon">
<property name="geometry"> <iconset>
<rect> <activeon>:/icons/res/Stag.png</activeon>
<x>400</x> </iconset>
<y>470</y> </property>
<width>101</width> </item>
<height>25</height> <item>
</rect> <property name="text">
</property> <string>Elsa</string>
<property name="text"> </property>
<string>Add Contact</string> <property name="icon">
</property> <iconset>
</widget> <normalon>:/icons/res/Elsa.png</normalon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Denio</string>
</property>
<property name="icon">
<iconset>
<activeon>:/icons/res/Denio.png</activeon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Duke</string>
</property>
<property name="icon">
<iconset>
<activeon>:/icons/res/Duke.png</activeon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Yoda</string>
</property>
<property name="icon">
<iconset>
<activeon>:/icons/res/Yoda.png</activeon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Berg</string>
</property>
<property name="icon">
<iconset>
<activeon>:/icons/res/Berg.png</activeon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Sharpee</string>
</property>
<property name="icon">
<iconset>
<activeon>:/icons/res/Sharpee.png</activeon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Garfield</string>
</property>
<property name="icon">
<iconset>
<activeon>:/icons/res/Garfield.png</activeon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Snoopy</string>
</property>
<property name="icon">
<iconset>
<activeon>:/icons/res/Snoopy.png</activeon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Popey</string>
</property>
<property name="icon">
<iconset>
<activeon>:/icons/res/Popey.png</activeon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Pinguin</string>
</property>
<property name="icon">
<iconset>
<activeon>:/icons/res/Pinguin.png</activeon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Mickey</string>
</property>
<property name="icon">
<iconset>
<activeon>:/icons/res/Mickey.png</activeon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>SDLogo</string>
</property>
<property name="icon">
<iconset>
<activeon>:/icons/res/sdlogo2.png</activeon>
</iconset>
</property>
</item>
</widget>
</item>
<item row="9" column="3">
<widget class="QPushButton" name="cancel">
<property name="baseSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Cancel</string>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
<item row="9" column="4">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>Add this new Contact</string>
</property>
</widget>
</item>
</layout>
</widget> </widget>
<resources/> <resources/>
<connections/> <connections>
<connection>
<sender>cancel</sender>
<signal>clicked()</signal>
<receiver>requestDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>339</x>
<y>482</y>
</hint>
<hint type="destinationlabel">
<x>505</x>
<y>251</y>
</hint>
</hints>
</connection>
</connections>
</ui> </ui>

Loading…
Cancel
Save