package moe.shizuku.fcmformojo.settings; import android.app.ActionBar; import android.content.SharedPreferences; import android.os.Bundle; import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.ViewGroup; import android.widget.Toast; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; import moe.shizuku.fcmformojo.FFMApplication; import moe.shizuku.fcmformojo.FFMSettings; import moe.shizuku.fcmformojo.R; import moe.shizuku.fcmformojo.utils.LocalBroadcast; import moe.shizuku.fcmformojo.utils.ViewUtils; import static moe.shizuku.fcmformojo.FFMApplication.FFMService; /** * Created by rikka on 2017/8/21. */ public class ServerSettingsFragment extends SettingsFragment { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { super.onCreatePreferences(savedInstanceState, rootKey); addPreferencesFromResource(R.xml.manage_server); findPreference("restart_webqq").setOnPreferenceClickListener(preference -> { preference.setEnabled(false); restart(); return true; }); findPreference("stop_webqq").setOnPreferenceClickListener(preference -> { preference.setEnabled(false); stop(); return true; }); } @Override public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { RecyclerView recyclerView = super.onCreateRecyclerView(inflater, parent, savedInstanceState); ViewUtils.setPaddingVertical(recyclerView, getResources().getDimensionPixelSize(R.dimen.dp_8)); return recyclerView; } private void restart() { mCompositeDisposable.add(FFMService.restart() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .doFinally(() -> findPreference("restart_webqq").setEnabled(true)) .subscribe(ffmResult -> Toast.makeText(getContext(), "Succeed.", Toast.LENGTH_SHORT).show(), throwable -> Toast.makeText(getContext(), "Network error:\n" + throwable.getMessage(), Toast.LENGTH_SHORT).show())); } private void stop() { mCompositeDisposable.add(FFMService.stop() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .doFinally(() -> findPreference("stop_webqq").setEnabled(true)) .subscribe(ffmResult -> Toast.makeText(getContext(), "Succeed.", Toast.LENGTH_SHORT).show(), throwable -> Toast.makeText(getContext(), "Network error:\n" + throwable.getMessage(), Toast.LENGTH_SHORT).show())); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { ActionBar actionBar = getActivity().getActionBar(); if (actionBar != null) { actionBar.setTitle(R.string.server_settings); actionBar.setDisplayHomeAsUpEnabled(true); } } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { switch (key) { case FFMSettings.BASE_URL: FFMApplication.updateBaseUrl(FFMSettings.getBaseUrl()); LocalBroadcast.refreshStatus(getContext()); break; } } }