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:
parent
09e74c3559
commit
fb68c3a3da
QtAndroidTools
QtAndroidToolsDemo/tools
@ -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 = "";
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user