From 1a4027e687c64bcd5c2a2d6fdb3c2da3612a7e7a Mon Sep 17 00:00:00 2001 From: Jannik Date: Tue, 31 Oct 2017 14:11:17 +0100 Subject: [PATCH] added edit dialog * added a dialog for editing existing games * a few UI clean ups * you need to have valid values in every text field if you're adding a new game manually --- bin/application/MainWindowController$1.class | Bin 2178 -> 5918 bytes bin/application/MainWindowController$10.class | Bin 4444 -> 4444 bytes bin/application/MainWindowController$11.class | Bin 1311 -> 1311 bytes bin/application/MainWindowController$12.class | Bin 1554 -> 1554 bytes bin/application/MainWindowController$2.class | Bin 3311 -> 3311 bytes bin/application/MainWindowController$3.class | Bin 4249 -> 4249 bytes bin/application/MainWindowController$4.class | Bin 4257 -> 4257 bytes bin/application/MainWindowController$5.class | Bin 1096 -> 1096 bytes bin/application/MainWindowController$6.class | Bin 1096 -> 1096 bytes bin/application/MainWindowController$7.class | Bin 3503 -> 3503 bytes bin/application/MainWindowController$8.class | Bin 1607 -> 1607 bytes bin/application/MainWindowController$9.class | Bin 1108 -> 1108 bytes bin/application/MainWindowController.class | Bin 49058 -> 48999 bytes bin/application/dbController.class | Bin 12543 -> 13570 bytes src/application/MainWindowController.java | 101 ++++++++++++++++-- src/application/dbController.java | 47 +++++++- 16 files changed, 135 insertions(+), 13 deletions(-) diff --git a/bin/application/MainWindowController$1.class b/bin/application/MainWindowController$1.class index 2b648628309b5585ef3621d7ef9e9ba58329f57a..a54e453944d188c8b9588f87c7c9f013a39739f6 100644 GIT binary patch literal 5918 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 V^||}A5Vf+XK8UlWQ5M$+{|5tGoA&?! delta 359 zcmXYsJ5NGE5QV?F7eoQc-m4O9453jVu>dL)h{VdqLKA-jzTb#qVq#y-GE1O=iIkn_`?TA!jo| zE}2BwNi#;)zL-akj%@_xEO{;adgF*OBp6gV-@XRb;yIz>wDus$2&0od&C{;jyl&>hg!KX{wElzKx=`JZ%k?%AbpDzOn60c#(+#opGk!N8C(|-3aZm ZALRquQ8mXQM~Xt7atwFs%y2wA{s&$&E~x+j diff --git a/bin/application/MainWindowController$10.class b/bin/application/MainWindowController$10.class index 75d243b8a68927475f836ac24908355ddad0f0e2..bec51849bded80060582659b24d5909fa99b9606 100644 GIT binary patch delta 120 zcmV-;0EhqFBHSXdpbi19v!M=&0cEiO2m`YK5d*XUF9WpzN&~h4Q3JOCR0FsGUjw@U zX9K(ddjq`yj|0E}nFGN9p##DIr31qNv;)KdzXQbp&I8K;)&tA{-UH15>I2RI_XE!X a3j@#rCH~fN_XB?c a3j=@wCz$z qv;q78!U6sO#{vHU(Ew^& qv;nLD!U3)T#{sVZ(E+jm;Kn#GKBVSCyn{Ea;X+ zHCWOE%WATs7gB1I);oc|Sk(_}8nUht8I9S{ADf1(qii|OwlCQ6B{^TQ>udIWL(zBa jyTO5hL!|}pe0t9P0i2L-Q(N?8h+=(pImy#mA|+N7o%m50rU1O;s5{u delta 187 zcmV~$y-Gp>0EXf3d+qpJS)vp=*r_xUf^ZSM05_Y0ZlEce!ZB!QF>nZ4q9t6Ki<3(( zIt0<=7Ok#bKp>SpPe1I3kI#YY(IEJY?Fb?O delta 27 icmX@Xae`w*E;FOSU6atw5F9MqYH3FOfQv#jjn%9;EbI+y|&rZ5FE%w!5; Yn8y^%u%0QD;W$vuZKjCHe|R`F)QQh$tJ8hg6kM~nKm%UFl}T|VA{l>!nAerM%HNnyw3_w delta 35 rcmX@kbDU>`F)L&AWE0jL!8it9rUV8VrbGq>rX&UxrqszBS*HO2pbrRc diff --git a/bin/application/MainWindowController$9.class b/bin/application/MainWindowController$9.class index 808809e6a15dfcf577a41e7d9075f903621ec309..f631160b8044ca7974e58388ca73fa37f7d1e763 100644 GIT binary patch delta 23 fcmcb@afM^U1ZKullP5CUvz}#OXF50eDsw#mY+4Aw delta 23 fcmcb@afM^U1ZKvn$rG9FS!)^Cnd&BAWv&MRV@e0m diff --git a/bin/application/MainWindowController.class b/bin/application/MainWindowController.class index 48f09c465cc53865892fe53fb3ab046ff4119aa2..79884c6cd5deea7bde40b89bb1ad216e415df72e 100644 GIT binary patch delta 22215 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 HJna7iJVtJ4 delta 22381 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 diff --git a/bin/application/dbController.class b/bin/application/dbController.class index 9c1975a552e99e86cebd13551fafaa8ed8a1798d..3d0c55b3ae72c90baacf67e2fd0f92260c64fc91 100644 GIT binary patch delta 5034 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 delta 3963 zcmb7Hd3+RA68^rPB-5GcOeQlS$s{2+(tKoL1Kk^vGS$%f%tl`N=x zc%eKma8*RztQUvikccPhdJBpoqJqbwpn#~TxQnvYGf9Zo?r;A{Pxb4ss=lgMuU=(& z{mB~JOFusP1b}`#zR_kk;_`KTLRf2RYyGtuSvn4={>CNzT5U9n6TcyttK&N&y4gRk zabXzoy*gqf@!!fCGs^vgfgf=)tUtPDo}V~FQFE&`J)+bad#Oby)k85uX;Ft`hS93} zIMNxdsvUW>t3?iPL<})RZHVcio^%wJ#1ck*&B7XQU8A?EZm!=(2QJp>A}q~Ki*?3} zP(QyZ8m}|KU?P)LN^E{gvcVK45wT5mGXo2n{Ud5-&hbyKYtY$KeIA=0ew?<3kXNZ_kuv(T<^HL`2jogS!A%7ebi)U?~J}I zwX%e8okEQb_?v42jm-w0XPLU)=^5x?e}m;nk%Z0m2hOT#_BRA{4kUDMO;b~!#q;Ls z^vT<_jyD?zbBL9d>WH)0GL*wqTHH{5Fi$f$f+LkbZfJBB$5=U<$W&iCGb0U-<>_i? zTv^|7VkJ-)nCriwuGY?Ko@M2kM0{iOZ11A7ncmvQdESwYGZ)Mg0tV0K1Xb>;%9_M; ztvu&vuAb+; zg{)D>UAaSMO3@UXYXYBz?L^dEf5Ys+9G!DSu9hP4Wtcnb(Rs0Kctyq}GmMO}BYhb< z=c(!L0%s$kLU9 zy1AxlPTkD;r6Uc#!JTSnQdQJ;zGZNiO7~2Ni<$2ajH{U+IBRar5`V4Ey=rIj2!5av zQ%d=HJk)%%AT4X$uA5ZRb{Dpn)Hh4 zsRJ~Aqi#;UhOSN7JztH8E=2@v(q&ew?=uJRLsg!YE9Pfp<+SYIg8ITB8eE^sBZ%g9 zRA|^JPz^cqOh%MEuYw&{V=k`20$htraUE7+1$xPsSz)v2k8*hv2RH}=l5&wg6G;n6 zpNnJ(Nryy=2uX)UibSCaJR+j$W;MPL$r_T5ilmF%71)h;5G`w8s(#r;wy!$*9#i$% z*%Q9)d_DeO=&ux#3cYb7ytqlI-i!&jB}6|XL~CLf{fRiF_GRbsUrNuZBg{wc_M%!QX>vxEFKKsvgWK zW`x?4lM$sE03%oSN-2rz;P0m1Er5c}@U~+uF}`RkE}G(|tuxGHYFw`pA-1$v+J#0@ z7qN6K!xcXx_5jlH5c07ORalR)*dQCYUN-PyT!Kx4-;68q2yVcZP$v4xW&kU@GO9ydVG;0 zl!OBCSszALIEGY-p(w~SiPO!@ZqXKbA|l$D{S@p&NYIk{T?er2)(cz1B zO=!a;*ZDzATZP_R>6l{L^h5{QuMM-dprzi;0b!HEu(}o5zr+Y+&?!h8D|~j3J;>oc z!($W&Im#E~iE;Ccc8-?~Zs$Y|?VKW193fW@i&GDBM#!63x=1W}98TTi2(mWFmKkBo zK1Wx$vn5=UV4Zw%vp$3mgF;8lV-06zt_gF5Fmn9DC$LR}FSeDp7IJkI0n z5f{hnT!wdeJ@#-D-enN)@oBuzUD(Tm*vI4eK#RnOS_MARX5wRQ7XGQ- zhW*+$9MJaTpd|sjEg5*(Qh>u2FOIZW2IFYxr0+!nV5#gp>6S`9AiY*bBuhU&$Rugm zTVdftB3ZCkJFP=Xv1D-_*GtqT@^yoJjg(9vEC~TisNF}2`$=I5W3-P#z1xa~+Ge(F z7$z)4j6CPJ_snDlO#(CW4hJ1t`96l^V=UCw?2 z>q1#M*vcv^t4*#_Tj+NJg;p*f$se$kBAmojxPNIR1UFfSopqUM3EL4xQ`rn>;{VU# zr0m=O%932=U98LuoAHZFU2{MS4UeA|72BWbxX;{dQ0c|Rqra9*^q6egH!=`>D;Mi` z=qtZIeBbSE8r)g27~C;r*iag(FikZ3@;UxPsp3&BT1Y26gs?-$W=@t;56^zGdCa4`Hi9DnZl;p`|7gyTL z{!up@!%K@)rPokPO5-yxiWg}D9hLQWhk1?iO+N<(eRjRC{52S plUVvoEaei*0EuOw#4 dialog = new Dialog<>(); + dialog.setTitle("edit game"); + dialog.setHeaderText("You can edit the tile and rom/cover path."); + + // Set the button types. + ButtonType okayBtn = new ButtonType("Okay", ButtonData.OK_DONE); + dialog.getDialogPane().getButtonTypes().addAll(okayBtn, ButtonType.CANCEL); + + // Create gameTitle, titleID, gamePath and gameCover TextFields and Labels and two Btn for filechooser + GridPane grid = new GridPane(); + grid.setHgap(10); + grid.setVgap(10); + grid.setPadding(new Insets(20, 150, 10, 10)); + + TextField gameTitleTF = new TextField(); + gameTitleTF.setPromptText("game tile"); + TextField titleIDTF = new TextField(); + titleIDTF.setPromptText("title ID"); + TextField romPathTF = new TextField(); + romPathTF.setPromptText("ROM path"); + TextField gameCoverTF = new TextField(); + gameCoverTF.setPromptText("cover path"); + + gameTitleTF.setText(gameInfo[0]); + titleIDTF.setText(gameInfo[3]); + romPathTF.setText(gameInfo[2]); + gameCoverTF.setText(gameInfo[1]); + + titleIDTF.setEditable(false); + + Button selectPathBtn = new Button("select .rpx file"); + Button selectCoverBtn = new Button("select cover file"); + + selectPathBtn.setPrefWidth(110); + selectCoverBtn.setPrefWidth(110); + + selectPathBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + FileChooser romDirectoryChooser = new FileChooser(); + File romDirectory = romDirectoryChooser.showOpenDialog(main.primaryStage); + romPathTF.setText(romDirectory.getAbsolutePath()); + } + }); + + selectCoverBtn.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + FileChooser coverDirectoryChooser = new FileChooser(); + File coverDirectory = coverDirectoryChooser.showOpenDialog(main.primaryStage); + gameCoverTF.setText(coverDirectory.getAbsolutePath()); + } + }); + + grid.add(new Label("game title:"), 0, 0); + grid.add(gameTitleTF, 1, 0); + grid.add(new Label("title id:"), 0, 1); + grid.add(titleIDTF, 1, 1); + grid.add(new Label("ROM path:"), 0, 2); + grid.add(romPathTF, 1, 2); + grid.add(selectPathBtn, 2, 2); + grid.add(new Label("cover path:"), 0, 3); + grid.add(gameCoverTF, 1, 3); + grid.add(selectCoverBtn, 2, 3); + + dialog.getDialogPane().setContent(grid); + + Optional result2 = dialog.showAndWait(); + if (result2.isPresent()){ + + dbController.setGameInfo(gameTitleTF.getText(), gameInfo[3], romPathTF.getText(), gameCoverTF.getText()); + games.remove(selectedUIDataIndex); + dbController.loadSingleRom(gameInfo[3]); + refreshUIData(); + + LOGGER.info("successfully edited \"" + gameInfo[0] + "\", new name is \"" + gameTitleTF.getText() + "\""); + } + + } } }); @@ -941,6 +1021,7 @@ public class MainWindowController { String titleID = null; File pictureCache; + //new Dialog Dialog dialog = new Dialog<>(); dialog.setTitle("add a new game"); dialog.setHeaderText("add a new game manually to cemu UI"); @@ -967,6 +1048,9 @@ public class MainWindowController { Button selectPathBtn = new Button("select .rpx file"); Button selectCoverBtn = new Button("select cover file"); + selectPathBtn.setPrefWidth(110); + selectCoverBtn.setPrefWidth(110); + selectPathBtn.setOnAction(new EventHandler() { @Override public void handle(ActionEvent event) { @@ -1005,19 +1089,18 @@ public class MainWindowController { title = gameTitleTF.getText(); titleID = titleIDTF.getText(); - System.out.println("Game title: " + title); - System.out.println("Title ID: " + titleID); - System.out.println("ROM path: " + romPath); - System.out.println("Game cover: " + coverPath); + LOGGER.info("Add new Game \"" + title + "\", title-ID: " + titleID); } /** - * FIXME if statement is useless at the moment - * else convert the cover to .png add copy it into the picture cache + * if one parameter is dosen't contain any value do not add the game + * else convert the cover to .png add copy it into the picture cache, * then add the rom to the local_roms database */ - if (romPath == "" || coverPath == "" || title == "" || titleID == "") { + System.out.println(romPath.length()); + if (romPath.length() == 0 || coverPath.length() == 0 || title.length() == 0 || titleID.length() == 0) { LOGGER.info("No parameter set!"); + // TODO show a message that explains the error } else { coverName = new File(coverPath).getName(); try { diff --git a/src/application/dbController.java b/src/application/dbController.java index e535a91..8dc647d 100644 --- a/src/application/dbController.java +++ b/src/application/dbController.java @@ -136,7 +136,8 @@ public class dbController { void addRom(String title, String coverPath, String romPath, String titleID, String productCode, String region, String lastPlayed, String timePlayed) throws SQLException{ Statement stmt = connection.createStatement(); - stmt.executeUpdate("insert into local_roms values ('"+title+"','"+coverPath+"','"+romPath+"','"+titleID+"','"+productCode+"','"+region+"','"+lastPlayed+"','"+timePlayed+"')"); + stmt.executeUpdate("insert into local_roms values ('"+title+"','"+coverPath+"','"+romPath+"','"+titleID+"'," + + "'"+productCode+"','"+region+"','"+lastPlayed+"','"+timePlayed+"')"); connection.commit(); stmt.close(); LOGGER.info("added \""+title+"\" to ROM database"); @@ -197,9 +198,9 @@ public class dbController { } try { - Statement stmt = connectionGames.createStatement(); - LOGGER.info("Getting all .rpx files in " + dir.getCanonicalPath()+" including those in subdirectories"); + Statement stmt = connectionGames.createStatement(); List files = (List) FileUtils.listFiles(dir, extensions, true); + LOGGER.info("Getting all .rpx files in " + dir.getCanonicalPath()+" including those in subdirectories"); for (File file : files) { if(System.getProperty("os.name").equals("Linux")){ appFile = new File(file.getParent()+"/app.xml"); @@ -266,6 +267,44 @@ public class dbController { return resizedImage; } + /** + * getting info for a game with titleID + * @param titleID Title-ID of the Game + * @return title, coverPath, romPath, titleID (in this order) + */ + String[] getGameInfo(String titleID){ + String[] gameInfo = new String[4]; + LOGGER.info("getting game info for titleID: "+titleID+" ..."); + try { + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery("SELECT * FROM local_roms where titleID = '"+titleID+"'"); + while (rs.next()) { + gameInfo[0] = rs.getString(1);// title + gameInfo[1] = rs.getString(2);// coverPath + gameInfo[2] = rs.getString(3);// romPath + gameInfo[3] = rs.getString(4);// titleID + } + stmt.close(); + rs.close(); + }catch (Exception e){ + LOGGER.error("error while getting game info", e); + } + return gameInfo; + } + + void setGameInfo(String title, String titleID, String romPath, String coverPath){ + LOGGER.info("setting game info for titleID: "+titleID+" ..."); + try { + Statement stmt = connection.createStatement(); + stmt.executeUpdate("UPDATE local_roms SET title = '" + title + "', coverPath = '" + coverPath + "'," + + " romPath = '" + romPath + "' WHERE titleID = '"+titleID+"';"); + connection.commit(); + stmt.close(); + }catch (Exception e){ + LOGGER.error("error while setting game info", e); + } + } + void setLastPlayed(String titleID){ try{ Statement stmt = connection.createStatement(); @@ -317,5 +356,5 @@ public class dbController { return timePlayed; } - + }