From a5423358a9d0aadfcd9eabb5ad70d3526c652cde Mon Sep 17 00:00:00 2001 From: jarig Date: Fri, 22 Jan 2016 23:29:45 +0200 Subject: [PATCH] edit/delete mission records, capture mission reward if possible. optimizations --- EliteReporter/Assets/reward_eng.bmp | Bin 0 -> 2934 bytes EliteReporter/Assets/reward_rus.bmp | Bin 0 -> 3454 bytes EliteReporter/EliteReporter.csproj | 15 + .../Forms/ConfirmationCodeForm.Designer.cs | 2 + EliteReporter/Forms/ConfirmationCodeForm.resx | 77 +++++ .../Forms/EditMissionForm.Designer.cs | 299 ++++++++++++++++++ EliteReporter/Forms/EditMissionForm.cs | 72 +++++ EliteReporter/Forms/EditMissionForm.resx | 197 ++++++++++++ EliteReporter/Forms/ReportForm.Designer.cs | 28 +- EliteReporter/Forms/ReportForm.cs | 63 +++- EliteReporter/Models/EDProfile.cs | 2 + EliteReporter/Models/MissionInfo.cs | 6 +- EliteReporter/Utils/ScreenAnalyzer.cs | 55 +++- 13 files changed, 795 insertions(+), 21 deletions(-) create mode 100644 EliteReporter/Assets/reward_eng.bmp create mode 100644 EliteReporter/Assets/reward_rus.bmp create mode 100644 EliteReporter/Forms/EditMissionForm.Designer.cs create mode 100644 EliteReporter/Forms/EditMissionForm.cs create mode 100644 EliteReporter/Forms/EditMissionForm.resx diff --git a/EliteReporter/Assets/reward_eng.bmp b/EliteReporter/Assets/reward_eng.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cbaf54df4c20fdd540cd8790c16efb965a8e8b19 GIT binary patch literal 2934 zcmeHJS!`8B7;euxXXb48+}qpI_TDa+(!I2W(w1Ud+CnL9ZErVf7o;qu&=!e`+k+t{ zCZfnrA|_}F65na0CLR` z5x{3ch92U^Me7CvR78OQhTDN6>I(j$_c#vBpu`YxF+>|(4kgEf58td$Vm!c|61bS8cJaro#kKviKF6j4`$g8#&%rPQWj$sM7RCQ z;BA)G%;x0EEhp5`KeUnG)#1DH#yfP`KKKMeQn*eY{gW-*M|Yu%^#TO z_4;V2Mrk|EGMhXOV0s@#$7V$V{G3Ti#^V&+C>$ z=dV`VCUnc|vPzgK_I^$a*CMTe*-ea@caZbE=BC_rQE5FPx1N-{ub{8{f_h@E*7OD~ z*gAU|Sp5~rScweR?KrvNsJ!TL!?a1+lUDe+>G6Xu zU{)H&=)4BRQnEXxmXkOU!*bNT9`u13SI>RGa3Zw)DUcimd@s+_caTxjtE~S{FX&}+ za>V6_)q(*Q7t*|Gnm3i2anwmxo8O{&J%(v1Nu@>hQj7hTpN%%aD7*ilb81PRn*E z)0N`k*j1k}Uy$@&wMs|adnB}ss}=kX@&`~i)#@Fjag13$Ij37{IpJdF&je-4s!OzF zbSBC7VZNlLRq3XOnI7s%P&VAsayk`XhEVsan$>QY9^JHfF)Wr|Ew+xcv`YN^$abm_ zJ|l%EjODwTlLVhq`U>pAa1wFEvNJcf|2ioe)Ye|t{FyFY9P^Urkia|^u3pW{xUDL) zrEFk6h3n4@iyF3OC&~lgD07?KRnc}V%yKl$z?nWVM62EF&lms>c`OM z8bv{FpiBlTeOhQcCl+qPT40Xtxh58ki1UZUqEWHtfY5P4wm1(nWg0W{iPgJ>xzQ<*kv@S4yEKMKic7Rg(f$V%5$FNd9ZCP)jV{A|+Sw zK4?#=#X>1i=?>8XEzU0D^N_G~zgWCgwgb@1$>lTj2gLGc<)l&sh%R(HQOta(YO~AK zRaMEodi>LXa#}FN<2l1QpN$S9vyne1lPm6bI5jal&}^Sm;bvi;QvS!k|6~4l4hTH| E4WGn62LJ#7 literal 0 HcmV?d00001 diff --git a/EliteReporter/Assets/reward_rus.bmp b/EliteReporter/Assets/reward_rus.bmp new file mode 100644 index 0000000000000000000000000000000000000000..10664d28fe82c096494b6878387098fd8c477c73 GIT binary patch literal 3454 zcmdT_Yitx%6z+XsEvrd22wY>4O&0)|*0 zK|>G{M2!V()JTF7en1F;AV!4>N)R7`Uxpa<2bdU*{_(Hp&Yhi|ZtH(NnYnxCJLjHz zzH`pK+p=ZaOtYj0#wffk@cQ6Y(n2swne(Qli8mqSzacasDd8kwnu4c%rlq9-@>8x( zQ2_{u92ZqBs$FQmD8d*6e4zji0=rr}r?LTi8OdTiq%&)&9j@EG1wxRJE>)=uEmwk~B@1{+a~P%G+1a&&Fp*lAq~IwkVd^pl zbBWj><*4xxTRp)IQ~D8%EKVdGM_aFXOfT>NW6;i9NC+T6()L4$i-%(uQ?2xk z-C^Xq!E)B{@+S;`5q!?)fz6;YbPGoZlXd4Ft?eXkKFUI+sOJJH>HzYIxEREaM(?uR z3YuH34&9`oGFt^44WHU|4y}6`QVgIFuA}O`+NSqedO!j&QeOdzpQlZSXtYlqyrB%< zz*T!t#nbTM%0249r)0+iUNr^XrFLI{UBvFzS>awkZ9K^0XL%qjGMW&p9)ic<9FFus zuYeMS=_YEO!Ocgw;U(){LTxk2xXdineu~6i*G(VEsZa;!Xt2atD0poC2(5hqdPZ;% z>^aG;(Ynu*!WNkfKxtt!8NRL;Hi8*izD0TLHuL&{F?U9r}Xi*0Sv7G^>b2 zdePu#v}hybhlJL^LK;{xk4NVjTt5vBApBTWWTqe09l#9-Ss)5dSavb)_<(Mjg-k%s zh@K(3VR@G{CeW6{pBteld=kc?;n9X;EVoh*g!Mp#mv7?(myJ+FEOd#RN2FgQ9gZA~ z9v^Bufty|vJ-~FW?Ub_nZ*Auzb@Gui^%rzB%UUKpg;v`M`hP<+T=rJ*Y9ZZAusL#=Q0#jKB@L!4hot8ae^hHd zLCeNP0}zUX<%{r$Ux1L&&>ZT!LROAiRCJnIs5KphBgl+&Tz7!>UgTz`lT!>0F?5S8 zt!FtEBz{hh#-W^cwz;X*9zd1PLgUf=wRHR&Bd^j~=v2h1$Jjls?+R)=skNO@TW8eP zlgjAbBoAh&9jDQ%CvkKDZF&z5Kac<)4i8Z_DNqmStF2wUf8H^0a4ab&+*D(4qsGHBKoN3YgEDXf8VuL%r@B|J#>u|2X;4q5;88yf1*2xRHgboS zj>@2Lb_6m6<-}V*1~ciw8F8RQ?YV?E&a%oWxMdt%OrRu< z_om?C93ChD@Mt;=2iP_Rr1Om0ca`K+CKeM6=Y06K_?yWNQ-2h00SHj-{1DYY&wy*B zSAG0GS(4b9a;<8wvh4xQQO}I8@F3~P8nRl+WJFqeJ!HZGt}<$I9Rrb%7QE&V#ZC;PHthw x0`hDTgnLQyu{xJ|5(s=I%4vJ11l<0c(1re8rr_2(lrAVab$BG9|K%(#?H}ngG?D-S literal 0 HcmV?d00001 diff --git a/EliteReporter/EliteReporter.csproj b/EliteReporter/EliteReporter.csproj index 8f65587..08ecaed 100644 --- a/EliteReporter/EliteReporter.csproj +++ b/EliteReporter/EliteReporter.csproj @@ -185,6 +185,12 @@ ConfirmationCodeForm.cs + + Form + + + EditMissionForm.cs + Form @@ -221,6 +227,9 @@ ConfirmationCodeForm.cs + + EditMissionForm.cs + LoginForm.cs @@ -311,6 +320,12 @@ Always + + Always + + + Always + diff --git a/EliteReporter/Forms/ConfirmationCodeForm.Designer.cs b/EliteReporter/Forms/ConfirmationCodeForm.Designer.cs index 2fe8bc6..0e178e8 100644 --- a/EliteReporter/Forms/ConfirmationCodeForm.Designer.cs +++ b/EliteReporter/Forms/ConfirmationCodeForm.Designer.cs @@ -28,6 +28,7 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfirmationCodeForm)); this.okButton = new System.Windows.Forms.Button(); this.codeTextBox = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); @@ -70,6 +71,7 @@ private void InitializeComponent() this.Controls.Add(this.codeTextBox); this.Controls.Add(this.okButton); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Name = "ConfirmationCodeForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Enter confirmation code"; diff --git a/EliteReporter/Forms/ConfirmationCodeForm.resx b/EliteReporter/Forms/ConfirmationCodeForm.resx index 1af7de1..a77968a 100644 --- a/EliteReporter/Forms/ConfirmationCodeForm.resx +++ b/EliteReporter/Forms/ConfirmationCodeForm.resx @@ -117,4 +117,81 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAANgOAADYDgAAAAAAAAAA + AAA6T17/Ik53/xBQkP8QV5v/D1mh/wtZpv8NWaX/Flyf/xdhl/8BW6j/EmCl/wlXnv8MWaL/GGCm/wVS + qf8UWq7/C1yt/xZNtf8bWqT/B2Kl/xJYrP8UVaD/AVyf/xlinP8WXJ//DVml/wtZpv8PWaH/EFeb/xBQ + kP8iTnf/Ok9e/yVRev8RUZL/A1as/wRctv8IYbz/A2HE/wRixf8MZcD/E13H/wBVz/8QX83/CWHL/wBg + yP8AXr7/AWrL/whfr/8CaKn/AGjM/wBmvf8AYrz/AFzG/xJqz/8AX8f/Bl2//wxlwP8EYsX/A2HE/whh + vP8EXLb/A1as/xFRkv8lUXr/ElKS/wJVq/8AXML/AGTK/wNq0f8Aa9r/AGze/wFt2f8AcNT/AGrY/wBs + y/8Eb9D/BnLX/wltzf8bbsT/AB5L/wAZTP8Wa87/EW3U/w5m0v8Eatr/CG/W/wBi0v8Acdz/AW3Z/wBs + 3v8Aa9r/A2rR/wBkyv8AXML/AlWr/xJSkv8PVpr/Alq0/wBjyf8HbM//C3HU/wVy3v8AcuT/A3Lg/wJy + 3P8Idub/EXbZ/wVx3f8AbeD/AHHm/xp22/8AIEb/ABw//wp11/8Ac+X/DHbp/wNv2/8Ab8//Cn/o/wRz + 2/8DcuD/AHLk/wVy3v8LcdT/B2zP/wBjyf8CWrT/D1aa/xBaov8HYLv/A2rR/w1z1v8QeNv/Cnnn/wV4 + 6/8Hd+f/CnPs/w118P8Td+f/CX30/wB08P8Advb/AG/Z/wYvSP8AIzn/B3nd/wB59v8Ac+//FoD2/wZ1 + 4f8AeO7/Enbs/wd35/8FeOv/Cnnn/xB42/8Nc9b/A2rR/wdgu/8QWqL/DFqn/wNhxP8Aa9r/B3Tg/wp5 + 5/8Fe/L/Anv2/wV78v8AfvD/AHvu/wF65/8IhPD/DILp/wx/7f8AU6n/AAIA/wUAAP8BRZ7/EX3z/xJ/ + 8/8Ue+//CHnt/wB49/8He/L/BXvy/wJ79v8Fe/L/Cnnn/wd04P8Aa9r/A2HE/wxap/8OWqb/A2HE/wBr + 3f8AcuT/BHfq/wF69f8Bevj/BXvy/wh58v8He/j/Cnz4/wZ58v8MduH/DXru/wdewP8AAAH/AAMA/wNc + rf8Ieef/AnXe/wSC7v8IgfX/AHLw/wSE7/8Fe/L/AXr4/wF69f8Ed+r/AHLk/wBr3f8DYcT/Dlqm/xdd + oP8LZL//AW3Z/wRz4f8Hd+f/BHrx/wZ88/8Le+3/D4Du/wF37v8Aevb/AH34/wZ96v8AfPn/B3js/wEe + M/8AESz/EH3p/wp5/f8NevT/AH31/wN29f8Udfv/AH3m/wt77f8GfPP/BHrx/wd35/8Ec+H/AW3Z/wtk + v/8XXaD/D1yh/whjxv8DbNX/BnXb/wBz7P8Ff/v/AHfo/wl67v8KdP3/AHP0/wxgov8ADy3/DBkn/wAc + Jf8ARH7/CE+w/wBOm/8FSZb/ABkn/w4gIf8AFin/BVij/wBy//8Le/f/AHjw/wSC7v8Ae+//CXzr/wx9 + 3v8AatP/BWDD/w9cof8JWKn/DG3E/wJmzP8JceL/AHnr/wB68v8NffX/Cn3r/wF/6/8ZftT/Ak+Y/xFI + jf8APZ7/ETJf/woMDP8DbOv/AWzl/w8PFf8OMlj/ADma/xRKkf8FU5j/GXrb/wB95v8JeOz/DnXw/xBu + zf8AZ9D/Amjf/wdp1f8AYc3/F1ms/xFcq/8AXrj/AGvf/w967f8Qe93/CHzz/wBy//8Ad/T/AEuJ/wMP + If8ABSL/CxYe/wUdNf8ACi7/CgIA/wBFf/8ARIf/CwQA/wAPIf8AEzf/DBMn/wARHv8ADhv/AEaK/xCA + 8v8AXuD/AD17/wBRlf8NduX/CHHe/wBcyP8dXKD/C1aa/w9myP8AaeD/AHHf/xFy2v8Rgfn/D3zm/wZA + gf8HAQD/DgAB/wsDDv8ABgD/AAIB/wIAA/8SAQD/AAcI/wADD/8RAwD/AQUA/wAACv8AAAf/CgsC/w4A + AP8HAAD/EEN1/wtxyv8ASY7/CFad/wNx0P8AZs7/A2fR/xVclf8aYqL/Dl+6/xB33v8AceP/AHb+/wlz + 5v8AMGH/AAEA/wABBv8ABBL/BAEA/wcHAP8BAwD/CAAA/wUABv8WBQL/EgMB/wUAC/8JBAD/AwMD/wUC + AP8EBgD/AAcY/wAEB/8AAAH/ADNm/w9u3P8Db/L/Am7d/xp54P8EVrv/FF+t/wpXrf8AYsD/AmPE/w5y + 3P8HdNb/ADJf/wYGAP8DCQD/AQUK/wICAP8BBAj/CAAE/wwAAf8CAQD/AAIA/wAAD/8AAAr/AAAH/wAB + AP8NAQH/BQAD/wADBP8AAAP/AAYD/wEIA/8JCwv/AC5m/wlz2P8Zdtn/EWvJ/wBivv8AUrL/ClOj/wFl + w/8GcuH/AnPo/wB15v8AaM3/EmfK/wBiyP8SFin/AAEJ/wAAC/8KAAb/AAAG/wAGA/8QLTH/AGLO/wBn + y/8KJDL/AAgA/wAABv8GAAL/AAAL/wAAEv8PFSL/AGDC/wpozP8AYMD/AHjo/wBx5P8FcNL/AWvD/xFc + of8MXa7/D1+8/wBmzf8NfeH/C3Th/wBz+P8SfuT/AB07/wAAB/8OBAD/AAMC/wADAP8IIjD/AESX/wZI + mf8OID3/ECc9/wA/lP8ATpv/CSIy/wACAP8ACgT/DAAA/wAAB/8EIUD/Bnfs/xR/+P8Lc+r/AHHl/wxw + 1v8AV8P/GF6h/wpfqf8GXsP/AGfM/wp34f8Aee3/CXDN/wAZPv8DAgD/GwgA/wABB/8QBwD/AwEH/wBe + uP8AeOX/Djtn/wAADv8AABP/Dz9p/wJ95f8AU7X/AwAJ/xUKAP8AAQf/FgAE/wIDAP8AGj//CnDQ/wJ4 + 7/8MdeL/AmfO/wxexP8OYKj/B1ic/whhyf8DbeD/AH3k/wBx4f8QJUv/BQAB/wAEAP8FAAD/CREH/wAA + Bv8NAAL/ABlE/xGD5/8AbM7/FA8Y/xMTGf8AbdX/Cnrk/wAfRv8MAAD/AAAK/wUJCv8FAAD/AAUA/wQA + Af8PJU7/AHDi/wB85f8Ha+H/DGHJ/wpXnP8RWa3/AGXC/wRv2P8AbtH/AnPs/wYACf8FBAD/DQoA/wEI + Af8AAQr/BAEA/wQAAP8ACCb/AGri/wOA6f8AEC//ABMt/wF86v8AbOn/AAUc/wcDAP8FAAD/AQER/wAI + AP8LCgD/BQQA/wcAC/8Ccu7/AGzR/wVu1/8AZMH/FFes/xJZsP8AYrv/AXDS/wx34P8Sa9P/AAAI/wAF + Dv8EAAD/AAMA/w0AAv8EAAb/Ahwj/xNuyf8RefL/C3Dc/wZTkf8DUpH/DHbb/xJ87f8Wbc3/ABUh/wQA + Af8OAAD/AAIB/wIAAP8ABQ7/AAAJ/xJq1P8MdeL/Am7T/wBhuv8SWKz/Cl6g/w1hwf8Ba9z/E3Xb/wk5 + Y/8AAgD/AAAK/wAAB/8AAQD/CwUK/wQZP/8Ic9T/AH3c/wBx9P8bc+n/AFKo/wBVrv8YdeL/AHDt/wiC + 5v8Kctf/ARY1/wQAAP8BAgD/AAAH/wAACv8AAgD/CThk/xN03P8Aat3/DGDA/whcnv8GXKj/DWHB/wRp + zP8CMW7/BAUB/wAGAP8PBgP/DgAA/wUACf8AJkf/EXrp/wB18/8Af/T/DoHv/wh0+/8Ha9X/B3DR/wNw + +v8Rg/X/AH7t/wB78/8LcOT/ACNG/wQCAf8MAQD/DgUC/wAFAP8DBQX/ATJw/wRpzP8KYMD/BVym/wpT + rv8AYrr/B2a2/wAABP8MAAD/AAID/wMGAP8GAAX/AChX/xZ95P8AePT/AHz8/wR77v8AePL/EX3t/wd4 + 8f8Adun/FID2/wB09f8Ifu3/AHXx/wF7/f8Ve+X/AChO/wQABP8CBQD/AAEE/wsAAP8AAAb/BWW4/wBi + uv8IVK7/G1io/wZowP8AVLH/BQUA/wABDP8NAAX/AAMA/wIza/8Jgev/BXf6/wJ68v8Lgun/BXn1/wt1 + 8P8NgO//AXzy/wB79f8Jf+n/C3bv/wZ1+f8PgvH/AXjs/wR49P8JgO3/ADFp/wADAP8KAAT/AAIP/wUF + AP8AVLP/BWnB/xlYqP8HW6f/FGfD/xFKh/8AAAj/CAUA/wQEBP8CPWv/AH3//wN78v8De/L/A3vy/wN7 + 8v8De/L/A3vy/wN78v8De/L/A3vy/wN78v8De/L/A3vy/wN78v8De/L/A3vy/wN78v8Aff7/Bz9w/wID + Af8GBAD/AAAK/xRLiP8RZ7v/CFyo/w9Xpf8AQob/AAAd/wAIAv8IAAr/AEeK/wl39f8KfOf/BXzw/wV8 + 8P8FfPD/BXzw/wV88P8FfPD/BXzw/wV88P8FfPD/BXzw/wV88P8FfPD/BXzw/wV88P8FfPD/BXzw/wh4 + 6P8FeOv/AESI/wEADf8ACwD/AAMc/wBBjv8OW6D/FU2O/wAFE/8ABAD/DAIO/wBRjf8Tefr/AHj0/wd/ + 9v8He/D/B3vw/wd78P8He/D/B3vw/wd78P8He/D/B3vw/wd78P8He/D/B3vw/wd78P8He/D/B3vw/wd7 + 8P8He/D/CYT4/wBy8f8Me/n/A1OO/wEACv8AAwD/AAoS/xJIif8TLUv/AQAC/w4KBf8AW5//E23p/wp9 + 5f8BeOv/AXLn/wR57P8Eeez/BHns/wR57P8Eeez/BHns/wR57P8Eeez/BHns/wR57P8Eeez/BHns/wR5 + 7P8Eeez/BHns/wR57P8Hd+f/AHbw/xF94v8Lc+T/AFSg/wUJA/8EAgD/DChH/wggRP8ACBL/Ak2X/wJk + 1P8Fet3/AGvf/wd35/8Hctv/AHPi/wBz4v8Ac+L/AHPi/wBz4v8Ac+L/AHPi/wBz4v8Ac+L/AHPi/wBz + 4v8Ac+L/AHPi/wBz4v8Ac+L/AHPi/wJu2v8NeuP/AGvd/wtz3v8AatD/Ck6X/wAFFf8LI0H/Citc/wBB + iv8PYr3/AFzK/wBu0f8GbtH/AGPe/why1/8EbdT/BG3U/wRt1P8EbdT/BG3U/wRt1P8EbdT/BG3U/wRt + 1P8EbdT/BG3U/wRt1P8EbdT/BG3U/wRt1P8EbdT/B2/U/wBo4P8Ja8//AGrO/wZfzf8JZb7/ADuI/wou + Xv8aTXX/IFGb/wRXrf8AZrH/Dlq+/wJgv/8IabP/AFvI/wpjvv8KY77/CmO+/wpjvv8KY77/CmO+/wpj + vv8KY77/CmO+/wpjvv8KY77/CmO+/wpjvv8KY77/CmO+/wpjvv8CX8b/Dmi9/wBivv8QW7f/AGW4/wdV + r/8bU5T/Gkh3/09WWf8SS3j/CVCU/xFQmv8JXqT/EFie/xtcp/8MWqb/Dliq/w5Yqv8OWKr/Dliq/w5Y + qv8OWKr/Dliq/w5Yqv8OWKr/Dliq/w5Yqv8OWKr/Dliq/w5Yqv8OWKr/Dliq/w9cq/8WW6H/EFig/wtg + qv8QTpT/CVCU/xZNgP9LVVX/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + \ No newline at end of file diff --git a/EliteReporter/Forms/EditMissionForm.Designer.cs b/EliteReporter/Forms/EditMissionForm.Designer.cs new file mode 100644 index 0000000..4e22703 --- /dev/null +++ b/EliteReporter/Forms/EditMissionForm.Designer.cs @@ -0,0 +1,299 @@ +namespace EliteReporter.Forms +{ + partial class EditMissionForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EditMissionForm)); + this.missionNameTextBox = new System.Windows.Forms.TextBox(); + this.dateTakenTextBox = new System.Windows.Forms.TextBox(); + this.systemFinishTextBox = new System.Windows.Forms.TextBox(); + this.rewardTextBox = new System.Windows.Forms.TextBox(); + this.systemTakenTextBox = new System.Windows.Forms.TextBox(); + this.dateFinishTextBox = new System.Windows.Forms.TextBox(); + this.changeButton = new System.Windows.Forms.Button(); + this.closeButton = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.stationTakenTextBox = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.stationFinishTextBox = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.SuspendLayout(); + // + // missionNameTextBox + // + this.missionNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.missionNameTextBox.Location = new System.Drawing.Point(12, 33); + this.missionNameTextBox.Name = "missionNameTextBox"; + this.missionNameTextBox.Size = new System.Drawing.Size(434, 20); + this.missionNameTextBox.TabIndex = 0; + // + // dateTakenTextBox + // + this.dateTakenTextBox.Anchor = System.Windows.Forms.AnchorStyles.Right; + this.dateTakenTextBox.Location = new System.Drawing.Point(322, 34); + this.dateTakenTextBox.Name = "dateTakenTextBox"; + this.dateTakenTextBox.Size = new System.Drawing.Size(106, 20); + this.dateTakenTextBox.TabIndex = 1; + // + // systemFinishTextBox + // + this.systemFinishTextBox.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.systemFinishTextBox.Location = new System.Drawing.Point(6, 42); + this.systemFinishTextBox.Name = "systemFinishTextBox"; + this.systemFinishTextBox.Size = new System.Drawing.Size(153, 20); + this.systemFinishTextBox.TabIndex = 2; + // + // rewardTextBox + // + this.rewardTextBox.Location = new System.Drawing.Point(103, 222); + this.rewardTextBox.Name = "rewardTextBox"; + this.rewardTextBox.Size = new System.Drawing.Size(100, 20); + this.rewardTextBox.TabIndex = 3; + // + // systemTakenTextBox + // + this.systemTakenTextBox.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.systemTakenTextBox.Location = new System.Drawing.Point(6, 34); + this.systemTakenTextBox.Name = "systemTakenTextBox"; + this.systemTakenTextBox.Size = new System.Drawing.Size(153, 20); + this.systemTakenTextBox.TabIndex = 4; + // + // dateFinishTextBox + // + this.dateFinishTextBox.Anchor = System.Windows.Forms.AnchorStyles.Right; + this.dateFinishTextBox.Location = new System.Drawing.Point(322, 42); + this.dateFinishTextBox.Name = "dateFinishTextBox"; + this.dateFinishTextBox.Size = new System.Drawing.Size(106, 20); + this.dateFinishTextBox.TabIndex = 5; + // + // changeButton + // + this.changeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.changeButton.Location = new System.Drawing.Point(347, 263); + this.changeButton.Name = "changeButton"; + this.changeButton.Size = new System.Drawing.Size(99, 35); + this.changeButton.TabIndex = 6; + this.changeButton.Text = "Change"; + this.changeButton.UseVisualStyleBackColor = true; + this.changeButton.Click += new System.EventHandler(this.changeButton_Click); + // + // closeButton + // + this.closeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.closeButton.Location = new System.Drawing.Point(12, 263); + this.closeButton.Name = "closeButton"; + this.closeButton.Size = new System.Drawing.Size(75, 34); + this.closeButton.TabIndex = 7; + this.closeButton.Text = "Close"; + this.closeButton.UseVisualStyleBackColor = true; + this.closeButton.Click += new System.EventHandler(this.closeButton_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 13); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(71, 13); + this.label1.TabIndex = 8; + this.label1.Text = "Mission name"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(6, 18); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(70, 13); + this.label2.TabIndex = 9; + this.label2.Text = "System name"; + // + // stationTakenTextBox + // + this.stationTakenTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.stationTakenTextBox.Location = new System.Drawing.Point(165, 34); + this.stationTakenTextBox.Name = "stationTakenTextBox"; + this.stationTakenTextBox.Size = new System.Drawing.Size(151, 20); + this.stationTakenTextBox.TabIndex = 10; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(165, 18); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(69, 13); + this.label3.TabIndex = 11; + this.label3.Text = "Station name"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(6, 26); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(70, 13); + this.label4.TabIndex = 12; + this.label4.Text = "System name"; + // + // stationFinishTextBox + // + this.stationFinishTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.stationFinishTextBox.Location = new System.Drawing.Point(165, 42); + this.stationFinishTextBox.Name = "stationFinishTextBox"; + this.stationFinishTextBox.Size = new System.Drawing.Size(151, 20); + this.stationFinishTextBox.TabIndex = 13; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(15, 225); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(82, 13); + this.label5.TabIndex = 14; + this.label5.Text = "Mission Reward"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(165, 26); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(69, 13); + this.label6.TabIndex = 15; + this.label6.Text = "Station name"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(319, 18); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(54, 13); + this.label7.TabIndex = 16; + this.label7.Text = "Date/time"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(319, 26); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(54, 13); + this.label8.TabIndex = 17; + this.label8.Text = "Date/time"; + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.dateTakenTextBox); + this.groupBox1.Controls.Add(this.label7); + this.groupBox1.Controls.Add(this.systemTakenTextBox); + this.groupBox1.Controls.Add(this.stationTakenTextBox); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Location = new System.Drawing.Point(12, 59); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(434, 69); + this.groupBox1.TabIndex = 18; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Mission Taken"; + // + // groupBox2 + // + this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox2.Controls.Add(this.label4); + this.groupBox2.Controls.Add(this.systemFinishTextBox); + this.groupBox2.Controls.Add(this.label8); + this.groupBox2.Controls.Add(this.dateFinishTextBox); + this.groupBox2.Controls.Add(this.label6); + this.groupBox2.Controls.Add(this.stationFinishTextBox); + this.groupBox2.Location = new System.Drawing.Point(12, 134); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(434, 75); + this.groupBox2.TabIndex = 19; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Mission Finished"; + // + // EditMissionForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(452, 309); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.label5); + this.Controls.Add(this.label1); + this.Controls.Add(this.closeButton); + this.Controls.Add(this.changeButton); + this.Controls.Add(this.rewardTextBox); + this.Controls.Add(this.missionNameTextBox); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "EditMissionForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Edit Mission Details"; + this.Load += new System.EventHandler(this.EditMissionForm_Load); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox missionNameTextBox; + private System.Windows.Forms.TextBox dateTakenTextBox; + private System.Windows.Forms.TextBox systemFinishTextBox; + private System.Windows.Forms.TextBox rewardTextBox; + private System.Windows.Forms.TextBox systemTakenTextBox; + private System.Windows.Forms.TextBox dateFinishTextBox; + private System.Windows.Forms.Button changeButton; + private System.Windows.Forms.Button closeButton; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox stationTakenTextBox; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox stationFinishTextBox; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.GroupBox groupBox2; + } +} \ No newline at end of file diff --git a/EliteReporter/Forms/EditMissionForm.cs b/EliteReporter/Forms/EditMissionForm.cs new file mode 100644 index 0000000..89807ec --- /dev/null +++ b/EliteReporter/Forms/EditMissionForm.cs @@ -0,0 +1,72 @@ +using EliteReporter.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace EliteReporter.Forms +{ + public partial class EditMissionForm : Form + { + MissionInfo mInfo; + public EditMissionForm(MissionInfo mInfo) + { + InitializeComponent(); + this.mInfo = mInfo; + } + + private void changeButton_Click(object sender, EventArgs e) + { + mInfo.MissionName = missionNameTextBox.Text; + try + { + mInfo.MissionTakenDateTime = DateTime.ParseExact(dateTakenTextBox.Text, "dd.MM.yyyy HH:mm", CultureInfo.InvariantCulture); + } + catch (FormatException ex) { } + mInfo.MissionTakenEDProfile.PortName = stationTakenTextBox.Text; + mInfo.MissionTakenEDProfile.SystemName = systemTakenTextBox.Text; + if (mInfo.MissionFinishedEDProfile == null) + { + mInfo.MissionFinishedEDProfile = new EDProfile(); + } + if(!string.IsNullOrEmpty(dateFinishTextBox.Text)) + { + try { + mInfo.MissionFinishedDateTime = DateTime.ParseExact(dateFinishTextBox.Text, "dd.MM.yyyy HH:mm", CultureInfo.InvariantCulture); + }catch(FormatException ex){} + } + + mInfo.MissionFinishedEDProfile.PortName = stationFinishTextBox.Text; + mInfo.MissionFinishedEDProfile.SystemName = systemFinishTextBox.Text; + mInfo.Reward = int.Parse(rewardTextBox.Text); + this.DialogResult = DialogResult.OK; + } + + private void closeButton_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + } + + private void EditMissionForm_Load(object sender, EventArgs e) + { + missionNameTextBox.Text = mInfo.MissionName; + dateTakenTextBox.Text = mInfo.MissionTakenDateTime.Value.ToString("dd.MM.yyyy HH:mm"); + stationTakenTextBox.Text = mInfo.MissionTakenEDProfile.PortName; + systemTakenTextBox.Text = mInfo.MissionTakenEDProfile.SystemName; + if (mInfo.MissionFinishedEDProfile != null) + { + stationFinishTextBox.Text = mInfo.MissionFinishedEDProfile.PortName; + systemFinishTextBox.Text = mInfo.MissionFinishedEDProfile.SystemName; + if (mInfo.MissionFinishedDateTime != null) + dateFinishTextBox.Text = mInfo.MissionFinishedDateTime.Value.ToString("dd.MM.yyyy HH:mm"); + } + rewardTextBox.Text = mInfo.Reward.ToString(); + } + } +} diff --git a/EliteReporter/Forms/EditMissionForm.resx b/EliteReporter/Forms/EditMissionForm.resx new file mode 100644 index 0000000..a77968a --- /dev/null +++ b/EliteReporter/Forms/EditMissionForm.resx @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAANgOAADYDgAAAAAAAAAA + AAA6T17/Ik53/xBQkP8QV5v/D1mh/wtZpv8NWaX/Flyf/xdhl/8BW6j/EmCl/wlXnv8MWaL/GGCm/wVS + qf8UWq7/C1yt/xZNtf8bWqT/B2Kl/xJYrP8UVaD/AVyf/xlinP8WXJ//DVml/wtZpv8PWaH/EFeb/xBQ + kP8iTnf/Ok9e/yVRev8RUZL/A1as/wRctv8IYbz/A2HE/wRixf8MZcD/E13H/wBVz/8QX83/CWHL/wBg + yP8AXr7/AWrL/whfr/8CaKn/AGjM/wBmvf8AYrz/AFzG/xJqz/8AX8f/Bl2//wxlwP8EYsX/A2HE/whh + vP8EXLb/A1as/xFRkv8lUXr/ElKS/wJVq/8AXML/AGTK/wNq0f8Aa9r/AGze/wFt2f8AcNT/AGrY/wBs + y/8Eb9D/BnLX/wltzf8bbsT/AB5L/wAZTP8Wa87/EW3U/w5m0v8Eatr/CG/W/wBi0v8Acdz/AW3Z/wBs + 3v8Aa9r/A2rR/wBkyv8AXML/AlWr/xJSkv8PVpr/Alq0/wBjyf8HbM//C3HU/wVy3v8AcuT/A3Lg/wJy + 3P8Idub/EXbZ/wVx3f8AbeD/AHHm/xp22/8AIEb/ABw//wp11/8Ac+X/DHbp/wNv2/8Ab8//Cn/o/wRz + 2/8DcuD/AHLk/wVy3v8LcdT/B2zP/wBjyf8CWrT/D1aa/xBaov8HYLv/A2rR/w1z1v8QeNv/Cnnn/wV4 + 6/8Hd+f/CnPs/w118P8Td+f/CX30/wB08P8Advb/AG/Z/wYvSP8AIzn/B3nd/wB59v8Ac+//FoD2/wZ1 + 4f8AeO7/Enbs/wd35/8FeOv/Cnnn/xB42/8Nc9b/A2rR/wdgu/8QWqL/DFqn/wNhxP8Aa9r/B3Tg/wp5 + 5/8Fe/L/Anv2/wV78v8AfvD/AHvu/wF65/8IhPD/DILp/wx/7f8AU6n/AAIA/wUAAP8BRZ7/EX3z/xJ/ + 8/8Ue+//CHnt/wB49/8He/L/BXvy/wJ79v8Fe/L/Cnnn/wd04P8Aa9r/A2HE/wxap/8OWqb/A2HE/wBr + 3f8AcuT/BHfq/wF69f8Bevj/BXvy/wh58v8He/j/Cnz4/wZ58v8MduH/DXru/wdewP8AAAH/AAMA/wNc + rf8Ieef/AnXe/wSC7v8IgfX/AHLw/wSE7/8Fe/L/AXr4/wF69f8Ed+r/AHLk/wBr3f8DYcT/Dlqm/xdd + oP8LZL//AW3Z/wRz4f8Hd+f/BHrx/wZ88/8Le+3/D4Du/wF37v8Aevb/AH34/wZ96v8AfPn/B3js/wEe + M/8AESz/EH3p/wp5/f8NevT/AH31/wN29f8Udfv/AH3m/wt77f8GfPP/BHrx/wd35/8Ec+H/AW3Z/wtk + v/8XXaD/D1yh/whjxv8DbNX/BnXb/wBz7P8Ff/v/AHfo/wl67v8KdP3/AHP0/wxgov8ADy3/DBkn/wAc + Jf8ARH7/CE+w/wBOm/8FSZb/ABkn/w4gIf8AFin/BVij/wBy//8Le/f/AHjw/wSC7v8Ae+//CXzr/wx9 + 3v8AatP/BWDD/w9cof8JWKn/DG3E/wJmzP8JceL/AHnr/wB68v8NffX/Cn3r/wF/6/8ZftT/Ak+Y/xFI + jf8APZ7/ETJf/woMDP8DbOv/AWzl/w8PFf8OMlj/ADma/xRKkf8FU5j/GXrb/wB95v8JeOz/DnXw/xBu + zf8AZ9D/Amjf/wdp1f8AYc3/F1ms/xFcq/8AXrj/AGvf/w967f8Qe93/CHzz/wBy//8Ad/T/AEuJ/wMP + If8ABSL/CxYe/wUdNf8ACi7/CgIA/wBFf/8ARIf/CwQA/wAPIf8AEzf/DBMn/wARHv8ADhv/AEaK/xCA + 8v8AXuD/AD17/wBRlf8NduX/CHHe/wBcyP8dXKD/C1aa/w9myP8AaeD/AHHf/xFy2v8Rgfn/D3zm/wZA + gf8HAQD/DgAB/wsDDv8ABgD/AAIB/wIAA/8SAQD/AAcI/wADD/8RAwD/AQUA/wAACv8AAAf/CgsC/w4A + AP8HAAD/EEN1/wtxyv8ASY7/CFad/wNx0P8AZs7/A2fR/xVclf8aYqL/Dl+6/xB33v8AceP/AHb+/wlz + 5v8AMGH/AAEA/wABBv8ABBL/BAEA/wcHAP8BAwD/CAAA/wUABv8WBQL/EgMB/wUAC/8JBAD/AwMD/wUC + AP8EBgD/AAcY/wAEB/8AAAH/ADNm/w9u3P8Db/L/Am7d/xp54P8EVrv/FF+t/wpXrf8AYsD/AmPE/w5y + 3P8HdNb/ADJf/wYGAP8DCQD/AQUK/wICAP8BBAj/CAAE/wwAAf8CAQD/AAIA/wAAD/8AAAr/AAAH/wAB + AP8NAQH/BQAD/wADBP8AAAP/AAYD/wEIA/8JCwv/AC5m/wlz2P8Zdtn/EWvJ/wBivv8AUrL/ClOj/wFl + w/8GcuH/AnPo/wB15v8AaM3/EmfK/wBiyP8SFin/AAEJ/wAAC/8KAAb/AAAG/wAGA/8QLTH/AGLO/wBn + y/8KJDL/AAgA/wAABv8GAAL/AAAL/wAAEv8PFSL/AGDC/wpozP8AYMD/AHjo/wBx5P8FcNL/AWvD/xFc + of8MXa7/D1+8/wBmzf8NfeH/C3Th/wBz+P8SfuT/AB07/wAAB/8OBAD/AAMC/wADAP8IIjD/AESX/wZI + mf8OID3/ECc9/wA/lP8ATpv/CSIy/wACAP8ACgT/DAAA/wAAB/8EIUD/Bnfs/xR/+P8Lc+r/AHHl/wxw + 1v8AV8P/GF6h/wpfqf8GXsP/AGfM/wp34f8Aee3/CXDN/wAZPv8DAgD/GwgA/wABB/8QBwD/AwEH/wBe + uP8AeOX/Djtn/wAADv8AABP/Dz9p/wJ95f8AU7X/AwAJ/xUKAP8AAQf/FgAE/wIDAP8AGj//CnDQ/wJ4 + 7/8MdeL/AmfO/wxexP8OYKj/B1ic/whhyf8DbeD/AH3k/wBx4f8QJUv/BQAB/wAEAP8FAAD/CREH/wAA + Bv8NAAL/ABlE/xGD5/8AbM7/FA8Y/xMTGf8AbdX/Cnrk/wAfRv8MAAD/AAAK/wUJCv8FAAD/AAUA/wQA + Af8PJU7/AHDi/wB85f8Ha+H/DGHJ/wpXnP8RWa3/AGXC/wRv2P8AbtH/AnPs/wYACf8FBAD/DQoA/wEI + Af8AAQr/BAEA/wQAAP8ACCb/AGri/wOA6f8AEC//ABMt/wF86v8AbOn/AAUc/wcDAP8FAAD/AQER/wAI + AP8LCgD/BQQA/wcAC/8Ccu7/AGzR/wVu1/8AZMH/FFes/xJZsP8AYrv/AXDS/wx34P8Sa9P/AAAI/wAF + Dv8EAAD/AAMA/w0AAv8EAAb/Ahwj/xNuyf8RefL/C3Dc/wZTkf8DUpH/DHbb/xJ87f8Wbc3/ABUh/wQA + Af8OAAD/AAIB/wIAAP8ABQ7/AAAJ/xJq1P8MdeL/Am7T/wBhuv8SWKz/Cl6g/w1hwf8Ba9z/E3Xb/wk5 + Y/8AAgD/AAAK/wAAB/8AAQD/CwUK/wQZP/8Ic9T/AH3c/wBx9P8bc+n/AFKo/wBVrv8YdeL/AHDt/wiC + 5v8Kctf/ARY1/wQAAP8BAgD/AAAH/wAACv8AAgD/CThk/xN03P8Aat3/DGDA/whcnv8GXKj/DWHB/wRp + zP8CMW7/BAUB/wAGAP8PBgP/DgAA/wUACf8AJkf/EXrp/wB18/8Af/T/DoHv/wh0+/8Ha9X/B3DR/wNw + +v8Rg/X/AH7t/wB78/8LcOT/ACNG/wQCAf8MAQD/DgUC/wAFAP8DBQX/ATJw/wRpzP8KYMD/BVym/wpT + rv8AYrr/B2a2/wAABP8MAAD/AAID/wMGAP8GAAX/AChX/xZ95P8AePT/AHz8/wR77v8AePL/EX3t/wd4 + 8f8Adun/FID2/wB09f8Ifu3/AHXx/wF7/f8Ve+X/AChO/wQABP8CBQD/AAEE/wsAAP8AAAb/BWW4/wBi + uv8IVK7/G1io/wZowP8AVLH/BQUA/wABDP8NAAX/AAMA/wIza/8Jgev/BXf6/wJ68v8Lgun/BXn1/wt1 + 8P8NgO//AXzy/wB79f8Jf+n/C3bv/wZ1+f8PgvH/AXjs/wR49P8JgO3/ADFp/wADAP8KAAT/AAIP/wUF + AP8AVLP/BWnB/xlYqP8HW6f/FGfD/xFKh/8AAAj/CAUA/wQEBP8CPWv/AH3//wN78v8De/L/A3vy/wN7 + 8v8De/L/A3vy/wN78v8De/L/A3vy/wN78v8De/L/A3vy/wN78v8De/L/A3vy/wN78v8Aff7/Bz9w/wID + Af8GBAD/AAAK/xRLiP8RZ7v/CFyo/w9Xpf8AQob/AAAd/wAIAv8IAAr/AEeK/wl39f8KfOf/BXzw/wV8 + 8P8FfPD/BXzw/wV88P8FfPD/BXzw/wV88P8FfPD/BXzw/wV88P8FfPD/BXzw/wV88P8FfPD/BXzw/wh4 + 6P8FeOv/AESI/wEADf8ACwD/AAMc/wBBjv8OW6D/FU2O/wAFE/8ABAD/DAIO/wBRjf8Tefr/AHj0/wd/ + 9v8He/D/B3vw/wd78P8He/D/B3vw/wd78P8He/D/B3vw/wd78P8He/D/B3vw/wd78P8He/D/B3vw/wd7 + 8P8He/D/CYT4/wBy8f8Me/n/A1OO/wEACv8AAwD/AAoS/xJIif8TLUv/AQAC/w4KBf8AW5//E23p/wp9 + 5f8BeOv/AXLn/wR57P8Eeez/BHns/wR57P8Eeez/BHns/wR57P8Eeez/BHns/wR57P8Eeez/BHns/wR5 + 7P8Eeez/BHns/wR57P8Hd+f/AHbw/xF94v8Lc+T/AFSg/wUJA/8EAgD/DChH/wggRP8ACBL/Ak2X/wJk + 1P8Fet3/AGvf/wd35/8Hctv/AHPi/wBz4v8Ac+L/AHPi/wBz4v8Ac+L/AHPi/wBz4v8Ac+L/AHPi/wBz + 4v8Ac+L/AHPi/wBz4v8Ac+L/AHPi/wJu2v8NeuP/AGvd/wtz3v8AatD/Ck6X/wAFFf8LI0H/Citc/wBB + iv8PYr3/AFzK/wBu0f8GbtH/AGPe/why1/8EbdT/BG3U/wRt1P8EbdT/BG3U/wRt1P8EbdT/BG3U/wRt + 1P8EbdT/BG3U/wRt1P8EbdT/BG3U/wRt1P8EbdT/B2/U/wBo4P8Ja8//AGrO/wZfzf8JZb7/ADuI/wou + Xv8aTXX/IFGb/wRXrf8AZrH/Dlq+/wJgv/8IabP/AFvI/wpjvv8KY77/CmO+/wpjvv8KY77/CmO+/wpj + vv8KY77/CmO+/wpjvv8KY77/CmO+/wpjvv8KY77/CmO+/wpjvv8CX8b/Dmi9/wBivv8QW7f/AGW4/wdV + r/8bU5T/Gkh3/09WWf8SS3j/CVCU/xFQmv8JXqT/EFie/xtcp/8MWqb/Dliq/w5Yqv8OWKr/Dliq/w5Y + qv8OWKr/Dliq/w5Yqv8OWKr/Dliq/w5Yqv8OWKr/Dliq/w5Yqv8OWKr/Dliq/w9cq/8WW6H/EFig/wtg + qv8QTpT/CVCU/xZNgP9LVVX/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/EliteReporter/Forms/ReportForm.Designer.cs b/EliteReporter/Forms/ReportForm.Designer.cs index 5c86b05..4eaa867 100644 --- a/EliteReporter/Forms/ReportForm.Designer.cs +++ b/EliteReporter/Forms/ReportForm.Designer.cs @@ -44,6 +44,8 @@ private void InitializeComponent() this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.applicationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.rewardHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.deleteButton = new System.Windows.Forms.Button(); this.statusStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout(); this.SuspendLayout(); @@ -70,17 +72,19 @@ private void InitializeComponent() this.startSystemHeader, this.missionNameHeader, this.endDateHeader, - this.endSystemHeader}); + this.endSystemHeader, + this.rewardHeader}); this.missionListView.FullRowSelect = true; - this.missionListView.LabelEdit = true; this.missionListView.Location = new System.Drawing.Point(9, 26); this.missionListView.Margin = new System.Windows.Forms.Padding(2); this.missionListView.Name = "missionListView"; + this.missionListView.ShowItemToolTips = true; this.missionListView.Size = new System.Drawing.Size(814, 360); this.missionListView.TabIndex = 1; this.missionListView.UseCompatibleStateImageBehavior = false; this.missionListView.View = System.Windows.Forms.View.Details; this.missionListView.AfterLabelEdit += new System.Windows.Forms.LabelEditEventHandler(this.missionListView_AfterLabelEdit); + this.missionListView.DoubleClick += new System.EventHandler(this.missionListView_DoubleClick); // // startDateHeader // @@ -178,11 +182,29 @@ private void InitializeComponent() this.settingsToolStripMenuItem.Text = "Settings"; this.settingsToolStripMenuItem.Click += new System.EventHandler(this.settingsToolStripMenuItem_Click); // + // rewardHeader + // + this.rewardHeader.Text = "Reward"; + this.rewardHeader.Width = 70; + // + // deleteButton + // + this.deleteButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.deleteButton.Location = new System.Drawing.Point(101, 390); + this.deleteButton.Margin = new System.Windows.Forms.Padding(2); + this.deleteButton.Name = "deleteButton"; + this.deleteButton.Size = new System.Drawing.Size(86, 40); + this.deleteButton.TabIndex = 7; + this.deleteButton.Text = "Delete"; + this.deleteButton.UseVisualStyleBackColor = true; + this.deleteButton.Click += new System.EventHandler(this.deleteButton_Click); + // // ReportForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(831, 454); + this.Controls.Add(this.deleteButton); this.Controls.Add(this.statusStrip1); this.Controls.Add(this.menuStrip1); this.Controls.Add(this.exportButton); @@ -224,6 +246,8 @@ private void InitializeComponent() private System.Windows.Forms.MenuStrip menuStrip1; private System.Windows.Forms.ToolStripMenuItem applicationToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem settingsToolStripMenuItem; + private System.Windows.Forms.ColumnHeader rewardHeader; + private System.Windows.Forms.Button deleteButton; } } diff --git a/EliteReporter/Forms/ReportForm.cs b/EliteReporter/Forms/ReportForm.cs index c3edc30..22fcd09 100644 --- a/EliteReporter/Forms/ReportForm.cs +++ b/EliteReporter/Forms/ReportForm.cs @@ -62,7 +62,7 @@ private void analyzeScreenShot(string pathToBmp) else { var result = analyzer.findAndAnalyzeMissionSummaryPage(pathToBmp); - if (result == null) + if (result == null || result.MissionName == null) { Trace.TraceInformation("Can't recognize anything from pic: " + pathToBmp); return; @@ -73,7 +73,7 @@ private void analyzeScreenShot(string pathToBmp) if (existingLvItem != null) { //finshing mission - if (((MissionInfo)existingLvItem.Tag).MissionTakenDateTime.Add(takenMisisonCoolDown) < DateTime.UtcNow) + if (((MissionInfo)existingLvItem.Tag).MissionTakenDateTime.Value.Add(takenMisisonCoolDown) < DateTime.UtcNow) { var edProfile = edapi.getProfile(); var missionInfo = (MissionInfo)existingLvItem.Tag; @@ -81,8 +81,7 @@ private void analyzeScreenShot(string pathToBmp) { missionInfo.MissionFinishedDateTime = DateTime.UtcNow; missionInfo.MissionFinishedEDProfile = edProfile; - existingLvItem.SubItems.Add(missionInfo.MissionFinishedDateTime.ToString("dd/MM/yyyy HH:mm")); - existingLvItem.SubItems.Add(missionInfo.MissionFinishedEDProfile.ToString()); + fillMissionListViewItem(existingLvItem, missionInfo); } } else @@ -99,10 +98,12 @@ private void analyzeScreenShot(string pathToBmp) commanderName = edProfile.CommanderName; result.MissionTakenDateTime = DateTime.UtcNow; result.MissionTakenEDProfile = edProfile; - ListViewItem lvItem = new ListViewItem(result.MissionTakenDateTime.ToString("dd/MM/yyyy HH:mm")); - lvItem.SubItems.Add(result.MissionTakenEDProfile.ToString()); - lvItem.SubItems.Add(result.MissionName); + ListViewItem lvItem = new ListViewItem(); lvItem.Tag = result; + string[] str = new string[missionListView.Columns.Count]; + for (int i = 0; i < str.Length; i++) { str[i] = ""; } + lvItem.SubItems.AddRange(str); + fillMissionListViewItem(lvItem, result); missionListView.Items.Add(lvItem); } } @@ -111,16 +112,17 @@ private void analyzeScreenShot(string pathToBmp) private void onSettingsChanged(object sender, CancelEventArgs e) { - if (analyzer != null) + if (analyzer != null && analyzer.getLanguage().Code != Properties.Settings.Default.Language) { analyzer.Dispose(); analyzer = new ScreenAnalyzer(Properties.Settings.Default.Language); } - if (watcher != null) + if (watcher != null && watcher.Path != Properties.Settings.Default.PicturesFolder) { watcher.Path = Properties.Settings.Default.PicturesFolder; } - takenMisisonCoolDown = new TimeSpan(0, 0, Properties.Settings.Default.MissionCoolDown); + if(takenMisisonCoolDown.TotalSeconds != Properties.Settings.Default.MissionCoolDown) + takenMisisonCoolDown = new TimeSpan(0, 0, Properties.Settings.Default.MissionCoolDown); } private void activateButton_Click(object sender, EventArgs e) @@ -240,5 +242,46 @@ private void ReportForm_Shown(object sender, EventArgs e) { initialize(); } + + private void deleteButton_Click(object sender, EventArgs e) + { + if(MessageBox.Show("Delete selected missions?", "Confirm removal", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + for (int i = missionListView.SelectedItems.Count - 1; i >= 0; i--) + { + ListViewItem itm = missionListView.SelectedItems[i]; + missionListView.Items[itm.Index].Remove(); + } + } + } + + private void missionListView_DoubleClick(object sender, EventArgs e) + { + var selItems = missionListView.SelectedItems; + if (selItems.Count > 0) + { + var mInfo = (MissionInfo)selItems[0].Tag; + var form = new EditMissionForm(mInfo); + if (form.ShowDialog(this) == DialogResult.OK) + { + fillMissionListViewItem(selItems[0], mInfo); + } + form.Dispose(); + } + } + + private void fillMissionListViewItem(ListViewItem vItem, MissionInfo mInfo) + { + vItem.Text = mInfo.MissionTakenDateTime.Value.ToString("dd.MM.yyyy HH:mm"); + vItem.SubItems[missionNameHeader.Index] = new ListViewItem.ListViewSubItem(vItem, mInfo.MissionName); + vItem.SubItems[startSystemHeader.Index] = new ListViewItem.ListViewSubItem(vItem, mInfo.MissionTakenEDProfile.ToString()); + vItem.SubItems[rewardHeader.Index] = new ListViewItem.ListViewSubItem(vItem, mInfo.Reward.ToString()); + if (mInfo.MissionFinishedDateTime != null) + vItem.SubItems[endDateHeader.Index] = new ListViewItem.ListViewSubItem(vItem, mInfo.MissionFinishedDateTime.Value.ToString("dd.MM.yyyy HH:mm")); + if (mInfo.MissionFinishedEDProfile != null) + { + vItem.SubItems[endSystemHeader.Index] = new ListViewItem.ListViewSubItem(vItem, mInfo.MissionFinishedEDProfile.ToString()); + } + } } } diff --git a/EliteReporter/Models/EDProfile.cs b/EliteReporter/Models/EDProfile.cs index 3673a71..96aa1da 100644 --- a/EliteReporter/Models/EDProfile.cs +++ b/EliteReporter/Models/EDProfile.cs @@ -18,6 +18,8 @@ public class EDProfile public override string ToString() { + if (string.IsNullOrEmpty(SystemName) && string.IsNullOrEmpty(PortName)) + return ""; return string.Format("{0}/{1}", SystemName, PortName); } } diff --git a/EliteReporter/Models/MissionInfo.cs b/EliteReporter/Models/MissionInfo.cs index 82c1e01..9dcac05 100644 --- a/EliteReporter/Models/MissionInfo.cs +++ b/EliteReporter/Models/MissionInfo.cs @@ -11,10 +11,10 @@ namespace EliteReporter.Models public class MissionInfo { public string MissionName { get; set; } - //public string StationName { get; set; } + public int Reward { get; set; } - public DateTime MissionTakenDateTime { get; set; } - public DateTime MissionFinishedDateTime { get; set; } + public DateTime? MissionTakenDateTime { get; set; } + public DateTime? MissionFinishedDateTime { get; set; } public EDProfile MissionTakenEDProfile { get; set; } public EDProfile MissionFinishedEDProfile { get; set; } diff --git a/EliteReporter/Utils/ScreenAnalyzer.cs b/EliteReporter/Utils/ScreenAnalyzer.cs index 4e24921..bf85aaa 100644 --- a/EliteReporter/Utils/ScreenAnalyzer.cs +++ b/EliteReporter/Utils/ScreenAnalyzer.cs @@ -16,6 +16,7 @@ using System.Xml; using System.Xml.Linq; using System.Threading; +using System.Text.RegularExpressions; namespace EliteReporter.Utils { @@ -32,6 +33,11 @@ public ScreenAnalyzer(string languageCode) //ocr.SetVariable("tessedit_char_whitelist", language.OcrWhitelist); } + public Language.LanguageType getLanguage() + { + return language; + } + public void Dispose() { ocr.Dispose(); @@ -56,6 +62,9 @@ public MissionInfo findAndAnalyzeMissionSummaryPage(string pathToBmp, bool inclu double heightFactor = ((double)source.Height / (double)baseSize.Height); Image yearTemplate = new Image("Assets\\3302_" + language.Code + ".bmp"); // Image A yearTemplate = yearTemplate.Resize(widthFactor, Emgu.CV.CvEnum.Inter.Cubic); + Image rewardTemplate = new Image("Assets\\reward_" + language.Code + ".bmp"); // Image A + rewardTemplate = rewardTemplate.Resize(widthFactor, Emgu.CV.CvEnum.Inter.Cubic); + MissionInfo missionInfo = new MissionInfo(); try { using (Image result = source.MatchTemplate(yearTemplate, Emgu.CV.CvEnum.TemplateMatchingType.CcoeffNormed)) { @@ -63,7 +72,6 @@ public MissionInfo findAndAnalyzeMissionSummaryPage(string pathToBmp, bool inclu Point[] minLocations, maxLocations; result.MinMax(out minValues, out maxValues, out minLocations, out maxLocations); - // You can try different values of the threshold. I guess somewhere between 0.75 and 0.95 would be good. if (maxValues[0] > 0.7) { //mission name @@ -84,26 +92,61 @@ public MissionInfo findAndAnalyzeMissionSummaryPage(string pathToBmp, bool inclu var words = ocr.GetText(); var missionName = words.Replace("\r\n", " ").Trim(); Trace.TraceInformation("Mission name: " + missionName); - var missionInfo = new MissionInfo() - { - MissionName = missionName - }; + missionInfo.MissionName = missionName; if (includeImages) { missionInfo.Images.Add(missionRegion.ToBitmap()); } - return missionInfo; } finally { missionRegion.Dispose(); } + } } + using (Image result = source.MatchTemplate(rewardTemplate, Emgu.CV.CvEnum.TemplateMatchingType.CcoeffNormed)) + { + double[] minValues, maxValues; + Point[] minLocations, maxLocations; + result.MinMax(out minValues, out maxValues, out minLocations, out maxLocations); + + // You can try different values of the threshold. I guess somewhere between 0.75 and 0.95 would be good. + if (maxValues[0] > 0.7) + { + int reward = 0; + // reward + var match = new Rectangle(new Point(maxLocations[0].X + rewardTemplate.Width + (int)(210 * widthFactor), + maxLocations[0].Y), + new Size((int)(210 * widthFactor), rewardTemplate.Height)); + if (match.X + match.Width > source.Width || match.Y + match.Height > source.Height) + { + return missionInfo; + } + var rewardRegion = source.GetSubRect(match); + try + { + if (rewardRegion.Height < 20) + rewardRegion = rewardRegion.Resize((double)20 / rewardRegion.Height, Emgu.CV.CvEnum.Inter.Cubic); + ocr.Recognize(rewardRegion.Convert()); + var words = ocr.GetText(); + int.TryParse(Regex.Replace(words, @"[^0-9$]", "").Trim(), out reward); + Trace.TraceInformation("Reward: " + reward); + missionInfo.Reward = reward; + } + finally + { + rewardRegion.Dispose(); + } + } + } + + return missionInfo; } finally { source.Dispose(); yearTemplate.Dispose(); + rewardTemplate.Dispose(); } return null; }