PublishQuestionAndTrendFragment.java 41.2 KB
Newer Older
konghaorui committed
1 2 3 4 5 6 7 8 9 10 11 12 13
package com.yidianling.dynamic.publishTrend.fragment;

import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Point;
import android.os.Bundle;
import android.os.Handler;
import android.os.Parcelable;
YKai committed
14 15 16 17 18
import androidx.fragment.app.Fragment;
import androidx.core.content.ContextCompat;
import androidx.appcompat.app.AlertDialog;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
konghaorui committed
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
import android.text.Editable;
import android.text.InputFilter;
import android.text.InputType;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

konghaorui committed
35 36
import com.luck.picture.lib.entity.LocalMedia;
import com.luck.picture.lib.listener.OnResultCallbackListener;
konghaorui committed
37 38 39 40
import com.tbruyelle.rxpermissions2.RxPermissions;
import com.ydl.webview.H5Params;
import com.ydl.webview.NewH5Activity;
import com.ydl.ydl_image.module.GlideApp;
41
import com.ydl.ydlcommon.adapter.custom.PublishImageAdapter;
konghaorui committed
42
import com.ydl.ydlcommon.actions.imagepicker.YDLImagePicker;
konghaorui committed
43 44 45 46 47 48 49 50 51 52 53 54 55
import com.ydl.ydlcommon.base.BaseActivity;
import com.ydl.ydlcommon.base.BaseApp;
import com.ydl.ydlcommon.base.BaseFragment;
import com.ydl.ydlcommon.data.http.BaseResponse;
import com.ydl.ydlcommon.router.YdlCommonOut;
import com.ydl.ydlcommon.utils.BuryPointUtils;
import com.ydl.ydlcommon.utils.MoonUtil;
import com.ydl.ydlcommon.utils.SharedPreferencesEditor;
import com.ydl.ydlcommon.utils.StringUtils;
import com.ydl.ydlcommon.view.dialog.CommonDialog;
import com.ydl.ydlcommon.view.dialog.NormalDialog;
import com.yidianling.common.tools.LogUtil;
import com.yidianling.common.tools.RxFileTool;
56
import com.yidianling.dynamic.bean.DynamicConstants;
konghaorui committed
57 58 59 60 61 62 63 64
import com.yidianling.dynamic.R;
import com.yidianling.dynamic.common.browsePictures.BrowsePicturesActivity;
import com.yidianling.dynamic.common.emoji.EmoticonPickerView;
import com.yidianling.dynamic.common.emoji.IEmoticonSelectedListener;
import com.yidianling.dynamic.common.net.DynamicApiUtils;
import com.yidianling.dynamic.common.tool.ImageCompress;
import com.yidianling.dynamic.model.Command;
import com.yidianling.dynamic.model.PublishTrendResult;
65
import com.ydl.ydlcommon.ui.ParcelableImage;
konghaorui committed
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
import com.yidianling.dynamic.publishTrend.PublishTrendActivity;
import com.yidianling.dynamic.publishTrend.SelecTopicActivity;
import com.yidianling.dynamic.router.DynamicIn;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;

/**
 * @author jiucheng
 * @描述:提问、动态的fragment--从原有的发布动态activity移过来
 * @Copyright Copyright (c) 2018
 * @Company 壹点灵
 * @date 2018/10/12
 */

public class PublishQuestionAndTrendFragment extends BaseFragment implements View.OnClickListener, IEmoticonSelectedListener {
    /**
     * 动态
     */
    public static final String TYPE_TREND = "5";
    /**
     * 提问
     */
    public static final String TYPE_QUESTION = "6";
    /**
     * 页面标记:
     * TYPE_TREND:动态
     * TYPE_TREND:提问
     * <p>
     * ext_type 5动态 6问答
     * is_doctor_show 1仅专家可见 2所有可见
     */
    private String type;

    private TextView publish_trend_content_num_tv, publish_trend_bottom_topic_tv;
    private EditText publish_trend_title_editext, publish_trend_content_editext;
    private RecyclerView publish_trend_img_rcv;
    private ImageView publish_trend_bottom_img_iv;

    private LinearLayout publish_anonymity_rel;
    private LinearLayout ll_to_expert;
    private ImageView publish_anonymity_iv;
    private RelativeLayout publish_trend_ad_rel;
    private ImageView publish_trend_ad_iv;
    private ImageView iv_fm;
    private ImageView iv_to_expert;
    private TextView publish_trend_ad_tv;

    RxFileTool fileUtils;
    private String head_dir;//目录
    private String head_path;//路径
    File head_filec;
124 125
    private List<ParcelableImage> publishTrendImgs, publishTrendImgBrows;
    private PublishImageAdapter adapter;
konghaorui committed
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184

    String topic_id;
    String topic_title;

    String publish_type;

    int is_niming = 1;//是否匿名:1否,2匿名
    /**
     * 仅对专家可见
     * 1仅专家可见 2所有可见
     * 默认所有可见
     */
    private int isDoctorShow = 2;

    String content;//发布动态内容
    boolean is_publis_ing = false;

    List<File> imgFiles;

    ImageView publish_emoji_iv;
    private EmoticonPickerView emoticon_picker_view;
    /**
     * 表情弹窗是否显示
     */
    private boolean emojilayot_ishow;
    boolean writeing_title;

    protected Handler uiHandler;
    private boolean isKeyboardShowed = true; // 是否显示键盘

    //测试结果页(或者fm页面、文章页面)传过来的数据
    private String Test_url;
    private String Test_cover;
    private String Test_title;
    private int isFromFm = 0;
    private RxPermissions rxPermissions;
    private AlertDialog loadingDialog;

    private static final String URL = "Test_url";
    private static final String COVER = "Test_cover";
    private static final String TITLE = "Test_title";
    private View dialogContentView;
    private Activity activity;


    public static Fragment getInstance(String type) {
        PublishQuestionAndTrendFragment fragment = new PublishQuestionAndTrendFragment();
        fragment.type = type;
        return fragment;
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        this.activity = activity;
    }

    @Override
    public int layoutResId() {
konghaorui committed
185
        return R.layout.dynamic_fragment_publish_trend;
konghaorui committed
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213
    }

    @Override
    public void initDataAndEvent() {

    }

    @Override
    public void initDataAndEventLazy() {
        rxPermissions = new RxPermissions(getActivity());
        imgFiles = new ArrayList<File>();
        initView();
        uiHandler = new Handler();
        initEvent();
        Intent intent = activity.getIntent();
        Bundle bundle = intent.getBundleExtra("bundle");
        publish_type = bundle.getString(DynamicConstants.PUBLISH_TYPE);
        if (TextUtils.equals(type, TYPE_TREND)) {//测试结果默认在动态页面展示
            Test_url = bundle.getString("Test_url");
            Test_cover = bundle.getString("Test_cover");
            Test_title = bundle.getString("Test_title");
            isFromFm = bundle.getInt("isfromfm", 0);
        }
        if ("home_publish".equals(publish_type)) {// 从首页进来的发布
            topic_id = bundle.getString("topic_ic");
            topic_title = bundle.getString("topic_title");
            publish_trend_bottom_topic_tv.setVisibility(View.VISIBLE);
            publish_trend_bottom_topic_tv.setText("# " + topic_title);
214
            publish_trend_bottom_topic_tv.setTextColor(ContextCompat.getColor(activity, R.color.platform_main_theme));
konghaorui committed
215 216 217 218 219
        } else if ("topic_publish".equals(publish_type)) {// 从话题详情进来的发布
            topic_id = bundle.getString("topic_id");
            topic_title = bundle.getString("topic_title");
            publish_trend_bottom_topic_tv.setVisibility(View.VISIBLE);
            publish_trend_bottom_topic_tv.setText("# " + topic_title);
220
            publish_trend_bottom_topic_tv.setTextColor(ContextCompat.getColor(activity, R.color.platform_main_theme));
konghaorui committed
221 222 223 224 225 226 227 228 229 230
        } else if ("default_publish".equals(publish_type)) {// 默认发布类型
            publish_trend_bottom_topic_tv.setVisibility(View.VISIBLE);
        }

        publishTrendImgs = new ArrayList<>();
        if (!"".equals(Test_url) && Test_url != null && !"".equals(Test_cover) && Test_cover != null && !"".equals(Test_title) && Test_title != null) {
            publish_trend_img_rcv.setVisibility(View.GONE);
            publish_trend_ad_rel.setVisibility(View.VISIBLE);
            GlideApp.with(activity)
                    .load(Test_cover)
konghaorui committed
231 232
                    .placeholder(R.drawable.dynamic_default_img)
                    .error(R.drawable.dynamic_default_img)
konghaorui committed
233 234 235 236 237 238 239 240 241 242
                    .into(publish_trend_ad_iv);
            publish_trend_ad_tv.setText(Test_title);
            if (isFromFm == 1) {
                iv_fm.setVisibility(View.VISIBLE);
            } else {
                iv_fm.setVisibility(View.GONE);
            }
        } else {
            publish_trend_img_rcv.setVisibility(View.VISIBLE);
            publish_trend_ad_rel.setVisibility(View.GONE);
konghaorui committed
243
            publish_trend_bottom_img_iv.setImageResource(R.drawable.dynamic_edit_img);
konghaorui committed
244 245 246
            head_dir = RxFileTool.getStorageDirectory(activity) + "/img/publish_img/";

            if (adapter == null) {
247
                adapter = new PublishImageAdapter(publishTrendImgs, activity);
konghaorui committed
248 249 250 251 252
            } else {
                adapter.notifyDataSetChanged();
            }
            publish_trend_img_rcv.setLayoutManager(new GridLayoutManager(activity, 4));
            publish_trend_img_rcv.setAdapter(adapter);
253
            adapter.setOnItemClickLister(new PublishImageAdapter.OnItemClickLister() {
konghaorui committed
254 255
                @Override
                public void onItemClick(View view, int position) {
256
                    publishTrendImgBrows = new ArrayList<ParcelableImage>();
konghaorui committed
257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291
                    publishTrendImgBrows.clear();
                    publishTrendImgBrows.addAll(publishTrendImgs);
                    if (publishTrendImgBrows.size() < 9) {
                        publishTrendImgBrows.remove(publishTrendImgBrows.size() - 1);
                        if (publishTrendImgBrows.size() > 0) {
                            Intent intent = new Intent();
                            intent.setClass(activity, BrowsePicturesActivity.class);
                            intent.putExtra("browse_type", "preview");
                            intent.putExtra("position", position);
                            Bundle bd = new Bundle();
                            bd.putParcelableArrayList("allTrendImages", (ArrayList<? extends Parcelable>) publishTrendImgBrows);
                            intent.putExtra("allTrendImages_bd", bd);
                            startActivityForResult(intent, DynamicConstants.PUBLISH_PIC_BROW);
                        }
                    } else {
                        if ("default".equals(publishTrendImgBrows.get(8).getImage_url())) {
                            publishTrendImgBrows.remove(8);
                        }
                        Intent intent = new Intent();
                        intent.setClass(activity, BrowsePicturesActivity.class);
                        intent.putExtra("browse_type", "preview");
                        intent.putExtra("position", position);
                        Bundle bd = new Bundle();
                        bd.putParcelableArrayList("allTrendImages", (ArrayList<? extends Parcelable>) publishTrendImgBrows);
                        intent.putExtra("allTrendImages_bd", bd);
                        startActivityForResult(intent, DynamicConstants.PUBLISH_PIC_BROW);
                    }

                }

                @Override
                public void onItemLongClick(View view, int position) {

                }
            });
292
            adapter.setOnDeleteClickLister(new PublishImageAdapter.OnDeleteClickLister() {
konghaorui committed
293 294 295 296 297 298 299 300 301 302
                @Override
                public void onDeleteClick(View view, int position) {
                    DeleteImg(position);
                }

                @Override
                public void onDeleteLongClick(View view, int position) {

                }
            });
303
            adapter.setOnAddClickLister(new PublishImageAdapter.OnAddClickLister() {
konghaorui committed
304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352
                @Override
                public void OnAddClick(View view, int position) {
                    if (publishTrendImgs.size() < 9) {
                        showSelector();
                    } else {
                        if ("default".equals(publishTrendImgs.get(8).getImage_url())) {
                            showSelector();
                        } else {
                            YdlCommonOut.Companion.showToast("最多选择9张照片");
                        }
                    }

                }

                @Override
                public void OnAddLongClick(View view, int position) {

                }
            });
        }
    }

    private void initView() {
        publish_trend_ad_rel = getRootView().findViewById(R.id.publish_trend_ad_rel);
        iv_fm = getRootView().findViewById(R.id.iv_fm);
        publish_trend_ad_iv = getRootView().findViewById(R.id.publish_trend_ad_iv);
        publish_trend_ad_tv = getRootView().findViewById(R.id.publish_trend_ad_tv);
        publish_anonymity_iv = getRootView().findViewById(R.id.publish_anonymity_iv);
        publish_trend_content_num_tv = getRootView().findViewById(R.id.publish_trend_content_num_tv);
        publish_trend_bottom_topic_tv = getRootView().findViewById(R.id.publish_trend_bottom_topic_tv);
        publish_trend_title_editext = getRootView().findViewById(R.id.publish_trend_title_editext);
        publish_trend_content_editext = getRootView().findViewById(R.id.publish_trend_content_editext);
        publish_trend_img_rcv = getRootView().findViewById(R.id.publish_trend_img_rcv);
        publish_trend_bottom_img_iv = getRootView().findViewById(R.id.publish_trend_bottom_img_iv);
        publish_anonymity_rel = getRootView().findViewById(R.id.publish_anonymity_rel);
        ll_to_expert = getRootView().findViewById(R.id.ll_to_expert);
        iv_to_expert = getRootView().findViewById(R.id.iv_to_expert);
        publish_emoji_iv = getRootView().findViewById(R.id.publish_emoji_iv);
        publish_trend_title_editext.addTextChangedListener(textWatcher1);
        publish_trend_content_editext.addTextChangedListener(textWatcher2);
        emoticon_picker_view = getRootView().findViewById(R.id.emoticon_picker_view);
        publish_trend_content_editext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE);
        publish_trend_title_editext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    // 此处为得到焦点时的处理内容
                    writeing_title = true;
                    hideEmojiLayout();
konghaorui committed
353
                    publish_emoji_iv.setImageResource(R.drawable.dynamic_edict_ico_emoji_dis);
konghaorui committed
354 355 356 357 358
                } else {
                    // 此处为失去焦点时的处理内容
                    writeing_title = false;
                    if (writeing_title == false && ("".equals(Test_url) || Test_url == null || "".equals(Test_cover) || Test_cover == null ||
                            "".equals(Test_title) || Test_title == null)) {
konghaorui committed
359 360
                        publish_emoji_iv.setImageResource(R.drawable.dynamic_edict_ico_emoji);
                        //                        publish_trend_bottom_img_iv.setImageResource(R.drawable.dynamic_edit_img);
konghaorui committed
361 362 363 364 365 366
                    }
                }
            }
        });
        publish_trend_content_editext.setOnTouchListener((v, event) -> {
            hideEmojiLayout();
konghaorui committed
367
            publish_emoji_iv.setImageResource(R.drawable.dynamic_edict_ico_emoji);
konghaorui committed
368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408
            return false;
        });


        if (TextUtils.equals(type, TYPE_TREND)) {//动态
            publish_trend_title_editext.setVisibility(View.GONE);
            ll_to_expert.setVisibility(View.GONE);
            publish_trend_content_editext.setFilters(new InputFilter[]{new InputFilter.LengthFilter(500)});
            publish_trend_content_num_tv.setText("0/500");
            publish_trend_content_editext.setHint("这一刻的想法…");
        } else {//提问
            publish_trend_title_editext.setVisibility(View.VISIBLE);
            ll_to_expert.setVisibility(View.VISIBLE);
            publish_trend_content_editext.setFilters(new InputFilter[]{new InputFilter.LengthFilter(1000)});
            publish_trend_content_num_tv.setText("0/1000");
            publish_trend_content_editext.setHint("1、清晰描述事情的背景及经过\n" +
                    "2、你想寻求哪方面的帮助\n" +
                    "这样更容易获得咨询师准确、专业的解答哦~");
        }
    }

    private void initEvent() {
        publish_trend_bottom_img_iv.setOnClickListener(this);
        publish_trend_bottom_topic_tv.setOnClickListener(this);
        publish_anonymity_rel.setOnClickListener(this);
        publish_emoji_iv.setOnClickListener(this);
        ll_to_expert.setOnClickListener(this);
    }

    @SuppressLint("WrongConstant")
    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.publish_anonymity_rel) {
            if (is_niming == 1) {//是否匿名:1否,2匿名
                NormalDialog.Builder builder = new NormalDialog.Builder(getActivity());
                builder.setTitle("");
                builder.setMessage("设置匿名后,将会隐藏你的个人头像、昵称");
                builder.setPositiveButton("确定匿名",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
konghaorui committed
409
                                publish_anonymity_iv.setImageResource(R.drawable.dynamic_checkbox_sel);
konghaorui committed
410 411 412 413 414 415 416 417 418 419 420 421 422
                                is_niming = 2;
                                dialog.dismiss();
                            }
                        });
                builder.setNegativeButton("公开",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        });
                builder.create().show();
            } else {
konghaorui committed
423
                publish_anonymity_iv.setImageResource(R.drawable.dynamic_checkbox);
konghaorui committed
424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449
                is_niming = 1;
            }
        } else if (v.getId() == R.id.publish_trend_bottom_img_iv) {
            if (("".equals(Test_url) || Test_url == null || "".equals(Test_cover) || Test_cover == null ||
                    "".equals(Test_title) || Test_title == null)) {
                if (publishTrendImgs.size() < 9) {
                    showSelector();
                } else {
                    if ("default".equals(publishTrendImgs.get(8).getImage_url())) {
                        showSelector();
                    } else {
                        YdlCommonOut.Companion.showToast("最多选择9张照片");
                    }
                }
            }
        } else if (v.getId() == R.id.publish_trend_bottom_topic_tv) {
            Intent intent = new Intent();
            intent.setClass(getActivity(), SelecTopicActivity.class);
            startActivityForResult(intent, DynamicConstants.REQUEST_CODE_SELECT_TOPIC);
        } else if (v.getId() == R.id.publish_emoji_iv) {
            if (writeing_title == false) {
                toggleEmojiLayout();
            }
        } else if (v.getId() == R.id.ll_to_expert) {//仅对专家可见
            if (isDoctorShow == 1) {
                isDoctorShow = 2;
konghaorui committed
450
                iv_to_expert.setImageResource(R.drawable.dynamic_checkbox);
konghaorui committed
451 452
            } else {
                isDoctorShow = 1;
konghaorui committed
453
                iv_to_expert.setImageResource(R.drawable.dynamic_checkbox_sel);
konghaorui committed
454 455 456 457 458 459 460 461 462 463 464 465 466 467
            }
        }
    }

    /**
     * 发布
     */
    public void publish() {
        String trend_title = publish_trend_title_editext.getText().toString();
        content = publish_trend_content_editext.getText().toString().trim();
        String phone = DynamicIn.INSTANCE.getUserInfo().getPhone();
        if ("".equals(phone) || phone == null) {
            NormalDialog.Builder builder = new NormalDialog.Builder(getActivity(), "left", true);
            builder.setTitle("");
konghaorui committed
468
            builder.setMessage(BaseApp.instance.getResources().getString(R.string.dynamic_bindphone));
konghaorui committed
469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504
            builder.setPositiveButton("果断绑定", (dialog, which) -> {
                startActivity(DynamicIn.INSTANCE.inputPhoneIntent(getActivity(), DynamicConstants.BIND_PHONE_ACTION));
                dialog.dismiss();
            });
            builder.setNegativeButton("忍痛放弃", (dialog, which) -> dialog.dismiss());
            builder.create().show();

        } else {
            if (is_publis_ing == false) { //不是在发布中

                //提问时标题字数不能少于5
                if (TextUtils.equals(type, TYPE_QUESTION)) {
                    if (TextUtils.isEmpty(trend_title) || trend_title.length() < 5) {
                        ((PublishTrendActivity) activity).showCoustomToast("标题不能少于5个字哦");
                        return;
                    }
                }
                if (content.length() < 5) {
                    ((PublishTrendActivity) activity).showCoustomToast("输入内容不能少于5个字哦");
                    //                    YdlCommonOut.INSTANCE.showToast("输入内容长度不能少于5");
                } else {
                    if ("".equals(topic_title) || topic_title == null) {
                        //                        YdlCommonOut.INSTANCE.showToast("请点击#号选择话题");
                        ((PublishTrendActivity) activity).showCoustomToast("选择合适的话题会获得更多关注哦~");
                        ObjectAnimator animator1 = ObjectAnimator.ofFloat(publish_trend_bottom_topic_tv, "scaleX", 1f, 1.5f, 1f);
                        ObjectAnimator animator2 = ObjectAnimator.ofFloat(publish_trend_bottom_topic_tv, "scaleY", 1f, 1.5f, 1f);
                        AnimatorSet set = new AnimatorSet();
                        set.setDuration(300);
                        set.playTogether(animator1, animator2);
                        set.start();
                    } else {
                        ShowDialog();
                        is_publis_ing = true;
                        if (!"".equals(Test_url) && Test_url != null && !"".equals(Test_cover) && Test_cover != null && !"".equals(Test_title) && Test_title != null) {
                            PublishO(is_niming, topic_id, content, trend_title, null);
                        } else {
505
                            List<ParcelableImage> publishImgs = new ArrayList<ParcelableImage>();
konghaorui committed
506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638
                            publishImgs.addAll(publishTrendImgs);
                            if (publishTrendImgs.size() < 9 && publishTrendImgs.size() > 1) {
                                publishImgs.remove(publishImgs.size() - 1);
                            } else if (publishTrendImgs.size() == 9) {
                                if ("default".equals(publishTrendImgs.get(8).getImage_url())) {
                                    publishImgs.remove(8);
                                }
                            }

                            if (publishImgs.size() > 0) {
                                DealFile(is_niming, topic_id, content, trend_title, publishImgs);
                            } else {
                                PublishO(is_niming, topic_id, content, trend_title, imgFiles);
                            }
                        }
                    }
                }

            }
        }

    }

    private TextWatcher textWatcher1 = new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                                  int arg3) {
            String editable = publish_trend_title_editext.getText().toString();
            String str = StringUtils.StringFilter(editable.toString());
            if (!editable.equals(str)) {
                publish_trend_title_editext.setText(str);
                publish_trend_title_editext.setSelection(str.length()); //光标置后
            }
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
        }

        @Override
        public void afterTextChanged(Editable arg0) {
        }

    };

    private TextWatcher textWatcher2 = new TextWatcher() {
        private int start;
        private int count;

        @Override
        public void onTextChanged(CharSequence arg0, int start, int before, int count) {
            this.start = start;
            this.count = count;

            String editable = publish_trend_content_editext.getText().toString();
            String str = StringUtils.StringFilter(editable.toString());
            if (!editable.equals(str)) {
                publish_trend_content_editext.setText(str);
                publish_trend_content_editext.setSelection(str.length()); //光标置后
            }

        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int start, int count, int after) {
        }

        @Override
        public void afterTextChanged(Editable arg0) {
            publish_trend_content_editext.removeTextChangedListener(this);
            MoonUtil.replaceEmoticons(getActivity(), arg0, start, count);
            int editEnd = publish_trend_content_editext.getSelectionEnd();
            publish_trend_content_editext.removeTextChangedListener(this);
            while (StringUtils.counterChars(arg0.toString()) > 5000 && editEnd > 0) {
                arg0.delete(editEnd - 1, editEnd);
                editEnd--;
            }
            publish_trend_content_editext.setSelection(editEnd);
            publish_trend_content_editext.addTextChangedListener(this);


            if (TextUtils.equals(type, TYPE_TREND)) {//动态
                publish_trend_content_num_tv.setText(String.valueOf((Integer.valueOf(arg0.toString().length())) + "/500"));
            } else {//提问
                publish_trend_content_num_tv.setText(String.valueOf((Integer.valueOf(arg0.toString().length())) + "/1000"));
            }
        }

    };


    private void ShowDialog() {
        if (loadingDialog != null && loadingDialog.isShowing()) {
            return;
        }

        if (loadingDialog == null) {
            loadingDialog = new AlertDialog.Builder(getActivity()).create();
        }
        loadingDialog.setOnKeyListener((dialog, keyCode, event) -> {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                is_publis_ing = false;
            }
            return false;
        });
        if (dialogContentView == null) {
            dialogContentView = LayoutInflater.from(getActivity()).inflate(R.layout.platform_fragment_loading_dialog, null);
            dialogContentView.findViewById(R.id.tvMsg).setVisibility(View.GONE);
        }

        loadingDialog.show();
        loadingDialog.getWindow().setContentView(dialogContentView);
        WindowManager.LayoutParams p = loadingDialog.getWindow().getAttributes();  //获取对话框当前的参数值
        Point point = new Point();
        getActivity().getWindowManager().getDefaultDisplay().getSize(point);
        p.height = (int) (point.y * 0.2);
        p.width = (int) (point.x * 0.35);
        loadingDialog.getWindow().setAttributes(p);     //设置生效
        loadingDialog.show();
    }


    /**
     * 发布动态
     *
     * @param is_niming        是否匿名
     * @param topic_id         话题id
     * @param content          内容
     * @param trend_title      话题标题
     * @param publishTrendImgs 图片附件
     */
    @SuppressLint("WrongConstant")
639
    private void DealFile(final int is_niming, final String topic_id, final String content, final String trend_title, final List<ParcelableImage> publishTrendImgs) {
konghaorui committed
640 641 642
        imgFiles = new ArrayList<File>();
        Observable.fromIterable(publishTrendImgs)
                .subscribeOn(Schedulers.io())
643 644 645
                .map(parcelableImage -> {
                    LogUtil.d("url: " + parcelableImage.getImage_url());
                    return DealFile2(parcelableImage.getImage_url(), 1500 / publishTrendImgs.size());
konghaorui committed
646 647 648 649 650 651 652 653 654 655 656 657
                })
                .subscribe(file -> {
                    if (file != null) {
                        LogUtil.d("xyutest", "图片压缩后大小: ==>" + file.length() + " file path: " + file.getAbsolutePath());
                        imgFiles.add(file);
                        if (imgFiles.size() == publishTrendImgs.size()) {
                            PublishO(is_niming, topic_id, content, trend_title, imgFiles);
                        }
                    } else {
                        getActivity().runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
konghaorui committed
658
                                //                                    ToastUtil.toastShort(PublishTrendActivity.this, "有图片已被删除");
konghaorui committed
659 660 661 662 663 664 665 666 667 668 669 670 671
                                YdlCommonOut.Companion.showToast("有图片已被删除");
                                loadingDialog.dismiss();
                                loadingDialog = null;
                            }
                        });
                        is_publis_ing = false;
                    }
                });

    }

    private synchronized File DealFile2(final String path, int size) {
        File deal_file = null;
konghaorui committed
672
        deal_file = ImageCompress.scal(getActivity(),path, size);
konghaorui committed
673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return deal_file;
    }

    /**
     * 发布动态(OkHttp)
     *
     * @param is_niming   是否匿名
     * @param topic_id    话题id
     * @param content     内容
     * @param trend_title 话题标题
     * @param imgFiles    图片附件
     */
    private void PublishO(final int is_niming, final String topic_id, final String content, final String trend_title, final List<File> imgFiles) {
        BuryPointUtils.getInstance().createMap()
                .put("dynamic_type", topic_title)
                .put("dynamic_name", trend_title)
                .put("anonymity", is_niming);
        Command.PublishTrend cmd;
        if (!"".equals(Test_url) && Test_url != null && !"".equals(Test_cover) && Test_cover != null && !"".equals(Test_title) && Test_title != null) {
            cmd = new Command.PublishTrend(is_niming, topic_id, content, trend_title, Test_title, Test_cover, Test_url, type, isDoctorShow);
        } else {
            cmd = new Command.PublishTrend(is_niming, topic_id, content, trend_title, type, isDoctorShow);
        }
        File[] files = null;
        if (imgFiles != null) {
            files = new File[imgFiles.size()];
            for (int i = 0; i < imgFiles.size(); i++) {
                files[i] = imgFiles.get(i);
            }
        }

        DynamicApiUtils.publishTrend(cmd, files)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<BaseResponse<PublishTrendResult>>() {
                    @Override
                    public void accept(BaseResponse<PublishTrendResult> resp) {
                        is_publis_ing = false;
                        loadingDialog.dismiss();
                        if (resp.code == 0) {
                            BuryPointUtils.getInstance().put("publish_succeed", true).burryPoint("publishButtonClick");
                            YdlCommonOut.Companion.showToast("发布成功");
                            SharedPreferencesEditor.putString("trend_state", "success");
                            getActivity().finish();
                            publish_trend_content_editext.setText(null);
                            publish_trend_title_editext.setText(null);
                        } else if (resp.code == DynamicConstants.SILENCED_CODE) {  //被禁言
                            showUserSliencedDialog(resp.data);
                        } else {
                            BuryPointUtils.getInstance().put("publish_succeed", false).burryPoint("publishButtonClick");
                            YdlCommonOut.Companion.showToast(resp.msg);
                        }
                    }
                }, new Consumer<Throwable>() {
                    @Override
                    public void accept(Throwable throwable) {
                        BuryPointUtils.getInstance().put("publish_succeed", false).burryPoint("publishButtonClick");
                        loadingDialog.dismiss();
                        is_publis_ing = false;
                        DynamicApiUtils.handleError(getActivity(), throwable);
                    }
                });
    }


    @Override
    public void onEmojiSelected(String key) {
        Editable mEditable = publish_trend_content_editext.getText();
        if (key.equals("/DEL")) {
            publish_trend_content_editext.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL));
        } else {
            int start = publish_trend_content_editext.getSelectionStart();
            int end = publish_trend_content_editext.getSelectionEnd();
            start = (start < 0 ? 0 : start);
            end = (start < 0 ? 0 : end);
            mEditable.replace(start, end, key);
        }
    }


    private void showSelector() {
konghaorui committed
759 760 761
        int selectedSize = publishTrendImgs.size()!=0?publishTrendImgs.size()-1:0;

        YDLImagePicker.INSTANCE.startPicker((BaseActivity) activity, 9 - selectedSize,new OnResultCallbackListener() {
konghaorui committed
762
            @Override
konghaorui committed
763 764
            public void onResult(List<LocalMedia> list) {
                if (list.isEmpty()) {
konghaorui committed
765 766
                    return;
                }
konghaorui committed
767
                for (int i = 0; i < list.size(); i++) {
768
                    AddImag(list.get(i).getAndroidQToPath());
konghaorui committed
769 770 771 772
                }
            }

            @Override
konghaorui committed
773
            public void onCancel() {
konghaorui committed
774 775 776 777 778 779 780 781

            }
        });
    }

    private void showUserSliencedDialog(PublishTrendResult resp) {
        CommonDialog.create(getActivity())
                .setMessage(resp.tips)
konghaorui committed
782
                .setLeftOnclick(getActivity().getString(R.string.dynamic_details), new View.OnClickListener() {
konghaorui committed
783 784 785 786 787 788 789
                    @Override
                    public void onClick(View v) {
                        String realUrl = TextUtils.isEmpty(resp.url) ? DynamicConstants.HELP_URL : resp.url;
                        H5Params params = new H5Params(realUrl, "");
                        NewH5Activity.start(getActivity(), params);
                    }
                })
konghaorui committed
790
                .setRightClick(getActivity().getString(R.string.dynamic_approval), new View.OnClickListener() {
konghaorui committed
791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814
                    @Override
                    public void onClick(View v) {

                    }
                })
                .setCancelAble(true)
                .show();
    }

    @SuppressLint("WrongConstant")
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == getActivity().RESULT_OK) {
            switch (requestCode) {
                case DynamicConstants.PUBLISH_PIC_BROW:
                    if (data == null) {
                        break;
                    }
                    boolean chane_state = data.getBooleanExtra("chane_state", false);
                    if (chane_state) {
                        Bundle bundle = data.getBundleExtra("bundle");
                        publishTrendImgs = bundle.getParcelableArrayList("publish_img");
                        if (publishTrendImgs.size() > 0) {
815
                            publishTrendImgs.add(new ParcelableImage("default"));
konghaorui committed
816 817 818 819 820 821 822 823 824 825 826 827 828 829
                        }
                        adapter.updateDate(publishTrendImgs);
                    }
                    break;
                case DynamicConstants.REQUEST_CODE_SELECT_TOPIC://选择话题
                    String type = data.getStringExtra("type");
                    if ("topic_select".equals(type)) {
                        Bundle bd = data.getBundleExtra("bundle");
                        if (bd != null) {
                            topic_id = bd.getString("topic_id");
                            topic_title = bd.getString("topic_title");
                        }
                        publish_trend_bottom_topic_tv.setVisibility(View.VISIBLE);
                        publish_trend_bottom_topic_tv.setText("# " + topic_title);
830
                        publish_trend_bottom_topic_tv.setTextColor(ContextCompat.getColor(activity, R.color.platform_main_theme));
konghaorui committed
831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849
                        // 获取编辑框焦点
                        publish_trend_content_editext.setFocusable(true);

                        hideEmojiLayout();
                        //打开软键盘
                        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                        imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
                    }
                    break;
            }
        }
    }

    private static final String MIME_JPEG = "image/jpeg";

    /**
     * 添加照片
     */
    private void AddImag(String pic_path) {
850
        ParcelableImage trendImage = new ParcelableImage(pic_path);
konghaorui committed
851 852 853
        if (publishTrendImgs.size() < 9 && publishTrendImgs.size() > 0) {
            publishTrendImgs.add(publishTrendImgs.size() - 1, trendImage);
        } else if (publishTrendImgs.size() == 0) {
854
            publishTrendImgs.add(new ParcelableImage("default"));
konghaorui committed
855 856 857 858 859 860 861 862 863 864 865 866 867
            publishTrendImgs.add(publishTrendImgs.size() - 1, trendImage);
        } else {
            publishTrendImgs.remove(8);
            publishTrendImgs.add(8, trendImage);
        }
        adapter.updateDate(publishTrendImgs);
    }

    // 点击表情,切换到表情布局
    @SuppressLint("WrongConstant")
    private void toggleEmojiLayout() {
        if (emoticon_picker_view == null || emoticon_picker_view.getVisibility() == View.GONE) {
            showEmojiLayout();
konghaorui committed
868
            //            publish_emoji_iv.setImageResource(R.drawable.dynamic_edict_ico_key);
konghaorui committed
869 870 871
        } else {
            hideEmojiLayout();
            showInputMethod(publish_trend_content_editext);
konghaorui committed
872
            publish_emoji_iv.setImageResource(R.drawable.dynamic_edict_ico_emoji);
konghaorui committed
873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954
        }
    }


    // 隐藏表情布局
    @SuppressLint("WrongConstant")
    public void hideEmojiLayout() {
        uiHandler.removeCallbacks(showEmojiRunnable);
        if (emoticon_picker_view != null) {
            emoticon_picker_view.setVisibility(View.GONE);
        }
        emojilayot_ishow = false;
    }

    /**
     * 获取当前emoji表情布局显示状态
     *
     * @return
     */
    public boolean getEmojiLayoutIsShow() {
        return emojilayot_ishow;
    }

    private Runnable showEmojiRunnable = new Runnable() {
        @SuppressLint("WrongConstant")
        @Override
        public void run() {
            emoticon_picker_view.setVisibility(View.VISIBLE);
        }
    };
    private Runnable showTextRunnable = new Runnable() {
        @Override
        public void run() {
            showInputMethod(publish_trend_content_editext);
        }
    };

    // 显示表情布局
    @SuppressLint("WrongConstant")
    private void showEmojiLayout() {
        hideInputMethod();
        publish_trend_content_editext.requestFocus();
        emoticon_picker_view.setVisibility(View.VISIBLE);
        emoticon_picker_view.show(this);
        emojilayot_ishow = true;
    }

    // 隐藏键盘布局
    private void hideInputMethod() {
        isKeyboardShowed = false;
        uiHandler.removeCallbacks(showTextRunnable);
        @SuppressLint("WrongConstant") InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(publish_trend_content_editext.getWindowToken(), 0);
        publish_trend_content_editext.clearFocus();
    }

    // 显示键盘布局
    private void showInputMethod(EditText editTextMessage) {
        editTextMessage.requestFocus();
        //如果已经显示,则继续操作时不需要把光标定位到最后
        if (!isKeyboardShowed) {
            editTextMessage.setSelection(editTextMessage.getText().length());
            isKeyboardShowed = true;
        }

        @SuppressLint("WrongConstant") InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(editTextMessage, 0);
    }

    /**
     * 删除照片
     */
    private void DeleteImg(int position) {
        if (publishTrendImgs.size() < 9 && publishTrendImgs.size() > 2) {
            publishTrendImgs.remove(position);
        } else if (publishTrendImgs.size() == 2) {
            publishTrendImgs.clear();
        } else {
            if ("default".equals(publishTrendImgs.get(8).getImage_url())) {
                publishTrendImgs.remove(position);
            } else {
                publishTrendImgs.remove(position);
955
                publishTrendImgs.add(8, new ParcelableImage("default"));
konghaorui committed
956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973
            }

        }
        adapter.updateDate(publishTrendImgs);
    }

    /**
     * 退出发布
     */
    private void ExitPublish() {
        activity.finish();
    }

    @Override
    public void onStickerSelected(String categoryName, String stickerName) {

    }
}