4
0
mirror of https://github.com/QuasarApp/QtAndroidTools.git synced 2025-05-01 23:19:33 +00:00

Changed the way Google account photo is showed

This commit is contained in:
FalsinSoft 2020-02-13 15:01:12 +01:00
parent 09e74c3559
commit fb68c3a3da
3 changed files with 16 additions and 37 deletions

@ -52,9 +52,7 @@ QObject* QAndroidGoogleAccount::qmlInstance(QQmlEngine *engine, QJSEngine *scrip
{
Q_UNUSED(scriptEngine)
QAndroidGoogleAccount *pAndroidGoogleAccount = new QAndroidGoogleAccount();
engine->addImageProvider("SignedInAccountPhoto", new AccountPhotoImageProvider(pAndroidGoogleAccount));
return pAndroidGoogleAccount;
return new QAndroidGoogleAccount();
}
QAndroidGoogleAccount* QAndroidGoogleAccount::instance()
@ -121,15 +119,19 @@ void QAndroidGoogleAccount::SetSignedInAccountInfo(const QAndroidJniObject &Acco
m_SignedInAccountInfo.FamilyName = AccountInfoObj.getObjectField<jstring>("familyName").toString();
m_SignedInAccountInfo.GivenName = AccountInfoObj.getObjectField<jstring>("givenName").toString();
m_SignedInAccountInfo.Photo.clear();
if(PhotoObj.isValid())
m_SignedInAccountPhoto = QPixmap::fromImage(AndroidBitmapToImage(PhotoObj));
else
m_SignedInAccountPhoto = QPixmap();
{
const QImage Photo = AndroidBitmapToImage(PhotoObj);
QBuffer PhotoBuffer(&m_SignedInAccountInfo.Photo);
PhotoBuffer.open(QIODevice::WriteOnly);
Photo.save(&PhotoBuffer, "PNG");
}
}
else
{
m_SignedInAccountInfo = QAndroidGoogleAccountInfo();
m_SignedInAccountPhoto = QPixmap();
}
emit signedInAccountInfoChanged();
@ -140,11 +142,6 @@ const QAndroidGoogleAccountInfo& QAndroidGoogleAccount::getSignedInAccountInfo()
return m_SignedInAccountInfo;
}
QPixmap QAndroidGoogleAccount::GetAccountPhoto() const
{
return m_SignedInAccountPhoto;
}
void QAndroidGoogleAccount::handleActivityResult(int receiverRequestCode, int resultCode, const QAndroidJniObject &data)
{
Q_UNUSED(resultCode)

@ -37,12 +37,14 @@ struct QAndroidGoogleAccountInfo
Q_PROPERTY(QString email MEMBER Email)
Q_PROPERTY(QString familyName MEMBER FamilyName)
Q_PROPERTY(QString givenName MEMBER GivenName)
Q_PROPERTY(QByteArray photo MEMBER Photo)
public:
QString Id;
QString DisplayName;
QString Email;
QString FamilyName;
QString GivenName;
QByteArray Photo;
};
Q_DECLARE_METATYPE(QAndroidGoogleAccountInfo)
@ -52,28 +54,6 @@ class QAndroidGoogleAccount : public QObject, public QAndroidActivityResultRecei
Q_DISABLE_COPY(QAndroidGoogleAccount)
Q_OBJECT
class AccountPhotoImageProvider : public QQuickImageProvider
{
public:
AccountPhotoImageProvider(QAndroidGoogleAccount *pAccount) : QQuickImageProvider(QQuickImageProvider::Pixmap), m_pAccount(pAccount) {}
QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize)
{
const QPixmap AccountPhoto = m_pAccount->GetAccountPhoto();
Q_UNUSED(id)
if(size) *size = AccountPhoto.size();
if(requestedSize.width() > 0 && requestedSize.height() > 0)
return AccountPhoto.scaled(requestedSize);
else
return AccountPhoto;
}
private:
const QAndroidGoogleAccount *const m_pAccount;
};
QAndroidGoogleAccount();
public:
@ -97,7 +77,6 @@ private:
static QAndroidGoogleAccount *m_pInstance;
const int m_SignInId = 9001;
QAndroidGoogleAccountInfo m_SignedInAccountInfo;
QPixmap m_SignedInAccountPhoto;
void handleActivityResult(int receiverRequestCode, int resultCode, const QAndroidJniObject &data) override;
@ -107,5 +86,4 @@ private:
void SetSignedInAccountInfo(const QAndroidJniObject &AccountInfoObj);
QImage AndroidBitmapToImage(const QAndroidJniObject &JniBmp);
QPixmap GetAccountPhoto() const;
};

@ -10,13 +10,17 @@ Page {
Connections {
target: QtAndroidGoogleAccount
onSignedInAccountChanged: accountPhoto.source = "image://SignedInAccountPhoto"
onSignedInAccountChanged: {
QtAndroidTools.insertImage("AccountPhoto", QtAndroidGoogleAccount.signedInAccount.photo);
accountPhoto.source = "image://QtAndroidTools/AccountPhoto";
}
onSignedIn: {
if(signInSuccessfully === true)
{
}
}
onSignedOut: {
QtAndroidTools.removeImage("AccountPhoto");
accountPhoto.source = "";
}
}