|
|
@ -8,7 +8,7 @@ |
|
|
|
|
|
|
|
AddressBookModel::AddressBookModel(QTableView *parent) : QAbstractTableModel(parent) |
|
|
|
{ |
|
|
|
headers << tr("Label") << tr("Address") << tr("HushChatAddress") << tr("cid"); |
|
|
|
headers << tr("Avatar")<< tr("Label") << tr("Address") << tr("HushChatAddress") << tr("CID"); |
|
|
|
this->parent = parent; |
|
|
|
loadData(); |
|
|
|
} |
|
|
@ -38,10 +38,10 @@ void AddressBookModel::loadData() |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
void AddressBookModel::addNewLabel(QString label, QString addr, QString myAddr, QString cid) |
|
|
|
void AddressBookModel::addNewLabel(QString label, QString addr, QString myAddr, QString cid, QString avatar) |
|
|
|
{ |
|
|
|
//labels.push_back(QPair<QString, QString>(label, addr));
|
|
|
|
AddressBook::getInstance()->addAddressLabel(label, addr, myAddr, cid); |
|
|
|
AddressBook::getInstance()->addAddressLabel(label, addr, myAddr, cid, avatar); |
|
|
|
updateUi(); |
|
|
|
|
|
|
|
} |
|
|
@ -59,7 +59,7 @@ void AddressBookModel::removeItemAt(int row) |
|
|
|
if (row >= labels.size()) |
|
|
|
return; |
|
|
|
|
|
|
|
AddressBook::getInstance()->removeAddressLabel(labels[row].getName(), labels[row].getPartnerAddress(), labels[row].getMyAddress(),labels[row].getCid()); |
|
|
|
AddressBook::getInstance()->removeAddressLabel(labels[row].getName(), labels[row].getPartnerAddress(), labels[row].getMyAddress(),labels[row].getCid(),labels[row].getAvatar()); |
|
|
|
labels.clear(); |
|
|
|
labels = AddressBook::getInstance()->getAllAddressLabels(); |
|
|
|
dataChanged(index(0, 0), index(labels.size()-1, columnCount(index(0,0))-1)); |
|
|
@ -70,7 +70,7 @@ ContactItem AddressBookModel::itemAt(int row) |
|
|
|
{ |
|
|
|
if (row >= labels.size()) |
|
|
|
{ |
|
|
|
ContactItem item = ContactItem("", "", "", ""); |
|
|
|
ContactItem item = ContactItem("", "", "", "",""); |
|
|
|
return item; |
|
|
|
} |
|
|
|
|
|
|
@ -97,10 +97,11 @@ QVariant AddressBookModel::data(const QModelIndex &index, int role) const |
|
|
|
{ |
|
|
|
switch(index.column()) |
|
|
|
{ |
|
|
|
case 0: return labels.at(index.row()).getName(); |
|
|
|
case 1: return labels.at(index.row()).getPartnerAddress(); |
|
|
|
case 2: return labels.at(index.row()).getMyAddress(); |
|
|
|
case 3: return labels.at(index.row()).getCid(); |
|
|
|
case 0: return labels.at(index.row()).getAvatar(); |
|
|
|
case 1: return labels.at(index.row()).getName(); |
|
|
|
case 2: return labels.at(index.row()).getPartnerAddress(); |
|
|
|
case 3: return labels.at(index.row()).getMyAddress(); |
|
|
|
case 4: return labels.at(index.row()).getCid(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -168,6 +169,7 @@ void AddressBook::open(MainWindow* parent, QLineEdit* target) |
|
|
|
auto myAddr = ab.addr_chat->text().trimmed(); |
|
|
|
QString newLabel = ab.label->text(); |
|
|
|
QString cid = ab.cid->text(); |
|
|
|
QString avatar = "res/yoda.png"; |
|
|
|
|
|
|
|
if (addr.isEmpty() || newLabel.isEmpty()) |
|
|
|
{ |
|
|
@ -204,7 +206,7 @@ void AddressBook::open(MainWindow* parent, QLineEdit* target) |
|
|
|
} |
|
|
|
|
|
|
|
////// We need a better popup here.
|
|
|
|
AddressBook::getInstance()->addAddressLabel(newLabel, addr, myAddr, cid); |
|
|
|
AddressBook::getInstance()->addAddressLabel(newLabel, addr, myAddr, cid,avatar); |
|
|
|
QMessageBox::critical( |
|
|
|
parent, |
|
|
|
QObject::tr("Add Successfully"), |
|
|
@ -256,7 +258,7 @@ void AddressBook::open(MainWindow* parent, QLineEdit* target) |
|
|
|
continue; |
|
|
|
|
|
|
|
// Add label, address.
|
|
|
|
model.addNewLabel(items.at(1), items.at(0), "", ""); |
|
|
|
model.addNewLabel(items.at(1), items.at(0), "", "", ""); |
|
|
|
numImported++; |
|
|
|
} |
|
|
|
|
|
|
@ -267,7 +269,7 @@ void AddressBook::open(MainWindow* parent, QLineEdit* target) |
|
|
|
); |
|
|
|
}); |
|
|
|
|
|
|
|
auto fnSetTargetLabelAddr = [=] (QLineEdit* target, QString label, QString addr, QString myAddr, QString cid) { |
|
|
|
auto fnSetTargetLabelAddr = [=] (QLineEdit* target, QString label, QString addr, QString myAddr, QString cid, QString avatar) { |
|
|
|
target->setText(label % "/" % addr % myAddr); |
|
|
|
}; |
|
|
|
|
|
|
@ -284,8 +286,9 @@ void AddressBook::open(MainWindow* parent, QLineEdit* target) |
|
|
|
QString addr = model.itemAt(index.row()).getPartnerAddress(); |
|
|
|
QString myAddr = model.itemAt(index.row()).getMyAddress(); |
|
|
|
QString cid = model.itemAt(index.row()).getCid(); |
|
|
|
QString avatar = model.itemAt(index.row()).getCid(); |
|
|
|
d.accept(); |
|
|
|
fnSetTargetLabelAddr(target, lbl, addr, myAddr, cid); |
|
|
|
fnSetTargetLabelAddr(target, lbl, addr, myAddr, cid, avatar); |
|
|
|
}); |
|
|
|
|
|
|
|
// Right-Click
|
|
|
@ -299,13 +302,14 @@ void AddressBook::open(MainWindow* parent, QLineEdit* target) |
|
|
|
QString addr = model.itemAt(index.row()).getPartnerAddress(); |
|
|
|
QString myAddr = model.itemAt(index.row()).getMyAddress(); |
|
|
|
QString cid = model.itemAt(index.row()).getCid(); |
|
|
|
QString avatar = model.itemAt(index.row()).getAvatar(); |
|
|
|
|
|
|
|
QMenu menu(parent); |
|
|
|
|
|
|
|
if (target != nullptr) |
|
|
|
menu.addAction("Pick", [&] () { |
|
|
|
d.accept(); |
|
|
|
fnSetTargetLabelAddr(target, lbl, addr, myAddr, cid); |
|
|
|
fnSetTargetLabelAddr(target, lbl, addr, myAddr, cid, avatar); |
|
|
|
}); |
|
|
|
|
|
|
|
menu.addAction(QObject::tr("Copy address"), [&] () { |
|
|
@ -324,7 +328,7 @@ void AddressBook::open(MainWindow* parent, QLineEdit* target) |
|
|
|
auto selection = ab.addresses->selectionModel(); |
|
|
|
if (selection && selection->hasSelection() && selection->selectedRows().size() > 0) { |
|
|
|
auto item = model.itemAt(selection->selectedRows().at(0).row()); |
|
|
|
fnSetTargetLabelAddr(target, item.getName(), item.getMyAddress(), item.getPartnerAddress(), item.getCid()); |
|
|
|
fnSetTargetLabelAddr(target, item.getName(), item.getMyAddress(), item.getPartnerAddress(), item.getCid(), item.getAvatar()); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
@ -370,7 +374,7 @@ void AddressBook::readFromStorage() |
|
|
|
//qDebug() << "0:" << stuff[i][0];
|
|
|
|
//qDebug() << "1:" << stuff[i][1];
|
|
|
|
//qDebug() << "2:" << stuff[i][2];
|
|
|
|
ContactItem contact = ContactItem(stuff[i][0],stuff[i][1], stuff[i][2], stuff[i][3]); |
|
|
|
ContactItem contact = ContactItem(stuff[i][0],stuff[i][1], stuff[i][2], stuff[i][3],stuff[i][4]); |
|
|
|
//qDebug() << "contact=" << contact.toQTString();
|
|
|
|
allLabels.push_back(contact); |
|
|
|
} |
|
|
@ -406,6 +410,7 @@ void AddressBook::writeToStorage() |
|
|
|
c.push_back(item.getPartnerAddress()); |
|
|
|
c.push_back(item.getMyAddress()); |
|
|
|
c.push_back(item.getCid()); |
|
|
|
c.push_back(item.getAvatar()); |
|
|
|
contacts.push_back(c); |
|
|
|
} |
|
|
|
out << QString("v1") << contacts; |
|
|
@ -428,22 +433,22 @@ QString AddressBook::writeableFile() |
|
|
|
|
|
|
|
|
|
|
|
// Add a new address/label to the database
|
|
|
|
void AddressBook::addAddressLabel(QString label, QString address, QString myAddr, QString cid) |
|
|
|
void AddressBook::addAddressLabel(QString label, QString address, QString myAddr, QString cid, QString avatar) |
|
|
|
{ |
|
|
|
Q_ASSERT(Settings::isValidAddress(address)); |
|
|
|
// getName(), remove any existing label
|
|
|
|
// Iterate over the list and remove the label/address
|
|
|
|
for (int i=0; i < allLabels.size(); i++) |
|
|
|
if (allLabels[i].getName() == label) |
|
|
|
removeAddressLabel(allLabels[i].getName(), allLabels[i].getPartnerAddress(),allLabels[i].getMyAddress(), allLabels[i].getCid()); |
|
|
|
removeAddressLabel(allLabels[i].getName(), allLabels[i].getPartnerAddress(),allLabels[i].getMyAddress(), allLabels[i].getCid(), allLabels[i].getAvatar()); |
|
|
|
|
|
|
|
ContactItem item = ContactItem(label, address, myAddr, cid); |
|
|
|
ContactItem item = ContactItem(label, address, myAddr, cid, avatar); |
|
|
|
allLabels.push_back(item); |
|
|
|
writeToStorage(); |
|
|
|
} |
|
|
|
|
|
|
|
// Remove a new address/label from the database
|
|
|
|
void AddressBook::removeAddressLabel(QString label, QString address, QString myAddr, QString cid) |
|
|
|
void AddressBook::removeAddressLabel(QString label, QString address, QString myAddr, QString cid, QString avatar) |
|
|
|
{ |
|
|
|
// Iterate over the list and remove the label/address
|
|
|
|
for (int i=0; i < allLabels.size(); i++) |
|
|
|