From 1b828d6e4bf798093167235c8b3cc35fee9b7f59 Mon Sep 17 00:00:00 2001 From: Jannik Date: Sun, 18 Jun 2017 00:33:07 +0200 Subject: [PATCH] smmdbapi part 4 * added additional information and finished ui design --- bin/.gitignore | 1 + bin/application/MainWindow.fxml | 15 ++++- bin/application/MainWindowController$1.class | Bin 2199 -> 2199 bytes bin/application/MainWindowController$2.class | Bin 4186 -> 4186 bytes bin/application/MainWindowController$3.class | Bin 4201 -> 4201 bytes bin/application/MainWindowController$4.class | Bin 4209 -> 4209 bytes bin/application/MainWindowController$5.class | Bin 1097 -> 1097 bytes bin/application/MainWindowController$6.class | Bin 1097 -> 1097 bytes bin/application/MainWindowController$7.class | Bin 2774 -> 3541 bytes bin/application/MainWindowController.class | Bin 34342 -> 35145 bytes bin/datatypes/SmmdbApiDataType.class | Bin 5181 -> 5510 bytes src/application/MainWindow.fxml | 15 ++++- src/application/MainWindowController.java | 56 +++++++++++++++++-- src/application/SmmdbApiQuery.java | 9 ++- src/datatypes/SmmdbApiDataType.java | 20 ++++++- 15 files changed, 103 insertions(+), 13 deletions(-) diff --git a/bin/.gitignore b/bin/.gitignore index b42b859..9eb92dc 100644 --- a/bin/.gitignore +++ b/bin/.gitignore @@ -1 +1,2 @@ /application/ +/datatypes/ diff --git a/bin/application/MainWindow.fxml b/bin/application/MainWindow.fxml index 90a6ba3..da7a543 100644 --- a/bin/application/MainWindow.fxml +++ b/bin/application/MainWindow.fxml @@ -9,10 +9,12 @@ + + @@ -85,7 +87,18 @@ - + + + + + + + + + + + + diff --git a/bin/application/MainWindowController$1.class b/bin/application/MainWindowController$1.class index fa8bc93dd9643065c90ca118cab6076bda57b416..ca1cabc758aa0dc7fa3ed2fda613ace2ee760fdc 100644 GIT binary patch delta 63 zcmbO(I9+gq5IdvcWMTGQx+V-VjHV1~jAjgajOGlMj1~;`jFt?pj8+UOjMfZAj5ZAA TjJ6C_jCKr7j1H53vCjnnbhive delta 63 zcmbO(I9+gq5IdvdWMTGQx+)AZjH(Q3jA{&ejOq-Qj2aB~jG7Ftj9LsSjM@xEj5-YE TjJga}jCu@Bj0Tf`vCjnnT?Y$w diff --git a/bin/application/MainWindowController$2.class b/bin/application/MainWindowController$2.class index 2a2682fb0f739c3aba62160e41e08c0c3c7680ec..dd9d196696db482c2de688fc273fe52b4fd899d7 100644 GIT binary patch delta 158 zcmWN_I}1Sp07vovF<#0SQ0`>JYBGrHl{X;@A+IO~WigqQGVvvpvRljs+3XgJ(du@l z^Lv>u^L%g-xg1>q$2uktmVCtJC!r8Yg-Iz&T3s@llhu-(Rur_Ms4XS!DeFu{SE{;E x)18K%H1(r_lNMgu1nFSWB~On!eftJ>LuQQFG3LaChb?b|DIc4^EG{{>!5{L*Bnbcj delta 158 zcmWN_Jqtkr07l{W7*YO!awj87;UZVQ6@`$mC=51bQ5KU)DHDG}DZ9mNkj-wf7_IJh zp7SzZ#`)kTd^x&FYD-Rg@;Xz{m6C3h yb*G{yRsE>oqK1z;AsQ5E+SQ^*n=u_`beY@Q(dWc~hyC78hI|b3dGRa=mI1LiNR(xNsu(@)I=P9=MqKZR3b$kQmH``LJaP} z*4^5;16>^QJSWG=@e{W2yoy-STNy{zU>)+jeocrz^k delta 178 zcmWN_yKaF20EXf3UBn>b3dCSG_5vgZiNR(xkvgAGY5ApSG>tQ<+2A diff --git a/bin/application/MainWindowController$4.class b/bin/application/MainWindowController$4.class index 9e3c14d11f54475280b7de0c9ca1b461b7a2996a..2b839007fcb6837a6cf44079d7d08f779f7b39fc 100644 GIT binary patch delta 178 zcmV~$xsHJW0EN-}H7F!Jf&7J9=>c?9^vbDFhzFpO&?$8EI!o;946)3F5G2glLLyP? zrV{5oji*r#TPao}))$G2EY#$rE*A~CY05)OUfS~0QIxI{^pvEp6a!`XRE{q-7^=@m z3&z?q(S@lV%=FKV5ukmpE&6D7{nxX|WG Mj~fH-RkJO`8-wpVzyJUM delta 178 zcmWN|E3d%;0LJ0>R}gG`0uxRa&j-**bWuVuAAn?|2^zE6T#ozwHk>oUaX({Z^<+&l z|EE6>=fl|zTPX}8))$GQER^&?SuQI2q$)RG@=%kHx}r3cps6G+rD!WlM>)D0)6K)wFaQ7m diff --git a/bin/application/MainWindowController$5.class b/bin/application/MainWindowController$5.class index 87171308f4fbeb01f95b21ff75c8b76ef9d70edf..daa45da498df9b3e2f51b43fe558728f4516baa1 100644 GIT binary patch delta 27 jcmX@fagt+09y8u(fQ7{-5RI=i#GOrZ86Ewm~P(U!zctPq>-Hxd%pRMNDvxYkRjyVLE$?(DiV z3oTx@D0o-21KyQZ6ue`xZdp2=IN7&1Lorl>W*pRl|`%Nd4Gt-vFBLe+^dB`+u z%Qf~5_G>&U*j%+_O*?H2xy6i~-d)OMQ&us=ju!W~|p5_@r*i0rZ$Ju^QuV8m)zgh53 z)!klR1G^D~BK{n1Ea?Rwyhl*y>3iArDX}l_naP`p8q~lsSo!5CoP?s;c zg66dXW%9(ynnrh>V)Zh$VZ+N?ARaTv_Og8;Zx4~z^29-!ENh(d(g~|<%>BhCC7C= zYmLtYTi0V`w}&Qe*PK`n@J!8$*OiJ{!NzN6pg$_dqdGQ%EjKT_K*))$6{mVL){&#$ zui9T?*_#b*Q!n|quC1=a`#Y2t|9S)AyTX4GK$Ev})td_6Cr)^a;r6nYsyTHrMYK0TWRMD)~_?9>&m|ZQ8NvBU!V_4)}N!RePBw4fED>)@y zg_$`NY|e9mPipI@sN5p+>0={^6`I5 zm@7&PD@tpb1_>}o$S(_xG|AQ9o#h;&y8E0jB(ZP%Qts;5#SCBZwWOY=op1P77WE9e z6!slK=H=I%lo;T9c}A~coRxOL57M%Uz<>0Lf0)!b9@Lbb5~m{V3JYwmu8Ss1efOBMm|zDiunX3KbVZAhz17(OzR}n#3elTOYAn z-)|4D6vVZwN{Lm$y>7bFg&SSFP%F4mQO~`)(6c!6&p-c}f0*-n<(pW?tDnza02@&z zJ|U@kBsrIz2_!=7WY}a#=ol|d7Bb~RrI^W0HJZ+Z%`SGU5i7BEl)WZS$7IrwU2^e)?BJw5scJeZ$82{4%m#5)v*juKg@?ah>e_RhVV7MXw?Od;6VY0m z`X6RPo5?m)ZBEVUt_I8Xox}q9NSAyfD@$yaFXZK`-uM!A`Nlo@PSpE7Z;}?Bbm>$N zMT;|thh{j7&qL=l^0SEnW;w4dE@;;Nt7>skqf45x@c+R1xu&B* VH`lqTQB>Dl5BIF)7XCX%=r>Q8hWh{j diff --git a/bin/application/MainWindowController.class b/bin/application/MainWindowController.class index a0ce15be678ff5c9a30a0d09819ab76125208e00..2fff3398414b604a6383dc2311b8fdf6350fc54d 100644 GIT binary patch literal 35145 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 literal 34342 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 diff --git a/bin/datatypes/SmmdbApiDataType.class b/bin/datatypes/SmmdbApiDataType.class index f59b43d997ca118db7261561bcd28c9cdd00dd12..e5bafb59fdbbfd220456deea55b15f97948b688d 100644 GIT binary patch literal 5510 zcma)9ZE##w8Gde>WH+0WPr69jQc6kF&89T51f-?{rLi^|+hWoPT0S<}oAj2=?y|cn zE#F|(f~Zwdt0ID5qciBh3=JwMFatBd=#0$hAO7-}zx-u<-g9>M?q1(@%#S_Keb0HG zd+vMQkCS&l{>$G0OyXBDw0YQ+%~Ud#Gey5VKDWA>UEE&`rfHd{C5Cnn{UOgvJ{esGBwMU zOo?OsM5Y|9W>!QoC>JwJcRRdRRhYhLGg&4MY7}MQ17pxX@ ze#D6hY{pO*JX~SWflfhJ8pIsB${_C04udX-b{Zrc8a3#4Xw1MkbhSZ`L*oX$4t>&~ z&!KA!`W?E~U;v#le9A-mf9kWUAq8Tntai+4Ri@dH?X*>Y`to&n(Je z56%{rGP#9JDUj!?vAuF4V5DuCZJj6#a&JcHva6=3VE6^uT3C4)O^w<$|4-WV*t7|` zgJJqK7{lNWjj5JzY4#7dJy1`>kUkiuV`$vin3kcrzm}e%X`r5_p{>WJYxvw>OWV*i zP*2|mTRn|KTaQi5@VR5fugoyBnOHLk##+YUFpfy9Eg58SCug{Vm4d%Vq!7uX6@#NV z;-QDe1NEvTGbashkr~68*;7jXPHJ@VmPE)IJf#yDAUMi_* zeb3-_%t`TfM;7O3kA(Xn3=e|t=X2ftZaQ>2T`kiMuBL-&sX5ru>u%*PIBA{f*413- z*3}*79_#LMZ*6o^Qz3C*XbXwR+mB?n&oP>o{DXm%lVr4^?w0z1E9r_2?7+P&kF4fI zgHp@w$VzTU)^R(sirbMj+>Wf^c4YmwBdfO^S-b7X%56v1Z9B36+mYp$;~3wZ#HIZG z1kg6kUGxForu56WEd2^L-}W*tzlg0N+!n&^Asi0jNC;CQOown+2zQ5YB7}QFI7xUN z_i+71>151-UCFouyOUiGOe7Ny z>`8VzFqt$C>>cV^#{s@+YN(gsMf$7_hxmIRw(@ri+Sxh#cygQgyMujlf*o>-=Xa3) zy@gHgIQ_dq50~iS2XPtBVF*9q>Su5Tev57RBTs)F+wmH%!rK_edsKNJBlrM2@gY+9 z2&4EIX)lH`uOGX-AzY0azWIVXDSRGZ;1kb`ku%G46ci(BvnWo)$fB)_sNJFjQHMp{ zM2rf~8lsp*Jw$PfdWpI$>LW^6)KAoH(EyRLXb@kd4@6}nQ7`wva_b@r;~cpsbjX># zK;WF$X^j*1LyTKc{SZ&eFf9znCi1o@c~T{_QY+-`QS$XFnPp8O?~Ri8sbsbSg*+T3 z-=vb+Efn%dlsv7H*-jL4DoQ@2lG$?W|LFM z6H)T5Dw&N?A@7NjkE>)hONBfcCEulz+3XbZRFs@m$#>w+DtQk_$*OpI9e1r`@%cz% zooL|4>xt#7{AGooQ~4)UexUG+D*tYkpHui1m7iDn1%-cF<=><7OA7x1m0wZ$YYP7n zm4C0wKdtc3s{H#@{{0I7oXUSt;XkGFzkzR7G50_9$8Atx6Yk^8YKSJLEOqTIz6a&ik2xeKb?nkM%r z%Kf>8oLr?u?kB3;X-)1`%Kf#4oZQDm?x(8U{hHkClzXFvoLuTe?q{mpLz>*1lzXd% zoZJjW?rBx-QBCe`%DvM^~{@UJE(7=!)F4s@!=^?q8JqcMCbWElVGN&UWu#{s&BJjsO4v literal 5181 zcma)9ZE#f88Gdd^vf0g9LL#etBSJ_v5mpc=8jD2`4W@twVilxrvNz$vW_Q_aK(J{2 zs8w6>8$Xz_Gj*n&shzfdg&Ccyqcb?;AOH4m|N7UzPRHjxXLs-J?Yo`k$DZe&_dd@# z_dV~&$v6M`PhyGy}d&K%}U4DBA4oXnodX7bs> zOy=O^Nq?&1p)JUH7#I`7^dp%`KUW^W*T=|2`YIib>0>fg32xr zTL(wOKda(A;g}=;J(HgB(7vab^AlKvWd=*J+{2>5^h69RJq+tE8xLknc|YQ~1Xf^K z93Ivfbf8nv^#(DAZZPO_XoErAp^XL!hXxJ09U3w)4&7*wbZE1|Vux-r=y7PP!4h=F zu+78J|Jq}-#}c^NZSf}tz37uI-ePbK`VttyPh+^vL%*&T`BsBnxSf7taL|2&qv?qR zc4JQrcX-&KD>Uy!1onDJ4K|#Ji`Ef2k)E-j;2)Tuo%G9xvy*bdePhL`YEtWi_2h;YQ|0h9`HbFveUzjKjlVL=MlY=c+ zY4#7d-CIw%klq(2UO2h5F#*HrCACBhr+VuN8O|kbVusJX^#pC0t0!tWm$a!DK6lLc zl~Lv{b7wTcze!Y4w@oT2u~Uu#39M1 zr^Ri*@zDHgHA!OlZBwOp(c`vzSZbnZJ#X*;4oU5GN7Kd8x}N(X3>{84^SSP3XAYf9 zmx{T;rF0}`YL0aDy8E~b8m-furS2;CSa*r?Fx^rt!;7)W(GkWR%M z7*2ILuqhRHAd^ZsuqD;)z>ei+0YBpcJC`R3-lu=sa3_DuSjFF!Xy?iF&_gTu+s{UJ z6T8s}{kV_4=wABq7(F>dPnK~VE?^m+#d5rgHMoqmco)~>J)ZDKxB>sfdR)Z@d`p#o zVI%&H0er`^_#SEefFZ8~!_)*Wy3@d2xSLNr7e>V>&q`2?sLi4-B1R48;zaEhC5SpK z>L%jJ(`txf7A1+gELuzyx2T6GVbKzzZi{-cpDf{CLzLvoER8N!km1OkphFJk9|X=- zopy4w-M(=zRJZR*$>ahdA~|#4^ha&QSt$m%wD6AH$}e=~&M5h~N`4SWtK_X5B{8~&7I16<$Nw71jmZXnS3NhfDt}Vp zPpkZ#%J&uiNtHjN@=qxIg33Rs@=q!JvdW)T`2~f4M&*}O{%M7OUggiJ{EEVVOy!?Z z`DYdWlPdq5%0I90pHcb0Qu!AY{_`sTas0X(zuT+v+s*iWVgXNmfoGyAaIrz6yB@;N zsuIuX60ax{z4#q&ukK5JTps@y3}?oX8a za|=1SIf&d#s$4;n`wQjXYau7s50QIWl{>A;{f%;eZy_gl7?FELm8)oSA5iYY7IJbC z61i7ZxwD$w0_Co>kdxb#$i1e@o!8_(q1>k}4C;$Ke diff --git a/src/application/MainWindow.fxml b/src/application/MainWindow.fxml index 90a6ba3..da7a543 100644 --- a/src/application/MainWindow.fxml +++ b/src/application/MainWindow.fxml @@ -9,10 +9,12 @@ + + @@ -85,7 +87,18 @@ - + + + + + + + + + + + + diff --git a/src/application/MainWindowController.java b/src/application/MainWindowController.java index f0f1691..6f3adb0 100644 --- a/src/application/MainWindowController.java +++ b/src/application/MainWindowController.java @@ -22,6 +22,9 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.math.BigInteger; +import java.net.MalformedURLException; +import java.net.URISyntaxException; +import java.net.URL; import java.sql.SQLException; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @@ -41,9 +44,9 @@ import com.jfoenix.controls.JFXTreeTableColumn; import com.jfoenix.controls.JFXTreeTableView; import com.jfoenix.transitions.hamburger.HamburgerBackArrowBasicTransition; +import datatypes.CourseTableDataType; import datatypes.SmmdbApiDataType; import datatypes.UIROMDataType; -import datatypes.CourseTableDataType; import javafx.animation.FadeTransition; import javafx.animation.ParallelTransition; import javafx.animation.TranslateTransition; @@ -74,6 +77,7 @@ import javafx.scene.paint.Color; import javafx.scene.paint.Paint; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; +import javafx.scene.text.TextFlow; import javafx.stage.DirectoryChooser; import javafx.stage.FileChooser; import javafx.util.Duration; @@ -101,14 +105,17 @@ public class MainWindowController { @FXML private JFXButton romTFBtn; + @FXML + private JFXButton smmdbDownloadBtn; + @FXML private JFXButton playBtn; @FXML - JFXButton timePlayedBtn; + private JFXButton lastTimePlayedBtn; @FXML - private JFXButton lastTimePlayedBtn; + JFXButton timePlayedBtn; @FXML private JFXHamburger menuHam; @@ -119,6 +126,9 @@ public class MainWindowController { @FXML private JFXTextField romTextField; + @FXML + private TextFlow smmdbTextFlow; + @FXML private JFXColorPicker colorPicker; @@ -140,12 +150,18 @@ public class MainWindowController { @FXML private ScrollPane scrollPaneMain; + @FXML + private ScrollPane smmdbScrollPane; + @FXML private VBox sideMenuVBox; @FXML private HBox topHBox; + @FXML + private ImageView smmdbImageView; + @FXML private JFXTreeTableView courseTreeTable = new JFXTreeTableView(); @@ -237,9 +253,9 @@ public class MainWindowController { applyColor(); //initialize courseTable - titleColumn.setPrefWidth(150); - starsColumn.setPrefWidth(85); - downloadsColumn.setPrefWidth(115); + titleColumn.setPrefWidth(168); + downloadsColumn.setPrefWidth(130); + starsColumn.setPrefWidth(100); courseTreeTable.setRoot(root); courseTreeTable.setShowRoot(false); @@ -497,6 +513,20 @@ public class MainWindowController { for (int i = 0; i < courses.size(); i++) { if (courses.get(i).getId() == id) { + if (courses.get(i).getHasimage() == 1) { + try { + URL url = new URL("http://smmdb.ddns.net/img/courses/thumbnails/" + id + ".pic"); + Image image = new Image(url.toURI().toString()); + smmdbImageView.setImage(image); + } catch (MalformedURLException | URISyntaxException e) { + e.printStackTrace(); + } + } else { + //TODO show an image if none was found +// Image image = new Image(url.toURI().toString()); +// smmdbImageView.setImage(image); + } + //TODO show additional information and download option System.out.println(i); } @@ -626,6 +656,18 @@ public class MainWindowController { } } + @FXML + void smmdbDownloadBtnAction(ActionEvent event){ + //TODO implement download + System.out.println("this needs to be implemented ^^"); + try { + URL url = new URL("smmdb.ddns.net/courses/" + id); + } catch (MalformedURLException e) { + System.err.println("something went wrong during downloading the course"); + e.printStackTrace(); + } + } + @FXML void cemuTextFieldAction(ActionEvent event){ setCemuPath(cemuTextField.getText()); @@ -918,6 +960,7 @@ public class MainWindowController { playBtn.setStyle("-fx-text-fill: WHITE; -fx-font-family: Roboto Medium;"); cemuTFBtn.setStyle(btnStyleWhite); romTFBtn.setStyle(btnStyleWhite); + smmdbDownloadBtn.setStyle(btnStyleWhite); playBtn.setStyle(btnStyleWhite); aboutBtn.setGraphic(info_white); @@ -936,6 +979,7 @@ public class MainWindowController { playBtn.setStyle("-fx-text-fill: BLACK; -fx-font-family: Roboto Medium;"); cemuTFBtn.setStyle(btnStyleBlack); romTFBtn.setStyle(btnStyleBlack); + smmdbDownloadBtn.setStyle(btnStyleBlack); playBtn.setStyle(btnStyleBlack); aboutBtn.setGraphic(info_black); diff --git a/src/application/SmmdbApiQuery.java b/src/application/SmmdbApiQuery.java index e573cef..52d66c8 100644 --- a/src/application/SmmdbApiQuery.java +++ b/src/application/SmmdbApiQuery.java @@ -50,7 +50,7 @@ public class SmmdbApiQuery { //if value is 9 or "notset" the api returned NULL as value for (int i = 0; i < courseIDs.size(); i++) { - int id, owner, coursetype, leveltype, difficulty, lastmodified, uploaded, downloads, stars, ispackage, updatereq; + int id, owner, coursetype, leveltype, difficulty, lastmodified, uploaded, downloads, stars, hasimage, ispackage, updatereq; String nintendoid, title; JsonObject singleObject = mainObject.get(courseIDs.get(i).toString()).asObject(); @@ -99,6 +99,11 @@ public class SmmdbApiQuery { } catch (Exception e) { stars = 9; } + try { + hasimage = singleObject.getInt("hasimage", 0); + } catch (Exception e) { + hasimage = 9; + } try { ispackage = singleObject.getInt("ispackage", 0); } catch (Exception e) { @@ -121,7 +126,7 @@ public class SmmdbApiQuery { } course.add(new SmmdbApiDataType(id, owner, coursetype, leveltype, difficulty, lastmodified, uploaded, downloads, - stars, ispackage, updatereq, nintendoid, title)); + stars, hasimage, ispackage, updatereq, nintendoid, title)); } return course; diff --git a/src/datatypes/SmmdbApiDataType.java b/src/datatypes/SmmdbApiDataType.java index 6bfb53d..8c24c80 100644 --- a/src/datatypes/SmmdbApiDataType.java +++ b/src/datatypes/SmmdbApiDataType.java @@ -19,14 +19,15 @@ public class SmmdbApiDataType { private final IntegerProperty uploaded = new SimpleIntegerProperty(); private final IntegerProperty downloads = new SimpleIntegerProperty(); private final IntegerProperty stars = new SimpleIntegerProperty(); + private final IntegerProperty hasimage = new SimpleIntegerProperty(); private final IntegerProperty ispackage = new SimpleIntegerProperty(); private final IntegerProperty updatereq = new SimpleIntegerProperty(); private final StringProperty nintendoid = new SimpleStringProperty(); private final StringProperty title = new SimpleStringProperty(); public SmmdbApiDataType(final int id, final int owner, final int coursetype, final int leveltype, final int difficulty, - final int lastmodified, final int uploaded, final int downloads, final int stars, final int ispackage, - final int updatereq, final String nintendoid, final String title) { + final int lastmodified, final int uploaded, final int downloads, final int stars, final int hasimage, + final int ispackage, final int updatereq, final String nintendoid, final String title) { this.id.set(id); this.owner.set(owner); this.coursetype.set(coursetype); @@ -36,6 +37,7 @@ public class SmmdbApiDataType { this.uploaded.set(uploaded); this.downloads.set(downloads); this.stars.set(stars); + this.hasimage.set(hasimage); this.ispackage.set(ispackage); this.updatereq.set(updatereq); this.nintendoid.set(nintendoid); @@ -82,6 +84,10 @@ public class SmmdbApiDataType { return stars; } + public IntegerProperty hasimageProperty(){ + return hasimage; + } + public IntegerProperty ispackageProperty(){ return ispackage; } @@ -130,6 +136,10 @@ public class SmmdbApiDataType { return starsProperty().get(); } + public int getHasimage() { + return hasimageProperty().get(); + } + public int getIspackage() { return ispackageProperty().get(); } @@ -182,6 +192,10 @@ public class SmmdbApiDataType { starsProperty().set(stars); } + public final void setHasimage(int hasimage) { + hasimageProperty().set(hasimage); + } + public final void setIspackage(int ispackage) { ispackageProperty().set(ispackage); } @@ -197,5 +211,5 @@ public class SmmdbApiDataType { public final void setTitle(String title) { titleProperty().set(title); } - + }