TInt DKmsExtrLddChannel::Request(TInt aReqNo, TAny* a1, TAny* a2) /** Implement DLogicalChannel by processing a message from user-side. This function is called in the context of the thread which is using the handle. @param aReqNo Request identifier, taken from KmsExtrLddImpl::TControl. (Only controls, and not requests, are supported.) @param a1 First call-specific argument passed to DoControl. @param a2 Second call-specific argument passed to DoControl. @return Symbian OS error code. This is used to complete the user-side TRequestStatus object. */ { TInt r; HBuf8* data; KmsExtrLddImpl::TControl controlId = static_cast<KmsExtrLddImpl::TControl>(aReqNo); switch (controlId) { case KmsExtrLddImpl::EGetKeySize: // Getting the key length by allocating a copy of the data is not // an efficient way of going about it but, because this is test code // and so not worth adding another API to HwKeyStore. r = GetKeyData(a1, data); if (r == KErrNone) { TInt length = data->Length(); DeleteInCriticalSection(data); // don't leak if kumemput throws an exception umemput(a2, &length, sizeof(length)); } break; case KmsExtrLddImpl::EGetKeyData: r = GetKeyData(a1, data); if (r == KErrNone) { DThread* curThread = &Kern::CurrentThread(); r = Kern::ThreadDesWrite(curThread, a2, *data, /* aOffset */ 0); DeleteInCriticalSection(data); } break; default: r = KErrNotSupported; } return r; }
void RocketMenuPlugin::HighlightItem(Rocket::Core::Element *e) { static ColorAnimation colorAnimation(rgb(255,255,255), rgb(235, 156, 9), 1); DocumentData *doc_data = GetDocumentData(e->GetOwnerDocument()); if (doc_data != NULL) { if (doc_data->active_item != e && !e->IsClassSet("disabled")) { if (doc_data->active_item != NULL) { m_animation->CancelAnimation(doc_data->active_item); OptionsData *options_data = GetOptionsData(doc_data->active_item); if (options_data != NULL) { ShowElement(options_data->hdr, false); ShowElement(options_data->ftr, false); } RangeData *range_data = GetRangeData(doc_data->active_item); if (range_data != NULL) { ShowElement(range_data->hdr, false); ShowElement(range_data->ftr, false); } KeyData *key_data = GetKeyData(doc_data->active_item); if (key_data != NULL) { UpdateKeyChooser(key_data, doc_data->active_key, false); } } if (e != NULL) { if (e->GetParentNode()->HasAttribute("scroll")) { DoScroll(doc_data->active_item, e, e->GetParentNode()->GetParentNode()); } if (!e->HasAttribute("noanim")) { m_animation->AnimateElement(e, AnimationTypeBounce, 0.3f, &colorAnimation); } AttachCursor(e, doc_data->cursor_left, doc_data->cursor_right); OptionsData *options_data = GetOptionsData(e); if (options_data != NULL) { ShowElement(options_data->hdr, true); ShowElement(options_data->ftr, true); } RangeData *range_data = GetRangeData(e); if (range_data != NULL) { ShowElement(range_data->hdr, true); ShowElement(range_data->ftr, true); } KeyData *key_data = GetKeyData(e); if (key_data != NULL) { UpdateKeyChooser(key_data, doc_data->active_key, true); } m_delegate->DidActivateItem(e); } doc_data->active_item = e; } } }
void RocketMenuPlugin::RequestKeyForKeyChooser(Rocket::Core::Element *menu_item) { Rocket::Core::Context *context = menu_item->GetContext(); DocumentData *document_data = GetDocumentData(menu_item->GetOwnerDocument()); KeyData *key_data = GetKeyData(menu_item); if (document_data != NULL && key_data != NULL && m_delegate != NULL) { m_delegate->DidRequestKey(menu_item, document_data->active_key); } }
const Rocket::Core::String RocketMenuPlugin::GetKeyChooserValue(Rocket::Core::Element *menu_item, int slot) { DocumentData *document_data = GetDocumentData(menu_item->GetOwnerDocument()); KeyData *key_data = GetKeyData(menu_item); if (document_data != NULL && key_data != NULL && m_delegate != NULL) { Rocket::Core::Element *slot_element = slot ? key_data->opt2 : key_data->opt1; return slot_element->GetId(); } return ""; }
static void SetActiveKeySlot(Rocket::Core::Element *menu_item, int active_key) { Rocket::Core::Context *context = menu_item->GetContext(); DocumentData *document_data = GetDocumentData(menu_item->GetOwnerDocument()); KeyData *key_data = GetKeyData(menu_item); if (document_data != NULL && key_data != NULL) { document_data->active_key = active_key; UpdateKeyChooser(key_data, document_data->active_key, true); } }
void RocketMenuPlugin::SetKeyChooserValue(Rocket::Core::Element *menu_item, int slot, const Rocket::Core::String& text, const Rocket::Core::String& id) { DocumentData *document_data = GetDocumentData(menu_item->GetOwnerDocument()); KeyData *key_data = GetKeyData(menu_item); if (document_data != NULL && key_data != NULL && m_delegate != NULL) { Rocket::Core::Element *slot_element = slot ? key_data->opt2 : key_data->opt1; slot_element->SetId(id); slot_element->SetInnerRML(text); slot_element->SetClass("no-key-chosen", id == "None"); } }
void RocketMenuPlugin::ClearMenuItem(Rocket::Core::Element *menu_item) { KeyData *key_data = GetKeyData(menu_item); if (key_data != NULL) { DocumentData *document_data = GetDocumentData(menu_item->GetOwnerDocument()); if (document_data != NULL) { SetKeyChooserValue(menu_item, document_data->active_key, "None", "None"); if (m_delegate != NULL) { m_delegate->DidClearKeyChooserValue(menu_item, document_data->active_key); } } } }
// Called when an element is destroyed. void RocketMenuPlugin::OnElementDestroy(Rocket::Core::Element* element) { OptionsData *options_data = GetOptionsData(element); if (options_data != NULL) { delete options_data; SetOptionsData(element, NULL); } RangeData *range_data = GetRangeData(element); if (range_data != NULL) { delete range_data; SetRangeData(element, NULL); } KeyData *key_data = GetKeyData(element); if (key_data != NULL) { delete key_data; SetKeyData(element, NULL); } }