12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361 |
- /*!
- * ngCordova
- * v0.1.27-alpha
- * Copyright 2015 Drifty Co. http://drifty.com/
- * See LICENSE in this repository for license information
- */
- (function(){
- angular.module('ngCordova', [
- 'ngCordova.plugins'
- ]);
- // install : cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-3dtouch.git
- // link : https://github.com/EddyVerbruggen/cordova-plugin-3dtouch
- angular.module('ngCordova.plugins.3dtouch', [])
- .factory('$cordova3DTouch', ['$q', function($q) {
- var quickActions = [];
- var quickActionHandler = {};
- var createQuickActionHandler = function(quickActionHandler) {
- return function (payload) {
- for (var key in quickActionHandler) {
- if (payload.type === key) {
- quickActionHandler[key]();
- }
- }
- };
- };
- return {
- /*
- * Checks if Cordova 3D touch is present and loaded
- *
- * @return promise
- */
- isAvailable: function () {
- var deferred = $q.defer();
- if (!window.cordova) {
- deferred.reject('Not supported in browser');
- } else {
- if (!window.ThreeDeeTouch) {
- deferred.reject('Could not find 3D touch plugin');
- } else {
- window.ThreeDeeTouch.isAvailable(function (value) {
- deferred.resolve(value);
- }, function (err) {
- deferred.reject(err);
- });
- }
- }
- return deferred.promise;
- },
- /*
- * Add a quick action to menu
- *
- * @param string type
- * @param string title
- * @param string iconType (optional)
- * @param string subtitle (optional)
- * @param function callback (optional)
- * @return promise
- */
- addQuickAction: function(type, title, iconType, iconTemplate, subtitle, callback) {
- var deferred = $q.defer();
- var quickAction = {
- type: type,
- title: title,
- subtitle: subtitle
- };
- if (iconType) {
- quickAction.iconType = iconType;
- }
- if (iconTemplate) {
- quickAction.iconTemplate = iconTemplate;
- }
- this.isAvailable().then(function() {
- quickActions.push(quickAction);
- quickActionHandler[type] = callback;
- window.ThreeDeeTouch.configureQuickActions(quickActions);
- window.ThreeDeeTouch.onHomeIconPressed = createQuickActionHandler(quickActionHandler);
- deferred.resolve(quickActions);
- },
- function(err) {
- deferred.reject(err);
- });
- return deferred.promise;
- },
- /*
- * Add a quick action handler. Used for static quick actions
- *
- * @param string type
- * @param function callback
- * @return promise
- */
- addQuickActionHandler: function(type, callback) {
- var deferred = $q.defer();
- this.isAvailable().then(function() {
- quickActionHandler[type] = callback;
- window.ThreeDeeTouch.onHomeIconPressed = createQuickActionHandler(quickActionHandler);
- deferred.resolve(true);
- },
- function(err) {
- deferred.reject(err);
- });
- return deferred.promise;
- },
- /*
- * Enable link preview popup when force touch is appled to link elements
- *
- * @return bool
- */
- enableLinkPreview: function() {
- var deferred = $q.defer();
- this.isAvailable().then(function() {
- window.ThreeDeeTouch.enableLinkPreview();
- deferred.resolve(true);
- },
- function(err) {
- deferred.reject(err);
- });
- return deferred.promise;
- },
- /*
- * Add a hanlder function for force touch events,
- *
- * @param function callback
- * @return promise
- */
- addForceTouchHandler: function(callback) {
- var deferred = $q.defer();
- this.isAvailable().then(function() {
- window.ThreeDeeTouch.watchForceTouches(callback);
- deferred.resolve(true);
- },
- function(err) {
- deferred.reject(err);
- });
- return deferred.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-actionsheet.git
- // link : https://github.com/EddyVerbruggen/cordova-plugin-actionsheet
- angular.module('ngCordova.plugins.actionSheet', [])
- .factory('$cordovaActionSheet', ['$q', '$window', function ($q, $window) {
- return {
- show: function (options) {
- var q = $q.defer();
- $window.plugins.actionsheet.show(options, function (result) {
- q.resolve(result);
- });
- return q.promise;
- },
- hide: function () {
- return $window.plugins.actionsheet.hide();
- }
- };
- }]);
- // install : cordova plugin add https://github.com/floatinghotpot/cordova-plugin-admob.git
- // link : https://github.com/floatinghotpot/cordova-plugin-admob
- angular.module('ngCordova.plugins.adMob', [])
- .factory('$cordovaAdMob', ['$q', '$window', function ($q, $window) {
- return {
- createBannerView: function (options) {
- var d = $q.defer();
- $window.plugins.AdMob.createBannerView(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- createInterstitialView: function (options) {
- var d = $q.defer();
- $window.plugins.AdMob.createInterstitialView(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- requestAd: function (options) {
- var d = $q.defer();
- $window.plugins.AdMob.requestAd(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showAd: function (options) {
- var d = $q.defer();
- $window.plugins.AdMob.showAd(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- requestInterstitialAd: function (options) {
- var d = $q.defer();
- $window.plugins.AdMob.requestInterstitialAd(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/ohh2ahh/AppAvailability.git
- // link : https://github.com/ohh2ahh/AppAvailability
- /* globals appAvailability: true */
- angular.module('ngCordova.plugins.appAvailability', [])
- .factory('$cordovaAppAvailability', ['$q', function ($q) {
- return {
- check: function (urlScheme) {
- var q = $q.defer();
- appAvailability.check(urlScheme, function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/pushandplay/cordova-plugin-apprate.git
- // link : https://github.com/pushandplay/cordova-plugin-apprate
- /* globals AppRate: true */
- angular.module('ngCordova.plugins.appRate', [])
- .provider('$cordovaAppRate', [function () {
- /**
- * Set defaults settings to AppRate
- *
- * @param {Object} defaults - AppRate default settings
- * @param {string} defaults.language
- * @param {string} defaults.appName
- * @param {boolean} defaults.promptForNewVersion
- * @param {boolean} defaults.openStoreInApp
- * @param {number} defaults.usesUntilPrompt
- * @param {boolean} defaults.useCustomRateDialog
- * @param {string} defaults.iosURL
- * @param {string} defaults.androidURL
- * @param {string} defaults.blackberryURL
- * @param {string} defaults.windowsURL
- */
- this.setPreferences = function (defaults) {
- if (!defaults || !angular.isObject(defaults)) {
- return;
- }
- AppRate.preferences.useLanguage = defaults.language || null;
- AppRate.preferences.displayAppName = defaults.appName || '';
- AppRate.preferences.promptAgainForEachNewVersion = defaults.promptForNewVersion || true;
- AppRate.preferences.openStoreInApp = defaults.openStoreInApp || false;
- AppRate.preferences.usesUntilPrompt = defaults.usesUntilPrompt || 3;
- AppRate.preferences.useCustomRateDialog = defaults.useCustomRateDialog || false;
- AppRate.preferences.storeAppURL.ios = defaults.iosURL || null;
- AppRate.preferences.storeAppURL.android = defaults.androidURL || null;
- AppRate.preferences.storeAppURL.blackberry = defaults.blackberryURL || null;
- AppRate.preferences.storeAppURL.windows8 = defaults.windowsURL || null;
- };
- /**
- * Set custom locale
- *
- * @param {Object} customObj
- * @param {string} customObj.title
- * @param {string} customObj.message
- * @param {string} customObj.cancelButtonLabel
- * @param {string} customObj.laterButtonLabel
- * @param {string} customObj.rateButtonLabel
- */
- this.setCustomLocale = function (customObj) {
- var strings = {
- title: 'Rate %@',
- message: 'If you enjoy using %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!',
- cancelButtonLabel: 'No, Thanks',
- laterButtonLabel: 'Remind Me Later',
- rateButtonLabel: 'Rate It Now'
- };
- strings = angular.extend(strings, customObj);
- AppRate.preferences.customLocale = strings;
- };
- this.$get = ['$q', function ($q) {
- return {
- promptForRating: function (immediate) {
- var q = $q.defer();
- var prompt = AppRate.promptForRating(immediate);
- q.resolve(prompt);
- return q.promise;
- },
- navigateToAppStore: function () {
- var q = $q.defer();
- var navigate = AppRate.navigateToAppStore();
- q.resolve(navigate);
- return q.promise;
- },
- onButtonClicked: function (cb) {
- AppRate.preferences.callbacks.onButtonClicked = cb.bind(this);
- },
- onRateDialogShow: function (cb) {
- AppRate.preferences.callbacks.onRateDialogShow = cb.bind(this);
- }
- };
- }];
- }]);
- // install : cordova plugin add https://github.com/whiteoctober/cordova-plugin-app-version.git
- // link : https://github.com/whiteoctober/cordova-plugin-app-version
- angular.module('ngCordova.plugins.appVersion', [])
- .factory('$cordovaAppVersion', ['$q', function ($q) {
- return {
- getAppName: function () {
- var q = $q.defer();
- cordova.getAppVersion.getAppName(function (name) {
- q.resolve(name);
- });
- return q.promise;
- },
- getPackageName: function () {
- var q = $q.defer();
- cordova.getAppVersion.getPackageName(function (pack) {
- q.resolve(pack);
- });
- return q.promise;
- },
- getVersionNumber: function () {
- var q = $q.defer();
- cordova.getAppVersion.getVersionNumber(function (version) {
- q.resolve(version);
- });
- return q.promise;
- },
- getVersionCode: function () {
- var q = $q.defer();
- cordova.getAppVersion.getVersionCode(function (code) {
- q.resolve(code);
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/christocracy/cordova-plugin-background-geolocation.git
- // link : https://github.com/christocracy/cordova-plugin-background-geolocation
- angular.module('ngCordova.plugins.backgroundGeolocation', [])
- .factory('$cordovaBackgroundGeolocation', ['$q', '$window', function ($q, $window) {
- return {
- init: function () {
- $window.navigator.geolocation.getCurrentPosition(function (location) {
- return location;
- });
- },
- configure: function (options) {
- this.init();
- var q = $q.defer();
- $window.plugins.backgroundGeoLocation.configure(
- function (result) {
- q.notify(result);
- $window.plugins.backgroundGeoLocation.finish();
- },
- function (err) {
- q.reject(err);
- }, options);
- this.start();
- return q.promise;
- },
- start: function () {
- var q = $q.defer();
- $window.plugins.backgroundGeoLocation.start(
- function (result) {
- q.resolve(result);
- },
- function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- stop: function () {
- var q = $q.defer();
- $window.plugins.backgroundGeoLocation.stop(
- function (result) {
- q.resolve(result);
- },
- function (err) {
- q.reject(err);
- });
- return q.promise;
- }
- };
- }
- ]);
- // install : cordova plugin add https://github.com/katzer/cordova-plugin-badge.git
- // link : https://github.com/katzer/cordova-plugin-badge
- angular.module('ngCordova.plugins.badge', [])
- .factory('$cordovaBadge', ['$q', function ($q) {
- return {
- hasPermission: function () {
- var q = $q.defer();
- cordova.plugins.notification.badge.hasPermission(function (permission) {
- if (permission) {
- q.resolve(true);
- } else {
- q.reject('You do not have permission');
- }
- });
- return q.promise;
- },
- promptForPermission: function () {
- return cordova.plugins.notification.badge.promptForPermission();
- },
- set: function (badge, callback, scope) {
- var q = $q.defer();
- cordova.plugins.notification.badge.hasPermission(function (permission) {
- if (permission) {
- q.resolve(
- cordova.plugins.notification.badge.set(badge, callback, scope)
- );
- } else {
- q.reject('You do not have permission to set Badge');
- }
- });
- return q.promise;
- },
- get: function () {
- var q = $q.defer();
- cordova.plugins.notification.badge.hasPermission(function (permission) {
- if (permission) {
- cordova.plugins.notification.badge.get(function (badge) {
- q.resolve(badge);
- });
- } else {
- q.reject('You do not have permission to get Badge');
- }
- });
- return q.promise;
- },
- clear: function (callback, scope) {
- var q = $q.defer();
- cordova.plugins.notification.badge.hasPermission(function (permission) {
- if (permission) {
- q.resolve(cordova.plugins.notification.badge.clear(callback, scope));
- } else {
- q.reject('You do not have permission to clear Badge');
- }
- });
- return q.promise;
- },
- increase: function (count, callback, scope) {
- var q = $q.defer();
- this.hasPermission().then(function (){
- q.resolve(
- cordova.plugins.notification.badge.increase(count, callback, scope)
- );
- }, function (){
- q.reject('You do not have permission to increase Badge');
- }) ;
- return q.promise;
- },
- decrease: function (count, callback, scope) {
- var q = $q.defer();
- this.hasPermission().then(function (){
- q.resolve(
- cordova.plugins.notification.badge.decrease(count, callback, scope)
- );
- }, function (){
- q.reject('You do not have permission to decrease Badge');
- }) ;
- return q.promise;
- },
- configure: function (config) {
- return cordova.plugins.notification.badge.configure(config);
- }
- };
- }]);
- // install : cordova plugin add https://github.com/phonegap/phonegap-plugin-barcodescanner.git
- // link : https://github.com/phonegap/phonegap-plugin-barcodescanner
- angular.module('ngCordova.plugins.barcodeScanner', [])
- .factory('$cordovaBarcodeScanner', ['$q', function ($q) {
- return {
- scan: function (config) {
- var q = $q.defer();
- cordova.plugins.barcodeScanner.scan(function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- }, config);
- return q.promise;
- },
- encode: function (type, data) {
- var q = $q.defer();
- type = type || 'TEXT_TYPE';
- cordova.plugins.barcodeScanner.encode(type, data, function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-battery-status
- // link : https://github.com/apache/cordova-plugin-battery-status
- angular.module('ngCordova.plugins.batteryStatus', [])
- .factory('$cordovaBatteryStatus', ['$rootScope', '$window', '$timeout', function ($rootScope, $window, $timeout) {
- /**
- * @param {string} status
- */
- var batteryStatus = function (status) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaBatteryStatus:status', status);
- });
- };
- /**
- * @param {string} status
- */
- var batteryCritical = function (status) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaBatteryStatus:critical', status);
- });
- };
- /**
- * @param {string} status
- */
- var batteryLow = function (status) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaBatteryStatus:low', status);
- });
- };
- document.addEventListener('deviceready', function () {
- if (navigator.battery) {
- $window.addEventListener('batterystatus', batteryStatus, false);
- $window.addEventListener('batterycritical', batteryCritical, false);
- $window.addEventListener('batterylow', batteryLow, false);
- }
- }, false);
- return true;
- }])
- .run(['$injector', function ($injector) {
- $injector.get('$cordovaBatteryStatus'); //ensure the factory and subsequent event listeners get initialised
- }]);
- // install : cordova plugin add https://github.com/petermetz/cordova-plugin-ibeacon.git
- // link : https://github.com/petermetz/cordova-plugin-ibeacon
- angular.module('ngCordova.plugins.beacon', [])
- .factory('$cordovaBeacon', ['$window', '$rootScope', '$timeout', '$q', function ($window, $rootScope, $timeout, $q) {
- var callbackDidDetermineStateForRegion = null;
- var callbackDidStartMonitoringForRegion = null;
- var callbackDidExitRegion = null;
- var callbackDidEnterRegion = null;
- var callbackDidRangeBeaconsInRegion = null;
- var callbackPeripheralManagerDidStartAdvertising = null;
- var callbackPeripheralManagerDidUpdateState = null;
- var callbackDidChangeAuthorizationStatus = null;
- document.addEventListener('deviceready', function () {
- if ($window.cordova &&
- $window.cordova.plugins &&
- $window.cordova.plugins.locationManager) {
- var delegate = new $window.cordova.plugins.locationManager.Delegate();
- delegate.didDetermineStateForRegion = function (pluginResult) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaBeacon:didDetermineStateForRegion', pluginResult);
- });
- if (callbackDidDetermineStateForRegion) {
- callbackDidDetermineStateForRegion(pluginResult);
- }
- };
- delegate.didStartMonitoringForRegion = function (pluginResult) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaBeacon:didStartMonitoringForRegion', pluginResult);
- });
- if (callbackDidStartMonitoringForRegion) {
- callbackDidStartMonitoringForRegion(pluginResult);
- }
- };
- delegate.didExitRegion = function (pluginResult) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaBeacon:didExitRegion', pluginResult);
- });
- if (callbackDidExitRegion) {
- callbackDidExitRegion(pluginResult);
- }
- };
- delegate.didEnterRegion = function (pluginResult) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaBeacon:didEnterRegion', pluginResult);
- });
- if (callbackDidEnterRegion) {
- callbackDidEnterRegion(pluginResult);
- }
- };
- delegate.didRangeBeaconsInRegion = function (pluginResult) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaBeacon:didRangeBeaconsInRegion', pluginResult);
- });
- if (callbackDidRangeBeaconsInRegion) {
- callbackDidRangeBeaconsInRegion(pluginResult);
- }
- };
- delegate.peripheralManagerDidStartAdvertising = function (pluginResult) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaBeacon:peripheralManagerDidStartAdvertising', pluginResult);
- });
- if (callbackPeripheralManagerDidStartAdvertising) {
- callbackPeripheralManagerDidStartAdvertising(pluginResult);
- }
- };
- delegate.peripheralManagerDidUpdateState = function (pluginResult) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaBeacon:peripheralManagerDidUpdateState', pluginResult);
- });
- if (callbackPeripheralManagerDidUpdateState) {
- callbackPeripheralManagerDidUpdateState(pluginResult);
- }
- };
- delegate.didChangeAuthorizationStatus = function (status) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaBeacon:didChangeAuthorizationStatus', status);
- });
- if (callbackDidChangeAuthorizationStatus) {
- callbackDidChangeAuthorizationStatus(status);
- }
- };
- $window.cordova.plugins.locationManager.setDelegate(delegate);
- }
- }, false);
- return {
- setCallbackDidDetermineStateForRegion: function (callback) {
- callbackDidDetermineStateForRegion = callback;
- },
- setCallbackDidStartMonitoringForRegion: function (callback) {
- callbackDidStartMonitoringForRegion = callback;
- },
- setCallbackDidExitRegion: function (callback) {
- callbackDidExitRegion = callback;
- },
- setCallbackDidEnterRegion: function (callback) {
- callbackDidEnterRegion = callback;
- },
- setCallbackDidRangeBeaconsInRegion: function (callback) {
- callbackDidRangeBeaconsInRegion = callback;
- },
- setCallbackPeripheralManagerDidStartAdvertising: function (callback) {
- callbackPeripheralManagerDidStartAdvertising = callback;
- },
- setCallbackPeripheralManagerDidUpdateState: function (callback) {
- callbackPeripheralManagerDidUpdateState = callback;
- },
- setCallbackDidChangeAuthorizationStatus: function (callback) {
- callbackDidChangeAuthorizationStatus = callback;
- },
- createBeaconRegion: function (identifier, uuid, major, minor, notifyEntryStateOnDisplay) {
- major = major || undefined;
- minor = minor || undefined;
- return new $window.cordova.plugins.locationManager.BeaconRegion(
- identifier,
- uuid,
- major,
- minor,
- notifyEntryStateOnDisplay
- );
- },
- isBluetoothEnabled: function () {
- return $q.when($window.cordova.plugins.locationManager.isBluetoothEnabled());
- },
- enableBluetooth: function () {
- return $q.when($window.cordova.plugins.locationManager.enableBluetooth());
- },
- disableBluetooth: function () {
- return $q.when($window.cordova.plugins.locationManager.disableBluetooth());
- },
- startMonitoringForRegion: function (region) {
- return $q.when($window.cordova.plugins.locationManager.startMonitoringForRegion(region));
- },
- stopMonitoringForRegion: function (region) {
- return $q.when($window.cordova.plugins.locationManager.stopMonitoringForRegion(region));
- },
- requestStateForRegion: function (region) {
- return $q.when($window.cordova.plugins.locationManager.requestStateForRegion(region));
- },
- startRangingBeaconsInRegion: function (region) {
- return $q.when($window.cordova.plugins.locationManager.startRangingBeaconsInRegion(region));
- },
- stopRangingBeaconsInRegion: function (region) {
- return $q.when($window.cordova.plugins.locationManager.stopRangingBeaconsInRegion(region));
- },
- getAuthorizationStatus: function () {
- return $q.when($window.cordova.plugins.locationManager.getAuthorizationStatus());
- },
- requestWhenInUseAuthorization: function () {
- return $q.when($window.cordova.plugins.locationManager.requestWhenInUseAuthorization());
- },
- requestAlwaysAuthorization: function () {
- return $q.when($window.cordova.plugins.locationManager.requestAlwaysAuthorization());
- },
- getMonitoredRegions: function () {
- return $q.when($window.cordova.plugins.locationManager.getMonitoredRegions());
- },
- getRangedRegions: function () {
- return $q.when($window.cordova.plugins.locationManager.getRangedRegions());
- },
- isRangingAvailable: function () {
- return $q.when($window.cordova.plugins.locationManager.isRangingAvailable());
- },
- isMonitoringAvailableForClass: function (region) {
- return $q.when($window.cordova.plugins.locationManager.isMonitoringAvailableForClass(region));
- },
- startAdvertising: function (region, measuredPower) {
- return $q.when($window.cordova.plugins.locationManager.startAdvertising(region, measuredPower));
- },
- stopAdvertising: function () {
- return $q.when($window.cordova.plugins.locationManager.stopAdvertising());
- },
- isAdvertisingAvailable: function () {
- return $q.when($window.cordova.plugins.locationManager.isAdvertisingAvailable());
- },
- isAdvertising: function () {
- return $q.when($window.cordova.plugins.locationManager.isAdvertising());
- },
- disableDebugLogs: function () {
- return $q.when($window.cordova.plugins.locationManager.disableDebugLogs());
- },
- enableDebugNotifications: function () {
- return $q.when($window.cordova.plugins.locationManager.enableDebugNotifications());
- },
- disableDebugNotifications: function () {
- return $q.when($window.cordova.plugins.locationManager.disableDebugNotifications());
- },
- enableDebugLogs: function () {
- return $q.when($window.cordova.plugins.locationManager.enableDebugLogs());
- },
- appendToDeviceLog: function (message) {
- return $q.when($window.cordova.plugins.locationManager.appendToDeviceLog(message));
- }
- };
- }]);
- // install : cordova plugin add https://github.com/don/cordova-plugin-ble-central.git
- // link : https://github.com/don/cordova-plugin-ble-central
- /* globals ble: true */
- angular.module('ngCordova.plugins.ble', [])
- .factory('$cordovaBLE', ['$q', '$timeout', '$log', function ($q, $timeout, $log) {
- return {
- scan: function (services, seconds) {
- var q = $q.defer();
- ble.startScan(services, function (result) {
- q.notify(result);
- }, function (error) {
- q.reject(error);
- });
- $timeout(function () {
- ble.stopScan(function () {
- q.resolve();
- }, function (error) {
- q.reject(error);
- });
- }, seconds*1000);
- return q.promise;
- },
- startScan: function (services, callback, errorCallback) {
- return ble.startScan(services, callback, errorCallback);
- },
- stopScan: function () {
- var q = $q.defer();
- ble.stopScan(function () {
- q.resolve();
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- connect: function (deviceID) {
- var q = $q.defer();
- ble.connect(deviceID, function (result) {
- q.resolve(result);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- disconnect: function (deviceID) {
- var q = $q.defer();
- ble.disconnect(deviceID, function (result) {
- q.resolve(result);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- read: function (deviceID, serviceUUID, characteristicUUID) {
- var q = $q.defer();
- ble.read(deviceID, serviceUUID, characteristicUUID, function (result) {
- q.resolve(result);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- write: function (deviceID, serviceUUID, characteristicUUID, data) {
- var q = $q.defer();
- ble.write(deviceID, serviceUUID, characteristicUUID, data, function (result) {
- q.resolve(result);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- writeWithoutResponse: function (deviceID, serviceUUID, characteristicUUID, data) {
- var q = $q.defer();
- ble.writeWithoutResponse(deviceID, serviceUUID, characteristicUUID, data, function (result) {
- q.resolve(result);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- writeCommand: function (deviceID, serviceUUID, characteristicUUID, data) {
- $log.warning('writeCommand is deprecated, use writeWithoutResponse');
- return this.writeWithoutResponse(deviceID, serviceUUID, characteristicUUID, data);
- },
- startNotification: function (deviceID, serviceUUID, characteristicUUID, callback, errorCallback) {
- return ble.startNotification(deviceID, serviceUUID, characteristicUUID, callback, errorCallback);
- },
- stopNotification: function (deviceID, serviceUUID, characteristicUUID) {
- var q = $q.defer();
- ble.stopNotification(deviceID, serviceUUID, characteristicUUID, function (result) {
- q.resolve(result);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- isConnected: function (deviceID) {
- var q = $q.defer();
- ble.isConnected(deviceID, function (result) {
- q.resolve(result);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- enable: function () {
- var q = $q.defer();
- ble.enable(function (result) {
- q.resolve(result);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- isEnabled: function () {
- var q = $q.defer();
- ble.isEnabled(function (result) {
- q.resolve(result);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/don/BluetoothSerial.git
- // link : https://github.com/don/BluetoothSerial
- angular.module('ngCordova.plugins.bluetoothSerial', [])
- .factory('$cordovaBluetoothSerial', ['$q', '$window', function ($q, $window) {
- return {
- connect: function (address) {
- var q = $q.defer();
- var disconnectionPromise = $q.defer();
- var isConnected = false;
- $window.bluetoothSerial.connect(address, function () {
- isConnected = true;
- q.resolve(disconnectionPromise);
- }, function (error) {
- if(isConnected === false) {
- disconnectionPromise.reject(error);
- }
- q.reject(error);
- });
- return q.promise;
- },
- // not supported on iOS
- connectInsecure: function (address) {
- var q = $q.defer();
- $window.bluetoothSerial.connectInsecure(address, function () {
- q.resolve();
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- disconnect: function () {
- var q = $q.defer();
- $window.bluetoothSerial.disconnect(function () {
- q.resolve();
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- list: function () {
- var q = $q.defer();
- $window.bluetoothSerial.list(function (data) {
- q.resolve(data);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- discoverUnpaired: function () {
- var q = $q.defer();
- $window.bluetoothSerial.discoverUnpaired(function (data) {
- q.resolve(data);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- setDeviceDiscoveredListener: function () {
- var q = $q.defer();
- $window.bluetoothSerial.setDeviceDiscoveredListener(function (data) {
- q.notify(data);
- });
- return q.promise;
- },
- clearDeviceDiscoveredListener: function () {
- $window.bluetoothSerial.clearDeviceDiscoveredListener();
- },
- showBluetoothSettings: function () {
- var q = $q.defer();
- $window.bluetoothSerial.showBluetoothSettings(function () {
- q.resolve();
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- isEnabled: function () {
- var q = $q.defer();
- $window.bluetoothSerial.isEnabled(function () {
- q.resolve();
- }, function () {
- q.reject();
- });
- return q.promise;
- },
- enable: function () {
- var q = $q.defer();
- $window.bluetoothSerial.enable(function () {
- q.resolve();
- }, function () {
- q.reject();
- });
- return q.promise;
- },
- isConnected: function () {
- var q = $q.defer();
- $window.bluetoothSerial.isConnected(function () {
- q.resolve();
- }, function () {
- q.reject();
- });
- return q.promise;
- },
- available: function () {
- var q = $q.defer();
- $window.bluetoothSerial.available(function (data) {
- q.resolve(data);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- read: function () {
- var q = $q.defer();
- $window.bluetoothSerial.read(function (data) {
- q.resolve(data);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- readUntil: function (delimiter) {
- var q = $q.defer();
- $window.bluetoothSerial.readUntil(delimiter, function (data) {
- q.resolve(data);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- write: function (data) {
- var q = $q.defer();
- $window.bluetoothSerial.write(data, function () {
- q.resolve();
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- subscribe: function (delimiter) {
- var q = $q.defer();
- $window.bluetoothSerial.subscribe(delimiter, function (data) {
- q.notify(data);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- subscribeRawData: function () {
- var q = $q.defer();
- $window.bluetoothSerial.subscribeRawData(function (data) {
- q.notify(data);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- unsubscribe: function () {
- var q = $q.defer();
- $window.bluetoothSerial.unsubscribe(function () {
- q.resolve();
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- unsubscribeRawData: function () {
- var q = $q.defer();
- $window.bluetoothSerial.unsubscribeRawData(function () {
- q.resolve();
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- clear: function () {
- var q = $q.defer();
- $window.bluetoothSerial.clear(function () {
- q.resolve();
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- readRSSI: function () {
- var q = $q.defer();
- $window.bluetoothSerial.readRSSI(function (data) {
- q.resolve(data);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/fiscal-cliff/phonegap-plugin-brightness.git
- // link : https://github.com/fiscal-cliff/phonegap-plugin-brightness
- angular.module('ngCordova.plugins.brightness', [])
- .factory('$cordovaBrightness', ['$q', '$window', function ($q, $window) {
- return {
- get: function () {
- var q = $q.defer();
- if (!$window.cordova) {
- q.reject('Not supported without cordova.js');
- } else {
- $window.cordova.plugins.brightness.getBrightness(function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
- }
- return q.promise;
- },
- set: function (data) {
- var q = $q.defer();
- if (!$window.cordova) {
- q.reject('Not supported without cordova.js');
- } else {
- $window.cordova.plugins.brightness.setBrightness(data, function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
- }
- return q.promise;
- },
- setKeepScreenOn: function (bool) {
- var q = $q.defer();
- if (!$window.cordova) {
- q.reject('Not supported without cordova.js');
- } else {
- $window.cordova.plugins.brightness.setKeepScreenOn(bool, function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
- }
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/EddyVerbruggen/Calendar-PhoneGap-Plugin.git
- // link : https://github.com/EddyVerbruggen/Calendar-PhoneGap-Plugin
- angular.module('ngCordova.plugins.calendar', [])
- .factory('$cordovaCalendar', ['$q', '$window', function ($q, $window) {
-
- return {
- createCalendar: function (options) {
- var d = $q.defer(),
- createCalOptions = $window.plugins.calendar.getCreateCalendarOptions();
- if (typeof options === 'string') {
- createCalOptions.calendarName = options;
- } else {
- createCalOptions = angular.extend(createCalOptions, options);
- }
- $window.plugins.calendar.createCalendar(createCalOptions, function (message) {
- d.resolve(message);
- }, function (error) {
- d.reject(error);
- });
- return d.promise;
- },
- deleteCalendar: function (calendarName) {
- var d = $q.defer();
- $window.plugins.calendar.deleteCalendar(calendarName, function (message) {
- d.resolve(message);
- }, function (error) {
- d.reject(error);
- });
- return d.promise;
- },
- createEvent: function (options) {
- var d = $q.defer(),
- defaultOptions = {
- title: null,
- location: null,
- notes: null,
- startDate: null,
- endDate: null
- };
- defaultOptions = angular.extend(defaultOptions, options);
- $window.plugins.calendar.createEvent(
- defaultOptions.title,
- defaultOptions.location,
- defaultOptions.notes,
- new Date(defaultOptions.startDate),
- new Date(defaultOptions.endDate),
- function (message) {
- d.resolve(message);
- }, function (error) {
- d.reject(error);
- }
- );
- return d.promise;
- },
- createEventWithOptions: function (options) {
- var d = $q.defer(),
- defaultOptionKeys = [],
- calOptions = window.plugins.calendar.getCalendarOptions(),
- defaultOptions = {
- title: null,
- location: null,
- notes: null,
- startDate: null,
- endDate: null
- };
- defaultOptionKeys = Object.keys(defaultOptions);
- for (var key in options) {
- if (defaultOptionKeys.indexOf(key) === -1) {
- calOptions[key] = options[key];
- } else {
- defaultOptions[key] = options[key];
- }
- }
- $window.plugins.calendar.createEventWithOptions(
- defaultOptions.title,
- defaultOptions.location,
- defaultOptions.notes,
- new Date(defaultOptions.startDate),
- new Date(defaultOptions.endDate),
- calOptions,
- function (message) {
- d.resolve(message);
- }, function (error) {
- d.reject(error);
- }
- );
- return d.promise;
- },
- createEventInteractively: function (options) {
- var d = $q.defer(),
- defaultOptions = {
- title: null,
- location: null,
- notes: null,
- startDate: null,
- endDate: null
- };
- defaultOptions = angular.extend(defaultOptions, options);
- $window.plugins.calendar.createEventInteractively(
- defaultOptions.title,
- defaultOptions.location,
- defaultOptions.notes,
- new Date(defaultOptions.startDate),
- new Date(defaultOptions.endDate),
- function (message) {
- d.resolve(message);
- }, function (error) {
- d.reject(error);
- }
- );
- return d.promise;
- },
- createEventInNamedCalendar: function (options) {
- var d = $q.defer(),
- defaultOptions = {
- title: null,
- location: null,
- notes: null,
- startDate: null,
- endDate: null,
- calendarName: null
- };
- defaultOptions = angular.extend(defaultOptions, options);
- $window.plugins.calendar.createEventInNamedCalendar(
- defaultOptions.title,
- defaultOptions.location,
- defaultOptions.notes,
- new Date(defaultOptions.startDate),
- new Date(defaultOptions.endDate),
- defaultOptions.calendarName,
- function (message) {
- d.resolve(message);
- }, function (error) {
- d.reject(error);
- }
- );
- return d.promise;
- },
- findEvent: function (options) {
- var d = $q.defer(),
- defaultOptions = {
- title: null,
- location: null,
- notes: null,
- startDate: null,
- endDate: null
- };
- defaultOptions = angular.extend(defaultOptions, options);
- $window.plugins.calendar.findEvent(
- defaultOptions.title,
- defaultOptions.location,
- defaultOptions.notes,
- new Date(defaultOptions.startDate),
- new Date(defaultOptions.endDate),
- function (foundEvent) {
- d.resolve(foundEvent);
- }, function (error) {
- d.reject(error);
- }
- );
- return d.promise;
- },
- listEventsInRange: function (startDate, endDate) {
- var d = $q.defer();
- $window.plugins.calendar.listEventsInRange(startDate, endDate, function (events) {
- d.resolve(events);
- }, function (error) {
- d.reject(error);
- });
- return d.promise;
- },
- listCalendars: function () {
- var d = $q.defer();
- $window.plugins.calendar.listCalendars(function (calendars) {
- d.resolve(calendars);
- }, function (error) {
- d.reject(error);
- });
- return d.promise;
- },
- findAllEventsInNamedCalendar: function (calendarName) {
- var d = $q.defer();
- $window.plugins.calendar.findAllEventsInNamedCalendar(calendarName, function (events) {
- d.resolve(events);
- }, function (error) {
- d.reject(error);
- });
- return d.promise;
- },
- modifyEvent: function (options) {
- var d = $q.defer(),
- defaultOptions = {
- title: null,
- location: null,
- notes: null,
- startDate: null,
- endDate: null,
- newTitle: null,
- newLocation: null,
- newNotes: null,
- newStartDate: null,
- newEndDate: null
- };
- defaultOptions = angular.extend(defaultOptions, options);
- $window.plugins.calendar.modifyEvent(
- defaultOptions.title,
- defaultOptions.location,
- defaultOptions.notes,
- new Date(defaultOptions.startDate),
- new Date(defaultOptions.endDate),
- defaultOptions.newTitle,
- defaultOptions.newLocation,
- defaultOptions.newNotes,
- new Date(defaultOptions.newStartDate),
- new Date(defaultOptions.newEndDate),
- function (message) {
- d.resolve(message);
- }, function (error) {
- d.reject(error);
- }
- );
- return d.promise;
- },
- deleteEvent: function (options) {
- var d = $q.defer(),
- defaultOptions = {
- newTitle: null,
- location: null,
- notes: null,
- startDate: null,
- endDate: null
- };
- defaultOptions = angular.extend(defaultOptions, options);
- $window.plugins.calendar.deleteEvent(
- defaultOptions.newTitle,
- defaultOptions.location,
- defaultOptions.notes,
- new Date(defaultOptions.startDate),
- new Date(defaultOptions.endDate),
- function (message) {
- d.resolve(message);
- }, function (error) {
- d.reject(error);
- }
- );
- return d.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-camera
- // link : https://github.com/apache/cordova-plugin-camera
- angular.module('ngCordova.plugins.camera', [])
- .factory('$cordovaCamera', ['$q', function ($q) {
- return {
- getPicture: function (options) {
- var q = $q.defer();
- if (!navigator.camera) {
- q.resolve(null);
- return q.promise;
- }
- navigator.camera.getPicture(function (imageData) {
- q.resolve(imageData);
- }, function (err) {
- q.reject(err);
- }, options);
- return q.promise;
- },
- cleanup: function () {
- var q = $q.defer();
- navigator.camera.cleanup(function () {
- q.resolve();
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-media-capture
- // link : https://github.com/apache/cordova-plugin-media-capture
- angular.module('ngCordova.plugins.capture', [])
- .factory('$cordovaCapture', ['$q', function ($q) {
- return {
- captureAudio: function (options) {
- var q = $q.defer();
- if (!navigator.device.capture) {
- q.resolve(null);
- return q.promise;
- }
- navigator.device.capture.captureAudio(function (audioData) {
- q.resolve(audioData);
- }, function (err) {
- q.reject(err);
- }, options);
- return q.promise;
- },
- captureImage: function (options) {
- var q = $q.defer();
- if (!navigator.device.capture) {
- q.resolve(null);
- return q.promise;
- }
- navigator.device.capture.captureImage(function (imageData) {
- q.resolve(imageData);
- }, function (err) {
- q.reject(err);
- }, options);
- return q.promise;
- },
- captureVideo: function (options) {
- var q = $q.defer();
- if (!navigator.device.capture) {
- q.resolve(null);
- return q.promise;
- }
- navigator.device.capture.captureVideo(function (videoData) {
- q.resolve(videoData);
- }, function (err) {
- q.reject(err);
- }, options);
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/vkeepe/card.io.git
- // link : https://github.com/vkeepe/card.io.git
- /* globals CardIO: true */
- angular.module('ngCordova.plugins.cardIO', [])
- .provider(
- '$cordovaNgCardIO', [function () {
- /**
- * Default array of response data from cardIO scan card
- */
- var defaultRespFields = [
- 'card_type',
- 'redacted_card_number',
- 'card_number',
- 'expiry_month',
- 'expiry_year',
- 'short_expiry_year',
- 'cvv',
- 'zip'
- ];
- /**
- * Default config for cardIO scan function
- */
- var defaultScanConfig = {
- 'expiry': true,
- 'cvv': true,
- 'zip': false,
- 'suppressManual': false,
- 'suppressConfirm': false,
- 'hideLogo': true
- };
- /**
- * Configuring defaultRespFields using $cordovaNgCardIOProvider
- *
- */
- this.setCardIOResponseFields = function (fields) {
- if (!fields || !angular.isArray(fields)) {
- return;
- }
- defaultRespFields = fields;
- };
- /**
- *
- * Configuring defaultScanConfig using $cordovaNgCardIOProvider
- */
- this.setScanerConfig = function (config) {
- if (!config || !angular.isObject(config)) {
- return;
- }
- defaultScanConfig.expiry = config.expiry || true;
- defaultScanConfig.cvv = config.cvv || true;
- defaultScanConfig.zip = config.zip || false;
- defaultScanConfig.suppressManual = config.suppressManual || false;
- defaultScanConfig.suppressConfirm = config.suppressConfirm || false;
- defaultScanConfig.hideLogo = config.hideLogo || true;
- };
- /**
- * Function scanCard for $cordovaNgCardIO service to make scan of card
- *
- */
- this.$get = ['$q', function ($q) {
- return {
- scanCard: function () {
- var deferred = $q.defer();
- CardIO.scan(
- defaultScanConfig,
- function (response) {
- if (response === null) {
- deferred.reject(null);
- } else {
- var respData = {};
- for (
- var i = 0, len = defaultRespFields.length; i < len; i++) {
- var field = defaultRespFields[i];
- if (field === 'short_expiry_year') {
- respData[field] = String(response.expiry_year).substr( // jshint ignore:line
- 2, 2
- ) || '';
- } else {
- respData[field] = response[field] || '';
- }
- }
- deferred.resolve(respData);
- }
- },
- function () {
- deferred.reject(null);
- }
- );
- return deferred.promise;
- }
- };
- }];
- }]
- );
- // install : cordova plugin add https://github.com/VersoSolutions/CordovaClipboard.git
- // link : https://github.com/VersoSolutions/CordovaClipboard
- angular.module('ngCordova.plugins.clipboard', [])
- .factory('$cordovaClipboard', ['$q', '$window', function ($q, $window) {
- return {
- copy: function (text) {
- var q = $q.defer();
- $window.cordova.plugins.clipboard.copy(text,
- function () {
- q.resolve();
- }, function () {
- q.reject();
- });
- return q.promise;
- },
- paste: function () {
- var q = $q.defer();
- $window.cordova.plugins.clipboard.paste(function (text) {
- q.resolve(text);
- }, function () {
- q.reject();
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-contacts
- // link : https://github.com/apache/cordova-plugin-contacts
- angular.module('ngCordova.plugins.contacts', [])
- .factory('$cordovaContacts', ['$q', function ($q) {
- return {
- save: function (contact) {
- var q = $q.defer();
- var deviceContact = navigator.contacts.create(contact);
- deviceContact.save(function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- remove: function (contact) {
- var q = $q.defer();
- var deviceContact = navigator.contacts.create(contact);
- deviceContact.remove(function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- clone: function (contact) {
- var deviceContact = navigator.contacts.create(contact);
- return deviceContact.clone(contact);
- },
- find: function (options) {
- var q = $q.defer();
- var fields = options.fields || ['id', 'displayName'];
- delete options.fields;
- if (Object.keys(options).length === 0) {
- navigator.contacts.find(fields, function (results) {
- q.resolve(results);
- },function (err) {
- q.reject(err);
- });
- }
- else {
- navigator.contacts.find(fields, function (results) {
- q.resolve(results);
- }, function (err) {
- q.reject(err);
- }, options);
- }
- return q.promise;
- },
- pickContact: function () {
- var q = $q.defer();
- navigator.contacts.pickContact(function (contact) {
- q.resolve(contact);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- }
- // TODO: method to set / get ContactAddress
- // TODO: method to set / get ContactError
- // TODO: method to set / get ContactField
- // TODO: method to set / get ContactName
- // TODO: method to set / get ContactOrganization
- };
- }]);
- // install : cordova plugin add https://github.com/VitaliiBlagodir/cordova-plugin-datepicker.git
- // link : https://github.com/VitaliiBlagodir/cordova-plugin-datepicker
- angular.module('ngCordova.plugins.datePicker', [])
- .factory('$cordovaDatePicker', ['$window', '$q', function ($window, $q) {
-
- return {
- show: function (options) {
- var q = $q.defer();
- options = options || {date: new Date(), mode: 'date'};
- $window.datePicker.show(options, function (date) {
- q.resolve(date);
- }, function (error){
- q.reject(error);
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-device
- // link : https://github.com/apache/cordova-plugin-device
- /* globals device: true */
- angular.module('ngCordova.plugins.device', [])
- .factory('$cordovaDevice', [function () {
- return {
- /**
- * Returns the whole device object.
- * @see https://github.com/apache/cordova-plugin-device
- * @returns {Object} The device object.
- */
- getDevice: function () {
- return device;
- },
- /**
- * Returns the Cordova version.
- * @see https://github.com/apache/cordova-plugin-device#devicecordova
- * @returns {String} The Cordova version.
- */
- getCordova: function () {
- return device.cordova;
- },
- /**
- * Returns the name of the device's model or product.
- * @see https://github.com/apache/cordova-plugin-device#devicemodel
- * @returns {String} The name of the device's model or product.
- */
- getModel: function () {
- return device.model;
- },
- /**
- * @deprecated device.name is deprecated as of version 2.3.0. Use device.model instead.
- * @returns {String}
- */
- getName: function () {
- return device.name;
- },
- /**
- * Returns the device's operating system name.
- * @see https://github.com/apache/cordova-plugin-device#deviceplatform
- * @returns {String} The device's operating system name.
- */
- getPlatform: function () {
- return device.platform;
- },
- /**
- * Returns the device's Universally Unique Identifier.
- * @see https://github.com/apache/cordova-plugin-device#deviceuuid
- * @returns {String} The device's Universally Unique Identifier
- */
- getUUID: function () {
- return device.uuid;
- },
- /**
- * Returns the operating system version.
- * @see https://github.com/apache/cordova-plugin-device#deviceversion
- * @returns {String}
- */
- getVersion: function () {
- return device.version;
- },
- /**
- * Returns the device manufacturer.
- * @returns {String}
- */
- getManufacturer: function () {
- return device.manufacturer;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-device-motion
- // link : https://github.com/apache/cordova-plugin-device-motion
- angular.module('ngCordova.plugins.deviceMotion', [])
- .factory('$cordovaDeviceMotion', ['$q', function ($q) {
- return {
- getCurrentAcceleration: function () {
- var q = $q.defer();
- if (angular.isUndefined(navigator.accelerometer) ||
- !angular.isFunction(navigator.accelerometer.getCurrentAcceleration)) {
- q.reject('Device do not support watchAcceleration');
- return q.promise;
- }
- navigator.accelerometer.getCurrentAcceleration(function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- watchAcceleration: function (options) {
- var q = $q.defer();
- if (angular.isUndefined(navigator.accelerometer) ||
- !angular.isFunction(navigator.accelerometer.watchAcceleration)) {
- q.reject('Device do not support watchAcceleration');
- return q.promise;
- }
- var watchID = navigator.accelerometer.watchAcceleration(function (result) {
- q.notify(result);
- }, function (err) {
- q.reject(err);
- }, options);
- q.promise.cancel = function () {
- navigator.accelerometer.clearWatch(watchID);
- };
- q.promise.clearWatch = function (id) {
- navigator.accelerometer.clearWatch(id || watchID);
- };
- q.promise.watchID = watchID;
- return q.promise;
- },
- clearWatch: function (watchID) {
- return navigator.accelerometer.clearWatch(watchID);
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-device-orientation
- // link : https://github.com/apache/cordova-plugin-device-orientation
- angular.module('ngCordova.plugins.deviceOrientation', [])
- .factory('$cordovaDeviceOrientation', ['$q', function ($q) {
- var defaultOptions = {
- frequency: 3000 // every 3s
- };
-
- return {
- getCurrentHeading: function () {
- var q = $q.defer();
- if(!navigator.compass) {
- q.reject('No compass on Device');
- return q.promise;
- }
- navigator.compass.getCurrentHeading(function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- watchHeading: function (options) {
- var q = $q.defer();
- if(!navigator.compass) {
- q.reject('No compass on Device');
- return q.promise;
- }
- var _options = angular.extend(defaultOptions, options);
- var watchID = navigator.compass.watchHeading(function (result) {
- q.notify(result);
- }, function (err) {
- q.reject(err);
- }, _options);
- q.promise.cancel = function () {
- navigator.compass.clearWatch(watchID);
- };
- q.promise.clearWatch = function (id) {
- navigator.compass.clearWatch(id || watchID);
- };
- q.promise.watchID = watchID;
- return q.promise;
- },
- clearWatch: function (watchID) {
- return navigator.compass.clearWatch(watchID);
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-dialogs
- // link : https://github.com/apache/cordova-plugin-dialogs
- angular.module('ngCordova.plugins.dialogs', [])
- .factory('$cordovaDialogs', ['$q', '$window', function ($q, $window) {
- return {
- alert: function (message, title, buttonName) {
- var q = $q.defer();
- if (!$window.navigator.notification) {
- $window.alert(message);
- q.resolve();
- } else {
- navigator.notification.alert(message, function () {
- q.resolve();
- }, title, buttonName);
- }
- return q.promise;
- },
- confirm: function (message, title, buttonLabels) {
- var q = $q.defer();
- if (!$window.navigator.notification) {
- if ($window.confirm(message)) {
- q.resolve(1);
- } else {
- q.resolve(2);
- }
- } else {
- navigator.notification.confirm(message, function (buttonIndex) {
- q.resolve(buttonIndex);
- }, title, buttonLabels);
- }
- return q.promise;
- },
- prompt: function (message, title, buttonLabels, defaultText) {
- var q = $q.defer();
- if (!$window.navigator.notification) {
- var res = $window.prompt(message, defaultText);
- if (res !== null) {
- q.resolve({input1: res, buttonIndex: 1});
- } else {
- q.resolve({input1: res, buttonIndex: 2});
- }
- } else {
- navigator.notification.prompt(message, function (result) {
- q.resolve(result);
- }, title, buttonLabels, defaultText);
- }
- return q.promise;
- },
- beep: function (times) {
- return navigator.notification.beep(times);
- },
- activityStart: function (message, title) {
- var q = $q.defer();
- if (cordova.platformId === 'android') {
- navigator.notification.activityStart(title, message);
- q.resolve();
- } else {
- q.reject(message, title);
- }
-
- return q.promise;
- },
- activityStop: function () {
- var q = $q.defer();
- if (cordova.platformId === 'android') {
- navigator.notification.activityStop();
- q.resolve();
- } else {
- q.reject();
- }
-
- return q.promise;
- },
- progressStart: function (message, title) {
- var q = $q.defer();
- if (cordova.platformId === 'android') {
- navigator.notification.progressStart(title, message);
- q.resolve();
- } else {
- q.reject(message, title);
- }
-
- return q.promise;
- },
- progressStop: function () {
- var q = $q.defer();
- if (cordova.platformId === 'android') {
- navigator.notification.progressStop();
- q.resolve();
- } else {
- q.reject();
- }
-
- return q.promise;
- },
- progressValue: function (value) {
- var q = $q.defer();
- if (cordova.platformId === 'android') {
- navigator.notification.progressValue(value);
- q.resolve();
- } else {
- q.reject(value);
- }
-
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/katzer/cordova-plugin-email-composer.git
- // link : https://github.com/katzer/cordova-plugin-email-composer
- angular.module('ngCordova.plugins.emailComposer', [])
- .factory('$cordovaEmailComposer', ['$q', function ($q) {
- return {
- isAvailable: function () {
- var q = $q.defer();
- cordova.plugins.email.isAvailable(function (isAvailable) {
- if (isAvailable) {
- q.resolve();
- } else {
- q.reject();
- }
- });
- return q.promise;
- },
- open: function (properties) {
- var q = $q.defer();
- cordova.plugins.email.open(properties, function () {
- q.reject(); // user closed email composer
- });
- return q.promise;
- },
- addAlias: function (app, schema) {
- cordova.plugins.email.addAlias(app, schema);
- }
- };
- }]);
- // install : cordova -d plugin add https://github.com/Wizcorp/phonegap-facebook-plugin.git --variable APP_ID="123456789" --variable APP_NAME="myApplication"
- // link : https://github.com/Wizcorp/phonegap-facebook-plugin
- /* globals facebookConnectPlugin: true */
- angular.module('ngCordova.plugins.facebook', [])
- .provider('$cordovaFacebook', [function () {
- /**
- * Init browser settings for Facebook plugin
- *
- * @param {number} id
- * @param {string} version
- */
- this.browserInit = function (id, version) {
- this.appID = id;
- this.appVersion = version || 'v2.0';
- facebookConnectPlugin.browserInit(this.appID, this.appVersion);
- };
- this.$get = ['$q', function ($q) {
- return {
- login: function (permissions) {
- var q = $q.defer();
- facebookConnectPlugin.login(permissions, function (res) {
- q.resolve(res);
- }, function (res) {
- q.reject(res);
- });
- return q.promise;
- },
- showDialog: function (options) {
- var q = $q.defer();
- facebookConnectPlugin.showDialog(options, function (res) {
- q.resolve(res);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- api: function (path, permissions) {
- var q = $q.defer();
- facebookConnectPlugin.api(path, permissions, function (res) {
- q.resolve(res);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- getAccessToken: function () {
- var q = $q.defer();
- facebookConnectPlugin.getAccessToken(function (res) {
- q.resolve(res);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- getLoginStatus: function () {
- var q = $q.defer();
- facebookConnectPlugin.getLoginStatus(function (res) {
- q.resolve(res);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- logout: function () {
- var q = $q.defer();
- facebookConnectPlugin.logout(function (res) {
- q.resolve(res);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- }
- };
- }];
- }]);
- // install : cordova plugin add https://github.com/floatinghotpot/cordova-plugin-facebookads.git
- // link : https://github.com/floatinghotpot/cordova-plugin-facebookads
- angular.module('ngCordova.plugins.facebookAds', [])
- .factory('$cordovaFacebookAds', ['$q', '$window', function ($q, $window) {
- return {
- setOptions: function (options) {
- var d = $q.defer();
- $window.FacebookAds.setOptions(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- createBanner: function (options) {
- var d = $q.defer();
- $window.FacebookAds.createBanner(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- removeBanner: function () {
- var d = $q.defer();
- $window.FacebookAds.removeBanner(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showBanner: function (position) {
- var d = $q.defer();
- $window.FacebookAds.showBanner(position, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showBannerAtXY: function (x, y) {
- var d = $q.defer();
- $window.FacebookAds.showBannerAtXY(x, y, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- hideBanner: function () {
- var d = $q.defer();
- $window.FacebookAds.hideBanner(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- prepareInterstitial: function (options) {
- var d = $q.defer();
- $window.FacebookAds.prepareInterstitial(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showInterstitial: function () {
- var d = $q.defer();
- $window.FacebookAds.showInterstitial(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-file
- // link : https://github.com/apache/cordova-plugin-file
- angular.module('ngCordova.plugins.file', [])
- .constant('$cordovaFileError', {
- 1: 'NOT_FOUND_ERR',
- 2: 'SECURITY_ERR',
- 3: 'ABORT_ERR',
- 4: 'NOT_READABLE_ERR',
- 5: 'ENCODING_ERR',
- 6: 'NO_MODIFICATION_ALLOWED_ERR',
- 7: 'INVALID_STATE_ERR',
- 8: 'SYNTAX_ERR',
- 9: 'INVALID_MODIFICATION_ERR',
- 10: 'QUOTA_EXCEEDED_ERR',
- 11: 'TYPE_MISMATCH_ERR',
- 12: 'PATH_EXISTS_ERR'
- })
- .provider('$cordovaFile', [function () {
- this.$get = ['$q', '$window', '$cordovaFileError', function ($q, $window, $cordovaFileError) {
- return {
- getFreeDiskSpace: function () {
- var q = $q.defer();
- cordova.exec(function (result) {
- q.resolve(result);
- }, function (error) {
- q.reject(error);
- }, 'File', 'getFreeDiskSpace', []);
- return q.promise;
- },
- checkDir: function (path, dir) {
- var q = $q.defer();
- if ((/^\//.test(dir))) {
- q.reject('directory cannot start with \/');
- }
- try {
- var directory = path + dir;
- $window.resolveLocalFileSystemURL(directory, function (fileSystem) {
- if (fileSystem.isDirectory === true) {
- q.resolve(fileSystem);
- } else {
- q.reject({code: 13, message: 'input is not a directory'});
- }
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- } catch (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- }
- return q.promise;
- },
- checkFile: function (path, file) {
- var q = $q.defer();
- if ((/^\//.test(file))) {
- q.reject('directory cannot start with \/');
- }
- try {
- var directory = path + file;
- $window.resolveLocalFileSystemURL(directory, function (fileSystem) {
- if (fileSystem.isFile === true) {
- q.resolve(fileSystem);
- } else {
- q.reject({code: 13, message: 'input is not a file'});
- }
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- } catch (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- }
- return q.promise;
- },
- createDir: function (path, dirName, replaceBool) {
- var q = $q.defer();
- if ((/^\//.test(dirName))) {
- q.reject('directory cannot start with \/');
- }
- replaceBool = replaceBool ? false : true;
- var options = {
- create: true,
- exclusive: replaceBool
- };
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getDirectory(dirName, options, function (result) {
- q.resolve(result);
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- }, function (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- });
- } catch (e) {
- e.message = $cordovaFileError[e.code];
- q.reject(e);
- }
- return q.promise;
- },
- createFile: function (path, fileName, replaceBool) {
- var q = $q.defer();
- if ((/^\//.test(fileName))) {
- q.reject('file-name cannot start with \/');
- }
- replaceBool = replaceBool ? false : true;
- var options = {
- create: true,
- exclusive: replaceBool
- };
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getFile(fileName, options, function (result) {
- q.resolve(result);
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- }, function (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- });
- } catch (e) {
- e.message = $cordovaFileError[e.code];
- q.reject(e);
- }
- return q.promise;
- },
- removeDir: function (path, dirName) {
- var q = $q.defer();
- if ((/^\//.test(dirName))) {
- q.reject('file-name cannot start with \/');
- }
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getDirectory(dirName, {create: false}, function (dirEntry) {
- dirEntry.remove(function () {
- q.resolve({success: true, fileRemoved: dirEntry});
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- }, function (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- });
- }, function (er) {
- er.message = $cordovaFileError[er.code];
- q.reject(er);
- });
- } catch (e) {
- e.message = $cordovaFileError[e.code];
- q.reject(e);
- }
- return q.promise;
- },
- removeFile: function (path, fileName) {
- var q = $q.defer();
- if ((/^\//.test(fileName))) {
- q.reject('file-name cannot start with \/');
- }
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getFile(fileName, {create: false}, function (fileEntry) {
- fileEntry.remove(function () {
- q.resolve({success: true, fileRemoved: fileEntry});
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- }, function (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- });
- }, function (er) {
- er.message = $cordovaFileError[er.code];
- q.reject(er);
- });
- } catch (e) {
- e.message = $cordovaFileError[e.code];
- q.reject(e);
- }
- return q.promise;
- },
- removeRecursively: function (path, dirName) {
- var q = $q.defer();
- if ((/^\//.test(dirName))) {
- q.reject('file-name cannot start with \/');
- }
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getDirectory(dirName, {create: false}, function (dirEntry) {
- dirEntry.removeRecursively(function () {
- q.resolve({success: true, fileRemoved: dirEntry});
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- }, function (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- });
- }, function (er) {
- er.message = $cordovaFileError[er.code];
- q.reject(er);
- });
- } catch (e) {
- e.message = $cordovaFileError[e.code];
- q.reject(e);
- }
- return q.promise;
- },
- writeFile: function (path, fileName, text, replaceBool) {
- var q = $q.defer();
- if ((/^\//.test(fileName))) {
- q.reject('file-name cannot start with \/');
- }
- replaceBool = replaceBool ? false : true;
- var options = {
- create: true,
- exclusive: replaceBool
- };
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getFile(fileName, options, function (fileEntry) {
- fileEntry.createWriter(function (writer) {
- if (options.append === true) {
- writer.seek(writer.length);
- }
- if (options.truncate) {
- writer.truncate(options.truncate);
- }
- writer.onwriteend = function (evt) {
- if (this.error) {
- q.reject(this.error);
- } else {
- q.resolve(evt);
- }
- };
- writer.write(text);
- q.promise.abort = function () {
- writer.abort();
- };
- });
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- }, function (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- });
- } catch (e) {
- e.message = $cordovaFileError[e.code];
- q.reject(e);
- }
- return q.promise;
- },
- writeExistingFile: function (path, fileName, text) {
- var q = $q.defer();
- if ((/^\//.test(fileName))) {
- q.reject('file-name cannot start with \/');
- }
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getFile(fileName, {create: false}, function (fileEntry) {
- fileEntry.createWriter(function (writer) {
- writer.seek(writer.length);
- writer.onwriteend = function (evt) {
- if (this.error) {
- q.reject(this.error);
- } else {
- q.resolve(evt);
- }
- };
- writer.write(text);
- q.promise.abort = function () {
- writer.abort();
- };
- });
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- }, function (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- });
- } catch (e) {
- e.message = $cordovaFileError[e.code];
- q.reject(e);
- }
- return q.promise;
- },
- readAsText: function (path, file) {
- var q = $q.defer();
- if ((/^\//.test(file))) {
- q.reject('file-name cannot start with \/');
- }
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getFile(file, {create: false}, function (fileEntry) {
- fileEntry.file(function (fileData) {
- var reader = new FileReader();
- reader.onloadend = function (evt) {
- if (evt.target.result !== undefined || evt.target.result !== null) {
- q.resolve(evt.target.result);
- } else if (evt.target.error !== undefined || evt.target.error !== null) {
- q.reject(evt.target.error);
- } else {
- q.reject({code: null, message: 'READER_ONLOADEND_ERR'});
- }
- };
- reader.readAsText(fileData);
- });
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- }, function (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- });
- } catch (e) {
- e.message = $cordovaFileError[e.code];
- q.reject(e);
- }
- return q.promise;
- },
- readAsDataURL: function (path, file) {
- var q = $q.defer();
- if ((/^\//.test(file))) {
- q.reject('file-name cannot start with \/');
- }
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getFile(file, {create: false}, function (fileEntry) {
- fileEntry.file(function (fileData) {
- var reader = new FileReader();
- reader.onloadend = function (evt) {
- if (evt.target.result !== undefined || evt.target.result !== null) {
- q.resolve(evt.target.result);
- } else if (evt.target.error !== undefined || evt.target.error !== null) {
- q.reject(evt.target.error);
- } else {
- q.reject({code: null, message: 'READER_ONLOADEND_ERR'});
- }
- };
- reader.readAsDataURL(fileData);
- });
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- }, function (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- });
- } catch (e) {
- e.message = $cordovaFileError[e.code];
- q.reject(e);
- }
- return q.promise;
- },
- readAsBinaryString: function (path, file) {
- var q = $q.defer();
- if ((/^\//.test(file))) {
- q.reject('file-name cannot start with \/');
- }
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getFile(file, {create: false}, function (fileEntry) {
- fileEntry.file(function (fileData) {
- var reader = new FileReader();
- reader.onloadend = function (evt) {
- if (evt.target.result !== undefined || evt.target.result !== null) {
- q.resolve(evt.target.result);
- } else if (evt.target.error !== undefined || evt.target.error !== null) {
- q.reject(evt.target.error);
- } else {
- q.reject({code: null, message: 'READER_ONLOADEND_ERR'});
- }
- };
- reader.readAsBinaryString(fileData);
- });
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- }, function (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- });
- } catch (e) {
- e.message = $cordovaFileError[e.code];
- q.reject(e);
- }
- return q.promise;
- },
- readAsArrayBuffer: function (path, file) {
- var q = $q.defer();
- if ((/^\//.test(file))) {
- q.reject('file-name cannot start with \/');
- }
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getFile(file, {create: false}, function (fileEntry) {
- fileEntry.file(function (fileData) {
- var reader = new FileReader();
- reader.onloadend = function (evt) {
- if (evt.target.result !== undefined || evt.target.result !== null) {
- q.resolve(evt.target.result);
- } else if (evt.target.error !== undefined || evt.target.error !== null) {
- q.reject(evt.target.error);
- } else {
- q.reject({code: null, message: 'READER_ONLOADEND_ERR'});
- }
- };
- reader.readAsArrayBuffer(fileData);
- });
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- }, function (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- });
- } catch (e) {
- e.message = $cordovaFileError[e.code];
- q.reject(e);
- }
- return q.promise;
- },
- moveFile: function (path, fileName, newPath, newFileName) {
- var q = $q.defer();
- newFileName = newFileName || fileName;
- if ((/^\//.test(fileName)) || (/^\//.test(newFileName))) {
- q.reject('file-name cannot start with \/');
- }
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getFile(fileName, {create: false}, function (fileEntry) {
- $window.resolveLocalFileSystemURL(newPath, function (newFileEntry) {
- fileEntry.moveTo(newFileEntry, newFileName, function (result) {
- q.resolve(result);
- }, function (error) {
- q.reject(error);
- });
- }, function (err) {
- q.reject(err);
- });
- }, function (err) {
- q.reject(err);
- });
- }, function (er) {
- q.reject(er);
- });
- } catch (e) {
- q.reject(e);
- }
- return q.promise;
- },
- moveDir: function (path, dirName, newPath, newDirName) {
- var q = $q.defer();
- newDirName = newDirName || dirName;
- if (/^\//.test(dirName) || (/^\//.test(newDirName))) {
- q.reject('file-name cannot start with \/');
- }
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getDirectory(dirName, {create: false}, function (dirEntry) {
- $window.resolveLocalFileSystemURL(newPath, function (newDirEntry) {
- dirEntry.moveTo(newDirEntry, newDirName, function (result) {
- q.resolve(result);
- }, function (error) {
- q.reject(error);
- });
- }, function (erro) {
- q.reject(erro);
- });
- }, function (err) {
- q.reject(err);
- });
- }, function (er) {
- q.reject(er);
- });
- } catch (e) {
- q.reject(e);
- }
- return q.promise;
- },
- copyDir: function (path, dirName, newPath, newDirName) {
- var q = $q.defer();
- newDirName = newDirName || dirName;
- if (/^\//.test(dirName) || (/^\//.test(newDirName))) {
- q.reject('file-name cannot start with \/');
- }
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getDirectory(dirName, {create: false, exclusive: false}, function (dirEntry) {
- $window.resolveLocalFileSystemURL(newPath, function (newDirEntry) {
- dirEntry.copyTo(newDirEntry, newDirName, function (result) {
- q.resolve(result);
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- }, function (erro) {
- erro.message = $cordovaFileError[erro.code];
- q.reject(erro);
- });
- }, function (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- });
- }, function (er) {
- er.message = $cordovaFileError[er.code];
- q.reject(er);
- });
- } catch (e) {
- e.message = $cordovaFileError[e.code];
- q.reject(e);
- }
- return q.promise;
- },
- copyFile: function (path, fileName, newPath, newFileName) {
- var q = $q.defer();
- newFileName = newFileName || fileName;
- if ((/^\//.test(fileName))) {
- q.reject('file-name cannot start with \/');
- }
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getFile(fileName, {create: false, exclusive: false}, function (fileEntry) {
- $window.resolveLocalFileSystemURL(newPath, function (newFileEntry) {
- fileEntry.copyTo(newFileEntry, newFileName, function (result) {
- q.resolve(result);
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- }, function (erro) {
- erro.message = $cordovaFileError[erro.code];
- q.reject(erro);
- });
- }, function (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- });
- }, function (er) {
- er.message = $cordovaFileError[er.code];
- q.reject(er);
- });
- } catch (e) {
- e.message = $cordovaFileError[e.code];
- q.reject(e);
- }
- return q.promise;
- },
- readFileMetadata: function (path, file) {
- var q = $q.defer();
- if ((/^\//.test(file))) {
- q.reject('directory cannot start with \/');
- }
- try {
- var directory = path + file;
- $window.resolveLocalFileSystemURL(directory, function (fileEntry) {
- fileEntry.file(function (result) {
- q.resolve(result);
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- }, function (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- });
- } catch (e) {
- e.message = $cordovaFileError[e.code];
- q.reject(e);
- }
- return q.promise;
- }
- /*
- listFiles: function (path, dir) {
- },
- listDir: function (path, dirName) {
- var q = $q.defer();
- try {
- $window.resolveLocalFileSystemURL(path, function (fileSystem) {
- fileSystem.getDirectory(dirName, options, function (parent) {
- var reader = parent.createReader();
- reader.readEntries(function (entries) {
- q.resolve(entries);
- }, function () {
- q.reject('DIR_READ_ERROR : ' + path + dirName);
- });
- }, function (error) {
- error.message = $cordovaFileError[error.code];
- q.reject(error);
- });
- }, function (err) {
- err.message = $cordovaFileError[err.code];
- q.reject(err);
- });
- } catch (e) {
- e.message = $cordovaFileError[e.code];
- q.reject(e);
- }
- return q.promise;
- },
- */
- };
- }];
- }]);
- // install : cordova plugin add https://github.com/pwlin/cordova-plugin-file-opener2.git
- // link : https://github.com/pwlin/cordova-plugin-file-opener2
- angular.module('ngCordova.plugins.fileOpener2', [])
- .factory('$cordovaFileOpener2', ['$q', function ($q) {
- return {
- open: function (file, type) {
- var q = $q.defer();
- cordova.plugins.fileOpener2.open(file, type, {
- error: function (e) {
- q.reject(e);
- }, success: function () {
- q.resolve();
- }
- });
- return q.promise;
- },
- uninstall: function (pack) {
- var q = $q.defer();
- cordova.plugins.fileOpener2.uninstall(pack, {
- error: function (e) {
- q.reject(e);
- }, success: function () {
- q.resolve();
- }
- });
- return q.promise;
- },
- appIsInstalled: function (pack) {
- var q = $q.defer();
- cordova.plugins.fileOpener2.appIsInstalled(pack, {
- success: function (res) {
- q.resolve(res);
- }
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-file-transfer
- // link : https://github.com/apache/cordova-plugin-file-transfer
- /* globals FileTransfer: true */
- angular.module('ngCordova.plugins.fileTransfer', [])
- .factory('$cordovaFileTransfer', ['$q', '$timeout', function ($q, $timeout) {
- return {
- download: function (source, filePath, options, trustAllHosts) {
- var q = $q.defer();
- var ft = new FileTransfer();
- var uri = (options && options.encodeURI === false) ? source : encodeURI(source);
- if (options && options.timeout !== undefined && options.timeout !== null) {
- $timeout(function () {
- ft.abort();
- }, options.timeout);
- options.timeout = null;
- }
- ft.onprogress = function (progress) {
- q.notify(progress);
- };
- q.promise.abort = function () {
- ft.abort();
- };
- ft.download(uri, filePath, q.resolve, q.reject, trustAllHosts, options);
- return q.promise;
- },
- upload: function (server, filePath, options, trustAllHosts) {
- var q = $q.defer();
- var ft = new FileTransfer();
- var uri = (options && options.encodeURI === false) ? server : encodeURI(server);
- if (options && options.timeout !== undefined && options.timeout !== null) {
- $timeout(function () {
- ft.abort();
- }, options.timeout);
- options.timeout = null;
- }
- ft.onprogress = function (progress) {
- q.notify(progress);
- };
- q.promise.abort = function () {
- ft.abort();
- };
- ft.upload(filePath, uri, q.resolve, q.reject, options, trustAllHosts);
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/EddyVerbruggen/Flashlight-PhoneGap-Plugin.git
- // link : https://github.com/EddyVerbruggen/Flashlight-PhoneGap-Plugin
- angular.module('ngCordova.plugins.flashlight', [])
- .factory('$cordovaFlashlight', ['$q', '$window', function ($q, $window) {
- return {
- available: function () {
- var q = $q.defer();
- $window.plugins.flashlight.available(function (isAvailable) {
- q.resolve(isAvailable);
- });
- return q.promise;
- },
- switchOn: function () {
- var q = $q.defer();
- $window.plugins.flashlight.switchOn(function (response) {
- q.resolve(response);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- switchOff: function () {
- var q = $q.defer();
- $window.plugins.flashlight.switchOff(function (response) {
- q.resolve(response);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- toggle: function () {
- var q = $q.defer();
- $window.plugins.flashlight.toggle(function (response) {
- q.resolve(response);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/floatinghotpot/cordova-plugin-flurry.git
- // link : https://github.com/floatinghotpot/cordova-plugin-flurry
- angular.module('ngCordova.plugins.flurryAds', [])
- .factory('$cordovaFlurryAds', ['$q', '$window', function ($q, $window) {
- return {
- setOptions: function (options) {
- var d = $q.defer();
- $window.FlurryAds.setOptions(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- createBanner: function (options) {
- var d = $q.defer();
- $window.FlurryAds.createBanner(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- removeBanner: function () {
- var d = $q.defer();
- $window.FlurryAds.removeBanner(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showBanner: function (position) {
- var d = $q.defer();
- $window.FlurryAds.showBanner(position, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showBannerAtXY: function (x, y) {
- var d = $q.defer();
- $window.FlurryAds.showBannerAtXY(x, y, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- hideBanner: function () {
- var d = $q.defer();
- $window.FlurryAds.hideBanner(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- prepareInterstitial: function (options) {
- var d = $q.defer();
- $window.FlurryAds.prepareInterstitial(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showInterstitial: function () {
- var d = $q.defer();
- $window.FlurryAds.showInterstitial(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/phonegap-build/GAPlugin.git
- // link : https://github.com/phonegap-build/GAPlugin
- angular.module('ngCordova.plugins.ga', [])
- .factory('$cordovaGA', ['$q', '$window', function ($q, $window) {
- return {
- init: function (id, mingap) {
- var q = $q.defer();
- mingap = (mingap >= 0) ? mingap : 10;
- $window.plugins.gaPlugin.init(function (result) {
- q.resolve(result);
- },
- function (error) {
- q.reject(error);
- },
- id, mingap);
- return q.promise;
- },
- trackEvent: function (success, fail, category, eventAction, eventLabel, eventValue) {
- var q = $q.defer();
- $window.plugins.gaPlugin.trackEvent(function (result) {
- q.resolve(result);
- },
- function (error) {
- q.reject(error);
- },
- category, eventAction, eventLabel, eventValue);
- return q.promise;
- },
- trackPage: function (success, fail, pageURL) {
- var q = $q.defer();
- $window.plugins.gaPlugin.trackPage(function (result) {
- q.resolve(result);
- },
- function (error) {
- q.reject(error);
- },
- pageURL);
- return q.promise;
- },
- setVariable: function (success, fail, index, value) {
- var q = $q.defer();
- $window.plugins.gaPlugin.setVariable(function (result) {
- q.resolve(result);
- },
- function (error) {
- q.reject(error);
- },
- index, value);
- return q.promise;
- },
- exit: function () {
- var q = $q.defer();
- $window.plugins.gaPlugin.exit(function (result) {
- q.resolve(result);
- },
- function (error) {
- q.reject(error);
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-geolocation
- // link : https://github.com/apache/cordova-plugin-geolocation
- angular.module('ngCordova.plugins.geolocation', [])
- .factory('$cordovaGeolocation', ['$q', function ($q) {
- return {
- getCurrentPosition: function (options) {
- var q = $q.defer();
- navigator.geolocation.getCurrentPosition(function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- }, options);
- return q.promise;
- },
- watchPosition: function (options) {
- var q = $q.defer();
- var watchID = navigator.geolocation.watchPosition(function (result) {
- q.notify(result);
- }, function (err) {
- q.reject(err);
- }, options);
- q.promise.cancel = function () {
- navigator.geolocation.clearWatch(watchID);
- };
- q.promise.clearWatch = function (id) {
- navigator.geolocation.clearWatch(id || watchID);
- };
- q.promise.watchID = watchID;
- return q.promise;
- },
- clearWatch: function (watchID) {
- return navigator.geolocation.clearWatch(watchID);
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-globalization
- // link : https://github.com/apache/cordova-plugin-globalization
- angular.module('ngCordova.plugins.globalization', [])
- .factory('$cordovaGlobalization', ['$q', function ($q) {
- return {
- getPreferredLanguage: function () {
- var q = $q.defer();
- navigator.globalization.getPreferredLanguage(function (result) {
- q.resolve(result);
- },
- function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- getLocaleName: function () {
- var q = $q.defer();
- navigator.globalization.getLocaleName(function (result) {
- q.resolve(result);
- },
- function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- getFirstDayOfWeek: function () {
- var q = $q.defer();
- navigator.globalization.getFirstDayOfWeek(function (result) {
- q.resolve(result);
- },
- function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- // "date" parameter must be a JavaScript Date Object.
- dateToString: function (date, options) {
- var q = $q.defer();
- navigator.globalization.dateToString(
- date,
- function (result) {
- q.resolve(result);
- },
- function (err) {
- q.reject(err);
- },
- options);
- return q.promise;
- },
- stringToDate: function (dateString, options) {
- var q = $q.defer();
- navigator.globalization.stringToDate(
- dateString,
- function (result) {
- q.resolve(result);
- },
- function (err) {
- q.reject(err);
- },
- options);
- return q.promise;
- },
- getDatePattern: function (options) {
- var q = $q.defer();
- navigator.globalization.getDatePattern(
- function (result) {
- q.resolve(result);
- },
- function (err) {
- q.reject(err);
- },
- options);
- return q.promise;
- },
- getDateNames: function (options) {
- var q = $q.defer();
- navigator.globalization.getDateNames(
- function (result) {
- q.resolve(result);
- },
- function (err) {
- q.reject(err);
- },
- options);
- return q.promise;
- },
- // "date" parameter must be a JavaScript Date Object.
- isDayLightSavingsTime: function (date) {
- var q = $q.defer();
- navigator.globalization.isDayLightSavingsTime(
- date,
- function (result) {
- q.resolve(result);
- },
- function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- numberToString: function (number, options) {
- var q = $q.defer();
- navigator.globalization.numberToString(
- number,
- function (result) {
- q.resolve(result);
- },
- function (err) {
- q.reject(err);
- },
- options);
- return q.promise;
- },
- stringToNumber: function (numberString, options) {
- var q = $q.defer();
- navigator.globalization.stringToNumber(
- numberString,
- function (result) {
- q.resolve(result);
- },
- function (err) {
- q.reject(err);
- },
- options);
- return q.promise;
- },
- getNumberPattern: function (options) {
- var q = $q.defer();
- navigator.globalization.getNumberPattern(
- function (result) {
- q.resolve(result);
- },
- function (err) {
- q.reject(err);
- },
- options);
- return q.promise;
- },
- getCurrencyPattern: function (currencyCode) {
- var q = $q.defer();
- navigator.globalization.getCurrencyPattern(
- currencyCode,
- function (result) {
- q.resolve(result);
- },
- function (err) {
- q.reject(err);
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/floatinghotpot/cordova-admob-pro.git
- // link : https://github.com/floatinghotpot/cordova-admob-pro
- angular.module('ngCordova.plugins.googleAds', [])
- .factory('$cordovaGoogleAds', ['$q', '$window', function ($q, $window) {
- return {
- setOptions: function (options) {
- var d = $q.defer();
- $window.AdMob.setOptions(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- createBanner: function (options) {
- var d = $q.defer();
- $window.AdMob.createBanner(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- removeBanner: function () {
- var d = $q.defer();
- $window.AdMob.removeBanner(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showBanner: function (position) {
- var d = $q.defer();
- $window.AdMob.showBanner(position, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showBannerAtXY: function (x, y) {
- var d = $q.defer();
- $window.AdMob.showBannerAtXY(x, y, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- hideBanner: function () {
- var d = $q.defer();
- $window.AdMob.hideBanner(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- prepareInterstitial: function (options) {
- var d = $q.defer();
- $window.AdMob.prepareInterstitial(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showInterstitial: function () {
- var d = $q.defer();
- $window.AdMob.showInterstitial(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/danwilson/google-analytics-plugin.git
- // link : https://github.com/danwilson/google-analytics-plugin
- angular.module('ngCordova.plugins.googleAnalytics', [])
- .factory('$cordovaGoogleAnalytics', ['$q', '$window', function ($q, $window) {
- return {
- startTrackerWithId: function (id) {
- var d = $q.defer();
- $window.analytics.startTrackerWithId(id, function (response) {
- d.resolve(response);
- }, function (error) {
- d.reject(error);
- });
- return d.promise;
- },
- setUserId: function (id) {
- var d = $q.defer();
- $window.analytics.setUserId(id, function (response) {
- d.resolve(response);
- }, function (error) {
- d.reject(error);
- });
- return d.promise;
- },
- debugMode: function () {
- var d = $q.defer();
- $window.analytics.debugMode(function (response) {
- d.resolve(response);
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- trackView: function (screenName) {
- var d = $q.defer();
- $window.analytics.trackView(screenName, function (response) {
- d.resolve(response);
- }, function (error) {
- d.reject(error);
- });
- return d.promise;
- },
- addCustomDimension: function (key, value) {
- var d = $q.defer();
- var parsedKey = parseInt(key, 10);
- if (isNaN(parsedKey)) {
- d.reject('Parameter "key" must be an integer.');
- }
- $window.analytics.addCustomDimension(parsedKey, value, function () {
- d.resolve();
- }, function (error) {
- d.reject(error);
- });
- return d.promise;
- },
- trackEvent: function (category, action, label, value) {
- var d = $q.defer();
- $window.analytics.trackEvent(category, action, label, value, function (response) {
- d.resolve(response);
- }, function (error) {
- d.reject(error);
- });
- return d.promise;
- },
- trackException: function (description, fatal) {
- var d = $q.defer();
- $window.analytics.trackException(description, fatal, function (response) {
- d.resolve(response);
- }, function (error) {
- d.reject(error);
- });
- return d.promise;
- },
- trackTiming: function (category, milliseconds, variable, label) {
- var d = $q.defer();
- $window.analytics.trackTiming(category, milliseconds, variable, label, function (response) {
- d.resolve(response);
- }, function (error) {
- d.reject(error);
- });
- return d.promise;
- },
- addTransaction: function (transactionId, affiliation, revenue, tax, shipping, currencyCode) {
- var d = $q.defer();
- $window.analytics.addTransaction(transactionId, affiliation, revenue, tax, shipping, currencyCode, function (response) {
- d.resolve(response);
- }, function (error) {
- d.reject(error);
- });
- return d.promise;
- },
- addTransactionItem: function (transactionId, name, sku, category, price, quantity, currencyCode) {
- var d = $q.defer();
- $window.analytics.addTransactionItem(transactionId, name, sku, category, price, quantity, currencyCode, function (response) {
- d.resolve(response);
- }, function (error) {
- d.reject(error);
- });
- return d.promise;
- }
- };
- }]);
- // install :
- // link :
- // Google Maps needs ALOT of work!
- // Not for production use
- angular.module('ngCordova.plugins.googleMap', [])
- .factory('$cordovaGoogleMap', ['$q', '$window', function ($q, $window) {
- var map = null;
- return {
- getMap: function (options) {
- var q = $q.defer();
- if (!$window.plugin.google.maps) {
- q.reject(null);
- } else {
- var div = document.getElementById('map_canvas');
- map = $window.plugin.google.maps.Map.getMap(options);
- map.setDiv(div);
- q.resolve(map);
- }
- return q.promise;
- },
- isMapLoaded: function () { // check if an instance of the map exists
- return !!map;
- },
- addMarker: function (markerOptions) { // add a marker to the map with given markerOptions
- var q = $q.defer();
- map.addMarker(markerOptions, function (marker) {
- q.resolve(marker);
- });
- return q.promise;
- },
- getMapTypeIds: function () {
- return $window.plugin.google.maps.mapTypeId;
- },
- setVisible: function (isVisible) {
- var q = $q.defer();
- map.setVisible(isVisible);
- return q.promise;
- },
- // I don't know how to deallocate te map and the google map plugin.
- cleanup: function () {
- map = null;
- // delete map;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/ptgamr/cordova-google-play-game.git --variable APP_ID=123456789
- // link : https://github.com/ptgamr/cordova-google-play-game
- /* globals googleplaygame: true */
- angular.module('ngCordova.plugins.googlePlayGame', [])
- .factory('$cordovaGooglePlayGame', ['$q', function ($q) {
- return {
- auth: function () {
- var q = $q.defer();
- googleplaygame.auth(function (success) {
- return q.resolve(success);
- }, function (err) {
- return q.reject(err);
- });
- return q.promise;
- },
- signout: function () {
- var q = $q.defer();
- googleplaygame.signout(function (success) {
- return q.resolve(success);
- }, function (err) {
- return q.reject(err);
- });
- return q.promise;
- },
- isSignedIn: function () {
- var q = $q.defer();
- googleplaygame.isSignedIn(function (success) {
- return q.resolve(success);
- }, function (err) {
- return q.reject(err);
- });
- return q.promise;
- },
- showPlayer: function () {
- var q = $q.defer();
- googleplaygame.showPlayer(function (success) {
- return q.resolve(success);
- }, function (err) {
- return q.reject(err);
- });
- return q.promise;
- },
- submitScore: function (data) {
- var q = $q.defer();
- googleplaygame.submitScore(data, function (success) {
- return q.resolve(success);
- }, function (err) {
- return q.reject(err);
- });
- return q.promise;
- },
- showAllLeaderboards: function () {
- var q = $q.defer();
- googleplaygame.showAllLeaderboards(function (success) {
- return q.resolve(success);
- }, function (err) {
- return q.reject(err);
- });
- return q.promise;
- },
- showLeaderboard: function (data) {
- var q = $q.defer();
- googleplaygame.showLeaderboard(data, function (success) {
- return q.resolve(success);
- }, function (err) {
- return q.reject(err);
- });
- return q.promise;
- },
- unlockAchievement: function (data) {
- var q = $q.defer();
- googleplaygame.unlockAchievement(data, function (success) {
- return q.resolve(success);
- }, function (err) {
- return q.reject(err);
- });
- return q.promise;
- },
- incrementAchievement: function (data) {
- var q = $q.defer();
- googleplaygame.incrementAchievement(data, function (success) {
- return q.resolve(success);
- }, function (err) {
- return q.reject(err);
- });
- return q.promise;
- },
- showAchievements: function () {
- var q = $q.defer();
- googleplaygame.showAchievements(function (success) {
- return q.resolve(success);
- }, function (err) {
- return q.reject(err);
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-googleplus.git
- // link : https://github.com/EddyVerbruggen/cordova-plugin-googleplus
- angular.module('ngCordova.plugins.googlePlus', [])
- .factory('$cordovaGooglePlus', ['$q', '$window', function ($q, $window) {
- return {
- login: function (iosKey) {
- var q = $q.defer();
- if (iosKey === undefined) {
- iosKey = {};
- }
- $window.plugins.googleplus.login({'iOSApiKey': iosKey}, function (response) {
- q.resolve(response);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- silentLogin: function (iosKey) {
- var q = $q.defer();
- if (iosKey === undefined) {
- iosKey = {};
- }
- $window.plugins.googleplus.trySilentLogin({'iOSApiKey': iosKey}, function (response) {
- q.resolve(response);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- logout: function () {
- var q = $q.defer();
- $window.plugins.googleplus.logout(function (response) {
- q.resolve(response);
- });
- },
- disconnect: function () {
- var q = $q.defer();
- $window.plugins.googleplus.disconnect(function (response) {
- q.resolve(response);
- });
- },
- isAvailable: function () {
- var q = $q.defer();
- $window.plugins.googleplus.isAvailable(function (available) {
- if (available) {
- q.resolve(available);
- } else {
- q.reject(available);
- }
- });
-
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/Telerik-Verified-Plugins/HealthKit.git
- // link : https://github.com/Telerik-Verified-Plugins/HealthKit
- angular.module('ngCordova.plugins.healthKit', [])
- .factory('$cordovaHealthKit', ['$q', '$window', function ($q, $window) {
- return {
- isAvailable: function () {
- var q = $q.defer();
- $window.plugins.healthkit.available(function (success) {
- q.resolve(success);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- /**
- * Check whether or not the user granted your app access to a specific HealthKit type.
- * Reference for possible types:
- * https://developer.apple.com/library/ios/documentation/HealthKit/Reference/HealthKit_Constants/
- */
- checkAuthStatus: function (type) {
- var q = $q.defer();
- type = type || 'HKQuantityTypeIdentifierHeight';
- $window.plugins.healthkit.checkAuthStatus({
- 'type': type
- }, function (success) {
- q.resolve(success);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- /**
- * Request authorization to access HealthKit data. See the full HealthKit constants
- * reference for possible read and write types:
- * https://developer.apple.com/library/ios/documentation/HealthKit/Reference/HealthKit_Constants/
- */
- requestAuthorization: function (readTypes, writeTypes) {
- var q = $q.defer();
- readTypes = readTypes || [
- 'HKCharacteristicTypeIdentifierDateOfBirth', 'HKQuantityTypeIdentifierActiveEnergyBurned', 'HKQuantityTypeIdentifierHeight'
- ];
- writeTypes = writeTypes || [
- 'HKQuantityTypeIdentifierActiveEnergyBurned', 'HKQuantityTypeIdentifierHeight', 'HKQuantityTypeIdentifierDistanceCycling'
- ];
- $window.plugins.healthkit.requestAuthorization({
- 'readTypes': readTypes,
- 'writeTypes': writeTypes
- }, function (success) {
- q.resolve(success);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- readDateOfBirth: function () {
- var q = $q.defer();
- $window.plugins.healthkit.readDateOfBirth(
- function (success) {
- q.resolve(success);
- },
- function (err) {
- q.resolve(err);
- }
- );
- return q.promise;
- },
- readGender: function () {
- var q = $q.defer();
- $window.plugins.healthkit.readGender(
- function (success) {
- q.resolve(success);
- },
- function (err) {
- q.resolve(err);
- }
- );
- return q.promise;
- },
- saveWeight: function (value, units, date) {
- var q = $q.defer();
- $window.plugins.healthkit.saveWeight({
- 'unit': units || 'lb',
- 'amount': value,
- 'date': date || new Date()
- },
- function (success) {
- q.resolve(success);
- },
- function (err) {
- q.resolve(err);
- }
- );
- return q.promise;
- },
- readWeight: function (units) {
- var q = $q.defer();
- $window.plugins.healthkit.readWeight({
- 'unit': units || 'lb'
- },
- function (success) {
- q.resolve(success);
- },
- function (err) {
- q.resolve(err);
- }
- );
- return q.promise;
- },
- saveHeight: function (value, units, date) {
- var q = $q.defer();
- $window.plugins.healthkit.saveHeight({
- 'unit': units || 'in',
- 'amount': value,
- 'date': date || new Date()
- },
- function (success) {
- q.resolve(success);
- },
- function (err) {
- q.resolve(err);
- }
- );
- return q.promise;
- },
- readHeight: function (units) {
- var q = $q.defer();
- $window.plugins.healthkit.readHeight({
- 'unit': units || 'in'
- },
- function (success) {
- q.resolve(success);
- },
- function (err) {
- q.resolve(err);
- }
- );
- return q.promise;
- },
- findWorkouts: function () {
- var q = $q.defer();
- $window.plugins.healthkit.findWorkouts({},
- function (success) {
- q.resolve(success);
- },
- function (err) {
- q.resolve(err);
- }
- );
- return q.promise;
- },
- /**
- * Save a workout.
- *
- * Workout param should be of the format:
- {
- 'activityType': 'HKWorkoutActivityTypeCycling', // HKWorkoutActivityType constant (https://developer.apple.com/library/ios/documentation/HealthKit/Reference/HKWorkout_Class/#//apple_ref/c/tdef/HKWorkoutActivityType)
- 'quantityType': 'HKQuantityTypeIdentifierDistanceCycling',
- 'startDate': new Date(), // mandatory
- 'endDate': null, // optional, use either this or duration
- 'duration': 3600, // in seconds, optional, use either this or endDate
- 'energy': 300, //
- 'energyUnit': 'kcal', // J|cal|kcal
- 'distance': 11, // optional
- 'distanceUnit': 'km' // probably useful with the former param
- // 'extraData': "", // Not sure how necessary this is
- },
- */
- saveWorkout: function (workout) {
- var q = $q.defer();
- $window.plugins.healthkit.saveWorkout(workout,
- function (success) {
- q.resolve(success);
- },
- function (err) {
- q.resolve(err);
- }
- );
- return q.promise;
- },
- /**
- * Sample any kind of health data through a given date range.
- * sampleQuery of the format:
- {
- 'startDate': yesterday, // mandatory
- 'endDate': tomorrow, // mandatory
- 'sampleType': 'HKQuantityTypeIdentifierHeight',
- 'unit' : 'cm'
- },
- */
- querySampleType: function (sampleQuery) {
- var q = $q.defer();
- $window.plugins.healthkit.querySampleType(sampleQuery,
- function (success) {
- q.resolve(success);
- },
- function (err) {
- q.resolve(err);
- }
- );
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/floatinghotpot/cordova-httpd.git
- // link : https://github.com/floatinghotpot/cordova-httpd
- angular.module('ngCordova.plugins.httpd', [])
- .factory('$cordovaHttpd', ['$q', function ($q) {
- return {
- startServer: function (options) {
- var d = $q.defer();
- cordova.plugins.CorHttpd.startServer(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- stopServer: function () {
- var d = $q.defer();
- cordova.plugins.CorHttpd.stopServer(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- getURL: function () {
- var d = $q.defer();
- cordova.plugins.CorHttpd.getURL(function (url) {
- d.resolve(url);
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- getLocalPath: function () {
- var d = $q.defer();
- cordova.plugins.CorHttpd.getLocalPath(function (path) {
- d.resolve(path);
- }, function () {
- d.reject();
- });
- return d.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/floatinghotpot/cordova-plugin-iad.git
- // link : https://github.com/floatinghotpot/cordova-plugin-iad
- angular.module('ngCordova.plugins.iAd', [])
- .factory('$cordovaiAd', ['$q', '$window', function ($q, $window) {
- return {
- setOptions: function (options) {
- var d = $q.defer();
- $window.iAd.setOptions(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- createBanner: function (options) {
- var d = $q.defer();
- $window.iAd.createBanner(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- removeBanner: function () {
- var d = $q.defer();
- $window.iAd.removeBanner(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showBanner: function (position) {
- var d = $q.defer();
- $window.iAd.showBanner(position, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showBannerAtXY: function (x, y) {
- var d = $q.defer();
- $window.iAd.showBannerAtXY(x, y, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- hideBanner: function () {
- var d = $q.defer();
- $window.iAd.hideBanner(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- prepareInterstitial: function (options) {
- var d = $q.defer();
- $window.iAd.prepareInterstitial(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showInterstitial: function () {
- var d = $q.defer();
- $window.iAd.showInterstitial(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/wymsee/cordova-imagePicker.git
- // link : https://github.com/wymsee/cordova-imagePicker
- angular.module('ngCordova.plugins.imagePicker', [])
- .factory('$cordovaImagePicker', ['$q', '$window', function ($q, $window) {
- return {
- getPictures: function (options) {
- var q = $q.defer();
- $window.imagePicker.getPictures(function (results) {
- q.resolve(results);
- }, function (error) {
- q.reject(error);
- }, options);
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-inappbrowser
- // link : https://github.com/apache/cordova-plugin-inappbrowser
- angular.module('ngCordova.plugins.inAppBrowser', [])
- .provider('$cordovaInAppBrowser', [function () {
- var ref;
- var defaultOptions = this.defaultOptions = {};
- this.setDefaultOptions = function (config) {
- defaultOptions = angular.extend(defaultOptions, config);
- };
- this.$get = ['$rootScope', '$q', '$window', '$timeout', function ($rootScope, $q, $window, $timeout) {
- return {
- open: function (url, target, requestOptions) {
- var q = $q.defer();
- if (requestOptions && !angular.isObject(requestOptions)) {
- q.reject('options must be an object');
- return q.promise;
- }
- var options = angular.extend({}, defaultOptions, requestOptions);
- var opt = [];
- angular.forEach(options, function (value, key) {
- opt.push(key + '=' + value);
- });
- var optionsString = opt.join();
- ref = $window.open(url, target, optionsString);
- ref.addEventListener('loadstart', function (event) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaInAppBrowser:loadstart', event);
- });
- }, false);
- ref.addEventListener('loadstop', function (event) {
- q.resolve(event);
- $timeout(function () {
- $rootScope.$broadcast('$cordovaInAppBrowser:loadstop', event);
- });
- }, false);
- ref.addEventListener('loaderror', function (event) {
- q.reject(event);
- $timeout(function () {
- $rootScope.$broadcast('$cordovaInAppBrowser:loaderror', event);
- });
- }, false);
- ref.addEventListener('exit', function (event) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaInAppBrowser:exit', event);
- });
- }, false);
- return q.promise;
- },
- close: function () {
- ref.close();
- ref = null;
- },
- show: function () {
- ref.show();
- },
- executeScript: function (details) {
- var q = $q.defer();
- ref.executeScript(details, function (result) {
- q.resolve(result);
- });
- return q.promise;
- },
- insertCSS: function (details) {
- var q = $q.defer();
- ref.insertCSS(details, function (result) {
- q.resolve(result);
- });
- return q.promise;
- }
- };
- }];
- }]);
- // install : cordova plugin add https://github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin.git
- // link : https://github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin
- angular.module('ngCordova.plugins.insomnia', [])
- .factory('$cordovaInsomnia', ['$window', function ($window) {
- return {
- keepAwake: function () {
- return $window.plugins.insomnia.keepAwake();
- },
- allowSleepAgain: function () {
- return $window.plugins.insomnia.allowSleepAgain();
- }
- };
- }]);
- // install : cordova plugins add https://github.com/vstirbu/InstagramPlugin.git
- // link : https://github.com/vstirbu/InstagramPlugin
- /* globals Instagram: true */
- angular.module('ngCordova.plugins.instagram', [])
- .factory('$cordovaInstagram', ['$q', function ($q) {
- return {
- share: function (options) {
- var q = $q.defer();
- if (!window.Instagram) {
- console.error('Tried to call Instagram.share but the Instagram plugin isn\'t installed!');
- q.resolve(null);
- return q.promise;
- }
- Instagram.share(options.image, options.caption, function (err) {
- if(err) {
- q.reject(err);
- } else {
- q.resolve(true);
- }
- });
- return q.promise;
- },
- isInstalled: function () {
- var q = $q.defer();
- if (!window.Instagram) {
- console.error('Tried to call Instagram.isInstalled but the Instagram plugin isn\'t installed!');
- q.resolve(null);
- return q.promise;
- }
- Instagram.isInstalled(function (err, installed) {
- if (err) {
- q.reject(err);
- } else {
- q.resolve(installed);
- }
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/driftyco/ionic-plugins-keyboard.git
- // link : https://github.com/driftyco/ionic-plugins-keyboard
- angular.module('ngCordova.plugins.keyboard', [])
- .factory('$cordovaKeyboard', ['$rootScope', function ($rootScope) {
- var keyboardShowEvent = function () {
- $rootScope.$evalAsync(function () {
- $rootScope.$broadcast('$cordovaKeyboard:show');
- });
- };
- var keyboardHideEvent = function () {
- $rootScope.$evalAsync(function () {
- $rootScope.$broadcast('$cordovaKeyboard:hide');
- });
- };
- document.addEventListener('deviceready', function () {
- if (cordova.plugins.Keyboard) {
- window.addEventListener('native.keyboardshow', keyboardShowEvent, false);
- window.addEventListener('native.keyboardhide', keyboardHideEvent, false);
- }
- });
- return {
- hideAccessoryBar: function (bool) {
- return cordova.plugins.Keyboard.hideKeyboardAccessoryBar(bool);
- },
- close: function () {
- return cordova.plugins.Keyboard.close();
- },
- show: function () {
- return cordova.plugins.Keyboard.show();
- },
- disableScroll: function (bool) {
- return cordova.plugins.Keyboard.disableScroll(bool);
- },
- isVisible: function () {
- return cordova.plugins.Keyboard.isVisible;
- },
- clearShowWatch: function () {
- document.removeEventListener('native.keyboardshow', keyboardShowEvent);
- $rootScope.$$listeners['$cordovaKeyboard:show'] = [];
- },
- clearHideWatch: function () {
- document.removeEventListener('native.keyboardhide', keyboardHideEvent);
- $rootScope.$$listeners['$cordovaKeyboard:hide'] = [];
- }
- };
- }]);
- // install : cordova plugin add https://github.com/shazron/KeychainPlugin.git
- // link : https://github.com/shazron/KeychainPlugin
- /* globals Keychain: true */
- angular.module('ngCordova.plugins.keychain', [])
- .factory('$cordovaKeychain', ['$q', function ($q) {
- return {
- getForKey: function (key, serviceName) {
- var defer = $q.defer(),
- kc = new Keychain();
- kc.getForKey(defer.resolve, defer.reject, key, serviceName);
- return defer.promise;
- },
- setForKey: function (key, serviceName, value) {
- var defer = $q.defer(),
- kc = new Keychain();
- kc.setForKey(defer.resolve, defer.reject, key, serviceName, value);
- return defer.promise;
- },
- removeForKey: function (key, serviceName) {
- var defer = $q.defer(),
- kc = new Keychain();
- kc.removeForKey(defer.resolve, defer.reject, key, serviceName);
- return defer.promise;
- }
- };
- }]);
- // install : cordova plugin add uk.co.workingedge.phonegap.plugin.launchnavigator
- // link : https://github.com/dpa99c/phonegap-launch-navigator
- /* globals launchnavigator: true */
- angular.module('ngCordova.plugins.launchNavigator', [])
- .factory('$cordovaLaunchNavigator', ['$q', function ($q) {
- return {
- navigate: function (destination, start, options) {
- var q = $q.defer();
- launchnavigator.navigate(
- destination,
- start,
- function (){
- q.resolve();
- },
- function (error){
- q.reject(error);
- },
- options);
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/katzer/cordova-plugin-local-notifications.git
- // link : https://github.com/katzer/cordova-plugin-local-notifications
- angular.module('ngCordova.plugins.localNotification', [])
- .factory('$cordovaLocalNotification', ['$q', '$window', '$rootScope', '$timeout', function ($q, $window, $rootScope, $timeout) {
- document.addEventListener('deviceready', function () {
- if ($window.cordova &&
- $window.cordova.plugins &&
- $window.cordova.plugins.notification &&
- $window.cordova.plugins.notification.local) {
- // ----- "Scheduling" events
- // A local notification was scheduled
- $window.cordova.plugins.notification.local.on('schedule', function (notification, state) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaLocalNotification:schedule', notification, state);
- });
- });
- // A local notification was triggered
- $window.cordova.plugins.notification.local.on('trigger', function (notification, state) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaLocalNotification:trigger', notification, state);
- });
- });
- // ----- "Update" events
- // A local notification was updated
- $window.cordova.plugins.notification.local.on('update', function (notification, state) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaLocalNotification:update', notification, state);
- });
- });
- // ----- "Clear" events
- // A local notification was cleared from the notification center
- $window.cordova.plugins.notification.local.on('clear', function (notification, state) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaLocalNotification:clear', notification, state);
- });
- });
- // All local notifications were cleared from the notification center
- $window.cordova.plugins.notification.local.on('clearall', function (state) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaLocalNotification:clearall', state);
- });
- });
- // ----- "Cancel" events
- // A local notification was cancelled
- $window.cordova.plugins.notification.local.on('cancel', function (notification, state) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaLocalNotification:cancel', notification, state);
- });
- });
- // All local notifications were cancelled
- $window.cordova.plugins.notification.local.on('cancelall', function (state) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaLocalNotification:cancelall', state);
- });
- });
- // ----- Other events
- // A local notification was clicked
- $window.cordova.plugins.notification.local.on('click', function (notification, state) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaLocalNotification:click', notification, state);
- });
- });
- }
- }, false);
- return {
- schedule: function (options, scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.schedule(options, function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- add: function (options, scope) {
- console.warn('Deprecated: use "schedule" instead.');
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.schedule(options, function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- update: function (options, scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.update(options, function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- clear: function (ids, scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.clear(ids, function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- clearAll: function (scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.clearAll(function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- cancel: function (ids, scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.cancel(ids, function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- cancelAll: function (scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.cancelAll(function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- isPresent: function (id, scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.isPresent(id, function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- isScheduled: function (id, scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.isScheduled(id, function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- isTriggered: function (id, scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.isTriggered(id, function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- hasPermission: function (scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.hasPermission(function (result) {
- if (result) {
- q.resolve(result);
- } else {
- q.reject(result);
- }
- }, scope);
- return q.promise;
- },
- registerPermission: function (scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.registerPermission(function (result) {
- if (result) {
- q.resolve(result);
- } else {
- q.reject(result);
- }
- }, scope);
- return q.promise;
- },
- promptForPermission: function (scope) {
- console.warn('Deprecated: use "registerPermission" instead.');
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.registerPermission(function (result) {
- if (result) {
- q.resolve(result);
- } else {
- q.reject(result);
- }
- }, scope);
- return q.promise;
- },
- getAllIds: function (scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.getAllIds(function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- getIds: function (scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.getIds(function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- getScheduledIds: function (scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.getScheduledIds(function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- getTriggeredIds: function (scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.getTriggeredIds(function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- get: function (ids, scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.get(ids, function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- getAll: function (scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.getAll(function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- getScheduled: function (ids, scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.getScheduled(ids, function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- getAllScheduled: function (scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.getAllScheduled(function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- getTriggered: function (ids, scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.getTriggered(ids, function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- getAllTriggered: function (scope) {
- var q = $q.defer();
- scope = scope || null;
- $window.cordova.plugins.notification.local.getAllTriggered(function (result) {
- q.resolve(result);
- }, scope);
- return q.promise;
- },
- getDefaults: function () {
- return $window.cordova.plugins.notification.local.getDefaults();
- },
- setDefaults: function (Object) {
- $window.cordova.plugins.notification.local.setDefaults(Object);
- }
- };
- }]);
- // install : cordova plugin add https://github.com/floatinghotpot/cordova-plugin-mmedia.git
- // link : https://github.com/floatinghotpot/cordova-plugin-mmedia
- angular.module('ngCordova.plugins.mMediaAds', [])
- .factory('$cordovaMMediaAds', ['$q', '$window', function ($q, $window) {
- return {
- setOptions: function (options) {
- var d = $q.defer();
- $window.mMedia.setOptions(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- createBanner: function (options) {
- var d = $q.defer();
- $window.mMedia.createBanner(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- removeBanner: function () {
- var d = $q.defer();
- $window.mMedia.removeBanner(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showBanner: function (position) {
- var d = $q.defer();
- $window.mMedia.showBanner(position, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showBannerAtXY: function (x, y) {
- var d = $q.defer();
- $window.mMedia.showBannerAtXY(x, y, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- hideBanner: function () {
- var d = $q.defer();
- $window.mMedia.hideBanner(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- prepareInterstitial: function (options) {
- var d = $q.defer();
- $window.mMedia.prepareInterstitial(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showInterstitial: function () {
- var d = $q.defer();
- $window.mMedia.showInterstitial(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-media
- // link : https://github.com/apache/cordova-plugin-media
- /* globals Media: true */
- angular.module('ngCordova.plugins.media', [])
- .service('NewMedia', ['$q', '$interval', function ($q, $interval) {
- var q, q2, q3, mediaStatus = null, mediaPosition = -1, mediaTimer, mediaDuration = -1;
- function setTimer(media) {
- if (angular.isDefined(mediaTimer)) {
- return;
- }
- mediaTimer = $interval(function () {
- if (mediaDuration < 0) {
- mediaDuration = media.getDuration();
- if (q && mediaDuration > 0) {
- q.notify({duration: mediaDuration});
- }
- }
- media.getCurrentPosition(
- // success callback
- function (position) {
- if (position > -1) {
- mediaPosition = position;
- }
- },
- // error callback
- function (e) {
- console.log('Error getting pos=' + e);
- });
- if (q) {
- q.notify({position: mediaPosition});
- }
- }, 1000);
- }
- function clearTimer() {
- if (angular.isDefined(mediaTimer)) {
- $interval.cancel(mediaTimer);
- mediaTimer = undefined;
- }
- }
- function resetValues() {
- mediaPosition = -1;
- mediaDuration = -1;
- }
- function NewMedia(src) {
- this.media = new Media(src,
- function (success) {
- clearTimer();
- resetValues();
- q.resolve(success);
- }, function (error) {
- clearTimer();
- resetValues();
- q.reject(error);
- }, function (status) {
- mediaStatus = status;
- q.notify({status: mediaStatus});
- });
- }
- // iOS quirks :
- // - myMedia.play({ numberOfLoops: 2 }) -> looping
- // - myMedia.play({ playAudioWhenScreenIsLocked : false })
- NewMedia.prototype.play = function (options) {
- q = $q.defer();
- if (typeof options !== 'object') {
- options = {};
- }
- this.media.play(options);
- setTimer(this.media);
- return q.promise;
- };
- NewMedia.prototype.pause = function () {
- clearTimer();
- this.media.pause();
- };
- NewMedia.prototype.stop = function () {
- this.media.stop();
- };
- NewMedia.prototype.release = function () {
- this.media.release();
- this.media = undefined;
- };
- NewMedia.prototype.seekTo = function (timing) {
- this.media.seekTo(timing);
- };
- NewMedia.prototype.setVolume = function (volume) {
- this.media.setVolume(volume);
- };
- NewMedia.prototype.startRecord = function () {
- this.media.startRecord();
- };
- NewMedia.prototype.stopRecord = function () {
- this.media.stopRecord();
- };
- NewMedia.prototype.currentTime = function () {
- q2 = $q.defer();
- this.media.getCurrentPosition(function (position){
- q2.resolve(position);
- });
- return q2.promise;
- };
- NewMedia.prototype.getDuration = function () {
- q3 = $q.defer();
- this.media.getDuration(function (duration){
- q3.resolve(duration);
- });
- return q3.promise;
- };
- return NewMedia;
- }])
- .factory('$cordovaMedia', ['NewMedia', function (NewMedia) {
- return {
- newMedia: function (src) {
- return new NewMedia(src);
- }
- };
- }]);
- // install : cordova plugin add https://github.com/floatinghotpot/cordova-mobfox-pro.git
- // link : https://github.com/floatinghotpot/cordova-mobfox-pro
- angular.module('ngCordova.plugins.mobfoxAds', [])
- .factory('$cordovaMobFoxAds', ['$q', '$window', function ($q, $window) {
- return {
- setOptions: function (options) {
- var d = $q.defer();
- $window.MobFox.setOptions(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- createBanner: function (options) {
- var d = $q.defer();
- $window.MobFox.createBanner(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- removeBanner: function () {
- var d = $q.defer();
- $window.MobFox.removeBanner(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showBanner: function (position) {
- var d = $q.defer();
- $window.MobFox.showBanner(position, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showBannerAtXY: function (x, y) {
- var d = $q.defer();
- $window.MobFox.showBannerAtXY(x, y, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- hideBanner: function () {
- var d = $q.defer();
- $window.MobFox.hideBanner(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- prepareInterstitial: function (options) {
- var d = $q.defer();
- $window.MobFox.prepareInterstitial(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showInterstitial: function () {
- var d = $q.defer();
- $window.MobFox.showInterstitial(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- }
- };
- }]);
- angular.module('ngCordova.plugins', [
- 'ngCordova.plugins.3dtouch',
- 'ngCordova.plugins.actionSheet',
- 'ngCordova.plugins.adMob',
- 'ngCordova.plugins.appAvailability',
- 'ngCordova.plugins.appRate',
- 'ngCordova.plugins.appVersion',
- 'ngCordova.plugins.backgroundGeolocation',
- 'ngCordova.plugins.badge',
- 'ngCordova.plugins.barcodeScanner',
- 'ngCordova.plugins.batteryStatus',
- 'ngCordova.plugins.beacon',
- 'ngCordova.plugins.ble',
- 'ngCordova.plugins.bluetoothSerial',
- 'ngCordova.plugins.brightness',
- 'ngCordova.plugins.calendar',
- 'ngCordova.plugins.camera',
- 'ngCordova.plugins.capture',
- 'ngCordova.plugins.clipboard',
- 'ngCordova.plugins.contacts',
- 'ngCordova.plugins.datePicker',
- 'ngCordova.plugins.device',
- 'ngCordova.plugins.deviceMotion',
- 'ngCordova.plugins.deviceOrientation',
- 'ngCordova.plugins.dialogs',
- 'ngCordova.plugins.emailComposer',
- 'ngCordova.plugins.facebook',
- 'ngCordova.plugins.facebookAds',
- 'ngCordova.plugins.file',
- 'ngCordova.plugins.fileTransfer',
- 'ngCordova.plugins.fileOpener2',
- 'ngCordova.plugins.flashlight',
- 'ngCordova.plugins.flurryAds',
- 'ngCordova.plugins.ga',
- 'ngCordova.plugins.geolocation',
- 'ngCordova.plugins.globalization',
- 'ngCordova.plugins.googleAds',
- 'ngCordova.plugins.googleAnalytics',
- 'ngCordova.plugins.googleMap',
- 'ngCordova.plugins.googlePlayGame',
- 'ngCordova.plugins.googlePlus',
- 'ngCordova.plugins.healthKit',
- 'ngCordova.plugins.httpd',
- 'ngCordova.plugins.iAd',
- 'ngCordova.plugins.imagePicker',
- 'ngCordova.plugins.inAppBrowser',
- 'ngCordova.plugins.instagram',
- 'ngCordova.plugins.keyboard',
- 'ngCordova.plugins.keychain',
- 'ngCordova.plugins.launchNavigator',
- 'ngCordova.plugins.localNotification',
- 'ngCordova.plugins.media',
- 'ngCordova.plugins.mMediaAds',
- 'ngCordova.plugins.mobfoxAds',
- 'ngCordova.plugins.mopubAds',
- 'ngCordova.plugins.nativeAudio',
- 'ngCordova.plugins.network',
- 'ngCordova.plugins.pinDialog',
- 'ngCordova.plugins.preferences',
- 'ngCordova.plugins.printer',
- 'ngCordova.plugins.progressIndicator',
- 'ngCordova.plugins.push',
- 'ngCordova.plugins.push_v5',
- 'ngCordova.plugins.sms',
- 'ngCordova.plugins.socialSharing',
- 'ngCordova.plugins.spinnerDialog',
- 'ngCordova.plugins.splashscreen',
- 'ngCordova.plugins.sqlite',
- 'ngCordova.plugins.statusbar',
- 'ngCordova.plugins.toast',
- 'ngCordova.plugins.touchid',
- 'ngCordova.plugins.vibration',
- 'ngCordova.plugins.videoCapturePlus',
- 'ngCordova.plugins.zip',
- 'ngCordova.plugins.insomnia'
- ]);
- // install : cordova plugin add https://github.com/floatinghotpot/cordova-plugin-mopub.git
- // link : https://github.com/floatinghotpot/cordova-plugin-mopub
- angular.module('ngCordova.plugins.mopubAds', [])
- .factory('$cordovaMoPubAds', ['$q', '$window', function ($q, $window) {
- return {
- setOptions: function (options) {
- var d = $q.defer();
- $window.MoPub.setOptions(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- createBanner: function (options) {
- var d = $q.defer();
- $window.MoPub.createBanner(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- removeBanner: function () {
- var d = $q.defer();
- $window.MoPub.removeBanner(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showBanner: function (position) {
- var d = $q.defer();
- $window.MoPub.showBanner(position, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showBannerAtXY: function (x, y) {
- var d = $q.defer();
- $window.MoPub.showBannerAtXY(x, y, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- hideBanner: function () {
- var d = $q.defer();
- $window.MoPub.hideBanner(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- prepareInterstitial: function (options) {
- var d = $q.defer();
- $window.MoPub.prepareInterstitial(options, function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- },
- showInterstitial: function () {
- var d = $q.defer();
- $window.MoPub.showInterstitial(function () {
- d.resolve();
- }, function () {
- d.reject();
- });
- return d.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/sidneys/cordova-plugin-nativeaudio.git
- // link : https://github.com/sidneys/cordova-plugin-nativeaudio
- angular.module('ngCordova.plugins.nativeAudio', [])
- .factory('$cordovaNativeAudio', ['$q', '$window', function ($q, $window) {
- return {
- preloadSimple: function (id, assetPath) {
- var q = $q.defer();
- $window.plugins.NativeAudio.preloadSimple(id, assetPath, function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- preloadComplex: function (id, assetPath, volume, voices, delay) {
- var q = $q.defer();
- $window.plugins.NativeAudio.preloadComplex(id, assetPath, volume, voices, delay, function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- play: function (id, completeCallback) {
- var q = $q.defer();
- $window.plugins.NativeAudio.play(id, function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- }, completeCallback);
- return q.promise;
- },
- stop: function (id) {
- var q = $q.defer();
- $window.plugins.NativeAudio.stop(id, function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- loop: function (id) {
- var q = $q.defer();
- $window.plugins.NativeAudio.loop(id, function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- unload: function (id) {
- var q = $q.defer();
- $window.plugins.NativeAudio.unload(id, function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- },
- setVolumeForComplexAsset: function (id, volume) {
- var q = $q.defer();
- $window.plugins.NativeAudio.setVolumeForComplexAsset(id, volume, function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-network-information
- // link : https://github.com/apache/cordova-plugin-network-information
- /* globals Connection: true */
- angular.module('ngCordova.plugins.network', [])
- .factory('$cordovaNetwork', ['$rootScope', '$timeout', function ($rootScope, $timeout) {
- /**
- * Fires offline a event
- */
- var offlineEvent = function () {
- var networkState = navigator.connection.type;
- $timeout(function () {
- $rootScope.$broadcast('$cordovaNetwork:offline', networkState);
- });
- };
- /**
- * Fires online a event
- */
- var onlineEvent = function () {
- var networkState = navigator.connection.type;
- $timeout(function () {
- $rootScope.$broadcast('$cordovaNetwork:online', networkState);
- });
- };
- document.addEventListener('deviceready', function () {
- if (navigator.connection) {
- document.addEventListener('offline', offlineEvent, false);
- document.addEventListener('online', onlineEvent, false);
- }
- });
- return {
- getNetwork: function () {
- return navigator.connection.type;
- },
- isOnline: function () {
- var networkState = navigator.connection.type;
- return networkState !== Connection.UNKNOWN && networkState !== Connection.NONE;
- },
- isOffline: function () {
- var networkState = navigator.connection.type;
- return networkState === Connection.UNKNOWN || networkState === Connection.NONE;
- },
- clearOfflineWatch: function () {
- document.removeEventListener('offline', offlineEvent);
- $rootScope.$$listeners['$cordovaNetwork:offline'] = [];
- },
- clearOnlineWatch: function () {
- document.removeEventListener('online', onlineEvent);
- $rootScope.$$listeners['$cordovaNetwork:online'] = [];
- }
- };
- }])
- .run(['$injector', function ($injector) {
- $injector.get('$cordovaNetwork'); //ensure the factory always gets initialised
- }]);
- // install : cordova plugin add https://github.com/Paldom/PinDialog.git
- // link : https://github.com/Paldom/PinDialog
- angular.module('ngCordova.plugins.pinDialog', [])
- .factory('$cordovaPinDialog', ['$q', '$window', function ($q, $window) {
- return {
- prompt: function (message, title, buttons) {
- var q = $q.defer();
- $window.plugins.pinDialog.prompt(message, function (res) {
- q.resolve(res);
- }, title, buttons);
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-app-preferences
- // link : https://github.com/apla/me.apla.cordova.app-preferences
- angular.module('ngCordova.plugins.preferences', [])
- .factory('$cordovaPreferences', ['$window', '$q', function ($window, $q) {
- return {
-
- pluginNotEnabledMessage: 'Plugin not enabled',
-
- /**
- * Decorate the promise object.
- * @param promise The promise object.
- */
- decoratePromise: function (promise){
- promise.success = function (fn) {
- promise.then(fn);
- return promise;
- };
- promise.error = function (fn) {
- promise.then(null, fn);
- return promise;
- };
- },
-
- /**
- * Store the value of the given dictionary and key.
- * @param key The key of the preference.
- * @param value The value to set.
- * @param dict The dictionary. It's optional.
- * @returns Returns a promise.
- */
- store: function (key, value, dict) {
- var deferred = $q.defer();
- var promise = deferred.promise;
-
- function ok(value){
- deferred.resolve(value);
- }
-
- function errorCallback(error){
- deferred.reject(new Error(error));
- }
-
- if($window.plugins){
- var storeResult;
- if(arguments.length === 3){
- storeResult = $window.plugins.appPreferences.store(dict, key, value);
- } else {
- storeResult = $window.plugins.appPreferences.store(key, value);
- }
-
- storeResult.then(ok, errorCallback);
- } else {
- deferred.reject(new Error(this.pluginNotEnabledMessage));
- }
-
- this.decoratePromise(promise);
- return promise;
- },
-
- /**
- * Fetch the value by the given dictionary and key.
- * @param key The key of the preference to retrieve.
- * @param dict The dictionary. It's optional.
- * @returns Returns a promise.
- */
- fetch: function (key, dict) {
- var deferred = $q.defer();
- var promise = deferred.promise;
-
- function ok(value){
- deferred.resolve(value);
- }
-
- function errorCallback(error){
- deferred.reject(new Error(error));
- }
-
- if($window.plugins){
- var fetchResult;
- if(arguments.length === 2){
- fetchResult = $window.plugins.appPreferences.fetch(dict, key);
- } else {
- fetchResult = $window.plugins.appPreferences.fetch(key);
- }
- fetchResult.then(ok, errorCallback);
- } else {
- deferred.reject(new Error(this.pluginNotEnabledMessage));
- }
-
- this.decoratePromise(promise);
- return promise;
- },
-
- /**
- * Remove the value by the given key.
- * @param key The key of the preference to retrieve.
- * @param dict The dictionary. It's optional.
- * @returns Returns a promise.
- */
- remove: function (key, dict) {
- var deferred = $q.defer();
- var promise = deferred.promise;
-
- function ok(value){
- deferred.resolve(value);
- }
-
- function errorCallback(error){
- deferred.reject(new Error(error));
- }
-
- if($window.plugins){
- var removeResult;
- if(arguments.length === 2){
- removeResult = $window.plugins.appPreferences.remove(dict, key);
- } else {
- removeResult = $window.plugins.appPreferences.remove(key);
- }
- removeResult.then(ok, errorCallback);
- } else {
- deferred.reject(new Error(this.pluginNotEnabledMessage));
- }
-
- this.decoratePromise(promise);
- return promise;
- },
-
- /**
- * Show the application preferences.
- * @returns Returns a promise.
- */
- show: function () {
- var deferred = $q.defer();
- var promise = deferred.promise;
-
- function ok(value){
- deferred.resolve(value);
- }
-
- function errorCallback(error){
- deferred.reject(new Error(error));
- }
-
- if($window.plugins){
- $window.plugins.appPreferences.show()
- .then(ok, errorCallback);
- } else {
- deferred.reject(new Error(this.pluginNotEnabledMessage));
- }
-
- this.decoratePromise(promise);
- return promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/katzer/cordova-plugin-printer.git
- // link : https://github.com/katzer/cordova-plugin-printer
- angular.module('ngCordova.plugins.printer', [])
- .factory('$cordovaPrinter', ['$q', '$window', function ($q, $window) {
- return {
- isAvailable: function () {
- var q = $q.defer();
- $window.plugin.printer.isAvailable(function (isAvailable) {
- q.resolve(isAvailable);
- });
- return q.promise;
- },
- print: function (doc, options) {
- var q = $q.defer();
- $window.plugin.printer.print(doc, options, function () {
- q.resolve();
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/pbernasconi/cordova-progressIndicator.git
- // link : http://pbernasconi.github.io/cordova-progressIndicator/
- /* globals ProgressIndicator: true */
- angular.module('ngCordova.plugins.progressIndicator', [])
- .factory('$cordovaProgress', [function () {
- return {
- show: function (_message) {
- var message = _message || 'Please wait...';
- return ProgressIndicator.show(message);
- },
- showSimple: function (_dim) {
- var dim = _dim || false;
- return ProgressIndicator.showSimple(dim);
- },
- showSimpleWithLabel: function (_dim, _label) {
- var dim = _dim || false;
- var label = _label || 'Loading...';
- return ProgressIndicator.showSimpleWithLabel(dim, label);
- },
- showSimpleWithLabelDetail: function (_dim, _label, _detail) {
- var dim = _dim || false;
- var label = _label || 'Loading...';
- var detail = _detail || 'Please wait';
- return ProgressIndicator.showSimpleWithLabelDetail(dim, label, detail);
- },
- showDeterminate: function (_dim, _timeout) {
- var dim = _dim || false;
- var timeout = _timeout || 50000;
- return ProgressIndicator.showDeterminate(dim, timeout);
- },
- showDeterminateWithLabel: function (_dim, _timeout, _label) {
- var dim = _dim || false;
- var timeout = _timeout || 50000;
- var label = _label || 'Loading...';
- return ProgressIndicator.showDeterminateWithLabel(dim, timeout, label);
- },
- showAnnular: function (_dim, _timeout) {
- var dim = _dim || false;
- var timeout = _timeout || 50000;
- return ProgressIndicator.showAnnular(dim, timeout);
- },
- showAnnularWithLabel: function (_dim, _timeout, _label) {
- var dim = _dim || false;
- var timeout = _timeout || 50000;
- var label = _label || 'Loading...';
- return ProgressIndicator.showAnnularWithLabel(dim, timeout, label);
- },
- showBar: function (_dim, _timeout) {
- var dim = _dim || false;
- var timeout = _timeout || 50000;
- return ProgressIndicator.showBar(dim, timeout);
- },
- showBarWithLabel: function (_dim, _timeout, _label) {
- var dim = _dim || false;
- var timeout = _timeout || 50000;
- var label = _label || 'Loading...';
- return ProgressIndicator.showBarWithLabel(dim, timeout, label);
- },
- showSuccess: function (_dim, _label) {
- var dim = _dim || false;
- var label = _label || 'Success';
- return ProgressIndicator.showSuccess(dim, label);
- },
- showText: function (_dim, _text, _position) {
- var dim = _dim || false;
- var text = _text || 'Warning';
- var position = _position || 'center';
- return ProgressIndicator.showText(dim, text, position);
- },
- hide: function () {
- return ProgressIndicator.hide();
- }
- };
- }]);
- // install : cordova plugin add https://github.com/phonegap-build/PushPlugin.git
- // link : https://github.com/phonegap-build/PushPlugin
- angular.module('ngCordova.plugins.push', [])
- .factory('$cordovaPush', ['$q', '$window', '$rootScope', '$timeout', function ($q, $window, $rootScope, $timeout) {
- return {
- onNotification: function (notification) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaPush:notificationReceived', notification);
- });
- },
- register: function (config) {
- var q = $q.defer();
- var injector;
- if (config !== undefined && config.ecb === undefined) {
- if (document.querySelector('[ng-app]') === null) {
- injector = 'document.body';
- }
- else {
- injector = 'document.querySelector(\'[ng-app]\')';
- }
- config.ecb = 'angular.element(' + injector + ').injector().get(\'$cordovaPush\').onNotification';
- }
- $window.plugins.pushNotification.register(function (token) {
- q.resolve(token);
- }, function (error) {
- q.reject(error);
- }, config);
- return q.promise;
- },
- unregister: function (options) {
- var q = $q.defer();
- $window.plugins.pushNotification.unregister(function (result) {
- q.resolve(result);
- }, function (error) {
- q.reject(error);
- }, options);
- return q.promise;
- },
- // iOS only
- setBadgeNumber: function (number) {
- var q = $q.defer();
- $window.plugins.pushNotification.setApplicationIconBadgeNumber(function (result) {
- q.resolve(result);
- }, function (error) {
- q.reject(error);
- }, number);
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add phonegap-plugin-push
- // link : https://github.com/phonegap/phonegap-plugin-push
- angular.module('ngCordova.plugins.push_v5', [])
- .factory('$cordovaPushV5',['$q', '$rootScope', '$timeout', function ($q, $rootScope, $timeout) {
- /*global PushNotification*/
- var push;
- return {
- initialize : function (options) {
- var q = $q.defer();
- push = PushNotification.init(options);
- q.resolve(push);
- return q.promise;
- },
- onNotification : function () {
- $timeout(function () {
- push.on('notification', function (notification) {
- $rootScope.$emit('$cordovaPushV5:notificationReceived', notification);
- });
- });
- },
- onError : function () {
- $timeout(function () {
- push.on('error', function (error) { $rootScope.$emit('$cordovaPushV5:errorOccurred', error);});
- });
- },
- register : function () {
- var q = $q.defer();
- if (push === undefined) {
- q.reject(new Error('init must be called before any other operation'));
- } else {
- push.on('registration', function (data) {
- q.resolve(data.registrationId);
- });
- }
- return q.promise;
- },
- unregister : function () {
- var q = $q.defer();
- if (push === undefined) {
- q.reject(new Error('init must be called before any other operation'));
- } else {
- push.unregister(function (success) {
- q.resolve(success);
- },function (error) {
- q.reject(error);
- });
- }
- return q.promise;
- },
- getBadgeNumber : function () {
- var q = $q.defer();
- if (push === undefined) {
- q.reject(new Error('init must be called before any other operation'));
- } else {
- push.getApplicationIconBadgeNumber(function (success) {
- q.resolve(success);
- }, function (error) {
- q.reject(error);
- });
- }
- return q.promise;
- },
- setBadgeNumber : function (number) {
- var q = $q.defer();
- if (push === undefined) {
- q.reject(new Error('init must be called before any other operation'));
- } else {
- push.setApplicationIconBadgeNumber(function (success) {
- q.resolve(success);
- }, function (error) {
- q.reject(error);
- }, number);
- }
- return q.promise;
- },
- finish: function (){
- var q = $q.defer();
- if (push === undefined) {
- q.reject(new Error('init must be called before any other operation'));
- } else {
- push.finish(function (success) {
- q.resolve(success);
- }, function (error) {
- q.reject(error);
- });
- }
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-recentscontrol
- // link : https://github.com/smcpjames/cordova-plugin-recentscontrol
- /* globals RecentsControl: true */
- angular.module('ngCordova.plugins.recentsControl', [])
- .factory('$cordovaRecents', function () {
- return {
- setColor: function (color) {
- return RecentsControl.setColor(color);
- },
- setDescription: function (desc) {
- return RecentsControl.setDescription(desc);
- },
- setOptions: function (colorStr, desc) {
- return RecentsControl.setOptions(colorStr, desc);
- }
- };
- });
- // install : cordova plugin add https://github.com/gitawego/cordova-screenshot.git
- // link : https://github.com/gitawego/cordova-screenshot
- angular.module('ngCordova.plugins.screenshot', [])
- .factory('$cordovaScreenshot', ['$q', function ($q) {
- return {
- captureToFile: function (opts) {
- var options = opts || {};
- var extension = options.extension || 'jpg';
- var quality = options.quality || '100';
- var defer = $q.defer();
- if (!navigator.screenshot) {
- defer.resolve(null);
- return defer.promise;
- }
- navigator.screenshot.save(function (error, res) {
- if (error) {
- defer.reject(error);
- } else {
- defer.resolve(res.filePath);
- }
- }, extension, quality, options.filename);
- return defer.promise;
- },
- captureToUri: function (opts) {
- var options = opts || {};
- var extension = options.extension || 'jpg';
- var quality = options.quality || '100';
- var defer = $q.defer();
- if (!navigator.screenshot) {
- defer.resolve(null);
- return defer.promise;
- }
- navigator.screenshot.URI(function (error, res) {
- if (error) {
- defer.reject(error);
- } else {
- defer.resolve(res.URI);
- }
- }, extension, quality, options.filename);
- return defer.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/xseignard/cordovarduino.git
- // link : https://github.com/xseignard/cordovarduino
- /* globals serial: true */
- angular.module('ngCordova.plugins.serial', [])
- .factory('$cordovaSerial', ['$q', function ($q) {
- var serialService = {};
- serialService.requestPermission = function requestPermission(options) {
- var q = $q.defer();
- serial.requestPermission(options, function success() {
- q.resolve();
- }, function error(err) {
- q.reject(err);
- });
- return q.promise;
- };
- serialService.open = function(options) {
- var q = $q.defer();
- serial.open(options, function success() {
- q.resolve();
- }, function error(err) {
- q.reject(err);
- });
- return q.promise;
- };
- serialService.write = function(data) {
- var q = $q.defer();
- serial.write(data, function success() {
- q.resolve();
- }, function error(err) {
- q.reject(err);
- });
- return q.promise;
- };
- serialService.writeHex = function(data) {
- var q = $q.defer();
- serial.writeHex(data, function success() {
- q.resolve();
- }, function error(err) {
- q.reject(err);
- });
- return q.promise;
- };
- serialService.read = function() {
- var q = $q.defer();
- serial.read(function success(buffer) {
- var view = new Uint8Array(buffer);
- q.resolve(view);
- }, function error(err) {
- q.reject(err);
- });
- return q.promise;
- };
- serialService.registerReadCallback = function(successCallback, errorCallback) {
- serial.registerReadCallback(function success(buffer) {
- var view = new Uint8Array(buffer);
- successCallback(view);
- }, errorCallback);
- };
- serialService.close = function() {
- var q = $q.defer();
- serial.close(function success() {
- q.resolve();
- }, function error(err) {
- q.reject(err);
- });
- return q.promise;
- };
- return serialService;
- }]);
- // install : cordova plugin add https://github.com/cordova-sms/cordova-sms-plugin.git
- // link : https://github.com/cordova-sms/cordova-sms-plugin
- /* globals sms: true */
- angular.module('ngCordova.plugins.sms', [])
- .factory('$cordovaSms', ['$q', function ($q) {
- return {
- send: function (number, message, options) {
- var q = $q.defer();
- sms.send(number, message, options, function (res) {
- q.resolve(res);
- }, function (err) {
- q.reject(err);
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin.git
- // link : https://github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin
- // NOTE: shareViaEmail -> if user cancels sharing email, success is still called
- // TODO: add support for iPad
- angular.module('ngCordova.plugins.socialSharing', [])
- .factory('$cordovaSocialSharing', ['$q', '$window', function ($q, $window) {
- return {
- share: function (message, subject, file, link) {
- var q = $q.defer();
- subject = subject || null;
- file = file || null;
- link = link || null;
- $window.plugins.socialsharing.share(message, subject, file, link, function () {
- q.resolve(true);
- }, function () {
- q.reject(false);
- });
- return q.promise;
- },
- shareWithOptions: function (options) {
- var q = $q.defer();
- $window.plugins.socialsharing.shareWithOptions(options, function () {
- q.resolve(true);
- }, function () {
- q.reject(false);
- });
- return q.promise;
- },
- shareViaTwitter: function (message, file, link) {
- var q = $q.defer();
- file = file || null;
- link = link || null;
- $window.plugins.socialsharing.shareViaTwitter(message, file, link, function () {
- q.resolve(true);
- }, function () {
- q.reject(false);
- });
- return q.promise;
- },
- shareViaWhatsApp: function (message, file, link) {
- var q = $q.defer();
- file = file || null;
- link = link || null;
- $window.plugins.socialsharing.shareViaWhatsApp(message, file, link, function () {
- q.resolve(true);
- }, function () {
- q.reject(false);
- });
- return q.promise;
- },
- shareViaFacebook: function (message, file, link) {
- var q = $q.defer();
- message = message || null;
- file = file || null;
- link = link || null;
- $window.plugins.socialsharing.shareViaFacebook(message, file, link, function () {
- q.resolve(true);
- }, function () {
- q.reject(false);
- });
- return q.promise;
- },
- shareViaFacebookWithPasteMessageHint: function (message, file, link, pasteMessageHint) {
- var q = $q.defer();
- file = file || null;
- link = link || null;
- $window.plugins.socialsharing.shareViaFacebookWithPasteMessageHint(message, file, link, pasteMessageHint, function () {
- q.resolve(true);
- }, function () {
- q.reject(false);
- });
- return q.promise;
- },
- shareViaSMS: function (message, commaSeparatedPhoneNumbers) {
- var q = $q.defer();
- $window.plugins.socialsharing.shareViaSMS(message, commaSeparatedPhoneNumbers, function () {
- q.resolve(true);
- }, function () {
- q.reject(false);
- });
- return q.promise;
- },
- shareViaEmail: function (message, subject, toArr, ccArr, bccArr, fileArr) {
- var q = $q.defer();
- toArr = toArr || null;
- ccArr = ccArr || null;
- bccArr = bccArr || null;
- fileArr = fileArr || null;
- $window.plugins.socialsharing.shareViaEmail(message, subject, toArr, ccArr, bccArr, fileArr, function () {
- q.resolve(true);
- }, function () {
- q.reject(false);
- });
- return q.promise;
- },
- shareVia: function (via, message, subject, file, link) {
- var q = $q.defer();
- message = message || null;
- subject = subject || null;
- file = file || null;
- link = link || null;
- $window.plugins.socialsharing.shareVia(via, message, subject, file, link, function () {
- q.resolve(true);
- }, function () {
- q.reject(false);
- });
- return q.promise;
- },
- canShareViaEmail: function () {
- var q = $q.defer();
- $window.plugins.socialsharing.canShareViaEmail(function () {
- q.resolve(true);
- }, function () {
- q.reject(false);
- });
- return q.promise;
- },
- canShareVia: function (via, message, subject, file, link) {
- var q = $q.defer();
- $window.plugins.socialsharing.canShareVia(via, message, subject, file, link, function (success) {
- q.resolve(success);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- available: function () {
- var q = $q.defer();
- window.plugins.socialsharing.available(function (isAvailable) {
- if (isAvailable) {
- q.resolve();
- }
- else {
- q.reject();
- }
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/Paldom/SpinnerDialog.git
- // link : https://github.com/Paldom/SpinnerDialog
- angular.module('ngCordova.plugins.spinnerDialog', [])
- .factory('$cordovaSpinnerDialog', ['$window', function ($window) {
- return {
- show: function (title, message, fixed, iosOptions) {
- fixed = fixed || false;
- return $window.plugins.spinnerDialog.show(title, message, fixed, iosOptions);
- },
- hide: function () {
- return $window.plugins.spinnerDialog.hide();
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-splashscreen
- // link : https://github.com/apache/cordova-plugin-splashscreen
- angular.module('ngCordova.plugins.splashscreen', [])
- .factory('$cordovaSplashscreen', [function () {
- return {
- hide: function () {
- return navigator.splashscreen.hide();
- },
- show: function () {
- return navigator.splashscreen.show();
- }
- };
- }]);
- // install : cordova plugin add https://github.com/litehelpers/Cordova-sqlite-storage.git
- // link : https://github.com/litehelpers/Cordova-sqlite-storage
- angular.module('ngCordova.plugins.sqlite', [])
- .factory('$cordovaSQLite', ['$q', '$window', function ($q, $window) {
- return {
- openDB: function (options, background) {
- if (angular.isObject(options) && !angular.isString(options)) {
- if (typeof background !== 'undefined') {
- options.bgType = background;
- }
- return $window.sqlitePlugin.openDatabase(options);
- }
- return $window.sqlitePlugin.openDatabase({
- name: options,
- bgType: background
- });
- },
- execute: function (db, query, binding) {
- var q = $q.defer();
- db.transaction(function (tx) {
- tx.executeSql(query, binding, function (tx, result) {
- q.resolve(result);
- },
- function (transaction, error) {
- q.reject(error);
- });
- });
- return q.promise;
- },
- insertCollection: function (db, query, bindings) {
- var q = $q.defer();
- var coll = bindings.slice(0); // clone collection
- db.transaction(function (tx) {
- (function insertOne() {
- var record = coll.splice(0, 1)[0]; // get the first record of coll and reduce coll by one
- try {
- tx.executeSql(query, record, function (tx, result) {
- if (coll.length === 0) {
- q.resolve(result);
- } else {
- insertOne();
- }
- }, function (transaction, error) {
- q.reject(error);
- return;
- });
- } catch (exception) {
- q.reject(exception);
- }
- })();
- });
- return q.promise;
- },
- nestedExecute: function (db, query1, query2, binding1, binding2) {
- var q = $q.defer();
- db.transaction(function (tx) {
- tx.executeSql(query1, binding1, function (tx, result) {
- q.resolve(result);
- tx.executeSql(query2, binding2, function (tx, res) {
- q.resolve(res);
- });
- });
- },
- function (transaction, error) {
- q.reject(error);
- });
- return q.promise;
- },
- deleteDB: function (dbName) {
- var q = $q.defer();
- $window.sqlitePlugin.deleteDatabase(dbName, function (success) {
- q.resolve(success);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-statusbar
- // link : https://github.com/apache/cordova-plugin-statusbar
- /* globals StatusBar: true */
- angular.module('ngCordova.plugins.statusbar', [])
- .factory('$cordovaStatusbar', [function () {
- return {
- /**
- * @param {boolean} bool
- */
- overlaysWebView: function (bool) {
- return StatusBar.overlaysWebView(!!bool);
- },
- STYLES: {
- DEFAULT: 0,
- LIGHT_CONTENT: 1,
- BLACK_TRANSLUCENT: 2,
- BLACK_OPAQUE: 3
- },
- /**
- * @param {number} style
- */
- style: function (style) {
- switch (style) {
- // Default
- case 0:
- return StatusBar.styleDefault();
- // LightContent
- case 1:
- return StatusBar.styleLightContent();
- // BlackTranslucent
- case 2:
- return StatusBar.styleBlackTranslucent();
- // BlackOpaque
- case 3:
- return StatusBar.styleBlackOpaque();
- default:
- return StatusBar.styleDefault();
- }
- },
- // supported names:
- // black, darkGray, lightGray, white, gray, red, green,
- // blue, cyan, yellow, magenta, orange, purple, brown
- styleColor: function (color) {
- return StatusBar.backgroundColorByName(color);
- },
- styleHex: function (colorHex) {
- return StatusBar.backgroundColorByHexString(colorHex);
- },
- hide: function () {
- return StatusBar.hide();
- },
- show: function () {
- return StatusBar.show();
- },
- isVisible: function () {
- return StatusBar.isVisible;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/EddyVerbruggen/Toast-PhoneGap-Plugin.git
- // link : https://github.com/EddyVerbruggen/Toast-PhoneGap-Plugin
- angular.module('ngCordova.plugins.toast', [])
- .factory('$cordovaToast', ['$q', '$window', function ($q, $window) {
- return {
- showShortTop: function (message) {
- var q = $q.defer();
- $window.plugins.toast.showShortTop(message, function (response) {
- q.resolve(response);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- showShortCenter: function (message) {
- var q = $q.defer();
- $window.plugins.toast.showShortCenter(message, function (response) {
- q.resolve(response);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- showShortBottom: function (message) {
- var q = $q.defer();
- $window.plugins.toast.showShortBottom(message, function (response) {
- q.resolve(response);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- showLongTop: function (message) {
- var q = $q.defer();
- $window.plugins.toast.showLongTop(message, function (response) {
- q.resolve(response);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- showLongCenter: function (message) {
- var q = $q.defer();
- $window.plugins.toast.showLongCenter(message, function (response) {
- q.resolve(response);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- showLongBottom: function (message) {
- var q = $q.defer();
- $window.plugins.toast.showLongBottom(message, function (response) {
- q.resolve(response);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- showWithOptions: function (options) {
- var q = $q.defer();
- $window.plugins.toast.showWithOptions(options, function (response) {
- q.resolve(response);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- show: function (message, duration, position) {
- var q = $q.defer();
- $window.plugins.toast.show(message, duration, position, function (response) {
- q.resolve(response);
- }, function (error) {
- q.reject(error);
- });
- return q.promise;
- },
- hide: function () {
- var q = $q.defer();
- try {
- $window.plugins.toast.hide();
- q.resolve();
- } catch (error) {
- q.reject(error && error.message);
- }
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add https://github.com/leecrossley/cordova-plugin-touchid.git
- // link : https://github.com/leecrossley/cordova-plugin-touchid
- /* globals touchid: true */
- angular.module('ngCordova.plugins.touchid', [])
- .factory('$cordovaTouchID', ['$q', function ($q) {
- return {
- checkSupport: function () {
- var defer = $q.defer();
- if (!window.cordova) {
- defer.reject('Not supported without cordova.js');
- } else {
- touchid.checkSupport(function (value) {
- defer.resolve(value);
- }, function (err) {
- defer.reject(err);
- });
- }
- return defer.promise;
- },
- authenticate: function (authReasonText) {
- var defer = $q.defer();
- if (!window.cordova) {
- defer.reject('Not supported without cordova.js');
- } else {
- touchid.authenticate(function (value) {
- defer.resolve(value);
- }, function (err) {
- defer.reject(err);
- }, authReasonText);
- }
- return defer.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-tts
- // link : https://github.com/smcpjames/cordova-plugin-tts
- /* globals TTS: true */
- angular.module('ngCordova.plugins.tts', [])
- .factory('$cordovaTTS', function () {
- return {
- speak: function (text, onfulfilled, onrejected) {
- return TTS.speak(text, onfulfilled, onrejected);
- }
- };
- });
- // install : cordova plugin add https://github.com/aerogear/aerogear-cordova-push.git
- // link : https://github.com/aerogear/aerogear-cordova-push
- angular.module('ngCordova.plugins.upsPush', [])
- .factory('$cordovaUpsPush', ['$q', '$window', '$rootScope', '$timeout', function ($q, $window, $rootScope, $timeout) {
- return {
- register: function (config) {
- var q = $q.defer();
- $window.push.register(function (notification) {
- $timeout(function () {
- $rootScope.$broadcast('$cordovaUpsPush:notificationReceived', notification);
- });
- }, function () {
- q.resolve();
- }, function (error) {
- q.reject(error);
- }, config);
- return q.promise;
- },
- unregister: function (options) {
- var q = $q.defer();
- $window.push.unregister(function () {
- q.resolve();
- }, function (error) {
- q.reject(error);
- }, options);
- return q.promise;
- },
- // iOS only
- setBadgeNumber: function (number) {
- var q = $q.defer();
- $window.push.setApplicationIconBadgeNumber(function () {
- q.resolve();
- }, number);
- return q.promise;
- }
- };
- }]);
- // install : cordova plugin add cordova-plugin-vibration
- // link : https://github.com/apache/cordova-plugin-vibration
- angular.module('ngCordova.plugins.vibration', [])
- .factory('$cordovaVibration', [function () {
- return {
- vibrate: function (times) {
- return navigator.notification.vibrate(times);
- },
- vibrateWithPattern: function (pattern, repeat) {
- return navigator.notification.vibrateWithPattern(pattern, repeat);
- },
- cancelVibration: function () {
- return navigator.notification.cancelVibration();
- }
- };
- }]);
- // install : cordova plugin add https://github.com/EddyVerbruggen/VideoCapturePlus-PhoneGap-Plugin.git
- // link : https://github.com/EddyVerbruggen/VideoCapturePlus-PhoneGap-Plugin
- angular.module('ngCordova.plugins.videoCapturePlus', [])
- .provider('$cordovaVideoCapturePlus', [function () {
- var defaultOptions = {};
- /**
- * the nr of videos to record, default 1 (on iOS always 1)
- *
- * @param limit
- */
- this.setLimit = function setLimit(limit) {
- defaultOptions.limit = limit;
- };
- /**
- * max duration in seconds, default 0, which is 'forever'
- *
- * @param seconds
- */
- this.setMaxDuration = function setMaxDuration(seconds) {
- defaultOptions.duration = seconds;
- };
- /**
- * set to true to override the default low quality setting
- *
- * @param {Boolean} highquality
- */
- this.setHighQuality = function setHighQuality(highquality) {
- defaultOptions.highquality = highquality;
- };
- /**
- * you'll want to sniff the user-Agent/device and pass the best overlay based on that..
- * set to true to override the default backfacing camera setting. iOS: works fine, Android: YMMV (#18)
- *
- * @param {Boolean} frontcamera
- */
- this.useFrontCamera = function useFrontCamera(frontcamera) {
- defaultOptions.frontcamera = frontcamera;
- };
- /**
- * put the png in your www folder
- *
- * @param {String} imageUrl
- */
- this.setPortraitOverlay = function setPortraitOverlay(imageUrl) {
- defaultOptions.portraitOverlay = imageUrl;
- };
- /**
- *
- * @param {String} imageUrl
- */
- this.setLandscapeOverlay = function setLandscapeOverlay(imageUrl) {
- defaultOptions.landscapeOverlay = imageUrl;
- };
- /**
- * iOS only
- *
- * @param text
- */
- this.setOverlayText = function setOverlayText(text) {
- defaultOptions.overlayText = text;
- };
- this.$get = ['$q', '$window', function ($q, $window) {
- return {
- captureVideo: function (options) {
- var q = $q.defer();
- if (!$window.plugins.videocaptureplus) {
- q.resolve(null);
- return q.promise;
- }
- $window.plugins.videocaptureplus.captureVideo(q.resolve, q.reject,
- angular.extend({}, defaultOptions, options));
- return q.promise;
- }
- };
- }];
- }]);
- // install : cordova plugin add https://github.com/MobileChromeApps/zip.git
- // link : https://github.com/MobileChromeApps/zip
- angular.module('ngCordova.plugins.zip', [])
- .factory('$cordovaZip', ['$q', '$window', function ($q, $window) {
- return {
- unzip: function (source, destination) {
- var q = $q.defer();
- $window.zip.unzip(source, destination, function (isError) {
- if (isError === 0) {
- q.resolve();
- } else {
- q.reject();
- }
- }, function (progressEvent) {
- q.notify(progressEvent);
- });
- return q.promise;
- }
- };
- }]);
- })();
|