Commit 5936892c authored by fallenstardust's avatar fallenstardust

litepal依赖

parent 4632924a
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="local" />
<version value="2" />
<list>
<!--课表-->
<mapping class="cn.garymb.ygomobile.ui.mycard.bean.McUser" />
</list>
</litepal>
\ No newline at end of file
......@@ -147,4 +147,6 @@ dependencies {
implementation 'com.ashokvarma.android:bottom-navigation-bar:2.2.0'
//圆形头像
implementation 'de.hdodenhof:circleimageview:2.2.0'
//litepal
implementation 'org.litepal.android:java:3.0.0'
}
......@@ -17,6 +17,8 @@ import com.tencent.smtt.sdk.QbSdk;
import com.yuyh.library.imgsel.ISNav;
import com.yuyh.library.imgsel.common.ImageLoader;
import org.litepal.LitePal;
import java.util.HashMap;
import cn.garymb.ygomobile.lite.BuildConfig;
......@@ -33,6 +35,7 @@ public class App extends GameApplication {
super.onCreate();
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
AppsSettings.init(this);
LitePal.initialize(getApplicationContext());
//初始化异常工具类
CrashHandler crashHandler = CrashHandler.getInstance();
crashHandler.init(getApplicationContext());
......
......@@ -34,6 +34,7 @@ import cn.garymb.ygomobile.bean.ServerList;
import cn.garymb.ygomobile.lite.BuildConfig;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.home.ServerListManager;
import cn.garymb.ygomobile.ui.mycard.MycardFragment;
import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.ui.settings.SettingsActivity;
import cn.garymb.ygomobile.ui.widget.WebViewPlus;
......@@ -73,7 +74,7 @@ public class WebActivity extends BaseActivity {
break;
case UnzipUtils.ZIP_UNZIP_OK:
if (!AppsSettings.get().isReadExpansions()) {
Intent startSetting = new Intent(getContext(), SettingsActivity.class);
Intent startSetting = new Intent(getContext(), MycardFragment.class);
startActivity(startSetting);
Toast.makeText(getContext(), R.string.ypk_go_setting, Toast.LENGTH_LONG).show();
} else {
......
package cn.garymb.ygomobile.ui.mycard.base;
/**
* Create By feihua On 2021/10/26
*/
public interface OnJoinChatListener {
void onChatLogin(String exception);
void onChatLoginLoading();
void onJoinRoomLoading();
void onChatUserNull();
boolean isListenerEffective();
}
package cn.garymb.ygomobile.ui.mycard.base;
import cn.garymb.ygomobile.ui.mycard.bean.McUser;
/**
* Create By feihua On 2021/10/21
*/
public interface OnMcUserListener {
void onLogin(McUser user, String exception);
void onLogout();
//是否有效
boolean isListenerEffective();
}
package cn.garymb.ygomobile.ui.mycard.bean;
import org.litepal.crud.LitePalSupport;
/**
* Create By feihua On 2021/10/26
*/
public class McUser extends LitePalSupport {
private int id;
private int external_id;
private String username;
private String name;
private String email;
private String avatar_url;
private boolean admin;
private boolean moderator;
private boolean login;
public McUser() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getJID() {
return username + "@mycard.moe";
}
public String getPassword() {
return String.valueOf(external_id);
}
public String getConference() {
return "ygopro_china_north@conference.mycard.moe";
}
public int getExternal_id() {
return external_id;
}
public void setExternal_id(int external_id) {
this.external_id = external_id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAvatar_url() {
return avatar_url;
}
public void setAvatar_url(String avatar_url) {
this.avatar_url = avatar_url;
}
public boolean isAdmin() {
return admin;
}
public void setAdmin(boolean admin) {
this.admin = admin;
}
public boolean isModerator() {
return moderator;
}
public void setModerator(boolean moderator) {
this.moderator = moderator;
}
public boolean isLogin() {
return login;
}
public void setLogin(boolean login) {
this.login = login;
}
}
\ No newline at end of file
......@@ -4,16 +4,29 @@ import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.greenrobot.eventbus.EventBus;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import cn.garymb.ygomobile.base.BaseFragemnt;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.utils.McUserManagement;
public class PersonalFragment extends BaseFragemnt implements View.OnClickListener {
private RelativeLayout rl_user;
private TextView tv_name;
private ImageView iv_avatar;
private McUserManagement userManagement;
private RecyclerView rv_list;
//private SettingRecyclerViewAdapter settingAdpter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
......@@ -23,11 +36,41 @@ public class PersonalFragment extends BaseFragemnt implements View.OnClickListen
layoutView = inflater.inflate(R.layout.main_horizontal_fragment, container, false);
else
layoutView = inflater.inflate(R.layout.fragment_personal, container, false);
//initView(layoutView);
initView(layoutView);
//event
return layoutView;
}
public void initView(View layoutView) {
//登录萌卡
rl_user = layoutView.findViewById(R.id.rl_user);
tv_name = layoutView.findViewById(R.id.tv_name);
iv_avatar = layoutView.findViewById(R.id.iv_avatar);
userManagement = McUserManagement.getInstance();
rl_user.setOnClickListener(v1 -> {
if (userManagement.isLogin()) {
DialogPlus dialog = new DialogPlus(getContext());
dialog.setMessage(R.string.logout_mycard);
dialog.setLeftButtonText(R.string.cancel);
dialog.setLeftButtonListener((dlg, i) -> {
dialog.dismiss();
});
dialog.setRightButtonText(R.string.quit);
dialog.setRightButtonListener((dlg, i) -> {
userManagement.logout();
Toast.makeText(getContext(), R.string.done, Toast.LENGTH_SHORT).show();
dialog.dismiss();
});
} else {
//((HomeActivity) getActivity()).selectMycard();
}
});
//设置列表
rv_list = layoutView.findViewById(R.id.rv_list);
rv_list.setLayoutManager(new LinearLayoutManager(getActivity()));
}
@Override
public void onClick(View view) {
......
package cn.garymb.ygomobile.utils;
import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;
import android.util.Log;
import org.litepal.LitePal;
import java.util.ArrayList;
import java.util.List;
import cn.garymb.ygomobile.App;
import cn.garymb.ygomobile.ui.mycard.base.OnMcUserListener;
import cn.garymb.ygomobile.ui.mycard.bean.McUser;
import cn.garymb.ygomobile.ui.mycard.mcchat.management.UserManagement;
/**
* Create By feihua On 2021/10/21
*/
public class McUserManagement {
private static final McUserManagement ourInstance = new McUserManagement();
private McUser user;
private List<OnMcUserListener> userListenerList;
private McUserManagement() {
userListenerList = new ArrayList<>();
user = LitePal.findFirst(McUser.class);
Log.e("McUserManagement", "初始化 " + (user!=null));
}
public static McUserManagement getInstance() {
return ourInstance;
}
public void addListener(OnMcUserListener onMcUserListener) {
userListenerList.add(onMcUserListener);
}
public void removeListener(OnMcUserListener onMcUserListener) {
userListenerList.remove(onMcUserListener);
}
public void login(McUser mUser, boolean isUpdate) {
if (this.user != null)
Log.e("McUserManagement", "登录1 " + this.user.getExternal_id());
Log.e("McUserManagement", isUpdate + "登录 " + mUser.getExternal_id());
if (isUpdate && this.user != null) {
if (!TextUtils.isEmpty(mUser.getName()))
this.user.setName(mUser.getName());
if (mUser.getExternal_id() > 0) {
Log.e("McUserManagement", "重设" + mUser.getExternal_id());
this.user.setExternal_id(mUser.getExternal_id());
}
if (!TextUtils.isEmpty(mUser.getUsername()))
this.user.setUsername(mUser.getUsername());
if (!TextUtils.isEmpty(mUser.getEmail()))
this.user.setEmail(mUser.getEmail());
if (!TextUtils.isEmpty(mUser.getAvatar_url()))
this.user.setAvatar_url(mUser.getAvatar_url());
Log.e("McUserManagement","1保存前"+user.getId());
boolean isSave=this.user.save();
Log.e("McUserManagement", (LitePal.findFirst(McUser.class)!=null)+"1保存情况 " + isSave);
Log.e("McUserManagement","1保存后"+user.getId());
} else {
this.user = mUser;
LitePal.deleteAll(McUser.class);
Log.e("McUserManagement","保存前"+user.getId());
boolean isSave=this.user.save();
Log.e("McUserManagement", (LitePal.findFirst(McUser.class)!=null)+"保存情况 " + isSave);
Log.e("McUserManagement","保存后"+user.getId());
}
SharedPreferenceUtil.setMyCardUserName(user.getUsername());
for (int i = 0; i < userListenerList.size(); i++) {
OnMcUserListener ul = userListenerList.get(i);
if (ul != null && ul.isListenerEffective()) {
ul.onLogin(user, null);
} else {
userListenerList.remove(i);
i--;
}
}
}
public McUser getUser() {
return user;
}
public boolean isLogin() {
return user != null;
}
public void logout() {
this.user = null;
LitePal.deleteAll(McUser.class);
Log.e("McUserManagement", "退出登录");
SharedPreferences lastModified = App.get().getSharedPreferences("lastModified", Context.MODE_PRIVATE);
lastModified.edit().putString("user_external_id", null).apply();
lastModified.edit().putString("user_name", null).apply();
UserManagement.setUserName(null);
UserManagement.setUserPassword(null);
for (int i = 0; i < userListenerList.size(); i++) {
OnMcUserListener ul = userListenerList.get(i);
if (ul != null && ul.isListenerEffective()) {
ul.onLogout();
} else {
userListenerList.remove(i);
i--;
}
}
}
}
package cn.garymb.ygomobile.utils;
import static cn.garymb.ygomobile.Constants.PREF_IMMERSIVE_MODE;
import static cn.garymb.ygomobile.Constants.PREF_KEEP_SCALE;
import static cn.garymb.ygomobile.Constants.PREF_LOCK_SCREEN;
import static cn.garymb.ygomobile.Constants.PREF_OPENGL_VERSION;
import static cn.garymb.ygomobile.Constants.PREF_READ_EX;
import static cn.garymb.ygomobile.Constants.PREF_WINDOW_TOP_BOTTOM;
import android.content.SharedPreferences;
import cn.garymb.ygomobile.App;
import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.mycard.MyCard;
public class SharedPreferenceUtil {
public static final int DECK_EDIT_TYPE_LOCAL = 0;
public static final int DECK_EDIT_TYPE_DECK_MANAGEMENT = 1;
public static final int DECK_EDIT_TYPE_OURYGO_EZ = 2;
//获取存放路径的share
public static SharedPreferences getSharePath() {
return App.get().getSharedPreferences("path", App.get().MODE_PRIVATE);
}
//获取存放类型的share
public static SharedPreferences getShareType() {
return App.get().getSharedPreferences("type", App.get().MODE_PRIVATE);
}
//获取存放开关状态的share
public static SharedPreferences getShareKaiguan() {
return App.get().getSharedPreferences("kaiguan", App.get().MODE_PRIVATE);
}
//获取各种记录的share
public static SharedPreferences getShareRecord() {
return App.get().getSharedPreferences("record", App.get().MODE_PRIVATE);
}
public static boolean addAppStartTimes() {
return getShareRecord().edit().putInt("StartTimes", getAppStartTimes() + 1).commit();
}
//获取应用的启动次数
public static int getAppStartTimes() {
return getShareRecord().getInt("StartTimes", 0);
}
public static String getUserName() {
return getShareRecord().getString("userName", null);
}
public static String getUserPassword() {
return getShareRecord().getString("userPassword", null);
}
public static String getUserAccount() {
return getShareRecord().getString("userAccount", null);
}
public static String getHttpSessionId() {
return getShareRecord().getString("sessionId", null);
}
public static boolean setHttpSessionId(String sessionid) {
return getShareRecord().edit().putString("sessionId", sessionid).commit();
// TODO: Implement this method
}
public static boolean setMyCardUserName(String mycardUserName) {
return getShareRecord().edit().putString(MyCard.ARG_MC_NAME, mycardUserName).commit();
}
public static String getMyCardUserName() {
return getShareRecord().getString(MyCard.ARG_MC_NAME, null);
}
public static boolean setUserName(String name) {
return getShareRecord().edit().putString("userName", name).commit();
}
public static boolean setUserAccount(String account) {
return getShareRecord().edit().putString("userAccount", account).commit();
}
public static boolean setUserPassword(String password) {
return getShareRecord().edit().putString("userPassword", password).commit();
}
public static boolean setScreenPadding(String paddding) {
return AppsSettings.get().getSharedPreferences().edit().putString(PREF_WINDOW_TOP_BOTTOM, paddding).commit();
}
public static boolean setScreenPadding(int position) {
return setScreenPadding(getArray(R.array.screen_top_bottom_value)[position]);
}
public static boolean setReadExpansions(boolean isReadExpansions) {
return AppsSettings.get().getSharedPreferences().edit().putBoolean(PREF_READ_EX, isReadExpansions).commit();
}
public static boolean setOpenglVersion(int position) {
return setOpenglVersion(getArray(R.array.opengl_version_value)[position]);
}
public static boolean setOpenglVersion(String opengl) {
return AppsSettings.get().getSharedPreferences().edit().putString(PREF_OPENGL_VERSION, opengl).commit();
}
public static int getScreenPaddingPosition() {
String value = AppsSettings.get().getScreenPadding() + "";
String[] valueList = getArray(R.array.screen_top_bottom_value);
for (int i = 0; i < valueList.length; i++) {
String s = valueList[i];
if (s.equals(value))
return i;
}
return -1;
}
public static int getOpenglVersionPosition() {
String value = AppsSettings.get().getOpenglVersion() + "";
String[] valueList = getArray(R.array.opengl_version_value);
for (int i = 0; i < valueList.length; i++) {
String s = valueList[i];
if (s.equals(value))
return i;
}
return -1;
}
public static boolean setImmersiveMode(boolean isImmeriveMode) {
return AppsSettings.get().getSharedPreferences().edit().putBoolean(PREF_IMMERSIVE_MODE, isImmeriveMode).commit();
}
public static boolean setKeepScale(boolean isKeepScale) {
return AppsSettings.get().getSharedPreferences().edit().putBoolean(PREF_KEEP_SCALE, isKeepScale).commit();
}
public static boolean setHorizontal(boolean isHorizontal) {
return AppsSettings.get().getSharedPreferences().edit().putBoolean(PREF_LOCK_SCREEN, isHorizontal).commit();
}
public static boolean isShowEz() {
return getShareKaiguan().getBoolean("isShowEz", true);
}
public static boolean setIsShowEz(boolean isShow) {
return getShareKaiguan().edit().putBoolean("isShowEz", isShow).commit();
}
public static boolean isShowVisitDeck() {
return getShareKaiguan().getBoolean("isShowVisitDeck", true);
}
public static boolean setShowVisitDeck(boolean isShow) {
return getShareKaiguan().edit().putBoolean("isShowVisitDeck", isShow).commit();
}
public static boolean isFristStart() {
return getShareRecord().getBoolean("isFirstStart", true);
}
public static boolean setFirstStart(boolean isFirstStart) {
return getShareRecord().edit().putBoolean("isFirstStart", isFirstStart).commit();
}
public static int getNextAifadianNum() {
return getShareRecord().getInt("nextAifadianNum", (10 + (int) (Math.random() * 20)));
}
public static void setNextAifadianNum(int num) {
getShareRecord().edit().putInt("nextAifadianNum", num).apply();
}
public static int getDeckEditType() {
return getShareType().getInt("deckEditType", DECK_EDIT_TYPE_LOCAL);
}
public static void setDeckEditType(int type) {
getShareType().edit().putInt("deckEditType", type).apply();
}
public static String[] getArray(int id) {
return App.get().getResources().getStringArray(id);
}
}
......@@ -16,8 +16,8 @@
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/iv_avatar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_centerVertical="true"
android:layout_marginLeft="20dp"
android:layout_marginTop="5dp"
......@@ -48,186 +48,10 @@
</RelativeLayout>
<LinearLayout
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/dialogshort"
android:orientation="vertical"
android:weightSum="5">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@drawable/list_item_bg"
android:orientation="horizontal">
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:src="@drawable/listicon" />
<LinearLayout
android:id="@+id/btn_log"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:layout_marginLeft="20dp"
android:text="@string/settings_about_change_log"
android:textColor="@color/brightgreen"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center|left"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:layout_marginLeft="20dp"
android:text="@string/settings_about_author_pref"
android:textColor="@color/brightgreen"
android:textSize="10sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:layout_marginLeft="5dp"
android:text="@string/settings_author"
android:textColor="@color/holo_green_bright"
android:textSize="10sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/btn_qq_group"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@drawable/list_item_bg"
android:orientation="horizontal">
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:src="@drawable/joinqqgroup" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:text="@string/Join_QQ"
android:textColor="@color/brightgreen"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/btn_settings"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@drawable/list_item_bg"
android:orientation="horizontal">
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:src="@drawable/setting" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:text="@string/settings_game"
android:textColor="@color/brightgreen"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/btn_reset"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@drawable/list_item_bg"
android:orientation="horizontal">
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:src="@drawable/reset" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:text="@string/reset_game_res"
android:textColor="@color/brightgreen"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/btn_upgrade"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@drawable/list_item_bg"
android:orientation="horizontal">
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:src="@drawable/downloadimages" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:text="@string/settings_about_check_update"
android:textColor="@color/brightgreen"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
android:layout_margin="5dp"
android:background="@drawable/dialogshort"/>
</LinearLayout>
\ No newline at end of file
......@@ -326,4 +326,5 @@
<string name="replay">리플레이 보기</string>
<string name="personal">나의</string>
<string name="login_mycard">로그인</string>
<string name="logout_mycard">로그아웃\?</string>
</resources>
......@@ -203,6 +203,7 @@
<string name="noting_to_send">发送内容不能为空</string>
<string name="sending_failed">发送失败</string>
<string name="login_mycard">登录萌卡</string>
<string name="logout_mycard">退出萌卡账号?</string>
<string name="logining_in">登录中,请稍候...</string>
<string name="logining_failed">登陆失败,请点击重试</string>
<string name="failed_reason">登录失败,原因是</string>
......
......@@ -336,4 +336,5 @@
<string name="bot_mode">Bot game</string>
<string name="personal">My</string>
<string name="login_mycard">login</string>
<string name="logout_mycard">Logout mycard\?</string>
</resources>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment