/* * Author: Miguel Angel Bravo (@MiguelAngelBrav) * The Android Open Source Project Katbag is licensed under the General GPLv3. * */ package cl.ipp.katbag.fragment; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.os.Parcelable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.TextView; import cl.ipp.katbag.MainActivity; import cl.ipp.katbag.R; import cl.ipp.katbag.row_adapters.PagesRowAdapter; import com.actionbarsherlock.app.SherlockFragment; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.MenuItem.OnMenuItemClickListener; import com.google.analytics.tracking.android.EasyTracker; import com.google.analytics.tracking.android.Fields; import com.google.analytics.tracking.android.MapBuilder; import com.google.analytics.tracking.android.Tracker; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; import com.mobeta.android.dslv.DragSortListView; public class Pages extends SherlockFragment { private Tracker tracker; static View v = null; public static MainActivity mainActivity; public MenuItem menuItemEdit, menuItemNew; public static long id_app = -1; public TextView notRegister; public DragSortListView pagesListView; public PagesRowAdapter adapter; public static boolean editMode = false; public Fragment mFragment; public static final String DEFAULT_COLOR = "-16750951"; private ArrayList<String> develop = new ArrayList<String>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); this.tracker = EasyTracker.getInstance(this.getActivity()); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mainActivity = (MainActivity) super.getActivity(); v = inflater.inflate(R.layout.fragment_pages, container, false); mainActivity.supportInvalidateOptionsMenu(); // rescues parameters Bundle bundle = getArguments(); if (bundle != null) { id_app = bundle.getLong("id_app"); } notRegister = (TextView) v.findViewById(R.id.page_not_register); editMode = false; loadListView(); pagesListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (!editMode) { TextView pageld = (TextView) view.findViewById(R.id.page_row_id); Bundle bundle = new Bundle(); bundle.putLong("id_app", id_app); bundle.putLong("id_page", Long.valueOf(pageld.getText().toString())); bundle.putString("name_page", String.valueOf(position)); mFragment = new OnePage(); mFragment.setArguments(bundle); FragmentTransaction t = getActivity().getSupportFragmentManager().beginTransaction(); t.replace(R.id.fragment_main_container, mFragment); t.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); t.addToBackStack(mFragment.getClass().getSimpleName()); t.commit(); } } }); return v; } public void loadListView() { pagesListView = (DragSortListView) v.findViewById(R.id.pages_list_view); List<String> idList = new ArrayList<String>(); idList.clear(); idList = mainActivity.katbagHandler.selectPagesForIdApp(id_app); if (idList.size() <= 0) { notRegister.setVisibility(View.VISIBLE); } else { notRegister.setVisibility(View.GONE); Parcelable state = pagesListView.onSaveInstanceState(); adapter = new PagesRowAdapter(v.getContext(), mainActivity, R.layout.row_pages, idList); pagesListView.setAdapter(adapter); pagesListView.setRemoveListener(onRemove); pagesListView.setDragScrollProfile(ssProfile); pagesListView.setDropListener(onDrop); pagesListView.onRestoreInstanceState(state); } } private DragSortListView.RemoveListener onRemove = new DragSortListView.RemoveListener() { @Override public void remove(int which) { String item = (String) adapter.getItem(which); adapter.remove(item); mainActivity.katbagHandler.deletePageForId(id_app, Long.parseLong(item)); develop.clear(); develop = mainActivity.katbagHandler.selectDevelopBookForIdAppAndPageId(id_app, Long.parseLong(item)); for (int i = 0; i < develop.size(); i++) { String[] line = develop.get(i).split("&&"); mainActivity.katbagHandler.deleteDevelopForId(Long.parseLong(line[0])); } adapter.notifyDataSetChanged(); pagesListView.refreshDrawableState(); } }; private DragSortListView.DropListener onDrop = new DragSortListView.DropListener() { @Override public void drop(int from, int to) { if (from != to) { String item = (String) adapter.getItem(from); adapter.remove(item); adapter.insert(item, to); // reIndent(); adapter.notifyDataSetChanged(); pagesListView.refreshDrawableState(); } } }; private DragSortListView.DragScrollProfile ssProfile = new DragSortListView.DragScrollProfile() { @Override public float getSpeed(float w, long t) { if (w > 0.8f) { // Traverse all views in a millisecond return ((float) pagesListView.getCount()) / 0.001f; } else { return 10.0f * w; } } }; @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { menu.clear(); inflater.inflate(R.menu.pages, menu); menuItemNew = menu.findItem(R.id.pages_dropdown_menu_new); menuItemEdit = menu.findItem(R.id.pages_dropdown_menu_edit); menuItemEdit.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { if (editMode) { editMode = false; menuItemEdit.setIcon(R.drawable.ic_action_edit); } else { editMode = true; menuItemEdit.setIcon(R.drawable.ic_action_accept); } loadListView(); return true; } }); menuItemNew.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { editMode = false; menuItemEdit.setIcon(R.drawable.ic_action_edit); mainActivity.katbagHandler.insertPage(id_app, 0); loadListView(); return true; } }); super.onCreateOptionsMenu(menu, inflater); } @Override public void onResume() { mainActivity.getSupportActionBar().setTitle(Add.name_app_text + " - " + getString(R.string.title_activity_pages)); if (!MainActivity.TABLET) mainActivity.slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); super.onResume(); this.tracker.set(Fields.SCREEN_NAME, getClass().getSimpleName()); this.tracker.send( MapBuilder.createAppView().build() ); } }