ModelSettingFragment.java 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751
  1. package com.github.tvbox.osc.ui.fragment;
  2. import android.content.DialogInterface;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.TextView;
  7. import android.widget.Toast;
  8. import androidx.annotation.NonNull;
  9. import androidx.recyclerview.widget.DiffUtil;
  10. import com.github.tvbox.osc.R;
  11. import com.github.tvbox.osc.api.ApiConfig;
  12. import com.github.tvbox.osc.base.BaseActivity;
  13. import com.github.tvbox.osc.base.BaseLazyFragment;
  14. import com.github.tvbox.osc.bean.IJKCode;
  15. import com.github.tvbox.osc.bean.SourceBean;
  16. import com.github.tvbox.osc.event.RefreshEvent;
  17. import com.github.tvbox.osc.player.thirdparty.RemoteTVBox;
  18. import com.github.tvbox.osc.ui.activity.HomeActivity;
  19. import com.github.tvbox.osc.ui.activity.SettingActivity;
  20. import com.github.tvbox.osc.ui.adapter.SelectDialogAdapter;
  21. import com.github.tvbox.osc.ui.dialog.AboutDialog;
  22. import com.github.tvbox.osc.ui.dialog.ApiDialog;
  23. import com.github.tvbox.osc.ui.dialog.BackupDialog;
  24. import com.github.tvbox.osc.ui.dialog.SearchRemoteTvDialog;
  25. import com.github.tvbox.osc.ui.dialog.SelectDialog;
  26. import com.github.tvbox.osc.ui.dialog.XWalkInitDialog;
  27. import com.github.tvbox.osc.util.FastClickCheckUtil;
  28. import com.github.tvbox.osc.util.HawkConfig;
  29. import com.github.tvbox.osc.util.HistoryHelper;
  30. import com.github.tvbox.osc.util.OkGoHelper;
  31. import com.github.tvbox.osc.util.PlayerHelper;
  32. import com.lzy.okgo.OkGo;
  33. import com.lzy.okgo.callback.FileCallback;
  34. import com.lzy.okgo.model.Progress;
  35. import com.lzy.okgo.model.Response;
  36. import com.orhanobut.hawk.Hawk;
  37. import com.github.tvbox.osc.ui.adapter.ApiHistoryDialogAdapter;
  38. import com.github.tvbox.osc.ui.dialog.ApiHistoryDialog;
  39. import org.greenrobot.eventbus.EventBus;
  40. import org.jetbrains.annotations.NotNull;
  41. import java.io.File;
  42. import java.util.ArrayList;
  43. import java.util.List;
  44. import okhttp3.HttpUrl;
  45. import tv.danmaku.ijk.media.player.IjkMediaPlayer;
  46. /**
  47. * @author pj567
  48. * @date :2020/12/23
  49. * @description:
  50. */
  51. public class ModelSettingFragment extends BaseLazyFragment {
  52. private TextView tvDebugOpen;
  53. private TextView tvMediaCodec;
  54. private TextView tvParseWebView;
  55. private TextView tvPlay;
  56. private TextView tvRender;
  57. private TextView tvScale;
  58. private TextView tvApi;
  59. private TextView tvHomeApi;
  60. private TextView tvDns;
  61. private TextView tvHomeRec;
  62. private TextView tvHistoryNum;
  63. private TextView tvSearchView;
  64. private TextView tvShowPreviewText;
  65. private TextView tvFastSearchText;
  66. private TextView tvRecStyleText;
  67. private TextView tvHomeShow;
  68. ///private TextView tvLocale;
  69. private TextView tvPIP;
  70. public static ModelSettingFragment newInstance() {
  71. return new ModelSettingFragment().setArguments();
  72. }
  73. public ModelSettingFragment setArguments() {
  74. return this;
  75. }
  76. @Override
  77. protected int getLayoutResID() {
  78. return R.layout.fragment_model;
  79. }
  80. @Override
  81. protected void init() {
  82. tvPIP = findViewById(R.id.tvPIP);
  83. tvPIP.setText(Hawk.get(HawkConfig.PIC_IN_PIC, false) ? "开启" : "关闭");
  84. //tvLocale = findViewById(R.id.tvLocale);
  85. //tvLocale.setText(getLocaleView(Hawk.get(HawkConfig.HOME_LOCALE, 0)));
  86. tvHomeShow = findViewById(R.id.tvHomeShow);
  87. tvHomeShow.setText(Hawk.get(HawkConfig.HOME_SHOW_SOURCE, false) ? "开启" : "关闭");
  88. tvFastSearchText = findViewById(R.id.showFastSearchText);
  89. tvFastSearchText.setText(Hawk.get(HawkConfig.FAST_SEARCH_MODE, false) ? "已开启" : "已关闭");
  90. tvRecStyleText = findViewById(R.id.showRecStyleText);
  91. tvRecStyleText.setText(Hawk.get(HawkConfig.HOME_REC_STYLE, false) ? "是" : "否");
  92. tvShowPreviewText = findViewById(R.id.showPreviewText);
  93. tvShowPreviewText.setText(Hawk.get(HawkConfig.SHOW_PREVIEW, true) ? "开启" : "关闭");
  94. tvDebugOpen = findViewById(R.id.tvDebugOpen);
  95. tvParseWebView = findViewById(R.id.tvParseWebView);
  96. tvMediaCodec = findViewById(R.id.tvMediaCodec);
  97. tvPlay = findViewById(R.id.tvPlay);
  98. tvRender = findViewById(R.id.tvRenderType);
  99. tvScale = findViewById(R.id.tvScaleType);
  100. tvApi = findViewById(R.id.tvApi);
  101. tvHomeApi = findViewById(R.id.tvHomeApi);
  102. tvDns = findViewById(R.id.tvDns);
  103. tvHomeRec = findViewById(R.id.tvHomeRec);
  104. tvHistoryNum = findViewById(R.id.tvHistoryNum);
  105. tvSearchView = findViewById(R.id.tvSearchView);
  106. tvMediaCodec.setText(Hawk.get(HawkConfig.IJK_CODEC, ""));
  107. tvDebugOpen.setText(Hawk.get(HawkConfig.DEBUG_OPEN, false) ? "已打开" : "已关闭");
  108. tvParseWebView.setText(Hawk.get(HawkConfig.PARSE_WEBVIEW, true) ? "系统自带" : "XWalkView");
  109. tvApi.setText(Hawk.get(HawkConfig.API_URL, ""));
  110. tvDns.setText(OkGoHelper.dnsHttpsList.get(Hawk.get(HawkConfig.DOH_URL, 0)));
  111. tvHomeRec.setText(getHomeRecName(Hawk.get(HawkConfig.HOME_REC, 0)));
  112. tvHistoryNum.setText(HistoryHelper.getHistoryNumName(Hawk.get(HawkConfig.HISTORY_NUM, 0)));
  113. tvSearchView.setText(getSearchView(Hawk.get(HawkConfig.SEARCH_VIEW, 0)));
  114. tvHomeApi.setText(ApiConfig.get().getHomeSourceBean().getName());
  115. tvScale.setText(PlayerHelper.getScaleName(Hawk.get(HawkConfig.PLAY_SCALE, 0)));
  116. tvPlay.setText(PlayerHelper.getPlayerName(Hawk.get(HawkConfig.PLAY_TYPE, 0)));
  117. tvRender.setText(PlayerHelper.getRenderName(Hawk.get(HawkConfig.PLAY_RENDER, 0)));
  118. findViewById(R.id.llDebug).setOnClickListener(new View.OnClickListener() {
  119. @Override
  120. public void onClick(View v) {
  121. FastClickCheckUtil.check(v);
  122. Hawk.put(HawkConfig.DEBUG_OPEN, !Hawk.get(HawkConfig.DEBUG_OPEN, false));
  123. tvDebugOpen.setText(Hawk.get(HawkConfig.DEBUG_OPEN, false) ? "已打开" : "已关闭");
  124. }
  125. });
  126. //数据显示
  127. // Switch to show / hide source header --------------------------
  128. findViewById(R.id.llHomeShow).setOnClickListener(new View.OnClickListener() {
  129. @Override
  130. public void onClick(View v) {
  131. FastClickCheckUtil.check(v);
  132. Hawk.put(HawkConfig.HOME_SHOW_SOURCE, !Hawk.get(HawkConfig.HOME_SHOW_SOURCE, false));
  133. tvHomeShow.setText(Hawk.get(HawkConfig.HOME_SHOW_SOURCE, true) ? "开启" : "关闭");
  134. }
  135. });
  136. //画中画
  137. // Switch to ON / OFF Picture-In-Picture -------------------------
  138. findViewById(R.id.llPIP).setOnClickListener(new View.OnClickListener() {
  139. @Override
  140. public void onClick(View v) {
  141. FastClickCheckUtil.check(v);
  142. Hawk.put(HawkConfig.PIC_IN_PIC, !Hawk.get(HawkConfig.PIC_IN_PIC, false));
  143. tvPIP.setText(Hawk.get(HawkConfig.PIC_IN_PIC, true) ? "开启" : "关闭");
  144. }
  145. });
  146. //历史配置列表
  147. findViewById(R.id.apiHistory).setOnClickListener(new View.OnClickListener() {
  148. @Override
  149. public void onClick(View v) {
  150. ArrayList<String> history = Hawk.get(HawkConfig.API_HISTORY, new ArrayList<String>());
  151. if (history.isEmpty())
  152. return;
  153. String current = Hawk.get(HawkConfig.API_URL, "");
  154. int idx = 0;
  155. if (history.contains(current))
  156. idx = history.indexOf(current);
  157. ApiHistoryDialog dialog = new ApiHistoryDialog(getContext());
  158. dialog.setTip("历史配置列表");
  159. dialog.setAdapter(new ApiHistoryDialogAdapter.SelectDialogInterface() {
  160. @Override
  161. public void click(String value) {
  162. inputApi.setText(value);
  163. listener.onchange(value);
  164. dialog.dismiss();
  165. }
  166. @Override
  167. public void del(String value, ArrayList<String> data) {
  168. Hawk.put(HawkConfig.API_HISTORY, data);
  169. }
  170. }, history, idx);
  171. dialog.show();
  172. }
  173. });
  174. findViewById(R.id.storagePermission).setOnClickListener(new View.OnClickListener() {
  175. @Override
  176. public void onClick(View v) {
  177. if (XXPermissions.isGranted(getContext(), Permission.Group.STORAGE)) {
  178. Toast.makeText(getContext(), "已获得存储权限", Toast.LENGTH_SHORT).show();
  179. } else {
  180. XXPermissions.with(getContext())
  181. .permission(Permission.Group.STORAGE)
  182. .request(new OnPermissionCallback() {
  183. @Override
  184. public void onGranted(List<String> permissions, boolean all) {
  185. if (all) {
  186. Toast.makeText(getContext(), "已获得存储权限", Toast.LENGTH_SHORT).show();
  187. }
  188. }
  189. @Override
  190. public void onDenied(List<String> permissions, boolean never) {
  191. if (never) {
  192. Toast.makeText(getContext(), "获取存储权限失败,请在系统设置中开启", Toast.LENGTH_SHORT).show();
  193. XXPermissions.startPermissionActivity((Activity) getContext(), permissions);
  194. } else {
  195. Toast.makeText(getContext(), "获取存储权限失败", Toast.LENGTH_SHORT).show();
  196. }
  197. }
  198. });
  199. }
  200. }
  201. });
  202. refreshQRCode();
  203. }
  204. private void refreshQRCode() {
  205. String address = ControlManager.get().getAddress(false);
  206. tvAddress.setText(String.format("手机/电脑扫描上方二维码或者直接浏览器访问地址\n%s", address));
  207. ivQRCode.setImageBitmap(QRCodeGen.generateBitmap(address, AutoSizeUtils.mm2px(getContext(), 300), AutoSizeUtils.mm2px(getContext(), 300)));
  208. }
  209. public void setOnListener(OnListener listener) {
  210. this.listener = listener;
  211. }
  212. OnListener listener = null;
  213. public interface OnListener {
  214. void onchange(String api);
  215. }
  216. }
  217. findViewById(R.id.llParseWebVew).setOnClickListener(new View.OnClickListener() {
  218. @Override
  219. public void onClick(View v) {
  220. FastClickCheckUtil.check(v);
  221. boolean useSystem = !Hawk.get(HawkConfig.PARSE_WEBVIEW, true);
  222. Hawk.put(HawkConfig.PARSE_WEBVIEW, useSystem);
  223. tvParseWebView.setText(Hawk.get(HawkConfig.PARSE_WEBVIEW, true) ? "系统自带" : "XWalkView");
  224. if (!useSystem) {
  225. Toast.makeText(mContext, "注意: XWalkView只适用于部分低Android版本,Android5.0以上推荐使用系统自带", Toast.LENGTH_LONG).show();
  226. XWalkInitDialog dialog = new XWalkInitDialog(mContext);
  227. dialog.setOnListener(new XWalkInitDialog.OnListener() {
  228. @Override
  229. public void onchange() {
  230. }
  231. });
  232. dialog.show();
  233. }
  234. }
  235. });
  236. findViewById(R.id.llBackup).setOnClickListener(new View.OnClickListener() {
  237. @Override
  238. public void onClick(View v) {
  239. FastClickCheckUtil.check(v);
  240. BackupDialog dialog = new BackupDialog(mActivity);
  241. dialog.show();
  242. }
  243. });
  244. findViewById(R.id.llAbout).setOnClickListener(new View.OnClickListener() {
  245. @Override
  246. public void onClick(View v) {
  247. FastClickCheckUtil.check(v);
  248. AboutDialog dialog = new AboutDialog(mActivity);
  249. dialog.show();
  250. }
  251. });
  252. findViewById(R.id.llWp).setOnClickListener(new View.OnClickListener() {
  253. @Override
  254. public void onClick(View v) {
  255. FastClickCheckUtil.check(v);
  256. if (!ApiConfig.get().wallpaper.isEmpty())
  257. OkGo.<File>get(ApiConfig.get().wallpaper).execute(new FileCallback(requireActivity().getFilesDir().getAbsolutePath(), "wp") {
  258. @Override
  259. public void onSuccess(Response<File> response) {
  260. ((BaseActivity) requireActivity()).changeWallpaper(true);
  261. }
  262. @Override
  263. public void onError(Response<File> response) {
  264. super.onError(response);
  265. }
  266. @Override
  267. public void downloadProgress(Progress progress) {
  268. super.downloadProgress(progress);
  269. }
  270. });
  271. }
  272. });
  273. findViewById(R.id.llWpRecovery).setOnClickListener(new View.OnClickListener() {
  274. @Override
  275. public void onClick(View v) {
  276. FastClickCheckUtil.check(v);
  277. File wp = new File(requireActivity().getFilesDir().getAbsolutePath() + "/wp");
  278. if (wp.exists())
  279. wp.delete();
  280. ((BaseActivity) requireActivity()).changeWallpaper(true);
  281. }
  282. });
  283. findViewById(R.id.llHomeApi).setOnClickListener(new View.OnClickListener() {
  284. @Override
  285. public void onClick(View v) {
  286. FastClickCheckUtil.check(v);
  287. List<SourceBean> sites = ApiConfig.get().getSourceBeanList();
  288. if (sites.size() > 0) {
  289. SelectDialog<SourceBean> dialog = new SelectDialog<>(mActivity);
  290. dialog.setTip("请选择首页数据源");
  291. dialog.setAdapter(new SelectDialogAdapter.SelectDialogInterface<SourceBean>() {
  292. @Override
  293. public void click(SourceBean value, int pos) {
  294. ApiConfig.get().setSourceBean(value);
  295. tvHomeApi.setText(ApiConfig.get().getHomeSourceBean().getName());
  296. Intent intent =new Intent(mContext, HomeActivity.class);
  297. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
  298. Bundle bundle = new Bundle();
  299. bundle.putBoolean("useCache", true);
  300. intent.putExtras(bundle);
  301. startActivity(intent);
  302. }
  303. @Override
  304. public String getDisplay(SourceBean val) {
  305. return val.getName();
  306. }
  307. }, new DiffUtil.ItemCallback<SourceBean>() {
  308. @Override
  309. public boolean areItemsTheSame(@NonNull @NotNull SourceBean oldItem, @NonNull @NotNull SourceBean newItem) {
  310. return oldItem == newItem;
  311. }
  312. @Override
  313. public boolean areContentsTheSame(@NonNull @NotNull SourceBean oldItem, @NonNull @NotNull SourceBean newItem) {
  314. return oldItem.getKey().equals(newItem.getKey());
  315. }
  316. }, sites, sites.indexOf(ApiConfig.get().getHomeSourceBean()));
  317. dialog.show();
  318. }
  319. }
  320. });
  321. findViewById(R.id.llDns).setOnClickListener(new View.OnClickListener() {
  322. @Override
  323. public void onClick(View v) {
  324. FastClickCheckUtil.check(v);
  325. int dohUrl = Hawk.get(HawkConfig.DOH_URL, 0);
  326. SelectDialog<String> dialog = new SelectDialog<>(mActivity);
  327. dialog.setTip("请选择安全DNS");
  328. dialog.setAdapter(new SelectDialogAdapter.SelectDialogInterface<String>() {
  329. @Override
  330. public void click(String value, int pos) {
  331. tvDns.setText(OkGoHelper.dnsHttpsList.get(pos));
  332. Hawk.put(HawkConfig.DOH_URL, pos);
  333. String url = OkGoHelper.getDohUrl(pos);
  334. OkGoHelper.dnsOverHttps.setUrl(url.isEmpty() ? null : HttpUrl.get(url));
  335. IjkMediaPlayer.toggleDotPort(pos > 0);
  336. }
  337. @Override
  338. public String getDisplay(String val) {
  339. return val;
  340. }
  341. }, new DiffUtil.ItemCallback<String>() {
  342. @Override
  343. public boolean areItemsTheSame(@NonNull @NotNull String oldItem, @NonNull @NotNull String newItem) {
  344. return oldItem.equals(newItem);
  345. }
  346. @Override
  347. public boolean areContentsTheSame(@NonNull @NotNull String oldItem, @NonNull @NotNull String newItem) {
  348. return oldItem.equals(newItem);
  349. }
  350. }, OkGoHelper.dnsHttpsList, dohUrl);
  351. dialog.show();
  352. }
  353. });
  354. findViewById(R.id.llApi).setOnClickListener(new View.OnClickListener() {
  355. @Override
  356. public void onClick(View v) {
  357. FastClickCheckUtil.check(v);
  358. ApiDialog dialog = new ApiDialog(mActivity);
  359. EventBus.getDefault().register(dialog);
  360. dialog.setOnListener(new ApiDialog.OnListener() {
  361. @Override
  362. public void onchange(String api) {
  363. Hawk.put(HawkConfig.API_URL, api);
  364. tvApi.setText(api);
  365. }
  366. });
  367. dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
  368. @Override
  369. public void onDismiss(DialogInterface dialog) {
  370. ((BaseActivity) mActivity).hideSysBar();
  371. EventBus.getDefault().unregister(dialog);
  372. }
  373. });
  374. dialog.show();
  375. }
  376. });
  377. findViewById(R.id.llMediaCodec).setOnClickListener(new View.OnClickListener() {
  378. @Override
  379. public void onClick(View v) {
  380. List<IJKCode> ijkCodes = ApiConfig.get().getIjkCodes();
  381. if (ijkCodes == null || ijkCodes.size() == 0)
  382. return;
  383. FastClickCheckUtil.check(v);
  384. int defaultPos = 0;
  385. String ijkSel = Hawk.get(HawkConfig.IJK_CODEC, "");
  386. for (int j = 0; j < ijkCodes.size(); j++) {
  387. if (ijkSel.equals(ijkCodes.get(j).getName())) {
  388. defaultPos = j;
  389. break;
  390. }
  391. }
  392. SelectDialog<IJKCode> dialog = new SelectDialog<>(mActivity);
  393. dialog.setTip("请选择IJK解码");
  394. dialog.setAdapter(new SelectDialogAdapter.SelectDialogInterface<IJKCode>() {
  395. @Override
  396. public void click(IJKCode value, int pos) {
  397. value.selected(true);
  398. tvMediaCodec.setText(value.getName());
  399. }
  400. @Override
  401. public String getDisplay(IJKCode val) {
  402. return val.getName();
  403. }
  404. }, new DiffUtil.ItemCallback<IJKCode>() {
  405. @Override
  406. public boolean areItemsTheSame(@NonNull @NotNull IJKCode oldItem, @NonNull @NotNull IJKCode newItem) {
  407. return oldItem == newItem;
  408. }
  409. @Override
  410. public boolean areContentsTheSame(@NonNull @NotNull IJKCode oldItem, @NonNull @NotNull IJKCode newItem) {
  411. return oldItem.getName().equals(newItem.getName());
  412. }
  413. }, ijkCodes, defaultPos);
  414. dialog.show();
  415. }
  416. });
  417. findViewById(R.id.llScale).setOnClickListener(new View.OnClickListener() {
  418. @Override
  419. public void onClick(View v) {
  420. FastClickCheckUtil.check(v);
  421. int defaultPos = Hawk.get(HawkConfig.PLAY_SCALE, 0);
  422. ArrayList<Integer> players = new ArrayList<>();
  423. players.add(0);
  424. players.add(1);
  425. players.add(2);
  426. players.add(3);
  427. players.add(4);
  428. players.add(5);
  429. SelectDialog<Integer> dialog = new SelectDialog<>(mActivity);
  430. dialog.setTip("请选择默认画面缩放");
  431. dialog.setAdapter(new SelectDialogAdapter.SelectDialogInterface<Integer>() {
  432. @Override
  433. public void click(Integer value, int pos) {
  434. Hawk.put(HawkConfig.PLAY_SCALE, value);
  435. tvScale.setText(PlayerHelper.getScaleName(value));
  436. }
  437. @Override
  438. public String getDisplay(Integer val) {
  439. return PlayerHelper.getScaleName(val);
  440. }
  441. }, new DiffUtil.ItemCallback<Integer>() {
  442. @Override
  443. public boolean areItemsTheSame(@NonNull @NotNull Integer oldItem, @NonNull @NotNull Integer newItem) {
  444. return oldItem.intValue() == newItem.intValue();
  445. }
  446. @Override
  447. public boolean areContentsTheSame(@NonNull @NotNull Integer oldItem, @NonNull @NotNull Integer newItem) {
  448. return oldItem.intValue() == newItem.intValue();
  449. }
  450. }, players, defaultPos);
  451. dialog.show();
  452. }
  453. });
  454. findViewById(R.id.llPlay).setOnClickListener(new View.OnClickListener() {
  455. @Override
  456. public void onClick(View v) {
  457. FastClickCheckUtil.check(v);
  458. int playerType = Hawk.get(HawkConfig.PLAY_TYPE, 0);
  459. int defaultPos = 0;
  460. ArrayList<Integer> players = PlayerHelper.getExistPlayerTypes();
  461. ArrayList<Integer> renders = new ArrayList<>();
  462. for(int p = 0; p<players.size(); p++) {
  463. renders.add(p);
  464. if (players.get(p) == playerType) {
  465. defaultPos = p;
  466. }
  467. }
  468. SelectDialog<Integer> dialog = new SelectDialog<>(mActivity);
  469. dialog.setTip("请选择默认播放器");
  470. dialog.setAdapter(new SelectDialogAdapter.SelectDialogInterface<Integer>() {
  471. @Override
  472. public void click(Integer value, int pos) {
  473. Integer thisPlayerType = players.get(pos);
  474. Hawk.put(HawkConfig.PLAY_TYPE, thisPlayerType);
  475. tvPlay.setText(PlayerHelper.getPlayerName(thisPlayerType));
  476. PlayerHelper.init();
  477. }
  478. @Override
  479. public String getDisplay(Integer val) {
  480. Integer playerType = players.get(val);
  481. return PlayerHelper.getPlayerName(playerType);
  482. }
  483. }, new DiffUtil.ItemCallback<Integer>() {
  484. @Override
  485. public boolean areItemsTheSame(@NonNull @NotNull Integer oldItem, @NonNull @NotNull Integer newItem) {
  486. return oldItem.intValue() == newItem.intValue();
  487. }
  488. @Override
  489. public boolean areContentsTheSame(@NonNull @NotNull Integer oldItem, @NonNull @NotNull Integer newItem) {
  490. return oldItem.intValue() == newItem.intValue();
  491. }
  492. }, renders, defaultPos);
  493. dialog.show();
  494. }
  495. });
  496. findViewById(R.id.llRender).setOnClickListener(new View.OnClickListener() {
  497. @Override
  498. public void onClick(View v) {
  499. FastClickCheckUtil.check(v);
  500. int defaultPos = Hawk.get(HawkConfig.PLAY_RENDER, 0);
  501. ArrayList<Integer> renders = new ArrayList<>();
  502. renders.add(0);
  503. renders.add(1);
  504. SelectDialog<Integer> dialog = new SelectDialog<>(mActivity);
  505. dialog.setTip("请选择默认渲染方式");
  506. dialog.setAdapter(new SelectDialogAdapter.SelectDialogInterface<Integer>() {
  507. @Override
  508. public void click(Integer value, int pos) {
  509. Hawk.put(HawkConfig.PLAY_RENDER, value);
  510. tvRender.setText(PlayerHelper.getRenderName(value));
  511. PlayerHelper.init();
  512. }
  513. @Override
  514. public String getDisplay(Integer val) {
  515. return PlayerHelper.getRenderName(val);
  516. }
  517. }, new DiffUtil.ItemCallback<Integer>() {
  518. @Override
  519. public boolean areItemsTheSame(@NonNull @NotNull Integer oldItem, @NonNull @NotNull Integer newItem) {
  520. return oldItem.intValue() == newItem.intValue();
  521. }
  522. @Override
  523. public boolean areContentsTheSame(@NonNull @NotNull Integer oldItem, @NonNull @NotNull Integer newItem) {
  524. return oldItem.intValue() == newItem.intValue();
  525. }
  526. }, renders, defaultPos);
  527. dialog.show();
  528. }
  529. });
  530. findViewById(R.id.llHomeRec).setOnClickListener(new View.OnClickListener() {
  531. @Override
  532. public void onClick(View v) {
  533. FastClickCheckUtil.check(v);
  534. int defaultPos = Hawk.get(HawkConfig.HOME_REC, 0);
  535. ArrayList<Integer> types = new ArrayList<>();
  536. types.add(0);
  537. types.add(1);
  538. types.add(2);
  539. SelectDialog<Integer> dialog = new SelectDialog<>(mActivity);
  540. dialog.setTip("请选择首页列表数据");
  541. dialog.setAdapter(new SelectDialogAdapter.SelectDialogInterface<Integer>() {
  542. @Override
  543. public void click(Integer value, int pos) {
  544. Hawk.put(HawkConfig.HOME_REC, value);
  545. tvHomeRec.setText(getHomeRecName(value));
  546. }
  547. @Override
  548. public String getDisplay(Integer val) {
  549. return getHomeRecName(val);
  550. }
  551. }, new DiffUtil.ItemCallback<Integer>() {
  552. @Override
  553. public boolean areItemsTheSame(@NonNull @NotNull Integer oldItem, @NonNull @NotNull Integer newItem) {
  554. return oldItem.intValue() == newItem.intValue();
  555. }
  556. @Override
  557. public boolean areContentsTheSame(@NonNull @NotNull Integer oldItem, @NonNull @NotNull Integer newItem) {
  558. return oldItem.intValue() == newItem.intValue();
  559. }
  560. }, types, defaultPos);
  561. dialog.show();
  562. }
  563. });
  564. findViewById(R.id.llSearchView).setOnClickListener(new View.OnClickListener() {
  565. @Override
  566. public void onClick(View v) {
  567. FastClickCheckUtil.check(v);
  568. int defaultPos = Hawk.get(HawkConfig.SEARCH_VIEW, 0);
  569. ArrayList<Integer> types = new ArrayList<>();
  570. types.add(0);
  571. types.add(1);
  572. SelectDialog<Integer> dialog = new SelectDialog<>(mActivity);
  573. dialog.setTip("请选择搜索视图");
  574. dialog.setAdapter(new SelectDialogAdapter.SelectDialogInterface<Integer>() {
  575. @Override
  576. public void click(Integer value, int pos) {
  577. Hawk.put(HawkConfig.SEARCH_VIEW, value);
  578. tvSearchView.setText(getSearchView(value));
  579. }
  580. @Override
  581. public String getDisplay(Integer val) {
  582. return getSearchView(val);
  583. }
  584. }, new DiffUtil.ItemCallback<Integer>() {
  585. @Override
  586. public boolean areItemsTheSame(@NonNull @NotNull Integer oldItem, @NonNull @NotNull Integer newItem) {
  587. return oldItem.intValue() == newItem.intValue();
  588. }
  589. @Override
  590. public boolean areContentsTheSame(@NonNull @NotNull Integer oldItem, @NonNull @NotNull Integer newItem) {
  591. return oldItem.intValue() == newItem.intValue();
  592. }
  593. }, types, defaultPos);
  594. dialog.show();
  595. }
  596. });
  597. SettingActivity.callback = new SettingActivity.DevModeCallback() {
  598. @Override
  599. public void onChange() {
  600. findViewById(R.id.llDebug).setVisibility(View.VISIBLE);
  601. }
  602. };
  603. findViewById(R.id.showPreview).setOnClickListener(new View.OnClickListener() {
  604. @Override
  605. public void onClick(View v) {
  606. FastClickCheckUtil.check(v);
  607. Hawk.put(HawkConfig.SHOW_PREVIEW, !Hawk.get(HawkConfig.SHOW_PREVIEW, true));
  608. tvShowPreviewText.setText(Hawk.get(HawkConfig.SHOW_PREVIEW, true) ? "开启" : "关闭");
  609. }
  610. });
  611. findViewById(R.id.llHistoryNum).setOnClickListener(new View.OnClickListener() {
  612. @Override
  613. public void onClick(View v) {
  614. FastClickCheckUtil.check(v);
  615. int defaultPos = Hawk.get(HawkConfig.HISTORY_NUM, 0);
  616. ArrayList<Integer> types = new ArrayList<>();
  617. types.add(0);
  618. types.add(1);
  619. types.add(2);
  620. SelectDialog<Integer> dialog = new SelectDialog<>(mActivity);
  621. dialog.setTip("保留历史记录数量");
  622. dialog.setAdapter(new SelectDialogAdapter.SelectDialogInterface<Integer>() {
  623. @Override
  624. public void click(Integer value, int pos) {
  625. Hawk.put(HawkConfig.HISTORY_NUM, value);
  626. tvHistoryNum.setText(HistoryHelper.getHistoryNumName(value));
  627. }
  628. @Override
  629. public String getDisplay(Integer val) {
  630. return HistoryHelper.getHistoryNumName(val);
  631. }
  632. }, new DiffUtil.ItemCallback<Integer>() {
  633. @Override
  634. public boolean areItemsTheSame(@NonNull @NotNull Integer oldItem, @NonNull @NotNull Integer newItem) {
  635. return oldItem.intValue() == newItem.intValue();
  636. }
  637. @Override
  638. public boolean areContentsTheSame(@NonNull @NotNull Integer oldItem, @NonNull @NotNull Integer newItem) {
  639. return oldItem.intValue() == newItem.intValue();
  640. }
  641. }, types, defaultPos);
  642. dialog.show();
  643. }
  644. });
  645. findViewById(R.id.showFastSearch).setOnClickListener(new View.OnClickListener() {
  646. @Override
  647. public void onClick(View v) {
  648. FastClickCheckUtil.check(v);
  649. Hawk.put(HawkConfig.FAST_SEARCH_MODE, !Hawk.get(HawkConfig.FAST_SEARCH_MODE, false));
  650. tvFastSearchText.setText(Hawk.get(HawkConfig.FAST_SEARCH_MODE, false) ? "已开启" : "已关闭");
  651. }
  652. });
  653. findViewById(R.id.llHomeRecStyle).setOnClickListener(new View.OnClickListener() {
  654. @Override
  655. public void onClick(View v) {
  656. FastClickCheckUtil.check(v);
  657. Hawk.put(HawkConfig.HOME_REC_STYLE, !Hawk.get(HawkConfig.HOME_REC_STYLE, false));
  658. tvRecStyleText.setText(Hawk.get(HawkConfig.HOME_REC_STYLE, false) ? "是" : "否");
  659. }
  660. });
  661. findViewById(R.id.llSearchTv).setOnClickListener(new View.OnClickListener() {
  662. @Override
  663. public void onClick(View view) {
  664. FastClickCheckUtil.check(view);
  665. loadingSearchRemoteTvDialog = new SearchRemoteTvDialog(mActivity);
  666. EventBus.getDefault().register(loadingSearchRemoteTvDialog);
  667. loadingSearchRemoteTvDialog.setTip("搜索附近TVBox");
  668. loadingSearchRemoteTvDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
  669. @Override
  670. public void onDismiss(DialogInterface dialogInterface) {
  671. EventBus.getDefault().unregister(loadingSearchRemoteTvDialog);
  672. }
  673. });
  674. loadingSearchRemoteTvDialog.show();
  675. RemoteTVBox tv = new RemoteTVBox();
  676. remoteTvHostList = new ArrayList<>();
  677. foundRemoteTv = false;
  678. view.postDelayed(new Runnable() {
  679. @Override
  680. public void run() {
  681. new Thread(new Runnable() {
  682. @Override
  683. public void run() {
  684. RemoteTVBox.searchAvalible(tv.new Callback() {
  685. @Override
  686. public void found(String viewHost, boolean end) {
  687. remoteTvHostList.add(viewHost);
  688. if (end) {
  689. foundRemoteTv = true;
  690. EventBus.getDefault().post(new RefreshEvent(RefreshEvent.TYPE_SETTING_SEARCH_TV));
  691. }
  692. }
  693. @Override
  694. public void fail(boolean all, boolean end) {
  695. if (end) {
  696. if (all) {
  697. foundRemoteTv = false;
  698. } else {
  699. foundRemoteTv = true;
  700. }
  701. EventBus.getDefault().post(new RefreshEvent(RefreshEvent.TYPE_SETTING_SEARCH_TV));
  702. }
  703. }
  704. });
  705. }
  706. }).start();
  707. }
  708. }, 500);
  709. }
  710. });
  711. }
  712. public static SearchRemoteTvDialog loadingSearchRemoteTvDialog;
  713. public static List<String> remoteTvHostList;
  714. public static boolean foundRemoteTv;
  715. @Override
  716. public void onDestroyView() {
  717. super.onDestroyView();
  718. SettingActivity.callback = null;
  719. }
  720. String getHomeRecName(int type) {
  721. if (type == 1) {
  722. return "站点推荐";
  723. } else if (type == 2) {
  724. return "观看历史";
  725. } else {
  726. return "豆瓣热播";
  727. }
  728. }
  729. String getSearchView(int type) {
  730. if (type == 0) {
  731. return "文字列表";
  732. } else {
  733. return "缩略图";
  734. }
  735. }
  736. }