Implement Ring usernames (Ethereum)
Change-Id: I9faeae5ad0bb2983876f53a3e5efe32d5c24ce9b
diff --git a/callwidget.cpp b/callwidget.cpp
index 2db55e7..14b82a2 100644
--- a/callwidget.cpp
+++ b/callwidget.cpp
@@ -186,6 +186,9 @@
ui->smartList->clearSelection();
});
+ connect(&NameDirectory::instance(), SIGNAL(registeredNameFound(const Account*,NameDirectory::LookupStatus,const QString&,const QString&)),
+ this, SLOT(contactLineEdit_registeredNameFound(const Account*,NameDirectory::LookupStatus,const QString&,const QString&)));
+
} catch (const std::exception& e) {
qDebug() << "INIT ERROR" << e.what();
}
@@ -662,16 +665,32 @@
}
void
+CallWidget::searchContactLineEditEntry(const URI &uri)
+{
+ auto cm = PhoneDirectoryModel::instance().getNumber(uri);
+ // if its a new CM, bring it to the top
+ if (cm->lastUsed() == 0)
+ cm->setLastUsed(QDateTime::currentDateTime().toTime_t());
+
+ // select cm
+ RecentModel::instance().selectionModel()->setCurrentIndex(RecentModel::instance().getIndex(cm),
+ QItemSelectionModel::ClearAndSelect);
+ ui->ringContactLineEdit->clear();
+}
+
+void
CallWidget::on_ringContactLineEdit_returnPressed()
{
- auto cm = PhoneDirectoryModel::instance().getNumber(ui->ringContactLineEdit->text());
- time_t currentTime;
- ::time(¤tTime);
- cm->setLastUsed(currentTime);
- ui->ringContactLineEdit->clear();
+ auto contactLineText = ui->ringContactLineEdit->text();
+ URI uri_passed = URI(contactLineText);
- QModelIndex index = RecentModel::instance().getIndex(cm);
- RecentModel::instance().selectionModel()->setCurrentIndex(index, QItemSelectionModel::ClearAndSelect);
+ if (!contactLineText.isNull() && contactLineText.length() > 0){
+
+ NameDirectory::instance().lookupName(nullptr, QString(), uri_passed);
+
+ } else {
+ searchContactLineEditEntry(uri_passed);
+ }
}
void
@@ -832,3 +851,39 @@
{
Utils::InvokeMailto(tr("Contact me on Ring"), tr("My RingId is : ") + ui->ringIdLabel->text());
}
+
+void
+CallWidget::contactLineEdit_registeredNameFound(const Account* account,NameDirectory::LookupStatus status,
+ const QString& address,const QString& name)
+{
+ URI uri = URI(ui->ringContactLineEdit->text());
+ QString username_to_lookup = uri.userinfo();
+
+ if (username_to_lookup.compare(name) != 0){
+ return;
+ }
+
+ switch (status)
+ {
+ case NameDirectory::LookupStatus::SUCCESS:
+ {
+ uri = URI("ring:" + address);
+ qDebug() << uri;
+ searchContactLineEditEntry(uri);
+ break;
+ }
+ case NameDirectory::LookupStatus::INVALID_NAME:
+ {
+ qDebug() << "Invalid Ring username";
+ break;
+ }
+ case NameDirectory::LookupStatus::ERROR:
+ case NameDirectory::LookupStatus::NOT_FOUND:
+ default:
+ {
+ qDebug() << "Could not resolve Ring username";
+ break;
+ }
+ }
+}
+