|
|
|
@ -1,8 +1,6 @@
|
|
|
|
|
package com.example.stlink.activitys.fragmentChild.activityTeaHome;
|
|
|
|
|
|
|
|
|
|
import android.annotation.SuppressLint;
|
|
|
|
|
import android.content.DialogInterface;
|
|
|
|
|
import android.content.Intent;
|
|
|
|
|
import android.graphics.Color;
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
|
import android.os.Handler;
|
|
|
|
@ -19,8 +17,8 @@ import androidx.annotation.Nullable;
|
|
|
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
|
|
|
|
|
|
|
|
import com.bumptech.glide.Glide;
|
|
|
|
|
import com.donkingliang.imageselector.utils.ImageSelector;
|
|
|
|
|
import com.example.stlink.R;
|
|
|
|
|
import com.example.stlink.configs.GlideEngine;
|
|
|
|
|
import com.example.stlink.model.constants.ModelFieldConstants;
|
|
|
|
|
import com.example.stlink.model.constants.UrlConstants;
|
|
|
|
|
import com.example.stlink.model.request.CourseCreateRequest;
|
|
|
|
@ -28,9 +26,13 @@ import com.example.stlink.utils.CommonUtils;
|
|
|
|
|
import com.example.stlink.utils.activityUtil.CreateCourseUtil;
|
|
|
|
|
import com.example.stlink.utils.activityUtil.ImgUploadUtil;
|
|
|
|
|
import com.google.android.material.datepicker.MaterialDatePicker;
|
|
|
|
|
import com.google.android.material.datepicker.MaterialPickerOnPositiveButtonClickListener;
|
|
|
|
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
|
|
|
|
import com.google.android.material.textfield.TextInputEditText;
|
|
|
|
|
import com.luck.picture.lib.basic.PictureSelector;
|
|
|
|
|
import com.luck.picture.lib.config.SelectMimeType;
|
|
|
|
|
import com.luck.picture.lib.config.SelectModeConfig;
|
|
|
|
|
import com.luck.picture.lib.entity.LocalMedia;
|
|
|
|
|
import com.luck.picture.lib.interfaces.OnResultCallbackListener;
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
@ -58,6 +60,8 @@ public class CreateCourse extends AppCompatActivity {
|
|
|
|
|
|
|
|
|
|
private Handler btAddHandler;
|
|
|
|
|
|
|
|
|
|
private Handler imgUploadHandler;
|
|
|
|
|
|
|
|
|
|
//每两秒进行一个检测
|
|
|
|
|
private final Runnable btRunnable = new Runnable() {
|
|
|
|
|
@SuppressLint("ResourceAsColor")
|
|
|
|
@ -104,6 +108,8 @@ public class CreateCourse extends AppCompatActivity {
|
|
|
|
|
Toast.makeText(CreateCourse.this, "创建成功", Toast.LENGTH_SHORT).show();
|
|
|
|
|
btAddHandler.removeCallbacks(btRunnable);
|
|
|
|
|
finish();
|
|
|
|
|
} else {
|
|
|
|
|
Toast.makeText(CreateCourse.this, msg.obj.toString(), Toast.LENGTH_SHORT).show();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
@ -137,42 +143,6 @@ public class CreateCourse extends AppCompatActivity {
|
|
|
|
|
btAddHandler.postDelayed(btRunnable, 2000);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//用于图片选择器选择图片之后的回调,来完成图片上传和刷新本地
|
|
|
|
|
@Override
|
|
|
|
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
|
|
super.onActivityResult(requestCode, resultCode, data);
|
|
|
|
|
if (requestCode == 100 && data != null) {
|
|
|
|
|
//获取选择器返回的数据
|
|
|
|
|
ArrayList<String> images = data.getStringArrayListExtra(
|
|
|
|
|
ImageSelector.SELECT_RESULT);
|
|
|
|
|
String url = images.get(0);
|
|
|
|
|
Handler handler = new Handler(Looper.getMainLooper()){
|
|
|
|
|
@Override
|
|
|
|
|
public void handleMessage(@NonNull Message msg) {
|
|
|
|
|
super.handleMessage(msg);
|
|
|
|
|
bundle = (Bundle) msg.obj;
|
|
|
|
|
if(bundle.getBoolean(UrlConstants.IS_IMG_UPLOAD_SUCCESS)){
|
|
|
|
|
System.out.println("refreshData..................");
|
|
|
|
|
getIntent().putExtras(bundle);
|
|
|
|
|
refreshData();
|
|
|
|
|
//表示照片添加成功
|
|
|
|
|
isSuccessCoursePhoto = true;
|
|
|
|
|
}else{
|
|
|
|
|
Toast.makeText(CreateCourse.this, "修改失败", Toast.LENGTH_SHORT).show();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
ImgUploadUtil.userImgUpload(bundle, handler, url, ModelFieldConstants.COURSE_PHOTO);
|
|
|
|
|
/**
|
|
|
|
|
* 是否是来自于相机拍照的图片,
|
|
|
|
|
* 只有本次调用相机拍出来的照片,返回时才为true。
|
|
|
|
|
* 当为true时,图片返回的结果有且只有一张图片。
|
|
|
|
|
*/
|
|
|
|
|
boolean isCameraImage = data.getBooleanExtra(ImageSelector.IS_CAMERA_IMAGE, false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 初始化活动
|
|
|
|
|
*/
|
|
|
|
@ -209,14 +179,33 @@ public class CreateCourse extends AppCompatActivity {
|
|
|
|
|
|
|
|
|
|
refreshData();
|
|
|
|
|
|
|
|
|
|
// 用于图片上传成功之后刷新界面
|
|
|
|
|
imgUploadHandler = new Handler(Looper.getMainLooper()){
|
|
|
|
|
@Override
|
|
|
|
|
public void handleMessage(@NonNull Message msg) {
|
|
|
|
|
super.handleMessage(msg);
|
|
|
|
|
bundle = (Bundle) msg.obj;
|
|
|
|
|
if(bundle.getBoolean(UrlConstants.IS_IMG_UPLOAD_SUCCESS)){
|
|
|
|
|
System.out.println("refreshData..................");
|
|
|
|
|
getIntent().putExtras(bundle);
|
|
|
|
|
refreshData();
|
|
|
|
|
//表示照片添加成功
|
|
|
|
|
isSuccessCoursePhoto = true;
|
|
|
|
|
}else{
|
|
|
|
|
Toast.makeText(CreateCourse.this, "修改失败", Toast.LENGTH_SHORT).show();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
setClickListener();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void refreshData(){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bundle = getIntent().getExtras();
|
|
|
|
|
String courseImg = bundle.getString(ModelFieldConstants.COURSE_PHOTO);
|
|
|
|
|
if(courseImg != null){
|
|
|
|
|
if(courseImg != null){ // 将图片加载出来
|
|
|
|
|
Glide.with(getApplicationContext())
|
|
|
|
|
.load(courseImg)
|
|
|
|
|
.into(ivAddImg);
|
|
|
|
@ -233,109 +222,86 @@ public class CreateCourse extends AppCompatActivity {
|
|
|
|
|
* 添加点击事件
|
|
|
|
|
*/
|
|
|
|
|
private void setClickListener(){
|
|
|
|
|
startDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Long>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onPositiveButtonClick(Long selection) {
|
|
|
|
|
startDatePicker.addOnPositiveButtonClickListener(selection -> {
|
|
|
|
|
String startFormDate = CommonUtils.stampToDate(String.valueOf(selection), "yyyy年MM月dd日");
|
|
|
|
|
etStartTime.setText(startFormDate);
|
|
|
|
|
isSuccessCourseStartTime = true;
|
|
|
|
|
Bundle bundle1 = getIntent().getExtras();
|
|
|
|
|
bundle1.putLong(ModelFieldConstants.START_TIME, selection);
|
|
|
|
|
getIntent().putExtras(bundle1);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
endDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Long>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onPositiveButtonClick(Long selection) {
|
|
|
|
|
endDatePicker.addOnPositiveButtonClickListener(selection -> {
|
|
|
|
|
String endFormDate = CommonUtils.stampToDate(String.valueOf(selection), "yyyy年MM月dd日");
|
|
|
|
|
etEndTime.setText(endFormDate);
|
|
|
|
|
isSuccessCourseEndTime = true;
|
|
|
|
|
Bundle bundle1 = getIntent().getExtras();
|
|
|
|
|
bundle1.putLong(ModelFieldConstants.END_TIME, selection);
|
|
|
|
|
getIntent().putExtras(bundle1);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
//点击添加图片
|
|
|
|
|
ivAddImg.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
ivAddImg.setOnClickListener(v -> {
|
|
|
|
|
// 调用第三方开源图片库
|
|
|
|
|
PictureSelector.create(this)
|
|
|
|
|
.openGallery(SelectMimeType.ofImage())
|
|
|
|
|
.setImageEngine(GlideEngine.createGlideEngine()) // 图片加载引擎
|
|
|
|
|
.setMaxSelectNum(1)// 最大图片选择数量 int
|
|
|
|
|
.setImageSpanCount(4)// 每行显示个数 int
|
|
|
|
|
.setSelectionMode(SelectModeConfig.SINGLE)// 多选 or 单选
|
|
|
|
|
.isPreviewImage(true)// 是否可预览图片 true or false
|
|
|
|
|
.isSelectZoomAnim(true)// 图片列表点击 缩放效果 默认true
|
|
|
|
|
.isGif(false) //是否显示gif文件
|
|
|
|
|
.isWebp(false) //是否显示webp文件
|
|
|
|
|
.isBmp(false) //是否显示bmp文件
|
|
|
|
|
.isMaxSelectEnabledMask(true) //达到最大选择数是否开启禁选蒙层
|
|
|
|
|
.forResult(new OnResultCallbackListener<LocalMedia>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
//调用第三方开源库,单选并剪裁
|
|
|
|
|
ImageSelector.builder()
|
|
|
|
|
.useCamera(false) // 设置是否使用拍照
|
|
|
|
|
.setCrop(true) // 设置是否使用图片剪切功能。
|
|
|
|
|
.setCropRatio(1.0f) // 图片剪切的宽高比,默认1.0f。宽固定为手机屏幕的宽。
|
|
|
|
|
.setSingle(true) //设置是否单选
|
|
|
|
|
.canPreview(true) //是否可以预览图片,默认为true
|
|
|
|
|
.start(CreateCourse.this, 100); // 打开相册
|
|
|
|
|
public void onResult(ArrayList<LocalMedia> result) { // 选择图片后回调
|
|
|
|
|
LocalMedia localMedia = result.get(0);
|
|
|
|
|
ImgUploadUtil.userImgUpload(bundle, imgUploadHandler, localMedia.getRealPath(), ModelFieldConstants.COURSE_PHOTO);
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public void onCancel() { } // 取消
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
//课程开始时间
|
|
|
|
|
etStartTime.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
etStartTime.setOnClickListener(v -> {
|
|
|
|
|
if(!startDatePicker.isAdded()){
|
|
|
|
|
startDatePicker.show(getSupportFragmentManager(), "Hello");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
//课程结束时间
|
|
|
|
|
etEndTime.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
etEndTime.setOnClickListener(v -> {
|
|
|
|
|
if(!endDatePicker.isAdded()){
|
|
|
|
|
endDatePicker.show(getSupportFragmentManager(), "Hello");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
//刷新当前时间
|
|
|
|
|
etCreateTime.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
etCreateTime.setOnClickListener(v -> {
|
|
|
|
|
long currentDate = System.currentTimeMillis();
|
|
|
|
|
String curFormDate = CommonUtils.stampToDate(String.valueOf(currentDate), "yyyy年MM月dd日");
|
|
|
|
|
etCreateTime.setText(curFormDate);
|
|
|
|
|
isSuccessCourseCreateTime = true;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
//课程状态选择
|
|
|
|
|
etStatus.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
etStatus.setOnClickListener(v -> {
|
|
|
|
|
String[] singleItems = {"未结课", "已结课"};
|
|
|
|
|
int checkedItem = "未结课".equals(etStatus.getText().toString()) ? 0 : 1;
|
|
|
|
|
int checkedItem = "未结课".equals(Objects.requireNonNull(etStatus.getText()).toString()) ? 0 : 1;
|
|
|
|
|
|
|
|
|
|
MaterialAlertDialogBuilder materialAlertDialogBuilder = new MaterialAlertDialogBuilder(CreateCourse.this)
|
|
|
|
|
.setTitle("请选择课程授课状态")
|
|
|
|
|
.setNeutralButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
|
|
|
.setNeutralButton(getString(R.string.cancel), (dialog, which) -> {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
|
|
|
etStatus.setText(singleItems[bundle.getInt("checkedItem")]);
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
.setSingleChoiceItems(singleItems, checkedItem, new DialogInterface.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
|
|
|
bundle.putInt("checkedItem", which);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
.setPositiveButton(getString(R.string.ok), (dialog, which) ->
|
|
|
|
|
etStatus.setText(singleItems[bundle.getInt("checkedItem")]))
|
|
|
|
|
.setSingleChoiceItems(singleItems, checkedItem, (dialog, which) ->
|
|
|
|
|
bundle.putInt("checkedItem", which));
|
|
|
|
|
materialAlertDialogBuilder.show();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//返回上一个活动
|
|
|
|
|
abIvTitle.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
finish();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
abIvTitle.setOnClickListener(v -> finish());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|