public static KUrl.List FromMimeData(QMimeData mimeData, Dictionary <string, string> metaData) { KUrl.List list = new KUrl.List(); SmokeMarshallers.FromIntPtr addfn = delegate(IntPtr ptr) { GCHandle handle = (GCHandle)ptr; list.Add((KUrl)handle.Target); handle.Free(); }; IDictionaryEnumerator e = null; if (metaData != null) { e = metaData.GetEnumerator(); } GetNextDictionaryEntryFn dictfn = delegate(ref string key, ref string value) { if (metaData == null) { return(false); } if (!e.MoveNext()) { return(false); } key = (string)e.Key; value = (string)e.Value; return(true); }; KUrlListFromMimeData(addfn, (IntPtr)GCHandle.Alloc(mimeData), dictfn); return(list); }
public void PopulateMimeData(QMimeData mimeData, Dictionary <string, string> metaData, KUrl.MimeDataFlags flags) { int i = 0; SmokeMarshallers.NoArgs listfn = delegate() { if (i >= Count) { return(IntPtr.Zero); } return((IntPtr)GCHandle.Alloc(this[i++])); }; IDictionaryEnumerator e = metaData.GetEnumerator(); GetNextDictionaryEntryFn dictfn = delegate(ref string key, ref string value) { if (!e.MoveNext()) { return(false); } key = (string)e.Key; value = (string)e.Value; return(true); }; KUrlListPopulateMimeData(listfn, (IntPtr)GCHandle.Alloc(mimeData), dictfn, (uint)flags); }
static extern void KUrlListFromMimeData(SmokeMarshallers.FromIntPtr addfn, IntPtr mimeData, GetNextDictionaryEntryFn getNextDictionaryEntry);
static extern void KUrlListPopulateMimeData(SmokeMarshallers.NoArgs getNextItem, IntPtr mimeData, GetNextDictionaryEntryFn getNextDictionaryEntry, uint flags);