|
@@ -0,0 +1,243 @@
|
|
|
+package org.telegram.cricdit.ui;
|
|
|
+
|
|
|
+import static android.app.Activity.RESULT_OK;
|
|
|
+import static com.luck.picture.lib.config.PictureConfig.CHOOSE_REQUEST;
|
|
|
+import static org.telegram.cricdit.config.Constants.FILE_SPECIFY_SIZE;
|
|
|
+import static org.telegram.cricdit.utils.Common.hideKeyboard;
|
|
|
+import static org.telegram.cricdit.view.pictureselect.ImageFileCompressEngine.getCompressFileEngine;
|
|
|
+import static org.telegram.cricdit.view.pictureselect.PictureGlideEngine.getPictureSelectorStyle;
|
|
|
+
|
|
|
+import android.content.Intent;
|
|
|
+import android.graphics.drawable.GradientDrawable;
|
|
|
+import android.os.Build;
|
|
|
+import android.text.Editable;
|
|
|
+import android.text.TextUtils;
|
|
|
+import android.text.TextWatcher;
|
|
|
+import android.view.View;
|
|
|
+import android.widget.EditText;
|
|
|
+import android.widget.ImageView;
|
|
|
+import android.widget.TextView;
|
|
|
+import com.bumptech.glide.Glide;
|
|
|
+import com.bumptech.glide.load.resource.bitmap.CenterCrop;
|
|
|
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
|
|
|
+import com.bumptech.glide.request.RequestOptions;
|
|
|
+import com.luck.picture.lib.animators.AnimationType;
|
|
|
+import com.luck.picture.lib.basic.PictureSelectionModel;
|
|
|
+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.engine.ImageEngine;
|
|
|
+import com.luck.picture.lib.entity.LocalMedia;
|
|
|
+import com.luck.picture.lib.language.LanguageConfig;
|
|
|
+import com.luck.picture.lib.style.PictureSelectorStyle;
|
|
|
+import org.telegram.cricdit.base.BaseActivity;
|
|
|
+import org.telegram.cricdit.bean.PublishRankBean;
|
|
|
+import org.telegram.cricdit.bean.PublishRankEvent;
|
|
|
+import org.telegram.cricdit.mvp.PublishRankingPresenter;
|
|
|
+import org.telegram.cricdit.mvp.PublishRankingView;
|
|
|
+import org.telegram.cricdit.utils.ColorUtil;
|
|
|
+import org.telegram.cricdit.utils.EventBusHelper;
|
|
|
+import org.telegram.cricdit.utils.ToastUtil;
|
|
|
+import org.telegram.cricdit.utils.UIUtil;
|
|
|
+import org.telegram.cricdit.view.pictureselect.PictureGlideEngine;
|
|
|
+import org.telegram.messenger.AndroidUtilities;
|
|
|
+import org.telegram.messenger.LocaleController;
|
|
|
+import org.telegram.messenger.R;
|
|
|
+import org.telegram.ui.ActionBar.ActionBarMenu;
|
|
|
+import org.telegram.ui.ActionBar.ActionBarMenuItem;
|
|
|
+import org.telegram.ui.ActionBar.AlertDialog;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.util.ArrayList;
|
|
|
+
|
|
|
+public class PublishRankingEditActivity extends BaseActivity<PublishRankingPresenter> implements PublishRankingView {
|
|
|
+ private View view;
|
|
|
+ private EditText et_name;
|
|
|
+ private EditText et_info;
|
|
|
+ private TextView tv_name_length;
|
|
|
+ private TextView tv_info_length;
|
|
|
+ private ImageView iv_select;
|
|
|
+ private String photoUrl;
|
|
|
+ private PublishRankBean optionBean;
|
|
|
+ private AlertDialog dialog;
|
|
|
+ private ImageEngine imageEngine;
|
|
|
+ private ArrayList<LocalMedia> localMediaList;
|
|
|
+ private PictureSelectorStyle selectorStyle;
|
|
|
+
|
|
|
+ public PublishRankingEditActivity(){}
|
|
|
+ public PublishRankingEditActivity(PublishRankBean bean){
|
|
|
+ optionBean = bean;
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ protected int getLayoutResId() {
|
|
|
+ return R.layout.activity_publish_ranking_edit;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String setActionBarTitle() {
|
|
|
+ return LocaleController.getString(R.string.CdPublishRankingEdit);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected PublishRankingPresenter createPresenter() {
|
|
|
+ return new PublishRankingPresenter();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void initView(View view) {
|
|
|
+ this.view = view;
|
|
|
+ et_name = view.findViewById(R.id.et_name);
|
|
|
+ et_info = view.findViewById(R.id.et_info);
|
|
|
+ tv_name_length = view.findViewById(R.id.tv_name_length);
|
|
|
+ tv_info_length = view.findViewById(R.id.tv_info_length);
|
|
|
+ iv_select = view.findViewById(R.id.iv_select);
|
|
|
+ dialog = new AlertDialog(getContext(), 3);
|
|
|
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
|
|
+ GradientDrawable gd = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{ColorUtil.COLOR_CHECKED, ColorUtil.COLOR_CHECKED});
|
|
|
+ gd.setSize(UIUtil.dip2px(getContext(), 1.5), UIUtil.dip2px(getContext(), et_name.getTextCursorDrawable().getIntrinsicHeight()));
|
|
|
+ GradientDrawable gd2 = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{ColorUtil.COLOR_CHECKED, ColorUtil.COLOR_CHECKED});
|
|
|
+ gd2.setSize(UIUtil.dip2px(getContext(), 1.5), UIUtil.dip2px(getContext(), et_info.getTextCursorDrawable().getIntrinsicHeight()));
|
|
|
+ et_name.setTextCursorDrawable(gd);
|
|
|
+ et_info.setTextCursorDrawable(gd2);
|
|
|
+ }
|
|
|
+
|
|
|
+ ActionBarMenu menu = actionBar.createMenu();
|
|
|
+ ActionBarMenuItem actionBarMenuItem = menu.addItem(0, R.drawable.msg_text_check);
|
|
|
+ actionBarMenuItem.setIconColor(ColorUtil.COLOR_WHITE);
|
|
|
+ actionBarMenuItem.setOnClickListener(view1 -> {
|
|
|
+ AndroidUtilities.hideKeyboard(et_info);
|
|
|
+ if(TextUtils.isEmpty(photoUrl)){
|
|
|
+ ToastUtil.show(getContext(),LocaleController.getString(R.string.please_upload_image));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String name = et_name.getText().toString();
|
|
|
+ String info = et_info.getText().toString();
|
|
|
+ if(TextUtils.isEmpty(name.trim())){
|
|
|
+ ToastUtil.show(getContext(),et_name.getHint().toString());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(TextUtils.isEmpty(info.trim())){
|
|
|
+ ToastUtil.show(getContext(),et_info.getHint().toString());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ EventBusHelper.post(new PublishRankEvent(new PublishRankBean((optionBean!=null)?optionBean.position:-1,name,info,photoUrl)));
|
|
|
+ finishFragment();
|
|
|
+ });
|
|
|
+
|
|
|
+ localMediaList = new ArrayList<>();
|
|
|
+ imageEngine = PictureGlideEngine.createGlideEngine();
|
|
|
+ selectorStyle = getPictureSelectorStyle();
|
|
|
+
|
|
|
+ iv_select.setOnClickListener(view1 -> {
|
|
|
+ AndroidUtilities.hideKeyboard(et_info);
|
|
|
+ PictureSelectionModel selectionModel = PictureSelector.create(getContext())
|
|
|
+ .openGallery(SelectMimeType.ofImage())
|
|
|
+ .setSelectorUIStyle(selectorStyle)
|
|
|
+ .setImageEngine(imageEngine)
|
|
|
+ .isPageSyncAlbumCount(true)
|
|
|
+ .setCompressEngine(getCompressFileEngine())
|
|
|
+ .setSelectionMode(SelectModeConfig.SINGLE)
|
|
|
+ .setLanguage(LanguageConfig.SYSTEM_LANGUAGE)
|
|
|
+ .isDisplayTimeAxis(true)
|
|
|
+ .isDisplayCamera(false)
|
|
|
+ .isFastSlidingSelect(true)
|
|
|
+ .isWithSelectVideoImage(false)
|
|
|
+ .isPreviewFullScreenMode(true)
|
|
|
+ .isPreviewZoomEffect(true)
|
|
|
+ .isPreviewImage(true)
|
|
|
+ .isMaxSelectEnabledMask(true)
|
|
|
+ .setMaxSelectNum(1)
|
|
|
+ .setFilterMaxFileSize(FILE_SPECIFY_SIZE)
|
|
|
+ .setSelectMaxFileSize(FILE_SPECIFY_SIZE)
|
|
|
+ .setRecyclerAnimationMode(AnimationType.DEFAULT_ANIMATION)
|
|
|
+ .setSelectedData(localMediaList);
|
|
|
+ selectionModel.forResult(CHOOSE_REQUEST);
|
|
|
+ });
|
|
|
+
|
|
|
+ et_name.addTextChangedListener(new TextWatcher() {
|
|
|
+ @Override
|
|
|
+ public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void afterTextChanged(Editable editable) {
|
|
|
+ tv_name_length.setText(editable.length()+"/50");
|
|
|
+ //fixme ltt 加晃动动画
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ et_info.addTextChangedListener(new TextWatcher() {
|
|
|
+ @Override
|
|
|
+ public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void afterTextChanged(Editable editable) {
|
|
|
+ tv_info_length.setText(editable.length()+"/1000");
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ initData();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initData(){
|
|
|
+ if(optionBean!=null){
|
|
|
+ photoUrl = optionBean.phoneUrl;
|
|
|
+ Glide.with(getContext()).load(photoUrl).placeholder(R.mipmap.img_select_add).into(iv_select);
|
|
|
+ et_name.setText(optionBean.name);
|
|
|
+ et_info.setText(optionBean.info);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void showSuccess(String url) {
|
|
|
+ dialog.dismiss();
|
|
|
+ photoUrl = url;
|
|
|
+ Glide.with(getContext())
|
|
|
+ .load(photoUrl)
|
|
|
+ .placeholder(R.mipmap.img_select_add)
|
|
|
+ .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(UIUtil.dip2px(getContext(), 5))))
|
|
|
+ .into(iv_select);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void showError(Throwable e) {
|
|
|
+ dialog.dismiss();
|
|
|
+ photoUrl = "";
|
|
|
+ iv_select.setImageResource(R.mipmap.img_select_add);
|
|
|
+ ToastUtil.show(getContext(),LocaleController.getString(R.string.please_try_again));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onActivityResultFragment(int requestCode, int resultCode, Intent data) {
|
|
|
+ super.onActivityResultFragment(requestCode, resultCode, data);
|
|
|
+ if (resultCode == RESULT_OK) {
|
|
|
+ switch (requestCode) {
|
|
|
+ case CHOOSE_REQUEST:
|
|
|
+ localMediaList = PictureSelector.obtainSelectorList(data);
|
|
|
+ String fileVideoPath = localMediaList.get(0).getRealPath();
|
|
|
+ if(!TextUtils.isEmpty(fileVideoPath)){
|
|
|
+ dialog.show();
|
|
|
+ presenter.uploadFile(new File(fileVideoPath));
|
|
|
+ }
|
|
|
+ AndroidUtilities.hideKeyboard(et_info);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|