рдпрд╣ рдкреЛрд╕реНрдЯ "
рд╕реНрдорд╛рд░реНрдЯ рдлреЛрди рдлреЙрд░ рд╕реНрдорд╛рд░реНрдЯ рдкреЛрд╕реНрдЯ " рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддреА рд╣реИ
рдкрд░рд┐рдЪрдп
NFC рдХреНрдпрд╛ рд╣реИ?

рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░,
NFC (рдирд┐рдпрд░ рдлреАрд▓реНрдб рдХрдореНрдпреБрдирд┐рдХреЗрд╢рди) рдПрдХ рд▓рдШреБ-рд╢реНрд░реЗрдгреА рдХреА рд╡рд╛рдпрд░рд▓реЗрд╕ рдЙрдЪреНрдЪ-рдЖрд╡реГрддреНрддрд┐ рд╕рдВрдЪрд╛рд░ рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рд▓рдЧрднрдЧ 10 рд╕реЗрдВрдЯреАрдореАрдЯрд░ рдХреА рджреВрд░реА рдкрд░ рд╕реНрдерд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред
рдореЛрдмрд╛рдЗрд▓ рдлреЛрди рдореЗрдВ
рдПрдирдПрдлрд╕реА рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рддреАрди рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЙрдкрдпреЛрдЧ рд╣реИрдВ:
рдХрд╛рд░реНрдб рдЗрдореНрдпреВрд▓реЗрд╢рди - рдлреЛрди рдПрдХ рдХрд╛рд░реНрдб рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рд╕ рдпрд╛ рднреБрдЧрддрд╛рди рдХрд╛рд░реНрдб;
рд░реАрдбрд┐рдВрдЧ рдореЛрдб - рдлреЛрди рдПрдХ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЯреИрдЧ (рдЯреИрдЧ) рдкрдврд╝рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХреЗ рд▓рд┐рдП;
рдкреА 2 рдкреА рдореЛрдб - рджреЛ рдлреЛрди рд╕рдВрдЪрд╛рд░ рдФрд░ рд╕реВрдЪрдирд╛рдУрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдПрдХ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЯреИрдЧ рдкрдврд╝рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдкрдпреЛрдЧ рдХреА рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдпрд╣ рднреА рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЯреЗрд▓реАрдлреЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕ рддрд░рд╣ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреИрд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВ
рдХрд╣рд╛рдиреА рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ?
рдореИрдВ рди рдХреЗрд╡рд▓ рдПрдирдПрдлрд╕реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рдмрд▓реНрдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреАред рдпрд╣реА рд╣реИ, рдкрдврд╝рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рдЖрдк MeeGo рд╣рд░рдорд╛рддрди рдХреЗ рд▓рд┐рдП NFC рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡реЗрджрди рдкрддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░реЗрдВрдЧреЗред
рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛
рдЕрджреНрдпрддрди: рдЖрдЬ,
12/20/2011 , рдПрдХ рдкрддреНрд░ рдЖрдпрд╛ рдХрд┐
рдХреНрдпреВрдЯреА рд░рд╛рдЬрджреВрдд рдореЗрдВ рдЖрд╡реЗрджрди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
рдЕрджреНрдпрддрди: рдХрд▓ рд░рд╛рдд рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
рдХреНрдпреВрдЯреА рд░рд╛рдЬрджреВрдд рд╢реЛрдХреЗрд╕рдПрдирдПрдлрд╕реА рдЯреИрдЧ рдХреНрдпрд╛ рд╣реИ?
рдПрдирдПрдлрд╕реА рдЯреИрдЧ - рдпрд╣ рд╣рдорд╛рд░рд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЯреИрдЧ рд╣реИред рддрд╕реНрд╡реАрд░ рдпрд╣ рджрд┐рдЦрд╛рддреА рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдореЛрдЯреЗ рдХрд╛рдЧрдЬ рд╕реЗ рдмрдирд╛ рдПрдХ рд╕реНрдЯрд┐рдХрд░ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдЪрд┐рдк рдФрд░ рдкрдиреНрдиреА рдРрдиреНрдЯреЗрдирд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдПрдирдПрдлрд╕реА рдЯреИрдЧ рдХрдИ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХрддрдо рд╕реНрд╡реАрдХрд╛рд░реНрдп рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ рднреА рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдореИрдВ
Qt рдбреЗрд╡рд▓рдкрд░ рдбреЗрдЬрд╝ 2011 рд╕реЗ рд▓рд╛рдИ рдЧрдИ рдХрдИ рдЯрд╛рдЗрдк 2 рдЯреИрдЧреНрд╕, 192 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдорд╛рд▓рд┐рдХ рд╣реВрдВред рдЦреИрд░, 192 рдмрд╛рдЗрдЯ рдореЛрдЯреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рддрд░реНрдХ
рдЖрд╡реЗрджрди рдЕрд╡рд░реЛрдзрди рдПрдирдПрдлрд╕реА рдЯреИрдЧ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдирд╛
рдЗрд╕рд▓рд┐рдП, рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЯреИрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ
QNdefManager рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
NfcManager::NfcManager(QObject *parent) : QObject(parent), m_manager(new QNearFieldManager(this)), m_cachedTarget(0), m_mode(NfcManager::Read) { connect(m_manager, SIGNAL(targetDetected(QNearFieldTarget*)), this, SLOT(targetDetected(QNearFieldTarget*))); connect(m_manager, SIGNAL(targetLost(QNearFieldTarget*)), this, SLOT(targetLost(QNearFieldTarget*))); m_manager->setTargetAccessModes(QNearFieldManager::NdefReadTargetAccess | QNearFieldManager::NdefWriteTargetAccess); }
рдЖрдЗрдП рдЗрд╕реЗ рд╣рдорд╛рд░реЗ
NfcManager рд╡рд░реНрдЧ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ
рдмрдирд╛рдПрдВ , рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо NFC рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред рд╣рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк
рд╕реЗ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ
рдЯрд╛рд░рдЧреЗрдЯрдбреЗрдб рдФрд░
рдЯрд╛рд░рдЧреЗрдЯрд▓реЙрд╕реНрдЯ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд▓реЙрдЯреНрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдлреЛрди рдХреЗ рд╡рд┐рдЬрд╝рди рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЯреИрдЧ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛ рдХреЗ рдореБрдЦреНрдп рд╣реИрдВрдбрд▓рд░ рд╣реЛрдВрдЧреЗред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреА рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╣рдордиреЗ рд░реАрдб рдПрдВрдб рд░рд╛рдЗрдЯ рдореЛрдб рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдо рди рдХреЗрд╡рд▓ рдкрдврд╝ рд╕рдХреЗрдВ, рдмрд▓реНрдХрд┐ рдЯреИрдЧ рднреА рд▓рд┐рдЦ рд╕рдХреЗрдВред
рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░
рдЕрдм рд╡рд░реНрдгрд┐рдд рд╕реНрд▓реЙрдЯреНрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
void NfcManager::targetDetected(QNearFieldTarget *target) { if (m_cachedTarget) delete m_cachedTarget; m_cachedTarget = target; if (m_mode == Read) readTarget(m_cachedTarget); if (m_mode == Write) writeTarget(m_cachedTarget); }
рдЬрдм рдХреЛрдИ рдЯреИрдЧ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреЗрд╡рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдПрдХ рд╕реВрдЪрдХ рдХреЛ
QNearFieldTarget рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдкрд░
рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ , рдЬреЛ рдХрд┐ рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред
рдореЛрдб (рдкрдврд╝рдиреЗ рдпрд╛ рд▓рд┐рдЦрдиреЗ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рджреЛ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдЗрд╕реА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИрдВред рд╕реБрдВрджрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдРрд╕рд╛ рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдХреЛрдб рдХреЛ рдЬрдЯрд┐рд▓ рди рдХрд░реЗрдВред
void NfcManager::targetLost(QNearFieldTarget *target) { m_cachedTarget = 0; target->deleteLater(); }
рдЬрдм рдПрдХ рдЯреИрдЧ рдЦреЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдмрд╕ рдЙрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдкрдврд╝рдирд╛
рдЕрдм рдЖрдЗрдП рдЯреИрдЧ рдкрдврд╝рдиреЗ рдХреЗ рддрд░реАрдХреЗ рджреЗрдЦреЗрдВ:
void NfcManager::readTarget(QNearFieldTarget *target) { connect(target, SIGNAL(error(QNearFieldTarget::Error,QNearFieldTarget::RequestId)), this, SLOT(errorHandler(QNearFieldTarget::Error,QNearFieldTarget::RequestId))); connect(target, SIGNAL(ndefMessageRead(QNdefMessage)), this, SLOT(readRecords(QNdefMessage))); target->readNdefMessages(); }
рдкрдврд╝рдирд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдореЛрдб рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ, рд╣рдо рдмрд╕ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рд┐рдЧреНрдирд▓ рдФрд░ рд░реАрдб рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд┐рдирд╛ рд╣реБрдЖ рд╣реИред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдмрд╕ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВ:
void NfcManager::readRecords(const QNdefMessage &message) { if (message.isEmpty()) return; QNdefRecord record = message.at(0);
рдпрджрд┐ рдкрдврд╝рдирд╛ рд╕рдлрд▓ рд░рд╣рд╛, рддреЛ рд╣рдо рдЗрд╕ рд╕реНрд▓реЙрдЯ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдЬрд╣рд╛рдВ рд╣рдо рдЯреИрдЧ рдкрд░ рдореМрдЬреВрдж рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рдкрд╣рд▓рд╛ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред
рд╣рд╛рдВ, рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рдЯреИрдЧ рдореЗрдВ рдХрдИ рд░рд┐рдХреЙрд░реНрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╣рддрд╛ рд╣реИ,
рд╕рд┐рдореНрдмрд┐рдпрди рдФрд░
рд╣рд░рдорд╛рдЯрди рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдкрдврд╝рд╛ рдФрд░ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
void NfcManager::readRecord(const QtMobility::QNdefRecord &record) { DataContainer *result = 0; if (record.isRecordType<QNdefNfcUriRecord>()) { QNdefNfcUriRecord uriRecord(record); result = new UriDataContainer(uriRecord.payload(), uriRecord.uri().toString()); } else if (record.isRecordType<QNdefNfcTextRecord>()) { QNdefNfcTextRecord textRecord(record); result = new TextDataContainer(textRecord.payload(), textRecord.text()); } else if (record.isRecordType<NdefNfcSmartPosterRecord>()) { NdefNfcSmartPosterRecord smartPosterRecord(record); result = new SmartPosterDataContainer(smartPosterRecord.payload(), smartPosterRecord.uri().toString(), smartPosterRecord.title()); } else { result = new DataContainer(record.payload()); } emit tagReadFinished(result); }
рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╕рд╣рд╛рдпрдХ рддрд░реАрдХреЛрдВ рдкрд░ рдХрдИ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдорд┐рд▓ рдЧрдП, рдЬреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рдЪрд┐рдд рдкрддреНрд░реЛрдВ рдореЗрдВ рдЯреИрдЧ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред
рдлрд┐рд▓рд╣рд╛рд▓,
Qt рдореЛрдмрд┐рд▓рд┐рдЯреА рдЖрдЙрдЯ рдСрдлрд╝ рдж рдмреЙрдХреНрд╕ рдХреЗрд╡рд▓ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: рд▓рд┐рдВрдХ (
рдЙрд░реА ) рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ (
рдЯреЗрдХреНрд╕реНрдЯ ), рд╣рдо рддреАрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗ - рдиреАрдЪреЗ
рд╕реНрдорд╛рд░реНрдЯ рдкреЛрд╕реНрдЯрд░ ред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд░рд┐рдХреЙрд░реНрдб рд╕реЗ рдбреЗрдЯрд╛ рддреБрд░рдВрдд рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдпреЗ рд╕рд░рд▓ рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ рдЬреЛ рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ
рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рд╣реИрдВ
рдЕрдВрдд рдореЗрдВ, рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдпреБрдХреНрдд рдПрдХ рд╕рд┐рдЧреНрдирд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо QML рдореЗрдВ рдЗрд╕ рд╕рдВрдХреЗрдд рдХреЛ рдкрдХрдбрд╝ рд▓реЗрдВрдЧреЗред
рдЕрднрд┐рд▓реЗрдЦ
void NfcManager::setDataForWrite(const QString &text, const QString &uri) { m_textForWrite = text; m_uriForWrite = uri; }
рдирдП рдЙрд░реА рдФрд░ / рдпрд╛ рдкрд╛рда рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЯреИрдЧ рдкрд░ рдирд╣реАрдВ рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рдкрд┐рдЫрд▓рд╛ рдбреЗрдЯрд╛ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЙрдкрдпреЛрдЧреА рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯреИрдЧ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)
void NfcManager::writeTarget(QNearFieldTarget *target) { if (m_textForWrite.isEmpty() && m_uriForWrite.isEmpty()) return; m_cachedTarget = target; QNdefMessage message; if (!m_textForWrite.isEmpty() && !m_uriForWrite.isEmpty()) { NdefNfcSmartPosterRecord smartPosterRecord; smartPosterRecord.setTitle(m_textForWrite); smartPosterRecord.setUri(QUrl(m_uriForWrite)); message.append(smartPosterRecord); } else if (!m_textForWrite.isEmpty()) { QNdefNfcTextRecord textRecord; textRecord.setText(m_textForWrite); message.append(textRecord); } else { QNdefNfcUriRecord uriRecord; uriRecord.setUri(QUrl(m_uriForWrite)); message.append(uriRecord); } connect(target, SIGNAL(error(QNearFieldTarget::Error,QNearFieldTarget::RequestId)), this, SLOT(errorHandler(QNearFieldTarget::Error,QNearFieldTarget::RequestId))); connect(target, SIGNAL(ndefMessagesWritten()), this, SIGNAL(tagWriteFinished())); target->writeNdefMessages(QList<QNdefMessage>() << message); }
рдореБрдЦреНрдп рд▓реЗрдЦрди рд╡рд┐рдзрд┐ рдкрдврд╝рдиреЗ рдХреА рд╡рд┐рдзрд┐ рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдХрдВрдбреАрд╢рди рдмреНрд▓реЙрдХ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЗрд╡рд▓ рдЙрдбрд╝реА рдпрд╛ рдкрд╛рда рдореМрдЬреВрдж рд╣реИ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдпрджрд┐ рджреЛрдиреЛрдВ рдлрд╝реАрд▓реНрдб рднрд░реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдкреЛрд╕реНрдЯрд░ рдкреНрд░рдХрд╛рд░ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди, рдзреНрдпрд╛рди рджреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдмреИрдХрдПрдВрдб рдореЗрдВ рд╣рдореЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рд╕рдлрд▓ рд╕рдорд╛рдкрди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдо рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдмрд╛рдж рдореЗрдВ рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рдкрдХрдбрд╝ рд▓реЗрдВрдЧреЗред
рд╕реНрдорд╛рд░реНрдЯ рдкреЛрд╕реНрдЯрд░, рдпрд╣ рдХреНрдпрд╛ рд╣реИ?
рддреЛ, рд╕реНрдорд╛рд░реНрдЯ рдкреЛрд╕реНрдЯрд░ рдПрдирдПрдлрд╕реА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ, рдПрдХ рдкрд╛рда рд╢реАрд░реНрд╖рдХ (рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ),
рдЬреЗрдкреАрдИрдЬреА рдпрд╛
рдкреАрдПрдирдЬреА рдкреНрд░рд╛рд░реВрдкреЛрдВ рдореЗрдВ рдЧреНрд░рд╛рдлрд┐рдХ рдЖрдЗрдХрди рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдордкреАрдИрдЬреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдПрдирд┐рдореЗрдЯреЗрдб рдЖрдЗрдХрди рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреЛ рдФрд░ рдХреНрд╖реЗрддреНрд░ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
рдПрдХреНрд╢рди - рдлреЛрди рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдХреИрд╕реЗ рдпреВрд░рд┐рдпрд╛рдХрд╛рд░реНрдб рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдирд╛ рд╣реИ
рдЖрдХрд╛рд░ - рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреВрд░реНрдгрд╛рдВрдХ рд╕рдВрдЦреНрдпрд╛ рдЬреЛ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЖрдХрд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╣рдо рд╕реНрдорд╛рд░реНрдЯ рдкреЛрд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
рдиреАрдЪреЗ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рд╕реНрдорд╛рд░реНрдЯ рдкреЛрд╕реНрдЯрд░ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛
рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛
рдПрдирдбреАрдИрдПрдл рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рдХрд╛рд░ рдХреИрд╕реЗ рдмрдирд╛рдПрдВред
рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдореЗрд░рд╛ рдкреНрд░рдХрд╛рд░ рд╕рд░рд▓ рд╣реИред рдпрд╣ рдПрдХреНрд╢рди, рд╕рд╛рдЗрдЬрд╝, рдпрд╛ рдпрд╣рд╛рдБ рддрдХ рдХрд┐ рдорд╛рдЙрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдФрд░ рд▓рд┐рдВрдХ рдХреЛ рдПрдХ рд╕рд╛рде рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдорд╛рд░реЗ рд╕реНрдорд╛рд░реНрдЯ рдкреЛрд╕реНрдЯрд░ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдШреЛрд╖рдгрд╛ рдХреА рдЧрдИ рд╣реИ:
class NdefNfcSmartPosterRecord : public QNdefRecord { public: Q_DECLARE_NDEF_RECORD(NdefNfcSmartPosterRecord, QNdefRecord::NfcRtd, "Sp", QByteArray()) void setTitle(const QString &title, const QString &locale = "en"); void setUri(const QUrl &uri); QString title(const QString &locale = "en") const; QUrl uri() const;
рддреЛ, рдХреНрдпреВрдЯреА рдореЛрдмрд┐рд▓рд┐рдЯреА рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬреАрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рджреЛ рд╡рд┐рд╢реЗрд╖ рдореИрдХреНрд░реЛрдЬрд╝ рдмрдирд╛рдП рд╣реИрдВ рдЬреЛ рд╕рднреА рдХрдард┐рди рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдореИрдХреНрд░реЛ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ: рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо, рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рдХрд╛рд░ (рд╕реНрдорд╛рд░реНрдЯ рдкреЛрд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдпрд╣
QNdefRecord :: NfcRtd ) рдФрд░ "рдЯрд╛рдЗрдк рдирд╛рдо" рд╣реИ - рдПрдХ рдЯреИрдЧ рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдоред рдФрд░
Q_DECLARE_NDEF_RECORD рдореЗрдВ рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдХ рдЦрд╛рд▓реА рдмрд╛рдЗрдЯ рд╕рд░рдгреА рд╣реИред
рдЕрдм рдЪрд▓реЛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦреЗрдВред
рд░рд┐рдХреЙрд░реНрдб рдХреЗ рднрд╛рдЧ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рд╕рдВрд░рдЪрдирд╛:
struct RecordPart { enum Type { Uri, Text, Action, Icon, Size, Unknown }; Type type; QString text; QString locale;
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрдврд╝рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
static const char * const abbreviations[] = { 0, "http://www.", "https://www.", "http://",
рдпреБрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╡рд┐рднрд┐рдиреНрди
рдЙрд░реБ рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреАред
QUrl NdefNfcSmartPosterRecord::uri() const { const QByteArray p = payload(); if (p.isEmpty()) return QUrl(); if (p.isEmpty()) return QString(); int offset = 0; QString uri; while (offset < p.size()) { RecordPart part = readPart(offset); if (part.type == RecordPart::Uri) { if (part.prefix > 0 && part.prefix < (sizeof(abbreviations) / sizeof(*abbreviations))) uri = QString(abbreviations[part.prefix]) + part.text; } } if (uri.isEmpty()) return QUrl(); return QUrl(uri); }
рдпреВрд░реА рд░реАрдбрд┐рдВрдЧ рд╡рд┐рдзрд┐ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рд╣рдо
рдкреА рд╕реЗ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рд░рд┐рдХреЙрд░реНрдб рд╕реЗ рдкрдврд╝реЗ рдЧрдП рд╕рднреА рдмрд╛рдЗрдЯреНрд╕, рдФрд░ рдлрд┐рд░ рд╕рд░рдгреА рдореЗрдВ рднрд╛рдЧреЛрдВ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдЙрд░реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рдвреВрдВрдврддреЗ (рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рджреНрд╡рд╛рд░рд╛, рд╡рд╣рд╛рдБ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)
"рдореИрдЬрд┐рдХ"
рд░реАрдбрдкрд╛рд░реНрдЯ рд╡рд┐рдзрд┐
рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
QString NdefNfcSmartPosterRecord::title(const QString &locale) const { const QByteArray p = payload(); if (p.isEmpty()) return QString(); int offset = 0; QMap<QString, QString> title; while (offset < p.size()) { RecordPart part = readPart(offset); if (part.type == RecordPart::Text) { title.insert(part.locale, part.text); } } if (title.isEmpty()) return QString(); if (title.contains(locale)) return title.value(locale); if (title.contains("en")) return title.value("en"); return title.constBegin().value(); }
рд╢реАрд░реНрд╖рдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдЗрд╕ рдорд╛рдпрдиреЗ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрдИ рд╢реАрд░реНрд╖рдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ рдЙрди рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╕рд╣реА рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
рд╕рднреА рдЬрд╛рджреВ рд░реАрдбрдкрд╛рд░реНрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдВрддрд░рд┐рдХ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ
рдпреЛрдЧреНрдп рд░рд┐рдХреЙрд░реНрдбрдкрд╛рд░реНрдЯ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ
рдмрджрд▓ рджреЗрддрд╛ рд╣реИ
RecordPart NdefNfcSmartPosterRecord::readPart(int &offset) const { RecordPart result; const QByteArray p = payload(); .....
рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХреЗ рд╢реАрд░реНрд╖рдХ рдореЗрдВ рдирд┐рдореНрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
1 рдмрд╛рдЗрдЯ, рддрдХрдиреАрдХреА рдЭрдВрдбреЗ, рд╣рдорд╛рд░реЗ рд╕рд░рд▓реАрдХреГрдд рд╡рд░реНрдЧ рдореЗрдВ, рд╣рдо рдЕрдЦрдВрдбрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЖрджрд┐, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рдмрд╛рдЗрдЯ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ;
2 рдмрд╛рдЗрдЯреНрд╕, "рдЯрд╛рдЗрдк рдирд╛рдо" рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ;
3 рдмрд╛рдЗрдЯреНрд╕, рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдХреНрд╖реЗрддреНрд░
рдХреА рд▓рдВрдмрд╛рдИ;
4-рдПрди рдмрд╛рдЗрдЯреНрд╕, "рдЯрд╛рдЗрдк рдиреЗрдо" рдХреЗ рд╕рд╛рде
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ - рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рдкрд╛рда рдХреЗ рд▓рд┐рдП рдпрд╣ 'рдЯреА' рд╣реИ, рдЙрд░реА рдХреЗ рд▓рд┐рдП рдпрд╣ 'рдпреВ' рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж рдореБрдЦреНрдп рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдЖрддрд╛ рд╣реИред
рдЙрд░реА рдХреЗ рд▓рд┐рдП, рдпреЗ рд╕рд┐рд░реНрдл рджреЛ рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ
рдЙрдкрд░реНрдпреБрдХреНрдд рд╕рд░рдгреА рд╕реЗ 1 рдмрд╛рдЗрдЯ рдкреНрд░рддрд┐ рд▓рд┐рдВрдХ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рд▓рд┐рдВрдХ рдмреЙрдбреА рдХреЗ рд▓рд┐рдПред
рдкрд╛рда рдХреЗ рд▓рд┐рдП, рдпреЗ рддреАрди рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ:
1 рдмрд╛рдЗрдЯ рд╕реНрдерд┐рддрд┐ рдХреНрд╖реЗрддреНрд░, рдЬрд┐рд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЭрдВрдбреЗ рдФрд░ рд╕реНрдерд╛рди рдХреА рд▓рдВрдмрд╛рдИ рд╣реЛрддреА рд╣реИред
рд▓реЛрдХреЗрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдЬреИрд╕реЗ "
рдПрди " рдпрд╛ "
рдЖрд░рдпреВ-рдЖрд░рдпреВ "
рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд╛рда рд╣реАред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рдЧреИрд░-рд╕реНрдерд┐рд░ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдСрдлрд╕реЗрдЯ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреА рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдореЗрдВ рд▓реВрдк рдореЗрдВ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред
рдЕрдм рд╣рдо рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓
рд╕реЗрдЯрдпреВрд░реА рдкрд░ рд╡рд┐рдЪрд╛рд░
рдХрд░рддреЗ рд╣реИрдВ ред рд╢реАрд░реНрд╖рдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рдорд╛рди рд╣реИред
void NdefNfcSmartPosterRecord::setUri(const QUrl &uri) {
рд╕реНрдерд╛рдкрдирд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЙрд╕ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрдм рд╕реНрдорд╛рд░реНрдЯ рдкреЛрд╕реНрдЯрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд╛рда) рдХрд╛ рдХреБрдЫ рд╣рд┐рд╕реНрд╕рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдФрд░ рдЕрдм рдЖрдкрдХреЛ рдЙрд░реА рдХреЛ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдкреЗрд▓реЛрдб рдХреЛ рдмрдЪрд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рдирдпрд╛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ
QByteArray рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реА рдмрд╛рдЗрдЯреНрд╕ рдЦреЗрд▓рдиреЗ рдореЗрдВ рдЖрддреА рд╣реИрдВ, рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ рдЬреЛрдбрд╝рддреЗ
рд╕рдордп рдкрд╣рд▓реЗ рднрд╛рдЧ (
рдПрдордмреА ) рдХреЗ рдЭрдВрдбреЗ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреЛрдб рдХреА рдпрд╣ рд▓рд╛рдЗрди рдРрд╕рд╛ рдХрд░рддреА рд╣реИ:
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдкреБрд░рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдирдпрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдмрд╛рдж рдореЗрдВ рдирд╣реАрдВред рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╣рдордиреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдХреЗ рдзреНрд╡рдЬ рдФрд░ рдЙрд╕рдХреЗ рд╕рдВрд╢реЛрдзрди (
рдПрдордИ ) рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдкреБрд░рд╛рдиреЗ рдкреЗрд▓реЛрдб рдХреЗ рдЖрд╕рдкрд╛рд╕ рджреМрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рд╕рдм рд╕реНрдорд╛рд░реНрдЯ рдкреЛрд╕реНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдирдПрдлрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕
рдкреЗрдЬ рдФрд░ рдкреЗрдЬрд╕реНрдЯреИрдХ
рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдХрддрд╛рд░ рдореЗрдВ рд╕реНрдХреНрд░реАрди рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реИред рдХреНрдпреВрдЯреА рдШрдЯрдХреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рд╕реНрдХреНрд░реАрди рдХреЛ рдкреГрд╖реНрда рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдореБрдЦреНрдп рдХрдВрдЯреЗрдирд░ рдПрдХ рдЦрд┐рдбрд╝рдХреА рд╣реИред
import QtQuick 1.1 import com.nokia.meego 1.0 PageStackWindow { id: appWindow initialPage: mainPage MainPage { id: mainPage } }
main.qml рдпрд╣рд╛рдВ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╡рд┐рдВрдбреЛ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреГрд╖реНрда рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдЦреНрдп рдкреГрд╖реНрда рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
Page { id: mainPage ..... Header { id: header anchors { top: parent.top right: parent.right left: parent.left } } .....
рдпрд╣ рдкреГрд╖реНрда рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИред рд╡реИрд╕реЗ, рдпрджрд┐ рдЖрдкрдиреЗ рдЧреМрд░ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдиреЛрдХрд┐рдпрд╛ рдХреЗ рд╕рднреА рдорд╛рдирдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрдХ рд╕реНрд╡рдЪреНрдЫ рд░рдВрдЧ рд╣реЗрдбрд░ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╣реЗрдбрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорд╛рдирдХ рдШрдЯрдХ рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╡реЗ рдЕрдкрдиреЗ
рдпреВрдЖрдИ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдкреГрд╖реНрдареЛрдВ рдХреЗ рдмреАрдЪ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдкреЗрдЬрд╕реНрдЯреИрдХ рдХреЗ рдкреНрд░рдХрд╛рд░
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ; рдХрд┐рд╕реА рднреА рдкреГрд╖реНрда рдореЗрдВ
рдкреЗрдЬрд╕реНрдЯреИрдХ рдирд╛рдордХ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ
рд╣реЛрддрд╛ рд╣реИ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдирдП рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
pageStack.push(Qt.resolvedUrl("NewPage.qml"))
рдФрд░ рдкрд┐рдЫрд▓реЗ рдПрдХ рдкрд░ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП:
pageStack.pop()
рд╡реИрд╕реЗ, рдпрджрд┐ рдЖрдк рдкреЙрдк рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреГрд╖реНрда рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рди рдХреЗрд╡рд▓ рдкреГрд╖реНрда рдкрд░ рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╕реНрдЯреИрдХ рдкрд░ рдХрд┐рд╕реА рднреА рдордирдорд╛рдиреЗ рддрд░реАрдХреЗ рд╕реЗ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
ListView

рдореБрдЦреНрдп рд╕реНрдХреНрд░реАрди рдкрд░, рд╣рдо рдЙрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рд╕рдорд╛рди рд╕реВрдЪреА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рддреА рд╣реИ:
ListView { id: actionList .... delegate: ListDelegate { anchors { left : parent.left leftMargin: 20 } onClicked: { pageStack.push(Qt.resolvedUrl(model.source)) } MoreIndicator { anchors { verticalCenter: parent.verticalCenter right: parent.right rightMargin: 30 } } } model: ListModel { ListElement { title: "Read Tag" subtitle: "" source: "ReadPage.qml" } ...... } }
ListView рддрддреНрд╡ рд╕реНрд╡рдпрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реВрдЪреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдкреНрд░рдореБрдЦ рдЧреБрдг рд╣реИрдВред
рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдПрдХ рд╕реВрдЪреА рдЖрдЗрдЯрдо рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИ рдФрд░
рдореЙрдбрд▓ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдореЙрдбрд▓ рд╣реИред
Com.nokia.extras рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░
рд▓рд┐рд╕реНрдЯрдбреЗрд▓реЗрдЧреЗрдЯ рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реИред
ListModel рддрддреНрд╡ рдЖрдкрдХреЛ рдПрдХ рд╕рд░рд▓ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдФрд░
ListElement рдЗрд╕ рдореЙрдбрд▓ рдХрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рд╣реИред
рдЯреВрд▓рдмрд╛рд░

рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде
рдЯреВрд▓рдмрд╛рд░ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдореЗрд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░рд▓ рд╣реИ рдФрд░ рдЖрдВрддрд░рд┐рдХ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдЯреВрд▓рдмрд╛рд░ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрдЯрди рд╣реИ
Page { id: readPage ..... tools: ToolBarLayout { ToolIcon { iconId: "toolbar-back" onClicked: { pageStack.pop() } } } .....
рдЯреВрд▓рдмрд╛рд░ рдХреЛ рдкреЗрдЬ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ
рдЯреВрд▓ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ
рд╢реВрдиреНрдп рд╣реИрд▓реЗрдмрд▓ рдФрд░ TextField

рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк
рд▓реЗрдмрд▓ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рдПрдХ рдорд╛рдирдХ
рдкрд╛рда рддрддреНрд╡ рдкрд░ рдПрдХ рд╢реИрд▓реАрдЧрдд рдЖрд╡рд░рдг рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред
Label { id: touchLabel ..... font.pixelSize: 60 text: qsTr("Touch a tag") }

рдФрд░ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ
TextField рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╣ рдорд╛рдирдХ
TextInput рдкрд░ рдПрдХ рдЙрдиреНрдирдд рдЖрд╡рд░рдг рд╣реИ
TextField { id: textEdit ..... placeholderText: qsTr("Text") text: "yandex" }
InfoBanner

рдпрджрд┐ рдЯреИрдЧ рдкрдврд╝рддреЗ / рд▓рд┐рдЦрддреЗ рд╕рдордп рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд╝реЛрди рдкрд░ рдЯреИрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдк InfoBanner рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
InfoBanner{ id: errorBanner timerEnabled: true timerShowTime: 3 * 1000 topMargin: header.height + 20 leftMargin: 20 }
рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛
рд╣рдордиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рднреА рдореБрдЦреНрдп рдХреНрдпреВрдПрдордПрд▓ рдШрдЯрдХреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬреЛ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рддрд░реНрдХ рднреАред рджреЛрдиреЛрдВ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред
setContextProperty
рд╣рдорд╛рд░реЗ рдХреНрдпреВрдПрдордПрд▓ рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЬрди рдХреЛ рдЗрд╕ рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП main.cpp рдореЗрдВ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
NfcManager *nfcManager = new NfcManager(); viewer->rootContext()->setContextProperty("NfcManager", nfcManager);
рдпрд╣реА рд╣реИ, рд╣рдо рдПрдХ NfcManager рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдЗрдВрдЬрди рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ QML рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡реИрд╕реЗ, рдирд╡реАрдирддрдо
QtSDK рдЕрдкрдбреЗрдЯ рдореЗрдВ рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛, рдФрд░ рдЗрд╕ рдХреЛрдб рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рдмрдЧрдЯреНрд░реИрдХрд░ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
qmlRegisterType
рдЬреИрд╕рд╛ рдХрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╛рдж рд░рдЦреЗрдВ, рд▓реЗрдмрд▓ рдкрдврд╝реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ QML рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ QML рдореЗрдВ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдХрдХреНрд╖рд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
qmlRegisterType<DataContainer>(); qmlRegisterType<UriDataContainer>(); qmlRegisterType<TextDataContainer>(); qmlRegisterType<SmartPosterDataContainer>();
рдЗрд╕ рдХреЛрдб рдХреЛ
main.cpp рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреНрд▓рд╛рд╕реЗрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рд╕реАрдзреЗ QML рд╕реЗ рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рд░реЛрдХ рд▓рдЧрд╛рддреЗ рд╣реИрдВред
рдмрд╛рддрдЪреАрдд
рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдЯреИрдЧ рдХреЛ рд▓рд┐рдЦрдиреЗ рдпрд╛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдкрд░ рдЙрддрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП function tagWasRead(container) { NfcManager.stopDetection() readPage.dataContainer = container pageStack.push(Qt.resolvedUrl("ReadResultPage.qml"), {dataContainer: readPage.dataContainer}) } function readError(string) { errorBanner.text = string errorBanner.show() } Component.onCompleted: { NfcManager.tagReadFinished.connect(readPage.tagWasRead) NfcManager.accessError.connect(readPage.readError) NfcManager.setReadMode() NfcManager.startDetection() }
рдЬрдм рдкреЗрдЬ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрди рдЬрд╛рддрд╛ рд╣реИ рддреЛ
Component.onCompleted рдореЗрдердб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ, рд╣рдо NfcManager рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд╕рдлрд▓ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╣реБрдХ рдХрд░рддреЗ рд╣реИрдВ (рдХреНрдпреВрдПрдордПрд▓ рд╕реНрд▓реЙрдЯ рдореЗрдВ C ++ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдиреЛрдЯ рдХрд░реЗрдВ)
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рд░реАрдбрд┐рдВрдЧ рдореЛрдб рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдореИрдиреЗрдЬрд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдЯреИрдЧ рдХреЗ рд╕рдВрд▓рдЧреНрди рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдкреБрд╢ рдХреЙрд▓ рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗрдВ
pageStack.push(Qt.resolvedUrl("ReadResultPage.qml"), {dataContainer: readPage.dataContainer})
рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣рдореЗрдВ рдбреЗрдЯрд╛ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЕрдЧрд▓реЗ рдкреГрд╖реНрда рдкрд░ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдмрд╕ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ

рдЙрджрд╛рд╣рд░рдг:
..... Label { id: rawDataLabel width: parent.width font.pixelSize: 30 font.family: "Courier New" text: readPage.dataContainer.rawHexData() wrapMode: Text.WrapAnywhere } .....
рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП function tagWasWritten() { ..... } function writeError(string) { ..... } Component.onCompleted: { NfcManager.tagWriteFinished.connect(writePage.tagWasWritten) NfcManager.accessError.connect(writePage.writeError) NfcManager.setWriteMode() NfcManager.setDataForWrite(writePage.text, writePage.uri) NfcManager.startDetection() }
рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИ, рд╣реИ рдирд╛? рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░
рд╕реЗрдЯрдбреЗрдЯрд╛рдлрд╝реЛрд░рд╛рдЗрдЯ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рд╣реИ, рдЬреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ MeeGo рд╣рд░рд╛рдордЯрди рдордВрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЖрд╡реЗрджрди рдорд┐рд▓рд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдЖрдк рдЗрд╕реЗ рд╕рд┐рдореНрдмрд┐рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдХреБрдЫ рд╕рд┐рдореНрдмрд┐рдпрди рдлреЛрди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
C7 ) рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд NFC рдЪрд┐рдк рднреА рд╣реИред
рдореИрдВ рдпрд╣ рднреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдирдПрдлрд╕реА рдЯреИрдЧ рдкрд░ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдк рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдФрд░ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рдкрдврд╝рдирд╛ рд╣реИ?
рдпрджрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдПрдирдПрдлрд╕реА рдФрд░ рдПрдирдбреАрдИрдПрдл рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░реЗрдВред рд╡реЗ
рдЗрд╕ рдкреГрд╖реНрда рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдореБрдлреНрдд рдорд╛рдВрдЧ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
Qt Connectivity рдкреНрд░рд▓реЗрдЦрди QtSDK рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ QNdefRecord рдкреНрд░рд╛рд░реВрдк рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк Qt рдЧрддрд┐рд╢реАрд▓рддрд╛ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ - рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рд╡рд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИрдВред
MeeGo Qt Components рдХреЗ рдЕрдиреБрд╕рд╛рд░
, QtSDK рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рднреА рд╕рд╣-рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк
рдпрд╣рд╛рдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ
рдХреНрдпреВрдЯреА-рдШрдЯрдХ-рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдкрдврд╝ рд╕рдХрддреЗ
рд╣реИрдВ ред
рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА
рдореИрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рд╕рдВрднрд╡рдд: рдПрдирдПрдлрд╕реА рдЯреИрдЧ рдкрд░ рдЕрдВрддрд┐рдо рдкреЛрд╕реНрдЯ рдирд╣реАрдВ рд╣реИред
рдЕрдкрдбреЗрдЯ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ
рдЧреАрдЯреЛрд░рд┐рдпрд╕ рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
рдпрд╛ рдореЗрд░реЗ рдмреНрд▓реЙрдЧ рдХреЛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░реЗрдВ, рдЬрд┐рд╕рдХрд╛ рд▓рд┐рдВрдХ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдореЗрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдореИрдВ
рдиреЛрдХрд┐рдпрд╛ рд╕реНрдЯреЛрд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рд▓рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд╣рд╛рдВ рджреЗрдЦреЗрдВред
рдЕрдм рдпрд╣рд╛рдВ рдбрд┐рдм рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдзрдиреНрдпрд╡рд╛рдж
рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдЯрд╛рдЗрдкреЛрд╕ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦ рдХреЗ рдкреНрд░реВрдлрд░реАрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реВрдВ:
dreary_eyes рдФрд░
tass ред