2019-01-22 19:21:38 +01:00
/ * *
* cemu_UI
*
2019-05-17 00:22:51 +02:00
* Copyright 2017 - 2019 < @Seil0 >
2019-01-22 19:21:38 +01:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston ,
* MA 02110 - 1301 , USA .
* /
2019-05-17 00:22:51 +02:00
2019-01-22 19:21:38 +01:00
package com.cemu_UI.controller ;
import java.io.File ;
import java.io.FileInputStream ;
import java.io.FileOutputStream ;
import java.io.IOException ;
import java.io.InputStream ;
import java.io.OutputStream ;
2019-04-09 00:42:39 +02:00
import java.util.Locale ;
2019-01-22 19:21:38 +01:00
import java.util.Properties ;
2019-04-09 00:42:39 +02:00
import java.util.ResourceBundle ;
2019-01-22 19:21:38 +01:00
import org.apache.logging.log4j.LogManager ;
import org.apache.logging.log4j.Logger ;
import com.cemu_UI.datatypes.GlobalDataTypes.CloudService ;
public class XMLController {
private static final String userHome = System . getProperty ( " user.home " ) ;
private static final String userName = System . getProperty ( " user.name " ) ;
private static final String osName = System . getProperty ( " os.name " ) ;
private static final String osArch = System . getProperty ( " os.arch " ) ;
private static final String osVers = System . getProperty ( " os.version " ) ;
private static final String javaVers = System . getProperty ( " java.version " ) ;
private static final String javaVend = System . getProperty ( " java.vendor " ) ;
private static final String sysLocal = System . getProperty ( " user.language " ) + " _ " + System . getProperty ( " user.country " ) ;
private static String dirCemuUIPath ;
private static File dirCemuUI ;
private static File configFile ;
private static File gamesDBFile ;
private static File reference_gamesFile ;
private static File pictureCache ;
// user settings
private static String color = " 00a8cc " ;
private static String usrLocal = sysLocal ;
private static boolean autoUpdate = false ;
private static boolean useBeta = false ;
private static boolean fullscreen = false ;
private static boolean cloudSync = false ;
2019-04-09 00:42:39 +02:00
private static ResourceBundle localBundle = ResourceBundle . getBundle ( " locals.cemu_UI-Local " , Locale . US ) ;
2019-01-22 19:21:38 +01:00
private static String cemuPath ;
private static String romDirectoryPath ;
private static String folderID ;
private static CloudService cloudService ;
private static long lastLocalSync ;
private static double windowWidth ;
private static double windowHeight ;
private static final Logger LOGGER = LogManager . getLogger ( XMLController . class . getName ( ) ) ;
private Properties props = new Properties ( ) ;
public XMLController ( ) {
if ( osName . contains ( " Windows " ) ) {
dirCemuUIPath = userHome + " /Documents/cemu_UI " ;
} else {
dirCemuUIPath = userHome + " /cemu_UI " ;
}
// set the concrete files
dirCemuUI = new File ( dirCemuUIPath ) ;
configFile = new File ( dirCemuUI + " /config.xml " ) ;
gamesDBFile = new File ( dirCemuUI + " /games.db " ) ;
reference_gamesFile = new File ( dirCemuUI + " /reference_games.db " ) ;
pictureCache = new File ( dirCemuUI + " /picture_cache " ) ;
}
/ * *
* save settings to the config . xml file
* /
public void saveSettings ( ) {
LOGGER . info ( " saving Settings ... " ) ;
try {
props . setProperty ( " cemuPath " , getCemuPath ( ) ) ;
props . setProperty ( " romPath " , getRomDirectoryPath ( ) ) ;
props . setProperty ( " color " , getColor ( ) ) ;
props . setProperty ( " language " , getUsrLocal ( ) ) ;
props . setProperty ( " fullscreen " , String . valueOf ( isFullscreen ( ) ) ) ;
props . setProperty ( " cloudSync " , String . valueOf ( isCloudSync ( ) ) ) ;
props . setProperty ( " autoUpdate " , String . valueOf ( isAutoUpdate ( ) ) ) ;
props . setProperty ( " useBeta " , String . valueOf ( isUseBeta ( ) ) ) ;
if ( getCloudService ( ) = = null ) {
props . setProperty ( " cloudService " , " " ) ;
2019-05-16 15:09:01 +02:00
props . setProperty ( " folderID " , " " ) ;
props . setProperty ( " lastLocalSync " , " " ) ;
2019-01-22 19:21:38 +01:00
} else {
props . setProperty ( " cloudService " , getCloudService ( ) . toString ( ) ) ;
2019-05-16 15:09:01 +02:00
props . setProperty ( " folderID " , getFolderID ( ) ) ;
props . setProperty ( " lastLocalSync " , Long . toString ( getLastLocalSync ( ) ) ) ;
2019-01-22 19:21:38 +01:00
}
2019-05-16 15:09:01 +02:00
2019-01-22 19:21:38 +01:00
props . setProperty ( " windowWidth " , Double . toString ( getWindowWidth ( ) ) ) ;
props . setProperty ( " windowHeight " , Double . toString ( getWindowHeight ( ) ) ) ;
OutputStream outputStream = new FileOutputStream ( XMLController . getConfigFile ( ) ) ; // new output-stream
props . storeToXML ( outputStream , " cemu_UI settings " ) ; // write new .xml
outputStream . close ( ) ;
LOGGER . info ( " saving Settings done! " ) ;
} catch ( IOException e ) {
LOGGER . error ( " an error occured " , e ) ;
}
}
/ * *
* loading saved settings from the config . xml file
* if a value is not present , default is used instead
* /
public void loadSettings ( ) {
LOGGER . info ( " loading settings ... " ) ;
try {
InputStream inputStream = new FileInputStream ( XMLController . getConfigFile ( ) ) ;
props . loadFromXML ( inputStream ) ; // new input-stream from .xml
try {
setCemuPath ( props . getProperty ( " cemuPath " ) ) ;
} catch ( Exception e ) {
LOGGER . error ( " cloud not load cemuPath " , e ) ;
setCemuPath ( " " ) ;
}
try {
setRomDirectoryPath ( props . getProperty ( " romPath " ) ) ;
} catch ( Exception e ) {
LOGGER . error ( " could not load romPath " , e ) ;
setRomDirectoryPath ( " " ) ;
}
try {
setColor ( props . getProperty ( " color " ) ) ;
} catch ( Exception e ) {
LOGGER . error ( " could not load color value, setting default instead " , e ) ;
setColor ( " 00a8cc " ) ;
}
if ( props . getProperty ( " language " ) = = null ) {
LOGGER . error ( " cloud not load language, setting default instead " ) ;
setUsrLocal ( " en_US " ) ;
} else {
setUsrLocal ( props . getProperty ( " language " ) ) ;
}
try {
setFullscreen ( Boolean . parseBoolean ( props . getProperty ( " fullscreen " ) ) ) ;
} catch ( Exception e ) {
LOGGER . error ( " could not load fullscreen, setting default instead " , e ) ;
setFullscreen ( false ) ;
}
try {
setCloudSync ( Boolean . parseBoolean ( props . getProperty ( " cloudSync " ) ) ) ;
} catch ( Exception e ) {
LOGGER . error ( " could not load cloudSync, setting default instead " , e ) ;
setCloudSync ( false ) ;
}
try {
setAutoUpdate ( Boolean . parseBoolean ( props . getProperty ( " autoUpdate " ) ) ) ;
} catch ( Exception e ) {
LOGGER . error ( " cloud not load autoUpdate " , e ) ;
setAutoUpdate ( false ) ;
}
try {
setUseBeta ( Boolean . parseBoolean ( props . getProperty ( " useBeta " ) ) ) ;
} catch ( Exception e ) {
LOGGER . error ( " cloud not load autoUpdate " , e ) ;
setUseBeta ( false ) ;
}
try {
switch ( props . getProperty ( " cloudService " ) ) {
case " GoogleDrive " :
setCloudService ( CloudService . GoogleDrive ) ;
break ;
case " Dropbox " :
setCloudService ( CloudService . Dropbox ) ;
break ;
default :
break ;
}
} catch ( Exception e ) {
LOGGER . error ( " could not load cloudSync " , e ) ;
setCloudService ( null ) ;
}
try {
setFolderID ( props . getProperty ( " folderID " ) ) ;
} catch ( Exception e ) {
LOGGER . error ( " could not load folderID, disable cloud sync. Please contact an developer " , e ) ;
setCloudSync ( false ) ;
}
try {
setLastLocalSync ( Long . parseLong ( props . getProperty ( " lastLocalSync " ) ) ) ;
} catch ( Exception e ) {
LOGGER . error ( " could not load lastSuccessSync, setting default instead " , e ) ;
setLastLocalSync ( 0 ) ;
}
try {
setWindowWidth ( Double . parseDouble ( props . getProperty ( " windowWidth " ) ) ) ;
} catch ( Exception e ) {
LOGGER . error ( " could not load windowWidth, setting default instead " , e ) ;
setWindowWidth ( 904 ) ;
}
try {
setWindowHeight ( Double . parseDouble ( props . getProperty ( " windowHeight " ) ) ) ;
} catch ( Exception e ) {
LOGGER . error ( " could not load windowHeight, setting default instead " , e ) ;
setWindowHeight ( 600 ) ;
}
inputStream . close ( ) ;
LOGGER . info ( " loading settings done! " ) ;
} catch ( IOException e ) {
LOGGER . error ( " an error occured " , e ) ;
}
}
// getters for application variables
public static String getUserHome ( ) {
return userHome ;
}
public static String getUserName ( ) {
return userName ;
}
public static String getOsName ( ) {
return osName ;
}
public static String getOsArch ( ) {
return osArch ;
}
public static String getOsVers ( ) {
return osVers ;
}
public static String getJavaVers ( ) {
return javaVers ;
}
public static String getJavaVend ( ) {
return javaVend ;
}
public static String getSysLocal ( ) {
return sysLocal ;
}
public static String getDirCemuUIPath ( ) {
return dirCemuUIPath ;
}
public static File getDirCemuUI ( ) {
return dirCemuUI ;
}
public static File getConfigFile ( ) {
return configFile ;
}
public static File getGamesDBFile ( ) {
return gamesDBFile ;
}
public static File getRference_gamesFile ( ) {
return reference_gamesFile ;
}
public static File getPictureCache ( ) {
return pictureCache ;
}
// getters & setters for user settings
public static String getColor ( ) {
return color ;
}
public static void setColor ( String color ) {
XMLController . color = color ;
}
public static String getUsrLocal ( ) {
return usrLocal ;
}
public static void setUsrLocal ( String usrLocal ) {
XMLController . usrLocal = usrLocal ;
}
public static boolean isAutoUpdate ( ) {
return autoUpdate ;
}
public static void setAutoUpdate ( boolean autoUpdate ) {
XMLController . autoUpdate = autoUpdate ;
}
public static boolean isUseBeta ( ) {
return useBeta ;
}
public static void setUseBeta ( boolean useBeta ) {
XMLController . useBeta = useBeta ;
}
public static boolean isFullscreen ( ) {
return fullscreen ;
}
public static void setFullscreen ( boolean fullscreen ) {
XMLController . fullscreen = fullscreen ;
}
public static boolean isCloudSync ( ) {
return cloudSync ;
}
public static void setCloudSync ( boolean cloudSync ) {
XMLController . cloudSync = cloudSync ;
}
2019-04-09 00:42:39 +02:00
public static ResourceBundle getLocalBundle ( ) {
return localBundle ;
}
public static void setLocalBundle ( ResourceBundle localBundle ) {
XMLController . localBundle = localBundle ;
}
2019-01-22 19:21:38 +01:00
public static String getCemuPath ( ) {
return cemuPath ;
}
public static void setCemuPath ( String cemuPath ) {
XMLController . cemuPath = cemuPath ;
}
public static String getRomDirectoryPath ( ) {
return romDirectoryPath ;
}
public static void setRomDirectoryPath ( String romDirectoryPath ) {
XMLController . romDirectoryPath = romDirectoryPath ;
}
public static String getFolderID ( ) {
return folderID ;
}
public static void setFolderID ( String folderID ) {
XMLController . folderID = folderID ;
}
public static CloudService getCloudService ( ) {
return cloudService ;
}
public static void setCloudService ( CloudService cloudService ) {
XMLController . cloudService = cloudService ;
}
public static long getLastLocalSync ( ) {
return lastLocalSync ;
}
public static void setLastLocalSync ( long lastLocalSync ) {
XMLController . lastLocalSync = lastLocalSync ;
}
public static double getWindowWidth ( ) {
return windowWidth ;
}
public static void setWindowWidth ( double windowWidth ) {
XMLController . windowWidth = windowWidth ;
}
public static double getWindowHeight ( ) {
return windowHeight ;
}
public static void setWindowHeight ( double windowHeight ) {
XMLController . windowHeight = windowHeight ;
}
}