Vreen vk.api рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ


рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП vk api рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ Qt рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдХрд┐ рдХрд┐рд╕реА рднреА рдбреЗрд╕реНрдХрдЯреЙрдк рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ vk рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ qutIM рдХреЗ рд▓рд┐рдП vkontakte рдкреНрд▓рдЧрдЗрди рд╕реЗ рдкреИрджрд╛ рд╣реБрдИ рдереА рдФрд░ рдПрдХ рдЕрд▓рдЧ рд╕реНрд╡рддрдВрддреНрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдИ, рдЬрд┐рд╕реЗ рдЕрдм рд╣рд░ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред


рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдореАрдХреНрд╖рд╛



Vreen, vk.com api рдХреЗ рдКрдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИ, рдЬрд┐рд╕реЗ C ++ 11 / Qt рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдореЛрдмрд╛рдЗрд▓ рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдореМрдЬреВрджрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ vk.com рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рднреА рдХрд░рддрд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрдИ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ vreen рдореЗрдВ qml рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ C ++ рдореЗрдВ рдПрдХ рднреА рд▓рд╛рдЗрди рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рднреА рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд┐рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:

  1. рд╕рдореВрд╣ рдЪреИрдЯ рд╕рд╣рд┐рдд рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред
  2. рд╕рдорд╛рдЪрд╛рд░ рдлрд╝реАрдб, рджреАрд╡рд╛рд░реЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред
  3. рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ, рдкрд╕рдВрдж рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯ рд╕рд╣рд┐рдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред
  4. рдЕрдиреБрд▓рдЧреНрдирдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред
  5. рд░реЛрд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рд▓реЗрдХреНрдпреВрдЯрд░реНрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред
  6. рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред
  7. рдХрдИ XHTTPRequest рдкрд░рд┐рдЪрд┐рдд рд╢реИрд▓реА рдореЗрдВ рд╕реАрдзреЗ qml рд╕реЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред
  8. рддрд╛рдирд╛рдирд╛ред
  9. LGPL рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЖрдкрдХреЛ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


рдореВрд▓ рдмрд╛рддреЗрдВ:

рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХрдХреНрд╖рд╛рдПрдВ:

рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛:
рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрдиреБрд░реЛрдз:
QVariantMap args; args.insert("uids", join(ids)); args.insert("fields", fields.join(",")); auto reply = d->client->request("users.get", args); reply->connect(reply, SIGNAL(resultReady(const QVariant&)), this, SLOT(_q_friends_received(const QVariant&))); 

рдкрд░рд┐рдгрд╛рдореА рд╕рдВрдХреЗрдд рддрдм рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЕрдиреБрд░реЛрдз рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ QVariant json рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдЙрддреНрддрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ-> рддреНрд░реБрдЯрд┐ ()
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЫрд┐рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЙрддреНрддрд░-> () рд╡рд┐рдзрд┐ рд╕реЗ рдХреЙрд▓ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдо QVariant рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ QVariant рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ :: fromValueред
  QVariantMap args; //TODO add chat messages support and contact check args.insert("uid", message.toId()); args.insert("message", message.body()); args.insert("title", message.subject()); return request ("messages.send", args, [](const QVariant &response) -> QVariant { return response.toInt(); }); 

рджрд┐рдП рдЧрдП рдорд╛рди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЬрд╛рджреВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
  typedef ReplyBase<int> SendMessageReply; QVariantMap args; //TODO add chat messages support and contact check args.insert("uid", message.toId()); args.insert("message", message.body()); args.insert("title", message.subject()); return request<SendMessageReply> ("messages.send", args, [](const QVariant &response) -> QVariant { return response.toInt(); }); 

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, SendMessageReply :: result () рд╕реНрд▓реЙрдЯ рдореЗрдВ, рдпрд╣ QVariant рдХреЗ рдмрдЬрд╛рдп int рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред
  auto reply = static_cast<Vreen::SendMessageReply*>(sender()); m_unreachedMessagesCount--; int mid = reply->result(); 

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рднреА рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╕рд░рд▓ рдФрд░ рдкрд╛рд░рджрд░реНрд╢реА рд╣реЛрддреЗ рд╣реИрдВред

рд╕рднрд╛ рдФрд░ рд╕рднрд╛


Vreen рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕реНрд░реЛрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред
 $ git clone git://github.com/gorthauer/vreen.git $ cd vreen $ git submodule update --init 

рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ cmake 2.8, Qt 4.7.4, рдФрд░ C ++ 11 (gcc 4.4+, clang 3.0+, msvc2010 +) рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд╕рдВрдХрд▓рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдХрд╛рдлреА рддреБрдЪреНрдЫ рд╣реИ:
 $ mkdir build $ cd build $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr $ make $ make install (sudo) 

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд░рд┐рд▓реАрдЬрд╝ рдпрд╛ рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рд╕реАрдореЗрдХ рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВред рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдХреНрдпреВрдмреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпреВрдореЗрдХ 'рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдзрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред

C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рд╕рдВрдмрдВрдз

Vreen рдореЗрдВ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, pkg-config рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, vreen рдХреЛ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдирдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдкреНрд░реЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝реЗрдВред
 CONFIG += link_pkgconfig PKGCONFIG += vreen \ vreenoauth 

рдЙрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ pkgconfig рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рдпрд╛ рддреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ LIBS рдФрд░ INCLUDEPATH рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ cmake рдпрд╛ qbs рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЬреЛ рд▓реЛрдЧ рдореБрдЭреЗ рдХреНрдпреВрдЯреА рдХреЗ рд▓рд┐рдП рдПрдХ prf рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреЗ рдЙрдкрдпреЛрдЧ

рдЪрд▓реЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреЛ рджреЛрд╕реНрддреЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рд╕рднреА рдлреЛрди рдирдВрдмрд░ рдЦреАрдВрдЪ рд▓реЗрдЧрд╛ред

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ, рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдзрд┐, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реБрдП, рдФрд░ рдЙрд╕реЗ рдРрдк рд╕реЗ рдРрдк рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд╣реЗрдВред
  auto auth = new Vreen::OAuthConnection(3220807, this); //  clientId   auth->setConnectionOption(Vreen::Connection::ShowAuthDialog, true); //     . auth->setConnectionOption(Vreen::Connection::KeepAuthData, true); //     setConnection(auth); connect(this, SIGNAL(onlineStateChanged(bool)), SLOT(onOnlineChanged(bool))); connect(roster(), SIGNAL(syncFinished(bool)), SLOT(onSynced(bool))); 

рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдПрдкреА рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдСрдирдСрдирд▓рд╛рдЗрдирдЪреЗрдВрдЬ рд╕реНрд▓реЙрдЯ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд░реЛрд╕реНрдЯрд░ рд╕реЗ рджреЛрд╕реНрддреЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВрдЧреЗред рдЬрдм рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрди рдлрд╝реАрд▓реНрдб рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рднреА рдЬреНрдЮрд╛рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрдо рдлрд╝реАрд▓реНрдб рд╡рд┐рдХрд▓реНрдк VK_COMMON_FIELDS, VK_EXTENDED_FIELDS рдФрд░ VK_ALL_FIELDS рдХреЗ рд╕рд╛рде рдХрдИ рдореИрдХреНрд░реЛрдЬрд╝ рд╣реИрдВред
рдЦреЗрддреЛрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рддреАрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рднрд╛рд░реА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреЛ рддрдирд╛рд╡ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
  roster()->sync(QStringList() << QLatin1String("first_name") << QLatin1String("last_name") << QLatin1String("contacts")); 

рд░реЛрд╕реНрдЯрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдмрд╕ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
  qDebug() << tr("-- %1 contacts recieved").arg(roster()->buddies().count()); foreach (auto buddy, roster()->buddies()) { QString homeNumber = buddy->property("_q_home_phone").toString(); QString mobileNumber = buddy->property("_q_mobile_phone").toString(); qDebug() << tr("name: %1, home: %2, mobile: %3").arg(buddy->name()) .arg(homeNumber.isEmpty() ? tr("unknown") : homeNumber) .arg(mobileNumber.isEmpty() ? tr("unknown") : mobileNumber); } 

рд╕рдВрдкрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╕рднреА рдЧреБрдгреЛрдВ рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ _q_ рд╣реЛрдЧрд╛, рдЬрдмрдХрд┐ рдмрд╛рдХреА рдХреЛ рдЧреЗрдЯрд░реНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ Q_PROPERTY рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╛рдореЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рджреВрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, qml api рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦреЗрдВ рдФрд░ рдорд┐рддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
Qml рдореЗрдВ рдЖрдпрд╛рдд Vreen рд╕рдорд░реНрдерди:
 import com.vk.api 1.0 

рдФрд░ рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдмрдирд╛рдПрдБ:
  Client { id: client connection: conn //        C++   } OAuthConnection { id: conn Component.onCompleted: { //        ,      photoview' setConnectionOption(Connection.ShowAuthDialog, true); setConnectionOption(Connection.KeepAuthData, true); } clientId: 3220807 displayType: OAuthConnection.Popup //        } 

рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ.connectToHost рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╕ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рдкреБрд╖реНрдЯрд┐ рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдЖрдк рдЕрдкрдирд╛ рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рдЕрддреНрдпрдВрдд рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдВрдХреЗрдд рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдВрд╡рд╛рджреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк com.vk.api 1.0 рд╕реЗ рддреИрдпрд╛рд░ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
  DialogsModel { id: dialogsModel client: client } 

рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╡рд╛рджреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рд╕реВрдЪреА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ:
  Connections { target: client onOnlineChanged: { if (client.online) { client.roster.sync(); dialogsModel.getDialogs(0, //    15, //  160 //   ); } } } 

рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдЙрдкрд▓рдмреНрдз рдореЙрдбрд▓ рдЧреБрдг рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
  roles[SubjectRole] = "subject"; roles[BodyRole] = "body"; roles[FromRole] = "from"; roles[ToRole] = "to"; roles[ReadStateRole] = "unread"; roles[DirectionRole] = "incoming"; roles[DateRole] = "date"; roles[IdRole] = "mid"; roles[AttachmentRole] = "attachments"; roles[ChatIdRole] = "chatId"; 

рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╕рдВрд╡рд╛рджреЛрдВ рдХреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдл-рд╕реБрдерд░реА рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


рдЗрд╕реА рддрд░рд╣, рдПрдХ рдлреЛрдЯреЛ рдПрд▓реНрдмрдо рдмрдирд╛рдПрдВ:

рдФрд░ рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдлреЛрдЯреЛ рдПрд▓реНрдмрдо рдмрдирд╛рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо qml рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдзреЗ vk.api рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
  function getAll(ownerId, count, offset) { if (!offset) offset = 0; if (!count) count = 200; var args = { "owner_id" : ownerId, "offset" : offset, "count" : count, "extended" : 0 } var reply = client.request("photos.getAll", args) reply.resultReady.connect(function(response) { var count = response.shift() for (var index in response) { var photo = response[index] model.append(photo) } }) } 

рдпрд╣ рдмрд╣реБрдд рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╕реЗ рдирд┐рдХрд▓рддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рд╡рд░реНрди рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг 0.9.5 рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдпрд╣ рд▓рдЧрднрдЧ рдПрдХ рд░рд┐рд▓реАрдЬ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ рдФрд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╕рдВрдЧрддрддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ред
рдлрд┐рд▓рд╣рд╛рд▓, рдПрдкреАрдЖрдИ рд╕рдорд░реНрдерди рдЕрднреА рднреА рдЕрдзреВрд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░ рд░реИрдкрд░реЛрдВ рдХрд╛ рд▓реЗрдЦрди рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕рд░рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╕рднреА рдкреИрдЪ рдкрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдЕрдиреНрдп рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдВ рдкреАрдПрдо рдпрд╛ рдЬреИрдмрд░ рдореЗрдВ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ, рдЬреЛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рдЬрд┐рдареВрдм рдХреЗ рд╕рд╛рде рдХрд╛рдВрдЯрд╛ ред

Source: https://habr.com/ru/post/In157081/


All Articles