From 37da206ab8aab13b9cdd8fec1323395889a34294 Mon Sep 17 00:00:00 2001 From: dlmv Date: Mon, 9 Sep 2013 14:09:54 +0400 Subject: [PATCH] lingvo api --- assets/dictionaries/main.xml | 5 +++ libs/LingvoIntegration_2.5.2.12.jar | Bin 0 -> 7908 bytes .../android/fbreader/DictionaryUtil.java | 31 ++++++++++++++---- 3 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 libs/LingvoIntegration_2.5.2.12.jar diff --git a/assets/dictionaries/main.xml b/assets/dictionaries/main.xml index a55e923b2..6c7202c88 100644 --- a/assets/dictionaries/main.xml +++ b/assets/dictionaries/main.xml @@ -35,6 +35,11 @@ pattern="%s" list="always" /> + O1xbpXIR8ATHChYJgU22hpN zmSk5{ljHo{4*+QVW_lf9^~F?@h1TTC-2Un&zPf)mRh3jzl#|uc=1`S8R2>{pQD*0O ziL1=cGCVj^t;sdPGr!_8C{1{uO+jT?K?e|l!oYrnaTp$*192QWBt7~$yf%=RDLC@s?cowk2Lael# zSbSHWIcW?DQZr|+WVKO@B^$sZ<-6fQg2OUbi@vMplAsg;$9H^wAbL$+Q!;* zP5<)K*%to;5?k^kb1OhGs=ft~c?*uvDScdO-3X(=S;|9Q>jG26JTKSo%wOAmZVnvA z_zYe@flS&_H4`FuENfzCH67K0g5BZaY05?5DIM(e%=*EqU@{yFYNFYsiViNK$iw{P z$?XJPj$-4>5;>o^iasuCbq9Ep*4TDGEIUglr!OKn6-R5o1g6awIV1RXtg3QFcP4@6 zsitP5wVsZ$92(cuKRZb2!mjsVv%L;8$M#!-->)Y$BJpr{i z(pHriqQA{rT2?%yM%qdZ4jmItcoYoh3Nx;O3p{Rr498+M;qsyBR4_Zt(R~G429`m6 z+Q`P>zpkwoURjpQYzh|KZD;5)z)g=^uIdAtR}(M97&x5S7(hM2a{V>D{xem z6&BUO3rc_OoQ$z@4$^pBj?m0U-&Avr9izRQ`KtoTp!UNh>$gKb@riwE=z=T=x2M#ibws+;?eCD@%=~UiCiVms zs%uW(c)o${@jxUWL`qNcO(sJb7CadiRU&}K9QpD5*X&&xd_TqqcLuZYFR}*U1(>K^ z3GI5}JlF6E@v%fyd{yUfE`kH;FPE;V6PS{DC3q>#Q+ADC8yVfrZ?EpEM{85{m7j0! zI!0?#KbM#f?TSV7S2>rNe|GeW=$;cVN1SD}oSemFr+Nh~d$R25$mn(7XQLPGgsr&U zN?sU`OD&?@$|Z;>AZF0nlG!ABGgWNOYC~O` zndOgKzDL)N8ipzMAXX~MwOHm-5tNpzT~({ zH6#}SJb+9=DqYHmbm~!M+M^-~)?6u&p*|}UH<+bIu1>44{KY8dd^SNUPDnQPfWh2` z*pq+&zkv6E*~MEjgo}?MTu($sOqi-eCyy9>%z-1X&FLEmo0hSiSns`isbODpD0Rl4 zO+gOn9i8(TVCxK{Gf8_v>SD;;=iFE$CCuP!#oPEUqI0f>EELG2azo2Cer<-mTvhFw zUX6`K!%4vj%He5SRh6wU2VYTPtp$*JogvmxIfG^4F^K9jW8VQEu2x(M1-O5*nU61T zs+u3?{K@VOAn@0tC!)p+*L!4`sL{I?Xk(gweKQHPaeHC=Rt!V(0QJZ5?P5p&baF*& zaSQ-J^nVy%MVOlv%vSk~KvW%CTuybxbOwBhR%dL}v9mwPl zV5CBAGIpevbpjr=74M$fE{51H;_u0mk8GDoC^_VC3cC*bt_jZx+IaYXKK+Q=&PG!( z>a5xge4zunlWoQw$V_ryrFaygu%>dYdaR*r9{w-`C-c#^VVV9EM;RMg9gq4em+5nE zX`$ym_zerrl@2AR2zC!L@;6mw1*gU*l(W$IQCB!CTQpZGNhobu)0ufF9XQz`&V(V=#xNFY;G~|px?ZJ$%bZIxJH{0|LvhO0 zKB^;5B5mrH6s$7CkNGbns~L^>d5&8A=( zbw=EBUED`FCtQh!U83CZU7%yaaL9{!AZ z2n?K5@#tZ0P8PZ2?bkc5h!8X+FC8K>?GVF=J3P{{L-z?3@CnDZbfCL_PX_bWhID{T z9G#`gDI;Snfv}Vodmk%kYU@ERE85~M4wR1fE?FvLxH4`TM|*rP(@$egbep^nSPf~^ zRr~^7q$X=BxT|LhIB#kd&*z4kKIhuYnXYwIsx zpPC#EGpdex2#QkqxKuszv03%p9c=aVI2b_E`lC4$nA)v(FrzO~NC`}a!BlM1y6n(x zv~zi7;$U4UDt2iv3~-zG;Z&|_-BHBvwD(gY4k-#b3et4$gVFWk!SRk#csW?9ajCI_ z=@=AM64P)62RCIY2#@$p)w^14EO7KX@7@xh9YYc|B3Lh6~57zXAmq**$>Q`^glFUSyp8X=I?CQhOy z^>B(L((Z>$tp-b?(vhq!N%vf;9@g=gE_xsA`Hl+lkJ3(-q$jM7&-P)LTen5KJ*_)Z zAilwS*)(FN@No#5OLh~IjM`}p6zW|K<5U+~OsJgi89cbnQaXvyW`05jW6vJJX0#vr+E(5p5UVXut}1u>R-nL-PtnDe97&>9ZxPL$C+DKL4`LkjH6%LSTS}LxTZ%2n5J^6( zQ|Q#Y3mA@%<(ZVak{&H@3WVQDi0}_1PoF&%xGg6br+xdKOP2LoF$%Ppc`KjU%d`jc zM59AqNbCiZkXW}3j*)I?VAXb345X!K$#r&OA05X1cq*&Cq=G-bk*!L5hdNe(n#8w{ z>nMPYhxe$@qTFx#p@<0~x0n{OWdPILo8%1eveRHH#FCnlF*_D3E5=#jdODox#W?-a z#&jVMaZ1XAZ6}kwoTZual){|B@UmJGtz*1Vugcpcv!LTu;74>CyI91mA;Px_^tfB` zy~ZmamnX3pW;FOz_x4|8SC1ADbMG**GgY)(IMmkkxz17_kGMy?h++QU_hm# z@ZzZ7MAzL&bfu5EJ$0D$DZFP8yNTOvJQ~H#D6H?zQ(YBOe&DIEqj-9OYPZrzYi=VP zW9(Y^38DVEnABRzs59n5;BMsxY0mLYK{BnBtk1-kq|u()xU;h3)a!F66@EvvYMuo1 zD4i!HLnpX9Cz(_ysAv03ev(zO&qnClokSzodIgY&UfGLX3fB@CLDkRFy1D- z@R;KpcJT_hM?PU=biVl1Zro5I&$!neh^E4UU znnLraQpBl9a%u^66K0N3H31_UYcH+jxVMY@GRcX1ZB z9ie3k>T%ks&+ZhlRzzOsi2)8I*n#Bwa_tT%0S25_(=8SBKF@&2uSE5{piARgB z=RU{Q+ell_jmO->5xV^8yu*D%W=`uWg{izc?@0Zhi}TkNIZyko%Zv>1=T~a%J?@G# zqqLzZDTKC~?K#9s*>qXABOHo)3)yV0^CN0oRqN=LX%z1sd3#-(zXr#q0eCUOt0OX@ z3Qj_eaUN}lhndxDk3|D6&U&5z-aow;7&x-Ff88``-wHjp@@_0)8+Qe4-T`$EIAvCV zffYLzXTu$%`EckqVL0^xFG(RvM)sKE@(X=9YCPBDdLxs0FUk5PesYdR5eiTxRa$(n zN|lca8c(E|QxBwJyKSBb1{Zn5KVxv~sb5v2nN~@Z{4@uCPfnC7JhH!q@+9T8M`_md z0Z_kM;n<8tHgBf(JbwjUN!Luj*J?-Y=|W9%BOw_%=@TKJw;shyGitAETjYA|1*`ol?Z!d+t9m-c1cy{TrDb`&56fAC4kU5cQ=2;jV3g++Y+Zk1@BUf_ZPM8*w zzHjB83K@>Ue0XD}U%_h$q7FjY4Uwt^y+3qLWzt+IbmkC_oA~TrPm8bmZmZST4sQv8 z6GE;z!dTfSKQOqrdOQ7h)Qwc_E4qcSZ&_Vaonu)zNMG?!}mUmRuZo{S3 z6qDt`y*L7LJrOa-$Ff4DkLjLvh?e0c2%<(%bBP!W)<&ptA||!&)-Wj7fUs{{AgoLBSEEQ3 zamnsuxf#_uR4AON8Vh#nVVREaxp(s6a>g&S4_#s`WKj5L?6Kp{F`mc3cM1IUkORSU z<9lbpyY^lodqwcwo1Z0+v}1Z2Oc+;}3q>fbHcjdVe1zCR|K_DyjW@A4K()c_6AM`+To5^{_h zFhY}yE>V6wPZ6*#BA#8Pe>7LLRs26G`(qNAFmP3ZAckKuGkDA-)iDPro#h$p>X#T8 z)M2IE!W6{IVRbN%?bjY|ponEXuxIlE(A>Dcd1E@hYQx<6{KEA;LOdYg0%PyyF8gDB zFY^Uvr0t^IQll`Qrg#)8C)P7Cg`EFhCWNbTUT>DULCDiuPTBo)IAo4h$EtyQ&I^o9 zIYM5SSX~|%O@{L-wfzIq7P`cMG$Cw$30*V^t=W%&yvENsf%#f5@gawyLb2y=G@*CZ z`rbt+j%J|ocT&P34o}M7w&v+qSG{_4!iFs=3Q8|7nwLw7=;ukdSw*_TYv~xY%EGy!aG_W zJxuLgj0aq5B!zn~9SXG@PZXbblyKMqU*UJSDoLX9IeMk*b5OdL>G7TxmFOT|877dw zma`6N$c8wil-(1khvxRQSIBPRK_8n@dTun!?>b>0ohvwahkDf`eY!62c8TV;_E7dA zp|N3@)MAWna|@V5V$hGFUMg!@h0tL6R4YK$ca!AC@LKo;_hIynOB-x_lCvn?M+qQ!miwot6GJs;V=7rgB*!ML)^;NWC@?y zmV#bj20Re&KiPRGQNp>7eE(>dd(F4nXSHX7ZczF)+=!jzT%LeaOqLTv8k^&p5ivxv2R z2A|p(PWMx_vz>j#>I+2ngb*2h2Ws}ni5)aa%%`tnHtVDQdIRgjY_|5i3Ad5ZVZ}r* zBdKGRf?tgX(mbPb96vRUvG{jaXqUN>S4CGak?R^N4R|8km{g6t0#$gWP0{W_vl<3l9eq-M~2$Hrlv^$Lhj_w2I;0h7r0IxnZ3V4nXCaj z&wHyHvt@>wfirT!b+H=yII$ojqR9g6$+n57BA_X1H|r&56)5cWFg=K}p|72cDh=ZP zu`jmO^--<~n?e=8yRzTQ%tJMZfU(=zpgKQXSFRd`Rr)03U%onC&ipU%3WdyM?^gYXC&v~O5?g<8!5JtUVrwX)Tq8!k(k%W$rn#DIR~G?b=idU(?@G*9(dL`$pUXC1 zT>*gHK-R0r-(CM8;`|Z(&xDq*5x#&oUp;=6UA|%dx$yGcYbD>I=CJ=c)E`FpKPx9cL;su!e24bEqQO7yk#z|Ka`Z$NYJ}{0=Kh_K#t|^$h(gdjbIPuYSx|g|0mEFK_<>`7Q^? literal 0 HcmV?d00001 diff --git a/src/org/geometerplus/android/fbreader/DictionaryUtil.java b/src/org/geometerplus/android/fbreader/DictionaryUtil.java index 90e0f2b4a..7f87b696c 100644 --- a/src/org/geometerplus/android/fbreader/DictionaryUtil.java +++ b/src/org/geometerplus/android/fbreader/DictionaryUtil.java @@ -27,6 +27,8 @@ import android.net.Uri; import android.util.DisplayMetrics; import android.util.Log; + +import com.abbyy.mobile.lingvo.api.MinicardContract; import com.paragon.dictionary.fbreader.OpenDictionaryFlyout; import com.paragon.open.dictionary.api.*; import com.paragon.open.dictionary.api.Dictionary; @@ -64,11 +66,11 @@ public abstract class DictionaryUtil { @Override public boolean startElementHandler(String tag, ZLStringMap attributes) { - if ("dictionary".equals(tag)) { + if ("dictionary".equals(tag) || "dictionaryNotTranslator".equals(tag)) { final String id = attributes.getValue("id"); final String title = attributes.getValue("title"); - int flags = FLAG_SHOW_AS_DICTIONARY | FLAG_SHOW_AS_TRANSLATOR; + int flags = "dictionary".equals(tag) ? (FLAG_SHOW_AS_DICTIONARY | FLAG_SHOW_AS_TRANSLATOR) : FLAG_SHOW_AS_DICTIONARY; if (!"always".equals(attributes.getValue("list"))) { flags |= FLAG_INSTALLED_ONLY; } @@ -300,7 +302,7 @@ public abstract class DictionaryUtil { } } - public static void openTextInDictionary(Activity activity, String text, boolean singleWord, int selectionTop, int selectionBottom) { + public static void openTextInDictionary(final Activity activity, String text, boolean singleWord, int selectionTop, int selectionBottom) { Log.d("FBReader", "DictionaryUtil:openTextInDictionary"); if (singleWord) { int start = 0; @@ -326,6 +328,23 @@ public abstract class DictionaryUtil { openDictionary.myFlyout.showTranslation(activity, text, frameMetrics); return; } + + if ("ABBYY Lingvo".equals(info.Id)) { + final Intent intent = new Intent(MinicardContract.MINICARD_ACTION); + intent.putExtra( MinicardContract.EXTRA_TEXT, text); + intent.putExtra( MinicardContract.EXTRA_GRAVITY, frameMetrics.gravity); + intent.putExtra( MinicardContract.EXTRA_HEIGHT, frameMetrics.height); + intent.putExtra( MinicardContract.EXTRA_FORCE_LEMMATIZATION, true); + intent.putExtra( MinicardContract.EXTRA_TRANSLATE_VARIANTS, true); + intent.putExtra( MinicardContract.EXTRA_LIGHT_THEME, true); + + try { + activity.startActivity(intent); + } catch (ActivityNotFoundException e) { + DictionaryUtil.installDictionaryIfNotInstalled(activity, singleWord, true); + } + return; + } final Intent intent = getDictionaryIntent(info, text); try { @@ -337,7 +356,7 @@ public abstract class DictionaryUtil { } activity.startActivity(intent); } catch (ActivityNotFoundException e) { - DictionaryUtil.installDictionaryIfNotInstalled(activity, singleWord); + DictionaryUtil.installDictionaryIfNotInstalled(activity, singleWord, false); } } @@ -347,8 +366,8 @@ public abstract class DictionaryUtil { ); } - public static void installDictionaryIfNotInstalled(final Activity activity, boolean singleWord) { - if (PackageUtil.canBeStarted(activity, getDictionaryIntent("test", singleWord), false)) { + public static void installDictionaryIfNotInstalled(final Activity activity, boolean singleWord, boolean forceNotCheck) { + if ((!forceNotCheck) && PackageUtil.canBeStarted(activity, getDictionaryIntent("test", singleWord), false)) { return; } final PackageInfo dictionaryInfo = getCurrentDictionaryInfo(singleWord);