|
|
@ -24,7 +24,7 @@ PairingQRWidget::PairingQRWidget(QWidget* parent) : QWidget(parent) { |
|
|
|
QTimer* timer = new QTimer(this); |
|
|
|
QTimer* timer = new QTimer(this); |
|
|
|
timer->start(30 * 1000); |
|
|
|
timer->start(30 * 1000); |
|
|
|
connect(timer, SIGNAL(timeout()), this, SLOT(refresh())); |
|
|
|
connect(timer, SIGNAL(timeout()), this, SLOT(refresh())); |
|
|
|
refresh(); // Not waiting for the first refresh
|
|
|
|
refresh(); // don't wait for the first refresh
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void PairingQRWidget::refresh(){ |
|
|
|
void PairingQRWidget::refresh(){ |
|
|
@ -48,7 +48,7 @@ void PairingQRWidget::refresh(){ |
|
|
|
void PairingQRWidget::updateQrCode(QString text) { |
|
|
|
void PairingQRWidget::updateQrCode(QString text) { |
|
|
|
QrCode qr = QrCode::encodeText(text.toUtf8().data(), QrCode::Ecc::LOW); |
|
|
|
QrCode qr = QrCode::encodeText(text.toUtf8().data(), QrCode::Ecc::LOW); |
|
|
|
qint32 sz = qr.getSize(); |
|
|
|
qint32 sz = qr.getSize(); |
|
|
|
// We make the image larger so we can have a white border
|
|
|
|
// make the image larger so we can have a white border
|
|
|
|
QImage im(sz + 2, sz + 2, QImage::Format_RGB32); |
|
|
|
QImage im(sz + 2, sz + 2, QImage::Format_RGB32); |
|
|
|
QRgb black = qRgb(0, 0, 0); |
|
|
|
QRgb black = qRgb(0, 0, 0); |
|
|
|
QRgb white = qRgb(255, 255, 255); |
|
|
|
QRgb white = qRgb(255, 255, 255); |
|
|
@ -71,32 +71,39 @@ void PairingQRWidget::updateQrCode(QString text) { |
|
|
|
|
|
|
|
|
|
|
|
PrimeUserWidget::PrimeUserWidget(QWidget* parent) : QWidget(parent) { |
|
|
|
PrimeUserWidget::PrimeUserWidget(QWidget* parent) : QWidget(parent) { |
|
|
|
mainLayout = new QVBoxLayout; |
|
|
|
mainLayout = new QVBoxLayout; |
|
|
|
|
|
|
|
|
|
|
|
QLabel* commaPrime = new QLabel("COMMA PRIME"); |
|
|
|
QLabel* commaPrime = new QLabel("COMMA PRIME"); |
|
|
|
commaPrime->setStyleSheet(R"( |
|
|
|
mainLayout->addWidget(commaPrime, 0, Qt::AlignTop); |
|
|
|
font-size: 60px; |
|
|
|
|
|
|
|
)"); |
|
|
|
|
|
|
|
mainLayout->addWidget(commaPrime); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
username = new QLabel(""); |
|
|
|
username = new QLabel(); |
|
|
|
mainLayout->addWidget(username); |
|
|
|
mainLayout->addWidget(username, 0, Qt::AlignTop); |
|
|
|
|
|
|
|
|
|
|
|
mainLayout->addSpacing(200); |
|
|
|
mainLayout->addSpacing(100); |
|
|
|
|
|
|
|
|
|
|
|
QLabel* commaPoints = new QLabel("COMMA POINTS"); |
|
|
|
QLabel* commaPoints = new QLabel("COMMA POINTS"); |
|
|
|
commaPoints->setStyleSheet(R"( |
|
|
|
commaPoints->setStyleSheet(R"( |
|
|
|
font-size: 60px; |
|
|
|
|
|
|
|
color: #b8b8b8; |
|
|
|
color: #b8b8b8; |
|
|
|
)"); |
|
|
|
)"); |
|
|
|
mainLayout->addWidget(commaPoints); |
|
|
|
mainLayout->addWidget(commaPoints, 0, Qt::AlignTop); |
|
|
|
|
|
|
|
|
|
|
|
points = new QLabel(""); |
|
|
|
points = new QLabel(); |
|
|
|
mainLayout->addWidget(points); |
|
|
|
mainLayout->addWidget(points, 0, Qt::AlignTop); |
|
|
|
|
|
|
|
|
|
|
|
setLayout(mainLayout); |
|
|
|
setLayout(mainLayout); |
|
|
|
|
|
|
|
setStyleSheet(R"( |
|
|
|
|
|
|
|
QLabel { |
|
|
|
|
|
|
|
font-size: 60px; |
|
|
|
|
|
|
|
font-weight: 500; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
)"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// set up API requests
|
|
|
|
QString dongleId = QString::fromStdString(Params().get("DongleId")); |
|
|
|
QString dongleId = QString::fromStdString(Params().get("DongleId")); |
|
|
|
|
|
|
|
if (!dongleId.length()) { |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
QString url = "https://api.commadotai.com/v1/devices/" + dongleId + "/owner"; |
|
|
|
QString url = "https://api.commadotai.com/v1/devices/" + dongleId + "/owner"; |
|
|
|
RequestRepeater* repeater = new RequestRepeater(this, url, 6); |
|
|
|
RequestRepeater* repeater = new RequestRepeater(this, url, 6); |
|
|
|
|
|
|
|
|
|
|
|
QObject::connect(repeater, SIGNAL(receivedResponse(QString)), this, SLOT(replyFinished(QString))); |
|
|
|
QObject::connect(repeater, SIGNAL(receivedResponse(QString)), this, SLOT(replyFinished(QString))); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -106,12 +113,13 @@ void PrimeUserWidget::replyFinished(QString response) { |
|
|
|
qDebug() << "JSON Parse failed on getting username and points"; |
|
|
|
qDebug() << "JSON Parse failed on getting username and points"; |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
QJsonObject json = doc.object(); |
|
|
|
QJsonObject json = doc.object(); |
|
|
|
|
|
|
|
QString points_str = QString::number(json["points"].toInt()); |
|
|
|
QString username_str = json["username"].toString(); |
|
|
|
QString username_str = json["username"].toString(); |
|
|
|
if (username_str.length()) { |
|
|
|
if (username_str.length()) { |
|
|
|
username_str = "@" + username_str; |
|
|
|
username_str = "@" + username_str; |
|
|
|
} |
|
|
|
} |
|
|
|
QString points_str = QString::number(json["points"].toInt()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
username->setText(username_str); |
|
|
|
username->setText(username_str); |
|
|
|
points->setText(points_str); |
|
|
|
points->setText(points_str); |
|
|
@ -119,29 +127,23 @@ void PrimeUserWidget::replyFinished(QString response) { |
|
|
|
|
|
|
|
|
|
|
|
PrimeAdWidget::PrimeAdWidget(QWidget* parent) : QWidget(parent) { |
|
|
|
PrimeAdWidget::PrimeAdWidget(QWidget* parent) : QWidget(parent) { |
|
|
|
QVBoxLayout* vlayout = new QVBoxLayout; |
|
|
|
QVBoxLayout* vlayout = new QVBoxLayout; |
|
|
|
|
|
|
|
vlayout->setSpacing(15); |
|
|
|
|
|
|
|
|
|
|
|
QLabel* upgradeNow = new QLabel("Upgrade now"); |
|
|
|
vlayout->addWidget(new QLabel("Upgrade now"), 1, Qt::AlignTop); |
|
|
|
vlayout->addWidget(upgradeNow); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QLabel* description = new QLabel("Become a comma prime member in the comma app and get premium features!"); |
|
|
|
QLabel* description = new QLabel("Become a comma prime member in the comma connect app and get premium features!"); |
|
|
|
description->setStyleSheet(R"( |
|
|
|
description->setStyleSheet(R"( |
|
|
|
font-size: 50px; |
|
|
|
font-size: 50px; |
|
|
|
color: #b8b8b8; |
|
|
|
color: #b8b8b8; |
|
|
|
)"); |
|
|
|
)"); |
|
|
|
description->setWordWrap(true); |
|
|
|
description->setWordWrap(true); |
|
|
|
vlayout->addWidget(description); |
|
|
|
vlayout->addWidget(description, 2, Qt::AlignTop); |
|
|
|
|
|
|
|
|
|
|
|
vlayout->addSpacing(50); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QVector<QString> features = {"✓ REMOTE ACCESS", "✓ 14 DAYS OF STORAGE", "✓ DEVELOPER PERKS"}; |
|
|
|
QVector<QString> features = {"✓ REMOTE ACCESS", "✓ 14 DAYS OF STORAGE", "✓ DEVELOPER PERKS"}; |
|
|
|
for (auto featureContent : features) { |
|
|
|
for (auto &f: features) { |
|
|
|
QLabel* feature = new QLabel(featureContent); |
|
|
|
QLabel* feature = new QLabel(f); |
|
|
|
feature->setStyleSheet(R"( |
|
|
|
feature->setStyleSheet(R"(font-size: 40px;)"); |
|
|
|
font-size: 40px; |
|
|
|
vlayout->addWidget(feature, 0, Qt::AlignBottom); |
|
|
|
)"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vlayout->addWidget(feature); |
|
|
|
|
|
|
|
vlayout->addSpacing(15); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
setLayout(vlayout); |
|
|
|
setLayout(vlayout); |
|
|
@ -198,11 +200,11 @@ SetupWidget::SetupWidget(QWidget* parent) : QWidget(parent) { |
|
|
|
q->setLayout(qrLayout); |
|
|
|
q->setLayout(qrLayout); |
|
|
|
mainLayout->addWidget(q); |
|
|
|
mainLayout->addWidget(q); |
|
|
|
|
|
|
|
|
|
|
|
PrimeAdWidget* primeAd = new PrimeAdWidget; |
|
|
|
primeAd = new PrimeAdWidget; |
|
|
|
mainLayout->addWidget(primeAd); |
|
|
|
mainLayout->addWidget(primeAd); |
|
|
|
|
|
|
|
|
|
|
|
PrimeUserWidget* primeUserWidget = new PrimeUserWidget; |
|
|
|
primeUser = new PrimeUserWidget; |
|
|
|
mainLayout->addWidget(primeUserWidget); |
|
|
|
mainLayout->addWidget(primeUser); |
|
|
|
|
|
|
|
|
|
|
|
background->setLayout(mainLayout); |
|
|
|
background->setLayout(mainLayout); |
|
|
|
background->setStyleSheet(R"( |
|
|
|
background->setStyleSheet(R"( |
|
|
@ -212,7 +214,13 @@ SetupWidget::SetupWidget(QWidget* parent) : QWidget(parent) { |
|
|
|
} |
|
|
|
} |
|
|
|
)"); |
|
|
|
)"); |
|
|
|
backgroundLayout->addWidget(background); |
|
|
|
backgroundLayout->addWidget(background); |
|
|
|
|
|
|
|
|
|
|
|
setLayout(backgroundLayout); |
|
|
|
setLayout(backgroundLayout); |
|
|
|
|
|
|
|
setStyleSheet(R"( |
|
|
|
|
|
|
|
font-size: 90px; |
|
|
|
|
|
|
|
font-weight: bold; |
|
|
|
|
|
|
|
background-color: #292929; |
|
|
|
|
|
|
|
)"); |
|
|
|
|
|
|
|
|
|
|
|
QString dongleId = QString::fromStdString(Params().get("DongleId")); |
|
|
|
QString dongleId = QString::fromStdString(Params().get("DongleId")); |
|
|
|
QString url = "https://api.commadotai.com/v1.1/devices/" + dongleId + "/"; |
|
|
|
QString url = "https://api.commadotai.com/v1.1/devices/" + dongleId + "/"; |
|
|
@ -225,10 +233,6 @@ SetupWidget::SetupWidget(QWidget* parent) : QWidget(parent) { |
|
|
|
void SetupWidget::parseError(QString response) { |
|
|
|
void SetupWidget::parseError(QString response) { |
|
|
|
showQr = false; |
|
|
|
showQr = false; |
|
|
|
mainLayout->setCurrentIndex(0); |
|
|
|
mainLayout->setCurrentIndex(0); |
|
|
|
setStyleSheet(R"( |
|
|
|
|
|
|
|
font-size: 90px; |
|
|
|
|
|
|
|
background-color: #000000; |
|
|
|
|
|
|
|
)"); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void SetupWidget::showQrCode(){ |
|
|
|
void SetupWidget::showQrCode(){ |
|
|
@ -243,14 +247,6 @@ void SetupWidget::replyFinished(QString response) { |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (mainLayout->currentIndex() == 0) { // If we are still on the blank widget
|
|
|
|
|
|
|
|
setStyleSheet(R"( |
|
|
|
|
|
|
|
font-size: 90px; |
|
|
|
|
|
|
|
font-weight: bold; |
|
|
|
|
|
|
|
background-color: #292929; |
|
|
|
|
|
|
|
)"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QJsonObject json = doc.object(); |
|
|
|
QJsonObject json = doc.object(); |
|
|
|
bool is_paired = json["is_paired"].toBool(); |
|
|
|
bool is_paired = json["is_paired"].toBool(); |
|
|
|
bool is_prime = json["prime"].toBool(); |
|
|
|
bool is_prime = json["prime"].toBool(); |
|
|
@ -259,9 +255,9 @@ void SetupWidget::replyFinished(QString response) { |
|
|
|
mainLayout->setCurrentIndex(1 + showQr); |
|
|
|
mainLayout->setCurrentIndex(1 + showQr); |
|
|
|
} else if (is_paired && !is_prime) { |
|
|
|
} else if (is_paired && !is_prime) { |
|
|
|
showQr = false; |
|
|
|
showQr = false; |
|
|
|
mainLayout->setCurrentIndex(3); |
|
|
|
mainLayout->setCurrentWidget(primeAd); |
|
|
|
} else if (is_paired && is_prime) { |
|
|
|
} else if (is_paired && is_prime) { |
|
|
|
showQr = false; |
|
|
|
showQr = false; |
|
|
|
mainLayout->setCurrentIndex(4); |
|
|
|
mainLayout->setCurrentWidget(primeUser); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|