qml: use async api to query data for context menu handling
fixes #26889 (closed)
Problem - The cause of #26889 (closed) was the use of MLBaseMOdel::data to query MLItemID data in the context menu. That function may not return correct data because of chunk based nature of MLBaseModel.
Fix - Use the async data API of MLBaseModel (MLBaseModel::getData
) to asynchronously query data from the model. I also took the opportunity to generalize ContextMenu code and remove redundant structures.