⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config.java

📁 java+eclipse做的TTPlayer
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package com.hadeslee.yoyoplayer.util;import com.hadeslee.yoyoplayer.lyric.*;import com.hadeslee.yoyoplayer.player.ui.PlayerUI;import com.hadeslee.yoyoplayer.playlist.PlayList;import com.hadeslee.yoyoplayer.setting.OptionDialog;import java.awt.Color;import java.awt.Component;import java.awt.Dimension;import java.awt.Font;import java.awt.Point;import java.awt.Rectangle;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;import java.util.ArrayList;import java.util.Arrays;import java.util.Date;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Locale;import java.util.Map;import java.util.ResourceBundle;import java.util.Set;import java.util.Vector;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.ImageIcon;import javax.swing.JDialog;import javax.swing.JFrame;/** * 一个保存所有可配的信息的类,把所有可 * 保存的信息放到一个对象里面,这样便于 * 保存和读取 * @author hadeslee */public class Config implements Serializable {    private static final long serialVersionUID = 20071127L;    private static final Logger log = Logger.getLogger(Config.class.getName());    public int voteOpenCount,voteOneHourCount;    /*******************************************************************/    /*************常量定义区*********************************************/    /*******************************************************************/    public static final String NAME = "YOYOPlayer";    public static final String EXTS = "snd,aifc,aif,wav,au,mp1,mp2,mp3,ogg,spx,flac,ape,mac";    public static final File HOME = new File(System.getProperty("user.home") + File.separator + ".YOYOPlayer");    public static final int POSBARMAX = 1000;//位置滚动条最大的数    public static final int VOLUMEMAX = 100;//音量最大    public static final int BALANCEMAX = 5;//左右平衡最大的值    /*********************ActionCommand定义区**************************/    public static final String PLAY = "play";    public static final String PAUSE = "pause";    public static final String STOP = "stop";    public static final String PREVIOUS = "previous";    public static final String NEXT = "next";    public static final String CLOSE = "close";    public static final String MINIMIZE = "minimize";    public static final String SETTING = "setting";    public static final String EQ_ON = "eq_on";    public static final String EQ_OFF = "eq_off";    public static final String LRC_ON = "lrc_on";    public static final String LRC_OFF = "lrc_off";    public static final String VOL_ON = "vol_on";    public static final String VOL_OFF = "vol_off";    public static final String PL_ON = "pl_on";    public static final String PL_OFF = "pl_off";    public static final String ABOUT = "about";    public static final String EQ_ENABLE = "eq_enable";    public static final String EQ_DISABLE = "eq_disable";    public static final String EQ_AUTO_ENABLE = "eq_auto_enable";    public static final String EQ_AUTO_DISABLE = "eq_auto_disable";    public static final String EQ_PRESET = "eq_preset";    /*******************检查更新策略常量定义区************************/    public static final String CHECK_DAY = "check.day";//每天检查    public static final String CHECK_WEEK = "check.week";//每周检查    public static final String CHECK_MONTH = "check.month";//每月检查    public static final String CHECK_NONE = "check.none";//不检查    /*******************读取文件标签策略常量定义区********************/    public static final String READ_WHEN_ADD = "read.when.add";//当添加时读取标签    public static final String READ_WHEN_DISPLAY = "read.when.display";//当显示时读取标签    public static final String READ_WHEN_PLAY = "read.when.play";//当播放时读取标签    /*******************歌词对齐常量定义区***************************/    public static final int LYRIC_LEFT_ALIGN = 1;//歌词左对齐    public static final int LYRIC_RIGHT_ALIGN = 2;//歌词右对齐    public static final int LYRIC_CENTER_ALIGN = 3;//歌词中间对齐    /*******************可视化区示波的消逝速度常量定义区**************/    public static final int DISAPPEAR_QUICK = 1;//消逝的速度快    public static final int DISAPPEAR_NORMAL = 2;//消逝的速度普通    public static final int DISAPPEAR_SLOW = 3;//消逝的速度慢    /*******************普通常量定义区*******************************/    public static final int REPEAT_ONE = 100;//单曲重复    public static final int REPEAT_ALL = 101;//整体重复    public static final String TITLETEXT = "YOYOPlayer";    public static final String[] protocols = {"http:", "file:", "ftp:", "https:", "ftps:", "jar:"};    public static final int ORDER_PLAY = 1;//表示顺序播放    public static final int RANDOM_PLAY = 0;//表示随机播放//    public static final String TAGINFO_POLICY_FILE = "file";//    public static final String TAGINFO_POLICY_ALL = "all";    public static final int APEv2_ID3v2_ID3v1 = 1;//读取的顺序,有四种组合    public static final int ID3v2_APEv2_ID3v1 = 2;    public static final int ID3v1_APEv2_ID3v2 = 3;    public static final int ID3v1_ID3v2_APEv2 = 4;    public static final int WRITEMODE_ID3v1 = 1;//写入的顺序,有六种组合,用位来组合    public static final int WRITEMODE_ID3v2 = 2;    public static final int WRITEMODE_APEv2 = 4;    public static final String LRC_WINDOW = "lrcWindow";    public static final String PL_WINDOW = "plWindow";    public static final String EQ_WINDOW = "eqWindow";    public static final String MAIN_WINDOW = "mainWindow";    public static final String UNKNOWN_WINDOW = "unknown";    public static final int SNAP = 15;//吸附的象素    public static final int MOVE = 1;    public static final int LEFT = 2;    public static final int RIGHT = 3;    public static final int TOP = 4;    public static final int BOTTOM = 5;    public static final int LEFT_TOP = 6;    public static final int LEFT_BOTTOM = 7;    public static final int RIGHT_TOP = 8;    public static final int RIGHT_BOTTOM = 9;    public static final int SHOWTIME_POSITIVE = 1;//以正数显示    public static final int SHOWTIME_NEGATIVE = -1;//以负数显示.    /*******************************************************************/    /*************普通变量定义区*****************************************/    /*******************************************************************/    private static ResourceBundle rb = ResourceBundle.getBundle("com/hadeslee/yoyoplayer/util/UIInfo");    private boolean showLrc = true;//是否显示歌词秀窗口    private boolean showPlayList = true;//是否显示播放列表    private boolean showEq = true;//是否显示调音台    private boolean repeatEnabled = true;//是否允许重复,允许了以后,有两种模式,1,单曲重复,2,全部重复    private boolean equalizerOn = true;//表示调音器是否生效.面板显不显示和这个没关系    private boolean equalizerAuto;//表示调音器是否自动设置    private boolean shadow = false;//是否要窗口渐入渐出    private boolean isSnapEqWindow = true,  isSnapLrcWindow = true,  isSnapPlWindow = true;//是否吸纳住了三个窗口    private boolean isLinux;//是否是LINUX,它很多东西不支持    private boolean useProxy;//是否使用代理服务器搜索歌词    private boolean mute;//是否静音    private String audioDevice;//混音器设备的名字    private String playListFileName;//播放列表的文件名,放在程序同目录下    private String currentFileOrUrl;//最后也就是当前正在播放的文件或者URL    private String lastDir;//最后所使用的目录//    private String tagInfoPolicy = TAGINFO_POLICY_ALL;//标签的读取策略,是只读文件还是都读。    private String encoding = "GBK";//读取和写入标签的编码    private String proxyHost,  proxyPort;//代理服务器的主机和端口号    private String proxyUserName,  proxyPwd;//代理服务器的用户名和密码    private String currentPlayListName;//当前选中的播放列表的名字,下次打开也选中它    private int repeatStrategy = REPEAT_ALL;//重复策略    private int gainValue = VOLUMEMAX;//表示音量的大小保存量    private int panValue = 0;//表示声道的保存量    private int playStrategy = ORDER_PLAY;//表示播放策略,是顺序还是随机    private int xLocation = 300,  yLocation = 100;//主窗口在屏幕上面的XY座标    private int bufferSize = 8;//缓冲大小    private int readTagOrder = APEv2_ID3v2_ID3v1;//读取标签的顺序,默认是ape,v2,v1    private int writeTagMode = WRITEMODE_ID3v1;//默认是使用ID3v1来写入    private int showTimeStyle = SHOWTIME_POSITIVE;//显示时间的方式    private int[] lastEqualizer;//最后调音器的配置,以便下次导入    private Point eqLocation,  lrcLocation,  plLocation;//三个窗口的位置    private Point disLrc,  disEq,  disPl;//三个面板和主面板的距离//    private File lyricDir = new File(System.getProperty("user.home"));//歌词的搜索目录,并不是写入的目录,写入还是固定在user.home里面    private Dimension lrcSize,  plSize;//歌词秀和播放列表的大小    private Vector<PlayList> playlists;//所有的播放列表    private Map<String, Set<String>> componentMap;//一个窗口关系的变量    private Date lastCheckUpdate=new Date();//最后一次检查更新的时候    /*******************************************************************/    /*****************不参与序列化的变量声明区****************************/    /*****************这些变量在使用前必须检查是否为空********************/    /*****************或者在初始化程序的时候,必须赋值给它*****************/    /*******************************************************************/    private transient JFrame topParent;//顶级窗口类是谁    private transient JDialog lrcWindow;//歌词电灯显示窗口    private transient JDialog plWindow;//播放列表的窗口    private transient JDialog eqWindow;//均衡器的窗口    private transient List mixers;//里面存的是所有的混音器,不用序列化    private transient OptionDialog optionDialog;//选项对话框    private transient PlayerUI player;//一个不序列化的播放器对象    /*******************************************************************/    /*****************常规设置要用到的变量********************************/    /*******************************************************************/    private boolean startAutoMinimize;//是否自动在启动的时候最小化    private boolean showTrayIcon = true;//是否显示系统栏图标    private boolean showPlayTip;//是否显示播放提示,在屏幕的右下角    private boolean showTitleInTaskBar = true;//是否在任务栏显示正在播放的歌曲    private transient boolean autoShutDown;//是否自动关机,不参与序列化    private transient Date shutDownTime;//自动关机的时间,不参与序列化    private String checkUpdateStrategy = CHECK_WEEK;//检查更新频率的策略    private boolean autoCloseDialogWhenSave;//在点击保存设置的时候,是否自动关闭对话框    private boolean miniHide;//最小化的时候是否隐藏主界面    /*******************************************************************/    /******************歌词搜索面板要用到的变量***************************/    /*******************************************************************/    private Vector<File> searchLyricDirs = new Vector<File>();//搜索歌词的目录    private boolean autoSearchLyricOnline = true;//播放音频文件时自动在线搜索歌词    private boolean searchWhenInfoFull;//是否当信息完整时才搜索    private boolean selectBestLyric = true;//自动选择最佳歌词    private boolean autoRelatingWithMediaFile = true;//下载后自动和歌曲文件相关联    private boolean autoOverWriteExistFile;//自动覆盖已存在的歌词文件    private boolean saveTheSameNameAsMediaFile;//保存与音频文件相同文件名的歌词    private File saveLyricDir = new File(HOME, "Lyrics");//保存歌词文件的目录    /*******************************************************************/    /******************播放设置面板要用到的变量***************************/    /*******************************************************************/    private boolean autoPlayWhenStart;//是否在程序启动的时候自动播放    private boolean maintainLastPlay;//是否继续最后一次的播放进度    private double lastRate;//最后一次的播放进度    private int sequencePlayInterval;//连续播放的时间间隔(单位:秒)    private boolean stopWhenError;//当出现错误的时候,是否停止播放    /*******************************************************************/    /******************播放列表设置面板要用到的变量***********************/    /*******************************************************************/    private boolean canDnD = true;//能否拖放    private boolean disableDelete;//是否禁用文件删除功能    private boolean savePlayListByAbsolutePath = true;//保存歌曲列表的时候,是否使用绝对路径名    private boolean ignoreBadFile;//加载列表的时候,是否忽略错误的文件    private boolean showTooltipOnPlayList = true;//在播放列表上面是否显示歌曲的提示信息    private String readTagInfoStrategy = READ_WHEN_DISPLAY;//读取文件标签的策略,默认是显示的时候读取标签    private Color playlistTitleColor = new Color(0, 128, 255);//标题的颜色    private Color playlistHiLightColor = new Color(0, 244, 245);//高亮的颜色    private Color playlistIndexColor = new Color(0, 128, 0);//序号的颜色    private Color playlistLengthColor = new Color(192, 128, 32);//长度的颜色    private Color playlistSelectedColor = Color.WHITE;//选中的颜色    private Color playlistSelectedBG = new Color(46, 96, 184);    private Color playlistBackground1 = new Color(32, 32, 32);//背景1的颜色    private Color playlistBackground2 = new Color(0, 0, 0);//背景2的颜色    private Font playlistFont = new Font("Dialog", Font.PLAIN, 12);//播放列表的字体    /*******************************************************************/    /******************歌词秀设置面板要用到的变量*************************/    /*******************************************************************/    private int lpState = LyricPanel.V;//表示歌词显示面板的状态,是横向还是纵向    private int lyricAlignMode = LYRIC_CENTER_ALIGN;//歌词对齐模式,是左对齐还是右对齐,还是中间对齐    private int H_SPACE = 10;//表示左右两句之间的距离    private int V_SPACE = 0;//表示上下两句之间的距离    private boolean lyricShadow = true;//是否歌词淡入淡出    private boolean karaoke = true;//是否卡拉OK的方式来显示歌词    private boolean transparency;//是否背景颜色透明    private boolean showLrcBorder = true;//在透明的时候是否显示歌词秀的边框,只有在透明的时候有效,不透明就不理会了    private Color lyricHilight = new Color(0, 244, 245);//歌词高亮颜色    private Color lyricForeground = new Color(100, 100, 100);//歌词前景颜色    private Color lyricBackground = new Color(6, 6, 6);//歌词背景颜色    private Font lyricFont = new Font("Dialog", Font.PLAIN, 14);    private boolean autoLoadLyric = true;//播放时是否自动加载歌词    private boolean cutBlankChars;//是否截掉空白字符    private boolean hideWhenNoLyric;//是否在没有歌词的时候自动隐藏    private boolean lyricTopShow;//是否歌词最前端显示    private boolean autoResize = true;//表示是否根据歌词自适歌词秀的宽度    private boolean onlyResizeWhenVerticalMode = true;//仅在垂直模式下能自动调整宽度    private boolean mouseDragToSeekEnabled = true;//是否起用鼠标拖动歌词定位歌曲    private boolean antiAliasing;//是否抗据齿显示字体     private boolean mouseScrollAjustTime = true;//是否可以用鼠标滚动来调整歌词的整体时间    private int refreshInterval = 80;//表示线程休息的时间间隔(单位:毫秒)    /*******************************************************************/    /******************可视化效果设置面板要用到的变量*********************/    /*******************************************************************/    private int audioChartDisplayMode = AudioChart.DISPLAY_MODE_SPECTRUM_ANALYSER;//显示模式,或者是否显示    private int audioChartfps = 25;//视觉效果的FPS    private Color audioChartTopColor = Color.RED;//上部分的颜色    private Color audioChartCenterColor = Color.YELLOW;//中间部分的颜色    private Color audioChartbottomColor = new Color(0, 255, 255);//下面部份的颜色    private Color audioChartPeakColor = Color.WHITE;//顶端的小小的颜色    private Color audioChartlineColor = new Color(0, 255, 255);//波形的时候,线条的颜色    private int audioChartDisappearSpeed = DISAPPEAR_NORMAL;//消逝的速度    private int audioChartBarCount = 20;//条柱个数    private static Config config = new Config();//自己的一个单例的对象     static {        load();    }    public boolean isMiniHide() {        return miniHide;    }    public void setMiniHide(boolean miniHide) {        this.miniHide = miniHide;    }    public Date getLastCheckUpdate() {        return lastCheckUpdate;    }    public void setLastCheckUpdate(Date lastCheckUpdate) {        this.lastCheckUpdate = lastCheckUpdate;    }    public boolean isAutoCloseDialogWhenSave() {        return autoCloseDialogWhenSave;    }    public void setAutoCloseDialogWhenSave(boolean autoCloseDialogWhenSave) {        this.autoCloseDialogWhenSave = autoCloseDialogWhenSave;    }    public int getPanValue() {        return panValue;    }    public void setPanValue(int panValue) {        this.panValue = panValue;    }    public int getAudioChartBarCount() {        return audioChartBarCount;    }    public void setAudioChartBarCount(int audioChartBarCount) {        this.audioChartBarCount = audioChartBarCount;    }    public synchronized OptionDialog getOptionDialog() {        if (optionDialog == null) {            optionDialog = new OptionDialog(config.getTopParent(), true);            optionDialog.setTitle(Config.getResource("Config.settingOption"));            optionDialog.setLocationRelativeTo(null);        }        return optionDialog;    }    public PlayerUI getPlayer() {        return player;    }    public void setPlayer(PlayerUI player) {        this.player = player;    }    public Color getPlaylistSelectedBG() {        return playlistSelectedBG;    }    public void setPlaylistSelectedBG(Color playlistSelectedBG) {        this.playlistSelectedBG = playlistSelectedBG;    }    public Color getAudioChartCenterColor() {        return audioChartCenterColor;    }    public void setAudioChartCenterColor(Color audioChartCenterColor) {        this.audioChartCenterColor = audioChartCenterColor;    }    public int getAudioChartDisappearSpeed() {        return audioChartDisappearSpeed;    }    public void setAudioChartDisappearSpeed(int audioChartDisappearSpeed) {        this.audioChartDisappearSpeed = audioChartDisappearSpeed;    }    public Color getAudioChartTopColor() {        return audioChartTopColor;    }    public void setAudioChartTopColor(Color audioChartTopColor) {        this.audioChartTopColor = audioChartTopColor;    }    public Color getAudioChartbottomColor() {        return audioChartbottomColor;    }    public void setAudioChartbottomColor(Color audioChartbottomColor) {        this.audioChartbottomColor = audioChartbottomColor;    }    public Color getAudioChartPeakColor() {        return audioChartPeakColor;    }    public void setAudioChartPeakColor(Color audioChartcolor) {        this.audioChartPeakColor = audioChartcolor;    }    public Color getAudioChartlineColor() {        return audioChartlineColor;    }    public void setAudioChartlineColor(Color audioChartlineColor) {        this.audioChartlineColor = audioChartlineColor;    }    public boolean isAutoLoadLyric() {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -