QVariant SailorgramContactsModel::data(const QModelIndex &proxyIndex, int role) const { QModelIndex sourceindex = this->mapToSource(proxyIndex); if(role == SailorgramContactsModel::FirstLetterRole) { UserObject* user = this->_telegramdialoglistmodel->data(sourceindex, TelegramDialogListModel::RoleUserItem).value<UserObject*>(); return !user->firstName().isEmpty() ? user->firstName().mid(0, 1).toUpper() : user->lastName().mid(0, 1).toUpper(); } return this->_telegramdialoglistmodel->data(sourceindex, role); }
JNIEXPORT jobject JNICALL Java_com_opensdk_framework_NativeInvoker_nativeGetLoginInfo(JNIEnv* env, jobject thiz, jstring pluginKey) { std::string strPluginKey = PluginJniHelper::jstring2string(pluginKey); PluginProtocol* pPlugin = PluginUtils::getPluginPtr(strPluginKey); PluginUtils::outputLog("ProtocolUser", "nativeOnActionResult(), Get plugin ptr : %p", pPlugin); UserObject* userObject = dynamic_cast<UserObject*>(pPlugin); jobject loginInfo; if (userObject != NULL) { loginInfo=PluginUtils::createJavaMapObject(userObject->getLoginInfo()); }else{ PluginUtils::outputLog("ProtocolUser", "plugin %s is null", pPlugin->getPluginName()); loginInfo=PluginUtils::createJavaMapObject(NULL); } return loginInfo; }
void UserObject::popActionResult() { for(std::vector<UserActionResult>::iterator iter=_actionResultList.begin();iter!=_actionResultList.end();){ UserObject* userObject = dynamic_cast<UserObject*>(PluginUtils::getPluginPtr(iter->pluginKey)); if(userObject){ UserActionListener* listener = userObject->getActionListener(); if(listener){ listener->onActionResult(userObject,iter->resultCode, iter->msg.c_str()); //remove from record iter=_actionResultList.erase(iter); continue; } } ++iter; } }
//---------------------------------------------------------------------------------------------- int ObjectSerializer::DeserializePair(char* p_fieldAddress, TypeNode* p_type, fstream& p_eye) { // Pointer to pair is not supported _ASSERTE(p_type->Indirection == false); UserObject* object = reinterpret_cast<UserObject*>(p_fieldAddress); object->InitializeAddresses(); Iterator* addresses = object->GetIterator(); unsigned* addr32; for(int memberIdx = 0; addresses->MoveNext(); ++memberIdx) { addr32 = reinterpret_cast<unsigned*>(addresses->Current()); DeserializeType(reinterpret_cast<char*>(*addr32), p_type->TemplateArguments[memberIdx], p_eye); } return object->TypeSize(); }
void Property::set(const UserObject& object, const Value& value) const { // Check if the property is writable if (!writable(object)) PONDER_ERROR(ForbiddenWrite(name())); // Here we don't call setValue directly, we rather let the user object do it // and add any processing needed for proper propagation of the modification object.set(*this, value); }
JNIEXPORT void JNICALL Java_com_opensdk_framework_NativeInvoker_nativeOnActionResult(JNIEnv* env, jobject thiz, jstring pluginKey, jint ret, jstring msg) { std::string strMsg = PluginJniHelper::jstring2string(msg); std::string strPluginKey = PluginJniHelper::jstring2string(pluginKey); PluginProtocol* pPlugin = PluginUtils::getPluginPtr(strPluginKey); PluginUtils::outputLog("ProtocolUser", "nativeOnActionResult(), Get plugin ptr : %p", pPlugin); UserObject* userObject = dynamic_cast<UserObject*>(pPlugin); if (userObject != NULL) { PluginUtils::outputLog("ProtocolUser", "nativeOnActionResult(), Get plugin name : %s", pPlugin->getPluginName()); UserActionListener* listener = userObject->getActionListener(); if (NULL != listener) { listener->onActionResult(userObject, (UserActionResultCode) ret, strMsg.c_str()); } else { UserActionResult result={ (UserActionResultCode)ret, strMsg, strPluginKey }; UserObject::pushActionResult(result); PluginUtils::outputLog("ProtocolUser","Listener of plugin %s not set correctly", pPlugin->getPluginName()); } }else{ UserActionResult result={ (UserActionResultCode)ret, strMsg, strPluginKey }; UserObject::pushActionResult(result); PluginUtils::outputLog("ProtocolUser", "plugin %s is null", pPlugin->getPluginName()); } }
//---------------------------------------------------------------------------------------------- int ObjectSerializer::DeserializeUserDefinedType(char* p_fieldAddress, TypeNode* p_type, bool p_isPtr, fstream& p_eye) { int size = 0; UserObject* object = NULL; bool isNull = false; if(p_isPtr) { unsigned* addr32; p_eye.read(reinterpret_cast<char*>(&isNull), sizeof(bool)); addr32 = reinterpret_cast<unsigned*>(p_fieldAddress); if(!isNull) { string typeName; char buffer[MaxTypeNameLength + 1]; p_eye.read(buffer, MaxTypeNameLength + 1); typeName = buffer; object = static_cast<UserObject*>(g_ObjectFactory.GetObject(typeName)->Prototype()); PerformLateBinding(object, p_type); object->InitializeAddresses(); Iterator* addresses = object->GetIterator(); unsigned* addr32; for(int memberIdx = 0; addresses->MoveNext(); ++memberIdx) { _ASSERTE(memberIdx < p_type->Children.size()); addr32 = reinterpret_cast<unsigned*>(addresses->Current()); DeserializeType(reinterpret_cast<char*>(*addr32), p_type->Children[memberIdx].Ptr32, p_eye); } } *addr32 = reinterpret_cast<unsigned>(object); size = sizeof(unsigned); } else { object = reinterpret_cast<UserObject*>(p_fieldAddress); object->InitializeAddresses(); Iterator* addresses = object->GetIterator(); unsigned* addr32; for(int memberIdx = 0; addresses->MoveNext(); ++memberIdx) { _ASSERTE(memberIdx < p_type->Children.size()); addr32 = reinterpret_cast<unsigned*>(addresses->Current()); DeserializeType(reinterpret_cast<char*>(*addr32), p_type->Children[memberIdx].Ptr32, p_eye); } size = object->TypeSize(); } return size; }
QVariant SailorgramContactsModel::data(const QModelIndex &proxyIndex, int role) const { if(!this->_telegramcontactsmodel) return QVariant(); QModelIndex sourceindex = this->mapToSource(proxyIndex); if((role == SailorgramContactsModel::UserRole) || (role == SailorgramContactsModel::LetterRole)) { ContactObject* contact = this->_telegramcontactsmodel->data(sourceindex, TelegramContactsModel::ItemRole).value<ContactObject*>(); TelegramQml* telegram = this->_telegramcontactsmodel->telegram(); UserObject* user = telegram->user(contact->userId()); if(role == SailorgramContactsModel::UserRole) return QVariant::fromValue(user); // Letter Role return !user->firstName().isEmpty() ? user->firstName().mid(0, 1).toUpper() : user->lastName().mid(0, 1).toUpper(); } else if(role == SailorgramContactsModel::ContactRole) return this->_telegramcontactsmodel->data(sourceindex, TelegramContactsModel::ItemRole); return this->_telegramcontactsmodel->data(sourceindex, role); }
/** * \brief Special case of user objects: check metaclass and bound type */ bool operator()(const UserObject& obj) { const Class* targetClass = classByTypeSafe<T>(); return targetClass && (*targetClass == obj.getClass()); }
//---------------------------------------------------------------------------------------------- int ObjectSerializer::SerializeUserDefinedType(char* p_fieldAddress, TypeNode* p_type, bool p_isPtr, fstream& p_pen) { int size = 0; UserObject* object = NULL; bool isNull = false; if(p_isPtr) { int length = 0; string typeName; char buffer[MaxTypeNameLength + 1]; unsigned* addr32 = reinterpret_cast<unsigned*>(p_fieldAddress); isNull = (NULL == *addr32); p_pen.write(reinterpret_cast<char*>(&isNull), sizeof(bool)); if(!isNull) { object = reinterpret_cast<UserObject*>(*addr32); typeName = g_ObjectFactory.FromCName(object->CName()); PerformLateBinding(object, p_type); length = typeName.size(); _ASSERTE(length <= MaxTypeNameLength); strcpy(buffer, typeName.c_str()); buffer[length] = 0; p_pen.write(buffer, MaxTypeNameLength + 1); object->InitializeAddresses(); Iterator* addresses = object->GetIterator(); unsigned* addr32; for(int memberIdx = 0; addresses->MoveNext(); ++memberIdx) { _ASSERTE(memberIdx < p_type->Children.size()); addr32 = reinterpret_cast<unsigned*>(addresses->Current()); SerializeType(reinterpret_cast<char*>(*addr32), p_type->Children[memberIdx].Ptr32, p_pen); } } size = sizeof(unsigned); } else { object = reinterpret_cast<UserObject*>(p_fieldAddress); object->InitializeAddresses(); Iterator* addresses = object->GetIterator(); unsigned* addr32; for(int memberIdx = 0; addresses->MoveNext(); ++memberIdx) { _ASSERTE(memberIdx < p_type->Children.size()); addr32 = reinterpret_cast<unsigned*>(addresses->Current()); SerializeType(reinterpret_cast<char*>(*addr32), p_type->Children[memberIdx].Ptr32, p_pen); } size = object->TypeSize(); } return size; }