Example #1
0
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;
	}
Example #2
0
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;
        }
    }
}
Example #3
0
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);
    }
}
Example #4
0
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 "";
}
Example #5
0
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);
    }
}
Example #6
0
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");
    }
}
Example #7
0
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);
            }
        }
    }
}
Example #8
0
// 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);
    }
}