cl.ipp.katbag.fragment.Pages.java Source code

Java tutorial

Introduction

Here is the source code for cl.ipp.katbag.fragment.Pages.java

Source

/*
 * 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());
    }
}