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); }
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); }
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); } }
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(); } }
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]); } }
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); }
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(); } }
private void SwitchToTabFragment(int resourceID) { _isInSettings = false; if (_currentTabID != resourceID) { _currentTabID = resourceID; FragmentHelper.PopAll(this); FragmentHelper.Push(this, GetTabFragment(_currentTabID)); } else { FragmentHelper.PopAllButOne(this); } }
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; } }
/// <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; } }
/// <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; } }