2016-04-22 01:28:01 +02:00
|
|
|
package us.shandian.giga.ui.fragment;
|
|
|
|
|
|
|
|
import android.app.Activity;
|
|
|
|
import android.app.Fragment;
|
|
|
|
import android.content.ComponentName;
|
|
|
|
import android.content.Context;
|
|
|
|
import android.content.Intent;
|
|
|
|
import android.content.ServiceConnection;
|
|
|
|
import android.content.SharedPreferences;
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.os.IBinder;
|
2016-09-14 11:29:22 +02:00
|
|
|
import android.preference.PreferenceManager;
|
2016-04-22 01:28:01 +02:00
|
|
|
import android.view.LayoutInflater;
|
|
|
|
import android.view.Menu;
|
|
|
|
import android.view.MenuItem;
|
|
|
|
import android.view.MenuInflater;
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.ViewGroup;
|
|
|
|
|
|
|
|
import android.support.v7.widget.GridLayoutManager;
|
|
|
|
import android.support.v7.widget.LinearLayoutManager;
|
|
|
|
import android.support.v7.widget.RecyclerView;
|
|
|
|
|
|
|
|
import org.schabi.newpipe.R;
|
|
|
|
import us.shandian.giga.get.DownloadManager;
|
|
|
|
import us.shandian.giga.service.DownloadManagerService;
|
|
|
|
import us.shandian.giga.ui.adapter.MissionAdapter;
|
|
|
|
import us.shandian.giga.util.Utility;
|
|
|
|
|
|
|
|
public abstract class MissionsFragment extends Fragment
|
|
|
|
{
|
|
|
|
private DownloadManager mManager;
|
|
|
|
private DownloadManagerService.DMBinder mBinder;
|
|
|
|
|
|
|
|
private SharedPreferences mPrefs;
|
2016-06-24 02:37:44 +02:00
|
|
|
private boolean mLinear;
|
2016-04-22 01:28:01 +02:00
|
|
|
private MenuItem mSwitch;
|
|
|
|
|
|
|
|
private RecyclerView mList;
|
|
|
|
private MissionAdapter mAdapter;
|
|
|
|
private GridLayoutManager mGridManager;
|
|
|
|
private LinearLayoutManager mLinearManager;
|
2017-01-10 11:41:24 +01:00
|
|
|
private Context mActivity;
|
2016-04-22 01:28:01 +02:00
|
|
|
|
|
|
|
private ServiceConnection mConnection = new ServiceConnection() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onServiceConnected(ComponentName name, IBinder binder) {
|
|
|
|
mBinder = (DownloadManagerService.DMBinder) binder;
|
|
|
|
mManager = setupDownloadManager(mBinder);
|
|
|
|
updateList();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onServiceDisconnected(ComponentName name) {
|
|
|
|
// What to do?
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
|
|
|
View v = inflater.inflate(R.layout.missions, container, false);
|
2016-09-14 11:29:22 +02:00
|
|
|
|
|
|
|
mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
2016-04-22 01:28:01 +02:00
|
|
|
mLinear = mPrefs.getBoolean("linear", false);
|
2017-01-10 11:41:24 +01:00
|
|
|
|
2016-04-22 01:28:01 +02:00
|
|
|
// Bind the service
|
|
|
|
Intent i = new Intent();
|
|
|
|
i.setClass(getActivity(), DownloadManagerService.class);
|
|
|
|
getActivity().bindService(i, mConnection, Context.BIND_AUTO_CREATE);
|
|
|
|
|
|
|
|
// Views
|
|
|
|
mList = Utility.findViewById(v, R.id.mission_recycler);
|
|
|
|
|
|
|
|
// Init
|
|
|
|
mGridManager = new GridLayoutManager(getActivity(), 2);
|
|
|
|
mLinearManager = new LinearLayoutManager(getActivity());
|
|
|
|
mList.setLayoutManager(mGridManager);
|
|
|
|
|
|
|
|
setHasOptionsMenu(true);
|
|
|
|
|
|
|
|
return v;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2017-01-10 11:41:24 +01:00
|
|
|
public void onAttach(Context activity) {
|
2016-04-22 01:28:01 +02:00
|
|
|
super.onAttach(activity);
|
|
|
|
mActivity = activity;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2017-01-10 11:41:24 +01:00
|
|
|
public void onDestroyView() {
|
|
|
|
super.onDestroyView();
|
|
|
|
getActivity().unbindService(mConnection);
|
2016-04-22 01:28:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean onOptionsItemSelected(MenuItem item) {
|
|
|
|
switch (item.getItemId()) {
|
|
|
|
case R.id.switch_mode:
|
|
|
|
mLinear = !mLinear;
|
|
|
|
updateList();
|
|
|
|
return true;
|
|
|
|
default:
|
|
|
|
return super.onOptionsItemSelected(item);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void notifyChange() {
|
|
|
|
mAdapter.notifyDataSetChanged();
|
|
|
|
}
|
|
|
|
|
|
|
|
private void updateList() {
|
|
|
|
mAdapter = new MissionAdapter(mActivity, mBinder, mManager, mLinear);
|
|
|
|
|
|
|
|
if (mLinear) {
|
|
|
|
mList.setLayoutManager(mLinearManager);
|
|
|
|
} else {
|
|
|
|
mList.setLayoutManager(mGridManager);
|
|
|
|
}
|
|
|
|
|
|
|
|
mList.setAdapter(mAdapter);
|
|
|
|
|
|
|
|
if (mSwitch != null) {
|
|
|
|
mSwitch.setIcon(mLinear ? R.drawable.grid : R.drawable.list);
|
|
|
|
}
|
|
|
|
|
|
|
|
mPrefs.edit().putBoolean("linear", mLinear).commit();
|
|
|
|
}
|
|
|
|
|
|
|
|
protected abstract DownloadManager setupDownloadManager(DownloadManagerService.DMBinder binder);
|
|
|
|
}
|