public static void FragmentTest()
    {
        string rwTypeStr = "Text";

        ReaderWriterFactory.ReaderWriterType rwType = (ReaderWriterFactory.ReaderWriterType)
                                                      Enum.Parse(typeof(ReaderWriterFactory.ReaderWriterType), rwTypeStr, true);
        Encoding            encoding = Encoding.GetEncoding("utf-8");
        int                 numberOfNestedFragments = 1;
        MemoryStream        ms1     = new MemoryStream();
        MemoryStream        ms2     = new MemoryStream();
        XmlDictionaryWriter writer1 = (XmlDictionaryWriter)ReaderWriterFactory.CreateXmlWriter(rwType, ms1, encoding);
        XmlDictionaryWriter writer2 = (XmlDictionaryWriter)ReaderWriterFactory.CreateXmlWriter(rwType, ms2, encoding);

        Assert.True(FragmentHelper.CanFragment(writer1));
        Assert.True(FragmentHelper.CanFragment(writer2));
        writer1.WriteStartDocument(); writer2.WriteStartDocument();
        writer1.WriteStartElement(ReaderWriterConstants.RootElementName); writer2.WriteStartElement(ReaderWriterConstants.RootElementName);
        SimulateWriteFragment(writer1, true, numberOfNestedFragments);
        SimulateWriteFragment(writer2, false, numberOfNestedFragments);
        writer1.WriteEndElement(); writer2.WriteEndElement();
        writer1.WriteEndDocument(); writer2.WriteEndDocument();
        writer1.Flush();
        writer2.Flush();

        byte[] doc1 = ms1.ToArray();
        byte[] doc2 = ms2.ToArray();
        CompareArrays(doc1, 0, doc2, 0, doc1.Length);
    }
Example #2
0
        public bool OnNavigationItemSelected(IMenuItem item)
        {
            //Dont open the same drawer again
            if (!item.IsChecked)
            {
                Fragment lFragment = null;

                switch (item.ItemId)
                {
                case Resource.Id.nav_start:
                    lFragment = new FragmentMain();
                    break;

                case Resource.Id.nav_analysis:
                    lFragment = new FragmentAnalysis();
                    break;

                case Resource.Id.nav_send_as_mail:
                    DialogHelper.ShowToast(this, "Noch nicht implementiert.", Android.Widget.ToastLength.Short);
                    break;
                }

                FragmentHelper.ReplaceFragment(SupportFragmentManager, Resource.Id.fragmentContent, lFragment);
            }

            Drawer?.CloseDrawer(GravityCompat.Start);
            return(true);
        }
Example #3
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);



            //toolbar
            mToolbar      = FindViewById <SupportToolbar>(Resource.Id.toolbar);
            mDrawerLayout = FindViewById <DrawerLayout>(Resource.Id.drawer_layout);
            mLeftDrawer   = FindViewById <ListView>(Resource.Id.left_drawer);

            //init leftdrawer items here ####
            ListviewAssistant = new ListViewAssistant(this, mLeftDrawer);


            //make sure fragment is init
            // add all the possible fragments
            MainFragment = new FragmentHelper(new FragHome(), "FragHome", Resource.Id.FragmentContainer);
            //MainFragment.Add(new FragAbout(), "FragAbout");
            //MainFragment.Add(new FragModule(), "FragModule");
            //MainFragment.Add(new FragProfile(), "FragProfile");
            //MainFragment.Add(new FragSettings(), "FragSettings");
            MainFragment.FinalizeAdd(SupportFragmentManager.BeginTransaction());
            //Manage The fragment here
            ListviewAssistant.ItemClick += ListviewAssistant_ItemClick;

            SetSupportActionBar(mToolbar);

            mDrawerToggle = new MyActionBarDrawerToggle(this, mDrawerLayout,
                                                        Resource.String.openDrawer,     //top bar title when string is opened
                                                        Resource.String.ApplicationName //top bar title when closed
                                                        );

            mDrawerLayout.SetDrawerListener(mDrawerToggle);
            //SupportActionBar.SetTitle(Resource.String.ApplicationName);
            SupportActionBar.SetDisplayHomeAsUpEnabled(true); //this replace the next' lines code because it is depreciated in 22
            //SupportActionBar.SetHomeButtonEnabled(true);
            SupportActionBar.SetDisplayShowTitleEnabled(true);
            mDrawerToggle.SyncState();

            if (bundle != null) //first time
            {
                if (bundle.GetString("DrawerState") == "Opened")
                {
                    SupportActionBar.SetTitle(Resource.String.openDrawer);
                }
                else
                {
                    SupportActionBar.SetTitle(Resource.String.ApplicationName);
                }
            }
            else
            {
                SupportActionBar.SetTitle(Resource.String.ApplicationName);
            }
        }
Example #4
0
    private static void SimulateWriteFragment(XmlDictionaryWriter writer, bool useFragmentAPI, int nestedLevelsLeft)
    {
        if (nestedLevelsLeft <= 0)
        {
            return;
        }

        Random rndGen       = new Random(nestedLevelsLeft);
        int    signatureLen = rndGen.Next(100, 200);

        byte[] signature = new byte[signatureLen];
        rndGen.NextBytes(signature);

        MemoryStream fragmentStream = new MemoryStream();

        if (!useFragmentAPI) // simulating in the writer itself
        {
            writer.WriteStartElement("SignatureValue_" + nestedLevelsLeft);
            writer.WriteBase64(signature, 0, signatureLen);
            writer.WriteEndElement();
        }

        if (useFragmentAPI)
        {
            FragmentHelper.Start(writer, fragmentStream);
        }

        writer.WriteStartElement("Fragment" + nestedLevelsLeft);
        for (int i = 0; i < 5; i++)
        {
            writer.WriteStartElement(string.Format("Element{0}_{1}", nestedLevelsLeft, i));
            writer.WriteAttributeString("attr1", "value1");
            writer.WriteAttributeString("attr2", "value2");
        }
        writer.WriteString("This is a text with unicode characters: <>&;\u0301\u2234");
        for (int i = 0; i < 5; i++)
        {
            writer.WriteEndElement();
        }

        // write other nested fragments...
        SimulateWriteFragment(writer, useFragmentAPI, nestedLevelsLeft - 1);

        writer.WriteEndElement(); // Fragment{nestedLevelsLeft}
        writer.Flush();

        if (useFragmentAPI)
        {
            FragmentHelper.End(writer);
            writer.WriteStartElement("SignatureValue_" + nestedLevelsLeft);
            writer.WriteBase64(signature, 0, signatureLen);
            writer.WriteEndElement();

            FragmentHelper.Write(writer, fragmentStream.GetBuffer(), 0, (int)fragmentStream.Length);

            writer.Flush();
        }
    }
Example #5
0
        public override void OnBackPressed()
        {
            // Check if we've actually exit the settings fragments and returned to the main tabs or not
            if (_isInSettings && SupportFragmentManager.BackStackEntryCount <= _backStackSnapshotCount + 1)
            {
                _isInSettings = false;
            }

            FragmentHelper.HandleBackPress(this);
        }
 public static void FragmentTest()
 {
     string rwTypeStr = "Text";
     ReaderWriterFactory.ReaderWriterType rwType = (ReaderWriterFactory.ReaderWriterType)
         Enum.Parse(typeof(ReaderWriterFactory.ReaderWriterType), rwTypeStr, true);
     Encoding encoding = Encoding.GetEncoding("utf-8");
     MemoryStream ms = new MemoryStream();
     XmlDictionaryWriter writer = (XmlDictionaryWriter)ReaderWriterFactory.CreateXmlWriter(rwType, ms, encoding);
     Assert.False(FragmentHelper.CanFragment(writer));
 }
        public void TestGetTokensFromFragment(string fragment, string preTag, string postTag, string[] expected)
        {
            var tokens = FragmentHelper.GetTokensFromFragment(fragment, preTag, postTag).ToList();

            Assert.True(tokens.Count == expected.Length);

            for (int i = 0; i < tokens.Count; i++)
            {
                Assert.True(tokens[i].Token == expected[i]);
            }
        }
Example #8
0
        private void SetUpPlaylistRecycler(RecyclerView recyclerView, View view)
        {
            ((SimpleItemAnimator)recyclerView.GetItemAnimator()).SupportsChangeAnimations = false;
            recyclerView.SetLayoutManager(new LinearLayoutManager(Context));
            recyclerView.AddItemDecoration(new VerticalSpaceItemDecoration(20)
            {
                ShouldShowBeforeFirst = true
            });

            _playlistAdapter = new PlaylistAdapter(Activity, GetPlaylists());
            //_playlistAdapter.SetMultiChoiceModeListener(this);
            _playlistAdapter.ItemClick += (s, args) => FragmentHelper.Push(Activity, PlaylistFragment.Instantiate(args.Item));

            recyclerView.SetAdapter(_playlistAdapter);
        }
Example #9
0
        public void OnItemClick(AdapterView parent, View view, int position, long id)
        {
            if (position == 0)
            {
                /* Intent intent = new Intent(Application.Context, typeof(RegistrationFragment));
                 * StartActivity(intent);*/
                FragmentHelper.ReplaceFragment(this, registrationFragment);
            }
            var sData = _milkDigitalIdService.GetDigitalIDs()[position];

            if (sData != null)
            {
                Toast.MakeText(Application.Context, "position" + sData.NickName, ToastLength.Long).Show();
            }
        }
Example #10
0
        private void SwitchToTabFragment(int resourceID)
        {
            _isInSettings = false;

            if (_currentTabID != resourceID)
            {
                _currentTabID = resourceID;
                FragmentHelper.PopAll(this);
                FragmentHelper.Push(this, GetTabFragment(_currentTabID));
            }
            else
            {
                FragmentHelper.PopAllButOne(this);
            }
        }
Example #11
0
        private void OpenContent(IContent content)
        {
            _currentPath = content.Path;
            _isAtRoot    = false;

            if (content is IContentSet <ILocalContent> contentSet)
            {
                _contentAdapter.ReplaceItems(contentSet.Contents.Cast <IContent>().ToList());
            }
            else
            {
                switch (content.Kind)
                {
                case Kinds.Image:
                    FragmentHelper.Push(Activity, ImageFragment.Instantiate(content.Path));
                    break;
                }
                //_contentController.OpenContent(Content);
            }
        }
        /// <summary>
        /// 解析数据
        /// </summary>
        /// <param name="dataSource"></param>
        public void BuildData(SmsDataSource dataSource)
        {
            if (!FileHelper.IsValid(MainDbPath))
            {
                return;
            }

            SqliteContext mainContext = null;

            string attendDirPath = MediaDomainPath;

            try
            {
                var rMainDbFile = SqliteRecoveryHelper.DataRecovery(MainDbPath, @"chalib\IOS_Sms\sms.db.charactor",
                                                                    "message,handle,attachment,chat,chat_message_join,chat_handle_join,message_attachment_join", true);
                mainContext = new SqliteContext(rMainDbFile);

                var handleDynamicList         = mainContext.FindByName("handle");
                var chathandlejoinDynamicList = mainContext.Find(new SQLiteString("SELECT chat_id,handle_id FROM chat_handle_join WHERE chat_id NOTNULL")).ToList();

                var chatmessagejoinDynamicList       = mainContext.Find(new SQLiteString("SELECT chat_id,message_id FROM chat_message_join WHERE chat_id NOTNULL"));
                var messageAttachmentJoinDynamicList = mainContext.Find(new SQLiteString("SELECT message_id,attachment_id FROM message_attachment_join WHERE message_id NOTNULL")).ToList();
                var attachmentDynamicList            = mainContext.FindByName("attachment");

                var dateStr = "";

                mainContext.UsingSafeConnection(new SQLiteString("select * from message order by date desc"), r =>
                {
                    dynamic smsObj;
                    while (r.Read())
                    {
                        smsObj = r.ToDynamic();

                        var sms = new SMS();

                        //短信内容
                        sms.Content = DynamicConvert.ToSafeString(smsObj.text);
                        sms.Content = FragmentHelper.RemoveNullityDataNew(sms.Content);
                        // 验证内容是否为空
                        if (FragmentHelper.IsEmptyString(sms.Content))
                        {
                            continue;
                        }

                        sms.DataState = DynamicConvert.ToEnumByValue(smsObj.XLY_DataType, EnumDataState.Normal);

                        //发送时间和读取时间。

                        dateStr = DynamicConvert.ToSafeString(smsObj.date);
                        if (dateStr.Length > 9)
                        {
                            dateStr = dateStr.Substring(0, 9);
                        }

                        sms.StartDate = DynamicConvert.ToSafeDateTime(dateStr, 2001);
                        //sms.ReadTime = DynamicConvert.ToSafeDateTime(smsObj.date_read, 2001);

                        int smsId    = DynamicConvert.ToSafeInt(smsObj.ROWID);
                        sms.Remark   = string.Empty;
                        int hanldeId = DynamicConvert.ToSafeInt(smsObj.handle_id);
                        if (hanldeId == 0)
                        {
                            //群发消息
                            var someChatMsgObj = chatmessagejoinDynamicList.FirstOrDefault(cmj => DynamicConvert.ToSafeInt(cmj.message_id) == smsId && DynamicConvert.ToSafeInt(cmj.chat_id) != 0);
                            if (someChatMsgObj != null)
                            {
                                var handleIdList = chathandlejoinDynamicList.FindAll(chj => DynamicConvert.ToSafeInt(chj.chat_id) == someChatMsgObj.chat_id);

                                var numbersBuilder = new StringBuilder();
                                foreach (var oneHandle in handleIdList)
                                {
                                    numbersBuilder.Append(GetPhoteNumber(DynamicConvert.ToSafeInt(oneHandle.handle_id), handleDynamicList));
                                    numbersBuilder.Append(";");
                                }
                                sms.Remark = LanguageHelper.GetString(Languagekeys.PluginSMS_QunSend) + "; ";
                                sms.Number = numbersBuilder.ToString().TrimEnd(";");
                            }
                        }
                        else
                        {
                            sms.Number = GetPhoteNumber(hanldeId, handleDynamicList);
                        }
                        if (sms.Number.IsValid() && sms.DataState == EnumDataState.Fragment)
                        {
                            if (!FragmentHelper.IsValidFragment(sms.Number))
                            {
                                continue;
                            }
                        }
                        //发送或者接收
                        sms.SmsState    = DynamicConvert.ToSafeInt(smsObj.is_from_me) == 1 ? EnumSMSState.SendSMS : EnumSMSState.ReceiveSMS;
                        int isDelivered = DynamicConvert.ToSafeInt(smsObj.is_delivered);
                        int isSent      = DynamicConvert.ToSafeInt(smsObj.is_sent);
                        if (sms.SmsState == EnumSMSState.ReceiveSMS)
                        {
                            sms.Remark += DynamicConvert.ToSafeInt(smsObj.is_read) == 1 ?
                                          string.Format("{0};", LanguageHelper.GetString(Languagekeys.PluginSMS_IsRead)) : string.Format("{0};", LanguageHelper.GetString(Languagekeys.PluginSMS_NotRead));
                        }
                        else
                        {
                            if (isDelivered == 0 && isSent == 0)
                            {
                                sms.Remark += LanguageHelper.GetString(Languagekeys.PluginSMS_SendFail) + "; ";
                            }
                        }

                        #region 附件解析

                        int cache_has_attachments = DynamicConvert.ToSafeInt(smsObj.cache_has_attachments);
                        if (cache_has_attachments == 1)
                        {
                            var attachmentIdList = messageAttachmentJoinDynamicList.FindAll(maj => DynamicConvert.ToSafeInt(maj.message_id) != 0 && DynamicConvert.ToSafeInt(maj.message_id) == smsId);
                            sms.Remark          += LanguageHelper.GetString(Languagekeys.PluginSMS_Attachment) + "; ";

                            foreach (var oneAttachIdObj in attachmentIdList)
                            {
                                int attId = DynamicConvert.ToSafeInt(oneAttachIdObj.attachment_id);

                                var attachObj =
                                    attachmentDynamicList.FirstOrDefault(att => DynamicConvert.ToSafeInt(att.ROWID) == attId);

                                if (attachObj != null)
                                {
                                    string attPath = DynamicConvert.ToSafeString(attachObj.filename);
                                    attPath        = attPath.Replace('/', '\\').TrimStart('~');
                                    sms.Remark    += FileHelper.ConnectPath(attendDirPath, attPath) + ";";
                                }
                            }
                        }

                        #endregion

                        sms.Remark = sms.Remark.TrimEnd(";");
                        if (sms.Remark.Contains(LanguageHelper.GetString(Languagekeys.PluginSMS_NotRead)))
                        {
                            sms.ReadState = EnumReadState.Unread;
                        }
                        else
                        {
                            sms.ReadState = EnumReadState.Read;
                        }

                        if (sms.Number.IsInvalid() && sms.Content.IsInvalid())
                        {
                            continue;
                        }

                        if (sms.Number.IsInvalid())
                        {
                            var address = DataParseHelper.NumberToStu(DynamicConvert.ToSafeString(smsObj.address));
                            sms.Number  = DynamicConvert.ToSafeString(address);
                        }

                        dataSource.Items.Add(sms);
                    }
                });
            }
            finally
            {
                mainContext?.Dispose();
                mainContext = null;
            }
        }
Example #13
0
        /// <summary>
        /// 解析数据
        /// </summary>
        /// <param name="dataSource"></param>
        public void BuildData(MMSDataSource dataSource)
        {
            if (!FileHelper.IsValid(MainDbPath))
            {
                return;
            }

            SqliteContext mainContext   = null;
            string        attendDirPath = MediaDomainPath;

            try
            {
                var rMainDbFile = SqliteRecoveryHelper.DataRecovery(MainDbPath, @"chalib\IOS_Sms\sms.db.charactor",
                                                                    "message,handle,attachment,chat,chat_message_join,chat_handle_join,message_attachment_join", true);
                mainContext = new SqliteContext(rMainDbFile);

                var messageSource = mainContext.Find(new SQLiteString("SELECT * FROM MESSAGE WHERE CACHE_HAS_ATTACHMENTS = 1 and ROWID not null"));
                var allContact    = mainContext.FindByName("HANDLE");
                foreach (var message in messageSource)
                {
                    var sb = new StringBuilder(
                        "select distinct atta.[filename],atta.[mime_type],atta.[created_date] from MESSAGE_ATTACHMENT_JOIN mes ");
                    sb.Append("left join attachment atta on mes.attachment_id = atta.[ROWID] ");
                    sb.AppendFormat("where mes.[message_id] = {0} and atta.filename not null", DynamicConvert.ToSafeString(message.ROWID));
                    var contact = allContact.First(cct => DynamicConvert.ToSafeInt(cct.ROWID) == DynamicConvert.ToSafeInt(message.handle_id));
                    var mms     = new MMS();
                    mms.SenderName = DynamicConvert.ToSafeString(contact.uncanonicalized_id);
                    mms.SendState  = DynamicConvert.ToSafeInt(message.is_from_me) == 1
                                        ? EnumSendState.Send
                                        : EnumSendState.Receive;
                    mms.Date     = DynamicConvert.ToSafeDateTime(message.date);
                    mms.ReadDate = DynamicConvert.ToSafeDateTime(message.date_read);
                    mms.Content  = DynamicConvert.ToSafeString(message.text).TrimStart('?') + Environment.NewLine;
                    // 获取当前消息的所有附件;
                    var attaSource = mainContext.Find(new SQLiteString(sb.ToString()));
                    foreach (var atta in attaSource)
                    {
                        if (FragmentHelper.IsValidFragment(atta))
                        {
                            continue;
                        }
                        string attPath = DynamicConvert.ToSafeString(atta.filename).TrimStart('~').TrimStart('/').Replace("/", @"\");
                        mms.Content += string.Format("{0}{1}", Path.Combine(attendDirPath, attPath), Environment.NewLine);
                    }

                    mms.Content = FragmentHelper.RemoveNullityDataNew(mms.Content.Trim());
                    // 验证内容是否为空
                    if (FragmentHelper.IsEmptyString(mms.Content))
                    {
                        continue;
                    }

                    dataSource.Items.Add(mms);
                }
            }
            finally
            {
                mainContext?.Dispose();
                mainContext = null;
            }
        }
        /// <summary>
        /// 解析数据
        /// </summary>
        /// <param name="datasource"></param>
        public void BuildData(ContactDataSource datasource)
        {
            if (!FileHelper.IsValid(MainDbPath))
            {
                return;
            }

            SqliteContext mainContext = null;

            try
            {
                var rMainDbFile = SqliteRecoveryHelper.DataRecovery(MainDbPath, @"chalib\IOS_Contact\AddressBook.sqlitedb_V7.charactor", "ABPerson,ABMultiValue,ABGroupMembers,ABGroup", true);
                mainContext = new SqliteContext(rMainDbFile);

                string groupString = "select member_id,Name from ABGroupMembers m left join ABGroup g on m.group_id == g.ROWID";
                var    groups      = mainContext.Find(groupString);

                mainContext.UsingSafeConnection("select p.*,v.record_id,v.property,v.label,v.[value] from ABPerson p,ABMultiValue v WHERE p.ROWID = v.record_id", r =>
                {
                    Contact contact;
                    dynamic contactObj;

                    while (r.Read())
                    {
                        contactObj = r.ToDynamic();
                        contact    = new Contact();

                        contact.DataState = DynamicConvert.ToEnumByValue(contactObj.XLY_DataType, EnumDataState.Normal);

                        //正常的联系人,目前只处理电话号码的信息,如亲属关系,社交等暂不处理。
                        if (contact.DataState == EnumDataState.Normal)
                        {
                            int propertyId = DynamicConvert.ToSafeInt(contactObj.property);
                            if (propertyId != 3)
                            {
                                continue;
                            }
                        }

                        contact.Name   = DynamicConvert.ToSafeString(contactObj.Last) + DynamicConvert.ToSafeString(contactObj.First);
                        contact.Name   = FragmentHelper.RemoveNullityDataNew(contact.Name);
                        contact.Number = DataParseHelper.NumberToStu(DynamicConvert.ToSafeString(contactObj.value));
                        // 号码过滤,验证号码长度
                        if (!DataParseHelper.ValidateNumber(contact.Number))
                        {
                            continue;
                        }

                        //创建时间(最后修改时间)
                        contact.CreateDate = DynamicConvert.ToSafeDateTime(contactObj.ModificationDate, 2001);

                        //联系人分组
                        int contactId = DynamicConvert.ToSafeInt(contactObj.ROWID);
                        var groupObj  = groups.FirstOrDefault(g => DynamicConvert.ToSafeInt(g.member_id) == contactId);
                        if (groupObj != null)
                        {
                            contact.GroupName = DynamicConvert.ToSafeString(groupObj.Name);
                        }

                        //基础备注
                        contact.Remark = BuildRemark(contactObj).ToString().TrimStart(';');

                        datasource.Items.Add(contact);
                    }
                });
            }
            finally
            {
                mainContext?.Dispose();
                mainContext = null;
            }
        }
        /// <summary>
        /// 解析数据
        /// </summary>
        /// <param name="datasource"></param>
        public void BuildData(SmsDataSource datasource)
        {
            if (!FileHelper.IsValid(MainDbPath))
            {
                return;
            }

            SqliteContext mainContext = null;

            try
            {
                string charatorPath = MatchCharatorPath();

                var rMainDbFile = SqliteRecoveryHelper.DataRecovery(MainDbPath, charatorPath, "sms", true);
                mainContext = new SqliteContext(rMainDbFile);

                string createSmsSql = string.Empty;
                var    smssList     = GetSmssList(mainContext, ref createSmsSql);

                if (smssList.IsInvalid())
                {
                    return;
                }

                var contactList = GetContactList();

                SMS item;
                foreach (var sms in smssList)
                {
                    try
                    {
                        item = new SMS();

                        item.Content = DynamicConvert.ToSafeString(sms.content);
                        item.Content = FragmentHelper.RemoveNullityDataNew(item.Content);

                        // 验证内容是否为空
                        if (FragmentHelper.IsEmptyString(item.Content))
                        {
                            continue;
                        }

                        item.SmsState    = DynamicConvert.ToEnumByValue <EnumSMSState>(sms.type, EnumSMSState.None);
                        item.Number      = DynamicConvert.ToSafeString(sms.number);
                        item.Number      = DataParseHelper.NumberToStu(item.Number);
                        item.ContactName = DynamicConvert.ToSafeString(sms.name);
                        if (item.ContactName.IsInvalid())
                        {
                            // 关联获取联系人名称
                            item.ContactName = GetContactName(item.Number, contactList);
                        }

                        item.DataState = DynamicConvert.ToEnumByValue <EnumDataState>(sms.XLY_DataType, EnumDataState.Normal);
                        if (DynamicConvert.ToSafeString(sms.deleted) == "1")
                        {
                            item.DataState = EnumDataState.Deleted;
                        }

                        item.StartDate = DynamicConvert.ToSafeDateTime(sms.date);
                        item.ReadState = DynamicConvert.ToSafeInt(sms.read) == 0 ? EnumReadState.Unread : EnumReadState.Read;

                        datasource.Items.Add(item);
                    }
                    catch
                    {
                    }
                }
            }
            finally
            {
                mainContext?.Dispose();
                mainContext = null;
            }
        }
Example #16
0
        /// <summary>
        /// 解析数据
        /// </summary>
        /// <param name="datasource"></param>
        public void BuildData(CallDataSource datasource)
        {
            if (!FileHelper.IsValid(MainDbPath))
            {
                return;
            }

            SqliteContext mainContext = null;

            try
            {
                //主数据库对象
                var mainDbPath = SqliteRecoveryHelper.DataRecovery(MainDbPath, "", "ZCALLRECORD", true);
                mainContext = new SqliteContext(mainDbPath);

                IEnumerable <dynamic> addressDynamicList = null;

                if (FileHelper.IsValid(AddrDbPath))
                {
                    var           addressDbPath = SqliteRecoveryHelper.DataRecovery(AddrDbPath, @"chalib\IOS_Contact\AddressBook.sqlitedb.charactor", "ABMultiValue,ABPerson", true);
                    SqliteContext addrContext   = new SqliteContext(addressDbPath);

                    addressDynamicList = addrContext.Find("select p.[value],p.[record_id],v.[Last],v.[ROWID] from ABMultiValue p left join ABPerson v on p.[record_id]=v.[ROWID] where p.[property]=3");

                    addrContext.Dispose();
                    addrContext = null;
                }

                mainContext.UsingSafeConnection("select XLY_DataType,ZDURATION,Z_OPT,ZDURATION,ZORIGINATED,cast(ZADDRESS as varchar) as number, cast(ZDATE as DATETIME) as phonetime from ZCALLRECORD", r =>
                {
                    Call call;
                    dynamic callObj;

                    while (r.Read())
                    {
                        callObj = r.ToDynamic();
                        call    = new Call();

                        call.Number = DataParseHelper.NumberToStu(DynamicConvert.ToSafeString(callObj.number));
                        // 号码过滤,验证号码长度
                        if (!DataParseHelper.ValidateNumber(call.Number))
                        {
                            continue;
                        }

                        if (addressDynamicList.IsValid())
                        {
                            var addressname = addressDynamicList.FirstOrDefault(o => DynamicConvert.ToSafeString(o.value).Replace("-", "").Equals(callObj.number));
                            if (addressname != null)
                            {
                                call.Name = FragmentHelper.RemoveNullityDataNew(DynamicConvert.ToSafeString(addressname.Last));
                            }
                        }

                        call.DataState      = DynamicConvert.ToEnumByValue(callObj.XLY_DataType, EnumDataState.Normal);
                        call.DurationSecond = DynamicConvert.ToSafeInt(callObj.ZDURATION);

                        string time     = DynamicConvert.ToSafeString(callObj.phonetime).Insert(0, "1");
                        double opertime = time.ToDouble() - 21692848;
                        call.StartDate  = DynamicConvert.ToSafeDateTime(opertime);

                        call.Type = GetCallV10Status(DynamicConvert.ToSafeInt(callObj.ZORIGINATED), call.DurationSecond);

                        datasource.Items.Add(call);
                    }
                });
            }
            finally
            {
                mainContext?.Dispose();
                mainContext = null;
            }
        }