1, 昨天的成就:html
a) 完成的任務:設置開學時間成功java
b) 所花時間:6handroid
c) 還剩餘1hsql
2, 遇到的困難:數據庫
a) 數據庫可視化工具出了問題。緩存
3, 今天的任務:試着寫一下反饋功能。app
package com.mnnyang.gzuclassschedule.mvp.home; import android.Manifest; import android.app.DatePickerDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.Toolbar; import android.text.TextUtils; import android.util.Log; import android.view.MenuItem; import android.view.View; import android.widget.CompoundButton; import android.widget.DatePicker; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Switch; import android.widget.TextView; import android.widget.Toast; import com.bumptech.glide.Glide; import com.mnnyang.gzuclassschedule.BaseFragment; import com.mnnyang.gzuclassschedule.Html5Activity; import com.mnnyang.gzuclassschedule.R; import com.mnnyang.gzuclassschedule.app.AppUtils; import com.mnnyang.gzuclassschedule.app.Cache; import com.mnnyang.gzuclassschedule.app.Url; import com.mnnyang.gzuclassschedule.app.app; import com.mnnyang.gzuclassschedule.data.beanv2.CourseGroup; import com.mnnyang.gzuclassschedule.data.beanv2.UserWrapper; import com.mnnyang.gzuclassschedule.mvp.Search.SearchActivity; import com.mnnyang.gzuclassschedule.mvp.about.AboutActivity; import com.mnnyang.gzuclassschedule.mvp.add.AddActivity; import com.mnnyang.gzuclassschedule.mvp.login.SignActivity; import com.mnnyang.gzuclassschedule.mvp.mg.MgActivity; import com.mnnyang.gzuclassschedule.mvp.school.SchoolActivity; import com.mnnyang.gzuclassschedule.setting.SettingActivity; import com.mnnyang.gzuclassschedule.utils.DialogHelper; import com.mnnyang.gzuclassschedule.utils.DialogListener; import com.mnnyang.gzuclassschedule.utils.Preferences; import com.mnnyang.gzuclassschedule.utils.RequestPermission; import com.mnnyang.gzuclassschedule.utils.ScreenUtils; import com.mnnyang.gzuclassschedule.utils.event.SignEvent; import com.yzq.zxinglibrary.android.CaptureActivity; import com.yzq.zxinglibrary.common.Constant; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.sql.Time; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Objects; import de.hdodenhof.circleimageview.CircleImageView; import static android.app.Activity.RESULT_OK; public class HomeFragment extends BaseFragment implements HomeContract.View, View.OnClickListener, Toolbar.OnMenuItemClickListener, CompoundButton.OnCheckedChangeListener { HomeContract.Presenter mPresenter; private int REQUEST_CODE_SCAN = 1; private View mViewShare; private DialogHelper mProgressDialog; private LinearLayout mLayoutUpload; private LinearLayout mLayoutOverwriteLocal; private LinearLayout mLayoutSetteamtime; private Toolbar mToolbar; private CircleImageView mCivAvator; private View mLayoutSetting; private View mLayoutCourseMg; private TextView mTvUsername; private View mViewAdd; //private View mLayoutAbout; private View mLayoutFeedback; private LinearLayout linearLayout; private Switch setQuite; private Switch setswitch_shake; private Context mContext; private LinearLayout SearchLesson; @Override public boolean isActive() { return isAdded(); } @Override public void showMassage(String msg) { toast(msg); } @Override protected int getLayout() { return R.layout.fragment_home; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.mContext = getActivity(); EventBus.getDefault().register(this); } @Override public void initView() { mToolbar = mRootView.findViewById(R.id.toolbar); mTvUsername = mRootView.findViewById(R.id.tv_username); mViewAdd = mRootView.findViewById(R.id.layout_add); mViewShare = mRootView.findViewById(R.id.layout_share); mLayoutSetting = mRootView.findViewById(R.id.layout_setting); mLayoutFeedback = mRootView.findViewById(R.id.layout_feedback); mLayoutCourseMg = mRootView.findViewById(R.id.layout_course_mg); mLayoutSetteamtime=mRootView.findViewById(R.id.set_startteamtime); //mLayoutAbout = mRootView.findViewById(R.id.layout_about);//獲取關於 mLayoutOverwriteLocal = mRootView.findViewById(R.id.layout_overwrite_local); mLayoutUpload = mRootView.findViewById(R.id.layout_upload); mCivAvator = mRootView.findViewById(R.id.profile_image); setQuite=mRootView.findViewById(R.id.switch_quiet); setswitch_shake=mRootView.findViewById(R.id.switch_shake); SearchLesson=mRootView.findViewById(R.id.SearchLesson); initToolbar(); } private void initToolbar() { backToolbar(mToolbar); mToolbar.inflateMenu(R.menu.toolbar_home); mToolbar.setOnMenuItemClickListener(this); } @Override public void initData() { new HomePresenter(this).start(); showCacheData(); } @Override public void initListener() { mViewAdd.setOnClickListener(this); mViewShare.setOnClickListener(this); mLayoutOverwriteLocal.setOnClickListener(this); mLayoutUpload.setOnClickListener(this); mLayoutSetting.setOnClickListener(this); mLayoutFeedback.setOnClickListener(this); mLayoutSetteamtime.setOnClickListener(this); //mLayoutAbout.setOnClickListener(this); mLayoutCourseMg.setOnClickListener(this); Boolean quiet_status = Preferences.getBoolean("switch_quiet", false); setQuite.setChecked(quiet_status); setQuite.setOnCheckedChangeListener(this); setswitch_shake.setChecked(Preferences.getBoolean("switch_remind",false)); setswitch_shake.setOnCheckedChangeListener(this); SearchLesson.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.layout_add: addSelectDialog(); break; case R.id.layout_share: showShareDialog(); break; case R.id.layout_overwrite_local: mPresenter.downCourse(); break; case R.id.layout_upload: mPresenter.uploadCourse(); break; case R.id.layout_setting: setting(); break; case R.id.layout_course_mg: courseManage(); break; case R.id.layout_feedback: feedbackDialog(); break; case R.id.set_startteamtime: SetTiem(); //showTimeDialog(); break; case R.id.setQuite: onCheckedChanged(setQuite,setQuite.isChecked()); break; case R.id.setShake: onCheckedChanged(setswitch_shake,setswitch_shake.isChecked()); break; case R.id.SearchLesson: IntentSearch(); break; // case R.id.layout_about: // about(); // break; default: break; } } private void addSelectDialog() { new DialogHelper().buildBottomListDialog(activity, new String[]{"手動添加","導入分享"}, new DialogListener() { @Override public void onItemClick(DialogInterface dialog, int which) { dialog.dismiss(); switch (which) { case 0: userAdd(); break; // case 1: // fangZhengAdd(); // break; case 1: scanQRCode(); break; default: break; } } }).show(); } @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.action_sign_out: signOut(); break; case R.id.action_add: addSelectDialog(); break; } return false; } private void fangZhengAdd() { startActivity(new Intent(activity, SchoolActivity.class)); } private void userAdd() { startActivity(new Intent(activity, AddActivity.class)); } private void courseManage() { startActivity(new Intent(activity, MgActivity.class)); } private void setting() { startActivity(new Intent(activity, SettingActivity.class)); } private void about() { startActivity(new Intent(activity, AboutActivity.class)); } /** * 反饋彈窗 */ private void feedbackDialog() { new DialogHelper().buildBottomListDialog(activity, new String[]{"提交反饋", "QQ反饋"}, new DialogListener() { @Override public void onItemClick(DialogInterface dialog, int which) { dialog.dismiss(); switch (which) { case 0: htmlFeedback(); break; case 1: qqFeedback(); break; } } }).show(); } /** * QQ反饋 */ public void qqFeedback() { if (!QQIsAvailable()) { showMassage(getString(R.string.qq_not_installed)); return; } String url1 = "mqqwpa://im/chat?chat_type=wpa&uin=" + getString(R.string.qq_number); Intent i1 = new Intent(Intent.ACTION_VIEW, Uri.parse(url1)); i1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); i1.setAction(Intent.ACTION_VIEW); i1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (getContext() != null && getContext().getApplicationContext() != null) { getContext().getApplicationContext().startActivity(i1); } } /** * 檢查是否安裝QQ */ private boolean QQIsAvailable() { final PackageManager mPackageManager = app.mContext.getPackageManager(); List<PackageInfo> pinfo = mPackageManager.getInstalledPackages(0); if (pinfo != null) { for (int i = 0; i < pinfo.size(); i++) { String pn = pinfo.get(i).packageName; if (pn.equals("com.tencent.mobileqq")) { return true; } } } return false; } /** * 權限回調 */ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); RequestPermission.onRequestPermissionsResult(requestCode, permissions, grantResults); } /** * 顯示緩存的信息 */ @Override public void showCacheData() { String email = Cache.instance().getEmail(); if (!TextUtils.isEmpty(email)) { UserWrapper.User user = new UserWrapper.User(); user.setEmail(email); signInPage(user); } } @Override public void showLoading(String msg) { mProgressDialog = new DialogHelper(); //TODO 彈出不可取消 mProgressDialog.showProgressDialog(getContext(), "稍後", msg, false); } @Override public void stopLoading() { mProgressDialog.hideProgressDialog(); }