initial commit
|
@ -0,0 +1,34 @@
|
|||
bin/
|
||||
obj/
|
||||
*.suo
|
||||
#ignore thumbnails created by windows
|
||||
Thumbs.db
|
||||
#Ignore files build by Visual Studio
|
||||
*.build.csdef
|
||||
*.obj
|
||||
*.exe
|
||||
*.pdb
|
||||
*.user
|
||||
*.aps
|
||||
*.pch
|
||||
*.vspscc
|
||||
*_i.c
|
||||
*_p.c
|
||||
*.ncb
|
||||
*.suo
|
||||
*.tlb
|
||||
*.tlh
|
||||
*.bak
|
||||
*.cache
|
||||
*.ilk
|
||||
*.log
|
||||
[Bb]in
|
||||
[Dd]ebug*/
|
||||
*.lib
|
||||
*.sbr
|
||||
*.resharper.user
|
||||
obj/
|
||||
[Rr]elease*/
|
||||
_ReSharper*/
|
||||
[Tt]est[Rr]esult*
|
||||
App_Data/
|
|
@ -0,0 +1,230 @@
|
|||
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
|
||||
{\f34\fbidi \froman\fcharset1\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f36\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}
|
||||
{\f40\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
|
||||
{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}
|
||||
{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
|
||||
{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
|
||||
{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f41\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f42\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
||||
{\f44\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f45\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f46\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f47\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
||||
{\f48\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f49\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f51\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f52\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}
|
||||
{\f54\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f55\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f56\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f57\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}
|
||||
{\f58\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f59\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f401\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\f402\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}
|
||||
{\f404\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\f405\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\f408\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\f421\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}
|
||||
{\f422\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f424\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;}{\f425\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}{\f426\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}
|
||||
{\f427\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f428\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f429\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f430\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}
|
||||
{\f441\fbidi \fswiss\fcharset238\fprq2 Verdana CE;}{\f442\fbidi \fswiss\fcharset204\fprq2 Verdana Cyr;}{\f444\fbidi \fswiss\fcharset161\fprq2 Verdana Greek;}{\f445\fbidi \fswiss\fcharset162\fprq2 Verdana Tur;}
|
||||
{\f448\fbidi \fswiss\fcharset186\fprq2 Verdana Baltic;}{\f449\fbidi \fswiss\fcharset163\fprq2 Verdana (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
|
||||
{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
|
||||
{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
|
||||
{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
||||
{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
|
||||
{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
|
||||
{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}
|
||||
{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
||||
{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
|
||||
{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
|
||||
{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
|
||||
{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
||||
{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
|
||||
{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
|
||||
{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
|
||||
{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
|
||||
{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
|
||||
{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
|
||||
{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
||||
{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
|
||||
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
|
||||
\red192\green192\blue192;}{\*\defchp }{\*\defpap \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025
|
||||
\ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\s1\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0
|
||||
\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink15 \sqformat \spriority9 heading 1;}{\s2\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0
|
||||
\f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink16 \sqformat \spriority9 heading 2;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
|
||||
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
|
||||
\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused \sqformat Normal Table;}{\*\cs15
|
||||
\additive \rtlch\fcs1 \ab\af0\afs32 \ltrch\fcs0 \b\f36\fs32\kerning32 \sbasedon10 \slink1 \slocked \spriority9 Heading 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \ab\ai\af0\afs28 \ltrch\fcs0 \b\i\f36\fs28 \sbasedon10 \slink2 \slocked \spriority9
|
||||
Heading 2 Char;}{\s17\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs16\alang1025 \ltrch\fcs0 \f38\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033
|
||||
\sbasedon0 \snext17 \slink18 \ssemihidden \sunhideused \styrsid7424395 Balloon Text;}{\*\cs18 \additive \rtlch\fcs1 \af38\afs16 \ltrch\fcs0 \f38\fs16 \sbasedon10 \slink17 \slocked \ssemihidden \styrsid7424395 Balloon Text Char;}{\*\cs19 \additive
|
||||
\rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \fs16 \sbasedon10 \ssemihidden \sunhideused \styrsid4538388 annotation reference;}{\s20\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs20\alang1025 \ltrch\fcs0
|
||||
\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext20 \slink21 \ssemihidden \sunhideused \styrsid4538388 annotation text;}{\*\cs21 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1
|
||||
\sbasedon10 \slink20 \slocked \ssemihidden \styrsid4538388 Comment Text Char;}{\s22\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs20\alang1025 \ltrch\fcs0 \b\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033
|
||||
\sbasedon20 \snext20 \slink23 \ssemihidden \sunhideused \styrsid4538388 annotation subject;}{\*\cs23 \additive \rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f1 \sbasedon21 \slink22 \slocked \ssemihidden \styrsid4538388 Comment Subject Char;}}{\*\rsidtbl \rsid213160
|
||||
\rsid284417\rsid417145\rsid481196\rsid551334\rsid723397\rsid786968\rsid1382437\rsid1390003\rsid1521043\rsid1530955\rsid1708989\rsid1783212\rsid1903779\rsid2431884\rsid3165084\rsid3416120\rsid3419781\rsid3754103\rsid3768194\rsid3831520\rsid4538130
|
||||
\rsid4538388\rsid4552277\rsid4680449\rsid4729674\rsid4865270\rsid4987534\rsid5128131\rsid5186068\rsid5864350\rsid6186044\rsid6311778\rsid6384507\rsid6434687\rsid6561471\rsid6910344\rsid6947552\rsid7033180\rsid7424395\rsid7682010\rsid7690850\rsid7744081
|
||||
\rsid8151618\rsid8196281\rsid8198206\rsid8342723\rsid8350925\rsid8722561\rsid8852349\rsid8934457\rsid8944153\rsid9573035\rsid9635349\rsid9638545\rsid9724918\rsid10044820\rsid10095979\rsid10228618\rsid10449644\rsid10494075\rsid11166278\rsid11166751
|
||||
\rsid11285353\rsid11366513\rsid11494815\rsid11932529\rsid12061202\rsid12533699\rsid12536400\rsid12916885\rsid13264736\rsid13322831\rsid13440556\rsid13455614\rsid13597357\rsid13768671\rsid14097590\rsid14157399\rsid14229900\rsid14305025\rsid14314735
|
||||
\rsid14436896\rsid14565916\rsid14572556\rsid14688892\rsid14752433\rsid14904394\rsid15086147\rsid15749945\rsid15814398\rsid15927751\rsid16071312\rsid16126175\rsid16279402\rsid16391569\rsid16404661\rsid16452939\rsid16537688\rsid16606866\rsid16674896}
|
||||
{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\title Microsoft Permissive License (Ms-PL)}{\author Jonr}{\operator Dean Johnson}{\creatim\yr2007\mo2\dy23\hr15\min10}
|
||||
{\revtim\yr2007\mo2\dy23\hr15\min10}{\printim\yr2006\mo9\dy28\hr8\min46}{\version2}{\edmins1}{\nofpages1}{\nofwords404}{\nofchars2221}{\*\company Microsoft}{\nofcharsws2620}{\vern32859}{\*\saveprevpict}}{\*\userprops {\propname _NewReviewCycle}\proptype30
|
||||
{\staticval }}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}{\xmlns2 urn:schemas-microsoft-com:office:smarttags}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
|
||||
\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\hyphcaps0\horzdoc\dghspace120\dgvspace120
|
||||
\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\splytwnine\ftnlytwnine\htmautsp\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct\asianbrkrule\rsidroot10494075
|
||||
\newtblstyruls\nogrowautofit\utinl \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}
|
||||
{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}
|
||||
{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar
|
||||
\s1\ql \li0\ri0\sb180\nowidctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs31 \ltrch\fcs0
|
||||
\fs31\cf1\kerning36\insrsid10494075\charrsid14688892 Microsoft}{\rtlch\fcs1 \af1\afs31 \ltrch\fcs0 \fs31\cf1\kerning36\insrsid10494075 Permissive}{\rtlch\fcs1 \af1\afs31 \ltrch\fcs0 \fs31\cf1\kerning36\insrsid14688892 }{\rtlch\fcs1 \af1\afs31
|
||||
\ltrch\fcs0 \fs31\cf1\kerning36\insrsid10494075 License (Ms-PL}{\rtlch\fcs1 \af1\afs31 \ltrch\fcs0 \fs31\cf1\kerning36\insrsid4552277 )}{\rtlch\fcs1 \af1\afs31 \ltrch\fcs0 \fs31\cf1\kerning36\insrsid10494075
|
||||
\par }\pard\plain \ltrpar\ql \li0\ri0\sl336\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af40\afs17 \ltrch\fcs0
|
||||
\b\f40\fs17\insrsid10494075
|
||||
\par This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
|
||||
\par }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid6910344
|
||||
\par }\pard\plain \ltrpar\s2\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af40\afs23 \ltrch\fcs0
|
||||
\b\f40\fs23\insrsid10494075 1. Definitions
|
||||
\par }\pard\plain \ltrpar\ql \li0\ri0\sl336\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40\afs17 \ltrch\fcs0
|
||||
\f40\fs17\insrsid10494075 The terms \'93reproduce,\'94 \'93reproduction}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid7744081 ,}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 \'94 }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0
|
||||
\f40\fs17\insrsid551334 \'93derivative works,\'94}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid7744081\charrsid7744081 }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 and \'93distribution\'94 have the same meaning here as under
|
||||
{\*\xmlopen\xmlns2{\factoidname country-region}}{\*\xmlopen\xmlns2{\factoidname place}}U.S.{\*\xmlclose}{\*\xmlclose} copyright law.
|
||||
\par }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid12536400 A \'93contribution\'94 is the original software}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid4865270 ,}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid12536400 }{\rtlch\fcs1
|
||||
\af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid11932529 or}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid12536400 any additions or changes to the software.
|
||||
\par }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid551334 A \'93c}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid551334\charrsid551334 ontributor\'94 }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid12536400 is}{\rtlch\fcs1 \af40\afs17
|
||||
\ltrch\fcs0 \f40\fs17\insrsid12536400\charrsid551334 }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid551334\charrsid551334 any person that }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid12536400
|
||||
distributes its contribution under this license.}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075
|
||||
\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid14229900 {\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid4729674\delrsid4729674 }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 \'93Licensed patents
|
||||
\'94 }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid12536400 are }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3831520 a contributor\rquote s }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 patent claims }{\rtlch\fcs1
|
||||
\af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3831520 that }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 read directly on }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3831520 its contribution.}{\rtlch\fcs1 \af1 \ltrch\fcs0
|
||||
\insrsid14229900\charrsid14229900
|
||||
\par }\pard\plain \ltrpar\s2\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af40\afs23 \ltrch\fcs0
|
||||
\b\f40\fs23\insrsid5186068
|
||||
\par }{\rtlch\fcs1 \ab\af40\afs23 \ltrch\fcs0 \b\f40\fs23\insrsid10494075 2. Grant of Rights
|
||||
\par }\pard\plain \ltrpar\ql \li0\ri0\sl336\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40\afs17 \ltrch\fcs0
|
||||
\f40\fs17\insrsid10494075 (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3754103 each contributor }{\rtlch\fcs1 \af40\afs17
|
||||
\ltrch\fcs0 \f40\fs17\insrsid10494075 grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3754103 its contribution}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0
|
||||
\f40\fs17\insrsid10494075 , prepare derivative works of }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3754103 its contribution}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid12536400 ,}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0
|
||||
\f40\fs17\insrsid10494075 and distribute }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3754103 its contribution}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 or any derivative works that you create.
|
||||
\par (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid9724918 each contributor }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0
|
||||
\f40\fs17\insrsid10494075 grants you a non-exclusive, worldwide, royalty-free license under }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid15814398 its }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 licensed patents
|
||||
to make, have made, use, sell, offer for sale, }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid1390003 import, }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 and/or otherwise dispose of }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0
|
||||
\f40\fs17\insrsid8944153 its contribution in }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 the software or derivative works of }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid8944153 the contribution in }{\rtlch\fcs1 \af40\afs17
|
||||
\ltrch\fcs0 \f40\fs17\insrsid10494075 the software.
|
||||
\par }\pard\plain \ltrpar\s2\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af40\afs23 \ltrch\fcs0
|
||||
\b\f40\fs23\insrsid5186068
|
||||
\par }{\rtlch\fcs1 \ab\af40\afs23 \ltrch\fcs0 \b\f40\fs23\insrsid10494075 3. Conditions and Limitations
|
||||
\par }\pard\plain \ltrpar\ql \li0\ri0\sl336\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af40\afs17 \ltrch\fcs0
|
||||
\f40\fs17\insrsid1530955 }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 (A) No Trademark License- This license does not grant you rights to use }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid1708989 any contributors\rquote }{
|
||||
\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 name, logo, or trademarks.
|
||||
\par (B) If you }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid8934457 bring a patent claim against }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10095979 any contributor}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075
|
||||
over patents that you }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid6947552 claim }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid7682010 are }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid6947552 infringe}{\rtlch\fcs1
|
||||
\af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid7682010 d by}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 the software, your }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid7682010 patent }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0
|
||||
\f40\fs17\insrsid10494075 license}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid7682010 from such contributor}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 to the software ends automatically.
|
||||
\par (C) If you distribute }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid3165084 any portion of }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075
|
||||
the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
|
||||
\par (D) If you distribute }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid15749945 any portion of the }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 software in source code form}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0
|
||||
\f40\fs17\insrsid14904394 ,}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 you may do so only under this license}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid6384507 }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0
|
||||
\f40\fs17\insrsid14904394 by including }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 a complete copy of this license with your distribution}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid6384507 .}{\rtlch\fcs1 \af40\afs17
|
||||
\ltrch\fcs0 \f40\fs17\insrsid10494075 }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid6384507 I}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 f you distribute }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid15749945
|
||||
any portion of }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 the software in compiled or object code form}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid16452939 ,}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075
|
||||
you may only do so under a license that complies with this license.
|
||||
\par }\pard \ltrpar\ql \li0\ri0\sl336\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid14572556 {\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 (E) The software is licensed \'93as-is.\'94 You bear the risk of using it. }{
|
||||
\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid284417 The contributors }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075
|
||||
give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0
|
||||
\f40\fs17\insrsid1783212 the contributors }{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0 \f40\fs17\insrsid10494075 exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.}{\rtlch\fcs1 \af40\afs17 \ltrch\fcs0
|
||||
\f40\fs17\insrsid10494075\charrsid14572556
|
||||
\par }{\*\themedata 504b030414000600080000002100828abc13fa0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb6ac3301045f785fe83d0b6d8
|
||||
72ba28a5d8cea249777d2cd20f18e4b12d6a8f843409c9df77ecb850ba082d74231062ce997b55ae8fe3a00e1893f354e9555e6885647de3a8abf4fbee29bbd7
|
||||
2a3150038327acf409935ed7d757e5ee14302999a654e99e393c18936c8f23a4dc072479697d1c81e51a3b13c07e4087e6b628ee8cf5c4489cf1c4d075f92a0b
|
||||
44d7a07a83c82f308ac7b0a0f0fbf90c2480980b58abc733615aa2d210c2e02cb04430076a7ee833dfb6ce62e3ed7e14693e8317d8cd0433bf5c60f53fea2fe7
|
||||
065bd80facb647e9e25c7fc421fd2ddb526b2e9373fed4bb902e182e97b7b461e6bfad3f010000ffff0300504b030414000600080000002100a5d6a7e7c00000
|
||||
00360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4fc7060abb08
|
||||
84a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b63095120f88d94fbc
|
||||
52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462a1a82fe353
|
||||
bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f7468656d652f7468
|
||||
656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b4b0d592c9c
|
||||
070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b4757e8d3f7
|
||||
29e245eb2b260a0238fd010000ffff0300504b03041400060008000000210096b5ade296060000501b0000160000007468656d652f7468656d652f7468656d65
|
||||
312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87615b8116d8
|
||||
a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad79482a9c04
|
||||
98f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b5d8a314d3c
|
||||
94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab999fb7b471
|
||||
7509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9699640f671
|
||||
9e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd5868b37a088d1
|
||||
e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d60cf03ac1a5
|
||||
193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f9e7ef3f2d1
|
||||
17d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be15c308d3f2
|
||||
8acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a99793849c26ae6
|
||||
6252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d32a423279a
|
||||
668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2af074481847
|
||||
bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86e877f0034e
|
||||
16bafb0e258ebb4faf06b769e888340b103d3311da9750aa9d0a1cd3e4efca31a3508f6d0c5c5c398602f8e2ebc71591f5b616e24dd893aa3261fb44f95d843b
|
||||
5974bb5c04f4edafb95b7892ec1108f3f98de75dc97d5772bdff7cc95d94cf672db4b3da0a6557f70db629362d72bcb0431e53c6066acac80d699a6409fb44d0
|
||||
8741bdce9c0e4971624a2378cceaba830b05366b90e0ea23aaa241845368b0eb9e2612ca8c742851ca251ceccc70256d8d87265dd96361531f186c3d9058edf2
|
||||
c00eafe8e1fc5c509031bb4d680e9f39a3154de0accc56ae644441edd76156d7429d995bdd88664a9dc3ad50197c38af1a0c16d684060441db02565e85f3b966
|
||||
0d0713cc48a0ed6ef7dedc2dc60b17e92219e180643ed27acffba86e9c94c78ab90980d8a9f0913ee49d62b512b79626fb06dccee2a432bbc60276b9f7dec44b
|
||||
7904cfbca4f3f6443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc399161ee314bc2e75cf8759081743be1236ec4f4d6693e5336fb672c5dc24a8c33585b5fb
|
||||
9cc24e1d4885545b58463634cc5416022cd19cacfccb4d30eb45296023fd35a458598360f8d7a4003bbaae25e331f155d9d9a5116d3bfb9a95523e51440ca2e0
|
||||
088dd844ec6370bf0e55d027a012ae264c45d02f708fa6ad6da6dce29c255df9f6cae0ec38666984b372ab5334cf640b37795cc860de4ae2816e95b21be5ceaf
|
||||
8a49f90b52a51cc6ff3355f47e0237052b81f6800fd7b802239daf6d8f0b1571a8426944fdbe80c6c1d40e8816b88b8569082ab84c36ff0539d4ff6dce591a26
|
||||
ade1c0a7f669880485fd484582903d284b26fa4e2156cff62e4b9265844c4495c495a9157b440e091bea1ab8aaf7760f4510eaa69a6465c0e04ec69ffb9e65d0
|
||||
28d44d4e39df9c1a52ecbd3607fee9cec7263328e5d661d3d0e4f62f44acd855ed7ab33cdf7bcb8ae889599bd5c8b3029895b6825696f6af29c239b75a5bb1e6
|
||||
345e6ee6c28117e73586c1a2214ae1be07e93fb0ff51e133fb65426fa843be0fb515c187064d0cc206a2fa926d3c902e907670048d931db4c1a44959d366ad93
|
||||
b65abe595f70a75bf03d616c2dd959fc7d4e6317cd99cbcec9c58b34766661c7d6766ca1a9c1b327531486c6f941c638c67cd22a7f75e2a37be0e82db8df9f30
|
||||
254d30c1372581a1f51c983c80e4b71ccdd28dbf000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f74
|
||||
68656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f24
|
||||
51eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198
|
||||
720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528
|
||||
a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100828abc13fa0000001c0200001300000000000000000000000000
|
||||
000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b000000000000000000000000
|
||||
002b0100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000140200007468
|
||||
656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210096b5ade296060000501b000016000000000000000000
|
||||
00000000d10200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b010000270000000000
|
||||
00000000000000009b0900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000960a00000000}
|
||||
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
|
||||
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
|
||||
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
|
||||
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
|
||||
{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;
|
||||
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;
|
||||
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 1;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 2;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 3;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 4;
|
||||
\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 5;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 6;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 7;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 8;\lsdqformat1 \lsdpriority39 \lsdlocked0 toc 9;
|
||||
\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;
|
||||
\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;
|
||||
\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 0105000002000000180000004d73786d6c322e534158584d4c5265616465722e352e3000000000000000000000060000
|
||||
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffffec69d9888b8b3d4c859eaf6cd158be0f000000000000000000000000d070
|
||||
a7c59f57c701feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000105000000000000}}
|
|
@ -0,0 +1,15 @@
|
|||
<h1>sdkLocalDatabaseCS_WithAzureTables</h1>
|
||||
<p>This repository contains a sample that shows how to modify the Windows Phone sdkLocalDatabaseCS sample to use Windows Azure tables instead of the local database.
|
||||
</p>
|
||||
<h2>Getting Started</h2>
|
||||
<h3>Dependencies</h3>
|
||||
<ul>
|
||||
<li><a href="http://go.microsoft.com/fwlink/?LinkID=234939&clcid=0x409">Windows Azure SDK for .NET</a></li>
|
||||
<li><a href="http://www.microsoft.com/download/en/details.aspx?id=27570">Windows Phone SDK 7.1</a></li>
|
||||
</ul>
|
||||
<h3>Running the sample</h3>
|
||||
<p>By default this sample uses the local storage emulator that ships with the SDK. Before running be sure to start the storage emulator.
|
||||
<ol>
|
||||
<li>Click <strong>Start</strong>, point to <strong>All Programs</strong>, and then click <strong>Windows Azure Emulators - November 2011</strong>.</li>
|
||||
<li>Click <strong>Storage Emulator</strong>.</li>
|
||||
</ol>
|
Двоичные данные
packages/Phone.Storage.1.0.1/content/App_Readme/Content/CloudBlobInterfaces.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 33 KiB |
Двоичные данные
packages/Phone.Storage.1.0.1/content/App_Readme/Content/CloudQueueInterfaces.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 27 KiB |
Двоичные данные
packages/Phone.Storage.1.0.1/content/App_Readme/Content/CloudStorageClientResolver.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 25 KiB |
Двоичные данные
packages/Phone.Storage.1.0.1/content/App_Readme/Content/CloudTableInterfaces.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 19 KiB |
|
@ -0,0 +1,329 @@
|
|||
/*----------------------------------------------------------
|
||||
The base color for this template is #5c87b2. If you'd like
|
||||
to use a different color start by replacing all instances of
|
||||
#5c87b2 with your new color.
|
||||
----------------------------------------------------------*/
|
||||
body
|
||||
{
|
||||
background-color: #ffffff;
|
||||
font-weight: normal;
|
||||
font-size: 15px;
|
||||
font-family: "Segoe UI" , "Helvetica" , "Tahoma" , "Arial";
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
color: #696969;
|
||||
}
|
||||
|
||||
a
|
||||
{
|
||||
color: #3387dd;
|
||||
}
|
||||
|
||||
a:link
|
||||
{
|
||||
color: #3387dd;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:visited
|
||||
{
|
||||
color: #3387dd;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover
|
||||
{
|
||||
color: #1d60ff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
p, ul
|
||||
{
|
||||
margin-bottom: 20px;
|
||||
line-height: 1.6em;
|
||||
}
|
||||
|
||||
/* HEADINGS
|
||||
----------------------------------------------------------*/
|
||||
h1, h2, h3, h4, h5, h6
|
||||
{
|
||||
font-size: 1.5em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
h1
|
||||
{
|
||||
font-size: 2em;
|
||||
padding-bottom: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
h2
|
||||
{
|
||||
padding: 0 0 10px 0;
|
||||
font-size: 2.8em;
|
||||
font-weight: lighter;
|
||||
color: #6cbd45;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
|
||||
h3
|
||||
{
|
||||
font-size: 22px;
|
||||
font-weight: normal;
|
||||
color: #939896;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
h4
|
||||
{
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
h5, h6
|
||||
{
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* this rule styles <h2> tags that are the
|
||||
first child of the left and right table columns */
|
||||
.rightColumn > h1, .rightColumn > h2, .leftColumn > h1, .leftColumn > h2
|
||||
{
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/* PRIMARY LAYOUT ELEMENTS
|
||||
----------------------------------------------------------*/
|
||||
|
||||
/* you can specify a greater or lesser percentage for the
|
||||
page width. Or, you can specify an exact pixel width. */
|
||||
.page
|
||||
{
|
||||
width: 90%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
#header
|
||||
{
|
||||
position: relative;
|
||||
margin-bottom: 0px;
|
||||
color: #000;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#header h1
|
||||
{
|
||||
font-weight: normal;
|
||||
padding: 5px 0px 0px 47px;
|
||||
margin: 0;
|
||||
color: #000;
|
||||
border: none;
|
||||
line-height: 2em;
|
||||
font-size: 24px !important;
|
||||
}
|
||||
|
||||
#main
|
||||
{
|
||||
padding: 0px 0px 0px 0px;
|
||||
background-color: #fff;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#footer
|
||||
{
|
||||
color: #999;
|
||||
padding: 10px 0;
|
||||
text-align: center;
|
||||
line-height: normal;
|
||||
margin: 0;
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
/* TAB MENU
|
||||
----------------------------------------------------------*/
|
||||
ul#menu
|
||||
{
|
||||
padding: 0 0 2px;
|
||||
position: relative;
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
ul#menu li
|
||||
{
|
||||
display: inline;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
ul#menu li a
|
||||
{
|
||||
font-weight: normal;
|
||||
font-size: 19px;
|
||||
text-decoration: none;
|
||||
color: #939896;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
ul#menu li a:hover
|
||||
{
|
||||
color: #202020;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
ul#menu li.selected a
|
||||
{
|
||||
color: #202020;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/* FORM LAYOUT ELEMENTS
|
||||
----------------------------------------------------------*/
|
||||
|
||||
fieldset
|
||||
{
|
||||
padding: 1em;
|
||||
border: none;
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
|
||||
fieldset.group:after
|
||||
{
|
||||
content: ".";
|
||||
display: block;
|
||||
height: 0;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
fieldset p
|
||||
{
|
||||
margin: 2px 12px 10px 10px;
|
||||
}
|
||||
|
||||
fieldset div.user
|
||||
{
|
||||
float: left;
|
||||
width: 200px;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
label
|
||||
{
|
||||
color: #202020;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
input[type="text"]
|
||||
{
|
||||
width: 200px;
|
||||
height: 20px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* TABLE
|
||||
----------------------------------------------------------*/
|
||||
|
||||
table
|
||||
{
|
||||
border: none;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table td
|
||||
{
|
||||
padding: 10px 12px;
|
||||
border: none;
|
||||
border-right: 2px solid white;
|
||||
text-align: center;
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
table th
|
||||
{
|
||||
padding: 10px 5px;
|
||||
text-align: center;
|
||||
background-color: #fff;
|
||||
color: #939896;
|
||||
font-size: 22px;
|
||||
font-weight: normal;
|
||||
border: none;
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
table tr
|
||||
{
|
||||
min-height: 32px;
|
||||
}
|
||||
|
||||
table tr.d0
|
||||
{
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
|
||||
table tr.d1
|
||||
{
|
||||
background-color: #e0e1e1;
|
||||
}
|
||||
|
||||
table tr td
|
||||
{
|
||||
color: #202020;
|
||||
}
|
||||
|
||||
table td p
|
||||
{
|
||||
margin: 0px;
|
||||
font-size: 15px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.left-aligned
|
||||
{
|
||||
text-align: left;
|
||||
min-width: 150px;
|
||||
}
|
||||
|
||||
/* MISC
|
||||
----------------------------------------------------------*/
|
||||
.clear
|
||||
{
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#menucontainer
|
||||
{
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
div#title
|
||||
{
|
||||
display: block;
|
||||
float: left;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.hidden
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.code
|
||||
{
|
||||
background-color: #F7F7F7;
|
||||
padding: 10px;
|
||||
margin: 10px 10px 10px 0px;
|
||||
border: #696969 2px solid;
|
||||
max-width: 1000px;
|
||||
min-width: 1000px;
|
||||
color:#383838;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
.note
|
||||
{
|
||||
font-size: 85%;
|
||||
}
|
Двоичные данные
packages/Phone.Storage.1.0.1/content/App_Readme/Content/StorageInitializer.png
поставляемый
Normal file
После Ширина: | Высота: | Размер: 91 KiB |
223
packages/Phone.Storage.1.0.1/content/App_Readme/Phone.Storage.Readme.htm
поставляемый
Normal file
|
@ -0,0 +1,223 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Windows Azure Storage Client Library for Windows Phone</title>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<link href="Content/Site.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="page">
|
||||
<header>
|
||||
<div id="header">
|
||||
<div id="title">
|
||||
<h1>Windows Azure Storage Client Library for Windows Phone</h1>
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</header>
|
||||
<section id="main">
|
||||
<h2>Introduction</h2>
|
||||
<p>
|
||||
The Windows Azure Storage Client library for Windows Phone
|
||||
contains a set of classes to provide client access for Windows
|
||||
Azure storage services such as Blobs, Tables and Queues.</p>
|
||||
<h3>Prerequisites</h3>
|
||||
<ul>
|
||||
<li><a href="http://www.microsoft.com/download/en/details.aspx?id=27570">Windows Phone SDK 7.1</a></li>
|
||||
<li><a href="http://www.nuget.org/">NuGet 1.5 or above</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>Configuration</h2>
|
||||
<h3>Configuring your Windows Azure Storage settings</h3>
|
||||
<ol>
|
||||
<li>The Windows Azure Storage Client library for Windows Phone works against any of the following
|
||||
services:
|
||||
<ul>
|
||||
<li>Windows Azure storage services (and Storage Emulator)</li>
|
||||
<li><a href="http://nuget.org/Packages/WindowsAzure.Storage.Proxy">Windows Azure storage proxy cloud services</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>By default, this package is configured to access the Windows Azure Storage Emulator
|
||||
directly. If you wish to change this, modify the <strong>App_Start\StorageInitializer.cs</strong> file, and set
|
||||
the account type you desire for your application.</li><br/>
|
||||
<img src="Content/StorageInitializer.png" title="Configuring the Windows Azure Storage Client library for Windows Phone" /><br/>
|
||||
</ol>
|
||||
<!------------------------------------------>
|
||||
|
||||
<h2>How to use it</h2>
|
||||
<h3>Storage Context Resolver</h3>
|
||||
<p>
|
||||
This library provides an <strong>ICloudStorageClientResolver</strong>
|
||||
interface to create the clients for Blobs, Tables and Queues according to the Windows Azure
|
||||
storage settings configured. There are two implementations for this interface:
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>CloudStorageClientResolverAccountAndKey</strong>: Lets you configure
|
||||
your Windows Azure storage account settings (account name, account key, blob
|
||||
service endpoint, queue service endpoint and table service endpoint) so your
|
||||
phone application can
|
||||
access them directly.</li>
|
||||
<li><strong>CloudStorageClientResolverProxies</strong>: Lets you configure your
|
||||
Windows Azure storage proxy cloud services' settings (custom authorization
|
||||
header, shared access signature service endpoint, queue proxy service endpoint
|
||||
and table proxy service endpoint) so your phone application can access the
|
||||
Queues and Tables services indirectly through the proxies, and using shared
|
||||
access signatures for Blobs.</li>
|
||||
</ul>
|
||||
<img src="Content/CloudStorageClientResolver.png" title="ICloudStorageClientResolver interface" /><br/>
|
||||
<!------------------------------------------>
|
||||
|
||||
<h3>Cloud Queues</h3>
|
||||
<p>
|
||||
After creating a
|
||||
cloud queue client using the resolver, you can get a queue reference and operate with it using the following interface.
|
||||
<br/><img src="Content/CloudQueueInterfaces.png" title="Cloud Queue interfaces" /><br/>
|
||||
</p>
|
||||
<h4>Queues Sample</h4>
|
||||
<p>
|
||||
The following sample code shows how to create a new queue and immediately add a message
|
||||
to it.
|
||||
</p>
|
||||
<pre class="code">
|
||||
var queueClient = CloudStorageContext.Current.Resolver.CreateCloudQueueClient();
|
||||
var queue = queueClient.GetQueueReference("queuename");
|
||||
queue.Create(
|
||||
r => queue.AddMessage(
|
||||
new CloudQueueMessage { AsBytes = Encoding.UTF8.GetBytes("Message content") },
|
||||
c =>
|
||||
{
|
||||
// Some logic here.
|
||||
}));
|
||||
</pre>
|
||||
|
||||
<!------------------------------------------>
|
||||
|
||||
<h3>Cloud Tables</h3>
|
||||
<p>
|
||||
After creating a
|
||||
cloud table client using the resolver, you can create and delete tables or get the
|
||||
<strong>TableServiceContext</strong> (which inherits from <strong>
|
||||
DataServiceContext</strong>) to work with rows within a single table.
|
||||
<br/><img src="Content/CloudTableInterfaces.png" title="Cloud Table interfaces" /><br/>
|
||||
</p>
|
||||
<h4>Tables Sample</h4>
|
||||
<p>In order to operate with rows on a table, you need to first create a class that
|
||||
inherits from <strong>TableServiceEntity</strong> to define the table structure.
|
||||
Make sure to add the <strong>DataServiceEntity</strong> and <strong>EntitySet</strong>
|
||||
attributes to the class definition, passing the table name as constructor
|
||||
parameter for the latter.</p>
|
||||
<pre class="code">
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using Microsoft.WindowsAzure.Samples.Data.Services.Client;
|
||||
using Microsoft.WindowsAzure.Samples.Phone.Storage;
|
||||
|
||||
[DataServiceEntity]
|
||||
[EntitySet("SampleData")]
|
||||
public class SampleData : TableServiceEntity
|
||||
{
|
||||
private string name;
|
||||
|
||||
public SampleData()
|
||||
: base(
|
||||
"PartitionKey",
|
||||
string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0:10}_{1}",
|
||||
DateTime.MaxValue.Ticks - DateTime.Now.Ticks,
|
||||
Guid.NewGuid()))
|
||||
{
|
||||
}
|
||||
|
||||
public SampleData(string partitionKey, string rowKey)
|
||||
: base(partitionKey, rowKey)
|
||||
{
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.name;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
this.name = value;
|
||||
this.OnPropertyChanged("Name");
|
||||
}
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
<p>
|
||||
Now
|
||||
that we have the <strong>SampleData</strong> class,
|
||||
you can use the following code to create a new <em>SampleData</em> table and immediately add a row
|
||||
to it using the <strong>TableServiceContext</strong>.
|
||||
</p>
|
||||
<pre class="code">
|
||||
var tableClient = CloudStorageContext.Current.Resolver.CreateCloudTableClient();
|
||||
var tableName = "SampleData";
|
||||
|
||||
tableClient.CreateTableIfNotExist(
|
||||
tableName,
|
||||
p =>
|
||||
{
|
||||
var context = CloudStorageContext.Current.Resolver.CreateTableServiceContext();
|
||||
var sampleData = new SampleData { Name = "John Doe" };
|
||||
|
||||
context.AddObject(tableName, sampleData);
|
||||
context.BeginSaveChanges(
|
||||
asyncResult =>
|
||||
{
|
||||
var response = context.EndSaveChanges(asyncResult);
|
||||
|
||||
// Some logic here.
|
||||
},
|
||||
null);
|
||||
});
|
||||
</pre>
|
||||
|
||||
<!------------------------------------------>
|
||||
|
||||
<h3>Cloud Blobs</h3>
|
||||
<p>
|
||||
After creating a
|
||||
cloud blob client using the resolver, you can get a container reference and operate with it and
|
||||
its contained blobs using the following interfaces.
|
||||
<br/><img src="Content/CloudBlobInterfaces.png" title="Cloud Blob interfaces" /><br/>
|
||||
</p>
|
||||
<h4>Blobs Sample</h4>
|
||||
<p>
|
||||
The following sample shows how to create a new public container with sample metadata and immediately add a blob
|
||||
to it.
|
||||
</p>
|
||||
<pre class="code">
|
||||
var blobClient = CloudStorageContext.Current.Resolver.CreateCloudBlobClient();
|
||||
var container = blobClient.GetContainerReference("sample-container");
|
||||
container.Metadata.Add("samplekey", "samplevalue");
|
||||
|
||||
container.CreateIfNotExist(
|
||||
BlobContainerPublicAccessType.Container,
|
||||
response =>
|
||||
{
|
||||
var blob = container.GetBlobReference("sample-blob");
|
||||
var sampleStream = new MemoryStream(Encoding.UTF8.GetBytes("sample content"));
|
||||
|
||||
blob.UploadFromStream(
|
||||
sampleStream,
|
||||
response2 =>
|
||||
{
|
||||
// Some logic here.
|
||||
});
|
||||
});
|
||||
</pre>
|
||||
|
||||
<!------------------------------------------>
|
||||
</section>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,39 @@
|
|||
[assembly: SilverlightActivator.ApplicationStartupMethod(typeof($rootnamespace$.App_Start.StorageInitializer), "ApplicationStartup", Order = 10)]
|
||||
|
||||
namespace $rootnamespace$.App_Start
|
||||
{
|
||||
using System;
|
||||
using System.Windows;
|
||||
using Microsoft.WindowsAzure.Samples.Phone.Storage;
|
||||
|
||||
public class StorageInitializer
|
||||
{
|
||||
public static void ApplicationStartup()
|
||||
{
|
||||
// By using CloudStorageClientResolverAccountAndKey.DevelopmentStorageAccountResolver you can connect directly
|
||||
// against the Windows Azure Storage Emulator.
|
||||
var resolver = CloudStorageClientResolverAccountAndKey.DevelopmentStorageAccountResolver;
|
||||
|
||||
// By using CloudStorageClientResolverProxies you can connect to a Windows Azure Web Role that contains the
|
||||
// Windows Azure Storage Proxies.
|
||||
// Create a new Cloud project with an MVC 3 Web Role and install the WindowsAzure.Storage NuGet package.
|
||||
// var resolver = new CloudStorageClientResolverProxies(
|
||||
// new StorageCredentialsAnonymous() /* By default, the proxy services are anonymous */,
|
||||
// new Uri("http://localhost:81/sas"),
|
||||
// new Uri("http://localhost:81/queues"),
|
||||
// new Uri("http://localhost:81/tables"),
|
||||
// Deployment.Current.Dispatcher);
|
||||
|
||||
// By using CloudStorageClientResolverAccountAndKey you can connect to your Windows Azure Storage Services account directly.
|
||||
// Just replace your Windows Azure Storage account credentials and endpoints.
|
||||
// var resolver = new CloudStorageClientResolverAccountAndKey(
|
||||
// new StorageCredentialsAccountAndKey("[your account name]", "[your account key]"),
|
||||
// new Uri("http://[your account name].blob.core.windows.net"),
|
||||
// new Uri("http://[your account name].queue.core.windows.net"),
|
||||
// new Uri("http://[your account name].table.core.windows.net"),
|
||||
// Deployment.Current.Dispatcher);
|
||||
|
||||
CloudStorageContext.Current.Resolver = resolver;
|
||||
}
|
||||
}
|
||||
}
|
Двоичные данные
packages/Phone.Storage.1.0.1/lib/sl40-wp71/Data.Services.Client.dll
поставляемый
Normal file
Двоичные данные
packages/Phone.Storage.1.0.1/lib/sl40-wp71/Phone.Storage.dll
поставляемый
Normal file
|
@ -0,0 +1,5 @@
|
|||
param($installPath, $toolsPath, $package, $project)
|
||||
|
||||
$path = [System.IO.Path]
|
||||
$readmeFile = $path::Combine($path::GetDirectoryName($project.FileName), "App_Readme\Phone.Storage.Readme.htm")
|
||||
$DTE.ItemOperations.Navigate($readmeFile, [EnvDTE.vsNavigateOptions]::vsNavigateOptionsNewWindow)
|
Двоичные данные
packages/SilverlightActivator.1.0.4/SilverlightActivator.1.0.4.nupkg
поставляемый
Normal file
|
@ -0,0 +1,14 @@
|
|||
<Application
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:silverlightactivator="clr-namespace:SilverlightActivator;assembly=SilverlightActivator">
|
||||
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
<silverlightactivator:ActivationManager x:Name="SilverlightActivator" LoadAssemblyParts="False" />
|
||||
</ResourceDictionary>
|
||||
</Application.Resources>
|
||||
|
||||
</Application>
|
Двоичные данные
packages/SilverlightActivator.1.0.4/lib/sl4-wp71/SilverlightActivator.dll
поставляемый
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<repositories>
|
||||
<repository path="..\sdkLocalDatabaseCS\packages.config" />
|
||||
</repositories>
|
|
@ -0,0 +1,22 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sdkLocalDatabaseCS_WithAzureTables", "sdkLocalDatabaseCS_WithAzureTables\sdkLocalDatabaseCS_WithAzureTables.csproj", "{80368326-8FD8-4893-937F-D75ED34A9019}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{80368326-8FD8-4893-937F-D75ED34A9019}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{80368326-8FD8-4893-937F-D75ED34A9019}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{80368326-8FD8-4893-937F-D75ED34A9019}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||
{80368326-8FD8-4893-937F-D75ED34A9019}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{80368326-8FD8-4893-937F-D75ED34A9019}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{80368326-8FD8-4893-937F-D75ED34A9019}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (c) 2011 Microsoft Corporation. All rights reserved.
|
||||
Use of this sample source code is subject to the terms of the Microsoft license
|
||||
agreement under which you licensed this sample source code and is provided AS-IS.
|
||||
If you did not accept the terms of the license agreement, you are not authorized
|
||||
to use this sample source code. For the terms of the license, please see the
|
||||
license agreement between you and Microsoft.
|
||||
|
||||
To see all Code Samples for Windows Phone, visit http://go.microsoft.com/fwlink/?LinkID=219604
|
||||
-->
|
||||
<Application x:Class="sdkLocalDatabaseCS.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:silverlightactivator="clr-namespace:SilverlightActivator;assembly=SilverlightActivator">
|
||||
<!--Application Resources-->
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries></ResourceDictionary.MergedDictionaries>
|
||||
<silverlightactivator:ActivationManager x:Name="SilverlightActivator" LoadAssemblyParts="False" />
|
||||
</ResourceDictionary>
|
||||
</Application.Resources>
|
||||
<Application.ApplicationLifetimeObjects>
|
||||
<!--Required object that handles lifetime events for the application-->
|
||||
<shell:PhoneApplicationService Launching="Application_Launching" Closing="Application_Closing" Activated="Application_Activated" Deactivated="Application_Deactivated" />
|
||||
</Application.ApplicationLifetimeObjects>
|
||||
</Application>
|
|
@ -0,0 +1,193 @@
|
|||
/*
|
||||
Copyright (c) 2011 Microsoft Corporation. All rights reserved.
|
||||
Use of this sample source code is subject to the terms of the Microsoft license
|
||||
agreement under which you licensed this sample source code and is provided AS-IS.
|
||||
If you did not accept the terms of the license agreement, you are not authorized
|
||||
to use this sample source code. For the terms of the license, please see the
|
||||
license agreement between you and Microsoft.
|
||||
|
||||
To see all Code Samples for Windows Phone, visit http://go.microsoft.com/fwlink/?LinkID=219604
|
||||
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Animation;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using Microsoft.Phone.Controls;
|
||||
using Microsoft.Phone.Shell;
|
||||
|
||||
// Directives
|
||||
//using LocalDatabaseSample.Model;
|
||||
using LocalDatabaseSample.ViewModel;
|
||||
|
||||
namespace sdkLocalDatabaseCS
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
// The static ViewModel, to be used across the application.
|
||||
private static ToDoViewModel viewModel;
|
||||
public static ToDoViewModel ViewModel
|
||||
{
|
||||
get { return viewModel; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Provides easy access to the root frame of the Phone Application.
|
||||
/// </summary>
|
||||
/// <returns>The root frame of the Phone Application.</returns>
|
||||
public PhoneApplicationFrame RootFrame { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Constructor for the Application object.
|
||||
/// </summary>
|
||||
public App()
|
||||
{
|
||||
// Global handler for uncaught exceptions.
|
||||
UnhandledException += Application_UnhandledException;
|
||||
|
||||
// Standard Silverlight initialization
|
||||
InitializeComponent();
|
||||
|
||||
// Phone-specific initialization
|
||||
InitializePhoneApplication();
|
||||
|
||||
// Show graphics profiling information while debugging.
|
||||
if (System.Diagnostics.Debugger.IsAttached)
|
||||
{
|
||||
// Display the current frame rate counters.
|
||||
Application.Current.Host.Settings.EnableFrameRateCounter = true;
|
||||
|
||||
// Show the areas of the app that are being redrawn in each frame.
|
||||
//Application.Current.Host.Settings.EnableRedrawRegions = true;
|
||||
|
||||
// Enable non-production analysis visualization mode,
|
||||
// which shows areas of a page that are handed off to GPU with a colored overlay.
|
||||
//Application.Current.Host.Settings.EnableCacheVisualization = true;
|
||||
|
||||
// Disable the application idle detection by setting the UserIdleDetectionMode property of the
|
||||
// application's PhoneApplicationService object to Disabled.
|
||||
// Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
|
||||
// and consume battery power when the user is not using the phone.
|
||||
PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
|
||||
}
|
||||
|
||||
//// Specify the local database connection string.
|
||||
//string DBConnectionString = "Data Source=isostore:/ToDo.sdf";
|
||||
|
||||
//// Create the database if it does not exist.
|
||||
//using (ToDoDataContext db = new ToDoDataContext(DBConnectionString))
|
||||
//{
|
||||
// if (db.DatabaseExists() == false)
|
||||
// {
|
||||
// // Create the local database.
|
||||
// db.CreateDatabase();
|
||||
|
||||
// // Prepopulate the categories.
|
||||
// db.Categories.InsertOnSubmit(new ToDoCategory { Name = "Home" });
|
||||
// db.Categories.InsertOnSubmit(new ToDoCategory { Name = "Work" });
|
||||
// db.Categories.InsertOnSubmit(new ToDoCategory { Name = "Hobbies" });
|
||||
|
||||
// // Save categories to the database.
|
||||
// db.SubmitChanges();
|
||||
// }
|
||||
//}
|
||||
|
||||
// Create the ViewModel object.
|
||||
viewModel = new ToDoViewModel();
|
||||
|
||||
// Query the local database and load observable collections.
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Code to execute when the application is launching (eg, from Start)
|
||||
// This code will not execute when the application is reactivated
|
||||
private void Application_Launching(object sender, LaunchingEventArgs e)
|
||||
{
|
||||
viewModel.LoadCollectionsFromDatabase();
|
||||
}
|
||||
|
||||
// Code to execute when the application is activated (brought to foreground)
|
||||
// This code will not execute when the application is first launched
|
||||
private void Application_Activated(object sender, ActivatedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Code to execute when the application is deactivated (sent to background)
|
||||
// This code will not execute when the application is closing
|
||||
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
// Code to execute when the application is closing (eg, user hit Back)
|
||||
// This code will not execute when the application is deactivated
|
||||
private void Application_Closing(object sender, ClosingEventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
// Code to execute if a navigation fails
|
||||
private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
|
||||
{
|
||||
if (System.Diagnostics.Debugger.IsAttached)
|
||||
{
|
||||
// A navigation has failed; break into the debugger
|
||||
System.Diagnostics.Debugger.Break();
|
||||
}
|
||||
}
|
||||
|
||||
// Code to execute on Unhandled Exceptions
|
||||
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
|
||||
{
|
||||
if (System.Diagnostics.Debugger.IsAttached)
|
||||
{
|
||||
// An unhandled exception has occurred; break into the debugger
|
||||
System.Diagnostics.Debugger.Break();
|
||||
}
|
||||
}
|
||||
|
||||
#region Phone application initialization
|
||||
|
||||
// Avoid double-initialization
|
||||
private bool phoneApplicationInitialized = false;
|
||||
|
||||
// Do not add any additional code to this method
|
||||
private void InitializePhoneApplication()
|
||||
{
|
||||
if (phoneApplicationInitialized)
|
||||
return;
|
||||
|
||||
// Create the frame but don't set it as RootVisual yet; this allows the splash
|
||||
// screen to remain active until the application is ready to render.
|
||||
RootFrame = new PhoneApplicationFrame();
|
||||
RootFrame.Navigated += CompleteInitializePhoneApplication;
|
||||
|
||||
// Handle navigation failures
|
||||
RootFrame.NavigationFailed += RootFrame_NavigationFailed;
|
||||
|
||||
// Ensure we don't initialize again
|
||||
phoneApplicationInitialized = true;
|
||||
}
|
||||
|
||||
// Do not add any additional code to this method
|
||||
private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
|
||||
{
|
||||
// Set the root visual to allow the application to render
|
||||
if (RootVisual != RootFrame)
|
||||
RootVisual = RootFrame;
|
||||
|
||||
// Remove this handler since it is no longer needed
|
||||
RootFrame.Navigated -= CompleteInitializePhoneApplication;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
Двоичные данные
sdkLocalDatabaseCS_WithAzureTables/App_Readme/Content/CloudBlobInterfaces.png
Normal file
После Ширина: | Высота: | Размер: 33 KiB |
Двоичные данные
sdkLocalDatabaseCS_WithAzureTables/App_Readme/Content/CloudQueueInterfaces.png
Normal file
После Ширина: | Высота: | Размер: 27 KiB |
Двоичные данные
sdkLocalDatabaseCS_WithAzureTables/App_Readme/Content/CloudStorageClientResolver.png
Normal file
После Ширина: | Высота: | Размер: 25 KiB |
Двоичные данные
sdkLocalDatabaseCS_WithAzureTables/App_Readme/Content/CloudTableInterfaces.png
Normal file
После Ширина: | Высота: | Размер: 19 KiB |
|
@ -0,0 +1,329 @@
|
|||
/*----------------------------------------------------------
|
||||
The base color for this template is #5c87b2. If you'd like
|
||||
to use a different color start by replacing all instances of
|
||||
#5c87b2 with your new color.
|
||||
----------------------------------------------------------*/
|
||||
body
|
||||
{
|
||||
background-color: #ffffff;
|
||||
font-weight: normal;
|
||||
font-size: 15px;
|
||||
font-family: "Segoe UI" , "Helvetica" , "Tahoma" , "Arial";
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
color: #696969;
|
||||
}
|
||||
|
||||
a
|
||||
{
|
||||
color: #3387dd;
|
||||
}
|
||||
|
||||
a:link
|
||||
{
|
||||
color: #3387dd;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:visited
|
||||
{
|
||||
color: #3387dd;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover
|
||||
{
|
||||
color: #1d60ff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
p, ul
|
||||
{
|
||||
margin-bottom: 20px;
|
||||
line-height: 1.6em;
|
||||
}
|
||||
|
||||
/* HEADINGS
|
||||
----------------------------------------------------------*/
|
||||
h1, h2, h3, h4, h5, h6
|
||||
{
|
||||
font-size: 1.5em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
h1
|
||||
{
|
||||
font-size: 2em;
|
||||
padding-bottom: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
h2
|
||||
{
|
||||
padding: 0 0 10px 0;
|
||||
font-size: 2.8em;
|
||||
font-weight: lighter;
|
||||
color: #6cbd45;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
|
||||
h3
|
||||
{
|
||||
font-size: 22px;
|
||||
font-weight: normal;
|
||||
color: #939896;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
h4
|
||||
{
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
h5, h6
|
||||
{
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* this rule styles <h2> tags that are the
|
||||
first child of the left and right table columns */
|
||||
.rightColumn > h1, .rightColumn > h2, .leftColumn > h1, .leftColumn > h2
|
||||
{
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/* PRIMARY LAYOUT ELEMENTS
|
||||
----------------------------------------------------------*/
|
||||
|
||||
/* you can specify a greater or lesser percentage for the
|
||||
page width. Or, you can specify an exact pixel width. */
|
||||
.page
|
||||
{
|
||||
width: 90%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
#header
|
||||
{
|
||||
position: relative;
|
||||
margin-bottom: 0px;
|
||||
color: #000;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#header h1
|
||||
{
|
||||
font-weight: normal;
|
||||
padding: 5px 0px 0px 47px;
|
||||
margin: 0;
|
||||
color: #000;
|
||||
border: none;
|
||||
line-height: 2em;
|
||||
font-size: 24px !important;
|
||||
}
|
||||
|
||||
#main
|
||||
{
|
||||
padding: 0px 0px 0px 0px;
|
||||
background-color: #fff;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#footer
|
||||
{
|
||||
color: #999;
|
||||
padding: 10px 0;
|
||||
text-align: center;
|
||||
line-height: normal;
|
||||
margin: 0;
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
/* TAB MENU
|
||||
----------------------------------------------------------*/
|
||||
ul#menu
|
||||
{
|
||||
padding: 0 0 2px;
|
||||
position: relative;
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
ul#menu li
|
||||
{
|
||||
display: inline;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
ul#menu li a
|
||||
{
|
||||
font-weight: normal;
|
||||
font-size: 19px;
|
||||
text-decoration: none;
|
||||
color: #939896;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
ul#menu li a:hover
|
||||
{
|
||||
color: #202020;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
ul#menu li.selected a
|
||||
{
|
||||
color: #202020;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/* FORM LAYOUT ELEMENTS
|
||||
----------------------------------------------------------*/
|
||||
|
||||
fieldset
|
||||
{
|
||||
padding: 1em;
|
||||
border: none;
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
|
||||
fieldset.group:after
|
||||
{
|
||||
content: ".";
|
||||
display: block;
|
||||
height: 0;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
fieldset p
|
||||
{
|
||||
margin: 2px 12px 10px 10px;
|
||||
}
|
||||
|
||||
fieldset div.user
|
||||
{
|
||||
float: left;
|
||||
width: 200px;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
label
|
||||
{
|
||||
color: #202020;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
input[type="text"]
|
||||
{
|
||||
width: 200px;
|
||||
height: 20px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* TABLE
|
||||
----------------------------------------------------------*/
|
||||
|
||||
table
|
||||
{
|
||||
border: none;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table td
|
||||
{
|
||||
padding: 10px 12px;
|
||||
border: none;
|
||||
border-right: 2px solid white;
|
||||
text-align: center;
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
table th
|
||||
{
|
||||
padding: 10px 5px;
|
||||
text-align: center;
|
||||
background-color: #fff;
|
||||
color: #939896;
|
||||
font-size: 22px;
|
||||
font-weight: normal;
|
||||
border: none;
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
table tr
|
||||
{
|
||||
min-height: 32px;
|
||||
}
|
||||
|
||||
table tr.d0
|
||||
{
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
|
||||
table tr.d1
|
||||
{
|
||||
background-color: #e0e1e1;
|
||||
}
|
||||
|
||||
table tr td
|
||||
{
|
||||
color: #202020;
|
||||
}
|
||||
|
||||
table td p
|
||||
{
|
||||
margin: 0px;
|
||||
font-size: 15px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.left-aligned
|
||||
{
|
||||
text-align: left;
|
||||
min-width: 150px;
|
||||
}
|
||||
|
||||
/* MISC
|
||||
----------------------------------------------------------*/
|
||||
.clear
|
||||
{
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#menucontainer
|
||||
{
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
div#title
|
||||
{
|
||||
display: block;
|
||||
float: left;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.hidden
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.code
|
||||
{
|
||||
background-color: #F7F7F7;
|
||||
padding: 10px;
|
||||
margin: 10px 10px 10px 0px;
|
||||
border: #696969 2px solid;
|
||||
max-width: 1000px;
|
||||
min-width: 1000px;
|
||||
color:#383838;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
.note
|
||||
{
|
||||
font-size: 85%;
|
||||
}
|
Двоичные данные
sdkLocalDatabaseCS_WithAzureTables/App_Readme/Content/StorageInitializer.png
Normal file
После Ширина: | Высота: | Размер: 91 KiB |
|
@ -0,0 +1,223 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Windows Azure Storage Client Library for Windows Phone</title>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<link href="Content/Site.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="page">
|
||||
<header>
|
||||
<div id="header">
|
||||
<div id="title">
|
||||
<h1>Windows Azure Storage Client Library for Windows Phone</h1>
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</header>
|
||||
<section id="main">
|
||||
<h2>Introduction</h2>
|
||||
<p>
|
||||
The Windows Azure Storage Client library for Windows Phone
|
||||
contains a set of classes to provide client access for Windows
|
||||
Azure storage services such as Blobs, Tables and Queues.</p>
|
||||
<h3>Prerequisites</h3>
|
||||
<ul>
|
||||
<li><a href="http://www.microsoft.com/download/en/details.aspx?id=27570">Windows Phone SDK 7.1</a></li>
|
||||
<li><a href="http://www.nuget.org/">NuGet 1.5 or above</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>Configuration</h2>
|
||||
<h3>Configuring your Windows Azure Storage settings</h3>
|
||||
<ol>
|
||||
<li>The Windows Azure Storage Client library for Windows Phone works against any of the following
|
||||
services:
|
||||
<ul>
|
||||
<li>Windows Azure storage services (and Storage Emulator)</li>
|
||||
<li><a href="http://nuget.org/Packages/WindowsAzure.Storage.Proxy">Windows Azure storage proxy cloud services</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>By default, this package is configured to access the Windows Azure Storage Emulator
|
||||
directly. If you wish to change this, modify the <strong>App_Start\StorageInitializer.cs</strong> file, and set
|
||||
the account type you desire for your application.</li><br/>
|
||||
<img src="Content/StorageInitializer.png" title="Configuring the Windows Azure Storage Client library for Windows Phone" /><br/>
|
||||
</ol>
|
||||
<!------------------------------------------>
|
||||
|
||||
<h2>How to use it</h2>
|
||||
<h3>Storage Context Resolver</h3>
|
||||
<p>
|
||||
This library provides an <strong>ICloudStorageClientResolver</strong>
|
||||
interface to create the clients for Blobs, Tables and Queues according to the Windows Azure
|
||||
storage settings configured. There are two implementations for this interface:
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>CloudStorageClientResolverAccountAndKey</strong>: Lets you configure
|
||||
your Windows Azure storage account settings (account name, account key, blob
|
||||
service endpoint, queue service endpoint and table service endpoint) so your
|
||||
phone application can
|
||||
access them directly.</li>
|
||||
<li><strong>CloudStorageClientResolverProxies</strong>: Lets you configure your
|
||||
Windows Azure storage proxy cloud services' settings (custom authorization
|
||||
header, shared access signature service endpoint, queue proxy service endpoint
|
||||
and table proxy service endpoint) so your phone application can access the
|
||||
Queues and Tables services indirectly through the proxies, and using shared
|
||||
access signatures for Blobs.</li>
|
||||
</ul>
|
||||
<img src="Content/CloudStorageClientResolver.png" title="ICloudStorageClientResolver interface" /><br/>
|
||||
<!------------------------------------------>
|
||||
|
||||
<h3>Cloud Queues</h3>
|
||||
<p>
|
||||
After creating a
|
||||
cloud queue client using the resolver, you can get a queue reference and operate with it using the following interface.
|
||||
<br/><img src="Content/CloudQueueInterfaces.png" title="Cloud Queue interfaces" /><br/>
|
||||
</p>
|
||||
<h4>Queues Sample</h4>
|
||||
<p>
|
||||
The following sample code shows how to create a new queue and immediately add a message
|
||||
to it.
|
||||
</p>
|
||||
<pre class="code">
|
||||
var queueClient = CloudStorageContext.Current.Resolver.CreateCloudQueueClient();
|
||||
var queue = queueClient.GetQueueReference("queuename");
|
||||
queue.Create(
|
||||
r => queue.AddMessage(
|
||||
new CloudQueueMessage { AsBytes = Encoding.UTF8.GetBytes("Message content") },
|
||||
c =>
|
||||
{
|
||||
// Some logic here.
|
||||
}));
|
||||
</pre>
|
||||
|
||||
<!------------------------------------------>
|
||||
|
||||
<h3>Cloud Tables</h3>
|
||||
<p>
|
||||
After creating a
|
||||
cloud table client using the resolver, you can create and delete tables or get the
|
||||
<strong>TableServiceContext</strong> (which inherits from <strong>
|
||||
DataServiceContext</strong>) to work with rows within a single table.
|
||||
<br/><img src="Content/CloudTableInterfaces.png" title="Cloud Table interfaces" /><br/>
|
||||
</p>
|
||||
<h4>Tables Sample</h4>
|
||||
<p>In order to operate with rows on a table, you need to first create a class that
|
||||
inherits from <strong>TableServiceEntity</strong> to define the table structure.
|
||||
Make sure to add the <strong>DataServiceEntity</strong> and <strong>EntitySet</strong>
|
||||
attributes to the class definition, passing the table name as constructor
|
||||
parameter for the latter.</p>
|
||||
<pre class="code">
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using Microsoft.WindowsAzure.Samples.Data.Services.Client;
|
||||
using Microsoft.WindowsAzure.Samples.Phone.Storage;
|
||||
|
||||
[DataServiceEntity]
|
||||
[EntitySet("SampleData")]
|
||||
public class SampleData : TableServiceEntity
|
||||
{
|
||||
private string name;
|
||||
|
||||
public SampleData()
|
||||
: base(
|
||||
"PartitionKey",
|
||||
string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0:10}_{1}",
|
||||
DateTime.MaxValue.Ticks - DateTime.Now.Ticks,
|
||||
Guid.NewGuid()))
|
||||
{
|
||||
}
|
||||
|
||||
public SampleData(string partitionKey, string rowKey)
|
||||
: base(partitionKey, rowKey)
|
||||
{
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.name;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
this.name = value;
|
||||
this.OnPropertyChanged("Name");
|
||||
}
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
<p>
|
||||
Now
|
||||
that we have the <strong>SampleData</strong> class,
|
||||
you can use the following code to create a new <em>SampleData</em> table and immediately add a row
|
||||
to it using the <strong>TableServiceContext</strong>.
|
||||
</p>
|
||||
<pre class="code">
|
||||
var tableClient = CloudStorageContext.Current.Resolver.CreateCloudTableClient();
|
||||
var tableName = "SampleData";
|
||||
|
||||
tableClient.CreateTableIfNotExist(
|
||||
tableName,
|
||||
p =>
|
||||
{
|
||||
var context = CloudStorageContext.Current.Resolver.CreateTableServiceContext();
|
||||
var sampleData = new SampleData { Name = "John Doe" };
|
||||
|
||||
context.AddObject(tableName, sampleData);
|
||||
context.BeginSaveChanges(
|
||||
asyncResult =>
|
||||
{
|
||||
var response = context.EndSaveChanges(asyncResult);
|
||||
|
||||
// Some logic here.
|
||||
},
|
||||
null);
|
||||
});
|
||||
</pre>
|
||||
|
||||
<!------------------------------------------>
|
||||
|
||||
<h3>Cloud Blobs</h3>
|
||||
<p>
|
||||
After creating a
|
||||
cloud blob client using the resolver, you can get a container reference and operate with it and
|
||||
its contained blobs using the following interfaces.
|
||||
<br/><img src="Content/CloudBlobInterfaces.png" title="Cloud Blob interfaces" /><br/>
|
||||
</p>
|
||||
<h4>Blobs Sample</h4>
|
||||
<p>
|
||||
The following sample shows how to create a new public container with sample metadata and immediately add a blob
|
||||
to it.
|
||||
</p>
|
||||
<pre class="code">
|
||||
var blobClient = CloudStorageContext.Current.Resolver.CreateCloudBlobClient();
|
||||
var container = blobClient.GetContainerReference("sample-container");
|
||||
container.Metadata.Add("samplekey", "samplevalue");
|
||||
|
||||
container.CreateIfNotExist(
|
||||
BlobContainerPublicAccessType.Container,
|
||||
response =>
|
||||
{
|
||||
var blob = container.GetBlobReference("sample-blob");
|
||||
var sampleStream = new MemoryStream(Encoding.UTF8.GetBytes("sample content"));
|
||||
|
||||
blob.UploadFromStream(
|
||||
sampleStream,
|
||||
response2 =>
|
||||
{
|
||||
// Some logic here.
|
||||
});
|
||||
});
|
||||
</pre>
|
||||
|
||||
<!------------------------------------------>
|
||||
</section>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,39 @@
|
|||
[assembly: SilverlightActivator.ApplicationStartupMethod(typeof(sdkLocalDatabaseCS.App_Start.StorageInitializer), "ApplicationStartup", Order = 10)]
|
||||
|
||||
namespace sdkLocalDatabaseCS.App_Start
|
||||
{
|
||||
using System;
|
||||
using System.Windows;
|
||||
using Microsoft.WindowsAzure.Samples.Phone.Storage;
|
||||
|
||||
public class StorageInitializer
|
||||
{
|
||||
public static void ApplicationStartup()
|
||||
{
|
||||
// By using CloudStorageClientResolverAccountAndKey.DevelopmentStorageAccountResolver you can connect directly
|
||||
// against the Windows Azure Storage Emulator.
|
||||
var resolver = CloudStorageClientResolverAccountAndKey.DevelopmentStorageAccountResolver;
|
||||
|
||||
// By using CloudStorageClientResolverProxies you can connect to a Windows Azure Web Role that contains the
|
||||
// Windows Azure Storage Proxies.
|
||||
// Create a new Cloud project with an MVC 3 Web Role and install the WindowsAzure.Storage NuGet package.
|
||||
// var resolver = new CloudStorageClientResolverProxies(
|
||||
// new StorageCredentialsAnonymous() /* By default, the proxy services are anonymous */,
|
||||
// new Uri("http://localhost:81/sas"),
|
||||
// new Uri("http://localhost:81/queues"),
|
||||
// new Uri("http://localhost:81/tables"),
|
||||
// Deployment.Current.Dispatcher);
|
||||
|
||||
// By using CloudStorageClientResolverAccountAndKey you can connect to your Windows Azure Storage Services account directly.
|
||||
// Just replace your Windows Azure Storage account credentials and endpoints.
|
||||
// var resolver = new CloudStorageClientResolverAccountAndKey(
|
||||
// new StorageCredentialsAccountAndKey("[your account name]", "[your account key]"),
|
||||
// new Uri("http://[your account name].blob.core.windows.net"),
|
||||
// new Uri("http://[your account name].queue.core.windows.net"),
|
||||
// new Uri("http://[your account name].table.core.windows.net"),
|
||||
// Deployment.Current.Dispatcher);
|
||||
|
||||
CloudStorageContext.Current.Resolver = resolver;
|
||||
}
|
||||
}
|
||||
}
|
После Ширина: | Высота: | Размер: 1.5 KiB |
После Ширина: | Высота: | Размер: 4.6 KiB |
После Ширина: | Высота: | Размер: 271 B |
После Ширина: | Высота: | Размер: 350 B |
После Ширина: | Высота: | Размер: 414 B |
После Ширина: | Высота: | Размер: 445 B |
Двоичные данные
sdkLocalDatabaseCS_WithAzureTables/Library/Microsoft.Phone.Controls.Toolkit.dll
Normal file
|
@ -0,0 +1,132 @@
|
|||
<!--
|
||||
Copyright (c) 2011 Microsoft Corporation. All rights reserved.
|
||||
Use of this sample source code is subject to the terms of the Microsoft license
|
||||
agreement under which you licensed this sample source code and is provided AS-IS.
|
||||
If you did not accept the terms of the license agreement, you are not authorized
|
||||
to use this sample source code. For the terms of the license, please see the
|
||||
license agreement between you and Microsoft.
|
||||
|
||||
To see all Code Samples for Windows Phone, visit http://go.microsoft.com/fwlink/?LinkID=219604
|
||||
-->
|
||||
<phone:PhoneApplicationPage
|
||||
x:Class="sdkLocalDatabaseCS.MainPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
|
||||
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="696"
|
||||
FontFamily="{StaticResource PhoneFontFamilyNormal}"
|
||||
FontSize="{StaticResource PhoneFontSizeNormal}"
|
||||
Foreground="{StaticResource PhoneForegroundBrush}"
|
||||
SupportedOrientations="Portrait" Orientation="Portrait"
|
||||
shell:SystemTray.IsVisible="True"
|
||||
xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls">
|
||||
|
||||
<phone:PhoneApplicationPage.Resources>
|
||||
<DataTemplate x:Key="ToDoListBoxItemTemplate">
|
||||
|
||||
<Grid HorizontalAlignment="Stretch" Width="420">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="100" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="100" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<CheckBox
|
||||
IsChecked="{Binding IsComplete, Mode=TwoWay}"
|
||||
Grid.Column="0" VerticalAlignment="Top"/>
|
||||
|
||||
<TextBlock
|
||||
Text="{Binding ItemName}"
|
||||
FontSize="{StaticResource PhoneFontSizeLarge}"
|
||||
Grid.Column="1" Grid.ColumnSpan="2"
|
||||
VerticalAlignment="Top" Margin="-36, 12, 0, 0"/>
|
||||
|
||||
<Button
|
||||
Grid.Column="3"
|
||||
x:Name="deleteTaskButton"
|
||||
BorderThickness="0"
|
||||
Margin="0, -18, 0, 0"
|
||||
Click="deleteTaskButton_Click">
|
||||
|
||||
<Image
|
||||
Source="/Images/appbar.delete.rest.png"
|
||||
Height="75"
|
||||
Width="75"/>
|
||||
|
||||
</Button>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</phone:PhoneApplicationPage.Resources>
|
||||
|
||||
<!--LayoutRoot is the root grid where all page content is placed.-->
|
||||
<Grid x:Name="LayoutRoot" Background="Transparent">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!--TitlePanel contains the name of the application and page title.-->
|
||||
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
|
||||
<TextBlock
|
||||
x:Name="ApplicationTitle"
|
||||
Text="LOCAL DATABASE EXAMPLE: TO-DO LIST"
|
||||
Style="{StaticResource PhoneTextNormalStyle}"/>
|
||||
</StackPanel>
|
||||
|
||||
<!--ContentPanel - place additional content here.-->
|
||||
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
|
||||
<controls:Pivot Margin="0, -36, 0, 0">
|
||||
|
||||
<controls:PivotItem Header="all">
|
||||
<ListBox
|
||||
x:Name="allToDoItemsListBox"
|
||||
ItemsSource="{Binding AllToDoItems}"
|
||||
Margin="12, 0, 12, 0" Width="440"
|
||||
ItemTemplate="{StaticResource ToDoListBoxItemTemplate}" />
|
||||
</controls:PivotItem>
|
||||
|
||||
<controls:PivotItem Header="home">
|
||||
<ListBox
|
||||
x:Name="homeToDoItemsListBox"
|
||||
ItemsSource="{Binding HomeToDoItems, Mode=OneWay}"
|
||||
Margin="12, 0, 12, 0" Width="440"
|
||||
ItemTemplate="{StaticResource ToDoListBoxItemTemplate}" />
|
||||
</controls:PivotItem>
|
||||
|
||||
<controls:PivotItem Header="work">
|
||||
<ListBox
|
||||
x:Name="workToDoItemsListBox"
|
||||
ItemsSource="{Binding WorkToDoItems}"
|
||||
Margin="12, 0, 12, 0" Width="440"
|
||||
ItemTemplate="{StaticResource ToDoListBoxItemTemplate}" />
|
||||
</controls:PivotItem>
|
||||
|
||||
<controls:PivotItem Header="hobbies">
|
||||
<ListBox
|
||||
x:Name="hobbiesToDoItemsListBox"
|
||||
ItemsSource="{Binding HobbiesToDoItems}"
|
||||
Margin="12, 0, 12, 0" Width="440"
|
||||
ItemTemplate="{StaticResource ToDoListBoxItemTemplate}" />
|
||||
</controls:PivotItem>
|
||||
|
||||
</controls:Pivot>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
<phone:PhoneApplicationPage.ApplicationBar>
|
||||
<shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
|
||||
|
||||
<shell:ApplicationBarIconButton
|
||||
IconUri="/Images/appbar.add.rest.png"
|
||||
Text="add"
|
||||
x:Name="newTaskAppBarButton"
|
||||
Click="newTaskAppBarButton_Click"/>
|
||||
|
||||
</shell:ApplicationBar>
|
||||
</phone:PhoneApplicationPage.ApplicationBar>
|
||||
|
||||
</phone:PhoneApplicationPage>
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
Copyright (c) 2011 Microsoft Corporation. All rights reserved.
|
||||
Use of this sample source code is subject to the terms of the Microsoft license
|
||||
agreement under which you licensed this sample source code and is provided AS-IS.
|
||||
If you did not accept the terms of the license agreement, you are not authorized
|
||||
to use this sample source code. For the terms of the license, please see the
|
||||
license agreement between you and Microsoft.
|
||||
|
||||
To see all Code Samples for Windows Phone, visit http://go.microsoft.com/fwlink/?LinkID=219604
|
||||
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Animation;
|
||||
using System.Windows.Shapes;
|
||||
using Microsoft.Phone.Controls;
|
||||
using sdkLocalDatabaseCS.Model;
|
||||
using LocalDatabaseSample.ViewModel;
|
||||
|
||||
// Directive for the ViewModel.
|
||||
//using LocalDatabaseSample.Model;
|
||||
|
||||
namespace sdkLocalDatabaseCS
|
||||
{
|
||||
public partial class MainPage : PhoneApplicationPage
|
||||
{
|
||||
// Constructor
|
||||
public MainPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// Set the page DataContext property to the ViewModel.
|
||||
this.DataContext = App.ViewModel;
|
||||
}
|
||||
|
||||
private void newTaskAppBarButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
NavigationService.Navigate(new Uri("/NewTaskPage.xaml", UriKind.Relative));
|
||||
}
|
||||
|
||||
|
||||
private void deleteTaskButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// Cast the parameter as a button.
|
||||
var button = sender as Button;
|
||||
|
||||
if (button != null)
|
||||
{
|
||||
// Get a handle for the to-do item bound to the button.
|
||||
ToDoEntity toDoForDelete = button.DataContext as ToDoEntity;
|
||||
|
||||
App.ViewModel.DeleteToDoItem(toDoForDelete);
|
||||
}
|
||||
|
||||
// Put the focus back to the main page.
|
||||
this.Focus();
|
||||
}
|
||||
|
||||
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
|
||||
{
|
||||
// Save changes to the database.
|
||||
//waw App.ViewModel.SaveChangesToDB();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using System.Net;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Ink;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Animation;
|
||||
using System.Windows.Shapes;
|
||||
using Microsoft.WindowsAzure.Samples.Data.Services.Client;
|
||||
using Microsoft.WindowsAzure.Samples.Phone.Storage;
|
||||
using System.Globalization;
|
||||
|
||||
namespace sdkLocalDatabaseCS.Model
|
||||
{
|
||||
[DataServiceEntity]
|
||||
[EntitySet("ToDo")]
|
||||
public class ToDoEntity : TableServiceEntity
|
||||
{
|
||||
public ToDoEntity()
|
||||
: base(
|
||||
"PartitionKey",
|
||||
string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0:10}_{1}",
|
||||
DateTime.MaxValue.Ticks - DateTime.Now.Ticks,
|
||||
Guid.NewGuid()))
|
||||
{
|
||||
}
|
||||
|
||||
public ToDoEntity(string partitionKey, string rowKey)
|
||||
: base(partitionKey, rowKey)
|
||||
{
|
||||
}
|
||||
|
||||
public int ToDoItemId { get; set; }
|
||||
|
||||
public string ItemName { get; set; }
|
||||
|
||||
public bool IsComplete { get; set; }
|
||||
|
||||
public string Category { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
<!--
|
||||
Copyright (c) 2011 Microsoft Corporation. All rights reserved.
|
||||
Use of this sample source code is subject to the terms of the Microsoft license
|
||||
agreement under which you licensed this sample source code and is provided AS-IS.
|
||||
If you did not accept the terms of the license agreement, you are not authorized
|
||||
to use this sample source code. For the terms of the license, please see the
|
||||
license agreement between you and Microsoft.
|
||||
|
||||
To see all Code Samples for Windows Phone, visit http://go.microsoft.com/fwlink/?LinkID=219604
|
||||
-->
|
||||
<phone:PhoneApplicationPage
|
||||
x:Class="sdkLocalDatabaseCS.NewTaskPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
|
||||
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
FontFamily="{StaticResource PhoneFontFamilyNormal}"
|
||||
FontSize="{StaticResource PhoneFontSizeNormal}"
|
||||
Foreground="{StaticResource PhoneForegroundBrush}"
|
||||
SupportedOrientations="Portrait" Orientation="Portrait"
|
||||
mc:Ignorable="d" d:DesignHeight="696" d:DesignWidth="480"
|
||||
shell:SystemTray.IsVisible="True"
|
||||
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit">
|
||||
|
||||
<!--LayoutRoot is the root grid where all page content is placed.-->
|
||||
<Grid x:Name="LayoutRoot" Background="Transparent">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!--TitlePanel contains the name of the application and page title.-->
|
||||
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
|
||||
<TextBlock
|
||||
x:Name="ApplicationTitle"
|
||||
Text="LOCAL DATABASE EXAMPLE: TO-DO LIST"
|
||||
Style="{StaticResource PhoneTextNormalStyle}"/>
|
||||
<TextBlock
|
||||
x:Name="PageTitle"
|
||||
Text="new task"
|
||||
Margin="9,-7,0,0"
|
||||
Style="{StaticResource PhoneTextTitle1Style}"/>
|
||||
</StackPanel>
|
||||
|
||||
<!--ContentPanel - place additional content here.-->
|
||||
<StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
|
||||
<TextBlock Text="Name"/>
|
||||
<TextBox x:Name="newTaskNameTextBox"/>
|
||||
<TextBlock Text="Category"/>
|
||||
|
||||
<toolkit:ListPicker
|
||||
x:Name="categoriesListPicker"
|
||||
ItemsSource="{Binding CategoriesList}"
|
||||
>
|
||||
</toolkit:ListPicker>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<phone:PhoneApplicationPage.ApplicationBar>
|
||||
<shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
|
||||
|
||||
<shell:ApplicationBarIconButton
|
||||
x:Name="appBarOkButton"
|
||||
IconUri="/Images/appbar.check.rest.png"
|
||||
Text="ok"
|
||||
Click="appBarOkButton_Click"/>
|
||||
|
||||
<shell:ApplicationBarIconButton
|
||||
x:Name="appBarCancelButton"
|
||||
IconUri="/Images/appbar.cancel.rest.png"
|
||||
Text="cancel"
|
||||
Click="appBarCancelButton_Click"/>
|
||||
|
||||
</shell:ApplicationBar>
|
||||
</phone:PhoneApplicationPage.ApplicationBar>
|
||||
|
||||
</phone:PhoneApplicationPage>
|
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
Copyright (c) 2011 Microsoft Corporation. All rights reserved.
|
||||
Use of this sample source code is subject to the terms of the Microsoft license
|
||||
agreement under which you licensed this sample source code and is provided AS-IS.
|
||||
If you did not accept the terms of the license agreement, you are not authorized
|
||||
to use this sample source code. For the terms of the license, please see the
|
||||
license agreement between you and Microsoft.
|
||||
|
||||
To see all Code Samples for Windows Phone, visit http://go.microsoft.com/fwlink/?LinkID=219604
|
||||
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Animation;
|
||||
using System.Windows.Shapes;
|
||||
using Microsoft.Phone.Controls;
|
||||
using sdkLocalDatabaseCS.Model;
|
||||
|
||||
// Directive for the data model.
|
||||
//using LocalDatabaseSample.Model;
|
||||
|
||||
namespace sdkLocalDatabaseCS
|
||||
{
|
||||
public partial class NewTaskPage : PhoneApplicationPage
|
||||
{
|
||||
public NewTaskPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// Set the page DataContext property to the ViewModel.
|
||||
this.DataContext = App.ViewModel;
|
||||
}
|
||||
|
||||
private void appBarOkButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Confirm there is some text in the text box.
|
||||
if (newTaskNameTextBox.Text.Length > 0)
|
||||
{
|
||||
// Create a new to-do item.
|
||||
ToDoEntity newToDoItem = new ToDoEntity
|
||||
{
|
||||
ItemName = newTaskNameTextBox.Text,
|
||||
Category = categoriesListPicker.SelectedItem.ToString()
|
||||
};
|
||||
|
||||
// Add the item to the ViewModel.
|
||||
App.ViewModel.AddToDoItem(newToDoItem);
|
||||
|
||||
// Return to the main page.
|
||||
if (NavigationService.CanGoBack)
|
||||
{
|
||||
NavigationService.GoBack();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void appBarCancelButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Return to the main page.
|
||||
if (NavigationService.CanGoBack)
|
||||
{
|
||||
NavigationService.GoBack();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
>
|
||||
<Deployment.Parts>
|
||||
</Deployment.Parts>
|
||||
</Deployment>
|
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
Copyright (c) 2011 Microsoft Corporation. All rights reserved.
|
||||
Use of this sample source code is subject to the terms of the Microsoft license
|
||||
agreement under which you licensed this sample source code and is provided AS-IS.
|
||||
If you did not accept the terms of the license agreement, you are not authorized
|
||||
to use this sample source code. For the terms of the license, please see the
|
||||
license agreement between you and Microsoft.
|
||||
|
||||
To see all Code Samples for Windows Phone, visit http://go.microsoft.com/fwlink/?LinkID=219604
|
||||
|
||||
*/
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Resources;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("sdkLocalDatabaseCS")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyProduct("sdkLocalDatabaseCS")]
|
||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2011")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("f3059a74-9324-489b-8620-a15bbe49d9a0")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
[assembly: NeutralResourcesLanguageAttribute("en-US")]
|
|
@ -0,0 +1,35 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2009/deployment" AppPlatformVersion="7.1">
|
||||
<App xmlns="" ProductID="{77a80316-384d-40dc-a8c3-c4054676e85c}" Title="sdkLocalDatabaseCS" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="sdkLocalDatabaseCS author" Description="Sample description" Publisher="sdkLocalDatabaseCS">
|
||||
<IconPath IsRelative="true" IsResource="false">ApplicationIcon.png</IconPath>
|
||||
<Capabilities>
|
||||
<Capability Name="ID_CAP_GAMERSERVICES"/>
|
||||
<Capability Name="ID_CAP_IDENTITY_DEVICE"/>
|
||||
<Capability Name="ID_CAP_IDENTITY_USER"/>
|
||||
<Capability Name="ID_CAP_LOCATION"/>
|
||||
<Capability Name="ID_CAP_MEDIALIB"/>
|
||||
<Capability Name="ID_CAP_MICROPHONE"/>
|
||||
<Capability Name="ID_CAP_NETWORKING"/>
|
||||
<Capability Name="ID_CAP_PHONEDIALER"/>
|
||||
<Capability Name="ID_CAP_PUSH_NOTIFICATION"/>
|
||||
<Capability Name="ID_CAP_SENSORS"/>
|
||||
<Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/>
|
||||
<Capability Name="ID_CAP_ISV_CAMERA"/>
|
||||
<Capability Name="ID_CAP_CONTACTS"/>
|
||||
<Capability Name="ID_CAP_APPOINTMENTS"/>
|
||||
</Capabilities>
|
||||
<Tasks>
|
||||
<DefaultTask Name ="_default" NavigationPage="MainPage.xaml"/>
|
||||
</Tasks>
|
||||
<Tokens>
|
||||
<PrimaryToken TokenID="sdkLocalDatabaseCSToken" TaskName="_default">
|
||||
<TemplateType5>
|
||||
<BackgroundImageURI IsRelative="true" IsResource="false">Background.png</BackgroundImageURI>
|
||||
<Count>0</Count>
|
||||
<Title>sdkLocalDatabaseCS</Title>
|
||||
</TemplateType5>
|
||||
</PrimaryToken>
|
||||
</Tokens>
|
||||
</App>
|
||||
</Deployment>
|
После Ширина: | Высота: | Размер: 9.2 KiB |
|
@ -0,0 +1,213 @@
|
|||
/*
|
||||
Copyright (c) 2011 Microsoft Corporation. All rights reserved.
|
||||
Use of this sample source code is subject to the terms of the Microsoft license
|
||||
agreement under which you licensed this sample source code and is provided AS-IS.
|
||||
If you did not accept the terms of the license agreement, you are not authorized
|
||||
to use this sample source code. For the terms of the license, please see the
|
||||
license agreement between you and Microsoft.
|
||||
|
||||
To see all Code Samples for Windows Phone, visit http://go.microsoft.com/fwlink/?LinkID=219604
|
||||
|
||||
*/
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using Microsoft.WindowsAzure.Samples.Phone.Storage;
|
||||
using Microsoft.WindowsAzure.Samples.Data.Services.Client;
|
||||
using sdkLocalDatabaseCS.Model;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Collections;
|
||||
|
||||
|
||||
namespace LocalDatabaseSample.ViewModel
|
||||
{
|
||||
public class ToDoViewModel : INotifyPropertyChanged
|
||||
{
|
||||
private string tableName = "ToDo";
|
||||
|
||||
// Class constructor, create the data context object.
|
||||
public ToDoViewModel()
|
||||
{
|
||||
}
|
||||
|
||||
// All to-do items.
|
||||
public void GetAllToDoItems()
|
||||
{
|
||||
var context = CloudStorageContext.Current.Resolver.CreateTableServiceContext();
|
||||
DataServiceCollection<ToDoEntity> toDoEntityCollection = new DataServiceCollection<ToDoEntity>(context);
|
||||
|
||||
toDoEntityCollection.LoadCompleted += (s, e) =>
|
||||
{
|
||||
AllToDoItems = toDoEntityCollection;
|
||||
|
||||
// Query the database and load all associated items to their respective collections.
|
||||
foreach (var category in CategoriesList)
|
||||
{
|
||||
switch (category)
|
||||
{
|
||||
case "Home":
|
||||
HomeToDoItems = Convert(AllToDoItems.Where(w => w.Category == category));
|
||||
break;
|
||||
case "Work":
|
||||
WorkToDoItems = Convert(AllToDoItems.Where(w => w.Category == category));
|
||||
break;
|
||||
case "Hobbies":
|
||||
HobbiesToDoItems = Convert(AllToDoItems.Where(w => w.Category == category));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var tableUri = new Uri(
|
||||
string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0}/{1}()",
|
||||
context.BaseUri,
|
||||
tableName,
|
||||
DateTime.UtcNow.Ticks),
|
||||
UriKind.Absolute);
|
||||
|
||||
toDoEntityCollection.Clear();
|
||||
toDoEntityCollection.LoadAsync(tableUri);
|
||||
}
|
||||
|
||||
private ObservableCollection<ToDoEntity> _allToDoItems;
|
||||
public ObservableCollection<ToDoEntity> AllToDoItems
|
||||
{
|
||||
get { return _allToDoItems; }
|
||||
set
|
||||
{
|
||||
_allToDoItems = value;
|
||||
NotifyPropertyChanged("AllToDoItems");
|
||||
}
|
||||
}
|
||||
|
||||
// To-do items associated with the home category.
|
||||
private ObservableCollection<ToDoEntity> _homeToDoItems;
|
||||
public ObservableCollection<ToDoEntity> HomeToDoItems
|
||||
{
|
||||
get { return _homeToDoItems; }
|
||||
set
|
||||
{
|
||||
_homeToDoItems = value;
|
||||
NotifyPropertyChanged("HomeToDoItems");
|
||||
}
|
||||
}
|
||||
|
||||
// To-do items associated with the work category.
|
||||
private ObservableCollection<ToDoEntity> _workToDoItems;
|
||||
public ObservableCollection<ToDoEntity> WorkToDoItems
|
||||
{
|
||||
get { return _workToDoItems; }
|
||||
set
|
||||
{
|
||||
_workToDoItems = value;
|
||||
NotifyPropertyChanged("WorkToDoItems");
|
||||
}
|
||||
}
|
||||
|
||||
// To-do items associated with the hobbies category.
|
||||
private ObservableCollection<ToDoEntity> _hobbiesToDoItems;
|
||||
public ObservableCollection<ToDoEntity> HobbiesToDoItems
|
||||
{
|
||||
get { return _hobbiesToDoItems; }
|
||||
set
|
||||
{
|
||||
_hobbiesToDoItems = value;
|
||||
NotifyPropertyChanged("HobbiesToDoItems");
|
||||
}
|
||||
}
|
||||
|
||||
// A list of all categories, used by the add task page.
|
||||
private List<string> _categoriesList;
|
||||
public List<string> CategoriesList
|
||||
{
|
||||
get { return _categoriesList; }
|
||||
set
|
||||
{
|
||||
_categoriesList = value;
|
||||
NotifyPropertyChanged("CategoriesList");
|
||||
}
|
||||
}
|
||||
|
||||
// Query the table services and load the collections and list used by the pivot pages.
|
||||
public void LoadCollectionsFromDatabase()
|
||||
{
|
||||
List<string> categories = new List<string>();
|
||||
categories.Add("Home");
|
||||
categories.Add("Work");
|
||||
categories.Add("Hobbies");
|
||||
|
||||
// Load a list of all categories.
|
||||
CategoriesList = categories;
|
||||
|
||||
// Load a list of all items.
|
||||
GetAllToDoItems();
|
||||
}
|
||||
|
||||
public ObservableCollection<ToDoEntity> Convert(IEnumerable original)
|
||||
{
|
||||
return new ObservableCollection<ToDoEntity>(original.Cast<ToDoEntity>());
|
||||
}
|
||||
|
||||
// Add a to-do item to the database and collections.
|
||||
public void AddToDoItem(ToDoEntity newToDoItem)
|
||||
{
|
||||
|
||||
var tableClient = CloudStorageContext.Current.Resolver.CreateCloudTableClient();
|
||||
|
||||
tableClient.CreateTableIfNotExist(
|
||||
tableName,
|
||||
p =>
|
||||
{
|
||||
var context = CloudStorageContext.Current.Resolver.CreateTableServiceContext();
|
||||
|
||||
context.AddObject(tableName, newToDoItem);
|
||||
context.BeginSaveChanges(
|
||||
asyncResult =>
|
||||
{
|
||||
var response2 = context.EndSaveChanges(asyncResult);
|
||||
|
||||
// reload list
|
||||
GetAllToDoItems();
|
||||
},
|
||||
null);
|
||||
});
|
||||
}
|
||||
|
||||
// Remove a to-do task item from the database and collections.
|
||||
public void DeleteToDoItem(ToDoEntity toDoForDelete)
|
||||
{
|
||||
var context = CloudStorageContext.Current.Resolver.CreateTableServiceContext();
|
||||
|
||||
context.AttachTo("ToDo", toDoForDelete, "*");
|
||||
context.DeleteObject(toDoForDelete);
|
||||
context.BeginSaveChanges(
|
||||
asyncResult =>
|
||||
{
|
||||
var response = context.EndSaveChanges(asyncResult);
|
||||
|
||||
GetAllToDoItems();
|
||||
},
|
||||
null);
|
||||
}
|
||||
|
||||
#region INotifyPropertyChanged Members
|
||||
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
// Used to notify Silverlight that a property has changed.
|
||||
private void NotifyPropertyChanged(string propertyName)
|
||||
{
|
||||
if (PropertyChanged != null)
|
||||
{
|
||||
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Phone.Storage" version="1.0.1" />
|
||||
<package id="SilverlightActivator" version="1.0.4" />
|
||||
</packages>
|
|
@ -0,0 +1,148 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>10.0.20506</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{80368326-8FD8-4893-937F-D75ED34A9019}</ProjectGuid>
|
||||
<ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>sdkLocalDatabaseCS</RootNamespace>
|
||||
<AssemblyName>sdkLocalDatabaseCS</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
|
||||
<TargetFrameworkProfile>WindowsPhone71</TargetFrameworkProfile>
|
||||
<TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
|
||||
<SilverlightApplication>true</SilverlightApplication>
|
||||
<SupportedCultures>
|
||||
</SupportedCultures>
|
||||
<XapOutputs>true</XapOutputs>
|
||||
<GenerateSilverlightManifest>true</GenerateSilverlightManifest>
|
||||
<XapFilename>sdkLocalDatabaseCS.xap</XapFilename>
|
||||
<SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
|
||||
<SilverlightAppEntry>sdkLocalDatabaseCS.App</SilverlightAppEntry>
|
||||
<ValidateXaml>true</ValidateXaml>
|
||||
<ThrowErrorsInValidation>true</ThrowErrorsInValidation>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>Bin\Debug</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
||||
<NoStdLib>true</NoStdLib>
|
||||
<NoConfig>true</NoConfig>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>Bin\Release</OutputPath>
|
||||
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
||||
<NoStdLib>true</NoStdLib>
|
||||
<NoConfig>true</NoConfig>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Data.Services.Client">
|
||||
<HintPath>..\packages\Phone.Storage.1.0.1\lib\sl40-wp71\Data.Services.Client.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Phone" />
|
||||
<Reference Include="Microsoft.Phone.Controls, Version=7.0.0.0, Culture=neutral, PublicKeyToken=24eec0d8c86cda1e, processorArchitecture=MSIL" />
|
||||
<Reference Include="Microsoft.Phone.Controls.Toolkit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b772ad94eb9ca604, processorArchitecture=MSIL" />
|
||||
<Reference Include="Microsoft.Phone.Interop" />
|
||||
<Reference Include="Phone.Storage">
|
||||
<HintPath>..\packages\Phone.Storage.1.0.1\lib\sl40-wp71\Phone.Storage.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SilverlightActivator">
|
||||
<HintPath>..\packages\SilverlightActivator.1.0.4\lib\sl4-wp71\SilverlightActivator.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="system.data.linq" />
|
||||
<Reference Include="System.Windows" />
|
||||
<Reference Include="system" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Net" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="mscorlib.extensions" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="App.xaml.cs">
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="App_Start\StorageInitializer.cs" />
|
||||
<Compile Include="MainPage.xaml.cs">
|
||||
<DependentUpon>MainPage.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Model\ToDoEntity.cs" />
|
||||
<Compile Include="NewTaskPage.xaml.cs">
|
||||
<DependentUpon>NewTaskPage.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="ViewModel\ToDoViewModel.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="App.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</ApplicationDefinition>
|
||||
<Page Include="MainPage.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="NewTaskPage.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\AppManifest.xml" />
|
||||
<None Include="Properties\WMAppManifest.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="ApplicationIcon.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Resource Include="App_Readme\Content\StorageInitializer.png" />
|
||||
<Resource Include="App_Readme\Content\CloudTableInterfaces.png" />
|
||||
<Resource Include="App_Readme\Content\CloudStorageClientResolver.png" />
|
||||
<Resource Include="App_Readme\Content\CloudQueueInterfaces.png" />
|
||||
<Resource Include="App_Readme\Content\CloudBlobInterfaces.png" />
|
||||
<Content Include="App_Readme\Content\Site.css" />
|
||||
<Content Include="App_Readme\Phone.Storage.Readme.htm" />
|
||||
<Content Include="Background.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Images\appbar.add.rest.png">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Images\appbar.cancel.rest.png">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Images\appbar.check.rest.png">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Images\appbar.delete.rest.png">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Library\Microsoft.Phone.Controls.Toolkit.dll">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="SplashScreenImage.jpg" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.$(TargetFrameworkProfile).Overrides.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<ProjectExtensions />
|
||||
</Project>
|