/* * Copyright (C) 2013 - 2014 Alexander "Evisceration" Martinz * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ package org.namelessrom.devicecontrol.modules.tasker; import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SwitchCompat; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.CompoundButton; import org.namelessrom.devicecontrol.DeviceConstants; import org.namelessrom.devicecontrol.R; import org.namelessrom.devicecontrol.models.TaskerConfig; import org.namelessrom.devicecontrol.modules.wizard.AddTaskActivity; import org.namelessrom.devicecontrol.services.TaskerService; import org.namelessrom.devicecontrol.views.AttachFragment; import org.namelessrom.devicecontrol.utils.Utils; import java.util.List; public class TaskerFragment extends AttachFragment { private RecyclerView mRecyclerView; private View mEmptyView; @Override protected int getFragmentId() { return DeviceConstants.ID_TOOLS_TASKER; } @Override public void onResume() { super.onResume(); refreshListView(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { setHasOptionsMenu(true); final View v = inflater.inflate(R.layout.fragment_tasker, container, false); mRecyclerView = (RecyclerView) v.findViewById(android.R.id.list); mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); mRecyclerView.setItemAnimator(new DefaultItemAnimator()); mEmptyView = v.findViewById(android.R.id.empty); final FloatingActionButton fabAdd = (FloatingActionButton) v.findViewById(R.id.fab_add); fabAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (getActivity() != null) { startActivity(new Intent(getActivity(), AddTaskActivity.class)); } } }); return v; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); refreshListView(); } private void refreshListView() { new UpdateTaskerCardList().execute(); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.menu_tasker, menu); final MenuItem toggle = menu.findItem(R.id.menu_action_toggle); final View v; if (toggle != null && (v = toggle.getActionView()) != null) { final Activity activity = getActivity(); final SwitchCompat sw = (SwitchCompat) v.findViewById(R.id.ab_switch); sw.setChecked(TaskerConfig.get().enabled); sw.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(final CompoundButton b, final boolean isChecked) { TaskerConfig taskerConfig = TaskerConfig.get(); taskerConfig.enabled = isChecked; taskerConfig.save(); Utils.toggleComponent(new ComponentName(activity.getPackageName(), TaskerService.class.getName()), !isChecked); if (isChecked) { Utils.startTaskerService(activity); } else { Utils.stopTaskerService(activity); } } } ); } } private class UpdateTaskerCardList extends AsyncTask<Void, Void, List<TaskerItem>> { @Override protected void onPreExecute() { // TODO: animations and progress view mEmptyView.setVisibility(View.GONE); mRecyclerView.setVisibility(View.GONE); } @Override protected List<TaskerItem> doInBackground(final Void... voids) { return TaskerConfig.get().items; } @Override protected void onPostExecute(final List<TaskerItem> result) { // if the adapter exists and we have items, clear it and add the results if (result != null && result.size() > 0 && getActivity() != null) { mEmptyView.setVisibility(View.GONE); mRecyclerView.setVisibility(View.VISIBLE); mRecyclerView.setAdapter(new TaskerAdapter(getActivity(), result)); } else { mEmptyView.setVisibility(View.VISIBLE); mRecyclerView.setVisibility(View.GONE); } } } }