package com.ztspeech.simutalk2.data;
import java.util.Date;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.drawable.BitmapDrawable;
import cn.ac.ia.directtrans.json.Json;
import cn.ac.ia.directtrans.json.JsonGetMessage;
import cn.ac.ia.directtrans.json.JsonUserConfig;
import cn.ac.ia.directtrans.json.UserState;
public class UserInfo extends DBTable {
public static final String S2T_CH2EN = "CH2EN";
public static final String S2T_EN2CH = "EN2CH";
public static final String S2T_LETTER = "LETTER";
public static final String appId = "drt";
public UserInfo() {
tableName = " user_info ";
}
private static UserInfo mInstanse = null;
public String getUserName() {
synchronized (this) {
return state.name;
}
}
public void setUserName(String userName) {
synchronized (this) {
state.name = userName;
}
UserInfoList.getInstanse().update(state);
}
/**
* ���浱ǰӦ�ó���汾�� 2012-11-20 kjzhang
*/
public static String version = "";
public boolean autoTTS = true;
public String s2sType = S2T_CH2EN;
private String hostVersion = "";
private JsonUserConfig jsonData;
public BitmapDrawable photo;
private boolean isLoginState = false;
public String param0 = "";
public static UserState state = new UserState();
public boolean isChange = false;
public long loginTime = 0;
public static UserInfo getInstanse() {
if (mInstanse == null) {
mInstanse = new UserInfo();
state.time = new Date();
}
return mInstanse;
}
public boolean isLogin() {
return isLoginState;
}
public void setBackRun(boolean parseBoolean) {
jsonData.bRun = parseBoolean;
save();
}
public void setLClickRecord(boolean parseBoolean){
jsonData.lClickRecord = parseBoolean;
save();
}
/**
* �Ƿ�¼��
* @return
*/
public boolean isLClickRecord(){
return jsonData.lClickRecord;
}
/**
* �����Ƿ��̨����
*
* @return
*/
public boolean isBackRun() {
return jsonData.bRun;
}
/**
* ��������ʱ�Ƿ�ֱ�Ӵ������
*
* @return
*/
public boolean isOpenTransView() {
return (jsonData.openTrans == 1);
}
/**
* ���ó�������ʱֱ�Ӵ������
*
* @param open
*/
public void setOpenTransView(boolean open) {
jsonData.openTrans = open ? 1 : 0;
save();
}
public void setLogin(boolean b) {
isLoginState = b;
isChange = true;
}
public void setChange(boolean change) {
isChange = change;
}
/**
* �����ϢID
*
* @return
*/
public long getMaxMsgId() {
return jsonData.maxMsg;
}
/**
* ���������ϢID
*/
public void setMaxMsgId(long maxId) {
jsonData.maxMsg = maxId;
save();
}
public float getTtsSpeed() {
return jsonData.TTSSpeed;
}
public void setTtsSpeed(float v) {
jsonData.TTSSpeed = v;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS " + tableName + "(dataid integer primary key autoincrement, "
+ "name varchar(50), autoplay integer," + "language varchar(4), host_version varchar(1024),"
+ "update_flag varchar(1024), param0 varchar(256), " + "param11 varchar(256),"
+ "param1 varchar(1024), param2 varchar(1024))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// db.execSQL("DROP TABLE IF EXISTS "+ tableName);
// onCreate(db);
}
public void load() {
SQLiteDatabase reader = this.getReadableDatabase();
Cursor cursor = reader.rawQuery("select name,autoplay,language,host_version,param1 from " + tableName, null);
if (cursor != null) {
if (cursor.moveToNext()) {
int i = 0;
state.name = cursor.getString(i++);
autoTTS = true;
if (cursor.getInt(i++) == 0) {
autoTTS = false;
}
if (UserInfo.S2T_EN2CH.equals(cursor.getString(i++))) {
s2sType = UserInfo.S2T_EN2CH;
}
hostVersion = cursor.getString(i++);
String json = cursor.getString(i++);
jsonData = null;
if (json != null) {
if (json.length() > 5) {
jsonData = Json.fromJson(json, JsonUserConfig.class);
state.id = jsonData.id;
state.photo = jsonData.photo;
}
}
}
cursor.close();
}
if (jsonData == null) {
jsonData = new JsonUserConfig();
jsonData.maxMsg = JsonGetMessage.MIN_ID;
}
}
public boolean isLocaleTTS() {
return jsonData.localeTTS;
}
public float getFontSize() {
float size = 20;
switch (jsonData.fontSize - 1) {
case 0:
size = 15;
break;
case 1:
size = 18;
break;
case 2:
size = 25;
break;
case 3:
size = 30;
break;
}
return size;
}
public boolean getTtsGender() {
return jsonData.ttsGender;
}
public void setTtsGender(boolean gender) {
jsonData.ttsGender = gender;
}
public int getFontIndex() {
return jsonData.fontSize;
}
public void setFontIndex(int fontSize) {
jsonData.fontSize = fontSize;
}
public void setPhoto(String id) {
state.photo = id;
jsonData.photo = id;
UserInfoList.getInstanse().update(state);
}
public void setLocaleTTS(boolean localeTTS) {
jsonData.localeTTS = localeTTS;
}
public boolean isOnlyRecoginze() {
return jsonData.onlyRecoginze;
}
public void setOnlyRecoginze(boolean onlyRecoginze) {
jsonData.onlyRecoginze = onlyRecoginze;
}
public boolean isTranslatetalk(){
return jsonData.translatetalk;
}
public void setTranslatetalk(boolean translatetalk){
jsonData.translatetalk = translatetalk;
}
public void save() {
SQLiteDatabase writer = getWritableDatabase();
writer.delete(tableName, "1=1", null);
ContentValues cv = new ContentValues();
cv.put("name", state.name);
cv.put("autoplay", autoTTS ? 1 : 0);
cv.put("language", s2sType);
cv.put("host_version", hostVersion);
cv.put("param1", jsonData.toJson());
writer.insert(tableName, null, cv);
}
public String getTimeString1(Date date) {
Date loginTime = state.time;
String ret = "";
// year
int temp = loginTime.getYear() - date.getYear();
switch (temp) {
case 0:
break;
case 1:
ret = "ȥ�� ";
break;
case 2:
ret = "ǰ�� ";
break;
default:
ret = String.format("%02d-", date.getYear());
}
// mouth
if (ret.length() == 0) {
temp = loginTime.getMonth() - date.getMonth();
switch (temp) {
case 0:
break;
case 1:
ret = "�ϸ��� ";
break;
default:
ret = String.format("%02d-", date.getMonth() + 1);
}
} else {
ret += String.format("%02d-", date.getMonth() + 1);
}
// day
if (ret.length() == 0) {
temp = loginTime.getDay() - date.getDay();
switch (temp) {
case 0:
break;
case 1:
ret = "���� ";
break;
case 2:
ret = "ǰ�� ";
break;
default:
ret = String.format("%02d-%02d ", date.getMonth() + 1, date.getDay());
}
} else {
ret += String.format("%02d ", date.getDay());
}
ret += String.format("%02d:%02d:%02d", date.getHours(), date.getMinutes(), date.getSeconds());
return ret;
}
public static String getTimeString(long time) {
return getTimeString(new Date(time));
}
public static String getTimeString(Date date) {
if (date == null) {
return "";
}
// Date date = new Date( new Timestamp(time).getTime());
// Date date = new Date(time);
Date loginTime = state.time;
// String sTime = TimeString.getTimeString("yyyyMMddHHmmss", date);
String ret = "";
// year
int temp = loginTime.getYear() - date.getYear();
switch (temp) {
case 0:
break;
case 1:
ret = "ȥ�� ";
break;
case 2:
ret = "ǰ�� ";
break;
default:
ret = String.format("%d��", date.getYear());
}
// mouth
if (ret.length() == 0) {
temp = loginTime.getMonth() - date.getMonth();
switch (temp) {
case 0:
break;
default:
ret = String.format("%d��", date.getMonth() + 1);
}
} else {
ret += String.format("%d��", date.getMonth() + 1);
}
// day
if (ret.length() == 0) {
temp = loginTime.getDate() - date.getDate();
switch (temp) {
case 0:
ret = "���� ";
break;
case 1:
ret = "���� ";
break;
case 2:
ret = "ǰ�� ";
break;
default:
ret = String.format("%d��%d�� ", date.getMonth() + 1, date.getDate());
}
} else {
ret += String.format("%d�� ", date.getDate());
}
ret += String.format("%02d:%02d:%02d", date.getHours(), date.getMinutes(), date.getSeconds());
return ret;
}
public void setInfo(UserState state2) {
isChange = true;
state.setInfo(state2);
jsonData.id = state.id;
loginTime = state.time.getTime();
UserInfoList.getInstanse().update(state);
save();
}
public static String getSbxLen(int vLen) {
return String.format("%d��", vLen / 3500);
}
public void setMaxIdToMsg() {
if (jsonData.maxMsg == JsonGetMessage.MIN_ID) {
jsonData.maxMsg = JsonGetMessage.LOST_MAX_ID;
}
// jsonData.maxMsg =JsonGetMessage.MIN_ID ; // debug
}
}