ChatViewccc.rtf 732 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987249882498924990249912499224993249942499524996249972499824999250002500125002250032500425005250062500725008250092501025011250122501325014250152501625017250182501925020250212502225023250242502525026250272502825029250302503125032250332503425035250362503725038250392504025041250422504325044250452504625047250482504925050250512505225053250542505525056250572505825059250602506125062250632506425065250662506725068250692507025071250722507325074250752507625077250782507925080250812508225083250842508525086250872508825089250902509125092250932509425095250962509725098250992510025101251022510325104251052510625107251082510925110251112511225113251142511525116251172511825119251202512125122251232512425125251262512725128251292513025131251322513325134251352513625137251382513925140251412514225143251442514525146251472514825149251502515125152251532515425155251562515725158251592516025161251622516325164251652516625167251682516925170251712517225173251742517525176251772517825179251802518125182251832518425185251862518725188251892519025191251922519325194251952519625197251982519925200252012520225203252042520525206252072520825209252102521125212252132521425215252162521725218252192522025221252222522325224252252522625227252282522925230252312523225233252342523525236252372523825239252402524125242252432524425245252462524725248252492525025251252522525325254252552525625257252582525925260252612526225263252642526525266252672526825269252702527125272252732527425275252762527725278252792528025281252822528325284252852528625287252882528925290252912529225293252942529525296252972529825299253002530125302253032530425305253062530725308253092531025311253122531325314253152531625317253182531925320253212532225323253242532525326253272532825329253302533125332253332533425335253362533725338253392534025341253422534325344253452534625347253482534925350253512535225353253542535525356253572535825359253602536125362253632536425365253662536725368253692537025371253722537325374253752537625377253782537925380253812538225383253842538525386253872538825389253902539125392253932539425395253962539725398253992540025401254022540325404254052540625407254082540925410254112541225413254142541525416254172541825419254202542125422254232542425425254262542725428254292543025431254322543325434254352543625437254382543925440254412544225443254442544525446254472544825449254502545125452254532545425455254562545725458254592546025461254622546325464254652546625467254682546925470254712547225473254742547525476254772547825479254802548125482254832548425485254862548725488254892549025491254922549325494254952549625497254982549925500255012550225503255042550525506255072550825509255102551125512255132551425515255162551725518255192552025521255222552325524255252552625527255282552925530255312553225533255342553525536255372553825539255402554125542255432554425545255462554725548255492555025551255522555325554255552555625557255582555925560255612556225563255642556525566255672556825569255702557125572255732557425575255762557725578255792558025581255822558325584255852558625587255882558925590255912559225593255942559525596255972559825599256002560125602256032560425605256062560725608256092561025611256122561325614256152561625617256182561925620256212562225623256242562525626256272562825629256302563125632256332563425635256362563725638256392564025641256422564325644256452564625647256482564925650256512565225653256542565525656256572565825659256602566125662256632566425665256662566725668256692567025671256722567325674256752567625677256782567925680256812568225683256842568525686256872568825689256902569125692256932569425695256962569725698256992570025701257022570325704257052570625707257082570925710257112571225713257142571525716257172571825719257202572125722257232572425725257262572725728257292573025731257322573325734257352573625737257382573925740257412574225743257442574525746257472574825749257502575125752257532575425755257562575725758257592576025761257622576325764257652576625767257682576925770257712577225773257742577525776257772577825779257802578125782257832578425785257862578725788257892579025791257922579325794257952579625797257982579925800258012580225803258042580525806258072580825809258102581125812258132581425815258162581725818258192582025821258222582325824258252582625827258282582925830258312583225833258342583525836258372583825839258402584125842258432584425845258462584725848258492585025851258522585325854258552585625857258582585925860258612586225863258642586525866258672586825869258702587125872258732587425875258762587725878258792588025881258822588325884258852588625887258882588925890258912589225893258942589525896258972589825899259002590125902259032590425905259062590725908259092591025911259122591325914259152591625917259182591925920259212592225923259242592525926259272592825929259302593125932259332593425935259362593725938259392594025941259422594325944259452594625947259482594925950259512595225953259542595525956259572595825959259602596125962259632596425965259662596725968259692597025971259722597325974259752597625977259782597925980259812598225983259842598525986259872598825989259902599125992259932599425995259962599725998259992600026001260022600326004260052600626007260082600926010260112601226013260142601526016260172601826019260202602126022260232602426025260262602726028260292603026031260322603326034260352603626037260382603926040260412604226043260442604526046260472604826049260502605126052260532605426055260562605726058260592606026061260622606326064260652606626067260682606926070260712607226073260742607526076260772607826079260802608126082260832608426085260862608726088260892609026091260922609326094260952609626097260982609926100261012610226103261042610526106261072610826109261102611126112261132611426115261162611726118261192612026121261222612326124261252612626127261282612926130261312613226133261342613526136261372613826139261402614126142261432614426145261462614726148261492615026151261522615326154261552615626157261582615926160261612616226163261642616526166261672616826169261702617126172261732617426175261762617726178261792618026181261822618326184261852618626187261882618926190261912619226193261942619526196261972619826199262002620126202262032620426205262062620726208262092621026211262122621326214262152621626217262182621926220262212622226223262242622526226262272622826229262302623126232262332623426235262362623726238262392624026241262422624326244262452624626247262482624926250262512625226253262542625526256262572625826259262602626126262262632626426265262662626726268262692627026271262722627326274262752627626277262782627926280262812628226283262842628526286262872628826289262902629126292262932629426295262962629726298262992630026301263022630326304263052630626307263082630926310263112631226313263142631526316263172631826319263202632126322263232632426325263262632726328263292633026331263322633326334263352633626337263382633926340263412634226343263442634526346263472634826349263502635126352263532635426355263562635726358263592636026361263622636326364263652636626367263682636926370263712637226373263742637526376263772637826379263802638126382263832638426385263862638726388263892639026391263922639326394263952639626397263982639926400264012640226403264042640526406264072640826409264102641126412264132641426415264162641726418264192642026421264222642326424264252642626427264282642926430264312643226433264342643526436264372643826439264402644126442264432644426445264462644726448264492645026451264522645326454264552645626457264582645926460264612646226463264642646526466264672646826469264702647126472264732647426475264762647726478264792648026481264822648326484264852648626487264882648926490264912649226493
  1. {\rtf1\ansi\ansicpg936\cocoartf2513
  2. \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 Menlo-Regular;\f1\fnil\fcharset134 PingFangSC-Regular;\f2\fnil\fcharset0 Menlo-Bold;
  3. \f3\fnil\fcharset0 HelveticaNeue;\f4\fnil\fcharset134 PingFangSC-Semibold;\f5\fnil\fcharset0 AppleColorEmoji;
  4. }
  5. {\colortbl;\red255\green255\blue255;\red93\green108\blue121;\red255\green255\blue255;\red0\green0\blue0;
  6. \red100\green56\blue32;\red196\green26\blue22;\red28\green0\blue207;\red155\green35\blue147;\red28\green70\blue74;
  7. \red57\green0\blue160;\red15\green104\blue160;\red93\green108\blue121;\red11\green79\blue121;\red108\green54\blue169;
  8. \red50\green109\blue116;\red74\green85\blue96;\red14\green14\blue255;}
  9. {\*\expandedcolortbl;;\csgenericrgb\c36526\c42188\c47515;\csgenericrgb\c100000\c100000\c100000;\csgenericrgb\c0\c0\c0\c85000;
  10. \csgenericrgb\c39147\c22031\c12446;\csgenericrgb\c77000\c10200\c8600;\csgenericrgb\c11000\c0\c81000;\csgenericrgb\c60759\c13753\c57628;\csgenericrgb\c10981\c27276\c28869;
  11. \csgenericrgb\c22454\c0\c62803;\csgenericrgb\c5882\c40784\c62745;\csgenericrgb\c36526\c42188\c47515\c35000;\csgenericrgb\c4314\c30980\c47451;\csgenericrgb\c42190\c21278\c66379;
  12. \csgenericrgb\c19418\c42935\c45455;\csgenericrgb\c29020\c33333\c37647;\csgenericrgb\c5500\c5500\c100000;}
  13. \margl1440\margr1440\vieww9000\viewh8400\viewkind0
  14. \deftab593
  15. \pard\tx593\pardeftab593\pardirnatural\partightenfactor0
  16. \f0\fs24 \cf2 \cb3 //\cf4 \
  17. \cf2 // JXChatViewController.m\cf4 \
  18. \cf2 //\cf4 \
  19. \cf2 // Created by Reese on 13-8-11.\cf4 \
  20. \cf2 // Copyright (c) 2013
  21. \f1 \'c4\'ea
  22. \f0 Reese. All rights reserved.\cf4 \
  23. \cf2 //
  24. \f1 \'a3\'bf
  25. \f0 1111\cf4 \
  26. \
  27. \cf5 #import \cf6 "JXChatViewController.h"\cf4 \
  28. \cf5 #import \cf6 "CYWebAddPointVC.h"\cf4 \
  29. \cf5 #import \cf6 "ChatCacheFileUtil.h"\cf4 \
  30. \cf5 #import \cf6 "VoiceConverter.h"\cf4 \
  31. \cf5 #import \cf6 "Photo.h"\cf4 \
  32. \cf5 #import \cf6 "NSData+XMPP.h"\cf4 \
  33. \cf5 #import \cf6 "AppDelegate.h"\cf4 \
  34. \cf5 #import \cf6 "JXEmoji.h"\cf4 \
  35. \cf5 #import \cf6 "FaceViewController.h"\cf4 \
  36. \cf5 #import \cf6 "gifViewController.h"\cf4 \
  37. \cf5 #import \cf6 "emojiViewController.h"\cf4 \
  38. \cf5 #import \cf6 "SCGIFImageView.h"\cf4 \
  39. \cf2 //#import "JXImageView.h"\cf4 \
  40. \cf5 #import \cf6 "JXSelectImageView.h"\cf4 \
  41. \cf5 #import \cf6 "emojiViewController.h"\cf4 \
  42. \cf5 #import \cf6 "JXTableView.h"\cf4 \
  43. \cf5 #import \cf6 "LXActionSheet.h"\cf4 \
  44. \cf5 #import \cf6 "JXVolumeView.h"\cf4 \
  45. \cf5 #import \cf6 "myMediaVC.h"\cf4 \
  46. \cf5 #import \cf6 "JXMediaObject.h"\cf4 \
  47. \cf5 #import \cf6 "FMDatabase.h"\cf4 \
  48. \cf5 #import \cf6 "JXMyTools.h"\cf4 \
  49. \cf5 #if TAR_IM\cf4 \
  50. \cf5 #ifdef Meeting_Version\cf4 \
  51. \cf5 #import \cf6 "JXMeetingObject.h"\cf4 \
  52. \cf5 #import \cf6 "AskCallViewController.h"\cf4 \
  53. \cf5 #import \cf6 "JXAVCallViewController.h"\cf4 \
  54. \cf5 #endif\cf4 \
  55. \cf5 #endif\cf4 \
  56. \cf5 #ifdef Live_Version\cf4 \
  57. \cf5 #import \cf6 "JXLiveJidManager.h"\cf4 \
  58. \cf5 #endif\cf4 \
  59. \cf5 #import \cf6 "JXUserInfoVC.h"\cf4 \
  60. \cf5 #import \cf6 "JXRoomMemberVC.h"\cf4 \
  61. \cf5 #import \cf6 "JXRoomObject.h"\cf4 \
  62. \cf5 #import \cf6 "JXRoomRemind.h"\cf4 \
  63. \cf5 #import \cf6 "JXSelFriendVC.h"\cf4 \
  64. \cf5 #import \cf6 "JXMyFile.h"\cf4 \
  65. \cf5 #import \cf6 "JXShareFileObject.h"\cf4 \
  66. \cf5 #import \cf6 "JXFileDetailViewController.h"\cf4 \
  67. \
  68. \cf5 #import \cf6 "JXMapData.h"\cf4 \
  69. \cf5 #import \cf6 "JXSendRedPacketViewController.h"\cf4 \
  70. \
  71. \cf5 #import \cf6 "JXredPacketDetailVC.h"\cf4 \
  72. \cf5 #import \cf6 "JXOpenRedPacketVC.h"\cf4 \
  73. \cf2 //
  74. \f1 \'cc\'ed\'bc\'d3
  75. \f0 VC
  76. \f1 \'d7\'aa\'b3\'a1\'b6\'af\'bb\'ad
  77. \f0 \cf4 \
  78. \cf5 #import \cf6 "DMScaleTransition.h"\cf4 \
  79. \cf2 //
  80. \f1 \'b8\'f7\'d6\'d6
  81. \f0 Cell\cf4 \
  82. \cf5 #import \cf6 "JXBaseChatCell.h"\cf4 \
  83. \cf5 #import \cf6 "JXMessageCell.h"\cf4 \
  84. \cf5 #import \cf6 "JXImageCell.h"\cf4 \
  85. \cf5 #import \cf6 "JXFileCell.h"\cf4 \
  86. \cf5 #import \cf6 "JXVideoCell.h"\cf4 \
  87. \cf5 #import \cf6 "JXAudioCell.h"\cf4 \
  88. \cf5 #import \cf6 "JXLocationCell.h"\cf4 \
  89. \cf5 #import \cf6 "JXCardCell.h"\cf4 \
  90. \cf5 #import \cf6 "JXRedPacketCell.h"\cf4 \
  91. \cf5 #import \cf6 "JXRemindCell.h"\cf4 \
  92. \cf5 #import \cf6 "JXGifCell.h"\cf4 \
  93. \cf5 #import \cf6 "JXSystemImage1Cell.h"\cf4 \
  94. \cf5 #import \cf6 "JXSystemImage2Cell.h"\cf4 \
  95. \cf5 #import \cf6 "JXAVCallCell.h"\cf4 \
  96. \cf5 #import \cf6 "JXLinkCell.h"\cf4 \
  97. \cf5 #import \cf6 "JXShakeCell.h"\cf4 \
  98. \cf5 #import \cf6 "JXNewShakeCell.h"\cf4 \
  99. \cf5 #import \cf6 "JXMergeRelayCell.h"\cf4 \
  100. \cf5 #import \cf6 "JXShareCell.h"\cf4 \
  101. \cf5 #import \cf6 "JXTransferCell.h"\cf4 \
  102. \cf5 #import \cf6 "JXReplyCell.h"\cf4 \
  103. \
  104. \cf5 #import \cf6 "EmojiTextAttachment.h"\cf4 \
  105. \cf5 #import \cf6 "NSAttributedString+EmojiExtension.h"\cf4 \
  106. \
  107. \cf5 #import \cf6 "ImageBrowserViewController.h"\cf4 \
  108. \cf5 #import \cf6 "JXRelayVC.h"\cf4 \
  109. \cf5 #import \cf6 "webpageVC.h"\cf4 \
  110. \cf5 #import \cf6 "JX_DownListView.h"\cf4 \
  111. \cf5 #import \cf6 "JXReadListVC.h"\cf4 \
  112. \cf5 #import \cf6 <AssetsLibrary/AssetsLibrary.h>\cf4 \
  113. \cf5 #import \cf6 "UIImageView+WebCache.h"\cf4 \
  114. \cf5 #import \cf6 "JXCameraVC.h"\cf4 \
  115. \cf5 #import \cf6 "JXChatSettingVC.h"\cf4 \
  116. \cf5 #import \cf6 "JXVerifyDetailVC.h"\cf4 \
  117. \cf5 #import \cf6 "JXDevice.h"\cf4 \
  118. \cf5 #import \cf6 "JXChatLogVC.h"\cf4 \
  119. \cf5 #import \cf6 "JXSelectFriendsVC.h"\cf4 \
  120. \cf5 #import \cf6 "JXMsgViewController.h"\cf4 \
  121. \cf5 #import \cf6 "WeiboViewControlle.h"\cf4 \
  122. \cf5 #import \cf6 "ObjUrlData.h"\cf4 \
  123. \cf5 #import \cf6 "JXSynTask.h"\cf4 \
  124. \cf5 #import \cf6 "JXGoogleMapVC.h"\cf4 \
  125. \cf5 #import \cf6 "RITLPhotosViewController.h"\cf4 \
  126. \cf5 #import \cf6 "RITLPhotosDataManager.h"\cf4 \
  127. \cf5 #import \cf6 "JXActionSheetVC.h"\cf4 \
  128. \cf5 #import \cf6 "JXInputVC.h"\cf4 \
  129. \cf5 #import \cf6 "JXRoomPool.h"\cf4 \
  130. \cf5 #import \cf6 "KKImageEditorViewController.h"\cf4 \
  131. \cf5 #import \cf6 "JXTransferViewController.h"\cf4 \
  132. \cf5 #import \cf6 "JXTransferDeatilVC.h"\cf4 \
  133. \cf5 #import \cf6 "JXSelectAddressBookVC.h"\cf4 \
  134. \cf5 #import \cf6 "JXInputMoneyVC.h"\cf4 \
  135. \cf5 #import \cf6 "JXGroupHelperListVC.h"\cf4 \
  136. \cf5 #import \cf6 "JXGroupHeplerModel.h"\cf4 \
  137. \cf5 #import \cf6 "JXAutoReplyAideVC.h"\cf4 \
  138. \cf5 #import \cf6 "JXLabelObject.h"\cf4 \
  139. \cf5 #import \cf6 "JXEmojiCell.h"\cf4 \
  140. \cf5 #import \cf6 "JXFaceCustomCell.h"\cf4 \
  141. \cf5 #import \cf6 "CYGroupSendHelperViewController.h"\cf4 \
  142. \cf5 #import \cf6 "DYAdAlertView.h"\cf4 \
  143. \cf5 #import \cf6 "DYWKWebVC.h"\cf4 \
  144. \cf5 #import \cf6 "DYAdModel.h"\cf4 \
  145. \cf5 #import \cf6 "STAlertView.h"\cf4 \
  146. \cf5 #import \cf6 "XLsn0wInputBox.h"\cf4 \
  147. \cf5 #import \cf6 "JLGroupActivityModel.h"\cf4 \
  148. \cf5 #import \cf6 "DSHPopupContainer.h"\cf4 \
  149. \cf5 #import \cf6 "JLSelectView.h"\cf4 \
  150. \cf5 #import \cf6 "MISFloatingBall.h"\cf4 \
  151. \cf5 #import \cf6 "CYWebCustomerServiceVC.h"\cf4 \
  152. \cf5 #import \cf6 "JXUserDetialVc.h"\cf4 \
  153. \cf5 #import \cf6 "JXtopShowVIew.h"\cf4 \
  154. \cf5 #import \cf6 "JxChatGetNoticePersonVc.h"\cf4 \
  155. \
  156. \
  157. \cf5 #import \cf6 "JXMyBaseInFovc.h"\cf4 \
  158. \cf5 #import \cf6 "JXSelecAttionPerson.h"\cf4 \
  159. \cf5 #import \cf6 "JxnoticeScrollView.h"\cf4 \
  160. \cf5 #import \cf6 "JXSelfUserInfoVC.h"\cf4 \
  161. \cf5 #import \cf6 "JXCsHomeVc.h"\cf4 \
  162. \cf5 #import \cf6 "JXSiDaiWebView.h"\cf4 \
  163. \cf5 #import \cf6 "JXBigReelVc.h"\cf4 \
  164. \cf5 #import \cf6 "JXLuckRescueFundVc.h"\cf4 \
  165. \cf5 #import \cf6 "JXApplyViewController.h"\cf4 \
  166. \cf5 #import \cf6 "JXGoldMangVc.h"\cf4 \
  167. \
  168. \cf5 #define faceHeight (THE_DEVICE_HAVE_HEAD ? \cf7 253\cf5 : \cf7 218\cf5 )\cf4 \
  169. \cf5 #define PAGECOUNT \cf7 50\cf4 \
  170. \cf5 #define NOTICE_WIDTH \cf7 120\cf5 \cf2 //
  171. \f1 \'b5\'f7\'d5\'fb\'c1\'bd\'cc\'f5\'b9\'ab\'b8\'e6\'bc\'e4\'b5\'c4\'be\'e0\'c0\'eb
  172. \f0 \cf4 \
  173. \
  174. \cf5 #define UpdateAcceptCallMsg @\cf6 "UpdateAcceptCallMsg"\cf4 \
  175. \
  176. \
  177. \cf5 #define tableBarHHH \cf7 53\cf4 \
  178. \
  179. \cf5 #define keboardHHH \cf7 44\cf4 \
  180. \
  181. \
  182. \cf5 #define groupsend_msgType_text \cf7 1\cf4 \
  183. \cf5 #define groupsend_msgType_image \cf7 2\cf4 \
  184. \cf5 #define groupsend_msgType_video \cf7 3\cf4 \
  185. \cf5 #define groupsend_msgType_audio \cf7 4\cf4 \
  186. \cf5 #define groupsend_msgType_file \cf7 5\cf4 \
  187. \cf5 #define groupsend_msgType_shake \cf7 6\cf4 \
  188. \cf5 #define groupsend_msgType_addressbook \cf7 7\cf4 \
  189. \cf5 #define groupsend_msgType_card \cf7 8\cf4 \
  190. \cf5 #define groupsend_msgType_collect \cf7 9\cf4 \
  191. \cf5 #define groupsend_msgType_imagesAndVideos \cf7 10\cf4 \
  192. \cf5 #define groupsend_msgType_location \cf7 11\cf4 \
  193. \
  194. \f2\b \cf8 @interface
  195. \f0\b0 \cf4 \cf9 JXChatViewController\cf4 ()<\cf9 FaceViewControllerDelegate\cf4 ,\cf9 gifViewControllerDelegate\cf4 ,\cf9 FavoritesVCDelegate\cf4 ,\cf9 JXChatCellDelegate\cf4 ,\cf9 JXRoomMemberVCDelegate\cf4 ,\cf9 SendRedPacketVCDelegate\cf4 ,\cf10 UIAlertViewDelegate\cf4 ,\cf9 JXRelayVCDelegate\cf4 ,\cf9 JXCameraVCDelegate\cf4 ,\cf9 ImageBrowserVCDelegate\cf4 ,\cf9 weiboVCDelegate\cf4 ,\cf9 RITLPhotosViewControllerDelegate\cf4 ,\cf9 JXVideoCellDelegate\cf4 ,\cf9 JXActionSheetVCDelegate\cf4 ,\cf10 UINavigationControllerDelegate\cf4 ,\cf9 KKImageEditorDelegate\cf4 ,\cf9 transferVCDelegate\cf4 ,\cf9 JXSelectAddressBookVCDelegate\cf4 ,\cf9 JXRoomObjectDelegate\cf4 >\{\
  196. \
  197. \cf10 CGRect\cf4 _lastFrame;\
  198. \}\
  199. \f2\b \cf8 @property
  200. \f0\b0 \cf4 (
  201. \f2\b \cf8 nonatomic
  202. \f0\b0 \cf4 ,
  203. \f2\b \cf8 strong
  204. \f0\b0 \cf4 ) \cf10 UIButton\cf4 *\cf11 selectButton\cf4 ;\
  205. \f2\b \cf8 @property
  206. \f0\b0 \cf4 (
  207. \f2\b \cf8 nonatomic
  208. \f0\b0 \cf4 ,
  209. \f2\b \cf8 strong
  210. \f0\b0 \cf4 ) \cf9 DSHPopupContainer\cf4 *\cf11 container\cf4 ;\
  211. \f2\b \cf8 @property
  212. \f0\b0 \cf4 (
  213. \f2\b \cf8 nonatomic
  214. \f0\b0 \cf4 ,
  215. \f2\b \cf8 strong
  216. \f0\b0 \cf4 )\cf9 JLGroupActivityModel\cf4 *\cf11 activityModel\cf4 ;\
  217. \f2\b \cf8 @property
  218. \f0\b0 \cf4 (
  219. \f2\b \cf8 nonatomic
  220. \f0\b0 \cf4 ,
  221. \f2\b \cf8 assign
  222. \f0\b0 \cf4 ) \cf10 CGFloat\cf4 \cf11 deltaY\cf4 ;\
  223. \f2\b \cf8 @property
  224. \f0\b0 \cf4 (
  225. \f2\b \cf8 nonatomic
  226. \f0\b0 \cf4 ,
  227. \f2\b \cf8 assign
  228. \f0\b0 \cf4 ) \cf10 CGFloat\cf4 \cf11 deltaHeight\cf4 ;\
  229. \cf2 //@property (nonatomic, strong) DMAlphaTransition *alphaTransition;\cf4 \
  230. \f2\b \cf8 @property
  231. \f0\b0 \cf4 (
  232. \f2\b \cf8 nonatomic
  233. \f0\b0 \cf4 ,
  234. \f2\b \cf8 strong
  235. \f0\b0 \cf4 ) \cf9 DMScaleTransition\cf4 *\cf11 scaleTransition\cf4 ;\
  236. \cf2 //@property (nonatomic, strong) DMSlideTransition *slideTransition;\cf4 \
  237. \f2\b \cf8 @property
  238. \f0\b0 \cf4 (
  239. \f2\b \cf8 nonatomic
  240. \f0\b0 \cf4 ,
  241. \f2\b \cf8 strong
  242. \f0\b0 \cf4 ) \cf10 NSArray\cf4 *\cf11 allChatImageArr\cf4 ;\cf2 //
  243. \f1 \'cf\'fb\'cf\'a2\'bc\'c7\'c2\'bc\'c0\'ef\'cb\'f9\'d3\'d0\'cd\'bc\'c6\'ac
  244. \f0 \cf4 \
  245. \f2\b \cf8 @property
  246. \f0\b0 \cf4 (
  247. \f2\b \cf8 nonatomic
  248. \f0\b0 \cf4 ,
  249. \f2\b \cf8 assign
  250. \f0\b0 \cf4 )
  251. \f2\b \cf8 BOOL
  252. \f0\b0 \cf4 \cf11 isReadDelete\cf4 ;\
  253. \f2\b \cf8 @property
  254. \f0\b0 \cf4 (
  255. \f2\b \cf8 nonatomic
  256. \f0\b0 \cf4 ,
  257. \f2\b \cf8 copy
  258. \f0\b0 \cf4 ) \cf10 NSMutableString\cf4 *\cf11 sendText\cf4 ;\
  259. \f2\b \cf8 @property
  260. \f0\b0 \cf4 (
  261. \f2\b \cf8 nonatomic
  262. \f0\b0 \cf4 ,
  263. \f2\b \cf8 strong
  264. \f0\b0 \cf4 ) \cf10 NSMutableString\cf4 *\cf11 names\cf4 ; \cf2 //
  265. \f1 \'c8\'ba\'b7\'a2\'d6\'fa\'ca\'d6\'b1\'ea\'c7\'a9\'c6\'b4\'bd\'d3\'d7\'d6\'b7\'fb\'b4\'ae
  266. \f0 \cf4 \
  267. \f2\b \cf8 @property
  268. \f0\b0 \cf4 (
  269. \f2\b \cf8 nonatomic
  270. \f0\b0 \cf4 ,
  271. \f2\b \cf8 strong
  272. \f0\b0 \cf4 ) \cf10 NSMutableString\cf4 *\cf11 names2\cf4 ; \cf2 //
  273. \f1 \'c8\'ba\'b7\'a2\'d6\'fa\'ca\'d6\'c8\'ba\'d7\'e9\'c6\'b4\'bd\'d3\'d7\'d6\'b7\'fb\'b4\'ae
  274. \f0 \cf4 \
  275. \
  276. \f2\b \cf8 @property
  277. \f0\b0 \cf4 (
  278. \f2\b \cf8 nonatomic
  279. \f0\b0 \cf4 ,
  280. \f2\b \cf8 strong
  281. \f0\b0 \cf4 ) \cf10 NSTimer\cf4 *\cf11 timer\cf4 ;\
  282. \f2\b \cf8 @property
  283. \f0\b0 \cf4 (
  284. \f2\b \cf8 nonatomic
  285. \f0\b0 \cf4 ,
  286. \f2\b \cf8 assign
  287. \f0\b0 \cf4 )
  288. \f2\b \cf8 BOOL
  289. \f0\b0 \cf4 \cf11 loginStatus\cf4 ;\
  290. \f2\b \cf8 @property
  291. \f0\b0 \cf4 (
  292. \f2\b \cf8 nonatomic
  293. \f0\b0 \cf4 ,
  294. \f2\b \cf8 strong
  295. \f0\b0 \cf4 ) \cf10 NSTimer\cf4 *\cf11 enteringTimer\cf4 ;\
  296. \f2\b \cf8 @property
  297. \f0\b0 \cf4 (
  298. \f2\b \cf8 nonatomic
  299. \f0\b0 \cf4 ,
  300. \f2\b \cf8 strong
  301. \f0\b0 \cf4 ) \cf10 NSTimer\cf4 *\cf11 noEnteringTimer\cf4 ;\
  302. \f2\b \cf8 @property
  303. \f0\b0 \cf4 (
  304. \f2\b \cf8 nonatomic
  305. \f0\b0 \cf4 ,
  306. \f2\b \cf8 assign
  307. \f0\b0 \cf4 )
  308. \f2\b \cf8 BOOL
  309. \f0\b0 \cf4 \cf11 isSendEntering\cf4 ;\
  310. \f2\b \cf8 @property
  311. \f0\b0 \cf4 (
  312. \f2\b \cf8 nonatomic
  313. \f0\b0 \cf4 ,
  314. \f2\b \cf8 assign
  315. \f0\b0 \cf4 )
  316. \f2\b \cf8 BOOL
  317. \f0\b0 \cf4 \cf11 isGetServerMsg\cf4 ;\
  318. \f2\b \cf8 @property
  319. \f0\b0 \cf4 (
  320. \f2\b \cf8 nonatomic
  321. \f0\b0 \cf4 ,
  322. \f2\b \cf8 assign
  323. \f0\b0 \cf4 )
  324. \f2\b \cf8 int
  325. \f0\b0 \cf4 \cf11 serverMsgPage\cf4 ;\
  326. \f2\b \cf8 @property
  327. \f0\b0 \cf4 (
  328. \f2\b \cf8 nonatomic
  329. \f0\b0 \cf4 ,
  330. \f2\b \cf8 strong
  331. \f0\b0 \cf4 ) \cf10 NSMutableArray\cf4 * \cf11 atMemberArray\cf4 ;\
  332. \
  333. \f2\b \cf8 @property
  334. \f0\b0 \cf4 (
  335. \f2\b \cf8 nonatomic
  336. \f0\b0 \cf4 ,
  337. \f2\b \cf8 copy
  338. \f0\b0 \cf4 ) \cf10 NSString\cf4 *\cf11 userNickName\cf4 ;\
  339. \f2\b \cf8 @property
  340. \f0\b0 \cf4 (
  341. \f2\b \cf8 nonatomic
  342. \f0\b0 \cf4 ,
  343. \f2\b \cf8 assign
  344. \f0\b0 \cf4 )
  345. \f2\b \cf8 BOOL
  346. \f0\b0 \cf4 \cf11 firstGetUser\cf4 ;\
  347. \f2\b \cf8 @property
  348. \f0\b0 \cf4 (
  349. \f2\b \cf8 nonatomic
  350. \f0\b0 \cf4 ,
  351. \f2\b \cf8 assign
  352. \f0\b0 \cf4 )
  353. \f2\b \cf8 BOOL
  354. \f0\b0 \cf4 \cf11 onlinestate\cf4 ;\
  355. \
  356. \f2\b \cf8 @property
  357. \f0\b0 \cf4 (
  358. \f2\b \cf8 nonatomic
  359. \f0\b0 \cf4 ,
  360. \f2\b \cf8 strong
  361. \f0\b0 \cf4 ) \cf10 UIView\cf4 *\cf11 publicMenuBar\cf4 ;\
  362. \f2\b \cf8 @property
  363. \f0\b0 \cf4 (
  364. \f2\b \cf8 nonatomic
  365. \f0\b0 \cf4 ,
  366. \f2\b \cf8 strong
  367. \f0\b0 \cf4 ) \cf10 NSArray\cf4 *\cf11 menuList\cf4 ;\
  368. \f2\b \cf8 @property
  369. \f0\b0 \cf4 (
  370. \f2\b \cf8 nonatomic
  371. \f0\b0 \cf4 ,
  372. \f2\b \cf8 assign
  373. \f0\b0 \cf4 ) \cf10 NSInteger\cf4 \cf11 selMenuIndex\cf4 ;\
  374. \
  375. \f2\b \cf8 @property
  376. \f0\b0 \cf4 (
  377. \f2\b \cf8 nonatomic
  378. \f0\b0 \cf4 ,
  379. \f2\b \cf8 assign
  380. \f0\b0 \cf4 ) \cf10 NSInteger\cf4 \cf11 withdrawIndex\cf4 ;\
  381. \
  382. \f2\b \cf8 @property
  383. \f0\b0 \cf4 (
  384. \f2\b \cf8 nonatomic
  385. \f0\b0 \cf4 ,
  386. \f2\b \cf8 strong
  387. \f0\b0 \cf4 ) \cf10 NSMutableArray\cf4 *\cf11 recordArray\cf4 ;\
  388. \f2\b \cf8 @property
  389. \f0\b0 \cf4 (
  390. \f2\b \cf8 nonatomic
  391. \f0\b0 \cf4 ,
  392. \f2\b \cf8 copy
  393. \f0\b0 \cf4 ) \cf10 NSString\cf4 *\cf11 recordName\cf4 ;\
  394. \f2\b \cf8 @property
  395. \f0\b0 \cf4 (
  396. \f2\b \cf8 nonatomic
  397. \f0\b0 \cf4 ,
  398. \f2\b \cf8 assign
  399. \f0\b0 \cf4 )
  400. \f2\b \cf8 BOOL
  401. \f0\b0 \cf4 \cf11 isRecording\cf4 ;\
  402. \f2\b \cf8 @property
  403. \f0\b0 \cf4 (
  404. \f2\b \cf8 nonatomic
  405. \f0\b0 \cf4 ,
  406. \f2\b \cf8 assign
  407. \f0\b0 \cf4 ) \cf10 NSInteger\cf4 \cf11 recordStarNum\cf4 ;\
  408. \
  409. \f2\b \cf8 @property
  410. \f0\b0 \cf4 (
  411. \f2\b \cf8 nonatomic
  412. \f0\b0 \cf4 ,
  413. \f2\b \cf8 strong
  414. \f0\b0 \cf4 ) \cf9 ATMHud\cf4 *\cf11 chatWait\cf4 ;\
  415. \f2\b \cf8 @property
  416. \f0\b0 \cf4 (
  417. \f2\b \cf8 nonatomic
  418. \f0\b0 \cf4 ,
  419. \f2\b \cf8 assign
  420. \f0\b0 \cf4 )
  421. \f2\b \cf8 int
  422. \f0\b0 \cf4 \cf11 sendIndex\cf4 ;\
  423. \
  424. \f2\b \cf8 @property
  425. \f0\b0 \cf4 (
  426. \f2\b \cf8 nonatomic
  427. \f0\b0 \cf4 ,
  428. \f2\b \cf8 strong
  429. \f0\b0 \cf4 ) \cf9 JXLocationVC\cf4 *\cf11 locVC\cf4 ;\
  430. \f2\b \cf8 @property
  431. \f0\b0 \cf4 (
  432. \f2\b \cf8 nonatomic
  433. \f0\b0 \cf4 ,
  434. \f2\b \cf8 strong
  435. \f0\b0 \cf4 ) \cf9 JXGoogleMapVC\cf4 *\cf11 gooMap\cf4 ;\
  436. \
  437. \f2\b \cf8 @property
  438. \f0\b0 \cf4 (
  439. \f2\b \cf8 nonatomic
  440. \f0\b0 \cf4 ,
  441. \f2\b \cf8 assign
  442. \f0\b0 \cf4 )
  443. \f2\b \cf8 int
  444. \f0\b0 \cf4 \cf11 isBeenBlack\cf4 ;\
  445. \f2\b \cf8 @property
  446. \f0\b0 \cf4 (
  447. \f2\b \cf8 nonatomic
  448. \f0\b0 \cf4 ,
  449. \f2\b \cf8 assign
  450. \f0\b0 \cf4 )
  451. \f2\b \cf8 int
  452. \f0\b0 \cf4 \cf11 friendStatus\cf4 ;\
  453. \
  454. \f2\b \cf8 @property
  455. \f0\b0 \cf4 (
  456. \f2\b \cf8 nonatomic
  457. \f0\b0 \cf4 ,
  458. \f2\b \cf8 copy
  459. \f0\b0 \cf4 ) \cf10 NSString\cf4 *\cf11 meetingNo\cf4 ;\
  460. \f2\b \cf8 @property
  461. \f0\b0 \cf4 (
  462. \f2\b \cf8 nonatomic
  463. \f0\b0 \cf4 ,
  464. \f2\b \cf8 assign
  465. \f0\b0 \cf4 )
  466. \f2\b \cf8 BOOL
  467. \f0\b0 \cf4 \cf11 isAudioMeeting\cf4 ;\
  468. \f2\b \cf8 @property
  469. \f0\b0 \cf4 (
  470. \f2\b \cf8 nonatomic
  471. \f0\b0 \cf4 ,
  472. \f2\b \cf8 assign
  473. \f0\b0 \cf4 )
  474. \f2\b \cf8 BOOL
  475. \f0\b0 \cf4 \cf11 isTalkMeeting\cf4 ;\
  476. \
  477. \f2\b \cf8 @property
  478. \f0\b0 \cf4 (
  479. \f2\b \cf8 nonatomic
  480. \f0\b0 \cf4 ,
  481. \f2\b \cf8 assign
  482. \f0\b0 \cf4 )
  483. \f2\b \cf8 int
  484. \f0\b0 \cf4 \cf11 groupMessagesIndex\cf4 ;\
  485. \
  486. \f2\b \cf8 @property
  487. \f0\b0 \cf4 (
  488. \f2\b \cf8 nonatomic
  489. \f0\b0 \cf4 ,
  490. \f2\b \cf8 strong
  491. \f0\b0 \cf4 ) \cf9 JXMessageObject\cf4 *\cf11 shakeMsg\cf4 ;\
  492. \
  493. \f2\b \cf8 @property
  494. \f0\b0 \cf4 (
  495. \f2\b \cf8 nonatomic
  496. \f0\b0 \cf4 ,
  497. \f2\b \cf8 strong
  498. \f0\b0 \cf4 ) \cf10 UIView\cf4 *\cf11 screenShotView\cf4 ;\
  499. \f2\b \cf8 @property
  500. \f0\b0 \cf4 (
  501. \f2\b \cf8 nonatomic
  502. \f0\b0 \cf4 ,
  503. \f2\b \cf8 strong
  504. \f0\b0 \cf4 ) \cf10 UIImageView\cf4 *\cf11 screenShotImageView\cf4 ;\
  505. \
  506. \f2\b \cf8 @property
  507. \f0\b0 \cf4 (
  508. \f2\b \cf8 nonatomic
  509. \f0\b0 \cf4 ,
  510. \f2\b \cf8 strong
  511. \f0\b0 \cf4 ) \cf10 UIImageView\cf4 *\cf11 backGroundImageView\cf4 ;\
  512. \
  513. \f2\b \cf8 @property
  514. \f0\b0 \cf4 (
  515. \f2\b \cf8 nonatomic
  516. \f0\b0 \cf4 ,
  517. \f2\b \cf8 assign
  518. \f0\b0 \cf4 )
  519. \f2\b \cf8 BOOL
  520. \f0\b0 \cf4 \cf11 isSelectMore\cf4 ;\
  521. \f2\b \cf8 @property
  522. \f0\b0 \cf4 (
  523. \f2\b \cf8 nonatomic
  524. \f0\b0 \cf4 ,
  525. \f2\b \cf8 strong
  526. \f0\b0 \cf4 ) \cf10 NSMutableArray\cf4 *\cf11 selectMoreArr\cf4 ;\
  527. \f2\b \cf8 @property
  528. \f0\b0 \cf4 (
  529. \f2\b \cf8 nonatomic
  530. \f0\b0 \cf4 ,
  531. \f2\b \cf8 strong
  532. \f0\b0 \cf4 ) \cf10 UIView\cf4 *\cf11 selectMoreView\cf4 ;\
  533. \
  534. \f2\b \cf8 @property
  535. \f0\b0 \cf4 (
  536. \f2\b \cf8 nonatomic
  537. \f0\b0 \cf4 ,
  538. \f2\b \cf8 assign
  539. \f0\b0 \cf4 )
  540. \f2\b \cf8 int
  541. \f0\b0 \cf4 \cf11 readDelNum\cf4 ;\
  542. \
  543. \f2\b \cf8 @property
  544. \f0\b0 \cf4 (
  545. \f2\b \cf8 nonatomic
  546. \f0\b0 \cf4 ,
  547. \f2\b \cf8 assign
  548. \f0\b0 \cf4 )
  549. \f2\b \cf8 BOOL
  550. \f0\b0 \cf4 \cf11 isAdmin\cf4 ;\
  551. \
  552. \f2\b \cf8 @property
  553. \f0\b0 \cf4 (
  554. \f2\b \cf8 nonatomic
  555. \f0\b0 \cf4 ,
  556. \f2\b \cf8 strong
  557. \f0\b0 \cf4 ) \cf10 UIButton\cf4 *\cf11 shareMore\cf4 ;\
  558. \f2\b \cf8 @property
  559. \f0\b0 \cf4 (
  560. \f2\b \cf8 nonatomic
  561. \f0\b0 \cf4 ,
  562. \f2\b \cf8 strong
  563. \f0\b0 \cf4 ) \cf10 UILabel\cf4 *\cf11 talkTimeLabel\cf4 ;\
  564. \
  565. \f2\b \cf8 @property
  566. \f0\b0 \cf4 (
  567. \f2\b \cf8 nonatomic
  568. \f0\b0 \cf4 ,
  569. \f2\b \cf8 strong
  570. \f0\b0 \cf4 ) \cf10 UIButton\cf4 *\cf11 jumpNewMsgBtn\cf4 ;\
  571. \
  572. \f2\b \cf8 @property
  573. \f0\b0 \cf4 (
  574. \f2\b \cf8 nonatomic
  575. \f0\b0 \cf4 ,
  576. \f2\b \cf8 strong
  577. \f0\b0 \cf4 ) \cf9 WeiboData\cf4 *\cf11 collectionData\cf4 ;\
  578. \
  579. \f2\b \cf8 @property
  580. \f0\b0 \cf4 (
  581. \f2\b \cf8 nonatomic
  582. \f0\b0 \cf4 ,
  583. \f2\b \cf8 strong
  584. \f0\b0 \cf4 ) \cf10 NSMutableArray\cf4 *\cf11 taskList\cf4 ; \cf2 //
  585. \f1 \'c8\'ce\'ce\'f1\'c1\'d0\'b1\'ed
  586. \f0 \cf4 \
  587. \
  588. \f2\b \cf8 @property
  589. \f0\b0 \cf4 (
  590. \f2\b \cf8 nonatomic
  591. \f0\b0 \cf4 ,
  592. \f2\b \cf8 strong
  593. \f0\b0 \cf4 ) \cf10 NSArray\cf4 *\cf11 imgDataArr\cf4 ;\
  594. \
  595. \f2\b \cf8 @property
  596. \f0\b0 \cf4 (
  597. \f2\b \cf8 nonatomic
  598. \f0\b0 \cf4 ,
  599. \f2\b \cf8 assign
  600. \f0\b0 \cf4 )
  601. \f2\b \cf8 int
  602. \f0\b0 \cf4 \cf11 indexNum\cf4 ; \cf2 //
  603. \f1 \'cf\'fb\'cf\'a2\'d6\'d8\'b7\'a2\'b4\'ab\'c0\'b4\'b5\'c4
  604. \f0 cell.tag\cf4 \
  605. \
  606. \f2\b \cf8 @property
  607. \f0\b0 \cf4 (
  608. \f2\b \cf8 nonatomic
  609. \f0\b0 \cf4 ,
  610. \f2\b \cf8 strong
  611. \f0\b0 \cf4 ) \cf10 NSDictionary\cf4 *\cf11 dataDict\cf4 ;\
  612. \f2\b \cf8 @property
  613. \f0\b0 \cf4 (
  614. \f2\b \cf8 nonatomic
  615. \f0\b0 \cf4 ,
  616. \f2\b \cf8 assign
  617. \f0\b0 \cf4 )
  618. \f2\b \cf8 BOOL
  619. \f0\b0 \cf4 \cf11 isMapMsg\cf4 ; \cf2 //
  620. \f1 \'b7\'a2\'cb\'cd\'b5\'c4\'ca\'c7\'b2\'bb\'ca\'c7\'b5\'d8\'cd\'bc\'cf\'fb\'cf\'a2
  621. \f0 \cf4 \
  622. \f2\b \cf8 @property
  623. \f0\b0 \cf4 (
  624. \f2\b \cf8 nonatomic
  625. \f0\b0 \cf4 ,
  626. \f2\b \cf8 strong
  627. \f0\b0 \cf4 ) \cf9 JXMapData\cf4 *\cf11 mapData\cf4 ;\
  628. \
  629. \f2\b \cf8 @property
  630. \f0\b0 \cf4 (
  631. \f2\b \cf8 nonatomic
  632. \f0\b0 \cf4 ,
  633. \f2\b \cf8 strong
  634. \f0\b0 \cf4 ) \cf10 NSString\cf4 *\cf11 objToMsg\cf4 ;\cf2 //
  635. \f1 \'bb\'d8\'b8\'b4\'cb\'ad\'b5\'c4\'cf\'fb\'cf\'a2\'a3\'ac\'b4\'e6
  636. \f0 json
  637. \f1 \'ca\'fd\'be\'dd
  638. \f0 \cf4 \
  639. \f2\b \cf8 @property
  640. \f0\b0 \cf4 (
  641. \f2\b \cf8 nonatomic
  642. \f0\b0 \cf4 ,
  643. \f2\b \cf8 strong
  644. \f0\b0 \cf4 ) \cf10 NSString\cf4 *\cf11 hisReplyMsg\cf4 ; \cf2 //
  645. \f1 \'bb\'d8\'b8\'b4\'c0\'fa\'ca\'b7\'cb\'ae\'d3\'a1
  646. \f0 \cf4 \
  647. \
  648. \f2\b \cf8 @property
  649. \f0\b0 \cf4 (
  650. \f2\b \cf8 nonatomic
  651. \f0\b0 \cf4 ,
  652. \f2\b \cf8 copy
  653. \f0\b0 \cf4 ) \cf10 NSString\cf4 *\cf11 meetUrl\cf4 ;\
  654. \
  655. \f2\b \cf8 @property
  656. \f0\b0 \cf4 (
  657. \f2\b \cf8 nonatomic
  658. \f0\b0 \cf4 ,
  659. \f2\b \cf8 strong
  660. \f0\b0 \cf4 ) \cf10 UIView\cf4 *\cf11 shareView\cf4 ;\
  661. \
  662. \f2\b \cf8 @property
  663. \f0\b0 \cf4 (
  664. \f2\b \cf8 nonatomic
  665. \f0\b0 \cf4 ,
  666. \f2\b \cf8 strong
  667. \f0\b0 \cf4 ) \cf10 UIView\cf4 *\cf11 noticeView\cf4 ;\
  668. \f2\b \cf8 @property
  669. \f0\b0 \cf4 (
  670. \f2\b \cf8 nonatomic
  671. \f0\b0 \cf4 ,
  672. \f2\b \cf8 strong
  673. \f0\b0 \cf4 ) \cf10 UIScrollView\cf4 *\cf11 noticeScrollView\cf4 ;\
  674. \
  675. \f2\b \cf8 @property
  676. \f0\b0 \cf4 (
  677. \f2\b \cf8 nonatomic
  678. \f0\b0 \cf4 ,
  679. \f2\b \cf8 strong
  680. \f0\b0 \cf4 ) \cf10 UIImageView\cf4 *\cf11 noticeImgV\cf4 ;\
  681. \f2\b \cf8 @property
  682. \f0\b0 \cf4 (
  683. \f2\b \cf8 nonatomic
  684. \f0\b0 \cf4 ,
  685. \f2\b \cf8 strong
  686. \f0\b0 \cf4 ) \cf10 UILabel\cf4 *\cf11 noticeLabel\cf4 ;\
  687. \f2\b \cf8 @property
  688. \f0\b0 \cf4 (
  689. \f2\b \cf8 nonatomic
  690. \f0\b0 \cf4 ,
  691. \f2\b \cf8 strong
  692. \f0\b0 \cf4 ) \cf10 UIView\cf4 *\cf11 showNoticeView\cf4 ;\
  693. \f2\b \cf8 @property
  694. \f0\b0 \cf4 (
  695. \f2\b \cf8 nonatomic
  696. \f0\b0 \cf4 ,
  697. \f2\b \cf8 strong
  698. \f0\b0 \cf4 ) \cf10 UILabel\cf4 *\cf11 leftLabel\cf4 ;\
  699. \f2\b \cf8 @property
  700. \f0\b0 \cf4 (
  701. \f2\b \cf8 nonatomic
  702. \f0\b0 \cf4 ,
  703. \f2\b \cf8 strong
  704. \f0\b0 \cf4 ) \cf10 UILabel\cf4 *\cf11 rightLabel\cf4 ;\
  705. \f2\b \cf8 @property
  706. \f0\b0 \cf4 (
  707. \f2\b \cf8 nonatomic
  708. \f0\b0 \cf4 ,
  709. \f2\b \cf8 strong
  710. \f0\b0 \cf4 ) \cf10 NSTimer\cf4 *\cf11 noticeTimer\cf4 ;\
  711. \f2\b \cf8 @property
  712. \f0\b0 \cf4 (
  713. \f2\b \cf8 nonatomic
  714. \f0\b0 \cf4 ,
  715. \f2\b \cf8 strong
  716. \f0\b0 \cf4 ) \cf10 NSString\cf4 *\cf11 noticeStr\cf4 ;\
  717. \f2\b \cf8 @property
  718. \f0\b0 \cf4 (
  719. \f2\b \cf8 nonatomic
  720. \f0\b0 \cf4 ,
  721. \f2\b \cf8 assign
  722. \f0\b0 \cf4 ) \cf10 CGFloat\cf4 \cf11 leftW\cf4 ;\
  723. \f2\b \cf8 @property
  724. \f0\b0 \cf4 (
  725. \f2\b \cf8 nonatomic
  726. \f0\b0 \cf4 ,
  727. \f2\b \cf8 assign
  728. \f0\b0 \cf4 ) \cf10 CGFloat\cf4 \cf11 rightW\cf4 ;\
  729. \f2\b \cf8 @property
  730. \f0\b0 \cf4 (
  731. \f2\b \cf8 nonatomic
  732. \f0\b0 \cf4 ,
  733. \f2\b \cf8 assign
  734. \f0\b0 \cf4 ) \cf10 CGFloat\cf4 \cf11 noticeStrW\cf4 ;\
  735. \f2\b \cf8 @property
  736. \f0\b0 \cf4 (
  737. \f2\b \cf8 nonatomic
  738. \f0\b0 \cf4 ,
  739. \f2\b \cf8 assign
  740. \f0\b0 \cf4 )
  741. \f2\b \cf8 int
  742. \f0\b0 \cf4 \cf11 noticeHeight\cf4 ;\
  743. \f2\b \cf8 @property
  744. \f0\b0 \cf4 (
  745. \f2\b \cf8 nonatomic
  746. \f0\b0 \cf4 ,
  747. \f2\b \cf8 strong
  748. \f0\b0 \cf4 ) \cf10 UIButton\cf4 *\cf11 textViewBtn\cf4 ;\
  749. \
  750. \f2\b \cf8 @property
  751. \f0\b0 \cf4 (
  752. \f2\b \cf8 nonatomic
  753. \f0\b0 \cf4 ,
  754. \f2\b \cf8 strong
  755. \f0\b0 \cf4 ) \cf10 UIView\cf4 *\cf11 noticeView2\cf4 ;\
  756. \cf12 /**
  757. \f1 \cf2 \'cd\'b7\'b2\'bf\'d7\'dc\'b8\'f6\'cd\'b7\'b2\'bf
  758. \f3 */
  759. \f0 \cf4 \
  760. \f2\b \cf8 @property
  761. \f0\b0 \cf4 (
  762. \f2\b \cf8 nonatomic
  763. \f0\b0 \cf4 ,
  764. \f2\b \cf8 strong
  765. \f0\b0 \cf4 ) \cf10 UIView\cf4 *\cf11 topSaiView\cf4 ;\
  766. \cf12 /**
  767. \f1 \cf2 \'b4\'e6\'b7\'c5\'f7\'bb\'d7\'d3\'d3\'eb
  768. \f3
  769. \f1 \'b7\'c9\'b3\'b5
  770. \f3 */
  771. \f0 \cf4 \
  772. \f2\b \cf8 @property
  773. \f0\b0 \cf4 (
  774. \f2\b \cf8 nonatomic
  775. \f0\b0 \cf4 ,
  776. \f2\b \cf8 strong
  777. \f0\b0 \cf4 ) \cf10 UIScrollView\cf4 *\cf11 shaiziScrollView\cf4 ;\
  778. \
  779. \cf12 /**
  780. \f1 \cf2 \'c8\'fb\'d7\'d3\'d3\'eb\'c8\'fc\'b3\'b5\'b5\'c4
  781. \f3
  782. \f1 \'b4\'e6\'b7\'c5\'b5\'c4
  783. \f3 VIew*/
  784. \f0 \cf4 \
  785. \f2\b \cf8 @property
  786. \f0\b0 \cf4 (
  787. \f2\b \cf8 nonatomic
  788. \f0\b0 \cf4 ,
  789. \f2\b \cf8 strong
  790. \f0\b0 \cf4 ) \cf10 UIView\cf4 *\cf11 shaiziIMGView\cf4 ;\
  791. \cf12 /**
  792. \f1 \cf2 \'cc\'d8\'b1\'f0\'b9\'d8\'d0\'c4
  793. \f3 */
  794. \f0 \cf4 \
  795. \f2\b \cf8 @property
  796. \f0\b0 \cf4 (
  797. \f2\b \cf8 nonatomic
  798. \f0\b0 \cf4 ,
  799. \f2\b \cf8 strong
  800. \f0\b0 \cf4 ) \cf10 UIView\cf4 *\cf11 tebieView\cf4 ;\
  801. \
  802. \f2\b \cf8 @property
  803. \f0\b0 \cf4 (
  804. \f2\b \cf8 nonatomic
  805. \f0\b0 \cf4 ,
  806. \f2\b \cf8 strong
  807. \f0\b0 \cf4 ) \cf10 UIImageView\cf4 *\cf11 noticeImgV2\cf4 ;\
  808. \f2\b \cf8 @property
  809. \f0\b0 \cf4 (
  810. \f2\b \cf8 nonatomic
  811. \f0\b0 \cf4 ,
  812. \f2\b \cf8 strong
  813. \f0\b0 \cf4 ) \cf10 UILabel\cf4 *\cf11 noticeLabel2\cf4 ;\
  814. \
  815. \cf12 /**
  816. \f1 \cf2 \'f7\'bb\'d7\'d3\'cd\'bc\'c6\'ac
  817. \f3 */
  818. \f0 \cf4 \
  819. \f2\b \cf8 @property
  820. \f0\b0 \cf4 (
  821. \f2\b \cf8 nonatomic
  822. \f0\b0 \cf4 ,
  823. \f2\b \cf8 strong
  824. \f0\b0 \cf4 ) \cf10 UIImageView\cf4 *\cf11 shaiziIMG\cf4 ;\
  825. \f2\b \cf8 @property
  826. \f0\b0 \cf4 (
  827. \f2\b \cf8 nonatomic
  828. \f0\b0 \cf4 ,
  829. \f2\b \cf8 strong
  830. \f0\b0 \cf4 ) \cf10 UILabel\cf4 *\cf11 totalValueL\cf4 ;\
  831. \
  832. \cf12 /**
  833. \f1 \cf2 \'bc\'c7\'c2\'bc\'c8\'fc\'b3\'b5\'b5\'c4
  834. \f3 */
  835. \f0 \cf4 \
  836. \f2\b \cf8 @property
  837. \f0\b0 \cf4 (
  838. \f2\b \cf8 nonatomic
  839. \f0\b0 \cf4 ,
  840. \f2\b \cf8 copy
  841. \f0\b0 \cf4 ) \cf10 NSString\cf4 *\cf11 indexCarSubType\cf4 ;\cf2 //3\cf4 \
  842. \cf12 /**
  843. \f1 \cf2 \'bc\'c7\'c2\'bc\'c8\'fb\'d7\'d3\'b5\'c4
  844. \f3 */
  845. \f0 \cf4 \
  846. \f2\b \cf8 @property
  847. \f0\b0 \cf4 (
  848. \f2\b \cf8 nonatomic
  849. \f0\b0 \cf4 ,
  850. \f2\b \cf8 copy
  851. \f0\b0 \cf4 ) \cf10 NSString\cf4 *\cf11 indexSubType\cf4 ;\
  852. \cf12 /**
  853. \f1 \cf2 \'b1\'ea\'bb\'c6
  854. \f3 */
  855. \f0 \cf4 \
  856. \f2\b \cf8 @property
  857. \f0\b0 \cf4 (
  858. \f2\b \cf8 nonatomic
  859. \f0\b0 \cf4 ,
  860. \f2\b \cf8 copy
  861. \f0\b0 \cf4 ) \cf10 NSString\cf4 *\cf11 indexYellowSubType\cf4 ; \cf2 //4\cf4 \
  862. \
  863. \f2\b \cf8 @property
  864. \f0\b0 \cf4 (
  865. \f2\b \cf8 nonatomic
  866. \f0\b0 \cf4 ,
  867. \f2\b \cf8 weak
  868. \f0\b0 \cf4 ) \cf9 JXtopShowVIew\cf4 *\cf11 showTopView\cf4 ;\
  869. \
  870. \f2\b \cf8 @property
  871. \f0\b0 \cf4 (
  872. \f2\b \cf8 nonatomic
  873. \f0\b0 \cf4 ,
  874. \f2\b \cf8 strong
  875. \f0\b0 \cf4 ) \cf10 UIView\cf4 *\cf11 showNoticeView2\cf4 ;\
  876. \f2\b \cf8 @property
  877. \f0\b0 \cf4 (
  878. \f2\b \cf8 nonatomic
  879. \f0\b0 \cf4 ,
  880. \f2\b \cf8 strong
  881. \f0\b0 \cf4 ) \cf10 UILabel\cf4 *\cf11 leftLabel2\cf4 ;\
  882. \f2\b \cf8 @property
  883. \f0\b0 \cf4 (
  884. \f2\b \cf8 nonatomic
  885. \f0\b0 \cf4 ,
  886. \f2\b \cf8 strong
  887. \f0\b0 \cf4 ) \cf10 UILabel\cf4 *\cf11 rightLabel2\cf4 ;\
  888. \f2\b \cf8 @property
  889. \f0\b0 \cf4 (
  890. \f2\b \cf8 nonatomic
  891. \f0\b0 \cf4 ,
  892. \f2\b \cf8 strong
  893. \f0\b0 \cf4 ) \cf10 NSTimer\cf4 *\cf11 noticeTimer2\cf4 ;\
  894. \f2\b \cf8 @property
  895. \f0\b0 \cf4 (
  896. \f2\b \cf8 nonatomic
  897. \f0\b0 \cf4 ,
  898. \f2\b \cf8 strong
  899. \f0\b0 \cf4 ) \cf10 NSString\cf4 *\cf11 noticeStr2\cf4 ;\
  900. \f2\b \cf8 @property
  901. \f0\b0 \cf4 (
  902. \f2\b \cf8 nonatomic
  903. \f0\b0 \cf4 ,
  904. \f2\b \cf8 assign
  905. \f0\b0 \cf4 ) \cf10 CGFloat\cf4 \cf11 leftW2\cf4 ;\
  906. \f2\b \cf8 @property
  907. \f0\b0 \cf4 (
  908. \f2\b \cf8 nonatomic
  909. \f0\b0 \cf4 ,
  910. \f2\b \cf8 assign
  911. \f0\b0 \cf4 ) \cf10 CGFloat\cf4 \cf11 rightW2\cf4 ;\
  912. \f2\b \cf8 @property
  913. \f0\b0 \cf4 (
  914. \f2\b \cf8 nonatomic
  915. \f0\b0 \cf4 ,
  916. \f2\b \cf8 assign
  917. \f0\b0 \cf4 ) \cf10 CGFloat\cf4 \cf11 noticeStrW2\cf4 ;\
  918. \f2\b \cf8 @property
  919. \f0\b0 \cf4 (
  920. \f2\b \cf8 nonatomic
  921. \f0\b0 \cf4 ,
  922. \f2\b \cf8 assign
  923. \f0\b0 \cf4 )
  924. \f2\b \cf8 int
  925. \f0\b0 \cf4 \cf11 noticeHeight2\cf4 ;\
  926. \
  927. \f2\b \cf8 @property
  928. \f0\b0 \cf4 (
  929. \f2\b \cf8 nonatomic
  930. \f0\b0 \cf4 ,
  931. \f2\b \cf8 assign
  932. \f0\b0 \cf4 )
  933. \f2\b \cf8 BOOL
  934. \f0\b0 \cf4 \cf11 scrollBottom\cf4 ;\
  935. \f2\b \cf8 @property
  936. \f0\b0 \cf4 (
  937. \f2\b \cf8 nonatomic
  938. \f0\b0 \cf4 ,
  939. \f2\b \cf8 assign
  940. \f0\b0 \cf4 )
  941. \f2\b \cf8 BOOL
  942. \f0\b0 \cf4 \cf11 isGotoLast\cf4 ;\
  943. \f2\b \cf8 @property
  944. \f0\b0 \cf4 (
  945. \f2\b \cf8 nonatomic
  946. \f0\b0 \cf4 ,
  947. \f2\b \cf8 assign
  948. \f0\b0 \cf4 )
  949. \f2\b \cf8 BOOL
  950. \f0\b0 \cf4 \cf11 isSyncMsg\cf4 ;\
  951. \
  952. \f2\b \cf8 @property
  953. \f0\b0 \cf4 (
  954. \f2\b \cf8 nonatomic
  955. \f0\b0 \cf4 ,
  956. \f2\b \cf8 assign
  957. \f0\b0 \cf4 )
  958. \f2\b \cf8 BOOL
  959. \f0\b0 \cf4 \cf11 isFirst\cf4 ; \cf2 //
  960. \f1 \'b5\'da\'d2\'bb\'b4\'ce\'b5\'f7\'d3\'c3
  961. \f0 GetRoom\cf4 \
  962. \f2\b \cf8 @property
  963. \f0\b0 \cf4 (
  964. \f2\b \cf8 nonatomic
  965. \f0\b0 \cf4 ,
  966. \f2\b \cf8 assign
  967. \f0\b0 \cf4 )
  968. \f2\b \cf8 BOOL
  969. \f0\b0 \cf4 \cf11 isDisable\cf4 ; \cf2 //
  970. \f1 \'c8\'ba\'d7\'e9\'ca\'c7\'b7\'f1\'bd\'fb\'d3\'c3
  971. \f0 \cf4 \
  972. \f2\b \cf8 @property
  973. \f0\b0 \cf4 (
  974. \f2\b \cf8 nonatomic
  975. \f0\b0 \cf4 ,
  976. \f2\b \cf8 strong
  977. \f0\b0 \cf4 ) \cf10 UIImage\cf4 *\cf11 screenImage\cf4 ; \cf2 //
  978. \f1 \'bc\'c7\'c2\'bc\'d2\'bb\'cf\'c2\'c6\'c1\'c4\'bb\'bf\'ec\'d5\'d5
  979. \f0 \cf4 \
  980. \
  981. \f2\b \cf8 @property
  982. \f0\b0 \cf4 (
  983. \f2\b \cf8 nonatomic
  984. \f0\b0 \cf4 ,
  985. \f2\b \cf8 strong
  986. \f0\b0 \cf4 ) \cf10 NSArray\cf4 *\cf11 helperArr\cf4 ;\cf2 //
  987. \f1 \'c8\'ba\'d6\'fa\'ca\'d6\'ca\'fd\'be\'dd
  988. \f0 \cf4 \
  989. \
  990. \cf2 //
  991. \f1 \'ba\'ec\'b0\'fc\'b5\'e3\'bb\'f7\'ba\'f3\'b5\'c4\'bd\'e7\'c3\'e6
  992. \f0 \cf4 \
  993. \f2\b \cf8 @property
  994. \f0\b0 \cf4 (
  995. \f2\b \cf8 nonatomic
  996. \f0\b0 \cf4 ,
  997. \f2\b \cf8 strong
  998. \f0\b0 \cf4 ) \cf10 UIView\cf4 *\cf11 redBaseView\cf4 ;\
  999. \f2\b \cf8 @property
  1000. \f0\b0 \cf4 (
  1001. \f2\b \cf8 nonatomic
  1002. \f0\b0 \cf4 ,
  1003. \f2\b \cf8 strong
  1004. \f0\b0 \cf4 ) \cf10 UIImageView\cf4 *\cf11 openImgV\cf4 ;\
  1005. \f2\b \cf8 @property
  1006. \f0\b0 \cf4 (
  1007. \f2\b \cf8 nonatomic
  1008. \f0\b0 \cf4 ,
  1009. \f2\b \cf8 strong
  1010. \f0\b0 \cf4 ) \cf10 UIImageView\cf4 *\cf11 redBackV\cf4 ;\
  1011. \f2\b \cf8 @property
  1012. \f0\b0 \cf4 (
  1013. \f2\b \cf8 nonatomic
  1014. \f0\b0 \cf4 ,
  1015. \f2\b \cf8 strong
  1016. \f0\b0 \cf4 ) \cf10 NSDictionary\cf4 *\cf11 redPacketDict\cf4 ;\
  1017. \f2\b \cf8 @property
  1018. \f0\b0 \cf4 (
  1019. \f2\b \cf8 nonatomic
  1020. \f0\b0 \cf4 ,
  1021. \f2\b \cf8 assign
  1022. \f0\b0 \cf4 )
  1023. \f2\b \cf8 BOOL
  1024. \f0\b0 \cf4 \cf11 isDidRedPacketRemind\cf4 ;\
  1025. \f2\b \cf8 @property
  1026. \f0\b0 \cf4 (
  1027. \f2\b \cf8 nonatomic
  1028. \f0\b0 \cf4 ,
  1029. \f2\b \cf8 strong
  1030. \f0\b0 \cf4 ) \cf10 UILabel\cf4 *\cf11 tintLab\cf4 ;\
  1031. \f2\b \cf8 @property
  1032. \f0\b0 \cf4 (
  1033. \f2\b \cf8 nonatomic
  1034. \f0\b0 \cf4 ,
  1035. \f2\b \cf8 strong
  1036. \f0\b0 \cf4 ) \cf10 UILabel\cf4 *\cf11 seeLab\cf4 ;\
  1037. \
  1038. \f2\b \cf8 @property
  1039. \f0\b0 \cf4 (
  1040. \f2\b \cf8 nonatomic
  1041. \f0\b0 \cf4 ,
  1042. \f2\b \cf8 assign
  1043. \f0\b0 \cf4 ) \cf10 CGFloat\cf4 \cf11 lastY\cf4 ;\
  1044. \f2\b \cf8 @property
  1045. \f0\b0 \cf4 (
  1046. \f2\b \cf8 nonatomic
  1047. \f0\b0 \cf4 ,
  1048. \f2\b \cf8 assign
  1049. \f0\b0 \cf4 )
  1050. \f2\b \cf8 BOOL
  1051. \f0\b0 \cf4 \cf11 isRefresh\cf4 ;\
  1052. \
  1053. \f2\b \cf8 @property
  1054. \f0\b0 \cf4 (
  1055. \f2\b \cf8 nonatomic
  1056. \f0\b0 \cf4 ,
  1057. \f2\b \cf8 strong
  1058. \f0\b0 \cf4 ) \cf10 UIImageView\cf4 *\cf11 audioIcon\cf4 ;\
  1059. \
  1060. \f2\b \cf8 @property
  1061. \f0\b0 \cf4 (
  1062. \f2\b \cf8 nonatomic
  1063. \f0\b0 \cf4 ,
  1064. \f2\b \cf8 assign
  1065. \f0\b0 \cf4 )
  1066. \f2\b \cf8 BOOL
  1067. \f0\b0 \cf4 \cf11 isShowAT\cf4 ;\
  1068. \
  1069. \f2\b \cf8 @property
  1070. \f0\b0 \cf4 (
  1071. \f2\b \cf8 nonatomic
  1072. \f0\b0 \cf4 ,
  1073. \f2\b \cf8 assign
  1074. \f0\b0 \cf4 )
  1075. \f2\b \cf8 BOOL
  1076. \f0\b0 \cf4 \cf11 isSendRedPacket\cf4 ;\
  1077. \
  1078. \f2\b \cf8 @property
  1079. \f0\b0 \cf4 (
  1080. \f2\b \cf8 nonatomic
  1081. \f0\b0 \cf4 ,
  1082. \f2\b \cf8 assign
  1083. \f0\b0 \cf4 )
  1084. \f2\b \cf8 BOOL
  1085. \f0\b0 \cf4 \cf11 isRefreshing\cf4 ;\
  1086. \
  1087. \f2\b \cf8 @property
  1088. \f0\b0 \cf4 (
  1089. \f2\b \cf8 nonatomic
  1090. \f0\b0 \cf4 ,
  1091. \f2\b \cf8 strong
  1092. \f0\b0 \cf4 ) \cf10 UIView\cf4 *\cf11 waitGroupSendView\cf4 ; \cf2 //
  1093. \f1 \'c8\'ba\'b7\'a2\'cc\'e1\'ca\'be\'b4\'b0\'bf\'da
  1094. \f0 \cf4 \
  1095. \f2\b \cf8 @property
  1096. \f0\b0 \cf4 (
  1097. \f2\b \cf8 nonatomic
  1098. \f0\b0 \cf4 ,
  1099. \f2\b \cf8 strong
  1100. \f0\b0 \cf4 ) \cf10 UILabel\cf4 *\cf11 waitGroupSendLable\cf4 ; \cf2 //
  1101. \f1 \'c8\'ba\'b7\'a2\'ca\'b5\'ca\'b1\'b8\'fc\'d0\'c2\'d2\'d1\'b7\'a2\'cb\'cd\'ca\'fd\'c1\'bf
  1102. \f0 \cf4 \
  1103. \f2\b \cf8 @property
  1104. \f0\b0 \cf4 (
  1105. \f2\b \cf8 nonatomic
  1106. \f0\b0 \cf4 ,
  1107. \f2\b \cf8 assign
  1108. \f0\b0 \cf4 ) \cf10 NSInteger\cf4 \cf11 sendedNum\cf4 ; \cf2 //
  1109. \f1 \'c8\'ba\'b7\'a2\'d2\'d1\'b7\'a2\'cb\'cd\'ca\'fd\'c1\'bf
  1110. \f0 \cf4 \
  1111. \f2\b \cf8 @property
  1112. \f0\b0 \cf4 (
  1113. \f2\b \cf8 nonatomic
  1114. \f0\b0 \cf4 ,
  1115. \f2\b \cf8 strong
  1116. \f0\b0 \cf4 ) \cf10 NSMutableArray\cf4 *\cf11 groupUploadObjArray\cf4 ; \cf2 //
  1117. \f1 \'c8\'ba\'b7\'a2\'d0\'e8\'d2\'aa\'c9\'cf\'b4\'ab\'b5\'c4\'ca\'fd\'be\'dd
  1118. \f0 \cf4 \
  1119. \f2\b \cf8 @property
  1120. \f0\b0 \cf4 (
  1121. \f2\b \cf8 nonatomic
  1122. \f0\b0 \cf4 ,
  1123. \f2\b \cf8 assign
  1124. \f0\b0 \cf4 ) \cf10 NSInteger\cf4 \cf11 onceSendNum\cf4 ; \cf2 //
  1125. \f1 \'c8\'ba\'b7\'a2\'c3\'bf\'d7\'e9\'b7\'a2\'cb\'cd\'b5\'c4\'cf\'fb\'cf\'a2\'ca\'fd\'c1\'bf
  1126. \f0 \cf4 \
  1127. \f2\b \cf8 @property
  1128. \f0\b0 \cf4 (
  1129. \f2\b \cf8 nonatomic
  1130. \f0\b0 \cf4 ,
  1131. \f2\b \cf8 assign
  1132. \f0\b0 \cf4 )
  1133. \f2\b \cf8 BOOL
  1134. \f0\b0 \cf4 \cf11 isOriginal\cf4 ; \cf2 //
  1135. \f1 \'ca\'c7\'b7\'f1\'b1\'a3\'b4\'e6\'b1\'be\'b5\'d8
  1136. \f0 \cf4 \
  1137. \f2\b \cf8 @property
  1138. \f0\b0 \cf4 (
  1139. \f2\b \cf8 nonatomic
  1140. \f0\b0 \cf4 ,
  1141. \f2\b \cf8 assign
  1142. \f0\b0 \cf4 ) \cf10 NSInteger\cf4 \cf11 groupSendType\cf4 ; \cf2 //
  1143. \f1 \'c8\'ba\'b7\'a2\'cf\'fb\'cf\'a2\'c0\'e0\'d0\'cd
  1144. \f0 \cf4 \
  1145. \f2\b \cf8 @property
  1146. \f0\b0 \cf4 (
  1147. \f2\b \cf8 nonatomic
  1148. \f0\b0 \cf4 ,
  1149. \f2\b \cf8 strong
  1150. \f0\b0 \cf4 ) \cf10 NSMutableArray\cf4 *\cf11 groupSendMsgArray\cf4 ; \cf2 //
  1151. \f1 \'c8\'ba\'b7\'a2\'b5\'c4\'c4\'da\'c8\'dd
  1152. \f0 \cf4 \
  1153. \f2\b \cf8 @property
  1154. \f0\b0 \cf4 (
  1155. \f2\b \cf8 nonatomic
  1156. \f0\b0 \cf4 ,
  1157. \f2\b \cf8 assign
  1158. \f0\b0 \cf4 ) \cf10 NSInteger\cf4 \cf11 groupSendAllNum\cf4 ; \cf2 //
  1159. \f1 \'c8\'ba\'b7\'a2\'cf\'fb\'cf\'a2\'d7\'dc\'ca\'fd
  1160. \f0 \cf4 \
  1161. \f2\b \cf8 @property
  1162. \f0\b0 \cf4 (
  1163. \f2\b \cf8 nonatomic
  1164. \f0\b0 \cf4 ,
  1165. \f2\b \cf8 assign
  1166. \f0\b0 \cf4 )
  1167. \f2\b \cf8 BOOL
  1168. \f0\b0 \cf4 \cf11 isGroupSendCancel\cf4 ; \cf2 //
  1169. \f1 \'c8\'a1\'cf\'fb\'c8\'ba\'b7\'a2
  1170. \f0 \cf4 \
  1171. \f2\b \cf8 @property
  1172. \f0\b0 \cf4 (
  1173. \f2\b \cf8 nonatomic
  1174. \f0\b0 \cf4 ,
  1175. \f2\b \cf8 strong
  1176. \f0\b0 \cf4 ) \cf10 NSDictionary\cf4 *\cf11 imgsAndVideosDic\cf4 ;\cf2 //
  1177. \f1 \'c8\'ba\'b7\'a2\'cd\'bc\'b2\'e1\'d1\'a1\'d6\'d0\'b5\'c4\'cd\'bc\'c6\'ac\'ba\'cd\'ca\'d3\'c6\'b5
  1178. \f0 \cf4 \
  1179. \f2\b \cf8 @property
  1180. \f0\b0 \cf4 (
  1181. \f2\b \cf8 nonatomic
  1182. \f0\b0 \cf4 ,
  1183. \f2\b \cf8 strong
  1184. \f0\b0 \cf4 ) \cf10 NSMutableArray\cf4 *\cf11 imgArr\cf4 ;\
  1185. \f2\b \cf8 @property
  1186. \f0\b0 \cf4 (
  1187. \f2\b \cf8 nonatomic
  1188. \f0\b0 \cf4 ,
  1189. \f2\b \cf8 strong
  1190. \f0\b0 \cf4 ) \cf10 UIButton\cf4 *\cf11 showBtn\cf4 ;\
  1191. \f2\b \cf8 @property
  1192. \f0\b0 \cf4 (
  1193. \f2\b \cf8 nonatomic
  1194. \f0\b0 \cf4 ,
  1195. \f2\b \cf8 strong
  1196. \f0\b0 \cf4 ) \cf9 STAlertView\cf4 *\cf11 alert\cf4 ;\
  1197. \f2\b \cf8 @property
  1198. \f0\b0 \cf4 (
  1199. \f2\b \cf8 nonatomic
  1200. \f0\b0 \cf4 ,
  1201. \f2\b \cf8 strong
  1202. \f0\b0 \cf4 ) \cf9 MISFloatingBall\cf4 *\cf11 floating\cf4 ;\
  1203. \f2\b \cf8 @property
  1204. \f0\b0 \cf4 (
  1205. \f2\b \cf8 nonatomic
  1206. \f0\b0 \cf4 ,
  1207. \f2\b \cf8 assign
  1208. \f0\b0 \cf4 )
  1209. \f2\b \cf8 int
  1210. \f0\b0 \cf4 \cf11 keyboardHeight\cf4 ;\
  1211. \f2\b \cf8 @property
  1212. \f0\b0 \cf4 (
  1213. \f2\b \cf8 nonatomic
  1214. \f0\b0 \cf4 ,
  1215. \f2\b \cf8 assign
  1216. \f0\b0 \cf4 )
  1217. \f2\b \cf8 int
  1218. \f0\b0 \cf4 \cf11 keyboardHeightNav\cf4 ;\
  1219. \cf12 /**
  1220. \f1 \cf2 \'bb\'f1\'c8\'a1\'c8\'ba\'d6\'d0\'cb\'f9\'d3\'d0\'b5\'c4\'c8\'cb\'d4\'b1
  1221. \f3 */
  1222. \f0 \cf4 \
  1223. \f2\b \cf8 @property
  1224. \f0\b0 \cf4 (
  1225. \f2\b \cf8 nonatomic
  1226. \f0\b0 \cf4 ,
  1227. \f2\b \cf8 strong
  1228. \f0\b0 \cf4 ) \cf10 NSMutableArray\cf4 *\cf11 dataArrGetGroundPersonArr\cf4 ;\
  1229. \
  1230. \f2\b \cf8 @property
  1231. \f0\b0 \cf4 (
  1232. \f2\b \cf8 nonatomic
  1233. \f0\b0 \cf4 ,
  1234. \f2\b \cf8 copy
  1235. \f0\b0 \cf4 ) \cf10 NSString\cf4 *\cf11 jidStr\cf4 ;\
  1236. \
  1237. \f2\b \cf8 @property
  1238. \f0\b0 \cf4 (
  1239. \f2\b \cf8 nonatomic
  1240. \f0\b0 \cf4 ,
  1241. \f2\b \cf8 strong
  1242. \f0\b0 \cf4 ) \cf10 NSMutableArray\cf4 *\cf11 tempArrMM\cf4 ;\
  1243. \
  1244. \f2\b \cf8 @property
  1245. \f0\b0 \cf4 (
  1246. \f2\b \cf8 nonatomic
  1247. \f0\b0 \cf4 ,
  1248. \f2\b \cf8 strong
  1249. \f0\b0 \cf4 ) \cf10 UIScrollView\cf4 *\cf11 noticeViewScrollView\cf4 ;\
  1250. \f2\b \cf8 @property
  1251. \f0\b0 \cf4 (
  1252. \f2\b \cf8 nonatomic
  1253. \f0\b0 \cf4 ,
  1254. \f2\b \cf8 strong
  1255. \f0\b0 \cf4 ) \cf10 UIButton\cf4 *\cf11 attioPersonBtn\cf4 ;\
  1256. \f2\b \cf8 @property
  1257. \f0\b0 \cf4 (
  1258. \f2\b \cf8 nonatomic
  1259. \f0\b0 \cf4 ,
  1260. \f2\b \cf8 weak
  1261. \f0\b0 \cf4 ) \cf9 DYAdAlertView\cf4 *\cf11 showLongViewc\cf4 ;\
  1262. \
  1263. \f2\b \cf8 @property
  1264. \f0\b0 \cf4 (
  1265. \f2\b \cf8 nonatomic
  1266. \f0\b0 \cf4 ,
  1267. \f2\b \cf8 copy
  1268. \f0\b0 \cf4 ) \cf10 NSString\cf4 *\cf11 strURLGoback\cf4 ;\
  1269. \f2\b \cf8 @end
  1270. \f0\b0 \cf4 \
  1271. \
  1272. \f2\b \cf8 @implementation
  1273. \f0\b0 \cf4 \cf13 JXChatViewController\cf4 \
  1274. \f2\b \cf8 @synthesize
  1275. \f0\b0 \cf4 \cf11 chatPerson\cf4 ,\cf11 roomId\cf4 ,\cf11 chatRoom\cf4 ;\
  1276. \
  1277. - (
  1278. \f2\b \cf8 id
  1279. \f0\b0 \cf4 )\cf11 init\cf4 \
  1280. \{\
  1281. \f2\b \cf8 self
  1282. \f0\b0 \cf4 = [
  1283. \f2\b \cf8 super
  1284. \f0\b0 \cf4 \cf14 init\cf4 ];\
  1285. \f2\b \cf8 if
  1286. \f0\b0 \cf4 (
  1287. \f2\b \cf8 self
  1288. \f0\b0 \cf4 ) \{\
  1289. \f2\b \cf8 if
  1290. \f0\b0 \cf4 (!\cf15 _room\cf4 ) \{\
  1291. \cf15 _room\cf4 = [[\cf9 roomData\cf4 \cf14 alloc\cf4 ] \cf14 init\cf4 ];\
  1292. \}\
  1293. \cf15 _dataArrGetGroundPersonArr\cf4 =[\cf10 NSMutableArray\cf4 \cf14 array\cf4 ];\
  1294. \cf15 _lotterDict\cf4 =[\cf10 NSDictionary\cf4 \cf14 dictionary\cf4 ];\
  1295. \cf15 _userNickName\cf4 = \cf5 g_myself\cf4 .\cf15 userNickname\cf4 ;\
  1296. \cf15 _selectIndexAaaa\cf4 =\cf7 100000000\cf4 ;\
  1297. \cf15 _tempArrMM\cf4 =[\cf10 NSMutableArray\cf4 \cf14 array\cf4 ];\
  1298. \f2\b \cf8 self
  1299. \f0\b0 \cf4 .\cf15 heightHeader\cf4 = \cf7 0\cf4 ;\cf2 // JX_SCREEN_TOP;\cf4 \
  1300. \f2\b \cf8 self
  1301. \f0\b0 \cf4 .\cf15 heightFooter\cf4 = \cf7 0\cf4 ;\
  1302. \f2\b \cf8 self
  1303. \f0\b0 \cf4 .\cf15 tableFooter\cf4 .\cf14 hidden\cf4 =
  1304. \f2\b \cf8 YES
  1305. \f0\b0 \cf4 ;\
  1306. \
  1307. \f2\b \cf8 if
  1308. \f0\b0 \cf4 (
  1309. \f2\b \cf8 self
  1310. \f0\b0 \cf4 .\cf15 courseId\cf4 .\cf14 length\cf4 > \cf7 0\cf4 ) \{\
  1311. \cf2 //self.heightFooter = THE_DEVICE_HAVE_HEAD ? JX_SCREEN_BOTTOM : 56;\cf4 \
  1312. \}\
  1313. \f2\b \cf8 if
  1314. \f0\b0 \cf4 (
  1315. \f2\b \cf8 self
  1316. \f0\b0 \cf4 .\cf15 isHiddenFooter\cf4 ) \{\
  1317. \f2\b \cf8 self
  1318. \f0\b0 \cf4 .\cf15 heightFooter\cf4 = \cf7 0\cf4 ;\
  1319. \}\
  1320. \
  1321. \f2\b \cf8 if
  1322. \f0\b0 \cf4 ([\cf15 _lastMsg\cf4 .\cf15 fromUserId\cf4 \cf14 isEqualToString\cf4 :\cf6 @"10000"\cf4 ]) \{\
  1323. \cf2 //self.heightFooter=0;\cf4 \
  1324. \}\
  1325. \cf15 _oneAtttenPersonArr\cf4 =[\cf10 NSMutableArray\cf4 \cf14 array\cf4 ];\
  1326. \
  1327. \f2\b \cf8 self
  1328. \f0\b0 \cf4 .\cf15 isGotoBack\cf4 =
  1329. \f2\b \cf8 YES
  1330. \f0\b0 \cf4 ;\
  1331. \f2\b \cf8 self
  1332. \f0\b0 \cf4 .\cf15 isGotoLast\cf4 =
  1333. \f2\b \cf8 YES
  1334. \f0\b0 \cf4 ;\
  1335. \cf15 _orderRedPacketArray\cf4 = [[\cf10 NSMutableArray\cf4 \cf14 alloc\cf4 ]\cf14 init\cf4 ];\
  1336. \cf15 _atMemberArray\cf4 = [[\cf10 NSMutableArray\cf4 \cf14 alloc\cf4 ] \cf14 init\cf4 ];\
  1337. \cf15 _selectMoreArr\cf4 = [\cf10 NSMutableArray\cf4 \cf14 array\cf4 ];\
  1338. \f2\b \cf8 if
  1339. \f0\b0 \cf4 (
  1340. \f2\b \cf8 self
  1341. \f0\b0 \cf4 .\cf15 roomJid\cf4 .\cf14 length\cf4 > \cf7 0\cf4 ) \{\
  1342. \cf15 _taskList\cf4 = [\cf10 NSMutableArray\cf4 \cf14 array\cf4 ];\
  1343. \cf10 NSMutableArray\cf4 *list = [[\cf9 JXSynTask\cf4 \cf15 sharedInstance\cf4 ] \cf15 getTaskWithUserId\cf4 :
  1344. \f2\b \cf8 self
  1345. \f0\b0 \cf4 .\cf15 roomJid\cf4 ];\
  1346. \f2\b \cf8 for
  1347. \f0\b0 \cf4 (\cf10 NSInteger\cf4 i = \cf7 0\cf4 ; i < list.\cf14 count\cf4 ; i ++) \{\
  1348. \cf9 JXSynTask\cf4 *task = list[i];\
  1349. \f2\b \cf8 if
  1350. \f0\b0 \cf4 (task.\cf15 endTime\cf4 ) \{\
  1351. [\cf15 _taskList\cf4 \cf14 addObject\cf4 :task];\
  1352. \}
  1353. \f2\b \cf8 else
  1354. \f0\b0 \cf4 \{\
  1355. [task
  1356. \f2\b \cf8 delete
  1357. \f0\b0 \cf4 ];\
  1358. \}\
  1359. \}\
  1360. \
  1361. \}\
  1362. \f2\b \cf8 if
  1363. \f0\b0 \cf4 (
  1364. \f2\b \cf8 self
  1365. \f0\b0 \cf4 .\cf15 newMsgCount\cf4 > \cf7 100\cf4 ) \{\
  1366. \f2\b \cf8 self
  1367. \f0\b0 \cf4 .\cf15 newMsgCount\cf4 = \cf7 100\cf4 ;\
  1368. \}\
  1369. \cf2 //self.view.frame = CGRectMake(0, 0, JX_SCREEN_WIDTH, JX_SCREEN_HEIGHT-JX_SCREEN_TOP-self.heightFooter);\cf4 \
  1370. \f2\b \cf8 self
  1371. \f0\b0 \cf4 .\cf15 groupMessagesIndex\cf4 = \cf7 0\cf4 ;\
  1372. \cf15 _disableSay\cf4 = \cf7 0\cf4 ;\
  1373. \cf15 _serverMsgPage\cf4 = \cf7 0\cf4 ;\
  1374. \cf15 _isRecording\cf4 =
  1375. \f2\b \cf8 NO
  1376. \f0\b0 \cf4 ;\
  1377. \cf15 _recordStarNum\cf4 = \cf7 0\cf4 ;\
  1378. \
  1379. \cf15 _pool\cf4 = [[\cf10 NSMutableArray\cf4 \cf14 alloc\cf4 ]\cf14 init\cf4 ];\
  1380. \cf15 _array\cf4 = [[\cf10 NSMutableArray\cf4 \cf14 alloc\cf4 ]\cf14 init\cf4 ];\
  1381. \
  1382. \cf15 _isReadDelete\cf4 = [
  1383. \f2\b \cf8 self
  1384. \f0\b0 \cf4 .\cf15 chatPerson\cf4 .\cf15 isOpenReadDel\cf4 \cf14 boolValue\cf4 ];\
  1385. \
  1386. \cf15 _recordArray\cf4 = [\cf10 NSMutableArray\cf4 \cf14 array\cf4 ];\
  1387. \cf15 _chatWait\cf4 = [[\cf9 ATMHud\cf4 \cf14 alloc\cf4 ] \cf14 init\cf4 ];\
  1388. \
  1389. \f2\b \cf8 if
  1390. \f0\b0 \cf4 (\cf15 current_chat_userId\cf4 )\
  1391. [\cf5 g_xmpp\cf4 .\cf15 chatingUserIds\cf4 \cf14 addObject\cf4 :\cf15 current_chat_userId\cf4 ];\
  1392. \
  1393. \}\
  1394. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1395. \f2\b \cf8 self
  1396. \f0\b0 \cf4 \cf14 selector\cf4 :
  1397. \f2\b \cf8 @selector
  1398. \f0\b0 \cf4 (roomGroupActivityRefresh:) \cf14 name\cf4 :\cf5 kRoomGroupActivityRefresh\cf4 \cf14 object\cf4 :
  1399. \f2\b \cf8 nil
  1400. \f0\b0 \cf4 ]; \cf2 //
  1401. \f1 \'b7\'c0\'b3\'b7\'bb\'d8\'d0\'de\'b8\'c4
  1402. \f0 \cf4 \
  1403. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1404. \f2\b \cf8 self
  1405. \f0\b0 \cf4 \cf14 selector\cf4 :
  1406. \f2\b \cf8 @selector
  1407. \f0\b0 \cf4 (RoomRemind_RoomIsRedMoneyGroupActivityRefresh:) \cf14 name\cf4 :\cf5 kRoomRemind_RoomIsRedMoneyGroupActivityRefresh\cf4 \cf14 object\cf4 :
  1408. \f2\b \cf8 nil
  1409. \f0\b0 \cf4 ]; \cf2 //
  1410. \f1 \'c7\'eb\'ba\'ec\'b0\'fc\'bd\'d3\'bf\'da
  1411. \f0 \cf4 \
  1412. \
  1413. \
  1414. \
  1415. \
  1416. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1417. \f2\b \cf8 self
  1418. \f0\b0 \cf4 \cf14 selector\cf4 :
  1419. \f2\b \cf8 @selector
  1420. \f0\b0 \cf4 (roomIsisAttritionRecall:) \cf14 name\cf4 :\cf5 kroomIsAttritionRecallRefresh\cf4 \cf14 object\cf4 :
  1421. \f2\b \cf8 nil
  1422. \f0\b0 \cf4 ]; \cf2 //
  1423. \f1 \'b7\'c0\'b3\'b7\'bb\'d8\'d0\'de\'b8\'c4
  1424. \f0 \cf4 \
  1425. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1426. \f2\b \cf8 self
  1427. \f0\b0 \cf4 \cf14 selector\cf4 :
  1428. \f2\b \cf8 @selector
  1429. \f0\b0 \cf4 (groupLevelNameRefresh:) \cf14 name\cf4 :\cf5 kgroupLevelNameRefresh\cf4 \cf14 object\cf4 :
  1430. \f2\b \cf8 nil
  1431. \f0\b0 \cf4 ]; \cf2 //
  1432. \f1 \'c8\'ba\'cd\'b7\'cf\'ce\'d0\'de\'b8\'c4
  1433. \f0 \cf4 \
  1434. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1435. \f2\b \cf8 self
  1436. \f0\b0 \cf4 \cf14 selector\cf4 :
  1437. \f2\b \cf8 @selector
  1438. \f0\b0 \cf4 (roomIsOpenIntegral:) \cf14 name\cf4 :\cf5 kisOpenIntegralRefresh\cf4 \cf14 object\cf4 :
  1439. \f2\b \cf8 nil
  1440. \f0\b0 \cf4 ]; \cf2 //
  1441. \f1 \'c8\'ba\'cd\'b7\'cf\'ce\'bf\'aa\'b9\'d8\'d0\'de\'b8\'c4
  1442. \f0 \cf4 \
  1443. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1444. \f2\b \cf8 self
  1445. \f0\b0 \cf4 \cf14 selector\cf4 :
  1446. \f2\b \cf8 @selector
  1447. \f0\b0 \cf4 (audioPlayEnd:) \cf14 name\cf4 :\cf5 kCellVoiceStartNotifaction\cf4 \cf14 object\cf4 :
  1448. \f2\b \cf8 nil
  1449. \f0\b0 \cf4 ];\cf2 //
  1450. \f1 \'bf\'aa\'ca\'bc\'c2\'bc\'d2\'f4
  1451. \f0 \cf4 \
  1452. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1453. \f2\b \cf8 self
  1454. \f0\b0 \cf4 \cf14 selector\cf4 :
  1455. \f2\b \cf8 @selector
  1456. \f0\b0 \cf4 (cardCellClick:) \cf14 name\cf4 :\cf5 kCellShowCardNotifaction\cf4 \cf14 object\cf4 :
  1457. \f2\b \cf8 nil
  1458. \f0\b0 \cf4 ];\
  1459. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1460. \f2\b \cf8 self
  1461. \f0\b0 \cf4 \cf14 selector\cf4 :
  1462. \f2\b \cf8 @selector
  1463. \f0\b0 \cf4 (locationCellClick:) \cf14 name\cf4 :\cf5 kCellLocationNotifaction\cf4 \cf14 object\cf4 :
  1464. \f2\b \cf8 nil
  1465. \f0\b0 \cf4 ];\
  1466. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1467. \f2\b \cf8 self
  1468. \f0\b0 \cf4 \cf14 selector\cf4 :
  1469. \f2\b \cf8 @selector
  1470. \f0\b0 \cf4 (onDidImage:) \cf14 name\cf4 :\cf5 kCellImageNotifaction\cf4 \cf14 object\cf4 :
  1471. \f2\b \cf8 nil
  1472. \f0\b0 \cf4 ];\cf2 //
  1473. \f1 \'d5\'d5\'c6\'ac
  1474. \f0 \cf4 \
  1475. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1476. \f2\b \cf8 self
  1477. \f0\b0 \cf4 \cf14 selector\cf4 :
  1478. \f2\b \cf8 @selector
  1479. \f0\b0 \cf4 (onDidRedPacket:) \cf14 name\cf4 :\cf5 kcellRedPacketDidTouchNotifaction\cf4 \cf14 object\cf4 :
  1480. \f2\b \cf8 nil
  1481. \f0\b0 \cf4 ];\cf2 //
  1482. \f1 \'c6\'d5\'cd\'a8\'ba\'ec\'b0\'fc\'b5\'e3\'bb\'f7
  1483. \f0 \cf4 \
  1484. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1485. \f2\b \cf8 self
  1486. \f0\b0 \cf4 \cf14 selector\cf4 :
  1487. \f2\b \cf8 @selector
  1488. \f0\b0 \cf4 (onDidTransfer:) \cf14 name\cf4 :\cf5 kcellTransferDidTouchNotifaction\cf4 \cf14 object\cf4 :
  1489. \f2\b \cf8 nil
  1490. \f0\b0 \cf4 ];\cf2 //
  1491. \f1 \'d7\'aa\'d5\'cb\'b5\'e3\'bb\'f7
  1492. \f0 \cf4 \
  1493. \cf2 //[g_notify addObserver:self selector:@selector(onDidHeadImage:) name:kCellHeadImageNotification object:nil];\cf4 \
  1494. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1495. \f2\b \cf8 self
  1496. \f0\b0 \cf4 \cf14 selector\cf4 :
  1497. \f2\b \cf8 @selector
  1498. \f0\b0 \cf4 (longGesHeadImageNotification:) \cf14 name\cf4 :\cf5 kCellLongGesHeadImageNotification\cf4 \cf14 object\cf4 :
  1499. \f2\b \cf8 nil
  1500. \f0\b0 \cf4 ];\
  1501. \
  1502. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1503. \f2\b \cf8 self
  1504. \f0\b0 \cf4 \cf14 selector\cf4 :
  1505. \f2\b \cf8 @selector
  1506. \f0\b0 \cf4 (resendMsgNotif:) \cf14 name\cf4 :\cf5 kCellResendMsgNotifaction\cf4 \cf14 object\cf4 :
  1507. \f2\b \cf8 nil
  1508. \f0\b0 \cf4 ];\cf2 //
  1509. \f1 \'d6\'d8\'b7\'a2\'cf\'fb\'cf\'a2
  1510. \f0 \cf4 \
  1511. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1512. \f2\b \cf8 self
  1513. \f0\b0 \cf4 \cf14 selector\cf4 :
  1514. \f2\b \cf8 @selector
  1515. \f0\b0 \cf4 (deleteMsgNotif:) \cf14 name\cf4 :\cf5 kCellDeleteMsgNotifaction\cf4 \cf14 object\cf4 :
  1516. \f2\b \cf8 nil
  1517. \f0\b0 \cf4 ];\cf2 //
  1518. \f1 \'c9\'be\'b3\'fd\'cf\'fb\'cf\'a2
  1519. \f0 \cf4 \
  1520. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1521. \f2\b \cf8 self
  1522. \f0\b0 \cf4 \cf14 selector\cf4 :
  1523. \f2\b \cf8 @selector
  1524. \f0\b0 \cf4 (showReadPersons:) \cf14 name\cf4 :\cf5 kCellShowReadPersonsNotifaction\cf4 \cf14 object\cf4 :
  1525. \f2\b \cf8 nil
  1526. \f0\b0 \cf4 ]; \cf2 //
  1527. \f1 \'b2\'e9\'bf\'b4\'d2\'d1\'b6\'c1\'c1\'d0\'b1\'ed
  1528. \f0 \cf4 \
  1529. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1530. \f2\b \cf8 self
  1531. \f0\b0 \cf4 \cf14 selector\cf4 :
  1532. \f2\b \cf8 @selector
  1533. \f0\b0 \cf4 (hideKeyboard:) \cf14 name\cf4 :\cf5 kHiddenKeyboardNotification\cf4 \cf14 object\cf4 :
  1534. \f2\b \cf8 nil
  1535. \f0\b0 \cf4 ];\
  1536. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1537. \f2\b \cf8 self
  1538. \f0\b0 \cf4 \cf14 selector\cf4 :
  1539. \f2\b \cf8 @selector
  1540. \f0\b0 \cf4 (onDidSystemImage1:) \cf14 name\cf4 :\cf5 kCellSystemImage1DidTouchNotifaction\cf4 \cf14 object\cf4 :
  1541. \f2\b \cf8 nil
  1542. \f0\b0 \cf4 ]; \cf2 //
  1543. \f1 \'b5\'a5\'cc\'f5\'cd\'bc\'ce\'c4\'cf\'fb\'cf\'a2\'b5\'e3\'bb\'f7
  1544. \f0 \cf4 \
  1545. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1546. \f2\b \cf8 self
  1547. \f0\b0 \cf4 \cf14 selector\cf4 :
  1548. \f2\b \cf8 @selector
  1549. \f0\b0 \cf4 (onDidSystemImage2:) \cf14 name\cf4 :\cf5 kCellSystemImage2DidTouchNotifaction\cf4 \cf14 object\cf4 :
  1550. \f2\b \cf8 nil
  1551. \f0\b0 \cf4 ]; \cf2 //
  1552. \f1 \'b6\'e0\'cc\'f5\'cd\'bc\'ce\'c4\'cf\'fb\'cf\'a2\'b5\'e3\'bb\'f7
  1553. \f0 \cf4 \
  1554. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1555. \f2\b \cf8 self
  1556. \f0\b0 \cf4 \cf14 selector\cf4 :
  1557. \f2\b \cf8 @selector
  1558. \f0\b0 \cf4 (onDidAVCall:) \cf14 name\cf4 :\cf5 kCellSystemAVCallNotifaction\cf4 \cf14 object\cf4 :
  1559. \f2\b \cf8 nil
  1560. \f0\b0 \cf4 ]; \cf2 //
  1561. \f1 \'d2\'f4\'ca\'d3\'c6\'b5\'cd\'a8\'bb\'b0
  1562. \f0 \cf4 \
  1563. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1564. \f2\b \cf8 self
  1565. \f0\b0 \cf4 \cf14 selector\cf4 :
  1566. \f2\b \cf8 @selector
  1567. \f0\b0 \cf4 (onDidFile:) \cf14 name\cf4 :\cf5 kCellSystemFileNotifaction\cf4 \cf14 object\cf4 :
  1568. \f2\b \cf8 nil
  1569. \f0\b0 \cf4 ]; \cf2 //
  1570. \f1 \'ce\'c4\'bc\'fe\'b5\'e3\'bb\'f7
  1571. \f0 \cf4 \
  1572. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1573. \f2\b \cf8 self
  1574. \f0\b0 \cf4 \cf14 selector\cf4 :
  1575. \f2\b \cf8 @selector
  1576. \f0\b0 \cf4 (onDidLink:) \cf14 name\cf4 :\cf5 kCellSystemLinkNotifaction\cf4 \cf14 object\cf4 :
  1577. \f2\b \cf8 nil
  1578. \f0\b0 \cf4 ]; \cf2 //
  1579. \f1 \'c1\'b4\'bd\'d3\'b5\'e3\'bb\'f7
  1580. \f0 \cf4 \
  1581. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1582. \f2\b \cf8 self
  1583. \f0\b0 \cf4 \cf14 selector\cf4 :
  1584. \f2\b \cf8 @selector
  1585. \f0\b0 \cf4 (onDidShake:) \cf14 name\cf4 :\cf5 kCellSystemShakeNotifaction\cf4 \cf14 object\cf4 :
  1586. \f2\b \cf8 nil
  1587. \f0\b0 \cf4 ]; \cf2 //
  1588. \f1 \'b4\'c1\'d2\'bb\'b4\'c1\'b5\'e3\'bb\'f7
  1589. \f0 \cf4 \
  1590. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1591. \f2\b \cf8 self
  1592. \f0\b0 \cf4 \cf14 selector\cf4 :
  1593. \f2\b \cf8 @selector
  1594. \f0\b0 \cf4 (onDidMergeRelay:) \cf14 name\cf4 :\cf5 kCellSystemMergeRelayNotifaction\cf4 \cf14 object\cf4 :
  1595. \f2\b \cf8 nil
  1596. \f0\b0 \cf4 ]; \cf2 //
  1597. \f1 \'ba\'cf\'b2\'a2\'d7\'aa\'b7\'a2\'b5\'e3\'bb\'f7
  1598. \f0 \cf4 \
  1599. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1600. \f2\b \cf8 self
  1601. \f0\b0 \cf4 \cf14 selector\cf4 :
  1602. \f2\b \cf8 @selector
  1603. \f0\b0 \cf4 (onDidShare:) \cf14 name\cf4 :\cf5 kCellShareNotification\cf4 \cf14 object\cf4 :
  1604. \f2\b \cf8 nil
  1605. \f0\b0 \cf4 ]; \cf2 //
  1606. \f1 \'b7\'d6\'cf\'ed
  1607. \f0 cell
  1608. \f1 \'b5\'e3\'bb\'f7
  1609. \f0 \cf4 \
  1610. \
  1611. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1612. \f2\b \cf8 self
  1613. \f0\b0 \cf4 \cf14 selector\cf4 :
  1614. \f2\b \cf8 @selector
  1615. \f0\b0 \cf4 (onDidRemind:) \cf14 name\cf4 :\cf5 kCellRemindNotifaction\cf4 \cf14 object\cf4 :
  1616. \f2\b \cf8 nil
  1617. \f0\b0 \cf4 ]; \cf2 //
  1618. \f1 \'bf\'d8\'d6\'c6\'cf\'fb\'cf\'a2\'b5\'e3\'bb\'f7
  1619. \f0 \cf4 \
  1620. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1621. \f2\b \cf8 self
  1622. \f0\b0 \cf4 \cf14 selector\cf4 :
  1623. \f2\b \cf8 @selector
  1624. \f0\b0 \cf4 (onDidReply:) \cf14 name\cf4 :\cf5 kCellReplyNotifaction\cf4 \cf14 object\cf4 :
  1625. \f2\b \cf8 nil
  1626. \f0\b0 \cf4 ]; \cf2 //
  1627. \f1 \'bb\'d8\'b8\'b4\'cf\'fb\'cf\'a2\'b5\'e3\'bb\'f7
  1628. \f0 \cf4 \
  1629. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1630. \f2\b \cf8 self
  1631. \f0\b0 \cf4 \cf14 selector\cf4 :
  1632. \f2\b \cf8 @selector
  1633. \f0\b0 \cf4 (onDidMessageReadDel:) \cf14 name\cf4 :\cf5 kCellMessageReadDelNotifaction\cf4 \cf14 object\cf4 :
  1634. \f2\b \cf8 nil
  1635. \f0\b0 \cf4 ]; \cf2 //
  1636. \f1 \'ce\'c4\'b1\'be\'cf\'fb\'cf\'a2\'d4\'c4\'ba\'f3\'bc\'b4\'b7\'d9\'b5\'e3\'bb\'f7
  1637. \f0 \cf4 \
  1638. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1639. \f2\b \cf8 self
  1640. \f0\b0 \cf4 \cf14 selector\cf4 :
  1641. \f2\b \cf8 @selector
  1642. \f0\b0 \cf4 (openReadDelNotif:) \cf14 name\cf4 :\cf5 kOpenReadDelNotif\cf4 \cf14 object\cf4 :
  1643. \f2\b \cf8 nil
  1644. \f0\b0 \cf4 ]; \cf2 //
  1645. \f1 \'d4\'c4\'ba\'f3\'bc\'b4\'b7\'d9\'bf\'aa\'b9\'d8
  1646. \f0 \cf4 \
  1647. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1648. \f2\b \cf8 self
  1649. \f0\b0 \cf4 \cf14 selector\cf4 :
  1650. \f2\b \cf8 @selector
  1651. \f0\b0 \cf4 (refreshChatLogNotif:) \cf14 name\cf4 :\cf5 kRefreshChatLogNotif\cf4 \cf14 object\cf4 :
  1652. \f2\b \cf8 nil
  1653. \f0\b0 \cf4 ];\
  1654. \
  1655. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1656. \f2\b \cf8 self
  1657. \f0\b0 \cf4 \cf14 selector\cf4 :
  1658. \f2\b \cf8 @selector
  1659. \f0\b0 \cf4 (reloadNotif:) \cf14 name\cf4 :\cf5 kChatVCReloadNotif\cf4 \cf14 object\cf4 :
  1660. \f2\b \cf8 nil
  1661. \f0\b0 \cf4 ];\
  1662. \
  1663. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1664. \f2\b \cf8 self
  1665. \f0\b0 \cf4 \cf14 selector\cf4 :
  1666. \f2\b \cf8 @selector
  1667. \f0\b0 \cf4 (onLoginChanged:) \cf14 name\cf4 :\cf5 kXmppLoginNotifaction\cf4 \cf14 object\cf4 :
  1668. \f2\b \cf8 nil
  1669. \f0\b0 \cf4 ];\
  1670. \cf2 //
  1671. \f1 \'bc\'e0\'cc\'fd\'cf\'b5\'cd\'b3\'bd\'d8\'c6\'c1
  1672. \f0 \cf4 \
  1673. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1674. \f2\b \cf8 self
  1675. \f0\b0 \cf4 \cf14 selector\cf4 :
  1676. \f2\b \cf8 @selector
  1677. \f0\b0 \cf4 (userDidTakeScreenshot:) \cf14 name\cf4 :\cf14 UIApplicationUserDidTakeScreenshotNotification\cf4 \cf14 object\cf4 :
  1678. \f2\b \cf8 nil
  1679. \f0\b0 \cf4 ];\
  1680. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1681. \f2\b \cf8 self
  1682. \f0\b0 \cf4 \cf14 selector\cf4 :
  1683. \f2\b \cf8 @selector
  1684. \f0\b0 \cf4 (onGroupHelper) \cf14 name\cf4 :\cf5 kUpdateChatVCGroupHelperData\cf4 \cf14 object\cf4 :
  1685. \f2\b \cf8 nil
  1686. \f0\b0 \cf4 ];\cf2 //
  1687. \f1 \'b8\'fc\'d0\'c2\'c8\'ba\'d6\'fa\'ca\'d6
  1688. \f0 \cf4 \
  1689. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1690. \f2\b \cf8 self
  1691. \f0\b0 \cf4 \cf14 selector\cf4 :
  1692. \f2\b \cf8 @selector
  1693. \f0\b0 \cf4 (updateMsgSynTaskNotif:) \cf14 name\cf4 :\cf5 kUpdateMsgSynTask\cf4 \cf14 object\cf4 :
  1694. \f2\b \cf8 nil
  1695. \f0\b0 \cf4 ];\
  1696. \
  1697. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1698. \f2\b \cf8 self
  1699. \f0\b0 \cf4 \cf14 selector\cf4 :
  1700. \f2\b \cf8 @selector
  1701. \f0\b0 \cf4 (chatVCMessageSync:) \cf14 name\cf4 :\cf5 kChatVCMessageSync\cf4 \cf14 object\cf4 :
  1702. \f2\b \cf8 nil
  1703. \f0\b0 \cf4 ];\
  1704. \cf14 NSLog\cf4 (\cf6 @"timetime6 -- %f"\cf4 , [[\cf10 NSDate\cf4 \cf14 date\cf4 ] \cf14 timeIntervalSince1970\cf4 ]);\
  1705. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1706. \f2\b \cf8 self
  1707. \f0\b0 \cf4 \cf14 selector\cf4 :
  1708. \f2\b \cf8 @selector
  1709. \f0\b0 \cf4 (updateTransferMsgFileSize:) \cf14 name\cf4 :\cf5 kUpdateTransferMsgFileSize\cf4 \cf14 object\cf4 :
  1710. \f2\b \cf8 nil
  1711. \f0\b0 \cf4 ];\
  1712. \
  1713. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1714. \f2\b \cf8 self
  1715. \f0\b0 \cf4 \cf14 selector\cf4 :
  1716. \f2\b \cf8 @selector
  1717. \f0\b0 \cf4 (keepOnGroupSend:) \cf14 name\cf4 :\cf5 kKeepOnSendGroupSendMessage\cf4 \cf14 object\cf4 :
  1718. \f2\b \cf8 nil
  1719. \f0\b0 \cf4 ];\
  1720. \
  1721. [\cf5 g_notify\cf4 \cf14 addObserver\cf4 :
  1722. \f2\b \cf8 self
  1723. \f0\b0 \cf4 \cf14 selector\cf4 :
  1724. \f2\b \cf8 @selector
  1725. \f0\b0 \cf4 (applicationWillEnterForeground) \cf14 name\cf4 :\cf5 kApplicationWillEnterForeground\cf4 \cf14 object\cf4 :
  1726. \f2\b \cf8 nil
  1727. \f0\b0 \cf4 ];\
  1728. \
  1729. \
  1730. \f2\b \cf8 return
  1731. \f0\b0 \cf4
  1732. \f2\b \cf8 self
  1733. \f0\b0 \cf4 ;\
  1734. \}\
  1735. \cf12 /**
  1736. \f1 \cf2 \'b8\'fc\'b6\'e0
  1737. \f3 */
  1738. \f0 \cf4 \
  1739. - (
  1740. \f2\b \cf8 void
  1741. \f0\b0 \cf4 )\cf11 xxxClick\cf4 \{\
  1742. \
  1743. \cf9 JXRoomMemberVC\cf4 * vc = [\cf9 JXRoomMemberVC\cf4 \cf14 alloc\cf4 ];\
  1744. \cf2 // vc.chatRoom = [[JXXMPP sharedInstance].roomPool joinRoom:roomdata.roomJid title:roomdata.name isNew:NO];\cf4 \
  1745. \cf2 // vc.room = roomdata;\cf4 \
  1746. vc.\cf15 roomId\cf4 = \cf15 roomId\cf4 ;\
  1747. vc.\cf15 room\cf4 =
  1748. \f2\b \cf8 self
  1749. \f0\b0 \cf4 .\cf15 room\cf4 ;\
  1750. vc.\cf15 delegate\cf4 =
  1751. \f2\b \cf8 self
  1752. \f0\b0 \cf4 ;\
  1753. vc = [vc \cf14 init\cf4 ];\
  1754. \cf2 // [g_window addSubview:vc.view];\cf4 \
  1755. [\cf5 g_navigation\cf4 \cf15 pushViewController\cf4 :vc \cf15 animated\cf4 :
  1756. \f2\b \cf8 YES
  1757. \f0\b0 \cf4 ];\
  1758. \
  1759. \}\
  1760. - (
  1761. \f2\b \cf8 void
  1762. \f0\b0 \cf4 )\cf11 applicationWillEnterForeground\cf4 \{\
  1763. \cf2 //
  1764. \f1 \'bb\'f1\'c8\'a1\'b7\'fe\'ce\'f1\'c6\'f7\'ca\'b1\'bc\'e4
  1765. \f0 \cf4 \
  1766. \cf2 // [g_server getCurrentTimeToView:self];\cf4 \
  1767. \cf2 // [g_server tigaseMucMsgsWithRoomId:<#(NSString *)#> StartTime:<#(long)#> EndTime:<#(long)#> PageIndex:<#(int)#> PageSize:<#(int)#> toView:<#(id)#>];\cf4 \
  1768. \cf2 // [self messageSync];\cf4 \
  1769. \}\
  1770. \
  1771. \
  1772. \cf2 //
  1773. \f1 \'c9\'e8\'d6\'c3\'b5\'a5\'c1\'c4
  1774. \f0 title\cf4 \
  1775. - (
  1776. \f2\b \cf8 void
  1777. \f0\b0 \cf4 )\cf11 setChatTitle\cf4 :(\cf10 NSString\cf4 *)userName \{\
  1778. \
  1779. \cf10 NSString\cf4 *str =
  1780. \f2\b \cf8 self
  1781. \f0\b0 \cf4 .\cf15 onlinestate\cf4 ? \cf5 Localized\cf4 (\cf6 @"JX_OnLine"\cf4 ) : \cf5 Localized\cf4 (\cf6 @"JX_OffLine"\cf4 );\
  1782. \
  1783. \f2\b \cf8 if
  1784. \f0\b0 \cf4 ([\cf5 g_config\cf4 .\cf15 isOpenOnlineStatus\cf4 \cf14 boolValue\cf4 ]) \{\
  1785. \f2\b \cf8 if
  1786. \f0\b0 \cf4 (\cf15 _tempChat\cf4 ==\cf7 11\cf4 ) \{\
  1787. \
  1788. \f2\b \cf8 self
  1789. \f0\b0 \cf4 .\cf14 title\cf4 = [\cf10 NSString\cf4 \cf14 stringWithFormat\cf4 :\cf6 @"%@
  1790. \f1 \'c1\'d9\'ca\'b1\'bb\'e1\'bb\'b0
  1791. \f0 (%@) "\cf4 ,userName, str];\
  1792. \}
  1793. \f2\b \cf8 else
  1794. \f0\b0 \cf4 \{\
  1795. \
  1796. \}\
  1797. \}
  1798. \f2\b \cf8 else
  1799. \f0\b0 \cf4 \{\
  1800. \f2\b \cf8 if
  1801. \f0\b0 \cf4 (\cf15 _tempChat\cf4 ==\cf7 11\cf4 ) \{\
  1802. \
  1803. \f2\b \cf8 self
  1804. \f0\b0 \cf4 .\cf14 title\cf4 =[\cf10 NSString\cf4 \cf14 stringWithFormat\cf4 :\cf6 @"%@(%@)"\cf4 ,userName, \cf6 @"
  1805. \f1 \'c1\'d9\'ca\'b1\'bb\'e1\'bb\'b0
  1806. \f0 "\cf4 ] ;\
  1807. \
  1808. \}
  1809. \f2\b \cf8 else
  1810. \f0\b0 \cf4 \{\
  1811. \
  1812. \f2\b \cf8 self
  1813. \f0\b0 \cf4 .\cf14 title\cf4 = userName;\
  1814. \}\
  1815. \}\
  1816. \
  1817. [
  1818. \f2\b \cf8 self
  1819. \f0\b0 \cf4 \cf15 setAudioIconFrame\cf4 ];\
  1820. \}\
  1821. \
  1822. \cf2 //
  1823. \f1 \'b8\'fc\'d0\'c2\'c0\'eb\'cf\'df\'cf\'fb\'cf\'a2\'c8\'ce\'ce\'f1
  1824. \f0 \cf4 \
  1825. - (
  1826. \f2\b \cf8 void
  1827. \f0\b0 \cf4 )\cf11 updateMsgSynTaskNotif\cf4 :(\cf10 NSNotification\cf4 *)notif \{\
  1828. \
  1829. \cf10 NSString\cf4 *userId = notif.\cf14 object\cf4 ;\
  1830. \f2\b \cf8 if
  1831. \f0\b0 \cf4 ([userId \cf14 isEqualToString\cf4 :
  1832. \f2\b \cf8 self
  1833. \f0\b0 \cf4 .\cf15 chatPerson\cf4 .\cf15 userId\cf4 ]) \{\
  1834. \
  1835. \f2\b \cf8 if
  1836. \f0\b0 \cf4 (
  1837. \f2\b \cf8 self
  1838. \f0\b0 \cf4 .\cf15 roomJid\cf4 .\cf14 length\cf4 > \cf7 0\cf4 ) \{\
  1839. \cf15 _taskList\cf4 = [[\cf9 JXSynTask\cf4 \cf15 sharedInstance\cf4 ] \cf15 getTaskWithUserId\cf4 :
  1840. \f2\b \cf8 self
  1841. \f0\b0 \cf4 .\cf15 roomJid\cf4 ];\
  1842. \}\
  1843. \}\
  1844. \}\
  1845. \
  1846. \cf5 #pragma mark
  1847. \f2\b \cf16 -
  1848. \f4 \'d3\'c3\'bb\'a7\'bd\'d8\'c6\'c1\'cd\'a8\'d6\'aa\'ca\'c2\'bc\'fe
  1849. \f0\b0 \cf4 \
  1850. - (
  1851. \f2\b \cf8 void
  1852. \f0\b0 \cf4 )\cf11 userDidTakeScreenshot\cf4 :(\cf10 NSNotification\cf4 *)notification \{\
  1853. \cf2 //
  1854. \f1 \'c8\'e7\'b9\'fb\'b5\'b1\'c7\'b0\'bd\'e7\'c3\'e6\'b4\'e6\'d4\'da\'d4\'c4\'ba\'f3\'bc\'b4\'b7\'d9\'cf\'fb\'cf\'a2\'a3\'ac\'bd\'f8\'d0\'d0\'bd\'d8\'c6\'c1\'b2\'d9\'d7\'f7\'a3\'ac\'b1\'e3\'bb\'e1\'cd\'a8\'d6\'aa\'b6\'d4\'b7\'bd
  1855. \f0 \cf4 \
  1856. \cf10 NSArray\cf4 *allDelMsg = [[\cf9 JXMessageObject\cf4 \cf15 sharedInstance\cf4 ] \cf15 fetchDelMessageWithUserId\cf4 :
  1857. \f2\b \cf8 self
  1858. \f0\b0 \cf4 .\cf15 chatPerson\cf4 .\cf15 userId\cf4 ];\
  1859. \f2\b \cf8 if
  1860. \f0\b0 \cf4 (allDelMsg.\cf14 count\cf4 > \cf7 0\cf4 ) \{\
  1861. \cf9 JXMessageObject\cf4 *msg = [[\cf9 JXMessageObject\cf4 \cf14 alloc\cf4 ] \cf14 init\cf4 ];\
  1862. msg.\cf15 type\cf4 = [\cf10 NSNumber\cf4 \cf14 numberWithInt\cf4 :\cf15 kWCMessageTypeDelMsgScreenshots\cf4 ];\
  1863. msg.\cf15 timeSend\cf4 = [\cf10 NSDate\cf4 \cf14 date\cf4 ];\
  1864. msg.\cf15 toUserId\cf4 =
  1865. \f2\b \cf8 self
  1866. \f0\b0 \cf4 .\cf15 chatPerson\cf4 .\cf15 userId\cf4 ;\
  1867. msg.\cf15 fromUserId\cf4 = \cf5 MY_USER_ID\cf4 ;\
  1868. msg.\cf15 content\cf4 = \cf5 Localized\cf4 (\cf6 @"JX_TheOtherTookAScreenshotOfTheConversation"\cf4 );\
  1869. [msg \cf15 insert\cf4 :
  1870. \f2\b \cf8 nil
  1871. \f0\b0 \cf4 ];\
  1872. [\cf5 g_xmpp\cf4 \cf15 sendMessage\cf4 :msg \cf15 roomName\cf4 :
  1873. \f2\b \cf8 nil
  1874. \f0\b0 \cf4 ];\
  1875. \}\
  1876. \}\
  1877. \
  1878. -(
  1879. \f2\b \cf8 void
  1880. \f0\b0 \cf4 )\cf11 onLoginChanged\cf4 :(\cf10 NSNotification\cf4 *)notifacation\{\
  1881. \
  1882. \f2\b \cf8 switch
  1883. \f0\b0 \cf4 ([\cf9 JXXMPP\cf4 \cf15 sharedInstance\cf4 ].\cf15 isLogined\cf4 )\{\
  1884. \f2\b \cf8 case
  1885. \f0\b0 \cf4 \cf5 login_status_ing\cf4 :\{\
  1886. \}\
  1887. \f2\b \cf8 break
  1888. \f0\b0 \cf4 ;\
  1889. \f2\b \cf8 case
  1890. \f0\b0 \cf4 \cf5 login_status_no\cf4 :\{\
  1891. \}\
  1892. \f2\b \cf8 break
  1893. \f0\b0 \cf4 ;\
  1894. \f2\b \cf8 case
  1895. \f0\b0 \cf4 \cf5 login_status_yes\cf4 :\{\
  1896. \f2\b \cf8 if
  1897. \f0\b0 \cf4 (
  1898. \f2\b \cf8 self
  1899. \f0\b0 \cf4 .\cf15 roomJid\cf4 .\cf14 length\cf4 > \cf7 0\cf4 && [
  1900. \f2\b \cf8 self
  1901. \f0\b0 \cf4 .\cf15 groupStatus\cf4 \cf14 integerValue\cf4 ] == \cf7 0\cf4 ) \{\
  1902. [\cf5 g_xmpp\cf4 .\cf15 roomPool\cf4 .\cf15 pool\cf4 \cf14 removeObjectForKey\cf4 :\cf15 chatPerson\cf4 .\cf15 userId\cf4 ];\
  1903. [\cf5 g_xmpp\cf4 .\cf15 roomPool\cf4 \cf15 joinRoom\cf4 :\cf15 chatPerson\cf4 .\cf15 userId\cf4 \cf15 title\cf4 :\cf15 chatPerson\cf4 .\cf15 userNickname\cf4 \cf15 lastDate\cf4 :
  1904. \f2\b \cf8 nil
  1905. \f0\b0 \cf4 \cf15 isNew\cf4 :
  1906. \f2\b \cf8 NO
  1907. \f0\b0 \cf4 ];\
  1908. \cf15 chatRoom\cf4 = [[\cf9 JXXMPP\cf4 \cf15 sharedInstance\cf4 ].\cf15 roomPool\cf4 \cf15 joinRoom\cf4 :\cf15 chatPerson\cf4 .\cf15 userId\cf4 \cf15 title\cf4 :\cf15 chatPerson\cf4 .\cf15 userNickname\cf4 \cf15 lastDate\cf4 :
  1909. \f2\b \cf8 nil
  1910. \f0\b0 \cf4 \cf15 isNew\cf4 :
  1911. \f2\b \cf8 NO
  1912. \f0\b0 \cf4 ];\
  1913. \}\
  1914. \}\
  1915. \
  1916. \f2\b \cf8 break
  1917. \f0\b0 \cf4 ;\
  1918. \}\
  1919. \}\
  1920. \
  1921. - (
  1922. \f2\b \cf8 void
  1923. \f0\b0 \cf4 )\cf11 actionTitle\cf4 :(\cf9 JXLabel\cf4 *)sender \{\
  1924. \f2\b \cf8 if
  1925. \f0\b0 \cf4 (
  1926. \f2\b \cf8 self
  1927. \f0\b0 \cf4 .\cf15 isRecording\cf4 ) \{\
  1928. [
  1929. \f2\b \cf8 self
  1930. \f0\b0 \cf4 \cf15 chatCell\cf4 :
  1931. \f2\b \cf8 nil
  1932. \f0\b0 \cf4 \cf15 stopRecordIndexNum\cf4 :(
  1933. \f2\b \cf8 int
  1934. \f0\b0 \cf4 )\cf15 _array\cf4 .\cf14 count\cf4 - \cf7 1\cf4 ];\
  1935. \}\
  1936. \}\
  1937. \
  1938. \cf2 //
  1939. \f1 \'d4\'c4\'ba\'f3\'bc\'b4\'b7\'d9\'cd\'a8\'d6\'aa
  1940. \f0 \cf4 \
  1941. - (
  1942. \f2\b \cf8 void
  1943. \f0\b0 \cf4 )\cf11 openReadDelNotif\cf4 :(\cf10 NSNotification\cf4 *)notif \{\
  1944. \
  1945. \f2\b \cf8 BOOL
  1946. \f0\b0 \cf4 isOpen = [notif.\cf14 object\cf4 \cf14 boolValue\cf4 ];\
  1947. \cf15 _isReadDelete\cf4 = isOpen;\
  1948. \}\
  1949. \
  1950. \cf5 #pragma mark
  1951. \f2\b \cf16 ----
  1952. \f4 \'d4\'c4\'ba\'f3\'bc\'b4\'b7\'d9\'bf\'aa\'b9\'d8
  1953. \f0\b0 \cf4 \
  1954. - (
  1955. \f2\b \cf8 void
  1956. \f0\b0 \cf4 )\cf11 switchValueChange\cf4 :(\cf10 UIButton\cf4 *)but\{\
  1957. \
  1958. \f2\b \cf8 if
  1959. \f0\b0 \cf4 (but.\cf14 tag\cf4 == \cf7 2000\cf4 ) \{\
  1960. but.\cf14 tag\cf4 = \cf7 1000\cf4 ;\
  1961. but.\cf14 selected\cf4 = !but.\cf14 selected\cf4 ;\
  1962. \cf15 _isReadDelete\cf4 = !\cf15 _isReadDelete\cf4 ;\
  1963. \f2\b \cf8 if
  1964. \f0\b0 \cf4 (\cf15 _isReadDelete\cf4 ) \{\
  1965. but.\cf14 backgroundColor\cf4 = [\cf10 UIColor\cf4 \cf14 lightGrayColor\cf4 ];\
  1966. [\cf5 g_App\cf4 \cf15 showAlert\cf4 :\cf5 Localized\cf4 (\cf6 @"JX_ReadDeleteTip"\cf4 )];\
  1967. \}
  1968. \f2\b \cf8 else
  1969. \f0\b0 \cf4 \{\
  1970. but.\cf14 backgroundColor\cf4 = [\cf10 UIColor\cf4 \cf14 clearColor\cf4 ];\
  1971. \}\
  1972. \cf14 dispatch_after\cf4 (\cf14 dispatch_time\cf4 (\cf5 DISPATCH_TIME_NOW\cf4 , (\cf10 int64_t\cf4 )(\cf7 1\cf4 * \cf5 NSEC_PER_SEC\cf4 )), \cf14 dispatch_get_main_queue\cf4 (), ^\{\
  1973. but.\cf14 tag\cf4 = \cf7 2000\cf4 ;\
  1974. \});\
  1975. \}\
  1976. \}\
  1977. \
  1978. \cf2 //
  1979. \f1 \'d6\'d8\'d0\'c2\'bc\'d3\'d4\'d8
  1980. \f0 \cf4 \
  1981. - (
  1982. \f2\b \cf8 void
  1983. \f0\b0 \cf4 )\cf11 refreshChatLogNotif\cf4 :(\cf10 NSNotification\cf4 *)notif \{\
  1984. \f2\b \cf8 self
  1985. \f0\b0 \cf4 .\cf15 isGetServerMsg\cf4 =
  1986. \f2\b \cf8 NO
  1987. \f0\b0 \cf4 ;\
  1988. [\cf15 _array\cf4 \cf14 removeAllObjects\cf4 ];\
  1989. [
  1990. \f2\b \cf8 self
  1991. \f0\b0 \cf4 \cf15 refresh\cf4 :
  1992. \f2\b \cf8 nil
  1993. \f0\b0 \cf4 ];\
  1994. [
  1995. \f2\b \cf8 self
  1996. \f0\b0 \cf4 .\cf15 tableView\cf4 \cf14 reloadData\cf4 ];\
  1997. \
  1998. \}\
  1999. \
  2000. - (
  2001. \f2\b \cf8 void
  2002. \f0\b0 \cf4 )\cf11 reloadNotif\cf4 :(\cf10 NSNotification\cf4 *)notif \{\
  2003. \f2\b \cf8 self
  2004. \f0\b0 \cf4 .\cf15 isGetServerMsg\cf4 =
  2005. \f2\b \cf8 NO
  2006. \f0\b0 \cf4 ;\
  2007. [\cf15 _array\cf4 \cf14 removeAllObjects\cf4 ];\
  2008. [
  2009. \f2\b \cf8 self
  2010. \f0\b0 \cf4 .\cf15 tableView\cf4 \cf14 reloadData\cf4 ];\
  2011. \}\
  2012. \
  2013. -(
  2014. \f2\b \cf8 void
  2015. \f0\b0 \cf4 )\cf11 cardCellClick\cf4 :(\cf10 NSNotification\cf4 *) notification\{\
  2016. \f2\b \cf8 if
  2017. \f0\b0 \cf4 (\cf15 recording\cf4 ) \{\
  2018. \f2\b \cf8 return
  2019. \f0\b0 \cf4 ;\
  2020. \}\
  2021. \cf9 JXMessageObject\cf4 *msg = notification.\cf14 object\cf4 ;\
  2022. \cf10 NSString\cf4 * objectId = msg.\cf15 objectId\cf4 ;\
  2023. \f2\b \cf8 self
  2024. \f0\b0 \cf4 .\cf15 firstGetUser\cf4 =
  2025. \f2\b \cf8 YES
  2026. \f0\b0 \cf4 ;\
  2027. \cf2 // [g_server getUser:objectId toView:self];\cf4 \
  2028. \cf9 JXUserInfoVC\cf4 * vc = [\cf9 JXUserInfoVC\cf4 \cf14 alloc\cf4 ];\
  2029. vc.\cf15 userId\cf4 = objectId;\
  2030. vc.\cf15 isJustShow\cf4 =
  2031. \f2\b \cf8 self
  2032. \f0\b0 \cf4 .\cf15 courseId\cf4 .\cf14 length\cf4 > \cf7 0\cf4 ;\
  2033. vc.\cf15 fromAddType\cf4 = \cf7 2\cf4 ;\
  2034. vc = [vc \cf14 init\cf4 ];\
  2035. [\cf5 g_navigation\cf4 \cf15 pushViewController\cf4 :vc \cf15 animated\cf4 :
  2036. \f2\b \cf8 YES
  2037. \f0\b0 \cf4 ];\
  2038. \}\
  2039. \
  2040. -(
  2041. \f2\b \cf8 void
  2042. \f0\b0 \cf4 )\cf11 locationCellClick\cf4 :(\cf10 NSNotification\cf4 *)notification\{\
  2043. \f2\b \cf8 if
  2044. \f0\b0 \cf4 (\cf15 recording\cf4 ) \{\
  2045. \f2\b \cf8 return
  2046. \f0\b0 \cf4 ;\
  2047. \}\
  2048. \cf9 JXMessageObject\cf4 *msg = notification.\cf14 object\cf4 ;\
  2049. \f2\b \cf8 double
  2050. \f0\b0 \cf4 location_x = [msg.\cf15 location_x\cf4 \cf14 doubleValue\cf4 ];\
  2051. \f2\b \cf8 double
  2052. \f0\b0 \cf4 location_y = [msg.\cf15 location_y\cf4 \cf14 doubleValue\cf4 ];\
  2053. \
  2054. \cf9 JXMapData\cf4 * mapData = [[\cf9 JXMapData\cf4 \cf14 alloc\cf4 ] \cf14 init\cf4 ];\
  2055. mapData.\cf15 latitude\cf4 = [\cf10 NSString\cf4 \cf14 stringWithFormat\cf4 :\cf6 @"%f"\cf4 ,location_x];\
  2056. mapData.\cf15 longitude\cf4 = [\cf10 NSString\cf4 \cf14 stringWithFormat\cf4 :\cf6 @"%f"\cf4 ,location_y];\
  2057. \cf10 NSArray\cf4 * locations = \cf7 @[\cf4 mapData\cf7 ]\cf4 ;\
  2058. mapData.\cf15 title\cf4 = msg.\cf15 objectId\cf4 ;\
  2059. \f2\b \cf8 if
  2060. \f0\b0 \cf4 (\cf5 g_config\cf4 .\cf15 isChina\cf4 ) \{\
  2061. \cf9 JXLocationVC\cf4 * vc = [\cf9 JXLocationVC\cf4 \cf14 alloc\cf4 ];\
  2062. vc.\cf15 placeNames\cf4 = msg.\cf15 objectId\cf4 ;\
  2063. vc.\cf15 locations\cf4 = [\cf10 NSMutableArray\cf4 \cf14 arrayWithArray\cf4 :locations];\
  2064. vc.\cf15 locationType\cf4 = \cf15 JXLocationTypeShowStaticLocation\cf4 ;\
  2065. vc = [vc \cf14 init\cf4 ];\
  2066. [\cf5 g_navigation\cf4 \cf15 pushViewController\cf4 :vc \cf15 animated\cf4 :
  2067. \f2\b \cf8 YES
  2068. \f0\b0 \cf4 ];\
  2069. \}
  2070. \f2\b \cf8 else
  2071. \f0\b0 \cf4 \{\
  2072. \cf15 _gooMap\cf4 = [\cf9 JXGoogleMapVC\cf4 \cf14 alloc\cf4 ] ;\
  2073. \cf15 _gooMap\cf4 .\cf15 locations\cf4 = [\cf10 NSMutableArray\cf4 \cf14 arrayWithArray\cf4 :locations];\
  2074. \cf15 _gooMap\cf4 .\cf15 locationType\cf4 = \cf15 JXGooLocationTypeShowStaticLocation\cf4 ;\
  2075. \cf15 _gooMap\cf4 .\cf15 placeNames\cf4 = msg.\cf15 objectId\cf4 ;\
  2076. \cf15 _gooMap\cf4 = [\cf15 _gooMap\cf4 \cf14 init\cf4 ];\
  2077. [\cf5 g_navigation\cf4 \cf15 pushViewController\cf4 :\cf15 _gooMap\cf4 \cf15 animated\cf4 :
  2078. \f2\b \cf8 YES
  2079. \f0\b0 \cf4 ];\
  2080. \}\
  2081. \
  2082. \}\
  2083. \
  2084. -(
  2085. \f2\b \cf8 void
  2086. \f0\b0 \cf4 )\cf11 viewDidAppear\cf4 :(
  2087. \f2\b \cf8 BOOL
  2088. \f0\b0 \cf4 )animated\{\
  2089. [
  2090. \f2\b \cf8 super
  2091. \f0\b0 \cf4 \cf14 viewDidAppear\cf4 :animated];\
  2092. \f2\b \cf8 for
  2093. \f0\b0 \cf4 (\cf10 UIGestureRecognizer\cf4 *gesture
  2094. \f2\b \cf8 in
  2095. \f0\b0 \cf4
  2096. \f2\b \cf8 self
  2097. \f0\b0 \cf4 .\cf14 view\cf4 .\cf14 window\cf4 .\cf14 gestureRecognizers\cf4 ) \{\
  2098. \cf14 NSLog\cf4 (\cf6 @"gesture = %@"\cf4 ,gesture);\
  2099. gesture.\cf14 delaysTouchesBegan\cf4 =
  2100. \f2\b \cf8 NO
  2101. \f0\b0 \cf4 ;\
  2102. \cf14 NSLog\cf4 (\cf6 @"delaysTouchesBegan = %@"\cf4 ,gesture.\cf14 delaysTouchesBegan\cf4 ?\cf6 @"YES"\cf4 :\cf6 @"NO"\cf4 );\
  2103. \cf14 NSLog\cf4 (\cf6 @"delaysTouchesEnded = %@"\cf4 ,gesture.\cf14 delaysTouchesEnded\cf4 ?\cf6 @"YES"\cf4 :\cf6 @"NO"\cf4 );\
  2104. \}\
  2105. \
  2106. \cf14 dispatch_after\cf4 (\cf14 dispatch_time\cf4 (\cf5 DISPATCH_TIME_NOW\cf4 , (\cf10 int64_t\cf4 )(\cf7 2\cf4 * \cf5 NSEC_PER_SEC\cf4 )), \cf14 dispatch_get_main_queue\cf4 (), ^\{\
  2107. \
  2108. \cf2 // [_table scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:_array.count-1 inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:NO];\cf4 \
  2109. \cf2 // [_table reloadData];\cf4 \
  2110. \});\
  2111. \}\
  2112. \
  2113. - (
  2114. \f2\b \cf8 void
  2115. \f0\b0 \cf4 )\cf11 getEmojsData\cf4 \{\
  2116. \cf2 // [g_server faceClollectListType:@"0" View:self];\cf4 \
  2117. \cf2 // [g_server getFaceList:@"0" View:self];\cf4 \
  2118. [\cf5 g_server\cf4 \cf15 getFaceListByGradeToView\cf4 :
  2119. \f2\b \cf8 self
  2120. \f0\b0 \cf4 ];\
  2121. \cf2 // JXUserObject *user = [[JXUserObject sharedInstance] getUserById:];\cf4 \
  2122. [\cf5 g_server\cf4 \cf15 roomMemberGetMemberListByPageWithRoomId\cf4 :
  2123. \f2\b \cf8 self
  2124. \f0\b0 \cf4 .\cf15 roomId\cf4 \cf15 joinTime\cf4 :\cf7 1555649346\cf4 \cf15 toView\cf4 :
  2125. \f2\b \cf8 self
  2126. \f0\b0 \cf4 ];\
  2127. [\cf5 g_server\cf4 \cf15 getbubbleFontByUserId\cf4 :
  2128. \f2\b \cf8 nil
  2129. \f0\b0 \cf4 \cf15 ToView\cf4 :
  2130. \f2\b \cf8 self
  2131. \f0\b0 \cf4 ];\
  2132. \}\
  2133. \
  2134. - (
  2135. \f2\b \cf8 void
  2136. \f0\b0 \cf4 )\cf11 activityView\cf4 \{\
  2137. \cf2 // [self.view addSubview:self.showBtn];\cf4 \
  2138. \cf15 _imgArr\cf4 = [
  2139. \f2\b \cf8 self
  2140. \f0\b0 \cf4 \cf15 setImgArr\cf4 ];\
  2141. \}\
  2142. -(\cf10 NSMutableArray\cf4 *)\cf11 setImgArr\cf4 \{\
  2143. \cf10 NSMutableArray\cf4 *arr = [[\cf10 NSMutableArray\cf4 \cf14 alloc\cf4 ]\cf14 initWithCapacity\cf4 :\cf7 0\cf4 ];\
  2144. \cf2 // for (int i = 1; i<=5; i++) \{\cf4 \
  2145. \cf9 DYAdModel\cf4 *adModel = [[\cf9 DYAdModel\cf4 \cf14 alloc\cf4 ]\cf14 init\cf4 ];\
  2146. adModel.\cf15 imgStr\cf4 = \cf6 @"
  2147. \f1 \'c0\'f1\'ce\'ef
  2148. \f0 "\cf4 ;\
  2149. adModel.\cf15 linkUrl\cf4 = \cf6 @"http://www.baidu.com"\cf4 ;\
  2150. [arr \cf14 addObject\cf4 :adModel];\
  2151. \cf2 // \}\cf4 \
  2152. \f2\b \cf8 return
  2153. \f0\b0 \cf4 arr;\
  2154. \}\
  2155. \
  2156. -(\cf10 UIButton\cf4 *)\cf11 showBtn\cf4 \{\
  2157. \f2\b \cf8 if
  2158. \f0\b0 \cf4 (!\cf15 _showBtn\cf4 ) \{\
  2159. \cf15 _showBtn\cf4 = [\cf10 UIButton\cf4 \cf14 buttonWithType\cf4 :\cf14 UIButtonTypeCustom\cf4 ];\
  2160. \cf15 _showBtn\cf4 .\cf14 center\cf4 =
  2161. \f2\b \cf8 self
  2162. \f0\b0 \cf4 .\cf14 view\cf4 .\cf14 center\cf4 ;\
  2163. \cf15 _showBtn\cf4 .\cf14 bounds\cf4 = \cf14 CGRectMake\cf4 (\cf7 0\cf4 , \cf7 0\cf4 , \cf7 100\cf4 , \cf7 60\cf4 );\
  2164. [\cf15 _showBtn\cf4 \cf14 setTitle\cf4 :\cf6 @"
  2165. \f1 \'b5\'af\'a1\'a2\'b5\'af\'a1\'a2\'b5\'af
  2166. \f0 "\cf4 forState:\cf14 UIControlStateNormal\cf4 ];\
  2167. [\cf15 _showBtn\cf4 \cf14 setTitleColor\cf4 :[\cf10 UIColor\cf4 \cf14 orangeColor\cf4 ] \cf14 forState\cf4 :\cf14 UIControlStateNormal\cf4 ];\
  2168. [\cf15 _showBtn\cf4 \cf14 addTarget\cf4 :
  2169. \f2\b \cf8 self
  2170. \f0\b0 \cf4 \cf14 action\cf4 :
  2171. \f2\b \cf8 @selector
  2172. \f0\b0 \cf4 (showAdAlertView) \cf14 forControlEvents\cf4 :\cf14 UIControlEventTouchUpInside\cf4 ];\
  2173. \}\
  2174. \f2\b \cf8 return
  2175. \f0\b0 \cf4 \cf15 _showBtn\cf4 ;\
  2176. \}\
  2177. \
  2178. -(
  2179. \f2\b \cf8 void
  2180. \f0\b0 \cf4 )\cf11 showAdAlertView\cf4 \{\
  2181. [\cf9 DYAdAlertView\cf4 \cf15 showInView\cf4 :
  2182. \f2\b \cf8 self
  2183. \f0\b0 \cf4 .\cf14 view\cf4 \cf15 theDelegate\cf4 :
  2184. \f2\b \cf8 self
  2185. \f0\b0 \cf4 \cf15 theADInfo\cf4 :\cf15 _imgArr\cf4 \cf15 placeHolderImage\cf4 :\cf6 @"1"\cf4 ];\
  2186. \}\
  2187. -(
  2188. \f2\b \cf8 void
  2189. \f0\b0 \cf4 )\cf11 showAdAlertViewImageString\cf4 :(\cf10 NSString\cf4 *)image \cf11 linkUrl\cf4 :(\cf10 NSString\cf4 *)linkUrl \cf11 audio\cf4 :(\cf10 NSString\cf4 *)audio \cf11 duration\cf4 :(\cf10 NSTimeInterval\cf4 )duration \cf11 content\cf4 :(\cf10 NSString\cf4 *)content \cf11 showCancelButton\cf4 :(
  2190. \f2\b \cf8 BOOL
  2191. \f0\b0 \cf4 )showCancelButton \cf11 type\cf4 :(\cf9 DYAdModelType\cf4 )type \cf11 success\cf4 :(
  2192. \f2\b \cf8 BOOL
  2193. \f0\b0 \cf4 )success\{\
  2194. \cf10 NSMutableArray\cf4 *arr = [[\cf10 NSMutableArray\cf4 \cf14 alloc\cf4 ]\cf14 initWithCapacity\cf4 :\cf7 0\cf4 ];\
  2195. \cf9 DYAdModel\cf4 *adModel = [[\cf9 DYAdModel\cf4 \cf14 alloc\cf4 ]\cf14 init\cf4 ];\
  2196. adModel.\cf15 imgStr\cf4 = image;\
  2197. adModel.\cf15 linkUrl\cf4 = linkUrl;\
  2198. adModel.\cf15 audio\cf4 = audio;\
  2199. adModel.\cf15 duration\cf4 = duration;\
  2200. adModel.\cf15 content\cf4 = content;\
  2201. adModel.\cf15 showCancelButton\cf4 = showCancelButton;\
  2202. adModel.\cf15 type\cf4 = type;\
  2203. adModel.\cf15 success\cf4 = success;\
  2204. [arr \cf14 addObject\cf4 :adModel];\
  2205. \cf15 _imgArr\cf4 = arr;\
  2206. \
  2207. [\cf15 _showLongViewc\cf4 \cf14 removeFromSuperview\cf4 ];\
  2208. \cf9 DYAdAlertView\cf4 *showLongView= [\cf9 DYAdAlertView\cf4 \cf15 showInView\cf4 :
  2209. \f2\b \cf8 self
  2210. \f0\b0 \cf4 .\cf14 view\cf4 \cf15 theDelegate\cf4 :
  2211. \f2\b \cf8 self
  2212. \f0\b0 \cf4 \cf15 theADInfo\cf4 :arr \cf15 placeHolderImage\cf4 :\cf6 @"1"\cf4 ];\
  2213. showLongView.\cf14 userInteractionEnabled\cf4 =
  2214. \f2\b \cf8 YES
  2215. \f0\b0 \cf4 ;\
  2216. \f2\b \cf8 if
  2217. \f0\b0 \cf4 (\cf15 _strURLGoback\cf4 .\cf14 length\cf4 >\cf7 0\cf4 ) \{\
  2218. [[[\cf10 UIApplication\cf4 \cf14 sharedApplication\cf4 ].\cf14 windows\cf4 \cf14 objectAtIndex\cf4 :\cf7 0\cf4 ] \cf14 addSubview\cf4 :showLongView];\
  2219. \}\
  2220. \f2\b \cf8 self
  2221. \f0\b0 \cf4 .\cf15 showLongViewc\cf4 =showLongView;\
  2222. \
  2223. \cf2 //[showLongView.titleLong addTarget:self action:@selector(gotoGouCaiBtb) forControlEvents:UIControlStateNormal];\cf4 \
  2224. \
  2225. \}\
  2226. \
  2227. \cf2 //
  2228. \f1 \'c8\'a5\'c7\'c0\'ba\'ec\'b0\'fc
  2229. \f0 \cf4 \
  2230. -(
  2231. \f2\b \cf8 void
  2232. \f0\b0 \cf4 )\cf11 showAdAlertViewImageRedPackage\cf4 :(\cf10 NSString\cf4 *)image \cf11 linkUrl\cf4 :(\cf10 NSString\cf4 *)linkUrl \cf11 audio\cf4 :(\cf10 NSString\cf4 *)audio \cf11 duration\cf4 :(\cf10 NSTimeInterval\cf4 )duration \cf11 content\cf4 :(\cf9 JLGroupActivityModel\cf4 *)content \cf11 showCancelButton\cf4 :(
  2233. \f2\b \cf8 BOOL
  2234. \f0\b0 \cf4 )showCancelButton \cf11 type\cf4 :(\cf9 DYAdModelType\cf4 )type \cf11 success\cf4 :(
  2235. \f2\b \cf8 BOOL
  2236. \f0\b0 \cf4 )success\{\
  2237. \cf10 NSMutableArray\cf4 *arr = [[\cf10 NSMutableArray\cf4 \cf14 alloc\cf4 ]\cf14 initWithCapacity\cf4 :\cf7 0\cf4 ];\
  2238. \cf9 DYAdModel\cf4 *adModel = [[\cf9 DYAdModel\cf4 \cf14 alloc\cf4 ]\cf14 init\cf4 ];\
  2239. adModel.\cf15 imgStr\cf4 = image;\
  2240. adModel.\cf15 linkUrl\cf4 = linkUrl;\
  2241. adModel.\cf15 code\cf4 = content.\cf15 code\cf4 ;\
  2242. adModel.
  2243. \f2\b \cf8 id
  2244. \f0\b0 \cf4 = content.
  2245. \f2\b \cf8 id
  2246. \f0\b0 \cf4 ;\
  2247. adModel.\cf15 num\cf4 = content.\cf15 num\cf4 ;\
  2248. adModel.\cf15 money\cf4 = content.\cf15 money\cf4 ;\
  2249. adModel.\cf15 imgUrl\cf4 = content.\cf15 imgUrl\cf4 ;\
  2250. adModel.\cf15 audio\cf4 = audio;\
  2251. adModel.\cf15 duration\cf4 = duration;\
  2252. adModel.\cf15 content\cf4 = content.\cf15 content\cf4 ;\
  2253. adModel.\cf15 showCancelButton\cf4 = showCancelButton;\
  2254. adModel.\cf15 type\cf4 = type;\
  2255. adModel.\cf15 success\cf4 = success;\
  2256. [arr \cf14 addObject\cf4 :adModel];\
  2257. \cf15 _imgArr\cf4 = arr;\
  2258. \
  2259. \cf15 _isShowRedPackage\cf4 =\cf7 1\cf4 ;\
  2260. \
  2261. [\cf15 _showLongViewc\cf4 \cf14 removeFromSuperview\cf4 ];\
  2262. \
  2263. \cf9 DYAdAlertView\cf4 *showLongView= [\cf9 DYAdAlertView\cf4 \cf15 showInView\cf4 :
  2264. \f2\b \cf8 self
  2265. \f0\b0 \cf4 .\cf14 view\cf4 \cf15 theDelegate\cf4 :
  2266. \f2\b \cf8 self
  2267. \f0\b0 \cf4 \cf15 theADInfo\cf4 :arr \cf15 placeHolderImage\cf4 :\cf6 @"1"\cf4 ];\
  2268. showLongView.\cf14 userInteractionEnabled\cf4 =
  2269. \f2\b \cf8 YES
  2270. \f0\b0 \cf4 ;\
  2271. \f2\b \cf8 if
  2272. \f0\b0 \cf4 (\cf15 _strURLGoback\cf4 .\cf14 length\cf4 >\cf7 0\cf4 ) \{\
  2273. \
  2274. [[[\cf10 UIApplication\cf4 \cf14 sharedApplication\cf4 ].\cf14 windows\cf4 \cf14 objectAtIndex\cf4 :\cf7 0\cf4 ] \cf14 addSubview\cf4 :showLongView];\
  2275. \}\
  2276. \f2\b \cf8 self
  2277. \f0\b0 \cf4 .\cf15 showLongViewc\cf4 =showLongView;\
  2278. \
  2279. \
  2280. \}\
  2281. \
  2282. \
  2283. \cf2 //
  2284. \f1 \'d7\'ee\'d0\'c2\'c8\'ba\'b9\'ab\'b8\'e6
  2285. \f0 \cf4 \
  2286. - (
  2287. \f2\b \cf8 void
  2288. \f0\b0 \cf4 )\cf11 showLatestBroadcastTitle\cf4 :(\cf10 NSString\cf4 *)title \cf11 message\cf4 :(\cf10 NSString\cf4 *)message \{\
  2289. \cf10 NSArray\cf4 *buttons = \cf7 @[\cf6 @"
  2290. \f1 \'d6\'aa\'b5\'c0\'c1\'cb
  2291. \f0 "\cf7 ]\cf4 ;\
  2292. \cf10 NSData\cf4 * data = [\cf10 NSData\cf4 \cf14 dataWithContentsOfURL\cf4 :[\cf10 NSURL\cf4 \cf14 URLWithString\cf4 :\cf6 @""\cf4 ]];\
  2293. \cf10 UIImage\cf4 *image = [\cf10 UIImage\cf4 \cf14 imageWithData\cf4 :data];\
  2294. [\cf15 _alert\cf4 \cf15 hide\cf4 :
  2295. \f2\b \cf8 NO
  2296. \f0\b0 \cf4 ];\
  2297. \cf9 STAlertView\cf4 *alert = [[\cf9 STAlertView\cf4 \cf14 alloc\cf4 ] \cf15 initWithTitle\cf4 :title\
  2298. \cf15 image\cf4 :image\
  2299. \cf15 message\cf4 :message\
  2300. \cf15 buttonTitles\cf4 :buttons];\
  2301. \cf15 _alert\cf4 = alert;\
  2302. alert.\cf15 hideWhenTapOutside\cf4 =
  2303. \f2\b \cf8 NO
  2304. \f0\b0 \cf4 ;\
  2305. [alert \cf15 setDidShowHandler\cf4 :^\{\
  2306. \cf14 NSLog\cf4 (\cf6 @"
  2307. \f1 \'cf\'d4\'ca\'be\'c1\'cb
  2308. \f0 "\cf4 );\
  2309. \}];\
  2310. [alert \cf15 setDidHideHandler\cf4 :^\{\
  2311. \cf14 NSLog\cf4 (\cf6 @"
  2312. \f1 \'cf\'fb\'ca\'a7\'c1\'cb
  2313. \f0 "\cf4 );\
  2314. \}];\
  2315. [alert \cf15 setActionHandler\cf4 :^(\cf10 NSInteger\cf4 index) \{\
  2316. \f2\b \cf8 switch
  2317. \f0\b0 \cf4 (index) \{\
  2318. \f2\b \cf8 case
  2319. \f0\b0 \cf4 \cf7 0\cf4 :\
  2320. \{\
  2321. \f2\b \cf8 break
  2322. \f0\b0 \cf4 ;\
  2323. \}\
  2324. \f2\b \cf8 default
  2325. \f0\b0 \cf4 :\
  2326. \f2\b \cf8 break
  2327. \f0\b0 \cf4 ;\
  2328. \}\
  2329. \}];\
  2330. [alert \cf15 show\cf4 :
  2331. \f2\b \cf8 YES
  2332. \f0\b0 \cf4 ];\
  2333. \}\
  2334. \
  2335. \cf2 //
  2336. \f1 \'b5\'e3\'bb\'f7\'ba\'f3\'cc\'f8\'cd\'f8\'d2\'b3
  2337. \f0 \cf4 \
  2338. -(
  2339. \f2\b \cf8 void
  2340. \f0\b0 \cf4 )\cf11 clickAlertViewAtIndex\cf4 :(\cf10 NSInteger\cf4 )index\{\
  2341. \
  2342. \
  2343. \cf9 DYAdModel\cf4 *adModel = [\cf15 _imgArr\cf4 \cf14 objectAtIndex\cf4 :index];\
  2344. \f2\b \cf8 switch
  2345. \f0\b0 \cf4 (adModel.\cf15 type\cf4 ) \{\
  2346. \f2\b \cf8 case
  2347. \f0\b0 \cf4 \cf15 DYAdModelTypeLongAnimation\cf4 :\
  2348. \{\
  2349. [
  2350. \f2\b \cf8 self
  2351. \f0\b0 \cf4 .\cf15 showLongViewc\cf4 \cf14 removeFromSuperview\cf4 ];\
  2352. [\cf5 g_notify\cf4 \cf14 postNotificationName\cf4 :\cf6 @"longGoback"\cf4 \cf14 object\cf4 :
  2353. \f2\b \cf8 nil
  2354. \f0\b0 \cf4 ];\
  2355. \cf2 // webpageVC *webVC = [webpageVC alloc];\cf4 \
  2356. \cf2 // webVC.isGotoBack= YES;\cf4 \
  2357. \cf2 // webVC.isSend = NO;\cf4 \
  2358. \cf2 // webVC.url = adModel.linkUrl;\cf4 \
  2359. \cf2 // webVC = [webVC init];\cf4 \
  2360. \cf2 // [g_navigation.navigationView addSubview:webVC.view];\cf4 \
  2361. [\cf5 g_App\cf4 .\cf15 navigation\cf4 \cf15 popToRootViewController\cf4 ];\
  2362. \
  2363. \}\
  2364. \f2\b \cf8 break
  2365. \f0\b0 \cf4 ;\
  2366. \f2\b \cf8 case
  2367. \f0\b0 \cf4 \cf15 DYAdModelTypeGiftOpen\cf4 :\
  2368. \{\cf2 //[g_server getRroomActivity:_activityModel.id ToView:self];\cf4 \
  2369. \cf15 _isShowRedPackage\cf4 =\cf7 0\cf4 ;\
  2370. \f2\b \cf8 long
  2371. \f0\b0 \cf4 time = (
  2372. \f2\b \cf8 long
  2373. \f0\b0 \cf4 )[[\cf10 NSDate\cf4 \cf14 date\cf4 ] \cf14 timeIntervalSince1970\cf4 ];\
  2374. time = time *\cf7 1000\cf4 + \cf5 g_server\cf4 .\cf15 timeDifference\cf4 ;\
  2375. \cf10 NSString\cf4 *salt = [\cf10 NSString\cf4 \cf14 stringWithFormat\cf4 :\cf6 @"%ld"\cf4 ,time];\
  2376. [\cf5 g_server\cf4 \cf15 geact_roomgroupTypePackRedsalt\cf4 :salt \cf15 groupTypeDeliveryId\cf4 :adModel.
  2377. \f2\b \cf8 id
  2378. \f0\b0 \cf4 \cf15 ToView\cf4 :
  2379. \f2\b \cf8 self
  2380. \f0\b0 \cf4 ];\
  2381. \cf2 //
  2382. \f1 \'b7\'a2\'cd\'f8\'c2\'e7\'c7\'eb\'c7\'f3
  2383. \f0 \cf4 \
  2384. [
  2385. \f2\b \cf8 self
  2386. \f0\b0 \cf4 \cf15 showAdAlertViewImageString\cf4 :\cf6 @"
  2387. \f1 \'d7\'bc\'b5\'e3\'ba\'ec\'b0\'fc
  2388. \f0 2.gif"\cf4 linkUrl:
  2389. \f2\b \cf8 nil
  2390. \f0\b0 \cf4 \cf5 audio\cf4 :
  2391. \f2\b \cf8 nil
  2392. \f0\b0 \cf4 \cf5 duration\cf4 :\cf7 4\cf4 content:
  2393. \f2\b \cf8 nil
  2394. \f0\b0 \cf4 \cf15 showCancelButton\cf4 :
  2395. \f2\b \cf8 YES
  2396. \f0\b0 \cf4 type:(\cf15 DYAdModelTypeGifttOpenAnimation\cf4 ) success:
  2397. \f2\b \cf8 YES
  2398. \f0\b0 \cf4 ];\
  2399. \
  2400. \}\
  2401. \f2\b \cf8 break
  2402. \f0\b0 \cf4 ;\
  2403. \f2\b \cf8 case
  2404. \f0\b0 \cf4 \cf15 DYAdModelTypeGifttOpenAnimation\cf4 :\
  2405. \{\
  2406. \cf2 // [self showAdAlertViewImageString:@"
  2407. \f1 \'bb\'f1\'b5\'c3\'bd\'b1\'c0\'f8\'bd\'e7\'c3\'e6
  2408. \f0 .png" linkUrl:_activityModel.imageUrl audio:nil duration:0 content:_activityModel.success?_activityModel.giftName:@"
  2409. \f1 \'c0\'f1\'ce\'ef\'d2\'d1\'c7\'c0\'cd\'ea
  2410. \f0 !" showCancelButton:NO type:(DYAdModelTypeGiftAfterOpen) success:_activityModel.success];\cf4 \
  2411. \
  2412. [
  2413. \f2\b \cf8 self
  2414. \f0\b0 \cf4 \cf15 showAdAlertViewImageString\cf4 :\cf6 @"002.gif"\cf4 \cf15 linkUrl\cf4 :
  2415. \f2\b \cf8 nil
  2416. \f0\b0 \cf4 \cf15 audio\cf4 :
  2417. \f2\b \cf8 nil
  2418. \f0\b0 \cf4 \cf15 duration\cf4 :\cf7 4\cf4 \cf15 content\cf4 :
  2419. \f2\b \cf8 nil
  2420. \f0\b0 \cf4 \cf15 showCancelButton\cf4 :
  2421. \f2\b \cf8 YES
  2422. \f0\b0 \cf4 \cf15 type\cf4 :(\cf15 DYAdModelTypeGifttOpenAnimation\cf4 ) \cf15 success\cf4 :
  2423. \f2\b \cf8 YES
  2424. \f0\b0 \cf4 ];\
  2425. \
  2426. \}\
  2427. \f2\b \cf8 break
  2428. \f0\b0 \cf4 ;\
  2429. \f2\b \cf8 case
  2430. \f0\b0 \cf4 \cf15 DYAdModelTypeGiftAfterOpen\cf4 :\
  2431. \{\
  2432. \cf2 //
  2433. \f1 \'c7\'eb\'c7\'f3\'b7\'fe\'ce\'f1\'c6\'f7
  2434. \f0 \cf4 \
  2435. [\cf5 g_server\cf4 \cf15 getRoomActivityRecordToView\cf4 :
  2436. \f2\b \cf8 self
  2437. \f0\b0 \cf4 ];\
  2438. \}\
  2439. \f2\b \cf8 break
  2440. \f0\b0 \cf4 ;\
  2441. \
  2442. \f2\b \cf8 default
  2443. \f0\b0 \cf4 :\
  2444. \f2\b \cf8 break
  2445. \f0\b0 \cf4 ;\
  2446. \}\
  2447. \}\
  2448. \
  2449. - (
  2450. \f2\b \cf8 void
  2451. \f0\b0 \cf4 )\cf11 setupFloating\cf4 \{\
  2452. \cf15 _floating\cf4 = [[\cf9 MISFloatingBall\cf4 \cf14 alloc\cf4 ] \cf15 initWithFrame\cf4 :\cf14 CGRectMake\cf4 (\cf5 JX_SCREEN_WIDTH\cf4 -\cf7 68\cf4 , \cf5 JX_SCREEN_HEIGHT\cf4 /\cf7 3\cf4 , \cf7 60\cf4 , \cf7 60\cf4 ) \cf15 inSpecifiedView\cf4 :
  2453. \f2\b \cf8 self
  2454. \f0\b0 \cf4 .\cf14 view\cf4 \cf15 effectiveEdgeInsets\cf4 :(\cf14 UIEdgeInsetsZero\cf4 )];\
  2455. \cf2 //
  2456. \f1 \'d7\'d4\'b6\'af\'bf\'bf\'b1\'df
  2457. \f0 \cf4 \
  2458. \cf15 _floating\cf4 .\cf14 contentMode\cf4 =\cf14 UIViewContentModeScaleAspectFit\cf4 ;\
  2459. \cf15 _floating\cf4 .\cf15 autoCloseEdge\cf4 =
  2460. \f2\b \cf8 YES
  2461. \f0\b0 \cf4 ;\cf2 //chatroom_ribbon\cf4 \
  2462. [\cf15 _floating\cf4 \cf15 setContent\cf4 :[\cf10 UIImage\cf4 \cf14 imageNamed\cf4 :\cf6 @"sidaiDD"\cf4 ] \cf15 contentType\cf4 :\cf15 MISFloatingBallContentTypeImage\cf4 ];\
  2463. \cf15 _floating\cf4 .\cf15 edgePolicy\cf4 = \cf15 MISFloatingBallEdgePolicyLeftRight\cf4 ;\
  2464. [\cf15 _floating\cf4 \cf15 show\cf4 ];\
  2465. \f2\b \cf8 __weak
  2466. \f0\b0 \cf4
  2467. \f2\b \cf8 __typeof
  2468. \f0\b0 \cf4 (
  2469. \f2\b \cf8 self
  2470. \f0\b0 \cf4 )weakSelf =
  2471. \f2\b \cf8 self
  2472. \f0\b0 \cf4 ;\
  2473. \cf15 _floating\cf4 .\cf15 clickHandler\cf4 = ^(\cf9 MISFloatingBall\cf4 *
  2474. \f2\b \cf8 _Nonnull
  2475. \f0\b0 \cf4 floatingBall) \{\
  2476. \cf2 // [g_server getAppResource:@"5" ToView:weakSelf];\cf4 \
  2477. \f2\b \cf8 long
  2478. \f0\b0 \cf4 time = (
  2479. \f2\b \cf8 long
  2480. \f0\b0 \cf4 )[[\cf10 NSDate\cf4 \cf14 date\cf4 ] \cf14 timeIntervalSince1970\cf4 ];\
  2481. time = (time *\cf7 1000\cf4 + \cf5 g_server\cf4 .\cf15 timeDifference\cf4 );\
  2482. \cf15 _strURLGoback\cf4 =\cf6 @""\cf4 ;\
  2483. \cf10 NSString\cf4 *salt = [\cf10 NSString\cf4 \cf14 stringWithFormat\cf4 :\cf6 @"%ld"\cf4 , time];\
  2484. \cf10 NSString\cf4 *jid_room=[[\cf10 NSUserDefaults\cf4 \cf14 standardUserDefaults\cf4 ] \cf14 objectForKey\cf4 :\cf6 @"jid_roomJid"\cf4 ];\
  2485. [\cf5 g_server\cf4 \cf15 getact_act_act_SilkPlanallByJidlist\cf4 :salt \cf15 jid\cf4 :jid_room \cf15 andToView\cf4 :weakSelf];\
  2486. \};\
  2487. \}\
  2488. \
  2489. \
  2490. \cf2 //
  2491. \f1 \'bc\'fc\'c5\'cc\'bc\'e0\'cc\'fd\'ca\'c2\'bc\'fe
  2492. \f0 \cf4 \
  2493. - (
  2494. \f2\b \cf8 void
  2495. \f0\b0 \cf4 )\cf11 keyboardAction\cf4 :(\cf10 NSNotification\cf4 *)sender\{\
  2496. \cf2 //
  2497. \f1 \'cd\'a8\'b9\'fd\'cd\'a8\'d6\'aa\'b6\'d4\'cf\'f3\'bb\'f1\'c8\'a1\'bc\'fc\'c5\'cc
  2498. \f0 frame: [value CGRectValue]\cf4 \
  2499. \cf10 NSDictionary\cf4 *useInfo = [sender \cf14 userInfo\cf4 ];\
  2500. \cf10 NSValue\cf4 *value = [useInfo \cf14 objectForKey\cf4 :\cf14 UIKeyboardFrameEndUserInfoKey\cf4 ];\
  2501. \
  2502. \cf2 //self.view.frame = CGRectMake(0, 0, JX_SCREEN_WIDTH, JX_SCREEN_HEIGHT-JX_SCREEN_TOP);\cf4 \
  2503. \
  2504. \cf2 //
  2505. \f1 \'bc\'fc\'c5\'cc\'b5\'af\'b3\'f6
  2506. \f0 \cf4 \
  2507. \f2\b \cf8 if
  2508. \f0\b0 \cf4 ([sender.\cf14 name\cf4 \cf14 isEqualToString\cf4 :\cf14 UIKeyboardWillShowNotification\cf4 ])\{\
  2509. \cf2 //
  2510. \f1 \'bc\'fc\'c5\'cc\'b8\'df\'b6\'c8
  2511. \f0 \cf4 \
  2512. \f2\b \cf8 int
  2513. \f0\b0 \cf4 aa = [value \cf14 CGRectValue\cf4 ].\cf14 size\cf4 .\cf14 height\cf4 ;\
  2514. \cf15 _keyboardHeight\cf4 =aa;\
  2515. \cf15 _keyboardHeightNav\cf4 =\cf7 44\cf4 ;\
  2516. \
  2517. \f2\b \cf8 if
  2518. \f0\b0 \cf4 (\cf15 _array\cf4 .\cf14 count\cf4 >\cf7 10\cf4 ) \{\
  2519. \
  2520. \cf15 _table\cf4 .\cf14 frame\cf4 =\cf14 CGRectMake\cf4 (\cf7 0\cf4 ,-aa,\cf5 self_width\cf4 ,
  2521. \f2\b \cf8 self
  2522. \f0\b0 \cf4 .\cf14 view\cf4 .\cf14 frame\cf4 .\cf14 size\cf4 .\cf14 height\cf4 -
  2523. \f2\b \cf8 self
  2524. \f0\b0 \cf4 .\cf15 heightFooter\cf4 );\
  2525. \}
  2526. \f2\b \cf8 else
  2527. \f0\b0 \cf4 \{\
  2528. \
  2529. \cf15 _table\cf4 .\cf14 frame\cf4 =\cf14 CGRectMake\cf4 (\cf7 0\cf4 ,\cf7 0\cf4 ,\cf5 self_width\cf4 ,
  2530. \f2\b \cf8 self
  2531. \f0\b0 \cf4 .\cf14 view\cf4 .\cf14 frame\cf4 .\cf14 size\cf4 .\cf14 height\cf4 -
  2532. \f2\b \cf8 self
  2533. \f0\b0 \cf4 .\cf15 heightFooter\cf4 );\
  2534. \}\
  2535. \
  2536. \
  2537. \
  2538. \
  2539. [\cf15 inputBar\cf4 \cf15 mas_makeConstraints\cf4 :^(\cf9 MASConstraintMaker\cf4 *make) \{\
  2540. make.\cf15 bottom\cf4 .\cf5 mas_equalTo\cf4 (
  2541. \f2\b \cf8 self
  2542. \f0\b0 \cf4 .view.mas_bottom).\cf5 mas_offset\cf4 (-(\cf5 JX_SCREEN_HEIGHT\cf4 >=\cf7 812\cf4 ?\cf7 40\cf4 :\cf7 10\cf4 )-aa);\
  2543. make.\cf15 left\cf4 .\cf15 right\cf4 .\cf5 mas_equalTo\cf4 (\cf7 0\cf4 );\
  2544. make.\cf15 height\cf4 .\cf5 mas_equalTo\cf4 (\cf5 tableBarHHH\cf4 );\
  2545. \
  2546. \}];\
  2547. \
  2548. \
  2549. \
  2550. \cf2 // self.tableFooter.frame = CGRectMake(0, JX_SCREEN_HEIGHT-JX_SCREEN_TOP-self.heightFooter-aa-0, JX_SCREEN_WIDTH, self.heightFooter);//\cf4 \
  2551. \
  2552. \}
  2553. \f2\b \cf8 else
  2554. \f0\b0 \cf4 \{\
  2555. \cf14 NSLog\cf4 (\cf6 @"
  2556. \f1 \'bc\'fc\'c5\'cc\'d2\'fe\'b2\'d8
  2557. \f0 -self.heightFooter--%d- keyboardHeight--%d - self.view.frame.size.height--%f"\cf4 ,
  2558. \f2\b \cf8 self
  2559. \f0\b0 \cf4 .\cf15 heightFooter\cf4 ,\cf15 _keyboardHeight\cf4 ,
  2560. \f2\b \cf8 self
  2561. \f0\b0 \cf4 .view.\cf14 frame\cf4 .\cf14 size\cf4 .\cf14 height\cf4 );\
  2562. \
  2563. \cf2 //
  2564. \f1 \'c8\'e7\'b9\'fb\'ca\'c7\'b1\'ed\'c7\'e9\'bc\'fc\'c5\'cc
  2565. \f0 \cf4 \
  2566. \f2\b \cf8 if
  2567. \f0\b0 \cf4 (\cf15 _faceView\cf4 && !\cf15 _faceView\cf4 .\cf14 hidden\cf4 ) \{\
  2568. \f2\b \cf8 self
  2569. \f0\b0 \cf4 .\cf15 tableFooter\cf4 .\cf14 frame\cf4 = \cf14 CGRectMake\cf4 (\cf7 0\cf4 ,\cf5 keboardHHH\cf4 + \cf5 JX_SCREEN_HEIGHT\cf4 -\cf7 263\cf4 -\cf7 53\cf4 , \cf5 JX_SCREEN_WIDTH\cf4 ,
  2570. \f2\b \cf8 self
  2571. \f0\b0 \cf4 .\cf15 heightFooter\cf4 );\
  2572. \}
  2573. \f2\b \cf8 else
  2574. \f0\b0 \cf4 \{\
  2575. \f2\b \cf8 self
  2576. \f0\b0 \cf4 .\cf15 tableFooter\cf4 .\cf14 frame\cf4 = \cf14 CGRectMake\cf4 (\cf7 0\cf4 , \cf5 JX_SCREEN_HEIGHT\cf4 -\cf5 JX_SCREEN_TOP\cf4 -
  2577. \f2\b \cf8 self
  2578. \f0\b0 \cf4 .\cf15 heightFooter\cf4 -\cf5 JX_SCREEN_HEIGHT\cf4 >=\cf7 812\cf4 ?\cf7 44\cf4 :\cf7 14\cf4 , \cf5 JX_SCREEN_WIDTH\cf4 ,
  2579. \f2\b \cf8 self
  2580. \f0\b0 \cf4 .\cf15 heightFooter\cf4 );\
  2581. \cf15 _table\cf4 .\cf14 frame\cf4 =\cf14 CGRectMake\cf4 (\cf7 0\cf4 ,\cf7 0\cf4 ,\cf5 self_width\cf4 ,
  2582. \f2\b \cf8 self
  2583. \f0\b0 \cf4 .\cf14 view\cf4 .\cf14 frame\cf4 .\cf14 size\cf4 .\cf14 height\cf4 -
  2584. \f2\b \cf8 self
  2585. \f0\b0 \cf4 .\cf15 heightFooter\cf4 -\cf7 0\cf4 );\
  2586. \
  2587. \cf2 //self.tableFooter.frame = CGRectMake(0, self.view.frame.size.height-0, JX_SCREEN_WIDTH, self.heightFooter);\cf4 \
  2588. \cf15 _keyboardHeight\cf4 =\cf7 0\cf4 ;\
  2589. \cf15 _keyboardHeightNav\cf4 =\cf7 0\cf4 ;\
  2590. \}\
  2591. \
  2592. \
  2593. [\cf15 inputBar\cf4 \cf15 mas_makeConstraints\cf4 :^(\cf9 MASConstraintMaker\cf4 *make) \{\
  2594. make.\cf15 bottom\cf4 .\cf5 mas_equalTo\cf4 (-(\cf5 JX_SCREEN_HEIGHT\cf4 >=\cf7 812\cf4 ?\cf7 40\cf4 :\cf7 10\cf4 ));\
  2595. make.\cf15 left\cf4 .\cf15 right\cf4 .\cf5 mas_equalTo\cf4 (\cf7 0\cf4 );\
  2596. make.\cf15 height\cf4 .\cf5 mas_equalTo\cf4 (\cf5 tableBarHHH\cf4 );\
  2597. \
  2598. \}];\
  2599. \
  2600. \}\
  2601. \}\
  2602. \
  2603. - (
  2604. \f2\b \cf8 void
  2605. \f0\b0 \cf4 )\cf11 viewDidLoad\cf4 \
  2606. \{\
  2607. [
  2608. \f2\b \cf8 super
  2609. \f0\b0 \cf4 \cf14 viewDidLoad\cf4 ];\
  2610. \
  2611. \
  2612. [[\cf10 NSUserDefaults\cf4 \cf14 standardUserDefaults\cf4 ]\cf14 setObject\cf4 :\cf15 _roomJid\cf4 \cf14 forKey\cf4 :\cf6 @"jid_roomJid"\cf4 ];\
  2613. [[\cf10 NSUserDefaults\cf4 \cf14 standardUserDefaults\cf4 ] \cf14 synchronize\cf4 ];\
  2614. \
  2615. \
  2616. \
  2617. [
  2618. \f2\b \cf8 self
  2619. \f0\b0 \cf4 \cf15 getEmojsData\cf4 ];\
  2620. \cf2 // [g_notify addObserver:self selector:@selector(getEmojsData) name:kEmojiRefresh object:nil];\cf4 \
  2621. \
  2622. [[\cf10 NSNotificationCenter\cf4 \cf14 defaultCenter\cf4 ] \cf14 addObserver\cf4 :
  2623. \f2\b \cf8 self
  2624. \f0\b0 \cf4 \cf14 selector\cf4 :
  2625. \f2\b \cf8 @selector
  2626. \f0\b0 \cf4 (keyboardAction:) \cf14 name\cf4 :\cf14 UIKeyboardWillShowNotification\cf4 \cf14 object\cf4 :
  2627. \f2\b \cf8 nil
  2628. \f0\b0 \cf4 ];\
  2629. [[\cf10 NSNotificationCenter\cf4 \cf14 defaultCenter\cf4 ] \cf14 addObserver\cf4 :
  2630. \f2\b \cf8 self
  2631. \f0\b0 \cf4 \cf14 selector\cf4 :
  2632. \f2\b \cf8 @selector
  2633. \f0\b0 \cf4 (keyboardAction:) \cf14 name\cf4 :\cf14 UIKeyboardWillHideNotification\cf4 \cf14 object\cf4 :
  2634. \f2\b \cf8 nil
  2635. \f0\b0 \cf4 ];\
  2636. \f2\b \cf8 self
  2637. \f0\b0 \cf4 .\cf14 view\cf4 .\cf14 backgroundColor\cf4 = \cf5 HEXCOLOR\cf4 (\cf7 0xF9F9F9\cf4 );\
  2638. \f2\b \cf8 self
  2639. \f0\b0 \cf4 .\cf15 friendStatus\cf4 = [
  2640. \f2\b \cf8 self
  2641. \f0\b0 \cf4 .\cf15 chatPerson\cf4 .\cf15 status\cf4 \cf14 intValue\cf4 ];\
  2642. [
  2643. \f2\b \cf8 self
  2644. \f0\b0 \cf4 \cf15 customView\cf4 ];\
  2645. \f2\b \cf8 if
  2646. \f0\b0 \cf4 (\cf15 chatRoom\cf4 .\cf15 roomJid\cf4 .\cf14 length\cf4 > \cf7 0\cf4 ) \{\
  2647. [
  2648. \f2\b \cf8 self
  2649. \f0\b0 \cf4 \cf15 setupFloating\cf4 ];\
  2650. [
  2651. \f2\b \cf8 self
  2652. \f0\b0 \cf4 \cf15 setupNotice\cf4 ];\
  2653. \
  2654. \cf2 // _room.members fcb2b6feb1e2408b9b050b8b9ebab9c4\cf4 \
  2655. \
  2656. [
  2657. \f2\b \cf8 self
  2658. \f0\b0 \cf4 \cf15 setupNotice2nd\cf4 ];\
  2659. \
  2660. \
  2661. \
  2662. \cf5 #ifdef DEBUG\cf4 \
  2663. \
  2664. \cf10 UILabel\cf4 *lable = [[\cf10 UILabel\cf4 \cf14 alloc\cf4 ] \cf14 initWithFrame\cf4 :\cf14 CGRectMake\cf4 (\cf7 80\cf4 , \cf7 150\cf4 , \cf5 JX_SCREEN_WIDTH\cf4 , \cf7 50\cf4 )];\
  2665. lable.\cf14 text\cf4 = [\cf10 NSString\cf4 \cf14 stringWithFormat\cf4 :\cf6 @"roomId = %@"\cf4 ,
  2666. \f2\b \cf8 self
  2667. \f0\b0 \cf4 .\cf15 roomId\cf4 ];\
  2668. lable.\cf14 font\cf4 = [\cf10 UIFont\cf4 \cf14 systemFontOfSize\cf4 :\cf7 10\cf4 ];\
  2669. lable.\cf14 textColor\cf4 = [\cf10 UIColor\cf4 \cf14 redColor\cf4 ];\
  2670. [
  2671. \f2\b \cf8 self
  2672. \f0\b0 \cf4 .\cf14 view\cf4 \cf14 addSubview\cf4 :lable];\
  2673. [lable \cf14 sizeToFit\cf4 ];\
  2674. \
  2675. \cf10 UILabel\cf4 *lable1 = [[\cf10 UILabel\cf4 \cf14 alloc\cf4 ] \cf14 initWithFrame\cf4 :\cf14 CGRectMake\cf4 (\cf7 80\cf4 , \cf7 160\cf4 , \cf5 JX_SCREEN_WIDTH\cf4 , \cf7 50\cf4 )];\
  2676. lable1.\cf14 text\cf4 = [\cf10 NSString\cf4 \cf14 stringWithFormat\cf4 :\cf6 @"roomJid = %@"\cf4 ,
  2677. \f2\b \cf8 self
  2678. \f0\b0 \cf4 .\cf15 chatRoom\cf4 .\cf15 roomJid\cf4 ];\
  2679. lable1.\cf14 font\cf4 = [\cf10 UIFont\cf4 \cf14 systemFontOfSize\cf4 :\cf7 10\cf4 ];\
  2680. lable1.\cf14 textColor\cf4 = [\cf10 UIColor\cf4 \cf14 redColor\cf4 ];\
  2681. [
  2682. \f2\b \cf8 self
  2683. \f0\b0 \cf4 .\cf14 view\cf4 \cf14 addSubview\cf4 :lable1];\
  2684. [lable1 \cf14 sizeToFit\cf4 ];\
  2685. \cf5 #else\cf4 \
  2686. \
  2687. \cf2 //self.ta\cf4 \
  2688. \cf2 // Release
  2689. \f1 \'c4\'a3\'ca\'bd\'b5\'c4\'b4\'fa\'c2\'eb
  2690. \f0 ...\cf4 \
  2691. \
  2692. \cf5 #endif\cf4 \
  2693. \}\
  2694. \f2\b \cf8 if
  2695. \f0\b0 \cf4 (
  2696. \f2\b \cf8 self
  2697. \f0\b0 \cf4 .\cf15 courseId\cf4 .\cf14 length\cf4 > \cf7 0\cf4 ) \{\
  2698. \cf10 UIButton\cf4 *btn = [[\cf10 UIButton\cf4 \cf14 alloc\cf4 ] \cf14 initWithFrame\cf4 :\cf14 CGRectMake\cf4 (\cf7 71\cf4 , \cf5 THE_DEVICE_HAVE_HEAD\cf4 ? \cf7 13\cf4 : \cf7 10\cf4 , \cf5 JX_SCREEN_WIDTH\cf4 -\cf7 71\cf4 *\cf7 2\cf4 , \cf7 36\cf4 )];\
  2699. btn.\cf14 backgroundColor\cf4 = \cf5 THEMECOLOR\cf4 ;\
  2700. [btn \cf14 setTitle\cf4 :\cf5 Localized\cf4 (\cf6 @"JXUserInfoVC_SendMseeage"\cf4 ) \cf14 forState\cf4 :\cf14 UIControlStateNormal\cf4 ];\
  2701. [btn \cf14 setTitleColor\cf4 :[\cf10 UIColor\cf4 \cf14 whiteColor\cf4 ] \cf14 forState\cf4 :\cf14 UIControlStateNormal\cf4 ];\
  2702. btn.\cf14 titleLabel\cf4 .\cf14 font\cf4 = \cf5 g_factory\cf4 .\cf15 font16\cf4 ;\
  2703. btn.\cf14 layer\cf4 .\cf14 masksToBounds\cf4 =
  2704. \f2\b \cf8 YES
  2705. \f0\b0 \cf4 ;\
  2706. btn.\cf14 layer\cf4 .\cf14 cornerRadius\cf4 = btn.\cf14 frame\cf4 .\cf14 size\cf4 .\cf14 height\cf4 /\cf7 2\cf4 ;\
  2707. [btn \cf14 addTarget\cf4 :
  2708. \f2\b \cf8 self
  2709. \f0\b0 \cf4 \cf14 action\cf4 :
  2710. \f2\b \cf8 @selector
  2711. \f0\b0 \cf4 (sendCourseAction) \cf14 forControlEvents\cf4 :\cf14 UIControlEventTouchUpInside\cf4 ];\
  2712. [
  2713. \f2\b \cf8 self
  2714. \f0\b0 \cf4 .\cf15 tableFooter\cf4 \cf14 addSubview\cf4 :btn];\
  2715. \
  2716. \}
  2717. \f2\b \cf8 else
  2718. \f0\b0 \cf4 \{\
  2719. \
  2720. [
  2721. \f2\b \cf8 self
  2722. \f0\b0 \cf4 \cf15 createFooterSubViews\cf4 ];\
  2723. \}\
  2724. \
  2725. \f2\b \cf8 self
  2726. \f0\b0 \cf4 .\cf15 screenShotView\cf4 .\cf14 frame\cf4 = \cf14 CGRectMake\cf4 (
  2727. \f2\b \cf8 self
  2728. \f0\b0 \cf4 .\cf15 screenShotView\cf4 .\cf14 frame\cf4 .\cf14 origin\cf4 .\cf14 x\cf4 ,
  2729. \f2\b \cf8 self
  2730. \f0\b0 \cf4 .\cf15 tableFooter\cf4 .\cf14 frame\cf4 .\cf14 origin\cf4 .\cf14 y\cf4 -
  2731. \f2\b \cf8 self
  2732. \f0\b0 \cf4 .\cf15 screenShotView\cf4 .\cf14 frame\cf4 .\cf14 size\cf4 .\cf14 height\cf4 - \cf7 10\cf4 ,
  2733. \f2\b \cf8 self
  2734. \f0\b0 \cf4 .\cf15 screenShotView\cf4 .\cf14 frame\cf4 .\cf14 size\cf4 .\cf14 width\cf4 ,
  2735. \f2\b \cf8 self
  2736. \f0\b0 \cf4 .\cf15 screenShotView\cf4 .\cf14 frame\cf4 .\cf14 size\cf4 .\cf14 height\cf4 );\
  2737. \
  2738. \
  2739. \f2\b \cf8 if
  2740. \f0\b0 \cf4 (!
  2741. \f2\b \cf8 self
  2742. \f0\b0 \cf4 .\cf15 roomJid\cf4 ) \{\
  2743. \cf2 //
  2744. \f1 \'c8\'e7\'b9\'fb\'ca\'c7\'d7\'d4\'bc\'ba\'b5\'c4\'c6\'e4\'cb\'fb\'b6\'cb\'a3\'ac\'b2\'bb\'b5\'f7\'d3\'c3\'bd\'d3\'bf\'da
  2745. \f0 \cf4 \
  2746. \f2\b \cf8 if
  2747. \f0\b0 \cf4 (\cf15 chatPerson\cf4 && [\cf15 chatPerson\cf4 .\cf15 userId\cf4 \cf14 rangeOfString\cf4 :\cf5 MY_USER_ID\cf4 ].\cf14 location\cf4 != \cf14 NSNotFound\cf4 ) \{\
  2748. \f2\b \cf8 self
  2749. \f0\b0 \cf4 .\cf15 friendStatus\cf4 = \cf7 10\cf4 ;\
  2750. \f2\b \cf8 for
  2751. \f0\b0 \cf4 (\cf9 JXDevice\cf4 *device
  2752. \f2\b \cf8 in
  2753. \f0\b0 \cf4 \cf5 g_multipleLogin\cf4 .\cf15 deviceArr\cf4 ) \{\
  2754. \f2\b \cf8 if
  2755. \f0\b0 \cf4 ([device.\cf15 userId\cf4 \cf14 isEqualToString\cf4 :\cf15 chatPerson\cf4 .\cf15 userId\cf4 ]) \{\
  2756. \cf2 // NSString *str = [device.isOnLine intValue] == 1 ? Localized(@"JX_OnLine") : Localized(@"JX_OffLine");\cf4 \
  2757. \f2\b \cf8 self
  2758. \f0\b0 \cf4 .\cf15 onlinestate\cf4 = [device.\cf15 isOnLine\cf4 \cf14 boolValue\cf4 ];\
  2759. \cf2 // self.title = [NSString stringWithFormat:@"%@(%@)",chatPerson.remarkName.length > 0 ? chatPerson.remarkName : chatPerson.userNickname,str];\cf4 \
  2760. [
  2761. \f2\b \cf8 self
  2762. \f0\b0 \cf4 \cf15 setChatTitle\cf4 :\cf15 chatPerson\cf4 .\cf15 remarkName\cf4 .\cf14 length\cf4 > \cf7 0\cf4 ? \cf15 chatPerson\cf4 .\cf15 remarkName\cf4 : \cf15 chatPerson\cf4 .\cf15 userNickname\cf4 ];\
  2763. \f2\b \cf8 break
  2764. \f0\b0 \cf4 ;\
  2765. \}\
  2766. \}\
  2767. \
  2768. \cf2 // if ([chatPerson.userId rangeOfString:@"android"].location != NSNotFound) \{\cf4 \
  2769. \cf2 //\cf4 \
  2770. \cf2 // NSString *str = [g_multipleLogin.androidUser.isOnLine intValue] == 1 ? Localized(@"JX_OnLine") : Localized(@"JX_OffLine");\cf4 \
  2771. \cf2 // self.title = [NSString stringWithFormat:@"%@(%@)",chatPerson.userNickname,str];\cf4 \
  2772. \cf2 // \}\cf4 \
  2773. \cf2 // if ([chatPerson.userId rangeOfString:@"pc"].location != NSNotFound) \{\cf4 \
  2774. \cf2 // NSString *str = [g_multipleLogin.pcUser.isOnLine intValue] == 1 ? Localized(@"JX_OnLine") : Localized(@"JX_OffLine");\cf4 \
  2775. \cf2 // self.title = [NSString stringWithFormat:@"%@(%@)",chatPerson.userNickname,str];\cf4 \
  2776. \cf2 // \}\cf4 \
  2777. \cf2 // if ([chatPerson.userId rangeOfString:@"mac"].location != NSNotFound) \{\cf4 \
  2778. \cf2 // NSString *str = [g_multipleLogin.macUser.isOnLine intValue] == 1 ? Localized(@"JX_OnLine") : Localized(@"JX_OffLine");\cf4 \
  2779. \cf2 // self.title = [NSString stringWithFormat:@"%@(%@)",chatPerson.userNickname,str];\cf4 \
  2780. \cf2 // \}\cf4 \
  2781. \
  2782. \}
  2783. \f2\b \cf8 else
  2784. \f0\b0 \cf4 \{\
  2785. \f2\b \cf8 if
  2786. \f0\b0 \cf4 (
  2787. \f2\b \cf8 self
  2788. \f0\b0 \cf4 .\cf15 isGroupMessages\cf4 ) \{\
  2789. \f2\b \cf8 self
  2790. \f0\b0 \cf4 .\cf14 title\cf4 = \cf5 Localized\cf4 (\cf6 @"JX_GroupHair"\cf4 );\
  2791. [
  2792. \f2\b \cf8 self
  2793. \f0\b0 \cf4 \cf15 setAudioIconFrame\cf4 ];\
  2794. \}
  2795. \f2\b \cf8 else
  2796. \f0\b0 \cf4 \{\
  2797. [g_server getUser:chatPerson.userId toView:
  2798. \f2\b \cf8 self
  2799. \f0\b0 \cf4 ];\
  2800. [g_server getUser:MY_USER_ID toView:
  2801. \f2\b \cf8 self
  2802. \f0\b0 \cf4 ];\
  2803. \}\
  2804. \}\
  2805. \}
  2806. \f2\b \cf8 else
  2807. \f0\b0 \cf4 \{\
  2808. [g_server roomGetRoom:
  2809. \f2\b \cf8 self
  2810. \f0\b0 \cf4 .roomId toView:
  2811. \f2\b \cf8 self
  2812. \f0\b0 \cf4 ];\
  2813. \
  2814. \cf5 #if IS_AUTO_JOIN_ROOM\cf4 \
  2815. \cf2 //
  2816. \f1 \'bd\'f8\'c8\'ba\'d7\'e9
  2817. \f0
  2818. \f1 \'c8\'e7\'b9\'fb\'c3\'bb\'d3\'d0\'c1\'ac\'bd\'d3\'a3\'ac\'cf\'c8\'c1\'ac\'bd\'d3\'d2\'bb\'b4\'ce
  2819. \f0 \cf4 \
  2820. \f2\b \cf8 if
  2821. \f0\b0 \cf4 (![g_xmpp.roomPool getRoom:
  2822. \f2\b \cf8 self
  2823. \f0\b0 \cf4 .chatPerson.userId] && [
  2824. \f2\b \cf8 self
  2825. \f0\b0 \cf4 .chatPerson.groupStatus intValue] == \cf7 0\cf4 ) \{\
  2826. [g_xmpp.roomPool joinRoom:chatPerson.userId title:chatPerson.userNickname lastDate:
  2827. \f2\b \cf8 nil
  2828. \f0\b0 \cf4 isNew:
  2829. \f2\b \cf8 NO
  2830. \f0\b0 \cf4 ];\
  2831. chatRoom = [[JXXMPP sharedInstance].roomPool joinRoom:chatPerson.userId title:chatPerson.userNickname lastDate:
  2832. \f2\b \cf8 nil
  2833. \f0\b0 \cf4 isNew:
  2834. \f2\b \cf8 NO
  2835. \f0\b0 \cf4 ];\
  2836. \}\
  2837. \cf5 #endif\cf4 \
  2838. \}\
  2839. \
  2840. [
  2841. \f2\b \cf8 self
  2842. \f0\b0 \cf4 refresh:
  2843. \f2\b \cf8 nil
  2844. \f0\b0 \cf4 ];\
  2845. \
  2846. \f2\b \cf8 if
  2847. \f0\b0 \cf4 (!
  2848. \f2\b \cf8 self
  2849. \f0\b0 \cf4 .roomJid ||
  2850. \f2\b \cf8 self
  2851. \f0\b0 \cf4 .roomJid.length <= \cf7 0\cf4 ) \{\
  2852. \cf2 //
  2853. \f1 \'cd\'ac\'b2\'bd\'cf\'fb\'cf\'a2
  2854. \f0 \cf4 \
  2855. [
  2856. \f2\b \cf8 self
  2857. \f0\b0 \cf4 messageSync];\
  2858. \}\
  2859. \
  2860. \f2\b \cf8 if
  2861. \f0\b0 \cf4 (chatPerson.lastInput.length > \cf7 0\cf4 ) \{\
  2862. \
  2863. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(\cf7 0.5\cf4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\
  2864. \
  2865. _messageText.inputView =
  2866. \f2\b \cf8 nil
  2867. \f0\b0 \cf4 ;\
  2868. [_messageText reloadInputViews];\
  2869. [
  2870. \f2\b \cf8 self
  2871. \f0\b0 \cf4 doBeginEdit];\
  2872. [_messageText becomeFirstResponder];\
  2873. [_faceView removeFromSuperview];\
  2874. \});\
  2875. \}\
  2876. \f2\b \cf8 long
  2877. \f0\b0 \cf4 time = (
  2878. \f2\b \cf8 long
  2879. \f0\b0 \cf4 )[[NSDate date] timeIntervalSince1970];\
  2880. time = (time *\cf7 1000\cf4 + g_server.timeDifference);\
  2881. NSString *salt = [NSString stringWithFormat:\cf6 @"%ld"\cf4 , time];\
  2882. [g_server UserRoomAttentionattentionLastInfo:salt userId:g_server.myself.userId jid:_roomJid andToView:
  2883. \f2\b \cf8 self
  2884. \f0\b0 \cf4 ];\
  2885. \
  2886. \
  2887. \
  2888. \
  2889. \
  2890. \
  2891. \
  2892. \}\
  2893. \
  2894. - (
  2895. \f2\b \cf8 void
  2896. \f0\b0 \cf4 )\cf11 chatVCMessageSync\cf4 :(NSNotification *)noti \{\
  2897. \f2\b \cf8 long
  2898. \f0\b0 \cf4
  2899. \f2\b \cf8 long
  2900. \f0\b0 \cf4 timeSend = [noti.object longLongValue];\
  2901. \f2\b \cf8 self
  2902. \f0\b0 \cf4 .chatPerson.timeSend = [NSDate dateWithTimeIntervalSince1970:timeSend];\
  2903. [
  2904. \f2\b \cf8 self
  2905. \f0\b0 \cf4 messageSync];\
  2906. \}\
  2907. \
  2908. - (
  2909. \f2\b \cf8 void
  2910. \f0\b0 \cf4 )\cf11 messageSync\cf4 \{\
  2911. \
  2912. \f2\b \cf8 double
  2913. \f0\b0 \cf4 syncTimeLen = \cf7 0\cf4 ;\
  2914. NSString* s;\
  2915. \f2\b \cf8 if
  2916. \f0\b0 \cf4 ([
  2917. \f2\b \cf8 self
  2918. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  2919. s =
  2920. \f2\b \cf8 self
  2921. \f0\b0 \cf4 .roomJid;\
  2922. \cf2 // syncTimeLen = [g_myself.groupChatSyncTimeLen doubleValue];\cf4 \
  2923. \cf2 // syncTimeLen = 0;\cf4 \
  2924. syncTimeLen = [g_myself.chatSyncTimeLen doubleValue];\
  2925. \}\
  2926. \f2\b \cf8 else
  2927. \f0\b0 \cf4 \{\
  2928. s = chatPerson.userId;\
  2929. syncTimeLen = [g_myself.chatSyncTimeLen doubleValue];\
  2930. \}\
  2931. \
  2932. \cf2 //
  2933. \f1 \'cd\'ac\'b2\'bd\'cf\'fb\'cf\'a2
  2934. \f0 \cf4 \
  2935. \f2\b \cf8 if
  2936. \f0\b0 \cf4 ([
  2937. \f2\b \cf8 self
  2938. \f0\b0 \cf4 .chatPerson.downloadTime timeIntervalSince1970] < [
  2939. \f2\b \cf8 self
  2940. \f0\b0 \cf4 .chatPerson.timeSend timeIntervalSince1970] && _taskList.count<=\cf7 0\cf4 && syncTimeLen != -\cf7 2\cf4 ) \{\
  2941. \f2\b \cf8 long
  2942. \f0\b0 \cf4
  2943. \f2\b \cf8 long
  2944. \f0\b0 \cf4 chatSyncTimeLen = \cf7 0\cf4 ;\
  2945. \f2\b \cf8 switch
  2946. \f0\b0 \cf4 ([g_myself.chatSyncTimeLen integerValue]) \{\
  2947. \f2\b \cf8 case
  2948. \f0\b0 \cf4 \cf7 0\cf4 : \cf2 // 0.04 1
  2949. \f1 \'d0\'a1\'ca\'b1
  2950. \f0 \cf4 \
  2951. chatSyncTimeLen = \cf7 3600000\cf4 ;\
  2952. \f2\b \cf8 break
  2953. \f0\b0 \cf4 ;\
  2954. \f2\b \cf8 case
  2955. \f0\b0 \cf4 \cf7 1\cf4 : \cf2 // 1
  2956. \f1 \'cc\'ec
  2957. \f0 \cf4 \
  2958. chatSyncTimeLen = \cf7 86400000\cf4 ;\
  2959. \f2\b \cf8 break
  2960. \f0\b0 \cf4 ;\
  2961. \f2\b \cf8 case
  2962. \f0\b0 \cf4 \cf7 7\cf4 : \cf2 // 7
  2963. \f1 \'cc\'ec
  2964. \f0 \cf4 \
  2965. chatSyncTimeLen = \cf7 604800017\cf4 ;\
  2966. \f2\b \cf8 break
  2967. \f0\b0 \cf4 ;\
  2968. \f2\b \cf8 case
  2969. \f0\b0 \cf4 \cf7 30\cf4 : \cf2 // 30
  2970. \f1 \'cc\'ec
  2971. \f0 \cf4 \
  2972. chatSyncTimeLen = \cf7 2629800000\cf4 ;\
  2973. \f2\b \cf8 break
  2974. \f0\b0 \cf4 ;\
  2975. \f2\b \cf8 case
  2976. \f0\b0 \cf4 \cf7 90\cf4 : \cf2 // 90
  2977. \f1 \'cc\'ec
  2978. \f0 \cf4 \
  2979. chatSyncTimeLen = \cf7 7889400000\cf4 ;\
  2980. \f2\b \cf8 break
  2981. \f0\b0 \cf4 ;\
  2982. \f2\b \cf8 case
  2983. \f0\b0 \cf4 \cf7 365\cf4 : \cf2 //365
  2984. \f1 \'cc\'ec
  2985. \f0 \cf4 \
  2986. chatSyncTimeLen = \cf7 31557600000\cf4 ;\
  2987. \f2\b \cf8 break
  2988. \f0\b0 \cf4 ;\
  2989. \f2\b \cf8 case
  2990. \f0\b0 \cf4 -\cf7 1\cf4 : \cf2 //
  2991. \f1 \'d3\'c0\'be\'c3
  2992. \f0 (20
  2993. \f1 \'c4\'ea
  2994. \f0 )\cf4 \
  2995. chatSyncTimeLen = \cf7 631152000000\cf4 ;\
  2996. \f2\b \cf8 break
  2997. \f0\b0 \cf4 ;\
  2998. \f2\b \cf8 default
  2999. \f0\b0 \cf4 :\
  3000. \f2\b \cf8 break
  3001. \f0\b0 \cf4 ;\
  3002. \}\
  3003. \f2\b \cf8 long
  3004. \f0\b0 \cf4 endTime = [[NSDate date] timeIntervalSince1970] * \cf7 1000\cf4 ;\
  3005. \f2\b \cf8 long
  3006. \f0\b0 \cf4 starTime = endTime - chatSyncTimeLen;\
  3007. \
  3008. \f2\b \cf8 self
  3009. \f0\b0 \cf4 .isSyncMsg =
  3010. \f2\b \cf8 YES
  3011. \f0\b0 \cf4 ;\
  3012. \
  3013. \f2\b \cf8 if
  3014. \f0\b0 \cf4 ([
  3015. \f2\b \cf8 self
  3016. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  3017. \cf2 //
  3018. \f1 \'bb\'f1\'c8\'a1\'bd\'f8\'c8\'ba\'ca\'b1\'bc\'e4
  3019. \f0 \cf4 \
  3020. NSString* myUserId = MY_USER_ID;\
  3021. \f2\b \cf8 double
  3022. \f0\b0 \cf4 createTime = \cf7 0\cf4 ;\
  3023. NSArray *array = [memberData getSelfMember:
  3024. \f2\b \cf8 self
  3025. \f0\b0 \cf4 .roomId];\
  3026. \f2\b \cf8 for
  3027. \f0\b0 \cf4 (memberData *mdata
  3028. \f2\b \cf8 in
  3029. \f0\b0 \cf4 array) \{\
  3030. NSString *userId = [NSString stringWithFormat:\cf6 @"%ld"\cf4 , mdata.userId];\
  3031. \f2\b \cf8 if
  3032. \f0\b0 \cf4 ([userId isEqualToString:myUserId])\{\
  3033. createTime = mdata.createTime * \cf7 1000\cf4 ;\
  3034. \}\
  3035. \}\
  3036. \cf2 //
  3037. \f1 \'c8\'ba\'d7\'e9\'c9\'be\'b3\'fd\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc\'ca\'b1\'bc\'e4
  3038. \f0 \cf4 \
  3039. NSInteger time1 = \cf7 0\cf4 ;\
  3040. \f2\b \cf8 if
  3041. \f0\b0 \cf4 ([g_default valueForKey:s] && ([
  3042. \f2\b \cf8 self
  3043. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )) \{\
  3044. time1 = [[g_default valueForKey:s] integerValue];\
  3045. \}\
  3046. NSNumber *lastClearRecordTime = [NSNumber numberWithInteger:time1];\
  3047. \cf2 //
  3048. \f1 \'c9\'e8\'d6\'c3\'c9\'be\'b3\'fd\'cb\'f9\'d3\'d0\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc\'ca\'b1\'bc\'e4
  3049. \f0 \cf4 \
  3050. NSInteger time2 = \cf7 0\cf4 ;\
  3051. \f2\b \cf8 if
  3052. \f0\b0 \cf4 ([g_default valueForKey:\cf6 @"CLEARALLMSGRECORDTIME"\cf4 ] && ([
  3053. \f2\b \cf8 self
  3054. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )) \{\
  3055. time2 = [[g_default valueForKey:\cf6 @"CLEARALLMSGRECORDTIME"\cf4 ] integerValue];\
  3056. \}\
  3057. NSNumber *CLEARALLMSGRECORDTIME = [NSNumber numberWithInteger:time2];\
  3058. \cf2 //
  3059. \f1 \'c9\'e8\'d6\'c3\'c2\'fe\'d3\'ce\'b5\'c4\'ca\'b1\'bc\'e4
  3060. \f0 \cf4 \
  3061. NSNumber *synTime = [NSNumber numberWithLong:starTime];\
  3062. \
  3063. \
  3064. \cf2 //
  3065. \f1 \'c8\'eb\'c8\'ba\'ca\'b1\'bc\'e4
  3066. \f0 \cf4 \
  3067. NSInteger time3 = \cf7 0\cf4 ;\
  3068. \f2\b \cf8 if
  3069. \f0\b0 \cf4 (createTime > \cf7 0\cf4 )\{\
  3070. time3 = [[NSString stringWithFormat:\cf6 @"%f"\cf4 , createTime] integerValue];\
  3071. \}\
  3072. NSNumber *joinTime = [NSNumber numberWithInteger:time3];\
  3073. \cf2 //
  3074. \f1 \'c5\'c5\'d0\'f2\'cb\'c4\'b8\'f6\'ca\'b1\'bc\'e4
  3075. \f0
  3076. \f1 \'c8\'eb\'c8\'ba\'ca\'b1\'bc\'e4
  3077. \f0 ,
  3078. \f1 \'c8\'ba\'d7\'e9\'c9\'be\'b3\'fd\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc\'ca\'b1\'bc\'e4
  3079. \f0 ,
  3080. \f1 \'c9\'e8\'d6\'c3\'c9\'be\'b3\'fd\'cb\'f9\'d3\'d0\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc\'ca\'b1\'bc\'e4
  3081. \f0 ,
  3082. \f1 \'c9\'e8\'d6\'c3\'c2\'fe\'d3\'ce\'b5\'c4\'ca\'b1\'bc\'e4
  3083. \f0 \cf4 \
  3084. NSArray *sortedArray = [\cf7 @[\cf4 joinTime,lastClearRecordTime,synTime,CLEARALLMSGRECORDTIME\cf7 ]\cf4 sortedArrayUsingComparator:^NSComparisonResult(
  3085. \f2\b \cf8 id
  3086. \f0\b0 \cf4
  3087. \f2\b \cf8 _Nonnull
  3088. \f0\b0 \cf4 obj1,
  3089. \f2\b \cf8 id
  3090. \f0\b0 \cf4
  3091. \f2\b \cf8 _Nonnull
  3092. \f0\b0 \cf4 obj2) \{\
  3093. NSComparisonResult result = [obj1 compare: obj2];\
  3094. \f2\b \cf8 return
  3095. \f0\b0 \cf4 result;\
  3096. \}];\
  3097. NSNumber *time = [sortedArray lastObject];\
  3098. starTime = [time longValue];\
  3099. \cf2 // p = [[JXMessageObject sharedInstance] fetchMessageListWithUser:s byAllNum:_array.count pageCount:pageCount startTime:[NSDate dateWithTimeIntervalSince1970:createTime]];\cf4 \
  3100. [g_server tigaseMucMsgsWithRoomId:s StartTime:starTime EndTime:endTime PageIndex:\cf7 0\cf4 PageSize:PAGECOUNT toView:
  3101. \f2\b \cf8 self
  3102. \f0\b0 \cf4 ];\
  3103. \}
  3104. \f2\b \cf8 else
  3105. \f0\b0 \cf4 \
  3106. [g_server tigaseMsgsWithReceiver:s StartTime:starTime EndTime:endTime PageIndex:\cf7 0\cf4 toView:
  3107. \f2\b \cf8 self
  3108. \f0\b0 \cf4 ];\
  3109. \
  3110. \f2\b \cf8 self
  3111. \f0\b0 \cf4 .chatPerson.downloadTime =
  3112. \f2\b \cf8 self
  3113. \f0\b0 \cf4 .chatPerson.timeSend;\
  3114. [
  3115. \f2\b \cf8 self
  3116. \f0\b0 \cf4 .chatPerson update];\
  3117. \}\
  3118. \
  3119. \f2\b \cf8 else
  3120. \f0\b0 \cf4 \{\
  3121. \
  3122. [
  3123. \f2\b \cf8 self
  3124. \f0\b0 \cf4 refresh:
  3125. \f2\b \cf8 nil
  3126. \f0\b0 \cf4 ];\
  3127. \}\
  3128. \}\
  3129. \
  3130. - (
  3131. \f2\b \cf8 void
  3132. \f0\b0 \cf4 ) \cf11 customView\cf4 \{\
  3133. [
  3134. \f2\b \cf8 self
  3135. \f0\b0 \cf4 createHeadAndFoot];\
  3136. \f2\b \cf8 self
  3137. \f0\b0 \cf4 .tableFooter.clipsToBounds =
  3138. \f2\b \cf8 YES
  3139. \f0\b0 \cf4 ;\
  3140. \cf2 //
  3141. \f1 \'c9\'e8\'d6\'c3\'c1\'c4\'cc\'ec\'b1\'b3\'be\'b0\'cd\'bc\'c6\'ac
  3142. \f0 \cf4 \
  3143. \f2\b \cf8 self
  3144. \f0\b0 \cf4 .backGroundImageView = [[UIImageView alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 , JX_SCREEN_WIDTH, JX_SCREEN_HEIGHT - JX_SCREEN_BOTTOM-JX_SCREEN_TOP)];\
  3145. \f2\b \cf8 self
  3146. \f0\b0 \cf4 .backGroundImageView.contentMode = UIViewContentModeScaleAspectFill;\
  3147. [
  3148. \f2\b \cf8 self
  3149. \f0\b0 \cf4 .view insertSubview:
  3150. \f2\b \cf8 self
  3151. \f0\b0 \cf4 .backGroundImageView belowSubview:_table];\
  3152. \
  3153. NSData *imageData = [g_constant.userBackGroundImage objectForKey:
  3154. \f2\b \cf8 self
  3155. \f0\b0 \cf4 .chatPerson.userId];\
  3156. UIImage *backGroundImage = [UIImage imageWithContentsOfFile:kChatBackgroundImagePath];\
  3157. \f2\b \cf8 if
  3158. \f0\b0 \cf4 (imageData) \{\
  3159. _table.backgroundColor = [UIColor clearColor];\
  3160. \f2\b \cf8 self
  3161. \f0\b0 \cf4 .backGroundImageView.image = [UIImage imageWithData:imageData];\
  3162. \}
  3163. \f2\b \cf8 else
  3164. \f0\b0 \cf4
  3165. \f2\b \cf8 if
  3166. \f0\b0 \cf4 (backGroundImage) \{\
  3167. _table.backgroundColor = [UIColor clearColor];\
  3168. \f2\b \cf8 self
  3169. \f0\b0 \cf4 .backGroundImageView.image = backGroundImage;\
  3170. \
  3171. \}
  3172. \f2\b \cf8 else
  3173. \f0\b0 \cf4 \{\
  3174. _table.backgroundColor = HEXCOLOR(\cf7 0xF2F2F2\cf4 );\
  3175. \}\
  3176. \cf2 // _table.allowsSelection = NO;\cf4 \
  3177. \f2\b \cf8 self
  3178. \f0\b0 \cf4 .isShowFooterPull =
  3179. \f2\b \cf8 NO
  3180. \f0\b0 \cf4 ;\
  3181. \f2\b \cf8 self
  3182. \f0\b0 \cf4 .isShowHeaderPull =
  3183. \f2\b \cf8 YES
  3184. \f0\b0 \cf4 ;\
  3185. \cf2 // self.tableFooter.backgroundColor = HEXCOLOR(0xD0D0D0);\cf4 \
  3186. \
  3187. CGFloat width = \cf7 120\cf4 ;\
  3188. \f2\b \cf8 if
  3189. \f0\b0 \cf4 ([g_constant.sysLanguage isEqualToString:\cf6 @"zh"\cf4 ]) \{\
  3190. width = \cf7 80\cf4 ;\
  3191. \}\
  3192. \cf2 // if (!self.ished) \{\cf4 \
  3193. \
  3194. \cf2 // NSString *str = [NSString stringWithFormat:@"%@(%@)",chatPerson.userNickname,Localized(@"JX_OffLine")];\cf4 \
  3195. \cf2 // CGSize size = [str boundingRectWithSize:CGSizeMake(MAXFLOAT, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@\{NSFontAttributeName:self.headerTitle.font\} context:nil].size;\cf4 \
  3196. \cf2 // CGFloat n = JX_SCREEN_WIDTH / 2 + size.width / 2;\cf4 \
  3197. \cf2 // CGFloat x = ((JX_SCREEN_WIDTH - n - (JX_SCREEN_WIDTH - btn.frame.origin.x)) / 2) - (width / 2) + n;\cf4 \
  3198. \
  3199. \cf2 // UIButton *readDelBut = [UIFactory createButtonWithImage:@"im_destroy"\cf4 \
  3200. \cf2 // highlight:nil\cf4 \
  3201. \cf2 // target:self\cf4 \
  3202. \cf2 // selector:@selector(switchValueChange:)];\cf4 \
  3203. \cf2 // readDelBut.custom_acceptEventInterval = .25f;\cf4 \
  3204. \cf2 // readDelBut.tag = 2000;\cf4 \
  3205. \cf2 // readDelBut.frame = CGRectMake(JX_SCREEN_WIDTH - 42 - 32, JX_SCREEN_TOP - 33, 22, 22);\cf4 \
  3206. \cf2 // readDelBut.layer.cornerRadius = readDelBut.frame.size.width / 2;\cf4 \
  3207. \cf2 // readDelBut.layer.masksToBounds = YES;\cf4 \
  3208. \cf2 // readDelBut.layer.borderWidth = 1;\cf4 \
  3209. \cf2 // readDelBut.layer.borderColor = [UIColor whiteColor].CGColor;\cf4 \
  3210. \cf2 // [self.tableHeader addSubview:readDelBut];\cf4 \
  3211. \
  3212. NSLog(\cf6 @"timetime203 -- %f"\cf4 , [[NSDate date] timeIntervalSince1970]);\
  3213. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(\cf7 0.3\cf4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\
  3214. memberData *data = [
  3215. \f2\b \cf8 self
  3216. \f0\b0 \cf4 .room getMember:g_myself.userId];\
  3217. \
  3218. _moreView =[JXSelectImageView alloc];\
  3219. _moreView.isDevice = [
  3220. \f2\b \cf8 self
  3221. \f0\b0 \cf4 .chatPerson.userId rangeOfString:MY_USER_ID].location != NSNotFound;\
  3222. _moreView.delegate =
  3223. \f2\b \cf8 self
  3224. \f0\b0 \cf4 ;\
  3225. _moreView.isGroupMessages =
  3226. \f2\b \cf8 self
  3227. \f0\b0 \cf4 .isGroupMessages;\
  3228. _moreView.isGroup = _roomJid.length > \cf7 0\cf4 ;\
  3229. _moreView.isWin = [data.role intValue] == \cf7 1\cf4 ;\
  3230. _moreView.onImage =
  3231. \f2\b \cf8 @selector
  3232. \f0\b0 \cf4 (pickPhoto);\
  3233. _moreView.backgroundColor=[UIColor whiteColor];\
  3234. \
  3235. \f2\b \cf8 if
  3236. \f0\b0 \cf4 (
  3237. \f2\b \cf8 self
  3238. \f0\b0 \cf4 .roomJid) \{\cf2 //
  3239. \f1 \'c8\'e7\'b9\'fb\'ca\'c7\'c8\'ba\'c1\'c4
  3240. \f0 \cf4 \
  3241. _moreView.onGift =
  3242. \f2\b \cf8 @selector
  3243. \f0\b0 \cf4 (sendGiftToRoom);\
  3244. \}
  3245. \f2\b \cf8 else
  3246. \f0\b0 \cf4 \{\
  3247. _moreView.onGift =
  3248. \f2\b \cf8 @selector
  3249. \f0\b0 \cf4 (sendGift);\
  3250. _moreView.onTransfer =
  3251. \f2\b \cf8 @selector
  3252. \f0\b0 \cf4 (onTransfer);\
  3253. \}\
  3254. \
  3255. _moreView.onAudioChat =
  3256. \f2\b \cf8 @selector
  3257. \f0\b0 \cf4 (onChatSip);\
  3258. _moreView.onVideo =
  3259. \f2\b \cf8 @selector
  3260. \f0\b0 \cf4 (pickVideo);\
  3261. _moreView.onCard =
  3262. \f2\b \cf8 @selector
  3263. \f0\b0 \cf4 (onCard);\
  3264. _moreView.onFile =
  3265. \f2\b \cf8 @selector
  3266. \f0\b0 \cf4 (onFile);\
  3267. _moreView.onLocation =
  3268. \f2\b \cf8 @selector
  3269. \f0\b0 \cf4 (onLocation);\
  3270. _moreView.onCamera =
  3271. \f2\b \cf8 @selector
  3272. \f0\b0 \cf4 (onCamera);\
  3273. _moreView.onShake =
  3274. \f2\b \cf8 @selector
  3275. \f0\b0 \cf4 (onShake);\
  3276. _moreView.onCollection =
  3277. \f2\b \cf8 @selector
  3278. \f0\b0 \cf4 (onCollection);\
  3279. _moreView.onAddressBook =
  3280. \f2\b \cf8 @selector
  3281. \f0\b0 \cf4 (onAddressBook);\
  3282. _moreView.onGroupHelper =
  3283. \f2\b \cf8 @selector
  3284. \f0\b0 \cf4 (onGroupHelper);\
  3285. \
  3286. _moreView = [_moreView initWithFrame:CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 , JX_SCREEN_WIDTH, faceHeight)];\
  3287. \
  3288. _voice = [[JXVolumeView alloc]initWithFrame:CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 , \cf7 160\cf4 , \cf7 150\cf4 )];\
  3289. _voice.center =
  3290. \f2\b \cf8 self
  3291. \f0\b0 \cf4 .view.center;\
  3292. \});\
  3293. [
  3294. \f2\b \cf8 self
  3295. \f0\b0 \cf4 initAudio];\
  3296. \
  3297. UIButton* btn;\
  3298. UIButton *btn1;\
  3299. \f2\b \cf8 if
  3300. \f0\b0 \cf4 (
  3301. \f2\b \cf8 self
  3302. \f0\b0 \cf4 .roomJid)\{\
  3303. btn1 = [[UIButton alloc] initWithFrame:CGRectMake(JX_SCREEN_WIDTH-\cf7 18\cf4 -BTN_RANG_UP*\cf7 2\cf4 , JX_SCREEN_TOP -\cf7 18\cf4 -BTN_RANG_UP*\cf7 2\cf4 , \cf7 18\cf4 +BTN_RANG_UP*\cf7 2\cf4 , \cf7 18\cf4 +BTN_RANG_UP*\cf7 2\cf4 )];\
  3304. [btn1 addTarget:
  3305. \f2\b \cf8 self
  3306. \f0\b0 \cf4 action:
  3307. \f2\b \cf8 @selector
  3308. \f0\b0 \cf4 (onMember) forControlEvents:UIControlEventTouchUpInside];\
  3309. [
  3310. \f2\b \cf8 self
  3311. \f0\b0 \cf4 .tableHeader addSubview:btn1];\
  3312. \
  3313. \
  3314. btn = [UIFactory createButtonWithImage:\cf6 @"chat_more_black"\cf4 highlight:
  3315. \f2\b \cf8 nil
  3316. \f0\b0 \cf4 target:
  3317. \f2\b \cf8 self
  3318. \f0\b0 \cf4 selector:
  3319. \f2\b \cf8 @selector
  3320. \f0\b0 \cf4 (onMember)];\
  3321. btn.custom_acceptEventInterval = \cf7 1.0f\cf4 ;\
  3322. btn.frame = CGRectMake(BTN_RANG_UP, BTN_RANG_UP, \cf7 18\cf4 , \cf7 18\cf4 );\
  3323. [btn1 addSubview:btn];\
  3324. \
  3325. \
  3326. UIButton *rightBtn = [UIButton buttonWithType:UIButtonTypeSystem];\
  3327. [rightBtn setImage:[UIImage imageNamed:\cf6 @"chat_more_black"\cf4 ] forState:UIControlStateNormal];\
  3328. [rightBtn addTarget:
  3329. \f2\b \cf8 self
  3330. \f0\b0 \cf4 action:
  3331. \f2\b \cf8 @selector
  3332. \f0\b0 \cf4 (onMember) forControlEvents:UIControlEventTouchUpInside];\
  3333. rightBtn.frame=CGRectMake(\cf7 1\cf4 , \cf7 1\cf4 , \cf7 40\cf4 , \cf7 36\cf4 );\
  3334. UIBarButtonItem *rightBarBtn = [[UIBarButtonItem alloc] initWithCustomView:rightBtn];\
  3335. \
  3336. \f2\b \cf8 self
  3337. \f0\b0 \cf4 .navigationItem.rightBarButtonItem = rightBarBtn;\
  3338. \
  3339. [g_server getRoomMember:roomId userId:[g_myself.userId intValue] toView:
  3340. \f2\b \cf8 self
  3341. \f0\b0 \cf4 ];\
  3342. \cf2 //
  3343. \f1 \'bb\'f1\'c8\'a1\'c8\'ba\'b3\'c9\'d4\'b1\'a3\'ba
  3344. \f0 \cf4 \
  3345. NSArray * memberArray = [memberData fetchAllMembers:_room.roomId];\
  3346. \f2\b \cf8 self
  3347. \f0\b0 \cf4 .title = [NSString stringWithFormat:\cf6 @"%@(%ld)"\cf4 ,
  3348. \f2\b \cf8 self
  3349. \f0\b0 \cf4 .chatPerson.userNickname, memberArray.count];\
  3350. \
  3351. \
  3352. _dataArrGetGroundPersonArr=[memberArray mutableCopy];\
  3353. \
  3354. \
  3355. [
  3356. \f2\b \cf8 self
  3357. \f0\b0 \cf4 setAudioIconFrame];\
  3358. \f2\b \cf8 if
  3359. \f0\b0 \cf4 (memberArray.count > \cf7 0\cf4 ) \{\cf2 //
  3360. \f1 \'b1\'be\'b5\'d8\'d3\'d0
  3361. \f0 \cf4 \
  3362. _room.roomId = roomId;\
  3363. _room.members = [memberArray mutableCopy];\
  3364. \
  3365. memberData *data = [
  3366. \f2\b \cf8 self
  3367. \f0\b0 \cf4 .room getMember:g_myself.userId];\
  3368. \f2\b \cf8 if
  3369. \f0\b0 \cf4 ([data.role intValue] == \cf7 1\cf4 || [data.role intValue] == \cf7 2\cf4 ) \{\
  3370. _isAdmin =
  3371. \f2\b \cf8 YES
  3372. \f0\b0 \cf4 ;\
  3373. \}
  3374. \f2\b \cf8 else
  3375. \f0\b0 \cf4 \{\
  3376. _isAdmin =
  3377. \f2\b \cf8 NO
  3378. \f0\b0 \cf4 ;\
  3379. \}\
  3380. \}
  3381. \f2\b \cf8 else
  3382. \f0\b0 \cf4 \{\
  3383. \
  3384. \f2\b \cf8 self
  3385. \f0\b0 \cf4 .isFirst =
  3386. \f2\b \cf8 YES
  3387. \f0\b0 \cf4 ;\
  3388. [g_server getRoom:
  3389. \f2\b \cf8 self
  3390. \f0\b0 \cf4 .room.roomId toView:
  3391. \f2\b \cf8 self
  3392. \f0\b0 \cf4 ];\
  3393. \cf2 // dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\cf4 \
  3394. [g_server listRoomMember:roomId page:\cf7 0\cf4 toView:
  3395. \f2\b \cf8 self
  3396. \f0\b0 \cf4 ];\
  3397. \cf2 // \});\cf4 \
  3398. \}\
  3399. \}
  3400. \f2\b \cf8 else
  3401. \f0\b0 \cf4 \{\
  3402. btn1 = [[UIButton alloc] initWithFrame:CGRectMake(JX_SCREEN_WIDTH-\cf7 18\cf4 -BTN_RANG_UP*\cf7 2\cf4 , JX_SCREEN_TOP -\cf7 18\cf4 -BTN_RANG_UP*\cf7 2\cf4 , \cf7 18\cf4 +BTN_RANG_UP*\cf7 2\cf4 , \cf7 18\cf4 +BTN_RANG_UP*\cf7 2\cf4 )];\
  3403. [btn1 addTarget:
  3404. \f2\b \cf8 self
  3405. \f0\b0 \cf4 action:
  3406. \f2\b \cf8 @selector
  3407. \f0\b0 \cf4 (createRoom) forControlEvents:UIControlEventTouchUpInside];\
  3408. [
  3409. \f2\b \cf8 self
  3410. \f0\b0 \cf4 .tableHeader addSubview:btn1];\
  3411. \
  3412. btn = [UIFactory createButtonWithImage:\cf6 @"chat_more_black"\cf4 \
  3413. highlight:
  3414. \f2\b \cf8 nil
  3415. \f0\b0 \cf4 \
  3416. target:
  3417. \f2\b \cf8 self
  3418. \f0\b0 \cf4 \
  3419. selector:
  3420. \f2\b \cf8 @selector
  3421. \f0\b0 \cf4 (createRoom)];\
  3422. btn.custom_acceptEventInterval = \cf7 1.0f\cf4 ;\
  3423. btn.frame = CGRectMake(BTN_RANG_UP, BTN_RANG_UP, \cf7 18\cf4 , \cf7 18\cf4 );\
  3424. [btn1 addSubview:btn];\
  3425. \
  3426. UIButton *rightBtn = [UIButton buttonWithType:UIButtonTypeSystem];\
  3427. [rightBtn setImage:[UIImage imageNamed:\cf6 @"chat_more_black"\cf4 ] forState:UIControlStateNormal];\
  3428. [rightBtn addTarget:
  3429. \f2\b \cf8 self
  3430. \f0\b0 \cf4 action:
  3431. \f2\b \cf8 @selector
  3432. \f0\b0 \cf4 (createRoom) forControlEvents:UIControlEventTouchUpInside];\
  3433. rightBtn.frame=CGRectMake(\cf7 1\cf4 , \cf7 1\cf4 , \cf7 40\cf4 , \cf7 36\cf4 );\
  3434. UIBarButtonItem *rightBarBtn = [[UIBarButtonItem alloc] initWithCustomView:rightBtn];\
  3435. \
  3436. \f2\b \cf8 self
  3437. \f0\b0 \cf4 .navigationItem.rightBarButtonItem = rightBarBtn;\
  3438. \}\
  3439. \
  3440. _audioIcon = [[UIImageView alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , JX_SCREEN_TOP - \cf7 30\cf4 , \cf7 16\cf4 , \cf7 16\cf4 )];\
  3441. _audioIcon.image = [UIImage imageNamed:\cf6 @"audioIcon"\cf4 ];\
  3442. [
  3443. \f2\b \cf8 self
  3444. \f0\b0 \cf4 .tableHeader addSubview:_audioIcon];\
  3445. [
  3446. \f2\b \cf8 self
  3447. \f0\b0 \cf4 setAudioIconFrame];\
  3448. \
  3449. \f2\b \cf8 if
  3450. \f0\b0 \cf4 (
  3451. \f2\b \cf8 self
  3452. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 || [chatPerson.userId rangeOfString:MY_USER_ID].location != NSNotFound ||
  3453. \f2\b \cf8 self
  3454. \f0\b0 \cf4 .isGroupMessages ||
  3455. \f2\b \cf8 self
  3456. \f0\b0 \cf4 .isHiddenFooter) \{\
  3457. \cf2 // readDelBut.hidden = YES;\cf4 \
  3458. btn.hidden =
  3459. \f2\b \cf8 YES
  3460. \f0\b0 \cf4 ;\
  3461. btn1.hidden =
  3462. \f2\b \cf8 YES
  3463. \f0\b0 \cf4 ;\
  3464. \}\
  3465. \
  3466. \cf2 /*\cf4 \
  3467. \cf2 if (self.isGroupMessages) \{\cf4 \
  3468. \cf2 self.isShowHeaderPull = NO;\cf4 \
  3469. \cf2 UIView *friendNamesView = [[UIView alloc] initWithFrame:CGRectMake(0, self.tableView.frame.origin.y, JX_SCREEN_WIDTH, 0)];\cf4 \
  3470. \cf2 friendNamesView.backgroundColor = [UIColor whiteColor];\cf4 \
  3471. \cf2 [self.view addSubview:friendNamesView];\cf4 \
  3472. \cf2 \cf4 \
  3473. \cf2 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(15, 15, 300, 20)];\cf4 \
  3474. \cf2 label.font = [UIFont systemFontOfSize:15.0];\cf4 \
  3475. \cf2 label.textColor = [UIColor lightGrayColor];\cf4 \
  3476. \cf2 label.text = [NSString stringWithFormat:Localized(@"JX_YouWillSendMessagesToFriends"),_userIds.count];\cf4 \
  3477. \cf2 [friendNamesView addSubview:label];\cf4 \
  3478. \cf2 \cf4 \
  3479. \cf2 NSMutableString *names = [NSMutableString string];\cf4 \
  3480. \cf2 for (NSInteger i = 0; i < _userNames.count; i ++) \{\cf4 \
  3481. \cf2 NSString *str = _userNames[i];\cf4 \
  3482. \cf2 if (i == 0) \{\cf4 \
  3483. \cf2 [names appendString:[NSString stringWithFormat:@"[\\"%@",str]];\cf4 \
  3484. \cf2 \}\cf4 \
  3485. \cf2 else if (i == _userNames.count - 1) \{\cf4 \
  3486. \cf2 [names appendString:[NSString stringWithFormat:@",%@\\"]", str]];\cf4 \
  3487. \cf2 \}\cf4 \
  3488. \cf2 else \{\cf4 \
  3489. \cf2 [names appendString:[NSString stringWithFormat:@",%@", str]];\cf4 \
  3490. \cf2 \}\cf4 \
  3491. \cf2 if (_userNames.count == 1) \{\cf4 \
  3492. \cf2 [names appendString:@"\\"]"];\cf4 \
  3493. \cf2 \}\cf4 \
  3494. \cf2 \}\cf4 \
  3495. \cf2 \cf4 \
  3496. \cf2 CGSize size = [names boundingRectWithSize:CGSizeMake(friendNamesView.frame.size.width - 30, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@\{NSFontAttributeName : [UIFont systemFontOfSize:17.0]\} context:nil].size;\cf4 \
  3497. \cf2 \cf4 \
  3498. \cf2 CGFloat height = 0;\cf4 \
  3499. \cf2 if (size.height > 200) \{\cf4 \
  3500. \cf2 height = 200;\cf4 \
  3501. \cf2 \}else \{\cf4 \
  3502. \cf2 height = size.height;\cf4 \
  3503. \cf2 \}\cf4 \
  3504. \cf2 UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame: CGRectMake(15, CGRectGetMaxY(label.frame) + 10, friendNamesView.frame.size.width - 30, height)];\cf4 \
  3505. \cf2 [friendNamesView addSubview:scrollView];\cf4 \
  3506. \cf2 \cf4 \
  3507. \cf2 UILabel *namesLabel = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, friendNamesView.frame.size.width - 30, size.height)];\cf4 \
  3508. \cf2 namesLabel.font = [UIFont systemFontOfSize:17.0];\cf4 \
  3509. \cf2 namesLabel.textColor = [UIColor blackColor];\cf4 \
  3510. \cf2 namesLabel.numberOfLines = 0;\cf4 \
  3511. \cf2 namesLabel.text = names;\cf4 \
  3512. \cf2 [scrollView addSubview:namesLabel];\cf4 \
  3513. \cf2 scrollView.contentSize = CGSizeMake(namesLabel.frame.size.width, size.height);\cf4 \
  3514. \cf2 \cf4 \
  3515. \cf2 friendNamesView.frame = CGRectMake(friendNamesView.frame.origin.x, friendNamesView.frame.origin.y, friendNamesView.frame.size.width, scrollView.frame.origin.y + scrollView.frame.size.height + 15);\cf4 \
  3516. \cf2 NSLog(@"%@", friendNamesView);\cf4 \
  3517. \cf2 \}\cf4 \
  3518. \cf2 */\cf4 \
  3519. \
  3520. \f2\b \cf8 if
  3521. \f0\b0 \cf4 (
  3522. \f2\b \cf8 self
  3523. \f0\b0 \cf4 .isGroupMessages) \{\
  3524. \f2\b \cf8 self
  3525. \f0\b0 \cf4 .isShowHeaderPull =
  3526. \f2\b \cf8 NO
  3527. \f0\b0 \cf4 ;\
  3528. UIView *friendNamesView = [[UIView alloc] initWithFrame:CGRectMake(\cf7 0\cf4 ,
  3529. \f2\b \cf8 self
  3530. \f0\b0 \cf4 .tableView.frame.origin.y, JX_SCREEN_WIDTH, \cf7 0\cf4 )];\
  3531. friendNamesView.backgroundColor = [UIColor whiteColor];\
  3532. [
  3533. \f2\b \cf8 self
  3534. \f0\b0 \cf4 .view addSubview:friendNamesView];\
  3535. \
  3536. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(\cf7 15\cf4 , \cf7 15\cf4 , \cf7 300\cf4 , \cf7 20\cf4 )];\
  3537. label.font = [UIFont systemFontOfSize:\cf7 15.0\cf4 ];\
  3538. label.textColor = [UIColor lightGrayColor];\
  3539. label.text = [NSString stringWithFormat:Localized(\cf6 @"JX_YouWillSendMessagesToFriends"\cf4 ),_userIds.count];\
  3540. [friendNamesView addSubview:label];\
  3541. \
  3542. _names = [NSMutableString string];\
  3543. \f2\b \cf8 for
  3544. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < _userNames.count; i ++) \{\
  3545. NSString *str = _userNames[i];\
  3546. \f2\b \cf8 if
  3547. \f0\b0 \cf4 (i == \cf7 0\cf4 ) \{\
  3548. \f2\b \cf8 if
  3549. \f0\b0 \cf4 (
  3550. \f2\b \cf8 self
  3551. \f0\b0 \cf4 .isCYMSGgroupANDFriendy) \{\
  3552. [_names appendString:\cf6 @"
  3553. \f1 \'ba\'c3\'d3\'d1
  3554. \f0 : "\cf4 ];\
  3555. \}\
  3556. [_names appendString:[NSString stringWithFormat:\cf6 @"[\\"%@"\cf4 ,str]];\
  3557. \}\
  3558. \f2\b \cf8 else
  3559. \f0\b0 \cf4
  3560. \f2\b \cf8 if
  3561. \f0\b0 \cf4 (i == _userNames.count - \cf7 1\cf4 ) \{\
  3562. [_names appendString:[NSString stringWithFormat:\cf6 @",%@\\"]"\cf4 , str]];\
  3563. \}\
  3564. \f2\b \cf8 else
  3565. \f0\b0 \cf4 \{\
  3566. [_names appendString:[NSString stringWithFormat:\cf6 @",%@"\cf4 , str]];\
  3567. \}\
  3568. \f2\b \cf8 if
  3569. \f0\b0 \cf4 (_userNames.count == \cf7 1\cf4 ) \{\
  3570. [_names appendString:\cf6 @"\\"]"\cf4 ];\
  3571. \}\
  3572. \}\
  3573. \
  3574. \f2\b \cf8 if
  3575. \f0\b0 \cf4 (
  3576. \f2\b \cf8 self
  3577. \f0\b0 \cf4 .isCYMSGgroupANDFriendy) \{\
  3578. label.text = \cf6 @"
  3579. \f1 \'c4\'e3\'bd\'ab\'b7\'a2\'cf\'fb\'cf\'a2\'b8\'f8\'a3\'ba
  3580. \f0 "\cf4 ;\
  3581. NSMutableString *nameStr = [NSMutableString string];\
  3582. \f2\b \cf8 for
  3583. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < _userNmaesWithFriend.count; i ++) \{\
  3584. NSString *str = _userNmaesWithFriend[i];\
  3585. \f2\b \cf8 if
  3586. \f0\b0 \cf4 (i == \cf7 0\cf4 ) \{\
  3587. \f2\b \cf8 if
  3588. \f0\b0 \cf4 (
  3589. \f2\b \cf8 self
  3590. \f0\b0 \cf4 .isCYMSGgroupANDFriendy) \{\
  3591. [nameStr appendString:\cf6 @"
  3592. \f1 \'b1\'ea\'c7\'a9
  3593. \f0 : "\cf4 ];\
  3594. \}\
  3595. [nameStr appendString:[NSString stringWithFormat:\cf6 @"[\\"%@"\cf4 ,str]];\
  3596. \}\
  3597. \f2\b \cf8 else
  3598. \f0\b0 \cf4
  3599. \f2\b \cf8 if
  3600. \f0\b0 \cf4 (i == _userNmaesWithFriend.count - \cf7 1\cf4 ) \{\
  3601. [nameStr appendString:[NSString stringWithFormat:\cf6 @",%@\\"]"\cf4 , str]];\
  3602. \}\
  3603. \f2\b \cf8 else
  3604. \f0\b0 \cf4 \{\
  3605. [nameStr appendString:[NSString stringWithFormat:\cf6 @",%@"\cf4 , str]];\
  3606. \}\
  3607. \f2\b \cf8 if
  3608. \f0\b0 \cf4 (_userNmaesWithFriend.count == \cf7 1\cf4 ) \{\
  3609. [nameStr appendString:\cf6 @"\\"]"\cf4 ];\
  3610. \}\
  3611. \}\
  3612. _names = nameStr;\
  3613. \}\
  3614. \
  3615. CGSize size = [_names boundingRectWithSize:CGSizeMake(friendNamesView.frame.size.width - \cf7 30\cf4 , MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:\cf7 @\{\cf4 NSFontAttributeName : [UIFont systemFontOfSize:\cf7 17.0\cf4 ]\cf7 \}\cf4 context:
  3616. \f2\b \cf8 nil
  3617. \f0\b0 \cf4 ].size;\
  3618. \
  3619. CGFloat height = \cf7 0\cf4 ;\
  3620. \f2\b \cf8 if
  3621. \f0\b0 \cf4 (size.height > \cf7 200\cf4 ) \{\
  3622. height = \cf7 200\cf4 ;\
  3623. \}
  3624. \f2\b \cf8 else
  3625. \f0\b0 \cf4 \{\
  3626. height = size.height;\
  3627. \}\
  3628. \
  3629. \f2\b \cf8 if
  3630. \f0\b0 \cf4 (
  3631. \f2\b \cf8 self
  3632. \f0\b0 \cf4 .isCYMSGgroupANDFriendy) \{\
  3633. height += \cf7 40\cf4 ;\
  3634. \}\
  3635. \
  3636. UIScrollView *scrollView;\
  3637. \f2\b \cf8 if
  3638. \f0\b0 \cf4 (
  3639. \f2\b \cf8 self
  3640. \f0\b0 \cf4 .isCYMSGgroupANDFriendy) \{\
  3641. scrollView = [[UIScrollView alloc] initWithFrame: CGRectMake(\cf7 15\cf4 , CGRectGetMaxY(label.frame) + \cf7 10\cf4 , friendNamesView.frame.size.width - \cf7 30\cf4 , \cf7 70\cf4 )];\
  3642. \}
  3643. \f2\b \cf8 else
  3644. \f0\b0 \cf4 \{\
  3645. scrollView = [[UIScrollView alloc] initWithFrame: CGRectMake(\cf7 15\cf4 , CGRectGetMaxY(label.frame) + \cf7 10\cf4 , friendNamesView.frame.size.width - \cf7 30\cf4 , height)];\
  3646. \}\
  3647. \
  3648. \cf2 // UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame: CGRectMake(15, CGRectGetMaxY(label.frame) + 10, friendNamesView.frame.size.width - 30, height)];\cf4 \
  3649. [friendNamesView addSubview:scrollView];\
  3650. \
  3651. \
  3652. \f2\b \cf8 if
  3653. \f0\b0 \cf4 (
  3654. \f2\b \cf8 self
  3655. \f0\b0 \cf4 .isCYMSGgroupANDFriendy) \{\
  3656. size.height = \cf7 30\cf4 ;\
  3657. \}\
  3658. UILabel *namesLabel = [[UILabel alloc] initWithFrame:CGRectMake(\cf7 15\cf4 , \cf7 0\cf4 , friendNamesView.frame.size.width - \cf7 30\cf4 , size.height)];\
  3659. \
  3660. namesLabel.font = [UIFont systemFontOfSize:\cf7 17.0\cf4 ];\
  3661. namesLabel.textColor = [UIColor blackColor];\
  3662. namesLabel.numberOfLines = \cf7 0\cf4 ;\
  3663. namesLabel.text = _names;\
  3664. [scrollView addSubview:namesLabel];\
  3665. \
  3666. \f2\b \cf8 if
  3667. \f0\b0 \cf4 (
  3668. \f2\b \cf8 self
  3669. \f0\b0 \cf4 .isCYMSGgroupANDFriendy) \{\
  3670. _names2 = [NSMutableString string];\
  3671. \f2\b \cf8 for
  3672. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < _userNamesWithGroup.count; i ++) \{\
  3673. NSString *str = _userNamesWithGroup[i];\
  3674. \f2\b \cf8 if
  3675. \f0\b0 \cf4 (i == \cf7 0\cf4 ) \{\
  3676. \f2\b \cf8 if
  3677. \f0\b0 \cf4 (
  3678. \f2\b \cf8 self
  3679. \f0\b0 \cf4 .isCYMSGgroupANDFriendy) \{\
  3680. [_names2 appendString:\cf6 @"
  3681. \f1 \'c8\'ba\'d7\'e9
  3682. \f0 : "\cf4 ];\
  3683. \}\
  3684. [_names2 appendString:[NSString stringWithFormat:\cf6 @"[\\"%@"\cf4 ,str]];\
  3685. \}\
  3686. \f2\b \cf8 else
  3687. \f0\b0 \cf4
  3688. \f2\b \cf8 if
  3689. \f0\b0 \cf4 (i == _userNamesWithGroup.count - \cf7 1\cf4 ) \{\
  3690. [_names2 appendString:[NSString stringWithFormat:\cf6 @",%@\\"]"\cf4 , str]];\
  3691. \}\
  3692. \f2\b \cf8 else
  3693. \f0\b0 \cf4 \{\
  3694. [_names2 appendString:[NSString stringWithFormat:\cf6 @",%@"\cf4 , str]];\
  3695. \}\
  3696. \f2\b \cf8 if
  3697. \f0\b0 \cf4 (_userNamesWithGroup.count == \cf7 1\cf4 ) \{\
  3698. [_names2 appendString:\cf6 @"\\"]"\cf4 ];\
  3699. \}\
  3700. \}\
  3701. \
  3702. \
  3703. \
  3704. UILabel *namesLabel2 = [[UILabel alloc] initWithFrame:CGRectMake(\cf7 15\cf4 , namesLabel.frame.origin.y + size.height, friendNamesView.frame.size.width - \cf7 30\cf4 , \cf7 30\cf4 )];\
  3705. namesLabel2.font = [UIFont systemFontOfSize:\cf7 17.0\cf4 ];\
  3706. namesLabel2.textColor = [UIColor blackColor];\
  3707. namesLabel2.numberOfLines = \cf7 0\cf4 ;\
  3708. namesLabel2.text = _names2;\
  3709. [scrollView addSubview:namesLabel2];\
  3710. \
  3711. size.height = \cf7 400\cf4 ;\
  3712. \}\
  3713. \
  3714. scrollView.contentSize = CGSizeMake(namesLabel.frame.size.width, size.height);\
  3715. \
  3716. friendNamesView.frame = CGRectMake(friendNamesView.frame.origin.x, friendNamesView.frame.origin.y, friendNamesView.frame.size.width, scrollView.frame.origin.y + scrollView.frame.size.height + \cf7 15\cf4 );\
  3717. NSLog(\cf6 @"%@"\cf4 , friendNamesView);\
  3718. \}\
  3719. \
  3720. \cf2 //
  3721. \f1 \'bd\'d8\'c6\'c1
  3722. \f0 \cf4 \
  3723. \f2\b \cf8 self
  3724. \f0\b0 \cf4 .screenShotView = [[UIView alloc] initWithFrame:CGRectMake(JX_SCREEN_WIDTH - \cf7 80\cf4 - \cf7 10\cf4 , \cf7 100\cf4 , \cf7 80\cf4 , \cf7 130\cf4 )];\
  3725. \f2\b \cf8 self
  3726. \f0\b0 \cf4 .screenShotView.backgroundColor = [UIColor whiteColor];\
  3727. \f2\b \cf8 self
  3728. \f0\b0 \cf4 .screenShotView.layer.cornerRadius = \cf7 5.0\cf4 ;\
  3729. \f2\b \cf8 self
  3730. \f0\b0 \cf4 .screenShotView.layer.masksToBounds =
  3731. \f2\b \cf8 YES
  3732. \f0\b0 \cf4 ;\
  3733. \f2\b \cf8 self
  3734. \f0\b0 \cf4 .screenShotView.hidden =
  3735. \f2\b \cf8 YES
  3736. \f0\b0 \cf4 ;\
  3737. [
  3738. \f2\b \cf8 self
  3739. \f0\b0 \cf4 .view addSubview:
  3740. \f2\b \cf8 self
  3741. \f0\b0 \cf4 .screenShotView];\
  3742. \
  3743. UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:
  3744. \f2\b \cf8 self
  3745. \f0\b0 \cf4 action:
  3746. \f2\b \cf8 @selector
  3747. \f0\b0 \cf4 (screenShotViewAction:)];\
  3748. [
  3749. \f2\b \cf8 self
  3750. \f0\b0 \cf4 .screenShotView addGestureRecognizer:tap];\
  3751. \
  3752. UILabel *screenShotLabel = [[UILabel alloc] initWithFrame:CGRectMake(\cf7 5\cf4 , \cf7 0\cf4 ,
  3753. \f2\b \cf8 self
  3754. \f0\b0 \cf4 .screenShotView.frame.size.width - \cf7 10\cf4 , \cf7 40\cf4 )];\
  3755. screenShotLabel.font = [UIFont systemFontOfSize:\cf7 11.0\cf4 ];\
  3756. screenShotLabel.numberOfLines = \cf7 0\cf4 ;\
  3757. screenShotLabel.text = Localized(\cf6 @"JX_ThePhotosYouMightWantToSend"\cf4 );\
  3758. [
  3759. \f2\b \cf8 self
  3760. \f0\b0 \cf4 .screenShotView addSubview:screenShotLabel];\
  3761. \
  3762. \f2\b \cf8 self
  3763. \f0\b0 \cf4 .screenShotImageView = [[UIImageView alloc] initWithFrame:CGRectMake(\cf7 5\cf4 , CGRectGetMaxY(screenShotLabel.frame),
  3764. \f2\b \cf8 self
  3765. \f0\b0 \cf4 .screenShotView.frame.size.width - \cf7 10\cf4 ,
  3766. \f2\b \cf8 self
  3767. \f0\b0 \cf4 .screenShotView.frame.size.height - screenShotLabel.frame.size.height - \cf7 5\cf4 )];\
  3768. \f2\b \cf8 self
  3769. \f0\b0 \cf4 .screenShotImageView.layer.cornerRadius = \cf7 5.0\cf4 ;\
  3770. \f2\b \cf8 self
  3771. \f0\b0 \cf4 .screenShotImageView.layer.masksToBounds =
  3772. \f2\b \cf8 YES
  3773. \f0\b0 \cf4 ;\
  3774. \cf2 // self.screenShotImageView.image = [UIImage imageWithContentsOfFile:ScreenShotImage];\cf4 \
  3775. [
  3776. \f2\b \cf8 self
  3777. \f0\b0 \cf4 .screenShotView addSubview:
  3778. \f2\b \cf8 self
  3779. \f0\b0 \cf4 .screenShotImageView];\
  3780. \
  3781. \cf2 //
  3782. \f1 \'d0\'c2\'cf\'fb\'cf\'a2\'cc\'f8\'d7\'aa
  3783. \f0 \cf4 \
  3784. _jumpNewMsgBtn = [[UIButton alloc] initWithFrame:CGRectMake(JX_SCREEN_WIDTH - \cf7 105\cf4 , JX_SCREEN_TOP + \cf7 20\cf4 , \cf7 120\cf4 , \cf7 30\cf4 )];\
  3785. _jumpNewMsgBtn.backgroundColor = [UIColor whiteColor];\
  3786. _jumpNewMsgBtn.layer.cornerRadius = _jumpNewMsgBtn.frame.size.height / \cf7 2\cf4 ;\
  3787. _jumpNewMsgBtn.layer.masksToBounds =
  3788. \f2\b \cf8 YES
  3789. \f0\b0 \cf4 ;\
  3790. [_jumpNewMsgBtn addTarget:
  3791. \f2\b \cf8 self
  3792. \f0\b0 \cf4 action:
  3793. \f2\b \cf8 @selector
  3794. \f0\b0 \cf4 (jumpNewMsgBtnAction) forControlEvents:UIControlEventTouchUpInside];\
  3795. [
  3796. \f2\b \cf8 self
  3797. \f0\b0 \cf4 .view addSubview:_jumpNewMsgBtn];\
  3798. \
  3799. UILabel *newMsgLabel = [[UILabel alloc] initWithFrame:_jumpNewMsgBtn.bounds];\
  3800. newMsgLabel.text = [NSString stringWithFormat:\cf6 @"%d%@"\cf4 ,
  3801. \f2\b \cf8 self
  3802. \f0\b0 \cf4 .newMsgCount,Localized(\cf6 @"JX_NewMessages"\cf4 )];\
  3803. newMsgLabel.font = [UIFont systemFontOfSize:\cf7 13.0\cf4 ];\
  3804. newMsgLabel.textAlignment = NSTextAlignmentCenter;\
  3805. newMsgLabel.textColor = HEXCOLOR(\cf7 0x4FC557\cf4 );\
  3806. [_jumpNewMsgBtn addSubview:newMsgLabel];\
  3807. \
  3808. UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(\cf7 10\cf4 , \cf7 10\cf4 , \cf7 10\cf4 , \cf7 10\cf4 )];\
  3809. imageView.image = [UIImage imageNamed:\cf6 @"doubleArrow_up"\cf4 ];\
  3810. [_jumpNewMsgBtn addSubview:imageView];\
  3811. \
  3812. \f2\b \cf8 if
  3813. \f0\b0 \cf4 (
  3814. \f2\b \cf8 self
  3815. \f0\b0 \cf4 .newMsgCount > \cf7 20\cf4 ) \{\
  3816. _jumpNewMsgBtn.hidden =
  3817. \f2\b \cf8 NO
  3818. \f0\b0 \cf4 ;\
  3819. \}
  3820. \f2\b \cf8 else
  3821. \f0\b0 \cf4 \{\
  3822. _jumpNewMsgBtn.hidden =
  3823. \f2\b \cf8 YES
  3824. \f0\b0 \cf4 ;\
  3825. \}\
  3826. \
  3827. \}\
  3828. \
  3829. - (
  3830. \f2\b \cf8 void
  3831. \f0\b0 \cf4 )\cf11 setAudioIconFrame\cf4 \{\
  3832. \
  3833. CGSize size = [
  3834. \f2\b \cf8 self
  3835. \f0\b0 \cf4 .title boundingRectWithSize:CGSizeMake(MAXFLOAT, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:\cf7 @\{\cf4 NSFontAttributeName:[UIFont systemFontOfSize:\cf7 18.0\cf4 ]\cf7 \}\cf4 context:
  3836. \f2\b \cf8 nil
  3837. \f0\b0 \cf4 ].size;\
  3838. CGFloat x = JX_SCREEN_WIDTH/\cf7 2\cf4 + size.width/\cf7 2\cf4 + \cf7 2\cf4 ;\
  3839. _audioIcon.frame = CGRectMake(x, _audioIcon.frame.origin.y, _audioIcon.frame.size.width, _audioIcon.frame.size.height);\
  3840. \
  3841. \f2\b \cf8 BOOL
  3842. \f0\b0 \cf4 flag = [g_default boolForKey:kChatVCMessageAudioIsNotPlayback];\
  3843. _audioIcon.hidden = !flag;\
  3844. \}\
  3845. \
  3846. - (
  3847. \f2\b \cf8 void
  3848. \f0\b0 \cf4 )\cf11 setupMoreView\cf4 :(NSArray *)array \{\
  3849. \f2\b \cf8 if
  3850. \f0\b0 \cf4 (array !=
  3851. \f2\b \cf8 nil
  3852. \f0\b0 \cf4 ) \{\
  3853. [_recordBtnLeft setBackgroundImage:[UIImage imageNamed:\cf6 @"chat_back_reply"\cf4 ] forState:UIControlStateNormal];\
  3854. [_recordBtnLeft removeTarget:
  3855. \f2\b \cf8 self
  3856. \f0\b0 \cf4 action:
  3857. \f2\b \cf8 @selector
  3858. \f0\b0 \cf4 (recordSwitch:) forControlEvents:UIControlEventTouchUpInside];\
  3859. [_recordBtnLeft addTarget:
  3860. \f2\b \cf8 self
  3861. \f0\b0 \cf4 action:
  3862. \f2\b \cf8 @selector
  3863. \f0\b0 \cf4 (onBackToDefault) forControlEvents:UIControlEventTouchUpInside];\
  3864. \
  3865. _helperArr = array;\
  3866. \cf2 //
  3867. \f1 \'c8\'ba\'d6\'fa\'ca\'d6\'ca\'c2\'bc\'fe
  3868. \f0 \cf4 \
  3869. _moreView.onGroupHelperList =
  3870. \f2\b \cf8 @selector
  3871. \f0\b0 \cf4 (onGroupHelperList);\
  3872. _moreView.onDidView =
  3873. \f2\b \cf8 @selector
  3874. \f0\b0 \cf4 (onDidView:);\
  3875. _moreView.helpers = array;\
  3876. _moreView.scrollView.hidden =
  3877. \f2\b \cf8 YES
  3878. \f0\b0 \cf4 ;\
  3879. _moreView.helperScrollV.hidden =
  3880. \f2\b \cf8 NO
  3881. \f0\b0 \cf4 ;\
  3882. \}
  3883. \f2\b \cf8 else
  3884. \f0\b0 \cf4 \{\
  3885. \
  3886. [_recordBtnLeft setBackgroundImage:[UIImage imageNamed:\cf6 @"im_input_ptt_normal"\cf4 ] forState:UIControlStateNormal];\
  3887. [_recordBtnLeft setBackgroundImage:[UIImage imageNamed:\cf6 @"im_input_keyboard_normal"\cf4 ] forState:UIControlStateSelected];\
  3888. [_recordBtnLeft removeTarget:
  3889. \f2\b \cf8 self
  3890. \f0\b0 \cf4 action:
  3891. \f2\b \cf8 @selector
  3892. \f0\b0 \cf4 (onBackToDefault) forControlEvents:UIControlEventTouchUpInside];\
  3893. [_recordBtnLeft addTarget:
  3894. \f2\b \cf8 self
  3895. \f0\b0 \cf4 action:
  3896. \f2\b \cf8 @selector
  3897. \f0\b0 \cf4 (recordSwitch:) forControlEvents:UIControlEventTouchUpInside];\
  3898. \
  3899. _moreView.scrollView.hidden =
  3900. \f2\b \cf8 NO
  3901. \f0\b0 \cf4 ;\
  3902. _moreView.helperScrollV.hidden =
  3903. \f2\b \cf8 YES
  3904. \f0\b0 \cf4 ;\
  3905. [_moreView resetPageControl];\
  3906. \}\
  3907. \}\
  3908. \
  3909. - (
  3910. \f2\b \cf8 void
  3911. \f0\b0 \cf4 )\cf11 onBackToDefault\cf4 \{\
  3912. \
  3913. \
  3914. [
  3915. \f2\b \cf8 self
  3916. \f0\b0 \cf4 setupMoreView:
  3917. \f2\b \cf8 nil
  3918. \f0\b0 \cf4 ];\
  3919. \
  3920. [inputBar mas_makeConstraints:^(MASConstraintMaker *make) \{\
  3921. make.bottom.mas_equalTo(-(JX_SCREEN_HEIGHT>=\cf7 812\cf4 ?\cf7 40\cf4 :\cf7 10\cf4 ));\
  3922. make.left.right.mas_equalTo(\cf7 0\cf4 );\
  3923. make.height.mas_equalTo(tableBarHHH);\
  3924. \
  3925. \}];\
  3926. \}\
  3927. \
  3928. - (
  3929. \f2\b \cf8 void
  3930. \f0\b0 \cf4 )\cf11 onDidView\cf4 :(JXSelectImageView *)moreView \{\
  3931. JXGroupHeplerModel *model = _helperArr[moreView.viewIndex];\
  3932. \
  3933. \f2\b \cf8 if
  3934. \f0\b0 \cf4 (moreView.isDidSet) \{\
  3935. JXAutoReplyAideVC *vc = [[JXAutoReplyAideVC alloc] init];\
  3936. vc.model = model.helperModel;\
  3937. vc.roomId =
  3938. \f2\b \cf8 self
  3939. \f0\b0 \cf4 .roomId;\
  3940. vc.roomJid =
  3941. \f2\b \cf8 self
  3942. \f0\b0 \cf4 .roomJid;\
  3943. \
  3944. [g_navigation pushViewController:vc animated:
  3945. \f2\b \cf8 YES
  3946. \f0\b0 \cf4 ];\
  3947. \
  3948. \}
  3949. \f2\b \cf8 else
  3950. \f0\b0 \cf4 \{\
  3951. \
  3952. \f2\b \cf8 if
  3953. \f0\b0 \cf4 (model.helperModel.urlScheme && model.helperModel.urlScheme.length > \cf7 0\cf4 ) \{\
  3954. NSString *url = [NSString stringWithFormat:\cf6 @"%@://roomId=%@&userId=%@"\cf4 ,model.helperModel.urlScheme,
  3955. \f2\b \cf8 self
  3956. \f0\b0 \cf4 .roomId,g_myself.userId];\
  3957. \
  3958. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url] options:
  3959. \f2\b \cf8 nil
  3960. \f0\b0 \cf4 completionHandler:^(
  3961. \f2\b \cf8 BOOL
  3962. \f0\b0 \cf4 success) \{\
  3963. \
  3964. \f2\b \cf8 if
  3965. \f0\b0 \cf4 (!success) \{\
  3966. [
  3967. \f2\b \cf8 self
  3968. \f0\b0 \cf4 didViewActionWithModel:model];\
  3969. \}\
  3970. \}];\
  3971. \
  3972. \}
  3973. \f2\b \cf8 else
  3974. \f0\b0 \cf4 \{\
  3975. [
  3976. \f2\b \cf8 self
  3977. \f0\b0 \cf4 didViewActionWithModel:model];\
  3978. \}\
  3979. \
  3980. \
  3981. \}\
  3982. \
  3983. \}\
  3984. \
  3985. - (
  3986. \f2\b \cf8 void
  3987. \f0\b0 \cf4 )\cf11 didViewActionWithModel\cf4 :(JXGroupHeplerModel *)model \{\
  3988. \f2\b \cf8 if
  3989. \f0\b0 \cf4 (model.helperModel.type == \cf7 1\cf4 ) \{ \cf2 //
  3990. \f1 \'d7\'d4\'b6\'af\'bb\'d8\'b8\'b4
  3991. \f0 \cf4 \
  3992. \}\
  3993. \f2\b \cf8 else
  3994. \f0\b0 \cf4
  3995. \f2\b \cf8 if
  3996. \f0\b0 \cf4 (model.helperModel.type == \cf7 2\cf4 ) \{\cf2 //
  3997. \f1 \'cd\'f8\'d2\'b3
  3998. \f0 \cf4 \
  3999. \
  4000. NSDictionary *dict = \cf7 @\{\cf4 \
  4001. \cf6 @"roomId"\cf4 :
  4002. \f2\b \cf8 self
  4003. \f0\b0 \cf4 .roomId,\
  4004. \cf6 @"roomJid"\cf4 :
  4005. \f2\b \cf8 self
  4006. \f0\b0 \cf4 .roomJid,\
  4007. \cf6 @"userId"\cf4 : g_myself.userId\
  4008. \cf7 \}\cf4 ;\
  4009. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:
  4010. \f2\b \cf8 nil
  4011. \f0\b0 \cf4 ];\
  4012. NSString *json = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];\
  4013. \
  4014. webpageVC *webVC = [webpageVC alloc];\
  4015. webVC.isGotoBack=
  4016. \f2\b \cf8 YES
  4017. \f0\b0 \cf4 ;\
  4018. webVC.isSend =
  4019. \f2\b \cf8 YES
  4020. \f0\b0 \cf4 ;\
  4021. webVC.shareParam = json;\
  4022. webVC.title = model.helperModel.name;\
  4023. NSString * url = [NSString stringWithFormat:\cf6 @"%@"\cf4 ,model.helperModel.link];\
  4024. url = [url stringByReplacingOccurrencesOfString:\cf6 @" "\cf4 withString:\cf6 @""\cf4 ];\
  4025. url = [url stringByReplacingOccurrencesOfString:\cf6 @"\\t"\cf4 withString:\cf6 @""\cf4 ];\
  4026. webVC.url = url;\
  4027. webVC = [webVC init];\
  4028. [g_navigation.navigationView addSubview:webVC.view];\
  4029. \
  4030. \}\
  4031. \f2\b \cf8 else
  4032. \f0\b0 \cf4
  4033. \f2\b \cf8 if
  4034. \f0\b0 \cf4 (model.helperModel.type == \cf7 3\cf4 ) \{\cf2 //
  4035. \f1 \'b5\'e3\'bb\'f7\'b7\'a2\'cb\'cd
  4036. \f0 \cf4 \
  4037. NSMutableDictionary *dict = \cf7 @\{\cf6 @"url"\cf4 :model.helperModel.url,\
  4038. \cf6 @"appName"\cf4 :model.helperModel.appName,\
  4039. \cf6 @"subTitle"\cf4 :model.helperModel.subTitle,\
  4040. \cf7 \}\cf4 .mutableCopy;\
  4041. \f2\b \cf8 if
  4042. \f0\b0 \cf4 (model.helperModel.imageUrl.length > \cf7 0\cf4 ) \{\
  4043. [dict addEntriesFromDictionary:\cf7 @\{\cf6 @"imageUrl"\cf4 :model.helperModel.imageUrl\cf7 \}\cf4 ];\
  4044. \}\
  4045. \f2\b \cf8 if
  4046. \f0\b0 \cf4 (model.helperModel.appIcon.length > \cf7 0\cf4 ) \{\
  4047. [dict addEntriesFromDictionary:\cf7 @\{\cf6 @"appIcon"\cf4 :model.helperModel.appIcon\cf7 \}\cf4 ];\
  4048. \}\
  4049. \f2\b \cf8 if
  4050. \f0\b0 \cf4 (model.helperModel.downloadUrl.length > \cf7 0\cf4 ) \{\
  4051. [dict addEntriesFromDictionary:\cf7 @\{\cf6 @"downloadUrl"\cf4 :model.helperModel.downloadUrl\cf7 \}\cf4 ];\
  4052. \}\
  4053. \f2\b \cf8 if
  4054. \f0\b0 \cf4 (model.helperModel.title.length > \cf7 0\cf4 ) \{\
  4055. [dict addEntriesFromDictionary:\cf7 @\{\cf6 @"title"\cf4 :model.helperModel.title\cf7 \}\cf4 ];\
  4056. \}\
  4057. \
  4058. SBJsonWriter *writer = [[SBJsonWriter alloc] init];\
  4059. NSString *content = [writer stringWithObject:dict];\
  4060. \
  4061. \cf2 // JXMessageObject *msg = [[JXMessageObject alloc] init];\cf4 \
  4062. \cf2 // msg.timeSend = [NSDate date];\cf4 \
  4063. \cf2 // msg.fromUserId = g_myself.userId;\cf4 \
  4064. \cf2 // msg.toUserId = model.roomJid;\cf4 \
  4065. \cf2 // msg.objectId = content;\cf4 \
  4066. \cf2 // msg.type = [NSNumber numberWithInt:kWCMessageTypeShare];\cf4 \
  4067. \cf2 // [msg insert:model.roomJid];\cf4 \
  4068. \cf2 // [self showOneMsg:msg];\cf4 \
  4069. \cf2 // [g_xmpp sendMessage:msg roomName:model.roomId];\cf4 \
  4070. \
  4071. \
  4072. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  4073. msg.timeSend = [NSDate date];\
  4074. msg.fromUserId = MY_USER_ID;\
  4075. msg.toUserId =
  4076. \f2\b \cf8 self
  4077. \f0\b0 \cf4 .roomJid;\
  4078. msg.isGroup =
  4079. \f2\b \cf8 YES
  4080. \f0\b0 \cf4 ;\
  4081. msg.fromUserName = _userNickName;\
  4082. \
  4083. msg.objectId = content;\
  4084. msg.type = [NSNumber numberWithInt:kWCMessageTypeShare];\
  4085. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  4086. msg.isRead = [NSNumber numberWithBool:
  4087. \f2\b \cf8 NO
  4088. \f0\b0 \cf4 ];\
  4089. msg.isReadDel = [NSNumber numberWithInt:
  4090. \f2\b \cf8 NO
  4091. \f0\b0 \cf4 ];\
  4092. \
  4093. \f2\b \cf8 if
  4094. \f0\b0 \cf4 (_tempChat==\cf7 11\cf4 ) \{\
  4095. msg.tempChat=\cf7 11\cf4 ;\
  4096. \}
  4097. \f2\b \cf8 else
  4098. \f0\b0 \cf4 \{\
  4099. msg.tempChat=\cf7 1\cf4 ;\
  4100. \}\
  4101. \cf2 //
  4102. \f1 \'b7\'a2\'cd\'f9\'c4\'c4\'c0\'ef
  4103. \f0 \cf4 \
  4104. [msg insert:
  4105. \f2\b \cf8 self
  4106. \f0\b0 \cf4 .roomJid];\
  4107. [g_xmpp sendMessage:msg roomName:
  4108. \f2\b \cf8 self
  4109. \f0\b0 \cf4 .roomJid];\cf2 //
  4110. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  4111. \f0 \cf4 \
  4112. [
  4113. \f2\b \cf8 self
  4114. \f0\b0 \cf4 showOneMsg:msg];\
  4115. \}\
  4116. \}\
  4117. \
  4118. \
  4119. -(
  4120. \f2\b \cf8 void
  4121. \f0\b0 \cf4 )\cf11 viewWillAppear\cf4 :(
  4122. \f2\b \cf8 BOOL
  4123. \f0\b0 \cf4 )animated\{\
  4124. [
  4125. \f2\b \cf8 super
  4126. \f0\b0 \cf4 viewWillAppear:animated];\
  4127. \cf2 //
  4128. \f1 \'bd\'f8\'c8\'eb\'bd\'e7\'c3\'e6\'bc\'b4\'bf\'aa\'c6\'f4\'b6\'a8\'ca\'b1\'c6\'f7
  4129. \f0 \cf4 \
  4130. _strURLGoback=\cf6 @"1000"\cf4 ;\
  4131. \cf2 //[self.tableView reloadData];\cf4 \
  4132. [
  4133. \f2\b \cf8 self
  4134. \f0\b0 \cf4 .noticeTimer setFireDate:[NSDate distantPast]];\
  4135. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(\cf7 2\cf4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\
  4136. \
  4137. \cf2 // [self refresh:nil];\cf4 \
  4138. \});\
  4139. \
  4140. \f2\b \cf8 BOOL
  4141. \f0\b0 \cf4 isOpen = [g_default boolForKey:kgoucaiComePush];\
  4142. \
  4143. \f2\b \cf8 BOOL
  4144. \f0\b0 \cf4 isOpen2 = [g_default boolForKey:kGuanXinComePush];\
  4145. \
  4146. \f2\b \cf8 if
  4147. \f0\b0 \cf4 (isOpen==\cf7 1\cf4 && isOpen2==\cf7 1\cf4 ) \{\
  4148. _noticeView2.hidden =
  4149. \f2\b \cf8 YES
  4150. \f0\b0 \cf4 ;\
  4151. _noticeViewScrollView.hidden =
  4152. \f2\b \cf8 YES
  4153. \f0\b0 \cf4 ;\
  4154. \
  4155. \}
  4156. \f2\b \cf8 else
  4157. \f0\b0 \cf4
  4158. \f2\b \cf8 if
  4159. \f0\b0 \cf4 (isOpen==\cf7 1\cf4 && isOpen2==\cf7 0\cf4 ) \{\
  4160. \
  4161. \cf2 // _table.contentInset = UIEdgeInsetsMake(38, 0, 0, 0);\cf4 \
  4162. _noticeViewScrollView.hidden =
  4163. \f2\b \cf8 NO
  4164. \f0\b0 \cf4 ;\
  4165. _noticeViewScrollView.frame=CGRectMake(\cf7 0\cf4 , \cf7 44\cf4 , JX_SCREEN_WIDTH, \cf7 37\cf4 );\
  4166. _noticeView2.hidden =
  4167. \f2\b \cf8 YES
  4168. \f0\b0 \cf4 ;\
  4169. \}
  4170. \f2\b \cf8 else
  4171. \f0\b0 \cf4
  4172. \f2\b \cf8 if
  4173. \f0\b0 \cf4 (isOpen==\cf7 0\cf4 && isOpen2==\cf7 1\cf4 )\{\
  4174. \
  4175. \f2\b \cf8 if
  4176. \f0\b0 \cf4 ( _biaotishifoBC==\cf7 1111\cf4 ) \{\
  4177. \
  4178. \f2\b \cf8 if
  4179. \f0\b0 \cf4 ([_lotterDict[\cf6 @"lottery"\cf4 ] intValue]==\cf7 1\cf4 ) \{\
  4180. \
  4181. \f2\b \cf8 self
  4182. \f0\b0 \cf4 .showTopView.xiaLineView.hidden=
  4183. \f2\b \cf8 NO
  4184. \f0\b0 \cf4 ;\
  4185. _noticeView2.hidden =
  4186. \f2\b \cf8 NO
  4187. \f0\b0 \cf4 ;\
  4188. _noticeViewScrollView.frame=CGRectMake(\cf7 0\cf4 , \cf7 44\cf4 +\cf7 37\cf4 , JX_SCREEN_WIDTH, \cf7 37\cf4 );\
  4189. \}
  4190. \f2\b \cf8 else
  4191. \f0\b0 \cf4 \{\
  4192. \
  4193. _noticeViewScrollView.frame=CGRectMake(\cf7 0\cf4 , \cf7 44\cf4 , JX_SCREEN_WIDTH, \cf7 37\cf4 );\
  4194. \f2\b \cf8 self
  4195. \f0\b0 \cf4 .showTopView.xiaLineView.hidden=
  4196. \f2\b \cf8 YES
  4197. \f0\b0 \cf4 ;\
  4198. _noticeView2.hidden =
  4199. \f2\b \cf8 YES
  4200. \f0\b0 \cf4 ;\
  4201. \}\
  4202. \
  4203. \f2\b \cf8 self
  4204. \f0\b0 \cf4 .showTopView.xiaLineView.hidden=
  4205. \f2\b \cf8 YES
  4206. \f0\b0 \cf4 ;\
  4207. \}
  4208. \f2\b \cf8 else
  4209. \f0\b0 \cf4 \{\
  4210. \
  4211. _noticeView2.hidden =
  4212. \f2\b \cf8 YES
  4213. \f0\b0 \cf4 ;\
  4214. \}\
  4215. \
  4216. _noticeViewScrollView.hidden =
  4217. \f2\b \cf8 YES
  4218. \f0\b0 \cf4 ;\
  4219. \}
  4220. \f2\b \cf8 else
  4221. \f0\b0 \cf4
  4222. \f2\b \cf8 if
  4223. \f0\b0 \cf4 (isOpen==\cf7 0\cf4 && isOpen2==\cf7 0\cf4 ) \{\
  4224. _noticeViewScrollView.hidden =
  4225. \f2\b \cf8 NO
  4226. \f0\b0 \cf4 ;\
  4227. \
  4228. \f2\b \cf8 self
  4229. \f0\b0 \cf4 .showTopView.xiaLineView.hidden=
  4230. \f2\b \cf8 NO
  4231. \f0\b0 \cf4 ;\
  4232. \
  4233. \f2\b \cf8 if
  4234. \f0\b0 \cf4 ([_lotterDict[\cf6 @"lottery"\cf4 ] intValue]==\cf7 1\cf4 ) \{\
  4235. \
  4236. _noticeView2.hidden =
  4237. \f2\b \cf8 NO
  4238. \f0\b0 \cf4 ;\
  4239. _noticeViewScrollView.frame=CGRectMake(\cf7 0\cf4 , \cf7 44\cf4 +\cf7 37\cf4 , JX_SCREEN_WIDTH, \cf7 37\cf4 );\
  4240. \}
  4241. \f2\b \cf8 else
  4242. \f0\b0 \cf4 \{\
  4243. \
  4244. _noticeViewScrollView.frame=CGRectMake(\cf7 0\cf4 , \cf7 44\cf4 , JX_SCREEN_WIDTH, \cf7 37\cf4 );\
  4245. _noticeView2.hidden =
  4246. \f2\b \cf8 YES
  4247. \f0\b0 \cf4 ;\
  4248. \}\
  4249. \
  4250. \
  4251. \}\
  4252. \
  4253. \
  4254. \cf2 // [g_notify removeObserver:self];\cf4 \
  4255. \
  4256. \cf2 //[g_notify addObserver:self selector:@selector(roomGroupActivityRefresh:) name:kRoomGroupActivityRefresh object:nil];\cf4 \
  4257. \}\
  4258. \
  4259. \
  4260. - (
  4261. \f2\b \cf8 void
  4262. \f0\b0 \cf4 )\cf11 viewDidDisappear\cf4 :(
  4263. \f2\b \cf8 BOOL
  4264. \f0\b0 \cf4 )animated \{\
  4265. [
  4266. \f2\b \cf8 super
  4267. \f0\b0 \cf4 viewDidDisappear:animated];\
  4268. [
  4269. \f2\b \cf8 self
  4270. \f0\b0 \cf4 .showLongViewc removeFromSuperview];\
  4271. _strURLGoback=\cf6 @""\cf4 ;\
  4272. _keyboardHeight=\cf7 0\cf4 ;\
  4273. \
  4274. \f2\b \cf8 self
  4275. \f0\b0 \cf4 .lastMsg.fromUserId=\cf6 @""\cf4 ;\
  4276. \f2\b \cf8 self
  4277. \f0\b0 \cf4 .showLongViewc.hidden=
  4278. \f2\b \cf8 YES
  4279. \f0\b0 \cf4 ;\
  4280. \cf2 //
  4281. \f1 \'cd\'cb\'b3\'f6\'bd\'e7\'c3\'e6\'bc\'b4\'b9\'d8\'b1\'d5\'b6\'a8\'ca\'b1\'c6\'f7
  4282. \f0 \cf4 \
  4283. [
  4284. \f2\b \cf8 self
  4285. \f0\b0 \cf4 .noticeTimer setFireDate:[NSDate distantFuture]];\
  4286. \}\
  4287. \
  4288. - (
  4289. \f2\b \cf8 void
  4290. \f0\b0 \cf4 )\cf11 viewWillDisappear\cf4 :(
  4291. \f2\b \cf8 BOOL
  4292. \f0\b0 \cf4 )animated \{\
  4293. [
  4294. \f2\b \cf8 super
  4295. \f0\b0 \cf4 viewWillDisappear:animated];\
  4296. [[UIApplication sharedApplication] setStatusBarHidden:
  4297. \f2\b \cf8 NO
  4298. \f0\b0 \cf4 ];\
  4299. _strURLGoback=\cf6 @""\cf4 ;\
  4300. \
  4301. \cf2 // [_floating hide];\cf4 \
  4302. \}\
  4303. \
  4304. \
  4305. \cf2 //json
  4306. \f1 \'b8\'f1\'ca\'bd\'d7\'d6\'b7\'fb\'b4\'ae\'d7\'aa\'d7\'d6\'b5\'e4\'a3\'ba
  4307. \f0 \cf4 \
  4308. \
  4309. - (NSArray *)\cf11 dictionaryWithJsonString\cf4 :(NSString *)jsonString \{\
  4310. \
  4311. \f2\b \cf8 if
  4312. \f0\b0 \cf4 (jsonString ==
  4313. \f2\b \cf8 nil
  4314. \f0\b0 \cf4 ) \{\
  4315. \
  4316. \f2\b \cf8 return
  4317. \f0\b0 \cf4
  4318. \f2\b \cf8 nil
  4319. \f0\b0 \cf4 ;\
  4320. \
  4321. \}\
  4322. \
  4323. NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];\
  4324. \
  4325. NSError *err;\
  4326. \
  4327. NSArray *dic = [NSJSONSerialization JSONObjectWithData:jsonData\
  4328. \
  4329. options:NSJSONReadingMutableContainers\
  4330. \
  4331. error:&err];\
  4332. \
  4333. \f2\b \cf8 if
  4334. \f0\b0 \cf4 (err) \{\
  4335. \
  4336. NSLog(\cf6 @"json
  4337. \f1 \'bd\'e2\'ce\'f6\'ca\'a7\'b0\'dc\'a3\'ba
  4338. \f0 %@"\cf4 ,err);\
  4339. \
  4340. \f2\b \cf8 return
  4341. \f0\b0 \cf4
  4342. \f2\b \cf8 nil
  4343. \f0\b0 \cf4 ;\
  4344. \
  4345. \}\
  4346. \
  4347. \f2\b \cf8 return
  4348. \f0\b0 \cf4 dic;\
  4349. \
  4350. \}\
  4351. \cf12 /**
  4352. \f1 \cf2 \'b5\'e3\'bb\'f7
  4353. \f3
  4354. \f1 \'d1\'a1\'d4\'f1
  4355. \f3 */
  4356. \f0 \cf4 \
  4357. - (
  4358. \f2\b \cf8 void
  4359. \f0\b0 \cf4 )\cf11 notice2ndClick\cf4 \{\
  4360. \
  4361. JLSelectView *customView = [[JLSelectView alloc] init];\
  4362. customView.backgroundColor=[UIColor cyanColor];\
  4363. \f2\b \cf8 __weak
  4364. \f0\b0 \cf4
  4365. \f2\b \cf8 __typeof
  4366. \f0\b0 \cf4 (
  4367. \f2\b \cf8 self
  4368. \f0\b0 \cf4 )weakSelf =
  4369. \f2\b \cf8 self
  4370. \f0\b0 \cf4 ;\
  4371. customView.returnModelBlock = ^(JLSelectModel *model, NSIndexPath *indexPath) \{\
  4372. NSString *title = [NSString stringWithFormat:\cf6 @"%@:"\cf4 , model.data[indexPath.row].subName];\
  4373. [weakSelf.selectButton setTitle:title forState:(UIControlStateNormal)];\
  4374. [weakSelf.container dismiss];\
  4375. \cf2 //
  4376. \f1 \'b1\'a3\'b4\'e6
  4377. \f0 key\cf4 \
  4378. \cf2 //[g_default set];\cf4 \
  4379. JXLabelObject *obj = [JXLabelObject sharedInstance];\
  4380. obj.roomJid = weakSelf.roomJid;\
  4381. obj.selectItem = [NSString stringWithFormat:\cf6 @"%@-%@"\cf4 , model.name, model.data[indexPath.row].subName];\
  4382. [obj updateRecordGroupAnnouncementSelectItem];\
  4383. NSLog(\cf6 @"
  4384. \f1 \'d1\'a1\'d4\'f1\'c1\'cb
  4385. \f0
  4386. \f1 \'bf\'aa\'bd\'b1\'c0\'e0\'d0\'cd
  4387. \f0 %@ -%@-%@"\cf4 ,model.data[indexPath.row].subType , model.name,model.data[indexPath.row].content);\
  4388. \
  4389. JLSelectItemModel *selectItemModel = model.data[indexPath.row];\
  4390. \
  4391. NSString *titleName = [NSString stringWithFormat:\cf6 @" %@"\cf4 ,selectItemModel.subName];\
  4392. \
  4393. [_showTopView.caizongBtn setTitle:titleName forState:UIControlStateNormal];\
  4394. _showTopView.selectItemModel=selectItemModel;\
  4395. \
  4396. \
  4397. \};\
  4398. \
  4399. JXLabelObject *obj = [JXLabelObject sharedInstance];\
  4400. obj.roomJid =
  4401. \f2\b \cf8 self
  4402. \f0\b0 \cf4 .roomJid;\
  4403. NSString *groupAnnouncement = [obj fetchAllGroupAnnouncementFromLocal];\
  4404. NSArray *response = [
  4405. \f2\b \cf8 self
  4406. \f0\b0 \cf4 dictionaryWithJsonString: groupAnnouncement];\
  4407. \
  4408. customView.dataArray = response.copy;\
  4409. \cf2 /* customView.dataArray = @[\cf4 \
  4410. \cf2 @\{\cf4 \
  4411. \cf2 @"name":@"
  4412. \f1 \'b9\'d9\'b7\'bd
  4413. \f0 ",\cf4 \
  4414. \cf2 @"data":@[\cf4 \
  4415. \cf2 @\{@"subName":@"
  4416. \f1 \'d2\'bb\'b7\'d6\'c8\'fc\'b3\'b5
  4417. \f0 111111111111111111",@"content":@"
  4418. \f1 \'d2\'bb\'b7\'d6\'c8\'fc\'b3\'b5
  4419. \f5 1\uc0\u65039 \u8419 2\u65039 \u8419 3\u65039 \u8419
  4420. \f0 "\},\cf4 \
  4421. \cf2 @\{@"subName":@"
  4422. \f1 \'b6\'fe\'b7\'d6\'c8\'fc\'b3\'b5
  4423. \f0 ",@"content":@"
  4424. \f1 \'b6\'fe\'b7\'d6\'c8\'fc\'b3\'b5
  4425. \f5 1\uc0\u65039 \u8419 2\u65039 \u8419 3\u65039 \u8419
  4426. \f0 "\},\cf4 \
  4427. \cf2 @\{@"subName":@"
  4428. \f1 \'c8\'fd\'b7\'d6\'c8\'fc\'b3\'b5
  4429. \f0 ",@"content":@"
  4430. \f1 \'c8\'fd\'b7\'d6\'c8\'fc\'b3\'b5
  4431. \f5 1\uc0\u65039 \u8419 2\u65039 \u8419 3\u65039 \u8419
  4432. \f0 "\},\cf4 \
  4433. \cf2 @\{@"subName":@"
  4434. \f1 \'cb\'c4\'b7\'d6\'c8\'fc\'b3\'b5
  4435. \f0 ",@"content":@"
  4436. \f1 \'cb\'c4\'b7\'d6\'c8\'fc\'b3\'b5
  4437. \f5 1\uc0\u65039 \u8419 2\u65039 \u8419 3\u65039 \u8419
  4438. \f0 "\},\cf4 \
  4439. \cf2 @\{@"subName":@"
  4440. \f1 \'d2\'bb\'b7\'d6\'c8\'fc\'b3\'b5
  4441. \f0 ",@"content":@"
  4442. \f1 \'d2\'bb\'b7\'d6\'c8\'fc\'b3\'b5
  4443. \f5 1\uc0\u65039 \u8419 2\u65039 \u8419 3\u65039 \u8419
  4444. \f0 "\},\cf4 \
  4445. \cf2 @\{@"subName":@"
  4446. \f1 \'b6\'fe\'b7\'d6\'c8\'fc\'b3\'b5
  4447. \f0 ",@"content":@"
  4448. \f1 \'b6\'fe\'b7\'d6\'c8\'fc\'b3\'b5
  4449. \f5 1\uc0\u65039 \u8419 2\u65039 \u8419 3\u65039 \u8419
  4450. \f0 "\},\cf4 \
  4451. \cf2 @\{@"subName":@"
  4452. \f1 \'c8\'fd\'b7\'d6\'c8\'fc\'b3\'b5
  4453. \f0 ",@"content":@"
  4454. \f1 \'c8\'fd\'b7\'d6\'c8\'fc\'b3\'b5
  4455. \f5 1\uc0\u65039 \u8419 2\u65039 \u8419 3\u65039 \u8419
  4456. \f0 "\},\cf4 \
  4457. \cf2 @\{@"subName":@"
  4458. \f1 \'cb\'c4\'b7\'d6\'c8\'fc\'b3\'b5
  4459. \f0 ",@"content":@"
  4460. \f1 \'cb\'c4\'b7\'d6\'c8\'fc\'b3\'b5
  4461. \f5 1\uc0\u65039 \u8419 2\u65039 \u8419 3\u65039 \u8419
  4462. \f0 "\},\cf4 \
  4463. \cf2 ]\cf4 \
  4464. \cf2 \},\cf4 \
  4465. \cf2 @\{\cf4 \
  4466. \cf2 @"name":@"
  4467. \f1 \'b4\'ab\'cd\'b3
  4468. \f0 ",\cf4 \
  4469. \cf2 @"data":@[\cf4 \
  4470. \cf2 @\{@"subName":@"
  4471. \f1 \'d2\'bb\'b7\'d6\'c8\'fc\'b3\'b5
  4472. \f0 ",@"content":@"
  4473. \f1 \'d2\'bb\'b7\'d6\'c8\'fc\'b3\'b5
  4474. \f5 1\uc0\u65039 \u8419 2\u65039 \u8419 3\u65039 \u8419
  4475. \f0 "\},\cf4 \
  4476. \cf2 @\{@"subName":@"
  4477. \f1 \'b6\'fe\'b7\'d6\'c8\'fc\'b3\'b5
  4478. \f0 ",@"content":@"
  4479. \f1 \'b6\'fe\'b7\'d6\'c8\'fc\'b3\'b5
  4480. \f5 1\uc0\u65039 \u8419 2\u65039 \u8419 3\u65039 \u8419
  4481. \f0 "\},\cf4 \
  4482. \cf2 @\{@"subName":@"
  4483. \f1 \'c8\'fd\'b7\'d6\'c8\'fc\'b3\'b5
  4484. \f0 ",@"content":@"
  4485. \f1 \'c8\'fd\'b7\'d6\'c8\'fc\'b3\'b5
  4486. \f5 1\uc0\u65039 \u8419 2\u65039 \u8419 3\u65039 \u8419
  4487. \f0 "\}\cf4 \
  4488. \cf2 ]\cf4 \
  4489. \cf2 \}];*/\cf4 \
  4490. \
  4491. \
  4492. _container = [[DSHPopupContainer alloc] initWithCustomPopupView:customView];\
  4493. _container.maskColor = [[UIColor blackColor] colorWithAlphaComponent:\cf7 .5\cf4 ];\
  4494. [_container show];\
  4495. \}\
  4496. -(CGSize)\cf11 titleBtnWight\cf4 :(NSString *)titBtnW
  4497. \f2\b \cf8 and
  4498. \f0\b0 \cf4 :(UILabel *)\cf11 titBtn\cf4 \{\
  4499. CGSize titleSize = [titBtnW boundingRectWithSize:CGSizeMake(MAXFLOAT, \cf7 24\cf4 ) options:NSStringDrawingUsesLineFragmentOrigin attributes:\cf7 @\{\cf4 NSFontAttributeName:titBtn.font\cf7 \}\cf4 context:
  4500. \f2\b \cf8 nil
  4501. \f0\b0 \cf4 ].size;\
  4502. \
  4503. \f2\b \cf8 return
  4504. \f0\b0 \cf4 titleSize;\
  4505. \}\
  4506. - (
  4507. \f2\b \cf8 void
  4508. \f0\b0 \cf4 )\cf11 act_UserRoomAttention\cf4 :(NSNotification *)note\{\
  4509. \
  4510. \
  4511. \}\
  4512. \cf12 /**\cf4 \
  4513. \cf12 *\cf4
  4514. \f1 \cf2 \'b4\'f8\'c7\'f2\'b5\'c4
  4515. \f3 topView
  4516. \f0 \cf4 \
  4517. \cf12 */\cf4 \
  4518. - (
  4519. \f2\b \cf8 void
  4520. \f0\b0 \cf4 )\cf11 tebieBtnClick\cf4 \{\
  4521. \f2\b \cf8 __weak
  4522. \f0\b0 \cf4
  4523. \f2\b \cf8 __typeof
  4524. \f0\b0 \cf4 (
  4525. \f2\b \cf8 self
  4526. \f0\b0 \cf4 )weakSelf =
  4527. \f2\b \cf8 self
  4528. \f0\b0 \cf4 ;\
  4529. JxChatGetNoticePersonVc *pervc=[[JxChatGetNoticePersonVc alloc]init];\
  4530. pervc.block = ^(memberData *
  4531. \f2\b \cf8 _Nonnull
  4532. \f0\b0 \cf4 responseObject) \{\
  4533. \
  4534. _backUserId=[NSString stringWithFormat:\cf6 @"%ld"\cf4 ,responseObject.userId];\
  4535. [weakSelf.showTopView.tebieGuanXin setTitle:responseObject.userNickName forState:UIControlStateNormal];\
  4536. \
  4537. \
  4538. \};\
  4539. pervc.dataArr=_dataArrGetGroundPersonArr;\
  4540. pervc.roomID=
  4541. \f2\b \cf8 self
  4542. \f0\b0 \cf4 .roomJid;\
  4543. \
  4544. \
  4545. [
  4546. \f2\b \cf8 self
  4547. \f0\b0 \cf4 .navigationController pushViewController:pervc animated:
  4548. \f2\b \cf8 YES
  4549. \f0\b0 \cf4 ];\
  4550. \
  4551. \}\
  4552. - (
  4553. \f2\b \cf8 void
  4554. \f0\b0 \cf4 )\cf11 tebieBtnClickXX\cf4 \{\
  4555. \
  4556. \f2\b \cf8 long
  4557. \f0\b0 \cf4 time = (
  4558. \f2\b \cf8 long
  4559. \f0\b0 \cf4 )[[NSDate date] timeIntervalSince1970];\
  4560. time = (time *\cf7 1000\cf4 + g_server.timeDifference);\
  4561. NSString *salt = [NSString stringWithFormat:\cf6 @"%ld"\cf4 , time];\
  4562. \
  4563. [g_server getUserRoomAttentionattentionLastInfo:salt userId:_backUserId jid:_roomJid andToView:
  4564. \f2\b \cf8 self
  4565. \f0\b0 \cf4 ];\
  4566. \
  4567. \}\
  4568. -(
  4569. \f2\b \cf8 void
  4570. \f0\b0 \cf4 )\cf11 showBack\cf4 :(memberData *)msguser\{\
  4571. \
  4572. \cf2 //
  4573. \f1 \'cd\'b7\'b2\'bf
  4574. \f0 \cf4 \
  4575. \cf2 // _noticeView2 = [[UIView alloc] initWithFrame:CGRectMake(0,110, JX_SCREEN_WIDTH, 74)];\cf4 \
  4576. \cf2 // _noticeView2.backgroundColor = [UIColor greenColor];\cf4 \
  4577. \cf2 // [self.view addSubview:_noticeView2];\cf4 \
  4578. \
  4579. \}\
  4580. \cf12 /**\cf4
  4581. \f1 \cf2 \'bb\'f1\'c8\'a1\'cb\'f9\'d2\'d4\'d4\'da\'c8\'ba\'c0\'ef\'c3\'e6
  4582. \f3
  4583. \f1 \'b9\'d8\'d0\'c4\'b5\'c4\'d3\'c3\'bb\'a7
  4584. \f3 */
  4585. \f0 \cf4 \
  4586. - (
  4587. \f2\b \cf8 void
  4588. \f0\b0 \cf4 )\cf11 createPerson\cf4 :(memberData *)url \cf11 success\cf4 :(
  4589. \f2\b \cf8 void
  4590. \f0\b0 \cf4 (^)(memberData *responseObject))success\{\
  4591. \
  4592. \}\
  4593. \
  4594. \
  4595. \
  4596. - (
  4597. \f2\b \cf8 void
  4598. \f0\b0 \cf4 )\cf11 setupNotice2nd\cf4 \{\
  4599. \
  4600. \
  4601. \cf2 //
  4602. \f1 \'cd\'b7\'b2\'bf
  4603. \f0 \cf4 \
  4604. _noticeView2 = [[UIView alloc] initWithFrame:CGRectMake(\cf7 0\cf4 ,\cf7 44\cf4 , JX_SCREEN_WIDTH, \cf7 37\cf4 )];\
  4605. _noticeView2.backgroundColor = [UIColor whiteColor];\
  4606. [
  4607. \f2\b \cf8 self
  4608. \f0\b0 \cf4 .view addSubview:_noticeView2];\
  4609. \
  4610. JXtopShowVIew *showTopView=[JXtopShowVIew xibJXtopShowVIew];\
  4611. showTopView.frame= _noticeView2.bounds;\
  4612. [_noticeView2 addSubview:showTopView];\
  4613. \f2\b \cf8 self
  4614. \f0\b0 \cf4 .showTopView=showTopView;\
  4615. \
  4616. showTopView.jxGuanXinBlockBtn = ^(UIButton *btn) \{\
  4617. memberData *modelXXX=_tempArrMM[btn.tag];\
  4618. \
  4619. \f2\b \cf8 long
  4620. \f0\b0 \cf4 time = (
  4621. \f2\b \cf8 long
  4622. \f0\b0 \cf4 )[[NSDate date] timeIntervalSince1970];\
  4623. time = (time *\cf7 1000\cf4 + g_server.timeDifference);\
  4624. NSString *salt = [NSString stringWithFormat:\cf6 @"%ld"\cf4 , time];\
  4625. \
  4626. NSString *jid_room=[[NSUserDefaults standardUserDefaults] objectForKey:\cf6 @"jid_roomJid"\cf4 ];\
  4627. \
  4628. [g_server getUserRoomAttentionattentionLastInfo:salt userId:[NSString stringWithFormat:\cf6 @"%ld"\cf4 ,modelXXX.userId] jid:jid_room andToView:
  4629. \f2\b \cf8 self
  4630. \f0\b0 \cf4 ];\
  4631. \};\
  4632. \
  4633. \cf2 //[showTopView.tebieGuanXin addTarget:self action:@selector(tebieBtnClickXX) forControlEvents:UIControlEventTouchUpInside];\cf4 \
  4634. [showTopView.tebieBtn addTarget:
  4635. \f2\b \cf8 self
  4636. \f0\b0 \cf4 action:
  4637. \f2\b \cf8 @selector
  4638. \f0\b0 \cf4 (tebieBtnClick) forControlEvents:UIControlEventTouchUpInside];\
  4639. \
  4640. \
  4641. \
  4642. JXLabelObject *obj = [JXLabelObject sharedInstance];\
  4643. obj.roomJid =
  4644. \f2\b \cf8 self
  4645. \f0\b0 \cf4 .roomJid;\
  4646. NSString *selectItem = [obj fetchGroupAnnouncementSelectItemFromLocal];\
  4647. \f2\b \cf8 if
  4648. \f0\b0 \cf4 (selectItem) \{\
  4649. \cf2 //_table.contentInset = UIEdgeInsetsMake(73, 0, 0, 0);\cf4 \
  4650. NSArray *temp = [selectItem componentsSeparatedByString:\cf6 @"-"\cf4 ];\
  4651. \cf2 //NSString *first = temp.firstObject;\cf4 \
  4652. NSString *last = temp.lastObject;\
  4653. \
  4654. \cf2 //NSString *ganF=[temp.firstObject stringByReplacingOccurrencesOfString:@"
  4655. \f1 \'b2\'ca
  4656. \f0 " withString:@""];\cf4 \
  4657. NSString *titleName = [NSString stringWithFormat:\cf6 @"%@"\cf4 ,last];\
  4658. \
  4659. [showTopView.caizongBtn setTitle:[NSString stringWithFormat:\cf6 @" %@:"\cf4 ,titleName] forState:(UIControlStateNormal)];\
  4660. \cf2 //_noticeViewScrollView.hidden = NO;\cf4 \
  4661. \cf2 //_noticeView2.hidden = NO;\cf4 \
  4662. \
  4663. \}
  4664. \f2\b \cf8 else
  4665. \f0\b0 \cf4 \{\
  4666. \
  4667. \cf2 // _table.contentInset = UIEdgeInsetsMake(40, 0, 0, 0);\cf4 \
  4668. \cf2 //_noticeViewScrollView.hidden = NO;\cf4 \
  4669. \cf2 //_noticeView2.hidden = YES;\cf4 \
  4670. \
  4671. [showTopView.caizongBtn setTitle:\cf6 @"
  4672. \f1 \'bf\'aa\'bd\'b1\'bd\'e1\'b9\'fb
  4673. \f0 "\cf4 forState:(UIControlStateNormal)];\
  4674. \}\
  4675. [showTopView.caizongBtn addTarget:
  4676. \f2\b \cf8 self
  4677. \f0\b0 \cf4 action:
  4678. \f2\b \cf8 @selector
  4679. \f0\b0 \cf4 (notice2ndClick) forControlEvents:(UIControlEventTouchUpInside)];\
  4680. \
  4681. \
  4682. \
  4683. NSString *groupAnnouncement = [obj fetchAllGroupAnnouncementFromLocal];\
  4684. NSArray *response = [
  4685. \f2\b \cf8 self
  4686. \f0\b0 \cf4 dictionaryWithJsonString: groupAnnouncement];\
  4687. NSMutableArray *modelArray = [NSMutableArray array];\
  4688. \f2\b \cf8 for
  4689. \f0\b0 \cf4 (NSDictionary *dict
  4690. \f2\b \cf8 in
  4691. \f0\b0 \cf4 response) \{\
  4692. [JLSelectModel mj_setupObjectClassInArray:^NSDictionary *\{\
  4693. \f2\b \cf8 return
  4694. \f0\b0 \cf4 \cf7 @\{\cf4 \
  4695. \cf6 @"data"\cf4 : \cf6 @"JLSelectItemModel"\cf4 \
  4696. \cf7 \}\cf4 ;\
  4697. \}];\
  4698. JLSelectModel *model = [JLSelectModel mj_objectWithKeyValues:dict];\
  4699. [modelArray addObject:model];\
  4700. \}\
  4701. \
  4702. \cf2 //
  4703. \f1 \'b2\'f0\'b7\'d6
  4704. \f0 \cf4 \
  4705. \f2\b \cf8 if
  4706. \f0\b0 \cf4 (selectItem) \{\
  4707. NSArray *temp = [selectItem componentsSeparatedByString:\cf6 @"-"\cf4 ];\
  4708. NSString *first = temp.firstObject;\
  4709. NSString *last = temp.lastObject;\
  4710. \
  4711. \f2\b \cf8 for
  4712. \f0\b0 \cf4 (JLSelectModel *model
  4713. \f2\b \cf8 in
  4714. \f0\b0 \cf4 modelArray) \{\
  4715. \f2\b \cf8 if
  4716. \f0\b0 \cf4 ([model.name isEqualToString:first]) \{\
  4717. \f2\b \cf8 for
  4718. \f0\b0 \cf4 (JLSelectItemModel *selectItemModel
  4719. \f2\b \cf8 in
  4720. \f0\b0 \cf4 model.data) \{\
  4721. \f2\b \cf8 if
  4722. \f0\b0 \cf4 ([selectItemModel.subName isEqualToString:last]) \{\
  4723. groupAnnouncement = selectItemModel.content;\
  4724. showTopView.selectItemModel=selectItemModel;\
  4725. \cf2 //--\cf4 \
  4726. \}\
  4727. \}\
  4728. \}\
  4729. \}\
  4730. \
  4731. \}
  4732. \f2\b \cf8 else
  4733. \f0\b0 \cf4 \{\
  4734. \cf2 // groupAnnouncement = @"";\cf4 \
  4735. \}\
  4736. \
  4737. \
  4738. \
  4739. NSString *allGroupAnnouncement = [obj fetchAllGroupAnnouncementFromLocal];\
  4740. \cf2 //\cf4 \
  4741. \cf2 // if (allGroupAnnouncement == nil) \{\cf4 \
  4742. \cf2 // _noticeView2.hidden = YES;\cf4 \
  4743. \cf2 // \}else \{\cf4 \
  4744. \cf2 // _noticeView2.hidden = NO;\cf4 \
  4745. \cf2 // \}\cf4 \
  4746. \
  4747. \
  4748. \
  4749. \
  4750. \}\
  4751. \
  4752. \cf12 /**\cf4 \
  4753. \cf12 *\cf4
  4754. \f1 \cf2 \'cc\'f8\'d7\'aa\'b9\'d8\'d7\'a2\'ba\'c3\'d3\'d1\'c1\'d0\'b1\'ed
  4755. \f0 \cf4 \
  4756. \cf12 */\cf4 \
  4757. - (
  4758. \f2\b \cf8 void
  4759. \f0\b0 \cf4 )\cf11 attionBtnCLick\cf4 \{\
  4760. \
  4761. \
  4762. \
  4763. \
  4764. \f2\b \cf8 __weak
  4765. \f0\b0 \cf4
  4766. \f2\b \cf8 __typeof
  4767. \f0\b0 \cf4 (
  4768. \f2\b \cf8 self
  4769. \f0\b0 \cf4 )weakSelf =
  4770. \f2\b \cf8 self
  4771. \f0\b0 \cf4 ;\
  4772. JxChatGetNoticePersonVc *pervc=[[JxChatGetNoticePersonVc alloc]init];\
  4773. pervc.block = ^(memberData *
  4774. \f2\b \cf8 _Nonnull
  4775. \f0\b0 \cf4 responseObject) \{\
  4776. \
  4777. _backUserId=[NSString stringWithFormat:\cf6 @"%ld"\cf4 ,responseObject.userId];\
  4778. [weakSelf.attioPersonBtn setTitle:responseObject.userNickName forState:UIControlStateNormal];\
  4779. \
  4780. \};\
  4781. pervc.dataArr=_dataArrGetGroundPersonArr;\
  4782. pervc.roomID=
  4783. \f2\b \cf8 self
  4784. \f0\b0 \cf4 .roomJid;\
  4785. \
  4786. \
  4787. [
  4788. \f2\b \cf8 self
  4789. \f0\b0 \cf4 .navigationController pushViewController:pervc animated:
  4790. \f2\b \cf8 YES
  4791. \f0\b0 \cf4 ];\
  4792. \
  4793. \}\
  4794. \cf2 //
  4795. \f1 \'d7\'ee\'d0\'c2\'b9\'e3\'b8\'e6
  4796. \f0 UI\cf4 \
  4797. - (
  4798. \f2\b \cf8 void
  4799. \f0\b0 \cf4 )\cf11 setupNotice\cf4 \{\
  4800. CGFloat noticHHH=\cf7 37\cf4 ;\
  4801. \
  4802. \f2\b \cf8 BOOL
  4803. \f0\b0 \cf4 isOpen = [g_default boolForKey:kgoucaiComePush];\
  4804. \f2\b \cf8 if
  4805. \f0\b0 \cf4 (isOpen==\cf7 1\cf4 ) \{\
  4806. noticHHH=\cf7 0\cf4 ;\
  4807. \}\
  4808. UIScrollView *noticeViewScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , noticHHH, JX_SCREEN_WIDTH, \cf7 37\cf4 )];\
  4809. noticeViewScrollView.backgroundColor=kRGBColor(\cf7 246\cf4 , \cf7 246\cf4 , \cf7 246\cf4 );\
  4810. [
  4811. \f2\b \cf8 self
  4812. \f0\b0 \cf4 .view addSubview:noticeViewScrollView];\
  4813. \f2\b \cf8 self
  4814. \f0\b0 \cf4 .noticeViewScrollView=noticeViewScrollView;\
  4815. \
  4816. UIView *lineView1 = [[UIView alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 , JX_SCREEN_WIDTH, \cf7 1\cf4 )];\
  4817. lineView1.backgroundColor=[UIColor whiteColor];\
  4818. [noticeViewScrollView addSubview:lineView1];\
  4819. \
  4820. \
  4821. UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , \cf7 36\cf4 , JX_SCREEN_WIDTH, \cf7 1\cf4 )];\
  4822. lineView.backgroundColor=[UIColor grayColor];\
  4823. [noticeViewScrollView addSubview:lineView];\
  4824. \
  4825. UIButton *attionBtn=[[UIButton alloc]initWithFrame:CGRectMake(\cf7 10\cf4 , \cf7 8\cf4 , \cf7 80\cf4 , \cf7 24\cf4 )];\
  4826. [attionBtn setTitle:\cf6 @"
  4827. \f1 \'cc\'d8\'b1\'f0\'b9\'d8\'d0\'c4
  4828. \f0 "\cf4 forState:UIControlStateNormal];\
  4829. attionBtn.layer.cornerRadius=\cf7 8\cf4 ;\
  4830. attionBtn.layer.masksToBounds=
  4831. \f2\b \cf8 YES
  4832. \f0\b0 \cf4 ;\
  4833. attionBtn.backgroundColor=[UIColor whiteColor];\
  4834. [attionBtn setTitleColor:kRGBColor51 forState:UIControlStateNormal];\
  4835. attionBtn.titleLabel.font=[UIFont systemFontOfSize:\cf7 15\cf4 weight:UIFontWeightMedium];\
  4836. [noticeViewScrollView addSubview:attionBtn];\
  4837. attionBtn.contentHorizontalAlignment=UIControlContentHorizontalAlignmentCenter;\
  4838. [attionBtn addTarget:
  4839. \f2\b \cf8 self
  4840. \f0\b0 \cf4 action:
  4841. \f2\b \cf8 @selector
  4842. \f0\b0 \cf4 (attionBtnCLick) forControlEvents:UIControlEventTouchUpInside];\
  4843. \
  4844. \
  4845. _attioPersonBtn=[[UIButton alloc]initWithFrame:CGRectMake(\cf7 100\cf4 , \cf7 8\cf4 , \cf7 80\cf4 , \cf7 24\cf4 )];\
  4846. [_attioPersonBtn setTitle:\cf6 @"
  4847. \f1 \'d4\'dd\'ce\'de
  4848. \f0 "\cf4 forState:UIControlStateNormal];\
  4849. _attioPersonBtn.layer.cornerRadius=\cf7 8\cf4 ;\
  4850. _attioPersonBtn.layer.masksToBounds=
  4851. \f2\b \cf8 YES
  4852. \f0\b0 \cf4 ;\
  4853. _attioPersonBtn.backgroundColor=[UIColor whiteColor];\
  4854. [_attioPersonBtn setTitleColor:kRGBColor51 forState:UIControlStateNormal];\
  4855. _attioPersonBtn.titleLabel.font=[UIFont systemFontOfSize:\cf7 15\cf4 weight:UIFontWeightRegular];\
  4856. [noticeViewScrollView addSubview:_attioPersonBtn];\
  4857. [_attioPersonBtn addTarget:
  4858. \f2\b \cf8 self
  4859. \f0\b0 \cf4 action:
  4860. \f2\b \cf8 @selector
  4861. \f0\b0 \cf4 (attioPersonBtnX) forControlEvents:UIControlEventTouchUpInside];\
  4862. \
  4863. \
  4864. \}\
  4865. \cf12 /**\cf4
  4866. \f1 \cf2 \'bb\'f1\'c8\'a1\'d3\'c3\'bb\'a7\'d7\'ee\'ba\'f3\'d2\'bb\'cc\'f5\'d0\'c5\'cf\'a2
  4867. \f3 */
  4868. \f0 \cf4 \
  4869. - (
  4870. \f2\b \cf8 void
  4871. \f0\b0 \cf4 )\cf11 attioPersonBtnX\cf4 \{\
  4872. \
  4873. \
  4874. \f2\b \cf8 long
  4875. \f0\b0 \cf4 time = (
  4876. \f2\b \cf8 long
  4877. \f0\b0 \cf4 )[[NSDate date] timeIntervalSince1970];\
  4878. time = (time *\cf7 1000\cf4 + g_server.timeDifference);\
  4879. NSString *salt = [NSString stringWithFormat:\cf6 @"%ld"\cf4 , time];\
  4880. \
  4881. \
  4882. [g_server getUserRoomAttentionattentionLastInfo:salt userId:_backUserId jid:_roomJid andToView:
  4883. \f2\b \cf8 self
  4884. \f0\b0 \cf4 ];\
  4885. \}\
  4886. \
  4887. \
  4888. - (
  4889. \f2\b \cf8 void
  4890. \f0\b0 \cf4 )\cf11 hideNoticeView\cf4 :(UITapGestureRecognizer *)tap \{\
  4891. \cf2 // _noticeView.hidden = YES;\cf4 \
  4892. _noticeHeight = \cf7 0\cf4 ;\
  4893. _table.frame = CGRectMake(\cf7 0\cf4 , JX_SCREEN_TOP, JX_SCREEN_WIDTH, JX_SCREEN_HEIGHT-JX_SCREEN_TOP-JX_SCREEN_BOTTOM);\
  4894. _jumpNewMsgBtn.frame = CGRectMake(JX_SCREEN_WIDTH - \cf7 105\cf4 , JX_SCREEN_TOP + \cf7 20\cf4 +_noticeHeight, \cf7 120\cf4 , \cf7 30\cf4 );\
  4895. \}\
  4896. - (
  4897. \f2\b \cf8 void
  4898. \f0\b0 \cf4 )\cf11 startNoticeTimer\cf4 \{\
  4899. _leftW = \cf7 0\cf4 ;\
  4900. _rightW = _noticeStrW+NOTICE_WIDTH;\
  4901. _noticeTimer = [NSTimer scheduledTimerWithTimeInterval:\cf7 0.04f\cf4 target:
  4902. \f2\b \cf8 self
  4903. \f0\b0 \cf4 selector:
  4904. \f2\b \cf8 @selector
  4905. \f0\b0 \cf4 (updateNoticeTimer:) userInfo:
  4906. \f2\b \cf8 nil
  4907. \f0\b0 \cf4 repeats:
  4908. \f2\b \cf8 YES
  4909. \f0\b0 \cf4 ];\
  4910. \
  4911. [
  4912. \f2\b \cf8 self
  4913. \f0\b0 \cf4 .noticeTimer setFireDate:[NSDate distantPast]];\
  4914. \}\
  4915. \
  4916. - (
  4917. \f2\b \cf8 void
  4918. \f0\b0 \cf4 )\cf11 stopNoticeTimer\cf4 \{\
  4919. [
  4920. \f2\b \cf8 self
  4921. \f0\b0 \cf4 .timer setFireDate:[NSDate distantFuture]];\
  4922. \}\
  4923. \
  4924. - (
  4925. \f2\b \cf8 void
  4926. \f0\b0 \cf4 )\cf11 updateNoticeTimer\cf4 :(NSTimer *)timer \{\
  4927. \f2\b \cf8 self
  4928. \f0\b0 \cf4 .leftW --;\
  4929. \f2\b \cf8 self
  4930. \f0\b0 \cf4 .rightW --;\
  4931. \f2\b \cf8 self
  4932. \f0\b0 \cf4 .leftLabel.frame = CGRectMake(
  4933. \f2\b \cf8 self
  4934. \f0\b0 \cf4 .leftW, \cf7 0\cf4 , _noticeStrW+NOTICE_WIDTH, \cf7 36\cf4 );\
  4935. \f2\b \cf8 self
  4936. \f0\b0 \cf4 .rightLabel.frame = CGRectMake(
  4937. \f2\b \cf8 self
  4938. \f0\b0 \cf4 .rightW, \cf7 0\cf4 , _noticeStrW+NOTICE_WIDTH, \cf7 36\cf4 );\
  4939. \f2\b \cf8 if
  4940. \f0\b0 \cf4 (
  4941. \f2\b \cf8 self
  4942. \f0\b0 \cf4 .leftW <= -_noticeStrW-NOTICE_WIDTH) \{\
  4943. \f2\b \cf8 self
  4944. \f0\b0 \cf4 .leftW = _noticeStrW+NOTICE_WIDTH;\
  4945. \}\
  4946. \f2\b \cf8 if
  4947. \f0\b0 \cf4 (
  4948. \f2\b \cf8 self
  4949. \f0\b0 \cf4 .rightW <= -_noticeStrW-NOTICE_WIDTH) \{\
  4950. \f2\b \cf8 self
  4951. \f0\b0 \cf4 .rightW = _noticeStrW+NOTICE_WIDTH;\
  4952. \}\
  4953. \}\
  4954. \
  4955. - (
  4956. \f2\b \cf8 void
  4957. \f0\b0 \cf4 )\cf11 setupNoticeWithContent\cf4 :(NSString *)noticeStr \cf11 time\cf4 :(NSString *)noticeTime \{\
  4958. CGSize size = [noticeStr sizeWithAttributes:\cf7 @\{\cf4 NSFontAttributeName:SYSFONT(\cf7 13\cf4 )\cf7 \}\cf4 ];\
  4959. _leftLabel.frame = CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 , size.width, \cf7 36\cf4 );\
  4960. _leftLabel.text = noticeStr;\
  4961. _rightLabel.frame = CGRectMake(CGRectGetMaxX(_leftLabel.frame), \cf7 0\cf4 , size.width, \cf7 36\cf4 );\
  4962. _rightLabel.text = noticeStr;\
  4963. _noticeStrW = size.width;\
  4964. \f2\b \cf8 if
  4965. \f0\b0 \cf4 (_noticeStrW > _showNoticeView.frame.size.width) \{\
  4966. _rightLabel.hidden =
  4967. \f2\b \cf8 NO
  4968. \f0\b0 \cf4 ;\
  4969. [
  4970. \f2\b \cf8 self
  4971. \f0\b0 \cf4 startNoticeTimer];\
  4972. \}
  4973. \f2\b \cf8 else
  4974. \f0\b0 \cf4 \{\
  4975. _rightLabel.hidden =
  4976. \f2\b \cf8 YES
  4977. \f0\b0 \cf4 ;\
  4978. [
  4979. \f2\b \cf8 self
  4980. \f0\b0 \cf4 stopNoticeTimer];\
  4981. [
  4982. \f2\b \cf8 self
  4983. \f0\b0 \cf4 .noticeTimer invalidate];\
  4984. \f2\b \cf8 self
  4985. \f0\b0 \cf4 .noticeTimer =
  4986. \f2\b \cf8 nil
  4987. \f0\b0 \cf4 ;\
  4988. \}\
  4989. \f2\b \cf8 if
  4990. \f0\b0 \cf4 (noticeStr.length > \cf7 0\cf4 ) \{\
  4991. NSTimeInterval time = [[NSDate date] timeIntervalSince1970];\
  4992. \cf2 //
  4993. \f1 \'b9\'ab\'b8\'e6\'ca\'b1\'bc\'e4\'b3\'ac\'b9\'fd\'d2\'bb\'d6\'dc\'bc\'b4\'b2\'bb\'d4\'d9\'cf\'d4\'ca\'be
  4994. \f0 \cf4 \
  4995. \f2\b \cf8 if
  4996. \f0\b0 \cf4 (time >= \cf7 60\cf4 *\cf7 60\cf4 *\cf7 24\cf4 *\cf7 7\cf4 +[noticeTime intValue]) \{\
  4997. _noticeView.hidden =
  4998. \f2\b \cf8 NO
  4999. \f0\b0 \cf4 ;\
  5000. _noticeHeight = \cf7 36\cf4 *\cf7 2\cf4 ;\
  5001. \}
  5002. \f2\b \cf8 else
  5003. \f0\b0 \cf4 \{\
  5004. _noticeView.hidden =
  5005. \f2\b \cf8 NO
  5006. \f0\b0 \cf4 ;\
  5007. _noticeHeight = \cf7 36\cf4 *\cf7 2\cf4 ;\
  5008. _table.frame = CGRectMake(\cf7 0\cf4 , JX_SCREEN_TOP+_noticeHeight, JX_SCREEN_WIDTH, JX_SCREEN_HEIGHT-JX_SCREEN_TOP-JX_SCREEN_BOTTOM - _noticeHeight);\
  5009. [_table gotoLastRow:
  5010. \f2\b \cf8 NO
  5011. \f0\b0 \cf4 ];\
  5012. \}\
  5013. \}
  5014. \f2\b \cf8 else
  5015. \f0\b0 \cf4 \{\
  5016. _noticeView.hidden =
  5017. \f2\b \cf8 NO
  5018. \f0\b0 \cf4 ;\
  5019. _noticeHeight = \cf7 36\cf4 *\cf7 2\cf4 ;\
  5020. \}\
  5021. _jumpNewMsgBtn.frame = CGRectMake(JX_SCREEN_WIDTH - \cf7 105\cf4 , JX_SCREEN_TOP + \cf7 20\cf4 +_noticeHeight, \cf7 120\cf4 , \cf7 30\cf4 );\
  5022. \}\
  5023. \
  5024. \
  5025. \
  5026. \cf2 //
  5027. \f1 \'cc\'f8\'d7\'aa\'b5\'bd\'d0\'c2\'cf\'fb\'cf\'a2
  5028. \f0 \cf4 \
  5029. - (
  5030. \f2\b \cf8 void
  5031. \f0\b0 \cf4 )\cf11 jumpNewMsgBtnAction\cf4 \{\
  5032. NSIndexPath* indexPat = [NSIndexPath indexPathForRow:\cf7 0\cf4 inSection:\cf7 0\cf4 ];\
  5033. [
  5034. \f2\b \cf8 self
  5035. \f0\b0 \cf4 .tableView scrollToRowAtIndexPath:indexPat atScrollPosition:UITableViewScrollPositionBottom animated:
  5036. \f2\b \cf8 YES
  5037. \f0\b0 \cf4 ];\
  5038. _jumpNewMsgBtn.hidden =
  5039. \f2\b \cf8 YES
  5040. \f0\b0 \cf4 ;\
  5041. \}\
  5042. \
  5043. - (
  5044. \f2\b \cf8 void
  5045. \f0\b0 \cf4 )\cf11 screenShotViewAction\cf4 :(UITapGestureRecognizer *)tap \{\
  5046. \
  5047. \f2\b \cf8 if
  5048. \f0\b0 \cf4 ([
  5049. \f2\b \cf8 self
  5050. \f0\b0 \cf4 showDisableSay])\
  5051. \f2\b \cf8 return
  5052. \f0\b0 \cf4 ;\
  5053. \
  5054. \f2\b \cf8 if
  5055. \f0\b0 \cf4 ([
  5056. \f2\b \cf8 self
  5057. \f0\b0 \cf4 sendMsgCheck])\{\
  5058. \f2\b \cf8 return
  5059. \f0\b0 \cf4 ;\
  5060. \}\
  5061. KKImageEditorViewController *editor = [[KKImageEditorViewController alloc] initWithImage:
  5062. \f2\b \cf8 self
  5063. \f0\b0 \cf4 .screenImage delegate:
  5064. \f2\b \cf8 self
  5065. \f0\b0 \cf4 ];\
  5066. \
  5067. UINavigationController *vc = [[UINavigationController alloc] initWithRootViewController:editor];\
  5068. [
  5069. \f2\b \cf8 self
  5070. \f0\b0 \cf4 presentViewController:vc animated:
  5071. \f2\b \cf8 YES
  5072. \f0\b0 \cf4 completion:
  5073. \f2\b \cf8 nil
  5074. \f0\b0 \cf4 ];\
  5075. \
  5076. \}\
  5077. \
  5078. \cf5 #pragma mark
  5079. \f2\b \cf16 -
  5080. \f4 \'d5\'d5\'c6\'ac\'b1\'e0\'bc\'ad\'ba\'f3\'b5\'c4\'bb\'d8\'b5\'f7
  5081. \f0\b0 \cf4 \
  5082. - (
  5083. \f2\b \cf8 void
  5084. \f0\b0 \cf4 )\cf11 imageDidFinishEdittingWithImage\cf4 :(UIImage *)image \cf11 asset\cf4 :(PHAsset *)asset\
  5085. \{\
  5086. \f2\b \cf8 self
  5087. \f0\b0 \cf4 .screenShotImageView.image = image;\
  5088. UIImage *chosedImage =
  5089. \f2\b \cf8 self
  5090. \f0\b0 \cf4 .screenShotImageView.image;\
  5091. \cf2 //
  5092. \f1 \'bb\'f1\'c8\'a1
  5093. \f0 image
  5094. \f1 \'b5\'c4\'b3\'a4\'bf\'ed
  5095. \f0 \cf4 \
  5096. \f2\b \cf8 int
  5097. \f0\b0 \cf4 imageWidth = chosedImage.size.width;\
  5098. \f2\b \cf8 int
  5099. \f0\b0 \cf4 imageHeight = chosedImage.size.height;\
  5100. \
  5101. \f2\b \cf8 self
  5102. \f0\b0 \cf4 .view.frame = CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 , JX_SCREEN_WIDTH, JX_SCREEN_HEIGHT);\
  5103. [
  5104. \f2\b \cf8 self
  5105. \f0\b0 \cf4 hideKeyboard:
  5106. \f2\b \cf8 YES
  5107. \f0\b0 \cf4 ];\
  5108. \
  5109. \
  5110. NSString *name = \cf6 @"jpg"\cf4 ;\
  5111. \f2\b \cf8 if
  5112. \f0\b0 \cf4 (
  5113. \f2\b \cf8 self
  5114. \f0\b0 \cf4 .isGroupMessages) \{\
  5115. \cf2 // for (NSInteger i = 0; i < self.userIds.count; i ++) \{\cf4 \
  5116. \cf2 // NSString *userId = self.userIds[i];\cf4 \
  5117. \cf2 //\cf4 \
  5118. \cf2 // NSString *file = [FileInfo getUUIDFileName:name];\cf4 \
  5119. \cf2 // [g_server saveImageToFile:chosedImage file:file isOriginal:NO];\cf4 \
  5120. \cf2 // [self sendImage:file withWidth:imageWidth andHeight:imageHeight userId:userId];\cf4 \
  5121. \cf12 ///
  5122. \f3 \cf2 / [g_server uploadFile:file validTime:self.chatPerson.chatRecordTimeOut messageId:nil toView:self];
  5123. \f0 \cf4 \
  5124. \cf2 // \}\cf4 \
  5125. [
  5126. \f2\b \cf8 self
  5127. \f0\b0 \cf4 addWaitGroupSendViewWithMsgNum:\cf7 1\cf4 withType:groupsend_msgType_image];\
  5128. \f2\b \cf8 self
  5129. \f0\b0 \cf4 .groupUploadObjArray = [NSMutableArray arrayWithObject:chosedImage];\
  5130. _onceSendNum = \cf7 10\cf4 ;\
  5131. _isOriginal =
  5132. \f2\b \cf8 NO
  5133. \f0\b0 \cf4 ;\
  5134. [
  5135. \f2\b \cf8 self
  5136. \f0\b0 \cf4 sendPhotos:
  5137. \f2\b \cf8 self
  5138. \f0\b0 \cf4 .groupUploadObjArray withOriginal:
  5139. \f2\b \cf8 NO
  5140. \f0\b0 \cf4 ];\
  5141. \}
  5142. \f2\b \cf8 else
  5143. \f0\b0 \cf4 \{\
  5144. NSString *file = [FileInfo getUUIDFileName:name];\
  5145. [g_server saveImageToFile:chosedImage file:file isOriginal:
  5146. \f2\b \cf8 NO
  5147. \f0\b0 \cf4 ];\
  5148. [
  5149. \f2\b \cf8 self
  5150. \f0\b0 \cf4 sendImage:file withWidth:imageWidth andHeight:imageHeight userId:
  5151. \f2\b \cf8 nil
  5152. \f0\b0 \cf4 ];\
  5153. \cf2 // [g_server uploadFile:file validTime:self.chatPerson.chatRecordTimeOut messageId:nil toView:self];\cf4 \
  5154. \}\
  5155. \cf2 // NSString* file = [FileInfo getUUIDFileName:name];\cf4 \
  5156. \cf2 //\cf4 \
  5157. \cf2 // file = [FileInfo getUUIDFileName:name];\cf4 \
  5158. \cf2 // [g_server saveImageToFile:chosedImage file:file isOriginal:NO];\cf4 \
  5159. \cf12 ///
  5160. \f3 \cf2 / [self sendImage:file withWidth:imageWidth andHeight:imageHeight];
  5161. \f0 \cf4 \
  5162. \cf2 // [g_server uploadFile:file validTime:self.chatPerson.chatRecordTimeOut toView:self];\cf4 \
  5163. \
  5164. \f2\b \cf8 self
  5165. \f0\b0 \cf4 .screenShotView.hidden =
  5166. \f2\b \cf8 YES
  5167. \f0\b0 \cf4 ;\
  5168. \cf2 // NSFileManager* fileManager=[NSFileManager defaultManager];\cf4 \
  5169. \cf2 // BOOL blDele= [fileManager removeItemAtPath:ScreenShotImage error:nil];\cf4 \
  5170. \cf2 // if (blDele) \{\cf4 \
  5171. \cf2 // NSLog(@"dele success");\cf4 \
  5172. \cf2 // \}else \{\cf4 \
  5173. \cf2 // NSLog(@"dele fail");\cf4 \
  5174. \cf2 // \}\cf4 \
  5175. \}\
  5176. \
  5177. \
  5178. - (
  5179. \f2\b \cf8 void
  5180. \f0\b0 \cf4 ) \cf11 createFooterSubViews\cf4 \{\
  5181. \
  5182. [inputBar removeFromSuperview];\
  5183. [_publicMenuBar removeFromSuperview];\
  5184. [_selectMoreView removeFromSuperview];\
  5185. \
  5186. \cf2 //
  5187. \f1 \'ca\'e4\'c8\'eb\'cc\'f5
  5188. \f0 \cf4 \
  5189. inputBar = [[UIImageView alloc] initWithImage:
  5190. \f2\b \cf8 nil
  5191. \f0\b0 \cf4 ];\
  5192. inputBar.backgroundColor = HEXCOLOR(\cf7 0xF9F9F9\cf4 );\
  5193. inputBar.userInteractionEnabled =
  5194. \f2\b \cf8 YES
  5195. \f0\b0 \cf4 ;\
  5196. inputBar.clipsToBounds =
  5197. \f2\b \cf8 YES
  5198. \f0\b0 \cf4 ;\
  5199. [
  5200. \f2\b \cf8 self
  5201. \f0\b0 \cf4 .view addSubview:inputBar];\
  5202. \
  5203. \
  5204. \f2\b \cf8 self
  5205. \f0\b0 \cf4 .shareMore = [UIFactory createButtonWithImage:\cf6 @"im_show_one_icon"\cf4 highlight:
  5206. \f2\b \cf8 nil
  5207. \f0\b0 \cf4 target:
  5208. \f2\b \cf8 self
  5209. \f0\b0 \cf4 selector:
  5210. \f2\b \cf8 @selector
  5211. \f0\b0 \cf4 (shareMore:)];\
  5212. [
  5213. \f2\b \cf8 self
  5214. \f0\b0 \cf4 .shareMore setImage:[UIImage imageNamed:\cf6 @"im_input_more_normal"\cf4 ] forState:UIControlStateSelected];\
  5215. \f2\b \cf8 self
  5216. \f0\b0 \cf4 .shareMore.frame = CGRectMake(JX_SCREEN_WIDTH - \cf7 53\cf4 -\cf7 5\cf4 , \cf7 0\cf4 , \cf7 53\cf4 , \cf7 53\cf4 );\
  5217. [inputBar addSubview:
  5218. \f2\b \cf8 self
  5219. \f0\b0 \cf4 .shareMore];\
  5220. CGFloat firstX=\cf7 10\cf4 ;\
  5221. \
  5222. \cf2 /*\cf4 \
  5223. \cf2 if (_menuList.count > 0) \{\cf4 \
  5224. \cf2 self.view.backgroundColor = [UIColor whiteColor];\cf4 \
  5225. \cf2 UIButton *btn = [UIFactory createButtonWithImage:@"lashang" selected:@"lashang" target:self selector:@selector(inputBarSwitch:)];\cf4 \
  5226. \cf2 btn.frame = CGRectMake(10, 8+2, 32, 32);\cf4 \
  5227. \cf2 btn.selected = NO;\cf4 \
  5228. \cf2 [inputBar addSubview:btn];\cf4 \
  5229. \cf2 \cf4 \
  5230. \cf2 UIView *v = [[UIView alloc] initWithFrame:CGRectMake(47, 0, LINE_WH, self.heightFooter)];\cf4 \
  5231. \cf2 v.backgroundColor = THE_LINE_COLOR;\cf4 \
  5232. \cf2 [inputBar addSubview:v];\cf4 \
  5233. \cf2 \cf4 \
  5234. \cf2 firstX = 52;\cf4 \
  5235. \cf2 \cf4 \
  5236. \cf2 inputBar.frame = CGRectMake(inputBar.frame.origin.x, inputBar.frame.size.height, inputBar.frame.size.width, inputBar.frame.size.height);\cf4 \
  5237. \cf2 \cf4 \
  5238. \cf2 \}else \{\cf4 \
  5239. \cf2 firstX = 10;\cf4 \
  5240. \cf2 inputBar.frame = CGRectMake(inputBar.frame.origin.x, 0, inputBar.frame.size.width, inputBar.frame.size.height);\cf4 \
  5241. \cf2 \} */\cf4 \
  5242. \
  5243. UIButton *btn = [UIFactory createButtonWithImage:\cf6 @"im_input_ptt_normal"\cf4 selected:\cf6 @"im_input_keyboard_normal"\cf4 target:
  5244. \f2\b \cf8 self
  5245. \f0\b0 \cf4 selector:
  5246. \f2\b \cf8 @selector
  5247. \f0\b0 \cf4 (recordSwitch:)];\
  5248. btn.frame = CGRectMake(\cf7 10\cf4 , \cf7 15\cf4 , \cf7 25\cf4 , \cf7 25\cf4 );\
  5249. btn.selected =
  5250. \f2\b \cf8 NO
  5251. \f0\b0 \cf4 ;\
  5252. [inputBar addSubview:btn];\
  5253. _recordBtnLeft = btn;\
  5254. \
  5255. \cf2 //eomoj\cf4 \
  5256. btn = [UIFactory createButtonWithImage:\cf6 @"im_input_expression_normal"\cf4 selected:\cf6 @"im_input_keyboard_normal"\cf4 target:
  5257. \f2\b \cf8 self
  5258. \f0\b0 \cf4 selector:
  5259. \f2\b \cf8 @selector
  5260. \f0\b0 \cf4 (actionFace:)];\
  5261. btn.frame = CGRectMake(JX_SCREEN_WIDTH -\cf7 15\cf4 -\cf7 25\cf4 -\cf7 18\cf4 -\cf7 25\cf4 , \cf7 15\cf4 , \cf7 25\cf4 , \cf7 25\cf4 );\
  5262. btn.selected =
  5263. \f2\b \cf8 NO
  5264. \f0\b0 \cf4 ;\
  5265. [inputBar addSubview:btn];\
  5266. _btnFace = btn;\
  5267. \
  5268. _messageText = [[UITextView alloc] initWithFrame:CGRectMake(firstX + \cf7 35\cf4 , \cf7 8\cf4 , JX_SCREEN_WIDTH-firstX - \cf7 35\cf4 -\cf7 15\cf4 -\cf7 25\cf4 -\cf7 18\cf4 -\cf7 25\cf4 -\cf7 20\cf4 , \cf7 33\cf4 )];\
  5269. _messageText.font = SYSFONT(\cf7 18\cf4 );\
  5270. _messageText.delegate =
  5271. \f2\b \cf8 self
  5272. \f0\b0 \cf4 ;\
  5273. _messageText.layer.cornerRadius = \cf7 2.0\cf4 ;\
  5274. _messageText.layer.masksToBounds =
  5275. \f2\b \cf8 YES
  5276. \f0\b0 \cf4 ;\
  5277. _messageText.enablesReturnKeyAutomatically =
  5278. \f2\b \cf8 YES
  5279. \f0\b0 \cf4 ;\
  5280. _messageText.returnKeyType = UIReturnKeySend;\
  5281. \f2\b \cf8 if
  5282. \f0\b0 \cf4 (![
  5283. \f2\b \cf8 self
  5284. \f0\b0 \cf4 changeEmjoyText:chatPerson.lastInput textColor:[UIColor blackColor]]) \{\
  5285. _messageText.text = chatPerson.lastInput;\
  5286. \}\
  5287. [inputBar addSubview:_messageText];\
  5288. [
  5289. \f2\b \cf8 self
  5290. \f0\b0 \cf4 setTableFooterFrame:_messageText];\
  5291. \
  5292. \cf2 //
  5293. \f1 \'c9\'e8\'d6\'c3\'b2\'cb\'b5\'a5
  5294. \f0 \cf4 \
  5295. UIMenuItem *menuItem = [[UIMenuItem alloc]initWithTitle:Localized(\cf6 @"JX_Newline"\cf4 ) action:
  5296. \f2\b \cf8 @selector
  5297. \f0\b0 \cf4 (selfMenu:)];\
  5298. UIMenuController *menuController = [UIMenuController sharedMenuController];\
  5299. [menuController setMenuItems:[NSArray arrayWithObject:menuItem]];\
  5300. \
  5301. _textViewBtn = [[UIButton alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , \cf7 10\cf4 , _messageText.frame.size.width, \cf7 12\cf4 )];\
  5302. _textViewBtn.backgroundColor = [UIColor clearColor];\
  5303. [_textViewBtn addTarget:
  5304. \f2\b \cf8 self
  5305. \f0\b0 \cf4 action:
  5306. \f2\b \cf8 @selector
  5307. \f0\b0 \cf4 (textViewBtnAction:) forControlEvents:UIControlEventTouchUpInside];\
  5308. _textViewBtn.hidden =
  5309. \f2\b \cf8 YES
  5310. \f0\b0 \cf4 ;\
  5311. [_messageText addSubview:_textViewBtn];\
  5312. \
  5313. _talkTimeLabel = [[UILabel alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 , _messageText.frame.size.width, _messageText.frame.size.height)];\
  5314. _talkTimeLabel.font = [UIFont systemFontOfSize:\cf7 15.0\cf4 ];\
  5315. _talkTimeLabel.text = Localized(\cf6 @"JX_TotalSilence"\cf4 );\
  5316. _talkTimeLabel.textColor = [UIColor lightGrayColor];\
  5317. _talkTimeLabel.textAlignment = NSTextAlignmentCenter;\
  5318. [_messageText addSubview:_talkTimeLabel];\
  5319. _talkTimeLabel.hidden =
  5320. \f2\b \cf8 YES
  5321. \f0\b0 \cf4 ;\
  5322. \
  5323. memberData *roomD = [[memberData alloc] init];\
  5324. roomD.roomId =
  5325. \f2\b \cf8 self
  5326. \f0\b0 \cf4 .room.roomId;\
  5327. memberData *roomData = [roomD getCardNameById:MY_USER_ID];\
  5328. \
  5329. \f2\b \cf8 if
  5330. \f0\b0 \cf4 (([
  5331. \f2\b \cf8 self
  5332. \f0\b0 \cf4 .chatPerson.talkTime longLongValue] > \cf7 0\cf4 && !_isAdmin) || [roomData.role intValue] == \cf7 4\cf4 ) \{\
  5333. \f2\b \cf8 if
  5334. \f0\b0 \cf4 ([roomData.role intValue] == \cf7 4\cf4 ) \{\
  5335. _talkTimeLabel.text = Localized(\cf6 @"JX_ProhibitToSpeak"\cf4 );\
  5336. \}\
  5337. _messageText.userInteractionEnabled =
  5338. \f2\b \cf8 NO
  5339. \f0\b0 \cf4 ;\
  5340. _shareMore.enabled =
  5341. \f2\b \cf8 NO
  5342. \f0\b0 \cf4 ;\
  5343. _recordBtnLeft.enabled =
  5344. \f2\b \cf8 NO
  5345. \f0\b0 \cf4 ;\
  5346. _btnFace.enabled =
  5347. \f2\b \cf8 NO
  5348. \f0\b0 \cf4 ;\
  5349. _messageText.text =
  5350. \f2\b \cf8 nil
  5351. \f0\b0 \cf4 ;\
  5352. \}
  5353. \f2\b \cf8 else
  5354. \f0\b0 \cf4 \{\
  5355. _talkTimeLabel.hidden =
  5356. \f2\b \cf8 YES
  5357. \f0\b0 \cf4 ;\
  5358. _shareMore.enabled =
  5359. \f2\b \cf8 YES
  5360. \f0\b0 \cf4 ;\
  5361. _recordBtnLeft.enabled =
  5362. \f2\b \cf8 YES
  5363. \f0\b0 \cf4 ;\
  5364. _btnFace.enabled =
  5365. \f2\b \cf8 YES
  5366. \f0\b0 \cf4 ;\
  5367. _messageText.userInteractionEnabled =
  5368. \f2\b \cf8 YES
  5369. \f0\b0 \cf4 ;\
  5370. \}\
  5371. \
  5372. \cf2 //
  5373. \f1 \'b5\'e3\'bb\'f7\'d3\'ef\'d2\'f4\'cd\'bc\'c6\'ac\'ba\'f3\'b3\'f6\'cf\'d6\'b5\'c4\'c2\'bc\'d6\'c6\'d3\'ef\'d2\'f4\'b0\'b4\'c5\'a5
  5374. \f0 \cf4 \
  5375. btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];\
  5376. btn.frame = CGRectMake(_messageText.frame.origin.x, \cf7 8\cf4 , _messageText.frame.size.width, \cf7 32\cf4 +\cf7 5.5\cf4 );\
  5377. btn.backgroundColor = HEXCOLOR(\cf7 0xFEFEFE\cf4 );\
  5378. btn.layer.borderWidth = \cf7 0.5\cf4 ;\
  5379. btn.layer.borderColor = [[UIColor grayColor] CGColor];\
  5380. [btn setTitle:Localized(\cf6 @"JXChatVC_TouchTalk"\cf4 ) forState:UIControlStateNormal];\
  5381. [btn setTitle:Localized(\cf6 @"JXChatVC_ReleaseEnd"\cf4 ) forState:UIControlEventTouchDown];\
  5382. \cf2 // [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];\cf4 \
  5383. [btn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];\
  5384. btn.titleLabel.font = g_factory.font15b;\
  5385. \cf2 // [btn setTitleShadowColor:[UIColor blackColor] forState:UIControlStateNormal];\cf4 \
  5386. \cf2 // [btn setTitleShadowOffset:CGSizeMake(1, 1)];\cf4 \
  5387. btn.layer.cornerRadius = \cf7 5\cf4 ;\
  5388. btn.layer.masksToBounds =
  5389. \f2\b \cf8 YES
  5390. \f0\b0 \cf4 ;\
  5391. [inputBar addSubview:btn];\
  5392. [btn addTarget:
  5393. \f2\b \cf8 self
  5394. \f0\b0 \cf4 action:
  5395. \f2\b \cf8 @selector
  5396. \f0\b0 \cf4 (recordStart:) forControlEvents:UIControlEventTouchDown];\
  5397. [btn addTarget:
  5398. \f2\b \cf8 self
  5399. \f0\b0 \cf4 action:
  5400. \f2\b \cf8 @selector
  5401. \f0\b0 \cf4 (recordStop:) forControlEvents:UIControlEventTouchUpInside];\
  5402. [btn addTarget:
  5403. \f2\b \cf8 self
  5404. \f0\b0 \cf4 action:
  5405. \f2\b \cf8 @selector
  5406. \f0\b0 \cf4 (recordCancel:) forControlEvents:UIControlEventTouchUpOutside];\
  5407. \cf2 //
  5408. \f1 \'ca\'d6\'d6\'b8\'d4\'da
  5409. \f0 control
  5410. \f1 \'b5\'c4
  5411. \f0 bounds
  5412. \f1 \'b7\'b6\'ce\'a7\'c4\'da\'cd\'cf\'b6\'af\'b5\'c4\'b5\'c4\'ca\'c2\'bc\'fe
  5413. \f0 \cf4 \
  5414. [btn addTarget:
  5415. \f2\b \cf8 self
  5416. \f0\b0 \cf4 action:
  5417. \f2\b \cf8 @selector
  5418. \f0\b0 \cf4 (showVoice:) forControlEvents:UIControlEventTouchDragInside];\
  5419. \cf2 //
  5420. \f1 \'b5\'b1\'ca\'d6\'d6\'b8\'cd\'cf\'b6\'af\'b8\'d5\'ba\'c3\'d4\'da
  5421. \f0 control
  5422. \f1 \'b5\'c4
  5423. \f0 bounds
  5424. \f1 \'b7\'b6\'ce\'a7\'cd\'e2\'b5\'c4\'ca\'c2\'bc\'fe
  5425. \f0 \cf4 \
  5426. [btn addTarget:
  5427. \f2\b \cf8 self
  5428. \f0\b0 \cf4 action:
  5429. \f2\b \cf8 @selector
  5430. \f0\b0 \cf4 (showCancel:) forControlEvents:UIControlEventTouchDragOutside];\
  5431. \
  5432. btn.selected =
  5433. \f2\b \cf8 NO
  5434. \f0\b0 \cf4 ;\
  5435. _recordBtn = btn;\
  5436. _recordBtn.hidden =
  5437. \f2\b \cf8 YES
  5438. \f0\b0 \cf4 ;\
  5439. \
  5440. \cf2 /* if (_menuList.count > 0) \{\cf4 \
  5441. \cf2 //
  5442. \f1 \'b9\'ab\'d6\'da\'ba\'c5\'b2\'cb\'b5\'a5
  5443. \f0 \cf4 \
  5444. \cf2 _publicMenuBar = [[UIView alloc] init];\cf4 \
  5445. \cf2 _publicMenuBar.frame = CGRectMake(0, 0, JX_SCREEN_WIDTH, inputBar.frame.size.height);\cf4 \
  5446. \cf2 _publicMenuBar.backgroundColor = [UIColor whiteColor];\cf4 \
  5447. \cf2 // _publicMenuBar.layer.borderWidth = .5;\cf4 \
  5448. \cf2 // _publicMenuBar.layer.borderColor = [HEXCOLOR(0xdcdcdc) CGColor];\cf4 \
  5449. \cf2 [self.tableFooter addSubview:_publicMenuBar];\cf4 \
  5450. \cf2 [self createPublicMenu:_menuList];\cf4 \
  5451. \cf2 \} */\cf4 \
  5452. \
  5453. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(\cf7 1\cf4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\
  5454. [
  5455. \f2\b \cf8 self
  5456. \f0\b0 \cf4 createSelectMoreView];\
  5457. \});\
  5458. \
  5459. \
  5460. [inputBar mas_makeConstraints:^(MASConstraintMaker *make) \{\
  5461. make.bottom.mas_equalTo(-(JX_SCREEN_HEIGHT>=\cf7 812\cf4 ?\cf7 40\cf4 :\cf7 10\cf4 ));\
  5462. make.left.right.mas_equalTo(\cf7 0\cf4 );\
  5463. make.height.mas_equalTo(\cf7 53\cf4 );\
  5464. \
  5465. \}];\
  5466. \
  5467. \}\
  5468. \
  5469. - (
  5470. \f2\b \cf8 void
  5471. \f0\b0 \cf4 )\cf11 showVoice\cf4 :(UIButton *)button \{\
  5472. _voice.isWillCancel =
  5473. \f2\b \cf8 NO
  5474. \f0\b0 \cf4 ;\
  5475. \}\
  5476. - (
  5477. \f2\b \cf8 void
  5478. \f0\b0 \cf4 )\cf11 showCancel\cf4 :(UIButton *)button \{\
  5479. _voice.isWillCancel =
  5480. \f2\b \cf8 YES
  5481. \f0\b0 \cf4 ;\
  5482. \}\
  5483. \
  5484. \cf2 //
  5485. \f1 \'d2\'fe\'b2\'d8\'cf\'b5\'cd\'b3\'b2\'cb\'b5\'a5\'b5\'c4\'b7\'bd\'b7\'a8
  5486. \f0 \cf4 \
  5487. -(
  5488. \f2\b \cf8 BOOL
  5489. \f0\b0 \cf4 )\cf11 canPerformAction\cf4 :(
  5490. \f2\b \cf8 SEL
  5491. \f0\b0 \cf4 )action \cf11 withSender\cf4 :(
  5492. \f2\b \cf8 id
  5493. \f0\b0 \cf4 )sender\
  5494. \{\
  5495. \cf2 //
  5496. \f1 \'d4\'ca\'d0\'ed\'cf\'d4\'ca\'be
  5497. \f0 \cf4 \
  5498. \f2\b \cf8 if
  5499. \f0\b0 \cf4 (action ==
  5500. \f2\b \cf8 @selector
  5501. \f0\b0 \cf4 (selfMenu:)) \{\
  5502. \f2\b \cf8 return
  5503. \f0\b0 \cf4
  5504. \f2\b \cf8 YES
  5505. \f0\b0 \cf4 ;\
  5506. \}\
  5507. \cf2 //
  5508. \f1 \'c6\'e4\'cb\'fb\'b2\'bb\'d4\'ca\'d0\'ed\'cf\'d4\'ca\'be
  5509. \f0 \cf4 \
  5510. \f2\b \cf8 return
  5511. \f0\b0 \cf4
  5512. \f2\b \cf8 NO
  5513. \f0\b0 \cf4 ;\
  5514. \}\
  5515. \
  5516. - (
  5517. \f2\b \cf8 void
  5518. \f0\b0 \cf4 )\cf11 selfMenu\cf4 :(
  5519. \f2\b \cf8 id
  5520. \f0\b0 \cf4 )sender \{\
  5521. _messageText.text = [NSString stringWithFormat:\cf6 @"%@\\r"\cf4 ,_messageText.text];\
  5522. [
  5523. \f2\b \cf8 self
  5524. \f0\b0 \cf4 textViewDidChange:_messageText];\
  5525. \
  5526. \}\
  5527. \
  5528. - (
  5529. \f2\b \cf8 void
  5530. \f0\b0 \cf4 )\cf11 textViewBtnAction\cf4 :(UIButton *)btn \{\
  5531. \
  5532. _messageText.inputView =
  5533. \f2\b \cf8 nil
  5534. \f0\b0 \cf4 ;\
  5535. [_messageText reloadInputViews];\
  5536. \}\
  5537. \
  5538. - (
  5539. \f2\b \cf8 void
  5540. \f0\b0 \cf4 ) \cf11 createPublicMenu\cf4 :(NSArray *) array \{\
  5541. \
  5542. UIButton *btn = [UIFactory createButtonWithImage:\cf6 @"jiangp"\cf4 selected:\cf6 @"jiangp"\cf4 target:
  5543. \f2\b \cf8 self
  5544. \f0\b0 \cf4 selector:
  5545. \f2\b \cf8 @selector
  5546. \f0\b0 \cf4 (publicMenuSwitch:)];\
  5547. btn.frame = CGRectMake(\cf7 10\cf4 , \cf7 8\cf4 , \cf7 32\cf4 , \cf7 32\cf4 );\
  5548. btn.selected =
  5549. \f2\b \cf8 NO
  5550. \f0\b0 \cf4 ;\
  5551. [_publicMenuBar addSubview:btn];\
  5552. \
  5553. \
  5554. CGFloat btnWidth = (JX_SCREEN_WIDTH - \cf7 52\cf4 ) / array.count;\
  5555. \f2\b \cf8 for
  5556. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < array.count; i ++) \{\
  5557. NSDictionary *dict = array[i];\
  5558. NSString *name = dict[\cf6 @"name"\cf4 ];\
  5559. btn = [[UIButton alloc] initWithFrame:CGRectMake(CGRectGetMaxX(btn.frame), \cf7 0\cf4 , btnWidth, _publicMenuBar.frame.size.height)];\
  5560. btn.tag = i;\
  5561. [btn addTarget:
  5562. \f2\b \cf8 self
  5563. \f0\b0 \cf4 action:
  5564. \f2\b \cf8 @selector
  5565. \f0\b0 \cf4 (publicMenuBtnAction:) forControlEvents:UIControlEventTouchUpInside];\
  5566. \
  5567. \f2\b \cf8 if
  5568. \f0\b0 \cf4 (i == \cf7 0\cf4 ) \{\
  5569. CGRect frame = btn.frame;\
  5570. frame.origin.x = \cf7 52\cf4 ;\
  5571. btn.frame = frame;\
  5572. \}\
  5573. btn.titleLabel.font = SYSFONT(\cf7 15.0\cf4 );\
  5574. [btn setTitleColor:[UIColor darkGrayColor] forState:UIControlStateNormal];\
  5575. [btn setTitle:name forState:UIControlStateNormal];\
  5576. [_publicMenuBar addSubview:btn];\
  5577. \
  5578. UIView *v = [[UIView alloc] initWithFrame:CGRectMake(btn.frame.origin.x, \cf7 0\cf4 , LINE_WH, _publicMenuBar.frame.size.height)];\
  5579. v.backgroundColor = THE_LINE_COLOR;\
  5580. [_publicMenuBar addSubview:v];\
  5581. \
  5582. CGSize size = [name boundingRectWithSize:CGSizeMake(MAXFLOAT, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:\cf7 @\{\cf4 NSFontAttributeName:SYSFONT(\cf7 15.0\cf4 )\cf7 \}\cf4 context:
  5583. \f2\b \cf8 nil
  5584. \f0\b0 \cf4 ].size;\
  5585. CGFloat imageX = (btnWidth - size.width) / \cf7 2\cf4 - \cf7 20\cf4 ;\
  5586. UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(imageX, (btn.frame.size.height - \cf7 16\cf4 ) / \cf7 2\cf4 , \cf7 15\cf4 , \cf7 15\cf4 )];\
  5587. imageView.image = [UIImage imageNamed:\cf6 @"public_menu"\cf4 ];\
  5588. [btn addSubview:imageView];\
  5589. \}\
  5590. \}\
  5591. \
  5592. - (
  5593. \f2\b \cf8 void
  5594. \f0\b0 \cf4 )\cf11 createSelectMoreView\cf4 \{\
  5595. \
  5596. _selectMoreView = [[UIView alloc] initWithFrame:
  5597. \f2\b \cf8 self
  5598. \f0\b0 \cf4 .tableFooter.bounds];\
  5599. _selectMoreView.hidden =
  5600. \f2\b \cf8 YES
  5601. \f0\b0 \cf4 ;\
  5602. _selectMoreView.backgroundColor = [UIColor whiteColor];\
  5603. [
  5604. \f2\b \cf8 self
  5605. \f0\b0 \cf4 .tableFooter addSubview:_selectMoreView];\
  5606. \
  5607. NSArray *imageNames = \cf7 @[\cf6 @"msf"\cf4 , \cf6 @"msc"\cf4 , \cf6 @"msd"\cf4 , \cf6 @"mse"\cf7 ]\cf4 ;\
  5608. CGFloat w = \cf7 40\cf4 ;\
  5609. CGFloat margin = (JX_SCREEN_WIDTH - imageNames.count * w) / (imageNames.count + \cf7 1\cf4 );\
  5610. CGFloat x = margin;\
  5611. \f2\b \cf8 for
  5612. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < imageNames.count; i ++) \{\
  5613. NSString *imageName = imageNames[i];\
  5614. UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(x, \cf7 5\cf4 , w, w)];\
  5615. [btn setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];\
  5616. btn.tag = i;\
  5617. [btn addTarget:
  5618. \f2\b \cf8 self
  5619. \f0\b0 \cf4 action:
  5620. \f2\b \cf8 @selector
  5621. \f0\b0 \cf4 (selectMoreViewBtnAction:) forControlEvents:UIControlEventTouchUpInside];\
  5622. [_selectMoreView addSubview:btn];\
  5623. \
  5624. x = CGRectGetMaxX(btn.frame) + margin;\
  5625. \}\
  5626. \}\
  5627. \
  5628. - (
  5629. \f2\b \cf8 void
  5630. \f0\b0 \cf4 )\cf11 selectMoreViewBtnAction\cf4 :(UIButton *)btn \{\
  5631. \
  5632. \f2\b \cf8 for
  5633. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i <
  5634. \f2\b \cf8 self
  5635. \f0\b0 \cf4 .selectMoreArr.count; i ++) \{\
  5636. JXMessageObject *msg1 =
  5637. \f2\b \cf8 self
  5638. \f0\b0 \cf4 .selectMoreArr[i];\
  5639. \f2\b \cf8 for
  5640. \f0\b0 \cf4 (NSInteger j = i + \cf7 1\cf4 ; j <
  5641. \f2\b \cf8 self
  5642. \f0\b0 \cf4 .selectMoreArr.count; j ++) \{\
  5643. JXMessageObject *msg2 =
  5644. \f2\b \cf8 self
  5645. \f0\b0 \cf4 .selectMoreArr[j];\
  5646. \f2\b \cf8 if
  5647. \f0\b0 \cf4 ([msg1.timeSend timeIntervalSince1970] > [msg2.timeSend timeIntervalSince1970]) \{\
  5648. JXMessageObject *msg = msg1;\
  5649. msg1 = msg2;\
  5650. \f2\b \cf8 self
  5651. \f0\b0 \cf4 .selectMoreArr[i] = msg2;\
  5652. msg2 = msg;\
  5653. \f2\b \cf8 self
  5654. \f0\b0 \cf4 .selectMoreArr[j] = msg;\
  5655. \}\
  5656. \}\
  5657. \}\
  5658. \
  5659. \f2\b \cf8 if
  5660. \f0\b0 \cf4 (
  5661. \f2\b \cf8 self
  5662. \f0\b0 \cf4 .selectMoreArr.count <= \cf7 0\cf4 ) \{\
  5663. [g_App showAlert:Localized(\cf6 @"JX_PleaseSelectTheMessageRecord"\cf4 )];\
  5664. \f2\b \cf8 return
  5665. \f0\b0 \cf4 ;\
  5666. \}\
  5667. \
  5668. \f2\b \cf8 switch
  5669. \f0\b0 \cf4 (btn.tag) \{\
  5670. \f2\b \cf8 case
  5671. \f0\b0 \cf4 \cf7 0\cf4 :\{ \cf2 //
  5672. \f1 \'c5\'fa\'c1\'bf\'d7\'aa\'b7\'a2
  5673. \f0 \cf4 \
  5674. \
  5675. memberData *data = [
  5676. \f2\b \cf8 self
  5677. \f0\b0 \cf4 .room getMember:g_myself.userId];\
  5678. \f2\b \cf8 if
  5679. \f0\b0 \cf4 ([data.role integerValue] == \cf7 4\cf4 ) \{\
  5680. [JXMyTools showTipView:\cf6 @"
  5681. \f1 \'d2\'fe\'c9\'ed\'c8\'cb\'b2\'bb\'c4\'dc\'d7\'aa\'b7\'a2\'cf\'fb\'cf\'a2
  5682. \f0 "\cf4 ];\
  5683. \f2\b \cf8 return
  5684. \f0\b0 \cf4 ;\
  5685. \}\
  5686. \
  5687. JXActionSheetVC *actionVC = [[JXActionSheetVC alloc] initWithImages:\cf7 @[]\cf4 names:\cf7 @[\cf4 Localized(\cf6 @"JX_OneByOneForward"\cf4 ),Localized(\cf6 @"JX_MergeAndForward"\cf4 )\cf7 ]\cf4 ];\
  5688. actionVC.tag = \cf7 2457\cf4 ;\
  5689. actionVC.delegate =
  5690. \f2\b \cf8 self
  5691. \f0\b0 \cf4 ;\
  5692. [
  5693. \f2\b \cf8 self
  5694. \f0\b0 \cf4 presentViewController:actionVC animated:
  5695. \f2\b \cf8 NO
  5696. \f0\b0 \cf4 completion:
  5697. \f2\b \cf8 nil
  5698. \f0\b0 \cf4 ];\
  5699. \}\
  5700. \
  5701. \f2\b \cf8 break
  5702. \f0\b0 \cf4 ;\
  5703. \f2\b \cf8 case
  5704. \f0\b0 \cf4 \cf7 1\cf4 :\{ \cf2 //
  5705. \f1 \'c5\'fa\'c1\'bf\'ca\'d5\'b2\'d8
  5706. \f0 \cf4 \
  5707. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:
  5708. \f2\b \cf8 nil
  5709. \f0\b0 \cf4 message:Localized(\cf6 @"JX_CollectedType"\cf4 ) delegate:
  5710. \f2\b \cf8 self
  5711. \f0\b0 \cf4 cancelButtonTitle:Localized(\cf6 @"JX_Cencal"\cf4 ) otherButtonTitles:Localized(\cf6 @"JX_Collection"\cf4 ),
  5712. \f2\b \cf8 nil
  5713. \f0\b0 \cf4 ];\
  5714. alert.tag = \cf7 2457\cf4 ;\
  5715. [alert show];\
  5716. \}\
  5717. \f2\b \cf8 break
  5718. \f0\b0 \cf4 ;\
  5719. \f2\b \cf8 case
  5720. \f0\b0 \cf4 \cf7 2\cf4 :\{ \cf2 //
  5721. \f1 \'c5\'fa\'c1\'bf\'c9\'be\'b3\'fd
  5722. \f0 \cf4 \
  5723. \
  5724. NSMutableString *msgIds = [NSMutableString string];\
  5725. \f2\b \cf8 for
  5726. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i <
  5727. \f2\b \cf8 self
  5728. \f0\b0 \cf4 .selectMoreArr.count; i ++) \{\
  5729. JXMessageObject *msg =
  5730. \f2\b \cf8 self
  5731. \f0\b0 \cf4 .selectMoreArr[i];\
  5732. NSInteger indexNum = -\cf7 1\cf4 ;\
  5733. \f2\b \cf8 for
  5734. \f0\b0 \cf4 (NSInteger j = \cf7 0\cf4 ; j < _array.count; j ++) \{\
  5735. JXMessageObject *msg1 = _array[j];\
  5736. \f2\b \cf8 if
  5737. \f0\b0 \cf4 ([msg1.messageId isEqualToString:msg.messageId]) \{\
  5738. \f2\b \cf8 if
  5739. \f0\b0 \cf4 (msgIds.length <= \cf7 0\cf4 ) \{\
  5740. [msgIds appendString:msg1.messageId];\
  5741. \}
  5742. \f2\b \cf8 else
  5743. \f0\b0 \cf4 \{\
  5744. [msgIds appendFormat:\cf6 @",%@"\cf4 ,msg1.messageId];\
  5745. \}\
  5746. indexNum = j;\
  5747. \f2\b \cf8 break
  5748. \f0\b0 \cf4 ;\
  5749. \}\
  5750. \}\
  5751. \
  5752. NSString* s;\
  5753. \f2\b \cf8 if
  5754. \f0\b0 \cf4 ([
  5755. \f2\b \cf8 self
  5756. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\
  5757. s =
  5758. \f2\b \cf8 self
  5759. \f0\b0 \cf4 .roomJid;\
  5760. \f2\b \cf8 else
  5761. \f0\b0 \cf4 \
  5762. s = chatPerson.userId;\
  5763. \
  5764. \
  5765. \f2\b \cf8 if
  5766. \f0\b0 \cf4 (indexNum == _array.count - \cf7 1\cf4 ) \{\
  5767. \f2\b \cf8 if
  5768. \f0\b0 \cf4 (indexNum <= \cf7 0\cf4 ) \{\
  5769. JXMessageObject *lastMsg = [_array firstObject];\
  5770. \f2\b \cf8 self
  5771. \f0\b0 \cf4 .lastMsg.content =
  5772. \f2\b \cf8 nil
  5773. \f0\b0 \cf4 ;\
  5774. [lastMsg updateLastSend:UpdateLastSendType_None];\
  5775. \}
  5776. \f2\b \cf8 else
  5777. \f0\b0 \cf4 \{\
  5778. JXMessageObject *newLastMsg = _array[indexNum - \cf7 1\cf4 ];\
  5779. \f2\b \cf8 self
  5780. \f0\b0 \cf4 .lastMsg.content = newLastMsg.content;\
  5781. [newLastMsg updateLastSend:UpdateLastSendType_None];\
  5782. \}\
  5783. \}\
  5784. \
  5785. \cf2 //
  5786. \f1 \'c9\'be\'b3\'fd\'b1\'be\'b5\'d8\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc
  5787. \f0 \cf4 \
  5788. [_array removeObjectAtIndex:indexNum];\
  5789. [msg
  5790. \f2\b \cf8 delete
  5791. \f0\b0 \cf4 ];\
  5792. \
  5793. [_table deleteRow:(
  5794. \f2\b \cf8 int
  5795. \f0\b0 \cf4 )indexNum section:\cf7 0\cf4 ];\
  5796. \
  5797. \}\
  5798. \
  5799. \f2\b \cf8 if
  5800. \f0\b0 \cf4 (msgIds.length > \cf7 0\cf4 ) \{\
  5801. \f2\b \cf8 int
  5802. \f0\b0 \cf4 type = \cf7 1\cf4 ;\
  5803. \f2\b \cf8 if
  5804. \f0\b0 \cf4 (
  5805. \f2\b \cf8 self
  5806. \f0\b0 \cf4 .roomJid) \{\
  5807. type = \cf7 2\cf4 ;\
  5808. \}\
  5809. \f2\b \cf8 self
  5810. \f0\b0 \cf4 .withdrawIndex = -\cf7 1\cf4 ;\
  5811. \cf2 // [g_server tigaseDeleteMsgWithMessageId:msgIds type:type deleteType:1 roomJid:self.roomJid toView:self];\cf4 \
  5812. [g_server tigaseDeleteMsgWithMessageId:msgIds type:type deleteType:\cf7 2\cf4 roomJid:
  5813. \f2\b \cf8 self
  5814. \f0\b0 \cf4 .roomJid deleteOrWithdraw:kWCMessageTypeSuperDelete toView:
  5815. \f2\b \cf8 self
  5816. \f0\b0 \cf4 ];\
  5817. \}\
  5818. \
  5819. \f2\b \cf8 if
  5820. \f0\b0 \cf4 (
  5821. \f2\b \cf8 self
  5822. \f0\b0 \cf4 .isSelectMore) \{\
  5823. [
  5824. \f2\b \cf8 self
  5825. \f0\b0 \cf4 actionQuit];\
  5826. \}\
  5827. \
  5828. \}\
  5829. \
  5830. \f2\b \cf8 break
  5831. \f0\b0 \cf4 ;\
  5832. \f2\b \cf8 case
  5833. \f0\b0 \cf4 \cf7 3\cf4 :\{\
  5834. JXActionSheetVC *actionVC = [[JXActionSheetVC alloc] initWithImages:\cf7 @[]\cf4 names:\cf7 @[\cf4 Localized(\cf6 @"JX_SaveToTheAlbum"\cf4 )\cf7 ]\cf4 ];\
  5835. actionVC.tag = \cf7 2458\cf4 ;\
  5836. actionVC.delegate =
  5837. \f2\b \cf8 self
  5838. \f0\b0 \cf4 ;\
  5839. [
  5840. \f2\b \cf8 self
  5841. \f0\b0 \cf4 presentViewController:actionVC animated:
  5842. \f2\b \cf8 NO
  5843. \f0\b0 \cf4 completion:
  5844. \f2\b \cf8 nil
  5845. \f0\b0 \cf4 ];\
  5846. \}\
  5847. \
  5848. \f2\b \cf8 break
  5849. \f0\b0 \cf4 ;\
  5850. \
  5851. \f2\b \cf8 default
  5852. \f0\b0 \cf4 :\
  5853. \f2\b \cf8 break
  5854. \f0\b0 \cf4 ;\
  5855. \}\
  5856. \}\
  5857. \
  5858. - (
  5859. \f2\b \cf8 void
  5860. \f0\b0 \cf4 )\cf11 inputBarSwitch\cf4 :(UIButton *)btn \{\
  5861. \f2\b \cf8 self
  5862. \f0\b0 \cf4 .view.backgroundColor = [UIColor whiteColor];\
  5863. \f2\b \cf8 self
  5864. \f0\b0 \cf4 .heightFooter = \cf7 49\cf4 ;\
  5865. [
  5866. \f2\b \cf8 self
  5867. \f0\b0 \cf4 hideKeyboard:
  5868. \f2\b \cf8 YES
  5869. \f0\b0 \cf4 ];\
  5870. _publicMenuBar.hidden =
  5871. \f2\b \cf8 NO
  5872. \f0\b0 \cf4 ;\
  5873. inputBar.hidden =
  5874. \f2\b \cf8 YES
  5875. \f0\b0 \cf4 ;\
  5876. [UIView animateWithDuration:\cf7 .3\cf4 animations:^\{\
  5877. \cf2 // _publicMenuBar.frame = CGRectMake(_publicMenuBar.frame.origin.x, 0, _publicMenuBar.frame.size.width, _publicMenuBar.frame.size.height);\cf4 \
  5878. \cf2 // inputBar.frame = CGRectMake(inputBar.frame.origin.x, self.tableFooter.frame.size.height, inputBar.frame.size.width, inputBar.frame.size.height);\cf4 \
  5879. \}];\
  5880. \}\
  5881. \
  5882. - (
  5883. \f2\b \cf8 void
  5884. \f0\b0 \cf4 )\cf11 publicMenuSwitch\cf4 :(UIButton *)btn \{\
  5885. [
  5886. \f2\b \cf8 self
  5887. \f0\b0 \cf4 setTableFooterFrame:_messageText];\
  5888. \f2\b \cf8 self
  5889. \f0\b0 \cf4 .view.backgroundColor = HEXCOLOR(\cf7 0xF9F9F9\cf4 );\
  5890. _publicMenuBar.hidden =
  5891. \f2\b \cf8 YES
  5892. \f0\b0 \cf4 ;\
  5893. inputBar.hidden =
  5894. \f2\b \cf8 NO
  5895. \f0\b0 \cf4 ;\
  5896. [UIView animateWithDuration:\cf7 .3\cf4 animations:^\{\
  5897. \cf2 // _publicMenuBar.frame = CGRectMake(_publicMenuBar.frame.origin.x, self.tableFooter.frame.size.height, _publicMenuBar.frame.size.width, _publicMenuBar.frame.size.height);\cf4 \
  5898. \cf2 // inputBar.frame = CGRectMake(inputBar.frame.origin.x, 0, inputBar.frame.size.width, inputBar.frame.size.height);\cf4 \
  5899. \}];\
  5900. \}\
  5901. \
  5902. - (
  5903. \f2\b \cf8 void
  5904. \f0\b0 \cf4 )\cf11 publicMenuBtnAction\cf4 :(UIButton *)btn \{\
  5905. UIWindow *window = [[UIApplication sharedApplication].delegate window];\
  5906. CGRect moreFrame = [
  5907. \f2\b \cf8 self
  5908. \f0\b0 \cf4 .tableFooter convertRect:btn.frame toView:window];\
  5909. \
  5910. \f2\b \cf8 self
  5911. \f0\b0 \cf4 .selMenuIndex = btn.tag;\
  5912. NSDictionary *dict = _menuList[btn.tag];\
  5913. NSArray *arr = dict[\cf6 @"menuList"\cf4 ];\
  5914. \
  5915. \f2\b \cf8 if
  5916. \f0\b0 \cf4 (!arr || arr.count <= \cf7 0\cf4 ) \{\
  5917. webpageVC *webVC = [webpageVC alloc];\
  5918. webVC.isGotoBack=
  5919. \f2\b \cf8 YES
  5920. \f0\b0 \cf4 ;\
  5921. webVC.isSend =
  5922. \f2\b \cf8 YES
  5923. \f0\b0 \cf4 ;\
  5924. webVC.title = [dict objectForKey:\cf6 @"name"\cf4 ];\
  5925. NSString * url = [NSString stringWithFormat:\cf6 @"%@"\cf4 ,[dict objectForKey:\cf6 @"url"\cf4 ]];\
  5926. url = [url stringByReplacingOccurrencesOfString:\cf6 @" "\cf4 withString:\cf6 @""\cf4 ];\
  5927. url = [url stringByReplacingOccurrencesOfString:\cf6 @"\\t"\cf4 withString:\cf6 @""\cf4 ];\
  5928. webVC.url = url;\
  5929. webVC = [webVC init];\
  5930. [g_navigation.navigationView addSubview:webVC.view];\
  5931. \cf2 // [g_navigation pushViewController:webVC animated:YES];\cf4 \
  5932. \f2\b \cf8 return
  5933. \f0\b0 \cf4 ;\
  5934. \}\
  5935. \
  5936. CGFloat maxWidth = \cf7 0\cf4 ;\
  5937. NSMutableArray *arrM = [NSMutableArray array];\
  5938. \f2\b \cf8 for
  5939. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < arr.count; i ++) \{\
  5940. NSDictionary *dict2 = arr[i];\
  5941. [arrM addObject:dict2[\cf6 @"name"\cf4 ]];\
  5942. NSString *str = dict2[\cf6 @"name"\cf4 ];\
  5943. CGSize size = [str boundingRectWithSize:CGSizeMake(MAXFLOAT, \cf7 20\cf4 ) options:NSStringDrawingUsesLineFragmentOrigin attributes:\cf7 @\{\cf4 NSFontAttributeName:SYSFONT(\cf7 15.0\cf4 )\cf7 \}\cf4 context:
  5944. \f2\b \cf8 nil
  5945. \f0\b0 \cf4 ].size;\
  5946. \f2\b \cf8 if
  5947. \f0\b0 \cf4 (size.width > maxWidth) \{\
  5948. maxWidth = size.width;\
  5949. \}\
  5950. \}\
  5951. JX_DownListView * downListView = [[JX_DownListView alloc] initWithFrame:
  5952. \f2\b \cf8 self
  5953. \f0\b0 \cf4 .view.bounds];\
  5954. downListView.listContents = arrM;\
  5955. downListView.color = HEXCOLOR(\cf7 0xf3f3f3\cf4 );\
  5956. downListView.textColor = [UIColor darkGrayColor];\
  5957. downListView.maxWidth = maxWidth;\
  5958. downListView.showType = DownListView_Center;\
  5959. \f2\b \cf8 __weak
  5960. \f0\b0 \cf4
  5961. \f2\b \cf8 typeof
  5962. \f0\b0 \cf4 (
  5963. \f2\b \cf8 self
  5964. \f0\b0 \cf4 ) weakSelf =
  5965. \f2\b \cf8 self
  5966. \f0\b0 \cf4 ;\
  5967. [downListView downlistPopOption:^(NSInteger index, NSString *content) \{\
  5968. [weakSelf showPublicMenuContent:index];\
  5969. \
  5970. \} whichFrame:moreFrame animate:
  5971. \f2\b \cf8 YES
  5972. \f0\b0 \cf4 ];\
  5973. [downListView show];\
  5974. \}\
  5975. \
  5976. - (
  5977. \f2\b \cf8 void
  5978. \f0\b0 \cf4 )\cf11 showPublicMenuContent\cf4 :(NSInteger)index \{\
  5979. \
  5980. NSDictionary *dict = _menuList[
  5981. \f2\b \cf8 self
  5982. \f0\b0 \cf4 .selMenuIndex];\
  5983. NSArray *arr = dict[\cf6 @"menuList"\cf4 ];\
  5984. NSDictionary *dict2 = arr[index];\
  5985. \
  5986. NSString *menuId = dict2[\cf6 @"menuId"\cf4 ];\
  5987. \f2\b \cf8 if
  5988. \f0\b0 \cf4 (menuId.length > \cf7 0\cf4 ) \{\
  5989. NSString * url = [NSString stringWithFormat:\cf6 @"%@?access_token=%@"\cf4 ,menuId,g_server.access_token];\
  5990. [g_server requestWithUrl:url toView:
  5991. \f2\b \cf8 self
  5992. \f0\b0 \cf4 ];\
  5993. \}
  5994. \f2\b \cf8 else
  5995. \f0\b0 \cf4 \{\
  5996. webpageVC *webVC = [webpageVC alloc];\
  5997. webVC.isGotoBack=
  5998. \f2\b \cf8 YES
  5999. \f0\b0 \cf4 ;\
  6000. webVC.isSend =
  6001. \f2\b \cf8 YES
  6002. \f0\b0 \cf4 ;\
  6003. webVC.title = [dict2 objectForKey:\cf6 @"name"\cf4 ];\
  6004. NSString * url = [NSString stringWithFormat:\cf6 @"%@"\cf4 ,[dict2 objectForKey:\cf6 @"url"\cf4 ]];\
  6005. url = [url stringByReplacingOccurrencesOfString:\cf6 @" "\cf4 withString:\cf6 @""\cf4 ];\
  6006. url = [url stringByReplacingOccurrencesOfString:\cf6 @"\\t"\cf4 withString:\cf6 @""\cf4 ];\
  6007. webVC.url = url;\
  6008. webVC = [webVC init];\
  6009. [g_navigation.navigationView addSubview:webVC.view];\
  6010. \cf2 // [g_navigation pushViewController:webVC animated:YES];\cf4 \
  6011. \}\
  6012. \}\
  6013. \
  6014. -(
  6015. \f2\b \cf8 void
  6016. \f0\b0 \cf4 )\cf11 initAudio\cf4 \{\
  6017. \cf2 // [[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; //
  6018. \f1 \'bd\'a8\'d2\'e9\'d4\'da\'b2\'a5\'b7\'c5\'d6\'ae\'c7\'b0\'c9\'e8\'d6\'c3
  6019. \f0 yes
  6020. \f1 \'a3\'ac\'b2\'a5\'b7\'c5\'bd\'e1\'ca\'f8\'c9\'e8\'d6\'c3
  6021. \f0 NO
  6022. \f1 \'a3\'ac\'d5\'e2\'b8\'f6\'b9\'a6\'c4\'dc\'ca\'c7\'bf\'aa\'c6\'f4\'ba\'ec\'cd\'e2\'b8\'d0\'d3\'a6
  6023. \f0 \cf4 \
  6024. \
  6025. \cf2 //
  6026. \f1 \'cc\'ed\'bc\'d3\'bc\'e0\'cc\'fd
  6027. \f0 \cf4 \
  6028. [g_notify addObserver:
  6029. \f2\b \cf8 self
  6030. \f0\b0 \cf4 selector:
  6031. \f2\b \cf8 @selector
  6032. \f0\b0 \cf4 (readTypeMsgCome:) name:kXMPPMessageReadTypeNotification object:
  6033. \f2\b \cf8 nil
  6034. \f0\b0 \cf4 ];\
  6035. [g_notify addObserver:
  6036. \f2\b \cf8 self
  6037. \f0\b0 \cf4 selector:
  6038. \f2\b \cf8 @selector
  6039. \f0\b0 \cf4 (readTypeMsgReceipt:) name:kXMPPMessageReadTypeReceiptNotification object:
  6040. \f2\b \cf8 nil
  6041. \f0\b0 \cf4 ];\
  6042. [g_notify addObserver:
  6043. \f2\b \cf8 self
  6044. \f0\b0 \cf4 selector:
  6045. \f2\b \cf8 @selector
  6046. \f0\b0 \cf4 (sendText:) name:kSendInputNotifaction object:
  6047. \f2\b \cf8 nil
  6048. \f0\b0 \cf4 ];\
  6049. [g_notify addObserver:
  6050. \f2\b \cf8 self
  6051. \f0\b0 \cf4 selector:
  6052. \f2\b \cf8 @selector
  6053. \f0\b0 \cf4 (newMsgCome:) name:kXMPPNewMsgNotifaction object:
  6054. \f2\b \cf8 nil
  6055. \f0\b0 \cf4 ];\
  6056. [g_notify addObserver:
  6057. \f2\b \cf8 self
  6058. \f0\b0 \cf4 selector:
  6059. \f2\b \cf8 @selector
  6060. \f0\b0 \cf4 (showMsg:) name:kXMPPShowMsgNotifaction object:
  6061. \f2\b \cf8 nil
  6062. \f0\b0 \cf4 ];\
  6063. [g_notify addObserver:
  6064. \f2\b \cf8 self
  6065. \f0\b0 \cf4 selector:
  6066. \f2\b \cf8 @selector
  6067. \f0\b0 \cf4 (newReceipt:) name:kXMPPReceiptNotifaction object:
  6068. \f2\b \cf8 nil
  6069. \f0\b0 \cf4 ];\
  6070. [g_notify addObserver:
  6071. \f2\b \cf8 self
  6072. \f0\b0 \cf4 selector:
  6073. \f2\b \cf8 @selector
  6074. \f0\b0 \cf4 (onReceiveFile:) name:kXMPPReceiveFileNotifaction object:
  6075. \f2\b \cf8 nil
  6076. \f0\b0 \cf4 ];\
  6077. [g_notify addObserver:
  6078. \f2\b \cf8 self
  6079. \f0\b0 \cf4 selector:
  6080. \f2\b \cf8 @selector
  6081. \f0\b0 \cf4 (onSendTimeout:) name:kXMPPSendTimeOutNotifaction object:
  6082. \f2\b \cf8 nil
  6083. \f0\b0 \cf4 ];\
  6084. [g_notify addObserver:
  6085. \f2\b \cf8 self
  6086. \f0\b0 \cf4 selector:
  6087. \f2\b \cf8 @selector
  6088. \f0\b0 \cf4 (onQuitRoom:) name:kQuitRoomNotifaction object:
  6089. \f2\b \cf8 nil
  6090. \f0\b0 \cf4 ];\
  6091. \cf2 // [g_notify addObserver:self selector:@selector(changeKeyBoard:) name:UIKeyboardWillShowNotification object:nil];\cf4 \
  6092. [g_notify addObserver:
  6093. \f2\b \cf8 self
  6094. \f0\b0 \cf4 selector:
  6095. \f2\b \cf8 @selector
  6096. \f0\b0 \cf4 (onReceiveRoomRemind:) name:kXMPPRoomNotifaction object:
  6097. \f2\b \cf8 nil
  6098. \f0\b0 \cf4 ];\
  6099. \cf2 // [g_notify addObserver:self selector:@selector(onLoginChanged:) name:kXmppLoginNotifaction object:nil];//
  6100. \f1 \'b5\'c7\'c2\'bc\'d7\'b4\'cc\'ac\'b8\'c4\'b1\'e4
  6101. \f0 \cf4 \
  6102. \cf2 //
  6103. \f1 \'d5\'fd\'d4\'da\'ca\'e4\'c8\'eb
  6104. \f0 \cf4 \
  6105. [g_notify addObserver:
  6106. \f2\b \cf8 self
  6107. \f0\b0 \cf4 selector:
  6108. \f2\b \cf8 @selector
  6109. \f0\b0 \cf4 (enteringNotifi:) name:kXMPPMessageEnteringNotification object:
  6110. \f2\b \cf8 nil
  6111. \f0\b0 \cf4 ];\
  6112. \cf2 //
  6113. \f1 \'b3\'b7\'bb\'d8\'cf\'fb\'cf\'a2
  6114. \f0 \cf4 \
  6115. [g_notify addObserver:
  6116. \f2\b \cf8 self
  6117. \f0\b0 \cf4 selector:
  6118. \f2\b \cf8 @selector
  6119. \f0\b0 \cf4 (withdrawNotifi:) name:kXMPPMessageWithdrawNotification object:
  6120. \f2\b \cf8 nil
  6121. \f0\b0 \cf4 ];\
  6122. [g_notify addObserver:
  6123. \f2\b \cf8 self
  6124. \f0\b0 \cf4 selector:
  6125. \f2\b \cf8 @selector
  6126. \f0\b0 \cf4 (actionQuitChatVC:) name:kActionRelayQuitVC object:
  6127. \f2\b \cf8 nil
  6128. \f0\b0 \cf4 ];\
  6129. \cf2 //
  6130. \f1 \'c9\'be\'b3\'fd\'ba\'c3\'d3\'d1
  6131. \f0 \cf4 \
  6132. [g_notify addObserver:
  6133. \f2\b \cf8 self
  6134. \f0\b0 \cf4 selector:
  6135. \f2\b \cf8 @selector
  6136. \f0\b0 \cf4 (delFriend:) name:kDeleteUserNotifaction object:
  6137. \f2\b \cf8 nil
  6138. \f0\b0 \cf4 ];\
  6139. \cf2 //
  6140. \f1 \'d5\'6e\'b3\'cc\'cf\'fb\'cf\'a2
  6141. \f0 \cf4 \
  6142. [g_notify addObserver:
  6143. \f2\b \cf8 self
  6144. \f0\b0 \cf4 selector:
  6145. \f2\b \cf8 @selector
  6146. \f0\b0 \cf4 (sendCourseMsg:) name:kSendCourseMsg object:
  6147. \f2\b \cf8 nil
  6148. \f0\b0 \cf4 ];\
  6149. \cf2 //
  6150. \f1 \'d0\'de\'b8\'c4\'b1\'b8\'d7\'a2
  6151. \f0 \cf4 \
  6152. [g_notify addObserver:
  6153. \f2\b \cf8 self
  6154. \f0\b0 \cf4 selector:
  6155. \f2\b \cf8 @selector
  6156. \f0\b0 \cf4 (friendRemarkNotifi:) name:kFriendRemark object:
  6157. \f2\b \cf8 nil
  6158. \f0\b0 \cf4 ];\
  6159. \cf2 //
  6160. \f1 \'c8\'ba\'b3\'c9\'d4\'b1\'b8\'fc\'d0\'c2
  6161. \f0 \cf4 \
  6162. [g_notify addObserver:
  6163. \f2\b \cf8 self
  6164. \f0\b0 \cf4 selector:
  6165. \f2\b \cf8 @selector
  6166. \f0\b0 \cf4 (roomMembersRefreshNotifi:) name:kRoomMembersRefresh object:
  6167. \f2\b \cf8 nil
  6168. \f0\b0 \cf4 ];\
  6169. \cf2 //
  6170. \f1 \'c9\'e8\'d6\'c3\'c1\'c4\'cc\'ec\'b1\'b3\'be\'b0
  6171. \f0 \cf4 \
  6172. [g_notify addObserver:
  6173. \f2\b \cf8 self
  6174. \f0\b0 \cf4 selector:
  6175. \f2\b \cf8 @selector
  6176. \f0\b0 \cf4 (setBackGroundImageViewNotifi:) name:kSetBackGroundImageView object:
  6177. \f2\b \cf8 nil
  6178. \f0\b0 \cf4 ];\
  6179. \
  6180. [g_notify addObserver:
  6181. \f2\b \cf8 self
  6182. \f0\b0 \cf4 selector:
  6183. \f2\b \cf8 @selector
  6184. \f0\b0 \cf4 (showCallMsg:) name:UpdateAcceptCallMsg object:
  6185. \f2\b \cf8 nil
  6186. \f0\b0 \cf4 ];\
  6187. \
  6188. \cf2 //[self.tableFooter addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionNew context:nil];\cf4 \
  6189. \}\
  6190. \
  6191. -(
  6192. \f2\b \cf8 void
  6193. \f0\b0 \cf4 )\cf11 unInitAudio\cf4 \{\
  6194. \cf2 // [[UIDevice currentDevice] setProximityMonitoringEnabled:NO]; //
  6195. \f1 \'bd\'a8\'d2\'e9\'d4\'da\'b2\'a5\'b7\'c5\'d6\'ae\'c7\'b0\'c9\'e8\'d6\'c3
  6196. \f0 yes
  6197. \f1 \'a3\'ac\'b2\'a5\'b7\'c5\'bd\'e1\'ca\'f8\'c9\'e8\'d6\'c3
  6198. \f0 NO
  6199. \f1 \'a3\'ac\'d5\'e2\'b8\'f6\'b9\'a6\'c4\'dc\'ca\'c7\'bf\'aa\'c6\'f4\'ba\'ec\'cd\'e2\'b8\'d0\'d3\'a6
  6200. \f0 \cf4 \
  6201. \
  6202. \cf2 //
  6203. \f1 \'d2\'c6\'b3\'fd\'bc\'e0\'cc\'fd
  6204. \f0 \cf4 \
  6205. [g_notify removeObserver:
  6206. \f2\b \cf8 self
  6207. \f0\b0 \cf4 ];\
  6208. [g_notify removeObserver:
  6209. \f2\b \cf8 self
  6210. \f0\b0 \cf4 name:kXMPPNewMsgNotifaction object:
  6211. \f2\b \cf8 nil
  6212. \f0\b0 \cf4 ];\
  6213. [g_notify removeObserver:
  6214. \f2\b \cf8 self
  6215. \f0\b0 \cf4 name:kXMPPSendTimeOutNotifaction object:
  6216. \f2\b \cf8 nil
  6217. \f0\b0 \cf4 ];\
  6218. [g_notify removeObserver:
  6219. \f2\b \cf8 self
  6220. \f0\b0 \cf4 name:kXMPPReceiptNotifaction object:
  6221. \f2\b \cf8 nil
  6222. \f0\b0 \cf4 ];\
  6223. [g_notify removeObserver:
  6224. \f2\b \cf8 self
  6225. \f0\b0 \cf4 name:kSendInputNotifaction object:
  6226. \f2\b \cf8 nil
  6227. \f0\b0 \cf4 ];\
  6228. [g_notify removeObserver:
  6229. \f2\b \cf8 self
  6230. \f0\b0 \cf4 name:kXMPPReceiveFileNotifaction object:
  6231. \f2\b \cf8 nil
  6232. \f0\b0 \cf4 ];\
  6233. [g_notify removeObserver:
  6234. \f2\b \cf8 self
  6235. \f0\b0 \cf4 name:UIKeyboardWillShowNotification object:
  6236. \f2\b \cf8 nil
  6237. \f0\b0 \cf4 ];\
  6238. [g_notify removeObserver:
  6239. \f2\b \cf8 self
  6240. \f0\b0 \cf4 name:kQuitRoomNotifaction object:
  6241. \f2\b \cf8 nil
  6242. \f0\b0 \cf4 ];\
  6243. [g_notify removeObserver:
  6244. \f2\b \cf8 self
  6245. \f0\b0 \cf4 name:kXMPPRoomNotifaction object:
  6246. \f2\b \cf8 nil
  6247. \f0\b0 \cf4 ];\
  6248. [g_notify removeObserver:
  6249. \f2\b \cf8 self
  6250. \f0\b0 \cf4 name:kXmppLoginNotifaction object:
  6251. \f2\b \cf8 nil
  6252. \f0\b0 \cf4 ];\
  6253. [g_notify removeObserver:
  6254. \f2\b \cf8 self
  6255. \f0\b0 \cf4 name:kXMPPMessageEnteringNotification object:
  6256. \f2\b \cf8 nil
  6257. \f0\b0 \cf4 ];\
  6258. [g_notify removeObserver:
  6259. \f2\b \cf8 self
  6260. \f0\b0 \cf4 name:kXMPPMessageWithdrawNotification object:
  6261. \f2\b \cf8 nil
  6262. \f0\b0 \cf4 ];\
  6263. [g_notify removeObserver:
  6264. \f2\b \cf8 self
  6265. \f0\b0 \cf4 name:kSendCourseMsg object:
  6266. \f2\b \cf8 nil
  6267. \f0\b0 \cf4 ];\
  6268. [g_notify removeObserver:
  6269. \f2\b \cf8 self
  6270. \f0\b0 \cf4 name:kFriendRemark object:
  6271. \f2\b \cf8 nil
  6272. \f0\b0 \cf4 ];\
  6273. [g_notify removeObserver:
  6274. \f2\b \cf8 self
  6275. \f0\b0 \cf4 name:UpdateAcceptCallMsg object:
  6276. \f2\b \cf8 nil
  6277. \f0\b0 \cf4 ];\
  6278. \
  6279. \cf2 // [self.tableFooter removeObserver:self forKeyPath:@"frame"];\cf4 \
  6280. \}\
  6281. \
  6282. - (
  6283. \f2\b \cf8 void
  6284. \f0\b0 \cf4 )\cf11 observeValueForKeyPath\cf4 :(NSString *)keyPath \cf11 ofObject\cf4 :(
  6285. \f2\b \cf8 id
  6286. \f0\b0 \cf4 )object \cf11 change\cf4 :(NSDictionary<NSKeyValueChangeKey,
  6287. \f2\b \cf8 id
  6288. \f0\b0 \cf4 > *)change \cf11 context\cf4 :(
  6289. \f2\b \cf8 void
  6290. \f0\b0 \cf4 *)context \{\
  6291. \
  6292. \f2\b \cf8 if
  6293. \f0\b0 \cf4 (THE_DEVICE_HAVE_HEAD) \{\
  6294. \f2\b \cf8 id
  6295. \f0\b0 \cf4 newValue = [change objectForKey:NSKeyValueChangeNewKey];\
  6296. CGRect newFrame = [newValue CGRectValue];\
  6297. \f2\b \cf8 int
  6298. \f0\b0 \cf4 n = (
  6299. \f2\b \cf8 int
  6300. \f0\b0 \cf4 )newFrame.origin.y;\
  6301. \f2\b \cf8 int
  6302. \f0\b0 \cf4 m = (
  6303. \f2\b \cf8 int
  6304. \f0\b0 \cf4 )(
  6305. \f2\b \cf8 self
  6306. \f0\b0 \cf4 .view.frame.size.height -
  6307. \f2\b \cf8 self
  6308. \f0\b0 \cf4 .heightFooter);\
  6309. \
  6310. \f2\b \cf8 if
  6311. \f0\b0 \cf4 (fabs(n - m) < \cf7 2\cf4 ) \{\
  6312. \
  6313. \f2\b \cf8 self
  6314. \f0\b0 \cf4 .tableFooter.frame = CGRectMake(\cf7 0\cf4 , JX_SCREEN_HEIGHT-
  6315. \f2\b \cf8 self
  6316. \f0\b0 \cf4 .heightFooter - \cf7 35\cf4 , JX_SCREEN_WIDTH,
  6317. \f2\b \cf8 self
  6318. \f0\b0 \cf4 .heightFooter);\
  6319. _table.frame =CGRectMake(\cf7 0\cf4 ,
  6320. \f2\b \cf8 self
  6321. \f0\b0 \cf4 .heightHeader+_noticeHeight,self_width,JX_SCREEN_HEIGHT-
  6322. \f2\b \cf8 self
  6323. \f0\b0 \cf4 .heightHeader-
  6324. \f2\b \cf8 self
  6325. \f0\b0 \cf4 .heightFooter - \cf7 35\cf4 -_noticeHeight);\
  6326. \}\
  6327. \}\
  6328. \}\
  6329. \
  6330. - (
  6331. \f2\b \cf8 void
  6332. \f0\b0 \cf4 )\cf11 setBackGroundImageViewNotifi\cf4 :(NSNotification *)notif \{\
  6333. UIImage *image = notif.object;\
  6334. \f2\b \cf8 if
  6335. \f0\b0 \cf4 (image) \{\
  6336. _table.backgroundColor = [UIColor clearColor];\
  6337. \f2\b \cf8 self
  6338. \f0\b0 \cf4 .backGroundImageView.image = image;\
  6339. \}
  6340. \f2\b \cf8 else
  6341. \f0\b0 \cf4 \{\
  6342. \f2\b \cf8 self
  6343. \f0\b0 \cf4 .backGroundImageView.image =
  6344. \f2\b \cf8 nil
  6345. \f0\b0 \cf4 ;\
  6346. _table.backgroundColor = HEXCOLOR(\cf7 0xF2F2F2\cf4 );\
  6347. \}\
  6348. \}\
  6349. \
  6350. -(
  6351. \f2\b \cf8 void
  6352. \f0\b0 \cf4 )\cf11 friendRemarkNotifi\cf4 :(NSNotification *)notif \{\
  6353. \
  6354. \f2\b \cf8 if
  6355. \f0\b0 \cf4 (
  6356. \f2\b \cf8 self
  6357. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 ) \{\
  6358. \f2\b \cf8 return
  6359. \f0\b0 \cf4 ;\
  6360. \}\
  6361. JXUserObject *user = notif.object;\
  6362. \f2\b \cf8 if
  6363. \f0\b0 \cf4 ([user.userId isEqualToString:chatPerson.userId]) \{\
  6364. [
  6365. \f2\b \cf8 self
  6366. \f0\b0 \cf4 setChatTitle:user.remarkName.length > \cf7 0\cf4 ? user.remarkName : user.userNickname];\
  6367. \}\
  6368. \}\
  6369. \
  6370. - (
  6371. \f2\b \cf8 void
  6372. \f0\b0 \cf4 )\cf11 roomMembersRefreshNotifi\cf4 :(NSNotification *)notif \{\
  6373. \
  6374. \cf2 // NSArray * memberArray = [memberData fetchAllMembers:_room.roomId];\cf4 \
  6375. \f2\b \cf8 int
  6376. \f0\b0 \cf4 userSize = [notif.object intValue];\
  6377. \f2\b \cf8 self
  6378. \f0\b0 \cf4 .title = [NSString stringWithFormat:\cf6 @"%@(%d)"\cf4 ,
  6379. \f2\b \cf8 self
  6380. \f0\b0 \cf4 .chatPerson.userNickname, userSize];\
  6381. \
  6382. [
  6383. \f2\b \cf8 self
  6384. \f0\b0 \cf4 setAudioIconFrame];\
  6385. \}\
  6386. \
  6387. - (
  6388. \f2\b \cf8 void
  6389. \f0\b0 \cf4 )\cf11 actionQuitChatVC\cf4 :(NSNotification *)notif \{\
  6390. \f2\b \cf8 self
  6391. \f0\b0 \cf4 .isSelectMore =
  6392. \f2\b \cf8 NO
  6393. \f0\b0 \cf4 ;\
  6394. [
  6395. \f2\b \cf8 self
  6396. \f0\b0 \cf4 actionQuit];\
  6397. \}\
  6398. \
  6399. - (
  6400. \f2\b \cf8 void
  6401. \f0\b0 \cf4 )\cf11 delFriend\cf4 :(NSNotification *)notif \{\
  6402. JXUserObject* user = (JXUserObject *)notif.object;\
  6403. \
  6404. \f2\b \cf8 if
  6405. \f0\b0 \cf4 ([chatPerson.userId isEqualToString:user.userId]) \{\
  6406. [
  6407. \f2\b \cf8 self
  6408. \f0\b0 \cf4 actionQuit];\
  6409. \}\
  6410. \}\
  6411. \
  6412. \
  6413. - (
  6414. \f2\b \cf8 void
  6415. \f0\b0 \cf4 )\cf11 sendCourseMsg\cf4 :(NSNotification *)notif \{\
  6416. JXMessageObject *msg = (JXMessageObject *)notif.object;\
  6417. \f2\b \cf8 if
  6418. \f0\b0 \cf4 ([msg.toUserId isEqualToString:chatPerson.userId]) \{\
  6419. [
  6420. \f2\b \cf8 self
  6421. \f0\b0 \cf4 showOneMsg:msg];\
  6422. \}\
  6423. \}\
  6424. \
  6425. \cf2 //
  6426. \f1 \'c8\'ba\'cd\'b7\'cf\'ce\'cb\'a2\'d0\'c2
  6427. \f0 \cf4 \
  6428. - (
  6429. \f2\b \cf8 void
  6430. \f0\b0 \cf4 )\cf11 groupLevelNameRefresh\cf4 :(NSNotification *)note \{\
  6431. _groupLevelNameArray = note.object;\
  6432. [
  6433. \f2\b \cf8 self
  6434. \f0\b0 \cf4 refresh:
  6435. \f2\b \cf8 nil
  6436. \f0\b0 \cf4 ];\
  6437. [_table reloadData];\
  6438. \
  6439. \}\
  6440. \
  6441. -(
  6442. \f2\b \cf8 void
  6443. \f0\b0 \cf4 )\cf11 refresh\cf4 :(JXMessageObject*)msg\
  6444. \{\
  6445. _isRefreshing =
  6446. \f2\b \cf8 YES
  6447. \f0\b0 \cf4 ;\
  6448. \f2\b \cf8 if
  6449. \f0\b0 \cf4 (
  6450. \f2\b \cf8 self
  6451. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 ) \{\
  6452. NSMutableArray *arr = [NSMutableArray array];\
  6453. \f2\b \cf8 for
  6454. \f0\b0 \cf4 (NSDictionary *dict
  6455. \f2\b \cf8 in
  6456. \f0\b0 \cf4
  6457. \f2\b \cf8 self
  6458. \f0\b0 \cf4 .courseArray) \{\
  6459. [arr addObject:dict[\cf6 @"message"\cf4 ]];\
  6460. \}\
  6461. _array = arr;\
  6462. [_table gotoLastRow:
  6463. \f2\b \cf8 NO
  6464. \f0\b0 \cf4 ];\
  6465. \f2\b \cf8 self
  6466. \f0\b0 \cf4 .isShowHeaderPull =
  6467. \f2\b \cf8 NO
  6468. \f0\b0 \cf4 ;\
  6469. \f2\b \cf8 return
  6470. \f0\b0 \cf4 ;\
  6471. \}\
  6472. \
  6473. \f2\b \cf8 if
  6474. \f0\b0 \cf4 (_chatLogArray.count > \cf7 0\cf4 ) \{\
  6475. _array =
  6476. \f2\b \cf8 self
  6477. \f0\b0 \cf4 .chatLogArray;\
  6478. [
  6479. \f2\b \cf8 self
  6480. \f0\b0 \cf4 .tableView reloadData];\
  6481. \f2\b \cf8 self
  6482. \f0\b0 \cf4 .isShowFooterPull =
  6483. \f2\b \cf8 NO
  6484. \f0\b0 \cf4 ;\
  6485. \f2\b \cf8 return
  6486. \f0\b0 \cf4 ;\
  6487. \}\
  6488. \
  6489. [_messageText setInputView:
  6490. \f2\b \cf8 nil
  6491. \f0\b0 \cf4 ];\
  6492. [_messageText resignFirstResponder];\
  6493. \f2\b \cf8 BOOL
  6494. \f0\b0 \cf4 b=
  6495. \f2\b \cf8 YES
  6496. \f0\b0 \cf4 ;\
  6497. \f2\b \cf8 BOOL
  6498. \f0\b0 \cf4 bPull=
  6499. \f2\b \cf8 NO
  6500. \f0\b0 \cf4 ;\
  6501. NSInteger firstNum = \cf7 1\cf4 ;\
  6502. \f2\b \cf8 if
  6503. \f0\b0 \cf4 ([_array count]>\cf7 0\cf4 )\
  6504. firstNum = _array.count;\
  6505. \
  6506. \
  6507. CGFloat allHeight = \cf7 0\cf4 ;\
  6508. \f2\b \cf8 if
  6509. \f0\b0 \cf4 (msg ==
  6510. \f2\b \cf8 nil
  6511. \f0\b0 \cf4 )\{\
  6512. NSString* s;\
  6513. \f2\b \cf8 if
  6514. \f0\b0 \cf4 ([
  6515. \f2\b \cf8 self
  6516. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\
  6517. s =
  6518. \f2\b \cf8 self
  6519. \f0\b0 \cf4 .roomJid;\
  6520. \f2\b \cf8 else
  6521. \f0\b0 \cf4 \
  6522. s = chatPerson.userId;\
  6523. NSMutableArray* p;\
  6524. \f2\b \cf8 if
  6525. \f0\b0 \cf4 (
  6526. \f2\b \cf8 self
  6527. \f0\b0 \cf4 .isGetServerMsg) \{\
  6528. \cf2 //
  6529. \f1 \'bb\'f1\'c8\'a1\'c2\'fe\'d3\'ce\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc
  6530. \f0 \cf4 \
  6531. [_wait start];\
  6532. \f2\b \cf8 long
  6533. \f0\b0 \cf4 starTime;\
  6534. \f2\b \cf8 long
  6535. \f0\b0 \cf4 endTime;\
  6536. JXSynTask *task = _taskList.firstObject;\
  6537. \f2\b \cf8 if
  6538. \f0\b0 \cf4 (task &&
  6539. \f2\b \cf8 self
  6540. \f0\b0 \cf4 .roomJid.length > \cf7 0\cf4 ) \{\
  6541. starTime = [task.startTime timeIntervalSince1970] * \cf7 1000\cf4 ;\
  6542. endTime = [task.endTime timeIntervalSince1970] * \cf7 1000\cf4 ;\
  6543. \}
  6544. \f2\b \cf8 else
  6545. \f0\b0 \cf4 \{\
  6546. JXMessageObject *msg = _array.firstObject;\
  6547. \cf2 // 7
  6548. \f1 \'cc\'ec\'c7\'b0\'b5\'c4\'ca\'b1\'bc\'e4\'b4\'c1
  6549. \f0 \cf4 \
  6550. endTime = [msg.timeSend timeIntervalSince1970] * \cf7 1000\cf4 ;\
  6551. \f2\b \cf8 if
  6552. \f0\b0 \cf4 (endTime == \cf7 0\cf4 ) \{\
  6553. endTime = [[NSDate date] timeIntervalSince1970] * \cf7 1000\cf4 ;\
  6554. \}\
  6555. starTime = \cf7 1262275200000\cf4 ;\
  6556. \}\
  6557. \
  6558. starTime = starTime/\cf7 1000\cf4 ;\
  6559. endTime = endTime/\cf7 1000\cf4 ;\
  6560. \
  6561. \cf2 //
  6562. \f1 \'d0\'c5\'cf\'a2\'b5\'c4\'b7\'a2\'cb\'cd\'ca\'b1\'bc\'e4
  6563. \f0 < starTime = endTime - chatSyncTimeLen; retren;\cf4 \
  6564. \
  6565. \f2\b \cf8 long
  6566. \f0\b0 \cf4 chatSyncTimeLen = \cf7 0\cf4 ;\
  6567. \f2\b \cf8 switch
  6568. \f0\b0 \cf4 ([g_myself.chatSyncTimeLen integerValue]) \{\
  6569. \f2\b \cf8 case
  6570. \f0\b0 \cf4 \cf7 0\cf4 : \cf2 // 0.04 1
  6571. \f1 \'d0\'a1\'ca\'b1
  6572. \f0 \cf4 \
  6573. chatSyncTimeLen = \cf7 3600\cf4 ;\
  6574. \f2\b \cf8 break
  6575. \f0\b0 \cf4 ;\
  6576. \f2\b \cf8 case
  6577. \f0\b0 \cf4 \cf7 1\cf4 : \cf2 // 1
  6578. \f1 \'cc\'ec
  6579. \f0 \cf4 \
  6580. chatSyncTimeLen = \cf7 86400\cf4 ;\
  6581. \f2\b \cf8 break
  6582. \f0\b0 \cf4 ;\
  6583. \f2\b \cf8 case
  6584. \f0\b0 \cf4 \cf7 7\cf4 : \cf2 // 7
  6585. \f1 \'cc\'ec
  6586. \f0 \cf4 \
  6587. chatSyncTimeLen = \cf7 604800\cf4 ;\
  6588. \f2\b \cf8 break
  6589. \f0\b0 \cf4 ;\
  6590. \f2\b \cf8 case
  6591. \f0\b0 \cf4 \cf7 30\cf4 : \cf2 // 30
  6592. \f1 \'cc\'ec
  6593. \f0 \cf4 \
  6594. chatSyncTimeLen = \cf7 2629800\cf4 ;\
  6595. \f2\b \cf8 break
  6596. \f0\b0 \cf4 ;\
  6597. \f2\b \cf8 case
  6598. \f0\b0 \cf4 \cf7 90\cf4 : \cf2 // 90
  6599. \f1 \'cc\'ec
  6600. \f0 \cf4 \
  6601. chatSyncTimeLen = \cf7 7889400\cf4 ;\
  6602. \f2\b \cf8 break
  6603. \f0\b0 \cf4 ;\
  6604. \f2\b \cf8 case
  6605. \f0\b0 \cf4 \cf7 365\cf4 : \cf2 //365
  6606. \f1 \'cc\'ec
  6607. \f0 \cf4 \
  6608. chatSyncTimeLen = \cf7 31557600\cf4 ;\
  6609. \f2\b \cf8 break
  6610. \f0\b0 \cf4 ;\
  6611. \f2\b \cf8 case
  6612. \f0\b0 \cf4 -\cf7 1\cf4 : \cf2 //
  6613. \f1 \'d3\'c0\'be\'c3
  6614. \f0 (20
  6615. \f1 \'c4\'ea
  6616. \f0 )\cf4 \
  6617. chatSyncTimeLen = \cf7 631152000\cf4 ;\
  6618. \f2\b \cf8 break
  6619. \f0\b0 \cf4 ;\
  6620. \f2\b \cf8 default
  6621. \f0\b0 \cf4 :\
  6622. \f2\b \cf8 break
  6623. \f0\b0 \cf4 ;\
  6624. \}\
  6625. \f2\b \cf8 long
  6626. \f0\b0 \cf4 currentTime = [[NSDate date] timeIntervalSince1970];\
  6627. \f2\b \cf8 long
  6628. \f0\b0 \cf4 minSyncTime = currentTime - chatSyncTimeLen;\
  6629. \
  6630. \f2\b \cf8 if
  6631. \f0\b0 \cf4 (endTime <= minSyncTime) \{\
  6632. starTime = minSyncTime;\
  6633. endTime = currentTime;\
  6634. \}\
  6635. endTime = endTime*\cf7 1000\cf4 ;\
  6636. starTime = starTime*\cf7 1000\cf4 ;\
  6637. \cf2 // //
  6638. \f1 \'c8\'ba\'d7\'e9\'c9\'be\'b3\'fd\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc\'ca\'b1\'bc\'e4
  6639. \f0 \cf4 \
  6640. \cf2 // NSInteger time1 = 0;\cf4 \
  6641. \cf2 // if ([g_default valueForKey:self.roomId] && ([self.roomJid length]>0)) \{\cf4 \
  6642. \cf2 // time1 = [[g_default valueForKey:self.roomId] integerValue];\cf4 \
  6643. \cf2 // \}\cf4 \
  6644. \cf2 // NSNumber *lastClearRecordTime = [NSNumber numberWithInteger:time1];\cf4 \
  6645. \cf2 // //
  6646. \f1 \'c9\'e8\'d6\'c3\'c9\'be\'b3\'fd\'cb\'f9\'d3\'d0\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc\'ca\'b1\'bc\'e4
  6647. \f0 \cf4 \
  6648. \cf2 // NSInteger time2 = 0;\cf4 \
  6649. \cf2 // if ([g_default valueForKey:@"CLEARALLMSGRECORDTIME"] && ([self.roomJid length]>0)) \{\cf4 \
  6650. \cf2 // time2 = [[g_default valueForKey:@"CLEARALLMSGRECORDTIME"] integerValue];\cf4 \
  6651. \cf2 // \}\cf4 \
  6652. \cf2 // NSNumber *CLEARALLMSGRECORDTIME = [NSNumber numberWithInteger:time2];\cf4 \
  6653. \cf2 // //
  6654. \f1 \'c9\'e8\'d6\'c3\'c2\'fe\'d3\'ce\'b5\'c4\'ca\'b1\'bc\'e4
  6655. \f0 \cf4 \
  6656. \cf2 // NSNumber *synTime = [NSNumber numberWithLong:starTime];\cf4 \
  6657. \cf2 //\cf4 \
  6658. \cf2 // //
  6659. \f1 \'c5\'c5\'d0\'f2\'cb\'c4\'b8\'f6\'ca\'b1\'bc\'e4
  6660. \f0
  6661. \f1 \'c8\'eb\'c8\'ba\'ca\'b1\'bc\'e4
  6662. \f0 ,
  6663. \f1 \'c8\'ba\'d7\'e9\'c9\'be\'b3\'fd\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc\'ca\'b1\'bc\'e4
  6664. \f0 ,
  6665. \f1 \'c9\'e8\'d6\'c3\'c9\'be\'b3\'fd\'cb\'f9\'d3\'d0\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc\'ca\'b1\'bc\'e4
  6666. \f0 ,
  6667. \f1 \'c9\'e8\'d6\'c3\'c2\'fe\'d3\'ce\'b5\'c4\'ca\'b1\'bc\'e4
  6668. \f0 \cf4 \
  6669. \cf2 // NSArray *sortedArray = [@[lastClearRecordTime,synTime,CLEARALLMSGRECORDTIME] sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) \{\cf4 \
  6670. \cf2 // NSComparisonResult result = [obj1 compare: obj2];\cf4 \
  6671. \cf2 // return result;\cf4 \
  6672. \cf2 // \}];\cf4 \
  6673. \cf2 // NSNumber *time = [sortedArray lastObject];\cf4 \
  6674. \cf2 // starTime = [time longValue];\cf4 \
  6675. \
  6676. \f2\b \cf8 if
  6677. \f0\b0 \cf4 ([
  6678. \f2\b \cf8 self
  6679. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\
  6680. [g_server tigaseMucMsgsWithRoomId:s StartTime:starTime EndTime:endTime PageIndex:\cf7 0\cf4 PageSize:PAGECOUNT toView:
  6681. \f2\b \cf8 self
  6682. \f0\b0 \cf4 ];\
  6683. \f2\b \cf8 else
  6684. \f0\b0 \cf4 \
  6685. [g_server tigaseMsgsWithReceiver:s StartTime:starTime EndTime:endTime PageIndex:\cf7 0\cf4 toView:
  6686. \f2\b \cf8 self
  6687. \f0\b0 \cf4 ];\
  6688. \}
  6689. \f2\b \cf8 else
  6690. \f0\b0 \cf4 \{\
  6691. \cf2 //
  6692. \f1 \'bb\'f1\'c8\'a1\'b1\'be\'b5\'d8\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc
  6693. \f0 \cf4 \
  6694. \f2\b \cf8 if
  6695. \f0\b0 \cf4 (
  6696. \f2\b \cf8 self
  6697. \f0\b0 \cf4 .scrollLine == \cf7 0\cf4 ) \{\
  6698. \f2\b \cf8 int
  6699. \f0\b0 \cf4 pageCount = \cf7 20\cf4 ;\
  6700. \f2\b \cf8 if
  6701. \f0\b0 \cf4 (
  6702. \f2\b \cf8 self
  6703. \f0\b0 \cf4 .newMsgCount > \cf7 20\cf4 ) \{\
  6704. pageCount =
  6705. \f2\b \cf8 self
  6706. \f0\b0 \cf4 .newMsgCount;\
  6707. \f2\b \cf8 self
  6708. \f0\b0 \cf4 .newMsgCount = \cf7 0\cf4 ;\
  6709. \}\
  6710. \
  6711. JXSynTask *task = _taskList.firstObject;\
  6712. \f2\b \cf8 if
  6713. \f0\b0 \cf4 (
  6714. \f2\b \cf8 self
  6715. \f0\b0 \cf4 .roomJid.length > \cf7 0\cf4 && task) \{\
  6716. \
  6717. p = [[JXMessageObject sharedInstance] fetchMessageListWithUser:s byAllNum:_array.count pageCount:pageCount startTime:task.endTime];\
  6718. \
  6719. \
  6720. \}
  6721. \f2\b \cf8 else
  6722. \f0\b0 \cf4 \{\
  6723. NSString* myUserId = MY_USER_ID;\
  6724. \f2\b \cf8 double
  6725. \f0\b0 \cf4 createTime = \cf7 0\cf4 ;\
  6726. NSArray *array = [memberData getSelfMember:roomId];\
  6727. \f2\b \cf8 for
  6728. \f0\b0 \cf4 (memberData *mdata
  6729. \f2\b \cf8 in
  6730. \f0\b0 \cf4 array) \{\
  6731. NSString *userId = [NSString stringWithFormat:\cf6 @"%ld"\cf4 , mdata.userId];\
  6732. \f2\b \cf8 if
  6733. \f0\b0 \cf4 ([userId isEqualToString:myUserId])\{\
  6734. createTime = mdata.createTime;\
  6735. \}\
  6736. \}\
  6737. p = [[JXMessageObject sharedInstance] fetchMessageListWithUser:s byAllNum:_array.count pageCount:pageCount startTime:[NSDate dateWithTimeIntervalSince1970:createTime]];\
  6738. \}\
  6739. \f2\b \cf8 if
  6740. \f0\b0 \cf4 (_array.count <= \cf7 0\cf4 &&(!p || p.count <= \cf7 0\cf4 ) && (!
  6741. \f2\b \cf8 self
  6742. \f0\b0 \cf4 .roomJid ||
  6743. \f2\b \cf8 self
  6744. \f0\b0 \cf4 .roomJid.length <= \cf7 0\cf4 )) \{\
  6745. \f2\b \cf8 self
  6746. \f0\b0 \cf4 .isGetServerMsg =
  6747. \f2\b \cf8 YES
  6748. \f0\b0 \cf4 ;\
  6749. [
  6750. \f2\b \cf8 self
  6751. \f0\b0 \cf4 refresh:
  6752. \f2\b \cf8 nil
  6753. \f0\b0 \cf4 ];\
  6754. \f2\b \cf8 return
  6755. \f0\b0 \cf4 ;\
  6756. \}\
  6757. \
  6758. bPull = (p && p.count > \cf7 0\cf4 );\
  6759. \}
  6760. \f2\b \cf8 else
  6761. \f0\b0 \cf4 \{\
  6762. p = [[JXMessageObject sharedInstance] fetchAllMessageListWithUser:s];\
  6763. [_array removeAllObjects];\
  6764. bPull =
  6765. \f2\b \cf8 NO
  6766. \f0\b0 \cf4 ;\
  6767. \}\
  6768. \
  6769. \}\
  6770. \
  6771. \f2\b \cf8 for
  6772. \f0\b0 \cf4 (JXMessageObject *msg
  6773. \f2\b \cf8 in
  6774. \f0\b0 \cf4 p) \{\
  6775. allHeight += [msg.chatMsgHeight floatValue];\
  6776. \}\
  6777. \
  6778. \f2\b \cf8 self
  6779. \f0\b0 \cf4 .isGetServerMsg = !bPull;\
  6780. \
  6781. \cf2 //
  6782. \f1 \'bb\'f1\'c8\'a1\'bf\'da\'c1\'ee\'ba\'ec\'b0\'fc\'bc\'c7\'c2\'bc
  6783. \f0 \cf4 \
  6784. [_orderRedPacketArray removeAllObjects];\
  6785. [_orderRedPacketArray addObjectsFromArray:[
  6786. \f2\b \cf8 self
  6787. \f0\b0 \cf4 fetchRedPacketListWithType:\cf7 3\cf4 ]];\
  6788. \
  6789. b = p.count>\cf7 0\cf4 ;\
  6790. bPull = p.count>=PAGE_SHOW_COUNT;\
  6791. \cf2 // if(_page == 0 || self.scrollLine>0)//
  6792. \f1 \'c8\'e7\'b9\'fb
  6793. \f0 \cf4 \
  6794. \cf2 // [_array removeAllObjects];\cf4 \
  6795. \f2\b \cf8 if
  6796. \f0\b0 \cf4 (b)\{\
  6797. NSMutableArray* temp = [[NSMutableArray alloc]init];\
  6798. [temp addObjectsFromArray:p];\
  6799. [temp addObjectsFromArray:_array];\
  6800. [_array removeAllObjects];\
  6801. [_array addObjectsFromArray:temp];\
  6802. [temp removeAllObjects];\
  6803. \cf2 // [temp release];\cf4 \
  6804. \}\
  6805. [p removeAllObjects];\
  6806. \cf2 // [p release];\cf4 \
  6807. \}
  6808. \f2\b \cf8 else
  6809. \f0\b0 \cf4 \
  6810. [_array addObject:msg];\
  6811. \
  6812. \
  6813. JXMessageObject *lastMsg = _array.lastObject;\
  6814. \f2\b \cf8 if
  6815. \f0\b0 \cf4 (lastMsg && lastMsg.isVisible) \{\
  6816. \f2\b \cf8 if
  6817. \f0\b0 \cf4 (
  6818. \f2\b \cf8 self
  6819. \f0\b0 \cf4 .roomJid.length > \cf7 0\cf4 ) \{\
  6820. lastMsg.isGroup =
  6821. \f2\b \cf8 YES
  6822. \f0\b0 \cf4 ;\
  6823. \}\
  6824. \f2\b \cf8 if
  6825. \f0\b0 \cf4 (lastMsg.isMySend) \{\
  6826. \f2\b \cf8 if
  6827. \f0\b0 \cf4 ([lastMsg.isSend boolValue]) \{\
  6828. [lastMsg updateLastSend:UpdateLastSendType_None];\
  6829. \}\
  6830. \}
  6831. \f2\b \cf8 else
  6832. \f0\b0 \cf4 \{\
  6833. [lastMsg updateLastSend:UpdateLastSendType_None];\
  6834. \}\
  6835. \
  6836. \f2\b \cf8 self
  6837. \f0\b0 \cf4 .lastMsg.content = [lastMsg getLastContent];\
  6838. \}\
  6839. \
  6840. \
  6841. [
  6842. \f2\b \cf8 self
  6843. \f0\b0 \cf4 setIsShowTime];\
  6844. \
  6845. \f2\b \cf8 if
  6846. \f0\b0 \cf4 (b) \{\
  6847. [_pool removeAllObjects];\
  6848. _refreshCount++;\
  6849. \
  6850. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(\cf7 .5\cf4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\
  6851. \cf2 //
  6852. \f1 \'cb\'a2\'d0\'c2\'cd\'ea\'b3\'c9
  6853. \f0 \cf4 \
  6854. \
  6855. \
  6856. \
  6857. \
  6858. \f2\b \cf8 if
  6859. \f0\b0 \cf4 (
  6860. \f2\b \cf8 self
  6861. \f0\b0 \cf4 .scrollLine > \cf7 0\cf4 ) \{\
  6862. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(\cf7 0.5\cf4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\
  6863. \
  6864. [_table reloadData];\
  6865. [
  6866. \f2\b \cf8 self
  6867. \f0\b0 \cf4 scrollToCurrentLine];\
  6868. _isRefreshing =
  6869. \f2\b \cf8 NO
  6870. \f0\b0 \cf4 ;\
  6871. \});\
  6872. \}
  6873. \f2\b \cf8 else
  6874. \f0\b0 \cf4 \{\
  6875. \f2\b \cf8 if
  6876. \f0\b0 \cf4 (msg || _page == \cf7 0\cf4 )\{\
  6877. \
  6878. [_table gotoLastRow:
  6879. \f2\b \cf8 NO
  6880. \f0\b0 \cf4 ];\
  6881. \
  6882. \cf2 // [_table reloadData];\cf4 \
  6883. \
  6884. \
  6885. \f2\b \cf8 if
  6886. \f0\b0 \cf4 (_isSyncMsg || _isGotoLast) \{\
  6887. \cf2 // [_table gotoLastRow:NO];\cf4 \
  6888. \}\
  6889. \}\
  6890. \f2\b \cf8 else
  6891. \f0\b0 \cf4 \{\
  6892. \
  6893. \f2\b \cf8 if
  6894. \f0\b0 \cf4 ([_array count]>\cf7 10\cf4 )\{ \cf2 //
  6895. \f1 \'d0\'de\'b8\'c4\'c1\'cb
  6896. \f0
  6897. \f1 \'d4\'ad\'c0\'b4\'ca\'c7\'a1\'b7
  6898. \f0 0\cf4 \
  6899. \
  6900. _table.contentOffset = CGPointMake(\cf7 0\cf4 , allHeight);\
  6901. [_table reloadData];\
  6902. \cf2 // [_table gotoRow: (int)(_array.count - firstNum + 2)];\cf4 \
  6903. \cf2 // [_table scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:(int)(_array.count - firstNum) inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];\cf4 \
  6904. \
  6905. \}\
  6906. \}\
  6907. \
  6908. _isRefreshing =
  6909. \f2\b \cf8 NO
  6910. \f0\b0 \cf4 ;\
  6911. \
  6912. \f2\b \cf8 if
  6913. \f0\b0 \cf4 (_refreshCount>\cf7 1\cf4 ) \{\
  6914. \
  6915. \cf12 ///\cf4
  6916. \f3 \cf2 [_table scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:_array.count-1 inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:NO];
  6917. \f0 \cf4 \
  6918. \}\
  6919. \
  6920. \}\
  6921. \
  6922. \});\
  6923. \
  6924. \}
  6925. \f2\b \cf8 else
  6926. \f0\b0 \cf4 \{\
  6927. _isRefreshing =
  6928. \f2\b \cf8 NO
  6929. \f0\b0 \cf4 ;\
  6930. \}\
  6931. \
  6932. \}\
  6933. \
  6934. - (
  6935. \f2\b \cf8 void
  6936. \f0\b0 \cf4 ) \cf11 scrollToCurrentLine\cf4 \{\
  6937. [_table gotoRow:
  6938. \f2\b \cf8 self
  6939. \f0\b0 \cf4 .scrollLine];\
  6940. \cf2 // NSIndexPath *indexPath = [NSIndexPath indexPathForRow:self.scrollLine - 1 inSection:0];\cf4 \
  6941. \cf2 // [_table scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];\cf4 \
  6942. \}\
  6943. \
  6944. - (
  6945. \f2\b \cf8 void
  6946. \f0\b0 \cf4 )\cf11 didReceiveMemoryWarning\cf4 \
  6947. \{\
  6948. [
  6949. \f2\b \cf8 super
  6950. \f0\b0 \cf4 didReceiveMemoryWarning];\
  6951. \cf2 // Dispose of any resources that can be recreated.\cf4 \
  6952. \}\
  6953. \
  6954. - (
  6955. \f2\b \cf8 void
  6956. \f0\b0 \cf4 )\cf11 dealloc\cf4 \{\
  6957. \
  6958. [
  6959. \f2\b \cf8 self
  6960. \f0\b0 \cf4 .showLongViewc dissmissDYAdAlertView];\
  6961. [g_notify removeObserver:
  6962. \f2\b \cf8 self
  6963. \f0\b0 \cf4 ];\
  6964. [g_notify removeObserver:
  6965. \f2\b \cf8 self
  6966. \f0\b0 \cf4 name:kCellShowCardNotifaction object:
  6967. \f2\b \cf8 nil
  6968. \f0\b0 \cf4 ];\
  6969. [g_notify removeObserver:
  6970. \f2\b \cf8 self
  6971. \f0\b0 \cf4 name:kCellLocationNotifaction object:
  6972. \f2\b \cf8 nil
  6973. \f0\b0 \cf4 ];\
  6974. [g_notify removeObserver:
  6975. \f2\b \cf8 self
  6976. \f0\b0 \cf4 name:kCellImageNotifaction object:
  6977. \f2\b \cf8 nil
  6978. \f0\b0 \cf4 ];\
  6979. [g_notify removeObserver:
  6980. \f2\b \cf8 self
  6981. \f0\b0 \cf4 name:kcellRedPacketDidTouchNotifaction object:
  6982. \f2\b \cf8 nil
  6983. \f0\b0 \cf4 ];\
  6984. \
  6985. [g_notify removeObserver:
  6986. \f2\b \cf8 self
  6987. \f0\b0 \cf4 name:kCellHeadImageNotification object:
  6988. \f2\b \cf8 nil
  6989. \f0\b0 \cf4 ];\
  6990. [g_notify removeObserver:
  6991. \f2\b \cf8 self
  6992. \f0\b0 \cf4 name:kHiddenKeyboardNotification object:
  6993. \f2\b \cf8 nil
  6994. \f0\b0 \cf4 ];\
  6995. [g_notify removeObserver:
  6996. \f2\b \cf8 self
  6997. \f0\b0 \cf4 name:kUpdateChatVCGroupHelperData object:
  6998. \f2\b \cf8 nil
  6999. \f0\b0 \cf4 ];\
  7000. \
  7001. [g_notify removeObserver:
  7002. \f2\b \cf8 self
  7003. \f0\b0 \cf4 name:kKeepOnSendGroupSendMessage object:
  7004. \f2\b \cf8 nil
  7005. \f0\b0 \cf4 ];\
  7006. \
  7007. NSLog(\cf6 @"JXChatViewController.dealloc"\cf4 );\
  7008. [g_xmpp.chatingUserIds removeObject:current_chat_userId];\
  7009. current_chat_userId =
  7010. \f2\b \cf8 nil
  7011. \f0\b0 \cf4 ;\
  7012. \
  7013. [
  7014. \f2\b \cf8 self
  7015. \f0\b0 \cf4 hideKeyboard:
  7016. \f2\b \cf8 NO
  7017. \f0\b0 \cf4 ];\
  7018. [
  7019. \f2\b \cf8 self
  7020. \f0\b0 \cf4 unInitAudio];\
  7021. \
  7022. [
  7023. \f2\b \cf8 self
  7024. \f0\b0 \cf4 free:_pool];\
  7025. [_pool removeAllObjects];\
  7026. \cf2 // [_pool release];\cf4 \
  7027. _pool =
  7028. \f2\b \cf8 nil
  7029. \f0\b0 \cf4 ;\
  7030. \
  7031. [_array removeAllObjects];\
  7032. \cf2 // [_array release];\cf4 \
  7033. \
  7034. \
  7035. \cf2 // [_messageConent release];\cf4 \
  7036. _faceView.delegate =
  7037. \f2\b \cf8 nil
  7038. \f0\b0 \cf4 ;\
  7039. \cf2 // [_table release];\cf4 \
  7040. \cf2 // [_moreView release];\cf4 \
  7041. _moreView=
  7042. \f2\b \cf8 nil
  7043. \f0\b0 \cf4 ;\
  7044. \
  7045. \cf2 // [_voice release];\cf4 \
  7046. \cf2 // _poolSend = nil;\cf4 \
  7047. \
  7048. _locationVC =
  7049. \f2\b \cf8 nil
  7050. \f0\b0 \cf4 ;\
  7051. \f2\b \cf8 self
  7052. \f0\b0 \cf4 .chatPerson =
  7053. \f2\b \cf8 nil
  7054. \f0\b0 \cf4 ;\
  7055. \cf2 // [super dealloc];\cf4 \
  7056. _strURLGoback=\cf6 @""\cf4 ;\
  7057. [
  7058. \f2\b \cf8 self
  7059. \f0\b0 \cf4 .enteringTimer invalidate];\
  7060. \f2\b \cf8 self
  7061. \f0\b0 \cf4 .enteringTimer =
  7062. \f2\b \cf8 nil
  7063. \f0\b0 \cf4 ;\
  7064. [
  7065. \f2\b \cf8 self
  7066. \f0\b0 \cf4 .noEnteringTimer invalidate];\
  7067. \f2\b \cf8 self
  7068. \f0\b0 \cf4 .noEnteringTimer =
  7069. \f2\b \cf8 nil
  7070. \f0\b0 \cf4 ;\
  7071. \
  7072. \}\
  7073. \
  7074. -(
  7075. \f2\b \cf8 void
  7076. \f0\b0 \cf4 )\cf11 free\cf4 :(NSMutableArray*)array\{\
  7077. \f2\b \cf8 for
  7078. \f0\b0 \cf4 (
  7079. \f2\b \cf8 int
  7080. \f0\b0 \cf4 i=(
  7081. \f2\b \cf8 int
  7082. \f0\b0 \cf4 )[array count]-\cf7 1\cf4 ;i>=\cf7 0\cf4 ;i--)\{\
  7083. \f2\b \cf8 id
  7084. \f0\b0 \cf4 p = [array objectAtIndex:i];\
  7085. [array removeObjectAtIndex:i];\
  7086. p =
  7087. \f2\b \cf8 nil
  7088. \f0\b0 \cf4 ;\
  7089. \}\
  7090. \}\
  7091. \
  7092. \cf2 //
  7093. \f1 \'d5\'fd\'d4\'da\'ca\'e4\'c8\'eb
  7094. \f0 \cf4 \
  7095. - (
  7096. \f2\b \cf8 void
  7097. \f0\b0 \cf4 )\cf11 enteringNotifi\cf4 :(NSNotification *) notif \{\
  7098. JXMessageObject *msg = notif.object;\
  7099. \f2\b \cf8 if
  7100. \f0\b0 \cf4 ([chatPerson.userId isEqualToString:msg.fromUserId]) \{\
  7101. \f2\b \cf8 if
  7102. \f0\b0 \cf4 (msg==
  7103. \f2\b \cf8 nil
  7104. \f0\b0 \cf4 )\
  7105. \f2\b \cf8 return
  7106. \f0\b0 \cf4 ;\
  7107. \f2\b \cf8 if
  7108. \f0\b0 \cf4 (
  7109. \f2\b \cf8 self
  7110. \f0\b0 \cf4 .roomJid || msg.isGroup) \{\
  7111. \f2\b \cf8 return
  7112. \f0\b0 \cf4 ;\
  7113. \}\
  7114. \f2\b \cf8 self
  7115. \f0\b0 \cf4 .title = Localized(\cf6 @"JX_Entering"\cf4 );\
  7116. \
  7117. [
  7118. \f2\b \cf8 self
  7119. \f0\b0 \cf4 setAudioIconFrame];\
  7120. \f2\b \cf8 self
  7121. \f0\b0 \cf4 .noEnteringTimer = [NSTimer scheduledTimerWithTimeInterval:\cf7 10\cf4 target:
  7122. \f2\b \cf8 self
  7123. \f0\b0 \cf4 selector:
  7124. \f2\b \cf8 @selector
  7125. \f0\b0 \cf4 (noEnteringTimerAction:) userInfo:
  7126. \f2\b \cf8 nil
  7127. \f0\b0 \cf4 repeats:
  7128. \f2\b \cf8 NO
  7129. \f0\b0 \cf4 ];\
  7130. \}\
  7131. \}\
  7132. \
  7133. - (
  7134. \f2\b \cf8 void
  7135. \f0\b0 \cf4 ) \cf11 noEnteringTimerAction\cf4 :(NSNotification *)notif \{\
  7136. [
  7137. \f2\b \cf8 self
  7138. \f0\b0 \cf4 .noEnteringTimer invalidate];\
  7139. \f2\b \cf8 self
  7140. \f0\b0 \cf4 .noEnteringTimer =
  7141. \f2\b \cf8 nil
  7142. \f0\b0 \cf4 ;\
  7143. \f2\b \cf8 if
  7144. \f0\b0 \cf4 (
  7145. \f2\b \cf8 self
  7146. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 ) \{\
  7147. \f2\b \cf8 return
  7148. \f0\b0 \cf4 ;\
  7149. \}\
  7150. \f2\b \cf8 if
  7151. \f0\b0 \cf4 ([chatPerson.userId intValue]<\cf7 10100\cf4 && [chatPerson.userId intValue]>=\cf7 10000\cf4 ) \{\
  7152. \f2\b \cf8 self
  7153. \f0\b0 \cf4 .title = chatPerson.userNickname;\
  7154. [
  7155. \f2\b \cf8 self
  7156. \f0\b0 \cf4 setAudioIconFrame];\
  7157. \}
  7158. \f2\b \cf8 else
  7159. \f0\b0 \cf4 \{\
  7160. \cf2 // NSString *str = self.onlinestate ? Localized(@"JX_OnLine") : Localized(@"JX_OffLine");\cf4 \
  7161. \cf2 // self.title = [NSString stringWithFormat:@"%@(%@)",chatPerson.remarkName.length > 0 ? chatPerson.remarkName : chatPerson.userNickname,str];\cf4 \
  7162. [
  7163. \f2\b \cf8 self
  7164. \f0\b0 \cf4 setChatTitle:chatPerson.remarkName.length > \cf7 0\cf4 ? chatPerson.remarkName : chatPerson.userNickname];\
  7165. \}\
  7166. \}\
  7167. \
  7168. \cf5 #pragma mark
  7169. \f2\b \cf16 ---
  7170. \f4 \'b4\'a5\'c3\'fe\'b9\'d8\'b1\'d5\'bc\'fc\'c5\'cc
  7171. \f2 ----
  7172. \f0\b0 \cf4 \
  7173. -(
  7174. \f2\b \cf8 void
  7175. \f0\b0 \cf4 )\cf11 handleTap\cf4 :(UIGestureRecognizer *)gesture\
  7176. \{\
  7177. [
  7178. \f2\b \cf8 self
  7179. \f0\b0 \cf4 .view endEditing:
  7180. \f2\b \cf8 YES
  7181. \f0\b0 \cf4 ];\
  7182. \}\
  7183. \
  7184. \
  7185. \cf5 #pragma mark
  7186. \f2\b \cf16 ----
  7187. \f4 \'bc\'fc\'c5\'cc\'b8\'df\'b6\'c8\'b1\'e4\'bb\'af
  7188. \f2 ------
  7189. \f0\b0 \cf4 \
  7190. -(
  7191. \f2\b \cf8 void
  7192. \f0\b0 \cf4 )\cf11 changeKeyBoard\cf4 :(NSNotification *)aNotifacation\
  7193. \{\
  7194. \
  7195. \f2\b \cf8 self
  7196. \f0\b0 \cf4 .shareMore.selected =
  7197. \f2\b \cf8 YES
  7198. \f0\b0 \cf4 ;\
  7199. \
  7200. \f2\b \cf8 id
  7201. \f0\b0 \cf4 view = g_navigation.subViews.lastObject;\
  7202. \f2\b \cf8 if
  7203. \f0\b0 \cf4 (![view isEqual:
  7204. \f2\b \cf8 self
  7205. \f0\b0 \cf4 ]) \{\
  7206. \f2\b \cf8 return
  7207. \f0\b0 \cf4 ;\
  7208. \}\
  7209. \
  7210. \f2\b \cf8 if
  7211. \f0\b0 \cf4 (!_messageText.isFirstResponder) \{\
  7212. \f2\b \cf8 return
  7213. \f0\b0 \cf4 ;\
  7214. \}\
  7215. \
  7216. \cf2 // return;\cf4 \
  7217. \cf2 //
  7218. \f1 \'bb\'f1\'c8\'a1\'b5\'bd\'bc\'fc\'c5\'cc
  7219. \f0 frame
  7220. \f1 \'b1\'e4\'bb\'af\'d6\'ae\'c7\'b0\'b5\'c4
  7221. \f0 frame\cf4 \
  7222. NSValue *keyboardBeginBounds=[[aNotifacation userInfo]objectForKey:UIKeyboardFrameBeginUserInfoKey];\
  7223. CGRect beginRect=[keyboardBeginBounds CGRectValue];\
  7224. \
  7225. \cf2 //
  7226. \f1 \'bb\'f1\'c8\'a1\'b5\'bd\'bc\'fc\'c5\'cc
  7227. \f0 frame
  7228. \f1 \'b1\'e4\'bb\'af\'d6\'ae\'ba\'f3\'b5\'c4
  7229. \f0 frame\cf4 \
  7230. NSValue *keyboardEndBounds=[[aNotifacation userInfo]objectForKey:UIKeyboardFrameEndUserInfoKey];\
  7231. \
  7232. CGRect endRect=[keyboardEndBounds CGRectValue];\
  7233. \
  7234. CGFloat deltaY=endRect.origin.y-beginRect.origin.y;\
  7235. \f2\b \cf8 self
  7236. \f0\b0 \cf4 .deltaY = deltaY;\
  7237. \cf2 //
  7238. \f1 \'c4\'c3
  7239. \f0 frame
  7240. \f1 \'b1\'e4\'bb\'af\'d6\'ae\'ba\'f3\'b5\'c4
  7241. \f0 origin.y-
  7242. \f1 \'b1\'e4\'bb\'af\'d6\'ae\'c7\'b0\'b5\'c4
  7243. \f0 origin.y
  7244. \f1 \'a3\'ac\'c6\'e4\'b2\'ee\'d6\'b5
  7245. \f0 (
  7246. \f1 \'b4\'f8\'d5\'fd\'b8\'ba\'ba\'c5
  7247. \f0 )
  7248. \f1 \'be\'cd\'ca\'c7\'ce\'d2\'c3\'c7
  7249. \f0 self.view
  7250. \f1 \'b5\'c4
  7251. \f0 y
  7252. \f1 \'b7\'bd\'cf\'f2\'c9\'cf\'b5\'c4\'d4\'f6\'c1\'bf
  7253. \f0 \cf4 \
  7254. deltaY=-endRect.size.height;\
  7255. \f2\b \cf8 self
  7256. \f0\b0 \cf4 .deltaHeight = deltaY;\
  7257. \cf2 // NSLog(@"deltaY:%f",deltaY);\cf4 \
  7258. [CATransaction begin];\
  7259. [UIView animateWithDuration:\cf7 0.4f\cf4 animations:^\{\
  7260. \cf2 // [_table setFrame:CGRectMake(0, 0, _table.frame.size.width, self.view.frame.size.height+deltaY-self.heightFooter)];\cf4 \
  7261. \cf2 // [_table gotoLastRow:NO];\cf4 \
  7262. \f2\b \cf8 self
  7263. \f0\b0 \cf4 .tableFooter.frame = CGRectMake(\cf7 0\cf4 ,
  7264. \f2\b \cf8 self
  7265. \f0\b0 \cf4 .view.frame.size.height+deltaY-
  7266. \f2\b \cf8 self
  7267. \f0\b0 \cf4 .heightFooter-\cf7 0\cf4 , JX_SCREEN_WIDTH,
  7268. \f2\b \cf8 self
  7269. \f0\b0 \cf4 .heightFooter);\
  7270. \
  7271. \f2\b \cf8 self
  7272. \f0\b0 \cf4 .screenShotView.frame = CGRectMake(
  7273. \f2\b \cf8 self
  7274. \f0\b0 \cf4 .screenShotView.frame.origin.x,
  7275. \f2\b \cf8 self
  7276. \f0\b0 \cf4 .tableFooter.frame.origin.y -
  7277. \f2\b \cf8 self
  7278. \f0\b0 \cf4 .screenShotView.frame.size.height - \cf7 10\cf4 ,
  7279. \f2\b \cf8 self
  7280. \f0\b0 \cf4 .screenShotView.frame.size.width,
  7281. \f2\b \cf8 self
  7282. \f0\b0 \cf4 .screenShotView.frame.size.height);\
  7283. \} completion:^(
  7284. \f2\b \cf8 BOOL
  7285. \f0\b0 \cf4 finished) \{\
  7286. \}];\
  7287. [CATransaction commit];\
  7288. \
  7289. \f2\b \cf8 if
  7290. \f0\b0 \cf4 ((_table.contentSize.height > (
  7291. \f2\b \cf8 self
  7292. \f0\b0 \cf4 .view.frame.size.height + deltaY -
  7293. \f2\b \cf8 self
  7294. \f0\b0 \cf4 .heightFooter - \cf7 64\cf4 - \cf7 40\cf4 )) ||
  7295. \f2\b \cf8 self
  7296. \f0\b0 \cf4 .deltaY > \cf7 0\cf4 ) \{\
  7297. \
  7298. [CATransaction begin];\cf2 //
  7299. \f1 \'b4\'b4\'bd\'a8\'cf\'d4\'ca\'bd\'ca\'c2\'ce\'f1
  7300. \f0 \cf4 \
  7301. [UIView animateWithDuration:\cf7 0.1f\cf4 animations:^\{\
  7302. \cf2 // self.tableFooter.frame = CGRectMake(0, self.view.frame.size.height+deltaY-self.heightFooter, JX_SCREEN_WIDTH, self.heightFooter);\cf4 \
  7303. [_table setFrame:CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 +_noticeHeight, _table.frame.size.width,
  7304. \f2\b \cf8 self
  7305. \f0\b0 \cf4 .view.frame.size.height+deltaY-
  7306. \f2\b \cf8 self
  7307. \f0\b0 \cf4 .heightFooter-_noticeHeight)];\
  7308. [_table gotoLastRow:
  7309. \f2\b \cf8 NO
  7310. \f0\b0 \cf4 ];\
  7311. \} completion:^(
  7312. \f2\b \cf8 BOOL
  7313. \f0\b0 \cf4 finished) \{\
  7314. \}];\
  7315. [CATransaction commit];\
  7316. \}\
  7317. \}\
  7318. \
  7319. - (
  7320. \f2\b \cf8 BOOL
  7321. \f0\b0 \cf4 )\cf11 theTextAllSpace\cf4 :(NSString *)text \{\
  7322. NSString *string = [text copy];\
  7323. string = [string stringByReplacingOccurrencesOfString:\cf6 @" "\cf4 withString:\cf6 @""\cf4 ];\
  7324. \f2\b \cf8 if
  7325. \f0\b0 \cf4 (string.length <= \cf7 0\cf4 ) \{\
  7326. \f2\b \cf8 return
  7327. \f0\b0 \cf4
  7328. \f2\b \cf8 YES
  7329. \f0\b0 \cf4 ;\
  7330. \}\
  7331. \f2\b \cf8 return
  7332. \f0\b0 \cf4
  7333. \f2\b \cf8 NO
  7334. \f0\b0 \cf4 ;\
  7335. \}\
  7336. \cf2 //
  7337. \f1 \'b7\'a2\'cb\'cd\'ce\'c4\'d7\'d6\'cf\'fb\'cf\'a2
  7338. \f0 \cf4 \
  7339. - (
  7340. \f2\b \cf8 void
  7341. \f0\b0 \cf4 )\cf11 sendIt\cf4 :(
  7342. \f2\b \cf8 id
  7343. \f0\b0 \cf4 )sender \{\
  7344. \f2\b \cf8 if
  7345. \f0\b0 \cf4 ([
  7346. \f2\b \cf8 self
  7347. \f0\b0 \cf4 showDisableSay])\
  7348. \f2\b \cf8 return
  7349. \f0\b0 \cf4 ;\
  7350. \
  7351. \f2\b \cf8 if
  7352. \f0\b0 \cf4 ([
  7353. \f2\b \cf8 self
  7354. \f0\b0 \cf4 sendMsgCheck])\{\
  7355. \f2\b \cf8 return
  7356. \f0\b0 \cf4 ;\
  7357. \}\
  7358. \
  7359. NSString *userId =
  7360. \f2\b \cf8 self
  7361. \f0\b0 \cf4 .userIds[
  7362. \f2\b \cf8 self
  7363. \f0\b0 \cf4 .groupMessagesIndex];\
  7364. \cf2 // NSString *userName = self.userNames[self.groupMessagesIndex];\cf4 \
  7365. \
  7366. NSMutableArray * tempArray = [[NSMutableArray alloc] init];\
  7367. \f2\b \cf8 for
  7368. \f0\b0 \cf4 (memberData * member
  7369. \f2\b \cf8 in
  7370. \f0\b0 \cf4 _atMemberArray) \{\
  7371. \f2\b \cf8 if
  7372. \f0\b0 \cf4 (member.idStr)\{\
  7373. [tempArray addObject:[NSString stringWithFormat:\cf6 @"%@"\cf4 ,member.idStr]];\
  7374. \}
  7375. \f2\b \cf8 else
  7376. \f0\b0 \cf4 \{\
  7377. [tempArray addObject:[NSString stringWithFormat:\cf6 @"%ld"\cf4 ,member.userId]];\
  7378. \}\
  7379. \}\
  7380. NSString * ObjectIdStr = [tempArray componentsJoinedByString:\cf6 @" "\cf4 ];\
  7381. \
  7382. \f2\b \cf8 if
  7383. \f0\b0 \cf4 (
  7384. \f2\b \cf8 self
  7385. \f0\b0 \cf4 .objToMsg.length > \cf7 0\cf4 ) \{\
  7386. ObjectIdStr =
  7387. \f2\b \cf8 self
  7388. \f0\b0 \cf4 .objToMsg;\
  7389. \}\
  7390. \
  7391. \cf2 // NSString *message = messageText.text;\cf4 \
  7392. NSString *message = [_messageText.textStorage getPlainString];\
  7393. \f2\b \cf8 if
  7394. \f0\b0 \cf4 ([
  7395. \f2\b \cf8 self
  7396. \f0\b0 \cf4 theTextAllSpace:message]) \{\
  7397. \cf2 // txt
  7398. \f1 \'c8\'ab\'ca\'c7\'bf\'d5\'b8\'f1
  7399. \f0 \cf4 \
  7400. _messageText.text = \cf6 @""\cf4 ;\
  7401. [
  7402. \f2\b \cf8 self
  7403. \f0\b0 \cf4 doEndEdit];\
  7404. \cf2 //
  7405. \f1 \'b2\'bb\'c4\'dc\'b7\'a2\'cb\'cd\'bf\'d5\'b0\'d7\'cf\'fb\'cf\'a2
  7406. \f0 \cf4 \
  7407. [g_App showAlert:Localized(\cf6 @"JX_CannotSendBlankMessage"\cf4 )];\
  7408. \f2\b \cf8 return
  7409. \f0\b0 \cf4 ;\
  7410. \}\
  7411. \f2\b \cf8 if
  7412. \f0\b0 \cf4 (message.length > \cf7 0\cf4 ) \{\
  7413. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  7414. msg.timeSend = [NSDate date];\
  7415. msg.fromUserId = MY_USER_ID;\
  7416. \f2\b \cf8 if
  7417. \f0\b0 \cf4 ([
  7418. \f2\b \cf8 self
  7419. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  7420. msg.toUserId =
  7421. \f2\b \cf8 self
  7422. \f0\b0 \cf4 .roomJid;\
  7423. msg.isGroup =
  7424. \f2\b \cf8 YES
  7425. \f0\b0 \cf4 ;\
  7426. msg.fromUserName = _userNickName;\
  7427. \}\
  7428. \f2\b \cf8 else
  7429. \f0\b0 \cf4 \{\
  7430. \cf2 /*\cf4 \
  7431. \cf2 if (self.isGroupMessages) \{\cf4 \
  7432. \cf2 if (_isGroupSendCancel) \{\cf4 \
  7433. \cf2 return;\cf4 \
  7434. \cf2 \}\cf4 \
  7435. \cf2 msg.toUserId = userId;\cf4 \
  7436. \cf2 msg.isGroupSend = YES;\cf4 \
  7437. \cf2 if ((self.groupMessagesIndex + 1) % _onceSendNum == 0) \{\cf4 \
  7438. \cf2 msg.isLastGroupSend = YES;\cf4 \
  7439. \cf2 \}\cf4 \
  7440. \cf2 \}else \{\cf4 \
  7441. \cf2 msg.toUserId = chatPerson.userId;\cf4 \
  7442. \cf2 \}\cf4 \
  7443. \cf2 msg.isGroup = NO;\cf4 \
  7444. \cf2 */\cf4 \
  7445. \f2\b \cf8 if
  7446. \f0\b0 \cf4 (
  7447. \f2\b \cf8 self
  7448. \f0\b0 \cf4 .isGroupMessages) \{\
  7449. msg.toUserId = userId;\
  7450. \}
  7451. \f2\b \cf8 else
  7452. \f0\b0 \cf4 \{\
  7453. msg.toUserId = chatPerson.userId;\
  7454. \}\
  7455. msg.isGroup =
  7456. \f2\b \cf8 NO
  7457. \f0\b0 \cf4 ;\
  7458. \}\
  7459. msg.content = message;\
  7460. \f2\b \cf8 if
  7461. \f0\b0 \cf4 (
  7462. \f2\b \cf8 self
  7463. \f0\b0 \cf4 .objToMsg.length > \cf7 0\cf4 ) \{\
  7464. msg.type = [NSNumber numberWithInt:kWCMessageTypeReply];\
  7465. \}
  7466. \f2\b \cf8 else
  7467. \f0\b0 \cf4 \{\
  7468. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];\
  7469. \}\
  7470. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  7471. msg.isRead = [NSNumber numberWithBool:
  7472. \f2\b \cf8 NO
  7473. \f0\b0 \cf4 ];\
  7474. msg.isReadDel = [NSNumber numberWithInt:
  7475. \f2\b \cf8 self
  7476. \f0\b0 \cf4 .isReadDelete];\
  7477. \f2\b \cf8 if
  7478. \f0\b0 \cf4 (ObjectIdStr.length > \cf7 0\cf4 )\{\
  7479. msg.objectId = ObjectIdStr;\
  7480. \}\
  7481. \cf2 //
  7482. \f1 \'b7\'a2\'cd\'f9\'c4\'c4\'c0\'ef
  7483. \f0 \cf4 \
  7484. \cf2 /*\cf4 \
  7485. \cf2 [msg insert:self.roomJid];\cf4 \
  7486. \cf2 [g_xmpp sendMessage:msg roomName:self.roomJid];//
  7487. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  7488. \f0 \cf4 \
  7489. \cf2 */\cf4 \
  7490. \f2\b \cf8 if
  7491. \f0\b0 \cf4 (_tempChat==\cf7 11\cf4 ) \{\
  7492. msg.tempChat=\cf7 11\cf4 ;\
  7493. \}
  7494. \f2\b \cf8 else
  7495. \f0\b0 \cf4 \{\
  7496. msg.tempChat=\cf7 1\cf4 ;\
  7497. \}\
  7498. \cf2 //
  7499. \f1 \'b7\'a2\'cd\'f9\'c4\'c4\'c0\'ef
  7500. \f0 \cf4 \
  7501. \f2\b \cf8 if
  7502. \f0\b0 \cf4 (
  7503. \f2\b \cf8 self
  7504. \f0\b0 \cf4 .isGroupMessages) \{\
  7505. [msg insert:userId];\
  7506. [g_xmpp sendMessage:msg roomName:userId];\cf2 //
  7507. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  7508. \f0 \cf4 \
  7509. \}
  7510. \f2\b \cf8 else
  7511. \f0\b0 \cf4 \{\
  7512. [msg insert:
  7513. \f2\b \cf8 self
  7514. \f0\b0 \cf4 .roomJid];\
  7515. [g_xmpp sendMessage:msg roomName:
  7516. \f2\b \cf8 self
  7517. \f0\b0 \cf4 .roomJid];\cf2 //
  7518. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  7519. \f0 \cf4 \
  7520. \}\
  7521. \f2\b \cf8 if
  7522. \f0\b0 \cf4 (
  7523. \f2\b \cf8 self
  7524. \f0\b0 \cf4 .isCYMSGgroupANDFriendy)\{\
  7525. \
  7526. \}\
  7527. \cf2 /*\cf4 \
  7528. \cf2 if (self.isGroupMessages) \{\cf4 \
  7529. \cf2 self.groupMessagesIndex ++;\cf4 \
  7530. \cf2 if (msg.isLastGroupSend) \{\cf4 \
  7531. \cf2 return;\cf4 \
  7532. \cf2 \}\cf4 \
  7533. \cf2 if (self.groupMessagesIndex < self.userIds.count) \{\cf4 \
  7534. \cf2 [self sendIt:nil];\cf4 \
  7535. \cf2 \}else if (self.userIds)\{\cf4 \
  7536. \cf2 self.groupMessagesIndex = 0;\cf4 \
  7537. \cf2 _messageText.text = nil;\cf4 \
  7538. \cf2 [self hideKeyboard:YES];\cf4 \
  7539. \cf2 // [g_App showAlert:Localized(@"JX_SendComplete")];\cf4 \
  7540. \cf2 return;\cf4 \
  7541. \cf2 \}\cf4 \
  7542. \cf2 return;\cf4 \
  7543. \cf2 \}\cf4 \
  7544. \cf2 */\cf4 \
  7545. \f2\b \cf8 if
  7546. \f0\b0 \cf4 (
  7547. \f2\b \cf8 self
  7548. \f0\b0 \cf4 .isGroupMessages) \{\
  7549. \f2\b \cf8 self
  7550. \f0\b0 \cf4 .groupMessagesIndex ++;\
  7551. \f2\b \cf8 if
  7552. \f0\b0 \cf4 (
  7553. \f2\b \cf8 self
  7554. \f0\b0 \cf4 .groupMessagesIndex <
  7555. \f2\b \cf8 self
  7556. \f0\b0 \cf4 .userIds.count) \{\
  7557. [msg insert:
  7558. \f2\b \cf8 self
  7559. \f0\b0 \cf4 .roomJid];\
  7560. [g_xmpp sendMessage:msg roomName:
  7561. \f2\b \cf8 self
  7562. \f0\b0 \cf4 .roomJid];\cf2 //
  7563. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  7564. \f0 \cf4 \
  7565. [
  7566. \f2\b \cf8 self
  7567. \f0\b0 \cf4 sendIt:
  7568. \f2\b \cf8 nil
  7569. \f0\b0 \cf4 ];\
  7570. \}
  7571. \f2\b \cf8 else
  7572. \f0\b0 \cf4
  7573. \f2\b \cf8 if
  7574. \f0\b0 \cf4 (
  7575. \f2\b \cf8 self
  7576. \f0\b0 \cf4 .userIds)\{\
  7577. [msg insert:
  7578. \f2\b \cf8 self
  7579. \f0\b0 \cf4 .roomJid];\
  7580. [g_xmpp sendMessage:msg roomName:
  7581. \f2\b \cf8 self
  7582. \f0\b0 \cf4 .roomJid];\cf2 //
  7583. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  7584. \f0 \cf4 \
  7585. \f2\b \cf8 self
  7586. \f0\b0 \cf4 .groupMessagesIndex = \cf7 0\cf4 ;\
  7587. _messageText.text =
  7588. \f2\b \cf8 nil
  7589. \f0\b0 \cf4 ;\
  7590. [
  7591. \f2\b \cf8 self
  7592. \f0\b0 \cf4 hideKeyboard:
  7593. \f2\b \cf8 YES
  7594. \f0\b0 \cf4 ];\
  7595. [g_App showAlert:Localized(\cf6 @"JX_SendComplete"\cf4 )];\
  7596. \
  7597. \cf2 //
  7598. \f1 \'d0\'b4\'c8\'eb\'ca\'fd\'be\'dd\'bf\'e2
  7599. \f0 \cf4 \
  7600. NSArray *array =
  7601. \f2\b \cf8 self
  7602. \f0\b0 \cf4 .userIds;\
  7603. NSString *userIdsString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  7604. array =
  7605. \f2\b \cf8 self
  7606. \f0\b0 \cf4 .userNames;\
  7607. NSString *userNamesString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  7608. array =
  7609. \f2\b \cf8 self
  7610. \f0\b0 \cf4 .userNamesWithGroup;\
  7611. NSString *userNamesWithGroupString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  7612. NSString *sendTime = [NSString stringWithFormat:\cf6 @"%@"\cf4 , msg.dictionary[\cf6 @"timeSend"\cf4 ]];\
  7613. \
  7614. array =
  7615. \f2\b \cf8 self
  7616. \f0\b0 \cf4 .userNmaesWithFriend;\
  7617. NSString *userNmaesWithFriendString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  7618. \
  7619. JXLabelObject *obj = JXLabelObject.sharedInstance;\
  7620. obj.userId = msg.fromUserId;\
  7621. obj.userIds = userIdsString;\
  7622. obj.text1 = _names;\
  7623. obj.text2 = _names2;\
  7624. obj.userNames = userNamesString;\
  7625. obj.userNamesWithGroup = userNamesWithGroupString;\
  7626. obj.message = msg.content;\
  7627. obj.sendTime = sendTime;\
  7628. obj.userNmaesWithFriend = userNmaesWithFriendString;\
  7629. \f2\b \cf8 BOOL
  7630. \f0\b0 \cf4 succeed = [obj insertRecord];\
  7631. \f2\b \cf8 if
  7632. \f0\b0 \cf4 (succeed) \{\
  7633. [g_notify postNotificationName:kGroupHelperRefreshNotif object:
  7634. \f2\b \cf8 nil
  7635. \f0\b0 \cf4 ];\
  7636. [g_navigation popToViewController:[CYGroupSendHelperViewController
  7637. \f2\b \cf8 class
  7638. \f0\b0 \cf4 ] animated:
  7639. \f2\b \cf8 YES
  7640. \f0\b0 \cf4 ];\
  7641. \}\
  7642. \
  7643. \f2\b \cf8 return
  7644. \f0\b0 \cf4 ;\
  7645. \}\
  7646. \f2\b \cf8 return
  7647. \f0\b0 \cf4 ;\
  7648. \}\
  7649. [
  7650. \f2\b \cf8 self
  7651. \f0\b0 \cf4 showOneMsg:msg];\
  7652. \
  7653. \f2\b \cf8 if
  7654. \f0\b0 \cf4 (_table.contentSize.height > (JX_SCREEN_HEIGHT +
  7655. \f2\b \cf8 self
  7656. \f0\b0 \cf4 .deltaHeight -
  7657. \f2\b \cf8 self
  7658. \f0\b0 \cf4 .heightFooter - \cf7 64\cf4 - \cf7 40\cf4 - \cf7 20\cf4 )) \{\
  7659. \f2\b \cf8 if
  7660. \f0\b0 \cf4 (
  7661. \f2\b \cf8 self
  7662. \f0\b0 \cf4 .deltaY >= \cf7 0\cf4 ) \{\
  7663. \
  7664. \}
  7665. \f2\b \cf8 else
  7666. \f0\b0 \cf4 \{\
  7667. \
  7668. \f2\b \cf8 if
  7669. \f0\b0 \cf4 (
  7670. \f2\b \cf8 self
  7671. \f0\b0 \cf4 .tableFooter.frame.origin.y != JX_SCREEN_HEIGHT-
  7672. \f2\b \cf8 self
  7673. \f0\b0 \cf4 .heightFooter) \{\
  7674. [CATransaction begin];\
  7675. [UIView animateWithDuration:\cf7 0.1f\cf4 animations:^\{\
  7676. \cf2 // self.tableFooter.frame = CGRectMake(0, self.view.frame.size.height+deltaY-self.heightFooter, JX_SCREEN_WIDTH, self.heightFooter);\cf4 \
  7677. [_table setFrame:CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 +_noticeHeight, _table.frame.size.width,
  7678. \f2\b \cf8 self
  7679. \f0\b0 \cf4 .view.frame.size.height+
  7680. \f2\b \cf8 self
  7681. \f0\b0 \cf4 .deltaHeight-
  7682. \f2\b \cf8 self
  7683. \f0\b0 \cf4 .heightFooter-_noticeHeight)];\
  7684. \cf2 // [_table gotoLastRow:NO];\cf4 \
  7685. \} completion:^(
  7686. \f2\b \cf8 BOOL
  7687. \f0\b0 \cf4 finished) \{\
  7688. \}];\
  7689. [CATransaction commit];\
  7690. \}\
  7691. \}\
  7692. \}\
  7693. \}\
  7694. \
  7695. \cf2 //
  7696. \f1 \'bc\'ec\'b2\'e9\'ca\'c7\'b7\'f1\'d3\'d0\'bf\'da\'c1\'ee\'ba\'ec\'b0\'fc
  7697. \f0 \cf4 \
  7698. \f2\b \cf8 for
  7699. \f0\b0 \cf4 (JXMessageObject * msg
  7700. \f2\b \cf8 in
  7701. \f0\b0 \cf4 _orderRedPacketArray) \{\
  7702. \f2\b \cf8 if
  7703. \f0\b0 \cf4 ([msg.content caseInsensitiveCompare:_messageText.text] == NSOrderedSame &&[msg.fileSize intValue] != \cf7 2\cf4 ) \{\
  7704. \f2\b \cf8 if
  7705. \f0\b0 \cf4 (
  7706. \f2\b \cf8 self
  7707. \f0\b0 \cf4 .roomJid.length > \cf7 0\cf4 || ![msg.fromUserId isEqualToString:MY_USER_ID]) \{\
  7708. [g_server getRedPacket:msg.objectId toView:
  7709. \f2\b \cf8 self
  7710. \f0\b0 \cf4 ];\
  7711. \f2\b \cf8 break
  7712. \f0\b0 \cf4 ;\
  7713. \}\
  7714. \}\
  7715. \}\
  7716. [_atMemberArray removeAllObjects];\
  7717. [_messageText.textStorage removeAttribute:NSBackgroundColorAttributeName range:NSMakeRange(\cf7 0\cf4 ,_messageText.text.length)];\
  7718. \cf2 // [_messageText.textStorage removeAttribute:NSFontAttributeName range:NSMakeRange(0,_messageText.text.length)];\cf4 \
  7719. [_messageText setText:
  7720. \f2\b \cf8 nil
  7721. \f0\b0 \cf4 ];\
  7722. [_messageText setAttributedText:
  7723. \f2\b \cf8 nil
  7724. \f0\b0 \cf4 ];\
  7725. \
  7726. chatPerson.lastInput = _messageText.text;\
  7727. [chatPerson updateLastInput];\
  7728. \
  7729. \
  7730. \f2\b \cf8 long
  7731. \f0\b0 \cf4 time = (
  7732. \f2\b \cf8 long
  7733. \f0\b0 \cf4 )[[NSDate date] timeIntervalSince1970];\
  7734. time = (time *\cf7 1000\cf4 + g_server.timeDifference);\
  7735. NSString *salt = [NSString stringWithFormat:\cf6 @"%ld"\cf4 , time];\
  7736. [g_server getact_UserdeviceLogsecurity:salt userId:g_server.myself.userId andToView:
  7737. \f2\b \cf8 self
  7738. \f0\b0 \cf4 ];\
  7739. [g_server getact_act_act_getGroupText:salt jid:
  7740. \f2\b \cf8 self
  7741. \f0\b0 \cf4 .roomJid andToView:
  7742. \f2\b \cf8 self
  7743. \f0\b0 \cf4 ];\
  7744. \
  7745. \
  7746. \
  7747. \
  7748. \cf2 //
  7749. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2\'ba\'f3\'d6\'d8\'d6\'c3\'b5\'d7\'b2\'bf\'bf\'d8\'bc\'fe
  7750. \f0 \cf4 \
  7751. [
  7752. \f2\b \cf8 self
  7753. \f0\b0 \cf4 onBackForRecordBtnLeft];\
  7754. \}\
  7755. \
  7756. \cf2 //
  7757. \f1 \'cd\'bc\'c6\'ac
  7758. \f0 piker
  7759. \f1 \'d1\'a1\'d4\'f1\'cd\'ea\'b3\'c9\'ba\'f3\'b5\'f7\'d3\'c3
  7760. \f0 \cf4 \
  7761. -(
  7762. \f2\b \cf8 void
  7763. \f0\b0 \cf4 )\cf11 sendImage\cf4 :(NSString *)file \cf11 withWidth\cf4 :(
  7764. \f2\b \cf8 int
  7765. \f0\b0 \cf4 ) width \cf11 andHeight\cf4 :(
  7766. \f2\b \cf8 int
  7767. \f0\b0 \cf4 ) height \cf11 userId\cf4 :(NSString *)userId\
  7768. \{\
  7769. \
  7770. \cf2 // NSString *userId = self.userIds[self.groupMessagesIndex];\cf4 \
  7771. \cf2 // NSString *userName = self.userNames[self.groupMessagesIndex];\cf4 \
  7772. \
  7773. \f2\b \cf8 if
  7774. \f0\b0 \cf4 (
  7775. \f2\b \cf8 self
  7776. \f0\b0 \cf4 .isCYMSGgroupANDFriendy) \{\
  7777. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  7778. \
  7779. \f2\b \cf8 for
  7780. \f0\b0 \cf4 (NSString *userId
  7781. \f2\b \cf8 in
  7782. \f0\b0 \cf4 _userIds) \{\
  7783. \
  7784. \f2\b \cf8 if
  7785. \f0\b0 \cf4 ([file length]>\cf7 0\cf4 ) \{\
  7786. msg.timeSend = [NSDate date];\
  7787. msg.fromUserId = MY_USER_ID;\
  7788. \f2\b \cf8 if
  7789. \f0\b0 \cf4 ([userId length]>\cf7 10\cf4 )\{\
  7790. msg.toUserId = userId;\
  7791. msg.isGroup =
  7792. \f2\b \cf8 YES
  7793. \f0\b0 \cf4 ;\
  7794. msg.fromUserName = _userNickName;\
  7795. \f2\b \cf8 self
  7796. \f0\b0 \cf4 .roomJid = userId;\
  7797. \}\
  7798. \f2\b \cf8 else
  7799. \f0\b0 \cf4 \{\
  7800. msg.toUserId = userId;\
  7801. \f2\b \cf8 self
  7802. \f0\b0 \cf4 .roomJid =
  7803. \f2\b \cf8 nil
  7804. \f0\b0 \cf4 ;\
  7805. msg.isGroup =
  7806. \f2\b \cf8 NO
  7807. \f0\b0 \cf4 ;\
  7808. \}\
  7809. msg.fileName = file;\
  7810. msg.content = [[file lastPathComponent] stringByDeletingPathExtension];\
  7811. msg.type = [NSNumber numberWithInt:kWCMessageTypeImage];\
  7812. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  7813. msg.isRead = [NSNumber numberWithBool:
  7814. \f2\b \cf8 NO
  7815. \f0\b0 \cf4 ];\
  7816. msg.isUpload = [NSNumber numberWithBool:
  7817. \f2\b \cf8 NO
  7818. \f0\b0 \cf4 ];\
  7819. \cf2 //
  7820. \f1 \'d0\'c2\'cc\'ed\'bc\'d3\'b5\'c4\'cd\'bc\'c6\'ac\'bf\'ed\'b8\'df
  7821. \f0 \cf4 \
  7822. msg.location_x = [NSNumber numberWithInt:width];\
  7823. msg.location_y = [NSNumber numberWithInt:height];\
  7824. \
  7825. msg.isReadDel = [NSNumber numberWithInt:
  7826. \f2\b \cf8 self
  7827. \f0\b0 \cf4 .isReadDelete];\
  7828. \
  7829. [msg insert:userId];\
  7830. \
  7831. [
  7832. \f2\b \cf8 self
  7833. \f0\b0 \cf4 showOneMsg:msg];\
  7834. \
  7835. \
  7836. \
  7837. \}\
  7838. \
  7839. \}\
  7840. [g_server uploadFile:file validTime:
  7841. \f2\b \cf8 self
  7842. \f0\b0 \cf4 .chatPerson.chatRecordTimeOut messageId:msg.messageId toView:
  7843. \f2\b \cf8 self
  7844. \f0\b0 \cf4 ];\
  7845. \
  7846. \
  7847. \cf2 //
  7848. \f1 \'d0\'b4\'c8\'eb\'ca\'fd\'be\'dd\'bf\'e2
  7849. \f0 \cf4 \
  7850. NSArray *array =
  7851. \f2\b \cf8 self
  7852. \f0\b0 \cf4 .userIds;\
  7853. NSString *userIdsString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  7854. array =
  7855. \f2\b \cf8 self
  7856. \f0\b0 \cf4 .userNames;\
  7857. NSString *userNamesString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  7858. array =
  7859. \f2\b \cf8 self
  7860. \f0\b0 \cf4 .userNamesWithGroup;\
  7861. NSString *userNamesWithGroupString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  7862. NSString *sendTime = [NSString stringWithFormat:\cf6 @"%@"\cf4 , msg.dictionary[\cf6 @"timeSend"\cf4 ]];\
  7863. \
  7864. array =
  7865. \f2\b \cf8 self
  7866. \f0\b0 \cf4 .userNmaesWithFriend;\
  7867. NSString *userNmaesWithFriendString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  7868. \
  7869. JXLabelObject *obj = JXLabelObject.sharedInstance;\
  7870. obj.userId = msg.fromUserId;\
  7871. obj.userIds = userIdsString;\
  7872. obj.text1 = _names;\
  7873. obj.text2 = _names2;\
  7874. obj.userNames = userNamesString;\
  7875. obj.userNamesWithGroup = userNamesWithGroupString;\
  7876. obj.message = \cf6 @"[
  7877. \f1 \'cd\'bc\'c6\'ac
  7878. \f0 ]"\cf4 ;\
  7879. obj.sendTime = sendTime;\
  7880. obj.userNmaesWithFriend = userNmaesWithFriendString;\
  7881. \f2\b \cf8 BOOL
  7882. \f0\b0 \cf4 succeed = [obj insertRecord];\
  7883. \f2\b \cf8 if
  7884. \f0\b0 \cf4 (succeed) \{\
  7885. [g_notify postNotificationName:kGroupHelperRefreshNotif object:
  7886. \f2\b \cf8 nil
  7887. \f0\b0 \cf4 ];\
  7888. [g_navigation popToViewController:[CYGroupSendHelperViewController
  7889. \f2\b \cf8 class
  7890. \f0\b0 \cf4 ] animated:
  7891. \f2\b \cf8 YES
  7892. \f0\b0 \cf4 ];\
  7893. \}\
  7894. \
  7895. \}
  7896. \f2\b \cf8 else
  7897. \f0\b0 \cf4 \{\
  7898. \f2\b \cf8 if
  7899. \f0\b0 \cf4 ([file length]>\cf7 0\cf4 ) \{\
  7900. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  7901. msg.timeSend = [NSDate date];\
  7902. msg.fromUserId = MY_USER_ID;\
  7903. \f2\b \cf8 if
  7904. \f0\b0 \cf4 ([
  7905. \f2\b \cf8 self
  7906. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  7907. msg.toUserId =
  7908. \f2\b \cf8 self
  7909. \f0\b0 \cf4 .roomJid;\
  7910. msg.isGroup =
  7911. \f2\b \cf8 YES
  7912. \f0\b0 \cf4 ;\
  7913. msg.fromUserName = _userNickName;\
  7914. \}\
  7915. \f2\b \cf8 else
  7916. \f0\b0 \cf4 \{\
  7917. \f2\b \cf8 if
  7918. \f0\b0 \cf4 (
  7919. \f2\b \cf8 self
  7920. \f0\b0 \cf4 .isGroupMessages) \{\
  7921. msg.toUserId = userId;\
  7922. \}
  7923. \f2\b \cf8 else
  7924. \f0\b0 \cf4 \{\
  7925. msg.toUserId = chatPerson.userId;\
  7926. \}\
  7927. msg.isGroup =
  7928. \f2\b \cf8 NO
  7929. \f0\b0 \cf4 ;\
  7930. \}\
  7931. msg.fileName = file;\
  7932. msg.content = [[file lastPathComponent] stringByDeletingPathExtension];\
  7933. msg.type = [NSNumber numberWithInt:kWCMessageTypeImage];\
  7934. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  7935. msg.isRead = [NSNumber numberWithBool:
  7936. \f2\b \cf8 NO
  7937. \f0\b0 \cf4 ];\
  7938. msg.isUpload = [NSNumber numberWithBool:
  7939. \f2\b \cf8 NO
  7940. \f0\b0 \cf4 ];\
  7941. \cf2 //
  7942. \f1 \'d0\'c2\'cc\'ed\'bc\'d3\'b5\'c4\'cd\'bc\'c6\'ac\'bf\'ed\'b8\'df
  7943. \f0 \cf4 \
  7944. msg.location_x = [NSNumber numberWithInt:width];\
  7945. msg.location_y = [NSNumber numberWithInt:height];\
  7946. \
  7947. msg.isReadDel = [NSNumber numberWithInt:
  7948. \f2\b \cf8 self
  7949. \f0\b0 \cf4 .isReadDelete];\
  7950. \
  7951. [msg insert:
  7952. \f2\b \cf8 self
  7953. \f0\b0 \cf4 .roomJid];\
  7954. \
  7955. [
  7956. \f2\b \cf8 self
  7957. \f0\b0 \cf4 showOneMsg:msg];\
  7958. \cf2 // if (self.isGroupMessages) \{\cf4 \
  7959. \cf2 // self.groupMessagesIndex ++;\cf4 \
  7960. \cf2 // if (self.groupMessagesIndex < self.userIds.count) \{\cf4 \
  7961. \cf2 // [self sendImage:file withWidth:width andHeight:height];\cf4 \
  7962. \cf2 // \}else if (self.userIds)\{\cf4 \
  7963. \cf2 // self.groupMessagesIndex = 0;\cf4 \
  7964. \cf2 //\cf4 \
  7965. \cf2 // return;\cf4 \
  7966. \cf2 // \}\cf4 \
  7967. \cf2 // return;\cf4 \
  7968. \cf2 // \}\cf4 \
  7969. \cf2 // [msg release];\cf4 \
  7970. [g_server uploadFile:file validTime:
  7971. \f2\b \cf8 self
  7972. \f0\b0 \cf4 .chatPerson.chatRecordTimeOut messageId:msg.messageId toView:
  7973. \f2\b \cf8 self
  7974. \f0\b0 \cf4 ];\
  7975. \}\
  7976. \}\
  7977. \
  7978. \
  7979. \
  7980. \f2\b \cf8 long
  7981. \f0\b0 \cf4 time = (
  7982. \f2\b \cf8 long
  7983. \f0\b0 \cf4 )[[NSDate date] timeIntervalSince1970];\
  7984. time = (time *\cf7 1000\cf4 + g_server.timeDifference);\
  7985. NSString *salt = [NSString stringWithFormat:\cf6 @"%ld"\cf4 , time];\
  7986. [g_server getact_UserdeviceLogsecurity:salt userId:g_server.myself.userId andToView:
  7987. \f2\b \cf8 self
  7988. \f0\b0 \cf4 ];\
  7989. \
  7990. \
  7991. [g_server getact_act_aact_getGroupImg:salt jid:
  7992. \f2\b \cf8 self
  7993. \f0\b0 \cf4 .roomJid andToView:
  7994. \f2\b \cf8 self
  7995. \f0\b0 \cf4 ];\
  7996. \}\
  7997. \cf2 //
  7998. \f1 \'b7\'a2\'cb\'cd\'ca\'d3\'c6\'b5\'a3\'ac\'d2\'d4\'ba\'f3\'d2\'aa\'b8\'c4\'ca\'d3\'c6\'b5\'b3\'a4\'bf\'ed
  7999. \f0 \cf4 \
  8000. -(
  8001. \f2\b \cf8 void
  8002. \f0\b0 \cf4 )\cf11 sendMedia\cf4 :(JXMediaObject*)p \cf11 userId\cf4 :(NSString *)userId\
  8003. \{\
  8004. NSString* file = p.fileName;\
  8005. \f2\b \cf8 if
  8006. \f0\b0 \cf4 ([file length]>\cf7 0\cf4 ) \{\
  8007. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  8008. msg.timeSend = [NSDate date];\
  8009. msg.fromUserId = MY_USER_ID;\
  8010. \f2\b \cf8 if
  8011. \f0\b0 \cf4 ([
  8012. \f2\b \cf8 self
  8013. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  8014. msg.toUserId =
  8015. \f2\b \cf8 self
  8016. \f0\b0 \cf4 .roomJid;\
  8017. msg.isGroup =
  8018. \f2\b \cf8 YES
  8019. \f0\b0 \cf4 ;\
  8020. msg.fromUserName = _userNickName;\
  8021. \}\
  8022. \f2\b \cf8 else
  8023. \f0\b0 \cf4 \{\
  8024. \f2\b \cf8 if
  8025. \f0\b0 \cf4 (
  8026. \f2\b \cf8 self
  8027. \f0\b0 \cf4 .isGroupMessages) \{\
  8028. msg.toUserId = userId;\
  8029. \}
  8030. \f2\b \cf8 else
  8031. \f0\b0 \cf4 \{\
  8032. msg.toUserId = chatPerson.userId;\
  8033. \}\
  8034. msg.isGroup =
  8035. \f2\b \cf8 NO
  8036. \f0\b0 \cf4 ;\
  8037. \}\
  8038. msg.fileName = file;\
  8039. msg.content = [[file lastPathComponent] stringByDeletingPathExtension];\
  8040. \f2\b \cf8 if
  8041. \f0\b0 \cf4 (p.isVideo)\
  8042. msg.type = [NSNumber numberWithInt:kWCMessageTypeVideo];\
  8043. \f2\b \cf8 else
  8044. \f0\b0 \cf4 \
  8045. msg.type = [NSNumber numberWithInt:kWCMessageTypeAudio];\
  8046. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  8047. msg.isRead = [NSNumber numberWithBool:
  8048. \f2\b \cf8 NO
  8049. \f0\b0 \cf4 ];\
  8050. msg.isUpload = [NSNumber numberWithBool:
  8051. \f2\b \cf8 NO
  8052. \f0\b0 \cf4 ];\
  8053. msg.location_x = [NSNumber numberWithInt:\cf7 100\cf4 ];\
  8054. msg.location_y = [NSNumber numberWithInt:\cf7 100\cf4 ];\
  8055. \cf2 // NSLog(@"hh%hhd",_isReadDelete);\cf4 \
  8056. msg.isReadDel = [NSNumber numberWithInt:_isReadDelete];\
  8057. \
  8058. [msg insert:
  8059. \f2\b \cf8 self
  8060. \f0\b0 \cf4 .roomJid];\
  8061. [
  8062. \f2\b \cf8 self
  8063. \f0\b0 \cf4 showOneMsg:msg];\
  8064. [g_server uploadFile:p.fileName validTime:
  8065. \f2\b \cf8 self
  8066. \f0\b0 \cf4 .chatPerson.chatRecordTimeOut messageId:msg.messageId toView:
  8067. \f2\b \cf8 self
  8068. \f0\b0 \cf4 ];\
  8069. \cf2 // [msg release];\cf4 \
  8070. \}\
  8071. \}\
  8072. \
  8073. - (
  8074. \f2\b \cf8 void
  8075. \f0\b0 \cf4 )\cf11 shareMore\cf4 :(UIButton*)sender \{\
  8076. \cf2 //[messageText setInputView:messageText.inputView?nil: _moreView];\cf4 \
  8077. \f2\b \cf8 if
  8078. \f0\b0 \cf4 ([
  8079. \f2\b \cf8 self
  8080. \f0\b0 \cf4 showDisableSay])\
  8081. \f2\b \cf8 return
  8082. \f0\b0 \cf4 ;\
  8083. \f2\b \cf8 if
  8084. \f0\b0 \cf4 (!_moreView) \{\
  8085. \f2\b \cf8 return
  8086. \f0\b0 \cf4 ;\
  8087. \}\
  8088. \cf2 // sender.selected = !sender.selected;\cf4 \
  8089. \f2\b \cf8 if
  8090. \f0\b0 \cf4 (_messageText.inputView != _moreView)\{\
  8091. _messageText.inputView = _moreView;\
  8092. _textViewBtn.hidden =
  8093. \f2\b \cf8 NO
  8094. \f0\b0 \cf4 ;\
  8095. \cf15 _moreView\cf4 .\cf14 hidden\cf4 =
  8096. \f2\b \cf8 NO
  8097. \f0\b0 \cf4 ;\
  8098. \
  8099. \
  8100. [_messageText reloadInputViews];\
  8101. [_messageText becomeFirstResponder];\
  8102. \
  8103. \f2\b \cf8 if
  8104. \f0\b0 \cf4 (
  8105. \f2\b \cf8 self
  8106. \f0\b0 \cf4 .screenShotView.hidden) \{\
  8107. ALAssetsLibrary *al = [[ALAssetsLibrary alloc] init];\
  8108. \
  8109. [al enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group,
  8110. \f2\b \cf8 BOOL
  8111. \f0\b0 \cf4 *stop) \{\
  8112. \f2\b \cf8 if
  8113. \f0\b0 \cf4 (group) \{\
  8114. [group setAssetsFilter:[ALAssetsFilter allPhotos]];\
  8115. [group enumerateAssetsWithOptions:NSEnumerationReverse\cf2 /*
  8116. \f1 \'b1\'e9\'c0\'fa\'b7\'bd\'ca\'bd
  8117. \f0 */\cf4 usingBlock:^(ALAsset *result, NSUInteger index,
  8118. \f2\b \cf8 BOOL
  8119. \f0\b0 \cf4 *stop) \{\
  8120. \f2\b \cf8 if
  8121. \f0\b0 \cf4 (result) \{\
  8122. \f2\b \cf8 int
  8123. \f0\b0 \cf4 photoIndex = [[g_default objectForKey:LastPhotoIndex] intValue];\
  8124. \f2\b \cf8 if
  8125. \f0\b0 \cf4 (photoIndex == index) \{\
  8126. *stop =
  8127. \f2\b \cf8 YES
  8128. \f0\b0 \cf4 ;\
  8129. \f2\b \cf8 return
  8130. \f0\b0 \cf4 ;\
  8131. \}\
  8132. [g_default setObject:[NSNumber numberWithInteger:index] forKey:LastPhotoIndex];\
  8133. NSString *type = [result valueForProperty:ALAssetPropertyType];\
  8134. \f2\b \cf8 if
  8135. \f0\b0 \cf4 ([type isEqual:ALAssetTypePhoto])\{\
  8136. UIImage *needImage = [UIImage imageWithCGImage:result.defaultRepresentation.fullScreenImage];\
  8137. \f2\b \cf8 if
  8138. \f0\b0 \cf4 (needImage) \{\
  8139. \f2\b \cf8 self
  8140. \f0\b0 \cf4 .screenImage = needImage;\
  8141. \f2\b \cf8 self
  8142. \f0\b0 \cf4 .screenShotImageView.image = needImage;\
  8143. \f2\b \cf8 self
  8144. \f0\b0 \cf4 .screenShotView.hidden =
  8145. \f2\b \cf8 NO
  8146. \f0\b0 \cf4 ;\
  8147. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(\cf7 5\cf4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\
  8148. \f2\b \cf8 self
  8149. \f0\b0 \cf4 .screenShotView.hidden =
  8150. \f2\b \cf8 YES
  8151. \f0\b0 \cf4 ;\
  8152. \
  8153. \});\
  8154. \}
  8155. \f2\b \cf8 else
  8156. \f0\b0 \cf4 \{\
  8157. [
  8158. \f2\b \cf8 self
  8159. \f0\b0 \cf4 hideKeyboard:
  8160. \f2\b \cf8 YES
  8161. \f0\b0 \cf4 ];\
  8162. \}\
  8163. \}\
  8164. *stop =
  8165. \f2\b \cf8 YES
  8166. \f0\b0 \cf4 ;\
  8167. \}\
  8168. \}];\
  8169. *stop =
  8170. \f2\b \cf8 YES
  8171. \f0\b0 \cf4 ;\
  8172. \
  8173. \}\
  8174. \} failureBlock:^(NSError *error) \{\
  8175. \f2\b \cf8 if
  8176. \f0\b0 \cf4 (error) \{\
  8177. \
  8178. \}\
  8179. \}];\
  8180. \}\
  8181. \
  8182. \
  8183. \cf2 // inputBar.frame=CGRectMake(0,JX_SCREEN_HEIGHT-JX_SCREEN_TOP-53-_messageText.frame.size.height, JX_SCREEN_WIDTH, 53);\cf4 \
  8184. \
  8185. \}\
  8186. \f2\b \cf8 else
  8187. \f0\b0 \cf4 \{\
  8188. \
  8189. _moreView.hidden=
  8190. \f2\b \cf8 YES
  8191. \f0\b0 \cf4 ;\
  8192. [
  8193. \f2\b \cf8 self
  8194. \f0\b0 \cf4 hideKeyboard:
  8195. \f2\b \cf8 YES
  8196. \f0\b0 \cf4 ];\
  8197. \}\
  8198. \}\
  8199. \cf2 //
  8200. \f1 \'b1\'e9\'c0\'fa\'cf\'fb\'cf\'a2\'a3\'ac\'cc\'ed\'bc\'d3\'ca\'b1\'bc\'e4
  8201. \f0 \cf4 \
  8202. - (
  8203. \f2\b \cf8 void
  8204. \f0\b0 \cf4 )\cf11 setIsShowTime\cf4 \{\
  8205. \f2\b \cf8 if
  8206. \f0\b0 \cf4 ([_array count]<=\cf7 0\cf4 )\
  8207. \f2\b \cf8 return
  8208. \f0\b0 \cf4 ;\
  8209. JXMessageObject *firstMsg=[_array objectAtIndex:\cf7 0\cf4 ];\
  8210. \f2\b \cf8 if
  8211. \f0\b0 \cf4 (!firstMsg.isShowTime) \{\
  8212. \
  8213. firstMsg.isShowTime =
  8214. \f2\b \cf8 YES
  8215. \f0\b0 \cf4 ;\
  8216. [firstMsg updateIsShowTime];\
  8217. firstMsg.chatMsgHeight = [NSString stringWithFormat:\cf6 @"0"\cf4 ];\
  8218. [firstMsg updateChatMsgHeight];\
  8219. \}\
  8220. \
  8221. \
  8222. \f2\b \cf8 for
  8223. \f0\b0 \cf4 (
  8224. \f2\b \cf8 int
  8225. \f0\b0 \cf4 i = \cf7 0\cf4 ; i < [_array count] -\cf7 1\cf4 ; i++) \{\
  8226. JXMessageObject *firstMsg=[_array objectAtIndex:i];\
  8227. JXMessageObject *secondMsg=[_array objectAtIndex:(i+\cf7 1\cf4 )];\
  8228. \
  8229. \f2\b \cf8 if
  8230. \f0\b0 \cf4 (([secondMsg.timeSend timeIntervalSince1970]-[firstMsg.timeSend timeIntervalSince1970]>\cf7 15\cf4 *\cf7 60\cf4 ))\{\
  8231. \f2\b \cf8 if
  8232. \f0\b0 \cf4 (!secondMsg.isShowTime) \{\
  8233. secondMsg.isShowTime =
  8234. \f2\b \cf8 YES
  8235. \f0\b0 \cf4 ;\
  8236. [secondMsg updateIsShowTime];\
  8237. secondMsg.chatMsgHeight = [NSString stringWithFormat:\cf6 @"0"\cf4 ];\
  8238. [secondMsg updateChatMsgHeight];\
  8239. \}\
  8240. \}
  8241. \f2\b \cf8 else
  8242. \f0\b0 \cf4 \{\
  8243. \f2\b \cf8 if
  8244. \f0\b0 \cf4 (secondMsg.isShowTime) \{\
  8245. secondMsg.isShowTime =
  8246. \f2\b \cf8 NO
  8247. \f0\b0 \cf4 ;\
  8248. [secondMsg updateIsShowTime];\
  8249. secondMsg.chatMsgHeight = [NSString stringWithFormat:\cf6 @"0"\cf4 ];\
  8250. [secondMsg updateChatMsgHeight];\
  8251. \}\
  8252. \}\
  8253. \}\
  8254. \}\
  8255. \
  8256. - (
  8257. \f2\b \cf8 void
  8258. \f0\b0 \cf4 )\cf11 tableView\cf4 :(UITableView *)tableView \cf11 touchesEnded\cf4 :(NSSet *)touches \cf11 withEvent\cf4 :(UIEvent *)event \{\
  8259. [
  8260. \f2\b \cf8 self
  8261. \f0\b0 \cf4 hideKeyboard:
  8262. \f2\b \cf8 NO
  8263. \f0\b0 \cf4 ];\
  8264. \}\
  8265. \
  8266. \cf2 //
  8267. \f1 \'d0\'c2\'c0\'b4\'b5\'c4\'cf\'fb\'cf\'a2\'ca\'c7\'b7\'f1\'d0\'e8\'d2\'aa\'d5\'b9\'ca\'be\'ca\'b1\'bc\'e4
  8268. \f0 \cf4 \
  8269. - (
  8270. \f2\b \cf8 void
  8271. \f0\b0 \cf4 )\cf11 setNewShowTime\cf4 :(JXMessageObject *)msg\{\
  8272. JXMessageObject *lastMsg=[_array lastObject];\
  8273. NSLog(\cf6 @"%f"\cf4 ,[msg.timeSend timeIntervalSince1970]-[lastMsg.timeSend timeIntervalSince1970]);\
  8274. \
  8275. \f2\b \cf8 if
  8276. \f0\b0 \cf4 (([msg.timeSend timeIntervalSince1970]-[lastMsg.timeSend timeIntervalSince1970]>\cf7 15\cf4 *\cf7 60\cf4 ))\{\
  8277. \f2\b \cf8 if
  8278. \f0\b0 \cf4 (!msg.isShowTime) \{\
  8279. msg.isShowTime =
  8280. \f2\b \cf8 YES
  8281. \f0\b0 \cf4 ;\
  8282. [msg updateIsShowTime];\
  8283. msg.chatMsgHeight = [NSString stringWithFormat:\cf6 @"0"\cf4 ];\
  8284. [msg updateChatMsgHeight];\
  8285. \}\
  8286. \}
  8287. \f2\b \cf8 else
  8288. \f0\b0 \cf4 \{\
  8289. \f2\b \cf8 if
  8290. \f0\b0 \cf4 (msg.isShowTime) \{\
  8291. msg.isShowTime =
  8292. \f2\b \cf8 NO
  8293. \f0\b0 \cf4 ;\
  8294. [msg updateIsShowTime];\
  8295. msg.chatMsgHeight = [NSString stringWithFormat:\cf6 @"0"\cf4 ];\
  8296. [msg updateChatMsgHeight];\
  8297. \}\
  8298. \}\
  8299. \}\
  8300. \
  8301. - (
  8302. \f2\b \cf8 void
  8303. \f0\b0 \cf4 )\cf11 viewDidLayoutSubviews\cf4 \{\
  8304. \
  8305. \f2\b \cf8 if
  8306. \f0\b0 \cf4 (!
  8307. \f2\b \cf8 self
  8308. \f0\b0 \cf4 .scrollBottom) \{\
  8309. \f2\b \cf8 if
  8310. \f0\b0 \cf4 (_table.contentSize.height > _table.bounds.size.height) \{\
  8311. NSLog(\cf6 @"tableScroll ----- 1"\cf4 );\
  8312. \f2\b \cf8 self
  8313. \f0\b0 \cf4 .isGotoLast =
  8314. \f2\b \cf8 NO
  8315. \f0\b0 \cf4 ;\
  8316. \cf2 //[_table setContentOffset:CGPointMake(0, _table.contentSize.height - _table.bounds.size.height) animated:NO];\cf4 \
  8317. \
  8318. \}\
  8319. \}\
  8320. \
  8321. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(\cf7 1\cf4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\
  8322. \
  8323. \cf2 // self.scrollBottom = YES;\cf4 \
  8324. \});\
  8325. \}\
  8326. \
  8327. \cf5 #pragma mark
  8328. \f2\b \cf16 ---------tableView
  8329. \f4 \'d0\'ad\'d2\'e9
  8330. \f2 ----------------
  8331. \f0\b0 \cf4 \
  8332. -(NSInteger)\cf11 numberOfSectionsInTableView\cf4 :(UITableView *)tableView\
  8333. \{\
  8334. \f2\b \cf8 return
  8335. \f0\b0 \cf4 \cf7 1\cf4 ;\
  8336. \}\
  8337. -(NSInteger)\cf11 tableView\cf4 :(UITableView *)tableView \cf11 numberOfRowsInSection\cf4 :(NSInteger)section\
  8338. \{\
  8339. \f2\b \cf8 return
  8340. \f0\b0 \cf4 _array.count;\
  8341. \}\
  8342. \
  8343. \cf2 //-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath\{\cf4 \
  8344. \cf2 // JXMessageObject *msg=[_array objectAtIndex:indexPath.row];\cf4 \
  8345. \cf2 //\cf4 \
  8346. \cf12 ///
  8347. \f3 \cf2 / bool isContent = NO;
  8348. \f0 \cf4 \
  8349. \cf12 ///
  8350. \f3 \cf2 / //
  8351. \f1 \'c5\'d0\'b6\'cf\'cf\'fb\'cf\'a2\'b3\'d8\'c0\'ef\'c3\'e6\'ca\'c7\'b7\'f1\'ba\'ac\'d3\'d0\'b4\'cb\'cf\'fb\'cf\'a2
  8352. \f0 \cf4 \
  8353. \cf12 ///
  8354. \f3 \cf2 / for (JXMessageObject * obj in g_xmpp.poolSendRead) \{
  8355. \f0 \cf4 \
  8356. \cf12 ///
  8357. \f3 \cf2 / //
  8358. \f1 \'ba\'ac\'d3\'d0\'a3\'ac\'d6\'b1\'bd\'d3\'cc\'f8\'b9\'fd
  8359. \f0 \cf4 \
  8360. \cf12 ///
  8361. \f3 \cf2 / if ([obj.content isEqualToString:msg.messageId]) \{
  8362. \f0 \cf4 \
  8363. \cf12 ///
  8364. \f3 \cf2 / isContent = YES;
  8365. \f0 \cf4 \
  8366. \cf12 ///
  8367. \f3 \cf2 / break;
  8368. \f0 \cf4 \
  8369. \cf12 ///
  8370. \f3 \cf2 / \}
  8371. \f0 \cf4 \
  8372. \cf12 ///
  8373. \f3 \cf2 / \}
  8374. \f0 \cf4 \
  8375. \cf2 //\}\cf4 \
  8376. \
  8377. -(UITableViewCell *)\cf11 tableView\cf4 :(UITableView *)tableView \cf11 cellForRowAtIndexPath\cf4 :(NSIndexPath *)indexPath\
  8378. \{\
  8379. \f2\b \cf8 if
  8380. \f0\b0 \cf4 (indexPath.row >= _array.count) \{\
  8381. \f2\b \cf8 return
  8382. \f0\b0 \cf4 [[JXBaseChatCell alloc] init];\
  8383. \}\
  8384. \
  8385. JXMessageObject *msg=[_array objectAtIndex:indexPath.row];\
  8386. msg.showRead = [
  8387. \f2\b \cf8 self
  8388. \f0\b0 \cf4 .chatPerson.showRead boolValue];\
  8389. \
  8390. \cf2 // NSLog(@"indexPath.row:%ld,%ld",indexPath.section,indexPath.row);\cf4 \
  8391. \
  8392. \f2\b \cf8 if
  8393. \f0\b0 \cf4 (
  8394. \f2\b \cf8 self
  8395. \f0\b0 \cf4 .roomJid)\{\
  8396. msg.isGroup =
  8397. \f2\b \cf8 YES
  8398. \f0\b0 \cf4 ;\
  8399. \cf2 // msg.roomJid = self.roomJid;\cf4 \
  8400. \}\
  8401. \
  8402. \
  8403. \cf2 //
  8404. \f1 \'c8\'e7\'b9\'fb\'ca\'c7\'d0\'c2\'c0\'b4\'b5\'c4\'ce\'b4\'b6\'c1\'cf\'fb\'cf\'a2\'a3\'ac\'bb\'d8\'d6\'b4\'cd\'a8\'d6\'aa
  8405. \f0 \cf4 \
  8406. \f2\b \cf8 if
  8407. \f0\b0 \cf4 ([msg.type intValue] != kWCMessageTypeVoice && [msg.type intValue] != kWCMessageTypeVideo && [msg.type intValue] != kWCMessageTypeFile && [msg.type intValue] != kWCMessageTypeLocation && [msg.type intValue] != kWCMessageTypeCard && [msg.type intValue] != kWCMessageTypeLink && [msg.type intValue] != kWCMessageTypeMergeRelay && [msg.type intValue] != kWCMessageTypeShare && [msg.type intValue] != kWCMessageTypeIsRead) \{\
  8408. memberData *member = [[memberData alloc] init];\
  8409. member.roomId = roomId;\
  8410. memberData *roleM = [member getCardNameById:MY_USER_ID];\
  8411. \cf2 //
  8412. \f1 \'d2\'fe\'c9\'ed\'c8\'cb\'b2\'bb\'b7\'a2\'bb\'d8\'d6\'b4\'a3\'a8\'d2\'d1\'b6\'c1\'c1\'d0\'b1\'ed\'b2\'bb\'cf\'d4\'ca\'be\'a3\'a9
  8413. \f0 \cf4 \
  8414. \f2\b \cf8 if
  8415. \f0\b0 \cf4 (![msg.isReadDel boolValue] && [roleM.role intValue] !=\cf7 4\cf4 ) \{\
  8416. [msg sendAlreadyReadMsg];\
  8417. \}\
  8418. \}\
  8419. \
  8420. \
  8421. \cf2 //
  8422. \f1 \'b7\'b5\'bb\'d8\'b6\'d4\'d3\'a6\'b5\'c4
  8423. \f0 Cell\cf4 \
  8424. JXBaseChatCell * cell = [
  8425. \f2\b \cf8 self
  8426. \f0\b0 \cf4 getCell:msg indexPath:indexPath];\
  8427. cell.selectionStyle = UITableViewCellSelectionStyleNone;\
  8428. cell.isSelectMore =
  8429. \f2\b \cf8 self
  8430. \f0\b0 \cf4 .isSelectMore;\
  8431. cell.room = _room;\
  8432. cell.isOpenIntegral = _isOpenIntegral;\
  8433. cell.groupLevelNameArray = _groupLevelNameArray;\
  8434. cell.tag=indexPath.row;\
  8435. \f2\b \cf8 if
  8436. \f0\b0 \cf4 (! [msg.toUserId isEqualToString:MY_USER_ID]) \{\
  8437. \
  8438. \cf2 // memberData *data = [self.room getMember:MY_USER_ID];\cf4 \
  8439. \}
  8440. \f2\b \cf8 else
  8441. \f0\b0 \cf4 \{\
  8442. \
  8443. \cf2 //memberData *data = [self.room getMember:msg.toUserId];\cf4 \
  8444. \
  8445. \}\
  8446. \
  8447. \f2\b \cf8 if
  8448. \f0\b0 \cf4 (indexPath.row==_selectIndexAaaa) \{\
  8449. \
  8450. cell.backgroundColor=[UIColor lightGrayColor];\
  8451. \}
  8452. \f2\b \cf8 else
  8453. \f0\b0 \cf4 \{\
  8454. \
  8455. cell.backgroundColor=[UIColor clearColor];\
  8456. \
  8457. \}\
  8458. \cf2 // BOOL flag = [data.role intValue] == 1 || [data.role intValue] == 2;\cf4 \
  8459. \cf2 // if (!flag && ![self.chatPerson.allowSpeakCourse boolValue]) \{\cf4 \
  8460. \cf2 // cell.isShowRecordCourse = NO;\cf4 \
  8461. \cf2 // \}else \{\cf4 \
  8462. \cf2 // cell.isShowRecordCourse = YES;\cf4 \
  8463. \cf2 // \}\cf4 \
  8464. \
  8465. \
  8466. \
  8467. \
  8468. \f2\b \cf8 if
  8469. \f0\b0 \cf4 ([chatPerson.userId rangeOfString:MY_USER_ID].location == NSNotFound) \{\
  8470. cell.isShowRecordCourse =
  8471. \f2\b \cf8 YES
  8472. \f0\b0 \cf4 ;\
  8473. \}
  8474. \f2\b \cf8 else
  8475. \f0\b0 \cf4 \{\
  8476. cell.isShowRecordCourse =
  8477. \f2\b \cf8 NO
  8478. \f0\b0 \cf4 ;\
  8479. \}\
  8480. \
  8481. cell.msg = msg;\
  8482. \
  8483. cell.isCourse =
  8484. \f2\b \cf8 self
  8485. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 ;\
  8486. cell.indexNum = (
  8487. \f2\b \cf8 int
  8488. \f0\b0 \cf4 )indexPath.row;\
  8489. cell.delegate =
  8490. \f2\b \cf8 self
  8491. \f0\b0 \cf4 ;\
  8492. cell.chatCellDelegate =
  8493. \f2\b \cf8 self
  8494. \f0\b0 \cf4 ;\
  8495. cell.checkBox.selected =
  8496. \f2\b \cf8 NO
  8497. \f0\b0 \cf4 ;\
  8498. \f2\b \cf8 for
  8499. \f0\b0 \cf4 (JXMessageObject *selMsg
  8500. \f2\b \cf8 in
  8501. \f0\b0 \cf4
  8502. \f2\b \cf8 self
  8503. \f0\b0 \cf4 .selectMoreArr) \{\
  8504. \f2\b \cf8 if
  8505. \f0\b0 \cf4 ([selMsg.messageId isEqualToString:msg.messageId]) \{\
  8506. cell.checkBox.selected =
  8507. \f2\b \cf8 YES
  8508. \f0\b0 \cf4 ;\
  8509. \f2\b \cf8 break
  8510. \f0\b0 \cf4 ;\
  8511. \}\
  8512. \}\
  8513. cell.readDele =
  8514. \f2\b \cf8 @selector
  8515. \f0\b0 \cf4 (readDeleWithUser:);\
  8516. \f2\b \cf8 if
  8517. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeShake) \{\
  8518. \f2\b \cf8 if
  8519. \f0\b0 \cf4 (![msg.fileName isEqualToString:\cf6 @"1"\cf4 ]) \{\
  8520. \f2\b \cf8 self
  8521. \f0\b0 \cf4 .shakeMsg = msg;\
  8522. \}\
  8523. \}\
  8524. \f2\b \cf8 if
  8525. \f0\b0 \cf4 (
  8526. \f2\b \cf8 self
  8527. \f0\b0 \cf4 .roomJid.length > \cf7 0\cf4 ) \{\
  8528. cell.isShowHead = [
  8529. \f2\b \cf8 self
  8530. \f0\b0 \cf4 .chatPerson.allowSendCard boolValue] || _isAdmin;\
  8531. \
  8532. \f2\b \cf8 BOOL
  8533. \f0\b0 \cf4 isWithdraw =
  8534. \f2\b \cf8 NO
  8535. \f0\b0 \cf4 ;\
  8536. memberData *myData = [
  8537. \f2\b \cf8 self
  8538. \f0\b0 \cf4 .room getMember:g_myself.userId];\
  8539. \f2\b \cf8 if
  8540. \f0\b0 \cf4 ([myData.role intValue] == \cf7 1\cf4 ) \{\
  8541. isWithdraw =
  8542. \f2\b \cf8 YES
  8543. \f0\b0 \cf4 ;\
  8544. \}
  8545. \f2\b \cf8 else
  8546. \f0\b0 \cf4
  8547. \f2\b \cf8 if
  8548. \f0\b0 \cf4 ([myData.role intValue] == \cf7 2\cf4 ) \{\
  8549. memberData *msgData = [
  8550. \f2\b \cf8 self
  8551. \f0\b0 \cf4 .room getMember:msg.fromUserId];\
  8552. \f2\b \cf8 if
  8553. \f0\b0 \cf4 ([msgData.role intValue] == \cf7 1\cf4 || [msgData.role intValue] == \cf7 2\cf4 ) \{\
  8554. isWithdraw =
  8555. \f2\b \cf8 NO
  8556. \f0\b0 \cf4 ;\
  8557. \}
  8558. \f2\b \cf8 else
  8559. \f0\b0 \cf4 \{\
  8560. isWithdraw =
  8561. \f2\b \cf8 YES
  8562. \f0\b0 \cf4 ;\
  8563. \}\
  8564. \}\
  8565. \
  8566. cell.isWithdraw = msg.isMySend || isWithdraw;\
  8567. \}
  8568. \f2\b \cf8 else
  8569. \f0\b0 \cf4 \{\
  8570. cell.isShowHead =
  8571. \f2\b \cf8 YES
  8572. \f0\b0 \cf4 ;\
  8573. cell.isWithdraw = msg.isMySend;\
  8574. \}\
  8575. \cf2 // [cell setHeaderImage];\cf4 \
  8576. \cf2 // [cell setCellData];\cf4 \
  8577. \cf2 // [cell setBackgroundImage];\cf4 \
  8578. \cf2 // [cell isShowSendTime];\cf4 \
  8579. \
  8580. \f2\b \cf8 if
  8581. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeSuperDelete) \{\
  8582. cell.isSelectMore =
  8583. \f2\b \cf8 NO
  8584. \f0\b0 \cf4 ;\
  8585. cell.checkBox.hidden =
  8586. \f2\b \cf8 YES
  8587. \f0\b0 \cf4 ;\
  8588. cell.readView.hidden =
  8589. \f2\b \cf8 YES
  8590. \f0\b0 \cf4 ;\
  8591. \}
  8592. \f2\b \cf8 else
  8593. \f0\b0 \cf4 \{\
  8594. cell.isSelectMore =
  8595. \f2\b \cf8 self
  8596. \f0\b0 \cf4 .isSelectMore;\
  8597. [cell setHeaderImage];\
  8598. [cell setCellData];\
  8599. [cell setBackgroundImage];\
  8600. [cell isShowSendTime];\
  8601. \}\
  8602. \
  8603. \
  8604. \cf2 //
  8605. \f1 \'b6\'e0\'d1\'a1\'d7\'b4\'cc\'ac\'cf\'c2\'c8\'a1\'cf\'fb
  8606. \f0 cell
  8607. \f1 \'c4\'da\'bf\'d8\'bc\'fe\'b5\'c4\'b5\'e3\'bb\'f7\'ca\'c2\'bc\'fe
  8608. \f0 \cf4 \
  8609. cell.bubbleBg.userInteractionEnabled = !
  8610. \f2\b \cf8 self
  8611. \f0\b0 \cf4 .isSelectMore;\
  8612. \
  8613. \cf2 //
  8614. \f1 \'d7\'aa\'c8\'a6\'b5\'c8\'b4\'fd
  8615. \f0 \cf4 \
  8616. \f2\b \cf8 if
  8617. \f0\b0 \cf4 ([msg.isSend intValue] == transfer_status_ing) \{\
  8618. \
  8619. \f2\b \cf8 BOOL
  8620. \f0\b0 \cf4 flag =
  8621. \f2\b \cf8 NO
  8622. \f0\b0 \cf4 ;\
  8623. \f2\b \cf8 for
  8624. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < g_xmpp.poolSend.allKeys.count; i ++) \{\
  8625. NSString *msgId = g_xmpp.poolSend.allKeys[i];\
  8626. \f2\b \cf8 if
  8627. \f0\b0 \cf4 ([msgId isEqualToString:msg.messageId]) \{\
  8628. flag =
  8629. \f2\b \cf8 YES
  8630. \f0\b0 \cf4 ;\
  8631. \f2\b \cf8 break
  8632. \f0\b0 \cf4 ;\
  8633. \}\
  8634. \}\
  8635. \
  8636. \f2\b \cf8 if
  8637. \f0\b0 \cf4 (flag || msg.isShowWait) \{\
  8638. [cell drawIsSend];\
  8639. \}
  8640. \f2\b \cf8 else
  8641. \f0\b0 \cf4 \{\
  8642. [msg updateIsSend:transfer_status_no];\
  8643. cell.sendFailed.hidden =
  8644. \f2\b \cf8 NO
  8645. \f0\b0 \cf4 ;\
  8646. \}\
  8647. \}\
  8648. \
  8649. \f2\b \cf8 if
  8650. \f0\b0 \cf4 (indexPath.row == _array.count - \cf7 1\cf4 ) \{\
  8651. \cf2 //
  8652. \f1 \'b4\'c1\'d2\'bb\'b4\'c1
  8653. \f0 \cf4 \
  8654. \f2\b \cf8 if
  8655. \f0\b0 \cf4 (
  8656. \f2\b \cf8 self
  8657. \f0\b0 \cf4 .shakeMsg) \{\
  8658. \f2\b \cf8 int
  8659. \f0\b0 \cf4 value = \cf7 0\cf4 ;\
  8660. \f2\b \cf8 if
  8661. \f0\b0 \cf4 (
  8662. \f2\b \cf8 self
  8663. \f0\b0 \cf4 .shakeMsg.isMySend) \{\
  8664. value = -\cf7 50\cf4 ;\
  8665. \}
  8666. \f2\b \cf8 else
  8667. \f0\b0 \cf4 \{\
  8668. value = \cf7 50\cf4 ;\
  8669. \}\
  8670. \
  8671. \f2\b \cf8 self
  8672. \f0\b0 \cf4 .shakeMsg =
  8673. \f2\b \cf8 nil
  8674. \f0\b0 \cf4 ;\
  8675. CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:\cf6 @"transform.translation.x"\cf4 ];\cf12 ///
  8676. \f1 \cf2 \'ba\'e1\'cf\'f2\'d2\'c6\'b6\'af
  8677. \f0 \cf4 \
  8678. \
  8679. animation.toValue = [NSNumber numberWithInt:value];\
  8680. \
  8681. animation.duration = \cf7 .5\cf4 ;\
  8682. \
  8683. animation.removedOnCompletion =
  8684. \f2\b \cf8 YES
  8685. \f0\b0 \cf4 ;\cf2 //yes
  8686. \f1 \'b5\'c4\'bb\'b0\'a3\'ac\'d3\'d6\'b7\'b5\'bb\'d8\'d4\'ad\'ce\'bb\'d6\'c3\'c1\'cb\'a1\'a3
  8687. \f0 \cf4 \
  8688. \
  8689. animation.repeatCount = \cf7 2\cf4 ;\
  8690. \
  8691. animation.fillMode = kCAFillModeForwards;\
  8692. \
  8693. \cf2 //
  8694. \f1 \'cc\'ed\'bc\'d3\'d5\'f1\'b6\'af
  8695. \f0 \cf4 \
  8696. \cf2 // AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);\cf4 \
  8697. AudioServicesPlaySystemSound(\cf7 1521\cf4 );\
  8698. [_messageText.inputView.superview.layer addAnimation:animation forKey:
  8699. \f2\b \cf8 nil
  8700. \f0\b0 \cf4 ];\
  8701. [g_window.layer addAnimation:animation forKey:
  8702. \f2\b \cf8 nil
  8703. \f0\b0 \cf4 ];\
  8704. \
  8705. \}\
  8706. \
  8707. \}\
  8708. msg =
  8709. \f2\b \cf8 nil
  8710. \f0\b0 \cf4 ;\
  8711. \
  8712. NSLog(\cf6 @"lastIndex === %ld"\cf4 , (
  8713. \f2\b \cf8 long
  8714. \f0\b0 \cf4 )indexPath.row);\
  8715. \
  8716. \f2\b \cf8 if
  8717. \f0\b0 \cf4 (
  8718. \f2\b \cf8 self
  8719. \f0\b0 \cf4 .isRefresh && _array.count > \cf7 1\cf4 ) \{\
  8720. [
  8721. \f2\b \cf8 self
  8722. \f0\b0 \cf4 doAutoScroll:indexPath];\
  8723. \
  8724. \cf2 // [_table gotoLastRow:NO];\cf4 \
  8725. \}\
  8726. \
  8727. \f2\b \cf8 return
  8728. \f0\b0 \cf4 cell;\
  8729. \}\
  8730. -(CGFloat)\cf11 tableView\cf4 :(UITableView *)tableView \cf11 heightForRowAtIndexPath\cf4 :(NSIndexPath *)indexPath\
  8731. \{\
  8732. \f2\b \cf8 if
  8733. \f0\b0 \cf4 (indexPath.row >= _array.count) \{\
  8734. \f2\b \cf8 return
  8735. \f0\b0 \cf4 \cf7 0\cf4 ;\
  8736. \}\
  8737. JXMessageObject *msg=[_array objectAtIndex:indexPath.row];\
  8738. \f2\b \cf8 if
  8739. \f0\b0 \cf4 (
  8740. \f2\b \cf8 self
  8741. \f0\b0 \cf4 .roomJid)\
  8742. msg.isGroup =
  8743. \f2\b \cf8 YES
  8744. \f0\b0 \cf4 ;\
  8745. \
  8746. \f2\b \cf8 switch
  8747. \f0\b0 \cf4 ([msg.type intValue]) \{\
  8748. \f2\b \cf8 case
  8749. \f0\b0 \cf4 kWCMessageTypeText:\
  8750. \{\
  8751. \f2\b \cf8 return
  8752. \f0\b0 \cf4 [JXMessageCell getChatCellHeight:msg];\
  8753. \f2\b \cf8 break
  8754. \f0\b0 \cf4 ;\
  8755. \}\
  8756. \f2\b \cf8 case
  8757. \f0\b0 \cf4 kWCMessageTypeImage:\
  8758. \f2\b \cf8 return
  8759. \f0\b0 \cf4 [JXImageCell getChatCellHeight:msg];\
  8760. \f2\b \cf8 break
  8761. \f0\b0 \cf4 ;\
  8762. \f2\b \cf8 case
  8763. \f0\b0 \cf4 kWCMessageTypeCustomFace:\
  8764. \f2\b \cf8 return
  8765. \f0\b0 \cf4 [JXFaceCustomCell getChatCellHeight:msg];\
  8766. \f2\b \cf8 break
  8767. \f0\b0 \cf4 ;\
  8768. \f2\b \cf8 case
  8769. \f0\b0 \cf4 kWCMessageTypeEmoji:\
  8770. \f2\b \cf8 return
  8771. \f0\b0 \cf4 [JXEmojiCell getChatCellHeight:msg];\
  8772. \f2\b \cf8 break
  8773. \f0\b0 \cf4 ;\
  8774. \f2\b \cf8 case
  8775. \f0\b0 \cf4 kWCMessageTypeVoice:\
  8776. \f2\b \cf8 return
  8777. \f0\b0 \cf4 [JXAudioCell getChatCellHeight:msg];\
  8778. \f2\b \cf8 break
  8779. \f0\b0 \cf4 ;\
  8780. \f2\b \cf8 case
  8781. \f0\b0 \cf4 kWCMessageTypeLocation:\
  8782. \f2\b \cf8 return
  8783. \f0\b0 \cf4 [JXLocationCell getChatCellHeight:msg];\
  8784. \f2\b \cf8 break
  8785. \f0\b0 \cf4 ;\
  8786. \f2\b \cf8 case
  8787. \f0\b0 \cf4 kWCMessageTypeGif:\
  8788. \f2\b \cf8 return
  8789. \f0\b0 \cf4 [JXGifCell getChatCellHeight:msg];\
  8790. \f2\b \cf8 break
  8791. \f0\b0 \cf4 ;\
  8792. \f2\b \cf8 case
  8793. \f0\b0 \cf4 kWCMessageTypeVideo:\
  8794. \f2\b \cf8 return
  8795. \f0\b0 \cf4 [JXVideoCell getChatCellHeight:msg];\
  8796. \f2\b \cf8 break
  8797. \f0\b0 \cf4 ;\
  8798. \f2\b \cf8 case
  8799. \f0\b0 \cf4 kWCMessageTypeAudio:\
  8800. \f2\b \cf8 return
  8801. \f0\b0 \cf4 [JXVideoCell getChatCellHeight:msg];\
  8802. \f2\b \cf8 break
  8803. \f0\b0 \cf4 ;\
  8804. \f2\b \cf8 case
  8805. \f0\b0 \cf4 kWCMessageTypeCard:\
  8806. \f2\b \cf8 return
  8807. \f0\b0 \cf4 [JXCardCell getChatCellHeight:msg];\
  8808. \f2\b \cf8 break
  8809. \f0\b0 \cf4 ;\
  8810. \f2\b \cf8 case
  8811. \f0\b0 \cf4 kWCMessageTypeFile:\
  8812. \f2\b \cf8 return
  8813. \f0\b0 \cf4 [JXFileCell getChatCellHeight:msg];\
  8814. \f2\b \cf8 break
  8815. \f0\b0 \cf4 ;\
  8816. \f2\b \cf8 case
  8817. \f0\b0 \cf4 kWCMessageTypeRemind:\
  8818. \f2\b \cf8 return
  8819. \f0\b0 \cf4 [JXRemindCell getChatCellHeight:msg];\
  8820. \f2\b \cf8 break
  8821. \f0\b0 \cf4 ;\
  8822. \f2\b \cf8 case
  8823. \f0\b0 \cf4 kWCMessageTypeSuperDelete:\
  8824. \f2\b \cf8 return
  8825. \f0\b0 \cf4 \cf7 0\cf4 ;\
  8826. \f2\b \cf8 break
  8827. \f0\b0 \cf4 ;\
  8828. \f2\b \cf8 case
  8829. \f0\b0 \cf4 kWCMessageTypeRedPacket:\
  8830. \f2\b \cf8 return
  8831. \f0\b0 \cf4 [JXRedPacketCell getChatCellHeight:msg]-\cf7 40\cf4 ;\
  8832. \f2\b \cf8 break
  8833. \f0\b0 \cf4 ;\
  8834. \f2\b \cf8 case
  8835. \f0\b0 \cf4 kWCMessageTypeTransfer:\
  8836. \f2\b \cf8 return
  8837. \f0\b0 \cf4 [JXTransferCell getChatCellHeight:msg];\
  8838. \f2\b \cf8 break
  8839. \f0\b0 \cf4 ;\
  8840. \f2\b \cf8 case
  8841. \f0\b0 \cf4 kWCMessageTypeSystemImage1:\
  8842. \f2\b \cf8 return
  8843. \f0\b0 \cf4 [JXSystemImage1Cell getChatCellHeight:msg];\
  8844. \f2\b \cf8 break
  8845. \f0\b0 \cf4 ;\
  8846. \f2\b \cf8 case
  8847. \f0\b0 \cf4 kWCMessageTypeSystemImage2:\
  8848. \f2\b \cf8 return
  8849. \f0\b0 \cf4 [JXSystemImage2Cell getChatCellHeight:msg];\
  8850. \f2\b \cf8 break
  8851. \f0\b0 \cf4 ;\
  8852. \f2\b \cf8 case
  8853. \f0\b0 \cf4 kWCMessageTypeAudioMeetingInvite:\
  8854. \f2\b \cf8 case
  8855. \f0\b0 \cf4 kWCMessageTypeVideoMeetingInvite:\
  8856. \f2\b \cf8 case
  8857. \f0\b0 \cf4 kWCMessageTypeAudioChatCancel:\
  8858. \f2\b \cf8 case
  8859. \f0\b0 \cf4 kWCMessageTypeAudioChatEnd:\
  8860. \f2\b \cf8 case
  8861. \f0\b0 \cf4 kWCMessageTypeVideoChatCancel:\
  8862. \f2\b \cf8 case
  8863. \f0\b0 \cf4 kWCMessageTypeVideoChatEnd:\
  8864. \f2\b \cf8 case
  8865. \f0\b0 \cf4 kWCMessageTypeAVBusy:\
  8866. \f2\b \cf8 return
  8867. \f0\b0 \cf4 [JXAVCallCell getChatCellHeight:msg];\
  8868. \f2\b \cf8 break
  8869. \f0\b0 \cf4 ;\
  8870. \f2\b \cf8 case
  8871. \f0\b0 \cf4 kWCMessageTypeLink:\
  8872. \f2\b \cf8 return
  8873. \f0\b0 \cf4 [JXLinkCell getChatCellHeight:msg];\
  8874. \f2\b \cf8 break
  8875. \f0\b0 \cf4 ;\
  8876. \f2\b \cf8 case
  8877. \f0\b0 \cf4 kWCMessageTypeShake:\
  8878. \f2\b \cf8 if
  8879. \f0\b0 \cf4 (msg.content.length>\cf7 0\cf4 ) \{\
  8880. \f2\b \cf8 return
  8881. \f0\b0 \cf4 [JXNewShakeCell getChatCellHeight:msg];\
  8882. \}
  8883. \f2\b \cf8 else
  8884. \f0\b0 \cf4 \{\
  8885. \f2\b \cf8 return
  8886. \f0\b0 \cf4 [JXShakeCell getChatCellHeight:msg];\
  8887. \}\
  8888. \f2\b \cf8 break
  8889. \f0\b0 \cf4 ;\
  8890. \f2\b \cf8 case
  8891. \f0\b0 \cf4 kWCMessageTypeMergeRelay:\
  8892. \f2\b \cf8 return
  8893. \f0\b0 \cf4 [JXMergeRelayCell getChatCellHeight:msg];\
  8894. \f2\b \cf8 break
  8895. \f0\b0 \cf4 ;\
  8896. \f2\b \cf8 case
  8897. \f0\b0 \cf4 kWCMessageTypeShare:\
  8898. \f2\b \cf8 return
  8899. \f0\b0 \cf4 [JXShareCell getChatCellHeight:msg];\
  8900. \f2\b \cf8 break
  8901. \f0\b0 \cf4 ;\
  8902. \f2\b \cf8 case
  8903. \f0\b0 \cf4 kWCMessageTypeReply:\
  8904. \f2\b \cf8 return
  8905. \f0\b0 \cf4 [JXReplyCell getChatCellHeight:msg];\
  8906. \f2\b \cf8 break
  8907. \f0\b0 \cf4 ;\
  8908. \f2\b \cf8 default
  8909. \f0\b0 \cf4 :\
  8910. \f2\b \cf8 return
  8911. \f0\b0 \cf4 [JXBaseChatCell getChatCellHeight:msg];\
  8912. \f2\b \cf8 break
  8913. \f0\b0 \cf4 ;\
  8914. \}\
  8915. \}\
  8916. \
  8917. - (
  8918. \f2\b \cf8 void
  8919. \f0\b0 \cf4 )\cf11 tableView\cf4 :(UITableView *)tableView \cf11 didSelectRowAtIndexPath\cf4 :(NSIndexPath *)indexPath\
  8920. \{\
  8921. JXMessageObject *msgModel=[_array objectAtIndex:indexPath.row];\
  8922. \
  8923. \f2\b \cf8 if
  8924. \f0\b0 \cf4 ([msgModel.content containsString:\cf6 @"-JXBigWhellVc"\cf4 ]) \{\
  8925. \
  8926. JXBigReelVc *vc=[JXBigReelVc
  8927. \f2\b \cf8 new
  8928. \f0\b0 \cf4 ];\
  8929. \
  8930. [g_navigation pushViewController:vc animated:
  8931. \f2\b \cf8 YES
  8932. \f0\b0 \cf4 ];\
  8933. \f2\b \cf8 return
  8934. \f0\b0 \cf4 ;\
  8935. \}
  8936. \f2\b \cf8 else
  8937. \f0\b0 \cf4
  8938. \f2\b \cf8 if
  8939. \f0\b0 \cf4 ([msgModel.content containsString:\cf6 @""\cf4 ]) \{\
  8940. \
  8941. \}\
  8942. \
  8943. \
  8944. [
  8945. \f2\b \cf8 self
  8946. \f0\b0 \cf4 hideKeyboard:
  8947. \f2\b \cf8 NO
  8948. \f0\b0 \cf4 ];\
  8949. \f2\b \cf8 if
  8950. \f0\b0 \cf4 (
  8951. \f2\b \cf8 self
  8952. \f0\b0 \cf4 .isSelectMore) \{\
  8953. \cf2 //
  8954. \f1 \'bb\'f1\'c8\'a1\'b5\'da\'bc\'b8\'b8\'f6
  8955. \f0 Cell
  8956. \f1 \'b1\'bb\'b5\'e3\'bb\'f7
  8957. \f0 \cf4 \
  8958. \
  8959. _selCell = (JXBaseChatCell*)[_table cellForRowAtIndexPath:indexPath];\
  8960. _selCell.checkBox.selected = !_selCell.checkBox.selected;\
  8961. NSLog(\cf6 @"indexNum = %d, isSelect = %d"\cf4 ,_selCell.indexNum, _selCell.checkBox.selected);\
  8962. [
  8963. \f2\b \cf8 self
  8964. \f0\b0 \cf4 chatCell:_selCell checkBoxSelectIndexNum:_selCell.indexNum isSelect:_selCell.checkBox.selected];\
  8965. \}
  8966. \f2\b \cf8 else
  8967. \f0\b0 \cf4 \{\
  8968. \
  8969. \cf2 // [super tableView:tableView didSelectRowAtIndexPath:indexPath];\cf4 \
  8970. \}\
  8971. \}\
  8972. \
  8973. \
  8974. - (
  8975. \f2\b \cf8 void
  8976. \f0\b0 \cf4 )\cf11 scrollViewDidScrollToTop\cf4 :(UIScrollView *)scrollView \{\
  8977. \
  8978. \}\
  8979. \
  8980. - (
  8981. \f2\b \cf8 void
  8982. \f0\b0 \cf4 )\cf11 scrollViewDidScroll\cf4 :(UIScrollView *)scrollView \{\
  8983. \f2\b \cf8 if
  8984. \f0\b0 \cf4 (scrollView.contentOffset.y <= \cf7 0\cf4 ) \{\
  8985. \
  8986. \f2\b \cf8 self
  8987. \f0\b0 \cf4 .jumpNewMsgBtn.hidden =
  8988. \f2\b \cf8 YES
  8989. \f0\b0 \cf4 ;\
  8990. \}\
  8991. \
  8992. \f2\b \cf8 if
  8993. \f0\b0 \cf4 (scrollView.contentOffset.y <
  8994. \f2\b \cf8 self
  8995. \f0\b0 \cf4 .lastY) \{\
  8996. \f2\b \cf8 self
  8997. \f0\b0 \cf4 .isRefresh =
  8998. \f2\b \cf8 YES
  8999. \f0\b0 \cf4 ;\
  9000. \}
  9001. \f2\b \cf8 else
  9002. \f0\b0 \cf4 \{\
  9003. \f2\b \cf8 self
  9004. \f0\b0 \cf4 .isRefresh =
  9005. \f2\b \cf8 NO
  9006. \f0\b0 \cf4 ;\
  9007. \}\
  9008. \
  9009. \cf2 // self.lastY = scrollView.contentOffset.y;\cf4 \
  9010. \}\
  9011. \
  9012. - (
  9013. \f2\b \cf8 void
  9014. \f0\b0 \cf4 )\cf11 scrollViewWillBeginDragging\cf4 :(UIScrollView *)scrollView \{\
  9015. \
  9016. [
  9017. \f2\b \cf8 self
  9018. \f0\b0 \cf4 hideKeyboard:
  9019. \f2\b \cf8 NO
  9020. \f0\b0 \cf4 ];\
  9021. \}\
  9022. \
  9023. \cf5 #pragma mark
  9024. \f2\b \cf16 -----------------
  9025. \f4 \'bb\'f1\'c8\'a1\'b6\'d4\'d3\'a6\'b5\'c4
  9026. \f2 Cell-----------------
  9027. \f0\b0 \cf4 \
  9028. - (JXBaseChatCell *)\cf11 getCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9029. JXBaseChatCell * cell =
  9030. \f2\b \cf8 nil
  9031. \f0\b0 \cf4 ;\
  9032. \f2\b \cf8 switch
  9033. \f0\b0 \cf4 ([msg.type intValue]) \{\
  9034. \f2\b \cf8 case
  9035. \f0\b0 \cf4 kWCMessageTypeText:\
  9036. cell = [
  9037. \f2\b \cf8 self
  9038. \f0\b0 \cf4 creatMessageCell:msg indexPath:indexPath];\
  9039. \f2\b \cf8 break
  9040. \f0\b0 \cf4 ;\
  9041. \f2\b \cf8 case
  9042. \f0\b0 \cf4 kWCMessageTypeImage:\
  9043. cell = [
  9044. \f2\b \cf8 self
  9045. \f0\b0 \cf4 creatImageCell:msg indexPath:indexPath];\
  9046. \f2\b \cf8 break
  9047. \f0\b0 \cf4 ;\
  9048. \f2\b \cf8 case
  9049. \f0\b0 \cf4 kWCMessageTypeCustomFace:\
  9050. cell = [
  9051. \f2\b \cf8 self
  9052. \f0\b0 \cf4 creatFaceCustomCell:msg indexPath:indexPath];\
  9053. \f2\b \cf8 break
  9054. \f0\b0 \cf4 ;\
  9055. \f2\b \cf8 case
  9056. \f0\b0 \cf4 kWCMessageTypeEmoji:\
  9057. cell = [
  9058. \f2\b \cf8 self
  9059. \f0\b0 \cf4 creatEmojiCell:msg indexPath:indexPath];\
  9060. \f2\b \cf8 break
  9061. \f0\b0 \cf4 ;\
  9062. \f2\b \cf8 case
  9063. \f0\b0 \cf4 kWCMessageTypeVoice:\
  9064. cell = [
  9065. \f2\b \cf8 self
  9066. \f0\b0 \cf4 creatAudioCell:msg indexPath:indexPath];\
  9067. \f2\b \cf8 break
  9068. \f0\b0 \cf4 ;\
  9069. \f2\b \cf8 case
  9070. \f0\b0 \cf4 kWCMessageTypeLocation:\
  9071. cell = [
  9072. \f2\b \cf8 self
  9073. \f0\b0 \cf4 creatLocationCell:msg indexPath:indexPath];\
  9074. \f2\b \cf8 break
  9075. \f0\b0 \cf4 ;\
  9076. \f2\b \cf8 case
  9077. \f0\b0 \cf4 kWCMessageTypeGif:\
  9078. cell = [
  9079. \f2\b \cf8 self
  9080. \f0\b0 \cf4 creatGifCell:msg indexPath:indexPath];\
  9081. \f2\b \cf8 break
  9082. \f0\b0 \cf4 ;\
  9083. \f2\b \cf8 case
  9084. \f0\b0 \cf4 kWCMessageTypeVideo:\
  9085. cell = [
  9086. \f2\b \cf8 self
  9087. \f0\b0 \cf4 creatVideoCell:msg indexPath:indexPath];\
  9088. \f2\b \cf8 break
  9089. \f0\b0 \cf4 ;\
  9090. \f2\b \cf8 case
  9091. \f0\b0 \cf4 kWCMessageTypeAudio:\
  9092. cell = [
  9093. \f2\b \cf8 self
  9094. \f0\b0 \cf4 creatVideoCell:msg indexPath:indexPath];\
  9095. \f2\b \cf8 break
  9096. \f0\b0 \cf4 ;\
  9097. \f2\b \cf8 case
  9098. \f0\b0 \cf4 kWCMessageTypeCard:\
  9099. cell = [
  9100. \f2\b \cf8 self
  9101. \f0\b0 \cf4 creatCardCell:msg indexPath:indexPath];\
  9102. \f2\b \cf8 break
  9103. \f0\b0 \cf4 ;\
  9104. \f2\b \cf8 case
  9105. \f0\b0 \cf4 kWCMessageTypeFile:\
  9106. cell = [
  9107. \f2\b \cf8 self
  9108. \f0\b0 \cf4 creatFileCell:msg indexPath:indexPath];\
  9109. \f2\b \cf8 break
  9110. \f0\b0 \cf4 ;\
  9111. \f2\b \cf8 case
  9112. \f0\b0 \cf4 kWCMessageTypeRemind:\
  9113. cell = [
  9114. \f2\b \cf8 self
  9115. \f0\b0 \cf4 creatRemindCell:msg indexPath:indexPath];\
  9116. \f2\b \cf8 break
  9117. \f0\b0 \cf4 ;\
  9118. \f2\b \cf8 case
  9119. \f0\b0 \cf4 kWCMessageTypeSuperDelete:\
  9120. cell = [[JXBaseChatCell alloc] init];\
  9121. \f2\b \cf8 break
  9122. \f0\b0 \cf4 ;\
  9123. \f2\b \cf8 case
  9124. \f0\b0 \cf4 kWCMessageTypeRedPacket:\
  9125. cell = [
  9126. \f2\b \cf8 self
  9127. \f0\b0 \cf4 creatRedPacketCell:msg indexPath:indexPath];\
  9128. \f2\b \cf8 break
  9129. \f0\b0 \cf4 ;\
  9130. \f2\b \cf8 case
  9131. \f0\b0 \cf4 kWCMessageTypeTransfer:\
  9132. cell = [
  9133. \f2\b \cf8 self
  9134. \f0\b0 \cf4 createTransferCell:msg indexPath:indexPath];\
  9135. \f2\b \cf8 break
  9136. \f0\b0 \cf4 ;\
  9137. \f2\b \cf8 case
  9138. \f0\b0 \cf4 kWCMessageTypeSystemImage1:\
  9139. cell = [
  9140. \f2\b \cf8 self
  9141. \f0\b0 \cf4 creatSystemImage1Cell:msg indexPath:indexPath];\
  9142. \f2\b \cf8 break
  9143. \f0\b0 \cf4 ;\
  9144. \f2\b \cf8 case
  9145. \f0\b0 \cf4 kWCMessageTypeSystemImage2:\
  9146. cell = [
  9147. \f2\b \cf8 self
  9148. \f0\b0 \cf4 creatSystemImage2Cell:msg indexPath:indexPath];\
  9149. \f2\b \cf8 break
  9150. \f0\b0 \cf4 ;\
  9151. \f2\b \cf8 case
  9152. \f0\b0 \cf4 kWCMessageTypeAudioMeetingInvite:\
  9153. \f2\b \cf8 case
  9154. \f0\b0 \cf4 kWCMessageTypeVideoMeetingInvite:\
  9155. \f2\b \cf8 case
  9156. \f0\b0 \cf4 kWCMessageTypeAudioChatCancel:\
  9157. \f2\b \cf8 case
  9158. \f0\b0 \cf4 kWCMessageTypeAudioChatEnd:\
  9159. \f2\b \cf8 case
  9160. \f0\b0 \cf4 kWCMessageTypeVideoChatCancel:\
  9161. \f2\b \cf8 case
  9162. \f0\b0 \cf4 kWCMessageTypeVideoChatEnd:\
  9163. \f2\b \cf8 case
  9164. \f0\b0 \cf4 kWCMessageTypeAVBusy:\
  9165. cell = [
  9166. \f2\b \cf8 self
  9167. \f0\b0 \cf4 creatAVCallCell:msg indexPath:indexPath];\
  9168. \f2\b \cf8 break
  9169. \f0\b0 \cf4 ;\
  9170. \f2\b \cf8 case
  9171. \f0\b0 \cf4 kWCMessageTypeLink:\
  9172. cell = [
  9173. \f2\b \cf8 self
  9174. \f0\b0 \cf4 creatLinkCell:msg indexPath:indexPath];\
  9175. \f2\b \cf8 break
  9176. \f0\b0 \cf4 ;\
  9177. \f2\b \cf8 case
  9178. \f0\b0 \cf4 kWCMessageTypeShake:\
  9179. \f2\b \cf8 if
  9180. \f0\b0 \cf4 (msg.content.length>\cf7 0\cf4 ) \{\
  9181. cell = [
  9182. \f2\b \cf8 self
  9183. \f0\b0 \cf4 creatNewShakeCell:msg indexPath:indexPath];\
  9184. \}
  9185. \f2\b \cf8 else
  9186. \f0\b0 \cf4 \{\
  9187. cell = [
  9188. \f2\b \cf8 self
  9189. \f0\b0 \cf4 creatShakeCell:msg indexPath:indexPath];\
  9190. \}\
  9191. \f2\b \cf8 break
  9192. \f0\b0 \cf4 ;\
  9193. \f2\b \cf8 case
  9194. \f0\b0 \cf4 kWCMessageTypeMergeRelay:\
  9195. cell = [
  9196. \f2\b \cf8 self
  9197. \f0\b0 \cf4 creatMergeRelayCell:msg indexPath:indexPath];\
  9198. \f2\b \cf8 break
  9199. \f0\b0 \cf4 ;\
  9200. \f2\b \cf8 case
  9201. \f0\b0 \cf4 kWCMessageTypeShare:\
  9202. cell = [
  9203. \f2\b \cf8 self
  9204. \f0\b0 \cf4 createShareCell:msg indexPath:indexPath];\
  9205. \f2\b \cf8 break
  9206. \f0\b0 \cf4 ;\
  9207. \f2\b \cf8 case
  9208. \f0\b0 \cf4 kWCMessageTypeReply:\
  9209. cell = [
  9210. \f2\b \cf8 self
  9211. \f0\b0 \cf4 createReplyCell:msg indexPath:indexPath];\
  9212. \f2\b \cf8 break
  9213. \f0\b0 \cf4 ;\
  9214. \f2\b \cf8 default
  9215. \f0\b0 \cf4 :\
  9216. cell = [[JXBaseChatCell alloc] init];\
  9217. \f2\b \cf8 break
  9218. \f0\b0 \cf4 ;\
  9219. \}\
  9220. \f2\b \cf8 return
  9221. \f0\b0 \cf4 cell;\
  9222. \}\
  9223. \
  9224. \cf5 #pragma mark
  9225. \f2\b \cf16 -----------------------
  9226. \f4 \'b4\'b4\'bd\'a8\'b6\'d4\'d3\'a6\'b5\'c4
  9227. \f2 Cell---------------------
  9228. \f0\b0 \cf4 \
  9229. \cf2 //
  9230. \f1 \'ce\'c4\'b1\'be
  9231. \f0 \cf4 \
  9232. - (JXBaseChatCell *)\cf11 creatMessageCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9233. NSString * identifier = \cf6 @"JXMessageCell"\cf4 ;\
  9234. \f2\b \cf8 if
  9235. \f0\b0 \cf4 ([msg.isReadDel boolValue]) \{\
  9236. identifier = [NSString stringWithFormat:\cf6 @"JXMessageCell_%ld"\cf4 ,indexPath.row];\
  9237. \}\
  9238. JXMessageCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9239. \f2\b \cf8 if
  9240. \f0\b0 \cf4 (!cell) \{\
  9241. cell = [[JXMessageCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9242. \
  9243. \}\
  9244. \
  9245. \
  9246. \f2\b \cf8 __weak
  9247. \f0\b0 \cf4
  9248. \f2\b \cf8 typeof
  9249. \f0\b0 \cf4 (
  9250. \f2\b \cf8 self
  9251. \f0\b0 \cf4 ) weakSelf =
  9252. \f2\b \cf8 self
  9253. \f0\b0 \cf4 ;\
  9254. cell.block = ^(JXMessageObject *msg) \{\
  9255. [weakSelf.view endEditing:
  9256. \f2\b \cf8 YES
  9257. \f0\b0 \cf4 ];\
  9258. _strURLGoback=\cf6 @""\cf4 ;\
  9259. \f2\b \cf8 if
  9260. \f0\b0 \cf4 ([msg.content containsString:\cf6 @"===jixinJXBigRellV"\cf4 ]) \{ \cf2 //
  9261. \f1 \'d7\'aa\'c5\'cc
  9262. \f0 \cf4 \
  9263. \
  9264. JXBigReelVc *vc = [JXBigReelVc
  9265. \f2\b \cf8 new
  9266. \f0\b0 \cf4 ];\
  9267. [g_navigation pushViewController:vc animated:
  9268. \f2\b \cf8 YES
  9269. \f0\b0 \cf4 ];\
  9270. \
  9271. \}
  9272. \f2\b \cf8 else
  9273. \f0\b0 \cf4
  9274. \f2\b \cf8 if
  9275. \f0\b0 \cf4 ([msg.content containsString:\cf6 @"===jixinJXLuckRescueFundVc"\cf4 ]) \{\
  9276. \
  9277. JXLuckRescueFundVc *vc = [JXLuckRescueFundVc
  9278. \f2\b \cf8 new
  9279. \f0\b0 \cf4 ];\
  9280. [g_navigation pushViewController:vc animated:
  9281. \f2\b \cf8 YES
  9282. \f0\b0 \cf4 ];\
  9283. \
  9284. \}
  9285. \f2\b \cf8 else
  9286. \f0\b0 \cf4
  9287. \f2\b \cf8 if
  9288. \f0\b0 \cf4 ([msg.content containsString:\cf6 @"===jixinJXGoldMangVc"\cf4 ]) \{\
  9289. \
  9290. JXGoldMangVc *vc = [JXGoldMangVc
  9291. \f2\b \cf8 new
  9292. \f0\b0 \cf4 ];\
  9293. [g_navigation pushViewController:vc animated:
  9294. \f2\b \cf8 YES
  9295. \f0\b0 \cf4 ];\
  9296. \
  9297. \}
  9298. \f2\b \cf8 else
  9299. \f0\b0 \cf4
  9300. \f2\b \cf8 if
  9301. \f0\b0 \cf4 ([msg.content containsString:\cf6 @"===jixinJXApplyViewController"\cf4 ]) \{\
  9302. \
  9303. JXApplyViewController *vc = [JXApplyViewController
  9304. \f2\b \cf8 new
  9305. \f0\b0 \cf4 ];\
  9306. [g_navigation pushViewController:vc animated:
  9307. \f2\b \cf8 YES
  9308. \f0\b0 \cf4 ];\
  9309. \
  9310. \}\
  9311. \
  9312. \};\
  9313. \f2\b \cf8 return
  9314. \f0\b0 \cf4 cell;\
  9315. \}\
  9316. \cf2 //
  9317. \f1 \'cd\'bc\'c6\'ac
  9318. \f0 \cf4 \
  9319. - (JXBaseChatCell *)\cf11 creatImageCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9320. NSString * identifier = \cf6 @"JXImageCell"\cf4 ;\
  9321. JXImageCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9322. \f2\b \cf8 if
  9323. \f0\b0 \cf4 (!cell) \{\
  9324. cell = [[JXImageCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9325. \cf2 // cell.chatImage.delegate = self;\cf4 \
  9326. \cf2 // cell.chatImage.didTouch = @selector(onCellImage:);\cf4 \
  9327. \}\
  9328. \f2\b \cf8 return
  9329. \f0\b0 \cf4 cell;\
  9330. \}\
  9331. \
  9332. \cf2 //
  9333. \f1 \'d7\'d4\'b6\'a8\'d2\'e5\'b1\'ed\'c7\'e9
  9334. \f0 \cf4 \
  9335. - (JXBaseChatCell *)\cf11 creatFaceCustomCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9336. NSString * identifier = \cf6 @"JXFaceCustomCell"\cf4 ;\
  9337. JXFaceCustomCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9338. \f2\b \cf8 if
  9339. \f0\b0 \cf4 (!cell) \{\
  9340. cell = [[JXFaceCustomCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9341. \cf2 // cell.chatImage.delegate = self;\cf4 \
  9342. \cf2 // cell.chatImage.didTouch = @selector(onCellImage:);\cf4 \
  9343. \}\
  9344. \f2\b \cf8 return
  9345. \f0\b0 \cf4 cell;\
  9346. \}\
  9347. \
  9348. \cf2 //
  9349. \f1 \'b1\'ed\'c7\'e9\'b0\'fc
  9350. \f0 \cf4 \
  9351. - (JXBaseChatCell *)\cf11 creatEmojiCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9352. NSString * identifier = \cf6 @"JXEmojiCell"\cf4 ;\
  9353. JXEmojiCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9354. \f2\b \cf8 if
  9355. \f0\b0 \cf4 (!cell) \{\
  9356. cell = [[JXEmojiCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9357. \cf2 // cell.chatImage.delegate = self;\cf4 \
  9358. \cf2 // cell.chatImage.didTouch = @selector(onCellImage:);\cf4 \
  9359. \}\
  9360. \f2\b \cf8 return
  9361. \f0\b0 \cf4 cell;\
  9362. \}\
  9363. \
  9364. \cf2 //
  9365. \f1 \'ca\'d3\'c6\'b5
  9366. \f0 \cf4 \
  9367. - (JXBaseChatCell *)\cf11 creatVideoCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9368. NSString * identifier = \cf6 @"JXVideoCell"\cf4 ;\
  9369. JXVideoCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9370. \f2\b \cf8 if
  9371. \f0\b0 \cf4 (!cell) \{\
  9372. cell = [[JXVideoCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9373. \}\
  9374. cell.videoDelegate =
  9375. \f2\b \cf8 self
  9376. \f0\b0 \cf4 ;\
  9377. cell.indexTag = indexPath.row;\
  9378. \
  9379. \f2\b \cf8 return
  9380. \f0\b0 \cf4 cell;\
  9381. \}\
  9382. \cf2 //
  9383. \f1 \'d2\'f4\'c6\'b5
  9384. \f0 \cf4 \
  9385. - (JXBaseChatCell *)\cf11 creatAudioCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9386. NSString * identifier = \cf6 @"JXAudioCell"\cf4 ;\
  9387. JXAudioCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9388. \f2\b \cf8 if
  9389. \f0\b0 \cf4 (!cell) \{\
  9390. cell = [[JXAudioCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9391. \}\
  9392. cell.indexNum = (
  9393. \f2\b \cf8 int
  9394. \f0\b0 \cf4 )indexPath.row;\
  9395. \f2\b \cf8 return
  9396. \f0\b0 \cf4 cell;\
  9397. \}\
  9398. \cf2 //
  9399. \f1 \'ce\'c4\'bc\'fe
  9400. \f0 \cf4 \
  9401. - (JXBaseChatCell *)\cf11 creatFileCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9402. NSString * identifier = \cf6 @"JXFileCell"\cf4 ;\
  9403. JXFileCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9404. \f2\b \cf8 if
  9405. \f0\b0 \cf4 (!cell) \{\
  9406. cell = [[JXFileCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9407. \}\
  9408. \f2\b \cf8 return
  9409. \f0\b0 \cf4 cell;\
  9410. \}\
  9411. \cf2 //
  9412. \f1 \'ce\'bb\'d6\'c3
  9413. \f0 \cf4 \
  9414. - (JXBaseChatCell *)\cf11 creatLocationCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9415. NSString * identifier = \cf6 @"JXLocationCell"\cf4 ;\
  9416. JXLocationCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9417. \f2\b \cf8 if
  9418. \f0\b0 \cf4 (!cell) \{\
  9419. cell = [[JXLocationCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9420. \}\
  9421. \f2\b \cf8 return
  9422. \f0\b0 \cf4 cell;\
  9423. \}\
  9424. \cf2 //
  9425. \f1 \'c3\'fb\'c6\'ac
  9426. \f0 \cf4 \
  9427. - (JXBaseChatCell *)\cf11 creatCardCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9428. NSString * identifier = \cf6 @"JXCardCell"\cf4 ;\
  9429. JXCardCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9430. \f2\b \cf8 if
  9431. \f0\b0 \cf4 (!cell) \{\
  9432. cell = [[JXCardCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9433. \}\
  9434. \f2\b \cf8 return
  9435. \f0\b0 \cf4 cell;\
  9436. \}\
  9437. \cf2 //
  9438. \f1 \'ba\'ec\'b0\'fc
  9439. \f0 \cf4 \
  9440. - (JXBaseChatCell *)\cf11 creatRedPacketCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9441. NSString * identifier = \cf6 @"JXRedPacketCell"\cf4 ;\
  9442. JXRedPacketCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9443. \f2\b \cf8 if
  9444. \f0\b0 \cf4 (!cell) \{\
  9445. cell = [[JXRedPacketCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9446. \}\
  9447. \f2\b \cf8 return
  9448. \f0\b0 \cf4 cell;\
  9449. \}\
  9450. \cf2 //
  9451. \f1 \'b6\'af\'bb\'ad
  9452. \f0 \cf4 \
  9453. - (JXBaseChatCell *)\cf11 creatGifCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9454. NSString * identifier = \cf6 @"JXGifCell"\cf4 ;\
  9455. JXGifCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9456. \f2\b \cf8 if
  9457. \f0\b0 \cf4 (!cell) \{\
  9458. cell = [[JXGifCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9459. \}\
  9460. \f2\b \cf8 return
  9461. \f0\b0 \cf4 cell;\
  9462. \}\
  9463. \cf2 //
  9464. \f1 \'cf\'b5\'cd\'b3\'cc\'e1\'d0\'d1
  9465. \f0 \cf4 \
  9466. - (JXBaseChatCell *)\cf11 creatRemindCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9467. NSString * identifier = \cf6 @"JXRemindCell"\cf4 ;\
  9468. JXRemindCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9469. \f2\b \cf8 if
  9470. \f0\b0 \cf4 (!cell) \{\
  9471. cell = [[JXRemindCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9472. \}\
  9473. \f2\b \cf8 return
  9474. \f0\b0 \cf4 cell;\
  9475. \}\
  9476. \
  9477. \cf2 //
  9478. \f1 \'b5\'a5\'cc\'f5\'cd\'bc\'ce\'c4
  9479. \f0 \cf4 \
  9480. - (JXBaseChatCell *)\cf11 creatSystemImage1Cell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9481. NSString * identifier = \cf6 @"JXSystemImage1Cell"\cf4 ;\
  9482. JXSystemImage1Cell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9483. \f2\b \cf8 if
  9484. \f0\b0 \cf4 (!cell) \{\
  9485. cell = [[JXSystemImage1Cell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9486. \}\
  9487. \f2\b \cf8 return
  9488. \f0\b0 \cf4 cell;\
  9489. \}\
  9490. \
  9491. \cf2 //
  9492. \f1 \'b6\'e0\'cc\'f5\'cd\'bc\'ce\'c4
  9493. \f0 \cf4 \
  9494. - (JXBaseChatCell *)\cf11 creatSystemImage2Cell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9495. NSString * identifier = \cf6 @"JXSystemImage2Cell"\cf4 ;\
  9496. JXSystemImage2Cell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9497. \f2\b \cf8 if
  9498. \f0\b0 \cf4 (!cell) \{\
  9499. cell = [[JXSystemImage2Cell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9500. \}\
  9501. \f2\b \cf8 return
  9502. \f0\b0 \cf4 cell;\
  9503. \}\
  9504. \
  9505. \cf2 //
  9506. \f1 \'d2\'f4\'ca\'d3\'c6\'b5\'cd\'a8\'bb\'b0
  9507. \f0 \cf4 \
  9508. - (JXBaseChatCell *)\cf11 creatAVCallCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9509. NSString * identifier = \cf6 @"JXAVCallCell"\cf4 ;\
  9510. JXAVCallCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9511. \f2\b \cf8 if
  9512. \f0\b0 \cf4 (!cell) \{\
  9513. cell = [[JXAVCallCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9514. \}\
  9515. \f2\b \cf8 return
  9516. \f0\b0 \cf4 cell;\
  9517. \}\
  9518. \
  9519. \cf2 //
  9520. \f1 \'c1\'b4\'bd\'d3
  9521. \f0 \cf4 \
  9522. - (JXBaseChatCell *)\cf11 creatLinkCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9523. NSString * identifier = \cf6 @"JXLinkCell"\cf4 ;\
  9524. JXLinkCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9525. \f2\b \cf8 if
  9526. \f0\b0 \cf4 (!cell) \{\
  9527. cell = [[JXLinkCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9528. \}\
  9529. \f2\b \cf8 return
  9530. \f0\b0 \cf4 cell;\
  9531. \}\
  9532. \
  9533. \cf2 //
  9534. \f1 \'b4\'c1\'d2\'bb\'b4\'c1
  9535. \f0 \cf4 \
  9536. - (JXBaseChatCell *)\cf11 creatShakeCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9537. NSString * identifier = \cf6 @"JXShakeCell"\cf4 ;\
  9538. JXShakeCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9539. \f2\b \cf8 if
  9540. \f0\b0 \cf4 (!cell) \{\
  9541. cell = [[JXShakeCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9542. \}\
  9543. \f2\b \cf8 return
  9544. \f0\b0 \cf4 cell;\
  9545. \}\
  9546. \
  9547. \cf2 //
  9548. \f1 \'b4\'c1\'d2\'bb\'b4\'c1\'d0\'c2
  9549. \f0 \cf4 \
  9550. - (JXBaseChatCell *)\cf11 creatNewShakeCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9551. NSString * identifier = \cf6 @"JXNewShakeCell"\cf4 ;\
  9552. JXNewShakeCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9553. \f2\b \cf8 if
  9554. \f0\b0 \cf4 (!cell) \{\
  9555. cell = [[JXNewShakeCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9556. \}\
  9557. \f2\b \cf8 return
  9558. \f0\b0 \cf4 cell;\
  9559. \}\
  9560. \
  9561. \cf2 //
  9562. \f1 \'ba\'cf\'b2\'a2\'d7\'aa\'b7\'a2\'cf\'fb\'cf\'a2
  9563. \f0 \cf4 \
  9564. - (JXBaseChatCell *)\cf11 creatMergeRelayCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath\{\
  9565. NSString * identifier = \cf6 @"JXMergeRelayCell"\cf4 ;\
  9566. JXMergeRelayCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9567. \f2\b \cf8 if
  9568. \f0\b0 \cf4 (!cell) \{\
  9569. cell = [[JXMergeRelayCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9570. \}\
  9571. \f2\b \cf8 return
  9572. \f0\b0 \cf4 cell;\
  9573. \}\
  9574. \cf2 //
  9575. \f1 \'b7\'d6\'cf\'ed
  9576. \f0 \cf4 \
  9577. - (JXBaseChatCell *)\cf11 createShareCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath \{\
  9578. NSString * identifier = \cf6 @"JXShareCell"\cf4 ;\
  9579. JXShareCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9580. \f2\b \cf8 if
  9581. \f0\b0 \cf4 (!cell) \{\
  9582. cell = [[JXShareCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9583. \}\
  9584. \f2\b \cf8 return
  9585. \f0\b0 \cf4 cell;\
  9586. \}\
  9587. \cf2 //
  9588. \f1 \'d7\'aa\'d5\'cb
  9589. \f0 \cf4 \
  9590. - (JXBaseChatCell *)\cf11 createTransferCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath \{\
  9591. NSString * identifier = \cf6 @"JXTransferCell"\cf4 ;\
  9592. JXTransferCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9593. \f2\b \cf8 if
  9594. \f0\b0 \cf4 (!cell) \{\
  9595. cell = [[JXTransferCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9596. \}\
  9597. \f2\b \cf8 return
  9598. \f0\b0 \cf4 cell;\
  9599. \}\
  9600. \cf2 //
  9601. \f1 \'bb\'d8\'b8\'b4
  9602. \f0 \cf4 \
  9603. - (JXBaseChatCell *)\cf11 createReplyCell\cf4 :(JXMessageObject *)msg \cf11 indexPath\cf4 :(NSIndexPath *)indexPath \{\
  9604. NSString * identifier = \cf6 @"JXReplyCell"\cf4 ;\
  9605. JXReplyCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];\
  9606. \f2\b \cf8 if
  9607. \f0\b0 \cf4 (!cell) \{\
  9608. cell = [[JXReplyCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];\
  9609. \}\
  9610. \f2\b \cf8 return
  9611. \f0\b0 \cf4 cell;\
  9612. \}\
  9613. \
  9614. \cf2 //
  9615. \f1 \'cf\'d4\'ca\'be\'c8\'ab\'c6\'c1\'ca\'d3\'c6\'b5\'b2\'a5\'b7\'c5
  9616. \f0 \cf4 \
  9617. - (
  9618. \f2\b \cf8 void
  9619. \f0\b0 \cf4 )\cf11 showVideoPlayerWithTag\cf4 :(NSInteger)tag \{\
  9620. [
  9621. \f2\b \cf8 self
  9622. \f0\b0 \cf4 hideKeyboard:
  9623. \f2\b \cf8 NO
  9624. \f0\b0 \cf4 ];\
  9625. \f2\b \cf8 self
  9626. \f0\b0 \cf4 .indexNum = (
  9627. \f2\b \cf8 int
  9628. \f0\b0 \cf4 )tag;\
  9629. \
  9630. _player= [JXVideoPlayer alloc];\
  9631. _player.type = JXVideoTypeChat;\
  9632. _player.isShowHide =
  9633. \f2\b \cf8 YES
  9634. \f0\b0 \cf4 ; \cf2 //
  9635. \f1 \'b2\'a5\'b7\'c5\'d6\'d0\'b5\'e3\'bb\'f7\'b2\'a5\'b7\'c5\'c6\'f7\'b1\'e3\'cf\'fa\'bb\'d9\'b2\'a5\'b7\'c5\'c6\'f7
  9636. \f0 \cf4 \
  9637. _player.isStartFullScreenPlay =
  9638. \f2\b \cf8 YES
  9639. \f0\b0 \cf4 ; \cf2 //
  9640. \f1 \'c8\'ab\'c6\'c1\'b2\'a5\'b7\'c5
  9641. \f0 \cf4 \
  9642. _player.didVideoPlayEnd =
  9643. \f2\b \cf8 @selector
  9644. \f0\b0 \cf4 (didVideoPlayEnd);\
  9645. _player.delegate =
  9646. \f2\b \cf8 self
  9647. \f0\b0 \cf4 ;\
  9648. JXMessageObject *msg = [_array objectAtIndex:tag];\
  9649. \f2\b \cf8 if
  9650. \f0\b0 \cf4 (msg.isMySend && isFileExist(msg.fileName))\
  9651. _player.videoFile = msg.fileName;\
  9652. \f2\b \cf8 else
  9653. \f0\b0 \cf4 \
  9654. _player.videoFile = msg.content;\
  9655. _player.isReadDel = [msg.isReadDel boolValue];\
  9656. _player = [_player initWithParent:
  9657. \f2\b \cf8 self
  9658. \f0\b0 \cf4 .view];\
  9659. \
  9660. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(\cf7 .2f\cf4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\
  9661. [_player
  9662. \f2\b \cf8 switch
  9663. \f0\b0 \cf4 ];\
  9664. \});\
  9665. \}\
  9666. \
  9667. \
  9668. \cf2 //
  9669. \f1 \'cf\'fa\'bb\'d9\'b2\'a5\'b7\'c5\'c6\'f7
  9670. \f0 \cf4 \
  9671. - (
  9672. \f2\b \cf8 void
  9673. \f0\b0 \cf4 )\cf11 didVideoPlayEnd\cf4 \{\
  9674. \cf2 // [[UIApplication sharedApplication] setStatusBarHidden:NO];\cf4 \
  9675. JXVideoCell *cell = [
  9676. \f2\b \cf8 self
  9677. \f0\b0 \cf4 .tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:
  9678. \f2\b \cf8 self
  9679. \f0\b0 \cf4 .indexNum inSection:\cf7 0\cf4 ]];\
  9680. \f2\b \cf8 if
  9681. \f0\b0 \cf4 (!cell.msg.isMySend) \{\
  9682. [cell deleteMsg];\
  9683. \}\
  9684. \}\
  9685. \
  9686. \
  9687. -(
  9688. \f2\b \cf8 void
  9689. \f0\b0 \cf4 )\cf11 showOneMsg\cf4 :(JXMessageObject*)msg\{\
  9690. \f2\b \cf8 for
  9691. \f0\b0 \cf4 (
  9692. \f2\b \cf8 int
  9693. \f0\b0 \cf4 i=\cf7 0\cf4 ;i<[_array count];i++)\{\
  9694. JXMessageObject* p = (JXMessageObject*)[_array objectAtIndex:i];\
  9695. \f2\b \cf8 if
  9696. \f0\b0 \cf4 ([p.messageId isEqualToString:msg.messageId])\
  9697. \f2\b \cf8 return
  9698. \f0\b0 \cf4 ;\
  9699. p =
  9700. \f2\b \cf8 nil
  9701. \f0\b0 \cf4 ;\
  9702. \}\
  9703. \cf2 //
  9704. \f1 \'c5\'d0\'b6\'cf\'ca\'c7\'b7\'f1\'d5\'b9\'ca\'be\'ca\'b1\'bc\'e4
  9705. \f0 \cf4 \
  9706. [
  9707. \f2\b \cf8 self
  9708. \f0\b0 \cf4 setNewShowTime:msg];\
  9709. CGFloat height = \cf7 0\cf4 ;\
  9710. \f2\b \cf8 if
  9711. \f0\b0 \cf4 (_array.count > \cf7 0\cf4 ) \{\
  9712. height = [
  9713. \f2\b \cf8 self
  9714. \f0\b0 \cf4 tableView:_table heightForRowAtIndexPath:[NSIndexPath indexPathForRow:_array.count - \cf7 1\cf4 inSection:\cf7 0\cf4 ]];\
  9715. \}\
  9716. \
  9717. \f2\b \cf8 BOOL
  9718. \f0\b0 \cf4 flag =
  9719. \f2\b \cf8 NO
  9720. \f0\b0 \cf4 ;\
  9721. \f2\b \cf8 if
  9722. \f0\b0 \cf4 (fabs(_table.contentOffset.y + _table.frame.size.height - _table.contentSize.height) < height) \{\
  9723. flag =
  9724. \f2\b \cf8 YES
  9725. \f0\b0 \cf4 ;\
  9726. \}\
  9727. msg.isShowWait =
  9728. \f2\b \cf8 YES
  9729. \f0\b0 \cf4 ;\
  9730. [_array addObject:msg];\
  9731. \cf2 // NSLog(@"_array:%d",msg.retainCount);\cf4 \
  9732. \f2\b \cf8 if
  9733. \f0\b0 \cf4 (
  9734. \f2\b \cf8 self
  9735. \f0\b0 \cf4 .isGroupMessages) \{\
  9736. \f2\b \cf8 return
  9737. \f0\b0 \cf4 ;\
  9738. \}\
  9739. \f2\b \cf8 if
  9740. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeRedPacket) \{\
  9741. \f2\b \cf8 if
  9742. \f0\b0 \cf4 (![_orderRedPacketArray containsObject:msg]) \{\
  9743. [_orderRedPacketArray addObject:msg];\
  9744. \}\
  9745. \}\
  9746. \
  9747. \f2\b \cf8 if
  9748. \f0\b0 \cf4 (_isRefreshing) \{\
  9749. \f2\b \cf8 return
  9750. \f0\b0 \cf4 ;\
  9751. \}\
  9752. \f2\b \cf8 @try
  9753. \f0\b0 \cf4 \{\
  9754. [_table insertRow:(
  9755. \f2\b \cf8 int
  9756. \f0\b0 \cf4 )[_array count]-\cf7 1\cf4 section:\cf7 0\cf4 ];\
  9757. \}
  9758. \f2\b \cf8 @catch
  9759. \f0\b0 \cf4 (NSException *exception) \{\
  9760. \
  9761. \}\
  9762. \
  9763. \f2\b \cf8 if
  9764. \f0\b0 \cf4 ((flag || msg.isMySend) && !
  9765. \f2\b \cf8 self
  9766. \f0\b0 \cf4 .isSyncMsg) \{\
  9767. \cf2 // dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\cf4 \
  9768. \
  9769. \
  9770. [_table gotoLastRow:
  9771. \f2\b \cf8 NO
  9772. \f0\b0 \cf4 ];\
  9773. \
  9774. \cf2 // [_table scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:_array.count inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:NO];\cf4 \
  9775. \
  9776. \cf2 // \});\cf4 \
  9777. \}\
  9778. \
  9779. \}\
  9780. \
  9781. \cf2 //
  9782. \f1 \'c9\'cf\'b4\'ab\'cd\'ea\'b3\'c9\'ba\'f3\'a3\'ac\'b7\'a2\'cf\'fb\'cf\'a2
  9783. \f0 \cf4 \
  9784. -(
  9785. \f2\b \cf8 void
  9786. \f0\b0 \cf4 )\cf11 doSendAfterUpload\cf4 :(NSDictionary*)dict\{\
  9787. \
  9788. NSString* msgId = [dict objectForKey:\cf6 @"oUrl"\cf4 ];\
  9789. msgId = [[msgId lastPathComponent] stringByDeletingPathExtension];\
  9790. NSString* oFileName = [dict objectForKey:\cf6 @"oFileName"\cf4 ];\
  9791. \
  9792. \cf2 // NSString *userId = self.userIds[self.groupMessagesIndex];\cf4 \
  9793. \cf2 // NSString *userName = self.userNames[self.groupMessagesIndex];\cf4 \
  9794. \
  9795. JXMessageObject* p=
  9796. \f2\b \cf8 nil
  9797. \f0\b0 \cf4 ;\
  9798. \f2\b \cf8 int
  9799. \f0\b0 \cf4 found=-\cf7 1\cf4 ;\
  9800. \f2\b \cf8 for
  9801. \f0\b0 \cf4 (
  9802. \f2\b \cf8 int
  9803. \f0\b0 \cf4 i=(
  9804. \f2\b \cf8 int
  9805. \f0\b0 \cf4 )[_array count]-\cf7 1\cf4 ;i>=\cf7 0\cf4 ;i--)\{\
  9806. p = [_array objectAtIndex:i];\
  9807. \f2\b \cf8 if
  9808. \f0\b0 \cf4 ([p.type intValue]==kWCMessageTypeLocation)\
  9809. \f2\b \cf8 if
  9810. \f0\b0 \cf4 ([[p.fileName lastPathComponent] isEqualToString:[oFileName lastPathComponent]])\{\
  9811. found = i;\
  9812. \f2\b \cf8 break
  9813. \f0\b0 \cf4 ;\
  9814. \}\
  9815. \f2\b \cf8 if
  9816. \f0\b0 \cf4 ([p.type intValue]==kWCMessageTypeFile && ![p.isUpload boolValue])\
  9817. \f2\b \cf8 if
  9818. \f0\b0 \cf4 ([[p.fileName lastPathComponent] isEqualToString:[oFileName lastPathComponent]])\{\
  9819. found = i;\
  9820. \f2\b \cf8 break
  9821. \f0\b0 \cf4 ;\
  9822. \}\
  9823. \f2\b \cf8 if
  9824. \f0\b0 \cf4 (p.content.length > \cf7 0\cf4 ) \{\
  9825. \f2\b \cf8 if
  9826. \f0\b0 \cf4 ([oFileName rangeOfString:p.content].location != NSNotFound) \{\
  9827. found = i;\
  9828. \f2\b \cf8 break
  9829. \f0\b0 \cf4 ;\
  9830. \}\
  9831. \}\
  9832. \cf2 // if([p.content isEqualToString:msgId])\{\cf4 \
  9833. \cf2 // found = i;\cf4 \
  9834. \cf2 // break;\cf4 \
  9835. \cf2 // \}\cf4 \
  9836. p =
  9837. \f2\b \cf8 nil
  9838. \f0\b0 \cf4 ;\
  9839. \}\
  9840. \f2\b \cf8 if
  9841. \f0\b0 \cf4 (found>=\cf7 0\cf4 )\{\cf2 //
  9842. \f1 \'d5\'d2\'b5\'bd\'cf\'fb\'cf\'a2\'cc\'e5
  9843. \f0 \cf4 \
  9844. \f2\b \cf8 if
  9845. \f0\b0 \cf4 ([[dict objectForKey:\cf6 @"status"\cf4 ] intValue] != \cf7 1\cf4 )\{\
  9846. NSLog(\cf6 @"doUploadFaire"\cf4 );\
  9847. [p updateIsSend:transfer_status_no];\
  9848. JXBaseChatCell* cell = [
  9849. \f2\b \cf8 self
  9850. \f0\b0 \cf4 getCell:found];\
  9851. [cell drawIsSend];\
  9852. cell =
  9853. \f2\b \cf8 nil
  9854. \f0\b0 \cf4 ;\
  9855. \f2\b \cf8 return
  9856. \f0\b0 \cf4 ;\
  9857. \}\
  9858. NSLog(\cf6 @"doSendAfterUpload"\cf4 );\
  9859. p.content = [dict objectForKey:\cf6 @"oUrl"\cf4 ];\
  9860. \cf2 // if (self.isGroupMessages) \{\cf4 \
  9861. \cf2 // p.toUserId = userId;\cf4 \
  9862. \cf2 // \}\cf4 \
  9863. \f2\b \cf8 if
  9864. \f0\b0 \cf4 (_tempChat==\cf7 11\cf4 ) \{\
  9865. p.tempChat=\cf7 11\cf4 ;\
  9866. \}
  9867. \f2\b \cf8 else
  9868. \f0\b0 \cf4 \{\
  9869. p.tempChat=\cf7 1\cf4 ;\
  9870. \}\
  9871. \
  9872. [p updateIsUpload:
  9873. \f2\b \cf8 YES
  9874. \f0\b0 \cf4 ];\
  9875. \cf2 // [g_xmpp sendMessage:p roomName:self.roomJid];//
  9876. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  9877. \f0 \cf4 \
  9878. \f2\b \cf8 if
  9879. \f0\b0 \cf4 (
  9880. \f2\b \cf8 self
  9881. \f0\b0 \cf4 .isCYMSGgroupANDFriendy) \{\
  9882. \f2\b \cf8 for
  9883. \f0\b0 \cf4 (NSString *userId
  9884. \f2\b \cf8 in
  9885. \f0\b0 \cf4
  9886. \f2\b \cf8 self
  9887. \f0\b0 \cf4 .userIds) \{\
  9888. \f2\b \cf8 if
  9889. \f0\b0 \cf4 (userId.length>\cf7 10\cf4 ) \{\
  9890. [g_xmpp sendMessage:p roomName:userId];\
  9891. \}
  9892. \f2\b \cf8 else
  9893. \f0\b0 \cf4 \{\
  9894. [g_xmpp sendMessage:p roomName:userId];\
  9895. \}\
  9896. \}\
  9897. \}
  9898. \f2\b \cf8 else
  9899. \f0\b0 \cf4 \{\
  9900. [g_xmpp sendMessage:p roomName:
  9901. \f2\b \cf8 self
  9902. \f0\b0 \cf4 .roomJid];\cf2 //
  9903. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  9904. \f0 \cf4 \
  9905. \}\
  9906. \
  9907. \cf2 // [self.tableView reloadData];\cf4 \
  9908. \}\
  9909. \
  9910. p =
  9911. \f2\b \cf8 nil
  9912. \f0\b0 \cf4 ;\
  9913. \f2\b \cf8 if
  9914. \f0\b0 \cf4 (
  9915. \f2\b \cf8 self
  9916. \f0\b0 \cf4 .isGroupMessages) \{\
  9917. \
  9918. \f2\b \cf8 self
  9919. \f0\b0 \cf4 .groupMessagesIndex ++;\
  9920. \f2\b \cf8 if
  9921. \f0\b0 \cf4 (
  9922. \f2\b \cf8 self
  9923. \f0\b0 \cf4 .userIds &&
  9924. \f2\b \cf8 self
  9925. \f0\b0 \cf4 .groupMessagesIndex >=
  9926. \f2\b \cf8 self
  9927. \f0\b0 \cf4 .userIds.count) \{\
  9928. \
  9929. \f2\b \cf8 self
  9930. \f0\b0 \cf4 .groupMessagesIndex = \cf7 0\cf4 ;\
  9931. [JXMyTools showTipView:Localized(\cf6 @"JX_SendComplete"\cf4 )];\
  9932. \
  9933. \}\
  9934. \}\
  9935. \}\
  9936. \
  9937. \cf2 //
  9938. \f1 \'c9\'cf\'b4\'ab\'cd\'ea\'b3\'c9\'ba\'f3\'a3\'ac\'b7\'a2\'cf\'fb\'cf\'a2
  9939. \f0 \cf4 \
  9940. -(
  9941. \f2\b \cf8 void
  9942. \f0\b0 \cf4 )\cf11 doUploadError\cf4 :(JXConnection*)downloader\{\
  9943. NSString* msgId = downloader.userData;\
  9944. msgId = [[msgId lastPathComponent] stringByDeletingPathExtension];\
  9945. \
  9946. \f2\b \cf8 for
  9947. \f0\b0 \cf4 (
  9948. \f2\b \cf8 int
  9949. \f0\b0 \cf4 i=(
  9950. \f2\b \cf8 int
  9951. \f0\b0 \cf4 )[_array count]-\cf7 1\cf4 ;i>=\cf7 0\cf4 ;i--)\{\
  9952. JXMessageObject* p = [_array objectAtIndex:i];\
  9953. \f2\b \cf8 if
  9954. \f0\b0 \cf4 ([p.content isEqualToString:msgId])\{\
  9955. [p updateIsSend:transfer_status_no];\
  9956. [[
  9957. \f2\b \cf8 self
  9958. \f0\b0 \cf4 getCell:i] drawIsSend];\
  9959. \f2\b \cf8 return
  9960. \f0\b0 \cf4 ;\
  9961. \}\
  9962. p =
  9963. \f2\b \cf8 nil
  9964. \f0\b0 \cf4 ;\
  9965. \}\
  9966. \}\
  9967. \
  9968. -(
  9969. \f2\b \cf8 void
  9970. \f0\b0 \cf4 )\cf11 onSendTimeout\cf4 :(NSNotification *)notifacation\cf2 //
  9971. \f1 \'b3\'ac\'ca\'b1\'ce\'b4\'ca\'d5\'b5\'bd\'bb\'d8\'d6\'b4
  9972. \f0 \cf4 \
  9973. \{\
  9974. JXMessageObject *msg = (JXMessageObject *)notifacation.object;\
  9975. \f2\b \cf8 if
  9976. \f0\b0 \cf4 (msg==
  9977. \f2\b \cf8 nil
  9978. \f0\b0 \cf4 )\
  9979. \f2\b \cf8 return
  9980. \f0\b0 \cf4 ;\
  9981. \
  9982. \f2\b \cf8 if
  9983. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeWithdraw) \{\
  9984. [_wait stop];\
  9985. \cf2 // [g_App showAlert:Localized(@"JX_WithdrawFailed")];\cf4 \
  9986. [JXMyTools showTipView:Localized(\cf6 @"JX_WithdrawFailed"\cf4 )];\
  9987. \f2\b \cf8 return
  9988. \f0\b0 \cf4 ;\
  9989. \}\
  9990. \
  9991. \f2\b \cf8 for
  9992. \f0\b0 \cf4 (
  9993. \f2\b \cf8 int
  9994. \f0\b0 \cf4 i=(
  9995. \f2\b \cf8 int
  9996. \f0\b0 \cf4 )[_array count]-\cf7 1\cf4 ;i>=\cf7 0\cf4 ;i--)\{\
  9997. JXMessageObject* p = [_array objectAtIndex:i];\
  9998. \f2\b \cf8 if
  9999. \f0\b0 \cf4 (p == msg)\{\
  10000. \cf2 // NSLog(@"receive:onSendTimeout");\cf4 \
  10001. [[
  10002. \f2\b \cf8 self
  10003. \f0\b0 \cf4 getCell:i] drawIsSend];\
  10004. \f2\b \cf8 break
  10005. \f0\b0 \cf4 ;\
  10006. \}\
  10007. p =
  10008. \f2\b \cf8 nil
  10009. \f0\b0 \cf4 ;\
  10010. \}\
  10011. \}\
  10012. \
  10013. \
  10014. -(
  10015. \f2\b \cf8 void
  10016. \f0\b0 \cf4 )\cf11 onReceiveFile\cf4 :(NSNotification *)notifacation\cf2 //
  10017. \f1 \'ca\'d5\'b5\'bd\'cf\'c2\'d4\'d8\'d7\'b4\'cc\'ac
  10018. \f0 \cf4 \
  10019. \{\
  10020. JXMessageObject *msg = (JXMessageObject *)notifacation.object;\
  10021. \f2\b \cf8 if
  10022. \f0\b0 \cf4 (msg==
  10023. \f2\b \cf8 nil
  10024. \f0\b0 \cf4 )\
  10025. \f2\b \cf8 return
  10026. \f0\b0 \cf4 ;\
  10027. \
  10028. \f2\b \cf8 for
  10029. \f0\b0 \cf4 (
  10030. \f2\b \cf8 int
  10031. \f0\b0 \cf4 i=(
  10032. \f2\b \cf8 int
  10033. \f0\b0 \cf4 )[_array count]-\cf7 1\cf4 ;i>=\cf7 0\cf4 ;i--)\{\
  10034. JXMessageObject* p = [_array objectAtIndex:i];\
  10035. \f2\b \cf8 if
  10036. \f0\b0 \cf4 (p == msg)\{\
  10037. \cf2 // NSLog(@"onReceiveFile");\cf4 \
  10038. [[
  10039. \f2\b \cf8 self
  10040. \f0\b0 \cf4 getCell:i] drawIsReceive];\
  10041. \f2\b \cf8 break
  10042. \f0\b0 \cf4 ;\
  10043. \}\
  10044. p =
  10045. \f2\b \cf8 nil
  10046. \f0\b0 \cf4 ;\
  10047. \}\
  10048. \}\
  10049. \
  10050. -(
  10051. \f2\b \cf8 void
  10052. \f0\b0 \cf4 )\cf11 showMsg\cf4 :(NSNotification *)notifacation\{\
  10053. JXMessageObject *msg = (JXMessageObject *)notifacation.object;\
  10054. \f2\b \cf8 if
  10055. \f0\b0 \cf4 (msg==
  10056. \f2\b \cf8 nil
  10057. \f0\b0 \cf4 )\
  10058. \f2\b \cf8 return
  10059. \f0\b0 \cf4 ;\
  10060. \f2\b \cf8 if
  10061. \f0\b0 \cf4 ([[msg getTableName] isEqualToString:chatPerson.userId] && msg.isMySend)\
  10062. [
  10063. \f2\b \cf8 self
  10064. \f0\b0 \cf4 showOneMsg:msg];\
  10065. \}\
  10066. \
  10067. \cf5 #pragma mark
  10068. \f4\b \cf16 \'bd\'d3\'ca\'dc\'d0\'c2\'cf\'fb\'cf\'a2\'b9\'e3\'b2\'a5
  10069. \f0\b0 \cf4 \
  10070. -(
  10071. \f2\b \cf8 void
  10072. \f0\b0 \cf4 )\cf11 newMsgCome\cf4 :(NSNotification *)notifacation\{\
  10073. \
  10074. \
  10075. JXMessageObject *msg = (JXMessageObject *)notifacation.object;\
  10076. \
  10077. \
  10078. \f2\b \cf8 if
  10079. \f0\b0 \cf4 (msg==
  10080. \f2\b \cf8 nil
  10081. \f0\b0 \cf4 )\
  10082. \f2\b \cf8 return
  10083. \f0\b0 \cf4 ;\
  10084. \
  10085. \cf2 //
  10086. \f1 \'b8\'fc\'d0\'c2
  10087. \f0 title
  10088. \f1 \'d4\'da\'cf\'df\'d7\'b4\'cc\'ac
  10089. \f0 \cf4 \
  10090. \f2\b \cf8 if
  10091. \f0\b0 \cf4 (!
  10092. \f2\b \cf8 self
  10093. \f0\b0 \cf4 .roomJid && !
  10094. \f2\b \cf8 self
  10095. \f0\b0 \cf4 .onlinestate && ![msg.fromUserId isEqualToString:MY_USER_ID]) \{\
  10096. \f2\b \cf8 self
  10097. \f0\b0 \cf4 .onlinestate =
  10098. \f2\b \cf8 YES
  10099. \f0\b0 \cf4 ;\
  10100. \f2\b \cf8 if
  10101. \f0\b0 \cf4 (
  10102. \f2\b \cf8 self
  10103. \f0\b0 \cf4 .isGroupMessages) \{\
  10104. \f2\b \cf8 self
  10105. \f0\b0 \cf4 .title = Localized(\cf6 @"JX_GroupHair"\cf4 );\
  10106. \
  10107. [
  10108. \f2\b \cf8 self
  10109. \f0\b0 \cf4 setAudioIconFrame];\
  10110. \}
  10111. \f2\b \cf8 else
  10112. \f0\b0 \cf4 \{\
  10113. \f2\b \cf8 if
  10114. \f0\b0 \cf4 (
  10115. \f2\b \cf8 self
  10116. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 ) \{\
  10117. \
  10118. \}
  10119. \f2\b \cf8 else
  10120. \f0\b0 \cf4 \{\
  10121. \
  10122. \f2\b \cf8 if
  10123. \f0\b0 \cf4 ([chatPerson.userId intValue]<\cf7 10100\cf4 && [chatPerson.userId intValue]>=\cf7 10000\cf4 ) \{\
  10124. \f2\b \cf8 self
  10125. \f0\b0 \cf4 .title = chatPerson.userNickname;\
  10126. [
  10127. \f2\b \cf8 self
  10128. \f0\b0 \cf4 setAudioIconFrame];\
  10129. \}
  10130. \f2\b \cf8 else
  10131. \f0\b0 \cf4 \{\
  10132. \cf2 // NSString *str = self.onlinestate ? Localized(@"JX_OnLine") : Localized(@"JX_OffLine");\cf4 \
  10133. \cf2 // self.title = [NSString stringWithFormat:@"%@(%@)",chatPerson.remarkName.length > 0 ? chatPerson.remarkName : chatPerson.userNickname,str];\cf4 \
  10134. [
  10135. \f2\b \cf8 self
  10136. \f0\b0 \cf4 setChatTitle:chatPerson.remarkName.length > \cf7 0\cf4 ? chatPerson.remarkName : chatPerson.userNickname];\
  10137. \}\
  10138. \}\
  10139. \}\
  10140. \}\
  10141. \
  10142. \cf5 #ifdef Live_Version\cf4 \
  10143. \f2\b \cf8 if
  10144. \f0\b0 \cf4 ([[JXLiveJidManager shareArray] contains:msg.toUserId] || [[JXLiveJidManager shareArray] contains:msg.fromUserId])\
  10145. \f2\b \cf8 return
  10146. \f0\b0 \cf4 ;\
  10147. \cf5 #endif\cf4 \
  10148. \
  10149. \f2\b \cf8 if
  10150. \f0\b0 \cf4 ([msg.type intValue] == XMPP_TYPE_NOBLACK) \{\
  10151. \f2\b \cf8 if
  10152. \f0\b0 \cf4 ([msg.fromUserId isEqualToString:
  10153. \f2\b \cf8 self
  10154. \f0\b0 \cf4 .chatPerson.userId]) \{\
  10155. \f2\b \cf8 self
  10156. \f0\b0 \cf4 .isBeenBlack = \cf7 0\cf4 ;\
  10157. \}\
  10158. \}\
  10159. \
  10160. \f2\b \cf8 if
  10161. \f0\b0 \cf4 (!msg.isVisible)\
  10162. \f2\b \cf8 return
  10163. \f0\b0 \cf4 ;\
  10164. \
  10165. \f2\b \cf8 if
  10166. \f0\b0 \cf4 (
  10167. \f2\b \cf8 self
  10168. \f0\b0 \cf4 .roomJid || msg.isGroup) \{\cf2 //
  10169. \f1 \'ca\'c7\'b7\'bf\'bc\'e4
  10170. \f0 \cf4 \
  10171. \
  10172. \
  10173. \cf2 // NSLog(@"---chatViewController %@", [msg mj_keyValues]);\cf4 \
  10174. \
  10175. \
  10176. \f2\b \cf8 if
  10177. \f0\b0 \cf4 (msg.isRepeat) \{\
  10178. \f2\b \cf8 return
  10179. \f0\b0 \cf4 ;\
  10180. \}\
  10181. \f2\b \cf8 if
  10182. \f0\b0 \cf4 ([msg.toUserId isEqualToString:chatPerson.userId]||[msg.toId isEqualToString:
  10183. \f2\b \cf8 self
  10184. \f0\b0 \cf4 .roomJid]) \{\cf2 //
  10185. \f1 \'b5\'da\'d2\'bb\'b8\'f6\'c5\'d0\'b6\'cf\'ca\'b1\'b4\'d3
  10186. \f0 MsgView
  10187. \f1 \'bd\'f8\'c8\'eb\'a3\'ac\'b5\'da\'b6\'fe\'b8\'f6\'b4\'d3
  10188. \f0 GroupView
  10189. \f1 \'bd\'f8\'c8\'eb
  10190. \f0 \cf4 \
  10191. [
  10192. \f2\b \cf8 self
  10193. \f0\b0 \cf4 showOneMsg:msg];\
  10194. \}
  10195. \f2\b \cf8 else
  10196. \f0\b0 \cf4 \{\
  10197. \f2\b \cf8 if
  10198. \f0\b0 \cf4 ([msg.fromId isEqualToString:chatPerson.userId]||[msg.fromId isEqualToString:
  10199. \f2\b \cf8 self
  10200. \f0\b0 \cf4 .roomJid])\cf2 //
  10201. \f1 \'b5\'da\'d2\'bb\'b8\'f6\'c5\'d0\'b6\'cf\'ca\'b1\'b4\'d3
  10202. \f0 MsgView
  10203. \f1 \'bd\'f8\'c8\'eb\'a3\'ac\'b5\'da\'b6\'fe\'b8\'f6\'b4\'d3
  10204. \f0 GroupView
  10205. \f1 \'bd\'f8\'c8\'eb
  10206. \f0 \cf4 \
  10207. [
  10208. \f2\b \cf8 self
  10209. \f0\b0 \cf4 showOneMsg:msg];\
  10210. \}\
  10211. \
  10212. \f2\b \cf8 if
  10213. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeSuperDelete) \{\
  10214. JXMessageObject *newMsg;\
  10215. NSInteger index = \cf7 0\cf4 ;\
  10216. \f2\b \cf8 for
  10217. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < _array.count; i ++) \{\
  10218. JXMessageObject *withDrawMsg = _array[i];\
  10219. \f2\b \cf8 if
  10220. \f0\b0 \cf4 ([msg.content isEqualToString:withDrawMsg.messageId]) \{\
  10221. newMsg = withDrawMsg;\
  10222. index = i;\
  10223. \f2\b \cf8 break
  10224. \f0\b0 \cf4 ;\
  10225. \}\
  10226. \}\
  10227. \f2\b \cf8 if
  10228. \f0\b0 \cf4 (!newMsg) \{\
  10229. \f2\b \cf8 return
  10230. \f0\b0 \cf4 ;\
  10231. \}\
  10232. newMsg.isShowTime =
  10233. \f2\b \cf8 NO
  10234. \f0\b0 \cf4 ;\
  10235. newMsg.type = [NSNumber numberWithInt:kWCMessageTypeSuperDelete];\
  10236. \cf2 // newMsg.content = Localized(@"JX_AlreadyWithdraw");\cf4 \
  10237. newMsg.content = \cf6 @""\cf4 ;\
  10238. NSString* s;\
  10239. \f2\b \cf8 if
  10240. \f0\b0 \cf4 ([
  10241. \f2\b \cf8 self
  10242. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\
  10243. s =
  10244. \f2\b \cf8 self
  10245. \f0\b0 \cf4 .roomJid;\
  10246. \f2\b \cf8 else
  10247. \f0\b0 \cf4 \
  10248. s = chatPerson.userId;\
  10249. newMsg.fromUserId = MY_USER_ID;\
  10250. newMsg.toUserId = s;\
  10251. \f2\b \cf8 if
  10252. \f0\b0 \cf4 (
  10253. \f2\b \cf8 self
  10254. \f0\b0 \cf4 .withdrawIndex == _array.count - \cf7 1\cf4 ) \{\
  10255. \f2\b \cf8 self
  10256. \f0\b0 \cf4 .lastMsg.content = newMsg.content;\
  10257. \}\
  10258. [newMsg updateLastSend:UpdateLastSendType_None];\
  10259. [newMsg update];\
  10260. [newMsg notifyNewMsg];\
  10261. [_wait stop];\
  10262. [_table reloadRow:(
  10263. \f2\b \cf8 int
  10264. \f0\b0 \cf4 )index section:\cf7 0\cf4 ];\
  10265. \f2\b \cf8 return
  10266. \f0\b0 \cf4 ;\
  10267. \}\
  10268. \
  10269. \}
  10270. \f2\b \cf8 else
  10271. \f0\b0 \cf4 \{\
  10272. \f2\b \cf8 if
  10273. \f0\b0 \cf4 ([msg.type integerValue] == kWCMessageTypeRemind && !msg.isShowRemind) \{\
  10274. \f2\b \cf8 return
  10275. \f0\b0 \cf4 ;\
  10276. \}\
  10277. \f2\b \cf8 if
  10278. \f0\b0 \cf4 ([msg.fromUserId isEqualToString:MY_USER_ID] && [msg.type intValue] == kWCMessageTypeWithdraw) \{\
  10279. \
  10280. JXMessageObject *newMsg;\
  10281. NSInteger index = \cf7 0\cf4 ;\
  10282. \f2\b \cf8 for
  10283. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < _array.count; i ++) \{\
  10284. JXMessageObject *withDrawMsg = _array[i];\
  10285. \f2\b \cf8 if
  10286. \f0\b0 \cf4 ([msg.content isEqualToString:withDrawMsg.messageId]) \{\
  10287. newMsg = withDrawMsg;\
  10288. index = i;\
  10289. \f2\b \cf8 break
  10290. \f0\b0 \cf4 ;\
  10291. \}\
  10292. \}\
  10293. \f2\b \cf8 if
  10294. \f0\b0 \cf4 (!newMsg) \{\
  10295. \f2\b \cf8 return
  10296. \f0\b0 \cf4 ;\
  10297. \}\
  10298. newMsg.isShowTime =
  10299. \f2\b \cf8 NO
  10300. \f0\b0 \cf4 ;\
  10301. newMsg.type = [NSNumber numberWithInt:kWCMessageTypeRemind];\
  10302. newMsg.content = Localized(\cf6 @"JX_AlreadyWithdraw"\cf4 );\
  10303. NSString* s;\
  10304. \f2\b \cf8 if
  10305. \f0\b0 \cf4 ([
  10306. \f2\b \cf8 self
  10307. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\
  10308. s =
  10309. \f2\b \cf8 self
  10310. \f0\b0 \cf4 .roomJid;\
  10311. \f2\b \cf8 else
  10312. \f0\b0 \cf4 \
  10313. s = chatPerson.userId;\
  10314. newMsg.fromUserId = MY_USER_ID;\
  10315. newMsg.toUserId = s;\
  10316. \f2\b \cf8 if
  10317. \f0\b0 \cf4 (
  10318. \f2\b \cf8 self
  10319. \f0\b0 \cf4 .withdrawIndex == _array.count - \cf7 1\cf4 ) \{\
  10320. \f2\b \cf8 self
  10321. \f0\b0 \cf4 .lastMsg.content = newMsg.content;\
  10322. \}\
  10323. [newMsg updateLastSend:UpdateLastSendType_None];\
  10324. [newMsg update];\
  10325. [newMsg notifyNewMsg];\
  10326. [_wait stop];\
  10327. [_table reloadRow:(
  10328. \f2\b \cf8 int
  10329. \f0\b0 \cf4 )index section:\cf7 0\cf4 ];\
  10330. \f2\b \cf8 return
  10331. \f0\b0 \cf4 ;\
  10332. \}\
  10333. \
  10334. \f2\b \cf8 if
  10335. \f0\b0 \cf4 ([msg.fromUserId isEqualToString:chatPerson.userId] || ([msg.fromUserId isEqualToString:MY_USER_ID] && [msg.toUserId isEqualToString:chatPerson.userId]))\
  10336. [
  10337. \f2\b \cf8 self
  10338. \f0\b0 \cf4 showOneMsg:msg];\
  10339. \}\
  10340. msg =
  10341. \f2\b \cf8 nil
  10342. \f0\b0 \cf4 ;\
  10343. \}\
  10344. \cf2 //
  10345. \f1 \'b7\'a2\'cf\'fb\'cf\'a2
  10346. \f0 \cf4 \
  10347. -(
  10348. \f2\b \cf8 void
  10349. \f0\b0 \cf4 )\cf11 newReceipt\cf4 :(NSNotification *)notifacation\{\cf2 //
  10350. \f1 \'d0\'c2\'bb\'d8\'d6\'b4
  10351. \f0 \cf4 \
  10352. \cf2 // NSLog(@"newReceipt");\cf4 \
  10353. JXMessageObject *msg = (JXMessageObject *)notifacation.object;\
  10354. \f2\b \cf8 if
  10355. \f0\b0 \cf4 (msg ==
  10356. \f2\b \cf8 nil
  10357. \f0\b0 \cf4 )\
  10358. \f2\b \cf8 return
  10359. \f0\b0 \cf4 ;\
  10360. \f2\b \cf8 if
  10361. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeWithdraw) \{\
  10362. JXMessageObject *msg1 = _array[
  10363. \f2\b \cf8 self
  10364. \f0\b0 \cf4 .withdrawIndex];\
  10365. msg1.isShowTime =
  10366. \f2\b \cf8 NO
  10367. \f0\b0 \cf4 ;\
  10368. msg1.type = [NSNumber numberWithInt:kWCMessageTypeRemind];\
  10369. msg1.content = Localized(\cf6 @"JX_AlreadyWithdraw"\cf4 );\
  10370. NSString* s;\
  10371. \f2\b \cf8 if
  10372. \f0\b0 \cf4 ([
  10373. \f2\b \cf8 self
  10374. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\
  10375. s =
  10376. \f2\b \cf8 self
  10377. \f0\b0 \cf4 .roomJid;\
  10378. \f2\b \cf8 else
  10379. \f0\b0 \cf4 \
  10380. s = chatPerson.userId;\
  10381. msg1.fromUserId = MY_USER_ID;\
  10382. msg1.toUserId = s;\
  10383. \f2\b \cf8 if
  10384. \f0\b0 \cf4 (
  10385. \f2\b \cf8 self
  10386. \f0\b0 \cf4 .withdrawIndex == _array.count - \cf7 1\cf4 ) \{\
  10387. \f2\b \cf8 self
  10388. \f0\b0 \cf4 .lastMsg.content = msg1.content;\
  10389. \}\
  10390. [msg1 updateLastSend:UpdateLastSendType_None];\
  10391. [msg1 update];\
  10392. [msg1 notifyNewMsg];\
  10393. [_wait stop];\
  10394. [_table reloadRow:(
  10395. \f2\b \cf8 int
  10396. \f0\b0 \cf4 )
  10397. \f2\b \cf8 self
  10398. \f0\b0 \cf4 .withdrawIndex section:\cf7 0\cf4 ];\
  10399. \f2\b \cf8 return
  10400. \f0\b0 \cf4 ;\
  10401. \}\
  10402. \
  10403. \f2\b \cf8 if
  10404. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeSuperDelete) \{\
  10405. JXMessageObject *msg1 = _array[
  10406. \f2\b \cf8 self
  10407. \f0\b0 \cf4 .withdrawIndex];\
  10408. msg1.isShowTime =
  10409. \f2\b \cf8 NO
  10410. \f0\b0 \cf4 ;\
  10411. msg1.type = [NSNumber numberWithInt:kWCMessageTypeNone];\
  10412. msg1.content = \cf6 @"
  10413. \f1 \'c4\'e3\'c9\'be\'b3\'fd\'c1\'cb\'d2\'bb\'cc\'f5\'cf\'fb\'cf\'a2
  10414. \f0 "\cf4 ;\
  10415. NSString* s;\
  10416. \f2\b \cf8 if
  10417. \f0\b0 \cf4 ([
  10418. \f2\b \cf8 self
  10419. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\
  10420. s =
  10421. \f2\b \cf8 self
  10422. \f0\b0 \cf4 .roomJid;\
  10423. \f2\b \cf8 else
  10424. \f0\b0 \cf4 \
  10425. s = chatPerson.userId;\
  10426. msg1.fromUserId = MY_USER_ID;\
  10427. msg1.toUserId = s;\
  10428. \f2\b \cf8 if
  10429. \f0\b0 \cf4 (
  10430. \f2\b \cf8 self
  10431. \f0\b0 \cf4 .withdrawIndex == _array.count - \cf7 1\cf4 ) \{\
  10432. \f2\b \cf8 self
  10433. \f0\b0 \cf4 .lastMsg.content = msg1.content;\
  10434. \}\
  10435. [msg1 updateLastSend:UpdateLastSendType_None];\
  10436. [msg1 update];\
  10437. [msg1 notifyNewMsg];\
  10438. [_wait stop];\
  10439. [_table reloadRow:(
  10440. \f2\b \cf8 int
  10441. \f0\b0 \cf4 )
  10442. \f2\b \cf8 self
  10443. \f0\b0 \cf4 .withdrawIndex section:\cf7 0\cf4 ];\
  10444. \f2\b \cf8 return
  10445. \f0\b0 \cf4 ;\
  10446. \}\
  10447. \
  10448. \f2\b \cf8 if
  10449. \f0\b0 \cf4 ([chatPerson.userId rangeOfString: msg.fromUserId].location != NSNotFound || [chatPerson.userId rangeOfString: msg.toUserId].location != NSNotFound || [msg.toUserId isEqualToString:
  10450. \f2\b \cf8 self
  10451. \f0\b0 \cf4 .roomJid] )\{\
  10452. \f2\b \cf8 for
  10453. \f0\b0 \cf4 (
  10454. \f2\b \cf8 int
  10455. \f0\b0 \cf4 i=(
  10456. \f2\b \cf8 int
  10457. \f0\b0 \cf4 )[_array count]-\cf7 1\cf4 ;i>=\cf7 0\cf4 ;i--)\{\
  10458. JXMessageObject* p = [_array objectAtIndex:i];\
  10459. \f2\b \cf8 if
  10460. \f0\b0 \cf4 ([p.messageId isEqualToString:msg.messageId])\{\
  10461. \
  10462. JXBaseChatCell* cell = [
  10463. \f2\b \cf8 self
  10464. \f0\b0 \cf4 getCell:i];\
  10465. \f2\b \cf8 if
  10466. \f0\b0 \cf4 (p != msg) \{\
  10467. cell.msg = msg;\
  10468. \}\
  10469. \f2\b \cf8 if
  10470. \f0\b0 \cf4 (cell)\
  10471. [cell drawIsSend];\
  10472. \f2\b \cf8 break
  10473. \f0\b0 \cf4 ;\
  10474. \}\
  10475. p =
  10476. \f2\b \cf8 nil
  10477. \f0\b0 \cf4 ;\
  10478. \}\
  10479. \}\
  10480. \}\
  10481. \
  10482. \cf5 #pragma mark
  10483. \f2\b \cf16 sharemore
  10484. \f4 \'b0\'b4\'c5\'a5\'d7\'e9\'d0\'ad\'d2\'e9
  10485. \f0\b0 \cf4 \
  10486. \cf2 //
  10487. \f1 \'d5\'d5\'c6\'ac\'d1\'a1\'d4\'f1\'c6\'f7
  10488. \f0 \cf4 \
  10489. -(
  10490. \f2\b \cf8 void
  10491. \f0\b0 \cf4 )\cf11 pickPhoto\cf4 \
  10492. \{\
  10493. [
  10494. \f2\b \cf8 self
  10495. \f0\b0 \cf4 hideKeyboard:
  10496. \f2\b \cf8 YES
  10497. \f0\b0 \cf4 ];\
  10498. \f2\b \cf8 if
  10499. \f0\b0 \cf4 ([
  10500. \f2\b \cf8 self
  10501. \f0\b0 \cf4 showDisableSay])\
  10502. \f2\b \cf8 return
  10503. \f0\b0 \cf4 ;\
  10504. \f2\b \cf8 if
  10505. \f0\b0 \cf4 ([
  10506. \f2\b \cf8 self
  10507. \f0\b0 \cf4 sendMsgCheck])\{\
  10508. \f2\b \cf8 return
  10509. \f0\b0 \cf4 ;\
  10510. \}\
  10511. RITLPhotosViewController *photoController = RITLPhotosViewController.photosViewController;\
  10512. photoController.configuration.maxCount = \cf7 9\cf4 ;\cf2 //
  10513. \f1 \'d7\'ee\'b4\'f3\'b5\'c4\'d1\'a1\'d4\'f1\'ca\'fd\'c4\'bf
  10514. \f0 \cf4 \
  10515. photoController.configuration.containVideo =
  10516. \f2\b \cf8 YES
  10517. \f0\b0 \cf4 ;\cf2 //
  10518. \f1 \'d1\'a1\'d4\'f1\'c0\'e0\'d0\'cd\'a3\'ac\'c4\'bf\'c7\'b0\'d6\'bb\'d1\'a1\'d4\'f1\'cd\'bc\'c6\'ac\'b2\'bb\'d1\'a1\'d4\'f1\'ca\'d3\'c6\'b5
  10519. \f0 \cf4 \
  10520. \
  10521. photoController.photo_delegate =
  10522. \f2\b \cf8 self
  10523. \f0\b0 \cf4 ;\
  10524. photoController.thumbnailSize = CGSizeMake(\cf7 320\cf4 , \cf7 320\cf4 );\cf2 //
  10525. \f1 \'cb\'f5\'c2\'d4\'cd\'bc\'b5\'c4\'b3\'df\'b4\'e7
  10526. \f0 \cf4 \
  10527. \cf2 // photoController.defaultIdentifers = self.saveAssetIds;//
  10528. \f1 \'bc\'c7\'c2\'bc\'d2\'d1\'be\'ad\'d1\'a1\'d4\'f1\'b9\'fd\'b5\'c4\'d7\'ca\'d4\'b4
  10529. \f0 \cf4 \
  10530. \
  10531. [
  10532. \f2\b \cf8 self
  10533. \f0\b0 \cf4 presentViewController:photoController animated:
  10534. \f2\b \cf8 true
  10535. \f0\b0 \cf4 completion:^\{\}];\
  10536. \
  10537. \cf2 // UIImagePickerController *imgPicker=[[UIImagePickerController alloc]init];\cf4 \
  10538. \cf2 // [imgPicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];\cf4 \
  10539. \cf2 // [imgPicker setDelegate:self];\cf4 \
  10540. \cf2 // [imgPicker setAllowsEditing:NO];\cf4 \
  10541. \cf12 ///
  10542. \f3 \cf2 / [g_App.window addSubview:imgPicker.view];
  10543. \f0 \cf4 \
  10544. \cf2 //\cf4 \
  10545. \cf2 // [self presentViewController:imgPicker animated:YES completion:^\{\}];\cf4 \
  10546. \}\
  10547. \
  10548. - (
  10549. \f2\b \cf8 void
  10550. \f0\b0 \cf4 )\cf11 sendPhotos\cf4 :(NSArray <
  10551. \f2\b \cf8 id
  10552. \f0\b0 \cf4 > *)datas \cf11 withOriginal\cf4 :(
  10553. \f2\b \cf8 BOOL
  10554. \f0\b0 \cf4 )isOriginal\{\
  10555. \f2\b \cf8 if
  10556. \f0\b0 \cf4 (_isGroupSendCancel) \{\
  10557. \f2\b \cf8 return
  10558. \f0\b0 \cf4 ;\
  10559. \}\
  10560. NSString *userId =
  10561. \f2\b \cf8 self
  10562. \f0\b0 \cf4 .userIds[
  10563. \f2\b \cf8 self
  10564. \f0\b0 \cf4 .groupMessagesIndex];\
  10565. NSString *name = \cf6 @"jpg"\cf4 ;\
  10566. \f2\b \cf8 for
  10567. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < datas.count; i ++) \{\
  10568. UIImage *chosedImage = datas[i];\
  10569. \f2\b \cf8 int
  10570. \f0\b0 \cf4 imageWidth = chosedImage.size.width;\
  10571. \f2\b \cf8 int
  10572. \f0\b0 \cf4 imageHeight = chosedImage.size.height;\
  10573. NSString *file = [FileInfo getUUIDFileName:name];\
  10574. [g_server saveImageToFile:chosedImage file:file isOriginal:isOriginal];\
  10575. [
  10576. \f2\b \cf8 self
  10577. \f0\b0 \cf4 sendImage:file withWidth:imageWidth andHeight:imageHeight userId:userId];\
  10578. \}\
  10579. \f2\b \cf8 self
  10580. \f0\b0 \cf4 .groupMessagesIndex ++;\
  10581. \f2\b \cf8 if
  10582. \f0\b0 \cf4 (
  10583. \f2\b \cf8 self
  10584. \f0\b0 \cf4 .groupMessagesIndex <
  10585. \f2\b \cf8 self
  10586. \f0\b0 \cf4 .userIds.count) \{\
  10587. \f2\b \cf8 if
  10588. \f0\b0 \cf4 (
  10589. \f2\b \cf8 self
  10590. \f0\b0 \cf4 .groupMessagesIndex % _onceSendNum == \cf7 0\cf4 ) \{\
  10591. \f2\b \cf8 return
  10592. \f0\b0 \cf4 ;\
  10593. \}
  10594. \f2\b \cf8 else
  10595. \f0\b0 \cf4 \{\
  10596. [
  10597. \f2\b \cf8 self
  10598. \f0\b0 \cf4 sendPhotos:datas withOriginal:isOriginal];\
  10599. \}\
  10600. \}
  10601. \f2\b \cf8 else
  10602. \f0\b0 \cf4
  10603. \f2\b \cf8 if
  10604. \f0\b0 \cf4 (
  10605. \f2\b \cf8 self
  10606. \f0\b0 \cf4 .userIds)\{\
  10607. \f2\b \cf8 self
  10608. \f0\b0 \cf4 .groupMessagesIndex = \cf7 0\cf4 ;\
  10609. \f2\b \cf8 return
  10610. \f0\b0 \cf4 ;\
  10611. \}\
  10612. \f2\b \cf8 return
  10613. \f0\b0 \cf4 ;\
  10614. \
  10615. \}\
  10616. \
  10617. - (
  10618. \f2\b \cf8 void
  10619. \f0\b0 \cf4 )\cf11 photosViewController\cf4 :(UIViewController *)viewController \cf11 assets\cf4 :(NSArray <PHAsset *> *)assets \{\
  10620. \f2\b \cf8 self
  10621. \f0\b0 \cf4 .imgDataArr = assets;\
  10622. \
  10623. \}\
  10624. \
  10625. \cf5 #pragma mark
  10626. \f2\b \cf16 -
  10627. \f4 \'b7\'a2\'cb\'cd\'cd\'bc\'c6\'ac
  10628. \f0\b0 \cf4 \
  10629. - (
  10630. \f2\b \cf8 void
  10631. \f0\b0 \cf4 )\cf11 photosViewController\cf4 :(UIViewController *)viewController \cf11 datas\cf4 :(NSArray <
  10632. \f2\b \cf8 id
  10633. \f0\b0 \cf4 > *)datas; \{\
  10634. \f2\b \cf8 if
  10635. \f0\b0 \cf4 (
  10636. \f2\b \cf8 self
  10637. \f0\b0 \cf4 .isGroupMessages) \{\
  10638. \f2\b \cf8 return
  10639. \f0\b0 \cf4 ;\
  10640. \cf2 // if (datas.count == 0) \{\cf4 \
  10641. \cf2 // return;\cf4 \
  10642. \cf2 // \}\cf4 \
  10643. \}
  10644. \f2\b \cf8 else
  10645. \f0\b0 \cf4 \{\
  10646. \f2\b \cf8 for
  10647. \f0\b0 \cf4 (
  10648. \f2\b \cf8 int
  10649. \f0\b0 \cf4 i = \cf7 0\cf4 ; i < datas.count; i++) \{\
  10650. \f2\b \cf8 BOOL
  10651. \f0\b0 \cf4 isGif = [datas[i] isKindOfClass:[NSData
  10652. \f2\b \cf8 class
  10653. \f0\b0 \cf4 ]];\
  10654. \
  10655. \f2\b \cf8 if
  10656. \f0\b0 \cf4 (isGif) \{\
  10657. \cf2 // GIF\cf4 \
  10658. NSString *file = [FileInfo getUUIDFileName:\cf6 @"gif"\cf4 ];\
  10659. [g_server saveDataToFile:datas[i] file:file];\
  10660. [
  10661. \f2\b \cf8 self
  10662. \f0\b0 \cf4 sendImage:file withWidth:\cf7 0\cf4 andHeight:\cf7 0\cf4 userId:
  10663. \f2\b \cf8 nil
  10664. \f0\b0 \cf4 ];\
  10665. \
  10666. \}
  10667. \f2\b \cf8 else
  10668. \f0\b0 \cf4 \{\
  10669. \cf2 //
  10670. \f1 \'c6\'d5\'cd\'a8\'cd\'bc\'c6\'ac
  10671. \f0 \cf4 \
  10672. UIImage *chosedImage = datas[i];\
  10673. \cf2 //
  10674. \f1 \'bb\'f1\'c8\'a1
  10675. \f0 image
  10676. \f1 \'b5\'c4\'b3\'a4\'bf\'ed
  10677. \f0 \cf4 \
  10678. \f2\b \cf8 int
  10679. \f0\b0 \cf4 imageWidth = chosedImage.size.width;\
  10680. \f2\b \cf8 int
  10681. \f0\b0 \cf4 imageHeight = chosedImage.size.height;\
  10682. NSString *name = \cf6 @"jpg"\cf4 ;\
  10683. NSString *file = [FileInfo getUUIDFileName:name];\
  10684. [g_server saveImageToFile:chosedImage file:file isOriginal:
  10685. \f2\b \cf8 YES
  10686. \f0\b0 \cf4 ];\
  10687. [
  10688. \f2\b \cf8 self
  10689. \f0\b0 \cf4 sendImage:file withWidth:imageWidth andHeight:imageHeight userId:
  10690. \f2\b \cf8 nil
  10691. \f0\b0 \cf4 ];\
  10692. \}\
  10693. \}\
  10694. \}\
  10695. \}\
  10696. \
  10697. \cf5 #pragma mark
  10698. \f2\b \cf16 -
  10699. \f4 \'b7\'a2\'cb\'cd\'ca\'d3\'c6\'b5
  10700. \f0\b0 \cf4 \
  10701. - (
  10702. \f2\b \cf8 void
  10703. \f0\b0 \cf4 )\cf11 photosViewController\cf4 :(UIViewController *)viewController \cf11 media\cf4 :(JXMediaObject *)media \{\
  10704. \f2\b \cf8 if
  10705. \f0\b0 \cf4 (
  10706. \f2\b \cf8 self
  10707. \f0\b0 \cf4 .isGroupMessages) \{\
  10708. \f2\b \cf8 return
  10709. \f0\b0 \cf4 ;\
  10710. \cf2 // for (NSInteger i = 0; i < self.userIds.count; i ++) \{\cf4 \
  10711. \cf2 // NSString *userId = self.userIds[i];\cf4 \
  10712. \cf2 //\cf4 \
  10713. \cf2 // [self sendMedia:media userId:userId];\cf4 \
  10714. \cf12 ///
  10715. \f3 \cf2 / [g_server uploadFile:media.fileName validTime:self.chatPerson.chatRecordTimeOut messageId:self.curMessageId toView:self];
  10716. \f0 \cf4 \
  10717. \cf2 // \}\cf4 \
  10718. \}
  10719. \f2\b \cf8 else
  10720. \f0\b0 \cf4 \{\
  10721. [
  10722. \f2\b \cf8 self
  10723. \f0\b0 \cf4 sendMedia:media userId:
  10724. \f2\b \cf8 nil
  10725. \f0\b0 \cf4 ];\
  10726. \cf2 // [g_server uploadFile:media.fileName validTime:self.chatPerson.chatRecordTimeOut messageId:self.curMessageId toView:self];\cf4 \
  10727. \}\
  10728. \}\
  10729. \
  10730. - (
  10731. \f2\b \cf8 void
  10732. \f0\b0 \cf4 )\cf11 photosViewController\cf4 :(UIViewController *)viewController \cf11 imageAndVideos\cf4 :(NSDictionary *)imageAndVideosDic\{\
  10733. \f2\b \cf8 if
  10734. \f0\b0 \cf4 (!
  10735. \f2\b \cf8 self
  10736. \f0\b0 \cf4 .isGroupMessages) \{\
  10737. \f2\b \cf8 return
  10738. \f0\b0 \cf4 ;\
  10739. \}\
  10740. NSArray *imageArr = [imageAndVideosDic objectForKey:\cf6 @"images"\cf4 ];\
  10741. NSArray *mediaArr = [imageAndVideosDic objectForKey:\cf6 @"videos"\cf4 ];\
  10742. NSInteger num = imageArr.count + mediaArr.count;\
  10743. [
  10744. \f2\b \cf8 self
  10745. \f0\b0 \cf4 addWaitGroupSendViewWithMsgNum:num withType:groupsend_msgType_imagesAndVideos];\
  10746. \f2\b \cf8 self
  10747. \f0\b0 \cf4 .groupUploadObjArray = [NSMutableArray arrayWithArray:imageArr];\
  10748. [
  10749. \f2\b \cf8 self
  10750. \f0\b0 \cf4 .groupUploadObjArray addObjectsFromArray:mediaArr];\
  10751. _onceSendNum = \cf7 20\cf4 ;\
  10752. \f2\b \cf8 if
  10753. \f0\b0 \cf4 (imageArr.count + mediaArr.count > \cf7 1\cf4 ) \{\
  10754. _onceSendNum = \cf7 1\cf4 ;\
  10755. \}\
  10756. \f2\b \cf8 if
  10757. \f0\b0 \cf4 (mediaArr.count > \cf7 0\cf4 ) \{\
  10758. _onceSendNum = \cf7 1\cf4 ;\
  10759. \}\
  10760. \f2\b \cf8 self
  10761. \f0\b0 \cf4 .imgsAndVideosDic = imageAndVideosDic;\
  10762. [
  10763. \f2\b \cf8 self
  10764. \f0\b0 \cf4 sendImagesAndVideos:imageAndVideosDic];\
  10765. \}\
  10766. \
  10767. - (
  10768. \f2\b \cf8 void
  10769. \f0\b0 \cf4 )\cf11 sendMedias\cf4 :(NSArray *)mediaArray \cf11 isSave\cf4 :(
  10770. \f2\b \cf8 BOOL
  10771. \f0\b0 \cf4 )isSave\{\
  10772. \f2\b \cf8 if
  10773. \f0\b0 \cf4 (_isGroupSendCancel) \{\
  10774. \f2\b \cf8 return
  10775. \f0\b0 \cf4 ;\
  10776. \}\
  10777. NSString *userId =
  10778. \f2\b \cf8 self
  10779. \f0\b0 \cf4 .userIds[
  10780. \f2\b \cf8 self
  10781. \f0\b0 \cf4 .groupMessagesIndex];\
  10782. JXMediaObject *media = mediaArray.lastObject;\
  10783. [
  10784. \f2\b \cf8 self
  10785. \f0\b0 \cf4 sendMedia:media userId:userId];\
  10786. \f2\b \cf8 if
  10787. \f0\b0 \cf4 (isSave) \{\
  10788. [
  10789. \f2\b \cf8 self
  10790. \f0\b0 \cf4 saveVideo:media.fileName];\
  10791. \}\
  10792. \f2\b \cf8 self
  10793. \f0\b0 \cf4 .groupMessagesIndex ++;\
  10794. \f2\b \cf8 if
  10795. \f0\b0 \cf4 (
  10796. \f2\b \cf8 self
  10797. \f0\b0 \cf4 .groupMessagesIndex <
  10798. \f2\b \cf8 self
  10799. \f0\b0 \cf4 .userIds.count) \{\
  10800. \f2\b \cf8 if
  10801. \f0\b0 \cf4 (
  10802. \f2\b \cf8 self
  10803. \f0\b0 \cf4 .groupMessagesIndex % _onceSendNum == \cf7 0\cf4 ) \{\
  10804. \f2\b \cf8 return
  10805. \f0\b0 \cf4 ;\
  10806. \}
  10807. \f2\b \cf8 else
  10808. \f0\b0 \cf4 \{\
  10809. [
  10810. \f2\b \cf8 self
  10811. \f0\b0 \cf4 sendMedias:mediaArray isSave:isSave];\
  10812. \}\
  10813. \}
  10814. \f2\b \cf8 else
  10815. \f0\b0 \cf4
  10816. \f2\b \cf8 if
  10817. \f0\b0 \cf4 (
  10818. \f2\b \cf8 self
  10819. \f0\b0 \cf4 .userIds)\{\
  10820. \f2\b \cf8 self
  10821. \f0\b0 \cf4 .groupMessagesIndex = \cf7 0\cf4 ;\
  10822. \f2\b \cf8 return
  10823. \f0\b0 \cf4 ;\
  10824. \}\
  10825. \}\
  10826. \
  10827. - (
  10828. \f2\b \cf8 void
  10829. \f0\b0 \cf4 )\cf11 sendImagesAndVideos\cf4 :(NSDictionary *)imageAndVideosDic\{\
  10830. \f2\b \cf8 if
  10831. \f0\b0 \cf4 (_isGroupSendCancel) \{\
  10832. \f2\b \cf8 return
  10833. \f0\b0 \cf4 ;\
  10834. \}\
  10835. NSString *userId =
  10836. \f2\b \cf8 self
  10837. \f0\b0 \cf4 .userIds[
  10838. \f2\b \cf8 self
  10839. \f0\b0 \cf4 .groupMessagesIndex];\
  10840. NSArray *imageArr = [imageAndVideosDic objectForKey:\cf6 @"images"\cf4 ];\
  10841. NSArray *mediaArr = [imageAndVideosDic objectForKey:\cf6 @"videos"\cf4 ];\
  10842. \f2\b \cf8 if
  10843. \f0\b0 \cf4 (imageArr.count > \cf7 0\cf4 ) \{\
  10844. NSString *name = \cf6 @"jpg"\cf4 ;\
  10845. \f2\b \cf8 for
  10846. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < imageArr.count; i++) \{\
  10847. \f2\b \cf8 BOOL
  10848. \f0\b0 \cf4 isGif = [imageArr[i] isKindOfClass:[NSData
  10849. \f2\b \cf8 class
  10850. \f0\b0 \cf4 ]];\
  10851. \f2\b \cf8 if
  10852. \f0\b0 \cf4 (isGif) \{\
  10853. NSString *file = [FileInfo getUUIDFileName:\cf6 @"gif"\cf4 ];\
  10854. [g_server saveDataToFile:imageArr[i] file:file];\
  10855. [
  10856. \f2\b \cf8 self
  10857. \f0\b0 \cf4 sendImage:file withWidth:\cf7 0\cf4 andHeight:\cf7 0\cf4 userId:
  10858. \f2\b \cf8 nil
  10859. \f0\b0 \cf4 ];\
  10860. \}
  10861. \f2\b \cf8 else
  10862. \f0\b0 \cf4 \{\
  10863. UIImage *chosedImage = imageArr[i];\
  10864. \f2\b \cf8 int
  10865. \f0\b0 \cf4 imageWidth = chosedImage.size.width;\
  10866. \f2\b \cf8 int
  10867. \f0\b0 \cf4 imageHeight = chosedImage.size.height;\
  10868. NSString *file = [FileInfo getUUIDFileName:name];\
  10869. [g_server saveImageToFile:chosedImage file:file isOriginal:
  10870. \f2\b \cf8 YES
  10871. \f0\b0 \cf4 ];\
  10872. [
  10873. \f2\b \cf8 self
  10874. \f0\b0 \cf4 sendImage:file withWidth:imageWidth andHeight:imageHeight userId:userId];\
  10875. \}\
  10876. \}\
  10877. \}\
  10878. \f2\b \cf8 if
  10879. \f0\b0 \cf4 (mediaArr.count > \cf7 0\cf4 ) \{\
  10880. \f2\b \cf8 for
  10881. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < mediaArr.count; i++) \{\
  10882. JXMediaObject *media = mediaArr[i];\
  10883. [
  10884. \f2\b \cf8 self
  10885. \f0\b0 \cf4 sendMedia:media userId:userId];\
  10886. \}\
  10887. \}\
  10888. \f2\b \cf8 self
  10889. \f0\b0 \cf4 .groupMessagesIndex ++;\
  10890. \f2\b \cf8 if
  10891. \f0\b0 \cf4 (
  10892. \f2\b \cf8 self
  10893. \f0\b0 \cf4 .groupMessagesIndex <
  10894. \f2\b \cf8 self
  10895. \f0\b0 \cf4 .userIds.count) \{\
  10896. \f2\b \cf8 if
  10897. \f0\b0 \cf4 (_onceSendNum == \cf7 1\cf4 ||
  10898. \f2\b \cf8 self
  10899. \f0\b0 \cf4 .groupMessagesIndex % _onceSendNum == \cf7 0\cf4 ) \{\
  10900. \f2\b \cf8 return
  10901. \f0\b0 \cf4 ;\
  10902. \}
  10903. \f2\b \cf8 else
  10904. \f0\b0 \cf4 \{\
  10905. [
  10906. \f2\b \cf8 self
  10907. \f0\b0 \cf4 sendImagesAndVideos:imageAndVideosDic];\
  10908. \}\
  10909. \}
  10910. \f2\b \cf8 else
  10911. \f0\b0 \cf4
  10912. \f2\b \cf8 if
  10913. \f0\b0 \cf4 (
  10914. \f2\b \cf8 self
  10915. \f0\b0 \cf4 .userIds)\{\
  10916. \f2\b \cf8 self
  10917. \f0\b0 \cf4 .groupMessagesIndex = \cf7 0\cf4 ;\
  10918. \f2\b \cf8 return
  10919. \f0\b0 \cf4 ;\
  10920. \}\
  10921. \}\
  10922. \
  10923. -(
  10924. \f2\b \cf8 void
  10925. \f0\b0 \cf4 )\cf11 onCamera\cf4 \{\
  10926. [
  10927. \f2\b \cf8 self
  10928. \f0\b0 \cf4 hideKeyboard:
  10929. \f2\b \cf8 YES
  10930. \f0\b0 \cf4 ];\
  10931. \
  10932. \f2\b \cf8 if
  10933. \f0\b0 \cf4 (![
  10934. \f2\b \cf8 self
  10935. \f0\b0 \cf4 checkCameraLimits]) \{\
  10936. \f2\b \cf8 return
  10937. \f0\b0 \cf4 ;\
  10938. \}\
  10939. \f2\b \cf8 if
  10940. \f0\b0 \cf4 ([
  10941. \f2\b \cf8 self
  10942. \f0\b0 \cf4 showDisableSay])\
  10943. \f2\b \cf8 return
  10944. \f0\b0 \cf4 ;\
  10945. \f2\b \cf8 if
  10946. \f0\b0 \cf4 ([
  10947. \f2\b \cf8 self
  10948. \f0\b0 \cf4 sendMsgCheck])\{\
  10949. \f2\b \cf8 return
  10950. \f0\b0 \cf4 ;\
  10951. \}\
  10952. \
  10953. JXCameraVC *vc = [[JXCameraVC alloc] init];\
  10954. vc.cameraDelegate =
  10955. \f2\b \cf8 self
  10956. \f0\b0 \cf4 ;\
  10957. [
  10958. \f2\b \cf8 self
  10959. \f0\b0 \cf4 presentViewController:vc animated:
  10960. \f2\b \cf8 YES
  10961. \f0\b0 \cf4 completion:
  10962. \f2\b \cf8 nil
  10963. \f0\b0 \cf4 ];\
  10964. \
  10965. \cf2 // UIImagePickerController *imgPicker=[[UIImagePickerController alloc]init];\cf4 \
  10966. \cf2 // [imgPicker setSourceType:UIImagePickerControllerSourceTypeCamera];\cf4 \
  10967. \cf2 // [imgPicker setDelegate:self];\cf4 \
  10968. \cf2 // [imgPicker setAllowsEditing:NO];\cf4 \
  10969. \cf2 // // [g_App.window addSubview:imgPicker.view];\cf4 \
  10970. \cf2 //\cf4 \
  10971. \cf2 // [self presentViewController:imgPicker animated:YES completion:^\{\}];\cf4 \
  10972. \
  10973. \}\
  10974. \
  10975. \cf2 //
  10976. \f1 \'b4\'c1\'d2\'bb\'b4\'c1\'b6\'af\'bb\'ad
  10977. \f0 \cf4 \
  10978. - (
  10979. \f2\b \cf8 void
  10980. \f0\b0 \cf4 )\cf11 onShake\cf4 \{\
  10981. XLsn0wInputBox *inputBox = [[XLsn0wInputBox alloc] init];\
  10982. NSString *name = chatPerson.remarkName.length > \cf7 0\cf4 ? chatPerson.remarkName : chatPerson.userNickname;\
  10983. \f2\b \cf8 if
  10984. \f0\b0 \cf4 (
  10985. \f2\b \cf8 self
  10986. \f0\b0 \cf4 .roomJid.length > \cf7 0\cf4 ) \{\
  10987. inputBox.title.text = [NSString stringWithFormat:\cf6 @"
  10988. \f1 \'c4\'fa\'c8\'b7\'b6\'a8\'d2\'aa\'b4\'c1\'c8\'ba\'c4\'da\'cb\'f9\'d3\'d0\'c8\'cb\'c2\'f0
  10989. \f0 ?"\cf4 ];\
  10990. \}
  10991. \f2\b \cf8 else
  10992. \f0\b0 \cf4 \{\
  10993. inputBox.title.text = [NSString stringWithFormat:\cf6 @"
  10994. \f1 \'c4\'fa\'d2\'aa\'b4\'c1
  10995. \f0 %@
  10996. \f1 \'c9\'cf\'cf\'df\'c2\'f0
  10997. \f0 ?"\cf4 ,name];\
  10998. \}\
  10999. inputBox.placeholder = \cf6 @"
  11000. \f1 \'cc\'ee\'d0\'b4
  11001. \f0 \\"
  11002. \f1 \'d5\'f0
  11003. \f0 \\"
  11004. \f1 \'c4\'da\'c8\'dd\'bb\'f2\'b5\'e3\'bb\'f7
  11005. \f0 \\"
  11006. \f1 \'c8\'b7\'b6\'a8
  11007. \f0 \\"
  11008. \f1 \'d6\'b1\'bd\'d3\'d5\'f0
  11009. \f0 "\cf4 ;\
  11010. [inputBox confirmBtnClickBlock:^(NSString *inputString) \{\
  11011. [
  11012. \f2\b \cf8 self
  11013. \f0\b0 \cf4 showShakeMessage:inputString];\
  11014. \}];\
  11015. [inputBox show];\
  11016. \}\
  11017. \cf2 //
  11018. \f1 \'c1\'c4\'cc\'ec\'bd\'e7\'c3\'e6\'b4\'c1\'d2\'bb\'b4\'c1
  11019. \f0 \cf4 \
  11020. - (
  11021. \f2\b \cf8 void
  11022. \f0\b0 \cf4 )\cf11 showShakeMessage\cf4 :(NSString *)message \{\
  11023. \f2\b \cf8 if
  11024. \f0\b0 \cf4 ([
  11025. \f2\b \cf8 self
  11026. \f0\b0 \cf4 showDisableSay])\
  11027. \f2\b \cf8 return
  11028. \f0\b0 \cf4 ;\
  11029. \f2\b \cf8 if
  11030. \f0\b0 \cf4 ([
  11031. \f2\b \cf8 self
  11032. \f0\b0 \cf4 sendMsgCheck])\{\
  11033. \f2\b \cf8 return
  11034. \f0\b0 \cf4 ;\
  11035. \}\
  11036. \
  11037. \f2\b \cf8 if
  11038. \f0\b0 \cf4 (
  11039. \f2\b \cf8 self
  11040. \f0\b0 \cf4 .roomJid.length > \cf7 0\cf4 ) \{\
  11041. \cf2 // [JXMyTools showTipView:@"
  11042. \f1 \'c8\'ba\'d7\'e9\'d4\'dd\'b2\'bb\'d6\'a7\'b3\'d6\'b8\'c3\'b9\'a6\'c4\'dc\'a3\'a1
  11043. \f0 "];\cf4 \
  11044. \cf2 // return;\cf4 \
  11045. \
  11046. \}\
  11047. \f2\b \cf8 if
  11048. \f0\b0 \cf4 (
  11049. \f2\b \cf8 self
  11050. \f0\b0 \cf4 .isGroupMessages) \{\
  11051. \f2\b \cf8 if
  11052. \f0\b0 \cf4 (_isGroupSendCancel) \{\
  11053. \f2\b \cf8 return
  11054. \f0\b0 \cf4 ;\
  11055. \}\
  11056. \f2\b \cf8 if
  11057. \f0\b0 \cf4 (
  11058. \f2\b \cf8 self
  11059. \f0\b0 \cf4 .groupMessagesIndex == \cf7 0\cf4 ) \{\
  11060. [
  11061. \f2\b \cf8 self
  11062. \f0\b0 \cf4 addWaitGroupSendViewWithMsgNum:\cf7 1\cf4 withType:groupsend_msgType_shake];\
  11063. _onceSendNum = \cf7 20\cf4 ;\
  11064. \}\
  11065. \}\
  11066. \
  11067. NSString *userId =
  11068. \f2\b \cf8 self
  11069. \f0\b0 \cf4 .userIds[
  11070. \f2\b \cf8 self
  11071. \f0\b0 \cf4 .groupMessagesIndex];\
  11072. \cf2 // NSString *userName = self.userNames[self.groupMessagesIndex];\cf4 \
  11073. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  11074. msg.timeSend = [NSDate date];\
  11075. msg.fromUserId = MY_USER_ID;\
  11076. \f2\b \cf8 if
  11077. \f0\b0 \cf4 ([
  11078. \f2\b \cf8 self
  11079. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  11080. msg.toUserId =
  11081. \f2\b \cf8 self
  11082. \f0\b0 \cf4 .roomJid;\
  11083. msg.isGroup =
  11084. \f2\b \cf8 YES
  11085. \f0\b0 \cf4 ;\
  11086. msg.fromUserName = _userNickName;\
  11087. \}\
  11088. \f2\b \cf8 else
  11089. \f0\b0 \cf4 \{\
  11090. \f2\b \cf8 if
  11091. \f0\b0 \cf4 (
  11092. \f2\b \cf8 self
  11093. \f0\b0 \cf4 .isGroupMessages) \{\
  11094. msg.toUserId = userId;\
  11095. msg.isGroupSend =
  11096. \f2\b \cf8 YES
  11097. \f0\b0 \cf4 ;\
  11098. \f2\b \cf8 if
  11099. \f0\b0 \cf4 ((
  11100. \f2\b \cf8 self
  11101. \f0\b0 \cf4 .groupMessagesIndex + \cf7 1\cf4 ) % _onceSendNum == \cf7 0\cf4 ) \{\
  11102. msg.isLastGroupSend =
  11103. \f2\b \cf8 YES
  11104. \f0\b0 \cf4 ;\
  11105. \}\
  11106. \}
  11107. \f2\b \cf8 else
  11108. \f0\b0 \cf4 \{\
  11109. msg.toUserId = chatPerson.userId;\
  11110. \}\
  11111. msg.isGroup =
  11112. \f2\b \cf8 NO
  11113. \f0\b0 \cf4 ;\
  11114. \}\
  11115. msg.content = message;\
  11116. msg.type = [NSNumber numberWithInt:kWCMessageTypeShake];\
  11117. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  11118. msg.isRead = [NSNumber numberWithBool:
  11119. \f2\b \cf8 NO
  11120. \f0\b0 \cf4 ];\
  11121. msg.isReadDel = [NSNumber numberWithInt:
  11122. \f2\b \cf8 NO
  11123. \f0\b0 \cf4 ];\
  11124. \
  11125. \cf2 //
  11126. \f1 \'b7\'a2\'cd\'f9\'c4\'c4\'c0\'ef
  11127. \f0 \cf4 \
  11128. [msg insert:
  11129. \f2\b \cf8 self
  11130. \f0\b0 \cf4 .roomJid];\
  11131. \
  11132. \f2\b \cf8 if
  11133. \f0\b0 \cf4 (_tempChat==\cf7 11\cf4 ) \{\
  11134. msg.tempChat=\cf7 11\cf4 ;\
  11135. \}
  11136. \f2\b \cf8 else
  11137. \f0\b0 \cf4 \{\
  11138. msg.tempChat=\cf7 1\cf4 ;\
  11139. \}\
  11140. \
  11141. [g_xmpp sendMessage:msg roomName:
  11142. \f2\b \cf8 self
  11143. \f0\b0 \cf4 .roomJid];\cf2 //
  11144. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  11145. \f0 \cf4 \
  11146. \
  11147. \f2\b \cf8 if
  11148. \f0\b0 \cf4 (
  11149. \f2\b \cf8 self
  11150. \f0\b0 \cf4 .isGroupMessages) \{\
  11151. _groupSendType = groupsend_msgType_shake;\
  11152. \f2\b \cf8 self
  11153. \f0\b0 \cf4 .groupMessagesIndex ++;\
  11154. \f2\b \cf8 if
  11155. \f0\b0 \cf4 (msg.isLastGroupSend) \{\
  11156. \f2\b \cf8 return
  11157. \f0\b0 \cf4 ;\
  11158. \}\
  11159. \f2\b \cf8 if
  11160. \f0\b0 \cf4 (
  11161. \f2\b \cf8 self
  11162. \f0\b0 \cf4 .groupMessagesIndex <
  11163. \f2\b \cf8 self
  11164. \f0\b0 \cf4 .userIds.count) \{\
  11165. [
  11166. \f2\b \cf8 self
  11167. \f0\b0 \cf4 onShake];\
  11168. \}
  11169. \f2\b \cf8 else
  11170. \f0\b0 \cf4
  11171. \f2\b \cf8 if
  11172. \f0\b0 \cf4 (
  11173. \f2\b \cf8 self
  11174. \f0\b0 \cf4 .userIds)\{\
  11175. \f2\b \cf8 self
  11176. \f0\b0 \cf4 .groupMessagesIndex = \cf7 0\cf4 ;\
  11177. \f2\b \cf8 return
  11178. \f0\b0 \cf4 ;\
  11179. \}\
  11180. \f2\b \cf8 return
  11181. \f0\b0 \cf4 ;\
  11182. \}\
  11183. [
  11184. \f2\b \cf8 self
  11185. \f0\b0 \cf4 showOneMsg:msg];\
  11186. \}\
  11187. \
  11188. \cf2 //
  11189. \f1 \'b7\'a2\'cb\'cd\'ca\'d5\'b2\'d8
  11190. \f0 \cf4 \
  11191. - (
  11192. \f2\b \cf8 void
  11193. \f0\b0 \cf4 )\cf11 onCollection\cf4 \{\
  11194. \f2\b \cf8 if
  11195. \f0\b0 \cf4 ([
  11196. \f2\b \cf8 self
  11197. \f0\b0 \cf4 showDisableSay])\
  11198. \f2\b \cf8 return
  11199. \f0\b0 \cf4 ;\
  11200. \f2\b \cf8 if
  11201. \f0\b0 \cf4 ([
  11202. \f2\b \cf8 self
  11203. \f0\b0 \cf4 sendMsgCheck])\{\
  11204. \f2\b \cf8 return
  11205. \f0\b0 \cf4 ;\
  11206. \}\
  11207. WeiboViewControlle * collection = [[WeiboViewControlle alloc] initCollection];\
  11208. collection.delegate =
  11209. \f2\b \cf8 self
  11210. \f0\b0 \cf4 ;\
  11211. collection.isSend =
  11212. \f2\b \cf8 YES
  11213. \f0\b0 \cf4 ;\
  11214. [g_navigation pushViewController:collection animated:
  11215. \f2\b \cf8 YES
  11216. \f0\b0 \cf4 ];\
  11217. \}\
  11218. \
  11219. \cf2 //
  11220. \f1 \'b7\'a2\'cb\'cd\'ca\'d6\'bb\'fa\'c1\'aa\'cf\'b5\'c8\'cb
  11221. \f0 \cf4 \
  11222. - (
  11223. \f2\b \cf8 void
  11224. \f0\b0 \cf4 )\cf11 onAddressBook\cf4 \{\
  11225. JXSelectAddressBookVC *vc = [[JXSelectAddressBookVC alloc] init];\
  11226. vc.delegate =
  11227. \f2\b \cf8 self
  11228. \f0\b0 \cf4 ;\
  11229. [g_navigation pushViewController:vc animated:
  11230. \f2\b \cf8 YES
  11231. \f0\b0 \cf4 ];\
  11232. \}\
  11233. \
  11234. \cf2 //
  11235. \f1 \'c8\'ba\'d6\'fa\'ca\'d6
  11236. \f0 \cf4 \
  11237. - (
  11238. \f2\b \cf8 void
  11239. \f0\b0 \cf4 )\cf11 onGroupHelper\cf4 \{\
  11240. [g_server queryGroupHelper:
  11241. \f2\b \cf8 self
  11242. \f0\b0 \cf4 .roomId toView:
  11243. \f2\b \cf8 self
  11244. \f0\b0 \cf4 ];\
  11245. \}\
  11246. \
  11247. \cf2 //
  11248. \f1 \'cc\'f8\'d7\'aa\'c8\'ba\'d6\'fa\'ca\'d6\'c1\'d0\'b1\'ed
  11249. \f0 \cf4 \
  11250. - (
  11251. \f2\b \cf8 void
  11252. \f0\b0 \cf4 )\cf11 onGroupHelperList\cf4 \{\
  11253. JXGroupHelperListVC *vc = [[JXGroupHelperListVC alloc] init];\
  11254. vc.roomJid =
  11255. \f2\b \cf8 self
  11256. \f0\b0 \cf4 .roomJid;\
  11257. vc.roomId =
  11258. \f2\b \cf8 self
  11259. \f0\b0 \cf4 .roomId;\
  11260. [g_navigation pushViewController:vc animated:
  11261. \f2\b \cf8 YES
  11262. \f0\b0 \cf4 ];\
  11263. \}\
  11264. \
  11265. - (
  11266. \f2\b \cf8 void
  11267. \f0\b0 \cf4 )\cf11 selectAddressBookVC\cf4 :(JXSelectAddressBookVC *)selectVC \cf11 doneAction\cf4 :(NSArray *)array \{\
  11268. \
  11269. NSString *userId =
  11270. \f2\b \cf8 self
  11271. \f0\b0 \cf4 .userIds[
  11272. \f2\b \cf8 self
  11273. \f0\b0 \cf4 .groupMessagesIndex];\
  11274. \cf2 // NSString *userName = self.userNames[self.groupMessagesIndex];\cf4 \
  11275. \f2\b \cf8 if
  11276. \f0\b0 \cf4 (
  11277. \f2\b \cf8 self
  11278. \f0\b0 \cf4 .isGroupMessages) \{\
  11279. \f2\b \cf8 if
  11280. \f0\b0 \cf4 (_isGroupSendCancel) \{\
  11281. \f2\b \cf8 return
  11282. \f0\b0 \cf4 ;\
  11283. \}\
  11284. \f2\b \cf8 if
  11285. \f0\b0 \cf4 (
  11286. \f2\b \cf8 self
  11287. \f0\b0 \cf4 .groupMessagesIndex == \cf7 0\cf4 ) \{\
  11288. [
  11289. \f2\b \cf8 self
  11290. \f0\b0 \cf4 addWaitGroupSendViewWithMsgNum:array.count withType:groupsend_msgType_addressbook];\
  11291. _onceSendNum = \cf7 20\cf4 ;\
  11292. \f2\b \cf8 self
  11293. \f0\b0 \cf4 .groupSendMsgArray = [NSMutableArray arrayWithArray:array];\
  11294. \f2\b \cf8 self
  11295. \f0\b0 \cf4 .groupUploadObjArray = [NSMutableArray arrayWithObject:selectVC];\
  11296. \}\
  11297. \}\
  11298. \
  11299. \f2\b \cf8 BOOL
  11300. \f0\b0 \cf4 isLastGroupSend =
  11301. \f2\b \cf8 NO
  11302. \f0\b0 \cf4 ;\
  11303. \f2\b \cf8 for
  11304. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ;i < array.count;i++)\{\
  11305. JXAddressBook *address = array[i];\
  11306. \
  11307. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  11308. msg.timeSend = [NSDate date];\
  11309. msg.fromUserId = MY_USER_ID;\
  11310. \f2\b \cf8 if
  11311. \f0\b0 \cf4 ([
  11312. \f2\b \cf8 self
  11313. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  11314. msg.toUserId =
  11315. \f2\b \cf8 self
  11316. \f0\b0 \cf4 .roomJid;\
  11317. msg.isGroup =
  11318. \f2\b \cf8 YES
  11319. \f0\b0 \cf4 ;\
  11320. msg.fromUserName = _userNickName;\
  11321. \}\
  11322. \f2\b \cf8 else
  11323. \f0\b0 \cf4 \{\
  11324. \f2\b \cf8 if
  11325. \f0\b0 \cf4 (
  11326. \f2\b \cf8 self
  11327. \f0\b0 \cf4 .isGroupMessages) \{\
  11328. msg.toUserId = userId;\
  11329. msg.isGroupSend =
  11330. \f2\b \cf8 YES
  11331. \f0\b0 \cf4 ;\
  11332. \f2\b \cf8 if
  11333. \f0\b0 \cf4 ((
  11334. \f2\b \cf8 self
  11335. \f0\b0 \cf4 .groupMessagesIndex + \cf7 1\cf4 ) % _onceSendNum == \cf7 0\cf4 ) \{\
  11336. \f2\b \cf8 if
  11337. \f0\b0 \cf4 (i == array.count - \cf7 1\cf4 ) \{\
  11338. msg.isLastGroupSend =
  11339. \f2\b \cf8 YES
  11340. \f0\b0 \cf4 ;\
  11341. isLastGroupSend =
  11342. \f2\b \cf8 YES
  11343. \f0\b0 \cf4 ;\
  11344. \}\
  11345. \}\
  11346. \}
  11347. \f2\b \cf8 else
  11348. \f0\b0 \cf4 \{\
  11349. msg.toUserId = chatPerson.userId;\
  11350. \}\
  11351. msg.isGroup =
  11352. \f2\b \cf8 NO
  11353. \f0\b0 \cf4 ;\
  11354. \}\
  11355. msg.content = [NSString stringWithFormat:\cf6 @"%@\\n%@"\cf4 , address.addressBookName, address.toTelephone];\
  11356. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];\
  11357. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  11358. msg.isRead = [NSNumber numberWithBool:
  11359. \f2\b \cf8 NO
  11360. \f0\b0 \cf4 ];\
  11361. msg.isReadDel = [NSNumber numberWithInt:
  11362. \f2\b \cf8 NO
  11363. \f0\b0 \cf4 ];\
  11364. \
  11365. [msg insert:
  11366. \f2\b \cf8 self
  11367. \f0\b0 \cf4 .roomJid];\
  11368. \
  11369. \f2\b \cf8 if
  11370. \f0\b0 \cf4 (_tempChat==\cf7 11\cf4 ) \{\
  11371. msg.tempChat=\cf7 11\cf4 ;\
  11372. \}
  11373. \f2\b \cf8 else
  11374. \f0\b0 \cf4 \{\
  11375. msg.tempChat=\cf7 1\cf4 ;\
  11376. \}\
  11377. \
  11378. \
  11379. [g_xmpp sendMessage:msg roomName:
  11380. \f2\b \cf8 self
  11381. \f0\b0 \cf4 .roomJid];\cf2 //
  11382. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  11383. \f0 \cf4 \
  11384. [
  11385. \f2\b \cf8 self
  11386. \f0\b0 \cf4 showOneMsg:msg];\
  11387. \}\
  11388. \
  11389. \f2\b \cf8 if
  11390. \f0\b0 \cf4 (
  11391. \f2\b \cf8 self
  11392. \f0\b0 \cf4 .isGroupMessages) \{\
  11393. _groupSendType = groupsend_msgType_addressbook;\
  11394. \f2\b \cf8 self
  11395. \f0\b0 \cf4 .groupMessagesIndex ++;\
  11396. \f2\b \cf8 if
  11397. \f0\b0 \cf4 (isLastGroupSend) \{\
  11398. \f2\b \cf8 return
  11399. \f0\b0 \cf4 ;\
  11400. \}\
  11401. \f2\b \cf8 if
  11402. \f0\b0 \cf4 (
  11403. \f2\b \cf8 self
  11404. \f0\b0 \cf4 .groupMessagesIndex <
  11405. \f2\b \cf8 self
  11406. \f0\b0 \cf4 .userIds.count) \{\
  11407. [
  11408. \f2\b \cf8 self
  11409. \f0\b0 \cf4 selectAddressBookVC:selectVC doneAction:array];\
  11410. \}
  11411. \f2\b \cf8 else
  11412. \f0\b0 \cf4
  11413. \f2\b \cf8 if
  11414. \f0\b0 \cf4 (
  11415. \f2\b \cf8 self
  11416. \f0\b0 \cf4 .userIds)\{\
  11417. \f2\b \cf8 self
  11418. \f0\b0 \cf4 .groupMessagesIndex = \cf7 0\cf4 ;\
  11419. \f2\b \cf8 return
  11420. \f0\b0 \cf4 ;\
  11421. \}\
  11422. \f2\b \cf8 return
  11423. \f0\b0 \cf4 ;\
  11424. \}\
  11425. \}\
  11426. \
  11427. - (
  11428. \f2\b \cf8 void
  11429. \f0\b0 \cf4 ) \cf11 weiboVC\cf4 :(WeiboViewControlle *)weiboVC \cf11 didSelectWithData\cf4 :(WeiboData *)data \{\
  11430. \f2\b \cf8 if
  11431. \f0\b0 \cf4 (data.type == \cf7 1\cf4 ) \{\
  11432. \
  11433. NSString *userId =
  11434. \f2\b \cf8 self
  11435. \f0\b0 \cf4 .userIds[
  11436. \f2\b \cf8 self
  11437. \f0\b0 \cf4 .groupMessagesIndex];\
  11438. \cf2 // NSString *userName = self.userNames[self.groupMessagesIndex];\cf4 \
  11439. \f2\b \cf8 if
  11440. \f0\b0 \cf4 (
  11441. \f2\b \cf8 self
  11442. \f0\b0 \cf4 .isGroupMessages) \{\
  11443. \f2\b \cf8 if
  11444. \f0\b0 \cf4 (_isGroupSendCancel) \{\
  11445. \f2\b \cf8 return
  11446. \f0\b0 \cf4 ;\
  11447. \}\
  11448. \f2\b \cf8 if
  11449. \f0\b0 \cf4 (
  11450. \f2\b \cf8 self
  11451. \f0\b0 \cf4 .groupMessagesIndex == \cf7 0\cf4 ) \{\
  11452. [
  11453. \f2\b \cf8 self
  11454. \f0\b0 \cf4 addWaitGroupSendViewWithMsgNum:\cf7 1\cf4 withType:groupsend_msgType_collect];\
  11455. \f2\b \cf8 self
  11456. \f0\b0 \cf4 .groupSendMsgArray = [NSMutableArray arrayWithObject:data];\
  11457. _onceSendNum = \cf7 20\cf4 ;\
  11458. \}\
  11459. \}\
  11460. \
  11461. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  11462. msg.timeSend = [NSDate date];\
  11463. msg.fromUserId = MY_USER_ID;\
  11464. \f2\b \cf8 if
  11465. \f0\b0 \cf4 ([
  11466. \f2\b \cf8 self
  11467. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  11468. msg.toUserId =
  11469. \f2\b \cf8 self
  11470. \f0\b0 \cf4 .roomJid;\
  11471. msg.isGroup =
  11472. \f2\b \cf8 YES
  11473. \f0\b0 \cf4 ;\
  11474. msg.fromUserName = _userNickName;\
  11475. \}\
  11476. \f2\b \cf8 else
  11477. \f0\b0 \cf4 \{\
  11478. \f2\b \cf8 if
  11479. \f0\b0 \cf4 (
  11480. \f2\b \cf8 self
  11481. \f0\b0 \cf4 .isGroupMessages) \{\
  11482. msg.toUserId = userId;\
  11483. msg.isGroupSend =
  11484. \f2\b \cf8 YES
  11485. \f0\b0 \cf4 ;\
  11486. \f2\b \cf8 if
  11487. \f0\b0 \cf4 (
  11488. \f2\b \cf8 self
  11489. \f0\b0 \cf4 .groupMessagesIndex % _onceSendNum == \cf7 0\cf4 ) \{\
  11490. msg.isLastGroupSend =
  11491. \f2\b \cf8 YES
  11492. \f0\b0 \cf4 ;\
  11493. \}\
  11494. \}
  11495. \f2\b \cf8 else
  11496. \f0\b0 \cf4 \{\
  11497. msg.toUserId = chatPerson.userId;\
  11498. \}\
  11499. msg.isGroup =
  11500. \f2\b \cf8 NO
  11501. \f0\b0 \cf4 ;\
  11502. \}\
  11503. msg.content = data.content;\
  11504. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];\
  11505. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  11506. msg.isRead = [NSNumber numberWithBool:
  11507. \f2\b \cf8 NO
  11508. \f0\b0 \cf4 ];\
  11509. msg.isReadDel = [NSNumber numberWithInt:
  11510. \f2\b \cf8 self
  11511. \f0\b0 \cf4 .isReadDelete];\
  11512. \
  11513. \cf2 //
  11514. \f1 \'b7\'a2\'cd\'f9\'c4\'c4\'c0\'ef
  11515. \f0 \cf4 \
  11516. [msg insert:
  11517. \f2\b \cf8 self
  11518. \f0\b0 \cf4 .roomJid];\
  11519. \
  11520. \f2\b \cf8 if
  11521. \f0\b0 \cf4 (_tempChat==\cf7 11\cf4 ) \{\
  11522. msg.tempChat=\cf7 11\cf4 ;\
  11523. \}
  11524. \f2\b \cf8 else
  11525. \f0\b0 \cf4 \{\
  11526. msg.tempChat=\cf7 1\cf4 ;\
  11527. \}\
  11528. [g_xmpp sendMessage:msg roomName:
  11529. \f2\b \cf8 self
  11530. \f0\b0 \cf4 .roomJid];\cf2 //
  11531. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  11532. \f0 \cf4 \
  11533. \
  11534. \f2\b \cf8 if
  11535. \f0\b0 \cf4 (
  11536. \f2\b \cf8 self
  11537. \f0\b0 \cf4 .isGroupMessages) \{\
  11538. \f2\b \cf8 self
  11539. \f0\b0 \cf4 .groupMessagesIndex ++;\
  11540. \f2\b \cf8 if
  11541. \f0\b0 \cf4 (msg.isLastGroupSend) \{\
  11542. \f2\b \cf8 return
  11543. \f0\b0 \cf4 ;\
  11544. \}\
  11545. \f2\b \cf8 if
  11546. \f0\b0 \cf4 (
  11547. \f2\b \cf8 self
  11548. \f0\b0 \cf4 .groupMessagesIndex <
  11549. \f2\b \cf8 self
  11550. \f0\b0 \cf4 .userIds.count) \{\
  11551. [
  11552. \f2\b \cf8 self
  11553. \f0\b0 \cf4 weiboVC:weiboVC didSelectWithData:data];\
  11554. \}
  11555. \f2\b \cf8 else
  11556. \f0\b0 \cf4
  11557. \f2\b \cf8 if
  11558. \f0\b0 \cf4 (
  11559. \f2\b \cf8 self
  11560. \f0\b0 \cf4 .userIds)\{\
  11561. \f2\b \cf8 self
  11562. \f0\b0 \cf4 .groupMessagesIndex = \cf7 0\cf4 ;\
  11563. \f2\b \cf8 return
  11564. \f0\b0 \cf4 ;\
  11565. \}\
  11566. \f2\b \cf8 return
  11567. \f0\b0 \cf4 ;\
  11568. \}\
  11569. [
  11570. \f2\b \cf8 self
  11571. \f0\b0 \cf4 showOneMsg:msg];\
  11572. \}
  11573. \f2\b \cf8 else
  11574. \f0\b0 \cf4 \{\
  11575. NSString *url;\
  11576. NSMutableArray *imgArr = [NSMutableArray array];\
  11577. \f2\b \cf8 switch
  11578. \f0\b0 \cf4 (data.type) \{\
  11579. \f2\b \cf8 case
  11580. \f0\b0 \cf4 \cf7 2\cf4 :\{\
  11581. \f2\b \cf8 for
  11582. \f0\b0 \cf4 (ObjUrlData *dict
  11583. \f2\b \cf8 in
  11584. \f0\b0 \cf4 data.larges) \{\
  11585. NSString *imgUrl = dict.url;\
  11586. [imgArr addObject:imgUrl];\
  11587. \}\
  11588. \cf2 // url = ((ObjUrlData *)data.larges.firstObject).url;\cf4 \
  11589. \}\
  11590. \f2\b \cf8 break
  11591. \f0\b0 \cf4 ;\
  11592. \f2\b \cf8 case
  11593. \f0\b0 \cf4 \cf7 3\cf4 :\
  11594. url = ((ObjUrlData *)data.audios.firstObject).url;\
  11595. \f2\b \cf8 break
  11596. \f0\b0 \cf4 ;\
  11597. \f2\b \cf8 case
  11598. \f0\b0 \cf4 \cf7 4\cf4 :\
  11599. url = ((ObjUrlData *)data.videos.firstObject).url;\
  11600. \f2\b \cf8 break
  11601. \f0\b0 \cf4 ;\
  11602. \f2\b \cf8 case
  11603. \f0\b0 \cf4 \cf7 5\cf4 :\
  11604. url = ((ObjUrlData *)data.files.firstObject).url;\
  11605. \f2\b \cf8 break
  11606. \f0\b0 \cf4 ;\
  11607. \
  11608. \f2\b \cf8 default
  11609. \f0\b0 \cf4 :\
  11610. \f2\b \cf8 break
  11611. \f0\b0 \cf4 ;\
  11612. \}\
  11613. _collectionData = data;\
  11614. \
  11615. \f2\b \cf8 if
  11616. \f0\b0 \cf4 (
  11617. \f2\b \cf8 self
  11618. \f0\b0 \cf4 .isGroupMessages) \{\
  11619. \f2\b \cf8 if
  11620. \f0\b0 \cf4 (_isGroupSendCancel) \{\
  11621. \f2\b \cf8 return
  11622. \f0\b0 \cf4 ;\
  11623. \}\
  11624. NSInteger i = \cf7 0\cf4 ;\
  11625. NSMutableArray *allArray = [NSMutableArray array];\
  11626. \f2\b \cf8 if
  11627. \f0\b0 \cf4 (data.content && data.content.length > \cf7 0\cf4 ) \{\
  11628. i = i + \cf7 1\cf4 ;\
  11629. [allArray addObject:data.content];\
  11630. \}\
  11631. \f2\b \cf8 if
  11632. \f0\b0 \cf4 (imgArr.count > \cf7 0\cf4 ) \{\
  11633. i = i + imgArr.count;\
  11634. [allArray addObjectsFromArray:imgArr];\
  11635. \}
  11636. \f2\b \cf8 else
  11637. \f0\b0 \cf4 \{\
  11638. i = i + \cf7 1\cf4 ;\
  11639. \}\
  11640. [
  11641. \f2\b \cf8 self
  11642. \f0\b0 \cf4 addWaitGroupSendViewWithMsgNum:i withType:groupsend_msgType_collect];\
  11643. _onceSendNum = \cf7 20\cf4 ;\
  11644. \f2\b \cf8 if
  11645. \f0\b0 \cf4 (imgArr.count > \cf7 0\cf4 ) \{\
  11646. \f2\b \cf8 self
  11647. \f0\b0 \cf4 .groupSendMsgArray = allArray;\
  11648. [
  11649. \f2\b \cf8 self
  11650. \f0\b0 \cf4 collectionMsgSendAll:allArray];\
  11651. \}
  11652. \f2\b \cf8 else
  11653. \f0\b0 \cf4 \{\
  11654. \
  11655. [g_server uploadCopyFileServlet:url validTime:g_config.fileValidTime toView:
  11656. \f2\b \cf8 self
  11657. \f0\b0 \cf4 ];\
  11658. \}\
  11659. \}
  11660. \f2\b \cf8 else
  11661. \f0\b0 \cf4 \{\
  11662. \
  11663. \cf2 //
  11664. \f1 \'c8\'e7\'b9\'fb\'ca\'d5\'b2\'d8\'b5\'c4\'ce\'c4\'bc\'fe\'d3\'d0\'ce\'c4\'b1\'be\'a3\'ac\'cf\'c8\'b7\'a2\'cb\'cd\'ce\'c4\'b1\'be\'cf\'fb\'cf\'a2
  11665. \f0 \cf4 \
  11666. \f2\b \cf8 if
  11667. \f0\b0 \cf4 (data.content && data.content.length > \cf7 0\cf4 ) \{\
  11668. [
  11669. \f2\b \cf8 self
  11670. \f0\b0 \cf4 collectionMsgSend:data.content isFile:
  11671. \f2\b \cf8 NO
  11672. \f0\b0 \cf4 ];\
  11673. \}\
  11674. \
  11675. \f2\b \cf8 if
  11676. \f0\b0 \cf4 (imgArr.count > \cf7 0\cf4 ) \{\
  11677. \f2\b \cf8 for
  11678. \f0\b0 \cf4 (
  11679. \f2\b \cf8 int
  11680. \f0\b0 \cf4 i = \cf7 0\cf4 ; i < imgArr.count; i++ ) \{\
  11681. [
  11682. \f2\b \cf8 self
  11683. \f0\b0 \cf4 collectionMsgSend:imgArr[i] isFile:
  11684. \f2\b \cf8 YES
  11685. \f0\b0 \cf4 ];\
  11686. \}\
  11687. \}
  11688. \f2\b \cf8 else
  11689. \f0\b0 \cf4 \{\
  11690. [g_server uploadCopyFileServlet:url validTime:g_config.fileValidTime toView:
  11691. \f2\b \cf8 self
  11692. \f0\b0 \cf4 ];\
  11693. \}\
  11694. \}\
  11695. \}\
  11696. \
  11697. \}\
  11698. \
  11699. - (
  11700. \f2\b \cf8 void
  11701. \f0\b0 \cf4 )\cf11 collectionMsgSendAll\cf4 :(NSArray *)allArray\{\
  11702. \f2\b \cf8 if
  11703. \f0\b0 \cf4 (_isGroupSendCancel) \{\
  11704. \f2\b \cf8 return
  11705. \f0\b0 \cf4 ;\
  11706. \}\
  11707. NSString *userId =
  11708. \f2\b \cf8 self
  11709. \f0\b0 \cf4 .userIds[
  11710. \f2\b \cf8 self
  11711. \f0\b0 \cf4 .groupMessagesIndex];\
  11712. \f2\b \cf8 for
  11713. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < allArray.count; i++) \{\
  11714. NSString *content = allArray[i];\
  11715. \f2\b \cf8 if
  11716. \f0\b0 \cf4 (i == \cf7 0\cf4 && _collectionData.content && _collectionData.content.length > \cf7 0\cf4 ) \{\
  11717. [
  11718. \f2\b \cf8 self
  11719. \f0\b0 \cf4 collectionMsgSendOne:content withUserId:userId isText:
  11720. \f2\b \cf8 YES
  11721. \f0\b0 \cf4 isLast:
  11722. \f2\b \cf8 NO
  11723. \f0\b0 \cf4 ];\
  11724. \}
  11725. \f2\b \cf8 else
  11726. \f0\b0 \cf4 \{\
  11727. \f2\b \cf8 if
  11728. \f0\b0 \cf4 ((
  11729. \f2\b \cf8 self
  11730. \f0\b0 \cf4 .groupMessagesIndex+\cf7 1\cf4 ) % _onceSendNum == \cf7 0\cf4 && i == allArray.count - \cf7 1\cf4 ) \{\
  11731. [
  11732. \f2\b \cf8 self
  11733. \f0\b0 \cf4 collectionMsgSendOne:content withUserId:userId isText:
  11734. \f2\b \cf8 NO
  11735. \f0\b0 \cf4 isLast:
  11736. \f2\b \cf8 YES
  11737. \f0\b0 \cf4 ];\
  11738. \}
  11739. \f2\b \cf8 else
  11740. \f0\b0 \cf4 \{\
  11741. [
  11742. \f2\b \cf8 self
  11743. \f0\b0 \cf4 collectionMsgSendOne:content withUserId:userId isText:
  11744. \f2\b \cf8 NO
  11745. \f0\b0 \cf4 isLast:
  11746. \f2\b \cf8 NO
  11747. \f0\b0 \cf4 ];\
  11748. \}\
  11749. \}\
  11750. \}\
  11751. \f2\b \cf8 self
  11752. \f0\b0 \cf4 .groupMessagesIndex ++;\
  11753. \f2\b \cf8 if
  11754. \f0\b0 \cf4 (
  11755. \f2\b \cf8 self
  11756. \f0\b0 \cf4 .groupMessagesIndex <
  11757. \f2\b \cf8 self
  11758. \f0\b0 \cf4 .userIds.count) \{\
  11759. \f2\b \cf8 if
  11760. \f0\b0 \cf4 (
  11761. \f2\b \cf8 self
  11762. \f0\b0 \cf4 .groupMessagesIndex % _onceSendNum == \cf7 0\cf4 ) \{\
  11763. \f2\b \cf8 return
  11764. \f0\b0 \cf4 ;\
  11765. \}
  11766. \f2\b \cf8 else
  11767. \f0\b0 \cf4 \{\
  11768. [
  11769. \f2\b \cf8 self
  11770. \f0\b0 \cf4 collectionMsgSendAll:allArray];\
  11771. \}\
  11772. \}
  11773. \f2\b \cf8 else
  11774. \f0\b0 \cf4
  11775. \f2\b \cf8 if
  11776. \f0\b0 \cf4 (
  11777. \f2\b \cf8 self
  11778. \f0\b0 \cf4 .userIds)\{\
  11779. \f2\b \cf8 self
  11780. \f0\b0 \cf4 .groupMessagesIndex = \cf7 0\cf4 ;\
  11781. \f2\b \cf8 return
  11782. \f0\b0 \cf4 ;\
  11783. \}\
  11784. \f2\b \cf8 return
  11785. \f0\b0 \cf4 ;\
  11786. \}\
  11787. \
  11788. - (
  11789. \f2\b \cf8 void
  11790. \f0\b0 \cf4 )\cf11 collectionMsgSendOne\cf4 :(NSString *)content \cf11 withUserId\cf4 :(NSString *)userId \cf11 isText\cf4 :(
  11791. \f2\b \cf8 BOOL
  11792. \f0\b0 \cf4 )isText \cf11 isLast\cf4 :(
  11793. \f2\b \cf8 BOOL
  11794. \f0\b0 \cf4 )isLast\{\
  11795. \
  11796. JXMessageObject *msg = [[JXMessageObject alloc]init];\
  11797. msg.timeSend = [NSDate date];\
  11798. msg.fromUserId = MY_USER_ID;\
  11799. msg.toUserId = userId;\
  11800. msg.isGroupSend =
  11801. \f2\b \cf8 YES
  11802. \f0\b0 \cf4 ;\
  11803. msg.isLastGroupSend = isLast;\
  11804. msg.isGroup =
  11805. \f2\b \cf8 NO
  11806. \f0\b0 \cf4 ;\
  11807. msg.content = content;\
  11808. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  11809. msg.isRead = [NSNumber numberWithBool:
  11810. \f2\b \cf8 NO
  11811. \f0\b0 \cf4 ];\
  11812. msg.isReadDel = [NSNumber numberWithInt:
  11813. \f2\b \cf8 self
  11814. \f0\b0 \cf4 .isReadDelete];\
  11815. \f2\b \cf8 if
  11816. \f0\b0 \cf4 (isText) \{\
  11817. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];\
  11818. \}
  11819. \f2\b \cf8 else
  11820. \f0\b0 \cf4 \{\
  11821. \f2\b \cf8 switch
  11822. \f0\b0 \cf4 (_collectionData.type) \{\
  11823. \f2\b \cf8 case
  11824. \f0\b0 \cf4 \cf7 2\cf4 :\
  11825. msg.type = [NSNumber numberWithInt:kWCMessageTypeImage];\
  11826. \f2\b \cf8 break
  11827. \f0\b0 \cf4 ;\
  11828. \f2\b \cf8 case
  11829. \f0\b0 \cf4 \cf7 3\cf4 :\{\
  11830. msg.type = [NSNumber numberWithInt:kWCMessageTypeVoice];\
  11831. ObjUrlData *obj = _collectionData.audios.firstObject;\
  11832. msg.timeLen = obj.timeLen;\
  11833. \}\
  11834. \f2\b \cf8 break
  11835. \f0\b0 \cf4 ;\
  11836. \f2\b \cf8 case
  11837. \f0\b0 \cf4 \cf7 4\cf4 :\
  11838. msg.type = [NSNumber numberWithInt:kWCMessageTypeVideo];\
  11839. \f2\b \cf8 break
  11840. \f0\b0 \cf4 ;\
  11841. \f2\b \cf8 case
  11842. \f0\b0 \cf4 \cf7 5\cf4 :\{\
  11843. msg.fileName = ((ObjUrlData *)_collectionData.files.firstObject).name;\
  11844. msg.type = [NSNumber numberWithInt:kWCMessageTypeFile];\
  11845. \}\
  11846. \f2\b \cf8 break
  11847. \f0\b0 \cf4 ;\
  11848. \
  11849. \f2\b \cf8 default
  11850. \f0\b0 \cf4 :\
  11851. \f2\b \cf8 break
  11852. \f0\b0 \cf4 ;\
  11853. \}\
  11854. \}\
  11855. \
  11856. \cf2 //
  11857. \f1 \'b7\'a2\'cd\'f9\'c4\'c4\'c0\'ef
  11858. \f0 \cf4 \
  11859. \f2\b \cf8 if
  11860. \f0\b0 \cf4 (_tempChat==\cf7 11\cf4 ) \{\
  11861. msg.tempChat=\cf7 11\cf4 ;\
  11862. \}
  11863. \f2\b \cf8 else
  11864. \f0\b0 \cf4 \{\
  11865. msg.tempChat=\cf7 1\cf4 ;\
  11866. \}\
  11867. \
  11868. [msg insert:
  11869. \f2\b \cf8 self
  11870. \f0\b0 \cf4 .roomJid];\
  11871. [g_xmpp sendMessage:msg roomName:
  11872. \f2\b \cf8 self
  11873. \f0\b0 \cf4 .roomJid];\cf2 //
  11874. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  11875. \f0 \cf4 \
  11876. \}\
  11877. \
  11878. - (
  11879. \f2\b \cf8 void
  11880. \f0\b0 \cf4 )\cf11 cameraVC\cf4 :(JXCameraVC *)vc \cf11 didFinishWithImage\cf4 :(UIImage *)image \{\
  11881. [
  11882. \f2\b \cf8 self
  11883. \f0\b0 \cf4 hideKeyboard:
  11884. \f2\b \cf8 YES
  11885. \f0\b0 \cf4 ];\
  11886. \cf2 //
  11887. \f1 \'bb\'f1\'c8\'a1
  11888. \f0 image
  11889. \f1 \'b5\'c4\'b3\'a4\'bf\'ed
  11890. \f0 \cf4 \
  11891. \f2\b \cf8 int
  11892. \f0\b0 \cf4 imageWidth = image.size.width;\
  11893. \f2\b \cf8 int
  11894. \f0\b0 \cf4 imageHeight = image.size.height;\
  11895. \
  11896. \f2\b \cf8 self
  11897. \f0\b0 \cf4 .view.frame = CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 , JX_SCREEN_WIDTH, JX_SCREEN_HEIGHT);\
  11898. NSString *name = \cf6 @"jpg"\cf4 ;\
  11899. \f2\b \cf8 if
  11900. \f0\b0 \cf4 (
  11901. \f2\b \cf8 self
  11902. \f0\b0 \cf4 .isGroupMessages) \{\
  11903. \cf2 // for (NSInteger i = 0; i < self.userIds.count; i ++) \{\cf4 \
  11904. \cf2 // NSString *userId = self.userIds[i];\cf4 \
  11905. \cf2 //\cf4 \
  11906. \cf2 // NSString *file = [FileInfo getUUIDFileName:name];\cf4 \
  11907. \cf2 // [g_server saveImageToFile:image file:file isOriginal:NO];\cf4 \
  11908. \cf2 // [self sendImage:file withWidth:imageWidth andHeight:imageHeight userId:userId];\cf4 \
  11909. \cf12 ///
  11910. \f3 \cf2 / [g_server uploadFile:file validTime:self.chatPerson.chatRecordTimeOut messageId:nil toView:self];
  11911. \f0 \cf4 \
  11912. \cf2 // \}\cf4 \
  11913. [
  11914. \f2\b \cf8 self
  11915. \f0\b0 \cf4 addWaitGroupSendViewWithMsgNum:\cf7 1\cf4 withType:groupsend_msgType_image];\
  11916. \f2\b \cf8 self
  11917. \f0\b0 \cf4 .groupUploadObjArray = [NSMutableArray arrayWithObject:image];\
  11918. _onceSendNum = \cf7 10\cf4 ;\
  11919. _isOriginal =
  11920. \f2\b \cf8 NO
  11921. \f0\b0 \cf4 ;\
  11922. [
  11923. \f2\b \cf8 self
  11924. \f0\b0 \cf4 sendPhotos:
  11925. \f2\b \cf8 self
  11926. \f0\b0 \cf4 .groupUploadObjArray withOriginal:
  11927. \f2\b \cf8 NO
  11928. \f0\b0 \cf4 ];\
  11929. \}
  11930. \f2\b \cf8 else
  11931. \f0\b0 \cf4 \{\
  11932. NSString *file = [FileInfo getUUIDFileName:name];\
  11933. [g_server saveImageToFile:image file:file isOriginal:
  11934. \f2\b \cf8 NO
  11935. \f0\b0 \cf4 ];\
  11936. [
  11937. \f2\b \cf8 self
  11938. \f0\b0 \cf4 sendImage:file withWidth:imageWidth andHeight:imageHeight userId:
  11939. \f2\b \cf8 nil
  11940. \f0\b0 \cf4 ];\
  11941. \cf2 // [g_server uploadFile:file validTime:self.chatPerson.chatRecordTimeOut messageId:nil toView:self];\cf4 \
  11942. \}\
  11943. \
  11944. \cf2 // NSString* file = [FileInfo getUUIDFileName:name];\cf4 \
  11945. \cf2 //\cf4 \
  11946. \cf2 // [g_server saveImageToFile:image file:file isOriginal:NO];\cf4 \
  11947. \cf12 ///
  11948. \f3 \cf2 / [self sendImage:file withWidth:imageWidth andHeight:imageHeight];
  11949. \f0 \cf4 \
  11950. \cf2 // [g_server uploadFile:file validTime:self.chatPerson.chatRecordTimeOut toView:self];\cf4 \
  11951. \}\
  11952. \
  11953. \cf5 #pragma mark
  11954. \f2\b \cf16 ----------
  11955. \f4 \'cd\'bc\'c6\'ac\'d1\'a1\'d4\'f1\'cd\'ea\'b3\'c9
  11956. \f2 -------------
  11957. \f0\b0 \cf4 \
  11958. \cf2 //UIImagePickerController
  11959. \f1 \'b4\'fa\'c0\'ed\'b7\'bd\'b7\'a8
  11960. \f0 \cf4 \
  11961. -(
  11962. \f2\b \cf8 void
  11963. \f0\b0 \cf4 )\cf11 imagePickerController\cf4 :(UIImagePickerController *)picker \cf11 didFinishPickingMediaWithInfo\cf4 :(NSDictionary *)info\
  11964. \{\
  11965. UIImage * chosedImage=[info objectForKey:\cf6 @"UIImagePickerControllerOriginalImage"\cf4 ];\
  11966. \cf2 //
  11967. \f1 \'bb\'f1\'c8\'a1
  11968. \f0 image
  11969. \f1 \'b5\'c4\'b3\'a4\'bf\'ed
  11970. \f0 \cf4 \
  11971. \f2\b \cf8 int
  11972. \f0\b0 \cf4 imageWidth = chosedImage.size.width;\
  11973. \f2\b \cf8 int
  11974. \f0\b0 \cf4 imageHeight = chosedImage.size.height;\
  11975. [
  11976. \f2\b \cf8 self
  11977. \f0\b0 \cf4 dismissViewControllerAnimated:
  11978. \f2\b \cf8 NO
  11979. \f0\b0 \cf4 completion:^\{\
  11980. \f2\b \cf8 self
  11981. \f0\b0 \cf4 .view.frame = CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 , JX_SCREEN_WIDTH, JX_SCREEN_HEIGHT);\
  11982. [
  11983. \f2\b \cf8 self
  11984. \f0\b0 \cf4 hideKeyboard:
  11985. \f2\b \cf8 YES
  11986. \f0\b0 \cf4 ];\
  11987. \
  11988. \
  11989. NSURL *url = [info objectForKey:\cf6 @"UIImagePickerControllerReferenceURL"\cf4 ];\
  11990. NSString *urlStr = [url absoluteString];\
  11991. NSString *name = [urlStr substringFromIndex:urlStr.length - \cf7 3\cf4 ];\
  11992. name = [name lowercaseString];\
  11993. \
  11994. NSString* file = [FileInfo getUUIDFileName:name];\
  11995. \
  11996. \
  11997. \f2\b \cf8 if
  11998. \f0\b0 \cf4 ([name isEqualToString:\cf6 @"gif"\cf4 ]) \{ \cf2 // gif
  11999. \f1 \'b2\'bb\'c4\'dc\'b0\'b4\'d5\'d5
  12000. \f0 image
  12001. \f1 \'c8\'a1
  12002. \f0 data
  12003. \f1 \'b4\'e6\'b4\'a2
  12004. \f0 \cf4 \
  12005. ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init];\
  12006. \
  12007. \f2\b \cf8 void
  12008. \f0\b0 \cf4 (^ALAssetsLibraryAssetForURLResultBlock)(ALAsset *) = ^(ALAsset *asset) \{\
  12009. \
  12010. \f2\b \cf8 if
  12011. \f0\b0 \cf4 (asset !=
  12012. \f2\b \cf8 nil
  12013. \f0\b0 \cf4 ) \{\
  12014. \
  12015. ALAssetRepresentation *rep = [asset defaultRepresentation];\
  12016. Byte *imageBuffer = (Byte*)malloc(rep.size);\
  12017. NSUInteger bufferSize = [rep getBytes:imageBuffer fromOffset:\cf7 0.0\cf4 length:rep.size error:
  12018. \f2\b \cf8 nil
  12019. \f0\b0 \cf4 ];\
  12020. NSData *imageData = [NSData dataWithBytesNoCopy:imageBuffer length:bufferSize freeWhenDone:
  12021. \f2\b \cf8 YES
  12022. \f0\b0 \cf4 ];\
  12023. \
  12024. \f2\b \cf8 if
  12025. \f0\b0 \cf4 (
  12026. \f2\b \cf8 self
  12027. \f0\b0 \cf4 .isGroupMessages) \{\
  12028. \f2\b \cf8 for
  12029. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i <
  12030. \f2\b \cf8 self
  12031. \f0\b0 \cf4 .userIds.count; i ++) \{\
  12032. NSString *userId =
  12033. \f2\b \cf8 self
  12034. \f0\b0 \cf4 .userIds[i];\
  12035. \
  12036. NSString *file = [FileInfo getUUIDFileName:name];\
  12037. [g_server saveDataToFile:imageData file:file];\
  12038. [
  12039. \f2\b \cf8 self
  12040. \f0\b0 \cf4 sendImage:file withWidth:imageWidth andHeight:imageHeight userId:userId];\
  12041. \cf2 // [g_server uploadFile:file validTime:self.chatPerson.chatRecordTimeOut messageId:nil toView:self];\cf4 \
  12042. \}\
  12043. \}
  12044. \f2\b \cf8 else
  12045. \f0\b0 \cf4 \{\
  12046. NSString *file = [FileInfo getUUIDFileName:name];\
  12047. [g_server saveDataToFile:imageData file:file];\
  12048. [
  12049. \f2\b \cf8 self
  12050. \f0\b0 \cf4 sendImage:file withWidth:imageWidth andHeight:imageHeight userId:
  12051. \f2\b \cf8 nil
  12052. \f0\b0 \cf4 ];\
  12053. \cf2 // [g_server uploadFile:file validTime:self.chatPerson.chatRecordTimeOut messageId:nil toView:self];\cf4 \
  12054. \}\
  12055. \cf2 // [g_server saveDataToFile:imageData file:file];\cf4 \
  12056. \cf12 ///
  12057. \f3 \cf2 / [self sendImage:file withWidth:imageWidth andHeight:imageHeight];
  12058. \f0 \cf4 \
  12059. \cf2 // [g_server uploadFile:file validTime:self.chatPerson.chatRecordTimeOut toView:self];\cf4 \
  12060. \
  12061. \}\
  12062. \f2\b \cf8 else
  12063. \f0\b0 \cf4 \{\
  12064. \}\
  12065. \};\
  12066. \
  12067. [assetLibrary assetForURL:url\
  12068. resultBlock:ALAssetsLibraryAssetForURLResultBlock\
  12069. failureBlock:^(NSError *error) \{\
  12070. \
  12071. \}];\
  12072. \}
  12073. \f2\b \cf8 else
  12074. \f0\b0 \cf4 \{\
  12075. \
  12076. name = \cf6 @"jpg"\cf4 ;\
  12077. \f2\b \cf8 if
  12078. \f0\b0 \cf4 (
  12079. \f2\b \cf8 self
  12080. \f0\b0 \cf4 .isGroupMessages) \{\
  12081. \cf2 // for (NSInteger i = 0; i < self.userIds.count; i ++) \{\cf4 \
  12082. \cf2 // NSString *userId = self.userIds[i];\cf4 \
  12083. \cf2 //\cf4 \
  12084. \cf2 // NSString *file = [FileInfo getUUIDFileName:name];\cf4 \
  12085. \cf2 // [g_server saveImageToFile:chosedImage file:file isOriginal:NO];\cf4 \
  12086. \cf2 // [self sendImage:file withWidth:imageWidth andHeight:imageHeight userId:userId];\cf4 \
  12087. \cf12 ///
  12088. \f3 \cf2 / [g_server uploadFile:file validTime:self.chatPerson.chatRecordTimeOut messageId:nil toView:self];
  12089. \f0 \cf4 \
  12090. \cf2 // \}\cf4 \
  12091. [
  12092. \f2\b \cf8 self
  12093. \f0\b0 \cf4 addWaitGroupSendViewWithMsgNum:\cf7 1\cf4 withType:groupsend_msgType_image];\
  12094. \f2\b \cf8 self
  12095. \f0\b0 \cf4 .groupUploadObjArray = [NSMutableArray arrayWithObject:chosedImage];\
  12096. _onceSendNum = \cf7 10\cf4 ;\
  12097. _isOriginal =
  12098. \f2\b \cf8 NO
  12099. \f0\b0 \cf4 ;\
  12100. [
  12101. \f2\b \cf8 self
  12102. \f0\b0 \cf4 sendPhotos:
  12103. \f2\b \cf8 self
  12104. \f0\b0 \cf4 .groupUploadObjArray withOriginal:
  12105. \f2\b \cf8 NO
  12106. \f0\b0 \cf4 ];\
  12107. \}
  12108. \f2\b \cf8 else
  12109. \f0\b0 \cf4 \{\
  12110. NSString *file = [FileInfo getUUIDFileName:name];\
  12111. [g_server saveImageToFile:chosedImage file:file isOriginal:
  12112. \f2\b \cf8 NO
  12113. \f0\b0 \cf4 ];\
  12114. [
  12115. \f2\b \cf8 self
  12116. \f0\b0 \cf4 sendImage:file withWidth:imageWidth andHeight:imageHeight userId:
  12117. \f2\b \cf8 nil
  12118. \f0\b0 \cf4 ];\
  12119. \cf2 // [g_server uploadFile:file validTime:self.chatPerson.chatRecordTimeOut messageId:nil toView:self];\cf4 \
  12120. \}\
  12121. \cf2 // file = [FileInfo getUUIDFileName:name];\cf4 \
  12122. \cf2 // [g_server saveImageToFile:chosedImage file:file isOriginal:NO];\cf4 \
  12123. \cf12 ///
  12124. \f3 \cf2 / [self sendImage:file withWidth:imageWidth andHeight:imageHeight];
  12125. \f0 \cf4 \
  12126. \cf2 // [g_server uploadFile:file validTime:self.chatPerson.chatRecordTimeOut toView:self];\cf4 \
  12127. \}\
  12128. \
  12129. \
  12130. \cf2 // [picker release];\cf4 \
  12131. \}];\
  12132. \}\
  12133. \
  12134. -(
  12135. \f2\b \cf8 void
  12136. \f0\b0 \cf4 )\cf11 imagePickerControllerDidCancel\cf4 :(UIImagePickerController *)picker\
  12137. \{\
  12138. [
  12139. \f2\b \cf8 self
  12140. \f0\b0 \cf4 dismissViewControllerAnimated:
  12141. \f2\b \cf8 NO
  12142. \f0\b0 \cf4 completion:^\{\
  12143. \f2\b \cf8 self
  12144. \f0\b0 \cf4 .view.frame = CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 , JX_SCREEN_WIDTH, JX_SCREEN_HEIGHT);\
  12145. [
  12146. \f2\b \cf8 self
  12147. \f0\b0 \cf4 hideKeyboard:
  12148. \f2\b \cf8 YES
  12149. \f0\b0 \cf4 ];\
  12150. \cf2 // [picker release];\cf4 \
  12151. \}];\
  12152. \}\
  12153. \
  12154. \cf5 #pragma mark
  12155. \f2\b \cf16 -
  12156. \f4 \'c2\'bc\'d6\'c6\'d3\'ef\'d2\'f4
  12157. \f0\b0 \cf4 \
  12158. - (
  12159. \f2\b \cf8 void
  12160. \f0\b0 \cf4 )\cf11 recordStart\cf4 :(UIButton *)sender \{\
  12161. NSLog(\cf6 @"recordStart-------"\cf4 );\
  12162. \f2\b \cf8 if
  12163. \f0\b0 \cf4 ([
  12164. \f2\b \cf8 self
  12165. \f0\b0 \cf4 showDisableSay])\
  12166. \f2\b \cf8 return
  12167. \f0\b0 \cf4 ;\
  12168. \f2\b \cf8 if
  12169. \f0\b0 \cf4 (recording)\
  12170. \f2\b \cf8 return
  12171. \f0\b0 \cf4 ;\
  12172. \f2\b \cf8 if
  12173. \f0\b0 \cf4 ([
  12174. \f2\b \cf8 self
  12175. \f0\b0 \cf4 sendMsgCheck])\{\
  12176. \f2\b \cf8 return
  12177. \f0\b0 \cf4 ;\
  12178. \}\
  12179. \f2\b \cf8 if
  12180. \f0\b0 \cf4 (![
  12181. \f2\b \cf8 self
  12182. \f0\b0 \cf4 canRecord]) \{\
  12183. [g_App showAlert:Localized(\cf6 @"JX_CanNotOpenMicr"\cf4 )];\
  12184. \f2\b \cf8 return
  12185. \f0\b0 \cf4 ;\
  12186. \}\
  12187. \
  12188. \cf2 // _recordBtn.layer.borderColor = [[UIColor blueColor] CGColor];\cf4 \
  12189. _recordBtn.backgroundColor = HEXCOLOR(\cf7 0xB8B9BD\cf4 );\
  12190. \
  12191. [g_notify postNotificationName:kAllAudioPlayerPauseNotifaction object:
  12192. \f2\b \cf8 self
  12193. \f0\b0 \cf4 userInfo:
  12194. \f2\b \cf8 nil
  12195. \f0\b0 \cf4 ];\
  12196. [g_notify postNotificationName:kAllVideoPlayerPauseNotifaction object:
  12197. \f2\b \cf8 self
  12198. \f0\b0 \cf4 userInfo:
  12199. \f2\b \cf8 nil
  12200. \f0\b0 \cf4 ];\
  12201. \
  12202. [
  12203. \f2\b \cf8 self
  12204. \f0\b0 \cf4 hideKeyboard:
  12205. \f2\b \cf8 YES
  12206. \f0\b0 \cf4 ];\
  12207. recording=
  12208. \f2\b \cf8 YES
  12209. \f0\b0 \cf4 ;\
  12210. \
  12211. NSDictionary *settings=[NSDictionary dictionaryWithObjectsAndKeys:\
  12212. [NSNumber numberWithFloat:\cf7 8000\cf4 ],AVSampleRateKey,\
  12213. [NSNumber numberWithInt:kAudioFormatLinearPCM],AVFormatIDKey,\
  12214. [NSNumber numberWithInt:\cf7 1\cf4 ],AVNumberOfChannelsKey,\
  12215. [NSNumber numberWithInt:\cf7 16\cf4 ],AVLinearPCMBitDepthKey,\
  12216. [NSNumber numberWithBool:
  12217. \f2\b \cf8 NO
  12218. \f0\b0 \cf4 ],AVLinearPCMIsBigEndianKey,\
  12219. [NSNumber numberWithBool:
  12220. \f2\b \cf8 NO
  12221. \f0\b0 \cf4 ],AVLinearPCMIsFloatKey,\
  12222. \f2\b \cf8 nil
  12223. \f0\b0 \cf4 ];\
  12224. \
  12225. NSError *error;\
  12226. [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: &error];\
  12227. [[AVAudioSession sharedInstance] setActive:
  12228. \f2\b \cf8 YES
  12229. \f0\b0 \cf4 error:&error];\
  12230. \
  12231. NSURL *url = [NSURL fileURLWithPath:[FileInfo getUUIDFileName:\cf6 @"wav"\cf4 ]];\
  12232. pathURL = url;\
  12233. \
  12234. audioRecorder = [[AVAudioRecorder alloc] initWithURL:pathURL settings:settings error:&error];\
  12235. audioRecorder.delegate =
  12236. \f2\b \cf8 self
  12237. \f0\b0 \cf4 ;\
  12238. \
  12239. peakTimer = [NSTimer scheduledTimerWithTimeInterval:\cf7 0.01\cf4 target:
  12240. \f2\b \cf8 self
  12241. \f0\b0 \cf4 selector:
  12242. \f2\b \cf8 @selector
  12243. \f0\b0 \cf4 (updatePeak:) userInfo:
  12244. \f2\b \cf8 nil
  12245. \f0\b0 \cf4 repeats:
  12246. \f2\b \cf8 YES
  12247. \f0\b0 \cf4 ];\
  12248. [peakTimer fire];\
  12249. \f2\b \cf8 BOOL
  12250. \f0\b0 \cf4 flag =
  12251. \f2\b \cf8 NO
  12252. \f0\b0 \cf4 ;\
  12253. flag = [audioRecorder prepareToRecord];\
  12254. [audioRecorder setMeteringEnabled:
  12255. \f2\b \cf8 YES
  12256. \f0\b0 \cf4 ];\
  12257. flag = [audioRecorder peakPowerForChannel:\cf7 1\cf4 ];\
  12258. flag = [audioRecorder record];\
  12259. \
  12260. _voice.center =
  12261. \f2\b \cf8 self
  12262. \f0\b0 \cf4 .view.center;\
  12263. [_voice show];\
  12264. \}\
  12265. \
  12266. - (
  12267. \f2\b \cf8 void
  12268. \f0\b0 \cf4 )\cf11 updatePeak\cf4 :(NSTimer*)timer\
  12269. \{\
  12270. _timeLen = audioRecorder.currentTime;\
  12271. \f2\b \cf8 if
  12272. \f0\b0 \cf4 (_timeLen>=\cf7 60\cf4 )\
  12273. [
  12274. \f2\b \cf8 self
  12275. \f0\b0 \cf4 recordStop:
  12276. \f2\b \cf8 nil
  12277. \f0\b0 \cf4 ];\
  12278. \
  12279. [audioRecorder updateMeters];\
  12280. \f2\b \cf8 const
  12281. \f0\b0 \cf4
  12282. \f2\b \cf8 double
  12283. \f0\b0 \cf4 alpha=\cf7 0.5\cf4 ;\
  12284. NSLog(\cf6 @"peakPowerForChannel = %f,%f"\cf4 , [audioRecorder peakPowerForChannel:\cf7 0\cf4 ],[audioRecorder peakPowerForChannel:\cf7 1\cf4 ]);\
  12285. \f2\b \cf8 double
  12286. \f0\b0 \cf4 peakPowerForChannel=pow(\cf7 10\cf4 , (\cf7 0.05\cf4 )*[audioRecorder peakPowerForChannel:\cf7 0\cf4 ]);\
  12287. lowPassResults=alpha*peakPowerForChannel+(\cf7 1.0\cf4 -alpha)*lowPassResults;\
  12288. _voice.volume = lowPassResults;\
  12289. \
  12290. \cf2 /* for (int i=1; i<8; i++) \{\cf4 \
  12291. \cf2 if (lowPassResults>1.0/7.0*i)\{\cf4 \
  12292. \cf2 [[talkView viewWithTag:i] setHidden:NO];\cf4 \
  12293. \cf2 \}else\{\cf4 \
  12294. \cf2 [[talkView viewWithTag:i] setHidden:YES];\cf4 \
  12295. \cf2 \}\cf4 \
  12296. \cf2 \}*/\cf4 \
  12297. \}\
  12298. \
  12299. - (
  12300. \f2\b \cf8 void
  12301. \f0\b0 \cf4 )\cf11 recordStop\cf4 :(UIButton *)sender \{\
  12302. \
  12303. [_voice hide];\
  12304. [peakTimer invalidate];\
  12305. peakTimer =
  12306. \f2\b \cf8 nil
  12307. \f0\b0 \cf4 ;\
  12308. recording =
  12309. \f2\b \cf8 NO
  12310. \f0\b0 \cf4 ;\
  12311. \
  12312. \cf2 // if(!recording)\cf4 \
  12313. \cf2 // return;\cf4 \
  12314. \
  12315. _recordBtn.layer.borderColor = [[UIColor grayColor] CGColor];\
  12316. _recordBtn.backgroundColor = HEXCOLOR(\cf7 0xFEFEFE\cf4 );\
  12317. _timeLen = audioRecorder.currentTime;\
  12318. [audioRecorder pause];\
  12319. [audioRecorder stop];\
  12320. \cf2 // [audioRecorder release];\cf4 \
  12321. \cf2 // if (_timeLen<1) \{\cf4 \
  12322. \cf2 // [g_App showAlert:@"
  12323. \f1 \'c2\'bc\'b5\'c4\'ca\'b1\'bc\'e4\'b9\'fd\'b6\'cc
  12324. \f0 \cf4 \
  12325. \cf2 // "];\cf4 \
  12326. \cf2 // return;\cf4 \
  12327. \cf2 // \}\cf4 \
  12328. \
  12329. \f2\b \cf8 if
  12330. \f0\b0 \cf4 (_timeLen<\cf7 1\cf4 )\
  12331. _timeLen = \cf7 1\cf4 ;\
  12332. NSString *amrPath = [VoiceConverter wavToAmr:pathURL.path];\
  12333. [[ChatCacheFileUtil sharedInstance] deleteWithContentPath:pathURL.path];\
  12334. _lastRecordFile = [[amrPath lastPathComponent] copy];\
  12335. \
  12336. \cf2 // NSLog(@"
  12337. \f1 \'d2\'f4\'c6\'b5\'ce\'c4\'bc\'fe\'c2\'b7\'be\'b6
  12338. \f0 :%@\\n%@",pathURL.path,amrPath);\cf4 \
  12339. \f2\b \cf8 if
  12340. \f0\b0 \cf4 (amrPath ==
  12341. \f2\b \cf8 nil
  12342. \f0\b0 \cf4 )\{\
  12343. \cf2 // [g_App showAlert:Localized(@"JXChatVC_TimeLess")];\cf4 \
  12344. [g_server showMsg:Localized(\cf6 @"JXChatVC_TimeLess"\cf4 ) delay:\cf7 1.0\cf4 ];\
  12345. \f2\b \cf8 return
  12346. \f0\b0 \cf4 ;\
  12347. \}\
  12348. \f2\b \cf8 if
  12349. \f0\b0 \cf4 (
  12350. \f2\b \cf8 self
  12351. \f0\b0 \cf4 .isGroupMessages) \{\
  12352. \cf2 // for (NSInteger i = 0; i < self.userIds.count; i ++) \{\cf4 \
  12353. \cf2 // NSString *userId = self.userIds[i];\cf4 \
  12354. \cf2 //\cf4 \
  12355. \cf2 // [self sendVoice:amrPath userId:userId];\cf4 \
  12356. \cf2 // [g_server uploadFile:amrPath validTime:self.chatPerson.chatRecordTimeOut messageId:nil toView:self];\cf4 \
  12357. \cf2 // \}\cf4 \
  12358. [
  12359. \f2\b \cf8 self
  12360. \f0\b0 \cf4 addWaitGroupSendViewWithMsgNum:\cf7 1\cf4 withType:groupsend_msgType_audio];\
  12361. _onceSendNum = \cf7 15\cf4 ;\
  12362. \f2\b \cf8 self
  12363. \f0\b0 \cf4 .groupUploadObjArray = [NSMutableArray arrayWithObject:amrPath];\
  12364. [
  12365. \f2\b \cf8 self
  12366. \f0\b0 \cf4 sendVoices:
  12367. \f2\b \cf8 self
  12368. \f0\b0 \cf4 .groupUploadObjArray];\
  12369. \}
  12370. \f2\b \cf8 else
  12371. \f0\b0 \cf4 \{\
  12372. [
  12373. \f2\b \cf8 self
  12374. \f0\b0 \cf4 sendVoice:amrPath userId:
  12375. \f2\b \cf8 nil
  12376. \f0\b0 \cf4 ];\
  12377. [g_server uploadFile:amrPath validTime:
  12378. \f2\b \cf8 self
  12379. \f0\b0 \cf4 .chatPerson.chatRecordTimeOut messageId:
  12380. \f2\b \cf8 nil
  12381. \f0\b0 \cf4 toView:
  12382. \f2\b \cf8 self
  12383. \f0\b0 \cf4 ];\
  12384. \}\
  12385. \}\
  12386. \
  12387. - (
  12388. \f2\b \cf8 void
  12389. \f0\b0 \cf4 )\cf11 sendVoices\cf4 :(NSArray *)voicesArray\{\
  12390. NSString *userId =
  12391. \f2\b \cf8 self
  12392. \f0\b0 \cf4 .userIds[
  12393. \f2\b \cf8 self
  12394. \f0\b0 \cf4 .groupMessagesIndex];\
  12395. NSString *amrPath = voicesArray.lastObject;\
  12396. [
  12397. \f2\b \cf8 self
  12398. \f0\b0 \cf4 sendVoice:amrPath userId:userId];\
  12399. [g_server uploadFile:amrPath validTime:
  12400. \f2\b \cf8 self
  12401. \f0\b0 \cf4 .chatPerson.chatRecordTimeOut messageId:
  12402. \f2\b \cf8 nil
  12403. \f0\b0 \cf4 toView:
  12404. \f2\b \cf8 self
  12405. \f0\b0 \cf4 ];\
  12406. \f2\b \cf8 self
  12407. \f0\b0 \cf4 .groupMessagesIndex ++;\
  12408. \f2\b \cf8 if
  12409. \f0\b0 \cf4 (
  12410. \f2\b \cf8 self
  12411. \f0\b0 \cf4 .groupMessagesIndex <
  12412. \f2\b \cf8 self
  12413. \f0\b0 \cf4 .userIds.count) \{\
  12414. \f2\b \cf8 if
  12415. \f0\b0 \cf4 (
  12416. \f2\b \cf8 self
  12417. \f0\b0 \cf4 .groupMessagesIndex % _onceSendNum == \cf7 0\cf4 ) \{\
  12418. \f2\b \cf8 return
  12419. \f0\b0 \cf4 ;\
  12420. \}
  12421. \f2\b \cf8 else
  12422. \f0\b0 \cf4 \{\
  12423. [
  12424. \f2\b \cf8 self
  12425. \f0\b0 \cf4 sendVoices:voicesArray];\
  12426. \}\
  12427. \}
  12428. \f2\b \cf8 else
  12429. \f0\b0 \cf4
  12430. \f2\b \cf8 if
  12431. \f0\b0 \cf4 (
  12432. \f2\b \cf8 self
  12433. \f0\b0 \cf4 .userIds)\{\
  12434. \f2\b \cf8 self
  12435. \f0\b0 \cf4 .groupMessagesIndex = \cf7 0\cf4 ;\
  12436. \f2\b \cf8 return
  12437. \f0\b0 \cf4 ;\
  12438. \}\
  12439. \}\
  12440. \cf2 //
  12441. \f1 \'c2\'bc\'d2\'f4\'bd\'e8\'cb\'de
  12442. \f0 \cf4 \
  12443. - (
  12444. \f2\b \cf8 void
  12445. \f0\b0 \cf4 )\cf11 audioRecorderDidFinishRecording\cf4 :(AVAudioRecorder *)recorder \cf11 successfully\cf4 :(
  12446. \f2\b \cf8 BOOL
  12447. \f0\b0 \cf4 )flag\{\
  12448. [_voice hide];\
  12449. [peakTimer invalidate];\
  12450. peakTimer =
  12451. \f2\b \cf8 nil
  12452. \f0\b0 \cf4 ;\
  12453. recording =
  12454. \f2\b \cf8 NO
  12455. \f0\b0 \cf4 ;\
  12456. \
  12457. \
  12458. \f2\b \cf8 long
  12459. \f0\b0 \cf4 time = (
  12460. \f2\b \cf8 long
  12461. \f0\b0 \cf4 )[[NSDate date] timeIntervalSince1970];\
  12462. time = (time *\cf7 1000\cf4 + g_server.timeDifference);\
  12463. NSString *salt = [NSString stringWithFormat:\cf6 @"%ld"\cf4 , time];\
  12464. [g_server getact_act_act_getGroupaudio:salt jid:
  12465. \f2\b \cf8 self
  12466. \f0\b0 \cf4 .roomJid andToView:
  12467. \f2\b \cf8 self
  12468. \f0\b0 \cf4 ];\
  12469. \}\
  12470. \
  12471. - (
  12472. \f2\b \cf8 void
  12473. \f0\b0 \cf4 )\cf11 recordCancel\cf4 :(UIButton *)sender\
  12474. \{\
  12475. \f2\b \cf8 if
  12476. \f0\b0 \cf4 (!recording)\
  12477. \f2\b \cf8 return
  12478. \f0\b0 \cf4 ;\
  12479. _recordBtn.layer.borderColor = [[UIColor grayColor] CGColor];\
  12480. _recordBtn.backgroundColor = HEXCOLOR(\cf7 0xFEFEFE\cf4 );\
  12481. [audioRecorder stop];\
  12482. audioRecorder =
  12483. \f2\b \cf8 nil
  12484. \f0\b0 \cf4 ;\
  12485. [[ChatCacheFileUtil sharedInstance] deleteWithContentPath:pathURL.path];\
  12486. \}\
  12487. \
  12488. -(
  12489. \f2\b \cf8 void
  12490. \f0\b0 \cf4 )\cf11 sendVoice\cf4 :(NSString*)file \cf11 userId\cf4 :(NSString *)userId\{\
  12491. \
  12492. \cf2 //
  12493. \f1 \'c9\'fa\'b3\'c9\'cf\'fb\'cf\'a2\'b6\'d4\'cf\'f3
  12494. \f0 \cf4 \
  12495. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  12496. msg.timeSend = [NSDate date];\
  12497. msg.fromUserId = MY_USER_ID;\
  12498. \f2\b \cf8 if
  12499. \f0\b0 \cf4 ([
  12500. \f2\b \cf8 self
  12501. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  12502. msg.toUserId =
  12503. \f2\b \cf8 self
  12504. \f0\b0 \cf4 .roomJid;\
  12505. msg.isGroup =
  12506. \f2\b \cf8 YES
  12507. \f0\b0 \cf4 ;\
  12508. msg.fromUserName = _userNickName;\
  12509. \}\
  12510. \f2\b \cf8 else
  12511. \f0\b0 \cf4 \{\
  12512. \f2\b \cf8 if
  12513. \f0\b0 \cf4 (
  12514. \f2\b \cf8 self
  12515. \f0\b0 \cf4 .isGroupMessages) \{\
  12516. msg.toUserId = userId;\
  12517. \}
  12518. \f2\b \cf8 else
  12519. \f0\b0 \cf4 \{\
  12520. msg.toUserId = chatPerson.userId;\
  12521. \}\
  12522. msg.isGroup =
  12523. \f2\b \cf8 NO
  12524. \f0\b0 \cf4 ;\
  12525. \}\
  12526. \
  12527. msg.fileName = file;\
  12528. msg.content = [[file lastPathComponent] stringByDeletingPathExtension];\
  12529. msg.type = [NSNumber numberWithInt:kWCMessageTypeVoice];\
  12530. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  12531. msg.isUpload = [NSNumber numberWithBool:
  12532. \f2\b \cf8 NO
  12533. \f0\b0 \cf4 ];\
  12534. msg.isRead = [NSNumber numberWithBool:
  12535. \f2\b \cf8 NO
  12536. \f0\b0 \cf4 ];\
  12537. msg.timeLen = [NSNumber numberWithInt:_timeLen];\
  12538. \
  12539. msg.isReadDel = [NSNumber numberWithInt:
  12540. \f2\b \cf8 self
  12541. \f0\b0 \cf4 .isReadDelete];\
  12542. [msg insert:
  12543. \f2\b \cf8 self
  12544. \f0\b0 \cf4 .roomJid];\
  12545. [
  12546. \f2\b \cf8 self
  12547. \f0\b0 \cf4 showOneMsg:msg];\
  12548. \cf2 // [msg release];\cf4 \
  12549. \}\
  12550. \
  12551. - (
  12552. \f2\b \cf8 void
  12553. \f0\b0 \cf4 )\cf11 sendGif\cf4 :(NSString *)str \{\
  12554. \f2\b \cf8 if
  12555. \f0\b0 \cf4 ([
  12556. \f2\b \cf8 self
  12557. \f0\b0 \cf4 sendMsgCheck])\{\
  12558. \f2\b \cf8 return
  12559. \f0\b0 \cf4 ;\
  12560. \}\
  12561. \
  12562. NSString *message = str;\
  12563. \f2\b \cf8 if
  12564. \f0\b0 \cf4 (message.length > \cf7 0\cf4 ) \{\
  12565. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  12566. msg.timeSend = [NSDate date];\
  12567. msg.fromUserId = MY_USER_ID;\
  12568. \f2\b \cf8 if
  12569. \f0\b0 \cf4 ([
  12570. \f2\b \cf8 self
  12571. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  12572. msg.toUserId =
  12573. \f2\b \cf8 self
  12574. \f0\b0 \cf4 .roomJid;\
  12575. msg.isGroup =
  12576. \f2\b \cf8 YES
  12577. \f0\b0 \cf4 ;\
  12578. msg.fromUserName = _userNickName;\
  12579. \}\
  12580. \f2\b \cf8 else
  12581. \f0\b0 \cf4 \{\
  12582. msg.toUserId = chatPerson.userId;\
  12583. msg.isGroup =
  12584. \f2\b \cf8 NO
  12585. \f0\b0 \cf4 ;\
  12586. \}\
  12587. msg.fileData =
  12588. \f2\b \cf8 nil
  12589. \f0\b0 \cf4 ;\
  12590. \cf2 // msg.fileName = message;\cf4 \
  12591. msg.content = message;\
  12592. msg.type = [NSNumber numberWithInt:kWCMessageTypeGif];\
  12593. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  12594. msg.isRead = [NSNumber numberWithBool:
  12595. \f2\b \cf8 NO
  12596. \f0\b0 \cf4 ];\
  12597. msg.isReadDel = [NSNumber numberWithInt:
  12598. \f2\b \cf8 NO
  12599. \f0\b0 \cf4 ];\
  12600. \
  12601. [msg insert:
  12602. \f2\b \cf8 self
  12603. \f0\b0 \cf4 .roomJid];\
  12604. \
  12605. \f2\b \cf8 if
  12606. \f0\b0 \cf4 (_tempChat==\cf7 11\cf4 ) \{\
  12607. msg.tempChat=\cf7 11\cf4 ;\
  12608. \}
  12609. \f2\b \cf8 else
  12610. \f0\b0 \cf4 \{\
  12611. msg.tempChat=\cf7 1\cf4 ;\
  12612. \}\
  12613. \
  12614. \
  12615. [g_xmpp sendMessage:msg roomName:
  12616. \f2\b \cf8 self
  12617. \f0\b0 \cf4 .roomJid];\cf2 //
  12618. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  12619. \f0 \cf4 \
  12620. [
  12621. \f2\b \cf8 self
  12622. \f0\b0 \cf4 showOneMsg:msg];\
  12623. \cf2 // [msg release];\cf4 \
  12624. \}\
  12625. \cf2 // [_messageText setText:nil];\cf4 \
  12626. \}\
  12627. \
  12628. \
  12629. \cf5 #pragma mark
  12630. \f2\b \cf16 -
  12631. \f4 \'ca\'e4\'c8\'eb
  12632. \f2 TextField
  12633. \f4 \'b4\'fa\'c0\'ed
  12634. \f0\b0 \cf4 \
  12635. \
  12636. -(
  12637. \f2\b \cf8 void
  12638. \f0\b0 \cf4 )\cf11 doBeginEdit\cf4 \{\
  12639. \
  12640. \cf2 /*\cf4 \
  12641. \cf2 _table.frame = CGRectMake(0, 0, JX_SCREEN_WIDTH, self.view.frame.size.height-self.heightFooter);\cf4 \
  12642. \cf2 self.tableFooter.frame = CGRectMake(0,self.view.frame.size.height -_keyboardHeight-self.heightFooter-_faceView.faceView.frame.size.height, JX_SCREEN_WIDTH, self.heightFooter);\cf4 \
  12643. \cf2 \cf4 \
  12644. \cf2 NSLog(@"doBeginEdit :%@",NSStringFromCGRect( _faceView.faceView.frame));\cf4 \
  12645. \cf2 NSLog(@"frame :%@",NSStringFromCGRect( self.view.frame));\cf4 \
  12646. \cf2 */\cf4 \
  12647. \}\
  12648. \
  12649. -(
  12650. \f2\b \cf8 void
  12651. \f0\b0 \cf4 )\cf11 doEndEdit\cf4 \{\
  12652. \
  12653. \
  12654. \cf2 /*\cf4 \
  12655. \cf2 if (_messageText.isFirstResponder) \{\cf4 \
  12656. \cf2 \cf4 \
  12657. \cf2 [_faceView removeFromSuperview];\cf4 \
  12658. \cf2 \cf4 \
  12659. \cf2 _table.frame = CGRectMake(0, 0, JX_SCREEN_WIDTH, self.view.frame.size.height-self.heightFooter);\cf4 \
  12660. \cf2 \cf4 \
  12661. \cf2 self.tableFooter.frame = CGRectMake(0,JX_SCREEN_HEIGHT-JX_SCREEN_TOP -(_keyboardHeight+self.heightFooter), JX_SCREEN_WIDTH, self.heightFooter);\cf4 \
  12662. \cf2 \cf4 \
  12663. \cf2 _btnFace.selected = NO;\cf4 \
  12664. \cf2 [_messageText resignFirstResponder];\cf4 \
  12665. \cf2 _messageText.inputView = nil;\cf4 \
  12666. \cf2 self.deltaHeight = 0;\cf4 \
  12667. \cf2 self.screenShotView.frame = CGRectMake(self.screenShotView.frame.origin.x, self.tableFooter.frame.origin.y - self.screenShotView.frame.size.height - 10, self.screenShotView.frame.size.width, self.screenShotView.frame.size.height);\cf4 \
  12668. \cf2 \cf4 \
  12669. \cf2 \}\cf4 \
  12670. \cf2 \cf4 \
  12671. \cf2 if (_faceView && !_faceView.hidden) \{\cf4 \
  12672. \cf2 _faceView.hidden = YES;\cf4 \
  12673. \cf2 [_faceView removeFromSuperview];\cf4 \
  12674. \cf2 _table.frame = CGRectMake(0, 44, JX_SCREEN_WIDTH, self.view.frame.size.height-self.heightFooter-0);\cf4 \
  12675. \cf2 self.tableFooter.frame = CGRectMake(0,JX_SCREEN_HEIGHT-JX_SCREEN_TOP-self.heightFooter-JX_SCREEN_HEIGHT>=812?34:50, JX_SCREEN_WIDTH, self.heightFooter);\cf4 \
  12676. \cf2 \}\cf4 \
  12677. \cf2 \cf4 \
  12678. \cf2 */\cf4 \
  12679. \
  12680. \cf2 //[_table gotoLastRow:NO];\cf4 \
  12681. \cf2 // [self setTableFooterFrame:_messageText];\cf4 \
  12682. \}\
  12683. \
  12684. - (
  12685. \f2\b \cf8 BOOL
  12686. \f0\b0 \cf4 )\cf11 textFieldShouldBeginEditing\cf4 :(UITextField *)textField\{\
  12687. [
  12688. \f2\b \cf8 self
  12689. \f0\b0 \cf4 doBeginEdit];\
  12690. _btnFace.selected =
  12691. \f2\b \cf8 NO
  12692. \f0\b0 \cf4 ;\
  12693. \cf2 // if([[NSDate date] timeIntervalSince1970] <= _disableSay)\cf4 \
  12694. \cf2 // return NO;\cf4 \
  12695. \cf2 // else\cf4 \
  12696. \cf2 // return YES;\cf4 \
  12697. \f2\b \cf8 return
  12698. \f0\b0 \cf4
  12699. \f2\b \cf8 YES
  12700. \f0\b0 \cf4 ;\
  12701. \}\
  12702. \
  12703. - (
  12704. \f2\b \cf8 BOOL
  12705. \f0\b0 \cf4 )\cf11 textFieldShouldEndEditing\cf4 :(UITextField *)textField \{\
  12706. [
  12707. \f2\b \cf8 self
  12708. \f0\b0 \cf4 doEndEdit];\
  12709. \f2\b \cf8 return
  12710. \f0\b0 \cf4
  12711. \f2\b \cf8 YES
  12712. \f0\b0 \cf4 ;\
  12713. \}\
  12714. \
  12715. - (
  12716. \f2\b \cf8 BOOL
  12717. \f0\b0 \cf4 ) \cf11 hideKeyboard\cf4 :(
  12718. \f2\b \cf8 BOOL
  12719. \f0\b0 \cf4 )gotoLastRow\{\
  12720. \f2\b \cf8 if
  12721. \f0\b0 \cf4 (gotoLastRow)\
  12722. \cf2 // [_table gotoLastRow:NO];\cf4 \
  12723. _btnFace.selected =
  12724. \f2\b \cf8 NO
  12725. \f0\b0 \cf4 ;\
  12726. [_messageText resignFirstResponder];\
  12727. _messageText.inputView =
  12728. \f2\b \cf8 nil
  12729. \f0\b0 \cf4 ;\
  12730. \f2\b \cf8 self
  12731. \f0\b0 \cf4 .deltaHeight = \cf7 0\cf4 ;\
  12732. [
  12733. \f2\b \cf8 self
  12734. \f0\b0 \cf4 doEndEdit];\
  12735. \f2\b \cf8 self
  12736. \f0\b0 \cf4 .shareMore.selected =
  12737. \f2\b \cf8 NO
  12738. \f0\b0 \cf4 ;\
  12739. \f2\b \cf8 self
  12740. \f0\b0 \cf4 .screenShotView.frame = CGRectMake(
  12741. \f2\b \cf8 self
  12742. \f0\b0 \cf4 .screenShotView.frame.origin.x,
  12743. \f2\b \cf8 self
  12744. \f0\b0 \cf4 .tableFooter.frame.origin.y -
  12745. \f2\b \cf8 self
  12746. \f0\b0 \cf4 .screenShotView.frame.size.height - \cf7 10\cf4 ,
  12747. \f2\b \cf8 self
  12748. \f0\b0 \cf4 .screenShotView.frame.size.width,
  12749. \f2\b \cf8 self
  12750. \f0\b0 \cf4 .screenShotView.frame.size.height);\
  12751. \f2\b \cf8 return
  12752. \f0\b0 \cf4
  12753. \f2\b \cf8 YES
  12754. \f0\b0 \cf4 ;\
  12755. \}\
  12756. \
  12757. - (
  12758. \f2\b \cf8 BOOL
  12759. \f0\b0 \cf4 )\cf11 textFieldShouldReturn\cf4 :(UITextField *)textField \{\
  12760. [
  12761. \f2\b \cf8 self
  12762. \f0\b0 \cf4 hideKeyboard:
  12763. \f2\b \cf8 YES
  12764. \f0\b0 \cf4 ];\
  12765. \f2\b \cf8 if
  12766. \f0\b0 \cf4 (textField.tag == kWCMessageTypeGif)\
  12767. [
  12768. \f2\b \cf8 self
  12769. \f0\b0 \cf4 sendGif:textField.text];\
  12770. \f2\b \cf8 else
  12771. \f0\b0 \cf4 \{\
  12772. [
  12773. \f2\b \cf8 self
  12774. \f0\b0 \cf4 sendIt:textField];\
  12775. \}\
  12776. \f2\b \cf8 return
  12777. \f0\b0 \cf4
  12778. \f2\b \cf8 YES
  12779. \f0\b0 \cf4 ;\
  12780. \}\
  12781. \
  12782. -(
  12783. \f2\b \cf8 void
  12784. \f0\b0 \cf4 )\cf11 actionFace\cf4 :(UIButton*)sender\{\
  12785. \f2\b \cf8 if
  12786. \f0\b0 \cf4 ([
  12787. \f2\b \cf8 self
  12788. \f0\b0 \cf4 showDisableSay])\
  12789. \f2\b \cf8 return
  12790. \f0\b0 \cf4 ;\
  12791. \
  12792. \f2\b \cf8 self
  12793. \f0\b0 \cf4 .shareMore.selected =
  12794. \f2\b \cf8 YES
  12795. \f0\b0 \cf4 ;\
  12796. _messageText.inputView =
  12797. \f2\b \cf8 nil
  12798. \f0\b0 \cf4 ;\
  12799. [_messageText reloadInputViews];\
  12800. \
  12801. [
  12802. \f2\b \cf8 self
  12803. \f0\b0 \cf4 \cf15 offRecordBtns\cf4 ];\
  12804. \f2\b \cf8 if
  12805. \f0\b0 \cf4 (sender.\cf14 selected\cf4 )\{\
  12806. \cf2 // [self doBeginEdit];\cf4 \
  12807. [\cf15 _messageText\cf4 \cf14 becomeFirstResponder\cf4 ];\
  12808. [\cf15 _faceView\cf4 \cf14 removeFromSuperview\cf4 ];\
  12809. \cf15 _faceView\cf4 .\cf14 hidden\cf4 =
  12810. \f2\b \cf8 YES
  12811. \f0\b0 \cf4 ;\
  12812. sender.\cf14 selected\cf4 =
  12813. \f2\b \cf8 NO
  12814. \f0\b0 \cf4 ;\
  12815. \f2\b \cf8 self
  12816. \f0\b0 \cf4 .\cf15 tableFooter\cf4 .\cf14 frame\cf4 =\cf14 CGRectMake\cf4 (\cf7 0\cf4 ,\cf5 JX_SCREEN_HEIGHT\cf4 -\cf5 JX_SCREEN_TOP\cf4 -\cf7 50\cf4 -\cf15 _keyboardHeight\cf4 ,\cf5 self_width\cf4 ,\cf7 53\cf4 );\
  12817. \cf15 _table\cf4 .\cf14 frame\cf4 =\cf14 CGRectMake\cf4 (\cf7 0\cf4 ,\cf7 0\cf4 ,\cf5 self_width\cf4 ,
  12818. \f2\b \cf8 self
  12819. \f0\b0 \cf4 .\cf14 view\cf4 .\cf14 frame\cf4 .\cf14 size\cf4 .\cf14 height\cf4 -
  12820. \f2\b \cf8 self
  12821. \f0\b0 \cf4 .\cf15 heightFooter\cf4 );\
  12822. \
  12823. [\cf15 inputBar\cf4 \cf15 mas_makeConstraints\cf4 :^(\cf9 MASConstraintMaker\cf4 *make) \{\
  12824. make.\cf15 bottom\cf4 .\cf5 mas_equalTo\cf4 (-(\cf5 JX_SCREEN_HEIGHT\cf4 >=\cf7 812\cf4 ?\cf7 40\cf4 :\cf7 10\cf4 )-_keyboardHeight);\
  12825. make.\cf15 left\cf4 .\cf15 right\cf4 .\cf5 mas_equalTo\cf4 (\cf7 0\cf4 );\
  12826. make.\cf15 height\cf4 .\cf5 mas_equalTo\cf4 (\cf5 tableBarHHH\cf4 );\
  12827. \
  12828. \}];\
  12829. \}
  12830. \f2\b \cf8 else
  12831. \f0\b0 \cf4 \{\
  12832. \f2\b \cf8 if
  12833. \f0\b0 \cf4 (\cf15 _faceView\cf4 ==
  12834. \f2\b \cf8 nil
  12835. \f0\b0 \cf4 )\{\
  12836. \cf15 _faceView\cf4 = \cf5 g_App\cf4 .\cf15 faceView\cf4 ;\
  12837. \cf15 _faceView\cf4 .\cf15 delegate\cf4 =
  12838. \f2\b \cf8 self
  12839. \f0\b0 \cf4 ;\
  12840. \}\
  12841. [\cf15 _messageText\cf4 \cf14 resignFirstResponder\cf4 ];\
  12842. [
  12843. \f2\b \cf8 self
  12844. \f0\b0 \cf4 .\cf14 view\cf4 \cf14 addSubview\cf4 :\cf15 _faceView\cf4 ];\
  12845. \cf15 _faceView\cf4 .\cf14 hidden\cf4 =
  12846. \f2\b \cf8 NO
  12847. \f0\b0 \cf4 ;\
  12848. sender.\cf14 selected\cf4 =
  12849. \f2\b \cf8 YES
  12850. \f0\b0 \cf4 ;\
  12851. \
  12852. \cf2 // [_faceView mas_makeConstraints:^(MASConstraintMaker *make) \{\cf4 \
  12853. \cf2 // make.bottom.mas_equalTo(0);\cf4 \
  12854. \cf2 // make.left.right.mas_equalTo(0);\cf4 \
  12855. \cf2 // make.height.mas_equalTo(JX_SCREEN_HEIGHT>=812?229:249);\cf4 \
  12856. \cf2 //\cf4 \
  12857. \cf2 // \}];\cf4 \
  12858. \cf15 _faceView\cf4 .\cf14 frame\cf4 =\cf14 CGRectMake\cf4 (\cf7 0\cf4 ,\cf5 JX_SCREEN_HEIGHT\cf4 -\cf7 229\cf4 -\cf5 JX_SCREEN_TOP\cf4 ,\cf5 self_width\cf4 ,\cf7 229\cf4 );\
  12859. \cf2 // [_faceView selectType:0];\cf4 \
  12860. \cf2 // [self doBeginEdit];\cf4 \
  12861. \f2\b \cf8 self
  12862. \f0\b0 \cf4 .\cf15 deltaHeight\cf4 = -\cf5 faceHeight\cf4 ;\
  12863. \cf2 // [self setTableFooterFrame:_messageText];\cf4 \
  12864. \f2\b \cf8 if
  12865. \f0\b0 \cf4 (\cf15 _array\cf4 .\cf14 count\cf4 >\cf7 7\cf4 ) \{\
  12866. \cf2 // self.tableFooter.frame =CGRectMake(0,JX_SCREEN_HEIGHT-_faceView.faceView.frame.size.height-JX_SCREEN_TOP,self_width,53);\cf4 \
  12867. \cf15 _table\cf4 .\cf14 frame\cf4 =\cf14 CGRectMake\cf4 (\cf7 0\cf4 ,-\cf15 _faceView\cf4 .\cf15 faceView\cf4 .\cf14 frame\cf4 .\cf14 size\cf4 .\cf14 height\cf4 +\cf5 JX_SCREEN_TOP\cf4 ,\cf5 self_width\cf4 ,
  12868. \f2\b \cf8 self
  12869. \f0\b0 \cf4 .\cf14 view\cf4 .\cf14 frame\cf4 .\cf14 size\cf4 .\cf14 height\cf4 -
  12870. \f2\b \cf8 self
  12871. \f0\b0 \cf4 .\cf15 heightFooter\cf4 -\cf7 53\cf4 );\
  12872. \}
  12873. \f2\b \cf8 else
  12874. \f0\b0 \cf4 \{\
  12875. \cf2 // self.tableFooter.frame =CGRectMake(0,JX_SCREEN_HEIGHT-_faceView.faceView.frame.size.height-JX_SCREEN_TOP,self_width,53);\cf4 \
  12876. \
  12877. \cf2 //
  12878. \f1 \'d0\'de\'b8\'c4\'c1\'cb
  12879. \f0 \cf4 \
  12880. \cf15 _table\cf4 .\cf14 frame\cf4 =\cf14 CGRectMake\cf4 (\cf7 0\cf4 ,\cf7 44\cf4 ,\cf5 self_width\cf4 ,
  12881. \f2\b \cf8 self
  12882. \f0\b0 \cf4 .\cf14 view\cf4 .\cf14 frame\cf4 .\cf14 size\cf4 .\cf14 height\cf4 -
  12883. \f2\b \cf8 self
  12884. \f0\b0 \cf4 .\cf15 heightFooter\cf4 );\
  12885. \}\
  12886. \
  12887. [\cf15 inputBar\cf4 \cf15 mas_makeConstraints\cf4 :^(\cf9 MASConstraintMaker\cf4 *make) \{\
  12888. make.\cf15 bottom\cf4 .\cf5 mas_equalTo\cf4 (_faceView.mas_top).\cf5 mas_equalTo\cf4 (\cf7 0\cf4 );\
  12889. make.\cf15 left\cf4 .\cf15 right\cf4 .\cf5 mas_equalTo\cf4 (\cf7 0\cf4 );\
  12890. make.\cf15 height\cf4 .\cf5 mas_equalTo\cf4 (\cf5 tableBarHHH\cf4 );\
  12891. \
  12892. \}];\
  12893. \}\
  12894. \
  12895. \
  12896. \
  12897. \
  12898. \
  12899. \
  12900. \
  12901. \cf2 // [self doBeginEdit];\cf4 \
  12902. \}\
  12903. \
  12904. - (
  12905. \f2\b \cf8 void
  12906. \f0\b0 \cf4 ) \cf11 selectImageNameString\cf4 :(\cf10 NSString\cf4 *)imageName \cf11 ShortName\cf4 :(\cf10 NSString\cf4 *)shortName \cf11 isSelectImage\cf4 :(
  12907. \f2\b \cf8 BOOL
  12908. \f0\b0 \cf4 )isSelectImage \{\
  12909. \cf2 //
  12910. \f1 \'c8\'e7\'b9\'fb\'b2\'bb\'ca\'c7
  12911. \f0 delete
  12912. \f1 \'cf\'ec\'d3\'a6
  12913. \f0 ,
  12914. \f1 \'b5\'b1\'c7\'b0\'ca\'c7\'cc\'e1\'ca\'be\'d0\'c5\'cf\'a2\'a3\'ac\'d0\'de\'b8\'c4\'c6\'e4\'ca\'f4\'d0\'d4
  12915. \f0 \cf4 \
  12916. \f2\b \cf8 if
  12917. \f0\b0 \cf4 (![shortName \cf14 isEqualToString\cf4 :\cf6 @""\cf4 ] && \cf15 _messageText\cf4 .\cf14 textColor\cf4 == [\cf10 UIColor\cf4 \cf14 lightGrayColor\cf4 ]) \{\
  12918. \cf15 _messageText\cf4 .\cf14 text\cf4 = \cf6 @""\cf4 ;\cf2 //
  12919. \f1 \'d6\'c3\'bf\'d5
  12920. \f0 \cf4 \
  12921. \cf15 _messageText\cf4 .\cf14 textColor\cf4 = [\cf10 UIColor\cf4 \cf14 blackColor\cf4 ];\
  12922. \}\
  12923. \
  12924. \cf9 EmojiTextAttachment\cf4 *attachment = [[\cf9 EmojiTextAttachment\cf4 \cf14 alloc\cf4 ] \cf14 init\cf4 ];\
  12925. attachment.\cf15 emojiTag\cf4 = shortName;\
  12926. attachment.\cf14 image\cf4 = [\cf10 UIImage\cf4 \cf14 imageNamed\cf4 :imageName];\
  12927. attachment.\cf14 bounds\cf4 = \cf14 CGRectMake\cf4 (\cf7 0\cf4 , -\cf7 4\cf4 , \cf15 _messageText\cf4 .\cf14 font\cf4 .\cf14 lineHeight\cf4 , \cf15 _messageText\cf4 .\cf14 font\cf4 .\cf14 lineHeight\cf4 );\
  12928. \cf2 // attachment.emojiSize = CGSizeMake(_messageText.font.lineHeight, _messageText.font.lineHeight);\cf4 \
  12929. \
  12930. \cf10 NSRange\cf4 newRange = \cf14 NSMakeRange\cf4 (\cf15 _messageText\cf4 .\cf14 selectedRange\cf4 .\cf14 location\cf4 + \cf7 1\cf4 , \cf7 0\cf4 );\
  12931. \
  12932. \f2\b \cf8 if
  12933. \f0\b0 \cf4 (_messageText.selectedRange.length > \cf7 0\cf4 ) \{\
  12934. [_messageText.textStorage deleteCharactersInRange:_messageText.selectedRange];\
  12935. \}\
  12936. [_messageText.textStorage insertAttributedString:[NSAttributedString attributedStringWithAttachment:attachment] atIndex:_messageText.selectedRange.location];\
  12937. \
  12938. _messageText.selectedRange = newRange;\
  12939. _messageText.font = SYSFONT(\cf7 18\cf4 );\
  12940. \
  12941. [_messageText scrollRangeToVisible:NSMakeRange(_messageText.text.length, \cf7 1\cf4 )];\
  12942. \f2\b \cf8 if
  12943. \f0\b0 \cf4 (isSelectImage) \{\
  12944. \f2\b \cf8 self
  12945. \f0\b0 \cf4 .deltaHeight = -faceHeight;\
  12946. \}\
  12947. [
  12948. \f2\b \cf8 self
  12949. \f0\b0 \cf4 setTableFooterFrame:_messageText];\
  12950. \}\
  12951. \
  12952. - (
  12953. \f2\b \cf8 void
  12954. \f0\b0 \cf4 )\cf11 faceViewDeleteAction\cf4 \{\
  12955. [_messageText deleteBackward];\
  12956. \}\
  12957. \
  12958. - (
  12959. \f2\b \cf8 void
  12960. \f0\b0 \cf4 )\cf11 selectGifWithString\cf4 :(NSString *)str \{\
  12961. \cf2 // _messageText.text = str;\cf4 \
  12962. [
  12963. \f2\b \cf8 self
  12964. \f0\b0 \cf4 sendGif:str];\
  12965. \}\
  12966. \
  12967. \cf2 //
  12968. \f1 \'b7\'a2\'cb\'cd\'b1\'ed\'c7\'e9\'b0\'fc\'b1\'ed\'c7\'e9
  12969. \f0 \cf4 \
  12970. - (
  12971. \f2\b \cf8 void
  12972. \f0\b0 \cf4 )\cf11 selectEmojiPackgeWithString\cf4 :(NSString *)str \{\
  12973. \
  12974. UIImage * chosedImage=[[SDImageCache sharedImageCache] imageFromMemoryCacheForKey:str];\
  12975. \cf2 //
  12976. \f1 \'bb\'f1\'c8\'a1
  12977. \f0 image
  12978. \f1 \'b5\'c4\'b3\'a4\'bf\'ed
  12979. \f0 \cf4 \
  12980. \f2\b \cf8 int
  12981. \f0\b0 \cf4 imageWidth = chosedImage.size.width;\
  12982. \f2\b \cf8 int
  12983. \f0\b0 \cf4 imageHeight = chosedImage.size.height;\
  12984. NSString *s = [str pathExtension];\
  12985. NSString* file = [FileInfo getUUIDFileName:s];\
  12986. \
  12987. \f2\b \cf8 if
  12988. \f0\b0 \cf4 (
  12989. \f2\b \cf8 self
  12990. \f0\b0 \cf4 .isCYMSGgroupANDFriendy) \{\
  12991. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  12992. \f2\b \cf8 for
  12993. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i <
  12994. \f2\b \cf8 self
  12995. \f0\b0 \cf4 .userIds.count; i ++) \{\
  12996. NSString *userId =
  12997. \f2\b \cf8 self
  12998. \f0\b0 \cf4 .userIds[i];\
  12999. \
  13000. \f2\b \cf8 if
  13001. \f0\b0 \cf4 ([file length]>\cf7 0\cf4 ) \{\
  13002. \
  13003. msg.timeSend = [NSDate date];\
  13004. msg.fromUserId = MY_USER_ID;\
  13005. msg.toUserId = userId;\
  13006. \cf2 //
  13007. \f1 \'c8\'ba
  13008. \f0 \cf4 \
  13009. \f2\b \cf8 if
  13010. \f0\b0 \cf4 ([userId length]>\cf7 10\cf4 )\{\
  13011. msg.isGroup =
  13012. \f2\b \cf8 YES
  13013. \f0\b0 \cf4 ;\
  13014. msg.fromUserName = _userNickName;\
  13015. \}\
  13016. \f2\b \cf8 else
  13017. \f0\b0 \cf4 \{\
  13018. msg.isGroup =
  13019. \f2\b \cf8 NO
  13020. \f0\b0 \cf4 ;\
  13021. \}\
  13022. msg.fileName = file;\
  13023. msg.content = str;\
  13024. \cf2 // msg.type = [NSNumber numberWithInt:kWCMessageTypeImage];\cf4 \
  13025. \cf2 //
  13026. \f1 \'b8\'c4\'b3\'c9
  13027. \f0 kWCMessageTypeEmoji=12,
  13028. \f1 \'d7\'d4\'b6\'a8\'d2\'e5\'b5\'c4\'b1\'ed\'c7\'e9\'cf\'fb\'cf\'a2
  13029. \f0 \cf4 \
  13030. msg.type = [NSNumber numberWithInt:kWCMessageTypeEmoji];\
  13031. \cf2 // msg.remindType = [NSNumber numberWithInt:kWCMessageTypeCustomFace];\cf4 \
  13032. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  13033. msg.isRead = [NSNumber numberWithBool:
  13034. \f2\b \cf8 NO
  13035. \f0\b0 \cf4 ];\
  13036. msg.isUpload = [NSNumber numberWithBool:
  13037. \f2\b \cf8 YES
  13038. \f0\b0 \cf4 ];\
  13039. \cf2 //
  13040. \f1 \'d0\'c2\'cc\'ed\'bc\'d3\'b5\'c4\'cd\'bc\'c6\'ac\'bf\'ed\'b8\'df
  13041. \f0 \cf4 \
  13042. msg.location_x = [NSNumber numberWithInt:imageWidth];\
  13043. msg.location_y = [NSNumber numberWithInt:imageHeight];\
  13044. \
  13045. msg.isReadDel = [NSNumber numberWithInt:
  13046. \f2\b \cf8 self
  13047. \f0\b0 \cf4 .isReadDelete];\
  13048. \
  13049. [msg insert:userId];\
  13050. \
  13051. \f2\b \cf8 if
  13052. \f0\b0 \cf4 (_tempChat==\cf7 11\cf4 ) \{\
  13053. msg.tempChat=\cf7 11\cf4 ;\
  13054. \}
  13055. \f2\b \cf8 else
  13056. \f0\b0 \cf4 \{\
  13057. msg.tempChat=\cf7 1\cf4 ;\
  13058. \}\
  13059. \f2\b \cf8 if
  13060. \f0\b0 \cf4 ([userId length]>\cf7 10\cf4 )\{\
  13061. [g_xmpp sendMessage:msg roomName:userId];\cf2 //
  13062. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  13063. \f0 \cf4 \
  13064. \}
  13065. \f2\b \cf8 else
  13066. \f0\b0 \cf4 \{\
  13067. [g_xmpp sendMessage:msg roomName:
  13068. \f2\b \cf8 nil
  13069. \f0\b0 \cf4 ];\cf2 //
  13070. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  13071. \f0 \cf4 \
  13072. \}\
  13073. \
  13074. [
  13075. \f2\b \cf8 self
  13076. \f0\b0 \cf4 showOneMsg:msg];\
  13077. \}\
  13078. \}\
  13079. \
  13080. \cf2 //
  13081. \f1 \'d0\'b4\'c8\'eb\'ca\'fd\'be\'dd\'bf\'e2
  13082. \f0 \cf4 \
  13083. NSArray *array =
  13084. \f2\b \cf8 self
  13085. \f0\b0 \cf4 .userIds;\
  13086. NSString *userIdsString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  13087. array =
  13088. \f2\b \cf8 self
  13089. \f0\b0 \cf4 .userNames;\
  13090. NSString *userNamesString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  13091. array =
  13092. \f2\b \cf8 self
  13093. \f0\b0 \cf4 .userNamesWithGroup;\
  13094. NSString *userNamesWithGroupString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  13095. NSString *sendTime = [NSString stringWithFormat:\cf6 @"%@"\cf4 , msg.dictionary[\cf6 @"timeSend"\cf4 ]];\
  13096. \
  13097. array =
  13098. \f2\b \cf8 self
  13099. \f0\b0 \cf4 .userNmaesWithFriend;\
  13100. NSString *userNmaesWithFriendString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  13101. \
  13102. JXLabelObject *obj = JXLabelObject.sharedInstance;\
  13103. obj.userId = msg.fromUserId;\
  13104. obj.userIds = userIdsString;\
  13105. obj.text1 = _names;\
  13106. obj.text2 = _names2;\
  13107. obj.userNames = userNamesString;\
  13108. obj.userNamesWithGroup = userNamesWithGroupString;\
  13109. obj.message = \cf6 @"[
  13110. \f1 \'b1\'ed\'c7\'e9
  13111. \f0 ]"\cf4 ;\
  13112. obj.sendTime = sendTime;\
  13113. obj.userNmaesWithFriend = userNmaesWithFriendString;\
  13114. \f2\b \cf8 BOOL
  13115. \f0\b0 \cf4 succeed = [obj insertRecord];\
  13116. \f2\b \cf8 if
  13117. \f0\b0 \cf4 (succeed) \{\
  13118. [g_App showAlert:Localized(\cf6 @"JX_SendComplete"\cf4 )];\
  13119. [g_notify postNotificationName:kGroupHelperRefreshNotif object:
  13120. \f2\b \cf8 nil
  13121. \f0\b0 \cf4 ];\
  13122. [g_navigation popToViewController:[CYGroupSendHelperViewController
  13123. \f2\b \cf8 class
  13124. \f0\b0 \cf4 ] animated:
  13125. \f2\b \cf8 YES
  13126. \f0\b0 \cf4 ];\
  13127. \}\
  13128. \
  13129. \
  13130. \}
  13131. \f2\b \cf8 else
  13132. \f0\b0 \cf4 \{\
  13133. \cf2 //
  13134. \f1 \'b5\'a5\'c1\'c4
  13135. \f0 ,
  13136. \f1 \'c8\'ba\'c1\'c4
  13137. \f0 \cf4 \
  13138. \f2\b \cf8 if
  13139. \f0\b0 \cf4 ([file length]>\cf7 0\cf4 ) \{\
  13140. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  13141. msg.timeSend = [NSDate date];\
  13142. msg.fromUserId = MY_USER_ID;\
  13143. \f2\b \cf8 if
  13144. \f0\b0 \cf4 ([
  13145. \f2\b \cf8 self
  13146. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  13147. msg.toUserId =
  13148. \f2\b \cf8 self
  13149. \f0\b0 \cf4 .roomJid;\
  13150. msg.isGroup =
  13151. \f2\b \cf8 YES
  13152. \f0\b0 \cf4 ;\
  13153. msg.fromUserName = _userNickName;\
  13154. \}\
  13155. \f2\b \cf8 else
  13156. \f0\b0 \cf4 \{\
  13157. msg.toUserId = chatPerson.userId;\
  13158. msg.isGroup =
  13159. \f2\b \cf8 NO
  13160. \f0\b0 \cf4 ;\
  13161. \}\
  13162. msg.fileName = file;\
  13163. msg.content = str;\
  13164. \cf2 // msg.type = [NSNumber numberWithInt:kWCMessageTypeImage];\cf4 \
  13165. \cf2 //
  13166. \f1 \'b8\'c4\'b3\'c9
  13167. \f0 kWCMessageTypeEmoji=12,
  13168. \f1 \'b1\'ed\'c7\'e9\'b0\'fc\'b1\'ed\'c7\'e9\'cf\'fb\'cf\'a2
  13169. \f0 \cf4 \
  13170. msg.type = [NSNumber numberWithInt:kWCMessageTypeEmoji];\
  13171. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  13172. msg.isRead = [NSNumber numberWithBool:
  13173. \f2\b \cf8 NO
  13174. \f0\b0 \cf4 ];\
  13175. msg.isUpload = [NSNumber numberWithBool:
  13176. \f2\b \cf8 YES
  13177. \f0\b0 \cf4 ];\
  13178. \cf2 //
  13179. \f1 \'d0\'c2\'cc\'ed\'bc\'d3\'b5\'c4\'cd\'bc\'c6\'ac\'bf\'ed\'b8\'df
  13180. \f0 \cf4 \
  13181. msg.location_x = [NSNumber numberWithInt:imageWidth];\
  13182. msg.location_y = [NSNumber numberWithInt:imageHeight];\
  13183. \
  13184. msg.isReadDel = [NSNumber numberWithInt:
  13185. \f2\b \cf8 self
  13186. \f0\b0 \cf4 .isReadDelete];\
  13187. \cf2 // msg.remindType = [NSNumber numberWithInt:kWCMessageTypeEmoji];\cf4 \
  13188. \
  13189. [msg insert:
  13190. \f2\b \cf8 self
  13191. \f0\b0 \cf4 .roomJid];\
  13192. \
  13193. \
  13194. \f2\b \cf8 if
  13195. \f0\b0 \cf4 (_tempChat==\cf7 11\cf4 ) \{\
  13196. msg.tempChat=\cf7 11\cf4 ;\
  13197. \}
  13198. \f2\b \cf8 else
  13199. \f0\b0 \cf4 \{\
  13200. msg.tempChat=\cf7 1\cf4 ;\
  13201. \}\
  13202. [g_xmpp sendMessage:msg roomName:
  13203. \f2\b \cf8 self
  13204. \f0\b0 \cf4 .roomJid];\cf2 //
  13205. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  13206. \f0 \cf4 \
  13207. [
  13208. \f2\b \cf8 self
  13209. \f0\b0 \cf4 showOneMsg:msg];\
  13210. \cf2 // [msg release];\cf4 \
  13211. \}\
  13212. \}\
  13213. \
  13214. \
  13215. \}\
  13216. \
  13217. \
  13218. \cf2 //
  13219. \f1 \'b7\'a2\'cb\'cd\'ca\'d5\'b2\'d8\'b1\'ed\'c7\'e9
  13220. \f0 \cf4 \
  13221. - (
  13222. \f2\b \cf8 void
  13223. \f0\b0 \cf4 )\cf11 selectFavoritWithString\cf4 :(NSString *)str \{\
  13224. \
  13225. UIImage * chosedImage=[[SDImageCache sharedImageCache] imageFromMemoryCacheForKey:str];\
  13226. \cf2 //
  13227. \f1 \'bb\'f1\'c8\'a1
  13228. \f0 image
  13229. \f1 \'b5\'c4\'b3\'a4\'bf\'ed
  13230. \f0 \cf4 \
  13231. \f2\b \cf8 int
  13232. \f0\b0 \cf4 imageWidth = chosedImage.size.width;\
  13233. \f2\b \cf8 int
  13234. \f0\b0 \cf4 imageHeight = chosedImage.size.height;\
  13235. NSString *s = [str pathExtension];\
  13236. NSString* file = [FileInfo getUUIDFileName:s];\
  13237. \
  13238. \cf2 //
  13239. \f1 \'c8\'ba\'b7\'a2\'d6\'fa\'ca\'d6
  13240. \f0 \cf4 \
  13241. \f2\b \cf8 if
  13242. \f0\b0 \cf4 (
  13243. \f2\b \cf8 self
  13244. \f0\b0 \cf4 .isCYMSGgroupANDFriendy) \{\
  13245. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  13246. \f2\b \cf8 for
  13247. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i <
  13248. \f2\b \cf8 self
  13249. \f0\b0 \cf4 .userIds.count; i ++) \{\
  13250. NSString *userId =
  13251. \f2\b \cf8 self
  13252. \f0\b0 \cf4 .userIds[i];\
  13253. \
  13254. \f2\b \cf8 if
  13255. \f0\b0 \cf4 ([file length]>\cf7 0\cf4 ) \{\
  13256. msg.timeSend = [NSDate date];\
  13257. msg.fromUserId = MY_USER_ID;\
  13258. msg.toUserId = userId;\
  13259. \cf2 //
  13260. \f1 \'c8\'ba
  13261. \f0 \cf4 \
  13262. \f2\b \cf8 if
  13263. \f0\b0 \cf4 ([userId length]>\cf7 10\cf4 )\{\
  13264. msg.isGroup =
  13265. \f2\b \cf8 YES
  13266. \f0\b0 \cf4 ;\
  13267. msg.fromUserName = _userNickName;\
  13268. \}\
  13269. \f2\b \cf8 else
  13270. \f0\b0 \cf4 \{\
  13271. msg.isGroup =
  13272. \f2\b \cf8 NO
  13273. \f0\b0 \cf4 ;\
  13274. \}\
  13275. msg.fileName = file;\
  13276. msg.content = str;\
  13277. \cf2 // msg.type = [NSNumber numberWithInt:kWCMessageTypeImage];\cf4 \
  13278. \cf2 //
  13279. \f1 \'b8\'c4\'b3\'c9
  13280. \f0 kWCMessageTypeCustomFace=11,
  13281. \f1 \'d7\'d4\'b6\'a8\'d2\'e5\'b5\'c4\'b1\'ed\'c7\'e9\'cf\'fb\'cf\'a2
  13282. \f0 \cf4 \
  13283. msg.type = [NSNumber numberWithInt:kWCMessageTypeCustomFace];\
  13284. \cf2 // msg.remindType = [NSNumber numberWithInt:kWCMessageTypeCustomFace];\cf4 \
  13285. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  13286. msg.isRead = [NSNumber numberWithBool:
  13287. \f2\b \cf8 NO
  13288. \f0\b0 \cf4 ];\
  13289. msg.isUpload = [NSNumber numberWithBool:
  13290. \f2\b \cf8 YES
  13291. \f0\b0 \cf4 ];\
  13292. \cf2 //
  13293. \f1 \'d0\'c2\'cc\'ed\'bc\'d3\'b5\'c4\'cd\'bc\'c6\'ac\'bf\'ed\'b8\'df
  13294. \f0 \cf4 \
  13295. msg.location_x = [NSNumber numberWithInt:imageWidth];\
  13296. msg.location_y = [NSNumber numberWithInt:imageHeight];\
  13297. \
  13298. msg.isReadDel = [NSNumber numberWithInt:
  13299. \f2\b \cf8 self
  13300. \f0\b0 \cf4 .isReadDelete];\
  13301. \
  13302. [msg insert:userId];\
  13303. \
  13304. \f2\b \cf8 if
  13305. \f0\b0 \cf4 (_tempChat==\cf7 11\cf4 ) \{\
  13306. msg.tempChat=\cf7 11\cf4 ;\
  13307. \}
  13308. \f2\b \cf8 else
  13309. \f0\b0 \cf4 \{\
  13310. msg.tempChat=\cf7 1\cf4 ;\
  13311. \}\
  13312. \
  13313. \
  13314. \f2\b \cf8 if
  13315. \f0\b0 \cf4 ([userId length]>\cf7 10\cf4 )\{\
  13316. [g_xmpp sendMessage:msg roomName:userId];\cf2 //
  13317. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  13318. \f0 \cf4 \
  13319. \}
  13320. \f2\b \cf8 else
  13321. \f0\b0 \cf4 \{\
  13322. [g_xmpp sendMessage:msg roomName:
  13323. \f2\b \cf8 nil
  13324. \f0\b0 \cf4 ];\cf2 //
  13325. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  13326. \f0 \cf4 \
  13327. \}\
  13328. \
  13329. \}\
  13330. \}\
  13331. \cf2 //
  13332. \f1 \'d0\'b4\'c8\'eb\'ca\'fd\'be\'dd\'bf\'e2
  13333. \f0 \cf4 \
  13334. NSArray *array =
  13335. \f2\b \cf8 self
  13336. \f0\b0 \cf4 .userIds;\
  13337. NSString *userIdsString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  13338. array =
  13339. \f2\b \cf8 self
  13340. \f0\b0 \cf4 .userNames;\
  13341. NSString *userNamesString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  13342. array =
  13343. \f2\b \cf8 self
  13344. \f0\b0 \cf4 .userNamesWithGroup;\
  13345. NSString *userNamesWithGroupString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  13346. NSString *sendTime = [NSString stringWithFormat:\cf6 @"%@"\cf4 , msg.dictionary[\cf6 @"timeSend"\cf4 ]];\
  13347. \
  13348. array =
  13349. \f2\b \cf8 self
  13350. \f0\b0 \cf4 .userNmaesWithFriend;\
  13351. NSString *userNmaesWithFriendString = [array componentsJoinedByString:\cf6 @","\cf4 ];\
  13352. \
  13353. JXLabelObject *obj = JXLabelObject.sharedInstance;\
  13354. obj.userId = msg.fromUserId;\
  13355. obj.userIds = userIdsString;\
  13356. obj.text1 = _names;\
  13357. obj.text2 = _names2;\
  13358. obj.userNames = userNamesString;\
  13359. obj.userNamesWithGroup = userNamesWithGroupString;\
  13360. obj.message = \cf6 @"[
  13361. \f1 \'cd\'bc\'c6\'ac
  13362. \f0 ]"\cf4 ;\
  13363. obj.sendTime = sendTime;\
  13364. obj.userNmaesWithFriend = userNmaesWithFriendString;\
  13365. \f2\b \cf8 BOOL
  13366. \f0\b0 \cf4 succeed = [obj insertRecord];\
  13367. \f2\b \cf8 if
  13368. \f0\b0 \cf4 (succeed) \{\
  13369. [g_App showAlert:Localized(\cf6 @"JX_SendComplete"\cf4 )];\
  13370. [g_notify postNotificationName:kGroupHelperRefreshNotif object:
  13371. \f2\b \cf8 nil
  13372. \f0\b0 \cf4 ];\
  13373. [g_navigation popToViewController:[CYGroupSendHelperViewController
  13374. \f2\b \cf8 class
  13375. \f0\b0 \cf4 ] animated:
  13376. \f2\b \cf8 YES
  13377. \f0\b0 \cf4 ];\
  13378. \}\
  13379. \
  13380. \}
  13381. \f2\b \cf8 else
  13382. \f0\b0 \cf4 \{\
  13383. \cf2 //
  13384. \f1 \'b5\'a5\'c1\'c4
  13385. \f0 ,
  13386. \f1 \'c8\'ba\'c1\'c4
  13387. \f0 \cf4 \
  13388. \f2\b \cf8 if
  13389. \f0\b0 \cf4 ([file length]>\cf7 0\cf4 ) \{\
  13390. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  13391. msg.timeSend = [NSDate date];\
  13392. msg.fromUserId = MY_USER_ID;\
  13393. \f2\b \cf8 if
  13394. \f0\b0 \cf4 ([
  13395. \f2\b \cf8 self
  13396. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  13397. msg.toUserId =
  13398. \f2\b \cf8 self
  13399. \f0\b0 \cf4 .roomJid;\
  13400. msg.isGroup =
  13401. \f2\b \cf8 YES
  13402. \f0\b0 \cf4 ;\
  13403. msg.fromUserName = _userNickName;\
  13404. \}\
  13405. \f2\b \cf8 else
  13406. \f0\b0 \cf4 \{\
  13407. msg.toUserId = chatPerson.userId;\
  13408. msg.isGroup =
  13409. \f2\b \cf8 NO
  13410. \f0\b0 \cf4 ;\
  13411. \}\
  13412. msg.fileName = file;\
  13413. msg.content = str;\
  13414. \cf2 // msg.type = [NSNumber numberWithInt:kWCMessageTypeImage];\cf4 \
  13415. \cf2 //
  13416. \f1 \'b8\'c4\'b3\'c9
  13417. \f0 kWCMessageTypeCustomFace=11,
  13418. \f1 \'d7\'d4\'b6\'a8\'d2\'e5\'b5\'c4\'b1\'ed\'c7\'e9\'cf\'fb\'cf\'a2
  13419. \f0 \cf4 \
  13420. msg.type = [NSNumber numberWithInt:kWCMessageTypeCustomFace];\
  13421. \cf2 // msg.remindType = [NSNumber numberWithInt:kWCMessageTypeCustomFace];\cf4 \
  13422. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  13423. msg.isRead = [NSNumber numberWithBool:
  13424. \f2\b \cf8 NO
  13425. \f0\b0 \cf4 ];\
  13426. msg.isUpload = [NSNumber numberWithBool:
  13427. \f2\b \cf8 YES
  13428. \f0\b0 \cf4 ];\
  13429. \cf2 //
  13430. \f1 \'d0\'c2\'cc\'ed\'bc\'d3\'b5\'c4\'cd\'bc\'c6\'ac\'bf\'ed\'b8\'df
  13431. \f0 \cf4 \
  13432. msg.location_x = [NSNumber numberWithInt:imageWidth];\
  13433. msg.location_y = [NSNumber numberWithInt:imageHeight];\
  13434. \
  13435. msg.isReadDel = [NSNumber numberWithInt:
  13436. \f2\b \cf8 self
  13437. \f0\b0 \cf4 .isReadDelete];\
  13438. \
  13439. [msg insert:
  13440. \f2\b \cf8 self
  13441. \f0\b0 \cf4 .roomJid];\
  13442. \
  13443. \f2\b \cf8 if
  13444. \f0\b0 \cf4 (_tempChat==\cf7 11\cf4 ) \{\
  13445. msg.tempChat=\cf7 11\cf4 ;\
  13446. \}
  13447. \f2\b \cf8 else
  13448. \f0\b0 \cf4 \{\
  13449. msg.tempChat=\cf7 1\cf4 ;\
  13450. \}\
  13451. [g_xmpp sendMessage:msg roomName:
  13452. \f2\b \cf8 self
  13453. \f0\b0 \cf4 .roomJid];\cf2 //
  13454. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  13455. \f0 \cf4 \
  13456. [
  13457. \f2\b \cf8 self
  13458. \f0\b0 \cf4 showOneMsg:msg];\
  13459. \cf2 // [msg release];\cf4 \
  13460. \}\
  13461. \
  13462. \}\
  13463. \
  13464. \
  13465. \}\
  13466. \
  13467. \cf2 //
  13468. \f1 \'c8\'a1\'cf\'fb\'ca\'d5\'b2\'d8
  13469. \f0 \cf4 \
  13470. - (
  13471. \f2\b \cf8 void
  13472. \f0\b0 \cf4 )\cf11 deleteFavoritWithString\cf4 :(NSString *)str \{\
  13473. \cf2 // [g_server userEmojiDeleteWithId:str toView:self];\cf4 \
  13474. [g_server faceClollectDeleteFaceClollect:str View:
  13475. \f2\b \cf8 self
  13476. \f0\b0 \cf4 ];\
  13477. \}\
  13478. \
  13479. - (
  13480. \f2\b \cf8 BOOL
  13481. \f0\b0 \cf4 )\cf11 textView\cf4 :(UITextView *)textView \cf11 shouldChangeTextInRange\cf4 :(NSRange)range \cf11 replacementText\cf4 :(NSString *)text \{\
  13482. \cf2 //
  13483. \f1 \'d6\'bb\'d3\'d0\'cb\'ae\'d3\'a1\'ca\'b1\'a3\'ac\'b2\'bb\'c4\'dc
  13484. \f0 send\cf4 \
  13485. \f2\b \cf8 if
  13486. \f0\b0 \cf4 ([text isEqualToString:\cf6 @"\\n"\cf4 ] && textView.textColor == [UIColor lightGrayColor]) \{\
  13487. \f2\b \cf8 return
  13488. \f0\b0 \cf4
  13489. \f2\b \cf8 NO
  13490. \f0\b0 \cf4 ;\
  13491. \}\
  13492. \cf2 //
  13493. \f1 \'c8\'e7\'b9\'fb\'b2\'bb\'ca\'c7
  13494. \f0 delete
  13495. \f1 \'cf\'ec\'d3\'a6
  13496. \f0 ,
  13497. \f1 \'b5\'b1\'c7\'b0\'ca\'c7\'cc\'e1\'ca\'be\'d0\'c5\'cf\'a2\'a3\'ac\'d0\'de\'b8\'c4\'c6\'e4\'ca\'f4\'d0\'d4
  13498. \f0 \cf4 \
  13499. \f2\b \cf8 if
  13500. \f0\b0 \cf4 (![text isEqualToString:\cf6 @""\cf4 ] && textView.textColor == [UIColor lightGrayColor]) \{\
  13501. textView.text = \cf6 @""\cf4 ;\cf2 //
  13502. \f1 \'d6\'c3\'bf\'d5
  13503. \f0 \cf4 \
  13504. textView.textColor = [UIColor blackColor];\
  13505. \}\
  13506. \
  13507. NSMutableArray *arr = [NSMutableArray array];\
  13508. [
  13509. \f2\b \cf8 self
  13510. \f0\b0 \cf4 getImageRange:text array:arr];\
  13511. \f2\b \cf8 if
  13512. \f0\b0 \cf4 (arr.count > \cf7 1\cf4 ) \{\
  13513. \f2\b \cf8 for
  13514. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < arr.count; i ++) \{\
  13515. NSString *str = arr[i];\
  13516. NSInteger n;\
  13517. \
  13518. _messageText.font = SYSFONT(\cf7 18\cf4 );\
  13519. \f2\b \cf8 if
  13520. \f0\b0 \cf4 ([str hasPrefix:\cf6 @"["\cf4 ]&&[str hasSuffix:\cf6 @"]"\cf4 ] && [g_faceVC.shortNameArrayE containsObject:str]) \{\
  13521. n = [g_faceVC.shortNameArrayE indexOfObject:str];\
  13522. NSDictionary *dic = [g_constant.emojiArray objectAtIndex:n];\
  13523. [
  13524. \f2\b \cf8 self
  13525. \f0\b0 \cf4 selectImageNameString:dic[\cf6 @"filename"\cf4 ] ShortName:str isSelectImage:
  13526. \f2\b \cf8 NO
  13527. \f0\b0 \cf4 ];\
  13528. NSLog(\cf6 @""\cf4 );\
  13529. \}
  13530. \f2\b \cf8 else
  13531. \f0\b0 \cf4 \{\
  13532. \cf2 // NSMutableString *textViewStr = [_messageText.text mutableCopy];\cf4 \
  13533. \cf2 // [textViewStr insertString:str atIndex:_messageText.selectedRange.location];\cf4 \
  13534. \cf2 // _messageText.text = textViewStr;\cf4 \
  13535. NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];\
  13536. paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;\
  13537. NSRange newRange = NSMakeRange(_messageText.selectedRange.location + str.length, \cf7 0\cf4 );\
  13538. [_messageText.textStorage insertAttributedString:[[NSAttributedString alloc] initWithString:str attributes:\cf7 @\{\cf4 NSParagraphStyleAttributeName:paragraphStyle,NSFontAttributeName:SYSFONT(\cf7 18\cf4 )\cf7 \}\cf4 ] atIndex:_messageText.selectedRange.location];\
  13539. \
  13540. _messageText.selectedRange = newRange;\
  13541. \
  13542. [_messageText scrollRangeToVisible:NSMakeRange(_messageText.text.length, \cf7 1\cf4 )];\
  13543. \}\
  13544. \}\
  13545. [
  13546. \f2\b \cf8 self
  13547. \f0\b0 \cf4 setTableFooterFrame:textView];\
  13548. \f2\b \cf8 return
  13549. \f0\b0 \cf4
  13550. \f2\b \cf8 NO
  13551. \f0\b0 \cf4 ;\
  13552. \}\
  13553. \
  13554. \f2\b \cf8 if
  13555. \f0\b0 \cf4 ([text isEqualToString:\cf6 @"\\n"\cf4 ])\{ \cf2 //
  13556. \f1 \'c5\'d0\'b6\'cf\'ca\'e4\'c8\'eb\'b5\'c4\'d7\'d6\'ca\'c7\'b7\'f1\'ca\'c7\'bb\'d8\'b3\'b5\'a3\'ac\'bc\'b4\'b0\'b4\'cf\'c2
  13557. \f0 return\cf4 \
  13558. \cf2 //
  13559. \f1 \'d4\'da\'d5\'e2\'c0\'ef\'d7\'f6\'c4\'e3\'cf\'ec\'d3\'a6
  13560. \f0 return
  13561. \f1 \'bc\'fc\'b5\'c4\'b4\'fa\'c2\'eb
  13562. \f0 \cf4 \
  13563. \cf2 // if(textView.tag == kWCMessageTypeGif)\cf4 \
  13564. \cf2 // [self sendGif:textView];\cf4 \
  13565. \cf2 // else\cf4 \
  13566. \f2\b \cf8 if
  13567. \f0\b0 \cf4 (
  13568. \f2\b \cf8 self
  13569. \f0\b0 \cf4 .isGroupMessages) \{\
  13570. [
  13571. \f2\b \cf8 self
  13572. \f0\b0 \cf4 hideKeyboard:
  13573. \f2\b \cf8 YES
  13574. \f0\b0 \cf4 ];\
  13575. _onceSendNum = \cf7 20\cf4 ;\
  13576. [
  13577. \f2\b \cf8 self
  13578. \f0\b0 \cf4 addWaitGroupSendViewWithMsgNum:\cf7 1\cf4 withType:groupsend_msgType_text];\
  13579. \}\
  13580. [
  13581. \f2\b \cf8 self
  13582. \f0\b0 \cf4 sendIt:textView];\
  13583. [
  13584. \f2\b \cf8 self
  13585. \f0\b0 \cf4 setTableFooterFrame:textView];\
  13586. \f2\b \cf8 return
  13587. \f0\b0 \cf4
  13588. \f2\b \cf8 NO
  13589. \f0\b0 \cf4 ; \cf2 //
  13590. \f1 \'d5\'e2\'c0\'ef\'b7\'b5\'bb\'d8
  13591. \f0 NO
  13592. \f1 \'a3\'ac\'be\'cd\'b4\'fa\'b1\'ed
  13593. \f0 return
  13594. \f1 \'bc\'fc\'d6\'b5\'ca\'a7\'d0\'a7\'a3\'ac\'bc\'b4\'d2\'b3\'c3\'e6\'c9\'cf\'b0\'b4\'cf\'c2
  13595. \f0 return
  13596. \f1 \'a3\'ac\'b2\'bb\'bb\'e1\'b3\'f6\'cf\'d6\'bb\'bb\'d0\'d0\'a3\'ac\'c8\'e7\'b9\'fb\'ce\'aa
  13597. \f0 yes
  13598. \f1 \'a3\'ac\'d4\'f2\'ca\'e4\'c8\'eb\'d2\'b3\'c3\'e6\'bb\'e1\'bb\'bb\'d0\'d0
  13599. \f0 \cf4 \
  13600. \}
  13601. \f2\b \cf8 else
  13602. \f0\b0 \cf4
  13603. \f2\b \cf8 if
  13604. \f0\b0 \cf4 ([text isEqualToString:\cf6 @"@"\cf4 ] && [
  13605. \f2\b \cf8 self
  13606. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  13607. \f2\b \cf8 if
  13608. \f0\b0 \cf4 (!
  13609. \f2\b \cf8 self
  13610. \f0\b0 \cf4 .isShowAT) \{\
  13611. \f2\b \cf8 self
  13612. \f0\b0 \cf4 .isShowAT =
  13613. \f2\b \cf8 YES
  13614. \f0\b0 \cf4 ;\
  13615. \cf2 //@
  13616. \f1 \'c8\'ba\'b3\'c9\'d4\'b1
  13617. \f0 \cf4 \
  13618. [
  13619. \f2\b \cf8 self
  13620. \f0\b0 \cf4 performSelector:
  13621. \f2\b \cf8 @selector
  13622. \f0\b0 \cf4 (showAtSelectMemberView) withObject:
  13623. \f2\b \cf8 nil
  13624. \f0\b0 \cf4 afterDelay:\cf7 0.35\cf4 ];\
  13625. \}\
  13626. \}\
  13627. \
  13628. \f2\b \cf8 return
  13629. \f0\b0 \cf4
  13630. \f2\b \cf8 YES
  13631. \f0\b0 \cf4 ;\
  13632. \}\
  13633. \
  13634. \
  13635. \cf5 #pragma mark
  13636. \f2\b \cf16 -
  13637. \f4 \'d3\'d0\'b1\'ed\'c7\'e9\'b5\'c4
  13638. \f2 txt
  13639. \f4 \'d7\'aa\'bb\'bb\'b3\'c9
  13640. \f2
  13641. \f4 \'ba\'ac\'cd\'bc\'c6\'ac\'b5\'c4
  13642. \f2 txt
  13643. \f0\b0 \cf4 \
  13644. - (
  13645. \f2\b \cf8 BOOL
  13646. \f0\b0 \cf4 )\cf11 changeEmjoyText\cf4 :(NSString *)text \cf11 textColor\cf4 :(UIColor *)textColor \{\
  13647. NSMutableArray *arr = [NSMutableArray array];\
  13648. [
  13649. \f2\b \cf8 self
  13650. \f0\b0 \cf4 getImageRange:text array:arr];\
  13651. NSRange newRange = _messageText.selectedRange;\
  13652. \f2\b \cf8 if
  13653. \f0\b0 \cf4 (arr.count > \cf7 1\cf4 ) \{\
  13654. \f2\b \cf8 for
  13655. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < arr.count; i ++) \{\
  13656. NSString *str = arr[i];\
  13657. NSInteger n;\
  13658. \
  13659. _messageText.font = SYSFONT(\cf7 18\cf4 );\
  13660. \f2\b \cf8 if
  13661. \f0\b0 \cf4 ([str hasPrefix:\cf6 @"["\cf4 ]&&[str hasSuffix:\cf6 @"]"\cf4 ] && [g_faceVC.shortNameArrayE containsObject:str]) \{\
  13662. n = [g_faceVC.shortNameArrayE indexOfObject:str];\
  13663. NSDictionary *dic = [g_constant.emojiArray objectAtIndex:n];\
  13664. \
  13665. EmojiTextAttachment *attachment = [[EmojiTextAttachment alloc] init];\
  13666. attachment.emojiTag = str;\
  13667. attachment.image = [UIImage imageNamed:dic[\cf6 @"filename"\cf4 ]];\
  13668. attachment.bounds = CGRectMake(\cf7 0\cf4 , -\cf7 4\cf4 , _messageText.font.lineHeight, _messageText.font.lineHeight);\
  13669. \
  13670. newRange = NSMakeRange(newRange.location + \cf7 1\cf4 , \cf7 0\cf4 );\
  13671. [_messageText.textStorage appendAttributedString:[NSAttributedString attributedStringWithAttachment:attachment]];\
  13672. _messageText.font = SYSFONT(\cf7 18\cf4 );\
  13673. \
  13674. [_messageText scrollRangeToVisible:NSMakeRange(_messageText.text.length, \cf7 1\cf4 )];\
  13675. \}
  13676. \f2\b \cf8 else
  13677. \f0\b0 \cf4 \{\
  13678. newRange = NSMakeRange(newRange.location + str.length, \cf7 0\cf4 );\
  13679. \
  13680. [_messageText.textStorage appendAttributedString:[[NSAttributedString alloc] initWithString:str attributes:\cf7 @\{\cf4 NSFontAttributeName:SYSFONT(\cf7 18\cf4 ),NSForegroundColorAttributeName:textColor\cf7 \}\cf4 ]];\
  13681. [_messageText scrollRangeToVisible:NSMakeRange(_messageText.text.length, \cf7 1\cf4 )];\
  13682. \}\
  13683. \
  13684. \}\
  13685. _messageText.selectedRange = newRange;\
  13686. \}\
  13687. \f2\b \cf8 return
  13688. \f0\b0 \cf4 arr.count > \cf7 1\cf4 ;\
  13689. \}\
  13690. \
  13691. \cf2 //
  13692. \f1 \'bd\'ab\'b1\'ed\'c7\'e9\'ba\'cd\'ce\'c4\'d7\'d6\'b7\'d6\'bf\'aa\'a3\'ac\'d7\'b0\'bd\'f8
  13693. \f0 array\cf4 \
  13694. -(
  13695. \f2\b \cf8 void
  13696. \f0\b0 \cf4 )\cf11 getImageRange\cf4 :(NSString*)message \cf11 array\cf4 : (NSMutableArray*)array \{\
  13697. NSRange range=[message rangeOfString: \cf6 @"["\cf4 ];\
  13698. NSRange range1=[message rangeOfString: \cf6 @"]"\cf4 ];\
  13699. NSRange atRange = [message rangeOfString:\cf6 @"@"\cf4 ];\
  13700. \cf2 //
  13701. \f1 \'c5\'d0\'b6\'cf\'b5\'b1\'c7\'b0\'d7\'d6\'b7\'fb\'b4\'ae\'ca\'c7\'b7\'f1\'bb\'b9\'d3\'d0\'b1\'ed\'c7\'e9\'b5\'c4\'b1\'ea\'d6\'be\'a1\'a3
  13702. \f0 \cf4 \
  13703. \
  13704. \cf2 // self.contentEmoji = [self isContainsEmoji:message];\cf4 \
  13705. \
  13706. \f2\b \cf8 if
  13707. \f0\b0 \cf4 (((range.length>\cf7 0\cf4 && range1.length>\cf7 0\cf4 ) || atRange.length>\cf7 0\cf4 ) && range1.location > range.location) \{\
  13708. \f2\b \cf8 if
  13709. \f0\b0 \cf4 (range.length>\cf7 0\cf4 && range1.length>\cf7 0\cf4 ) \{\
  13710. \cf2 // self.contentEmoji = YES;\cf4 \
  13711. \cf2 // if (range.location > 0) \{\cf4 \
  13712. \cf2 // [array addObject:[message substringToIndex:range.location]];\cf4 \
  13713. \cf2 // [array addObject:[message substringWithRange:NSMakeRange(range.location, range1.location+1-range.location)]];\cf4 \
  13714. \cf2 // NSString *str=[message substringFromIndex:range1.location+1];\cf4 \
  13715. \cf2 // [self getImageRange:str array:array];\cf4 \
  13716. \cf2 // \}else \{\cf4 \
  13717. \cf2 // NSString *nextstr=[message substringWithRange:NSMakeRange(range.location, range1.location+1-range.location)];\cf4 \
  13718. \cf2 // //
  13719. \f1 \'c5\'c5\'b3\'fd\'ce\'c4\'d7\'d6\'ca\'c7
  13720. \f0 \'93\'94
  13721. \f1 \'b5\'c4
  13722. \f0 \cf4 \
  13723. \cf2 // if (![nextstr isEqualToString:@""]) \{\cf4 \
  13724. \cf2 // [array addObject:nextstr];\cf4 \
  13725. \cf2 // NSString *str=[message substringFromIndex:range1.location+1];\cf4 \
  13726. \cf2 // [self getImageRange:str array:array];\cf4 \
  13727. \cf2 // \}else \{\cf4 \
  13728. \cf2 // return;\cf4 \
  13729. \cf2 // \}\cf4 \
  13730. \cf2 // \}\cf4 \
  13731. \f2\b \cf8 if
  13732. \f0\b0 \cf4 (range.location > \cf7 0\cf4 ) \{\
  13733. \
  13734. NSString *str = [message substringToIndex:range.location];\
  13735. \
  13736. NSString *str1 = [message substringFromIndex:range.location];\
  13737. \
  13738. [array addObject:str];\
  13739. \
  13740. [
  13741. \f2\b \cf8 self
  13742. \f0\b0 \cf4 getImageRange:str1 array:array];\
  13743. \
  13744. \}
  13745. \f2\b \cf8 else
  13746. \f0\b0 \cf4 \{\
  13747. \
  13748. NSString *emojiString = [message substringWithRange:NSMakeRange(range.location + \cf7 1\cf4 , range1.location - \cf7 1\cf4 )];\
  13749. \f2\b \cf8 BOOL
  13750. \f0\b0 \cf4 isEmoji =
  13751. \f2\b \cf8 NO
  13752. \f0\b0 \cf4 ;\
  13753. NSString *str;\
  13754. NSString *str1;\
  13755. \f2\b \cf8 for
  13756. \f0\b0 \cf4 (NSMutableDictionary *dic
  13757. \f2\b \cf8 in
  13758. \f0\b0 \cf4 g_constant.emojiArray) \{\
  13759. NSString *emoji = [dic objectForKey:\cf6 @"english"\cf4 ];\
  13760. \f2\b \cf8 if
  13761. \f0\b0 \cf4 ([emoji isEqualToString:emojiString]) \{\
  13762. isEmoji =
  13763. \f2\b \cf8 YES
  13764. \f0\b0 \cf4 ;\
  13765. \f2\b \cf8 break
  13766. \f0\b0 \cf4 ;\
  13767. \}\
  13768. \}\
  13769. \f2\b \cf8 if
  13770. \f0\b0 \cf4 (isEmoji) \{\
  13771. str = [message substringWithRange:NSMakeRange(range.location, range1.location + \cf7 1\cf4 )];\
  13772. str1 = [message substringFromIndex:range1.location + \cf7 1\cf4 ];\
  13773. [array addObject:str];\
  13774. \}
  13775. \f2\b \cf8 else
  13776. \f0\b0 \cf4 \{\
  13777. NSString *posString = [message substringWithRange:NSMakeRange(range.location + \cf7 1\cf4 , range1.location)];\
  13778. NSRange posRange = [posString rangeOfString:\cf6 @"["\cf4 ];\
  13779. \f2\b \cf8 if
  13780. \f0\b0 \cf4 (posRange.location != NSNotFound) \{\
  13781. str = [message substringToIndex:posRange.location];\
  13782. str1 = [message substringFromIndex:posRange.location];\
  13783. [array addObject:str];\
  13784. \}
  13785. \f2\b \cf8 else
  13786. \f0\b0 \cf4 \{\
  13787. str = [message substringToIndex:range1.location + \cf7 1\cf4 ];\
  13788. str1 = [message substringFromIndex:range1.location + \cf7 1\cf4 ];\
  13789. [array addObject:str];\
  13790. \}\
  13791. \}\
  13792. [
  13793. \f2\b \cf8 self
  13794. \f0\b0 \cf4 getImageRange:str1 array:array];\
  13795. \}\
  13796. \
  13797. \
  13798. \}
  13799. \f2\b \cf8 else
  13800. \f0\b0 \cf4
  13801. \f2\b \cf8 if
  13802. \f0\b0 \cf4 (atRange.length>\cf7 0\cf4 ) \{\
  13803. \f2\b \cf8 if
  13804. \f0\b0 \cf4 (atRange.location > \cf7 0\cf4 ) \{\
  13805. [array addObject:[message substringToIndex:atRange.location]];\
  13806. [array addObject:[message substringWithRange:NSMakeRange(atRange.location, \cf7 1\cf4 )]];\
  13807. NSString *str=[message substringFromIndex:atRange.location+\cf7 1\cf4 ];\
  13808. [
  13809. \f2\b \cf8 self
  13810. \f0\b0 \cf4 getImageRange:str array:array];\
  13811. \}
  13812. \f2\b \cf8 else
  13813. \f0\b0 \cf4 \{\
  13814. [array addObject:[message substringWithRange:NSMakeRange(atRange.location, \cf7 1\cf4 )]];\
  13815. NSString *str=[message substringFromIndex:atRange.location+\cf7 1\cf4 ];\
  13816. [
  13817. \f2\b \cf8 self
  13818. \f0\b0 \cf4 getImageRange:str array:array];\
  13819. \}\
  13820. \
  13821. \}
  13822. \f2\b \cf8 else
  13823. \f0\b0 \cf4
  13824. \f2\b \cf8 if
  13825. \f0\b0 \cf4 (message !=
  13826. \f2\b \cf8 nil
  13827. \f0\b0 \cf4 ) \{\
  13828. [array addObject:message];\
  13829. \}\
  13830. \}\
  13831. \
  13832. \f2\b \cf8 else
  13833. \f0\b0 \cf4
  13834. \f2\b \cf8 if
  13835. \f0\b0 \cf4 (range.length>\cf7 0\cf4 && range1.length>\cf7 0\cf4 && range1.location < range.location)\{\
  13836. NSString *str = [message substringToIndex:range1.location + \cf7 1\cf4 ];\
  13837. NSString *str1 = [message substringFromIndex:range1.location + \cf7 1\cf4 ];\
  13838. [array addObject:str];\
  13839. [
  13840. \f2\b \cf8 self
  13841. \f0\b0 \cf4 getImageRange:str1 array:array];\
  13842. \}\
  13843. \
  13844. \
  13845. \
  13846. \f2\b \cf8 else
  13847. \f0\b0 \cf4
  13848. \f2\b \cf8 if
  13849. \f0\b0 \cf4 (message !=
  13850. \f2\b \cf8 nil
  13851. \f0\b0 \cf4 ) \{\
  13852. [array addObject:message];\
  13853. \}\
  13854. \}\
  13855. \
  13856. - (
  13857. \f2\b \cf8 void
  13858. \f0\b0 \cf4 )\cf11 textViewDidChangeSelection\cf4 :(UITextView *)textView \{\
  13859. \cf2 //
  13860. \f1 \'c8\'e7\'b9\'fb\'ca\'c7\'cc\'e1\'ca\'be\'c4\'da\'c8\'dd\'a3\'ac\'b9\'e2\'b1\'ea\'b7\'c5\'d6\'c3\'bf\'aa\'ca\'bc\'ce\'bb\'d6\'c3
  13861. \f0 \cf4 \
  13862. \f2\b \cf8 if
  13863. \f0\b0 \cf4 (textView.textColor==[UIColor lightGrayColor]) \{\
  13864. NSRange range;\
  13865. range.location = \cf7 0\cf4 ;\
  13866. range.length = \cf7 0\cf4 ;\
  13867. textView.selectedRange = range;\
  13868. \}\
  13869. \}\
  13870. \
  13871. - (
  13872. \f2\b \cf8 void
  13873. \f0\b0 \cf4 )\cf11 textViewDidChange\cf4 :(UITextView *)textView \{\
  13874. \
  13875. \f2\b \cf8 if
  13876. \f0\b0 \cf4 (textView.text.length <= \cf7 0\cf4 ) \{\
  13877. [
  13878. \f2\b \cf8 self
  13879. \f0\b0 \cf4 removeAllAt];\
  13880. \cf2 //
  13881. \f1 \'cf\'d4\'ca\'be\'cb\'ae\'d3\'a1
  13882. \f0 \cf4 \
  13883. [
  13884. \f2\b \cf8 self
  13885. \f0\b0 \cf4 getTextViewWatermark];\
  13886. \}\
  13887. \
  13888. [
  13889. \f2\b \cf8 self
  13890. \f0\b0 \cf4 setTableFooterFrame:textView];\
  13891. \
  13892. \cf2 //
  13893. \f1 \'b7\'a2\'cb\'cd\'d5\'fd\'d4\'da\'ca\'e4\'c8\'eb\'b9\'fd\'c2\'cb\'cc\'f5\'bc\'fe
  13894. \f0 \cf4 \
  13895. \cf2 // BOOL enteringStatus = [g_default boolForKey:kStartEnteringStatus];\cf4 \
  13896. \f2\b \cf8 BOOL
  13897. \f0\b0 \cf4 enteringStatus = [g_myself.isTyping intValue] > \cf7 0\cf4 ?
  13898. \f2\b \cf8 YES
  13899. \f0\b0 \cf4 :
  13900. \f2\b \cf8 NO
  13901. \f0\b0 \cf4 ;\
  13902. \f2\b \cf8 if
  13903. \f0\b0 \cf4 (!enteringStatus ||
  13904. \f2\b \cf8 self
  13905. \f0\b0 \cf4 .roomJid ||
  13906. \f2\b \cf8 self
  13907. \f0\b0 \cf4 .isSendEntering) \{\
  13908. \f2\b \cf8 return
  13909. \f0\b0 \cf4 ;\
  13910. \}\
  13911. \
  13912. \{\cf2 //
  13913. \f1 \'b7\'a2\'cb\'cd\'d5\'fd\'d4\'da\'ca\'e4\'c8\'eb
  13914. \f0 \cf4 \
  13915. \f2\b \cf8 self
  13916. \f0\b0 \cf4 .isSendEntering =
  13917. \f2\b \cf8 YES
  13918. \f0\b0 \cf4 ;\
  13919. [
  13920. \f2\b \cf8 self
  13921. \f0\b0 \cf4 sendEntering];\
  13922. [
  13923. \f2\b \cf8 self
  13924. \f0\b0 \cf4 .enteringTimer invalidate];\
  13925. \f2\b \cf8 self
  13926. \f0\b0 \cf4 .enteringTimer =
  13927. \f2\b \cf8 nil
  13928. \f0\b0 \cf4 ;\
  13929. \f2\b \cf8 self
  13930. \f0\b0 \cf4 .enteringTimer = [NSTimer scheduledTimerWithTimeInterval:\cf7 10\cf4 target:
  13931. \f2\b \cf8 self
  13932. \f0\b0 \cf4 selector:
  13933. \f2\b \cf8 @selector
  13934. \f0\b0 \cf4 (enteringTimerAction:) userInfo:
  13935. \f2\b \cf8 nil
  13936. \f0\b0 \cf4 repeats:
  13937. \f2\b \cf8 NO
  13938. \f0\b0 \cf4 ];\
  13939. \}\
  13940. \
  13941. \}\
  13942. \
  13943. - (
  13944. \f2\b \cf8 void
  13945. \f0\b0 \cf4 ) \cf11 enteringTimerAction\cf4 :(NSTimer *)timer \{\
  13946. \f2\b \cf8 self
  13947. \f0\b0 \cf4 .isSendEntering =
  13948. \f2\b \cf8 NO
  13949. \f0\b0 \cf4 ;\
  13950. [
  13951. \f2\b \cf8 self
  13952. \f0\b0 \cf4 .enteringTimer invalidate];\
  13953. \f2\b \cf8 self
  13954. \f0\b0 \cf4 .enteringTimer =
  13955. \f2\b \cf8 nil
  13956. \f0\b0 \cf4 ;\
  13957. \}\
  13958. \cf2 //
  13959. \f1 \'b1\'e0\'bc\'ad
  13960. \f0 \cf4 \
  13961. - (
  13962. \f2\b \cf8 void
  13963. \f0\b0 \cf4 ) \cf11 setTableFooterFrame\cf4 :(UITextView *) textView \{\
  13964. \
  13965. \
  13966. \f2\b \cf8 return
  13967. \f0\b0 \cf4 ;\
  13968. \cf2 // self.view.frame = CGRectMake(0, 0, JX_SCREEN_WIDTH, JX_SCREEN_HEIGHT-JX_SCREEN_TOP-44);\cf4 \
  13969. \
  13970. \f2\b \cf8 static
  13971. \f0\b0 \cf4 CGFloat maxHeight =\cf7 66.0f\cf4 ;\
  13972. CGRect frame = textView.frame;\
  13973. CGSize constraintSize = CGSizeMake(frame.size.width, MAXFLOAT);\
  13974. CGSize size = [textView sizeThatFits:constraintSize];\
  13975. \
  13976. \f2\b \cf8 if
  13977. \f0\b0 \cf4 (size.height >= maxHeight)\
  13978. \{\
  13979. size.height = maxHeight;\
  13980. textView.scrollEnabled =
  13981. \f2\b \cf8 YES
  13982. \f0\b0 \cf4 ; \cf2 //
  13983. \f1 \'d4\'ca\'d0\'ed\'b9\'f6\'b6\'af
  13984. \f0 \cf4 \
  13985. \}\
  13986. \f2\b \cf8 else
  13987. \f0\b0 \cf4 \
  13988. \{\
  13989. textView.scrollEnabled =
  13990. \f2\b \cf8 NO
  13991. \f0\b0 \cf4 ; \cf2 //
  13992. \f1 \'b2\'bb\'d4\'ca\'d0\'ed\'b9\'f6\'b6\'af
  13993. \f0 \cf4 \
  13994. \}\
  13995. \f2\b \cf8 if
  13996. \f0\b0 \cf4 (textView.hidden) \{\
  13997. size.height = \cf7 32\cf4 + \cf7 5.5\cf4 ;\
  13998. \}\
  13999. \
  14000. \f2\b \cf8 self
  14001. \f0\b0 \cf4 .heightFooter = size.height + \cf7 16\cf4 ;\
  14002. \f2\b \cf8 if
  14003. \f0\b0 \cf4 (
  14004. \f2\b \cf8 self
  14005. \f0\b0 \cf4 .isHiddenFooter) \{\
  14006. \f2\b \cf8 self
  14007. \f0\b0 \cf4 .heightFooter =\cf7 0\cf4 ;\
  14008. \}\
  14009. textView.frame = CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, size.height);\
  14010. inputBar.frame = CGRectMake(inputBar.frame.origin.x, inputBar.frame.origin.y, inputBar.frame.size.width,
  14011. \f2\b \cf8 self
  14012. \f0\b0 \cf4 .heightFooter);\
  14013. \
  14014. \
  14015. \cf2 /*\cf4 \
  14016. \cf2 if (_faceView.faceView.frame.size.height>0&&_faceView.faceView.hidden==NO) \{\cf4 \
  14017. \cf2 \cf4 \
  14018. \cf2 \cf4 \
  14019. \cf2 if (_keyboardHeight>0) \{\cf4 \
  14020. \
  14021. \cf2 self.tableFooter.frame = CGRectMake(0,keboardHHH+JX_SCREEN_HEIGHT-JX_SCREEN_TOP-self.heightFooter-40-_keyboardHeight-0, JX_SCREEN_WIDTH, self.heightFooter);\cf4 \
  14022. \cf2 \cf4 \
  14023. \cf2 if (_array.count>8) \{\cf4 \
  14024. \cf2 _table.frame =CGRectMake(0,-_keyboardHeight,self_width,self.view.frame.size.height-self.heightFooter);\cf4 \
  14025. \cf2 \cf4 \
  14026. \cf2 \cf4 \
  14027. \cf2 \}else\{\cf4 \
  14028. \cf2 _table.frame =CGRectMake(0,0,self_width,self.view.frame.size.height-self.heightFooter);\cf4 \
  14029. \cf2 \}\cf4 \
  14030. \cf2 \cf4 \
  14031. \cf2 \}else\{\cf4 \
  14032. \
  14033. \cf2 if(JX_SCREEN_TOP==88)\{\cf4 \
  14034. \cf2 \cf4 \
  14035. \cf2 if (JX_SCREEN_HEIGHT>=812) \{\cf4 \
  14036. \cf2 \cf4 \
  14037. \cf2 \cf4 \
  14038. \cf2 self.tableFooter.frame = CGRectMake(0,keboardHHH+JX_SCREEN_HEIGHT-self.heightFooter-22-53-_keyboardHeight-_faceView.faceView.frame.size.height-44, JX_SCREEN_WIDTH, self.heightFooter);\cf4 \
  14039. \cf2 \cf4 \
  14040. \cf2 \cf4 \
  14041. \cf2 \}else\{\cf4 \
  14042. \cf2 \cf4 \
  14043. \cf2 self.tableFooter.frame = CGRectMake(0,keboardHHH+JX_SCREEN_HEIGHT-self.heightFooter-28-53-_keyboardHeight-_faceView.faceView.frame.size.height, JX_SCREEN_WIDTH, self.heightFooter);\cf4 \
  14044. \cf2 \cf4 \
  14045. \cf2 \}\cf4 \
  14046. \cf2 \cf4 \
  14047. \cf2 if (_array.count>8) \{\cf4 \
  14048. \cf2 _table.frame =CGRectMake(0,-_keyboardHeight-_faceView.faceView.frame.size.height,self_width,self.view.frame.size.height-self.heightFooter);\cf4 \
  14049. \cf2 \}else\{\cf4 \
  14050. \cf2 _table.frame =CGRectMake(0,0,self_width,self.view.frame.size.height-self.heightFooter);\cf4 \
  14051. \cf2 \cf4 \
  14052. \cf2 \}\cf4 \
  14053. \cf2 \cf4 \
  14054. \cf2 \}else\{\cf4 \
  14055. \cf2 \cf4 \
  14056. \cf2 self.tableFooter.frame = CGRectMake(0,keboardHHH+(JX_SCREEN_HEIGHT>=812?0:30)+ JX_SCREEN_HEIGHT-self.heightFooter-JX_SCREEN_TOP-22-_keyboardHeight-_faceView.faceView.frame.size.height, JX_SCREEN_WIDTH, self.heightFooter);\cf4 \
  14057. \cf2 \cf4 \
  14058. \cf2 \cf4 \
  14059. \cf2 if (_array.count>8) \{\cf4 \
  14060. \cf2 _table.frame =CGRectMake(0,-24-_keyboardHeight-_faceView.faceView.frame.size.height+(JX_SCREEN_HEIGHT>=812?0:30)+JX_SCREEN_TOP,self_width,self.view.frame.size.height-self.heightFooter);\cf4 \
  14061. \cf2 \}else\{\cf4 \
  14062. \cf2 _table.frame =CGRectMake(0,0,self_width,self.view.frame.size.height-self.heightFooter);\cf4 \
  14063. \cf2 \cf4 \
  14064. \cf2 \}\cf4 \
  14065. \cf2 \cf4 \
  14066. \cf2 \}\cf4 \
  14067. \cf2 \}\cf4 \
  14068. \cf2 \}else\{\cf4 \
  14069. \cf2 \cf4 \
  14070. \cf2 //
  14071. \f1 \'c8\'e7\'b9\'fb\'ca\'c7\'d1\'a1\'d4\'f1
  14072. \f0 \cf4 \
  14073. \cf2 if (_faceView.selectedIndex >=1) \{\cf4 \
  14074. \cf2 self.tableFooter.frame = CGRectMake(0,keboardHHH+JX_SCREEN_HEIGHT-JX_SCREEN_TOP-self.heightFooter-_keyboardHeight-_faceView.faceView.frame.size.height-0, JX_SCREEN_WIDTH, self.heightFooter);\cf4 \
  14075. \cf2 \}else \{\cf4 \
  14076. \cf2 self.tableFooter.frame = CGRectMake(0,keboardHHH+JX_SCREEN_HEIGHT-JX_SCREEN_TOP-self.heightFooter-44-_keyboardHeight-_faceView.faceView.frame.size.height-0, JX_SCREEN_WIDTH, self.heightFooter);\cf4 \
  14077. \cf2 \}\cf4 \
  14078. \cf2 \cf4 \
  14079. \cf2 if (_array.count>10) \{\cf4 \
  14080. \
  14081. \cf2 _table.frame =CGRectMake(0,-_keyboardHeight-0,self_width,self.view.frame.size.height-self.heightFooter);\cf4 \
  14082. \cf2 \}else \{\cf4 \
  14083. \cf2 _table.frame =CGRectMake(0,0,self_width,self.view.frame.size.height-self.heightFooter-0);\cf4 \
  14084. \cf2 \}\cf4 \
  14085. \cf2 \}\cf4 \
  14086. \cf2 */\cf4 \
  14087. \
  14088. \cf2 // [_table gotoLastRow:NO];\cf4 \
  14089. \
  14090. \
  14091. \
  14092. _publicMenuBar.frame = CGRectMake(_publicMenuBar.frame.origin.x,
  14093. \f2\b \cf8 self
  14094. \f0\b0 \cf4 .tableFooter.frame.size.height, _publicMenuBar.frame.size.width, _publicMenuBar.frame.size.height);\
  14095. \f2\b \cf8 self
  14096. \f0\b0 \cf4 .screenShotView.frame = CGRectMake(
  14097. \f2\b \cf8 self
  14098. \f0\b0 \cf4 .screenShotView.frame.origin.x,
  14099. \f2\b \cf8 self
  14100. \f0\b0 \cf4 .tableFooter.frame.origin.y -
  14101. \f2\b \cf8 self
  14102. \f0\b0 \cf4 .screenShotView.frame.size.height - \cf7 10\cf4 ,
  14103. \f2\b \cf8 self
  14104. \f0\b0 \cf4 .screenShotView.frame.size.width,
  14105. \f2\b \cf8 self
  14106. \f0\b0 \cf4 .screenShotView.frame.size.height);\
  14107. \}\
  14108. \
  14109. - (
  14110. \f2\b \cf8 BOOL
  14111. \f0\b0 \cf4 )\cf11 textViewShouldBeginEditing\cf4 :(UITextView *)textView \{\
  14112. \
  14113. _btnFace.selected =
  14114. \f2\b \cf8 NO
  14115. \f0\b0 \cf4 ;\
  14116. \f2\b \cf8 return
  14117. \f0\b0 \cf4
  14118. \f2\b \cf8 YES
  14119. \f0\b0 \cf4 ;\
  14120. \}\
  14121. \
  14122. - (
  14123. \f2\b \cf8 BOOL
  14124. \f0\b0 \cf4 )\cf11 textViewShouldEndEditing\cf4 :(UITextView *)textView \{\
  14125. [
  14126. \f2\b \cf8 self
  14127. \f0\b0 \cf4 doEndEdit];\
  14128. \f2\b \cf8 return
  14129. \f0\b0 \cf4
  14130. \f2\b \cf8 YES
  14131. \f0\b0 \cf4 ;\
  14132. \}\
  14133. \
  14134. \
  14135. \
  14136. \cf2 //
  14137. \f1 \'c2\'bc\'d2\'f4
  14138. \f0 \cf4 \
  14139. -(
  14140. \f2\b \cf8 void
  14141. \f0\b0 \cf4 )\cf11 recordSwitch\cf4 :(UIButton*)sender\{\
  14142. \f2\b \cf8 if
  14143. \f0\b0 \cf4 ([
  14144. \f2\b \cf8 self
  14145. \f0\b0 \cf4 showDisableSay])\
  14146. \f2\b \cf8 return
  14147. \f0\b0 \cf4 ;\
  14148. _messageText.inputView =
  14149. \f2\b \cf8 nil
  14150. \f0\b0 \cf4 ;\
  14151. \cf2 //[_messageText reloadInputViews];\cf4 \
  14152. _faceView.hidden=
  14153. \f2\b \cf8 YES
  14154. \f0\b0 \cf4 ;\
  14155. sender.selected = !sender.selected;\
  14156. _recordBtn.hidden = !sender.selected;\
  14157. _messageText.hidden = !_recordBtn.hidden;\
  14158. \f2\b \cf8 if
  14159. \f0\b0 \cf4 (!_recordBtn.hidden)\{\
  14160. [
  14161. \f2\b \cf8 self
  14162. \f0\b0 \cf4 hideKeyboard:
  14163. \f2\b \cf8 YES
  14164. \f0\b0 \cf4 ];\
  14165. \cf2 //[_faceView removeFromSuperview];\cf4 \
  14166. \
  14167. inputBar.frame=CGRectMake(\cf7 0\cf4 ,JX_SCREEN_HEIGHT-JX_SCREEN_TOP-\cf7 53\cf4 , JX_SCREEN_WIDTH, \cf7 53\cf4 );\
  14168. _table.contentInset=UIEdgeInsetsMake(\cf7 44\cf4 , \cf7 0\cf4 , \cf7 0\cf4 , \cf7 0\cf4 );\
  14169. \
  14170. _table.frame=CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 , JX_SCREEN_WIDTH,
  14171. \f2\b \cf8 self
  14172. \f0\b0 \cf4 .view.frame.size.height-
  14173. \f2\b \cf8 self
  14174. \f0\b0 \cf4 .heightFooter-\cf7 44\cf4 );\
  14175. _keyboardHeight=\cf7 0\cf4 ;\
  14176. \cf2 // [self setTableFooterFrame:_messageText];\cf4 \
  14177. \
  14178. \}\
  14179. \
  14180. \}\
  14181. \
  14182. \cf2 //
  14183. \f1 \'c1\'c4\'cc\'ec\'ce\'bb\'d6\'c3\'b1\'bb\'b5\'e3\'bb\'f7
  14184. \f0 \cf4 \
  14185. -(
  14186. \f2\b \cf8 void
  14187. \f0\b0 \cf4 )\cf11 onDidLocation\cf4 :(JXMessageObject*)msg\{\
  14188. JXLocationVC* vc = [JXLocationVC alloc];\
  14189. vc.longitude = [msg.location_y doubleValue];\
  14190. vc.latitude = [msg.location_x doubleValue];\
  14191. vc.locationType = JXLocationTypeShowStaticLocation;\
  14192. vc = [vc init];\
  14193. \cf2 // [g_window addSubview:vc.view];\cf4 \
  14194. [g_navigation pushViewController:vc animated:
  14195. \f2\b \cf8 YES
  14196. \f0\b0 \cf4 ];\
  14197. \cf2 // [vc release];\cf4 \
  14198. \}\
  14199. \
  14200. \cf2 //cell
  14201. \f1 \'c0\'ef\'b5\'c4\'cd\'bc\'c6\'ac\'a3\'ac\'b1\'bb\'b5\'e3\'bb\'f7\'ba\'f3\'b5\'c4\'b4\'a6\'c0\'ed\'ca\'c2\'bc\'fe
  14202. \f0 \cf4 \
  14203. -(
  14204. \f2\b \cf8 void
  14205. \f0\b0 \cf4 )\cf11 onSelectImage\cf4 :(JXImageView*)sender\{\
  14206. \cf2 // [sender removeFromSuperview];\cf4 \
  14207. \}\
  14208. \
  14209. -(
  14210. \f2\b \cf8 void
  14211. \f0\b0 \cf4 )\cf11 offRecordBtns\cf4 \{\
  14212. _recordBtnLeft.selected =
  14213. \f2\b \cf8 NO
  14214. \f0\b0 \cf4 ;\
  14215. _recordBtn.hidden =
  14216. \f2\b \cf8 YES
  14217. \f0\b0 \cf4 ;\
  14218. _messageText.hidden =
  14219. \f2\b \cf8 NO
  14220. \f0\b0 \cf4 ;\
  14221. \}\
  14222. \
  14223. \
  14224. -(
  14225. \f2\b \cf8 void
  14226. \f0\b0 \cf4 )\cf11 scrollToPageUp\cf4 \{\
  14227. \f2\b \cf8 if
  14228. \f0\b0 \cf4 (_isLoading)\
  14229. \f2\b \cf8 return
  14230. \f0\b0 \cf4 ;\
  14231. NSLog(\cf6 @"scrollToPageUp"\cf4 );\
  14232. _page ++;\
  14233. [
  14234. \f2\b \cf8 self
  14235. \f0\b0 \cf4 getServerData];\
  14236. \}\
  14237. \
  14238. -(
  14239. \f2\b \cf8 void
  14240. \f0\b0 \cf4 )\cf11 scrollToPageDown\cf4 \{\
  14241. \f2\b \cf8 if
  14242. \f0\b0 \cf4 (_isLoading)\
  14243. \f2\b \cf8 return
  14244. \f0\b0 \cf4 ;\
  14245. _page=\cf7 0\cf4 ;\
  14246. [
  14247. \f2\b \cf8 self
  14248. \f0\b0 \cf4 getServerData];\
  14249. \}\
  14250. \cf5 #pragma mark
  14251. \f2\b \cf16 - ViewLoad
  14252. \f4 \'bb\'f1\'c8\'a1\'ca\'fd\'be\'dd
  14253. \f0\b0 \cf4 \
  14254. -(
  14255. \f2\b \cf8 void
  14256. \f0\b0 \cf4 )\cf11 getServerData\cf4 \{\
  14257. _isLoading =
  14258. \f2\b \cf8 YES
  14259. \f0\b0 \cf4 ;\
  14260. [
  14261. \f2\b \cf8 self
  14262. \f0\b0 \cf4 refresh:
  14263. \f2\b \cf8 nil
  14264. \f0\b0 \cf4 ];\
  14265. NSLog(\cf6 @"_isLoading=no"\cf4 );\
  14266. [
  14267. \f2\b \cf8 self
  14268. \f0\b0 \cf4 stopLoading];\
  14269. \}\
  14270. \
  14271. \
  14272. \cf2 //- (void)tableView:(UITableView *)tableView touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event\{\cf4 \
  14273. \cf2 // [self hideKeyboard:NO];\cf4 \
  14274. \cf2 //\}\cf4 \
  14275. \
  14276. -(
  14277. \f2\b \cf8 void
  14278. \f0\b0 \cf4 )\cf11 sendText\cf4 :(UIView*)sender\{\
  14279. \f2\b \cf8 if
  14280. \f0\b0 \cf4 ([_messageText.text length]<=\cf7 0\cf4 )\{\
  14281. \cf2 // [g_App showAlert:Localized(@"JXAlert_MessageNotNil")];\cf4 \
  14282. \f2\b \cf8 return
  14283. \f0\b0 \cf4 ;\
  14284. \}\
  14285. \cf2 // [self hideKeyboard:NO];\cf4 \
  14286. \f2\b \cf8 if
  14287. \f0\b0 \cf4 (
  14288. \f2\b \cf8 self
  14289. \f0\b0 \cf4 .isGroupMessages) \{\
  14290. [
  14291. \f2\b \cf8 self
  14292. \f0\b0 \cf4 hideKeyboard:
  14293. \f2\b \cf8 YES
  14294. \f0\b0 \cf4 ];\
  14295. _onceSendNum = \cf7 20\cf4 ;\
  14296. [
  14297. \f2\b \cf8 self
  14298. \f0\b0 \cf4 addWaitGroupSendViewWithMsgNum:\cf7 1\cf4 withType:groupsend_msgType_text];\
  14299. \}\
  14300. [
  14301. \f2\b \cf8 self
  14302. \f0\b0 \cf4 sendIt:
  14303. \f2\b \cf8 nil
  14304. \f0\b0 \cf4 ];\
  14305. [
  14306. \f2\b \cf8 self
  14307. \f0\b0 \cf4 setTableFooterFrame:_messageText];\
  14308. \}\
  14309. \
  14310. -(
  14311. \f2\b \cf8 void
  14312. \f0\b0 \cf4 ) \cf11 setChatPerson\cf4 :(JXUserObject*)user\{\
  14313. \f2\b \cf8 if
  14314. \f0\b0 \cf4 (user ==
  14315. \f2\b \cf8 nil
  14316. \f0\b0 \cf4 || user == chatPerson)\{\
  14317. current_chat_userId =
  14318. \f2\b \cf8 nil
  14319. \f0\b0 \cf4 ;\
  14320. \f2\b \cf8 return
  14321. \f0\b0 \cf4 ;\
  14322. \}\
  14323. \cf2 // chatPerson = [user retain];\cf4 \
  14324. chatPerson = user;\
  14325. current_chat_userId = user.userId;\
  14326. \}\
  14327. \
  14328. \cf5 #pragma mark
  14329. \f2\b \cf16 ----
  14330. \f4 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2\'b2\'a2\'cf\'d4\'ca\'be
  14331. \f0\b0 \cf4 \
  14332. -(
  14333. \f2\b \cf8 void
  14334. \f0\b0 \cf4 )\cf11 resendMsgNotif\cf4 :(NSNotification*)notification\{\
  14335. \f2\b \cf8 int
  14336. \f0\b0 \cf4 indexNum = [notification.object intValue];\
  14337. \
  14338. \f2\b \cf8 if
  14339. \f0\b0 \cf4 (indexNum>_array.count) \{\
  14340. \
  14341. \f2\b \cf8 return
  14342. \f0\b0 \cf4 ;\
  14343. \}\
  14344. \
  14345. \
  14346. JXMessageObject *p =[_array objectAtIndex:indexNum];\
  14347. [p updateIsSend:transfer_status_ing];\
  14348. NSIndexPath* cellIndex = [NSIndexPath indexPathForRow:indexNum inSection:\cf7 0\cf4 ];\
  14349. _selCell = [_table cellForRowAtIndexPath:cellIndex];\
  14350. [_selCell drawIsSend];\
  14351. \
  14352. \
  14353. \
  14354. \
  14355. \f2\b \cf8 if
  14356. \f0\b0 \cf4 (_tempChat==\cf7 11\cf4 ) \{\
  14357. p.tempChat=\cf7 11\cf4 ;\
  14358. \}
  14359. \f2\b \cf8 else
  14360. \f0\b0 \cf4 \{\
  14361. p.tempChat=\cf7 1\cf4 ;\
  14362. \}\
  14363. \
  14364. \f2\b \cf8 if
  14365. \f0\b0 \cf4 ([p.isUpload boolValue])\{\
  14366. [g_xmpp sendMessage:p roomName:
  14367. \f2\b \cf8 nil
  14368. \f0\b0 \cf4 ];\cf2 //
  14369. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  14370. \f0 \cf4 \
  14371. \}
  14372. \f2\b \cf8 else
  14373. \f0\b0 \cf4 \{\
  14374. [g_server uploadFile:p.fileName validTime:
  14375. \f2\b \cf8 self
  14376. \f0\b0 \cf4 .chatPerson.chatRecordTimeOut messageId:
  14377. \f2\b \cf8 nil
  14378. \f0\b0 \cf4 toView:
  14379. \f2\b \cf8 self
  14380. \f0\b0 \cf4 ];\
  14381. \}\
  14382. \}\
  14383. \
  14384. \cf5 #pragma mark
  14385. \f2\b \cf16 ----
  14386. \f4 \'c9\'be\'b3\'fd\'cf\'fb\'cf\'a2\'b2\'a2\'cb\'a2\'d0\'c2
  14387. \f0\b0 \cf4 \
  14388. -(
  14389. \f2\b \cf8 void
  14390. \f0\b0 \cf4 )\cf11 deleteMsgNotif\cf4 :(NSNotification*)notification\{\
  14391. \f2\b \cf8 int
  14392. \f0\b0 \cf4 indexNum = [notification.object intValue];\
  14393. JXMessageObject *p=[_array objectAtIndex:indexNum];\
  14394. [p
  14395. \f2\b \cf8 delete
  14396. \f0\b0 \cf4 ];\
  14397. [_array removeObject:p];\
  14398. [
  14399. \f2\b \cf8 self
  14400. \f0\b0 \cf4 deleteMsg:p];\
  14401. \}\
  14402. \
  14403. - (
  14404. \f2\b \cf8 void
  14405. \f0\b0 \cf4 )\cf11 showReadPersons\cf4 :(NSNotification *)notification\{\
  14406. \f2\b \cf8 if
  14407. \f0\b0 \cf4 (recording) \{\
  14408. \f2\b \cf8 return
  14409. \f0\b0 \cf4 ;\
  14410. \}\
  14411. \f2\b \cf8 int
  14412. \f0\b0 \cf4 indexNum = [notification.object intValue];\
  14413. JXMessageObject *msg = _array[indexNum];\
  14414. JXReadListVC *vc = [[JXReadListVC alloc] init];\
  14415. vc.msg = msg;\
  14416. vc.room = _room;\
  14417. \cf2 // [g_window addSubview:vc.view];\cf4 \
  14418. [g_navigation pushViewController:vc animated:
  14419. \f2\b \cf8 YES
  14420. \f0\b0 \cf4 ];\
  14421. \}\
  14422. \
  14423. -(
  14424. \f2\b \cf8 void
  14425. \f0\b0 \cf4 )\cf11 resend\cf4 :(JXMessageObject*)p\{\
  14426. \cf2 // NSLog(@"resend");\cf4 \
  14427. [p updateIsSend:transfer_status_ing];\
  14428. [_selCell drawIsSend];\
  14429. \f2\b \cf8 if
  14430. \f0\b0 \cf4 ([p.isUpload boolValue])\{\
  14431. [g_xmpp sendMessage:p roomName:
  14432. \f2\b \cf8 self
  14433. \f0\b0 \cf4 .roomJid];\cf2 //
  14434. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  14435. \f0 \cf4 \
  14436. \}
  14437. \f2\b \cf8 else
  14438. \f0\b0 \cf4 \{\
  14439. [g_server uploadFile:p.fileName validTime:
  14440. \f2\b \cf8 self
  14441. \f0\b0 \cf4 .chatPerson.chatRecordTimeOut messageId:
  14442. \f2\b \cf8 nil
  14443. \f0\b0 \cf4 toView:
  14444. \f2\b \cf8 self
  14445. \f0\b0 \cf4 ];\
  14446. \}\
  14447. \}\
  14448. \
  14449. -(
  14450. \f2\b \cf8 void
  14451. \f0\b0 \cf4 )\cf11 deleteMsg\cf4 :(JXMessageObject*)p\{\
  14452. \f2\b \cf8 for
  14453. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < _array.count; i ++) \{\
  14454. JXMessageObject *msg = _array[i];\
  14455. \f2\b \cf8 if
  14456. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeText) \{\
  14457. JXMessageCell *cell = [_table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:\cf7 0\cf4 ]];\
  14458. [cell.readDelTimer invalidate];\
  14459. cell.readDelTimer =
  14460. \f2\b \cf8 nil
  14461. \f0\b0 \cf4 ;\
  14462. \
  14463. \f2\b \cf8 if
  14464. \f0\b0 \cf4 ([p.messageId isEqualToString:msg.messageId]) \{\
  14465. \f2\b \cf8 if
  14466. \f0\b0 \cf4 (i == _array.count - \cf7 1\cf4 && i > \cf7 0\cf4 ) \{\
  14467. JXMessageObject *theLastMsg = _array[_array.count - \cf7 2\cf4 ];\
  14468. \f2\b \cf8 self
  14469. \f0\b0 \cf4 .lastMsg = theLastMsg;\
  14470. [theLastMsg updateLastSend:UpdateLastSendType_None];\
  14471. \}\
  14472. \}\
  14473. \}\
  14474. \}\
  14475. \
  14476. \
  14477. [_array removeObject:p];\
  14478. _refreshCount++;\
  14479. [_table reloadData];\
  14480. \}\
  14481. \
  14482. -(
  14483. \f2\b \cf8 void
  14484. \f0\b0 \cf4 )\cf11 actionQuit\cf4 \{\
  14485. \
  14486. [_voice hide];\
  14487. [peakTimer invalidate];\
  14488. peakTimer =
  14489. \f2\b \cf8 nil
  14490. \f0\b0 \cf4 ;\
  14491. recording =
  14492. \f2\b \cf8 NO
  14493. \f0\b0 \cf4 ;\
  14494. \
  14495. \f2\b \cf8 if
  14496. \f0\b0 \cf4 (
  14497. \f2\b \cf8 self
  14498. \f0\b0 \cf4 .isGroupMessages) \{\
  14499. _isGroupSendCancel =
  14500. \f2\b \cf8 YES
  14501. \f0\b0 \cf4 ;\
  14502. \}\
  14503. \
  14504. \f2\b \cf8 if
  14505. \f0\b0 \cf4 (
  14506. \f2\b \cf8 self
  14507. \f0\b0 \cf4 .isSelectMore) \{\
  14508. \f2\b \cf8 self
  14509. \f0\b0 \cf4 .isSelectMore =
  14510. \f2\b \cf8 NO
  14511. \f0\b0 \cf4 ;\
  14512. \f2\b \cf8 self
  14513. \f0\b0 \cf4 .selectMoreView.hidden =
  14514. \f2\b \cf8 YES
  14515. \f0\b0 \cf4 ;\
  14516. \
  14517. [
  14518. \f2\b \cf8 self
  14519. \f0\b0 \cf4 .gotoBackBtn setBackgroundImage:[UIImage imageNamed:\cf6 @"title_back_black_big"\cf4 ] forState:UIControlStateNormal];\
  14520. [
  14521. \f2\b \cf8 self
  14522. \f0\b0 \cf4 .gotoBackBtn setTitle:
  14523. \f2\b \cf8 nil
  14524. \f0\b0 \cf4 forState:UIControlStateNormal];\
  14525. [_selectMoreArr removeAllObjects];\
  14526. [
  14527. \f2\b \cf8 self
  14528. \f0\b0 \cf4 enableCell];\
  14529. [
  14530. \f2\b \cf8 self
  14531. \f0\b0 \cf4 .tableView reloadData];\
  14532. \f2\b \cf8 return
  14533. \f0\b0 \cf4 ;\
  14534. \}\
  14535. \
  14536. [g_notify postNotificationName:kAllVideoPlayerStopNotifaction object:
  14537. \f2\b \cf8 nil
  14538. \f0\b0 \cf4 userInfo:
  14539. \f2\b \cf8 nil
  14540. \f0\b0 \cf4 ];\
  14541. [g_notify postNotificationName:kAllAudioPlayerStopNotifaction object:
  14542. \f2\b \cf8 nil
  14543. \f0\b0 \cf4 userInfo:
  14544. \f2\b \cf8 nil
  14545. \f0\b0 \cf4 ];\
  14546. \
  14547. \f2\b \cf8 for
  14548. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < _array.count; i ++) \{\
  14549. JXMessageObject *msg = _array[i];\
  14550. \f2\b \cf8 if
  14551. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeText) \{\
  14552. JXMessageCell *cell = [_table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:\cf7 0\cf4 ]];\
  14553. \f2\b \cf8 if
  14554. \f0\b0 \cf4 ([cell isKindOfClass:[JXMessageCell
  14555. \f2\b \cf8 class
  14556. \f0\b0 \cf4 ]]) \{\
  14557. \
  14558. [cell.readDelTimer invalidate];\
  14559. cell.readDelTimer =
  14560. \f2\b \cf8 nil
  14561. \f0\b0 \cf4 ;\
  14562. \}\
  14563. \}\
  14564. \}\
  14565. \cf2 //
  14566. \f1 \'b1\'a3\'b4\'e6\'b8\'fc\'d0\'c2\'ca\'e4\'c8\'eb\'bf\'f2\'d6\'d0\'c8\'e7\'c8\'e7\'b5\'c4\'d0\'c5\'cf\'a2
  14567. \f0 \cf4 \
  14568. \f2\b \cf8 if
  14569. \f0\b0 \cf4 (_messageText.textColor != [UIColor lightGrayColor]) \{\
  14570. chatPerson.lastInput = [_messageText.textStorage getPlainString];\
  14571. [chatPerson updateLastInput];\
  14572. \}\
  14573. \cf2 // if (g_mainVC.msgVc.array.count > 0) \{\cf4 \
  14574. \cf2 // [g_mainVC.msgVc.tableView reloadRow:(int)self.rowIndex section:0];\cf4 \
  14575. \cf2 // \}\cf4 \
  14576. \
  14577. [g_notify postNotificationName:kChatViewDisappear object:
  14578. \f2\b \cf8 nil
  14579. \f0\b0 \cf4 ];\
  14580. [g_xmpp.chatingUserIds removeObject:current_chat_userId];\
  14581. current_chat_userId =
  14582. \f2\b \cf8 nil
  14583. \f0\b0 \cf4 ;\
  14584. [g_notify removeObserver:
  14585. \f2\b \cf8 self
  14586. \f0\b0 \cf4 ];\
  14587. [
  14588. \f2\b \cf8 super
  14589. \f0\b0 \cf4 actionQuit];\
  14590. \}\
  14591. -(
  14592. \f2\b \cf8 void
  14593. \f0\b0 \cf4 )\cf11 showChatView\cf4 \{\
  14594. [_wait stop];\
  14595. NSDictionary * dict = _dataDict;\
  14596. \cf2 //
  14597. \f1 \'c0\'cf\'b7\'bf\'bc\'e4
  14598. \f0 :\cf4 \
  14599. JXRoomObject *chatRoom = [[JXXMPP sharedInstance].roomPool joinRoom:[dict objectForKey:\cf6 @"jid"\cf4 ] title:[dict objectForKey:\cf6 @"name"\cf4 ] lastDate:
  14600. \f2\b \cf8 nil
  14601. \f0\b0 \cf4 isNew:
  14602. \f2\b \cf8 YES
  14603. \f0\b0 \cf4 ];\
  14604. \
  14605. roomData * roomdata = [[roomData alloc] init];\
  14606. [roomdata getDataFromDict:dict];\
  14607. \
  14608. JXChatViewController *sendView=[JXChatViewController alloc];\
  14609. sendView.title = [dict objectForKey:\cf6 @"name"\cf4 ];\
  14610. sendView.roomJid = [dict objectForKey:\cf6 @"jid"\cf4 ];\
  14611. sendView.roomId = [dict objectForKey:\cf6 @"id"\cf4 ];\
  14612. sendView.chatRoom = chatRoom;\
  14613. sendView.room = roomdata;\
  14614. \
  14615. \
  14616. JXUserObject * userObj = [[JXUserObject alloc]init];\
  14617. userObj.userId = [dict objectForKey:\cf6 @"jid"\cf4 ];\
  14618. userObj.showRead = [dict objectForKey:\cf6 @"showRead"\cf4 ];\
  14619. userObj.userNickname = [dict objectForKey:\cf6 @"name"\cf4 ];\
  14620. userObj.showMember = [dict objectForKey:\cf6 @"showMember"\cf4 ];\
  14621. userObj.allowSendCard = [dict objectForKey:\cf6 @"allowSendCard"\cf4 ];\
  14622. userObj.chatRecordTimeOut = roomdata.chatRecordTimeOut;\
  14623. userObj.talkTime = [dict objectForKey:\cf6 @"talkTime"\cf4 ];\
  14624. userObj.allowInviteFriend = [dict objectForKey:\cf6 @"allowInviteFriend"\cf4 ];\
  14625. userObj.allowUploadFile = [dict objectForKey:\cf6 @"allowUploadFile"\cf4 ];\
  14626. userObj.allowConference = [dict objectForKey:\cf6 @"allowConference"\cf4 ];\
  14627. userObj.allowSpeakCourse = [dict objectForKey:\cf6 @"allowSpeakCourse"\cf4 ];\
  14628. userObj.isNeedVerify = [dict objectForKey:\cf6 @"isNeedVerify"\cf4 ];\
  14629. \
  14630. sendView.chatPerson = userObj;\
  14631. sendView = [sendView init];\
  14632. \cf2 // [g_App.window addSubview:sendView.view];\cf4 \
  14633. [g_navigation pushViewController:sendView animated:
  14634. \f2\b \cf8 YES
  14635. \f0\b0 \cf4 ];\
  14636. \
  14637. dict =
  14638. \f2\b \cf8 nil
  14639. \f0\b0 \cf4 ;\
  14640. \}\
  14641. -(
  14642. \f2\b \cf8 void
  14643. \f0\b0 \cf4 )\cf11 onInputHello\cf4 :(JXInputVC*)sender\{\
  14644. \
  14645. JXMessageObject *msg = [[JXMessageObject alloc] init];\
  14646. msg.fromUserId = MY_USER_ID;\
  14647. msg.toUserId = [NSString stringWithFormat:\cf6 @"%@"\cf4 , [_dataDict objectForKey:\cf6 @"userId"\cf4 ]];\
  14648. msg.fromUserName = MY_USER_NAME;\
  14649. msg.toUserName = [_dataDict objectForKey:\cf6 @"nickname"\cf4 ];\
  14650. msg.timeSend = [NSDate date];\
  14651. msg.type = [NSNumber numberWithInt:kRoomRemind_NeedVerify];\
  14652. NSString *userIds = g_myself.userId;\
  14653. NSString *userNames = g_myself.userNickname;\
  14654. NSDictionary *dict = \cf7 @\{\cf4 \
  14655. \cf6 @"userIds"\cf4 : userIds,\
  14656. \cf6 @"userNames"\cf4 : userNames,\
  14657. \cf6 @"roomJid"\cf4 :
  14658. \f2\b \cf8 self
  14659. \f0\b0 \cf4 .roomJid,\
  14660. \cf6 @"reason"\cf4 : sender.inputText,\
  14661. \cf6 @"isInvite"\cf4 : [NSNumber numberWithBool:
  14662. \f2\b \cf8 YES
  14663. \f0\b0 \cf4 ]\
  14664. \cf7 \}\cf4 ;\
  14665. NSError *error =
  14666. \f2\b \cf8 nil
  14667. \f0\b0 \cf4 ;\
  14668. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];\
  14669. \
  14670. NSString *jsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];\
  14671. msg.objectId = jsonStr;\
  14672. [g_xmpp sendMessage:msg roomName:
  14673. \f2\b \cf8 nil
  14674. \f0\b0 \cf4 ];\
  14675. [
  14676. \f2\b \cf8 self
  14677. \f0\b0 \cf4 actionQuit];\
  14678. \
  14679. \cf2 // msg.fromUserId = self.roomJid;\cf4 \
  14680. \cf2 // msg.type = [NSNumber numberWithInt:kWCMessageTypeRemind];\cf4 \
  14681. \cf2 // msg.content = @"
  14682. \f1 \'c9\'ea\'c7\'eb\'d2\'d1\'b7\'a2\'cb\'cd\'b8\'f8\'c8\'ba\'d6\'f7\'a3\'ac\'c7\'eb\'b5\'c8\'b4\'fd\'c8\'ba\'d6\'f7\'c8\'b7\'c8\'cf
  14683. \f0 ";\cf4 \
  14684. \cf2 // [msg insert:self.roomJid];\cf4 \
  14685. \cf2 // if ([self.delegate respondsToSelector:@selector(needVerify:)]) \{\cf4 \
  14686. \cf2 // [self.delegate needVerify:msg];\cf4 \
  14687. \cf2 // \}\cf4 \
  14688. \}\
  14689. \
  14690. -(
  14691. \f2\b \cf8 void
  14692. \f0\b0 \cf4 )\cf11 xmppRoomDidJoin\cf4 \{\
  14693. \
  14694. NSDictionary * dict = _dataDict;\
  14695. \
  14696. JXUserObject* user = [[JXUserObject alloc]init];\
  14697. user.userNickname = [dict objectForKey:\cf6 @"name"\cf4 ];\
  14698. user.userId = [dict objectForKey:\cf6 @"jid"\cf4 ];\
  14699. user.userDescription = [dict objectForKey:\cf6 @"desc"\cf4 ];\
  14700. user.roomId = [dict objectForKey:\cf6 @"id"\cf4 ];\
  14701. user.showRead = [dict objectForKey:\cf6 @"showRead"\cf4 ];\
  14702. user.showMember = [dict objectForKey:\cf6 @"showMember"\cf4 ];\
  14703. user.allowSendCard = [dict objectForKey:\cf6 @"allowSendCard"\cf4 ];\
  14704. user.chatRecordTimeOut = [dict objectForKey:\cf6 @"chatRecordTimeOut"\cf4 ];\
  14705. user.talkTime = [dict objectForKey:\cf6 @"talkTime"\cf4 ];\
  14706. user.allowInviteFriend = [dict objectForKey:\cf6 @"allowInviteFriend"\cf4 ];\
  14707. user.allowUploadFile = [dict objectForKey:\cf6 @"allowUploadFile"\cf4 ];\
  14708. user.allowConference = [dict objectForKey:\cf6 @"allowConference"\cf4 ];\
  14709. user.allowSpeakCourse = [dict objectForKey:\cf6 @"allowSpeakCourse"\cf4 ];\
  14710. user.isNeedVerify = [dict objectForKey:\cf6 @"isNeedVerify"\cf4 ];\
  14711. \
  14712. \f2\b \cf8 if
  14713. \f0\b0 \cf4 (![user haveTheUser])\
  14714. [user insertRoom];\
  14715. \cf2 // else\cf4 \
  14716. \cf2 // [user update];\cf4 \
  14717. \cf2 // [user release];\cf4 \
  14718. \
  14719. \cf2 // [g_server addRoomMember:[dict objectForKey:@"id"] userId:g_myself.userId nickName:g_myself.userNickname toView:self];\cf4 \
  14720. [g_server roomJoin:[dict objectForKey:\cf6 @"id"\cf4 ] userId:g_myself.userId nickName:g_myself.userNickname toView:
  14721. \f2\b \cf8 self
  14722. \f0\b0 \cf4 ];\
  14723. user.groupStatus = [NSNumber numberWithInt:\cf7 0\cf4 ];\
  14724. [user updateGroupInvalid];\
  14725. \
  14726. dict =
  14727. \f2\b \cf8 nil
  14728. \f0\b0 \cf4 ;\
  14729. \cf2 // chatRoom.delegate = nil;\cf4 \
  14730. \}\
  14731. -(CGSize)\cf11 titleNoticeBtnWight\cf4 :(NSString *)titBtnW
  14732. \f2\b \cf8 and
  14733. \f0\b0 \cf4 :(UIButton *)\cf11 titBtn\cf4 \{\
  14734. CGSize titleSize = [titBtnW boundingRectWithSize:CGSizeMake(MAXFLOAT, \cf7 40\cf4 ) options:NSStringDrawingUsesLineFragmentOrigin attributes:\cf7 @\{\cf4 NSFontAttributeName:titBtn.titleLabel.font\cf7 \}\cf4 context:
  14735. \f2\b \cf8 nil
  14736. \f0\b0 \cf4 ].size;\
  14737. \
  14738. \f2\b \cf8 return
  14739. \f0\b0 \cf4 titleSize;\
  14740. \}\
  14741. \
  14742. - (
  14743. \f2\b \cf8 void
  14744. \f0\b0 \cf4 )\cf11 goundAttionTitle\cf4 :(NSMutableArray *)tempArr\{\
  14745. \
  14746. memberData *model=[tempArr lastObject];\
  14747. [
  14748. \f2\b \cf8 self
  14749. \f0\b0 \cf4 .attioPersonBtn setTitle:model.userNickName forState:UIControlStateNormal];\
  14750. _backUserId=[NSString stringWithFormat:\cf6 @"%ld"\cf4 ,model.userId];\
  14751. \
  14752. \}\
  14753. \
  14754. \cf5 #pragma mark
  14755. \f2\b \cf16 -------------------
  14756. \f4 \'b7\'fe\'ce\'f1\'c6\'f7\'b7\'b5\'bb\'d8\'ca\'fd\'be\'dd
  14757. \f2 --------------------
  14758. \f0\b0 \cf4 \
  14759. -(
  14760. \f2\b \cf8 void
  14761. \f0\b0 \cf4 ) \cf11 didServerResultSucces\cf4 :(JXConnection*)aDownload \cf11 dict\cf4 :(NSDictionary*)dict \cf11 array\cf4 :(NSArray*)array1\{\
  14762. \
  14763. \
  14764. \f2\b \cf8 if
  14765. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_UserRoomListAttenion])\
  14766. \{\
  14767. \
  14768. \
  14769. \f2\b \cf8 long
  14770. \f0\b0 \cf4 time = (
  14771. \f2\b \cf8 long
  14772. \f0\b0 \cf4 )[[NSDate date] timeIntervalSince1970];\
  14773. time = (time *\cf7 1000\cf4 + g_server.timeDifference);\
  14774. NSString *salt = [NSString stringWithFormat:\cf6 @"%ld"\cf4 , time];\
  14775. [g_server UserRoomAttentionattentionLastInfo:salt userId:g_server.myself.userId jid:_roomJid andToView:
  14776. \f2\b \cf8 self
  14777. \f0\b0 \cf4 ];\
  14778. \
  14779. \
  14780. \}\
  14781. \
  14782. \f2\b \cf8 if
  14783. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_UserRoomgetRoomAttention]||[aDownload.action isEqualToString:act_UserRoomManyLookAttenion]) \{ \cf2 //\cf4 \
  14784. \
  14785. NSArray * memberArray = [memberData fetchAllMembers:roomId];\
  14786. NSString *userArr = [dict[\cf6 @"attentionUserIds"\cf4 ] firstObject]; \cf2 //dict[@"userId"];\cf4 \
  14787. \
  14788. [memberArray enumerateObjectsUsingBlock:^(memberData *
  14789. \f2\b \cf8 _Nonnull
  14790. \f0\b0 \cf4 obj, NSUInteger idx,
  14791. \f2\b \cf8 BOOL
  14792. \f0\b0 \cf4 *
  14793. \f2\b \cf8 _Nonnull
  14794. \f0\b0 \cf4 stop) \{\
  14795. memberData *dataModel=obj;\
  14796. \f2\b \cf8 if
  14797. \f0\b0 \cf4 (dataModel.userId == [userArr longLongValue]) \{\
  14798. [_tempArrMM addObject:dataModel];\
  14799. \
  14800. \}\
  14801. \
  14802. \}];\
  14803. \
  14804. [
  14805. \f2\b \cf8 self
  14806. \f0\b0 \cf4 goundAttionTitle:_tempArrMM];\
  14807. \
  14808. \}\
  14809. \
  14810. \f2\b \cf8 if
  14811. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_UserRoomgetlastMessage]) \{\
  14812. \
  14813. \
  14814. \f2\b \cf8 if
  14815. \f0\b0 \cf4 (dict ==
  14816. \f2\b \cf8 nil
  14817. \f0\b0 \cf4 ) \{\
  14818. \f2\b \cf8 return
  14819. \f0\b0 \cf4 ;\
  14820. \}\
  14821. \
  14822. \f2\b \cf8 __block
  14823. \f0\b0 \cf4 NSUInteger aaaa=\cf7 0\cf4 ;\
  14824. \f2\b \cf8 double
  14825. \f0\b0 \cf4 time = [dict[\cf6 @"timeSend"\cf4 ] doubleValue];\
  14826. NSString *messageId = dict[\cf6 @"messageId"\cf4 ];\
  14827. NSString *sender = dict[\cf6 @"sender"\cf4 ];\
  14828. NSMutableArray *useerMsgArray = [NSMutableArray array];\
  14829. [_array enumerateObjectsUsingBlock:^(JXMessageObject *
  14830. \f2\b \cf8 _Nonnull
  14831. \f0\b0 \cf4 obj, NSUInteger idx,
  14832. \f2\b \cf8 BOOL
  14833. \f0\b0 \cf4 *
  14834. \f2\b \cf8 _Nonnull
  14835. \f0\b0 \cf4 stop) \{\
  14836. \
  14837. \f2\b \cf8 double
  14838. \f0\b0 \cf4 time2 = [obj.timeSend timeIntervalSince1970]*\cf7 1000\cf4 ;\
  14839. \f2\b \cf8 if
  14840. \f0\b0 \cf4 ([obj.fromUserId containsString:sender]) \{\
  14841. [useerMsgArray addObject:sender];\
  14842. \f2\b \cf8 if
  14843. \f0\b0 \cf4 ([obj.messageId isEqualToString:messageId]) \{\
  14844. aaaa=idx;\
  14845. \}
  14846. \f2\b \cf8 else
  14847. \f0\b0 \cf4 \{\
  14848. \cf2 // aaaa = _array.count-1;\cf4 \
  14849. \}\
  14850. \}
  14851. \f2\b \cf8 else
  14852. \f0\b0 \cf4 \{\
  14853. \cf2 // aaaa = _array.count-1;\cf4 \
  14854. \}\
  14855. \
  14856. \}];\
  14857. \
  14858. \
  14859. _selectIndexAaaa=aaaa;\
  14860. \
  14861. \f2\b \cf8 try
  14862. \f0\b0 \cf4 \{\
  14863. \
  14864. \f2\b \cf8 if
  14865. \f0\b0 \cf4 (aaaa==\cf7 0\cf4 ) \{\
  14866. [SVProgressHUD setMinimumDismissTimeInterval:\cf7 1\cf4 ];\
  14867. [SVProgressHUD showInfoWithStatus:\cf6 @"
  14868. \f1 \'ba\'c3\'d3\'d1\'d7\'ee\'bd\'fc\'ce\'b4\'b7\'a2\'d1\'d4\'a3\'a1
  14869. \f0 "\cf4 ];\
  14870. \f2\b \cf8 return
  14871. \f0\b0 \cf4 ;\
  14872. NSIndexPath * dayOne = [NSIndexPath indexPathForRow:aaaa inSection:\cf7 0\cf4 ];\
  14873. [_table scrollToRowAtIndexPath:dayOne atScrollPosition:UITableViewScrollPositionTop animated:
  14874. \f2\b \cf8 YES
  14875. \f0\b0 \cf4 ];\
  14876. [_table reloadData];;\
  14877. \}
  14878. \f2\b \cf8 else
  14879. \f0\b0 \cf4 \{\
  14880. \
  14881. NSIndexPath * dayOne = [NSIndexPath indexPathForRow:aaaa-\cf7 1\cf4 inSection:\cf7 0\cf4 ];\
  14882. [_table scrollToRowAtIndexPath:dayOne atScrollPosition:UITableViewScrollPositionTop animated:
  14883. \f2\b \cf8 YES
  14884. \f0\b0 \cf4 ];\
  14885. [_table reloadData];;\
  14886. \}\
  14887. \
  14888. \
  14889. \}
  14890. \f2\b \cf8 catch
  14891. \f0\b0 \cf4 (NSException *err) \{\
  14892. \
  14893. \}\
  14894. \
  14895. \
  14896. \
  14897. \}\
  14898. \
  14899. \f2\b \cf8 if
  14900. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_SilkPlanallByJidlist]) \{\
  14901. NSDictionary *dict = array1.firstObject;\
  14902. \cf2 // NSString *imageUrl = dict[@"imgUrl"];\cf4 \
  14903. \
  14904. \cf2 //JXSiDaiWebView\cf4 \
  14905. JXSiDaiWebView *vc = [[JXSiDaiWebView alloc] init];\
  14906. \cf2 //vc.titleName = dict[@"desc"];\cf4 \
  14907. \cf2 //vc.link = imageUrl;\cf4 \
  14908. \cf2 //vc.dict=dict;\cf4 \
  14909. vc.dataArr=[array1 mutableCopy];\
  14910. vc.sdaiArr=array1;\
  14911. [g_navigation pushViewController:vc animated:
  14912. \f2\b \cf8 YES
  14913. \f0\b0 \cf4 ];\
  14914. \}\
  14915. \
  14916. \
  14917. \f2\b \cf8 if
  14918. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_getFaceListByGrade]) \{\
  14919. \
  14920. \cf2 // NSMutableArray *tempArr=[NSMutableArray arrayWithCapacity:0];\cf4 \
  14921. \cf2 // tempArr=[array1 mutableCopy];\cf4 \
  14922. \cf2 // NSSortDescriptor *sortNumSD = [\uc0\u8730 \u8730 \u8730 sortDescriptorWithKey:@"sortNum" ascending:YES];\cf4 \
  14923. \cf2 // tempArr = [[tempArr sortedArrayUsingDescriptors:@[sortNumSD]] mutableCopy];\cf4 \
  14924. \cf2 // if (tempArr.count>=7) \{\cf4 \
  14925. \cf2 // [tempArr removeLastObject];\cf4 \
  14926. \cf2 // [tempArr removeLastObject];\cf4 \
  14927. \cf2 // array1=[tempArr copy];\cf4 \
  14928. _faceView.emojiDataArray = array1;\
  14929. \cf2 // \}\cf4 \
  14930. \
  14931. [g_notify postNotificationName:kFavoritesRefresh object:array1];\
  14932. \}\
  14933. \
  14934. \
  14935. \
  14936. \f2\b \cf8 if
  14937. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_getbubbleFontByUserId]) \{\
  14938. \
  14939. \}\
  14940. \
  14941. \
  14942. \f2\b \cf8 if
  14943. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_roomMemberGetMemberListByPage]) \{\
  14944. \
  14945. [
  14946. \f2\b \cf8 self
  14947. \f0\b0 \cf4 stopLoading];\
  14948. \
  14949. \f2\b \cf8 if
  14950. \f0\b0 \cf4 (array1.count < kRoomMemberListNum) \{\
  14951. \cf2 // self.isShowFooterPull = NO;\cf4 \
  14952. \}\
  14953. \
  14954. NSDictionary *lastDict = array1.lastObject;\
  14955. \cf2 // self.user.joinTime = [NSDate dateWithTimeIntervalSince1970:[lastDict[@"createTime"] longValue]];\cf4 \
  14956. \cf2 // [self.user updateJoinTime]; // _dataArrGetGroundPersonArr=[array1 mutableCopy];\cf4 \
  14957. \f2\b \cf8 for
  14958. \f0\b0 \cf4 (NSDictionary *member
  14959. \f2\b \cf8 in
  14960. \f0\b0 \cf4 array1) \{\
  14961. memberData* option = [[memberData alloc] init];\
  14962. [option getDataFromDict:member];\
  14963. option.roomId =
  14964. \f2\b \cf8 self
  14965. \f0\b0 \cf4 .room.roomId;\
  14966. [option insert];\
  14967. \}\
  14968. \cf2 // [self refresh];\cf4 \
  14969. \cf2 // [self refresh:nil];\cf4 \
  14970. \}\
  14971. \f2\b \cf8 if
  14972. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_roomActivityRecord]) \{\
  14973. \cf2 //
  14974. \f1 \'c7\'c0\'b5\'bd\'c1\'cb
  14975. \f0 \cf4 \
  14976. \cf2 // _activityModel.content = dict[@"resultMsg"];\cf4 \
  14977. \cf2 // _activityModel.success = YES;\cf4 \
  14978. \
  14979. [
  14980. \f2\b \cf8 self
  14981. \f0\b0 \cf4 showAdAlertViewImageString:\cf6 @"002.gif"\cf4 linkUrl:
  14982. \f2\b \cf8 nil
  14983. \f0\b0 \cf4 audio:
  14984. \f2\b \cf8 nil
  14985. \f0\b0 \cf4 duration:\cf7 1\cf4 content:
  14986. \f2\b \cf8 nil
  14987. \f0\b0 \cf4 showCancelButton:
  14988. \f2\b \cf8 NO
  14989. \f0\b0 \cf4 type:(DYAdModelTypeGifttOpenAnimation) success:
  14990. \f2\b \cf8 YES
  14991. \f0\b0 \cf4 ];\
  14992. \
  14993. \}\
  14994. \f2\b \cf8 if
  14995. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_roomgroupTypePackRed]) \{ \cf2 //act_roomgroupTypePackRed act_roomActivity\cf4 \
  14996. \cf2 //
  14997. \f1 \'c7\'c0\'b5\'bd\'c1\'cb
  14998. \f0 \cf4 \
  14999. \
  15000. _activityModel.content = dict[\cf6 @"resultObject"\cf4 ];\
  15001. _activityModel.success =
  15002. \f2\b \cf8 YES
  15003. \f0\b0 \cf4 ;\
  15004. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(\cf7 2.5\cf4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\
  15005. [
  15006. \f2\b \cf8 self
  15007. \f0\b0 \cf4 showAdAlertViewImageString:\cf6 @"002.gif"\cf4 linkUrl:
  15008. \f2\b \cf8 nil
  15009. \f0\b0 \cf4 audio:
  15010. \f2\b \cf8 nil
  15011. \f0\b0 \cf4 duration:\cf7 1\cf4 content: dict[\cf6 @"resultObject"\cf4 ] showCancelButton:
  15012. \f2\b \cf8 NO
  15013. \f0\b0 \cf4 type:(DYAdModelTypePackRedOpen) success:
  15014. \f2\b \cf8 YES
  15015. \f0\b0 \cf4 ];\
  15016. \
  15017. \});\
  15018. \
  15019. \}\
  15020. \f2\b \cf8 if
  15021. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_FaceList]) \{\
  15022. _faceView.emojiDataArray = array1;\
  15023. [g_notify postNotificationName:kFavoritesRefresh object:array1];\
  15024. \}\
  15025. \f2\b \cf8 if
  15026. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_FaceClollectList]) \{\
  15027. \cf2 // NSMutableArray *nameArray = [NSMutableArray array];\cf4 \
  15028. \cf2 // for (NSDictionary *dict in array1) \{\cf4 \
  15029. \cf2 // [nameArray addObject:dict[@"name"]];\cf4 \
  15030. \cf2 // \}\cf4 \
  15031. \cf2 // _faceView.emojiDataArray = array1;\cf4 \
  15032. \
  15033. _faceView.emojiDataArray = array1;\
  15034. [g_notify postNotificationName:kFavoritesRefresh object:array1];\
  15035. \}\
  15036. \f2\b \cf8 if
  15037. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_FaceClollectAddFaceClollect]) \{\
  15038. [
  15039. \f2\b \cf8 self
  15040. \f0\b0 \cf4 getEmojsData];\
  15041. [g_notify postNotificationName:kFavoritesRefresh object:
  15042. \f2\b \cf8 nil
  15043. \f0\b0 \cf4 ];\
  15044. \}\
  15045. \
  15046. \f2\b \cf8 if
  15047. \f0\b0 \cf4 (![aDownload.action isEqualToString:act_getRedPacket]) \{\
  15048. [_wait stop];\
  15049. \}\
  15050. \f2\b \cf8 if
  15051. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_roomJoin]) \{\
  15052. [
  15053. \f2\b \cf8 self
  15054. \f0\b0 \cf4 showChatView];\
  15055. [
  15056. \f2\b \cf8 self
  15057. \f0\b0 \cf4 actionQuit];\
  15058. \}\
  15059. \
  15060. \f2\b \cf8 if
  15061. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_UploadFile])\{\
  15062. NSDictionary* p =
  15063. \f2\b \cf8 nil
  15064. \f0\b0 \cf4 ;\
  15065. \f2\b \cf8 if
  15066. \f0\b0 \cf4 ([(NSArray *)[dict objectForKey:\cf6 @"audios"\cf4 ] count]>\cf7 0\cf4 )\
  15067. p = [[dict objectForKey:\cf6 @"audios"\cf4 ] objectAtIndex:\cf7 0\cf4 ];\
  15068. \f2\b \cf8 if
  15069. \f0\b0 \cf4 ([(NSArray *)[dict objectForKey:\cf6 @"images"\cf4 ] count]>\cf7 0\cf4 )\
  15070. p = [[dict objectForKey:\cf6 @"images"\cf4 ] objectAtIndex:\cf7 0\cf4 ];\
  15071. \f2\b \cf8 if
  15072. \f0\b0 \cf4 ([(NSArray *)[dict objectForKey:\cf6 @"videos"\cf4 ] count]>\cf7 0\cf4 )\
  15073. p = [(NSArray *)[dict objectForKey:\cf6 @"videos"\cf4 ] objectAtIndex:\cf7 0\cf4 ];\
  15074. \f2\b \cf8 if
  15075. \f0\b0 \cf4 (p==
  15076. \f2\b \cf8 nil
  15077. \f0\b0 \cf4 )\
  15078. p = [(NSArray *)[dict objectForKey:\cf6 @"others"\cf4 ] objectAtIndex:\cf7 0\cf4 ];\
  15079. \
  15080. \f2\b \cf8 if
  15081. \f0\b0 \cf4 (
  15082. \f2\b \cf8 self
  15083. \f0\b0 \cf4 .isMapMsg) \{\
  15084. [
  15085. \f2\b \cf8 self
  15086. \f0\b0 \cf4 sendMapMsgWithDict:p];\
  15087. \}
  15088. \f2\b \cf8 else
  15089. \f0\b0 \cf4 \{\
  15090. [
  15091. \f2\b \cf8 self
  15092. \f0\b0 \cf4 doSendAfterUpload:p];\
  15093. \f2\b \cf8 if
  15094. \f0\b0 \cf4 (
  15095. \f2\b \cf8 self
  15096. \f0\b0 \cf4 .isGroupMessages) \{\
  15097. [
  15098. \f2\b \cf8 self
  15099. \f0\b0 \cf4 keepOnUplpadGroupSend];\
  15100. \f2\b \cf8 if
  15101. \f0\b0 \cf4 (_sendedNum ==
  15102. \f2\b \cf8 self
  15103. \f0\b0 \cf4 .userIds.count *
  15104. \f2\b \cf8 self
  15105. \f0\b0 \cf4 .groupUploadObjArray.count) \{\
  15106. \f2\b \cf8 if
  15107. \f0\b0 \cf4 (
  15108. \f2\b \cf8 self
  15109. \f0\b0 \cf4 .waitGroupSendView) \{\
  15110. [
  15111. \f2\b \cf8 self
  15112. \f0\b0 \cf4 .waitGroupSendView removeFromSuperview];\
  15113. [g_App showAlert:Localized(\cf6 @"JX_SendComplete"\cf4 )];\
  15114. \}\
  15115. \}\
  15116. \}\
  15117. \}\
  15118. p =
  15119. \f2\b \cf8 nil
  15120. \f0\b0 \cf4 ;\
  15121. \}\
  15122. \f2\b \cf8 if
  15123. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_UploadVoiceServlet]) \{\
  15124. NSDictionary* p =
  15125. \f2\b \cf8 nil
  15126. \f0\b0 \cf4 ;\
  15127. \f2\b \cf8 if
  15128. \f0\b0 \cf4 ([(NSDictionary *)[dict objectForKey:\cf6 @"audios"\cf4 ] count]>\cf7 0\cf4 )\
  15129. p = [[dict objectForKey:\cf6 @"audios"\cf4 ] objectAtIndex:\cf7 0\cf4 ];\
  15130. [
  15131. \f2\b \cf8 self
  15132. \f0\b0 \cf4 doSendAfterUpload:p];\
  15133. p =
  15134. \f2\b \cf8 nil
  15135. \f0\b0 \cf4 ;\
  15136. \}\
  15137. \
  15138. \f2\b \cf8 if
  15139. \f0\b0 \cf4 ( [aDownload.action isEqualToString:act_UserGet] )\{\
  15140. \f2\b \cf8 if
  15141. \f0\b0 \cf4 (
  15142. \f2\b \cf8 self
  15143. \f0\b0 \cf4 .firstGetUser ||
  15144. \f2\b \cf8 self
  15145. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 ) \{\
  15146. \
  15147. \
  15148. JXUserObject* user = [[JXUserObject alloc]init];\
  15149. [user getDataFromDict:dict];\
  15150. [_room setNickNameForUser:user];\
  15151. JXUserInfoVC* vc = [JXUserInfoVC alloc];\
  15152. vc.user = user;\
  15153. vc.isJustShow =
  15154. \f2\b \cf8 self
  15155. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 ;\
  15156. vc.fromAddType = \cf7 3\cf4 ;\
  15157. vc = [vc init];\
  15158. \
  15159. JXUserBaseObj *baseObj = [[JXUserBaseObj alloc] init];\
  15160. \cf2 // self.bubbleFontId,self.gradeIndex,self.userId\cf4 \
  15161. baseObj.userId = [dict objectForKey:\cf6 @"userId"\cf4 ];\
  15162. baseObj.bubbleFontId = [dict objectForKey:\cf6 @"bubbleFontId"\cf4 ];\
  15163. baseObj.gradeIndex = [dict objectForKey:\cf6 @"gradeIndex"\cf4 ];\
  15164. [baseObj updateBubbleFontIdAndGradIndex];\
  15165. \cf2 // [g_window addSubview:vc.view];\cf4 \
  15166. \cf2 // [g_navigation pushViewController:vc animated:YES];\cf4 \
  15167. \}
  15168. \f2\b \cf8 else
  15169. \f0\b0 \cf4 \{\
  15170. JXUserBaseObj *baseObj = [[JXUserBaseObj alloc] init];\
  15171. \cf2 // self.bubbleFontId,self.gradeIndex,self.userId\cf4 \
  15172. baseObj.bubbleFontId = [dict objectForKey:\cf6 @"bubbleFontId"\cf4 ];\
  15173. baseObj.gradeIndex = [dict objectForKey:\cf6 @"gradeIndex"\cf4 ];\
  15174. baseObj.userId = [dict objectForKey:\cf6 @"userId"\cf4 ];\
  15175. [baseObj updateBubbleFontIdAndGradIndex];\
  15176. \
  15177. \f2\b \cf8 self
  15178. \f0\b0 \cf4 .isBeenBlack = [[(NSDictionary *)[dict objectForKey:\cf6 @"friends"\cf4 ] objectForKey:\cf6 @"isBeenBlack"\cf4 ] intValue];\
  15179. \f2\b \cf8 self
  15180. \f0\b0 \cf4 .friendStatus = [[(NSDictionary *)[dict objectForKey:\cf6 @"friends"\cf4 ] objectForKey:\cf6 @"status"\cf4 ] intValue];\
  15181. \f2\b \cf8 self
  15182. \f0\b0 \cf4 .isReadDelete = [[(NSDictionary *)[dict objectForKey:\cf6 @"friends"\cf4 ] objectForKey:\cf6 @"isOpenSnapchat"\cf4 ] boolValue];\
  15183. \f2\b \cf8 self
  15184. \f0\b0 \cf4 .isReadDelete = [[(NSDictionary *)[dict objectForKey:\cf6 @"friends"\cf4 ] objectForKey:\cf6 @"isOpenSnapchat"\cf4 ] boolValue];\
  15185. \f2\b \cf8 self
  15186. \f0\b0 \cf4 .firstGetUser =
  15187. \f2\b \cf8 YES
  15188. \f0\b0 \cf4 ;\
  15189. \f2\b \cf8 self
  15190. \f0\b0 \cf4 .onlinestate = [dict[\cf6 @"onlinestate"\cf4 ] boolValue];\
  15191. \f2\b \cf8 if
  15192. \f0\b0 \cf4 ([chatPerson.userId intValue]<\cf7 10100\cf4 && [chatPerson.userId intValue]>=\cf7 10000\cf4 ) \{\
  15193. \f2\b \cf8 if
  15194. \f0\b0 \cf4 (chatPerson.userNickname) \{\
  15195. \f2\b \cf8 self
  15196. \f0\b0 \cf4 .title = chatPerson.userNickname;\
  15197. \}
  15198. \f2\b \cf8 else
  15199. \f0\b0 \cf4 \{\
  15200. \f2\b \cf8 self
  15201. \f0\b0 \cf4 .title = dict[\cf6 @"nickname"\cf4 ];\
  15202. \}\
  15203. [
  15204. \f2\b \cf8 self
  15205. \f0\b0 \cf4 setAudioIconFrame];\
  15206. \}
  15207. \f2\b \cf8 else
  15208. \f0\b0 \cf4 \{\
  15209. \f2\b \cf8 if
  15210. \f0\b0 \cf4 (
  15211. \f2\b \cf8 self
  15212. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 ) \{\
  15213. \
  15214. \}
  15215. \f2\b \cf8 else
  15216. \f0\b0 \cf4 \{\
  15217. \cf2 // NSString *str = self.onlinestate ? Localized(@"JX_OnLine") : Localized(@"JX_OffLine");\cf4 \
  15218. \f2\b \cf8 if
  15219. \f0\b0 \cf4 (chatPerson.userNickname) \{\
  15220. \cf2 // self.title = [NSString stringWithFormat:@"%@(%@)",chatPerson.remarkName.length > 0 ? chatPerson.remarkName : chatPerson.userNickname,str];\cf4 \
  15221. [
  15222. \f2\b \cf8 self
  15223. \f0\b0 \cf4 setChatTitle:chatPerson.remarkName.length > \cf7 0\cf4 ? chatPerson.remarkName : chatPerson.userNickname];\
  15224. \}
  15225. \f2\b \cf8 else
  15226. \f0\b0 \cf4 \{\
  15227. \cf2 // self.title = [NSString stringWithFormat:@"%@(%@)",dict[@"nickname"],str];\cf4 \
  15228. [
  15229. \f2\b \cf8 self
  15230. \f0\b0 \cf4 setChatTitle:dict[\cf6 @"nickname"\cf4 ]];\
  15231. \}\
  15232. \}\
  15233. \
  15234. \}\
  15235. \
  15236. \
  15237. \f2\b \cf8 if
  15238. \f0\b0 \cf4 ([dict[\cf6 @"userType"\cf4 ] intValue] == \cf7 2\cf4 ) \{ \cf2 //
  15239. \f1 \'bb\'f1\'c8\'a1\'b9\'ab\'d6\'da\'ba\'c5\'b2\'cb\'b5\'a5
  15240. \f0 \cf4 \
  15241. \cf2 //
  15242. \f1 \'bb\'f1\'c8\'a1\'b9\'ab\'d6\'da\'ba\'c5\'b2\'cb\'b5\'a5
  15243. \f0 \cf4 \
  15244. [g_server getPublicMenuListWithUserId:chatPerson.userId toView:
  15245. \f2\b \cf8 self
  15246. \f0\b0 \cf4 ];\
  15247. \}\
  15248. \cf2 // else \{\cf4 \
  15249. \cf2 // //
  15250. \f1 \'bb\'f1\'c8\'a1\'b9\'ab\'d6\'da\'ba\'c5\'b2\'cb\'b5\'a5
  15251. \f0 \cf4 \
  15252. \cf2 // [g_server getPublicMenuListWithUserId:chatPerson.userId toView:self];\cf4 \
  15253. \cf2 // \}\cf4 \
  15254. \}\
  15255. \
  15256. \
  15257. \}\
  15258. \f2\b \cf8 if
  15259. \f0\b0 \cf4 ( [aDownload.action isEqualToString:act_roomGet] )\{\
  15260. \cf2 // [_room getDataFromDict:dict];\cf4 \
  15261. \cf2 //\cf4 \
  15262. \cf2 // JXRoomMemberVC* vc = [JXRoomMemberVC alloc];\cf4 \
  15263. \cf2 // vc.chatRoom = chatRoom;\cf4 \
  15264. \cf2 // vc.room = _room;\cf4 \
  15265. \cf2 // vc.delegate = self;\cf4 \
  15266. \cf2 // vc = [vc init];\cf4 \
  15267. \cf12 ///
  15268. \f3 \cf2 / [g_window addSubview:vc.view];
  15269. \f0 \cf4 \
  15270. \cf2 // [g_navigation pushViewController:vc animated:YES];\cf4 \
  15271. \
  15272. _dataDict = dict;\
  15273. \
  15274. \f2\b \cf8 if
  15275. \f0\b0 \cf4 ([[dict objectForKey:\cf6 @"s"\cf4 ] integerValue] == \cf7 1\cf4 ) \{\
  15276. \f2\b \cf8 self
  15277. \f0\b0 \cf4 .isDisable =
  15278. \f2\b \cf8 NO
  15279. \f0\b0 \cf4 ;\
  15280. \}
  15281. \f2\b \cf8 else
  15282. \f0\b0 \cf4 \{\
  15283. \f2\b \cf8 self
  15284. \f0\b0 \cf4 .isDisable =
  15285. \f2\b \cf8 YES
  15286. \f0\b0 \cf4 ;\
  15287. \}\
  15288. \
  15289. \f2\b \cf8 if
  15290. \f0\b0 \cf4 (g_xmpp.isLogined == login_status_no)\{\
  15291. \cf2 // [self hideKeyboard:NO];\cf4 \
  15292. \cf2 // [g_xmpp showXmppOfflineAlert];\cf4 \
  15293. \cf2 // return YES;\cf4 \
  15294. \
  15295. \cf2 // [g_xmpp logout];\cf4 \
  15296. [g_xmpp login];\
  15297. \
  15298. \}\
  15299. \
  15300. \cf2 // _chatRoom = [g_xmpp.roomPool joinRoom:[dict objectForKey:@"jid"] title:[dict objectForKey:@"name"] isNew:YES];\cf4 \
  15301. \
  15302. \
  15303. \f2\b \cf8 if
  15304. \f0\b0 \cf4 (
  15305. \f2\b \cf8 self
  15306. \f0\b0 \cf4 .isFirst) \{\
  15307. \f2\b \cf8 self
  15308. \f0\b0 \cf4 .isFirst =
  15309. \f2\b \cf8 NO
  15310. \f0\b0 \cf4 ;\
  15311. \
  15312. roomData * roomdata = [[roomData alloc] init];\
  15313. [roomdata getDataFromDict:dict];\
  15314. \f2\b \cf8 return
  15315. \f0\b0 \cf4 ;\
  15316. \}\
  15317. \
  15318. \
  15319. JXUserObject *user = [[JXUserObject sharedInstance] getUserById:[dict objectForKey:\cf6 @"jid"\cf4 ]];\
  15320. \f2\b \cf8 if
  15321. \f0\b0 \cf4 (user && [user.groupStatus intValue] == \cf7 0\cf4 )\{\
  15322. \
  15323. \cf2 //
  15324. \f1 \'c0\'cf\'b7\'bf\'bc\'e4
  15325. \f0 :\cf4 \
  15326. [
  15327. \f2\b \cf8 self
  15328. \f0\b0 \cf4 showChatView];\
  15329. [
  15330. \f2\b \cf8 self
  15331. \f0\b0 \cf4 actionQuit];\
  15332. \}
  15333. \f2\b \cf8 else
  15334. \f0\b0 \cf4 \{\
  15335. JXRoomObject *chatRoomObj = [[JXXMPP sharedInstance].roomPool joinRoom:[dict objectForKey:\cf6 @"jid"\cf4 ] title:[dict objectForKey:\cf6 @"name"\cf4 ] lastDate:
  15336. \f2\b \cf8 nil
  15337. \f0\b0 \cf4 isNew:
  15338. \f2\b \cf8 YES
  15339. \f0\b0 \cf4 ];\
  15340. \f2\b \cf8 BOOL
  15341. \f0\b0 \cf4 isNeedVerify = [dict[\cf6 @"isNeedVerify"\cf4 ] boolValue];\
  15342. \f2\b \cf8 long
  15343. \f0\b0 \cf4 userId = [dict[\cf6 @"userId"\cf4 ] longLongValue];\
  15344. \f2\b \cf8 if
  15345. \f0\b0 \cf4 (isNeedVerify && userId != [g_myself.userId longLongValue]) \{\
  15346. \
  15347. \f2\b \cf8 self
  15348. \f0\b0 \cf4 .roomJid = [dict objectForKey:\cf6 @"jid"\cf4 ];\
  15349. \cf2 // self.roomUserName = [dict objectForKey:@"nickname"];\cf4 \
  15350. \cf2 // self.roomUserId = [dict objectForKey:@"userId"];\cf4 \
  15351. \
  15352. JXInputVC* vc = [JXInputVC alloc];\
  15353. vc.delegate =
  15354. \f2\b \cf8 self
  15355. \f0\b0 \cf4 ;\
  15356. vc.didTouch =
  15357. \f2\b \cf8 @selector
  15358. \f0\b0 \cf4 (onInputHello:);\
  15359. vc.inputTitle = Localized(\cf6 @"JX_GroupOwnersHaveEnabled"\cf4 );\
  15360. vc.titleColor = [UIColor lightGrayColor];\
  15361. vc.titleFont = [UIFont systemFontOfSize:\cf7 13.0\cf4 ];\
  15362. vc.inputHint = Localized(\cf6 @"JX_PleaseEnterTheReason"\cf4 );\
  15363. vc = [vc init];\
  15364. [g_window addSubview:vc.view];\
  15365. \}
  15366. \f2\b \cf8 else
  15367. \f0\b0 \cf4 \{\
  15368. \
  15369. [_wait start:Localized(\cf6 @"JXAlert_AddRoomIng"\cf4 ) delay:\cf7 30\cf4 ];\
  15370. \cf2 //
  15371. \f1 \'d0\'c2\'b7\'bf\'bc\'e4
  15372. \f0 :\cf4 \
  15373. chatRoomObj.delegate =
  15374. \f2\b \cf8 self
  15375. \f0\b0 \cf4 ;\
  15376. [chatRoomObj joinRoom:
  15377. \f2\b \cf8 YES
  15378. \f0\b0 \cf4 ];\
  15379. \}\
  15380. \}\
  15381. \
  15382. \
  15383. \}\
  15384. \f2\b \cf8 if
  15385. \f0\b0 \cf4 ( [aDownload.action isEqualToString:act_roomMemberGet] )\{\
  15386. _disableSay = [[dict objectForKey:\cf6 @"talkTime"\cf4 ] longLongValue];\
  15387. _audioMeetingNo = [NSString stringWithFormat:\cf6 @"%@"\cf4 ,dict[\cf6 @"call"\cf4 ]];\
  15388. _videoMeetingNo = [NSString stringWithFormat:\cf6 @"%@"\cf4 ,dict[\cf6 @"videoMeetingNo"\cf4 ]];\
  15389. _userNickName = dict[\cf6 @"nickname"\cf4 ];\
  15390. [_table reloadData];\
  15391. \
  15392. \f2\b \cf8 if
  15393. \f0\b0 \cf4 (
  15394. \f2\b \cf8 self
  15395. \f0\b0 \cf4 .relayMsgArray.count > \cf7 0\cf4 ) \{\
  15396. \f2\b \cf8 for
  15397. \f0\b0 \cf4 (JXMessageObject *msg
  15398. \f2\b \cf8 in
  15399. \f0\b0 \cf4
  15400. \f2\b \cf8 self
  15401. \f0\b0 \cf4 .relayMsgArray) \{\
  15402. \f2\b \cf8 if
  15403. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeRedPacket) \{\
  15404. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];\
  15405. msg.content = [NSString stringWithFormat:\cf6 @"[%@]"\cf4 , Localized(\cf6 @"JXredPacket"\cf4 )];\
  15406. \}\
  15407. \f2\b \cf8 if
  15408. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeAudioMeetingInvite || [msg.type intValue] == kWCMessageTypeVideoMeetingInvite || [msg.type intValue] == kWCMessageTypeAudioChatCancel || [msg.type intValue] == kWCMessageTypeAudioChatEnd || [msg.type intValue] == kWCMessageTypeVideoChatCancel || [msg.type intValue] == kWCMessageTypeVideoChatEnd || [msg.type intValue] == kWCMessageTypeAVBusy) \{\
  15409. \
  15410. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];\
  15411. msg.content = [NSString stringWithFormat:\cf6 @"[%@]"\cf4 , Localized(\cf6 @"JX_AudioAndVideoCalls"\cf4 )];\
  15412. \}\
  15413. [
  15414. \f2\b \cf8 self
  15415. \f0\b0 \cf4 relay:msg];\
  15416. \}\
  15417. \cf2 // [self relay];\cf4 \
  15418. \}\
  15419. \}\
  15420. \f2\b \cf8 if
  15421. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_roomMemberList]) \{\
  15422. _room.roomId = roomId;\
  15423. _room.members = [array1 mutableCopy];\
  15424. \
  15425. memberData *data = [
  15426. \f2\b \cf8 self
  15427. \f0\b0 \cf4 .room getMember:g_myself.userId];\
  15428. \f2\b \cf8 if
  15429. \f0\b0 \cf4 ([data.role intValue] == \cf7 1\cf4 || [data.role intValue] == \cf7 2\cf4 ) \{\
  15430. _isAdmin =
  15431. \f2\b \cf8 YES
  15432. \f0\b0 \cf4 ;\
  15433. \}
  15434. \f2\b \cf8 else
  15435. \f0\b0 \cf4 \{\
  15436. _isAdmin =
  15437. \f2\b \cf8 NO
  15438. \f0\b0 \cf4 ;\
  15439. \}\
  15440. \f2\b \cf8 self
  15441. \f0\b0 \cf4 .title = [NSString stringWithFormat:\cf6 @"%@(%ld)"\cf4 ,
  15442. \f2\b \cf8 self
  15443. \f0\b0 \cf4 .chatPerson.userNickname, array1.count];\
  15444. [
  15445. \f2\b \cf8 self
  15446. \f0\b0 \cf4 setAudioIconFrame];\
  15447. \}\
  15448. \cf2 //
  15449. \f1 \'bb\'f1\'c8\'a1\'ba\'ec\'b0\'fc\'d0\'c5\'cf\'a2
  15450. \f0 \cf4 \
  15451. \f2\b \cf8 if
  15452. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_getRedPacket]) \{\
  15453. \cf2 // if ([dict[@"packet"][@"type"] intValue] != 3) \{\cf4 \
  15454. NSString *userId = [NSString stringWithFormat:\cf6 @"%@"\cf4 ,[(NSDictionary *)[dict objectForKey:\cf6 @"packet"\cf4 ] objectForKey:\cf6 @"userId"\cf4 ]];\
  15455. \f2\b \cf8 if
  15456. \f0\b0 \cf4 (
  15457. \f2\b \cf8 self
  15458. \f0\b0 \cf4 .roomJid.length > \cf7 0\cf4 ) \{\
  15459. \f2\b \cf8 if
  15460. \f0\b0 \cf4 (
  15461. \f2\b \cf8 self
  15462. \f0\b0 \cf4 .isDidRedPacketRemind) \{\
  15463. \f2\b \cf8 self
  15464. \f0\b0 \cf4 .isDidRedPacketRemind =
  15465. \f2\b \cf8 NO
  15466. \f0\b0 \cf4 ;\
  15467. JXredPacketDetailVC * redPacketDetailVC = [[JXredPacketDetailVC alloc]init];\
  15468. redPacketDetailVC.dataDict = [[NSDictionary alloc]initWithDictionary:dict];\
  15469. redPacketDetailVC.isGroup =
  15470. \f2\b \cf8 self
  15471. \f0\b0 \cf4 .room.roomId.length > \cf7 0\cf4 ;\
  15472. [g_navigation pushViewController:redPacketDetailVC animated:
  15473. \f2\b \cf8 YES
  15474. \f0\b0 \cf4 ];\
  15475. \}
  15476. \f2\b \cf8 else
  15477. \f0\b0 \cf4 \{\
  15478. \
  15479. \f2\b \cf8 if
  15480. \f0\b0 \cf4 ([dict[\cf6 @"packet"\cf4 ][\cf6 @"type"\cf4 ] intValue] == \cf7 3\cf4 ) \{\
  15481. \cf2 //\cf4 \
  15482. [
  15483. \f2\b \cf8 self
  15484. \f0\b0 \cf4 showRedPacket:dict];\
  15485. [
  15486. \f2\b \cf8 self
  15487. \f0\b0 \cf4 openReadPacket];\
  15488. \}
  15489. \f2\b \cf8 else
  15490. \f0\b0 \cf4 \{\
  15491. [
  15492. \f2\b \cf8 self
  15493. \f0\b0 \cf4 showRedPacket:dict];\
  15494. \}\
  15495. \}\
  15496. \
  15497. \cf2 // [g_server openRedPacket:dict[@"packet"][@"id"] toView:self];\cf4 \
  15498. \}
  15499. \f2\b \cf8 else
  15500. \f0\b0 \cf4 \{\
  15501. [_wait stop];\
  15502. \f2\b \cf8 if
  15503. \f0\b0 \cf4 ([userId isEqualToString:MY_USER_ID]) \{\
  15504. [
  15505. \f2\b \cf8 self
  15506. \f0\b0 \cf4 changeMessageRedPacketStatus:dict[\cf6 @"packet"\cf4 ][\cf6 @"id"\cf4 ]];\
  15507. [
  15508. \f2\b \cf8 self
  15509. \f0\b0 \cf4 changeMessageArrFileSize:dict[\cf6 @"packet"\cf4 ][\cf6 @"id"\cf4 ]];\
  15510. \
  15511. JXredPacketDetailVC * redPacketDetailVC = [[JXredPacketDetailVC alloc]init];\
  15512. redPacketDetailVC.dataDict = [[NSDictionary alloc]initWithDictionary:dict];\
  15513. redPacketDetailVC.isGroup =
  15514. \f2\b \cf8 self
  15515. \f0\b0 \cf4 .room.roomId.length > \cf7 0\cf4 ;\
  15516. [g_navigation pushViewController:redPacketDetailVC animated:
  15517. \f2\b \cf8 YES
  15518. \f0\b0 \cf4 ];\
  15519. \}
  15520. \f2\b \cf8 else
  15521. \f0\b0 \cf4 \{\
  15522. \cf2 // [g_server openRedPacket:dict[@"packet"][@"id"] toView:self];\cf4 \
  15523. \f2\b \cf8 if
  15524. \f0\b0 \cf4 ([dict[\cf6 @"packet"\cf4 ][\cf6 @"type"\cf4 ] intValue] == \cf7 3\cf4 ) \{\
  15525. \cf2 //\cf4 \
  15526. [
  15527. \f2\b \cf8 self
  15528. \f0\b0 \cf4 showRedPacket:dict];\
  15529. [
  15530. \f2\b \cf8 self
  15531. \f0\b0 \cf4 openReadPacket];\
  15532. \}
  15533. \f2\b \cf8 else
  15534. \f0\b0 \cf4 \{\
  15535. [
  15536. \f2\b \cf8 self
  15537. \f0\b0 \cf4 showRedPacket:dict];\
  15538. \}\
  15539. \}\
  15540. \}\
  15541. \cf2 // \}\cf4 \
  15542. \
  15543. \}\
  15544. \cf2 //
  15545. \f1 \'b4\'f2\'bf\'aa\'ba\'ec\'b0\'fc
  15546. \f0 \cf4 \
  15547. \f2\b \cf8 if
  15548. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_openRedPacket]) \{\
  15549. \
  15550. NSString *userId = [NSString stringWithFormat:\cf6 @"%@"\cf4 ,[(NSDictionary *)[dict objectForKey:\cf6 @"packet"\cf4 ] objectForKey:\cf6 @"userId"\cf4 ]];\
  15551. \
  15552. \cf2 // if ([dict[@"packet"][@"status"] intValue] == 2) \{\cf4 \
  15553. [
  15554. \f2\b \cf8 self
  15555. \f0\b0 \cf4 changeMessageRedPacketStatus:dict[\cf6 @"packet"\cf4 ][\cf6 @"id"\cf4 ]];\
  15556. [
  15557. \f2\b \cf8 self
  15558. \f0\b0 \cf4 changeMessageArrFileSize:dict[\cf6 @"packet"\cf4 ][\cf6 @"id"\cf4 ]];\
  15559. \cf2 // \}\cf4 \
  15560. [
  15561. \f2\b \cf8 self
  15562. \f0\b0 \cf4 doEndEdit];\
  15563. \cf2 // JXOpenRedPacketVC * openRedPacketVC = [[JXOpenRedPacketVC alloc]init];\cf4 \
  15564. \cf2 // openRedPacketVC.dataDict = [[NSDictionary alloc]initWithDictionary:dict];\cf4 \
  15565. \cf2 // [g_window addSubview:openRedPacketVC.view];\cf4 \
  15566. \f2\b \cf8 if
  15567. \f0\b0 \cf4 (
  15568. \f2\b \cf8 self
  15569. \f0\b0 \cf4 .roomJid.length > \cf7 0\cf4 ) \{\
  15570. JXMessageObject *msg = [[JXMessageObject alloc] init];\
  15571. msg.type = [NSNumber numberWithInt:kWCMessageTypeRemind];\
  15572. msg.timeSend = [NSDate date];\
  15573. msg.toUserId =
  15574. \f2\b \cf8 self
  15575. \f0\b0 \cf4 .chatPerson.userId;\
  15576. msg.fromUserId = MY_USER_ID;\
  15577. msg.objectId = dict[\cf6 @"packet"\cf4 ][\cf6 @"id"\cf4 ];\
  15578. NSString *userName = [NSString string];\
  15579. NSString *overStr = [NSString string];\
  15580. \f2\b \cf8 if
  15581. \f0\b0 \cf4 ([userId intValue] == [MY_USER_ID intValue]) \{\
  15582. userName = Localized(\cf6 @"JX_RedPacketOneself"\cf4 );\
  15583. \f2\b \cf8 double
  15584. \f0\b0 \cf4 over = [[NSString stringWithFormat:\cf6 @"%.2f"\cf4 ,[dict[\cf6 @"packet"\cf4 ][\cf6 @"over"\cf4 ] floatValue]] doubleValue];\
  15585. \f2\b \cf8 if
  15586. \f0\b0 \cf4 (over < \cf7 0.01\cf4 ) \{\
  15587. overStr = Localized(\cf6 @"JX_RedPacketOver"\cf4 );\
  15588. \}\
  15589. \}
  15590. \f2\b \cf8 else
  15591. \f0\b0 \cf4 \{\
  15592. userName = dict[\cf6 @"packet"\cf4 ][\cf6 @"userName"\cf4 ];\
  15593. \}\
  15594. NSString *getRedStr = [NSString stringWithFormat:Localized(\cf6 @"JX_GetRedPacketFromFriend"\cf4 ),userName];\
  15595. msg.content = [NSString stringWithFormat:\cf6 @"%@%@"\cf4 ,getRedStr,overStr];\
  15596. [msg insert:
  15597. \f2\b \cf8 self
  15598. \f0\b0 \cf4 .roomJid];\
  15599. \
  15600. \
  15601. \
  15602. [
  15603. \f2\b \cf8 self
  15604. \f0\b0 \cf4 showOneMsg:msg];\
  15605. \}\
  15606. [UIView animateWithDuration:\cf7 .3f\cf4 animations:^\{\
  15607. _redBackV.frame = CGRectMake(_redBackV.frame.origin.x, -_redBackV.frame.size.height/\cf7 2\cf4 , _redBackV.frame.size.width, _redBackV.frame.size.height);\
  15608. \} completion:^(
  15609. \f2\b \cf8 BOOL
  15610. \f0\b0 \cf4 finished) \{\
  15611. [_redBaseView removeFromSuperview];\
  15612. \
  15613. JXredPacketDetailVC * redPacketDetailVC = [[JXredPacketDetailVC alloc]init];\
  15614. redPacketDetailVC.dataDict = [[NSDictionary alloc]initWithDictionary:dict];\
  15615. redPacketDetailVC.isGroup =
  15616. \f2\b \cf8 self
  15617. \f0\b0 \cf4 .room.roomId.length > \cf7 0\cf4 ;\
  15618. [g_navigation pushViewController:redPacketDetailVC animated:
  15619. \f2\b \cf8 NO
  15620. \f0\b0 \cf4 ];\
  15621. \}];\
  15622. \
  15623. \
  15624. [g_server getUserMoenyToView:
  15625. \f2\b \cf8 self
  15626. \f0\b0 \cf4 ];\
  15627. \
  15628. \}\
  15629. \f2\b \cf8 if
  15630. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_getUserMoeny]) \{\
  15631. g_App.myMoney = [dict[\cf6 @"balance"\cf4 ] doubleValue];\
  15632. \}\
  15633. \
  15634. \cf2 //
  15635. \f1 \'c2\'fe\'d3\'ce\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc
  15636. \f0 \cf4 \
  15637. \f2\b \cf8 if
  15638. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_tigaseMsgs] || [aDownload.action isEqualToString:act_tigaseMucMsgs]) \{\
  15639. \f2\b \cf8 self
  15640. \f0\b0 \cf4 .isGetServerMsg =
  15641. \f2\b \cf8 NO
  15642. \f0\b0 \cf4 ;\
  15643. \f2\b \cf8 if
  15644. \f0\b0 \cf4 (array1.count > \cf7 0\cf4 ) \{\
  15645. NSString* s;\
  15646. \f2\b \cf8 if
  15647. \f0\b0 \cf4 (!IsStringNull(
  15648. \f2\b \cf8 self
  15649. \f0\b0 \cf4 .roomJid))\
  15650. s =
  15651. \f2\b \cf8 self
  15652. \f0\b0 \cf4 .roomJid;\
  15653. \f2\b \cf8 else
  15654. \f0\b0 \cf4 \
  15655. s = chatPerson.userId;\
  15656. [[JXMessageObject sharedInstance] getHistory:array1 userId:s];\
  15657. \
  15658. \f2\b \cf8 if
  15659. \f0\b0 \cf4 (
  15660. \f2\b \cf8 self
  15661. \f0\b0 \cf4 .roomJid && _taskList.count > \cf7 0\cf4 ) \{\
  15662. JXSynTask *task = _taskList.firstObject;\
  15663. \f2\b \cf8 if
  15664. \f0\b0 \cf4 (array1.count < PAGECOUNT) \{\
  15665. [task
  15666. \f2\b \cf8 delete
  15667. \f0\b0 \cf4 ];\
  15668. [_taskList removeObjectAtIndex: \cf7 0\cf4 ];\
  15669. \}
  15670. \f2\b \cf8 else
  15671. \f0\b0 \cf4 \{\
  15672. NSDictionary *dict = array1.lastObject;\
  15673. task.endTime = [NSDate dateWithTimeIntervalSince1970:[[dict objectForKey:kMESSAGE_TIMESEND] doubleValue] / \cf7 1000.0\cf4 ];\
  15674. \}\
  15675. \}
  15676. \f2\b \cf8 else
  15677. \f0\b0 \cf4 \{\
  15678. \f2\b \cf8 if
  15679. \f0\b0 \cf4 (
  15680. \f2\b \cf8 self
  15681. \f0\b0 \cf4 .isSyncMsg) \{\
  15682. [_array removeAllObjects];\
  15683. _page = \cf7 0\cf4 ;\
  15684. \f2\b \cf8 self
  15685. \f0\b0 \cf4 .isSyncMsg =
  15686. \f2\b \cf8 NO
  15687. \f0\b0 \cf4 ;\
  15688. \}
  15689. \f2\b \cf8 else
  15690. \f0\b0 \cf4 \{\
  15691. \
  15692. \f2\b \cf8 self
  15693. \f0\b0 \cf4 .isShowHeaderPull = array1.count >= \cf7 20\cf4 ;\
  15694. \}\
  15695. \}\
  15696. \
  15697. \f2\b \cf8 int
  15698. \f0\b0 \cf4 pageCount = \cf7 20\cf4 ;\
  15699. \f2\b \cf8 if
  15700. \f0\b0 \cf4 (
  15701. \f2\b \cf8 self
  15702. \f0\b0 \cf4 .newMsgCount > \cf7 20\cf4 ) \{\
  15703. pageCount =
  15704. \f2\b \cf8 self
  15705. \f0\b0 \cf4 .newMsgCount;\
  15706. \f2\b \cf8 self
  15707. \f0\b0 \cf4 .newMsgCount = \cf7 0\cf4 ;\
  15708. \}\
  15709. NSMutableArray *p = [[JXMessageObject sharedInstance] fetchMessageListWithUser:s byAllNum:_array.count pageCount:pageCount startTime:[NSDate dateWithTimeIntervalSince1970:\cf7 0\cf4 ]];\
  15710. \f2\b \cf8 if
  15711. \f0\b0 \cf4 (p.count > \cf7 0\cf4 ) \{\
  15712. \
  15713. \f2\b \cf8 self
  15714. \f0\b0 \cf4 .isGetServerMsg =
  15715. \f2\b \cf8 NO
  15716. \f0\b0 \cf4 ;\
  15717. \f2\b \cf8 self
  15718. \f0\b0 \cf4 .scrollLine = \cf7 0\cf4 ;\
  15719. [
  15720. \f2\b \cf8 self
  15721. \f0\b0 \cf4 refresh:
  15722. \f2\b \cf8 nil
  15723. \f0\b0 \cf4 ];\
  15724. \}\
  15725. \
  15726. \}\
  15727. \f2\b \cf8 else
  15728. \f0\b0 \cf4 \{\
  15729. \
  15730. \f2\b \cf8 if
  15731. \f0\b0 \cf4 (
  15732. \f2\b \cf8 self
  15733. \f0\b0 \cf4 .roomJid && _taskList.count > \cf7 0\cf4 ) \{\
  15734. JXSynTask *task = _taskList.firstObject;\
  15735. [task
  15736. \f2\b \cf8 delete
  15737. \f0\b0 \cf4 ];\
  15738. [_taskList removeObjectAtIndex: \cf7 0\cf4 ];\
  15739. \
  15740. \f2\b \cf8 self
  15741. \f0\b0 \cf4 .isGetServerMsg =
  15742. \f2\b \cf8 NO
  15743. \f0\b0 \cf4 ;\
  15744. \f2\b \cf8 self
  15745. \f0\b0 \cf4 .scrollLine = \cf7 0\cf4 ;\
  15746. [
  15747. \f2\b \cf8 self
  15748. \f0\b0 \cf4 refresh:
  15749. \f2\b \cf8 nil
  15750. \f0\b0 \cf4 ];\
  15751. \}
  15752. \f2\b \cf8 else
  15753. \f0\b0 \cf4 \{\
  15754. \f2\b \cf8 self
  15755. \f0\b0 \cf4 .isShowHeaderPull =
  15756. \f2\b \cf8 NO
  15757. \f0\b0 \cf4 ;\
  15758. \}\
  15759. \}\
  15760. \}\
  15761. \
  15762. \f2\b \cf8 if
  15763. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_publicMenuList]) \{\
  15764. \
  15765. _menuList = [NSArray arrayWithArray:array1];\
  15766. \f2\b \cf8 if
  15767. \f0\b0 \cf4 (_menuList.count > \cf7 0\cf4 ) \{\
  15768. [
  15769. \f2\b \cf8 self
  15770. \f0\b0 \cf4 createFooterSubViews];\
  15771. \}\
  15772. \
  15773. \}\
  15774. \
  15775. \f2\b \cf8 if
  15776. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_tigaseDeleteMsg]) \{\
  15777. \
  15778. NSDictionary *param = aDownload.params;\
  15779. \f2\b \cf8 int
  15780. \f0\b0 \cf4 type = [[NSString stringWithFormat:\cf6 @"%@"\cf4 , param[\cf6 @"deleteType"\cf4 ]] intValue];\
  15781. \
  15782. \f2\b \cf8 if
  15783. \f0\b0 \cf4 (
  15784. \f2\b \cf8 self
  15785. \f0\b0 \cf4 .withdrawIndex >= \cf7 0\cf4 ) \{\
  15786. [_wait start];\
  15787. JXMessageObject *msg = _array[
  15788. \f2\b \cf8 self
  15789. \f0\b0 \cf4 .withdrawIndex];\
  15790. \
  15791. \cf2 //
  15792. \f1 \'b7\'a2\'cb\'cd\'b3\'b7\'bb\'d8\'cf\'fb\'cf\'a2\'b5\'c4
  15793. \f0 XMPP\cf4 \
  15794. JXMessageObject *newMsg=[[JXMessageObject alloc]init];\
  15795. newMsg.timeSend = [NSDate date];\
  15796. newMsg.fromUserId = MY_USER_ID;\
  15797. \
  15798. \f2\b \cf8 if
  15799. \f0\b0 \cf4 ([
  15800. \f2\b \cf8 self
  15801. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  15802. newMsg.isGroup =
  15803. \f2\b \cf8 YES
  15804. \f0\b0 \cf4 ;\
  15805. newMsg.fromUserName = _userNickName;\
  15806. newMsg.toUserId =
  15807. \f2\b \cf8 self
  15808. \f0\b0 \cf4 .roomJid;\
  15809. \}\
  15810. \f2\b \cf8 else
  15811. \f0\b0 \cf4 \{\
  15812. newMsg.fromUserName = MY_USER_NAME;\
  15813. newMsg.toUserId = chatPerson.userId;\
  15814. \}\
  15815. newMsg.content = msg.messageId;\
  15816. newMsg.type = [NSNumber numberWithInt:type];\
  15817. newMsg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  15818. \
  15819. [g_xmpp sendMessage:newMsg roomName:
  15820. \f2\b \cf8 self
  15821. \f0\b0 \cf4 .roomJid];\cf2 //
  15822. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  15823. \f0 \cf4 \
  15824. \}\
  15825. \
  15826. \}\
  15827. \
  15828. \
  15829. \cf2 //
  15830. \f1 \'ca\'d5\'b2\'d8\'b1\'ed\'c7\'e9
  15831. \f0 \cf4 \
  15832. \f2\b \cf8 if
  15833. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_userEmojiAdd]) \{\
  15834. \f2\b \cf8 if
  15835. \f0\b0 \cf4 ([dict[\cf6 @"type"\cf4 ] intValue] == CollectTypeEmoji) \{\
  15836. [g_myself.favorites addObject:dict];\
  15837. \}\
  15838. \
  15839. [JXMyTools showTipView:Localized(\cf6 @"JX_CollectionSuccess"\cf4 )];\
  15840. \
  15841. [g_notify postNotificationName:kEmojiRefresh object:
  15842. \f2\b \cf8 nil
  15843. \f0\b0 \cf4 ];\
  15844. [g_notify postNotificationName:kFavoritesRefresh object:
  15845. \f2\b \cf8 nil
  15846. \f0\b0 \cf4 ];\
  15847. \f2\b \cf8 if
  15848. \f0\b0 \cf4 (
  15849. \f2\b \cf8 self
  15850. \f0\b0 \cf4 .isSelectMore) \{\
  15851. [
  15852. \f2\b \cf8 self
  15853. \f0\b0 \cf4 actionQuit];\
  15854. \}\
  15855. \}\
  15856. \
  15857. \cf2 //
  15858. \f1 \'c8\'a1\'cf\'fb\'ca\'d5\'b2\'d8
  15859. \f0 \cf4 \
  15860. \f2\b \cf8 if
  15861. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_userEmojiDelete]) \{\
  15862. [JXMyTools showTipView:Localized(\cf6 @"JXAlert_DeleteOK"\cf4 )];\
  15863. \}\
  15864. \
  15865. \cf2 //
  15866. \f1 \'cc\'ed\'bc\'d3\'bf\'ce\'b3\'cc
  15867. \f0 \cf4 \
  15868. \f2\b \cf8 if
  15869. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_userCourseAdd]) \{\
  15870. [JXMyTools showTipView:Localized(\cf6 @"JX_AddSuccess"\cf4 )];\
  15871. [_recordArray removeAllObjects];\
  15872. \}\
  15873. \f2\b \cf8 if
  15874. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_userCourseUpdate]) \{\
  15875. [JXMyTools showTipView:Localized(\cf6 @"JXAlert_DeleteOK"\cf4 )];\
  15876. [g_notify postNotificationName:kUpdateCourseList object:
  15877. \f2\b \cf8 nil
  15878. \f0\b0 \cf4 ];\
  15879. \}\
  15880. \
  15881. \cf2 //
  15882. \f1 \'b7\'a2\'cb\'cd\'ca\'d5\'b2\'d8
  15883. \f0
  15884. \f1 \'bf\'bd\'b1\'b4\'ce\'c4\'bc\'fe
  15885. \f0 \cf4 \
  15886. \f2\b \cf8 if
  15887. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_UploadCopyFileServlet]) \{\
  15888. \f2\b \cf8 if
  15889. \f0\b0 \cf4 (
  15890. \f2\b \cf8 self
  15891. \f0\b0 \cf4 .isGroupMessages) \{\
  15892. NSMutableArray *allArray = [NSMutableArray array];\
  15893. \f2\b \cf8 if
  15894. \f0\b0 \cf4 (_collectionData.content && _collectionData.content.length > \cf7 0\cf4 ) \{\
  15895. [allArray addObject:_collectionData.content];\
  15896. \}\
  15897. [allArray addObject:dict[\cf6 @"url"\cf4 ]];\
  15898. \f2\b \cf8 self
  15899. \f0\b0 \cf4 .groupSendMsgArray = allArray;\
  15900. [
  15901. \f2\b \cf8 self
  15902. \f0\b0 \cf4 collectionMsgSendAll:allArray];\
  15903. \}
  15904. \f2\b \cf8 else
  15905. \f0\b0 \cf4 \{\
  15906. [
  15907. \f2\b \cf8 self
  15908. \f0\b0 \cf4 collectionMsgSend:dict[\cf6 @"url"\cf4 ] isFile:
  15909. \f2\b \cf8 YES
  15910. \f0\b0 \cf4 ];\
  15911. \}\
  15912. \}\
  15913. \
  15914. \cf2 //
  15915. \f1 \'bb\'f1\'c8\'a1\'d2\'f4\'ca\'d3\'c6\'b5\'b7\'fe\'ce\'f1\'c6\'f7\'b5\'d8\'d6\'b7
  15916. \f0 \cf4 \
  15917. \f2\b \cf8 if
  15918. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_UserOpenMeet]) \{\
  15919. \f2\b \cf8 self
  15920. \f0\b0 \cf4 .meetUrl = [dict objectForKey:\cf6 @"meetUrl"\cf4 ];\
  15921. \f2\b \cf8 if
  15922. \f0\b0 \cf4 (
  15923. \f2\b \cf8 self
  15924. \f0\b0 \cf4 .isAudioMeeting) \{\
  15925. [
  15926. \f2\b \cf8 self
  15927. \f0\b0 \cf4 onChatAudio:
  15928. \f2\b \cf8 nil
  15929. \f0\b0 \cf4 ];\
  15930. \}
  15931. \f2\b \cf8 else
  15932. \f0\b0 \cf4 \{\
  15933. [
  15934. \f2\b \cf8 self
  15935. \f0\b0 \cf4 onChatVideo:
  15936. \f2\b \cf8 nil
  15937. \f0\b0 \cf4 ];\
  15938. \}\
  15939. \}\
  15940. \
  15941. \cf2 //
  15942. \f1 \'bb\'f1\'c8\'a1\'c8\'ba\'d6\'fa\'ca\'d6
  15943. \f0 \cf4 \
  15944. \f2\b \cf8 if
  15945. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_queryGroupHelper]) \{\
  15946. NSMutableArray *arr = [[NSMutableArray alloc] init];\
  15947. \f2\b \cf8 for
  15948. \f0\b0 \cf4 (
  15949. \f2\b \cf8 int
  15950. \f0\b0 \cf4 i = \cf7 0\cf4 ; i < array1.count; i++) \{\
  15951. JXGroupHeplerModel *model = [[JXGroupHeplerModel alloc] init];\
  15952. [model getDataWithDict:array1[i]];\
  15953. [arr addObject:model];\
  15954. \}\
  15955. [
  15956. \f2\b \cf8 self
  15957. \f0\b0 \cf4 setupMoreView:arr];\
  15958. \}\
  15959. \
  15960. \f2\b \cf8 if
  15961. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_UserRoomAttentionattention]) \{\
  15962. \
  15963. [SVProgressHUD showWithStatus:\cf6 @"
  15964. \f1 \'b9\'d8\'d0\'c4\'b3\'c9\'b9\'a6
  15965. \f0 "\cf4 ];\
  15966. [SVProgressHUD dismissWithDelay:\cf7 1.0\cf4 ];\
  15967. \}\
  15968. \f2\b \cf8 if
  15969. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_roomGetRoom]) \{\
  15970. \
  15971. \f2\b \cf8 BOOL
  15972. \f0\b0 \cf4 isOpen = [g_default boolForKey:kgoucaiComePush];\
  15973. \
  15974. \f2\b \cf8 BOOL
  15975. \f0\b0 \cf4 isOpen2 = [g_default boolForKey:kGuanXinComePush];\
  15976. _lotterDict=dict;\
  15977. \f2\b \cf8 if
  15978. \f0\b0 \cf4 ([dict[\cf6 @"lottery"\cf4 ] intValue]==\cf7 1\cf4 ) \{\
  15979. \
  15980. \
  15981. _biaotishifoBC=\cf7 1111\cf4 ;\
  15982. \f2\b \cf8 if
  15983. \f0\b0 \cf4 (isOpen==\cf7 1\cf4 && isOpen2==\cf7 1\cf4 ) \{\
  15984. _noticeView2.hidden =
  15985. \f2\b \cf8 YES
  15986. \f0\b0 \cf4 ;\
  15987. _noticeViewScrollView.hidden =
  15988. \f2\b \cf8 YES
  15989. \f0\b0 \cf4 ;\
  15990. \
  15991. \}
  15992. \f2\b \cf8 else
  15993. \f0\b0 \cf4
  15994. \f2\b \cf8 if
  15995. \f0\b0 \cf4 (isOpen==\cf7 1\cf4 && isOpen2==\cf7 0\cf4 ) \{\
  15996. _noticeView2.hidden =
  15997. \f2\b \cf8 YES
  15998. \f0\b0 \cf4 ;\
  15999. _noticeViewScrollView.hidden =
  16000. \f2\b \cf8 NO
  16001. \f0\b0 \cf4 ;\
  16002. _noticeViewScrollView.frame=CGRectMake(\cf7 0\cf4 , \cf7 44\cf4 , JX_SCREEN_WIDTH, \cf7 37\cf4 );\
  16003. \
  16004. \}
  16005. \f2\b \cf8 else
  16006. \f0\b0 \cf4
  16007. \f2\b \cf8 if
  16008. \f0\b0 \cf4 (isOpen==\cf7 0\cf4 && isOpen2==\cf7 1\cf4 )\{\
  16009. _noticeView2.hidden =
  16010. \f2\b \cf8 NO
  16011. \f0\b0 \cf4 ;\
  16012. \f2\b \cf8 self
  16013. \f0\b0 \cf4 .showTopView.xiaLineView.hidden=
  16014. \f2\b \cf8 YES
  16015. \f0\b0 \cf4 ;\
  16016. _noticeViewScrollView.hidden =
  16017. \f2\b \cf8 YES
  16018. \f0\b0 \cf4 ;\
  16019. \}
  16020. \f2\b \cf8 else
  16021. \f0\b0 \cf4
  16022. \f2\b \cf8 if
  16023. \f0\b0 \cf4 (isOpen==\cf7 0\cf4 && isOpen2==\cf7 0\cf4 ) \{\
  16024. _noticeViewScrollView.hidden =
  16025. \f2\b \cf8 NO
  16026. \f0\b0 \cf4 ;\
  16027. _table.contentInset=UIEdgeInsetsMake(\cf7 40\cf4 , \cf7 0\cf4 , \cf7 0\cf4 , \cf7 0\cf4 );\
  16028. \f2\b \cf8 self
  16029. \f0\b0 \cf4 .showTopView.xiaLineView.hidden=
  16030. \f2\b \cf8 YES
  16031. \f0\b0 \cf4 ;\
  16032. _noticeView2.hidden =
  16033. \f2\b \cf8 NO
  16034. \f0\b0 \cf4 ;\
  16035. _noticeViewScrollView.frame=CGRectMake(\cf7 0\cf4 , \cf7 44\cf4 +\cf7 37\cf4 , JX_SCREEN_WIDTH, \cf7 37\cf4 );\
  16036. \}\
  16037. \
  16038. \}
  16039. \f2\b \cf8 else
  16040. \f0\b0 \cf4 \{\
  16041. \
  16042. _noticeView2.hidden =
  16043. \f2\b \cf8 YES
  16044. \f0\b0 \cf4 ;\
  16045. \f2\b \cf8 if
  16046. \f0\b0 \cf4 (isOpen2==\cf7 1\cf4 ) \{\
  16047. \
  16048. _noticeViewScrollView.hidden =
  16049. \f2\b \cf8 YES
  16050. \f0\b0 \cf4 ;\
  16051. \}
  16052. \f2\b \cf8 else
  16053. \f0\b0 \cf4 \{\
  16054. \
  16055. _noticeViewScrollView.frame=CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 , JX_SCREEN_WIDTH, \cf7 37\cf4 );\
  16056. _noticeViewScrollView.hidden =
  16057. \f2\b \cf8 NO
  16058. \f0\b0 \cf4 ;\
  16059. \}\
  16060. \
  16061. \}\
  16062. \
  16063. \f2\b \cf8 self
  16064. \f0\b0 \cf4 .title = [NSString stringWithFormat:\cf6 @"%@(%ld)"\cf4 ,
  16065. \f2\b \cf8 self
  16066. \f0\b0 \cf4 .chatPerson.userNickname, [dict[\cf6 @"userSize"\cf4 ] integerValue]];\
  16067. [
  16068. \f2\b \cf8 self
  16069. \f0\b0 \cf4 setAudioIconFrame];\
  16070. \f2\b \cf8 if
  16071. \f0\b0 \cf4 ([dict objectForKey:\cf6 @"jid"\cf4 ]) \{\
  16072. \
  16073. \f2\b \cf8 if
  16074. \f0\b0 \cf4 (![dict objectForKey:\cf6 @"member"\cf4 ]) \{\
  16075. [JXMyTools showTipView:Localized(\cf6 @"JX_YouOutOfGroup"\cf4 )];\
  16076. \f2\b \cf8 self
  16077. \f0\b0 \cf4 .groupStatus = [NSNumber numberWithInt:\cf7 1\cf4 ];\
  16078. chatPerson.groupStatus = [NSNumber numberWithInt:\cf7 1\cf4 ];\
  16079. [chatPerson updateGroupInvalid];\
  16080. \}
  16081. \f2\b \cf8 else
  16082. \f0\b0 \cf4 \{\
  16083. \
  16084. \f2\b \cf8 if
  16085. \f0\b0 \cf4 ([[dict objectForKey:\cf6 @"s"\cf4 ] integerValue] != \cf7 1\cf4 ) \{\
  16086. [JXMyTools showTipView:Localized(\cf6 @"JX_GroupNotUse"\cf4 )];\
  16087. \f2\b \cf8 self
  16088. \f0\b0 \cf4 .isDisable =
  16089. \f2\b \cf8 YES
  16090. \f0\b0 \cf4 ;\
  16091. \f2\b \cf8 return
  16092. \f0\b0 \cf4 ;\
  16093. \}\
  16094. NSString *groupLevelName = [dict objectForKey:\cf6 @"groupLevelName"\cf4 ];\
  16095. _groupLevelNameArray = [groupLevelName componentsSeparatedByString:\cf6 @","\cf4 ];\
  16096. _isAttritionRecall = [[dict objectForKey:\cf6 @"isAttritionRecall"\cf4 ] boolValue];\
  16097. _isOpenIntegral = [[dict objectForKey:\cf6 @"isOpenIntegral"\cf4 ] boolValue];\
  16098. _disableSay = [[(NSDictionary *)[dict objectForKey:\cf6 @"member"\cf4 ]objectForKey:\cf6 @"talkTime"\cf4 ] longLongValue];\
  16099. \f2\b \cf8 self
  16100. \f0\b0 \cf4 .chatPerson.talkTime = [NSNumber numberWithLongLong:[[dict objectForKey:\cf6 @"talkTime"\cf4 ] longLongValue]];\
  16101. NSString *role = [(NSDictionary *)[dict objectForKey:\cf6 @"member"\cf4 ] objectForKey:\cf6 @"role"\cf4 ];\
  16102. \f2\b \cf8 if
  16103. \f0\b0 \cf4 ([role intValue] == \cf7 1\cf4 || [role intValue] == \cf7 2\cf4 ) \{\
  16104. _isAdmin =
  16105. \f2\b \cf8 YES
  16106. \f0\b0 \cf4 ;\
  16107. \}
  16108. \f2\b \cf8 else
  16109. \f0\b0 \cf4 \{\
  16110. _isAdmin =
  16111. \f2\b \cf8 NO
  16112. \f0\b0 \cf4 ;\
  16113. \}\
  16114. \f2\b \cf8 if
  16115. \f0\b0 \cf4 ([role intValue] == \cf7 1\cf4 || [role intValue] == \cf7 2\cf4 ) \{\
  16116. _isAdmin =
  16117. \f2\b \cf8 YES
  16118. \f0\b0 \cf4 ;\
  16119. \}
  16120. \f2\b \cf8 else
  16121. \f0\b0 \cf4 \{\
  16122. _isAdmin =
  16123. \f2\b \cf8 NO
  16124. \f0\b0 \cf4 ;\
  16125. \}\
  16126. \f2\b \cf8 if
  16127. \f0\b0 \cf4 (([
  16128. \f2\b \cf8 self
  16129. \f0\b0 \cf4 .chatPerson.talkTime longLongValue] > \cf7 0\cf4 && !_isAdmin) || [role intValue] == \cf7 4\cf4 ) \{\
  16130. _talkTimeLabel.hidden =
  16131. \f2\b \cf8 NO
  16132. \f0\b0 \cf4 ;\
  16133. _talkTimeLabel.text = Localized(\cf6 @"JX_TotalSilence"\cf4 );\
  16134. \f2\b \cf8 if
  16135. \f0\b0 \cf4 ([role intValue] == \cf7 4\cf4 ) \{\
  16136. _talkTimeLabel.text = Localized(\cf6 @"JX_ProhibitToSpeak"\cf4 );\
  16137. \}\
  16138. _messageText.userInteractionEnabled =
  16139. \f2\b \cf8 NO
  16140. \f0\b0 \cf4 ;\
  16141. _shareMore.enabled =
  16142. \f2\b \cf8 NO
  16143. \f0\b0 \cf4 ;\
  16144. _recordBtnLeft.enabled =
  16145. \f2\b \cf8 NO
  16146. \f0\b0 \cf4 ;\
  16147. _btnFace.enabled =
  16148. \f2\b \cf8 NO
  16149. \f0\b0 \cf4 ;\
  16150. _messageText.text =
  16151. \f2\b \cf8 nil
  16152. \f0\b0 \cf4 ;\
  16153. \}
  16154. \f2\b \cf8 else
  16155. \f0\b0 \cf4 \{\
  16156. _talkTimeLabel.hidden =
  16157. \f2\b \cf8 YES
  16158. \f0\b0 \cf4 ;\
  16159. _shareMore.enabled =
  16160. \f2\b \cf8 YES
  16161. \f0\b0 \cf4 ;\
  16162. _recordBtnLeft.enabled =
  16163. \f2\b \cf8 YES
  16164. \f0\b0 \cf4 ;\
  16165. _btnFace.enabled =
  16166. \f2\b \cf8 YES
  16167. \f0\b0 \cf4 ;\
  16168. _messageText.userInteractionEnabled =
  16169. \f2\b \cf8 YES
  16170. \f0\b0 \cf4 ;\
  16171. \}\
  16172. \
  16173. \
  16174. \f2\b \cf8 self
  16175. \f0\b0 \cf4 .chatPerson.showRead = [dict objectForKey:\cf6 @"showRead"\cf4 ];\
  16176. \f2\b \cf8 self
  16177. \f0\b0 \cf4 .room.showRead = [
  16178. \f2\b \cf8 self
  16179. \f0\b0 \cf4 .chatPerson.showRead boolValue];\
  16180. \f2\b \cf8 self
  16181. \f0\b0 \cf4 .chatPerson.allowSendCard = [dict objectForKey:\cf6 @"allowSendCard"\cf4 ];\
  16182. \f2\b \cf8 self
  16183. \f0\b0 \cf4 .room.allowSendCard = [
  16184. \f2\b \cf8 self
  16185. \f0\b0 \cf4 .chatPerson.allowSendCard boolValue];\
  16186. \f2\b \cf8 self
  16187. \f0\b0 \cf4 .chatPerson.allowConference = [dict objectForKey:\cf6 @"allowConference"\cf4 ];\
  16188. \f2\b \cf8 self
  16189. \f0\b0 \cf4 .room.allowConference = [
  16190. \f2\b \cf8 self
  16191. \f0\b0 \cf4 .chatPerson.allowConference boolValue];\
  16192. \f2\b \cf8 self
  16193. \f0\b0 \cf4 .chatPerson.allowSpeakCourse = [dict objectForKey:\cf6 @"allowSpeakCourse"\cf4 ];\
  16194. \f2\b \cf8 self
  16195. \f0\b0 \cf4 .room.allowSpeakCourse = [
  16196. \f2\b \cf8 self
  16197. \f0\b0 \cf4 .chatPerson.allowSpeakCourse boolValue];\
  16198. \f2\b \cf8 self
  16199. \f0\b0 \cf4 .chatPerson.allowUploadFile = [dict objectForKey:\cf6 @"allowUploadFile"\cf4 ];\
  16200. \f2\b \cf8 self
  16201. \f0\b0 \cf4 .room.allowUploadFile = [
  16202. \f2\b \cf8 self
  16203. \f0\b0 \cf4 .chatPerson.allowUploadFile boolValue];\
  16204. \f2\b \cf8 self
  16205. \f0\b0 \cf4 .chatPerson.isNeedVerify = [dict objectForKey:\cf6 @"isNeedVerify"\cf4 ];\
  16206. [
  16207. \f2\b \cf8 self
  16208. \f0\b0 \cf4 .chatPerson updateGroupSetting];\
  16209. \f2\b \cf8 self
  16210. \f0\b0 \cf4 .chatPerson.chatRecordTimeOut = [dict objectForKey:\cf6 @"chatRecordTimeOut"\cf4 ];\
  16211. \f2\b \cf8 self
  16212. \f0\b0 \cf4 .room.chatRecordTimeOut =
  16213. \f2\b \cf8 self
  16214. \f0\b0 \cf4 .chatPerson.chatRecordTimeOut;\
  16215. [
  16216. \f2\b \cf8 self
  16217. \f0\b0 \cf4 .chatPerson updateUserChatRecordTimeOut];\
  16218. \f2\b \cf8 self
  16219. \f0\b0 \cf4 .room.curCount = [[dict objectForKey:\cf6 @"userSize"\cf4 ] intValue];\
  16220. \f2\b \cf8 self
  16221. \f0\b0 \cf4 .room.maxCount = [[dict objectForKey:\cf6 @"maxUserSize"\cf4 ] intValue];\
  16222. \
  16223. \f2\b \cf8 if
  16224. \f0\b0 \cf4 (
  16225. \f2\b \cf8 self
  16226. \f0\b0 \cf4 .chatRoom.roomJid.length > \cf7 0\cf4 ) \{\
  16227. NSString *noticeStr = [(NSDictionary *)[dict objectForKey:\cf6 @"notice"\cf4 ] objectForKey:\cf6 @"text"\cf4 ];\
  16228. NSString *noticeTime = [(NSDictionary *)[dict objectForKey:\cf6 @"notice"\cf4 ] objectForKey:\cf6 @"time"\cf4 ];\
  16229. [
  16230. \f2\b \cf8 self
  16231. \f0\b0 \cf4 setupNoticeWithContent:noticeStr time:noticeTime];\
  16232. \f2\b \cf8 if
  16233. \f0\b0 \cf4 (noticeStr)\{\
  16234. \cf2 // [self showLatestBroadcastTitle:@"
  16235. \f1 \'d7\'ee\'d0\'c2\'b9\'ab\'b8\'e6
  16236. \f0 " message:noticeStr];\cf4 \
  16237. \}\
  16238. \}\
  16239. \
  16240. \cf2 //
  16241. \f1 \'b1\'a3\'b4\'e6\'d7\'d4\'bc\'ba
  16242. \f0 \cf4 \
  16243. NSDictionary* p = [dict objectForKey:\cf6 @"member"\cf4 ];\
  16244. memberData* option = [[memberData alloc] init];\
  16245. [option getDataFromDict:p];\
  16246. option.roomId =
  16247. \f2\b \cf8 self
  16248. \f0\b0 \cf4 .roomId;\
  16249. [option insert];\
  16250. \
  16251. \cf2 //
  16252. \f1 \'b1\'a3\'b4\'e6\'c8\'ba\'d6\'f7\'ba\'cd\'b9\'dc\'c0\'ed\'d4\'b1
  16253. \f0 \cf4 \
  16254. NSMutableArray *memb = [NSMutableArray array];\
  16255. NSArray *members = [dict objectForKey:\cf6 @"members"\cf4 ];\
  16256. \f2\b \cf8 for
  16257. \f0\b0 \cf4 (NSDictionary *member
  16258. \f2\b \cf8 in
  16259. \f0\b0 \cf4 members) \{\
  16260. memberData* option = [[memberData alloc] init];\
  16261. [option getDataFromDict:member];\
  16262. option.roomId =
  16263. \f2\b \cf8 self
  16264. \f0\b0 \cf4 .roomId;\
  16265. [option insert];\
  16266. [memb addObject:option];\
  16267. \}\
  16268. \f2\b \cf8 if
  16269. \f0\b0 \cf4 (_room.members.count <= \cf7 0\cf4 ) \{\
  16270. [_room.members addObjectsFromArray:memb];\
  16271. \}\
  16272. \
  16273. \}\
  16274. \
  16275. \cf2 //<<<<<<< .working\cf4 \
  16276. \cf2 // [_table reloadData];\cf4 \
  16277. \cf2 //\cf4 \
  16278. \cf2 //=======\cf4 \
  16279. \f2\b \cf8 if
  16280. \f0\b0 \cf4 (
  16281. \f2\b \cf8 self
  16282. \f0\b0 \cf4 .isSendRedPacket) \{\
  16283. \
  16284. JXSendRedPacketViewController * sendGiftVC = [[JXSendRedPacketViewController alloc] init];\
  16285. sendGiftVC.isRoom =
  16286. \f2\b \cf8 YES
  16287. \f0\b0 \cf4 ;\
  16288. sendGiftVC.delegate =
  16289. \f2\b \cf8 self
  16290. \f0\b0 \cf4 ;\
  16291. sendGiftVC.roomJid =
  16292. \f2\b \cf8 self
  16293. \f0\b0 \cf4 .roomJid;\
  16294. sendGiftVC.size =
  16295. \f2\b \cf8 self
  16296. \f0\b0 \cf4 .room.curCount;\
  16297. \cf2 // [g_window addSubview:sendGiftVC.view];\cf4 \
  16298. [g_navigation pushViewController:sendGiftVC animated:
  16299. \f2\b \cf8 YES
  16300. \f0\b0 \cf4 ];\
  16301. \
  16302. \f2\b \cf8 self
  16303. \f0\b0 \cf4 .isSendRedPacket =
  16304. \f2\b \cf8 NO
  16305. \f0\b0 \cf4 ;\
  16306. \}\
  16307. \}
  16308. \f2\b \cf8 else
  16309. \f0\b0 \cf4 \{\
  16310. [JXMyTools showTipView:Localized(\cf6 @"JX_GroupDissolved"\cf4 )];\
  16311. chatPerson.groupStatus = [NSNumber numberWithInt:\cf7 2\cf4 ];\
  16312. [chatPerson updateGroupInvalid];\
  16313. \
  16314. \}\
  16315. \
  16316. \}\
  16317. \
  16318. \f2\b \cf8 if
  16319. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_UserGetByAccount]) \{\
  16320. JXUserInfoVC* vc = [JXUserInfoVC alloc];\
  16321. vc.userId = dict[\cf6 @"userId"\cf4 ];\
  16322. vc.fromAddType = \cf7 1\cf4 ;\
  16323. vc = [vc init];\
  16324. [g_navigation pushViewController:vc animated:
  16325. \f2\b \cf8 YES
  16326. \f0\b0 \cf4 ];\
  16327. \}\
  16328. \cf2 // [_table reloadData];\cf4 \
  16329. \}\
  16330. \
  16331. \
  16332. -(
  16333. \f2\b \cf8 int
  16334. \f0\b0 \cf4 ) \cf11 didServerResultFailed\cf4 :(JXConnection*)aDownload \cf11 dict\cf4 :(NSDictionary*)dict\{\
  16335. [
  16336. \f2\b \cf8 self
  16337. \f0\b0 \cf4 doUploadError:aDownload];\
  16338. [_wait stop];\
  16339. \
  16340. \f2\b \cf8 if
  16341. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_UserRoomgetRoomAttention]) \{\
  16342. \
  16343. \
  16344. \}\
  16345. \
  16346. \
  16347. \f2\b \cf8 if
  16348. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_roomActivity]) \{\
  16349. \cf2 //
  16350. \f1 \'c3\'bb\'c7\'c0\'b5\'bd
  16351. \f0 \cf4 \
  16352. _activityModel.content = dict[\cf6 @"resultMsg"\cf4 ];\
  16353. _activityModel.success =
  16354. \f2\b \cf8 NO
  16355. \f0\b0 \cf4 ;\
  16356. [
  16357. \f2\b \cf8 self
  16358. \f0\b0 \cf4 showAdAlertViewImageString:\cf6 @"ad_box.gif"\cf4 linkUrl:
  16359. \f2\b \cf8 nil
  16360. \f0\b0 \cf4 audio:
  16361. \f2\b \cf8 nil
  16362. \f0\b0 \cf4 duration:\cf7 1\cf4 content:
  16363. \f2\b \cf8 nil
  16364. \f0\b0 \cf4 showCancelButton:
  16365. \f2\b \cf8 NO
  16366. \f0\b0 \cf4 type:(DYAdModelTypeGifttOpenAnimation) success:
  16367. \f2\b \cf8 NO
  16368. \f0\b0 \cf4 ];\
  16369. \}\
  16370. \cf2 //
  16371. \f1 \'d7\'d4\'bc\'ba\'b2\'e9\'bf\'b4\'ba\'ec\'b0\'fc\'bb\'f2\'d5\'df\'ba\'ec\'b0\'fc\'d2\'d1\'c1\'ec\'cd\'ea\'a3\'ac
  16372. \f0 resultCode
  16373. \f1 \'a3\'bd
  16374. \f0 0\cf4 \
  16375. \f2\b \cf8 if
  16376. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_getRedPacket]) \{\
  16377. \
  16378. [
  16379. \f2\b \cf8 self
  16380. \f0\b0 \cf4 changeMessageRedPacketStatus:dict[\cf6 @"data"\cf4 ][\cf6 @"packet"\cf4 ][\cf6 @"id"\cf4 ]];\
  16381. [
  16382. \f2\b \cf8 self
  16383. \f0\b0 \cf4 changeMessageArrFileSize:dict[\cf6 @"data"\cf4 ][\cf6 @"packet"\cf4 ][\cf6 @"id"\cf4 ]];\
  16384. \
  16385. JXredPacketDetailVC * redPacketDetailVC = [[JXredPacketDetailVC alloc]init];\
  16386. redPacketDetailVC.dataDict = [[NSDictionary alloc]initWithDictionary:dict];\
  16387. redPacketDetailVC.isGroup =
  16388. \f2\b \cf8 self
  16389. \f0\b0 \cf4 .room.roomId.length > \cf7 0\cf4 ;\
  16390. redPacketDetailVC.code = [[dict objectForKey:\cf6 @"resultCode"\cf4 ] intValue];\
  16391. \cf2 // [g_window addSubview:redPacketDetailVC.view];\cf4 \
  16392. [g_navigation pushViewController:redPacketDetailVC animated:
  16393. \f2\b \cf8 YES
  16394. \f0\b0 \cf4 ];\
  16395. \
  16396. \}\
  16397. \
  16398. \f2\b \cf8 if
  16399. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_roomGetRoom]) \{\
  16400. \
  16401. [JXMyTools showTipView:Localized(\cf6 @"JX_GroupDissolved"\cf4 )];\
  16402. chatPerson.groupStatus = [NSNumber numberWithInt:\cf7 2\cf4 ];\
  16403. [chatPerson updateGroupInvalid];\
  16404. \}\
  16405. \f2\b \cf8 if
  16406. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_userEmojiAdd]) \{\
  16407. \f2\b \cf8 return
  16408. \f0\b0 \cf4 show_error;\
  16409. \}\
  16410. \f2\b \cf8 if
  16411. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_openRedPacket]) \{\
  16412. \f2\b \cf8 self
  16413. \f0\b0 \cf4 .redPacketDict = dict;\
  16414. \f2\b \cf8 self
  16415. \f0\b0 \cf4 .openImgV.hidden =
  16416. \f2\b \cf8 YES
  16417. \f0\b0 \cf4 ;\
  16418. \f2\b \cf8 self
  16419. \f0\b0 \cf4 .seeLab.hidden =
  16420. \f2\b \cf8 NO
  16421. \f0\b0 \cf4 ;\
  16422. \f2\b \cf8 self
  16423. \f0\b0 \cf4 .tintLab.text = Localized(\cf6 @"JX_SlowHandNoRedPacket"\cf4 );\
  16424. \}\
  16425. \f2\b \cf8 if
  16426. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_UploadFile]) \{\
  16427. \f2\b \cf8 if
  16428. \f0\b0 \cf4 (
  16429. \f2\b \cf8 self
  16430. \f0\b0 \cf4 .isGroupMessages) \{\
  16431. [
  16432. \f2\b \cf8 self
  16433. \f0\b0 \cf4 keepOnUplpadGroupSend];\
  16434. \f2\b \cf8 if
  16435. \f0\b0 \cf4 (_sendedNum ==
  16436. \f2\b \cf8 self
  16437. \f0\b0 \cf4 .userIds.count *
  16438. \f2\b \cf8 self
  16439. \f0\b0 \cf4 .groupUploadObjArray.count) \{\
  16440. \f2\b \cf8 if
  16441. \f0\b0 \cf4 (
  16442. \f2\b \cf8 self
  16443. \f0\b0 \cf4 .waitGroupSendView) \{\
  16444. [
  16445. \f2\b \cf8 self
  16446. \f0\b0 \cf4 .waitGroupSendView removeFromSuperview];\
  16447. [g_App showAlert:Localized(\cf6 @"JX_SendComplete"\cf4 )];\
  16448. \}\
  16449. \}\
  16450. \}\
  16451. \}\
  16452. \
  16453. \f2\b \cf8 return
  16454. \f0\b0 \cf4 hide_error;\
  16455. \}\
  16456. \
  16457. -(
  16458. \f2\b \cf8 int
  16459. \f0\b0 \cf4 ) \cf11 didServerConnectError\cf4 :(JXConnection*)aDownload \cf11 error\cf4 :(NSError *)error\{\cf2 //error
  16460. \f1 \'ce\'aa\'bf\'d5\'ca\'b1\'a3\'ac\'b4\'fa\'b1\'ed\'b3\'ac\'ca\'b1
  16461. \f0 \cf4 \
  16462. [
  16463. \f2\b \cf8 self
  16464. \f0\b0 \cf4 doUploadError:aDownload];\
  16465. [_wait stop];\
  16466. \f2\b \cf8 return
  16467. \f0\b0 \cf4 hide_error;\
  16468. \}\
  16469. \
  16470. -(
  16471. \f2\b \cf8 void
  16472. \f0\b0 \cf4 ) \cf11 didServerConnectStart\cf4 :(JXConnection*)aDownload\{\
  16473. \f2\b \cf8 if
  16474. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_UploadFile] || [aDownload.action isEqualToString:act_publicMenuList] || [aDownload.action isEqualToString:act_tigaseMsgs] || [aDownload.action isEqualToString:act_tigaseMucMsgs])\
  16475. \f2\b \cf8 return
  16476. \f0\b0 \cf4 ;\
  16477. \f2\b \cf8 if
  16478. \f0\b0 \cf4 ([aDownload.action isEqualToString:act_tigaseDeleteMsg]) \{\
  16479. \cf2 //
  16480. \f1 \'b3\'b7\'bb\'d8\'bc\'d3\'b5\'c8\'b4\'fd\'b7\'fb\'a3\'a8\'b3\'b7\'bb\'d8\'bd\'d3\'bf\'da\'b5\'f7\'d3\'c3\'ba\'dc\'c2\'fd\'a3\'a9
  16481. \f0 \cf4 \
  16482. [_wait start];\
  16483. \}\
  16484. \}\
  16485. \
  16486. - (
  16487. \f2\b \cf8 void
  16488. \f0\b0 \cf4 )\cf11 collectionMsgSend\cf4 :(NSString *)content \cf11 isFile\cf4 :(
  16489. \f2\b \cf8 BOOL
  16490. \f0\b0 \cf4 )isFile\{\
  16491. NSString *userId =
  16492. \f2\b \cf8 self
  16493. \f0\b0 \cf4 .userIds[
  16494. \f2\b \cf8 self
  16495. \f0\b0 \cf4 .groupMessagesIndex];\
  16496. \cf2 // NSString *userName = self.userNames[self.groupMessagesIndex];\cf4 \
  16497. \
  16498. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  16499. msg.timeSend = [NSDate date];\
  16500. msg.fromUserId = MY_USER_ID;\
  16501. \f2\b \cf8 if
  16502. \f0\b0 \cf4 ([
  16503. \f2\b \cf8 self
  16504. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  16505. msg.toUserId =
  16506. \f2\b \cf8 self
  16507. \f0\b0 \cf4 .roomJid;\
  16508. msg.isGroup =
  16509. \f2\b \cf8 YES
  16510. \f0\b0 \cf4 ;\
  16511. msg.fromUserName = _userNickName;\
  16512. \}\
  16513. \f2\b \cf8 else
  16514. \f0\b0 \cf4 \{\
  16515. \f2\b \cf8 if
  16516. \f0\b0 \cf4 (
  16517. \f2\b \cf8 self
  16518. \f0\b0 \cf4 .isGroupMessages) \{\
  16519. msg.toUserId = userId;\
  16520. \}
  16521. \f2\b \cf8 else
  16522. \f0\b0 \cf4 \{\
  16523. msg.toUserId = chatPerson.userId;\
  16524. \}\
  16525. msg.isGroup =
  16526. \f2\b \cf8 NO
  16527. \f0\b0 \cf4 ;\
  16528. \}\
  16529. msg.content = content;\
  16530. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  16531. msg.isRead = [NSNumber numberWithBool:
  16532. \f2\b \cf8 NO
  16533. \f0\b0 \cf4 ];\
  16534. msg.isReadDel = [NSNumber numberWithInt:
  16535. \f2\b \cf8 self
  16536. \f0\b0 \cf4 .isReadDelete];\
  16537. \
  16538. \f2\b \cf8 switch
  16539. \f0\b0 \cf4 (_collectionData.type) \{\
  16540. \f2\b \cf8 case
  16541. \f0\b0 \cf4 \cf7 2\cf4 :\
  16542. msg.type = [NSNumber numberWithInt:kWCMessageTypeImage];\
  16543. \f2\b \cf8 break
  16544. \f0\b0 \cf4 ;\
  16545. \f2\b \cf8 case
  16546. \f0\b0 \cf4 \cf7 3\cf4 :\{\
  16547. msg.type = [NSNumber numberWithInt:kWCMessageTypeVoice];\
  16548. ObjUrlData *obj = _collectionData.audios.firstObject;\
  16549. msg.timeLen = obj.timeLen;\
  16550. \}\
  16551. \f2\b \cf8 break
  16552. \f0\b0 \cf4 ;\
  16553. \f2\b \cf8 case
  16554. \f0\b0 \cf4 \cf7 4\cf4 :\
  16555. msg.type = [NSNumber numberWithInt:kWCMessageTypeVideo];\
  16556. \f2\b \cf8 break
  16557. \f0\b0 \cf4 ;\
  16558. \f2\b \cf8 case
  16559. \f0\b0 \cf4 \cf7 5\cf4 :\{\
  16560. msg.fileName = ((ObjUrlData *)_collectionData.files.firstObject).name;\
  16561. msg.type = [NSNumber numberWithInt:kWCMessageTypeFile];\
  16562. \}\
  16563. \f2\b \cf8 break
  16564. \f0\b0 \cf4 ;\
  16565. \f2\b \cf8 case
  16566. \f0\b0 \cf4 \cf7 11\cf4 :\
  16567. msg.type = [NSNumber numberWithInt:kWCMessageTypeCustomFace];\
  16568. \f2\b \cf8 break
  16569. \f0\b0 \cf4 ;\
  16570. \f2\b \cf8 case
  16571. \f0\b0 \cf4 \cf7 12\cf4 :\
  16572. msg.type = [NSNumber numberWithInt:kWCMessageTypeEmoji];\
  16573. \f2\b \cf8 break
  16574. \f0\b0 \cf4 ;\
  16575. \f2\b \cf8 default
  16576. \f0\b0 \cf4 :\
  16577. \f2\b \cf8 break
  16578. \f0\b0 \cf4 ;\
  16579. \}\
  16580. \f2\b \cf8 if
  16581. \f0\b0 \cf4 (!isFile) \{\
  16582. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];\
  16583. \}\
  16584. \
  16585. \f2\b \cf8 if
  16586. \f0\b0 \cf4 (!isFile) \{\
  16587. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];\
  16588. \}\
  16589. \
  16590. \cf2 //
  16591. \f1 \'b7\'a2\'cd\'f9\'c4\'c4\'c0\'ef
  16592. \f0 \cf4 \
  16593. [msg insert:
  16594. \f2\b \cf8 self
  16595. \f0\b0 \cf4 .roomJid];\
  16596. \
  16597. [g_xmpp sendMessage:msg roomName:
  16598. \f2\b \cf8 self
  16599. \f0\b0 \cf4 .roomJid];\cf2 //
  16600. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  16601. \f0 \cf4 \
  16602. \
  16603. \f2\b \cf8 if
  16604. \f0\b0 \cf4 (
  16605. \f2\b \cf8 self
  16606. \f0\b0 \cf4 .isGroupMessages) \{\
  16607. \f2\b \cf8 self
  16608. \f0\b0 \cf4 .groupMessagesIndex ++;\
  16609. \f2\b \cf8 if
  16610. \f0\b0 \cf4 (msg.isLastGroupSend) \{\
  16611. \f2\b \cf8 return
  16612. \f0\b0 \cf4 ;\
  16613. \}\
  16614. \f2\b \cf8 if
  16615. \f0\b0 \cf4 (
  16616. \f2\b \cf8 self
  16617. \f0\b0 \cf4 .groupMessagesIndex <
  16618. \f2\b \cf8 self
  16619. \f0\b0 \cf4 .userIds.count) \{\
  16620. [
  16621. \f2\b \cf8 self
  16622. \f0\b0 \cf4 collectionMsgSend:content isFile:isFile];\
  16623. \}
  16624. \f2\b \cf8 else
  16625. \f0\b0 \cf4
  16626. \f2\b \cf8 if
  16627. \f0\b0 \cf4 (
  16628. \f2\b \cf8 self
  16629. \f0\b0 \cf4 .userIds)\{\
  16630. \f2\b \cf8 self
  16631. \f0\b0 \cf4 .groupMessagesIndex = \cf7 0\cf4 ;\
  16632. [g_App showAlert:Localized(\cf6 @"JX_SendComplete"\cf4 )];\
  16633. \f2\b \cf8 return
  16634. \f0\b0 \cf4 ;\
  16635. \}\
  16636. \f2\b \cf8 return
  16637. \f0\b0 \cf4 ;\
  16638. \}\
  16639. [
  16640. \f2\b \cf8 self
  16641. \f0\b0 \cf4 showOneMsg:msg];\
  16642. \}\
  16643. \
  16644. -(
  16645. \f2\b \cf8 void
  16646. \f0\b0 \cf4 )\cf11 showAtSelectMemberView\cf4 \{\
  16647. [
  16648. \f2\b \cf8 self
  16649. \f0\b0 \cf4 hideKeyboard:
  16650. \f2\b \cf8 NO
  16651. \f0\b0 \cf4 ];\
  16652. \f2\b \cf8 self
  16653. \f0\b0 \cf4 .isShowAT =
  16654. \f2\b \cf8 NO
  16655. \f0\b0 \cf4 ;\
  16656. \f2\b \cf8 if
  16657. \f0\b0 \cf4 (_room.members.count >\cf7 0\cf4 ) \{\
  16658. JXSelFriendVC * selVC = [[JXSelFriendVC alloc] init];\
  16659. \cf2 // selVC.chatRoom = chatRoom;\cf4 \
  16660. _room.roomJid = _roomJid;\
  16661. selVC.room = _room;\
  16662. selVC.type = JXSelUserTypeGroupAT;\
  16663. selVC.delegate =
  16664. \f2\b \cf8 self
  16665. \f0\b0 \cf4 ;\
  16666. selVC.didSelect =
  16667. \f2\b \cf8 @selector
  16668. \f0\b0 \cf4 (atSelectMemberDelegate:);\
  16669. \
  16670. \cf2 // [g_window addSubview:selVC.view];\cf4 \
  16671. [g_navigation pushViewController:selVC animated:
  16672. \f2\b \cf8 YES
  16673. \f0\b0 \cf4 ];\
  16674. \}
  16675. \f2\b \cf8 else
  16676. \f0\b0 \cf4 \{\
  16677. \cf2 //
  16678. \f1 \'b5\'f7\'bd\'d3\'bf\'da
  16679. \f0 \cf4 \
  16680. [g_App showAlert:Localized(\cf6 @"JX_NoGetMemberList"\cf4 )];\
  16681. \}\
  16682. \}\
  16683. \
  16684. -(
  16685. \f2\b \cf8 void
  16686. \f0\b0 \cf4 )\cf11 removeAllAt\cf4 \{\
  16687. \f2\b \cf8 for
  16688. \f0\b0 \cf4 (
  16689. \f2\b \cf8 int
  16690. \f0\b0 \cf4 i = \cf7 0\cf4 ; i<_atMemberArray.count; i++) \{\
  16691. [
  16692. \f2\b \cf8 self
  16693. \f0\b0 \cf4 removeAtTextString:_atMemberArray[i]];\
  16694. \}\
  16695. [_atMemberArray removeAllObjects];\
  16696. \}\
  16697. \
  16698. -(
  16699. \f2\b \cf8 void
  16700. \f0\b0 \cf4 )\cf11 removeAtTextString\cf4 :(memberData *)member\{\
  16701. NSString * atStr = [NSString stringWithFormat:\cf6 @"@%@"\cf4 ,member.userNickName];\
  16702. NSRange atRange = [[_messageText.textStorage string] rangeOfString:atStr];\
  16703. \f2\b \cf8 if
  16704. \f0\b0 \cf4 (atRange.location != NSNotFound) \{\
  16705. [_messageText.textStorage deleteCharactersInRange:atRange];\
  16706. \}\
  16707. \
  16708. \}\
  16709. \
  16710. -(
  16711. \f2\b \cf8 BOOL
  16712. \f0\b0 \cf4 )\cf11 hasMember\cf4 :(NSString*)theUserId\{\
  16713. \f2\b \cf8 for
  16714. \f0\b0 \cf4 (
  16715. \f2\b \cf8 int
  16716. \f0\b0 \cf4 i=\cf7 0\cf4 ;i<[_atMemberArray count];i++)\{\
  16717. memberData* p = [_atMemberArray objectAtIndex:i];\
  16718. \f2\b \cf8 if
  16719. \f0\b0 \cf4 ([theUserId intValue] == p.userId)\
  16720. \f2\b \cf8 return
  16721. \f0\b0 \cf4
  16722. \f2\b \cf8 YES
  16723. \f0\b0 \cf4 ;\
  16724. \}\
  16725. \f2\b \cf8 return
  16726. \f0\b0 \cf4
  16727. \f2\b \cf8 NO
  16728. \f0\b0 \cf4 ;\
  16729. \}\
  16730. \
  16731. -(
  16732. \f2\b \cf8 void
  16733. \f0\b0 \cf4 )\cf11 atSelectMemberDelegate\cf4 :(memberData *)member\{\
  16734. \
  16735. \
  16736. \f2\b \cf8 if
  16737. \f0\b0 \cf4 (member.idStr) \{\
  16738. [
  16739. \f2\b \cf8 self
  16740. \f0\b0 \cf4 removeAllAt];\
  16741. [_atMemberArray addObject:member];\
  16742. \}
  16743. \f2\b \cf8 else
  16744. \f0\b0 \cf4
  16745. \f2\b \cf8 if
  16746. \f0\b0 \cf4 ([
  16747. \f2\b \cf8 self
  16748. \f0\b0 \cf4 hasMember:[NSString stringWithFormat:\cf6 @"%ld"\cf4 ,member.userId]])\{\
  16749. \f2\b \cf8 if
  16750. \f0\b0 \cf4 (_messageText.selectedRange.location >=\cf7 1\cf4 && [[[_messageText.textStorage string] substringWithRange:NSMakeRange(_messageText.selectedRange.location-\cf7 1\cf4 , \cf7 1\cf4 )] isEqualToString:\cf6 @"@"\cf4 ]) \{\
  16751. [_messageText.textStorage deleteCharactersInRange:NSMakeRange(_messageText.selectedRange.location-\cf7 1\cf4 , \cf7 1\cf4 )];\
  16752. \}\
  16753. \f2\b \cf8 return
  16754. \f0\b0 \cf4 ;\
  16755. \}
  16756. \f2\b \cf8 else
  16757. \f0\b0 \cf4 \{\
  16758. \f2\b \cf8 for
  16759. \f0\b0 \cf4 (
  16760. \f2\b \cf8 int
  16761. \f0\b0 \cf4 i=\cf7 0\cf4 ; i<_atMemberArray.count; i++) \{\
  16762. memberData * member = _atMemberArray[i];\
  16763. \f2\b \cf8 if
  16764. \f0\b0 \cf4 (member.idStr)\{\
  16765. [
  16766. \f2\b \cf8 self
  16767. \f0\b0 \cf4 removeAllAt];\
  16768. \f2\b \cf8 break
  16769. \f0\b0 \cf4 ;\
  16770. \}\
  16771. \}\
  16772. [_atMemberArray addObject:member];\
  16773. \}\
  16774. \
  16775. \cf2 // [_messageText.textStorage replaceCharactersInRange:NSMakeRange(_messageText.selectedRange.location-1, 1) withString:@""];\cf4 \
  16776. \f2\b \cf8 if
  16777. \f0\b0 \cf4 (_messageText.selectedRange.location >=\cf7 1\cf4 && [[[_messageText.textStorage string] substringWithRange:NSMakeRange(_messageText.selectedRange.location-\cf7 1\cf4 , \cf7 1\cf4 )] isEqualToString:\cf6 @"@"\cf4 ]) \{\
  16778. [_messageText.textStorage deleteCharactersInRange:NSMakeRange(_messageText.selectedRange.location-\cf7 1\cf4 , \cf7 1\cf4 )];\
  16779. \}\
  16780. \
  16781. \
  16782. NSString * atStr = [NSString stringWithFormat:\cf6 @"@%@"\cf4 ,member.userNickName];\
  16783. NSMutableAttributedString* tncString = [[NSMutableAttributedString alloc] initWithString:atStr];\
  16784. [tncString addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(\cf7 0\cf4 ,atStr.length)];\
  16785. [tncString addAttribute:NSFontAttributeName value:SYSFONT(\cf7 18\cf4 ) range:NSMakeRange(\cf7 0\cf4 ,atStr.length)];\
  16786. \cf2 // if (_messageText.selectedRange.length > 0) \{\cf4 \
  16787. \cf2 // [_messageText.textStorage deleteCharactersInRange:_messageText.selectedRange];\cf4 \
  16788. \cf2 // \}\cf4 \
  16789. [_messageText.textStorage insertAttributedString:tncString atIndex:_messageText.selectedRange.location];\
  16790. tncString =
  16791. \f2\b \cf8 nil
  16792. \f0\b0 \cf4 ;\
  16793. NSRange newRange = NSMakeRange(_messageText.selectedRange.location + atStr.length, \cf7 0\cf4 );\
  16794. _messageText.selectedRange = newRange;\
  16795. \
  16796. \
  16797. NSMutableAttributedString* spaceString = [[NSMutableAttributedString alloc] initWithString:\cf6 @" "\cf4 ];\
  16798. [_messageText.textStorage insertAttributedString:spaceString atIndex:_messageText.selectedRange.location];\
  16799. newRange = NSMakeRange(_messageText.selectedRange.location + spaceString.length, \cf7 0\cf4 );\
  16800. _messageText.selectedRange = newRange;\
  16801. \cf2 // attachment.emojiSize = CGSizeMake(_messageText.font.lineHeight, _messageText.font.lineHeight);\cf4 \
  16802. \
  16803. \cf2 //\cf4 \
  16804. \cf2 //\cf4 \
  16805. \cf2 //\cf4 \
  16806. \cf2 // [_messageText.textStorage insertAttributedString:[NSAttributedString attributedStringWithAttachment:attachment] atIndex:_messageText.selectedRange.location];\cf4 \
  16807. \
  16808. \cf2 // _messageText.selectedRange = newRange;\cf4 \
  16809. _messageText.font = SYSFONT(\cf7 18\cf4 );\
  16810. \
  16811. \cf2 // [_messageText scrollRangeToVisible:NSMakeRange(_messageText.text.length, 1)];\cf4 \
  16812. \
  16813. \cf2 // [_messageText becomeFirstResponder];\cf4 \
  16814. [_messageText performSelector:
  16815. \f2\b \cf8 @selector
  16816. \f0\b0 \cf4 (becomeFirstResponder) withObject:
  16817. \f2\b \cf8 nil
  16818. \f0\b0 \cf4 afterDelay:\cf7 0.7\cf4 ];\
  16819. \}\
  16820. \
  16821. -(
  16822. \f2\b \cf8 void
  16823. \f0\b0 \cf4 )\cf11 onSelMedia\cf4 :(JXMediaObject*)p\{\
  16824. \f2\b \cf8 if
  16825. \f0\b0 \cf4 (
  16826. \f2\b \cf8 self
  16827. \f0\b0 \cf4 .isGroupMessages) \{\
  16828. \f2\b \cf8 for
  16829. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i <
  16830. \f2\b \cf8 self
  16831. \f0\b0 \cf4 .userIds.count; i ++) \{\
  16832. NSString *userId =
  16833. \f2\b \cf8 self
  16834. \f0\b0 \cf4 .userIds[i];\
  16835. \
  16836. [
  16837. \f2\b \cf8 self
  16838. \f0\b0 \cf4 sendMedia:p userId:userId];\
  16839. \cf2 // [g_server uploadFile:p.fileName validTime:self.chatPerson.chatRecordTimeOut messageId:nil toView:self];\cf4 \
  16840. \}\
  16841. \}
  16842. \f2\b \cf8 else
  16843. \f0\b0 \cf4 \{\
  16844. [
  16845. \f2\b \cf8 self
  16846. \f0\b0 \cf4 sendMedia:p userId:
  16847. \f2\b \cf8 nil
  16848. \f0\b0 \cf4 ];\
  16849. \cf2 // [g_server uploadFile:p.fileName validTime:self.chatPerson.chatRecordTimeOut messageId:nil toView:self];\cf4 \
  16850. \}\
  16851. \}\
  16852. \
  16853. -(
  16854. \f2\b \cf8 void
  16855. \f0\b0 \cf4 )\cf11 pickVideo\cf4 \{\
  16856. \
  16857. [
  16858. \f2\b \cf8 self
  16859. \f0\b0 \cf4 hideKeyboard:
  16860. \f2\b \cf8 YES
  16861. \f0\b0 \cf4 ];\
  16862. \f2\b \cf8 if
  16863. \f0\b0 \cf4 (![
  16864. \f2\b \cf8 self
  16865. \f0\b0 \cf4 checkCameraLimits]) \{\
  16866. \f2\b \cf8 return
  16867. \f0\b0 \cf4 ;\
  16868. \}\
  16869. \f2\b \cf8 if
  16870. \f0\b0 \cf4 ([
  16871. \f2\b \cf8 self
  16872. \f0\b0 \cf4 showDisableSay])\
  16873. \f2\b \cf8 return
  16874. \f0\b0 \cf4 ;\
  16875. \f2\b \cf8 if
  16876. \f0\b0 \cf4 ([
  16877. \f2\b \cf8 self
  16878. \f0\b0 \cf4 sendMsgCheck])\{\
  16879. \f2\b \cf8 return
  16880. \f0\b0 \cf4 ;\
  16881. \}\
  16882. \
  16883. JXCameraVC *vc = [[JXCameraVC alloc] init];\
  16884. vc.cameraDelegate =
  16885. \f2\b \cf8 self
  16886. \f0\b0 \cf4 ;\
  16887. \cf2 // vc.maxTime = 30;\cf4 \
  16888. [
  16889. \f2\b \cf8 self
  16890. \f0\b0 \cf4 presentViewController:vc animated:
  16891. \f2\b \cf8 YES
  16892. \f0\b0 \cf4 completion:
  16893. \f2\b \cf8 nil
  16894. \f0\b0 \cf4 ];\
  16895. \
  16896. \cf2 // if ([[JXMediaObject sharedInstance] fetch].count <= 0) \{\cf4 \
  16897. \cf2 //\cf4 \
  16898. \cf2 // myMediaVC* vc = [[myMediaVC alloc]init];\cf4 \
  16899. \cf2 // vc.delegate = self;\cf4 \
  16900. \cf2 // vc.didSelect = @selector(onSelMedia:);\cf4 \
  16901. \cf12 ///
  16902. \f3 \cf2 / [g_window addSubview:vc.view];
  16903. \f0 \cf4 \
  16904. \cf2 // [g_navigation pushViewController:vc animated:YES];\cf4 \
  16905. \cf2 // [vc onAddVideo];\cf4 \
  16906. \cf2 // \}else \{\cf4 \
  16907. \cf2 // myMediaVC* vc = [[myMediaVC alloc]init];\cf4 \
  16908. \cf2 // vc.delegate = self;\cf4 \
  16909. \cf2 // vc.didSelect = @selector(onSelMedia:);\cf4 \
  16910. \cf12 ///
  16911. \f3 \cf2 / [g_window addSubview:vc.view];
  16912. \f0 \cf4 \
  16913. \cf2 // [g_navigation pushViewController:vc animated:YES];\cf4 \
  16914. \cf2 // \}\cf4 \
  16915. \}\
  16916. \
  16917. \cf5 #pragma mark
  16918. \f2\b \cf16 -
  16919. \f4 \'d2\'95\'c6\'c1\'e4\'9b\'d1\'75\'bb\'d8\'d5\'7b
  16920. \f0\b0 \cf4 \
  16921. - (
  16922. \f2\b \cf8 void
  16923. \f0\b0 \cf4 )\cf11 cameraVC\cf4 :(JXCameraVC *)vc \cf11 didFinishWithVideoPath\cf4 :(NSString *)filePath \cf11 timeLen\cf4 :(NSInteger)timeLen \{\
  16924. \f2\b \cf8 if
  16925. \f0\b0 \cf4 ( ![[NSFileManager defaultManager] fileExistsAtPath:filePath] )\
  16926. \f2\b \cf8 return
  16927. \f0\b0 \cf4 ;\
  16928. NSString* file = filePath;\
  16929. \
  16930. JXMediaObject* p = [[JXMediaObject alloc]init];\
  16931. p.userId = g_server.myself.userId;\
  16932. p.fileName = file;\
  16933. p.isVideo = [NSNumber numberWithBool:
  16934. \f2\b \cf8 YES
  16935. \f0\b0 \cf4 ];\
  16936. p.timeLen = [NSNumber numberWithInteger:timeLen];\
  16937. \f2\b \cf8 if
  16938. \f0\b0 \cf4 (
  16939. \f2\b \cf8 self
  16940. \f0\b0 \cf4 .isGroupMessages) \{\
  16941. \cf2 // for (NSInteger i = 0; i < self.userIds.count; i ++) \{\cf4 \
  16942. \cf2 // NSString *userId = self.userIds[i];\cf4 \
  16943. \cf2 //\cf4 \
  16944. \cf2 // [self sendMedia:p userId:userId];\cf4 \
  16945. \cf12 ///
  16946. \f3 \cf2 / [g_server uploadFile:p.fileName validTime:self.chatPerson.chatRecordTimeOut messageId:nil toView:self];
  16947. \f0 \cf4 \
  16948. \cf2 // [self saveVideo:file];\cf4 \
  16949. \cf2 // \}\cf4 \
  16950. [
  16951. \f2\b \cf8 self
  16952. \f0\b0 \cf4 addWaitGroupSendViewWithMsgNum:\cf7 1\cf4 withType:groupsend_msgType_video];\
  16953. \f2\b \cf8 self
  16954. \f0\b0 \cf4 .groupUploadObjArray = [NSMutableArray arrayWithObject:p];\
  16955. _onceSendNum = \cf7 1\cf4 ;\
  16956. _isOriginal =
  16957. \f2\b \cf8 YES
  16958. \f0\b0 \cf4 ;\
  16959. [
  16960. \f2\b \cf8 self
  16961. \f0\b0 \cf4 sendMedias:
  16962. \f2\b \cf8 self
  16963. \f0\b0 \cf4 .groupUploadObjArray isSave:
  16964. \f2\b \cf8 YES
  16965. \f0\b0 \cf4 ];\
  16966. \}
  16967. \f2\b \cf8 else
  16968. \f0\b0 \cf4 \{\
  16969. [
  16970. \f2\b \cf8 self
  16971. \f0\b0 \cf4 sendMedia:p userId:
  16972. \f2\b \cf8 nil
  16973. \f0\b0 \cf4 ];\
  16974. \cf2 // [g_server uploadFile:p.fileName validTime:self.chatPerson.chatRecordTimeOut messageId:nil toView:self];\cf4 \
  16975. [
  16976. \f2\b \cf8 self
  16977. \f0\b0 \cf4 saveVideo:file];\
  16978. \}\
  16979. \}\
  16980. - (
  16981. \f2\b \cf8 void
  16982. \f0\b0 \cf4 )\cf11 saveVideo\cf4 :(NSString *)videoPath\{\
  16983. \
  16984. \f2\b \cf8 if
  16985. \f0\b0 \cf4 (videoPath) \{\
  16986. NSURL *url = [NSURL URLWithString:videoPath];\
  16987. \f2\b \cf8 BOOL
  16988. \f0\b0 \cf4 compatible = UIVideoAtPathIsCompatibleWithSavedPhotosAlbum([url path]);\
  16989. \f2\b \cf8 if
  16990. \f0\b0 \cf4 (compatible) \{\
  16991. \cf2 //
  16992. \f1 \'b1\'a3\'b4\'e6\'cf\'e0\'b2\'e1\'ba\'cb\'d0\'c4\'b4\'fa\'c2\'eb
  16993. \f0 \cf4 \
  16994. UISaveVideoAtPathToSavedPhotosAlbum([url path],
  16995. \f2\b \cf8 self
  16996. \f0\b0 \cf4 ,
  16997. \f2\b \cf8 @selector
  16998. \f0\b0 \cf4 (savedPhotoImage:didFinishSavingWithError:contextInfo:),
  16999. \f2\b \cf8 nil
  17000. \f0\b0 \cf4 );\
  17001. \}\
  17002. \}\
  17003. \}\
  17004. \
  17005. \
  17006. \cf2 //
  17007. \f1 \'b1\'a3\'b4\'e6\'ca\'d3\'c6\'b5\'cd\'ea\'b3\'c9\'d6\'ae\'ba\'f3\'b5\'c4\'bb\'d8\'b5\'f7
  17008. \f0 \cf4 \
  17009. - (
  17010. \f2\b \cf8 void
  17011. \f0\b0 \cf4 ) \cf11 savedPhotoImage\cf4 :(UIImage*)image \cf11 didFinishSavingWithError\cf4 : (NSError *)error \cf11 contextInfo\cf4 : (
  17012. \f2\b \cf8 void
  17013. \f0\b0 \cf4 *)contextInfo \{\
  17014. \f2\b \cf8 if
  17015. \f0\b0 \cf4 (error) \{\
  17016. NSLog(\cf6 @"
  17017. \f1 \'b1\'a3\'b4\'e6\'ca\'d3\'c6\'b5\'ca\'a7\'b0\'dc
  17018. \f0 %@"\cf4 , error.localizedDescription);\
  17019. \}\
  17020. \f2\b \cf8 else
  17021. \f0\b0 \cf4 \{\
  17022. NSLog(\cf6 @"
  17023. \f1 \'b1\'a3\'b4\'e6\'ca\'d3\'c6\'b5\'b3\'c9\'b9\'a6
  17024. \f0 "\cf4 );\
  17025. \}\
  17026. \}\
  17027. \
  17028. -(
  17029. \f2\b \cf8 void
  17030. \f0\b0 \cf4 )\cf11 onChatSip\cf4 \{\
  17031. [
  17032. \f2\b \cf8 self
  17033. \f0\b0 \cf4 hideKeyboard:
  17034. \f2\b \cf8 YES
  17035. \f0\b0 \cf4 ];\
  17036. \cf2 // if (![self checkCameraLimits]) \{\cf4 \
  17037. \cf2 // return;\cf4 \
  17038. \cf2 // \}\cf4 \
  17039. \f2\b \cf8 if
  17040. \f0\b0 \cf4 ([
  17041. \f2\b \cf8 self
  17042. \f0\b0 \cf4 showDisableSay])\
  17043. \f2\b \cf8 return
  17044. \f0\b0 \cf4 ;\
  17045. \f2\b \cf8 if
  17046. \f0\b0 \cf4 ([
  17047. \f2\b \cf8 self
  17048. \f0\b0 \cf4 sendMsgCheck])\{\
  17049. \f2\b \cf8 return
  17050. \f0\b0 \cf4 ;\
  17051. \}\
  17052. \
  17053. NSString *str1;\
  17054. NSString *str2;\
  17055. NSString *str3;\
  17056. JXActionSheetVC *actionVC;\
  17057. \f2\b \cf8 if
  17058. \f0\b0 \cf4 (
  17059. \f2\b \cf8 self
  17060. \f0\b0 \cf4 .roomJid.length > \cf7 0\cf4 ) \{\
  17061. memberData *data = [
  17062. \f2\b \cf8 self
  17063. \f0\b0 \cf4 .room getMember:g_myself.userId];\
  17064. \
  17065. \f2\b \cf8 if
  17066. \f0\b0 \cf4 (!_isAdmin && ![
  17067. \f2\b \cf8 self
  17068. \f0\b0 \cf4 .chatPerson.allowConference boolValue]) \{\
  17069. [g_App showAlert:Localized(\cf6 @"JX_DisabledAudioAndVideo"\cf4 )];\
  17070. \f2\b \cf8 return
  17071. \f0\b0 \cf4 ;\
  17072. \}\
  17073. str1 = Localized(\cf6 @"JXSettingVC_VideoMeeting"\cf4 );\
  17074. str2 = Localized(\cf6 @"JX_Meeting"\cf4 );\
  17075. str3 = Localized(\cf6 @"JX_WalkieTalkie"\cf4 );\
  17076. \cf2 //actionVC = [[JXActionSheetVC alloc] initWithImages:@[@"meeting_talk",@"meeting_tel",@"meeting_video"] names:@[str3,str2,str1]];\cf4 \
  17077. \cf2 // actionVC = [[JXActionSheetVC alloc] initWithImages:@[@"meeting_video"] names:@[str1]];\cf4 \
  17078. \
  17079. [
  17080. \f2\b \cf8 self
  17081. \f0\b0 \cf4 actionSheet:actionVC didButtonWithIndex:\cf7 2\cf4 ];\
  17082. \}
  17083. \f2\b \cf8 else
  17084. \f0\b0 \cf4 \{\
  17085. str1 = Localized(\cf6 @"JX_VideoChat"\cf4 );\
  17086. str2 = Localized(\cf6 @"JX_VoiceChat"\cf4 );\
  17087. actionVC = [[JXActionSheetVC alloc] initWithImages:\cf7 @[\cf6 @"meeting_tel"\cf4 ,\cf6 @"meeting_video"\cf7 ]\cf4 names:\cf7 @[\cf4 str2,str1\cf7 ]\cf4 ];\
  17088. \
  17089. \
  17090. actionVC.delegate =
  17091. \f2\b \cf8 self
  17092. \f0\b0 \cf4 ;\
  17093. [
  17094. \f2\b \cf8 self
  17095. \f0\b0 \cf4 presentViewController:actionVC animated:
  17096. \f2\b \cf8 NO
  17097. \f0\b0 \cf4 completion:
  17098. \f2\b \cf8 nil
  17099. \f0\b0 \cf4 ];\
  17100. \}\
  17101. \
  17102. \}\
  17103. \
  17104. - (
  17105. \f2\b \cf8 void
  17106. \f0\b0 \cf4 )\cf11 actionSheet\cf4 :(JXActionSheetVC *)actionSheet \cf11 didButtonWithIndex\cf4 :(NSInteger)index \{\
  17107. \f2\b \cf8 if
  17108. \f0\b0 \cf4 (actionSheet.tag == \cf7 2457\cf4 ) \{\
  17109. \f2\b \cf8 if
  17110. \f0\b0 \cf4 (index == \cf7 0\cf4 ) \{\
  17111. \
  17112. \f2\b \cf8 BOOL
  17113. \f0\b0 \cf4 flag =
  17114. \f2\b \cf8 NO
  17115. \f0\b0 \cf4 ;\
  17116. \f2\b \cf8 for
  17117. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i <
  17118. \f2\b \cf8 self
  17119. \f0\b0 \cf4 .selectMoreArr.count; i ++) \{\
  17120. JXMessageObject *msg = [
  17121. \f2\b \cf8 self
  17122. \f0\b0 \cf4 .selectMoreArr[i] copy];\
  17123. \f2\b \cf8 if
  17124. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeRedPacket || [msg.type intValue] == kWCMessageTypeTransfer) \{\
  17125. flag =
  17126. \f2\b \cf8 YES
  17127. \f0\b0 \cf4 ;\
  17128. \f2\b \cf8 break
  17129. \f0\b0 \cf4 ;\
  17130. \}\
  17131. \}\
  17132. \
  17133. \f2\b \cf8 if
  17134. \f0\b0 \cf4 (flag) \{\
  17135. \
  17136. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:
  17137. \f2\b \cf8 nil
  17138. \f0\b0 \cf4 message:\cf6 @"
  17139. \f1 \'b6\'e0\'d1\'a1\'cf\'fb\'cf\'a2\'d6\'d0\'a3\'ac\'ba\'ec\'b0\'fc\'ba\'cd\'d7\'aa\'d5\'cb\'cf\'fb\'cf\'a2\'b2\'bb\'c4\'dc\'b1\'bb\'d7\'aa\'b7\'a2
  17140. \f0 "\cf4 delegate:
  17141. \f2\b \cf8 self
  17142. \f0\b0 \cf4 cancelButtonTitle:\cf6 @"
  17143. \f1 \'c8\'a1\'cf\'fb
  17144. \f0 "\cf4 otherButtonTitles:\cf6 @"
  17145. \f1 \'d7\'aa\'b7\'a2
  17146. \f0 "\cf4 ,
  17147. \f2\b \cf8 nil
  17148. \f0\b0 \cf4 ];\
  17149. alert.tag = \cf7 3457\cf4 ;\
  17150. [alert show];\
  17151. \}
  17152. \f2\b \cf8 else
  17153. \f0\b0 \cf4 \{\
  17154. \
  17155. JXRelayVC *vc = [[JXRelayVC alloc] init];\
  17156. vc.relayMsgArray = [NSMutableArray arrayWithArray:
  17157. \f2\b \cf8 self
  17158. \f0\b0 \cf4 .selectMoreArr];\
  17159. [g_navigation pushViewController:vc animated:
  17160. \f2\b \cf8 YES
  17161. \f0\b0 \cf4 ];\
  17162. \}\
  17163. \}
  17164. \f2\b \cf8 else
  17165. \f0\b0 \cf4
  17166. \f2\b \cf8 if
  17167. \f0\b0 \cf4 (index == \cf7 1\cf4 ) \{\
  17168. JXRelayVC *vc = [[JXRelayVC alloc] init];\
  17169. \
  17170. NSMutableArray *contentArr = [NSMutableArray array];\
  17171. \f2\b \cf8 for
  17172. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i <
  17173. \f2\b \cf8 self
  17174. \f0\b0 \cf4 .selectMoreArr.count; i ++) \{\
  17175. JXMessageObject *msg = [
  17176. \f2\b \cf8 self
  17177. \f0\b0 \cf4 .selectMoreArr[i] copy];\
  17178. \
  17179. \f2\b \cf8 if
  17180. \f0\b0 \cf4 ([msg.type intValue] != kWCMessageTypeText && [msg.type intValue] != kWCMessageTypeLocation && [msg.type intValue] != kWCMessageTypeGif && [msg.type intValue] != kWCMessageTypeVideo && [msg.type intValue] != kWCMessageTypeImage && [msg.type intValue] != kWCMessageTypeCustomFace && [msg.type intValue] != kWCMessageTypeEmoji) \{\
  17181. msg.content = [msg getLastContent];\
  17182. \f2\b \cf8 switch
  17183. \f0\b0 \cf4 ([msg.type intValue]) \{\
  17184. \f2\b \cf8 case
  17185. \f0\b0 \cf4 kWCMessageTypeRedPacket: \{\
  17186. msg.content = [NSString stringWithFormat:\cf6 @"[%@]"\cf4 , Localized(\cf6 @"JXredPacket"\cf4 )];\
  17187. \}\
  17188. \f2\b \cf8 break
  17189. \f0\b0 \cf4 ;\
  17190. \f2\b \cf8 case
  17191. \f0\b0 \cf4 kWCMessageTypeAudioMeetingInvite:\
  17192. \f2\b \cf8 case
  17193. \f0\b0 \cf4 kWCMessageTypeVideoMeetingInvite:\
  17194. \f2\b \cf8 case
  17195. \f0\b0 \cf4 kWCMessageTypeAudioChatCancel:\
  17196. \f2\b \cf8 case
  17197. \f0\b0 \cf4 kWCMessageTypeAudioChatEnd:\
  17198. \f2\b \cf8 case
  17199. \f0\b0 \cf4 kWCMessageTypeVideoChatCancel:\
  17200. \f2\b \cf8 case
  17201. \f0\b0 \cf4 kWCMessageTypeVideoChatEnd:\
  17202. \f2\b \cf8 case
  17203. \f0\b0 \cf4 kWCMessageTypeAVBusy:\{\
  17204. msg.content = [NSString stringWithFormat:\cf6 @"[%@]"\cf4 , Localized(\cf6 @"JX_AudioAndVideoCalls"\cf4 )];;\
  17205. \}\
  17206. \f2\b \cf8 break
  17207. \f0\b0 \cf4 ;\
  17208. \f2\b \cf8 case
  17209. \f0\b0 \cf4 kWCMessageTypeSystemImage1:\
  17210. \f2\b \cf8 case
  17211. \f0\b0 \cf4 kWCMessageTypeSystemImage2: \{\
  17212. msg.content = [NSString stringWithFormat:\cf6 @"[%@]"\cf4 , Localized(\cf6 @"JXGraphic"\cf4 )];\
  17213. \}\
  17214. \f2\b \cf8 break
  17215. \f0\b0 \cf4 ;\
  17216. \f2\b \cf8 case
  17217. \f0\b0 \cf4 kWCMessageTypeMergeRelay:\
  17218. msg.content = [NSString stringWithFormat:\cf6 @"[%@]"\cf4 , Localized(\cf6 @"JX_ChatRecord"\cf4 )];\
  17219. \f2\b \cf8 break
  17220. \f0\b0 \cf4 ;\
  17221. \f2\b \cf8 default
  17222. \f0\b0 \cf4 :\
  17223. \f2\b \cf8 break
  17224. \f0\b0 \cf4 ;\
  17225. \}\
  17226. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];\
  17227. msg.fileName = \cf6 @""\cf4 ;\
  17228. \}\
  17229. \
  17230. SBJsonWriter * OderJsonwriter = [SBJsonWriter
  17231. \f2\b \cf8 new
  17232. \f0\b0 \cf4 ];\
  17233. NSString * jsonString = [OderJsonwriter stringWithObject:[msg toDictionary]];\
  17234. [contentArr addObject:jsonString];\
  17235. \}\
  17236. \
  17237. JXMessageObject *relayMsg = [[JXMessageObject alloc] init];\
  17238. relayMsg.type = [NSNumber numberWithInt:kWCMessageTypeMergeRelay];\
  17239. \f2\b \cf8 if
  17240. \f0\b0 \cf4 (
  17241. \f2\b \cf8 self
  17242. \f0\b0 \cf4 .roomJid.length > \cf7 0\cf4 ) \{\
  17243. relayMsg.objectId = Localized(\cf6 @"JX_GroupChatLogs"\cf4 );\
  17244. \}
  17245. \f2\b \cf8 else
  17246. \f0\b0 \cf4 \{\
  17247. relayMsg.objectId = [NSString stringWithFormat:Localized(\cf6 @"JX_GroupChat%@And%@"\cf4 ),
  17248. \f2\b \cf8 self
  17249. \f0\b0 \cf4 .chatPerson.userNickname, g_myself.userNickname];\
  17250. \}\
  17251. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:contentArr options:NSJSONWritingPrettyPrinted error:
  17252. \f2\b \cf8 nil
  17253. \f0\b0 \cf4 ];\
  17254. NSString *jsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];\
  17255. relayMsg.content = jsonStr;\
  17256. \
  17257. \
  17258. vc.relayMsgArray = [NSMutableArray arrayWithObject:relayMsg];\
  17259. [g_navigation pushViewController:vc animated:
  17260. \f2\b \cf8 YES
  17261. \f0\b0 \cf4 ];\
  17262. \}\
  17263. \}
  17264. \f2\b \cf8 else
  17265. \f0\b0 \cf4
  17266. \f2\b \cf8 if
  17267. \f0\b0 \cf4 (actionSheet.tag == \cf7 2458\cf4 ) \{\
  17268. \f2\b \cf8 if
  17269. \f0\b0 \cf4 (index == \cf7 0\cf4 ) \{\
  17270. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:
  17271. \f2\b \cf8 nil
  17272. \f0\b0 \cf4 message:Localized(\cf6 @"JX_SaveOnlyPictureMessages"\cf4 ) delegate:
  17273. \f2\b \cf8 self
  17274. \f0\b0 \cf4 cancelButtonTitle:Localized(\cf6 @"JX_Cencal"\cf4 ) otherButtonTitles:Localized(\cf6 @"JX_Save"\cf4 ),
  17275. \f2\b \cf8 nil
  17276. \f0\b0 \cf4 ];\
  17277. alert.tag = \cf7 2458\cf4 ;\
  17278. [alert show];\
  17279. \}\
  17280. \}
  17281. \f2\b \cf8 else
  17282. \f0\b0 \cf4
  17283. \f2\b \cf8 if
  17284. \f0\b0 \cf4 (actionSheet.tag == \cf7 1111\cf4 ) \{\
  17285. \f2\b \cf8 if
  17286. \f0\b0 \cf4 (index == \cf7 0\cf4 )\
  17287. [g_notify postNotificationName:kCellDeleteMsgNotifaction object:[NSNumber numberWithInt:
  17288. \f2\b \cf8 self
  17289. \f0\b0 \cf4 .indexNum]];\
  17290. \f2\b \cf8 if
  17291. \f0\b0 \cf4 (index == \cf7 1\cf4 )\
  17292. [g_notify postNotificationName:kCellResendMsgNotifaction object:[NSNumber numberWithInt:
  17293. \f2\b \cf8 self
  17294. \f0\b0 \cf4 .indexNum]];\
  17295. \}
  17296. \f2\b \cf8 else
  17297. \f0\b0 \cf4 \{\
  17298. \
  17299. \f2\b \cf8 if
  17300. \f0\b0 \cf4 (
  17301. \f2\b \cf8 self
  17302. \f0\b0 \cf4 .roomJid || [g_config.isOpenCluster integerValue] != \cf7 1\cf4 ) \{\
  17303. \
  17304. \f2\b \cf8 if
  17305. \f0\b0 \cf4 (
  17306. \f2\b \cf8 self
  17307. \f0\b0 \cf4 .roomJid) \{\
  17308. \
  17309. \f2\b \cf8 if
  17310. \f0\b0 \cf4 (index == \cf7 0\cf4 ) \{\
  17311. [
  17312. \f2\b \cf8 self
  17313. \f0\b0 \cf4 onChatTalk:
  17314. \f2\b \cf8 nil
  17315. \f0\b0 \cf4 ];\
  17316. \}
  17317. \f2\b \cf8 else
  17318. \f0\b0 \cf4
  17319. \f2\b \cf8 if
  17320. \f0\b0 \cf4 (index == \cf7 1\cf4 )\{\
  17321. [
  17322. \f2\b \cf8 self
  17323. \f0\b0 \cf4 onChatAudio:
  17324. \f2\b \cf8 nil
  17325. \f0\b0 \cf4 ];\
  17326. \}
  17327. \f2\b \cf8 else
  17328. \f0\b0 \cf4
  17329. \f2\b \cf8 if
  17330. \f0\b0 \cf4 (index == \cf7 2\cf4 )\{\
  17331. [
  17332. \f2\b \cf8 self
  17333. \f0\b0 \cf4 onChatVideo:
  17334. \f2\b \cf8 nil
  17335. \f0\b0 \cf4 ];\
  17336. \}\
  17337. \}
  17338. \f2\b \cf8 else
  17339. \f0\b0 \cf4 \{\
  17340. \
  17341. \f2\b \cf8 if
  17342. \f0\b0 \cf4 (index == \cf7 0\cf4 ) \{\
  17343. [
  17344. \f2\b \cf8 self
  17345. \f0\b0 \cf4 onChatAudio:
  17346. \f2\b \cf8 nil
  17347. \f0\b0 \cf4 ];\
  17348. \}
  17349. \f2\b \cf8 else
  17350. \f0\b0 \cf4
  17351. \f2\b \cf8 if
  17352. \f0\b0 \cf4 (index == \cf7 1\cf4 )\{\
  17353. [
  17354. \f2\b \cf8 self
  17355. \f0\b0 \cf4 onChatVideo:
  17356. \f2\b \cf8 nil
  17357. \f0\b0 \cf4 ];\
  17358. \}\
  17359. \}\
  17360. \}
  17361. \f2\b \cf8 else
  17362. \f0\b0 \cf4 \{\
  17363. \f2\b \cf8 if
  17364. \f0\b0 \cf4 (index == \cf7 0\cf4 ) \{\
  17365. \f2\b \cf8 self
  17366. \f0\b0 \cf4 .isAudioMeeting =
  17367. \f2\b \cf8 YES
  17368. \f0\b0 \cf4 ;\
  17369. \}
  17370. \f2\b \cf8 else
  17371. \f0\b0 \cf4
  17372. \f2\b \cf8 if
  17373. \f0\b0 \cf4 (index == \cf7 1\cf4 )\{\
  17374. \f2\b \cf8 self
  17375. \f0\b0 \cf4 .isAudioMeeting =
  17376. \f2\b \cf8 NO
  17377. \f0\b0 \cf4 ;\
  17378. \}\
  17379. [g_server userOpenMeetWithToUserId:chatPerson.userId toView:
  17380. \f2\b \cf8 self
  17381. \f0\b0 \cf4 ];\
  17382. \}\
  17383. \
  17384. \}\
  17385. \
  17386. \}\
  17387. \
  17388. \
  17389. \cf5 #if TAR_IM\cf4 \
  17390. \cf5 #ifdef Meeting_Version\cf4 \
  17391. -(
  17392. \f2\b \cf8 void
  17393. \f0\b0 \cf4 )\cf11 onGroupAudioMeeting\cf4 :(JXMessageObject*)msg\{\
  17394. NSString* no;\
  17395. NSString* s;\
  17396. \f2\b \cf8 if
  17397. \f0\b0 \cf4 (msg !=
  17398. \f2\b \cf8 nil
  17399. \f0\b0 \cf4 )\{\
  17400. no = msg.fileName;\
  17401. s = msg.objectId;\
  17402. \}
  17403. \f2\b \cf8 else
  17404. \f0\b0 \cf4 \{\
  17405. no = _audioMeetingNo;\
  17406. s =
  17407. \f2\b \cf8 self
  17408. \f0\b0 \cf4 .roomJid;\
  17409. \}\
  17410. \cf2 // if(!no)\{\cf4 \
  17411. \cf2 // [g_App showAlert:Localized(@"JXMeeting_numberNULL")];\cf4 \
  17412. \cf2 // return;\cf4 \
  17413. \cf2 // \}\cf4 \
  17414. \f2\b \cf8 self
  17415. \f0\b0 \cf4 .meetingNo = no;\
  17416. \f2\b \cf8 self
  17417. \f0\b0 \cf4 .isAudioMeeting =
  17418. \f2\b \cf8 YES
  17419. \f0\b0 \cf4 ;\
  17420. \f2\b \cf8 self
  17421. \f0\b0 \cf4 .isTalkMeeting =
  17422. \f2\b \cf8 NO
  17423. \f0\b0 \cf4 ;\
  17424. [
  17425. \f2\b \cf8 self
  17426. \f0\b0 \cf4 onInvite];\
  17427. \cf2 // [g_meeting startAudioMeeting:no roomJid:s];\cf4 \
  17428. \}\
  17429. \
  17430. -(
  17431. \f2\b \cf8 void
  17432. \f0\b0 \cf4 )\cf11 onGroupVideoMeeting\cf4 :(JXMessageObject*)msg\{\
  17433. NSString* no;\
  17434. NSString* s;\
  17435. \f2\b \cf8 if
  17436. \f0\b0 \cf4 (msg !=
  17437. \f2\b \cf8 nil
  17438. \f0\b0 \cf4 )\{\
  17439. no = msg.fileName;\
  17440. s = msg.objectId;\
  17441. \}
  17442. \f2\b \cf8 else
  17443. \f0\b0 \cf4 \{\
  17444. no = _videoMeetingNo;\
  17445. s =
  17446. \f2\b \cf8 self
  17447. \f0\b0 \cf4 .roomJid;\
  17448. \}\
  17449. \cf2 // if(!no)\{\cf4 \
  17450. \cf2 // [g_App showAlert:Localized(@"JXMeeting_numberNULL")];\cf4 \
  17451. \cf2 // return;\cf4 \
  17452. \cf2 // \}\cf4 \
  17453. \f2\b \cf8 self
  17454. \f0\b0 \cf4 .isAudioMeeting =
  17455. \f2\b \cf8 NO
  17456. \f0\b0 \cf4 ;\
  17457. \f2\b \cf8 self
  17458. \f0\b0 \cf4 .meetingNo = no;\
  17459. \f2\b \cf8 self
  17460. \f0\b0 \cf4 .isTalkMeeting =
  17461. \f2\b \cf8 NO
  17462. \f0\b0 \cf4 ;\
  17463. [
  17464. \f2\b \cf8 self
  17465. \f0\b0 \cf4 onInvite];\
  17466. \cf2 // [g_meeting startVideoMeeting:no roomJid:s];\cf4 \
  17467. \}\
  17468. \
  17469. - (
  17470. \f2\b \cf8 void
  17471. \f0\b0 \cf4 )\cf11 onGroupTalkMeeting\cf4 :(JXMessageObject *)msg \{\
  17472. NSString* no;\
  17473. NSString* s;\
  17474. \f2\b \cf8 if
  17475. \f0\b0 \cf4 (msg !=
  17476. \f2\b \cf8 nil
  17477. \f0\b0 \cf4 )\{\
  17478. no = msg.fileName;\
  17479. s = msg.objectId;\
  17480. \}
  17481. \f2\b \cf8 else
  17482. \f0\b0 \cf4 \{\
  17483. no = _audioMeetingNo;\
  17484. s =
  17485. \f2\b \cf8 self
  17486. \f0\b0 \cf4 .roomJid;\
  17487. \}\
  17488. \cf2 // if(!no)\{\cf4 \
  17489. \cf2 // [g_App showAlert:Localized(@"JXMeeting_numberNULL")];\cf4 \
  17490. \cf2 // return;\cf4 \
  17491. \cf2 // \}\cf4 \
  17492. \f2\b \cf8 self
  17493. \f0\b0 \cf4 .meetingNo = no;\
  17494. \f2\b \cf8 self
  17495. \f0\b0 \cf4 .isAudioMeeting =
  17496. \f2\b \cf8 YES
  17497. \f0\b0 \cf4 ;\
  17498. \f2\b \cf8 self
  17499. \f0\b0 \cf4 .isTalkMeeting =
  17500. \f2\b \cf8 YES
  17501. \f0\b0 \cf4 ;\
  17502. [
  17503. \f2\b \cf8 self
  17504. \f0\b0 \cf4 onInvite];\
  17505. \}\
  17506. \
  17507. -(
  17508. \f2\b \cf8 void
  17509. \f0\b0 \cf4 )\cf11 onInvite\cf4 \{\
  17510. \
  17511. \f2\b \cf8 if
  17512. \f0\b0 \cf4 (!_room.roomId) \{\
  17513. \f2\b \cf8 return
  17514. \f0\b0 \cf4 ;\
  17515. \}\
  17516. \
  17517. NSMutableSet* p = [[NSMutableSet alloc]init];\
  17518. \
  17519. JXSelectFriendsVC* vc = [JXSelectFriendsVC alloc];\
  17520. vc.isNewRoom =
  17521. \f2\b \cf8 NO
  17522. \f0\b0 \cf4 ;\
  17523. vc.isShowMySelf =
  17524. \f2\b \cf8 NO
  17525. \f0\b0 \cf4 ;\
  17526. vc.type = JXSelectFriendTypeSelMembers;\
  17527. vc.room = _room;\
  17528. vc.existSet = p;\
  17529. vc.delegate =
  17530. \f2\b \cf8 self
  17531. \f0\b0 \cf4 ;\
  17532. vc.didSelect =
  17533. \f2\b \cf8 @selector
  17534. \f0\b0 \cf4 (meetingAddMember:);\
  17535. vc = [vc init];\
  17536. \cf2 // [g_window addSubview:vc.view];\cf4 \
  17537. [g_navigation pushViewController:vc animated:
  17538. \f2\b \cf8 YES
  17539. \f0\b0 \cf4 ];\
  17540. \}\
  17541. \
  17542. -(
  17543. \f2\b \cf8 void
  17544. \f0\b0 \cf4 )\cf11 meetingAddMember\cf4 :(JXSelectFriendsVC*)vc\{\
  17545. \f2\b \cf8 int
  17546. \f0\b0 \cf4 type;\
  17547. \f2\b \cf8 if
  17548. \f0\b0 \cf4 (
  17549. \f2\b \cf8 self
  17550. \f0\b0 \cf4 .isAudioMeeting) \{\
  17551. type = kWCMessageTypeAudioMeetingInvite;\
  17552. \}
  17553. \f2\b \cf8 else
  17554. \f0\b0 \cf4 \{\
  17555. type = kWCMessageTypeVideoMeetingInvite;\
  17556. \}\
  17557. \f2\b \cf8 if
  17558. \f0\b0 \cf4 (
  17559. \f2\b \cf8 self
  17560. \f0\b0 \cf4 .isTalkMeeting) \{\
  17561. type = kWCMessageTypeTalkInvite;\
  17562. \}\
  17563. \f2\b \cf8 for
  17564. \f0\b0 \cf4 (NSNumber* n
  17565. \f2\b \cf8 in
  17566. \f0\b0 \cf4 vc.set)\{\
  17567. memberData *user;\
  17568. \f2\b \cf8 if
  17569. \f0\b0 \cf4 (vc.seekTextField.text.length > \cf7 0\cf4 ) \{\
  17570. user = vc.searchArray[[n intValue] % \cf7 100000\cf4 -\cf7 1\cf4 ];\
  17571. \}
  17572. \f2\b \cf8 else
  17573. \f0\b0 \cf4 \{\
  17574. user = [[vc.letterResultArr objectAtIndex:[n intValue] / \cf7 100000\cf4 -\cf7 1\cf4 ] objectAtIndex:[n intValue] % \cf7 100000\cf4 -\cf7 1\cf4 ];\
  17575. \}\
  17576. NSString* s = [NSString stringWithFormat:\cf6 @"%ld"\cf4 ,user.userId];\
  17577. [g_meeting sendMeetingInvite:s toUserName:user.userName roomJid:
  17578. \f2\b \cf8 self
  17579. \f0\b0 \cf4 .roomJid callId:
  17580. \f2\b \cf8 self
  17581. \f0\b0 \cf4 .meetingNo type:type];\
  17582. \}\
  17583. \
  17584. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(\cf7 .5\cf4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\
  17585. \f2\b \cf8 if
  17586. \f0\b0 \cf4 (g_meeting.isMeeting) \{\
  17587. \f2\b \cf8 return
  17588. \f0\b0 \cf4 ;\
  17589. \}\
  17590. JXAVCallViewController *avVC = [[JXAVCallViewController alloc] init];\
  17591. avVC.roomNum =
  17592. \f2\b \cf8 self
  17593. \f0\b0 \cf4 .roomJid;\
  17594. avVC.isAudio =
  17595. \f2\b \cf8 self
  17596. \f0\b0 \cf4 .isAudioMeeting;\
  17597. avVC.isTalk =
  17598. \f2\b \cf8 self
  17599. \f0\b0 \cf4 .isTalkMeeting;\
  17600. avVC.isGroup =
  17601. \f2\b \cf8 YES
  17602. \f0\b0 \cf4 ;\
  17603. avVC.toUserName =
  17604. \f2\b \cf8 self
  17605. \f0\b0 \cf4 .chatRoom.roomTitle;\
  17606. avVC.view.frame = [UIScreen mainScreen].bounds;\
  17607. \cf2 // [self presentViewController:avVC animated:YES completion:nil];\cf4 \
  17608. [g_window addSubview:avVC.view];\
  17609. \
  17610. \});\
  17611. \
  17612. \}\
  17613. \cf5 #endif\cf4 \
  17614. \cf5 #endif\cf4 \
  17615. \
  17616. -(
  17617. \f2\b \cf8 void
  17618. \f0\b0 \cf4 )\cf11 onChatAudio\cf4 :(JXMessageObject*)msg\{\
  17619. \cf5 #if TAR_IM\cf4 \
  17620. \cf5 #ifdef Meeting_Version\cf4 \
  17621. \f2\b \cf8 if
  17622. \f0\b0 \cf4 ([
  17623. \f2\b \cf8 self
  17624. \f0\b0 \cf4 sendMsgCheck])\{\
  17625. \f2\b \cf8 return
  17626. \f0\b0 \cf4 ;\
  17627. \}\
  17628. \
  17629. \cf2 //
  17630. \f1 \'d1\'e9\'d6\'a4
  17631. \f0 XMPP
  17632. \f1 \'ca\'c7\'b7\'f1\'d4\'da\'cf\'df
  17633. \f0 \cf4 \
  17634. \f2\b \cf8 if
  17635. \f0\b0 \cf4 (g_xmpp.isLogined != login_status_yes)\{\
  17636. [
  17637. \f2\b \cf8 self
  17638. \f0\b0 \cf4 hideKeyboard:
  17639. \f2\b \cf8 NO
  17640. \f0\b0 \cf4 ];\
  17641. [g_xmpp showXmppOfflineAlert];\
  17642. \f2\b \cf8 return
  17643. \f0\b0 \cf4 ;\
  17644. \}\
  17645. \
  17646. \cf2 // if(!g_meeting.connected)\{\cf4 \
  17647. \cf2 // [g_meeting showAutoConnect];\cf4 \
  17648. \cf2 // return;\cf4 \
  17649. \cf2 // \}\cf4 \
  17650. \
  17651. [
  17652. \f2\b \cf8 self
  17653. \f0\b0 \cf4 hideKeyboard:
  17654. \f2\b \cf8 YES
  17655. \f0\b0 \cf4 ];\
  17656. \f2\b \cf8 if
  17657. \f0\b0 \cf4 ((
  17658. \f2\b \cf8 self
  17659. \f0\b0 \cf4 .roomJid || msg.objectId.length > \cf7 0\cf4 ) && [msg.type intValue] != kWCMessageTypeAVBusy)\{\
  17660. [
  17661. \f2\b \cf8 self
  17662. \f0\b0 \cf4 onGroupAudioMeeting:msg];\
  17663. \}
  17664. \f2\b \cf8 else
  17665. \f0\b0 \cf4 \{\
  17666. AskCallViewController* vc = [AskCallViewController alloc];\
  17667. vc.toUserId = chatPerson.userId;\
  17668. vc.toUserName = chatPerson.userNickname;\
  17669. vc.type = kWCMessageTypeAudioChatAsk;\
  17670. vc.meetUrl =
  17671. \f2\b \cf8 self
  17672. \f0\b0 \cf4 .meetUrl;\
  17673. vc = [vc init];\
  17674. \cf2 // [g_window addSubview:vc.view];\cf4 \
  17675. [g_navigation pushViewController:vc animated:
  17676. \f2\b \cf8 NO
  17677. \f0\b0 \cf4 ];\
  17678. \}\
  17679. \
  17680. \cf5 #endif\cf4 \
  17681. \cf5 #endif\cf4 \
  17682. \}\
  17683. \
  17684. -(
  17685. \f2\b \cf8 void
  17686. \f0\b0 \cf4 )\cf11 onChatVideo\cf4 :(JXMessageObject*)msg\{\
  17687. \cf5 #if TAR_IM\cf4 \
  17688. \cf5 #ifdef Meeting_Version\cf4 \
  17689. \f2\b \cf8 if
  17690. \f0\b0 \cf4 ([
  17691. \f2\b \cf8 self
  17692. \f0\b0 \cf4 sendMsgCheck])\{\
  17693. \f2\b \cf8 return
  17694. \f0\b0 \cf4 ;\
  17695. \}\
  17696. \
  17697. \cf2 //
  17698. \f1 \'d1\'e9\'d6\'a4
  17699. \f0 XMPP
  17700. \f1 \'ca\'c7\'b7\'f1\'d4\'da\'cf\'df
  17701. \f0 \cf4 \
  17702. \f2\b \cf8 if
  17703. \f0\b0 \cf4 (g_xmpp.isLogined != login_status_yes)\{\
  17704. [
  17705. \f2\b \cf8 self
  17706. \f0\b0 \cf4 hideKeyboard:
  17707. \f2\b \cf8 NO
  17708. \f0\b0 \cf4 ];\
  17709. [g_xmpp showXmppOfflineAlert];\
  17710. \f2\b \cf8 return
  17711. \f0\b0 \cf4 ;\
  17712. \}\
  17713. \
  17714. \cf2 // if(!g_meeting.connected)\{\cf4 \
  17715. \cf2 // [g_meeting showAutoConnect];\cf4 \
  17716. \cf2 // return;\cf4 \
  17717. \cf2 // \}\cf4 \
  17718. \
  17719. [
  17720. \f2\b \cf8 self
  17721. \f0\b0 \cf4 hideKeyboard:
  17722. \f2\b \cf8 YES
  17723. \f0\b0 \cf4 ];\
  17724. \f2\b \cf8 if
  17725. \f0\b0 \cf4 ((
  17726. \f2\b \cf8 self
  17727. \f0\b0 \cf4 .roomJid || msg.objectId.length > \cf7 0\cf4 ) && [msg.type intValue] != kWCMessageTypeAVBusy)\{\
  17728. [
  17729. \f2\b \cf8 self
  17730. \f0\b0 \cf4 onGroupVideoMeeting:msg];\
  17731. \}
  17732. \f2\b \cf8 else
  17733. \f0\b0 \cf4 \{\
  17734. AskCallViewController* vc = [AskCallViewController alloc];\
  17735. vc.toUserId = chatPerson.userId;\
  17736. vc.toUserName = chatPerson.userNickname;\
  17737. vc.type = kWCMessageTypeVideoChatAsk;\
  17738. vc.meetUrl =
  17739. \f2\b \cf8 self
  17740. \f0\b0 \cf4 .meetUrl;\
  17741. vc = [vc init];\
  17742. \cf2 // [g_window addSubview:vc.view];\cf4 \
  17743. [g_navigation pushViewController:vc animated:
  17744. \f2\b \cf8 NO
  17745. \f0\b0 \cf4 ];\
  17746. \}\
  17747. \cf5 #endif\cf4 \
  17748. \cf5 #endif\cf4 \
  17749. \}\
  17750. \
  17751. - (
  17752. \f2\b \cf8 void
  17753. \f0\b0 \cf4 )\cf11 onChatTalk\cf4 :(JXMessageObject*)msg \{\
  17754. \cf5 #if TAR_IM\cf4 \
  17755. \cf5 #ifdef Meeting_Version\cf4 \
  17756. \f2\b \cf8 if
  17757. \f0\b0 \cf4 ([
  17758. \f2\b \cf8 self
  17759. \f0\b0 \cf4 sendMsgCheck])\{\
  17760. \f2\b \cf8 return
  17761. \f0\b0 \cf4 ;\
  17762. \}\
  17763. \
  17764. \cf2 //
  17765. \f1 \'d1\'e9\'d6\'a4
  17766. \f0 XMPP
  17767. \f1 \'ca\'c7\'b7\'f1\'d4\'da\'cf\'df
  17768. \f0 \cf4 \
  17769. \f2\b \cf8 if
  17770. \f0\b0 \cf4 (g_xmpp.isLogined != login_status_yes)\{\
  17771. [
  17772. \f2\b \cf8 self
  17773. \f0\b0 \cf4 hideKeyboard:
  17774. \f2\b \cf8 NO
  17775. \f0\b0 \cf4 ];\
  17776. [g_xmpp showXmppOfflineAlert];\
  17777. \f2\b \cf8 return
  17778. \f0\b0 \cf4 ;\
  17779. \}\
  17780. \
  17781. \cf2 // if(!g_meeting.connected)\{\cf4 \
  17782. \cf2 // [g_meeting showAutoConnect];\cf4 \
  17783. \cf2 // return;\cf4 \
  17784. \cf2 // \}\cf4 \
  17785. \
  17786. [
  17787. \f2\b \cf8 self
  17788. \f0\b0 \cf4 hideKeyboard:
  17789. \f2\b \cf8 YES
  17790. \f0\b0 \cf4 ];\
  17791. [
  17792. \f2\b \cf8 self
  17793. \f0\b0 \cf4 onGroupTalkMeeting:msg];\
  17794. \
  17795. \cf5 #endif\cf4 \
  17796. \cf5 #endif\cf4 \
  17797. \}\
  17798. \
  17799. \
  17800. -(
  17801. \f2\b \cf8 void
  17802. \f0\b0 \cf4 )\cf11 onHeadImage\cf4 :(UIView*)sender\{\
  17803. [
  17804. \f2\b \cf8 self
  17805. \f0\b0 \cf4 hideKeyboard:
  17806. \f2\b \cf8 NO
  17807. \f0\b0 \cf4 ];\
  17808. \
  17809. JXMessageObject *msg=[_array objectAtIndex:sender.tag];\
  17810. [g_server getUser:msg.fromUserId toView:
  17811. \f2\b \cf8 self
  17812. \f0\b0 \cf4 ];\
  17813. msg =
  17814. \f2\b \cf8 nil
  17815. \f0\b0 \cf4 ;\
  17816. \}\
  17817. \
  17818. -(
  17819. \f2\b \cf8 void
  17820. \f0\b0 \cf4 )\cf11 onMember\cf4 \{\
  17821. \
  17822. \f2\b \cf8 if
  17823. \f0\b0 \cf4 (recording) \{\
  17824. \f2\b \cf8 return
  17825. \f0\b0 \cf4 ;\
  17826. \}\
  17827. [
  17828. \f2\b \cf8 self
  17829. \f0\b0 \cf4 hideKeyboard:
  17830. \f2\b \cf8 YES
  17831. \f0\b0 \cf4 ];\
  17832. NSString *s;\
  17833. \f2\b \cf8 switch
  17834. \f0\b0 \cf4 ([
  17835. \f2\b \cf8 self
  17836. \f0\b0 \cf4 .groupStatus intValue]) \{\
  17837. \f2\b \cf8 case
  17838. \f0\b0 \cf4 \cf7 0\cf4 :\
  17839. s =
  17840. \f2\b \cf8 nil
  17841. \f0\b0 \cf4 ;\
  17842. \f2\b \cf8 break
  17843. \f0\b0 \cf4 ;\
  17844. \f2\b \cf8 case
  17845. \f0\b0 \cf4 \cf7 1\cf4 :\
  17846. s = Localized(\cf6 @"JX_OutOfTheGroup1"\cf4 );\
  17847. \f2\b \cf8 break
  17848. \f0\b0 \cf4 ;\
  17849. \f2\b \cf8 case
  17850. \f0\b0 \cf4 \cf7 2\cf4 :\
  17851. s = Localized(\cf6 @"JX_DissolutionGroup1"\cf4 );\
  17852. \f2\b \cf8 break
  17853. \f0\b0 \cf4 ;\
  17854. \
  17855. \f2\b \cf8 default
  17856. \f0\b0 \cf4 :\
  17857. \f2\b \cf8 break
  17858. \f0\b0 \cf4 ;\
  17859. \}\
  17860. \
  17861. \f2\b \cf8 if
  17862. \f0\b0 \cf4 (s.length > \cf7 0\cf4 ) \{\
  17863. [
  17864. \f2\b \cf8 self
  17865. \f0\b0 \cf4 hideKeyboard:
  17866. \f2\b \cf8 NO
  17867. \f0\b0 \cf4 ];\
  17868. [g_server showMsg:s];\
  17869. \}
  17870. \f2\b \cf8 else
  17871. \f0\b0 \cf4 \{\
  17872. \cf2 // [_wait start];\cf4 \
  17873. \
  17874. JXRoomMemberVC* vc = [JXRoomMemberVC alloc];\
  17875. \cf2 // vc.chatRoom = [[JXXMPP sharedInstance].roomPool joinRoom:roomdata.roomJid title:roomdata.name isNew:NO];\cf4 \
  17876. \cf2 // vc.room = roomdata;\cf4 \
  17877. vc.roomId = roomId;\
  17878. vc.room = _room;\
  17879. vc.delegate =
  17880. \f2\b \cf8 self
  17881. \f0\b0 \cf4 ;\
  17882. _strURLGoback=\cf6 @""\cf4 ;\
  17883. vc = [vc init];\
  17884. \cf2 // [g_window addSubview:vc.view];\cf4 \
  17885. [g_navigation pushViewController:vc animated:
  17886. \f2\b \cf8 YES
  17887. \f0\b0 \cf4 ];\
  17888. \cf2 // [g_server getRoom:roomId toView:self];\cf4 \
  17889. \}\
  17890. \}\
  17891. \
  17892. -(
  17893. \f2\b \cf8 void
  17894. \f0\b0 \cf4 )\cf11 onQuitRoom\cf4 :(NSNotification *)notifacation\cf2 //
  17895. \f1 \'b3\'ac\'ca\'b1\'ce\'b4\'ca\'d5\'b5\'bd\'bb\'d8\'d6\'b4
  17896. \f0 \cf4 \
  17897. \{\
  17898. JXRoomObject* p = (JXRoomObject *)notifacation.object;\
  17899. \f2\b \cf8 if
  17900. \f0\b0 \cf4 (p == chatRoom)\
  17901. [
  17902. \f2\b \cf8 self
  17903. \f0\b0 \cf4 actionQuit];\
  17904. p =
  17905. \f2\b \cf8 nil
  17906. \f0\b0 \cf4 ;\
  17907. \}\
  17908. \
  17909. \cf5 #pragma mark
  17910. \f2\b \cf16 -
  17911. \f4 \'bf\'d8\'d6\'c6\'cf\'fb\'cf\'a2\'b4\'a6\'c0\'ed
  17912. \f0\b0 \cf4 \
  17913. -(
  17914. \f2\b \cf8 void
  17915. \f0\b0 \cf4 )\cf11 onReceiveRoomRemind\cf4 :(NSNotification *)notifacation\
  17916. \{\
  17917. JXRoomRemind* p = (JXRoomRemind *)notifacation.object;\
  17918. \
  17919. \f2\b \cf8 if
  17920. \f0\b0 \cf4 ([p.objectId isEqualToString:
  17921. \f2\b \cf8 self
  17922. \f0\b0 \cf4 .roomJid])\{\
  17923. \f2\b \cf8 if
  17924. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_RoomName)\{\
  17925. \f2\b \cf8 self
  17926. \f0\b0 \cf4 .title = [NSString stringWithFormat:\cf6 @"%@(%ld)"\cf4 ,p.content,_room.curCount];\
  17927. [
  17928. \f2\b \cf8 self
  17929. \f0\b0 \cf4 setAudioIconFrame];\
  17930. \}\
  17931. \f2\b \cf8 if
  17932. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_DisableSay)\{\
  17933. \f2\b \cf8 if
  17934. \f0\b0 \cf4 ([p.toUserId isEqualToString:MY_USER_ID])\
  17935. _disableSay = [p.content longLongValue];\
  17936. \}\
  17937. \f2\b \cf8 if
  17938. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_DelMember)\{\
  17939. \f2\b \cf8 if
  17940. \f0\b0 \cf4 ([p.toUserId isEqualToString:MY_USER_ID])\
  17941. \f2\b \cf8 self
  17942. \f0\b0 \cf4 .groupStatus = [NSNumber numberWithInt:\cf7 1\cf4 ];\
  17943. \cf2 // [self actionQuit];\cf4 \
  17944. \
  17945. NSArray * memberArray = [memberData fetchAllMembers:_room.roomId];\
  17946. \f2\b \cf8 self
  17947. \f0\b0 \cf4 .title = [NSString stringWithFormat:\cf6 @"%@(%ld)"\cf4 ,
  17948. \f2\b \cf8 self
  17949. \f0\b0 \cf4 .chatPerson.userNickname, memberArray.count];\
  17950. [
  17951. \f2\b \cf8 self
  17952. \f0\b0 \cf4 setAudioIconFrame];\
  17953. \
  17954. \}\
  17955. \f2\b \cf8 if
  17956. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_NewNotice)\{\
  17957. NSArray *noticeArr = [p.content componentsSeparatedByString:Localized(\cf6 @"JXMessageObject_AddNewAdv"\cf4 )];\
  17958. [
  17959. \f2\b \cf8 self
  17960. \f0\b0 \cf4 setupNoticeWithContent:[noticeArr lastObject] time:[NSString stringWithFormat:\cf6 @"%lf"\cf4 ,[[NSDate date] timeIntervalSince1970]]];\
  17961. \}\
  17962. \f2\b \cf8 if
  17963. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_DelRoom)\{\
  17964. \f2\b \cf8 if
  17965. \f0\b0 \cf4 ([p.toUserId isEqualToString:MY_USER_ID] || IS_OTHER_DEVICE(p.toUserId))\
  17966. \f2\b \cf8 self
  17967. \f0\b0 \cf4 .groupStatus = [NSNumber numberWithInt:\cf7 2\cf4 ];\
  17968. \cf2 // [self actionQuit];\cf4 \
  17969. \}\
  17970. \f2\b \cf8 if
  17971. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_AddMember)\{\
  17972. \f2\b \cf8 if
  17973. \f0\b0 \cf4 ([p.toUserId isEqualToString:MY_USER_ID])\{\
  17974. \f2\b \cf8 self
  17975. \f0\b0 \cf4 .groupStatus = [NSNumber numberWithInt:\cf7 0\cf4 ];\
  17976. chatRoom.isConnected =
  17977. \f2\b \cf8 YES
  17978. \f0\b0 \cf4 ;\
  17979. \}\
  17980. NSArray * memberArray = [memberData fetchAllMembers:_room.roomId];\
  17981. \f2\b \cf8 self
  17982. \f0\b0 \cf4 .title = [NSString stringWithFormat:\cf6 @"%@(%ld)"\cf4 ,
  17983. \f2\b \cf8 self
  17984. \f0\b0 \cf4 .chatPerson.userNickname, memberArray.count];\
  17985. [
  17986. \f2\b \cf8 self
  17987. \f0\b0 \cf4 setAudioIconFrame];\
  17988. \cf2 // [self actionQuit];\cf4 \
  17989. \}\
  17990. \f2\b \cf8 if
  17991. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_NickName)\{\
  17992. \
  17993. memberData *data = [[memberData alloc] init];\
  17994. data.roomId = roomId;\
  17995. data.userNickName = p.content;\
  17996. data.userId = [p.toUserId longLongValue];\
  17997. [data updateUserNickName];\
  17998. \
  17999. \cf2 // for (int i = 0; i < [_array count] ; i++) \{\cf4 \
  18000. \cf2 // JXMessageObject *msg=[_array objectAtIndex:i];\cf4 \
  18001. \cf2 // if ([msg.fromUserId isEqualToString:p.userId]) \{\cf4 \
  18002. \cf2 // msg.fromUserName = p.content;\cf4 \
  18003. \cf2 // \}\cf4 \
  18004. \cf2 // \}\cf4 \
  18005. \
  18006. [_table reloadData];\
  18007. \
  18008. \cf2 // for(int i=0;i<[_room.members count];i++)\{\cf4 \
  18009. \cf2 // memberData* m = [_room.members objectAtIndex:i];\cf4 \
  18010. \cf2 // if(m.userId == [p.toUserId intValue])\{\cf4 \
  18011. \cf2 // m.userNickName = p.content;\cf4 \
  18012. \cf2 // break;\cf4 \
  18013. \cf2 // \}\cf4 \
  18014. \cf2 // m = nil;\cf4 \
  18015. \cf2 // \}\cf4 \
  18016. \}\
  18017. \
  18018. \f2\b \cf8 if
  18019. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_SetManage) \{\
  18020. \cf2 //
  18021. \f1 \'c9\'e8\'d6\'c3\'c8\'ba\'d7\'e9\'b9\'dc\'c0\'ed\'d4\'b1
  18022. \f0 \cf4 \
  18023. \
  18024. JXUserObject *user = [[JXUserObject sharedInstance] getUserById:p.objectId];\
  18025. \
  18026. NSDictionary * groupDict = [user toDictionary];\
  18027. roomData * roomdata = [[roomData alloc] init];\
  18028. [roomdata getDataFromDict:groupDict];\
  18029. NSArray * allMem = [memberData fetchAllMembers:user.roomId];\
  18030. roomdata.members = [allMem mutableCopy];\
  18031. \
  18032. memberData *member = [roomdata getMember:p.toUserId];\
  18033. \f2\b \cf8 if
  18034. \f0\b0 \cf4 ([member.role intValue] == \cf7 2\cf4 ) \{\
  18035. member.role = [NSNumber numberWithInt:\cf7 2\cf4 ];\
  18036. \}
  18037. \f2\b \cf8 else
  18038. \f0\b0 \cf4 \{\
  18039. member.role = [NSNumber numberWithInt:\cf7 3\cf4 ];\
  18040. \}\
  18041. [member updateRole];\
  18042. _room = roomdata;\
  18043. \
  18044. \f2\b \cf8 if
  18045. \f0\b0 \cf4 ([p.toUserId isEqualToString:g_myself.userId]) \{\
  18046. \f2\b \cf8 if
  18047. \f0\b0 \cf4 ([member.role intValue] == \cf7 2\cf4 ) \{\
  18048. _isAdmin =
  18049. \f2\b \cf8 YES
  18050. \f0\b0 \cf4 ;\
  18051. \
  18052. _shareMore.enabled =
  18053. \f2\b \cf8 YES
  18054. \f0\b0 \cf4 ;\
  18055. _recordBtnLeft.enabled =
  18056. \f2\b \cf8 YES
  18057. \f0\b0 \cf4 ;\
  18058. _btnFace.enabled =
  18059. \f2\b \cf8 YES
  18060. \f0\b0 \cf4 ;\
  18061. _messageText.userInteractionEnabled =
  18062. \f2\b \cf8 YES
  18063. \f0\b0 \cf4 ;\
  18064. _talkTimeLabel.hidden =
  18065. \f2\b \cf8 YES
  18066. \f0\b0 \cf4 ;\
  18067. \}
  18068. \f2\b \cf8 else
  18069. \f0\b0 \cf4 \{\
  18070. _isAdmin =
  18071. \f2\b \cf8 NO
  18072. \f0\b0 \cf4 ;\
  18073. \f2\b \cf8 if
  18074. \f0\b0 \cf4 ([
  18075. \f2\b \cf8 self
  18076. \f0\b0 \cf4 .chatPerson.talkTime longLongValue] > \cf7 0\cf4 ) \{\
  18077. _talkTimeLabel.hidden =
  18078. \f2\b \cf8 NO
  18079. \f0\b0 \cf4 ;\
  18080. _talkTimeLabel.text = Localized(\cf6 @"JX_TotalSilence"\cf4 );\
  18081. _shareMore.enabled =
  18082. \f2\b \cf8 NO
  18083. \f0\b0 \cf4 ;\
  18084. _recordBtnLeft.enabled =
  18085. \f2\b \cf8 NO
  18086. \f0\b0 \cf4 ;\
  18087. _btnFace.enabled =
  18088. \f2\b \cf8 NO
  18089. \f0\b0 \cf4 ;\
  18090. _messageText.userInteractionEnabled =
  18091. \f2\b \cf8 NO
  18092. \f0\b0 \cf4 ;\
  18093. _messageText.text =
  18094. \f2\b \cf8 nil
  18095. \f0\b0 \cf4 ;\
  18096. \}
  18097. \f2\b \cf8 else
  18098. \f0\b0 \cf4 \{\
  18099. \
  18100. _shareMore.enabled =
  18101. \f2\b \cf8 YES
  18102. \f0\b0 \cf4 ;\
  18103. _recordBtnLeft.enabled =
  18104. \f2\b \cf8 YES
  18105. \f0\b0 \cf4 ;\
  18106. _btnFace.enabled =
  18107. \f2\b \cf8 YES
  18108. \f0\b0 \cf4 ;\
  18109. _messageText.userInteractionEnabled =
  18110. \f2\b \cf8 YES
  18111. \f0\b0 \cf4 ;\
  18112. _talkTimeLabel.hidden =
  18113. \f2\b \cf8 YES
  18114. \f0\b0 \cf4 ;\
  18115. \}\
  18116. \}\
  18117. \}\
  18118. \
  18119. [
  18120. \f2\b \cf8 self
  18121. \f0\b0 \cf4 refresh:
  18122. \f2\b \cf8 nil
  18123. \f0\b0 \cf4 ];\
  18124. [_table reloadData];\
  18125. \}\
  18126. \
  18127. \f2\b \cf8 if
  18128. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_ShowRead)\{\
  18129. \cf2 //BOOL b = [self.chatPerson.showRead boolValue];\cf4 \
  18130. \f2\b \cf8 self
  18131. \f0\b0 \cf4 .chatPerson.showRead = [NSNumber numberWithInt:[p.content intValue]];\
  18132. \cf2 //if(b != [self.chatPerson.showRead boolValue])\cf4 \
  18133. \
  18134. \
  18135. [
  18136. \f2\b \cf8 self
  18137. \f0\b0 \cf4 refresh:
  18138. \f2\b \cf8 nil
  18139. \f0\b0 \cf4 ];\
  18140. [_table reloadData];\
  18141. \
  18142. \}\
  18143. \f2\b \cf8 if
  18144. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_ShowMember)\{\
  18145. \
  18146. \f2\b \cf8 self
  18147. \f0\b0 \cf4 .chatPerson.showMember = [NSNumber numberWithInt:[p.content intValue]];\
  18148. \
  18149. [
  18150. \f2\b \cf8 self
  18151. \f0\b0 \cf4 refresh:
  18152. \f2\b \cf8 nil
  18153. \f0\b0 \cf4 ];\
  18154. \}\
  18155. \f2\b \cf8 if
  18156. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_allowSendCard)\{\
  18157. \
  18158. \f2\b \cf8 self
  18159. \f0\b0 \cf4 .chatPerson.allowSendCard = [NSNumber numberWithInt:[p.content intValue]];\
  18160. \f2\b \cf8 self
  18161. \f0\b0 \cf4 .room.allowSendCard = [p.content boolValue];\
  18162. \
  18163. [
  18164. \f2\b \cf8 self
  18165. \f0\b0 \cf4 refresh:
  18166. \f2\b \cf8 nil
  18167. \f0\b0 \cf4 ];\
  18168. \cf2 //
  18169. \f1 \'bd\'fb\'d6\'b9\'cb\'bd\'c1\'c4\'a3\'ac\'cb\'f9\'d3\'d0\'c3\'fb\'d7\'d6\'d7\'ee\'ba\'f3\'d2\'bb\'ce\'bb\'b8\'c4\'ce\'aa
  18170. \f0 *
  18171. \f1 \'a3\'ac\'d0\'e8\'d2\'aa\'cb\'a2\'d0\'c2\'bd\'e7\'c3\'e6\'a3\'ac\'b1\'a3\'d6\'a4\'d5\'fb\'b8\'f6\'c1\'d0\'b1\'ed\'bc\'b4\'ca\'b1\'b8\'fc\'d0\'c2
  18172. \f0 \cf4 \
  18173. [_table reloadData];\
  18174. \}\
  18175. \f2\b \cf8 if
  18176. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_RoomAllowInviteFriend)\{\
  18177. \
  18178. \f2\b \cf8 self
  18179. \f0\b0 \cf4 .chatPerson.allowInviteFriend = [NSNumber numberWithInt:[p.content intValue]];\
  18180. \
  18181. \}\
  18182. \f2\b \cf8 if
  18183. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_RoomAllowUploadFile)\{\
  18184. \
  18185. \f2\b \cf8 self
  18186. \f0\b0 \cf4 .chatPerson.allowUploadFile = [NSNumber numberWithInt:[p.content intValue]];\
  18187. \
  18188. \}\
  18189. \f2\b \cf8 if
  18190. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_RoomAllowConference)\{\
  18191. \
  18192. \f2\b \cf8 self
  18193. \f0\b0 \cf4 .chatPerson.allowConference = [NSNumber numberWithInt:[p.content intValue]];\
  18194. \
  18195. \}\
  18196. \f2\b \cf8 if
  18197. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_RoomAllowSpeakCourse)\{\
  18198. \
  18199. \f2\b \cf8 self
  18200. \f0\b0 \cf4 .chatPerson.allowSpeakCourse = [NSNumber numberWithInt:[p.content intValue]];\
  18201. [
  18202. \f2\b \cf8 self
  18203. \f0\b0 \cf4 refresh:
  18204. \f2\b \cf8 nil
  18205. \f0\b0 \cf4 ];\
  18206. \}\
  18207. \f2\b \cf8 if
  18208. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_RoomAllBanned)\{\
  18209. [
  18210. \f2\b \cf8 self
  18211. \f0\b0 \cf4 hideKeyboard:
  18212. \f2\b \cf8 YES
  18213. \f0\b0 \cf4 ];\
  18214. \
  18215. \f2\b \cf8 self
  18216. \f0\b0 \cf4 .chatPerson.talkTime = [NSNumber numberWithInt:[p.content intValue]];\
  18217. _disableSay = [
  18218. \f2\b \cf8 self
  18219. \f0\b0 \cf4 .chatPerson.talkTime longLongValue];\
  18220. \
  18221. \
  18222. \cf2 // memberData *data = [self.room getMember:g_myself.userId];\cf4 \
  18223. \cf2 // if ([data.role intValue] == 1 || [data.role intValue] == 2) \{\cf4 \
  18224. \cf2 // _isAdmin = YES;\cf4 \
  18225. \cf2 // \}else \{\cf4 \
  18226. \cf2 // _isAdmin = NO;\cf4 \
  18227. \cf2 // \}\cf4 \
  18228. \
  18229. \f2\b \cf8 if
  18230. \f0\b0 \cf4 ([
  18231. \f2\b \cf8 self
  18232. \f0\b0 \cf4 .chatPerson.talkTime longLongValue] > \cf7 0\cf4 && !_isAdmin) \{\
  18233. _talkTimeLabel.text = Localized(\cf6 @"JX_TotalSilence"\cf4 );\
  18234. _shareMore.enabled =
  18235. \f2\b \cf8 NO
  18236. \f0\b0 \cf4 ;\
  18237. _recordBtnLeft.enabled =
  18238. \f2\b \cf8 NO
  18239. \f0\b0 \cf4 ;\
  18240. _btnFace.enabled =
  18241. \f2\b \cf8 NO
  18242. \f0\b0 \cf4 ;\
  18243. _messageText.userInteractionEnabled =
  18244. \f2\b \cf8 NO
  18245. \f0\b0 \cf4 ;\
  18246. _talkTimeLabel.hidden =
  18247. \f2\b \cf8 NO
  18248. \f0\b0 \cf4 ;\
  18249. _messageText.text =
  18250. \f2\b \cf8 nil
  18251. \f0\b0 \cf4 ;\
  18252. \}
  18253. \f2\b \cf8 else
  18254. \f0\b0 \cf4 \{\
  18255. _shareMore.enabled =
  18256. \f2\b \cf8 YES
  18257. \f0\b0 \cf4 ;\
  18258. _recordBtnLeft.enabled =
  18259. \f2\b \cf8 YES
  18260. \f0\b0 \cf4 ;\
  18261. _btnFace.enabled =
  18262. \f2\b \cf8 YES
  18263. \f0\b0 \cf4 ;\
  18264. _messageText.userInteractionEnabled =
  18265. \f2\b \cf8 YES
  18266. \f0\b0 \cf4 ;\
  18267. _talkTimeLabel.hidden =
  18268. \f2\b \cf8 YES
  18269. \f0\b0 \cf4 ;\
  18270. \}\
  18271. \cf2 // [self refresh:nil];\cf4 \
  18272. \}\
  18273. \f2\b \cf8 if
  18274. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_SetInvisible)\{\
  18275. JXUserObject *user = [[JXUserObject sharedInstance] getUserById:p.objectId];\
  18276. \
  18277. NSDictionary * groupDict = [user toDictionary];\
  18278. roomData * roomdata = [[roomData alloc] init];\
  18279. [roomdata getDataFromDict:groupDict];\
  18280. NSArray * allMem = [memberData fetchAllMembers:user.roomId];\
  18281. roomdata.members = [allMem mutableCopy];\
  18282. \
  18283. memberData *member = [roomdata getMember:p.toUserId];\
  18284. \f2\b \cf8 if
  18285. \f0\b0 \cf4 ([p.content intValue] == \cf7 1\cf4 ) \{\
  18286. [member updateRoleByUserId:[p.toUserId longLongValue] role:[NSNumber numberWithInt:\cf7 4\cf4 ]];\
  18287. \}
  18288. \f2\b \cf8 else
  18289. \f0\b0 \cf4 \{\
  18290. [member updateRoleByUserId:[p.toUserId longLongValue] role:[NSNumber numberWithInt:\cf7 3\cf4 ]];\
  18291. \}\
  18292. \f2\b \cf8 if
  18293. \f0\b0 \cf4 ([p.toUserId isEqualToString:MY_USER_ID]) \{\
  18294. \f2\b \cf8 if
  18295. \f0\b0 \cf4 ([p.content intValue] == \cf7 1\cf4 ) \{\
  18296. _talkTimeLabel.text = Localized(\cf6 @"JX_ProhibitToSpeak"\cf4 );\
  18297. _messageText.userInteractionEnabled =
  18298. \f2\b \cf8 NO
  18299. \f0\b0 \cf4 ;\
  18300. _shareMore.enabled =
  18301. \f2\b \cf8 NO
  18302. \f0\b0 \cf4 ;\
  18303. _recordBtnLeft.enabled =
  18304. \f2\b \cf8 NO
  18305. \f0\b0 \cf4 ;\
  18306. _btnFace.enabled =
  18307. \f2\b \cf8 NO
  18308. \f0\b0 \cf4 ;\
  18309. _talkTimeLabel.hidden =
  18310. \f2\b \cf8 NO
  18311. \f0\b0 \cf4 ;\
  18312. _messageText.text =
  18313. \f2\b \cf8 nil
  18314. \f0\b0 \cf4 ;\
  18315. member.role = [NSNumber numberWithInt:\cf7 4\cf4 ];\
  18316. \}
  18317. \f2\b \cf8 else
  18318. \f0\b0 \cf4 \{\
  18319. _talkTimeLabel.hidden =
  18320. \f2\b \cf8 YES
  18321. \f0\b0 \cf4 ;\
  18322. _shareMore.enabled =
  18323. \f2\b \cf8 YES
  18324. \f0\b0 \cf4 ;\
  18325. _recordBtnLeft.enabled =
  18326. \f2\b \cf8 YES
  18327. \f0\b0 \cf4 ;\
  18328. _btnFace.enabled =
  18329. \f2\b \cf8 YES
  18330. \f0\b0 \cf4 ;\
  18331. _messageText.userInteractionEnabled =
  18332. \f2\b \cf8 YES
  18333. \f0\b0 \cf4 ;\
  18334. member.role = [NSNumber numberWithInt:\cf7 3\cf4 ];\
  18335. \}\
  18336. [member updateRole];\
  18337. _room = roomdata;\
  18338. \}\
  18339. \}\
  18340. \f2\b \cf8 if
  18341. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_RoomTransfer)\{\
  18342. \f2\b \cf8 if
  18343. \f0\b0 \cf4 ([p.fromUserId isEqualToString:MY_USER_ID] || [p.toUserId isEqualToString:MY_USER_ID]) \{\
  18344. \
  18345. \f2\b \cf8 if
  18346. \f0\b0 \cf4 ([p.fromUserId isEqualToString:MY_USER_ID]) \{\
  18347. _isAdmin =
  18348. \f2\b \cf8 NO
  18349. \f0\b0 \cf4 ;\
  18350. \}
  18351. \f2\b \cf8 else
  18352. \f0\b0 \cf4 \{\
  18353. _isAdmin =
  18354. \f2\b \cf8 YES
  18355. \f0\b0 \cf4 ;\
  18356. \}\
  18357. \
  18358. [
  18359. \f2\b \cf8 self
  18360. \f0\b0 \cf4 refresh:
  18361. \f2\b \cf8 nil
  18362. \f0\b0 \cf4 ];\
  18363. \}\
  18364. \}\
  18365. \
  18366. \f2\b \cf8 if
  18367. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_RoomDisable) \{\
  18368. \f2\b \cf8 if
  18369. \f0\b0 \cf4 ([p.content integerValue] != \cf7 1\cf4 ) \{\
  18370. \f2\b \cf8 self
  18371. \f0\b0 \cf4 .isDisable =
  18372. \f2\b \cf8 YES
  18373. \f0\b0 \cf4 ;\
  18374. \}
  18375. \f2\b \cf8 else
  18376. \f0\b0 \cf4 \{\
  18377. \f2\b \cf8 self
  18378. \f0\b0 \cf4 .isDisable =
  18379. \f2\b \cf8 NO
  18380. \f0\b0 \cf4 ;\
  18381. \}\
  18382. \}\
  18383. \
  18384. \f2\b \cf8 if
  18385. \f0\b0 \cf4 ([p.type intValue] == kRoomRemind_SetRecordTimeOut) \{\
  18386. \f2\b \cf8 if
  18387. \f0\b0 \cf4 ([p.objectId isEqualToString:
  18388. \f2\b \cf8 self
  18389. \f0\b0 \cf4 .roomJid]) \{\
  18390. \f2\b \cf8 self
  18391. \f0\b0 \cf4 .chatPerson.chatRecordTimeOut = p.content;\
  18392. [
  18393. \f2\b \cf8 self
  18394. \f0\b0 \cf4 .chatPerson updateUserChatRecordTimeOut];\
  18395. \}\
  18396. \}\
  18397. \
  18398. \cf2 //
  18399. \f1 \'c8\'ba\'c4\'da\'cc\'df\'c8\'cb\'a3\'ac\'c9\'be\'b3\'fd\'cb\'f9\'d3\'d0\'cf\'fb\'cf\'a2
  18400. \f0 \cf4 \
  18401. \f2\b \cf8 if
  18402. \f0\b0 \cf4 ([p.type integerValue] == kRoomRemind_RoomDeleteMsg) \{\
  18403. \cf2 // printf(<#const char *, ...#>)\cf4 \
  18404. \}\
  18405. \
  18406. \cf2 //
  18407. \f1 \'c8\'ba\'d7\'e9\'cf\'d4\'ca\'be\'cd\'b7\'cf\'ce
  18408. \f0 \cf4 \
  18409. \cf2 // if ([p.type integerValue] == kRoomRemind_RoomIsOpenIntegral) \{\cf4 \
  18410. \cf2 // if ([p.content intValue] == 0) \{\cf4 \
  18411. \cf2 // self.isOpenIntegral = NO;\cf4 \
  18412. \cf2 // \}else\{\cf4 \
  18413. \cf2 // self.isOpenIntegral = YES;\cf4 \
  18414. \cf2 // \}\cf4 \
  18415. \cf2 // // [self refresh:nil];\cf4 \
  18416. \cf2 // [_table reloadData];\cf4 \
  18417. \cf2 // \}\cf4 \
  18418. \
  18419. \cf2 //
  18420. \f1 \'c8\'ba\'d7\'e9\'cf\'fb\'cf\'a2\'b7\'c0\'b2\'e2\'bb\'d8
  18421. \f0 \cf4 \
  18422. \f2\b \cf8 if
  18423. \f0\b0 \cf4 ([p.type integerValue] == kRoomRemind_RoomIsAttritionRecall) \{\
  18424. \f2\b \cf8 if
  18425. \f0\b0 \cf4 ([p.content intValue] == \cf7 0\cf4 ) \{\
  18426. \f2\b \cf8 self
  18427. \f0\b0 \cf4 .isOpenIntegral =
  18428. \f2\b \cf8 NO
  18429. \f0\b0 \cf4 ;\
  18430. \}
  18431. \f2\b \cf8 else
  18432. \f0\b0 \cf4 \{\
  18433. \f2\b \cf8 self
  18434. \f0\b0 \cf4 .isOpenIntegral =
  18435. \f2\b \cf8 YES
  18436. \f0\b0 \cf4 ;\
  18437. \}\
  18438. \}\
  18439. \
  18440. \cf2 //
  18441. \f1 \'d7\'ee\'d0\'c2\'b9\'ab\'b8\'e6
  18442. \f0 \cf4 \
  18443. \f2\b \cf8 if
  18444. \f0\b0 \cf4 ([p.type integerValue] == kRoomRemind_editNotice) \{\
  18445. \cf2 // NSArray *noticeArr = [p.content componentsSeparatedByString:Localized(@"JXMessageObject_AddNewAdv")];\cf4 \
  18446. [
  18447. \f2\b \cf8 self
  18448. \f0\b0 \cf4 setupNoticeWithContent:p.content time:[NSString stringWithFormat:\cf6 @"%lf"\cf4 ,[[NSDate date] timeIntervalSince1970]]];\
  18449. [
  18450. \f2\b \cf8 self
  18451. \f0\b0 \cf4 showLatestBroadcastTitle:\cf6 @"
  18452. \f1 \'d7\'ee\'d0\'c2\'b9\'ab\'b8\'e6
  18453. \f0 "\cf4 message:p.content];\
  18454. \}\
  18455. \
  18456. \}\
  18457. \}\
  18458. \
  18459. \cf2 //
  18460. \f1 \'c8\'ba\'bb\'ee\'b6\'af\'cf\'fb\'cf\'a2
  18461. \f0
  18462. \f1 \'c7\'c0\'ba\'ec\'b0\'fc\'cf\'fb\'cf\'a2
  18463. \f0 \cf4 \
  18464. - (
  18465. \f2\b \cf8 void
  18466. \f0\b0 \cf4 )\cf11 RoomRemind_RoomIsRedMoneyGroupActivityRefresh\cf4 :(NSNotification *)notifacation \{\
  18467. JLGroupActivityModel *model = (JLGroupActivityModel *)notifacation.object;\
  18468. _activityModel = model;\
  18469. [_container dismiss];\
  18470. [
  18471. \f2\b \cf8 self
  18472. \f0\b0 \cf4 hideKeyboard:
  18473. \f2\b \cf8 YES
  18474. \f0\b0 \cf4 ];\
  18475. \f2\b \cf8 if
  18476. \f0\b0 \cf4 ([model.roomJid isEqualToString:
  18477. \f2\b \cf8 self
  18478. \f0\b0 \cf4 .roomJid]) \{\
  18479. \
  18480. [
  18481. \f2\b \cf8 self
  18482. \f0\b0 \cf4 showAdAlertViewImageRedPackage:\cf6 @"ad_treasureBox.png"\cf4 linkUrl:
  18483. \f2\b \cf8 nil
  18484. \f0\b0 \cf4 audio:
  18485. \f2\b \cf8 nil
  18486. \f0\b0 \cf4 duration:\cf7 3\cf4 content:model showCancelButton:
  18487. \f2\b \cf8 YES
  18488. \f0\b0 \cf4 type:(DYAdModelTypeGiftOpen) success:
  18489. \f2\b \cf8 NO
  18490. \f0\b0 \cf4 ];\
  18491. \
  18492. \
  18493. NSString *showAS=[g_default objectForKey:\cf6 @"showPackageActive"\cf4 ];\
  18494. \f2\b \cf8 if
  18495. \f0\b0 \cf4 (showAS.length>\cf7 0\cf4 ) \{\
  18496. [g_default removeObjectForKey:\cf6 @"showPackageActive"\cf4 ];\
  18497. \f2\b \cf8 return
  18498. \f0\b0 \cf4 ;\
  18499. \}
  18500. \f2\b \cf8 else
  18501. \f0\b0 \cf4 \{\
  18502. \
  18503. [g_default setObject:\cf6 @"showPackageActive"\cf4 forKey:\cf6 @"showPackageActive"\cf4 ];\
  18504. [g_default synchronize];\
  18505. \}\
  18506. \
  18507. \}\
  18508. \
  18509. \
  18510. \
  18511. \}\
  18512. \
  18513. \cf2 //
  18514. \f1 \'c8\'ba\'bb\'ee\'b6\'af\'cf\'fb\'cf\'a2
  18515. \f0 \cf4 \
  18516. - (
  18517. \f2\b \cf8 void
  18518. \f0\b0 \cf4 )\cf11 roomGroupActivityRefresh\cf4 :(NSNotification *)notifacation \{\
  18519. JLGroupActivityModel *model = (JLGroupActivityModel *)notifacation.object;\
  18520. _activityModel = model;\
  18521. \
  18522. \cf2 //if (_isShowRedPackage==1) \{ return; \}\cf4 \
  18523. \
  18524. [_container dismiss];\
  18525. \
  18526. \f2\b \cf8 if
  18527. \f0\b0 \cf4 ([model.roomJid isEqualToString:
  18528. \f2\b \cf8 self
  18529. \f0\b0 \cf4 .roomJid]) \{\
  18530. \f2\b \cf8 if
  18531. \f0\b0 \cf4 (model.type == \cf7 1\cf4 ) \{\
  18532. JXLabelObject *obj = [JXLabelObject sharedInstance];\
  18533. obj.roomJid =
  18534. \f2\b \cf8 self
  18535. \f0\b0 \cf4 .roomJid;\
  18536. NSString *groupAnnouncement =
  18537. \f2\b \cf8 nil
  18538. \f0\b0 \cf4 ;\
  18539. NSString *selectItem = [obj fetchGroupAnnouncementSelectItemFromLocal];\
  18540. NSArray *response = [
  18541. \f2\b \cf8 self
  18542. \f0\b0 \cf4 dictionaryWithJsonString: model.content];\
  18543. NSMutableArray *modelArray = [NSMutableArray array];\
  18544. \f2\b \cf8 for
  18545. \f0\b0 \cf4 (NSDictionary *dict
  18546. \f2\b \cf8 in
  18547. \f0\b0 \cf4 response) \{\
  18548. [JLSelectModel mj_setupObjectClassInArray:^NSDictionary *\{\
  18549. \f2\b \cf8 return
  18550. \f0\b0 \cf4 \cf7 @\{\cf4 \
  18551. \cf6 @"data"\cf4 : \cf6 @"JLSelectItemModel"\cf4 \
  18552. \cf7 \}\cf4 ;\
  18553. \}];\
  18554. JLSelectModel *model = [JLSelectModel mj_objectWithKeyValues:dict];\
  18555. [modelArray addObject:model];\
  18556. \}\
  18557. \cf2 //
  18558. \f1 \'b2\'f0\'b7\'d6
  18559. \f0 \cf4 \
  18560. \f2\b \cf8 if
  18561. \f0\b0 \cf4 (selectItem) \{\
  18562. NSArray *temp = [selectItem componentsSeparatedByString:\cf6 @"-"\cf4 ];\
  18563. NSString *first = temp.firstObject;\
  18564. NSString *last = temp.lastObject;\
  18565. \
  18566. \f2\b \cf8 for
  18567. \f0\b0 \cf4 (JLSelectModel *model
  18568. \f2\b \cf8 in
  18569. \f0\b0 \cf4 modelArray) \{\
  18570. \f2\b \cf8 if
  18571. \f0\b0 \cf4 ([model.name isEqualToString:first]) \{\
  18572. \f2\b \cf8 for
  18573. \f0\b0 \cf4 (JLSelectItemModel *selectItemModel
  18574. \f2\b \cf8 in
  18575. \f0\b0 \cf4 model.data) \{\
  18576. \f2\b \cf8 if
  18577. \f0\b0 \cf4 ([selectItemModel.subName isEqualToString:last]) \{\
  18578. groupAnnouncement = selectItemModel.content;\
  18579. \
  18580. NSString *titleName = [NSString stringWithFormat:\cf6 @" %@"\cf4 ,selectItemModel.subName];\
  18581. [_showTopView.caizongBtn setTitle:titleName forState:UIControlStateNormal];\
  18582. _showTopView.selectItemModel=selectItemModel;\
  18583. \
  18584. \
  18585. \}\
  18586. \}\
  18587. \}\
  18588. \
  18589. \}\
  18590. \
  18591. \}\
  18592. \
  18593. \
  18594. \}\
  18595. \
  18596. \f2\b \cf8 if
  18597. \f0\b0 \cf4 (_strURLGoback.length==\cf7 0\cf4 ) \{\
  18598. \f2\b \cf8 return
  18599. \f0\b0 \cf4 ;\
  18600. \}\
  18601. \f2\b \cf8 if
  18602. \f0\b0 \cf4 (model.type == \cf7 0\cf4 ) \{\
  18603. \cf2 //
  18604. \f1 \'b5\'da\'d2\'bb\'b4\'ce\'c9\'e8\'d6\'c3
  18605. \f0 \cf4 \
  18606. [
  18607. \f2\b \cf8 self
  18608. \f0\b0 \cf4 hideKeyboard:
  18609. \f2\b \cf8 YES
  18610. \f0\b0 \cf4 ];\
  18611. \f2\b \cf8 if
  18612. \f0\b0 \cf4 (model.content.length<=\cf7 5\cf4 )\{\
  18613. \f2\b \cf8 return
  18614. \f0\b0 \cf4 ;\
  18615. \}\
  18616. \
  18617. \f2\b \cf8 if
  18618. \f0\b0 \cf4 ([g_default boolForKey:kLongComePushIsFirstSetUp] != \cf7 1\cf4 )\{\
  18619. [
  18620. \f2\b \cf8 self
  18621. \f0\b0 \cf4 showAdAlertViewImageString:\cf6 @"ad_long.gif"\cf4 linkUrl:model.link audio:\cf6 @"houjia.mp3"\cf4 duration:\cf7 1\cf4 content:model.content showCancelButton:
  18622. \f2\b \cf8 NO
  18623. \f0\b0 \cf4 type:(DYAdModelTypeLongAnimation) success:
  18624. \f2\b \cf8 NO
  18625. \f0\b0 \cf4 ];\
  18626. \}
  18627. \f2\b \cf8 else
  18628. \f0\b0 \cf4 \{\
  18629. \f2\b \cf8 if
  18630. \f0\b0 \cf4 ([g_default boolForKey:kLongComePush] == \cf7 0\cf4 )\{\
  18631. [
  18632. \f2\b \cf8 self
  18633. \f0\b0 \cf4 showAdAlertViewImageString:\cf6 @"ad_long.gif"\cf4 linkUrl:model.link audio:\cf6 @"houjia.mp3"\cf4 duration:\cf7 4\cf4 content:model.content showCancelButton:
  18634. \f2\b \cf8 NO
  18635. \f0\b0 \cf4 type:(DYAdModelTypeLongAnimation) success:
  18636. \f2\b \cf8 NO
  18637. \f0\b0 \cf4 ];\
  18638. \}\
  18639. \}\
  18640. \
  18641. \
  18642. \}\
  18643. \f2\b \cf8 if
  18644. \f0\b0 \cf4 (model.type == \cf7 3\cf4 ) \{\
  18645. [
  18646. \f2\b \cf8 self
  18647. \f0\b0 \cf4 hideKeyboard:
  18648. \f2\b \cf8 YES
  18649. \f0\b0 \cf4 ];\
  18650. [
  18651. \f2\b \cf8 self
  18652. \f0\b0 \cf4 showAdAlertViewImageString:\cf6 @"ad_treasureBox.png"\cf4 linkUrl:
  18653. \f2\b \cf8 nil
  18654. \f0\b0 \cf4 audio:
  18655. \f2\b \cf8 nil
  18656. \f0\b0 \cf4 duration:\cf7 0\cf4 content:\cf6 @"
  18657. \f1 \'b9\'a7\'cf\'b2\'c4\'fa\'bb\'f1\'b5\'c3\'d2\'bb\'b8\'f6\'b1\'a6\'cf\'e4
  18658. \f0 !"\cf4 showCancelButton:
  18659. \f2\b \cf8 YES
  18660. \f0\b0 \cf4 type:(DYAdModelTypeGiftOpen) success:
  18661. \f2\b \cf8 NO
  18662. \f0\b0 \cf4 ];\
  18663. \}\
  18664. \
  18665. \
  18666. \}\
  18667. \}\
  18668. \
  18669. \cf2 //
  18670. \f1 \'c8\'ba\'cd\'b7\'cf\'ce\'bf\'aa\'b9\'d8\'bf\'d8\'d6\'c6
  18671. \f0 \cf4 \
  18672. - (
  18673. \f2\b \cf8 void
  18674. \f0\b0 \cf4 )\cf11 roomIsOpenIntegral\cf4 :(NSNotification *)notifacation \{\
  18675. NSString* p = (NSString *)notifacation.object;\
  18676. \
  18677. \f2\b \cf8 if
  18678. \f0\b0 \cf4 ([p intValue] == \cf7 0\cf4 ) \{\
  18679. \f2\b \cf8 self
  18680. \f0\b0 \cf4 .isOpenIntegral =
  18681. \f2\b \cf8 NO
  18682. \f0\b0 \cf4 ;\
  18683. \}
  18684. \f2\b \cf8 else
  18685. \f0\b0 \cf4 \{\
  18686. \f2\b \cf8 self
  18687. \f0\b0 \cf4 .isOpenIntegral =
  18688. \f2\b \cf8 YES
  18689. \f0\b0 \cf4 ;\
  18690. \}\
  18691. [
  18692. \f2\b \cf8 self
  18693. \f0\b0 \cf4 refresh:
  18694. \f2\b \cf8 nil
  18695. \f0\b0 \cf4 ];\
  18696. [_table reloadData];\
  18697. \}\
  18698. \
  18699. \cf2 //
  18700. \f1 \'c8\'ba\'d7\'e9\'cf\'fb\'cf\'a2\'b7\'c0\'b2\'e2\'bb\'d8
  18701. \f0 \cf4 \
  18702. - (
  18703. \f2\b \cf8 void
  18704. \f0\b0 \cf4 )\cf11 roomIsisAttritionRecall\cf4 :(NSNotification *)notifacation \{\
  18705. NSString* p = (NSString *)notifacation.object;\
  18706. \cf2 //
  18707. \f1 \'c8\'ba\'d7\'e9\'cf\'fb\'cf\'a2\'b7\'c0\'b2\'e2\'bb\'d8
  18708. \f0 \cf4 \
  18709. \f2\b \cf8 if
  18710. \f0\b0 \cf4 ([p intValue] == \cf7 0\cf4 ) \{\
  18711. \f2\b \cf8 self
  18712. \f0\b0 \cf4 .isAttritionRecall =
  18713. \f2\b \cf8 NO
  18714. \f0\b0 \cf4 ;\
  18715. \}
  18716. \f2\b \cf8 else
  18717. \f0\b0 \cf4 \{\
  18718. \f2\b \cf8 self
  18719. \f0\b0 \cf4 .isAttritionRecall =
  18720. \f2\b \cf8 YES
  18721. \f0\b0 \cf4 ;\
  18722. \}\
  18723. \cf2 // [g_server roomGetRoom:self.roomId toView:self];\cf4 \
  18724. [
  18725. \f2\b \cf8 self
  18726. \f0\b0 \cf4 refresh:
  18727. \f2\b \cf8 nil
  18728. \f0\b0 \cf4 ];\
  18729. \}\
  18730. \
  18731. -(
  18732. \f2\b \cf8 BOOL
  18733. \f0\b0 \cf4 )\cf11 showDisableSay\cf4 \{\
  18734. \
  18735. memberData *data = [
  18736. \f2\b \cf8 self
  18737. \f0\b0 \cf4 .room getMember:g_myself.userId];\
  18738. \cf2 // if([[NSDate date] timeIntervalSince1970] <= _disableSay && [data.role intValue] != 1)\{\cf4 \
  18739. \f2\b \cf8 if
  18740. \f0\b0 \cf4 ([[NSDate date] timeIntervalSince1970] <= _disableSay && !_isAdmin)\{\
  18741. NSString* s = [TimeUtil formatDate:[NSDate dateWithTimeIntervalSince1970:_disableSay] format:\cf6 @"yyyy-MM-dd HH:mm"\cf4 ];\
  18742. [g_App showAlert:[NSString stringWithFormat:\cf6 @"%@%@"\cf4 ,s,Localized(\cf6 @"JXChatVC_GagTime"\cf4 )]];\
  18743. [
  18744. \f2\b \cf8 self
  18745. \f0\b0 \cf4 hideKeyboard:
  18746. \f2\b \cf8 NO
  18747. \f0\b0 \cf4 ];\
  18748. \f2\b \cf8 return
  18749. \f0\b0 \cf4
  18750. \f2\b \cf8 YES
  18751. \f0\b0 \cf4 ;\
  18752. \}\
  18753. \f2\b \cf8 return
  18754. \f0\b0 \cf4
  18755. \f2\b \cf8 NO
  18756. \f0\b0 \cf4 ;\
  18757. \}\
  18758. \
  18759. -(
  18760. \f2\b \cf8 void
  18761. \f0\b0 \cf4 )\cf11 onLocation\cf4 \{\
  18762. [
  18763. \f2\b \cf8 self
  18764. \f0\b0 \cf4 hideKeyboard:
  18765. \f2\b \cf8 YES
  18766. \f0\b0 \cf4 ];\
  18767. \f2\b \cf8 if
  18768. \f0\b0 \cf4 ([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized)) \{\
  18769. \cf2 //
  18770. \f1 \'b6\'a8\'ce\'bb\'b9\'a6\'c4\'dc\'bf\'c9\'d3\'c3
  18771. \f0 \cf4 \
  18772. \f2\b \cf8 if
  18773. \f0\b0 \cf4 ([
  18774. \f2\b \cf8 self
  18775. \f0\b0 \cf4 showDisableSay])\
  18776. \f2\b \cf8 return
  18777. \f0\b0 \cf4 ;\
  18778. \f2\b \cf8 if
  18779. \f0\b0 \cf4 ([
  18780. \f2\b \cf8 self
  18781. \f0\b0 \cf4 sendMsgCheck])\{\
  18782. \f2\b \cf8 return
  18783. \f0\b0 \cf4 ;\
  18784. \}\
  18785. \
  18786. \f2\b \cf8 if
  18787. \f0\b0 \cf4 (g_server.latitude <= \cf7 0\cf4 && g_server.longitude <= \cf7 0\cf4 ) \{\
  18788. g_server.latitude = \cf7 22.6\cf4 ;\
  18789. g_server.longitude = \cf7 114.04\cf4 ;\
  18790. \}\
  18791. \
  18792. \f2\b \cf8 if
  18793. \f0\b0 \cf4 (g_config.isChina) \{\
  18794. _locVC = [JXLocationVC alloc];\
  18795. _locVC.isSend =
  18796. \f2\b \cf8 YES
  18797. \f0\b0 \cf4 ;\
  18798. _locVC.locationType = JXLocationTypeCurrentLocation;\
  18799. _locVC.delegate =
  18800. \f2\b \cf8 self
  18801. \f0\b0 \cf4 ;\
  18802. _locVC.didSelect =
  18803. \f2\b \cf8 @selector
  18804. \f0\b0 \cf4 (onSelLocation:);\
  18805. \cf2 // self.locationVC.locations = [[NSMutableArray alloc]init];\cf4 \
  18806. \
  18807. \cf2 // JXMapData* p = [[JXMapData alloc]init];\cf4 \
  18808. \cf2 // p.latitude = [NSString stringWithFormat:@"%f",g_server.latitude];\cf4 \
  18809. \cf2 // p.longitude = [NSString stringWithFormat:@"%f",g_server.longitude];\cf4 \
  18810. \cf2 // p.title = g_server.locationCity;\cf4 \
  18811. \cf2 // p.subtitle = g_server.locationAddress;\cf4 \
  18812. \cf2 // [self.locationVC.locations addObject:p];\cf4 \
  18813. \cf2 // [p release];\cf4 \
  18814. \
  18815. _locVC = [_locVC init];\
  18816. \cf2 // self.locationVC.locY = g_server.latitude;\cf4 \
  18817. \cf2 // self.locationVC.locX = g_server.longitude;\cf4 \
  18818. \cf2 // [g_window addSubview:_locVC.view];\cf4 \
  18819. [g_navigation pushViewController:_locVC animated:
  18820. \f2\b \cf8 YES
  18821. \f0\b0 \cf4 ];\
  18822. \}
  18823. \f2\b \cf8 else
  18824. \f0\b0 \cf4 \{\
  18825. _gooMap = [JXGoogleMapVC alloc];\
  18826. _gooMap.isSend =
  18827. \f2\b \cf8 YES
  18828. \f0\b0 \cf4 ;\
  18829. _gooMap.delegate =
  18830. \f2\b \cf8 self
  18831. \f0\b0 \cf4 ;\
  18832. _gooMap.locationType = JXGooLocationTypeCurrentLocation;\
  18833. _gooMap.didSelect =
  18834. \f2\b \cf8 @selector
  18835. \f0\b0 \cf4 (onSelLocation:);\
  18836. \
  18837. _gooMap = [_gooMap init];\
  18838. [g_navigation pushViewController:_gooMap animated:
  18839. \f2\b \cf8 YES
  18840. \f0\b0 \cf4 ];\
  18841. \}\
  18842. \
  18843. \}
  18844. \f2\b \cf8 else
  18845. \f0\b0 \cf4
  18846. \f2\b \cf8 if
  18847. \f0\b0 \cf4 ([CLLocationManager authorizationStatus] ==kCLAuthorizationStatusDenied) \{\
  18848. \cf2 //
  18849. \f1 \'b6\'a8\'ce\'bb\'b2\'bb\'c4\'dc\'d3\'c3
  18850. \f0 \cf4 \
  18851. [g_App showAlert:[NSString stringWithFormat:Localized(\cf6 @"JX_NoLocationPermissions"\cf4 ),APP_NAME]];\
  18852. \}\
  18853. \
  18854. \}\
  18855. \
  18856. \
  18857. -(
  18858. \f2\b \cf8 void
  18859. \f0\b0 \cf4 )\cf11 onSelLocation\cf4 :(JXMapData*)location\{\
  18860. \f2\b \cf8 if
  18861. \f0\b0 \cf4 (_isGroupSendCancel) \{\
  18862. \f2\b \cf8 return
  18863. \f0\b0 \cf4 ;\
  18864. \}\
  18865. \cf2 //
  18866. \f1 \'c9\'cf\'b4\'ab\'cd\'bc\'c6\'ac
  18867. \f0 \cf4 \
  18868. \f2\b \cf8 if
  18869. \f0\b0 \cf4 (location.imageUrl) \{\
  18870. \f2\b \cf8 self
  18871. \f0\b0 \cf4 .isMapMsg =
  18872. \f2\b \cf8 YES
  18873. \f0\b0 \cf4 ;\
  18874. \f2\b \cf8 self
  18875. \f0\b0 \cf4 .mapData = location;\
  18876. \f2\b \cf8 if
  18877. \f0\b0 \cf4 (
  18878. \f2\b \cf8 self
  18879. \f0\b0 \cf4 .isGroupMessages) \{\
  18880. \f2\b \cf8 if
  18881. \f0\b0 \cf4 (!
  18882. \f2\b \cf8 self
  18883. \f0\b0 \cf4 .waitGroupSendView) \{\
  18884. [
  18885. \f2\b \cf8 self
  18886. \f0\b0 \cf4 addWaitGroupSendViewWithMsgNum:\cf7 1\cf4 withType:groupsend_msgType_location];\
  18887. _onceSendNum = \cf7 10\cf4 ;\
  18888. \}\
  18889. \}\
  18890. [g_server uploadFile:location.imageUrl validTime:
  18891. \f2\b \cf8 self
  18892. \f0\b0 \cf4 .chatPerson.chatRecordTimeOut messageId:
  18893. \f2\b \cf8 nil
  18894. \f0\b0 \cf4 toView:
  18895. \f2\b \cf8 self
  18896. \f0\b0 \cf4 ];\
  18897. \}\
  18898. \}\
  18899. \
  18900. \cf2 //- (void)groupSendLocation:(NSMutableArray *)msgArray\{\cf4 \
  18901. \cf2 // NSDictionary *p = msgArray.lastObject;\cf4 \
  18902. \cf2 // if (_isGroupSendCancel) \{\cf4 \
  18903. \cf2 // return;\cf4 \
  18904. \cf2 // \}\cf4 \
  18905. \cf2 // NSString *userId = self.userIds[self.groupMessagesIndex];\cf4 \
  18906. \cf2 //\cf4 \
  18907. \cf2 // NSString* msgId = [dict objectForKey:@"oUrl"];\cf4 \
  18908. \cf2 // msgId = [[msgId lastPathComponent] stringByDeletingPathExtension];\cf4 \
  18909. \cf2 // NSString* oFileName = [dict objectForKey:@"oFileName"];\cf4 \
  18910. \cf2 //\cf4 \
  18911. \cf2 // // NSString *userId = self.userIds[self.groupMessagesIndex];\cf4 \
  18912. \cf2 // // NSString *userName = self.userNames[self.groupMessagesIndex];\cf4 \
  18913. \cf2 //\cf4 \
  18914. \cf2 // JXMessageObject* p=nil;\cf4 \
  18915. \cf2 // int found=-1;\cf4 \
  18916. \cf2 // for(int i=(int)[_array count]-1;i>=0;i--)\{\cf4 \
  18917. \cf2 // p = [_array objectAtIndex:i];\cf4 \
  18918. \cf2 // if([p.type intValue]==kWCMessageTypeLocation)\cf4 \
  18919. \cf2 // if([[p.fileName lastPathComponent] isEqualToString:[oFileName lastPathComponent]])\{\cf4 \
  18920. \cf2 // found = i;\cf4 \
  18921. \cf2 // break;\cf4 \
  18922. \cf2 // \}\cf4 \
  18923. \cf2 // if([p.type intValue]==kWCMessageTypeFile && ![p.isUpload boolValue])\cf4 \
  18924. \cf2 // if([[p.fileName lastPathComponent] isEqualToString:[oFileName lastPathComponent]])\{\cf4 \
  18925. \cf2 // found = i;\cf4 \
  18926. \cf2 // break;\cf4 \
  18927. \cf2 // \}\cf4 \
  18928. \cf2 // if (p.content.length > 0) \{\cf4 \
  18929. \cf2 // if ([oFileName rangeOfString:p.content].location != NSNotFound) \{\cf4 \
  18930. \cf2 // found = i;\cf4 \
  18931. \cf2 // break;\cf4 \
  18932. \cf2 // \}\cf4 \
  18933. \cf2 // \}\cf4 \
  18934. \cf2 // // if([p.content isEqualToString:msgId])\{\cf4 \
  18935. \cf2 // // found = i;\cf4 \
  18936. \cf2 // // break;\cf4 \
  18937. \cf2 // // \}\cf4 \
  18938. \cf2 // p = nil;\cf4 \
  18939. \cf2 // \}\cf4 \
  18940. \cf2 // if(found>=0)\{//
  18941. \f1 \'d5\'d2\'b5\'bd\'cf\'fb\'cf\'a2\'cc\'e5
  18942. \f0 \cf4 \
  18943. \cf2 // if([[dict objectForKey:@"status"] intValue] != 1)\{\cf4 \
  18944. \cf2 // NSLog(@"doUploadFaire");\cf4 \
  18945. \cf2 // [p updateIsSend:transfer_status_no];\cf4 \
  18946. \cf2 // JXBaseChatCell* cell = [self getCell:found];\cf4 \
  18947. \cf2 // [cell drawIsSend];\cf4 \
  18948. \cf2 // cell = nil;\cf4 \
  18949. \cf2 // return;\cf4 \
  18950. \cf2 // \}\cf4 \
  18951. \cf2 // if (self.isGroupMessages) \{\cf4 \
  18952. \cf2 // p.isGroupSend = YES;\cf4 \
  18953. \cf2 // \}\cf4 \
  18954. \cf2 // NSLog(@"doSendAfterUpload");\cf4 \
  18955. \cf2 // p.content = [dict objectForKey:@"oUrl"];\cf4 \
  18956. \cf2 // // if (self.isGroupMessages) \{\cf4 \
  18957. \cf2 // // p.toUserId = userId;\cf4 \
  18958. \cf2 // // \}\cf4 \
  18959. \cf2 // [p updateIsUpload:YES];\cf4 \
  18960. \cf2 // [g_xmpp sendMessage:p roomName:self.roomJid];//
  18961. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  18962. \f0 \cf4 \
  18963. \cf2 // // [self.tableView reloadData];\cf4 \
  18964. \cf2 // \}\cf4 \
  18965. \cf2 //\cf4 \
  18966. \cf2 // p = nil;\cf4 \
  18967. \cf2 // self.groupMessagesIndex ++;\cf4 \
  18968. \cf2 // if (self.groupMessagesIndex < self.userIds.count) \{\cf4 \
  18969. \cf2 // if (self.groupMessagesIndex % _onceSendNum == 0) \{\cf4 \
  18970. \cf2 // return;\cf4 \
  18971. \cf2 // \}else\{\cf4 \
  18972. \cf2 // [self collectionMsgSendAll:allArray];\cf4 \
  18973. \cf2 // \}\cf4 \
  18974. \cf2 // \}else if (self.userIds)\{\cf4 \
  18975. \cf2 // self.groupMessagesIndex = 0;\cf4 \
  18976. \cf2 // return;\cf4 \
  18977. \cf2 // \}\cf4 \
  18978. \cf2 // return;\cf4 \
  18979. \cf2 //\}\cf4 \
  18980. \
  18981. - (
  18982. \f2\b \cf8 void
  18983. \f0\b0 \cf4 )\cf11 sendMapMsgWithDict\cf4 :(NSDictionary *)dict \{\
  18984. NSString *userId =
  18985. \f2\b \cf8 self
  18986. \f0\b0 \cf4 .userIds[
  18987. \f2\b \cf8 self
  18988. \f0\b0 \cf4 .groupMessagesIndex];\
  18989. \cf2 // NSString *userName = self.userNames[self.groupMessagesIndex];\cf4 \
  18990. \
  18991. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  18992. msg.timeSend = [NSDate date];\
  18993. msg.fromUserId = MY_USER_ID;\
  18994. msg.fromUserName = MY_USER_NAME;\
  18995. \f2\b \cf8 if
  18996. \f0\b0 \cf4 ([
  18997. \f2\b \cf8 self
  18998. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  18999. msg.toUserId =
  19000. \f2\b \cf8 self
  19001. \f0\b0 \cf4 .roomJid;\
  19002. msg.isGroup =
  19003. \f2\b \cf8 YES
  19004. \f0\b0 \cf4 ;\
  19005. msg.fromUserName = _userNickName;\
  19006. \}\
  19007. \f2\b \cf8 else
  19008. \f0\b0 \cf4 \{\
  19009. \f2\b \cf8 if
  19010. \f0\b0 \cf4 (
  19011. \f2\b \cf8 self
  19012. \f0\b0 \cf4 .isGroupMessages) \{\
  19013. msg.toUserId = userId;\
  19014. msg.isGroupSend =
  19015. \f2\b \cf8 YES
  19016. \f0\b0 \cf4 ;\
  19017. \f2\b \cf8 if
  19018. \f0\b0 \cf4 ((
  19019. \f2\b \cf8 self
  19020. \f0\b0 \cf4 .groupMessagesIndex+\cf7 1\cf4 ) % _onceSendNum == \cf7 0\cf4 ) \{\
  19021. msg.isLastGroupSend =
  19022. \f2\b \cf8 YES
  19023. \f0\b0 \cf4 ;\
  19024. \}\
  19025. \}
  19026. \f2\b \cf8 else
  19027. \f0\b0 \cf4 \{\
  19028. msg.toUserId = chatPerson.userId;\
  19029. \}\
  19030. msg.isGroup =
  19031. \f2\b \cf8 NO
  19032. \f0\b0 \cf4 ;\
  19033. \}\
  19034. msg.location_x = [NSNumber numberWithDouble:[
  19035. \f2\b \cf8 self
  19036. \f0\b0 \cf4 .mapData.latitude doubleValue]];\
  19037. msg.location_y = [NSNumber numberWithDouble:[
  19038. \f2\b \cf8 self
  19039. \f0\b0 \cf4 .mapData.longitude doubleValue]];\
  19040. msg.type = [NSNumber numberWithInt:kWCMessageTypeLocation];\
  19041. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  19042. msg.isRead = [NSNumber numberWithBool:
  19043. \f2\b \cf8 NO
  19044. \f0\b0 \cf4 ];\
  19045. \cf2 // msg.isUpload = [NSNumber numberWithBool:NO];\cf4 \
  19046. \cf2 // msg.content = [NSString stringWithFormat:@"%@",location.subtitle];\cf4 \
  19047. msg.objectId = [NSString stringWithFormat:\cf6 @"%@"\cf4 ,
  19048. \f2\b \cf8 self
  19049. \f0\b0 \cf4 .mapData.subtitle];\
  19050. \
  19051. msg.isReadDel = [NSNumber numberWithInt:
  19052. \f2\b \cf8 NO
  19053. \f0\b0 \cf4 ];\
  19054. \
  19055. \cf2 //
  19056. \f1 \'c9\'cf\'b4\'ab\'cd\'bc\'c6\'ac
  19057. \f0 \cf4 \
  19058. \cf2 // if (location.imageUrl) \{\cf4 \
  19059. \cf2 // [g_server uploadFile:location.imageUrl toView:self];\cf4 \
  19060. \cf2 // msg.fileName = location.imageUrl;\cf4 \
  19061. \cf2 // \}else\{\cf4 \
  19062. msg.content = [dict objectForKey:\cf6 @"oUrl"\cf4 ];\
  19063. \cf2 // BOOL isShowGoo = [g_myself.isUseGoogleMap intValue] > 0 ? YES : NO;\cf4 \
  19064. \cf2 // if (isShowGoo) \{\cf4 \
  19065. \cf2 // msg.content = [[NSString stringWithFormat:@"\cf17 http://maps.googleapis.com/maps/api/staticmap?center=%@,%@&size=640x480&markers=color:blue%7Clabel:S%7C62.107733,-145.541936&zoom=15\cf2 ",location.latitude, location.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];\cf4 \
  19066. \cf2 // \} else \{\cf4 \
  19067. \cf2 // msg.content = [NSString stringWithFormat:@"\cf17 http://api.map.baidu.com/staticimage?width=640&height=480&center=%@,%@&zoom=15\cf2 ",location.longitude, location.latitude];\cf4 \
  19068. \cf2 // \}\cf4 \
  19069. msg.fileName = msg.content;\
  19070. [g_xmpp sendMessage:msg roomName:
  19071. \f2\b \cf8 self
  19072. \f0\b0 \cf4 .roomJid];\cf2 //
  19073. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  19074. \f0 \cf4 \
  19075. \cf2 // \}\cf4 \
  19076. [msg insert:
  19077. \f2\b \cf8 self
  19078. \f0\b0 \cf4 .roomJid];\
  19079. [
  19080. \f2\b \cf8 self
  19081. \f0\b0 \cf4 showOneMsg:msg];\
  19082. \
  19083. \f2\b \cf8 if
  19084. \f0\b0 \cf4 (
  19085. \f2\b \cf8 self
  19086. \f0\b0 \cf4 .isGroupMessages) \{\
  19087. \f2\b \cf8 self
  19088. \f0\b0 \cf4 .groupMessagesIndex ++;\
  19089. \f2\b \cf8 if
  19090. \f0\b0 \cf4 (
  19091. \f2\b \cf8 self
  19092. \f0\b0 \cf4 .groupMessagesIndex % _onceSendNum == \cf7 0\cf4 ) \{\
  19093. \f2\b \cf8 return
  19094. \f0\b0 \cf4 ;\
  19095. \}\
  19096. \f2\b \cf8 if
  19097. \f0\b0 \cf4 (
  19098. \f2\b \cf8 self
  19099. \f0\b0 \cf4 .groupMessagesIndex <
  19100. \f2\b \cf8 self
  19101. \f0\b0 \cf4 .userIds.count) \{\
  19102. [
  19103. \f2\b \cf8 self
  19104. \f0\b0 \cf4 onSelLocation:
  19105. \f2\b \cf8 self
  19106. \f0\b0 \cf4 .mapData];\
  19107. \}
  19108. \f2\b \cf8 else
  19109. \f0\b0 \cf4
  19110. \f2\b \cf8 if
  19111. \f0\b0 \cf4 (
  19112. \f2\b \cf8 self
  19113. \f0\b0 \cf4 .userIds)\{\
  19114. \f2\b \cf8 self
  19115. \f0\b0 \cf4 .groupMessagesIndex = \cf7 0\cf4 ;\
  19116. \f2\b \cf8 return
  19117. \f0\b0 \cf4 ;\
  19118. \}\
  19119. \f2\b \cf8 return
  19120. \f0\b0 \cf4 ;\
  19121. \}\
  19122. \f2\b \cf8 self
  19123. \f0\b0 \cf4 .isMapMsg =
  19124. \f2\b \cf8 NO
  19125. \f0\b0 \cf4 ;\
  19126. \}\
  19127. \
  19128. -(
  19129. \f2\b \cf8 void
  19130. \f0\b0 \cf4 )\cf11 onCard\cf4 \{\
  19131. \
  19132. [
  19133. \f2\b \cf8 self
  19134. \f0\b0 \cf4 hideKeyboard:
  19135. \f2\b \cf8 YES
  19136. \f0\b0 \cf4 ];\
  19137. \f2\b \cf8 if
  19138. \f0\b0 \cf4 (
  19139. \f2\b \cf8 self
  19140. \f0\b0 \cf4 .roomJid.length > \cf7 0\cf4 && ![
  19141. \f2\b \cf8 self
  19142. \f0\b0 \cf4 .chatPerson.allowSendCard boolValue] && !_isAdmin) \{\
  19143. [g_App showAlert:Localized(\cf6 @"JX_GroupDisableSendCard"\cf4 )];\
  19144. \f2\b \cf8 return
  19145. \f0\b0 \cf4 ;\
  19146. \}\
  19147. \
  19148. \f2\b \cf8 if
  19149. \f0\b0 \cf4 ([
  19150. \f2\b \cf8 self
  19151. \f0\b0 \cf4 showDisableSay])\
  19152. \f2\b \cf8 return
  19153. \f0\b0 \cf4 ;\
  19154. \f2\b \cf8 if
  19155. \f0\b0 \cf4 ([
  19156. \f2\b \cf8 self
  19157. \f0\b0 \cf4 sendMsgCheck])\{\
  19158. \f2\b \cf8 return
  19159. \f0\b0 \cf4 ;\
  19160. \}\
  19161. \
  19162. JXSelectFriendsVC* vc = [JXSelectFriendsVC alloc];\
  19163. vc.isNewRoom =
  19164. \f2\b \cf8 NO
  19165. \f0\b0 \cf4 ;\
  19166. vc.chatRoom =
  19167. \f2\b \cf8 nil
  19168. \f0\b0 \cf4 ;\
  19169. vc.room =
  19170. \f2\b \cf8 nil
  19171. \f0\b0 \cf4 ;\
  19172. vc.isShowMySelf =
  19173. \f2\b \cf8 YES
  19174. \f0\b0 \cf4 ;\
  19175. vc.delegate =
  19176. \f2\b \cf8 self
  19177. \f0\b0 \cf4 ;\
  19178. vc.didSelect =
  19179. \f2\b \cf8 @selector
  19180. \f0\b0 \cf4 (onAfterAddMember:);\
  19181. vc = [vc init];\
  19182. _strURLGoback=\cf6 @""\cf4 ;\
  19183. \cf2 // [g_window addSubview:vc.view];\cf4 \
  19184. [g_navigation pushViewController:vc animated:
  19185. \f2\b \cf8 YES
  19186. \f0\b0 \cf4 ];\
  19187. \
  19188. \}\
  19189. \
  19190. -(
  19191. \f2\b \cf8 void
  19192. \f0\b0 \cf4 )\cf11 onAfterAddMember\cf4 :(JXSelectFriendsVC*)vc\{\
  19193. \
  19194. NSString *userId =
  19195. \f2\b \cf8 self
  19196. \f0\b0 \cf4 .userIds[
  19197. \f2\b \cf8 self
  19198. \f0\b0 \cf4 .groupMessagesIndex];\
  19199. \cf2 // NSString *userName = self.userNames[self.groupMessagesIndex];\cf4 \
  19200. \
  19201. \f2\b \cf8 if
  19202. \f0\b0 \cf4 (
  19203. \f2\b \cf8 self
  19204. \f0\b0 \cf4 .isGroupMessages) \{\
  19205. \f2\b \cf8 if
  19206. \f0\b0 \cf4 (_isGroupSendCancel) \{\
  19207. \f2\b \cf8 return
  19208. \f0\b0 \cf4 ;\
  19209. \}\
  19210. \f2\b \cf8 if
  19211. \f0\b0 \cf4 (
  19212. \f2\b \cf8 self
  19213. \f0\b0 \cf4 .groupMessagesIndex == \cf7 0\cf4 ) \{\
  19214. [
  19215. \f2\b \cf8 self
  19216. \f0\b0 \cf4 addWaitGroupSendViewWithMsgNum:vc.set.count withType:groupsend_msgType_card];\
  19217. \f2\b \cf8 self
  19218. \f0\b0 \cf4 .groupSendMsgArray = [NSMutableArray arrayWithObject:vc];\
  19219. _onceSendNum = \cf7 20\cf4 ;\
  19220. \}\
  19221. \}\
  19222. NSInteger i = \cf7 0\cf4 ;\
  19223. \f2\b \cf8 BOOL
  19224. \f0\b0 \cf4 isLastGroupSend =
  19225. \f2\b \cf8 NO
  19226. \f0\b0 \cf4 ;\
  19227. \f2\b \cf8 for
  19228. \f0\b0 \cf4 (NSNumber* n
  19229. \f2\b \cf8 in
  19230. \f0\b0 \cf4 vc.set)\{\
  19231. i++;\
  19232. JXUserObject *user;\
  19233. \f2\b \cf8 if
  19234. \f0\b0 \cf4 (vc.seekTextField.text.length > \cf7 0\cf4 ) \{\
  19235. user = vc.searchArray[[n intValue] % \cf7 100000\cf4 -\cf7 1\cf4 ];\
  19236. \}
  19237. \f2\b \cf8 else
  19238. \f0\b0 \cf4 \{\
  19239. user = [[vc.letterResultArr objectAtIndex:[n intValue] / \cf7 100000\cf4 -\cf7 1\cf4 ] objectAtIndex:[n intValue] % \cf7 100000\cf4 -\cf7 1\cf4 ];\
  19240. \}\
  19241. \
  19242. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  19243. msg.timeSend = [NSDate date];\
  19244. msg.fromUserId = MY_USER_ID;\
  19245. \f2\b \cf8 if
  19246. \f0\b0 \cf4 ([
  19247. \f2\b \cf8 self
  19248. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  19249. msg.toUserId =
  19250. \f2\b \cf8 self
  19251. \f0\b0 \cf4 .roomJid;\
  19252. msg.isGroup =
  19253. \f2\b \cf8 YES
  19254. \f0\b0 \cf4 ;\
  19255. msg.fromUserName = _userNickName;\
  19256. \}\
  19257. \f2\b \cf8 else
  19258. \f0\b0 \cf4 \{\
  19259. \f2\b \cf8 if
  19260. \f0\b0 \cf4 (
  19261. \f2\b \cf8 self
  19262. \f0\b0 \cf4 .isGroupMessages) \{\
  19263. msg.toUserId = userId;\
  19264. msg.isGroupSend =
  19265. \f2\b \cf8 YES
  19266. \f0\b0 \cf4 ;\
  19267. \f2\b \cf8 if
  19268. \f0\b0 \cf4 ((
  19269. \f2\b \cf8 self
  19270. \f0\b0 \cf4 .groupMessagesIndex + \cf7 1\cf4 ) % _onceSendNum == \cf7 0\cf4 ) \{\
  19271. \f2\b \cf8 if
  19272. \f0\b0 \cf4 (i == vc.set.count) \{\
  19273. msg.isLastGroupSend =
  19274. \f2\b \cf8 YES
  19275. \f0\b0 \cf4 ;\
  19276. isLastGroupSend =
  19277. \f2\b \cf8 YES
  19278. \f0\b0 \cf4 ;\
  19279. \}\
  19280. \}\
  19281. \}
  19282. \f2\b \cf8 else
  19283. \f0\b0 \cf4 \{\
  19284. msg.toUserId = chatPerson.userId;\
  19285. \}\
  19286. msg.isGroup =
  19287. \f2\b \cf8 NO
  19288. \f0\b0 \cf4 ;\
  19289. \}\
  19290. msg.content = user.userNickname;\
  19291. msg.objectId = user.userId;\
  19292. msg.type = [NSNumber numberWithInt:kWCMessageTypeCard];\
  19293. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  19294. msg.isRead = [NSNumber numberWithBool:
  19295. \f2\b \cf8 NO
  19296. \f0\b0 \cf4 ];\
  19297. msg.isReadDel = [NSNumber numberWithInt:
  19298. \f2\b \cf8 NO
  19299. \f0\b0 \cf4 ];\
  19300. \
  19301. [msg insert:
  19302. \f2\b \cf8 self
  19303. \f0\b0 \cf4 .roomJid];\
  19304. [g_xmpp sendMessage:msg roomName:
  19305. \f2\b \cf8 self
  19306. \f0\b0 \cf4 .roomJid];\cf2 //
  19307. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  19308. \f0 \cf4 \
  19309. [
  19310. \f2\b \cf8 self
  19311. \f0\b0 \cf4 showOneMsg:msg];\
  19312. \cf2 // [msg release];\cf4 \
  19313. user =
  19314. \f2\b \cf8 nil
  19315. \f0\b0 \cf4 ;\
  19316. \}\
  19317. \
  19318. \f2\b \cf8 if
  19319. \f0\b0 \cf4 (
  19320. \f2\b \cf8 self
  19321. \f0\b0 \cf4 .isGroupMessages) \{\
  19322. \f2\b \cf8 self
  19323. \f0\b0 \cf4 .groupMessagesIndex ++;\
  19324. \f2\b \cf8 if
  19325. \f0\b0 \cf4 (isLastGroupSend) \{\
  19326. \f2\b \cf8 return
  19327. \f0\b0 \cf4 ;\
  19328. \}\
  19329. \f2\b \cf8 if
  19330. \f0\b0 \cf4 (
  19331. \f2\b \cf8 self
  19332. \f0\b0 \cf4 .groupMessagesIndex <
  19333. \f2\b \cf8 self
  19334. \f0\b0 \cf4 .userIds.count) \{\
  19335. [
  19336. \f2\b \cf8 self
  19337. \f0\b0 \cf4 onAfterAddMember:vc];\
  19338. \}
  19339. \f2\b \cf8 else
  19340. \f0\b0 \cf4
  19341. \f2\b \cf8 if
  19342. \f0\b0 \cf4 (
  19343. \f2\b \cf8 self
  19344. \f0\b0 \cf4 .userIds)\{\
  19345. \f2\b \cf8 self
  19346. \f0\b0 \cf4 .groupMessagesIndex = \cf7 0\cf4 ;\
  19347. \f2\b \cf8 return
  19348. \f0\b0 \cf4 ;\
  19349. \}\
  19350. \f2\b \cf8 return
  19351. \f0\b0 \cf4 ;\
  19352. \}\
  19353. \}\
  19354. \
  19355. -(
  19356. \f2\b \cf8 void
  19357. \f0\b0 \cf4 )\cf11 sendFile\cf4 :(NSString*)file \cf11 userId\cf4 :(NSString *)userId\
  19358. \{\
  19359. \cf2 // NSString *userId = self.userIds[self.groupMessagesIndex];\cf4 \
  19360. \cf2 // NSString *userName = self.userNames[self.groupMessagesIndex];\cf4 \
  19361. \
  19362. \f2\b \cf8 if
  19363. \f0\b0 \cf4 ([file length]>\cf7 0\cf4 ) \{\
  19364. JXMessageObject *msg=[[JXMessageObject alloc] init];\
  19365. msg.timeSend = [NSDate date];\
  19366. msg.fromUserId = MY_USER_ID;\
  19367. \f2\b \cf8 if
  19368. \f0\b0 \cf4 ([
  19369. \f2\b \cf8 self
  19370. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  19371. msg.toUserId =
  19372. \f2\b \cf8 self
  19373. \f0\b0 \cf4 .roomJid;\
  19374. msg.isGroup =
  19375. \f2\b \cf8 YES
  19376. \f0\b0 \cf4 ;\
  19377. msg.fromUserName = _userNickName;\
  19378. \}\
  19379. \f2\b \cf8 else
  19380. \f0\b0 \cf4 \{\
  19381. \f2\b \cf8 if
  19382. \f0\b0 \cf4 (
  19383. \f2\b \cf8 self
  19384. \f0\b0 \cf4 .isGroupMessages) \{\
  19385. msg.toUserId = userId;\
  19386. \}
  19387. \f2\b \cf8 else
  19388. \f0\b0 \cf4 \{\
  19389. msg.toUserId = chatPerson.userId;\
  19390. \}\
  19391. msg.isGroup =
  19392. \f2\b \cf8 NO
  19393. \f0\b0 \cf4 ;\
  19394. \}\
  19395. msg.fileName = file;\
  19396. msg.content = file;\
  19397. msg.type = [NSNumber numberWithInt:kWCMessageTypeFile];\
  19398. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  19399. msg.isRead = [NSNumber numberWithBool:
  19400. \f2\b \cf8 NO
  19401. \f0\b0 \cf4 ];\
  19402. msg.isUpload = [NSNumber numberWithBool:
  19403. \f2\b \cf8 NO
  19404. \f0\b0 \cf4 ];\
  19405. \
  19406. msg.isReadDel = [NSNumber numberWithInt:
  19407. \f2\b \cf8 NO
  19408. \f0\b0 \cf4 ];\
  19409. \
  19410. [msg insert:
  19411. \f2\b \cf8 self
  19412. \f0\b0 \cf4 .roomJid];\
  19413. [
  19414. \f2\b \cf8 self
  19415. \f0\b0 \cf4 showOneMsg:msg];\
  19416. \
  19417. \cf2 // if (self.isGroupMessages) \{\cf4 \
  19418. \cf2 // self.groupMessagesIndex ++;\cf4 \
  19419. \cf2 // if (self.groupMessagesIndex < self.userIds.count) \{\cf4 \
  19420. \cf2 // [self sendFile:file];\cf4 \
  19421. \cf2 // \}else if (self.userIds)\{\cf4 \
  19422. \cf2 // self.groupMessagesIndex = 0;\cf4 \
  19423. \cf2 // return;\cf4 \
  19424. \cf2 // \}\cf4 \
  19425. \cf2 // return;\cf4 \
  19426. \cf2 // \}\cf4 \
  19427. \cf2 // [msg release];\cf4 \
  19428. [g_server uploadFile:file validTime:
  19429. \f2\b \cf8 self
  19430. \f0\b0 \cf4 .chatPerson.chatRecordTimeOut messageId:msg.messageId toView:
  19431. \f2\b \cf8 self
  19432. \f0\b0 \cf4 ];\
  19433. \}\
  19434. \}\
  19435. \cf2 //
  19436. \f1 \'b7\'a2\'ba\'ec\'b0\'fc
  19437. \f0 \cf4 \
  19438. -(
  19439. \f2\b \cf8 void
  19440. \f0\b0 \cf4 )\cf11 sendRedPacket\cf4 :(NSDictionary*)redPacketDict \cf11 withGreet\cf4 :(NSString *)greet\
  19441. \{\
  19442. [
  19443. \f2\b \cf8 self
  19444. \f0\b0 \cf4 hideKeyboard:
  19445. \f2\b \cf8 NO
  19446. \f0\b0 \cf4 ];\
  19447. \f2\b \cf8 if
  19448. \f0\b0 \cf4 ([redPacketDict[\cf6 @"id"\cf4 ] length]>\cf7 0\cf4 ) \{\
  19449. JXMessageObject *msg=[[JXMessageObject alloc] init];\
  19450. msg.timeSend = [NSDate date];\
  19451. msg.fromUserId = MY_USER_ID;\
  19452. \f2\b \cf8 if
  19453. \f0\b0 \cf4 ([
  19454. \f2\b \cf8 self
  19455. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  19456. msg.toUserId =
  19457. \f2\b \cf8 self
  19458. \f0\b0 \cf4 .roomJid;\
  19459. msg.isGroup =
  19460. \f2\b \cf8 YES
  19461. \f0\b0 \cf4 ;\
  19462. msg.fromUserName = _userNickName;\
  19463. \}\
  19464. \f2\b \cf8 else
  19465. \f0\b0 \cf4 \{\
  19466. msg.toUserId = chatPerson.userId;\
  19467. msg.isGroup =
  19468. \f2\b \cf8 NO
  19469. \f0\b0 \cf4 ;\
  19470. \}\
  19471. \
  19472. msg.content = greet;\
  19473. msg.type = [NSNumber numberWithInt:kWCMessageTypeRedPacket];\
  19474. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  19475. msg.isRead = [NSNumber numberWithBool:
  19476. \f2\b \cf8 NO
  19477. \f0\b0 \cf4 ];\
  19478. \cf2 // msg.isUpload = [NSNumber numberWithBool:NO];\cf4 \
  19479. msg.fileName = redPacketDict[\cf6 @"type"\cf4 ];\
  19480. msg.objectId = redPacketDict[\cf6 @"id"\cf4 ];\
  19481. msg.isReadDel = [NSNumber numberWithInt:
  19482. \f2\b \cf8 NO
  19483. \f0\b0 \cf4 ];\
  19484. \
  19485. [msg insert:
  19486. \f2\b \cf8 self
  19487. \f0\b0 \cf4 .roomJid];\
  19488. \
  19489. \cf2 // if (![_orderRedPacketArray containsObject:msg]) \{\cf4 \
  19490. \cf2 // [_orderRedPacketArray addObject:msg];\cf4 \
  19491. \cf2 // \}\cf4 \
  19492. [g_xmpp sendMessage:msg roomName:
  19493. \f2\b \cf8 self
  19494. \f0\b0 \cf4 .roomJid];\cf2 //
  19495. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  19496. \f0 \cf4 \
  19497. [
  19498. \f2\b \cf8 self
  19499. \f0\b0 \cf4 showOneMsg:msg];\
  19500. \cf2 // [msg release];\cf4 \
  19501. \}\
  19502. \cf2 //
  19503. \f1 \'bb\'f1\'c8\'a1\'d3\'e0\'b6\'ee
  19504. \f0 \cf4 \
  19505. [g_server getUserMoenyToView:
  19506. \f2\b \cf8 self
  19507. \f0\b0 \cf4 ];\
  19508. \}\
  19509. \
  19510. -(
  19511. \f2\b \cf8 void
  19512. \f0\b0 \cf4 )\cf11 onSelFile\cf4 :(NSString*)file\{\
  19513. \f2\b \cf8 if
  19514. \f0\b0 \cf4 (
  19515. \f2\b \cf8 self
  19516. \f0\b0 \cf4 .isGroupMessages) \{\
  19517. \cf2 // for (NSInteger i = 0; i < self.userIds.count; i ++) \{\cf4 \
  19518. \cf2 // NSString *userId = self.userIds[i];\cf4 \
  19519. \cf2 //\cf4 \
  19520. \cf2 // //
  19521. \f1 \'b7\'a2\'cb\'cd\'ce\'c4\'bc\'fe\'a3\'ac
  19522. \f0 file
  19523. \f1 \'bd\'f6\'bd\'f6\'b0\'fc\'ba\'ac\'ce\'c4\'bc\'fe\'d4\'da\'b1\'be\'b5\'d8\'b5\'c4\'b5\'d8\'d6\'b7
  19524. \f0 \cf4 \
  19525. \cf2 // [self sendFile:file userId:userId];\cf4 \
  19526. \cf2 // //
  19527. \f1 \'c9\'cf\'b4\'ab\'ce\'c4\'bc\'fe\'b5\'bd\'b7\'fe\'ce\'f1\'c6\'f7
  19528. \f0 \cf4 \
  19529. \cf12 ///
  19530. \f3 \cf2 / [g_server uploadFile:file validTime:self.chatPerson.chatRecordTimeOut messageId:self.curMessageId toView:self];
  19531. \f0 \cf4 \
  19532. \cf2 // \}\cf4 \
  19533. [
  19534. \f2\b \cf8 self
  19535. \f0\b0 \cf4 addWaitGroupSendViewWithMsgNum:\cf7 1\cf4 withType:groupsend_msgType_file];\
  19536. \f2\b \cf8 self
  19537. \f0\b0 \cf4 .groupUploadObjArray = [NSMutableArray arrayWithObject:file];\
  19538. _onceSendNum = \cf7 5\cf4 ;\
  19539. [
  19540. \f2\b \cf8 self
  19541. \f0\b0 \cf4 sendFiles:
  19542. \f2\b \cf8 self
  19543. \f0\b0 \cf4 .groupUploadObjArray];\
  19544. \}
  19545. \f2\b \cf8 else
  19546. \f0\b0 \cf4 \{\
  19547. \cf2 //
  19548. \f1 \'b7\'a2\'cb\'cd\'ce\'c4\'bc\'fe\'a3\'ac
  19549. \f0 file
  19550. \f1 \'bd\'f6\'bd\'f6\'b0\'fc\'ba\'ac\'ce\'c4\'bc\'fe\'d4\'da\'b1\'be\'b5\'d8\'b5\'c4\'b5\'d8\'d6\'b7
  19551. \f0 \cf4 \
  19552. [
  19553. \f2\b \cf8 self
  19554. \f0\b0 \cf4 sendFile:file userId:
  19555. \f2\b \cf8 nil
  19556. \f0\b0 \cf4 ];\
  19557. \cf2 //
  19558. \f1 \'c9\'cf\'b4\'ab\'ce\'c4\'bc\'fe\'b5\'bd\'b7\'fe\'ce\'f1\'c6\'f7
  19559. \f0 \cf4 \
  19560. \cf2 // [g_server uploadFile:file validTime:self.chatPerson.chatRecordTimeOut messageId:self.curMessageId toView:self];\cf4 \
  19561. \}\
  19562. \}\
  19563. \
  19564. - (
  19565. \f2\b \cf8 void
  19566. \f0\b0 \cf4 )\cf11 sendFiles\cf4 :(NSArray *)filesArray\{\
  19567. NSString *userId =
  19568. \f2\b \cf8 self
  19569. \f0\b0 \cf4 .userIds[
  19570. \f2\b \cf8 self
  19571. \f0\b0 \cf4 .groupMessagesIndex];\
  19572. NSString *file = filesArray.lastObject;\
  19573. [
  19574. \f2\b \cf8 self
  19575. \f0\b0 \cf4 sendFile:file userId:userId];\
  19576. \f2\b \cf8 self
  19577. \f0\b0 \cf4 .groupMessagesIndex ++;\
  19578. \f2\b \cf8 if
  19579. \f0\b0 \cf4 (
  19580. \f2\b \cf8 self
  19581. \f0\b0 \cf4 .groupMessagesIndex <
  19582. \f2\b \cf8 self
  19583. \f0\b0 \cf4 .userIds.count) \{\
  19584. \f2\b \cf8 if
  19585. \f0\b0 \cf4 (
  19586. \f2\b \cf8 self
  19587. \f0\b0 \cf4 .groupMessagesIndex % _onceSendNum == \cf7 0\cf4 ) \{\
  19588. \f2\b \cf8 return
  19589. \f0\b0 \cf4 ;\
  19590. \}
  19591. \f2\b \cf8 else
  19592. \f0\b0 \cf4 \{\
  19593. [
  19594. \f2\b \cf8 self
  19595. \f0\b0 \cf4 sendFiles:filesArray];\
  19596. \}\
  19597. \}
  19598. \f2\b \cf8 else
  19599. \f0\b0 \cf4
  19600. \f2\b \cf8 if
  19601. \f0\b0 \cf4 (
  19602. \f2\b \cf8 self
  19603. \f0\b0 \cf4 .userIds)\{\
  19604. \f2\b \cf8 self
  19605. \f0\b0 \cf4 .groupMessagesIndex = \cf7 0\cf4 ;\
  19606. \f2\b \cf8 return
  19607. \f0\b0 \cf4 ;\
  19608. \}\
  19609. \}\
  19610. \
  19611. -(
  19612. \f2\b \cf8 void
  19613. \f0\b0 \cf4 )\cf11 sendGift\cf4 \{\
  19614. [
  19615. \f2\b \cf8 self
  19616. \f0\b0 \cf4 hideKeyboard:
  19617. \f2\b \cf8 YES
  19618. \f0\b0 \cf4 ];\
  19619. \f2\b \cf8 if
  19620. \f0\b0 \cf4 ([
  19621. \f2\b \cf8 self
  19622. \f0\b0 \cf4 showDisableSay])\
  19623. \f2\b \cf8 return
  19624. \f0\b0 \cf4 ;\
  19625. \
  19626. \f2\b \cf8 if
  19627. \f0\b0 \cf4 ([
  19628. \f2\b \cf8 self
  19629. \f0\b0 \cf4 sendMsgCheck])\{\
  19630. \f2\b \cf8 return
  19631. \f0\b0 \cf4 ;\
  19632. \}\
  19633. JXSendRedPacketViewController * sendGiftVC = [[JXSendRedPacketViewController alloc] init];\
  19634. sendGiftVC.isRoom =
  19635. \f2\b \cf8 NO
  19636. \f0\b0 \cf4 ;\
  19637. sendGiftVC.toUserId = chatPerson.userId;\
  19638. sendGiftVC.delegate =
  19639. \f2\b \cf8 self
  19640. \f0\b0 \cf4 ;\
  19641. _strURLGoback=\cf6 @""\cf4 ;\
  19642. \cf2 // [g_window addSubview:sendGiftVC.view];\cf4 \
  19643. [g_navigation pushViewController:sendGiftVC animated:
  19644. \f2\b \cf8 YES
  19645. \f0\b0 \cf4 ];\
  19646. \}\
  19647. \
  19648. - (
  19649. \f2\b \cf8 void
  19650. \f0\b0 \cf4 )\cf11 onTransfer\cf4 \{\
  19651. JXTransferViewController *transferVC = [JXTransferViewController alloc];\
  19652. transferVC.user = chatPerson;\
  19653. transferVC.delegate =
  19654. \f2\b \cf8 self
  19655. \f0\b0 \cf4 ;\
  19656. _strURLGoback=\cf6 @""\cf4 ;\
  19657. transferVC = [transferVC init];\
  19658. [g_navigation pushViewController:transferVC animated:
  19659. \f2\b \cf8 YES
  19660. \f0\b0 \cf4 ];\
  19661. \}\
  19662. \
  19663. - (
  19664. \f2\b \cf8 void
  19665. \f0\b0 \cf4 )\cf11 sendGiftToRoom\cf4 \{\
  19666. [
  19667. \f2\b \cf8 self
  19668. \f0\b0 \cf4 hideKeyboard:
  19669. \f2\b \cf8 YES
  19670. \f0\b0 \cf4 ];\
  19671. \f2\b \cf8 if
  19672. \f0\b0 \cf4 ([
  19673. \f2\b \cf8 self
  19674. \f0\b0 \cf4 showDisableSay])\
  19675. \f2\b \cf8 return
  19676. \f0\b0 \cf4 ;\
  19677. \
  19678. \f2\b \cf8 if
  19679. \f0\b0 \cf4 ([
  19680. \f2\b \cf8 self
  19681. \f0\b0 \cf4 sendMsgCheck])\{\
  19682. \f2\b \cf8 return
  19683. \f0\b0 \cf4 ;\
  19684. \}\
  19685. \f2\b \cf8 if
  19686. \f0\b0 \cf4 (
  19687. \f2\b \cf8 self
  19688. \f0\b0 \cf4 .room.curCount == \cf7 1\cf4 ) \{\
  19689. \f2\b \cf8 self
  19690. \f0\b0 \cf4 .isSendRedPacket =
  19691. \f2\b \cf8 YES
  19692. \f0\b0 \cf4 ;\
  19693. [g_server roomGetRoom:
  19694. \f2\b \cf8 self
  19695. \f0\b0 \cf4 .roomId toView:
  19696. \f2\b \cf8 self
  19697. \f0\b0 \cf4 ];\
  19698. \}
  19699. \f2\b \cf8 else
  19700. \f0\b0 \cf4 \{\
  19701. \cf2 //
  19702. \f1 \'bb\'f1\'c8\'a1\'c8\'ba\'b3\'c9\'d4\'b1\'c1\'d0\'b1\'ed
  19703. \f0 \cf4 \
  19704. NSArray * memberArray = [memberData fetchAllMembers:_room.roomId];\
  19705. \
  19706. JXSendRedPacketViewController * sendGiftVC = [[JXSendRedPacketViewController alloc] init];\
  19707. sendGiftVC.isRoom =
  19708. \f2\b \cf8 YES
  19709. \f0\b0 \cf4 ;\
  19710. sendGiftVC.delegate =
  19711. \f2\b \cf8 self
  19712. \f0\b0 \cf4 ;\
  19713. sendGiftVC.roomJid =
  19714. \f2\b \cf8 self
  19715. \f0\b0 \cf4 .roomJid;\
  19716. sendGiftVC.size = memberArray.count;\
  19717. \cf2 // [g_window addSubview:sendGiftVC.view];\cf4 \
  19718. [g_navigation pushViewController:sendGiftVC animated:
  19719. \f2\b \cf8 YES
  19720. \f0\b0 \cf4 ];\
  19721. \}\
  19722. \}\
  19723. \
  19724. \cf5 #pragma mark
  19725. \f2\b \cf16 -
  19726. \f4 \'d7\'aa\'d5\'cb
  19727. \f2 delegate
  19728. \f0\b0 \cf4 \
  19729. - (
  19730. \f2\b \cf8 void
  19731. \f0\b0 \cf4 )\cf11 transferToUser\cf4 :(NSDictionary *)dict \{\
  19732. [
  19733. \f2\b \cf8 self
  19734. \f0\b0 \cf4 hideKeyboard:
  19735. \f2\b \cf8 NO
  19736. \f0\b0 \cf4 ];\
  19737. \f2\b \cf8 if
  19738. \f0\b0 \cf4 ([dict[\cf6 @"id"\cf4 ] length]>\cf7 0\cf4 ) \{\
  19739. JXMessageObject *msg=[[JXMessageObject alloc] init];\
  19740. msg.timeSend = [NSDate date];\
  19741. msg.fromUserId = MY_USER_ID;\
  19742. msg.toUserId = chatPerson.userId;\
  19743. msg.isGroup =
  19744. \f2\b \cf8 NO
  19745. \f0\b0 \cf4 ;\
  19746. \
  19747. msg.content = [NSString stringWithFormat:\cf6 @"%@"\cf4 ,dict[\cf6 @"money"\cf4 ]];\
  19748. msg.type = [NSNumber numberWithInt:kWCMessageTypeTransfer];\
  19749. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  19750. msg.isRead = [NSNumber numberWithBool:
  19751. \f2\b \cf8 NO
  19752. \f0\b0 \cf4 ];\
  19753. \cf2 // msg.isUpload = [NSNumber numberWithBool:NO];\cf4 \
  19754. msg.fileName = dict[\cf6 @"remark"\cf4 ];\
  19755. msg.objectId = dict[\cf6 @"id"\cf4 ];\
  19756. msg.isReadDel = [NSNumber numberWithInt:
  19757. \f2\b \cf8 NO
  19758. \f0\b0 \cf4 ];\
  19759. \
  19760. [msg insert:
  19761. \f2\b \cf8 nil
  19762. \f0\b0 \cf4 ];\
  19763. \
  19764. [g_xmpp sendMessage:msg roomName:
  19765. \f2\b \cf8 nil
  19766. \f0\b0 \cf4 ];\cf2 //
  19767. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  19768. \f0 \cf4 \
  19769. [
  19770. \f2\b \cf8 self
  19771. \f0\b0 \cf4 showOneMsg:msg];\
  19772. \}\
  19773. \cf2 //
  19774. \f1 \'bb\'f1\'c8\'a1\'d3\'e0\'b6\'ee
  19775. \f0 \cf4 \
  19776. [g_server getUserMoenyToView:
  19777. \f2\b \cf8 self
  19778. \f0\b0 \cf4 ];\
  19779. \
  19780. \}\
  19781. \
  19782. -(
  19783. \f2\b \cf8 void
  19784. \f0\b0 \cf4 )\cf11 sendRedPacketDelegate\cf4 :(NSDictionary *)redpacketDict\{\
  19785. [
  19786. \f2\b \cf8 self
  19787. \f0\b0 \cf4 hideKeyboard:
  19788. \f2\b \cf8 NO
  19789. \f0\b0 \cf4 ];\
  19790. \f2\b \cf8 if
  19791. \f0\b0 \cf4 ([redpacketDict[\cf6 @"id"\cf4 ] length]>\cf7 0\cf4 ) \{\
  19792. JXMessageObject *msg=[[JXMessageObject alloc] init];\
  19793. msg.timeSend = [NSDate date];\
  19794. msg.fromUserId = MY_USER_ID;\
  19795. \f2\b \cf8 if
  19796. \f0\b0 \cf4 ([
  19797. \f2\b \cf8 self
  19798. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  19799. msg.toUserId =
  19800. \f2\b \cf8 self
  19801. \f0\b0 \cf4 .roomJid;\
  19802. msg.isGroup =
  19803. \f2\b \cf8 YES
  19804. \f0\b0 \cf4 ;\
  19805. msg.fromUserName = _userNickName;\
  19806. \}\
  19807. \f2\b \cf8 else
  19808. \f0\b0 \cf4 \{\
  19809. msg.toUserId = chatPerson.userId;\
  19810. msg.isGroup =
  19811. \f2\b \cf8 NO
  19812. \f0\b0 \cf4 ;\
  19813. \}\
  19814. \
  19815. msg.content = redpacketDict[\cf6 @"greet"\cf4 ];\
  19816. msg.type = [NSNumber numberWithInt:kWCMessageTypeRedPacket];\
  19817. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  19818. msg.isRead = [NSNumber numberWithBool:
  19819. \f2\b \cf8 NO
  19820. \f0\b0 \cf4 ];\
  19821. msg.fileName = redpacketDict[\cf6 @"type"\cf4 ];\
  19822. msg.objectId = redpacketDict[\cf6 @"id"\cf4 ];\
  19823. msg.isReadDel = [NSNumber numberWithInt:
  19824. \f2\b \cf8 NO
  19825. \f0\b0 \cf4 ];\
  19826. \
  19827. [msg insert:
  19828. \f2\b \cf8 self
  19829. \f0\b0 \cf4 .roomJid];\
  19830. \
  19831. \cf2 // if (![_orderRedPacketArray containsObject:msg]) \{\cf4 \
  19832. \cf2 // [_orderRedPacketArray addObject:msg];\cf4 \
  19833. \cf2 // \}\cf4 \
  19834. [g_xmpp sendMessage:msg roomName:
  19835. \f2\b \cf8 self
  19836. \f0\b0 \cf4 .roomJid];\cf2 //
  19837. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  19838. \f0 \cf4 \
  19839. [
  19840. \f2\b \cf8 self
  19841. \f0\b0 \cf4 showOneMsg:msg];\
  19842. \cf2 // [msg release];\cf4 \
  19843. \}\
  19844. \cf2 //
  19845. \f1 \'bb\'f1\'c8\'a1\'d3\'e0\'b6\'ee
  19846. \f0 \cf4 \
  19847. [g_server getUserMoenyToView:
  19848. \f2\b \cf8 self
  19849. \f0\b0 \cf4 ];\
  19850. \}\
  19851. \
  19852. -(
  19853. \f2\b \cf8 void
  19854. \f0\b0 \cf4 )\cf11 onFile\cf4 \{\
  19855. [
  19856. \f2\b \cf8 self
  19857. \f0\b0 \cf4 hideKeyboard:
  19858. \f2\b \cf8 YES
  19859. \f0\b0 \cf4 ];\
  19860. \f2\b \cf8 if
  19861. \f0\b0 \cf4 ([
  19862. \f2\b \cf8 self
  19863. \f0\b0 \cf4 showDisableSay])\
  19864. \f2\b \cf8 return
  19865. \f0\b0 \cf4 ;\
  19866. \f2\b \cf8 if
  19867. \f0\b0 \cf4 ([
  19868. \f2\b \cf8 self
  19869. \f0\b0 \cf4 sendMsgCheck])\{\
  19870. \f2\b \cf8 return
  19871. \f0\b0 \cf4 ;\
  19872. \}\
  19873. \f2\b \cf8 if
  19874. \f0\b0 \cf4 (
  19875. \f2\b \cf8 self
  19876. \f0\b0 \cf4 .roomJid.length > \cf7 0\cf4 ) \{\
  19877. \
  19878. \f2\b \cf8 if
  19879. \f0\b0 \cf4 (!_isAdmin && ![
  19880. \f2\b \cf8 self
  19881. \f0\b0 \cf4 .chatPerson.allowUploadFile boolValue]) \{\
  19882. [g_App showAlert:Localized(\cf6 @"JX_NotUploadSharedFiles"\cf4 )];\
  19883. \f2\b \cf8 return
  19884. \f0\b0 \cf4 ;\
  19885. \}\
  19886. \}\
  19887. JXMyFile* vc = [[JXMyFile alloc]init];\
  19888. vc.delegate =
  19889. \f2\b \cf8 self
  19890. \f0\b0 \cf4 ;\
  19891. vc.didSelect =
  19892. \f2\b \cf8 @selector
  19893. \f0\b0 \cf4 (onSelFile:);\
  19894. \cf2 // [g_window addSubview:vc.view];\cf4 \
  19895. [g_navigation pushViewController:vc animated:
  19896. \f2\b \cf8 YES
  19897. \f0\b0 \cf4 ];\
  19898. \}\
  19899. \
  19900. -(
  19901. \f2\b \cf8 void
  19902. \f0\b0 \cf4 )\cf11 onDidCard\cf4 :(JXMessageObject*)msg\{\
  19903. \cf2 // [g_server getUser:msg.objectId toView:self];\cf4 \
  19904. \
  19905. JXUserInfoVC* vc = [JXUserInfoVC alloc];\
  19906. vc.userId = msg.objectId;\
  19907. vc.isJustShow =
  19908. \f2\b \cf8 self
  19909. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 ;\
  19910. vc = [vc init];\
  19911. _strURLGoback=\cf6 @""\cf4 ;\
  19912. [g_navigation pushViewController:vc animated:
  19913. \f2\b \cf8 YES
  19914. \f0\b0 \cf4 ];\
  19915. \}\
  19916. \
  19917. \
  19918. -(
  19919. \f2\b \cf8 void
  19920. \f0\b0 \cf4 )\cf11 chatCellHeadIMG\cf4 :(JXMessageObject *)msgCell \cf11 audioPlayChangeIndexNum\cf4 :(NSInteger)indexNum\{\
  19921. \
  19922. \cf2 //\}\cf4 \
  19923. \cf2 //\cf4 \
  19924. \cf2 //#pragma mark------cell
  19925. \f1 \'cd\'b7\'cf\'f1\'b5\'e3\'bb\'f7
  19926. \f0 \cf4 \
  19927. \cf2 //-(void)onDidHeadImage:(NSNotification*)notification\{\cf4 \
  19928. \
  19929. _strURLGoback=\cf6 @""\cf4 ;\
  19930. _intAAA++;\
  19931. \f2\b \cf8 if
  19932. \f0\b0 \cf4 (recording) \{\
  19933. \f2\b \cf8 return
  19934. \f0\b0 \cf4 ;\
  19935. \}\
  19936. \
  19937. \f2\b \cf8 if
  19938. \f0\b0 \cf4 ([chatPerson.userId rangeOfString:MY_USER_ID].location != NSNotFound) \{\
  19939. \f2\b \cf8 return
  19940. \f0\b0 \cf4 ;\
  19941. \}\
  19942. \
  19943. JXMessageObject *msg = msgCell;\
  19944. \
  19945. \f2\b \cf8 if
  19946. \f0\b0 \cf4 ([msg.fromUserId isEqualToString:CALL_CENTER_USERID])\
  19947. \f2\b \cf8 return
  19948. \f0\b0 \cf4 ;\
  19949. \f2\b \cf8 if
  19950. \f0\b0 \cf4 (!
  19951. \f2\b \cf8 self
  19952. \f0\b0 \cf4 .roomJid) \{\
  19953. \cf2 //
  19954. \f1 \'bf\'b4\'cf\'ea\'c7\'e9
  19955. \f0 \cf4 \
  19956. \cf2 // [g_server getUser:msg.fromUserId toView:self];\cf4 \
  19957. \cf2 //JXUserDetialVc JXUserInfoVC\cf4 \
  19958. \cf2 // JXUserDetialVc* vc = [JXUserDetialVc alloc];\cf4 \
  19959. JXUserInfoVC* vc = [JXUserInfoVC alloc];\
  19960. vc.userId = msg.fromUserId;\
  19961. vc.isJustShow =
  19962. \f2\b \cf8 self
  19963. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 ;\
  19964. vc.chatViewCellHedIMG=\cf6 @"1"\cf4 ;\
  19965. vc.fromAddType = \cf7 3\cf4 ;\
  19966. vc.chatVC =
  19967. \f2\b \cf8 self
  19968. \f0\b0 \cf4 ;\
  19969. vc = [vc init];\
  19970. [g_navigation pushViewController:vc animated:
  19971. \f2\b \cf8 YES
  19972. \f0\b0 \cf4 ];\
  19973. \
  19974. \f2\b \cf8 return
  19975. \f0\b0 \cf4 ;\
  19976. \}
  19977. \f2\b \cf8 else
  19978. \f0\b0 \cf4 \{\
  19979. \f2\b \cf8 if
  19980. \f0\b0 \cf4 (_isAdmin || [
  19981. \f2\b \cf8 self
  19982. \f0\b0 \cf4 .chatPerson.allowSendCard boolValue]) \{\
  19983. \
  19984. NSString *s;\
  19985. \f2\b \cf8 switch
  19986. \f0\b0 \cf4 ([
  19987. \f2\b \cf8 self
  19988. \f0\b0 \cf4 .groupStatus intValue]) \{\
  19989. \f2\b \cf8 case
  19990. \f0\b0 \cf4 \cf7 0\cf4 :\
  19991. s =
  19992. \f2\b \cf8 nil
  19993. \f0\b0 \cf4 ;\
  19994. \f2\b \cf8 break
  19995. \f0\b0 \cf4 ;\
  19996. \f2\b \cf8 case
  19997. \f0\b0 \cf4 \cf7 1\cf4 :\
  19998. s = Localized(\cf6 @"JX_OutOfTheGroup1"\cf4 );\
  19999. \f2\b \cf8 break
  20000. \f0\b0 \cf4 ;\
  20001. \f2\b \cf8 case
  20002. \f0\b0 \cf4 \cf7 2\cf4 :\
  20003. s = Localized(\cf6 @"JX_DissolutionGroup1"\cf4 );\
  20004. \f2\b \cf8 break
  20005. \f0\b0 \cf4 ;\
  20006. \
  20007. \f2\b \cf8 default
  20008. \f0\b0 \cf4 :\
  20009. \f2\b \cf8 break
  20010. \f0\b0 \cf4 ;\
  20011. \}\
  20012. \
  20013. \f2\b \cf8 if
  20014. \f0\b0 \cf4 (s.length > \cf7 0\cf4 ) \{\
  20015. [
  20016. \f2\b \cf8 self
  20017. \f0\b0 \cf4 hideKeyboard:
  20018. \f2\b \cf8 NO
  20019. \f0\b0 \cf4 ];\
  20020. [g_server showMsg:s];\
  20021. \f2\b \cf8 return
  20022. \f0\b0 \cf4 ;\
  20023. \}\
  20024. \
  20025. \cf2 //
  20026. \f1 \'bb\'f9\'b1\'be\'c0\'e0
  20027. \f0 JXMyBaseInFovc JXUserInfoVC JXSelfUserInfoVC\cf4 \
  20028. \
  20029. \f2\b \cf8 if
  20030. \f0\b0 \cf4 ([g_server.myself.userId isEqualToString:msg.fromUserId]) \{\
  20031. \
  20032. \
  20033. \cf2 //
  20034. \f1 \'d7\'d4\'bc\'ba\'b5\'c4\'cd\'b7\'cf\'f1
  20035. \f0 \cf4 \
  20036. JXSelfUserInfoVC* vc = [JXSelfUserInfoVC alloc];\
  20037. \
  20038. vc.userId = msg.fromUserId;\
  20039. \
  20040. vc.isJustShow =
  20041. \f2\b \cf8 self
  20042. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 ;\
  20043. vc.fromAddType = \cf7 3\cf4 ;\
  20044. vc.chatVC =
  20045. \f2\b \cf8 self
  20046. \f0\b0 \cf4 ;\
  20047. vc = [vc init];\
  20048. [g_navigation pushViewController:vc animated:
  20049. \f2\b \cf8 YES
  20050. \f0\b0 \cf4 ];\
  20051. \}
  20052. \f2\b \cf8 else
  20053. \f0\b0 \cf4 \{\
  20054. \
  20055. \cf2 //
  20056. \f1 \'d7\'d4\'bc\'ba\'b5\'e3
  20057. \f0 -
  20058. \f1 \'bb\'f7\'c8\'ba\'d6\'f7\'bb\'f2\'d5\'df\'b9\'dc\'c0\'ed\'d4\'b1
  20059. \f0
  20060. \f1 \'bb\'f2\'d5\'df\'b1\'f0\'c8\'cb
  20061. \f0 \cf4 \
  20062. memberData *data = [
  20063. \f2\b \cf8 self
  20064. \f0\b0 \cf4 .room getMember:g_myself.userId];\
  20065. JXUserInfoVC* vc = [JXUserInfoVC alloc];\
  20066. \
  20067. vc.userId = msg.fromUserId;\
  20068. vc.data=data;\
  20069. vc.indexAAA=_intAAA;\
  20070. vc.tempChat=\cf7 11\cf4 ;\
  20071. vc.isJustShow =
  20072. \f2\b \cf8 self
  20073. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 ;\
  20074. vc.fromAddType = \cf7 3\cf4 ;\
  20075. vc.chatVC =
  20076. \f2\b \cf8 self
  20077. \f0\b0 \cf4 ;\
  20078. vc = [vc init];\
  20079. [g_navigation pushViewController:vc animated:
  20080. \f2\b \cf8 YES
  20081. \f0\b0 \cf4 ];\
  20082. \f2\b \cf8 return
  20083. \f0\b0 \cf4 ;\
  20084. \}\
  20085. \}
  20086. \f2\b \cf8 else
  20087. \f0\b0 \cf4 \{\
  20088. [g_App showAlert:Localized(\cf6 @"JX_GroupNotTalk"\cf4 )];\
  20089. \}\
  20090. \}\
  20091. \
  20092. \}\
  20093. \
  20094. -(
  20095. \f2\b \cf8 void
  20096. \f0\b0 \cf4 )\cf11 longGesHeadImageNotification\cf4 :(NSNotification *)notification\{\
  20097. \
  20098. \f2\b \cf8 if
  20099. \f0\b0 \cf4 (!_messageText.userInteractionEnabled) \{\
  20100. \f2\b \cf8 return
  20101. \f0\b0 \cf4 ;\
  20102. \}\
  20103. \
  20104. JXMessageObject *msg = notification.object;\
  20105. \f2\b \cf8 if
  20106. \f0\b0 \cf4 (
  20107. \f2\b \cf8 self
  20108. \f0\b0 \cf4 .roomJid) \{\
  20109. \cf2 //@
  20110. \f1 \'c8\'ba\'b3\'c9\'d4\'b1
  20111. \f0 \cf4 \
  20112. \cf2 // [self performSelector:@selector(showAtSelectMemberView) withObject:nil afterDelay:0.35];\cf4 \
  20113. \cf2 // [self showAtSelectMemberView];\cf4 \
  20114. memberData * mem = [
  20115. \f2\b \cf8 self
  20116. \f0\b0 \cf4 .room getMember:msg.fromUserId];\
  20117. \f2\b \cf8 if
  20118. \f0\b0 \cf4 (mem) \{\
  20119. [
  20120. \f2\b \cf8 self
  20121. \f0\b0 \cf4 atSelectMemberDelegate:mem];\
  20122. \}\
  20123. \}\
  20124. \}\
  20125. \
  20126. \cf2 //
  20127. \f1 \'d6\'d8\'d0\'c2\'b7\'a2\'cb\'cd\'d7\'aa\'d5\'cb\'cf\'fb\'cf\'a2
  20128. \f0 \cf4 \
  20129. - (
  20130. \f2\b \cf8 void
  20131. \f0\b0 \cf4 )\cf11 onResend\cf4 :(JXMessageObject *)msg \{\
  20132. JXMessageObject *msg1 = [[JXMessageObject alloc]init];\
  20133. msg1 = [msg copy];\
  20134. msg1.messageId =
  20135. \f2\b \cf8 nil
  20136. \f0\b0 \cf4 ;\
  20137. msg1.timeSend = [NSDate date];\
  20138. msg1.fromId =
  20139. \f2\b \cf8 nil
  20140. \f0\b0 \cf4 ;\
  20141. msg1.isGroup =
  20142. \f2\b \cf8 NO
  20143. \f0\b0 \cf4 ;\
  20144. msg1.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  20145. msg1.isRead = [NSNumber numberWithBool:
  20146. \f2\b \cf8 NO
  20147. \f0\b0 \cf4 ];\
  20148. msg1.isReadDel = [NSNumber numberWithInt:
  20149. \f2\b \cf8 NO
  20150. \f0\b0 \cf4 ];\
  20151. [msg1 insert:
  20152. \f2\b \cf8 nil
  20153. \f0\b0 \cf4 ];\
  20154. \
  20155. [g_xmpp sendMessage:msg1 roomName:
  20156. \f2\b \cf8 nil
  20157. \f0\b0 \cf4 ];\cf2 //
  20158. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  20159. \f0 \cf4 \
  20160. [
  20161. \f2\b \cf8 self
  20162. \f0\b0 \cf4 showOneMsg:msg1];\
  20163. \}\
  20164. \
  20165. \cf5 #pragma mark
  20166. \f2\b \cf16 ------
  20167. \f4 \'d7\'aa\'d5\'cb\'b5\'e3\'bb\'f7
  20168. \f0\b0 \cf4 \
  20169. - (
  20170. \f2\b \cf8 void
  20171. \f0\b0 \cf4 )\cf11 onDidTransfer\cf4 :(NSNotification*)notification \{\
  20172. \f2\b \cf8 if
  20173. \f0\b0 \cf4 (recording) \{\
  20174. \f2\b \cf8 return
  20175. \f0\b0 \cf4 ;\
  20176. \}\
  20177. \
  20178. [
  20179. \f2\b \cf8 self
  20180. \f0\b0 \cf4 hideKeyboard:
  20181. \f2\b \cf8 NO
  20182. \f0\b0 \cf4 ];\
  20183. JXMessageObject *msg = notification.object;\
  20184. JXTransferDeatilVC *detailVC = [JXTransferDeatilVC alloc];\
  20185. detailVC.msg = msg;\
  20186. detailVC.onResend =
  20187. \f2\b \cf8 @selector
  20188. \f0\b0 \cf4 (onResend:);\
  20189. detailVC.delegate =
  20190. \f2\b \cf8 self
  20191. \f0\b0 \cf4 ;\
  20192. detailVC = [detailVC init];\
  20193. [g_navigation pushViewController:detailVC animated:
  20194. \f2\b \cf8 YES
  20195. \f0\b0 \cf4 ];\
  20196. \}\
  20197. \
  20198. \cf5 #pragma mark
  20199. \f2\b \cf16 ------
  20200. \f4 \'ba\'ec\'b0\'fc\'b5\'e3\'bb\'f7
  20201. \f0\b0 \cf4 \
  20202. -(
  20203. \f2\b \cf8 void
  20204. \f0\b0 \cf4 )\cf11 onDidRedPacket\cf4 :(NSNotification*)notification\{\
  20205. \f2\b \cf8 if
  20206. \f0\b0 \cf4 (recording) \{\
  20207. \f2\b \cf8 return
  20208. \f0\b0 \cf4 ;\
  20209. \}\
  20210. \
  20211. \f2\b \cf8 if
  20212. \f0\b0 \cf4 (
  20213. \f2\b \cf8 self
  20214. \f0\b0 \cf4 .roomJid) \{\
  20215. NSString *s;\
  20216. \cf2 //
  20217. \f1 \'d1\'e9\'d6\'a4\'c8\'ba\'d7\'e9\'ca\'c7\'b7\'f1\'d3\'d0\'d0\'a7
  20218. \f0 \cf4 \
  20219. \f2\b \cf8 switch
  20220. \f0\b0 \cf4 ([
  20221. \f2\b \cf8 self
  20222. \f0\b0 \cf4 .groupStatus intValue]) \{\
  20223. \f2\b \cf8 case
  20224. \f0\b0 \cf4 \cf7 0\cf4 :\
  20225. s =
  20226. \f2\b \cf8 nil
  20227. \f0\b0 \cf4 ;\
  20228. \f2\b \cf8 break
  20229. \f0\b0 \cf4 ;\
  20230. \f2\b \cf8 case
  20231. \f0\b0 \cf4 \cf7 1\cf4 :\
  20232. s = Localized(\cf6 @"JX_OutOfTheGroup1"\cf4 );\
  20233. \f2\b \cf8 break
  20234. \f0\b0 \cf4 ;\
  20235. \f2\b \cf8 case
  20236. \f0\b0 \cf4 \cf7 2\cf4 :\
  20237. s = Localized(\cf6 @"JX_DissolutionGroup1"\cf4 );\
  20238. \f2\b \cf8 break
  20239. \f0\b0 \cf4 ;\
  20240. \
  20241. \f2\b \cf8 default
  20242. \f0\b0 \cf4 :\
  20243. \f2\b \cf8 break
  20244. \f0\b0 \cf4 ;\
  20245. \}\
  20246. \
  20247. \f2\b \cf8 if
  20248. \f0\b0 \cf4 (s.length > \cf7 0\cf4 ) \{\
  20249. [
  20250. \f2\b \cf8 self
  20251. \f0\b0 \cf4 hideKeyboard:
  20252. \f2\b \cf8 NO
  20253. \f0\b0 \cf4 ];\
  20254. [g_server showMsg:s];\
  20255. \f2\b \cf8 return
  20256. \f0\b0 \cf4 ;\
  20257. \}\
  20258. \
  20259. \}\
  20260. \
  20261. memberData *data = [
  20262. \f2\b \cf8 self
  20263. \f0\b0 \cf4 .room getMember:g_myself.userId];\
  20264. \f2\b \cf8 if
  20265. \f0\b0 \cf4 ([data.role integerValue] == \cf7 4\cf4 ) \{\
  20266. [JXMyTools showTipView:\cf6 @"
  20267. \f1 \'d2\'fe\'c9\'ed\'c8\'cb\'b2\'bb\'c4\'dc\'c1\'ec\'c8\'a1\'ba\'ec\'b0\'fc
  20268. \f0 "\cf4 ];\
  20269. \f2\b \cf8 return
  20270. \f0\b0 \cf4 ;\
  20271. \}\
  20272. \
  20273. [
  20274. \f2\b \cf8 self
  20275. \f0\b0 \cf4 hideKeyboard:
  20276. \f2\b \cf8 NO
  20277. \f0\b0 \cf4 ];\
  20278. JXMessageObject *msg = notification.object;\
  20279. \
  20280. \f2\b \cf8 if
  20281. \f0\b0 \cf4 (([msg.fileName isEqualToString:\cf6 @"3"\cf4 ] && [msg.fileSize intValue] != \cf7 2\cf4 )) \{\
  20282. \f2\b \cf8 if
  20283. \f0\b0 \cf4 (
  20284. \f2\b \cf8 self
  20285. \f0\b0 \cf4 .roomId.length > \cf7 0\cf4 ) \{\
  20286. \
  20287. _messageText.text = msg.content;\
  20288. \f2\b \cf8 return
  20289. \f0\b0 \cf4 ;\
  20290. \}
  20291. \f2\b \cf8 else
  20292. \f0\b0 \cf4 \{\
  20293. \f2\b \cf8 if
  20294. \f0\b0 \cf4 (![msg.fromUserId isEqualToString:MY_USER_ID]) \{\
  20295. \
  20296. _messageText.text = msg.content;\
  20297. \f2\b \cf8 return
  20298. \f0\b0 \cf4 ;\
  20299. \}\
  20300. \}\
  20301. \}\
  20302. [_wait start];\
  20303. [g_server getRedPacket:msg.objectId toView:
  20304. \f2\b \cf8 self
  20305. \f0\b0 \cf4 ];\
  20306. \
  20307. \cf2 // if (([msg.fileName isEqualToString:@"3"] && [msg.fileSize intValue] != 2) && ![msg.fromUserId isEqualToString:MY_USER_ID]) \{\cf4 \
  20308. \cf2 // _messageText.text = msg.content;\cf4 \
  20309. \cf2 // return;\cf4 \
  20310. \cf2 // \}\cf4 \
  20311. \cf2 // [_wait start];\cf4 \
  20312. \cf2 // [g_server getRedPacket:msg.objectId toView:self];\cf4 \
  20313. \cf12 ///
  20314. \f3 \cf2 / [g_server openRedPacket:msg.objectId toView:self];
  20315. \f0 \cf4 \
  20316. \
  20317. \}\
  20318. \
  20319. - (
  20320. \f2\b \cf8 void
  20321. \f0\b0 \cf4 )\cf11 shakeToShow\cf4 :(UIView*)aView\{\
  20322. CAKeyframeAnimation* animation = [CAKeyframeAnimation animationWithKeyPath:\cf6 @"transform"\cf4 ];\
  20323. animation.duration = \cf7 0.5\cf4 ;\
  20324. \
  20325. NSMutableArray *values = [NSMutableArray array];\
  20326. [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(\cf7 0.1\cf4 , \cf7 0.1\cf4 , \cf7 1.0\cf4 )]];\
  20327. [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(\cf7 1.2\cf4 , \cf7 1.2\cf4 , \cf7 1.0\cf4 )]];\
  20328. [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(\cf7 0.9\cf4 , \cf7 0.9\cf4 , \cf7 1.0\cf4 )]];\
  20329. [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(\cf7 1.0\cf4 , \cf7 1.0\cf4 , \cf7 1.0\cf4 )]];\
  20330. animation.values = values;\
  20331. [aView.layer addAnimation:animation forKey:
  20332. \f2\b \cf8 nil
  20333. \f0\b0 \cf4 ];\
  20334. \}\
  20335. \
  20336. - (
  20337. \f2\b \cf8 void
  20338. \f0\b0 \cf4 )\cf11 showRedPacket\cf4 :(NSDictionary *)dict \{\
  20339. [_wait stop];\
  20340. [
  20341. \f2\b \cf8 self
  20342. \f0\b0 \cf4 hideKeyboard:
  20343. \f2\b \cf8 YES
  20344. \f0\b0 \cf4 ];\
  20345. \
  20346. NSString *userName = [NSString stringWithFormat:\cf6 @"%@"\cf4 ,[(NSDictionary *)[dict objectForKey:\cf6 @"packet"\cf4 ] objectForKey:\cf6 @"userName"\cf4 ]];\
  20347. NSString *greetings = [NSString stringWithFormat:\cf6 @"%@"\cf4 ,[(NSDictionary *)[dict objectForKey:\cf6 @"packet"\cf4 ] objectForKey:\cf6 @"greetings"\cf4 ]];\
  20348. NSString *userId = [NSString stringWithFormat:\cf6 @"%@"\cf4 ,[(NSDictionary *)[dict objectForKey:\cf6 @"packet"\cf4 ] objectForKey:\cf6 @"userId"\cf4 ]];\
  20349. \
  20350. \f2\b \cf8 self
  20351. \f0\b0 \cf4 .redPacketDict = dict;\
  20352. \
  20353. [
  20354. \f2\b \cf8 self
  20355. \f0\b0 \cf4 .redBaseView removeFromSuperview];\
  20356. \f2\b \cf8 self
  20357. \f0\b0 \cf4 .redBaseView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];\
  20358. \f2\b \cf8 self
  20359. \f0\b0 \cf4 .redBaseView.userInteractionEnabled=
  20360. \f2\b \cf8 YES
  20361. \f0\b0 \cf4 ;\
  20362. \f2\b \cf8 self
  20363. \f0\b0 \cf4 .redBaseView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:\cf7 .5f\cf4 ];\
  20364. [[UIApplication sharedApplication].keyWindow addSubview:
  20365. \f2\b \cf8 self
  20366. \f0\b0 \cf4 .redBaseView];\
  20367. \
  20368. UIImage *redImage = [UIImage imageNamed:\cf6 @"red_packet_bg"\cf4 ];\
  20369. \
  20370. CGFloat h = JX_SCREEN_HEIGHT/\cf7 2\cf4 +\cf7 30\cf4 ; - JX_SCREEN_TOP - JX_SCREEN_BOTTOM - \cf7 30\cf4 -\cf7 50\cf4 -\cf7 60\cf4 ;\
  20371. \f2\b \cf8 self
  20372. \f0\b0 \cf4 .redBackV = [[UIImageView alloc] initWithFrame:CGRectMake(\cf7 40\cf4 , \cf7 60\cf4 +JX_SCREEN_TOP, JX_SCREEN_WIDTH-\cf7 80\cf4 , h)];\
  20373. \f2\b \cf8 self
  20374. \f0\b0 \cf4 .redBackV.userInteractionEnabled =
  20375. \f2\b \cf8 YES
  20376. \f0\b0 \cf4 ;\
  20377. \f2\b \cf8 self
  20378. \f0\b0 \cf4 .redBackV.image = redImage;\
  20379. [
  20380. \f2\b \cf8 self
  20381. \f0\b0 \cf4 .redBaseView addSubview:
  20382. \f2\b \cf8 self
  20383. \f0\b0 \cf4 .redBackV];\
  20384. \cf2 //
  20385. \f1 \'cc\'ed\'bc\'d3\'b8\'f6\'b6\'af\'bb\'ad
  20386. \f0 \cf4 \
  20387. [
  20388. \f2\b \cf8 self
  20389. \f0\b0 \cf4 shakeToShow:
  20390. \f2\b \cf8 self
  20391. \f0\b0 \cf4 .redBackV];\
  20392. \
  20393. CGSize size = [[NSString stringWithFormat:\cf6 @"%@%@"\cf4 ,userName,Localized(\cf6 @"JX_FromRedPacket"\cf4 )] sizeWithAttributes:\cf7 @\{\cf4 NSFontAttributeName:SYSFONT(\cf7 18\cf4 )\cf7 \}\cf4 ];\
  20394. UIImageView *icon = [[UIImageView alloc] initWithFrame:CGRectMake((JX_SCREEN_WIDTH-\cf7 40\cf4 - size.width-\cf7 30\cf4 -\cf7 5\cf4 )/\cf7 2\cf4 , \cf7 100\cf4 , \cf7 30\cf4 , \cf7 30\cf4 )];\
  20395. icon.layer.masksToBounds =
  20396. \f2\b \cf8 YES
  20397. \f0\b0 \cf4 ;\
  20398. icon.layer.cornerRadius = icon.frame.size.width/\cf7 2\cf4 ;\
  20399. [
  20400. \f2\b \cf8 self
  20401. \f0\b0 \cf4 .redBackV addSubview:icon];\
  20402. [g_server getHeadImageSmall:userId userName:userName imageView:icon];\
  20403. \
  20404. \
  20405. UILabel *name = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(icon.frame)+\cf7 5\cf4 , CGRectGetMinY(icon.frame)+(\cf7 30\cf4 -size.height)/\cf7 2\cf4 , size.width, size.height)];\
  20406. name.font = SYSFONT(\cf7 18\cf4 );\
  20407. name.text = [NSString stringWithFormat:\cf6 @"%@%@"\cf4 ,userName,Localized(\cf6 @"JX_FromRedPacket"\cf4 )];\
  20408. name.textColor = HEXCOLOR(\cf7 0xFEDCA2\cf4 );\
  20409. [
  20410. \f2\b \cf8 self
  20411. \f0\b0 \cf4 .redBackV addSubview:name];\
  20412. \
  20413. UILabel *tint = [[UILabel alloc] initWithFrame:CGRectMake(\cf7 20\cf4 , CGRectGetMaxY(icon.frame)+\cf7 20\cf4 ,
  20414. \f2\b \cf8 self
  20415. \f0\b0 \cf4 .redBackV.frame.size.width-\cf7 40\cf4 , \cf7 28\cf4 )];\
  20416. tint.text = greetings;\
  20417. tint.font = SYSFONT(\cf7 25\cf4 );\
  20418. tint.textAlignment = NSTextAlignmentCenter;\
  20419. tint.textColor = HEXCOLOR(\cf7 0xFEDCA2\cf4 );\
  20420. [
  20421. \f2\b \cf8 self
  20422. \f0\b0 \cf4 .redBackV addSubview:tint];\
  20423. _tintLab = tint;\
  20424. \
  20425. CGFloat b = (h / JX_SCREEN_HEIGHT) * (h-\cf7 88\cf4 );\
  20426. \f2\b \cf8 self
  20427. \f0\b0 \cf4 .openImgV = [[UIImageView alloc] initWithFrame:CGRectMake((JX_SCREEN_WIDTH-\cf7 80\cf4 -\cf7 100\cf4 )/\cf7 2\cf4 , b+\cf7 50\cf4 , \cf7 100\cf4 , \cf7 100\cf4 )];\
  20428. \f2\b \cf8 self
  20429. \f0\b0 \cf4 .openImgV.userInteractionEnabled =
  20430. \f2\b \cf8 YES
  20431. \f0\b0 \cf4 ;\
  20432. \f2\b \cf8 self
  20433. \f0\b0 \cf4 .openImgV.image = [UIImage imageNamed:\cf6 @"icon_open_red_packet1"\cf4 ];\
  20434. [
  20435. \f2\b \cf8 self
  20436. \f0\b0 \cf4 .redBackV addSubview:
  20437. \f2\b \cf8 self
  20438. \f0\b0 \cf4 .openImgV];\
  20439. UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:
  20440. \f2\b \cf8 self
  20441. \f0\b0 \cf4 action:
  20442. \f2\b \cf8 @selector
  20443. \f0\b0 \cf4 (openReadPacket)];\
  20444. [
  20445. \f2\b \cf8 self
  20446. \f0\b0 \cf4 .openImgV addGestureRecognizer:tap];\
  20447. \
  20448. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake((
  20449. \f2\b \cf8 self
  20450. \f0\b0 \cf4 .redBackV.frame.size.width-\cf7 140\cf4 )/\cf7 2\cf4 ,
  20451. \f2\b \cf8 self
  20452. \f0\b0 \cf4 .redBackV.frame.size.height-\cf7 18\cf4 -\cf7 40\cf4 , \cf7 140\cf4 , \cf7 18\cf4 )];\
  20453. label.textAlignment = NSTextAlignmentCenter;\
  20454. label.userInteractionEnabled =
  20455. \f2\b \cf8 YES
  20456. \f0\b0 \cf4 ;\
  20457. label.textColor = HEXCOLOR(\cf7 0xFEDCA2\cf4 );\
  20458. label.font = SYSFONT(\cf7 15\cf4 );\
  20459. label.text = Localized(\cf6 @"JX_CheckTheClaimDetails>"\cf4 );\
  20460. label.hidden = [userId intValue] != [MY_USER_ID intValue];\
  20461. [
  20462. \f2\b \cf8 self
  20463. \f0\b0 \cf4 .redBackV addSubview:label];\
  20464. _seeLab = label;\
  20465. \
  20466. UITapGestureRecognizer *tap1 = [[UITapGestureRecognizer alloc] initWithTarget:
  20467. \f2\b \cf8 self
  20468. \f0\b0 \cf4 action:
  20469. \f2\b \cf8 @selector
  20470. \f0\b0 \cf4 (CheckTheDetails)];\
  20471. [label addGestureRecognizer:tap1];\
  20472. \
  20473. UIView *canView = [[UIView alloc] initWithFrame:CGRectMake((JX_SCREEN_WIDTH-\cf7 40\cf4 )/\cf7 2\cf4 , (JX_SCREEN_HEIGHT-CGRectGetMaxY(
  20474. \f2\b \cf8 self
  20475. \f0\b0 \cf4 .redBackV.frame)-\cf7 40\cf4 )/\cf7 2\cf4 +CGRectGetMaxY(
  20476. \f2\b \cf8 self
  20477. \f0\b0 \cf4 .redBackV.frame)-\cf7 10\cf4 , \cf7 40\cf4 , \cf7 40\cf4 )];\
  20478. canView.backgroundColor = [UIColor clearColor];\
  20479. canView.userInteractionEnabled=
  20480. \f2\b \cf8 YES
  20481. \f0\b0 \cf4 ;\
  20482. canView.layer.masksToBounds =
  20483. \f2\b \cf8 YES
  20484. \f0\b0 \cf4 ;\
  20485. canView.layer.cornerRadius = canView.frame.size.width/\cf7 2\cf4 ;\
  20486. canView.layer.borderWidth = \cf7 2.f\cf4 ;\
  20487. canView.layer.borderColor = HEXCOLOR(\cf7 0xE8C66A\cf4 ).CGColor;\
  20488. [
  20489. \f2\b \cf8 self
  20490. \f0\b0 \cf4 .redBaseView addSubview:canView];\
  20491. UITapGestureRecognizer *tapC = [[UITapGestureRecognizer alloc] initWithTarget:
  20492. \f2\b \cf8 self
  20493. \f0\b0 \cf4 action:
  20494. \f2\b \cf8 @selector
  20495. \f0\b0 \cf4 (cancelOpenRedPacket)];\
  20496. [canView addGestureRecognizer:tapC];\
  20497. \
  20498. UIImageView *cancelImgV = [[UIImageView alloc] initWithFrame:CGRectMake(\cf7 10\cf4 , \cf7 10\cf4 , \cf7 20\cf4 , \cf7 20\cf4 )];\
  20499. cancelImgV.image = [UIImage imageNamed:\cf6 @"icon_red_packet_close"\cf4 ];\
  20500. cancelImgV.userInteractionEnabled =
  20501. \f2\b \cf8 YES
  20502. \f0\b0 \cf4 ;\
  20503. [canView addSubview:cancelImgV];\
  20504. \
  20505. \
  20506. \}\
  20507. \
  20508. - (
  20509. \f2\b \cf8 void
  20510. \f0\b0 \cf4 )\cf11 CheckTheDetails\cf4 \{\
  20511. [_redBaseView removeFromSuperview];\
  20512. \
  20513. JXredPacketDetailVC * redPacketDetailVC = [[JXredPacketDetailVC alloc]init];\
  20514. redPacketDetailVC.dataDict = [[NSDictionary alloc]initWithDictionary:
  20515. \f2\b \cf8 self
  20516. \f0\b0 \cf4 .redPacketDict];\
  20517. redPacketDetailVC.isGroup =
  20518. \f2\b \cf8 self
  20519. \f0\b0 \cf4 .room.roomId.length > \cf7 0\cf4 ;\
  20520. [g_navigation pushViewController:redPacketDetailVC animated:
  20521. \f2\b \cf8 YES
  20522. \f0\b0 \cf4 ];\
  20523. \
  20524. \}\
  20525. \
  20526. - (
  20527. \f2\b \cf8 void
  20528. \f0\b0 \cf4 )\cf11 cancelOpenRedPacket\cf4 \{\
  20529. [
  20530. \f2\b \cf8 self
  20531. \f0\b0 \cf4 .redBaseView removeFromSuperview];\
  20532. [
  20533. \f2\b \cf8 self
  20534. \f0\b0 \cf4 .redBaseView removeFromSuperview];\
  20535. \}\
  20536. \
  20537. \
  20538. - (
  20539. \f2\b \cf8 void
  20540. \f0\b0 \cf4 )\cf11 openReadPacket\cf4 \{\
  20541. NSMutableArray *imagesArray = [NSMutableArray array];\
  20542. \f2\b \cf8 for
  20543. \f0\b0 \cf4 (
  20544. \f2\b \cf8 int
  20545. \f0\b0 \cf4 i = \cf7 1\cf4 ; i < \cf7 12\cf4 ; i++) \{\
  20546. NSString *imageName = [NSString stringWithFormat:\cf6 @"icon_open_red_packet%d"\cf4 , i];\
  20547. UIImage *image = [UIImage imageNamed:imageName];\
  20548. [imagesArray addObject:image];\
  20549. \}\
  20550. _openImgV.animationImages = imagesArray;\
  20551. _openImgV.animationDuration = \cf7 0.7f\cf4 ;\
  20552. _openImgV.animationRepeatCount = \cf7 0\cf4 ;\
  20553. [_openImgV startAnimating];\
  20554. \
  20555. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(\cf7 .6f\cf4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\
  20556. [_openImgV stopAnimating];\
  20557. \cf2 // [self cancelOpenRedPacket];\cf4 \
  20558. [g_server openRedPacket:
  20559. \f2\b \cf8 self
  20560. \f0\b0 \cf4 .redPacketDict[\cf6 @"packet"\cf4 ][\cf6 @"id"\cf4 ] toView:
  20561. \f2\b \cf8 self
  20562. \f0\b0 \cf4 ];\
  20563. \});\
  20564. \}\
  20565. \
  20566. \cf5 #pragma mark
  20567. \f2\b \cf16 -------
  20568. \f4 \'d5\'d5\'c6\'ac\'b2\'e9\'bf\'b4
  20569. \f0\b0 \cf4 \
  20570. - (
  20571. \f2\b \cf8 void
  20572. \f0\b0 \cf4 )\cf11 onDidImage\cf4 :(NSNotification*)notification\{\
  20573. \f2\b \cf8 if
  20574. \f0\b0 \cf4 (recording) \{\
  20575. \f2\b \cf8 return
  20576. \f0\b0 \cf4 ;\
  20577. \}\
  20578. \f2\b \cf8 self
  20579. \f0\b0 \cf4 .indexNum = [notification.object intValue];\
  20580. [
  20581. \f2\b \cf8 self
  20582. \f0\b0 \cf4 hideKeyboard:
  20583. \f2\b \cf8 NO
  20584. \f0\b0 \cf4 ];\
  20585. JXMessageObject *msg = [_array objectAtIndex:[notification.object intValue]];\
  20586. \cf2 //
  20587. \f1 \'cd\'bc\'c6\'ac\'c2\'b7\'be\'b6\'ca\'fd\'d7\'e9
  20588. \f0 \cf4 \
  20589. NSMutableArray *imagePathArr = [[NSMutableArray alloc]init];\
  20590. NSMutableArray *msgArray = [NSMutableArray array];\
  20591. \f2\b \cf8 if
  20592. \f0\b0 \cf4 ([msg.isReadDel boolValue] || [msg.content rangeOfString:\cf6 @".gif"\cf4 ].location != NSNotFound) \{\cf2 //
  20593. \f1 \'ca\'c7\'d4\'c4\'ba\'f3\'bc\'b4\'b7\'d9
  20594. \f0 gif
  20595. \f1 \'cd\'bc\'c6\'ac
  20596. \f0 \cf4 \
  20597. \f2\b \cf8 if
  20598. \f0\b0 \cf4 (msg.content) \{\
  20599. [msgArray addObject:msg];\
  20600. [imagePathArr addObject:msg.content];\
  20601. \}\
  20602. \}
  20603. \f2\b \cf8 else
  20604. \f0\b0 \cf4 \{\
  20605. \cf2 //
  20606. \f1 \'bb\'f1\'c8\'a1\'cb\'f9\'d3\'d0\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc
  20607. \f0 \cf4 \
  20608. NSString* s;\
  20609. \f2\b \cf8 if
  20610. \f0\b0 \cf4 ([
  20611. \f2\b \cf8 self
  20612. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\
  20613. s =
  20614. \f2\b \cf8 self
  20615. \f0\b0 \cf4 .roomJid;\
  20616. \f2\b \cf8 else
  20617. \f0\b0 \cf4 \
  20618. s = chatPerson.userId;\
  20619. \f2\b \cf8 if
  20620. \f0\b0 \cf4 (msg.isMySend) \{\
  20621. _allChatImageArr = [msg fetchImageMessageListWithUser:s];\
  20622. \}
  20623. \f2\b \cf8 else
  20624. \f0\b0 \cf4 \{\
  20625. _allChatImageArr = [msg fetchImageMessageListWithUser:s];\
  20626. \}\
  20627. \
  20628. \f2\b \cf8 for
  20629. \f0\b0 \cf4 (
  20630. \f2\b \cf8 int
  20631. \f0\b0 \cf4 i = \cf7 0\cf4 ; i < [_allChatImageArr count]; i++) \{\
  20632. JXMessageObject * msgP = [_allChatImageArr objectAtIndex:i];\
  20633. \f2\b \cf8 if
  20634. \f0\b0 \cf4 (![msgP.isReadDel boolValue] && [msgP.content rangeOfString:\cf6 @".gif"\cf4 ].location == NSNotFound) \{\cf2 //
  20635. \f1 \'b5\'c3\'b5\'bd\'b5\'c4\'cf\'fb\'cf\'a2\'d6\'d0\'ba\'ac\'d3\'d0\'d4\'c4\'ba\'f3\'bc\'b4\'b7\'d9
  20636. \f0
  20637. \f1 \'bb\'f2
  20638. \f0 gif
  20639. \f1 \'cd\'bc\'c6\'ac
  20640. \f0
  20641. \f1 \'b5\'c4\'cc\'de\'b3\'fd\'b5\'f4
  20642. \f0 \cf4 \
  20643. \f2\b \cf8 if
  20644. \f0\b0 \cf4 (msgP.content) \{\
  20645. [msgArray addObject:msgP];\
  20646. NSString* url;\
  20647. \f2\b \cf8 if
  20648. \f0\b0 \cf4 (msgP.isMySend && isFileExist(msgP.fileName))\
  20649. url = msgP.fileName;\
  20650. \f2\b \cf8 else
  20651. \f0\b0 \cf4 \
  20652. url = msgP.content;\
  20653. [imagePathArr addObject:url];\
  20654. \}\
  20655. \}\
  20656. \}\
  20657. \}\
  20658. \
  20659. \f2\b \cf8 if
  20660. \f0\b0 \cf4 (
  20661. \f2\b \cf8 self
  20662. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 ) \{\
  20663. \f2\b \cf8 if
  20664. \f0\b0 \cf4 (msg.content) \{\
  20665. [msgArray addObject:msg];\
  20666. NSString* url;\
  20667. \f2\b \cf8 if
  20668. \f0\b0 \cf4 (msg.isMySend && isFileExist(msg.fileName))\
  20669. url = msg.fileName;\
  20670. \f2\b \cf8 else
  20671. \f0\b0 \cf4 \
  20672. url = msg.content;\
  20673. [imagePathArr addObject:url];\
  20674. \}\
  20675. \}\
  20676. NSMutableArray *array = [NSMutableArray array];\
  20677. NSMutableArray *arrayURL = [NSMutableArray array];\
  20678. \
  20679. \f2\b \cf8 if
  20680. \f0\b0 \cf4 (msg.content ==
  20681. \f2\b \cf8 nil
  20682. \f0\b0 \cf4 ) \{\
  20683. \f2\b \cf8 return
  20684. \f0\b0 \cf4 ;\
  20685. \}\
  20686. [arrayURL addObject:msg.content];\
  20687. [array addObject:msg];\
  20688. \
  20689. \f2\b \cf8 if
  20690. \f0\b0 \cf4 (array.count < \cf7 1\cf4 ) \{\
  20691. \f2\b \cf8 return
  20692. \f0\b0 \cf4 ;\
  20693. \}\
  20694. \
  20695. \cf2 // [ImageBrowserViewController show:self delegate:self type:PhotoBroswerVCTypeModal contentArray:array index:0 imagesBlock:^NSArray *\{\cf4 \
  20696. \cf2 // return arrayURL;\cf4 \
  20697. \cf2 // \}];\cf4 \
  20698. [ImageBrowserViewController show:
  20699. \f2\b \cf8 self
  20700. \f0\b0 \cf4 delegate:
  20701. \f2\b \cf8 self
  20702. \f0\b0 \cf4 isReadDel:
  20703. \f2\b \cf8 YES
  20704. \f0\b0 \cf4 type:PhotoBroswerVCTypeModal contentArray:array index:\cf7 0\cf4 imagesBlock:^NSArray *\{\
  20705. \f2\b \cf8 return
  20706. \f0\b0 \cf4 arrayURL;\
  20707. \}];\
  20708. \cf2 //
  20709. \f1 \'b2\'e9\'b5\'bd\'b5\'b1\'c7\'b0\'b5\'e3\'bb\'f7\'b5\'c4\'cd\'bc\'c6\'ac\'b5\'c4\'ce\'bb\'d6\'c3
  20710. \f0 \cf4 \
  20711. \cf2 // for (int i = 0; i < [msgArray count]; i++) \{\cf4 \
  20712. \cf2 // JXMessageObject * msgObj = [msgArray objectAtIndex:i];\cf4 \
  20713. \cf2 // if ([msg.messageId isEqualToString:msgObj.messageId]) \{\cf4 \
  20714. \cf2 //\cf4 \
  20715. \cf2 // [ImageBrowserViewController show:self delegate:self isReadDel:[msgObj.isReadDel boolValue] type:PhotoBroswerVCTypeModal contentArray:msgArray index:i imagesBlock:^NSArray *\{\cf4 \
  20716. \cf2 // return imagePathArr;\cf4 \
  20717. \cf2 // \}];\cf4 \
  20718. \cf2 //\cf4 \
  20719. \cf2 // \}\cf4 \
  20720. \cf2 // \}\cf4 \
  20721. imagePathArr =
  20722. \f2\b \cf8 nil
  20723. \f0\b0 \cf4 ;\
  20724. \}\
  20725. \
  20726. - (
  20727. \f2\b \cf8 void
  20728. \f0\b0 \cf4 )\cf11 imageBrowserVCQRCodeAction\cf4 :(NSString *)stringValue \{\
  20729. \
  20730. NSRange range = [stringValue rangeOfString:\cf6 @"shikuId"\cf4 ];\
  20731. \f2\b \cf8 if
  20732. \f0\b0 \cf4 (range.location != NSNotFound) \{\
  20733. \
  20734. NSString * idStr = [stringValue substringFromIndex:range.location + range.length + \cf7 1\cf4 ];\
  20735. \
  20736. \f2\b \cf8 if
  20737. \f0\b0 \cf4 ([stringValue rangeOfString:\cf6 @"=user"\cf4 ].location != NSNotFound) \{\
  20738. \cf2 // [g_server getUser:idStr toView:self];\cf4 \
  20739. [g_server userGetByAccountWithAccount:idStr toView:
  20740. \f2\b \cf8 self
  20741. \f0\b0 \cf4 ];\
  20742. \
  20743. \}
  20744. \f2\b \cf8 else
  20745. \f0\b0 \cf4
  20746. \f2\b \cf8 if
  20747. \f0\b0 \cf4 ([stringValue rangeOfString:\cf6 @"=group"\cf4 ].location != NSNotFound) \{\
  20748. \
  20749. [g_server getRoom:idStr toView:
  20750. \f2\b \cf8 self
  20751. \f0\b0 \cf4 ];\
  20752. \cf2 // JXRoomMemberVC* vc = [JXRoomMemberVC alloc];\cf4 \
  20753. \cf2 // vc.roomId = idStr;\cf4 \
  20754. \cf2 // vc = [vc init];\cf4 \
  20755. \cf2 // [g_navigation pushViewController:vc animated:YES];\cf4 \
  20756. \}
  20757. \f2\b \cf8 else
  20758. \f0\b0 \cf4
  20759. \f2\b \cf8 if
  20760. \f0\b0 \cf4 ([stringValue rangeOfString:\cf6 @"=open"\cf4 ].location != NSNotFound) \{\
  20761. \f2\b \cf8 if
  20762. \f0\b0 \cf4 ([idStr rangeOfString:\cf6 @"http://"\cf4 ].location != NSNotFound && [idStr rangeOfString:\cf6 @"https://"\cf4 ].location != NSNotFound) \{\
  20763. webpageVC * webVC = [webpageVC alloc];\
  20764. webVC.url= idStr;\
  20765. webVC.isSend =
  20766. \f2\b \cf8 YES
  20767. \f0\b0 \cf4 ;\
  20768. webVC = [webVC init];\
  20769. [g_navigation.navigationView addSubview:webVC.view];\
  20770. \cf2 // [g_navigation pushViewController:webVC animated:YES];\cf4 \
  20771. \}
  20772. \f2\b \cf8 else
  20773. \f0\b0 \cf4 \{\
  20774. [g_App showAlert:Localized(\cf6 @"JX_TheUrlNotOpen"\cf4 )];\
  20775. \}\
  20776. \}\
  20777. \
  20778. \}
  20779. \f2\b \cf8 else
  20780. \f0\b0 \cf4 \{\
  20781. NSRange idRange = [stringValue rangeOfString:\cf6 @"userId"\cf4 ];\
  20782. NSRange nameRange = [stringValue rangeOfString:\cf6 @"userName"\cf4 ];\
  20783. \
  20784. \f2\b \cf8 if
  20785. \f0\b0 \cf4 ([stringValue hasPrefix:\cf6 @"http://"\cf4 ] || [stringValue hasPrefix:\cf6 @"https://"\cf4 ]) \{\
  20786. webpageVC * webVC = [webpageVC alloc];\
  20787. webVC.url= stringValue;\
  20788. webVC.isSend =
  20789. \f2\b \cf8 YES
  20790. \f0\b0 \cf4 ;\
  20791. webVC = [webVC init];\
  20792. [g_navigation.navigationView addSubview:webVC.view];\
  20793. \cf2 // [g_navigation pushViewController:webVC animated:YES];\cf4 \
  20794. \
  20795. \}
  20796. \f2\b \cf8 else
  20797. \f0\b0 \cf4
  20798. \f2\b \cf8 if
  20799. \f0\b0 \cf4 (stringValue.length == \cf7 20\cf4 && [
  20800. \f2\b \cf8 self
  20801. \f0\b0 \cf4 isNumber:stringValue])\{\
  20802. \cf2 //
  20803. \f1 \'b6\'d4\'c3\'e6\'b8\'b6\'bf\'ee\'a3\'ac
  20804. \f0
  20805. \f1 \'bc\'ba\'b7\'bd\'ca\'d5\'bf\'ee
  20806. \f0 \cf4 \
  20807. JXInputMoneyVC *inputVC = [[JXInputMoneyVC alloc] init];\
  20808. inputVC.type = JXInputMoneyTypeCollection;\
  20809. inputVC.paymentCode = stringValue;\
  20810. [g_navigation pushViewController:inputVC animated:
  20811. \f2\b \cf8 YES
  20812. \f0\b0 \cf4 ];\
  20813. \}
  20814. \f2\b \cf8 else
  20815. \f0\b0 \cf4
  20816. \f2\b \cf8 if
  20817. \f0\b0 \cf4 (idRange.location != NSNotFound && nameRange.location != NSNotFound) \{\
  20818. \cf2 //
  20819. \f1 \'bc\'ba\'b7\'bd\'b8\'b6\'bf\'ee\'a3\'ac
  20820. \f0
  20821. \f1 \'b6\'d4\'c3\'e6\'ca\'d5\'bf\'ee
  20822. \f0 \cf4 \
  20823. SBJsonParser * resultParser = [[SBJsonParser alloc] init] ;\
  20824. NSDictionary *dict = [resultParser objectWithString:stringValue];\
  20825. JXInputMoneyVC *inputVC = [[JXInputMoneyVC alloc] init];\
  20826. inputVC.type = JXInputMoneyTypePayment;\
  20827. inputVC.userId = [dict objectForKey:\cf6 @"userId"\cf4 ];\
  20828. inputVC.userName = [dict objectForKey:\cf6 @"userName"\cf4 ];\
  20829. \f2\b \cf8 if
  20830. \f0\b0 \cf4 ([dict objectForKey:\cf6 @"money"\cf4 ]) \{\
  20831. inputVC.money = [dict objectForKey:\cf6 @"money"\cf4 ];\
  20832. \}\
  20833. \f2\b \cf8 if
  20834. \f0\b0 \cf4 ([dict objectForKey:\cf6 @"description"\cf4 ]) \{\
  20835. inputVC.desStr = [dict objectForKey:\cf6 @"description"\cf4 ];\
  20836. \}\
  20837. [g_navigation pushViewController:inputVC animated:
  20838. \f2\b \cf8 YES
  20839. \f0\b0 \cf4 ];\
  20840. \}\
  20841. \}\
  20842. \}\
  20843. \
  20844. - (
  20845. \f2\b \cf8 BOOL
  20846. \f0\b0 \cf4 )\cf11 isNumber\cf4 :(NSString *)strValue\
  20847. \{\
  20848. \f2\b \cf8 if
  20849. \f0\b0 \cf4 (strValue ==
  20850. \f2\b \cf8 nil
  20851. \f0\b0 \cf4 || [strValue length] <= \cf7 0\cf4 )\
  20852. \{\
  20853. \f2\b \cf8 return
  20854. \f0\b0 \cf4
  20855. \f2\b \cf8 NO
  20856. \f0\b0 \cf4 ;\
  20857. \}\
  20858. \
  20859. NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:\cf6 @"0123456789"\cf4 ] invertedSet];\
  20860. NSString *filtered = [[strValue componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:\cf6 @""\cf4 ];\
  20861. \
  20862. \f2\b \cf8 if
  20863. \f0\b0 \cf4 (![strValue isEqualToString:filtered])\
  20864. \{\
  20865. \f2\b \cf8 return
  20866. \f0\b0 \cf4
  20867. \f2\b \cf8 NO
  20868. \f0\b0 \cf4 ;\
  20869. \}\
  20870. \f2\b \cf8 return
  20871. \f0\b0 \cf4
  20872. \f2\b \cf8 YES
  20873. \f0\b0 \cf4 ;\
  20874. \}\
  20875. \
  20876. \
  20877. - (
  20878. \f2\b \cf8 void
  20879. \f0\b0 \cf4 )\cf11 dismissImageBrowserVC\cf4 \{\
  20880. JXImageCell *cell = [_table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:
  20881. \f2\b \cf8 self
  20882. \f0\b0 \cf4 .indexNum inSection:\cf7 0\cf4 ]];\
  20883. \f2\b \cf8 if
  20884. \f0\b0 \cf4 (!cell.msg.isMySend) \{\
  20885. [cell deleteReadMsg];\
  20886. \}\
  20887. \}\
  20888. \
  20889. -(
  20890. \f2\b \cf8 void
  20891. \f0\b0 \cf4 )\cf11 readTypeMsgCome\cf4 :(NSNotification*)notification\{\cf2 //
  20892. \f1 \'b7\'a2\'cb\'cd\'b7\'bd\'ca\'d5\'b5\'bd\'d2\'d1\'b6\'c1\'c0\'e0\'d0\'cd\'a3\'ac\'b8\'c4\'b1\'e4\'cf\'fb\'cf\'a2\'cd\'bc\'c6\'ac\'ce\'aa\'d2\'d1\'b6\'c1
  20893. \f0 \cf4 \
  20894. \
  20895. \cf2 //
  20896. \f1 \'b8\'fc\'d0\'c2
  20897. \f0 title
  20898. \f1 \'d4\'da\'cf\'df\'d7\'b4\'cc\'ac
  20899. \f0 \cf4 \
  20900. \f2\b \cf8 if
  20901. \f0\b0 \cf4 (!
  20902. \f2\b \cf8 self
  20903. \f0\b0 \cf4 .roomJid && !
  20904. \f2\b \cf8 self
  20905. \f0\b0 \cf4 .onlinestate) \{\
  20906. \f2\b \cf8 self
  20907. \f0\b0 \cf4 .onlinestate =
  20908. \f2\b \cf8 YES
  20909. \f0\b0 \cf4 ;\
  20910. \f2\b \cf8 if
  20911. \f0\b0 \cf4 (
  20912. \f2\b \cf8 self
  20913. \f0\b0 \cf4 .isGroupMessages) \{\
  20914. \f2\b \cf8 self
  20915. \f0\b0 \cf4 .title = Localized(\cf6 @"JX_GroupHair"\cf4 );\
  20916. [
  20917. \f2\b \cf8 self
  20918. \f0\b0 \cf4 setAudioIconFrame];\
  20919. \}
  20920. \f2\b \cf8 else
  20921. \f0\b0 \cf4 \{\
  20922. \f2\b \cf8 if
  20923. \f0\b0 \cf4 (
  20924. \f2\b \cf8 self
  20925. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 ) \{\
  20926. \
  20927. \}
  20928. \f2\b \cf8 else
  20929. \f0\b0 \cf4 \{\
  20930. \f2\b \cf8 if
  20931. \f0\b0 \cf4 ([chatPerson.userId intValue]<\cf7 10100\cf4 && [chatPerson.userId intValue]>=\cf7 10000\cf4 ) \{\
  20932. \f2\b \cf8 self
  20933. \f0\b0 \cf4 .title = chatPerson.userNickname;\
  20934. [
  20935. \f2\b \cf8 self
  20936. \f0\b0 \cf4 setAudioIconFrame];\
  20937. \
  20938. \}
  20939. \f2\b \cf8 else
  20940. \f0\b0 \cf4 \{\
  20941. \cf2 // NSString *str = self.onlinestate ? Localized(@"JX_OnLine") : Localized(@"JX_OffLine");\cf4 \
  20942. \cf2 // self.title = [NSString stringWithFormat:@"%@(%@)",chatPerson.remarkName.length > 0 ? chatPerson.remarkName : chatPerson.userNickname,str];\cf4 \
  20943. [
  20944. \f2\b \cf8 self
  20945. \f0\b0 \cf4 setChatTitle:chatPerson.remarkName.length > \cf7 0\cf4 ? chatPerson.remarkName : chatPerson.userNickname];\
  20946. \
  20947. \}\
  20948. \}\
  20949. \
  20950. \}\
  20951. \}\
  20952. \
  20953. JXMessageObject * msg = (JXMessageObject *)notification.object;\
  20954. \f2\b \cf8 if
  20955. \f0\b0 \cf4 (msg ==
  20956. \f2\b \cf8 nil
  20957. \f0\b0 \cf4 )\
  20958. \f2\b \cf8 return
  20959. \f0\b0 \cf4 ;\
  20960. \
  20961. NSString * msgId = msg.content;\
  20962. \f2\b \cf8 for
  20963. \f0\b0 \cf4 (
  20964. \f2\b \cf8 int
  20965. \f0\b0 \cf4 i = \cf7 0\cf4 ; i < [_array count]; i ++) \{\
  20966. JXMessageObject * p = [_array objectAtIndex:i];\
  20967. \f2\b \cf8 if
  20968. \f0\b0 \cf4 ([p.messageId isEqualToString:msgId]) \{\
  20969. \f2\b \cf8 if
  20970. \f0\b0 \cf4 (p.isMySend)\{\
  20971. p.isRead = [NSNumber numberWithInt:\cf7 1\cf4 ];\
  20972. p.isSend = [NSNumber numberWithInt:\cf7 1\cf4 ];\
  20973. \}\
  20974. p.readPersons = [NSNumber numberWithInt:[p.readPersons intValue] + \cf7 1\cf4 ];\
  20975. JXBaseChatCell* cell = [
  20976. \f2\b \cf8 self
  20977. \f0\b0 \cf4 getCell:i];\
  20978. \f2\b \cf8 if
  20979. \f0\b0 \cf4 (cell)\{\
  20980. [cell drawIsSend];\
  20981. \cf2 // [cell drawIsRead];\cf4 \
  20982. \}\
  20983. \
  20984. \
  20985. \f2\b \cf8 if
  20986. \f0\b0 \cf4 ([p.isReadDel boolValue]) \{\
  20987. \
  20988. \f2\b \cf8 if
  20989. \f0\b0 \cf4 (!cell) \{\
  20990. \
  20991. [
  20992. \f2\b \cf8 self
  20993. \f0\b0 \cf4 readDeleWithUser:p];\
  20994. \f2\b \cf8 break
  20995. \f0\b0 \cf4 ;\
  20996. \}\
  20997. \
  20998. \f2\b \cf8 switch
  20999. \f0\b0 \cf4 ([p.type intValue]) \{\
  21000. \f2\b \cf8 case
  21001. \f0\b0 \cf4 kWCMessageTypeImage:\{\
  21002. JXImageCell *imageCell = (JXImageCell *)cell;\
  21003. imageCell.isRemove =
  21004. \f2\b \cf8 YES
  21005. \f0\b0 \cf4 ;\
  21006. [imageCell timeGo:p];\
  21007. \cf2 // [g_notify postNotificationName:kImageDidTouchEndNotification object:p];\cf4 \
  21008. \}\
  21009. \f2\b \cf8 break
  21010. \f0\b0 \cf4 ;\
  21011. \f2\b \cf8 case
  21012. \f0\b0 \cf4 kWCMessageTypeCustomFace:\
  21013. \{\
  21014. JXFaceCustomCell *imageCell = (JXFaceCustomCell *)cell;\
  21015. imageCell.isRemove =
  21016. \f2\b \cf8 YES
  21017. \f0\b0 \cf4 ;\
  21018. [imageCell timeGo:p];\
  21019. \cf2 // [g_notify postNotificationName:kImageDidTouchEndNotification object:p];\cf4 \
  21020. \}\
  21021. \f2\b \cf8 break
  21022. \f0\b0 \cf4 ;\
  21023. \f2\b \cf8 case
  21024. \f0\b0 \cf4 kWCMessageTypeEmoji:\
  21025. \{\
  21026. JXEmojiCell *imageCell = (JXEmojiCell *)cell;\
  21027. imageCell.isRemove =
  21028. \f2\b \cf8 YES
  21029. \f0\b0 \cf4 ;\
  21030. [imageCell timeGo:p];\
  21031. \cf2 // [g_notify postNotificationName:kImageDidTouchEndNotification object:p];\cf4 \
  21032. \}\
  21033. \f2\b \cf8 break
  21034. \f0\b0 \cf4 ;\
  21035. \f2\b \cf8 case
  21036. \f0\b0 \cf4 kWCMessageTypeVoice:\{\
  21037. JXAudioCell *audioCell = (JXAudioCell *)cell;\
  21038. [audioCell timeGo:p.fileName];\
  21039. \}\
  21040. \
  21041. \f2\b \cf8 break
  21042. \f0\b0 \cf4 ;\
  21043. \f2\b \cf8 case
  21044. \f0\b0 \cf4 kWCMessageTypeVideo:\{\
  21045. JXVideoCell *videoCell = (JXVideoCell *)cell;\
  21046. [videoCell timeGo:p.fileName];\
  21047. \}\
  21048. \
  21049. \f2\b \cf8 break
  21050. \f0\b0 \cf4 ;\
  21051. \f2\b \cf8 case
  21052. \f0\b0 \cf4 kWCMessageTypeText:\{\
  21053. JXMessageCell *messageCell = (JXMessageCell *)cell;\
  21054. [messageCell deleteMsg:messageCell.msg];\
  21055. \cf2 // [self readDeleWithUser:messageCell.msg];\cf4 \
  21056. \}\
  21057. \f2\b \cf8 break
  21058. \f0\b0 \cf4 ;\
  21059. \f2\b \cf8 case
  21060. \f0\b0 \cf4 kWCMessageTypeReply:\{\
  21061. JXReplyCell *replyCell = (JXReplyCell *)cell;\
  21062. [replyCell deleteMsg:replyCell.msg];\
  21063. \}\
  21064. \f2\b \cf8 break
  21065. \f0\b0 \cf4 ;\
  21066. \f2\b \cf8 default
  21067. \f0\b0 \cf4 :\
  21068. \f2\b \cf8 break
  21069. \f0\b0 \cf4 ;\
  21070. \}\
  21071. \}\
  21072. \
  21073. \f2\b \cf8 break
  21074. \f0\b0 \cf4 ;\
  21075. \}\
  21076. \}\
  21077. \}\
  21078. \
  21079. -(
  21080. \f2\b \cf8 void
  21081. \f0\b0 \cf4 )\cf11 readTypeMsgReceipt\cf4 :(NSNotification*)notification\{\cf2 //
  21082. \f1 \'bd\'d3\'ca\'d5\'b7\'bd\'ca\'d5\'b5\'bd\'d2\'d1\'b6\'c1\'cf\'fb\'cf\'a2\'b5\'c4\'bb\'d8\'d6\'b4\'a3\'ac\'b8\'c4\'b1\'e4\'b1\'ea\'d6\'be\'b1\'dc\'c3\'e2\'d6\'d8\'b8\'b4\'b7\'a2
  21083. \f0 \cf4 \
  21084. JXMessageObject * msg = (JXMessageObject *)notification.object;\
  21085. \f2\b \cf8 if
  21086. \f0\b0 \cf4 (msg ==
  21087. \f2\b \cf8 nil
  21088. \f0\b0 \cf4 )\
  21089. \f2\b \cf8 return
  21090. \f0\b0 \cf4 ;\
  21091. \
  21092. \f2\b \cf8 for
  21093. \f0\b0 \cf4 (
  21094. \f2\b \cf8 int
  21095. \f0\b0 \cf4 i = \cf7 0\cf4 ; i < [_array count]; i ++) \{\
  21096. JXMessageObject * p = [_array objectAtIndex:i];\
  21097. \f2\b \cf8 if
  21098. \f0\b0 \cf4 ([p.messageId isEqualToString:msg.content])\{\
  21099. \f2\b \cf8 if
  21100. \f0\b0 \cf4 (msg.isMySend)\{\
  21101. p.isRead = [NSNumber numberWithInt:\cf7 1\cf4 ];\
  21102. p.isSend = [NSNumber numberWithInt:\cf7 1\cf4 ];\
  21103. \}\
  21104. p.readPersons = [NSNumber numberWithInt:[p.readPersons intValue] + \cf7 1\cf4 ];\
  21105. JXBaseChatCell* cell = [
  21106. \f2\b \cf8 self
  21107. \f0\b0 \cf4 getCell:i];\
  21108. \f2\b \cf8 if
  21109. \f0\b0 \cf4 (cell)\{\
  21110. [cell drawIsSend];\
  21111. [cell drawIsRead];\
  21112. \}\
  21113. \f2\b \cf8 break
  21114. \f0\b0 \cf4 ;\
  21115. \}\
  21116. \}\
  21117. \}\
  21118. \
  21119. \cf2 //
  21120. \f1 \'bb\'f1\'c8\'a1\'bf\'da\'c1\'ee\'ba\'ec\'b0\'fc\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc
  21121. \f0 \cf4 \
  21122. -(NSMutableArray*)\cf11 fetchRedPacketListWithType\cf4 :(
  21123. \f2\b \cf8 int
  21124. \f0\b0 \cf4 )rpType\
  21125. \{\
  21126. NSString* myUserId = MY_USER_ID;\
  21127. \f2\b \cf8 if
  21128. \f0\b0 \cf4 ([myUserId length]<=\cf7 0\cf4 )\
  21129. \f2\b \cf8 return
  21130. \f0\b0 \cf4
  21131. \f2\b \cf8 nil
  21132. \f0\b0 \cf4 ;\
  21133. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];\
  21134. \
  21135. NSMutableArray *messageList=[[NSMutableArray alloc]init];\
  21136. NSString *s;\
  21137. \f2\b \cf8 if
  21138. \f0\b0 \cf4 ([
  21139. \f2\b \cf8 self
  21140. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\
  21141. s =
  21142. \f2\b \cf8 self
  21143. \f0\b0 \cf4 .roomJid;\
  21144. \f2\b \cf8 else
  21145. \f0\b0 \cf4 \
  21146. s = chatPerson.userId;\
  21147. \
  21148. NSString *queryString=[NSString stringWithFormat:\cf6 @"select * from msg_%@ where type=28 and fileName=3"\cf4 ,s];\
  21149. \
  21150. FMResultSet *rs=[db executeQuery:queryString];\
  21151. \f2\b \cf8 while
  21152. \f0\b0 \cf4 ([rs next]) \{\
  21153. JXMessageObject *p=[[JXMessageObject alloc]init];\
  21154. [p fromRs:rs];\
  21155. [messageList addObject:p];\
  21156. \cf2 // [p release];\cf4 \
  21157. \}\
  21158. [rs close];\
  21159. db =
  21160. \f2\b \cf8 nil
  21161. \f0\b0 \cf4 ;\
  21162. \
  21163. \f2\b \cf8 if
  21164. \f0\b0 \cf4 ([messageList count]==\cf7 0\cf4 )\{\
  21165. \cf2 // [messageList release];\cf4 \
  21166. messageList =
  21167. \f2\b \cf8 nil
  21168. \f0\b0 \cf4 ;\
  21169. \}\
  21170. \f2\b \cf8 return
  21171. \f0\b0 \cf4 messageList;\
  21172. \}\
  21173. \
  21174. \cf2 //
  21175. \f1 \'b8\'c4\'b1\'e4\'ba\'ec\'b0\'fc\'b6\'d4\'d3\'a6\'cf\'fb\'cf\'a2\'b5\'c4\'b2\'bb\'bf\'c9\'bb\'f1\'c8\'a1
  21176. \f0 \cf4 \
  21177. -(
  21178. \f2\b \cf8 void
  21179. \f0\b0 \cf4 )\cf11 changeMessageRedPacketStatus\cf4 :(NSString*)redPacketId\{\
  21180. NSString* myUserId = MY_USER_ID;\
  21181. \f2\b \cf8 if
  21182. \f0\b0 \cf4 ([myUserId length]<=\cf7 0\cf4 )\{\
  21183. \f2\b \cf8 return
  21184. \f0\b0 \cf4 ;\
  21185. \}\
  21186. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];\
  21187. \
  21188. NSString * sufStr =
  21189. \f2\b \cf8 self
  21190. \f0\b0 \cf4 .roomJid ?
  21191. \f2\b \cf8 self
  21192. \f0\b0 \cf4 .roomJid :
  21193. \f2\b \cf8 self
  21194. \f0\b0 \cf4 .chatPerson.userId;\
  21195. \
  21196. NSString * sql = [NSString stringWithFormat:\cf6 @"update msg_%@ set fileSize=2 where objectId=?"\cf4 ,sufStr];\
  21197. \
  21198. [db executeUpdate:sql,redPacketId];\
  21199. \
  21200. db =
  21201. \f2\b \cf8 nil
  21202. \f0\b0 \cf4 ;\
  21203. \}\
  21204. \cf2 //
  21205. \f1 \'b8\'c4\'b1\'e4\'ba\'ec\'b0\'fc\'cf\'fb\'cf\'a2\'b2\'bb\'bf\'c9\'bb\'f1\'c8\'a1
  21206. \f0 \cf4 \
  21207. - (
  21208. \f2\b \cf8 void
  21209. \f0\b0 \cf4 )\cf11 changeMessageArrFileSize\cf4 :(NSString *)redPackerId\{\
  21210. \f2\b \cf8 for
  21211. \f0\b0 \cf4 (NSInteger i = _array.count - \cf7 1\cf4 ; i >= \cf7 0\cf4 ; i --) \{\
  21212. JXMessageObject *msg = _array[i];\
  21213. \f2\b \cf8 if
  21214. \f0\b0 \cf4 ([msg.objectId isEqualToString:redPackerId]) \{\
  21215. msg.fileSize = [NSNumber numberWithInt:\cf7 2\cf4 ];\
  21216. JXBaseChatCell *cell = [
  21217. \f2\b \cf8 self
  21218. \f0\b0 \cf4 .tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:\cf7 0\cf4 ]];\
  21219. \f2\b \cf8 if
  21220. \f0\b0 \cf4 (cell) \{\
  21221. \cf2 // [self.tableView reloadRow:(int)i section:0]; //
  21222. \f1 \'d0\'de\'b8\'c4\'c1\'cb\'d7\'a2\'ca\'cd\'c1\'cb
  21223. \f0 \cf4 \
  21224. \}\
  21225. \}\
  21226. \}\
  21227. \f2\b \cf8 for
  21228. \f0\b0 \cf4 (JXMessageObject * msg
  21229. \f2\b \cf8 in
  21230. \f0\b0 \cf4 _orderRedPacketArray) \{\
  21231. \f2\b \cf8 if
  21232. \f0\b0 \cf4 ([msg.objectId isEqualToString:redPackerId]) \{\
  21233. msg.fileSize = [NSNumber numberWithInt:\cf7 2\cf4 ];\
  21234. \}\
  21235. \}\
  21236. \}\
  21237. \cf2 //
  21238. \f1 \'b8\'fc\'d0\'c2\'d7\'aa\'d5\'cb\'d2\'d1\'c1\'ec\'c8\'a1\'d7\'b4\'cc\'ac
  21239. \f0 \cf4 \
  21240. - (
  21241. \f2\b \cf8 void
  21242. \f0\b0 \cf4 )\cf11 updateTransferMsgFileSize\cf4 :(NSNotification *)noti \{\
  21243. NSString *str = [NSString stringWithFormat:\cf6 @"%@"\cf4 ,noti.object];\
  21244. \
  21245. JXMessageObject *msg = [[JXMessageObject alloc] init];\
  21246. msg.objectId = str;\
  21247. msg.toUserId =
  21248. \f2\b \cf8 self
  21249. \f0\b0 \cf4 .chatPerson.userId;\
  21250. NSMutableArray *msgs = [msg getMsgWithObjectId:str];\
  21251. \f2\b \cf8 for
  21252. \f0\b0 \cf4 (
  21253. \f2\b \cf8 int
  21254. \f0\b0 \cf4 i = \cf7 0\cf4 ; i < msgs.count; i++) \{\
  21255. JXMessageObject *msg1 = msgs[i];\
  21256. msg1.fileSize = [NSNumber numberWithInt:\cf7 2\cf4 ];\
  21257. [msg1 updateFileSize];\
  21258. \}\
  21259. \
  21260. [
  21261. \f2\b \cf8 self
  21262. \f0\b0 \cf4 changeMessageArrFileSize:str];\
  21263. \}\
  21264. \
  21265. -(JXBaseChatCell*)\cf11 getCell\cf4 :(
  21266. \f2\b \cf8 long
  21267. \f0\b0 \cf4 )index\{\
  21268. \f2\b \cf8 if
  21269. \f0\b0 \cf4 (index<\cf7 0\cf4 && index >= [_array count])\
  21270. \f2\b \cf8 return
  21271. \f0\b0 \cf4
  21272. \f2\b \cf8 nil
  21273. \f0\b0 \cf4 ;\
  21274. NSIndexPath *indexPath = [NSIndexPath indexPathForRow:index inSection:\cf7 0\cf4 ];\
  21275. \f2\b \cf8 return
  21276. \f0\b0 \cf4 (JXBaseChatCell*)[_table cellForRowAtIndexPath:indexPath];\
  21277. \}\
  21278. \cf5 #pragma mark
  21279. \f2\b \cf16 ------
  21280. \f4 \'d7\'d4\'b6\'af\'cf\'f2\'cf\'c2\'b2\'a5\'b7\'c5\'d3\'ef\'d2\'f4
  21281. \f0\b0 \cf4 \
  21282. -(
  21283. \f2\b \cf8 void
  21284. \f0\b0 \cf4 )\cf11 audioPlayEnd\cf4 :(NSNotification*)notification\{\
  21285. JXAudioCell* cell = (JXAudioCell*)notification.object;\
  21286. JXMessageObject *msg=cell.msg;\
  21287. _lastIndex = cell.indexNum;\
  21288. \cf2 //msg.isReadDel = [NSNumber numberWithBool:YES];\cf4 \
  21289. \f2\b \cf8 if
  21290. \f0\b0 \cf4 ([msg.isReadDel boolValue]) \{\
  21291. \f2\b \cf8 return
  21292. \f0\b0 \cf4 ;\
  21293. \}\
  21294. \f2\b \cf8 if
  21295. \f0\b0 \cf4 (_lastIndex >= _array.count)\
  21296. \f2\b \cf8 return
  21297. \f0\b0 \cf4 ;\
  21298. \
  21299. \f2\b \cf8 while
  21300. \f0\b0 \cf4 (_lastIndex<_array.count) \{\
  21301. _lastIndex++;\
  21302. \f2\b \cf8 if
  21303. \f0\b0 \cf4 (_lastIndex>=_array.count)\
  21304. \f2\b \cf8 break
  21305. \f0\b0 \cf4 ;\
  21306. msg = [_array objectAtIndex:_lastIndex];\
  21307. \f2\b \cf8 if
  21308. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeVoice && ![msg.isRead boolValue] && !msg.isMySend)\{\
  21309. JXAudioCell* nextCell = [_table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:_lastIndex inSection:\cf7 0\cf4 ]];\
  21310. [nextCell.audioPlayer
  21311. \f2\b \cf8 switch
  21312. \f0\b0 \cf4 ];\
  21313. \f2\b \cf8 break
  21314. \f0\b0 \cf4 ;\
  21315. \}\
  21316. \}\
  21317. \
  21318. msg =
  21319. \f2\b \cf8 nil
  21320. \f0\b0 \cf4 ;\
  21321. cell =
  21322. \f2\b \cf8 nil
  21323. \f0\b0 \cf4 ;\
  21324. \}\
  21325. \
  21326. - (
  21327. \f2\b \cf8 BOOL
  21328. \f0\b0 \cf4 )\cf11 canRecord\cf4 \
  21329. \{\
  21330. \f2\b \cf8 __block
  21331. \f0\b0 \cf4
  21332. \f2\b \cf8 BOOL
  21333. \f0\b0 \cf4 bCanRecord =
  21334. \f2\b \cf8 YES
  21335. \f0\b0 \cf4 ;\
  21336. \f2\b \cf8 if
  21337. \f0\b0 \cf4 ([[[UIDevice currentDevice]systemVersion]floatValue] >= \cf7 7.0\cf4 ) \{\
  21338. AVAudioSession *audioSession = [AVAudioSession sharedInstance];\
  21339. \f2\b \cf8 if
  21340. \f0\b0 \cf4 ([audioSession respondsToSelector:
  21341. \f2\b \cf8 @selector
  21342. \f0\b0 \cf4 (requestRecordPermission:)]) \{\
  21343. [audioSession performSelector:
  21344. \f2\b \cf8 @selector
  21345. \f0\b0 \cf4 (requestRecordPermission:) withObject:^(
  21346. \f2\b \cf8 BOOL
  21347. \f0\b0 \cf4 granted) \{\
  21348. \f2\b \cf8 if
  21349. \f0\b0 \cf4 (granted) \{\
  21350. bCanRecord =
  21351. \f2\b \cf8 YES
  21352. \f0\b0 \cf4 ;\
  21353. \}
  21354. \f2\b \cf8 else
  21355. \f0\b0 \cf4 \{\
  21356. bCanRecord =
  21357. \f2\b \cf8 NO
  21358. \f0\b0 \cf4 ;\
  21359. \}\
  21360. \}];\
  21361. \}\
  21362. \}\
  21363. \f2\b \cf8 return
  21364. \f0\b0 \cf4 bCanRecord;\
  21365. \}\
  21366. \
  21367. - (
  21368. \f2\b \cf8 void
  21369. \f0\b0 \cf4 )\cf11 readDeleWithUser\cf4 :(JXMessageObject *)p\{\
  21370. \f2\b \cf8 self
  21371. \f0\b0 \cf4 .readDelNum ++;\
  21372. \f2\b \cf8 if
  21373. \f0\b0 \cf4 ([p.fromUserId isEqualToString:MY_USER_ID]) \{\
  21374. \f2\b \cf8 for
  21375. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < _array.count; i ++) \{\
  21376. JXMessageObject *msg = _array[i];\
  21377. \f2\b \cf8 if
  21378. \f0\b0 \cf4 ([p.messageId isEqualToString:msg.messageId]) \{\
  21379. msg.type = [NSNumber numberWithInt:kWCMessageTypeRemind];\
  21380. msg.content = Localized(\cf6 @"JX_OtherLookedYourReadingMsg"\cf4 );\
  21381. [msg update];\
  21382. \
  21383. [_table reloadData];\
  21384. \
  21385. \f2\b \cf8 break
  21386. \f0\b0 \cf4 ;\
  21387. \}\
  21388. \}\
  21389. \}
  21390. \f2\b \cf8 else
  21391. \f0\b0 \cf4 \{\
  21392. [
  21393. \f2\b \cf8 self
  21394. \f0\b0 \cf4 deleteMsg:p];\
  21395. \}\
  21396. \
  21397. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(\cf7 2\cf4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\
  21398. \f2\b \cf8 if
  21399. \f0\b0 \cf4 (
  21400. \f2\b \cf8 self
  21401. \f0\b0 \cf4 .readDelNum > \cf7 5\cf4 ) \{\
  21402. \f2\b \cf8 self
  21403. \f0\b0 \cf4 .readDelNum = \cf7 0\cf4 ;\
  21404. \
  21405. \
  21406. \
  21407. [
  21408. \f2\b \cf8 self
  21409. \f0\b0 \cf4 .tableView reloadData];\
  21410. NSLog(\cf6 @"readDelNum ----- %d"\cf4 ,
  21411. \f2\b \cf8 self
  21412. \f0\b0 \cf4 .readDelNum);\
  21413. \}\
  21414. \});\
  21415. \}\
  21416. \
  21417. \cf2 //#pragma mark--------
  21418. \f1 \'b5\'c7\'c2\'bc\'d7\'b4\'cc\'ac\'b8\'c4\'b1\'e4
  21419. \f0 \cf4 \
  21420. \cf2 //-(void)onLoginChanged:(NSNotification *)notifacation\{\cf4 \
  21421. \cf2 // [_wait stop];\cf4 \
  21422. \cf2 // if (_isShowLoginChange) \{\cf4 \
  21423. \cf2 // switch ([JXXMPP sharedInstance].isLogined)\{\cf4 \
  21424. \cf2 // case login_status_ing:\cf4 \
  21425. \cf2 // //
  21426. \f1 \'c1\'ac\'bd\'d3\'ca\'a7\'b0\'dc
  21427. \f0 \cf4 \
  21428. \cf2 // [JXMyTools showTipView:Localized(@"JX_ConnectFailed")];\cf4 \
  21429. \cf2 // break;\cf4 \
  21430. \cf2 // case login_status_no:\cf4 \
  21431. \cf2 // //
  21432. \f1 \'c1\'ac\'bd\'d3\'ca\'a7\'b0\'dc
  21433. \f0 \cf4 \
  21434. \cf2 // [JXMyTools showTipView:Localized(@"JX_ConnectFailed")];\cf4 \
  21435. \cf2 // break;\cf4 \
  21436. \cf2 // case login_status_yes:\cf4 \
  21437. \cf2 // //
  21438. \f1 \'c1\'ac\'bd\'d3\'b3\'c9\'b9\'a6
  21439. \f0 \cf4 \
  21440. \cf2 // [JXMyTools showTipView:Localized(@"JX_ConnectSuccessfully")];\cf4 \
  21441. \cf2 // break;\cf4 \
  21442. \cf2 // \}\cf4 \
  21443. \cf2 // \}\cf4 \
  21444. \cf2 //\}\cf4 \
  21445. \
  21446. - (
  21447. \f2\b \cf8 void
  21448. \f0\b0 \cf4 )\cf11 onBackForRecordBtnLeft\cf4 \{\
  21449. \f2\b \cf8 self
  21450. \f0\b0 \cf4 .objToMsg =
  21451. \f2\b \cf8 nil
  21452. \f0\b0 \cf4 ;\
  21453. [_recordBtnLeft setBackgroundImage:[UIImage imageNamed:\cf6 @"im_input_ptt_normal"\cf4 ] forState:UIControlStateNormal];\
  21454. [_recordBtnLeft setBackgroundImage:[UIImage imageNamed:\cf6 @"im_input_keyboard_normal"\cf4 ] forState:UIControlStateSelected];\
  21455. [_recordBtnLeft removeTarget:
  21456. \f2\b \cf8 self
  21457. \f0\b0 \cf4 action:
  21458. \f2\b \cf8 @selector
  21459. \f0\b0 \cf4 (onBackForRecordBtnLeft) forControlEvents:UIControlEventTouchUpInside];\
  21460. [_recordBtnLeft addTarget:
  21461. \f2\b \cf8 self
  21462. \f0\b0 \cf4 action:
  21463. \f2\b \cf8 @selector
  21464. \f0\b0 \cf4 (recordSwitch:) forControlEvents:UIControlEventTouchUpInside];\
  21465. _messageText.textColor = [UIColor blackColor];\
  21466. _messageText.text =
  21467. \f2\b \cf8 nil
  21468. \f0\b0 \cf4 ;\
  21469. _hisReplyMsg =
  21470. \f2\b \cf8 nil
  21471. \f0\b0 \cf4 ;\
  21472. [
  21473. \f2\b \cf8 self
  21474. \f0\b0 \cf4 textViewDidChange:_messageText];\
  21475. \
  21476. \}\
  21477. \
  21478. - (
  21479. \f2\b \cf8 void
  21480. \f0\b0 \cf4 )\cf11 getTextViewWatermark\cf4 \{\
  21481. \f2\b \cf8 if
  21482. \f0\b0 \cf4 (_hisReplyMsg.length <= \cf7 0\cf4 ) \{\
  21483. \f2\b \cf8 return
  21484. \f0\b0 \cf4 ;\
  21485. \}\
  21486. [_messageText becomeFirstResponder];\
  21487. \cf2 //
  21488. \f1 \'b3\'a4\'b0\'b4\'bb\'d8\'b8\'b4
  21489. \f0
  21490. \f1 \'cf\'d4\'ca\'be\'cb\'ae\'d3\'a1
  21491. \f0 \cf4 \
  21492. \f2\b \cf8 if
  21493. \f0\b0 \cf4 (![
  21494. \f2\b \cf8 self
  21495. \f0\b0 \cf4 changeEmjoyText:_hisReplyMsg textColor:[UIColor lightGrayColor]]) \{\
  21496. [_messageText.textStorage insertAttributedString:[[NSAttributedString alloc] initWithString:_hisReplyMsg attributes:\cf7 @\{\cf4 NSFontAttributeName:SYSFONT(\cf7 18\cf4 ),NSForegroundColorAttributeName:[UIColor lightGrayColor]\cf7 \}\cf4 ] atIndex:_messageText.selectedRange.location];\
  21497. \}\
  21498. _messageText.textColor = [UIColor lightGrayColor];\
  21499. _messageText.selectedRange = NSMakeRange(\cf7 0\cf4 , \cf7 0\cf4 );\
  21500. [
  21501. \f2\b \cf8 self
  21502. \f0\b0 \cf4 setTableFooterFrame:_messageText];\
  21503. \}\
  21504. \
  21505. \cf2 //
  21506. \f1 \'b3\'a4\'b0\'b4\'bb\'d8\'b8\'b4
  21507. \f0 \cf4 \
  21508. - (
  21509. \f2\b \cf8 void
  21510. \f0\b0 \cf4 )\cf11 chatCell\cf4 :(JXBaseChatCell *)chatCell \cf11 replyIndexNum\cf4 :(
  21511. \f2\b \cf8 int
  21512. \f0\b0 \cf4 )indexNum \{\
  21513. \f2\b \cf8 if
  21514. \f0\b0 \cf4 (!_messageText.userInteractionEnabled) \{\
  21515. [JXMyTools showTipView:\cf6 @"
  21516. \f1 \'c4\'fa\'d2\'d1\'b1\'bb\'bd\'fb\'d6\'b9\'b7\'a2\'d1\'d4
  21517. \f0 "\cf4 ];\
  21518. \f2\b \cf8 return
  21519. \f0\b0 \cf4 ;\
  21520. \}\
  21521. \
  21522. JXMessageObject *msg = _array[indexNum];\
  21523. \f2\b \cf8 if
  21524. \f0\b0 \cf4 (_recordBtnLeft.selected) \{\
  21525. [
  21526. \f2\b \cf8 self
  21527. \f0\b0 \cf4 recordSwitch:_recordBtnLeft];\
  21528. \}\
  21529. [_messageText becomeFirstResponder];\
  21530. [_recordBtnLeft setBackgroundImage:[UIImage imageNamed:\cf6 @"chat_back_reply"\cf4 ] forState:UIControlStateNormal];\
  21531. [_recordBtnLeft removeTarget:
  21532. \f2\b \cf8 self
  21533. \f0\b0 \cf4 action:
  21534. \f2\b \cf8 @selector
  21535. \f0\b0 \cf4 (recordSwitch:) forControlEvents:UIControlEventTouchUpInside];\
  21536. [_recordBtnLeft addTarget:
  21537. \f2\b \cf8 self
  21538. \f0\b0 \cf4 action:
  21539. \f2\b \cf8 @selector
  21540. \f0\b0 \cf4 (onBackForRecordBtnLeft) forControlEvents:UIControlEventTouchUpInside];\
  21541. _hisReplyMsg = [NSString stringWithFormat:\cf6 @"%@%@:%@"\cf4 ,Localized(\cf6 @"JX_Reply"\cf4 ),msg.fromUserName,[msg getTypeName]];\
  21542. \cf2 //
  21543. \f1 \'cf\'d4\'ca\'be\'cb\'ae\'d3\'a1
  21544. \f0 \cf4 \
  21545. [
  21546. \f2\b \cf8 self
  21547. \f0\b0 \cf4 getTextViewWatermark];\
  21548. \cf2 //
  21549. \f1 \'d7\'aa\'b3\'c9
  21550. \f0 json
  21551. \f1 \'ca\'fd\'be\'dd
  21552. \f0 \cf4 \
  21553. SBJsonWriter * OderJsonwriter = [SBJsonWriter
  21554. \f2\b \cf8 new
  21555. \f0\b0 \cf4 ];\
  21556. NSString * jsonString = [OderJsonwriter stringWithObject:[msg toDictionary]];\
  21557. \f2\b \cf8 self
  21558. \f0\b0 \cf4 .objToMsg = jsonString;\
  21559. \}\
  21560. \
  21561. \cf2 //
  21562. \f1 \'b3\'a4\'b0\'b4\'d7\'aa\'b7\'a2
  21563. \f0 \cf4 \
  21564. - (
  21565. \f2\b \cf8 void
  21566. \f0\b0 \cf4 )\cf11 chatCell\cf4 :(JXBaseChatCell *)chatCell \cf11 RelayIndexNum\cf4 :(
  21567. \f2\b \cf8 int
  21568. \f0\b0 \cf4 )indexNum \{\
  21569. [
  21570. \f2\b \cf8 self
  21571. \f0\b0 \cf4 hideKeyboard:
  21572. \f2\b \cf8 NO
  21573. \f0\b0 \cf4 ];\
  21574. memberData *data = [
  21575. \f2\b \cf8 self
  21576. \f0\b0 \cf4 .room getMember:g_myself.userId];\
  21577. \f2\b \cf8 if
  21578. \f0\b0 \cf4 ([data.role integerValue] == \cf7 4\cf4 ) \{\
  21579. [JXMyTools showTipView:\cf6 @"
  21580. \f1 \'d2\'fe\'c9\'ed\'c8\'cb\'b2\'bb\'c4\'dc\'d7\'aa\'b7\'a2\'cf\'fb\'cf\'a2
  21581. \f0 "\cf4 ];\
  21582. \f2\b \cf8 return
  21583. \f0\b0 \cf4 ;\
  21584. \}\
  21585. \
  21586. JXMessageObject *msg = _array[indexNum];\
  21587. JXRelayVC *vc = [[JXRelayVC alloc] init];\
  21588. vc.chatPerson =
  21589. \f2\b \cf8 self
  21590. \f0\b0 \cf4 .chatPerson;\
  21591. vc.roomJid =
  21592. \f2\b \cf8 self
  21593. \f0\b0 \cf4 .roomJid;\
  21594. vc.isMoreSel =
  21595. \f2\b \cf8 YES
  21596. \f0\b0 \cf4 ;\
  21597. vc.chatVC =
  21598. \f2\b \cf8 self
  21599. \f0\b0 \cf4 ;\
  21600. NSMutableArray *array = [NSMutableArray arrayWithObject:msg];\
  21601. \cf2 // vc.msg = msg;\cf4 \
  21602. vc.relayMsgArray = array;\
  21603. \cf2 // [g_window addSubview:vc.view];\cf4 \
  21604. [g_navigation pushViewController:vc animated:
  21605. \f2\b \cf8 YES
  21606. \f0\b0 \cf4 ];\
  21607. \}\
  21608. \
  21609. - (
  21610. \f2\b \cf8 void
  21611. \f0\b0 \cf4 )\cf11 setRelayMsgArray\cf4 :(NSMutableArray *)relayMsgArray \{\
  21612. _relayMsgArray = relayMsgArray;\
  21613. \f2\b \cf8 self
  21614. \f0\b0 \cf4 .friendStatus = friend_status_friend;\
  21615. \f2\b \cf8 if
  21616. \f0\b0 \cf4 (!
  21617. \f2\b \cf8 self
  21618. \f0\b0 \cf4 .roomJid) \{\
  21619. \f2\b \cf8 for
  21620. \f0\b0 \cf4 (JXMessageObject *msg
  21621. \f2\b \cf8 in
  21622. \f0\b0 \cf4 relayMsgArray) \{\
  21623. \f2\b \cf8 if
  21624. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeRedPacket) \{\
  21625. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];\
  21626. msg.content = [NSString stringWithFormat:\cf6 @"[%@]"\cf4 , Localized(\cf6 @"JX_RED"\cf4 )];\
  21627. msg.chatMsgHeight = \cf6 @"0"\cf4 ;\
  21628. \}\
  21629. \f2\b \cf8 if
  21630. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeAudioMeetingInvite || [msg.type intValue] == kWCMessageTypeVideoMeetingInvite || [msg.type intValue] == kWCMessageTypeAudioChatCancel || [msg.type intValue] == kWCMessageTypeAudioChatEnd || [msg.type intValue] == kWCMessageTypeVideoChatCancel || [msg.type intValue] == kWCMessageTypeVideoChatEnd || [msg.type intValue] == kWCMessageTypeAVBusy) \{\
  21631. \
  21632. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];\
  21633. msg.content = [NSString stringWithFormat:\cf6 @"[%@]"\cf4 , Localized(\cf6 @"JX_AudioAndVideoCalls"\cf4 )];\
  21634. msg.chatMsgHeight = \cf6 @"0"\cf4 ;\
  21635. \}\
  21636. [
  21637. \f2\b \cf8 self
  21638. \f0\b0 \cf4 relay:msg];\
  21639. \}\
  21640. \cf2 // [self relay];\cf4 \
  21641. \}\
  21642. \}\
  21643. \
  21644. \cf2 //- (void)setRelayMsg:(JXMessageObject *)relayMsg \{\cf4 \
  21645. \cf2 // _relayMsg = relayMsg;\cf4 \
  21646. \cf2 // self.friendStatus = friend_status_friend;\cf4 \
  21647. \cf2 // if (!self.roomJid) \{\cf4 \
  21648. \cf2 // [self relay];\cf4 \
  21649. \cf2 // \}\cf4 \
  21650. \cf2 //\}\cf4 \
  21651. \
  21652. - (
  21653. \f2\b \cf8 void
  21654. \f0\b0 \cf4 ) \cf11 relay\cf4 :(JXMessageObject *)msg\{\
  21655. \f2\b \cf8 if
  21656. \f0\b0 \cf4 ([
  21657. \f2\b \cf8 self
  21658. \f0\b0 \cf4 showDisableSay])\
  21659. \f2\b \cf8 return
  21660. \f0\b0 \cf4 ;\
  21661. \f2\b \cf8 if
  21662. \f0\b0 \cf4 ([
  21663. \f2\b \cf8 self
  21664. \f0\b0 \cf4 sendMsgCheck])\{\
  21665. \f2\b \cf8 return
  21666. \f0\b0 \cf4 ;\
  21667. \}\
  21668. \
  21669. \f2\b \cf8 if
  21670. \f0\b0 \cf4 (msg.content.length > \cf7 0\cf4 ) \{\
  21671. JXMessageObject *msg1 = [[JXMessageObject alloc]init];\
  21672. msg1 = [msg copy];\
  21673. msg1.messageId =
  21674. \f2\b \cf8 nil
  21675. \f0\b0 \cf4 ;\
  21676. msg1.timeSend = [NSDate date];\
  21677. msg1.fromId =
  21678. \f2\b \cf8 nil
  21679. \f0\b0 \cf4 ;\
  21680. msg1.fileSize =
  21681. \f2\b \cf8 nil
  21682. \f0\b0 \cf4 ;\
  21683. msg1.fileName =
  21684. \f2\b \cf8 nil
  21685. \f0\b0 \cf4 ;\
  21686. msg1.fromUserId = MY_USER_ID;\
  21687. \f2\b \cf8 if
  21688. \f0\b0 \cf4 ([
  21689. \f2\b \cf8 self
  21690. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\{\
  21691. msg1.toUserId =
  21692. \f2\b \cf8 self
  21693. \f0\b0 \cf4 .roomJid;\
  21694. msg1.isGroup =
  21695. \f2\b \cf8 YES
  21696. \f0\b0 \cf4 ;\
  21697. msg1.fromUserName = _userNickName;\
  21698. \}\
  21699. \f2\b \cf8 else
  21700. \f0\b0 \cf4 \{\
  21701. msg1.toUserId = chatPerson.userId;\
  21702. msg1.isGroup =
  21703. \f2\b \cf8 NO
  21704. \f0\b0 \cf4 ;\
  21705. \}\
  21706. \cf2 // msg.content = relayMsg.content;\cf4 \
  21707. \cf2 // msg.type = relayMsg.type;\cf4 \
  21708. msg1.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  21709. msg1.isRead = [NSNumber numberWithBool:
  21710. \f2\b \cf8 NO
  21711. \f0\b0 \cf4 ];\
  21712. msg1.isReadDel = [NSNumber numberWithInt:
  21713. \f2\b \cf8 NO
  21714. \f0\b0 \cf4 ];\
  21715. \cf2 //
  21716. \f1 \'b7\'a2\'cd\'f9\'c4\'c4\'c0\'ef
  21717. \f0 \cf4 \
  21718. [msg1 insert:
  21719. \f2\b \cf8 self
  21720. \f0\b0 \cf4 .roomJid];\
  21721. [g_xmpp sendMessage:msg1 roomName:
  21722. \f2\b \cf8 self
  21723. \f0\b0 \cf4 .roomJid];\cf2 //
  21724. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  21725. \f0 \cf4 \
  21726. [
  21727. \f2\b \cf8 self
  21728. \f0\b0 \cf4 showOneMsg:msg1];\
  21729. \f2\b \cf8 if
  21730. \f0\b0 \cf4 (_table.contentSize.height > (JX_SCREEN_HEIGHT +
  21731. \f2\b \cf8 self
  21732. \f0\b0 \cf4 .deltaHeight -
  21733. \f2\b \cf8 self
  21734. \f0\b0 \cf4 .heightFooter - \cf7 64\cf4 - \cf7 40\cf4 - \cf7 20\cf4 )) \{\
  21735. \f2\b \cf8 if
  21736. \f0\b0 \cf4 (
  21737. \f2\b \cf8 self
  21738. \f0\b0 \cf4 .deltaY >= \cf7 0\cf4 ) \{\
  21739. \
  21740. \}
  21741. \f2\b \cf8 else
  21742. \f0\b0 \cf4 \{\
  21743. \
  21744. \f2\b \cf8 if
  21745. \f0\b0 \cf4 (
  21746. \f2\b \cf8 self
  21747. \f0\b0 \cf4 .tableFooter.frame.origin.y != JX_SCREEN_HEIGHT-
  21748. \f2\b \cf8 self
  21749. \f0\b0 \cf4 .heightFooter) \{\
  21750. [CATransaction begin];\
  21751. [UIView animateWithDuration:\cf7 0.1f\cf4 animations:^\{\
  21752. \cf2 // self.tableFooter.frame = CGRectMake(0, self.view.frame.size.height+deltaY-self.heightFooter, JX_SCREEN_WIDTH, self.heightFooter);\cf4 \
  21753. [_table setFrame:CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 +_noticeHeight, _table.frame.size.width,
  21754. \f2\b \cf8 self
  21755. \f0\b0 \cf4 .view.frame.size.height+
  21756. \f2\b \cf8 self
  21757. \f0\b0 \cf4 .deltaHeight-
  21758. \f2\b \cf8 self
  21759. \f0\b0 \cf4 .heightFooter-_noticeHeight)];\
  21760. \cf2 // [_table gotoLastRow:NO];\cf4 \
  21761. \} completion:^(
  21762. \f2\b \cf8 BOOL
  21763. \f0\b0 \cf4 finished) \{\
  21764. \}];\
  21765. [CATransaction commit];\
  21766. \}\
  21767. \
  21768. \}\
  21769. \
  21770. \}\
  21771. \}\
  21772. \
  21773. [_messageText setText:
  21774. \f2\b \cf8 nil
  21775. \f0\b0 \cf4 ];\
  21776. \
  21777. \
  21778. \f2\b \cf8 if
  21779. \f0\b0 \cf4 (
  21780. \f2\b \cf8 self
  21781. \f0\b0 \cf4 .isShare &&
  21782. \f2\b \cf8 self
  21783. \f0\b0 \cf4 .shareSchemes) \{\
  21784. \
  21785. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(\cf7 1\cf4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^\{\
  21786. \f2\b \cf8 self
  21787. \f0\b0 \cf4 .shareView = [[UIView alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 , JX_SCREEN_WIDTH, JX_SCREEN_HEIGHT)];\
  21788. \f2\b \cf8 self
  21789. \f0\b0 \cf4 .shareView.backgroundColor = [UIColor colorWithWhite:\cf7 0\cf4 alpha:\cf7 .3\cf4 ];\
  21790. [g_window addSubview:
  21791. \f2\b \cf8 self
  21792. \f0\b0 \cf4 .shareView];\
  21793. \
  21794. UIView *view = [[UIView alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 , JX_SCREEN_WIDTH - \cf7 100\cf4 , \cf7 220\cf4 )];\
  21795. view.backgroundColor = [UIColor whiteColor];\
  21796. view.center = CGPointMake(
  21797. \f2\b \cf8 self
  21798. \f0\b0 \cf4 .shareView.frame.size.width / \cf7 2\cf4 ,
  21799. \f2\b \cf8 self
  21800. \f0\b0 \cf4 .shareView.frame.size.height / \cf7 2\cf4 );\
  21801. view.layer.cornerRadius = \cf7 3.0\cf4 ;\
  21802. view.layer.masksToBounds =
  21803. \f2\b \cf8 YES
  21804. \f0\b0 \cf4 ;\
  21805. [
  21806. \f2\b \cf8 self
  21807. \f0\b0 \cf4 .shareView addSubview:view];\
  21808. \
  21809. UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , \cf7 25\cf4 , \cf7 50\cf4 , \cf7 50\cf4 )];\
  21810. \
  21811. imageView.image = [UIImage imageNamed:\cf6 @"ALOGO_120"\cf4 ];\
  21812. imageView.center = CGPointMake(view.frame.size.width / \cf7 2\cf4 , imageView.center.y);\
  21813. [view addSubview:imageView];\
  21814. \
  21815. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , CGRectGetMaxY(imageView.frame) + \cf7 5\cf4 , view.frame.size.width, \cf7 30\cf4 )];\
  21816. label.font = [UIFont systemFontOfSize:\cf7 18\cf4 ];\
  21817. label.text = Localized(\cf6 @"JX_Sended"\cf4 );\
  21818. label.textAlignment = NSTextAlignmentCenter;\
  21819. [view addSubview:label];\
  21820. \
  21821. UIView *line = [[UIView alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , view.frame.size.height - \cf7 90\cf4 , view.frame.size.width, LINE_WH)];\
  21822. line.backgroundColor = THE_LINE_COLOR;\
  21823. [view addSubview:line];\
  21824. \
  21825. UIButton *btn1 = [[UIButton alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , line.frame.origin.y, line.frame.size.width, \cf7 45\cf4 )];\
  21826. [btn1 setTitle:Localized(\cf6 @"JX_Return"\cf4 ) forState:UIControlStateNormal];\
  21827. [btn1 setTitleColor:THEMECOLOR forState:UIControlStateNormal];\
  21828. [btn1 addTarget:
  21829. \f2\b \cf8 self
  21830. \f0\b0 \cf4 action:
  21831. \f2\b \cf8 @selector
  21832. \f0\b0 \cf4 (shareBackBtnAction) forControlEvents:UIControlEventTouchUpInside];\
  21833. [view addSubview:btn1];\
  21834. \
  21835. line = [[UIView alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , view.frame.size.height - \cf7 45\cf4 , view.frame.size.width, LINE_WH)];\
  21836. line.backgroundColor = THE_LINE_COLOR;\
  21837. [view addSubview:line];\
  21838. \
  21839. UIButton *btn2 = [[UIButton alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , line.frame.origin.y, line.frame.size.width, \cf7 45\cf4 )];\
  21840. [btn2 setTitle:[NSString stringWithFormat:\cf6 @"%@%@"\cf4 ,Localized(\cf6 @"JX_ToStayIn"\cf4 ),APP_NAME] forState:UIControlStateNormal];\
  21841. [btn2 setTitleColor:THEMECOLOR forState:UIControlStateNormal];\
  21842. [btn2 addTarget:
  21843. \f2\b \cf8 self
  21844. \f0\b0 \cf4 action:
  21845. \f2\b \cf8 @selector
  21846. \f0\b0 \cf4 (shareKeepBtnAction) forControlEvents:UIControlEventTouchUpInside];\
  21847. [view addSubview:btn2];\
  21848. \});\
  21849. \}\
  21850. \
  21851. \}\
  21852. \
  21853. - (
  21854. \f2\b \cf8 void
  21855. \f0\b0 \cf4 )\cf11 shareBackBtnAction\cf4 \{\
  21856. NSString *str = [NSString stringWithFormat:\cf6 @"%@://type=%@"\cf4 ,
  21857. \f2\b \cf8 self
  21858. \f0\b0 \cf4 .shareSchemes,\cf6 @"Share"\cf4 ];\
  21859. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] options:
  21860. \f2\b \cf8 nil
  21861. \f0\b0 \cf4 completionHandler:^(
  21862. \f2\b \cf8 BOOL
  21863. \f0\b0 \cf4 success) \{\
  21864. \}];\
  21865. \
  21866. \f2\b \cf8 self
  21867. \f0\b0 \cf4 .shareView.hidden =
  21868. \f2\b \cf8 YES
  21869. \f0\b0 \cf4 ;\
  21870. [
  21871. \f2\b \cf8 self
  21872. \f0\b0 \cf4 .shareView removeFromSuperview];\
  21873. \}\
  21874. \
  21875. - (
  21876. \f2\b \cf8 void
  21877. \f0\b0 \cf4 )\cf11 shareKeepBtnAction\cf4 \{\
  21878. \f2\b \cf8 self
  21879. \f0\b0 \cf4 .shareView.hidden =
  21880. \f2\b \cf8 YES
  21881. \f0\b0 \cf4 ;\
  21882. [
  21883. \f2\b \cf8 self
  21884. \f0\b0 \cf4 .shareView removeFromSuperview];\
  21885. \}\
  21886. \
  21887. \cf2 //
  21888. \f1 \'b3\'a4\'b0\'b4\'c9\'be\'b3\'fd
  21889. \f0 -->
  21890. \f1 \'cc\'d8\'b1\'f0\'b9\'d8\'d0\'c4
  21891. \f0 \cf4 \
  21892. - (
  21893. \f2\b \cf8 void
  21894. \f0\b0 \cf4 )\cf11 chatCell\cf4 :(JXBaseChatCell *)chatCell \cf11 deleteIndexNum\cf4 :(
  21895. \f2\b \cf8 int
  21896. \f0\b0 \cf4 )indexNum \{\
  21897. \
  21898. \
  21899. \
  21900. JXMessageObject *data2=[_array objectAtIndex:indexNum];\
  21901. \
  21902. \f2\b \cf8 long
  21903. \f0\b0 \cf4 time = (
  21904. \f2\b \cf8 long
  21905. \f0\b0 \cf4 )[[NSDate date] timeIntervalSince1970];\
  21906. time = (time *\cf7 1000\cf4 + g_server.timeDifference);\
  21907. NSString *salt = [NSString stringWithFormat:\cf6 @"%ld"\cf4 , time];\
  21908. \
  21909. \
  21910. [g_server UserRoomAttentionListion:salt userId:g_server.myself.userId jid:_roomJid attentionUserId:[NSString stringWithFormat:\cf6 @"%@"\cf4 ,data2.fromUserId] andToView:
  21911. \f2\b \cf8 self
  21912. \f0\b0 \cf4 ];\
  21913. \cf2 //[g_server UserRoomAttentionListion:salt userId:[NSString stringWithFormat:@"%@",data2.fromUserId] jid:_roomJid andToView:self];\cf4 \
  21914. \
  21915. \cf2 // [g_server getUserRoomAttentionattentionLastInfo:salt userId:[NSString stringWithFormat:@"%@",data2.fromUserId] jid:_roomJid andToView:self];\cf4 \
  21916. \
  21917. \
  21918. \
  21919. \f2\b \cf8 return
  21920. \f0\b0 \cf4 ;\
  21921. memberData *data=[_array objectAtIndex:indexNum];\
  21922. \f2\b \cf8 if
  21923. \f0\b0 \cf4 (
  21924. \f2\b \cf8 self
  21925. \f0\b0 \cf4 .roomId.length > \cf7 0\cf4 &&([data.role intValue] == \cf7 1\cf4 || [data.role intValue] == \cf7 2\cf4 )) \{\
  21926. \f2\b \cf8 if
  21927. \f0\b0 \cf4 ([
  21928. \f2\b \cf8 self
  21929. \f0\b0 \cf4 sendMsgCheck]) \{\
  21930. \f2\b \cf8 return
  21931. \f0\b0 \cf4 ;\
  21932. \}\
  21933. \
  21934. JXMessageObject *msg = _array[indexNum];\
  21935. \f2\b \cf8 self
  21936. \f0\b0 \cf4 .withdrawIndex = indexNum;\
  21937. \f2\b \cf8 int
  21938. \f0\b0 \cf4 type = \cf7 1\cf4 ;\
  21939. \f2\b \cf8 if
  21940. \f0\b0 \cf4 (
  21941. \f2\b \cf8 self
  21942. \f0\b0 \cf4 .roomJid) \{\
  21943. type = \cf7 2\cf4 ;\
  21944. \}\
  21945. [g_server tigaseDeleteMsgWithMessageId:msg.messageId type:type deleteType:\cf7 2\cf4 roomJid:
  21946. \f2\b \cf8 self
  21947. \f0\b0 \cf4 .roomJid deleteOrWithdraw:kWCMessageTypeSuperDelete toView:
  21948. \f2\b \cf8 self
  21949. \f0\b0 \cf4 ];\
  21950. \
  21951. \}
  21952. \f2\b \cf8 else
  21953. \f0\b0 \cf4 \{\
  21954. JXMessageObject *msg = _array[indexNum];\
  21955. NSString* s;\
  21956. \f2\b \cf8 if
  21957. \f0\b0 \cf4 ([
  21958. \f2\b \cf8 self
  21959. \f0\b0 \cf4 .roomJid length]>\cf7 0\cf4 )\
  21960. s =
  21961. \f2\b \cf8 self
  21962. \f0\b0 \cf4 .roomJid;\
  21963. \f2\b \cf8 else
  21964. \f0\b0 \cf4 \
  21965. s = chatPerson.userId;\
  21966. \
  21967. \
  21968. \f2\b \cf8 if
  21969. \f0\b0 \cf4 (indexNum == _array.count - \cf7 1\cf4 ) \{\
  21970. JXMessageObject *newLastMsg;\
  21971. \f2\b \cf8 if
  21972. \f0\b0 \cf4 (indexNum == \cf7 0\cf4 ) \{\
  21973. newLastMsg = [_array firstObject];\
  21974. \}
  21975. \f2\b \cf8 else
  21976. \f0\b0 \cf4 \{\
  21977. newLastMsg = _array[indexNum - \cf7 1\cf4 ];\
  21978. \}\
  21979. \f2\b \cf8 self
  21980. \f0\b0 \cf4 .lastMsg.content = newLastMsg.content;\
  21981. [newLastMsg updateLastSend:UpdateLastSendType_None];\
  21982. \}\
  21983. \
  21984. \cf2 //
  21985. \f1 \'c9\'be\'b3\'fd\'b1\'be\'b5\'d8\'c1\'c4\'cc\'ec\'bc\'c7\'c2\'bc
  21986. \f0 \cf4 \
  21987. [_array removeObjectAtIndex:indexNum];\
  21988. [msg
  21989. \f2\b \cf8 delete
  21990. \f0\b0 \cf4 ];\
  21991. \
  21992. \cf2 // [_table deleteRow:indexNum section:0];\cf4 \
  21993. [_table reloadData];\
  21994. \f2\b \cf8 if
  21995. \f0\b0 \cf4 (
  21996. \f2\b \cf8 self
  21997. \f0\b0 \cf4 .courseId.length > \cf7 0\cf4 ) \{\
  21998. \cf2 // NSDictionary *dict = self.courseArray[indexNum];\cf4 \
  21999. [g_server userCourseUpdateWithCourseId:
  22000. \f2\b \cf8 self
  22001. \f0\b0 \cf4 .courseId MessageIds:
  22002. \f2\b \cf8 nil
  22003. \f0\b0 \cf4 CourseName:
  22004. \f2\b \cf8 nil
  22005. \f0\b0 \cf4 CourseMessageId:msg.messageId toView:
  22006. \f2\b \cf8 self
  22007. \f0\b0 \cf4 ];\
  22008. \}
  22009. \f2\b \cf8 else
  22010. \f0\b0 \cf4 \{\
  22011. \f2\b \cf8 int
  22012. \f0\b0 \cf4 type = \cf7 1\cf4 ;\
  22013. \f2\b \cf8 if
  22014. \f0\b0 \cf4 (
  22015. \f2\b \cf8 self
  22016. \f0\b0 \cf4 .roomJid) \{\
  22017. type = \cf7 2\cf4 ;\
  22018. \}\
  22019. \f2\b \cf8 self
  22020. \f0\b0 \cf4 .withdrawIndex = -\cf7 1\cf4 ;\
  22021. \
  22022. \
  22023. \
  22024. \cf2 // [g_server tigaseDeleteMsgWithMessageId:msg.messageId type:type deleteType:2 roomJid:self.roomJid toView:self];\cf4 \
  22025. [g_server tigaseDeleteMsgWithMessageId:msg.messageId type:type deleteType:\cf7 2\cf4 roomJid:
  22026. \f2\b \cf8 self
  22027. \f0\b0 \cf4 .roomJid deleteOrWithdraw:kWCMessageTypeSuperDelete toView:
  22028. \f2\b \cf8 self
  22029. \f0\b0 \cf4 ];\
  22030. \}\
  22031. \}\
  22032. \}\
  22033. \
  22034. \cf2 //
  22035. \f1 \'b3\'a4\'b0\'b4\'b3\'b7\'bb\'d8
  22036. \f0 \cf4 \
  22037. - (
  22038. \f2\b \cf8 void
  22039. \f0\b0 \cf4 )\cf11 chatCell\cf4 :(JXBaseChatCell *)chatCell \cf11 withdrawIndexNum\cf4 :(
  22040. \f2\b \cf8 int
  22041. \f0\b0 \cf4 )indexNum \{\
  22042. \
  22043. \f2\b \cf8 if
  22044. \f0\b0 \cf4 ([
  22045. \f2\b \cf8 self
  22046. \f0\b0 \cf4 sendMsgCheck]) \{\
  22047. \f2\b \cf8 return
  22048. \f0\b0 \cf4 ;\
  22049. \}\
  22050. \
  22051. JXMessageObject *msg = _array[indexNum];\
  22052. \f2\b \cf8 self
  22053. \f0\b0 \cf4 .withdrawIndex = indexNum;\
  22054. \f2\b \cf8 int
  22055. \f0\b0 \cf4 type = \cf7 1\cf4 ;\
  22056. \f2\b \cf8 if
  22057. \f0\b0 \cf4 (
  22058. \f2\b \cf8 self
  22059. \f0\b0 \cf4 .roomJid) \{\
  22060. type = \cf7 2\cf4 ;\
  22061. \}\
  22062. \cf2 //
  22063. \f1 \'ca\'b5\'cf\'d6\'b7\'c0\'b3\'b7\'bb\'d8
  22064. \f0 \cf4 \
  22065. \f2\b \cf8 if
  22066. \f0\b0 \cf4 (
  22067. \f2\b \cf8 self
  22068. \f0\b0 \cf4 .roomJid.length > \cf7 0\cf4 && _isAttritionRecall) \{\
  22069. memberData *data = [
  22070. \f2\b \cf8 self
  22071. \f0\b0 \cf4 .room getMember:g_myself.userId];\
  22072. \f2\b \cf8 if
  22073. \f0\b0 \cf4 ([data.role intValue] == \cf7 1\cf4 || [data.role intValue] == \cf7 2\cf4 ) \{\
  22074. \
  22075. \}
  22076. \f2\b \cf8 else
  22077. \f0\b0 \cf4 \{\
  22078. [JXMyTools showTipView:\cf6 @"
  22079. \f1 \'b8\'c3\'cf\'fb\'cf\'a2\'b2\'bb\'c4\'dc\'b3\'b7\'bb\'d8
  22080. \f0 "\cf4 ];\
  22081. \f2\b \cf8 return
  22082. \f0\b0 \cf4 ;\
  22083. \}\
  22084. \}\
  22085. \cf2 // [g_server tigaseDeleteMsgWithMessageId:msg.messageId type:type deleteType:2 roomJid:self.roomJid toView:self];\cf4 \
  22086. \
  22087. \cf2 //
  22088. \f1 \'c8\'ba\'b9\'dc\'c0\'ed
  22089. \f0 \cf4 \
  22090. memberData *data = [
  22091. \f2\b \cf8 self
  22092. \f0\b0 \cf4 .room getMember:g_myself.userId];\
  22093. \f2\b \cf8 if
  22094. \f0\b0 \cf4 (
  22095. \f2\b \cf8 self
  22096. \f0\b0 \cf4 .roomJid.length > \cf7 0\cf4 && _isAttritionRecall) \{\
  22097. \f2\b \cf8 if
  22098. \f0\b0 \cf4 ([data.role intValue] == \cf7 1\cf4 || [data.role intValue] == \cf7 2\cf4 ) \{\
  22099. [g_server tigaseDeleteMsgWithMessageId:msg.messageId type:type deleteType:\cf7 2\cf4 roomJid:
  22100. \f2\b \cf8 self
  22101. \f0\b0 \cf4 .roomJid deleteOrWithdraw:kWCMessageTypeSuperDelete toView:
  22102. \f2\b \cf8 self
  22103. \f0\b0 \cf4 ];\
  22104. \}
  22105. \f2\b \cf8 else
  22106. \f0\b0 \cf4 \{\
  22107. [JXMyTools showTipView:\cf6 @"
  22108. \f1 \'b8\'c3\'cf\'fb\'cf\'a2\'b2\'bb\'c4\'dc\'b3\'b7\'bb\'d8
  22109. \f0 "\cf4 ];\
  22110. \f2\b \cf8 return
  22111. \f0\b0 \cf4 ;\
  22112. \}\
  22113. \}
  22114. \f2\b \cf8 else
  22115. \f0\b0 \cf4 \{\
  22116. \f2\b \cf8 if
  22117. \f0\b0 \cf4 ([data.role intValue] == \cf7 1\cf4 || [data.role intValue] == \cf7 2\cf4 ) \{\
  22118. [g_server tigaseDeleteMsgWithMessageId:msg.messageId type:type deleteType:\cf7 2\cf4 roomJid:
  22119. \f2\b \cf8 self
  22120. \f0\b0 \cf4 .roomJid deleteOrWithdraw:kWCMessageTypeSuperDelete toView:
  22121. \f2\b \cf8 self
  22122. \f0\b0 \cf4 ];\
  22123. \}
  22124. \f2\b \cf8 else
  22125. \f0\b0 \cf4 \{\
  22126. [g_server tigaseDeleteMsgWithMessageId:msg.messageId type:type deleteType:\cf7 2\cf4 roomJid:
  22127. \f2\b \cf8 self
  22128. \f0\b0 \cf4 .roomJid deleteOrWithdraw:kWCMessageTypeWithdraw toView:
  22129. \f2\b \cf8 self
  22130. \f0\b0 \cf4 ];\
  22131. \}\
  22132. \}\
  22133. \
  22134. \
  22135. \}\
  22136. \
  22137. \cf2 //
  22138. \f1 \'b3\'a4\'b0\'b4\'ca\'d5\'b2\'d8
  22139. \f0 &&
  22140. \f1 \'b3\'a4\'b0\'b4\'cc\'ed\'bc\'d3\'b1\'ed\'c7\'e9
  22141. \f0 \cf4 \
  22142. - (
  22143. \f2\b \cf8 void
  22144. \f0\b0 \cf4 )\cf11 chatCell\cf4 :(JXBaseChatCell *)chatCell \cf11 favoritIndexNum\cf4 :(
  22145. \f2\b \cf8 int
  22146. \f0\b0 \cf4 )indexNum \cf11 type\cf4 :(CollectType)collectType\{\
  22147. JXMessageObject *msg = _array[indexNum];\
  22148. NSMutableArray *emoji = [[NSMutableArray alloc] init];\
  22149. \f2\b \cf8 if
  22150. \f0\b0 \cf4 (collectType == CollectTypeEmoji) \{\
  22151. \f2\b \cf8 for
  22152. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < g_myself.favorites.count; i ++) \{\
  22153. NSDictionary *dict = g_myself.favorites[i];\
  22154. NSString *url = dict[\cf6 @"url"\cf4 ];\
  22155. \
  22156. \f2\b \cf8 if
  22157. \f0\b0 \cf4 ([msg.content isEqualToString:url]) \{\
  22158. \
  22159. [JXMyTools showTipView:Localized(\cf6 @"JX_ExpressionAdded"\cf4 )];\
  22160. \f2\b \cf8 return
  22161. \f0\b0 \cf4 ;\
  22162. \}\
  22163. \}\
  22164. \}\
  22165. NSString *type = [NSString stringWithFormat:\cf6 @"%ld"\cf4 ,collectType];\
  22166. NSMutableDictionary *dataDict = [[NSMutableDictionary alloc] init];\
  22167. \f2\b \cf8 if
  22168. \f0\b0 \cf4 (collectType != CollectTypeEmoji) \{\
  22169. [dataDict setValue:msg.messageId forKey:\cf6 @"msgId"\cf4 ];\
  22170. \}\
  22171. [dataDict setValue:msg.content forKey:\cf6 @"msg"\cf4 ];\
  22172. [dataDict setValue:type forKey:\cf6 @"type"\cf4 ];\
  22173. [dataDict setValue:
  22174. \f2\b \cf8 self
  22175. \f0\b0 \cf4 .roomJid forKey:\cf6 @"roomJid"\cf4 ];\
  22176. [dataDict setValue:\cf7 @0\cf4 forKey:\cf6 @"collectType"\cf4 ];\
  22177. [dataDict setValue:msg.content forKey:\cf6 @"url"\cf4 ];\
  22178. \
  22179. [emoji addObject:dataDict];\
  22180. \cf2 // NSString * jsonString = [[SBJsonWriter new] stringWithObject:[msg toDictionary]];\cf4 \
  22181. \cf2 // [g_server addFavoriteWithContent:jsonString type:collectType toView:self];\cf4 \
  22182. \
  22183. \f2\b \cf8 if
  22184. \f0\b0 \cf4 (collectType == CollectTypeEmoji)\{\
  22185. \cf2 //
  22186. \f1 \'cc\'ed\'bc\'d3\'b5\'a5\'b8\'f6\'b1\'ed\'c7\'e9
  22187. \f0 \cf4 \
  22188. NSDate* date = [NSDate dateWithTimeIntervalSinceNow:\cf7 0\cf4 ];\
  22189. NSTimeInterval time = [date timeIntervalSince1970]*\cf7 1000\cf4 ;\
  22190. NSString *mixString = [NSString stringWithFormat:\cf6 @"%.0f"\cf4 , time];\
  22191. NSString *faceName = [NSString stringWithFormat:\cf6 @"%@.jpg"\cf4 , mixString];\
  22192. [g_server addFaceClollect:\cf6 @""\cf4 faceName:\cf6 @"noFacename"\cf4 url:msg.content View:
  22193. \f2\b \cf8 self
  22194. \f0\b0 \cf4 ];\
  22195. \}
  22196. \f2\b \cf8 else
  22197. \f0\b0 \cf4 \{\
  22198. \cf2 //
  22199. \f1 \'ca\'d5\'b2\'d8
  22200. \f0 \cf4 \
  22201. [g_server addFavoriteWithEmoji:emoji toView:
  22202. \f2\b \cf8 self
  22203. \f0\b0 \cf4 ];\
  22204. \}\
  22205. \
  22206. \
  22207. \cf2 // [g_server userEmojiAddWithUrl:msg.content toView:self];\cf4 \
  22208. \
  22209. \
  22210. \
  22211. \}\
  22212. \
  22213. \cf2 //
  22214. \f1 \'b6\'e0\'d1\'a1
  22215. \f0 \cf4 \
  22216. - (
  22217. \f2\b \cf8 void
  22218. \f0\b0 \cf4 )\cf11 chatCell\cf4 :(JXBaseChatCell *)chatCell \cf11 selectMoreIndexNum\cf4 :(
  22219. \f2\b \cf8 int
  22220. \f0\b0 \cf4 )indexNum \{\
  22221. [
  22222. \f2\b \cf8 self
  22223. \f0\b0 \cf4 hideKeyboard:
  22224. \f2\b \cf8 NO
  22225. \f0\b0 \cf4 ];\
  22226. \f2\b \cf8 self
  22227. \f0\b0 \cf4 .isSelectMore =
  22228. \f2\b \cf8 YES
  22229. \f0\b0 \cf4 ;\
  22230. \f2\b \cf8 self
  22231. \f0\b0 \cf4 .selectMoreView.hidden =
  22232. \f2\b \cf8 NO
  22233. \f0\b0 \cf4 ;\
  22234. [
  22235. \f2\b \cf8 self
  22236. \f0\b0 \cf4 .gotoBackBtn setBackgroundImage:
  22237. \f2\b \cf8 nil
  22238. \f0\b0 \cf4 forState:UIControlStateNormal];\
  22239. [
  22240. \f2\b \cf8 self
  22241. \f0\b0 \cf4 .gotoBackBtn setTitle:Localized(\cf6 @"JX_Cencal"\cf4 ) forState:UIControlStateNormal];\
  22242. [
  22243. \f2\b \cf8 self
  22244. \f0\b0 \cf4 enableCell];\
  22245. [
  22246. \f2\b \cf8 self
  22247. \f0\b0 \cf4 .tableView reloadData];\
  22248. \}\
  22249. \
  22250. \cf2 //
  22251. \f1 \'b6\'e0\'d1\'a1\'d1\'a1\'d4\'f1
  22252. \f0 \cf4 \
  22253. - (
  22254. \f2\b \cf8 void
  22255. \f0\b0 \cf4 )\cf11 chatCell\cf4 :(JXBaseChatCell *)chatCell \cf11 checkBoxSelectIndexNum\cf4 :(
  22256. \f2\b \cf8 int
  22257. \f0\b0 \cf4 )indexNum \cf11 isSelect\cf4 :(
  22258. \f2\b \cf8 BOOL
  22259. \f0\b0 \cf4 )isSelect \{\
  22260. \
  22261. JXMessageObject *msg = _array[indexNum];\
  22262. \
  22263. \f2\b \cf8 if
  22264. \f0\b0 \cf4 ([msg.isReadDel boolValue]) \{\
  22265. chatCell.checkBox.selected =
  22266. \f2\b \cf8 NO
  22267. \f0\b0 \cf4 ;\
  22268. [g_App showAlert:Localized(\cf6 @"JX_MessageBurningNo"\cf4 )];\
  22269. \f2\b \cf8 return
  22270. \f0\b0 \cf4 ;\
  22271. \}\
  22272. \
  22273. \f2\b \cf8 if
  22274. \f0\b0 \cf4 (isSelect) \{\
  22275. [_selectMoreArr addObject:_array[indexNum]];\
  22276. \}
  22277. \f2\b \cf8 else
  22278. \f0\b0 \cf4 \{\
  22279. [_selectMoreArr removeObject:_array[indexNum]];\
  22280. \}\
  22281. \}\
  22282. \
  22283. \cf2 //
  22284. \f1 \'b3\'a4\'b0\'b4\'bf\'aa\'ca\'bc\'c2\'bc\'d6\'c6
  22285. \f0 \cf4 \
  22286. - (
  22287. \f2\b \cf8 void
  22288. \f0\b0 \cf4 )\cf11 chatCell\cf4 :(JXBaseChatCell *)chatCell \cf11 startRecordIndexNum\cf4 :(
  22289. \f2\b \cf8 int
  22290. \f0\b0 \cf4 )indexNum \{\
  22291. [_recordArray removeAllObjects];\
  22292. \f2\b \cf8 self
  22293. \f0\b0 \cf4 .isRecording =
  22294. \f2\b \cf8 YES
  22295. \f0\b0 \cf4 ;\
  22296. \f2\b \cf8 self
  22297. \f0\b0 \cf4 .recordStarNum = indexNum;\
  22298. \f2\b \cf8 self
  22299. \f0\b0 \cf4 .title = Localized(\cf6 @"JX_StopRecording"\cf4 );\
  22300. [
  22301. \f2\b \cf8 self
  22302. \f0\b0 \cf4 setAudioIconFrame];\
  22303. \}\
  22304. \
  22305. \cf2 //
  22306. \f1 \'b3\'a4\'b0\'b4\'bd\'e1\'ca\'f8\'c2\'bc\'d6\'c6
  22307. \f0 \cf4 \
  22308. - (
  22309. \f2\b \cf8 void
  22310. \f0\b0 \cf4 )\cf11 chatCell\cf4 :(JXBaseChatCell *)chatCell \cf11 stopRecordIndexNum\cf4 :(
  22311. \f2\b \cf8 int
  22312. \f0\b0 \cf4 )indexNum \{\
  22313. \
  22314. \f2\b \cf8 for
  22315. \f0\b0 \cf4 (NSInteger i =
  22316. \f2\b \cf8 self
  22317. \f0\b0 \cf4 .recordStarNum; i<= indexNum; i ++) \{\
  22318. \f2\b \cf8 if
  22319. \f0\b0 \cf4 (i >= _array.count) \{\
  22320. \f2\b \cf8 return
  22321. \f0\b0 \cf4 ;\
  22322. \}\
  22323. JXMessageObject *msg = _array[i];\
  22324. \
  22325. \f2\b \cf8 if
  22326. \f0\b0 \cf4 ([msg isVisible] && [msg.type intValue]!=kWCMessageTypeIsRead && [msg.fromUserId isEqualToString:MY_USER_ID] && [msg.isReadDel intValue] != \cf7 1\cf4 &&[msg.type intValue]!=kWCMessageTypeAudioChatCancel&&[msg.type intValue]!=kWCMessageTypeAudioChatEnd&&[msg.type intValue]!=kWCMessageTypeAudioMeetingInvite&&[msg.type intValue]!=kWCMessageTypeVideoMeetingInvite&&[msg.type intValue]!=kWCMessageTypeVideoChatCancel&&[msg.type intValue]!=kWCMessageTypeVideoChatEnd&&[msg.type intValue]!=kWCMessageTypeRedPacket&&[msg.type intValue]!=kWCMessageTypeTransfer&&[msg.type intValue]!=kWCMessageTypeAVBusy)\
  22327. \f2\b \cf8 if
  22328. \f0\b0 \cf4 (msg.messageId) \{\
  22329. [_recordArray addObject:msg.messageId];\
  22330. \}\
  22331. \}\
  22332. \
  22333. UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:Localized(\cf6 @"JX_InputCourseName"\cf4 ) message:
  22334. \f2\b \cf8 nil
  22335. \f0\b0 \cf4 delegate:
  22336. \f2\b \cf8 self
  22337. \f0\b0 \cf4 cancelButtonTitle:Localized(\cf6 @"JX_Cencal"\cf4 ) otherButtonTitles:Localized(\cf6 @"JX_Confirm"\cf4 ),
  22338. \f2\b \cf8 nil
  22339. \f0\b0 \cf4 ];\
  22340. alertView.alertViewStyle = UIAlertViewStylePlainTextInput;\
  22341. [alertView show];\
  22342. \
  22343. \cf2 // NSString *str = self.onlinestate ? Localized(@"JX_OnLine") : Localized(@"JX_OffLine");\cf4 \
  22344. \f2\b \cf8 if
  22345. \f0\b0 \cf4 (
  22346. \f2\b \cf8 self
  22347. \f0\b0 \cf4 .roomJid || ([chatPerson.userId intValue]<\cf7 10100\cf4 && [chatPerson.userId intValue]>=\cf7 10000\cf4 )) \{\
  22348. \f2\b \cf8 self
  22349. \f0\b0 \cf4 .title = chatPerson.userNickname;\
  22350. [
  22351. \f2\b \cf8 self
  22352. \f0\b0 \cf4 setAudioIconFrame];\
  22353. \}
  22354. \f2\b \cf8 else
  22355. \f0\b0 \cf4 \{\
  22356. \
  22357. \cf2 // self.title = [NSString stringWithFormat:@"%@(%@)",chatPerson.remarkName.length > 0 ? chatPerson.remarkName : chatPerson.userNickname,str];\cf4 \
  22358. [
  22359. \f2\b \cf8 self
  22360. \f0\b0 \cf4 setChatTitle:chatPerson.remarkName.length > \cf7 0\cf4 ? chatPerson.remarkName : chatPerson.userNickname];\
  22361. \}\
  22362. \f2\b \cf8 self
  22363. \f0\b0 \cf4 .isRecording =
  22364. \f2\b \cf8 NO
  22365. \f0\b0 \cf4 ;\
  22366. \f2\b \cf8 self
  22367. \f0\b0 \cf4 .recordStarNum = \cf7 0\cf4 ;\
  22368. \
  22369. [
  22370. \f2\b \cf8 self
  22371. \f0\b0 \cf4 hideKeyboard:
  22372. \f2\b \cf8 NO
  22373. \f0\b0 \cf4 ];\
  22374. \}\
  22375. \cf2 //
  22376. \f1 \'cf\'fb\'cf\'a2\'d6\'d8\'b7\'a2
  22377. \f0 \cf4 \
  22378. - (
  22379. \f2\b \cf8 void
  22380. \f0\b0 \cf4 )\cf11 chatCell\cf4 :(JXBaseChatCell *)chatCell \cf11 resendIndexNum\cf4 :(
  22381. \f2\b \cf8 int
  22382. \f0\b0 \cf4 )indexNum \{\
  22383. JXActionSheetVC *actionVC = [[JXActionSheetVC alloc] initWithImages:\cf7 @[]\cf4 names:\cf7 @[\cf4 Localized(\cf6 @"JX_Delete"\cf4 ),Localized(\cf6 @"JXBaseChatCell_SendAngin"\cf4 )\cf7 ]\cf4 ];\
  22384. actionVC.tag = \cf7 1111\cf4 ;\
  22385. actionVC.delegate =
  22386. \f2\b \cf8 self
  22387. \f0\b0 \cf4 ;\
  22388. \f2\b \cf8 self
  22389. \f0\b0 \cf4 .indexNum = indexNum;\
  22390. [
  22391. \f2\b \cf8 self
  22392. \f0\b0 \cf4 presentViewController:actionVC animated:
  22393. \f2\b \cf8 NO
  22394. \f0\b0 \cf4 completion:
  22395. \f2\b \cf8 nil
  22396. \f0\b0 \cf4 ];\
  22397. \}\
  22398. \
  22399. - (
  22400. \f2\b \cf8 void
  22401. \f0\b0 \cf4 )\cf11 chatCell\cf4 :(JXBaseChatCell *)chatCell \cf11 audioPlayChangeIndexNum\cf4 :(
  22402. \f2\b \cf8 int
  22403. \f0\b0 \cf4 )indexNum \{\
  22404. \f2\b \cf8 BOOL
  22405. \f0\b0 \cf4 flag = [g_default boolForKey:kChatVCMessageAudioIsNotPlayback];\
  22406. \f2\b \cf8 if
  22407. \f0\b0 \cf4 (!flag) \{\
  22408. \cf2 //
  22409. \f1 \'cc\'fd\'cd\'b2\'b2\'a5\'b7\'c5
  22410. \f0 \cf4 \
  22411. [g_default setBool:
  22412. \f2\b \cf8 YES
  22413. \f0\b0 \cf4 forKey:kChatVCMessageAudioIsNotPlayback];\
  22414. \}
  22415. \f2\b \cf8 else
  22416. \f0\b0 \cf4 \{\
  22417. \cf2 //
  22418. \f1 \'d1\'ef\'c9\'f9\'c6\'f7\'b2\'a5\'b7\'c5
  22419. \f0 \cf4 \
  22420. [g_default setBool:
  22421. \f2\b \cf8 NO
  22422. \f0\b0 \cf4 forKey:kChatVCMessageAudioIsNotPlayback];\
  22423. \}\
  22424. \
  22425. [
  22426. \f2\b \cf8 self
  22427. \f0\b0 \cf4 setAudioIconFrame];\
  22428. \}\
  22429. \
  22430. - (
  22431. \f2\b \cf8 BOOL
  22432. \f0\b0 \cf4 )\cf11 getRecording\cf4 \{\
  22433. \f2\b \cf8 return
  22434. \f0\b0 \cf4
  22435. \f2\b \cf8 self
  22436. \f0\b0 \cf4 .isRecording;\
  22437. \}\
  22438. - (NSInteger)\cf11 getRecordStarNum\cf4 \{\
  22439. \f2\b \cf8 return
  22440. \f0\b0 \cf4
  22441. \f2\b \cf8 self
  22442. \f0\b0 \cf4 .recordStarNum;\
  22443. \}\
  22444. \
  22445. \cf2 //
  22446. \f1 \'b7\'a2\'cb\'cd\'bf\'ce\'b3\'cc
  22447. \f0 \cf4 \
  22448. - (
  22449. \f2\b \cf8 void
  22450. \f0\b0 \cf4 )\cf11 sendCourseAction\cf4 \{\
  22451. \
  22452. \f2\b \cf8 if
  22453. \f0\b0 \cf4 (_array.count <= \cf7 0\cf4 ) \{\
  22454. [JXMyTools showTipView:Localized(\cf6 @"JX_ThisCourseEmpty"\cf4 )];\
  22455. \f2\b \cf8 return
  22456. \f0\b0 \cf4 ;\
  22457. \}\
  22458. \
  22459. \f2\b \cf8 if
  22460. \f0\b0 \cf4 (g_commonService.courseTimer) \{\
  22461. [JXMyTools showTipView:Localized(\cf6 @"JX_SendingPleaseWait"\cf4 )];\
  22462. \f2\b \cf8 return
  22463. \f0\b0 \cf4 ;\
  22464. \}\
  22465. JXRelayVC *vc = [[JXRelayVC alloc] init];\
  22466. vc.isCourse =
  22467. \f2\b \cf8 YES
  22468. \f0\b0 \cf4 ;\
  22469. vc.relayDelegate =
  22470. \f2\b \cf8 self
  22471. \f0\b0 \cf4 ;\
  22472. \cf2 // [g_window addSubview:vc.view];\cf4 \
  22473. [g_navigation pushViewController:vc animated:
  22474. \f2\b \cf8 YES
  22475. \f0\b0 \cf4 ];\
  22476. \}\
  22477. \
  22478. - (
  22479. \f2\b \cf8 void
  22480. \f0\b0 \cf4 )\cf11 sendCourse\cf4 :(NSTimer *) timer\{\
  22481. \
  22482. JXMsgAndUserObject *obj = timer.userInfo;\
  22483. \f2\b \cf8 BOOL
  22484. \f0\b0 \cf4 isRoom;\
  22485. \f2\b \cf8 if
  22486. \f0\b0 \cf4 ([obj.user.roomFlag intValue] > \cf7 0\cf4 || obj.user.roomId.length > \cf7 0\cf4 ) \{\
  22487. isRoom =
  22488. \f2\b \cf8 YES
  22489. \f0\b0 \cf4 ;\
  22490. \}
  22491. \f2\b \cf8 else
  22492. \f0\b0 \cf4 \{\
  22493. isRoom =
  22494. \f2\b \cf8 NO
  22495. \f0\b0 \cf4 ;\
  22496. \}\
  22497. \
  22498. \f2\b \cf8 self
  22499. \f0\b0 \cf4 .sendIndex ++;\
  22500. \cf2 // [_chatWait start:[NSString stringWithFormat:@"
  22501. \f1 \'d5\'fd\'d4\'da\'b7\'a2\'cb\'cd\'a3\'ba
  22502. \f0 %d/%ld",self.sendIndex,_array.count] inView:g_window];\cf4 \
  22503. [_chatWait setCaption:[NSString stringWithFormat:\cf6 @"%@
  22504. \f1 \'a3\'ba
  22505. \f0 %d/%ld"\cf4 ,Localized(\cf6 @"JX_SendNow"\cf4 ),
  22506. \f2\b \cf8 self
  22507. \f0\b0 \cf4 .sendIndex,_array.count]];\
  22508. [_chatWait update];\
  22509. \
  22510. JXMessageObject *msg= _array[
  22511. \f2\b \cf8 self
  22512. \f0\b0 \cf4 .sendIndex - \cf7 1\cf4 ];\
  22513. msg.messageId =
  22514. \f2\b \cf8 nil
  22515. \f0\b0 \cf4 ;\
  22516. msg.timeSend = [NSDate date];\
  22517. msg.fromId =
  22518. \f2\b \cf8 nil
  22519. \f0\b0 \cf4 ;\
  22520. msg.fromUserId = MY_USER_ID;\
  22521. \f2\b \cf8 if
  22522. \f0\b0 \cf4 (isRoom)\{\
  22523. msg.toUserId = obj.user.userId;\
  22524. msg.isGroup =
  22525. \f2\b \cf8 YES
  22526. \f0\b0 \cf4 ;\
  22527. msg.fromUserName = g_myself.userNickname;\
  22528. \}\
  22529. \f2\b \cf8 else
  22530. \f0\b0 \cf4 \{\
  22531. msg.toUserId = obj.user.userId;\
  22532. msg.isGroup =
  22533. \f2\b \cf8 NO
  22534. \f0\b0 \cf4 ;\
  22535. \}\
  22536. \cf2 // msg.content = relayMsg.content;\cf4 \
  22537. \cf2 // msg.type = relayMsg.type;\cf4 \
  22538. msg.isSend = [NSNumber numberWithInt:transfer_status_ing];\
  22539. msg.isRead = [NSNumber numberWithBool:
  22540. \f2\b \cf8 NO
  22541. \f0\b0 \cf4 ];\
  22542. msg.isReadDel = [NSNumber numberWithInt:
  22543. \f2\b \cf8 NO
  22544. \f0\b0 \cf4 ];\
  22545. \cf2 //
  22546. \f1 \'b7\'a2\'cd\'f9\'c4\'c4\'c0\'ef
  22547. \f0 \cf4 \
  22548. \f2\b \cf8 if
  22549. \f0\b0 \cf4 (isRoom) \{\
  22550. [msg insert:obj.user.userId];\
  22551. [g_xmpp sendMessage:msg roomName:obj.user.userId];\cf2 //
  22552. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  22553. \f0 \cf4 \
  22554. \}
  22555. \f2\b \cf8 else
  22556. \f0\b0 \cf4 \{\
  22557. [msg insert:
  22558. \f2\b \cf8 nil
  22559. \f0\b0 \cf4 ];\
  22560. [g_xmpp sendMessage:msg roomName:
  22561. \f2\b \cf8 nil
  22562. \f0\b0 \cf4 ];\cf2 //
  22563. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  22564. \f0 \cf4 \
  22565. \}\
  22566. \
  22567. \f2\b \cf8 if
  22568. \f0\b0 \cf4 (_array.count ==
  22569. \f2\b \cf8 self
  22570. \f0\b0 \cf4 .sendIndex) \{\
  22571. [_chatWait stop];\
  22572. [_timer invalidate];\
  22573. _timer =
  22574. \f2\b \cf8 nil
  22575. \f0\b0 \cf4 ;\
  22576. [JXMyTools showTipView:Localized(\cf6 @"JXAlert_SendOK"\cf4 )];\
  22577. \}\
  22578. \}\
  22579. \
  22580. - (
  22581. \f2\b \cf8 void
  22582. \f0\b0 \cf4 )\cf11 relay\cf4 :(JXRelayVC *)relayVC \cf11 MsgAndUserObject\cf4 :(JXMsgAndUserObject *)obj \{\
  22583. \
  22584. \cf2 // [g_subWindow addSubview:_suspensionBtn];\cf4 \
  22585. \cf2 // g_subWindow.hidden = YES;\cf4 \
  22586. \cf2 // _chatWait.view.frame = CGRectMake(0, 0, 50, 50);\cf4 \
  22587. \cf2 // [_chatWait start:[NSString stringWithFormat:@"%@
  22588. \f1 \'a3\'ba
  22589. \f0 1/%ld",Localized(@"JX_SendNow"),_array.count] inView:g_subWindow];\cf4 \
  22590. \
  22591. dispatch_async(dispatch_get_global_queue(\cf7 0\cf4 , \cf7 0\cf4 ), ^\{\
  22592. \
  22593. [g_commonService sendCourse:obj Array:_array];\
  22594. \});\
  22595. \
  22596. \cf2 // _timer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(sendCourse:) userInfo:obj repeats:YES];\cf4 \
  22597. \}\
  22598. \
  22599. - (
  22600. \f2\b \cf8 void
  22601. \f0\b0 \cf4 )\cf11 alertView\cf4 :(UIAlertView *)alertView \cf11 clickedButtonAtIndex\cf4 :(NSInteger)buttonIndex \{\
  22602. \
  22603. \f2\b \cf8 if
  22604. \f0\b0 \cf4 (alertView.tag == \cf7 2457\cf4 ) \{\
  22605. \
  22606. \f2\b \cf8 if
  22607. \f0\b0 \cf4 (buttonIndex == \cf7 1\cf4 ) \{\
  22608. \
  22609. \cf2 // NSMutableString *msgIds = [NSMutableString string];\cf4 \
  22610. \cf2 // NSMutableString *types = [NSMutableString string];\cf4 \
  22611. NSMutableArray *emoji = [[NSMutableArray alloc] init];\
  22612. \f2\b \cf8 for
  22613. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i <
  22614. \f2\b \cf8 self
  22615. \f0\b0 \cf4 .selectMoreArr.count; i ++) \{\
  22616. JXMessageObject *msg =
  22617. \f2\b \cf8 self
  22618. \f0\b0 \cf4 .selectMoreArr[i];\
  22619. \f2\b \cf8 if
  22620. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeText || [msg.type intValue] == kWCMessageTypeImage || [msg.type intValue] == kWCMessageTypeCustomFace || [msg.type intValue] == kWCMessageTypeEmoji || [msg.type intValue] == kWCMessageTypeVoice || [msg.type intValue] == kWCMessageTypeVideo || [msg.type intValue] == kWCMessageTypeFile) \{\
  22621. \
  22622. CollectType collectType = CollectTypeDefult;\
  22623. \f2\b \cf8 if
  22624. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeImage) \{\
  22625. collectType = CollectTypeImage;\
  22626. \}
  22627. \f2\b \cf8 else
  22628. \f0\b0 \cf4
  22629. \f2\b \cf8 if
  22630. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeCustomFace) \{\
  22631. collectType = CollectTypeEmoji;\
  22632. \}
  22633. \f2\b \cf8 else
  22634. \f0\b0 \cf4
  22635. \f2\b \cf8 if
  22636. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeEmoji) \{\
  22637. collectType = CollectTypeEmoji;\
  22638. \}
  22639. \f2\b \cf8 else
  22640. \f0\b0 \cf4
  22641. \f2\b \cf8 if
  22642. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeVideo) \{\
  22643. collectType = CollectTypeVideo;\
  22644. \}
  22645. \f2\b \cf8 else
  22646. \f0\b0 \cf4
  22647. \f2\b \cf8 if
  22648. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeFile) \{\
  22649. collectType = CollectTypeFile;\
  22650. \}
  22651. \f2\b \cf8 else
  22652. \f0\b0 \cf4
  22653. \f2\b \cf8 if
  22654. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeVoice) \{\
  22655. collectType = CollectTypeVoice;\
  22656. \}
  22657. \f2\b \cf8 else
  22658. \f0\b0 \cf4
  22659. \f2\b \cf8 if
  22660. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeText) \{\
  22661. collectType = CollectTypeText;\
  22662. \}
  22663. \f2\b \cf8 else
  22664. \f0\b0 \cf4 \{\
  22665. \
  22666. \}\
  22667. \f2\b \cf8 if
  22668. \f0\b0 \cf4 (collectType == CollectTypeDefult) \{\
  22669. \f2\b \cf8 return
  22670. \f0\b0 \cf4 ;\
  22671. \}\
  22672. \cf2 // NSDictionary *dict = g_myself.favorites[i];\cf4 \
  22673. \cf2 // NSString *url = dict[@"url"];\cf4 \
  22674. \cf2 // if ([msg.content isEqualToString:url]) \{\cf4 \
  22675. \cf2 // continue;\cf4 \
  22676. \cf2 // \}\cf4 \
  22677. \
  22678. NSString *type = [NSString stringWithFormat:\cf6 @"%ld"\cf4 ,collectType];\
  22679. NSMutableDictionary *dataDict = [[NSMutableDictionary alloc] init];\
  22680. [dataDict setValue:msg.messageId forKey:\cf6 @"msgId"\cf4 ];\
  22681. [dataDict setValue:msg.content forKey:\cf6 @"msg"\cf4 ];\
  22682. [dataDict setValue:type forKey:\cf6 @"type"\cf4 ];\
  22683. [dataDict setValue:
  22684. \f2\b \cf8 self
  22685. \f0\b0 \cf4 .roomJid forKey:\cf6 @"roomJid"\cf4 ];\
  22686. [dataDict setValue:\cf7 @0\cf4 forKey:\cf6 @"collectType"\cf4 ];\
  22687. \
  22688. [emoji addObject:dataDict];\
  22689. \
  22690. \cf2 // if (msgIds.length <= 0) \{\cf4 \
  22691. \cf2 // [msgIds appendString:msg.messageId];\cf4 \
  22692. \cf2 // [types appendString:[NSString stringWithFormat:@"%ld",collectType]];\cf4 \
  22693. \cf2 // \}else \{\cf4 \
  22694. \cf2 // [msgIds appendFormat:@",%@", msg.messageId];\cf4 \
  22695. \cf2 // [types appendFormat:@",%@", [NSString stringWithFormat:@"%ld",collectType]];\cf4 \
  22696. \cf2 // \}\cf4 \
  22697. \
  22698. \}\
  22699. \}\
  22700. \
  22701. \f2\b \cf8 if
  22702. \f0\b0 \cf4 (emoji.count > \cf7 0\cf4 ) \{\
  22703. [g_server addFavoriteWithEmoji:emoji toView:
  22704. \f2\b \cf8 self
  22705. \f0\b0 \cf4 ];\
  22706. \}
  22707. \f2\b \cf8 else
  22708. \f0\b0 \cf4 \{\
  22709. \f2\b \cf8 if
  22710. \f0\b0 \cf4 (
  22711. \f2\b \cf8 self
  22712. \f0\b0 \cf4 .isSelectMore) \{\
  22713. [
  22714. \f2\b \cf8 self
  22715. \f0\b0 \cf4 actionQuit];\
  22716. \}\
  22717. \}\
  22718. \
  22719. \}\
  22720. \
  22721. \}
  22722. \f2\b \cf8 else
  22723. \f0\b0 \cf4
  22724. \f2\b \cf8 if
  22725. \f0\b0 \cf4 (alertView.tag == \cf7 2458\cf4 ) \{\
  22726. \
  22727. \f2\b \cf8 for
  22728. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i <
  22729. \f2\b \cf8 self
  22730. \f0\b0 \cf4 .selectMoreArr.count; i ++) \{\
  22731. JXMessageObject *msg =
  22732. \f2\b \cf8 self
  22733. \f0\b0 \cf4 .selectMoreArr[i];\
  22734. \f2\b \cf8 if
  22735. \f0\b0 \cf4 ([msg.type intValue] == kWCMessageTypeImage || [msg.type intValue] == kWCMessageTypeCustomFace|| [msg.type intValue] == kWCMessageTypeEmoji) \{\
  22736. UIImageView *imageView = [[UIImageView alloc] init];\
  22737. NSURL* url;\
  22738. \f2\b \cf8 if
  22739. \f0\b0 \cf4 (msg.isMySend && isFileExist(msg.fileName))\
  22740. url = [NSURL fileURLWithPath:msg.fileName];\
  22741. \f2\b \cf8 else
  22742. \f0\b0 \cf4 \
  22743. url = [NSURL URLWithString:msg.content];\
  22744. [imageView sd_setImageWithURL:url completed:^(UIImage *
  22745. \f2\b \cf8 _Nullable
  22746. \f0\b0 \cf4 image, NSError *
  22747. \f2\b \cf8 _Nullable
  22748. \f0\b0 \cf4 error, SDImageCacheType cacheType, NSURL *
  22749. \f2\b \cf8 _Nullable
  22750. \f0\b0 \cf4 imageURL) \{\
  22751. \
  22752. \f2\b \cf8 if
  22753. \f0\b0 \cf4 (!error) \{\
  22754. [
  22755. \f2\b \cf8 self
  22756. \f0\b0 \cf4 saveImageToPhotos:imageView.image];\
  22757. \}\
  22758. \}];\
  22759. \}\
  22760. \
  22761. \f2\b \cf8 if
  22762. \f0\b0 \cf4 ([msg.type integerValue] == kWCMessageTypeVideo) \{\
  22763. \
  22764. \f2\b \cf8 if
  22765. \f0\b0 \cf4 ([msg.content rangeOfString:\cf6 @"http"\cf4 ].location != NSNotFound) \{\
  22766. [
  22767. \f2\b \cf8 self
  22768. \f0\b0 \cf4 playerDownload:msg.content];\
  22769. \}
  22770. \f2\b \cf8 else
  22771. \f0\b0 \cf4 \{\
  22772. [
  22773. \f2\b \cf8 self
  22774. \f0\b0 \cf4 saveVideo:msg.content];\
  22775. \}\
  22776. \
  22777. \}\
  22778. \}\
  22779. \
  22780. \f2\b \cf8 if
  22781. \f0\b0 \cf4 (
  22782. \f2\b \cf8 self
  22783. \f0\b0 \cf4 .isSelectMore) \{\
  22784. [
  22785. \f2\b \cf8 self
  22786. \f0\b0 \cf4 actionQuit];\
  22787. \}\
  22788. \
  22789. \}
  22790. \f2\b \cf8 else
  22791. \f0\b0 \cf4
  22792. \f2\b \cf8 if
  22793. \f0\b0 \cf4 (alertView.tag == \cf7 3457\cf4 ) \{\
  22794. \f2\b \cf8 if
  22795. \f0\b0 \cf4 (buttonIndex == \cf7 1\cf4 ) \{\
  22796. \
  22797. NSMutableArray *selects = [NSMutableArray array];\
  22798. \f2\b \cf8 for
  22799. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i <
  22800. \f2\b \cf8 self
  22801. \f0\b0 \cf4 .selectMoreArr.count; i ++) \{\
  22802. JXMessageObject *msg = [
  22803. \f2\b \cf8 self
  22804. \f0\b0 \cf4 .selectMoreArr[i] copy];\
  22805. \f2\b \cf8 if
  22806. \f0\b0 \cf4 ([msg.type intValue] != kWCMessageTypeRedPacket && [msg.type intValue] != kWCMessageTypeTransfer) \{\
  22807. [selects addObject:msg];\
  22808. \}\
  22809. \}\
  22810. \
  22811. JXRelayVC *vc = [[JXRelayVC alloc] init];\
  22812. vc.relayMsgArray = [NSMutableArray arrayWithArray:selects];\
  22813. [g_navigation pushViewController:vc animated:
  22814. \f2\b \cf8 YES
  22815. \f0\b0 \cf4 ];\
  22816. \}\
  22817. \}
  22818. \f2\b \cf8 else
  22819. \f0\b0 \cf4 \{\
  22820. \f2\b \cf8 if
  22821. \f0\b0 \cf4 (buttonIndex == \cf7 1\cf4 ) \{\
  22822. UITextField *tf = [alertView textFieldAtIndex:\cf7 0\cf4 ];\
  22823. \f2\b \cf8 if
  22824. \f0\b0 \cf4 (tf.text.length <= \cf7 0\cf4 ) \{\
  22825. [g_App showAlert:Localized(\cf6 @"JX_InputCourseName"\cf4 )];\
  22826. \f2\b \cf8 return
  22827. \f0\b0 \cf4 ;\
  22828. \}\
  22829. _recordName = tf.text;\
  22830. NSMutableString *recordStr = [NSMutableString string];\
  22831. \f2\b \cf8 for
  22832. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < _recordArray.count; i ++) \{\
  22833. NSString *str = _recordArray[i];\
  22834. \f2\b \cf8 if
  22835. \f0\b0 \cf4 (i == _recordArray.count - \cf7 1\cf4 ) \{\
  22836. [recordStr appendString:str];\
  22837. \}
  22838. \f2\b \cf8 else
  22839. \f0\b0 \cf4 \{\
  22840. [recordStr appendFormat:\cf6 @"%@,"\cf4 ,str];\
  22841. \}\
  22842. \}\
  22843. \
  22844. [g_server userCourseAddWithMessageIds:recordStr CourseName:_recordName RoomJid:
  22845. \f2\b \cf8 self
  22846. \f0\b0 \cf4 .roomJid toView:
  22847. \f2\b \cf8 self
  22848. \f0\b0 \cf4 ];\
  22849. \}\
  22850. \}\
  22851. \}\
  22852. \
  22853. - (
  22854. \f2\b \cf8 void
  22855. \f0\b0 \cf4 )\cf11 saveImageToPhotos\cf4 :(UIImage*)savedImage\
  22856. \{\
  22857. UIImageWriteToSavedPhotosAlbum(savedImage,
  22858. \f2\b \cf8 self
  22859. \f0\b0 \cf4 ,
  22860. \f2\b \cf8 @selector
  22861. \f0\b0 \cf4 (image:didFinishSavingWithError:contextInfo:),
  22862. \f2\b \cf8 NULL
  22863. \f0\b0 \cf4 );\
  22864. \}\
  22865. \
  22866. \
  22867. \cf2 //
  22868. \f1 \'d6\'b8\'b6\'a8\'bb\'d8\'b5\'f7\'b7\'bd\'b7\'a8
  22869. \f0 \cf4 \
  22870. - (
  22871. \f2\b \cf8 void
  22872. \f0\b0 \cf4 )\cf11 image\cf4 : (UIImage *) image \cf11 didFinishSavingWithError\cf4 : (NSError *) error \cf11 contextInfo\cf4 : (
  22873. \f2\b \cf8 void
  22874. \f0\b0 \cf4 *) contextInfo\{\
  22875. \
  22876. \f2\b \cf8 if
  22877. \f0\b0 \cf4 (!error) \{\
  22878. \
  22879. [JXMyTools showTipView:Localized(\cf6 @"JX_SaveSuessed"\cf4 )];\
  22880. \}
  22881. \f2\b \cf8 else
  22882. \f0\b0 \cf4 \{\
  22883. [JXMyTools showTipView:Localized(\cf6 @"JX_SaveFiled"\cf4 )];\
  22884. \}\
  22885. \}\
  22886. \
  22887. \cf2 //-----
  22888. \f1 \'cf\'c2\'d4\'d8\'ca\'d3\'c6\'b5
  22889. \f0 --\cf4 \
  22890. - (
  22891. \f2\b \cf8 void
  22892. \f0\b0 \cf4 )\cf11 playerDownload\cf4 :(NSString *)url\{\
  22893. \
  22894. \
  22895. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,
  22896. \f2\b \cf8 YES
  22897. \f0\b0 \cf4 );\
  22898. NSString *documentsDirectory = [paths objectAtIndex:\cf7 0\cf4 ];\
  22899. \
  22900. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];\
  22901. NSString *fullPath = [NSString stringWithFormat:\cf6 @"%@/%@"\cf4 , documentsDirectory, \cf6 @"jaibaili.mp4"\cf4 ];\
  22902. NSURL *urlNew = [NSURL URLWithString:url];\
  22903. NSURLRequest *request = [NSURLRequest requestWithURL:urlNew];\
  22904. NSURLSessionDownloadTask *task =\
  22905. [manager downloadTaskWithRequest:request\
  22906. progress:
  22907. \f2\b \cf8 nil
  22908. \f0\b0 \cf4 destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) \{\
  22909. \f2\b \cf8 return
  22910. \f0\b0 \cf4 [NSURL fileURLWithPath:fullPath];\
  22911. \}\
  22912. completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) \{\
  22913. [
  22914. \f2\b \cf8 self
  22915. \f0\b0 \cf4 saveVideo:fullPath];\
  22916. \}];\
  22917. [task resume];\
  22918. \
  22919. \}\
  22920. \
  22921. \
  22922. \cf2 //
  22923. \f1 \'b7\'a2\'cb\'cd\'d5\'fd\'d4\'da\'ca\'e4\'c8\'eb
  22924. \f0 \cf4 \
  22925. - (
  22926. \f2\b \cf8 void
  22927. \f0\b0 \cf4 ) \cf11 sendEntering\cf4 \{\
  22928. JXMessageObject *msg=[[JXMessageObject alloc]init];\
  22929. msg.timeSend = [NSDate date];\
  22930. msg.fromUserId = MY_USER_ID;\
  22931. \
  22932. msg.toUserId = chatPerson.userId;\
  22933. msg.type = [NSNumber numberWithInt:kWCMessageTypeRelay];\
  22934. [g_xmpp sendMessage:msg roomName:
  22935. \f2\b \cf8 self
  22936. \f0\b0 \cf4 .roomJid];\cf2 //
  22937. \f1 \'b7\'a2\'cb\'cd\'cf\'fb\'cf\'a2
  22938. \f0 \cf4 \
  22939. \}\
  22940. \
  22941. \cf2 //
  22942. \f1 \'c8\'ba\'b8\'fc\'b8\'c4\'ea\'c7\'b3\'c6
  22943. \f0 \cf4 \
  22944. - (
  22945. \f2\b \cf8 void
  22946. \f0\b0 \cf4 )\cf11 setNickName\cf4 :(NSString *)nickName \{\
  22947. _userNickName = nickName.length > \cf7 0\cf4 ? nickName : _userNickName;\
  22948. [_table reloadData];\
  22949. \}\
  22950. \cf2 //
  22951. \f1 \'b7\'a2\'cb\'cd\'d1\'fb\'c7\'eb\'c8\'ba\'b3\'c9\'d4\'b1\'d1\'e9\'d6\'a4
  22952. \f0 \cf4 \
  22953. - (
  22954. \f2\b \cf8 void
  22955. \f0\b0 \cf4 )\cf11 needVerify\cf4 :(JXMessageObject *)msg \{\
  22956. [
  22957. \f2\b \cf8 self
  22958. \f0\b0 \cf4 showOneMsg:msg];\
  22959. \}\
  22960. \
  22961. \cf2 //
  22962. \f1 \'b5\'a5\'cc\'f5\'cd\'bc\'ce\'c4\'b5\'e3\'bb\'f7
  22963. \f0 \cf4 \
  22964. - (
  22965. \f2\b \cf8 void
  22966. \f0\b0 \cf4 ) \cf11 onDidSystemImage1\cf4 :(NSNotification *)notif \{\
  22967. \f2\b \cf8 if
  22968. \f0\b0 \cf4 (recording) \{\
  22969. \f2\b \cf8 return
  22970. \f0\b0 \cf4 ;\
  22971. \}\
  22972. JXMessageObject *msg = notif.object;\
  22973. SBJsonParser * parser = [[SBJsonParser alloc] init] ;\
  22974. \f2\b \cf8 id
  22975. \f0\b0 \cf4 content = [parser objectWithString:msg.content];\
  22976. NSString *url = [(NSDictionary *)content objectForKey:\cf6 @"url"\cf4 ];\
  22977. \
  22978. webpageVC *webVC = [webpageVC alloc];\
  22979. webVC.isGotoBack=
  22980. \f2\b \cf8 YES
  22981. \f0\b0 \cf4 ;\
  22982. webVC.isSend =
  22983. \f2\b \cf8 YES
  22984. \f0\b0 \cf4 ;\
  22985. webVC.title = [(NSDictionary *)content objectForKey:\cf6 @"title"\cf4 ];\
  22986. webVC.url = url;\
  22987. webVC = [webVC init];\
  22988. [g_navigation.navigationView addSubview:webVC.view];\
  22989. \cf2 // [g_navigation pushViewController:webVC animated:YES];\cf4 \
  22990. \
  22991. \}\
  22992. \
  22993. \cf2 //
  22994. \f1 \'b6\'e0\'cc\'f5\'cd\'bc\'ce\'c4\'b5\'e3\'bb\'f7
  22995. \f0 \cf4 \
  22996. - (
  22997. \f2\b \cf8 void
  22998. \f0\b0 \cf4 ) \cf11 onDidSystemImage2\cf4 :(NSNotification *)notif \{\
  22999. \f2\b \cf8 if
  23000. \f0\b0 \cf4 (recording) \{\
  23001. \f2\b \cf8 return
  23002. \f0\b0 \cf4 ;\
  23003. \}\
  23004. NSDictionary *dic = notif.object;\
  23005. NSString *url = [dic objectForKey:\cf6 @"url"\cf4 ];\
  23006. \
  23007. webpageVC *webVC = [webpageVC alloc];\
  23008. webVC.isGotoBack=
  23009. \f2\b \cf8 YES
  23010. \f0\b0 \cf4 ;\
  23011. webVC.isSend =
  23012. \f2\b \cf8 YES
  23013. \f0\b0 \cf4 ;\
  23014. webVC.title = [dic objectForKey:\cf6 @"title"\cf4 ];\
  23015. webVC.url = url;\
  23016. webVC = [webVC init];\
  23017. [g_navigation.navigationView addSubview:webVC.view];\
  23018. \cf2 // [g_navigation pushViewController:webVC animated:YES];\cf4 \
  23019. \
  23020. \}\
  23021. \
  23022. \cf2 //
  23023. \f1 \'d2\'f4\'ca\'d3\'c6\'b5\'cd\'a8\'bb\'b0\'d7\'b4\'cc\'ac
  23024. \f0 cell
  23025. \f1 \'b5\'e3\'bb\'f7
  23026. \f0 \cf4 \
  23027. - (
  23028. \f2\b \cf8 void
  23029. \f0\b0 \cf4 ) \cf11 onDidAVCall\cf4 :(NSNotification *)notif \{\
  23030. \f2\b \cf8 if
  23031. \f0\b0 \cf4 (recording) \{\
  23032. \f2\b \cf8 return
  23033. \f0\b0 \cf4 ;\
  23034. \}\
  23035. JXMessageObject *msg = notif.object;\
  23036. \
  23037. \f2\b \cf8 BOOL
  23038. \f0\b0 \cf4 isMeeting =
  23039. \f2\b \cf8 NO
  23040. \f0\b0 \cf4 ;\
  23041. \f2\b \cf8 switch
  23042. \f0\b0 \cf4 ([msg.type intValue]) \{\
  23043. \f2\b \cf8 case
  23044. \f0\b0 \cf4 kWCMessageTypeAudioMeetingInvite:\
  23045. \f2\b \cf8 case
  23046. \f0\b0 \cf4 kWCMessageTypeAudioChatCancel:\
  23047. \f2\b \cf8 case
  23048. \f0\b0 \cf4 kWCMessageTypeAudioChatEnd: \{\
  23049. \f2\b \cf8 self
  23050. \f0\b0 \cf4 .isAudioMeeting =
  23051. \f2\b \cf8 YES
  23052. \f0\b0 \cf4 ;\
  23053. isMeeting =
  23054. \f2\b \cf8 YES
  23055. \f0\b0 \cf4 ;\
  23056. \}\
  23057. \cf2 // [self onChatAudio:msg];\cf4 \
  23058. \f2\b \cf8 break
  23059. \f0\b0 \cf4 ;\
  23060. \f2\b \cf8 case
  23061. \f0\b0 \cf4 kWCMessageTypeVideoMeetingInvite:\
  23062. \f2\b \cf8 case
  23063. \f0\b0 \cf4 kWCMessageTypeVideoChatCancel:\
  23064. \f2\b \cf8 case
  23065. \f0\b0 \cf4 kWCMessageTypeVideoChatEnd: \{\
  23066. \f2\b \cf8 self
  23067. \f0\b0 \cf4 .isAudioMeeting =
  23068. \f2\b \cf8 NO
  23069. \f0\b0 \cf4 ;\
  23070. isMeeting =
  23071. \f2\b \cf8 YES
  23072. \f0\b0 \cf4 ;\
  23073. \}\
  23074. \cf2 // [self onChatVideo:msg];\cf4 \
  23075. \f2\b \cf8 break
  23076. \f0\b0 \cf4 ;\
  23077. \
  23078. \f2\b \cf8 case
  23079. \f0\b0 \cf4 kWCMessageTypeAVBusy: \{\
  23080. \f2\b \cf8 if
  23081. \f0\b0 \cf4 ([msg.objectId isEqualToString:\cf6 @"1"\cf4 ]) \{\
  23082. \f2\b \cf8 self
  23083. \f0\b0 \cf4 .isAudioMeeting =
  23084. \f2\b \cf8 NO
  23085. \f0\b0 \cf4 ;\
  23086. \}
  23087. \f2\b \cf8 else
  23088. \f0\b0 \cf4 \{\
  23089. \f2\b \cf8 self
  23090. \f0\b0 \cf4 .isAudioMeeting =
  23091. \f2\b \cf8 YES
  23092. \f0\b0 \cf4 ;\
  23093. \}\
  23094. \}\
  23095. \
  23096. \f2\b \cf8 default
  23097. \f0\b0 \cf4 :\
  23098. \f2\b \cf8 break
  23099. \f0\b0 \cf4 ;\
  23100. \}\
  23101. \
  23102. \f2\b \cf8 if
  23103. \f0\b0 \cf4 (isMeeting && [g_config.isOpenCluster integerValue] == \cf7 1\cf4 ) \{\
  23104. \
  23105. [g_server userOpenMeetWithToUserId:chatPerson.userId toView:
  23106. \f2\b \cf8 self
  23107. \f0\b0 \cf4 ];\
  23108. \}
  23109. \f2\b \cf8 else
  23110. \f0\b0 \cf4 \{\
  23111. \f2\b \cf8 if
  23112. \f0\b0 \cf4 (
  23113. \f2\b \cf8 self
  23114. \f0\b0 \cf4 .isAudioMeeting) \{\
  23115. [
  23116. \f2\b \cf8 self
  23117. \f0\b0 \cf4 onChatAudio:msg];\
  23118. \}
  23119. \f2\b \cf8 else
  23120. \f0\b0 \cf4 \{\
  23121. [
  23122. \f2\b \cf8 self
  23123. \f0\b0 \cf4 onChatVideo:msg];\
  23124. \}\
  23125. \}\
  23126. \}\
  23127. \
  23128. \cf2 //
  23129. \f1 \'ce\'c4\'bc\'fe
  23130. \f0 cell
  23131. \f1 \'b5\'e3\'bb\'f7
  23132. \f0 \cf4 \
  23133. - (
  23134. \f2\b \cf8 void
  23135. \f0\b0 \cf4 ) \cf11 onDidFile\cf4 :(NSNotification *)notif \{\
  23136. \f2\b \cf8 if
  23137. \f0\b0 \cf4 (recording) \{\
  23138. \f2\b \cf8 return
  23139. \f0\b0 \cf4 ;\
  23140. \}\
  23141. JXMessageObject *msg = notif.object;\
  23142. JXShareFileObject *obj = [[JXShareFileObject alloc] init];\
  23143. obj.fileName = [msg.fileName lastPathComponent];\
  23144. obj.url = msg.content;\
  23145. obj.size = msg.fileSize;\
  23146. \
  23147. JXFileDetailViewController *vc = [[JXFileDetailViewController alloc] init];\
  23148. vc.shareFile = obj;\
  23149. \cf2 // [g_window addSubview:vc.view];\cf4 \
  23150. [g_navigation pushViewController:vc animated:
  23151. \f2\b \cf8 YES
  23152. \f0\b0 \cf4 ];\
  23153. \
  23154. \}\
  23155. \
  23156. \cf2 //
  23157. \f1 \'c1\'b4\'bd\'d3
  23158. \f0 cell
  23159. \f1 \'b5\'e3\'bb\'f7
  23160. \f0 \cf4 \
  23161. - (
  23162. \f2\b \cf8 void
  23163. \f0\b0 \cf4 ) \cf11 onDidLink\cf4 :(NSNotification *)notif \{\
  23164. \f2\b \cf8 if
  23165. \f0\b0 \cf4 (recording) \{\
  23166. \f2\b \cf8 return
  23167. \f0\b0 \cf4 ;\
  23168. \}\
  23169. [_messageText resignFirstResponder];\
  23170. \
  23171. JXMessageObject *msg = notif.object;\
  23172. SBJsonParser * parser = [[SBJsonParser alloc] init] ;\
  23173. \f2\b \cf8 id
  23174. \f0\b0 \cf4 content = [parser objectWithString:msg.content];\
  23175. NSString *url = [(NSDictionary *)content objectForKey:\cf6 @"url"\cf4 ];\
  23176. \
  23177. webpageVC *webVC = [webpageVC alloc];\
  23178. webVC.isGotoBack=
  23179. \f2\b \cf8 YES
  23180. \f0\b0 \cf4 ;\
  23181. webVC.isSend =
  23182. \f2\b \cf8 YES
  23183. \f0\b0 \cf4 ;\
  23184. webVC.title = [(NSDictionary *)content objectForKey:\cf6 @"title"\cf4 ];\
  23185. webVC.url = url;\
  23186. webVC = [webVC init];\
  23187. [g_navigation.navigationView addSubview:webVC.view];\
  23188. \cf2 // [g_navigation pushViewController:webVC animated:YES];\cf4 \
  23189. \
  23190. \}\
  23191. \
  23192. \cf2 //
  23193. \f1 \'b4\'c1\'d2\'bb\'b4\'c1\'b5\'e3\'bb\'f7
  23194. \f0 \cf4 \
  23195. - (
  23196. \f2\b \cf8 void
  23197. \f0\b0 \cf4 )\cf11 onDidShake\cf4 :(NSNotification *)notif \{\
  23198. JXMessageObject *msg = notif.object;\
  23199. \
  23200. \f2\b \cf8 int
  23201. \f0\b0 \cf4 value = \cf7 0\cf4 ;\
  23202. \f2\b \cf8 if
  23203. \f0\b0 \cf4 (msg.isMySend) \{\
  23204. value = -\cf7 50\cf4 ;\
  23205. \}
  23206. \f2\b \cf8 else
  23207. \f0\b0 \cf4 \{\
  23208. value = \cf7 50\cf4 ;\
  23209. \}\
  23210. \
  23211. \f2\b \cf8 if
  23212. \f0\b0 \cf4 (msg.content.length>\cf7 0\cf4 ) \{\
  23213. \cf2 // //
  23214. \f1 \'b5\'af\'ca\'d3\'c6\'b5
  23215. \f0 \cf4 \
  23216. \cf2 // NSString *path = [[NSBundle mainBundle] pathForResource:@"
  23217. \f1 \'b6\'b6\'d2\'bb\'b6\'b6\'c1\'e5\'c9\'f9
  23218. \f0 " ofType:@"mp3"];\cf4 \
  23219. \cf2 // JXStartSoundView *soundView=[JXStartSoundView new];\cf4 \
  23220. \cf2 // [soundView createSoundStrUrl2:path messageText:_messageText valueInt:value];\cf4 \
  23221. [SimpleAudioPlayer playFile:\cf6 @"
  23222. \f1 \'b6\'b6\'d2\'bb\'b6\'b6\'c1\'e5\'c9\'f9
  23223. \f0 .mp3"\cf4 ];\
  23224. \
  23225. \
  23226. \cf2 // _palyer=[AVPlayer playerWithURL:[NSURL URLWithString:path]];\cf4 \
  23227. \cf2 // [_palyer play];\cf4 \
  23228. \
  23229. CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:\cf6 @"transform.translation.x"\cf4 ];\cf12 ///
  23230. \f1 \cf2 \'ba\'e1\'cf\'f2\'d2\'c6\'b6\'af
  23231. \f0 \cf4 \
  23232. \
  23233. animation.toValue = [NSNumber numberWithInt:value];\
  23234. \
  23235. animation.duration = \cf7 .5\cf4 ;\
  23236. \
  23237. animation.removedOnCompletion =
  23238. \f2\b \cf8 YES
  23239. \f0\b0 \cf4 ;\cf2 //yes
  23240. \f1 \'b5\'c4\'bb\'b0\'a3\'ac\'d3\'d6\'b7\'b5\'bb\'d8\'d4\'ad\'ce\'bb\'d6\'c3\'c1\'cb\'a1\'a3
  23241. \f0 \cf4 \
  23242. \
  23243. animation.repeatCount = \cf7 2\cf4 ;\
  23244. animation.fillMode = kCAFillModeForwards;\
  23245. \cf2 //
  23246. \f1 \'b6\'b6\'d2\'bb\'b6\'b6\'c1\'e5\'c9\'f9
  23247. \f0 \cf4 \
  23248. \cf2 //
  23249. \f1 \'cc\'ed\'bc\'d3\'d5\'f1\'b6\'af
  23250. \f0 \cf4 \
  23251. AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);\
  23252. AudioServicesPlaySystemSound(\cf7 1521\cf4 );\
  23253. [_messageText.inputView.superview.layer addAnimation:animation forKey:
  23254. \f2\b \cf8 nil
  23255. \f0\b0 \cf4 ];\
  23256. [g_window.layer addAnimation:animation forKey:
  23257. \f2\b \cf8 nil
  23258. \f0\b0 \cf4 ];\
  23259. \
  23260. \}
  23261. \f2\b \cf8 else
  23262. \f0\b0 \cf4 \{\
  23263. \
  23264. CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:\cf6 @"transform.translation.x"\cf4 ];\cf12 ///
  23265. \f1 \cf2 \'ba\'e1\'cf\'f2\'d2\'c6\'b6\'af
  23266. \f0 \cf4 \
  23267. \
  23268. animation.toValue = [NSNumber numberWithInt:value];\
  23269. \
  23270. animation.duration = \cf7 .5\cf4 ;\
  23271. \
  23272. animation.removedOnCompletion =
  23273. \f2\b \cf8 YES
  23274. \f0\b0 \cf4 ;\cf2 //yes
  23275. \f1 \'b5\'c4\'bb\'b0\'a3\'ac\'d3\'d6\'b7\'b5\'bb\'d8\'d4\'ad\'ce\'bb\'d6\'c3\'c1\'cb\'a1\'a3
  23276. \f0 \cf4 \
  23277. \
  23278. animation.repeatCount = \cf7 2\cf4 ;\
  23279. animation.fillMode = kCAFillModeForwards;\
  23280. \
  23281. AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);\
  23282. AudioServicesPlaySystemSound(\cf7 1521\cf4 );\
  23283. [_messageText.inputView.superview.layer addAnimation:animation forKey:
  23284. \f2\b \cf8 nil
  23285. \f0\b0 \cf4 ];\
  23286. [g_window.layer addAnimation:animation forKey:
  23287. \f2\b \cf8 nil
  23288. \f0\b0 \cf4 ];\
  23289. \}\
  23290. \
  23291. \}\
  23292. \
  23293. \cf2 //
  23294. \f1 \'ba\'cf\'b2\'a2\'d7\'aa\'b7\'a2\'b5\'e3\'bb\'f7
  23295. \f0 \cf4 \
  23296. - (
  23297. \f2\b \cf8 void
  23298. \f0\b0 \cf4 )\cf11 onDidMergeRelay\cf4 :(NSNotification *)notif \{\
  23299. JXMessageObject *msg = notif.object;\
  23300. SBJsonParser * parser = [[SBJsonParser alloc] init] ;\
  23301. NSArray *content = [parser objectWithString:msg.content];\
  23302. NSMutableArray *array = [NSMutableArray array];\
  23303. \f2\b \cf8 for
  23304. \f0\b0 \cf4 (NSInteger i = \cf7 0\cf4 ; i < content.count; i ++) \{\
  23305. NSString *str = content[i];\
  23306. NSDictionary *dict = [parser objectWithString:str];\
  23307. JXMessageObject *msg = [[JXMessageObject alloc] init];\
  23308. [msg fromDictionary:dict];\
  23309. msg.isNotUpdateHeight =
  23310. \f2\b \cf8 YES
  23311. \f0\b0 \cf4 ;\
  23312. [array addObject:msg];\
  23313. \}\
  23314. \
  23315. JXChatLogVC *vc = [[JXChatLogVC alloc] init];\
  23316. \
  23317. vc.array = array;\
  23318. vc.title = msg.objectId;\
  23319. [g_navigation pushViewController:vc animated:
  23320. \f2\b \cf8 YES
  23321. \f0\b0 \cf4 ];\
  23322. \
  23323. \}\
  23324. \
  23325. \cf2 //
  23326. \f1 \'b7\'d6\'cf\'ed
  23327. \f0 cell
  23328. \f1 \'b5\'e3\'bb\'f7
  23329. \f0 \cf4 \
  23330. - (
  23331. \f2\b \cf8 void
  23332. \f0\b0 \cf4 )\cf11 onDidShare\cf4 :(NSNotification *)notif \{\
  23333. \f2\b \cf8 if
  23334. \f0\b0 \cf4 (recording) \{\
  23335. \f2\b \cf8 return
  23336. \f0\b0 \cf4 ;\
  23337. \}\
  23338. JXMessageObject *msg = notif.object;\
  23339. NSDictionary * msgDict = [[[SBJsonParser alloc]init]objectWithString:msg.objectId];\
  23340. \
  23341. NSString *url = [msgDict objectForKey:\cf6 @"url"\cf4 ];\
  23342. NSString *downloadUrl = [msgDict objectForKey:\cf6 @"downloadUrl"\cf4 ];\
  23343. \
  23344. \f2\b \cf8 if
  23345. \f0\b0 \cf4 ([url rangeOfString:\cf6 @"http"\cf4 ].location == NSNotFound) \{\
  23346. \
  23347. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url] options:
  23348. \f2\b \cf8 nil
  23349. \f0\b0 \cf4 completionHandler:^(
  23350. \f2\b \cf8 BOOL
  23351. \f0\b0 \cf4 success) \{\
  23352. \
  23353. \f2\b \cf8 if
  23354. \f0\b0 \cf4 (!success) \{\
  23355. \
  23356. webpageVC *webVC = [webpageVC alloc];\
  23357. webVC.isGotoBack=
  23358. \f2\b \cf8 YES
  23359. \f0\b0 \cf4 ;\
  23360. webVC.isSend =
  23361. \f2\b \cf8 YES
  23362. \f0\b0 \cf4 ;\
  23363. webVC.titleString = [msgDict objectForKey:\cf6 @"title"\cf4 ];\
  23364. webVC.url = downloadUrl;\
  23365. webVC = [webVC init];\
  23366. [g_navigation.navigationView addSubview:webVC.view];\
  23367. \cf2 // [g_navigation pushViewController:webVC animated:YES];\cf4 \
  23368. \}\
  23369. \
  23370. \}];\
  23371. \
  23372. \}
  23373. \f2\b \cf8 else
  23374. \f0\b0 \cf4 \{\
  23375. webpageVC *webVC = [webpageVC alloc];\
  23376. webVC.isGotoBack=
  23377. \f2\b \cf8 YES
  23378. \f0\b0 \cf4 ;\
  23379. webVC.isSend =
  23380. \f2\b \cf8 YES
  23381. \f0\b0 \cf4 ;\
  23382. webVC.titleString = [msgDict objectForKey:\cf6 @"title"\cf4 ];\
  23383. webVC.url = url;\
  23384. webVC = [webVC init];\
  23385. [g_navigation.navigationView addSubview:webVC.view];\
  23386. \cf2 // [g_navigation pushViewController:webVC animated:YES];\cf4 \
  23387. \}\
  23388. \
  23389. \}\
  23390. \
  23391. \cf2 //
  23392. \f1 \'bf\'d8\'d6\'c6\'cf\'fb\'cf\'a2\'b5\'e3\'bb\'f7
  23393. \f0 \cf4 \
  23394. - (
  23395. \f2\b \cf8 void
  23396. \f0\b0 \cf4 )\cf11 onDidRemind\cf4 :(NSNotification *)notif \{\
  23397. JXMessageObject *msg = notif.object;\
  23398. \
  23399. \f2\b \cf8 if
  23400. \f0\b0 \cf4 ([msg.remindType intValue] == kRoomRemind_NeedVerify) \{\
  23401. JXVerifyDetailVC *vc = [[JXVerifyDetailVC alloc] init];\
  23402. vc.chatVC =
  23403. \f2\b \cf8 self
  23404. \f0\b0 \cf4 ;\
  23405. vc.msg = msg;\
  23406. vc.room =
  23407. \f2\b \cf8 self
  23408. \f0\b0 \cf4 .room;\
  23409. [g_navigation pushViewController:vc animated:
  23410. \f2\b \cf8 YES
  23411. \f0\b0 \cf4 ];\
  23412. \}\
  23413. \
  23414. \f2\b \cf8 if
  23415. \f0\b0 \cf4 ([msg.remindType intValue] == kWCMessageTypeRedPacketReceive) \{\
  23416. \f2\b \cf8 self
  23417. \f0\b0 \cf4 .isDidRedPacketRemind =
  23418. \f2\b \cf8 YES
  23419. \f0\b0 \cf4 ;\
  23420. [g_server getRedPacket:msg.objectId toView:
  23421. \f2\b \cf8 self
  23422. \f0\b0 \cf4 ];\
  23423. \}\
  23424. \}\
  23425. \
  23426. \cf2 //
  23427. \f1 \'bb\'d8\'b8\'b4\'cf\'fb\'cf\'a2\'b5\'e3\'bb\'f7
  23428. \f0 \cf4 \
  23429. - (
  23430. \f2\b \cf8 void
  23431. \f0\b0 \cf4 )\cf11 onDidReply\cf4 :(NSNotification *)notif \{\
  23432. \f2\b \cf8 int
  23433. \f0\b0 \cf4 indexNum = [notif.object intValue];\
  23434. JXMessageObject *msg = _array[indexNum];\
  23435. \
  23436. JXMessageObject *msgObj = [[JXMessageObject alloc] init];\
  23437. SBJsonParser *jsonParser = [[SBJsonParser alloc] init];\
  23438. NSDictionary *dict = [jsonParser objectWithString:msg.objectId];\
  23439. [msgObj fromDictionary:dict];\
  23440. \f2\b \cf8 for
  23441. \f0\b0 \cf4 (JXMessageObject *msg1
  23442. \f2\b \cf8 in
  23443. \f0\b0 \cf4 _array) \{\
  23444. \f2\b \cf8 if
  23445. \f0\b0 \cf4 ([msgObj.messageId isEqualToString:msg1.messageId]) \{\
  23446. NSUInteger index = [_array indexOfObject:msg1];\
  23447. [_table scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:\cf7 0\cf4 ] atScrollPosition:UITableViewScrollPositionTop animated:
  23448. \f2\b \cf8 YES
  23449. \f0\b0 \cf4 ];\
  23450. \}\
  23451. \}\
  23452. \
  23453. \}\
  23454. \
  23455. \cf2 //
  23456. \f1 \'ce\'c4\'b1\'be\'cf\'fb\'cf\'a2\'d4\'c4\'ba\'f3\'bc\'b4\'b7\'d9
  23457. \f0 \cf4 \
  23458. - (
  23459. \f2\b \cf8 void
  23460. \f0\b0 \cf4 )\cf11 onDidMessageReadDel\cf4 :(NSNotification *)notif \{\
  23461. \cf2 // int indexNum = [notif.object intValue];\cf4 \
  23462. \cf2 // [_table reloadRow:indexNum section:0];\cf4 \
  23463. [_table reloadData];\
  23464. \
  23465. \}\
  23466. \
  23467. \cf2 //
  23468. \f1 \'cf\'fb\'cf\'a2\'b3\'b7\'bb\'d8
  23469. \f0 \cf4 \
  23470. - (
  23471. \f2\b \cf8 void
  23472. \f0\b0 \cf4 )\cf11 withdrawNotifi\cf4 :(NSNotification *) notif \{\
  23473. JXMessageObject *msg = notif.object;\
  23474. \
  23475. \f2\b \cf8 for
  23476. \f0\b0 \cf4 (NSInteger i=[_array count]-\cf7 1\cf4 ;i>=\cf7 0\cf4 ;i--)\{\
  23477. JXMessageObject *p=[_array objectAtIndex:i];\
  23478. \f2\b \cf8 if
  23479. \f0\b0 \cf4 ([p.messageId isEqualToString:msg.messageId])\{\cf2 //
  23480. \f1 \'c8\'e7\'b9\'fb\'d5\'d2\'b5\'bd\'b1\'bb\'b3\'b7\'bb\'d8\'b5\'c4\'c4\'c7\'cc\'f5\'cf\'fb\'cf\'a2
  23481. \f0 \cf4 \
  23482. p.content = msg.content;\
  23483. p.type = msg.type;\
  23484. [_table reloadRow:(
  23485. \f2\b \cf8 int
  23486. \f0\b0 \cf4 )i section:\cf7 0\cf4 ];\
  23487. \}\
  23488. p =
  23489. \f2\b \cf8 nil
  23490. \f0\b0 \cf4 ;\
  23491. \}\
  23492. \}\
  23493. \
  23494. - (
  23495. \f2\b \cf8 void
  23496. \f0\b0 \cf4 )\cf11 enableCell\cf4 \{\
  23497. \f2\b \cf8 for
  23498. \f0\b0 \cf4 (
  23499. \f2\b \cf8 int
  23500. \f0\b0 \cf4 i = \cf7 0\cf4 ; i < _array.count; i++) \{\
  23501. JXBaseChatCell *cell = [_table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:\cf7 0\cf4 ]];\
  23502. cell.bubbleBg.userInteractionEnabled = !
  23503. \f2\b \cf8 self
  23504. \f0\b0 \cf4 .isSelectMore;\
  23505. \}\
  23506. \}\
  23507. \
  23508. - (
  23509. \f2\b \cf8 void
  23510. \f0\b0 \cf4 )\cf11 createRoom\cf4 \{\
  23511. \f2\b \cf8 if
  23512. \f0\b0 \cf4 (recording) \{\
  23513. \f2\b \cf8 return
  23514. \f0\b0 \cf4 ;\
  23515. \}\
  23516. JXChatSettingVC *vc = [[JXChatSettingVC alloc] init];\
  23517. vc.user =
  23518. \f2\b \cf8 self
  23519. \f0\b0 \cf4 .chatPerson;\
  23520. vc.room =
  23521. \f2\b \cf8 self
  23522. \f0\b0 \cf4 .room;\
  23523. vc.chatRoom =
  23524. \f2\b \cf8 self
  23525. \f0\b0 \cf4 .chatRoom;\
  23526. [g_navigation pushViewController:vc animated:
  23527. \f2\b \cf8 YES
  23528. \f0\b0 \cf4 ];\
  23529. \
  23530. \cf2 // JXSelFriendVC* vc = [JXSelFriendVC alloc];\cf4 \
  23531. \cf12 ///
  23532. \f3 \cf2 / vc.chatRoom = _chatRoom;
  23533. \f0 \cf4 \
  23534. \cf2 // vc.room = _room;\cf4 \
  23535. \cf2 // vc.isNewRoom = YES;\cf4 \
  23536. \cf2 // vc.isForRoom = YES;\cf4 \
  23537. \cf2 // vc.forRoomUser = chatPerson;\cf4 \
  23538. \cf2 // vc = [vc init];\cf4 \
  23539. \cf12 ///
  23540. \f3 \cf2 / [g_window addSubview:vc.view];
  23541. \f0 \cf4 \
  23542. \cf2 // [g_navigation pushViewController:vc animated:YES];\cf4 \
  23543. \}\
  23544. \
  23545. - (
  23546. \f2\b \cf8 BOOL
  23547. \f0\b0 \cf4 )\cf11 sendMsgCheck\cf4 \{\
  23548. \cf2 //
  23549. \f1 \'d1\'e9\'d6\'a4
  23550. \f0 XMPP
  23551. \f1 \'ca\'c7\'b7\'f1\'d4\'da\'cf\'df
  23552. \f0 \cf4 \
  23553. \f2\b \cf8 if
  23554. \f0\b0 \cf4 (g_xmpp.isLogined == login_status_no)\{\
  23555. \cf2 // [self hideKeyboard:NO];\cf4 \
  23556. \cf2 // [g_xmpp showXmppOfflineAlert];\cf4 \
  23557. \cf2 // return YES;\cf4 \
  23558. \
  23559. \cf2 // [g_xmpp logout];\cf4 \
  23560. [g_xmpp login];\
  23561. \
  23562. \}\
  23563. \
  23564. \f2\b \cf8 if
  23565. \f0\b0 \cf4 (
  23566. \f2\b \cf8 self
  23567. \f0\b0 \cf4 .roomJid) \{\
  23568. NSString *s;\
  23569. \cf2 //
  23570. \f1 \'d1\'e9\'d6\'a4\'c8\'ba\'d7\'e9\'ca\'c7\'b7\'f1\'d3\'d0\'d0\'a7
  23571. \f0 \cf4 \
  23572. \f2\b \cf8 switch
  23573. \f0\b0 \cf4 ([
  23574. \f2\b \cf8 self
  23575. \f0\b0 \cf4 .groupStatus intValue]) \{\
  23576. \f2\b \cf8 case
  23577. \f0\b0 \cf4 \cf7 0\cf4 :\
  23578. s =
  23579. \f2\b \cf8 nil
  23580. \f0\b0 \cf4 ;\
  23581. \f2\b \cf8 break
  23582. \f0\b0 \cf4 ;\
  23583. \f2\b \cf8 case
  23584. \f0\b0 \cf4 \cf7 1\cf4 :\
  23585. s = Localized(\cf6 @"JX_OutOfTheGroup1"\cf4 );\
  23586. \f2\b \cf8 break
  23587. \f0\b0 \cf4 ;\
  23588. \f2\b \cf8 case
  23589. \f0\b0 \cf4 \cf7 2\cf4 :\
  23590. s = Localized(\cf6 @"JX_DissolutionGroup1"\cf4 );\
  23591. \f2\b \cf8 break
  23592. \f0\b0 \cf4 ;\
  23593. \
  23594. \f2\b \cf8 default
  23595. \f0\b0 \cf4 :\
  23596. \f2\b \cf8 break
  23597. \f0\b0 \cf4 ;\
  23598. \}\
  23599. \
  23600. \f2\b \cf8 if
  23601. \f0\b0 \cf4 (!s || s.length <= \cf7 0\cf4 ) \{\
  23602. \f2\b \cf8 if
  23603. \f0\b0 \cf4 (![g_xmpp.roomPool getRoom:
  23604. \f2\b \cf8 self
  23605. \f0\b0 \cf4 .chatPerson.userId] && [
  23606. \f2\b \cf8 self
  23607. \f0\b0 \cf4 .chatPerson.groupStatus intValue] == \cf7 0\cf4 ) \{\
  23608. [g_xmpp.roomPool joinRoom:chatPerson.userId title:chatPerson.userNickname lastDate:
  23609. \f2\b \cf8 nil
  23610. \f0\b0 \cf4 isNew:
  23611. \f2\b \cf8 NO
  23612. \f0\b0 \cf4 ];\
  23613. \cf2 // s = Localized(@"JX_GroupConnectionFailed");\cf4 \
  23614. chatRoom = [[JXXMPP sharedInstance].roomPool joinRoom:chatPerson.userId title:chatPerson.userNickname lastDate:
  23615. \f2\b \cf8 nil
  23616. \f0\b0 \cf4 isNew:
  23617. \f2\b \cf8 NO
  23618. \f0\b0 \cf4 ];\
  23619. \}\
  23620. \}\
  23621. \
  23622. \f2\b \cf8 if
  23623. \f0\b0 \cf4 (
  23624. \f2\b \cf8 self
  23625. \f0\b0 \cf4 .isDisable) \{\
  23626. s = Localized(\cf6 @"JX_GroupNotUse"\cf4 );\
  23627. \}\
  23628. \
  23629. \f2\b \cf8 if
  23630. \f0\b0 \cf4 (s.length > \cf7 0\cf4 ) \{\
  23631. [
  23632. \f2\b \cf8 self
  23633. \f0\b0 \cf4 hideKeyboard:
  23634. \f2\b \cf8 NO
  23635. \f0\b0 \cf4 ];\
  23636. [g_server showMsg:s];\
  23637. \f2\b \cf8 return
  23638. \f0\b0 \cf4
  23639. \f2\b \cf8 YES
  23640. \f0\b0 \cf4 ;\
  23641. \}\
  23642. \
  23643. \cf2 // if (!chatRoom.isConnected) \{\cf4 \
  23644. \cf2 // [_wait start];\cf4 \
  23645. \cf2 // chatRoom = [[JXXMPP sharedInstance].roomPool joinRoom:chatPerson.userId title:chatPerson.userNickname isNew:NO];\cf4 \
  23646. \cf2 // return YES;\cf4 \
  23647. \cf2 // \}\cf4 \
  23648. \
  23649. \}
  23650. \f2\b \cf8 else
  23651. \f0\b0 \cf4 \{\
  23652. \f2\b \cf8 if
  23653. \f0\b0 \cf4 ([
  23654. \f2\b \cf8 self
  23655. \f0\b0 \cf4 .chatPerson.userId intValue] <=\cf7 10100\cf4 && [
  23656. \f2\b \cf8 self
  23657. \f0\b0 \cf4 .chatPerson.userId intValue] >=\cf7 10000\cf4 ) \{\
  23658. \f2\b \cf8 return
  23659. \f0\b0 \cf4
  23660. \f2\b \cf8 NO
  23661. \f0\b0 \cf4 ;\
  23662. \}\
  23663. \f2\b \cf8 if
  23664. \f0\b0 \cf4 (
  23665. \f2\b \cf8 self
  23666. \f0\b0 \cf4 .isGroupMessages) \{\
  23667. \f2\b \cf8 return
  23668. \f0\b0 \cf4
  23669. \f2\b \cf8 NO
  23670. \f0\b0 \cf4 ;\
  23671. \}\
  23672. \cf2 //
  23673. \f1 \'ca\'c7\'b7\'f1\'b1\'bb\'c0\'ad\'c8\'eb\'ba\'da\'c3\'fb\'b5\'a5
  23674. \f0 \cf4 \
  23675. \f2\b \cf8 if
  23676. \f0\b0 \cf4 (
  23677. \f2\b \cf8 self
  23678. \f0\b0 \cf4 .isBeenBlack > \cf7 0\cf4 ) \{\
  23679. [g_App showAlert:Localized(\cf6 @"TO_BLACKLIST"\cf4 )];\
  23680. \f2\b \cf8 return
  23681. \f0\b0 \cf4
  23682. \f2\b \cf8 YES
  23683. \f0\b0 \cf4 ;\
  23684. \}
  23685. \f2\b \cf8 else
  23686. \f0\b0 \cf4 \
  23687. \cf2 // if (self.friendStatus != 2 && self.friendStatus != 10) \{\cf4 \
  23688. \cf2 // [g_App showAlert:Localized(@"JX_NoFriendsWithMe")];\cf4 \
  23689. \cf2 // return YES;\cf4 \
  23690. \cf2 // \}else\cf4 \
  23691. \{\
  23692. \f2\b \cf8 return
  23693. \f0\b0 \cf4
  23694. \f2\b \cf8 NO
  23695. \f0\b0 \cf4 ;\
  23696. \}\
  23697. \}\
  23698. \
  23699. \f2\b \cf8 return
  23700. \f0\b0 \cf4
  23701. \f2\b \cf8 NO
  23702. \f0\b0 \cf4 ;\
  23703. \}\
  23704. \
  23705. - (
  23706. \f2\b \cf8 BOOL
  23707. \f0\b0 \cf4 )\cf11 checkCameraLimits\cf4 \{\
  23708. \cf12 ///\cf4
  23709. \f1 \cf2 \'cf\'c8\'c5\'d0\'b6\'cf\'c9\'e3\'cf\'f1\'cd\'b7\'d3\'b2\'bc\'fe\'ca\'c7\'b7\'f1\'ba\'c3\'d3\'c3
  23710. \f0 \cf4 \
  23711. \f2\b \cf8 if
  23712. \f0\b0 \cf4 ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])\
  23713. \{\
  23714. \cf2 //
  23715. \f1 \'d3\'c3\'bb\'a7\'ca\'c7\'b7\'f1\'d4\'ca\'d0\'ed\'c9\'e3\'cf\'f1\'cd\'b7\'ca\'b9\'d3\'c3
  23716. \f0 \cf4 \
  23717. NSString * mediaType = AVMediaTypeVideo;\
  23718. AVAuthorizationStatus authorizationStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];\
  23719. \cf2 //
  23720. \f1 \'b2\'bb\'d4\'ca\'d0\'ed\'b5\'af\'b3\'f6\'cc\'e1\'ca\'be\'bf\'f2
  23721. \f0 \cf4 \
  23722. \f2\b \cf8 if
  23723. \f0\b0 \cf4 (authorizationStatus == AVAuthorizationStatusRestricted|| authorizationStatus == AVAuthorizationStatusDenied) \{\
  23724. \
  23725. UIAlertController * alert = [UIAlertController alertControllerWithTitle:Localized(\cf6 @"JX_CameraNotTake"\cf4 ) message:
  23726. \f2\b \cf8 nil
  23727. \f0\b0 \cf4 preferredStyle:UIAlertControllerStyleAlert];\
  23728. UIAlertAction * action = [UIAlertAction actionWithTitle:Localized(\cf6 @"JXSettingVC_Set"\cf4 ) style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) \{\
  23729. \cf2 //
  23730. \f1 \'ce\'de\'c8\'a8\'cf\'de
  23731. \f0
  23732. \f1 \'d2\'fd\'b5\'bc\'c8\'a5\'bf\'aa\'c6\'f4
  23733. \f0 \cf4 \
  23734. NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];\
  23735. \f2\b \cf8 if
  23736. \f0\b0 \cf4 ([[UIApplication sharedApplication] canOpenURL:url]) \{\
  23737. [[UIApplication sharedApplication] openURL:url];\
  23738. \}\
  23739. \}];\
  23740. UIAlertAction * actionCancel = [UIAlertAction actionWithTitle:Localized(\cf6 @"JX_Cencal"\cf4 ) style:UIAlertActionStyleCancel handler:^(UIAlertAction *
  23741. \f2\b \cf8 _Nonnull
  23742. \f0\b0 \cf4 action) \{\
  23743. \}];\
  23744. [alert addAction:action];\
  23745. [alert addAction:actionCancel];\
  23746. \
  23747. [
  23748. \f2\b \cf8 self
  23749. \f0\b0 \cf4 presentViewController:alert animated:
  23750. \f2\b \cf8 YES
  23751. \f0\b0 \cf4 completion:
  23752. \f2\b \cf8 nil
  23753. \f0\b0 \cf4 ];\
  23754. \f2\b \cf8 return
  23755. \f0\b0 \cf4
  23756. \f2\b \cf8 NO
  23757. \f0\b0 \cf4 ;\
  23758. \}
  23759. \f2\b \cf8 else
  23760. \f0\b0 \cf4 \{\
  23761. \cf2 //
  23762. \f1 \'d5\'e2\'c0\'ef\'ca\'c7\'c9\'e3\'cf\'f1\'cd\'b7\'bf\'c9\'d2\'d4\'ca\'b9\'d3\'c3\'b5\'c4\'b4\'a6\'c0\'ed\'c2\'df\'bc\'ad
  23763. \f0 \cf4 \
  23764. \f2\b \cf8 return
  23765. \f0\b0 \cf4
  23766. \f2\b \cf8 YES
  23767. \f0\b0 \cf4 ;\
  23768. \}\
  23769. \}
  23770. \f2\b \cf8 else
  23771. \f0\b0 \cf4 \{\
  23772. \cf2 //
  23773. \f1 \'d3\'b2\'bc\'fe\'ce\'ca\'cc\'e2\'cc\'e1\'ca\'be
  23774. \f0 \cf4 \
  23775. [g_App showAlert:Localized(\cf6 @"JX_CameraBad"\cf4 )];\
  23776. \f2\b \cf8 return
  23777. \f0\b0 \cf4
  23778. \f2\b \cf8 NO
  23779. \f0\b0 \cf4 ;\
  23780. \}\
  23781. \}\
  23782. \
  23783. - (
  23784. \f2\b \cf8 void
  23785. \f0\b0 \cf4 )\cf11 showCallMsg\cf4 :(NSNotification *)notifice\{\
  23786. JXMessageObject *msg = (JXMessageObject *)notifice.object;\
  23787. \f2\b \cf8 if
  23788. \f0\b0 \cf4 (msg==
  23789. \f2\b \cf8 nil
  23790. \f0\b0 \cf4 )\{\
  23791. \f2\b \cf8 return
  23792. \f0\b0 \cf4 ;\
  23793. \}\
  23794. _messageText.text = msg.content;\
  23795. [
  23796. \f2\b \cf8 self
  23797. \f0\b0 \cf4 sendIt:
  23798. \f2\b \cf8 nil
  23799. \f0\b0 \cf4 ];\
  23800. \}\
  23801. \
  23802. - (
  23803. \f2\b \cf8 void
  23804. \f0\b0 \cf4 )\cf11 addWaitGroupSendViewWithMsgNum\cf4 :(NSInteger )msgNum \cf11 withType\cf4 :(NSInteger )type\{\
  23805. _sendedNum = \cf7 0\cf4 ;\
  23806. \f2\b \cf8 self
  23807. \f0\b0 \cf4 .groupMessagesIndex = \cf7 0\cf4 ;\
  23808. \f2\b \cf8 self
  23809. \f0\b0 \cf4 .groupUploadObjArray =
  23810. \f2\b \cf8 nil
  23811. \f0\b0 \cf4 ;\
  23812. \f2\b \cf8 self
  23813. \f0\b0 \cf4 .groupSendMsgArray =
  23814. \f2\b \cf8 nil
  23815. \f0\b0 \cf4 ;\
  23816. _groupSendType = type;\
  23817. \f2\b \cf8 self
  23818. \f0\b0 \cf4 .groupSendAllNum =
  23819. \f2\b \cf8 self
  23820. \f0\b0 \cf4 .userIds.count * msgNum;\
  23821. _isGroupSendCancel =
  23822. \f2\b \cf8 NO
  23823. \f0\b0 \cf4 ;\
  23824. \f2\b \cf8 self
  23825. \f0\b0 \cf4 .imgsAndVideosDic =
  23826. \f2\b \cf8 nil
  23827. \f0\b0 \cf4 ;\
  23828. \
  23829. \f2\b \cf8 self
  23830. \f0\b0 \cf4 .waitGroupSendView = [[UIView alloc] initWithFrame:
  23831. \f2\b \cf8 self
  23832. \f0\b0 \cf4 .view.bounds];\
  23833. \f2\b \cf8 self
  23834. \f0\b0 \cf4 .waitGroupSendView.backgroundColor = [UIColor clearColor];\
  23835. [
  23836. \f2\b \cf8 self
  23837. \f0\b0 \cf4 .view addSubview:
  23838. \f2\b \cf8 self
  23839. \f0\b0 \cf4 .waitGroupSendView];\
  23840. [
  23841. \f2\b \cf8 self
  23842. \f0\b0 \cf4 .view bringSubviewToFront:
  23843. \f2\b \cf8 self
  23844. \f0\b0 \cf4 .waitGroupSendView];\
  23845. \
  23846. UIView *centerView = [[UIView alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , \cf7 0\cf4 , \cf7 100\cf4 , \cf7 80\cf4 )];\
  23847. centerView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:\cf7 0.5\cf4 ];\
  23848. centerView.layer.cornerRadius = \cf7 5.f\cf4 ;\
  23849. centerView.layer.masksToBounds =
  23850. \f2\b \cf8 YES
  23851. \f0\b0 \cf4 ;\
  23852. [
  23853. \f2\b \cf8 self
  23854. \f0\b0 \cf4 .waitGroupSendView addSubview:centerView];\
  23855. centerView.center =
  23856. \f2\b \cf8 self
  23857. \f0\b0 \cf4 .waitGroupSendView.center;\
  23858. \
  23859. UILabel *lab = [[UILabel alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , \cf7 20\cf4 , \cf7 100\cf4 , \cf7 20\cf4 )];\
  23860. [lab setTextColor:[UIColor whiteColor]];\
  23861. [lab setFont:g_factory.font12];\
  23862. [lab setText:\cf6 @"
  23863. \f1 \'d5\'fd\'d4\'da\'b7\'a2\'cb\'cd\'a3\'ba
  23864. \f0 "\cf4 ];\
  23865. [lab setTextAlignment:NSTextAlignmentCenter];\
  23866. [lab setBackgroundColor:[UIColor clearColor]];\
  23867. [centerView addSubview:lab];\
  23868. \
  23869. \f2\b \cf8 self
  23870. \f0\b0 \cf4 .waitGroupSendLable = [[UILabel alloc] initWithFrame:CGRectMake(\cf7 0\cf4 , \cf7 40\cf4 , \cf7 100\cf4 , \cf7 20\cf4 )];\
  23871. [
  23872. \f2\b \cf8 self
  23873. \f0\b0 \cf4 .waitGroupSendLable setTextAlignment:NSTextAlignmentCenter];\
  23874. [
  23875. \f2\b \cf8 self
  23876. \f0\b0 \cf4 .waitGroupSendLable setBackgroundColor:[UIColor clearColor]];\
  23877. [
  23878. \f2\b \cf8 self
  23879. \f0\b0 \cf4 .waitGroupSendLable setTextColor:[UIColor whiteColor]];\
  23880. [
  23881. \f2\b \cf8 self
  23882. \f0\b0 \cf4 .waitGroupSendLable setFont:g_factory.font12];\
  23883. [
  23884. \f2\b \cf8 self
  23885. \f0\b0 \cf4 .waitGroupSendLable setText:[NSString stringWithFormat:\cf6 @"%ld/%ld"\cf4 ,(
  23886. \f2\b \cf8 long
  23887. \f0\b0 \cf4 )_sendedNum,(
  23888. \f2\b \cf8 long
  23889. \f0\b0 \cf4 )
  23890. \f2\b \cf8 self
  23891. \f0\b0 \cf4 .groupSendAllNum]];\
  23892. [centerView addSubview:
  23893. \f2\b \cf8 self
  23894. \f0\b0 \cf4 .waitGroupSendLable];\
  23895. \
  23896. UIButton *cancelButton = [[UIButton alloc] initWithFrame:CGRectMake(\cf7 85\cf4 , \cf7 5\cf4 , \cf7 10\cf4 , \cf7 10\cf4 )];\
  23897. [cancelButton setImage:[UIImage imageNamed:\cf6 @"close_preview"\cf4 ] forState:UIControlStateNormal];\
  23898. [cancelButton addTarget:
  23899. \f2\b \cf8 self
  23900. \f0\b0 \cf4 action:
  23901. \f2\b \cf8 @selector
  23902. \f0\b0 \cf4 (groupSendCancel) forControlEvents:UIControlEventTouchUpInside];\
  23903. [centerView addSubview:cancelButton];\
  23904. \
  23905. \}\
  23906. \
  23907. - (
  23908. \f2\b \cf8 void
  23909. \f0\b0 \cf4 )\cf11 groupSendCancel\cf4 \{\
  23910. UIAlertController *alert = [[UIAlertController alloc] init];\
  23911. alert.title = \cf6 @"
  23912. \f1 \'ca\'c7\'b7\'f1\'cd\'a3\'d6\'b9\'b7\'a2\'cb\'cd
  23913. \f0 "\cf4 ;\
  23914. UIAlertAction *cancel = [UIAlertAction actionWithTitle:\cf6 @"
  23915. \f1 \'c8\'a1\'cf\'fb
  23916. \f0 "\cf4 style:UIAlertActionStyleCancel handler:
  23917. \f2\b \cf8 nil
  23918. \f0\b0 \cf4 ];\
  23919. UIAlertAction *ok = [UIAlertAction actionWithTitle:\cf6 @"
  23920. \f1 \'c8\'b7\'c8\'cf
  23921. \f0 "\cf4 style:UIAlertActionStyleDefault handler:^(UIAlertAction *
  23922. \f2\b \cf8 _Nonnull
  23923. \f0\b0 \cf4 action) \{\
  23924. _isGroupSendCancel =
  23925. \f2\b \cf8 YES
  23926. \f0\b0 \cf4 ;\
  23927. [
  23928. \f2\b \cf8 self
  23929. \f0\b0 \cf4 .waitGroupSendView removeFromSuperview];\
  23930. \}];\
  23931. [alert addAction:cancel];\
  23932. [alert addAction:ok];\
  23933. [
  23934. \f2\b \cf8 self
  23935. \f0\b0 \cf4 presentViewController:alert animated:
  23936. \f2\b \cf8 YES
  23937. \f0\b0 \cf4 completion:
  23938. \f2\b \cf8 nil
  23939. \f0\b0 \cf4 ];\
  23940. \}\
  23941. \
  23942. - (
  23943. \f2\b \cf8 void
  23944. \f0\b0 \cf4 )\cf11 keepOnGroupSend\cf4 :(NSNotification *)notifice\{\
  23945. _sendedNum ++;\
  23946. JXMessageObject *msg = (JXMessageObject *)notifice.object;\
  23947. \f2\b \cf8 if
  23948. \f0\b0 \cf4 (
  23949. \f2\b \cf8 self
  23950. \f0\b0 \cf4 .waitGroupSendView) \{\
  23951. [
  23952. \f2\b \cf8 self
  23953. \f0\b0 \cf4 .waitGroupSendLable setText:[NSString stringWithFormat:\cf6 @"%ld/%ld"\cf4 ,(
  23954. \f2\b \cf8 long
  23955. \f0\b0 \cf4 )_sendedNum,(
  23956. \f2\b \cf8 long
  23957. \f0\b0 \cf4 )
  23958. \f2\b \cf8 self
  23959. \f0\b0 \cf4 .groupSendAllNum]];\
  23960. \}\
  23961. \f2\b \cf8 if
  23962. \f0\b0 \cf4 (_sendedNum ==
  23963. \f2\b \cf8 self
  23964. \f0\b0 \cf4 .groupSendAllNum) \{\
  23965. \f2\b \cf8 if
  23966. \f0\b0 \cf4 (
  23967. \f2\b \cf8 self
  23968. \f0\b0 \cf4 .waitGroupSendView) \{\
  23969. [
  23970. \f2\b \cf8 self
  23971. \f0\b0 \cf4 .waitGroupSendView removeFromSuperview];\
  23972. [g_App showAlert:Localized(\cf6 @"JX_SendComplete"\cf4 )];\
  23973. \}\
  23974. \f2\b \cf8 return
  23975. \f0\b0 \cf4 ;\
  23976. \}\
  23977. \f2\b \cf8 if
  23978. \f0\b0 \cf4 (msg.isLastGroupSend) \{\
  23979. \f2\b \cf8 switch
  23980. \f0\b0 \cf4 (_groupSendType) \{\
  23981. \f2\b \cf8 case
  23982. \f0\b0 \cf4 groupsend_msgType_text:\{\
  23983. [
  23984. \f2\b \cf8 self
  23985. \f0\b0 \cf4 sendIt:
  23986. \f2\b \cf8 nil
  23987. \f0\b0 \cf4 ];\
  23988. \f2\b \cf8 break
  23989. \f0\b0 \cf4 ;\
  23990. \}\
  23991. \f2\b \cf8 case
  23992. \f0\b0 \cf4 groupsend_msgType_shake:\{\
  23993. [
  23994. \f2\b \cf8 self
  23995. \f0\b0 \cf4 onShake];\
  23996. \f2\b \cf8 break
  23997. \f0\b0 \cf4 ;\
  23998. \}\
  23999. \f2\b \cf8 case
  24000. \f0\b0 \cf4 groupsend_msgType_addressbook:\{\
  24001. JXSelectAddressBookVC *selectVC =
  24002. \f2\b \cf8 self
  24003. \f0\b0 \cf4 .groupUploadObjArray.lastObject;\
  24004. [
  24005. \f2\b \cf8 self
  24006. \f0\b0 \cf4 selectAddressBookVC:selectVC doneAction:
  24007. \f2\b \cf8 self
  24008. \f0\b0 \cf4 .groupSendMsgArray];\
  24009. \f2\b \cf8 break
  24010. \f0\b0 \cf4 ;\
  24011. \}\
  24012. \f2\b \cf8 case
  24013. \f0\b0 \cf4 groupsend_msgType_card:\{\
  24014. JXSelectFriendsVC *vc =
  24015. \f2\b \cf8 self
  24016. \f0\b0 \cf4 .groupSendMsgArray.lastObject;\
  24017. [
  24018. \f2\b \cf8 self
  24019. \f0\b0 \cf4 onAfterAddMember:vc];\
  24020. \f2\b \cf8 break
  24021. \f0\b0 \cf4 ;\
  24022. \}\
  24023. \f2\b \cf8 case
  24024. \f0\b0 \cf4 groupsend_msgType_collect:\{\
  24025. \f2\b \cf8 if
  24026. \f0\b0 \cf4 ([
  24027. \f2\b \cf8 self
  24028. \f0\b0 \cf4 .groupSendMsgArray.lastObject isKindOfClass:[WeiboData
  24029. \f2\b \cf8 class
  24030. \f0\b0 \cf4 ]]) \{\
  24031. WeiboData *data =
  24032. \f2\b \cf8 self
  24033. \f0\b0 \cf4 .groupSendMsgArray.lastObject;\
  24034. WeiboViewControlle *vc =
  24035. \f2\b \cf8 nil
  24036. \f0\b0 \cf4 ;\
  24037. [
  24038. \f2\b \cf8 self
  24039. \f0\b0 \cf4 weiboVC:vc didSelectWithData:data];\
  24040. \}
  24041. \f2\b \cf8 else
  24042. \f0\b0 \cf4 \{\
  24043. [
  24044. \f2\b \cf8 self
  24045. \f0\b0 \cf4 collectionMsgSendAll:
  24046. \f2\b \cf8 self
  24047. \f0\b0 \cf4 .groupSendMsgArray];\
  24048. \}\
  24049. \f2\b \cf8 break
  24050. \f0\b0 \cf4 ;\
  24051. \}\
  24052. \f2\b \cf8 case
  24053. \f0\b0 \cf4 groupsend_msgType_location:\{\
  24054. [
  24055. \f2\b \cf8 self
  24056. \f0\b0 \cf4 onSelLocation:
  24057. \f2\b \cf8 self
  24058. \f0\b0 \cf4 .mapData];\
  24059. \f2\b \cf8 break
  24060. \f0\b0 \cf4 ;\
  24061. \}\
  24062. \f2\b \cf8 default
  24063. \f0\b0 \cf4 :\
  24064. \f2\b \cf8 break
  24065. \f0\b0 \cf4 ;\
  24066. \}\
  24067. \}\
  24068. \}\
  24069. \
  24070. - (
  24071. \f2\b \cf8 void
  24072. \f0\b0 \cf4 )\cf11 keepOnUplpadGroupSend\cf4 \{\
  24073. _sendedNum++;\
  24074. \f2\b \cf8 if
  24075. \f0\b0 \cf4 (_sendedNum >
  24076. \f2\b \cf8 self
  24077. \f0\b0 \cf4 .groupSendAllNum) \{\
  24078. \f2\b \cf8 return
  24079. \f0\b0 \cf4 ;\
  24080. \}\
  24081. [
  24082. \f2\b \cf8 self
  24083. \f0\b0 \cf4 .waitGroupSendLable setText:[NSString stringWithFormat:\cf6 @"%ld/%ld"\cf4 ,(
  24084. \f2\b \cf8 long
  24085. \f0\b0 \cf4 )_sendedNum,(
  24086. \f2\b \cf8 long
  24087. \f0\b0 \cf4 )
  24088. \f2\b \cf8 self
  24089. \f0\b0 \cf4 .groupSendAllNum]];\
  24090. \f2\b \cf8 if
  24091. \f0\b0 \cf4 (_sendedNum %
  24092. \f2\b \cf8 self
  24093. \f0\b0 \cf4 .groupUploadObjArray.count == \cf7 0\cf4 ) \{\
  24094. \f2\b \cf8 if
  24095. \f0\b0 \cf4 ((_sendedNum /
  24096. \f2\b \cf8 self
  24097. \f0\b0 \cf4 .groupUploadObjArray.count) % _onceSendNum == \cf7 0\cf4 ) \{\
  24098. \f2\b \cf8 if
  24099. \f0\b0 \cf4 (_groupSendType == groupsend_msgType_image) \{\
  24100. [
  24101. \f2\b \cf8 self
  24102. \f0\b0 \cf4 sendPhotos:
  24103. \f2\b \cf8 self
  24104. \f0\b0 \cf4 .groupUploadObjArray withOriginal:_isOriginal];\
  24105. \}
  24106. \f2\b \cf8 else
  24107. \f0\b0 \cf4
  24108. \f2\b \cf8 if
  24109. \f0\b0 \cf4 (_groupSendType == groupsend_msgType_video)\{\
  24110. [
  24111. \f2\b \cf8 self
  24112. \f0\b0 \cf4 sendMedias:
  24113. \f2\b \cf8 self
  24114. \f0\b0 \cf4 .groupUploadObjArray isSave:_isOriginal];\
  24115. \}
  24116. \f2\b \cf8 else
  24117. \f0\b0 \cf4
  24118. \f2\b \cf8 if
  24119. \f0\b0 \cf4 (_groupSendType == groupsend_msgType_audio)\{\
  24120. [
  24121. \f2\b \cf8 self
  24122. \f0\b0 \cf4 sendVoices:
  24123. \f2\b \cf8 self
  24124. \f0\b0 \cf4 .groupUploadObjArray];\
  24125. \}
  24126. \f2\b \cf8 else
  24127. \f0\b0 \cf4
  24128. \f2\b \cf8 if
  24129. \f0\b0 \cf4 (_groupSendType == groupsend_msgType_file)\{\
  24130. [
  24131. \f2\b \cf8 self
  24132. \f0\b0 \cf4 sendFiles:
  24133. \f2\b \cf8 self
  24134. \f0\b0 \cf4 .groupUploadObjArray];\
  24135. \}
  24136. \f2\b \cf8 else
  24137. \f0\b0 \cf4
  24138. \f2\b \cf8 if
  24139. \f0\b0 \cf4 (_groupSendType == groupsend_msgType_imagesAndVideos)\{\
  24140. [
  24141. \f2\b \cf8 self
  24142. \f0\b0 \cf4 sendImagesAndVideos:
  24143. \f2\b \cf8 self
  24144. \f0\b0 \cf4 .imgsAndVideosDic];\
  24145. \}\
  24146. \}\
  24147. \}\
  24148. \}\
  24149. \cf2 //\cf4 \
  24150. \cf2 //\cf4 \
  24151. \cf2 //\cf4 \
  24152. \f2\b \cf8 @end
  24153. \f0\b0 \cf4 \
  24154. }