public void QueryConferenceHistory(int page, bool refresh = false) { List<ConferenceItem> list = new List<ConferenceItem>(); int iSizeSTConvHistroyData = Marshal.SizeOf(typeof(STConvHistroyData)); int iSizeSTConvHistroyItem = Marshal.SizeOf(typeof(STConvHistroyItem)); int uiBufSize = (iSizeSTConvHistroyData + iSizeSTConvHistroyItem * (count - 1)); byte[] pCallHistory = new byte[uiBufSize]; UCServiceRetvCode iRet = (UCServiceRetvCode)query.QueryConvHistory(page * count, (page + 1) * count - 1, pCallHistory, uiBufSize); if (UCServiceRetvCode.UC_SDK_Success == iRet) { IntPtr tempInfoIntPtr = Marshal.AllocHGlobal((int)iSizeSTConvHistroyData); byte[] tempInfoByte = new byte[iSizeSTConvHistroyData]; Marshal.Copy(pCallHistory, 0, tempInfoIntPtr, (int)iSizeSTConvHistroyData); STConvHistroyData head = (STConvHistroyData)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STConvHistroyData)); winHisitory.labTotal.Content = "/" + ((head.iTotal % count) == 0 ? (head.iTotal / count == 0 ? 1 : head.iTotal / count).ToString() : (head.iTotal / count + 1).ToString()); winHisitory.txtPage.Text = (page + 1).ToString(); int second = 0; for (int i = -1; i < head.iTotal - 1 && i < head.iTo - head.iFrom; i++) { Marshal.Copy(pCallHistory, iSizeSTConvHistroyData + iSizeSTConvHistroyItem * i, tempInfoIntPtr, (int)iSizeSTConvHistroyItem); STConvHistroyItem item = (STConvHistroyItem)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STConvHistroyItem)); ConferenceItem it = new ConferenceItem(); //2015/8/24 UTF8 转码UNICODE //byte[] buffer1 = Encoding.Default.GetBytes(item.compereName); //byte[] buffer2 = Encoding.Convert(Encoding.UTF8, Encoding.Default, buffer1, 0, buffer1.Length); //string item1 = Encoding.Default.GetString(buffer2, 0, buffer2.Length); //it.Initiator = item1; it.Initiator = item.compereName; DateTime dt = DateTime.Parse(item.startTime.year.ToString() + "-" + item.startTime.month + "-" + item.startTime.day + " " + item.startTime.hour + ":" + item.startTime.minute + ":" + item.startTime.second); it.StartTime = dt.ToString("yyyy-MM-dd HH:mm:ss"); second = Convert.ToInt32(item.duration); it.Duration = (second == -1 ? "00:00:00" : DateTime.Today.AddSeconds(second).ToString("HH:mm:ss")); it.ConvID = item.convID; list.Add(it); } winHisitory.listConference.ItemsSource = null; winHisitory.listConference.ItemsSource = list; Marshal.Release(tempInfoIntPtr); } else { winHisitory.labTotal.Content = "/1"; winHisitory.txtPage.Text = "1"; } if (list.Count > 0) { string _convID = list[0].ConvID; string initiator = list[0].Initiator; QueryHisConvPartByID(_convID, initiator); } else { winHisitory.listParticipants.ItemsSource = null; } }
public void QueryConferenceHistory(int page, bool refresh = false) { List <ConferenceItem> list = new List <ConferenceItem>(); int iSizeSTConvHistroyData = Marshal.SizeOf(typeof(STConvHistroyData)); int iSizeSTConvHistroyItem = Marshal.SizeOf(typeof(STConvHistroyItem)); int uiBufSize = (iSizeSTConvHistroyData + iSizeSTConvHistroyItem * (count - 1)); byte[] pCallHistory = new byte[uiBufSize]; UCServiceRetvCode iRet = (UCServiceRetvCode)query.QueryConvHistory(page * count, (page + 1) * count - 1, pCallHistory, uiBufSize); if (UCServiceRetvCode.UC_SDK_Success == iRet) { IntPtr tempInfoIntPtr = Marshal.AllocHGlobal((int)iSizeSTConvHistroyData); byte[] tempInfoByte = new byte[iSizeSTConvHistroyData]; Marshal.Copy(pCallHistory, 0, tempInfoIntPtr, (int)iSizeSTConvHistroyData); STConvHistroyData head = (STConvHistroyData)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STConvHistroyData)); winHisitory.labTotal.Content = "/" + ((head.iTotal % count) == 0 ? (head.iTotal / count == 0 ? 1 : head.iTotal / count).ToString() : (head.iTotal / count + 1).ToString()); winHisitory.txtPage.Text = (page + 1).ToString(); int second = 0; for (int i = -1; i < head.iTotal - 1 && i < head.iTo - head.iFrom; i++) { Marshal.Copy(pCallHistory, iSizeSTConvHistroyData + iSizeSTConvHistroyItem * i, tempInfoIntPtr, (int)iSizeSTConvHistroyItem); STConvHistroyItem item = (STConvHistroyItem)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STConvHistroyItem)); ConferenceItem it = new ConferenceItem(); //2015/8/24 UTF8 转码UNICODE //byte[] buffer1 = Encoding.Default.GetBytes(item.compereName); //byte[] buffer2 = Encoding.Convert(Encoding.UTF8, Encoding.Default, buffer1, 0, buffer1.Length); //string item1 = Encoding.Default.GetString(buffer2, 0, buffer2.Length); //it.Initiator = item1; it.Initiator = item.compereName; DateTime dt = DateTime.Parse(item.startTime.year.ToString() + "-" + item.startTime.month + "-" + item.startTime.day + " " + item.startTime.hour + ":" + item.startTime.minute + ":" + item.startTime.second); it.StartTime = dt.ToString("yyyy-MM-dd HH:mm:ss"); second = Convert.ToInt32(item.duration); it.Duration = (second == -1 ? "00:00:00" : DateTime.Today.AddSeconds(second).ToString("HH:mm:ss")); it.ConvID = item.convID; list.Add(it); } winHisitory.listConference.ItemsSource = null; winHisitory.listConference.ItemsSource = list; Marshal.Release(tempInfoIntPtr); } else { winHisitory.labTotal.Content = "/1"; winHisitory.txtPage.Text = "1"; } if (list.Count > 0) { string _convID = list[0].ConvID; string initiator = list[0].Initiator; QueryHisConvPartByID(_convID, initiator); } else { winHisitory.listParticipants.ItemsSource = null; } }