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

Java tutorial

Introduction

Here is the source code for cl.ipp.katbag.fragment.Edit.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.AdapterView.OnItemLongClickListener;
import android.widget.TextView;
import cl.ipp.katbag.MainActivity;
import cl.ipp.katbag.R;
import cl.ipp.katbag.core.KatbagUtilities;
import cl.ipp.katbag.row_adapters.EditRowAdapter;

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 Edit extends SherlockFragment {

    private Tracker tracker;

    static View v = null;
    public DragSortListView editListView;
    public static MainActivity mainActivity;
    public TextView notRegister;
    public EditRowAdapter adapter;
    public static boolean editMode = false;
    public MenuItem menuItemEdit;
    public Fragment mFragment;

    @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) {
        v = inflater.inflate(R.layout.fragment_edit, container, false);
        mainActivity = (MainActivity) super.getActivity();

        notRegister = (TextView) v.findViewById(R.id.edit_not_register);
        editMode = false;
        loadListView();

        editListView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if (!editMode) {
                    TextView idApp = (TextView) view.findViewById(R.id.edit_row_id);
                    TextView nameApp = (TextView) view.findViewById(R.id.edit_row_name);
                    TextView typeApp = (TextView) view.findViewById(R.id.edit_row_type_app);

                    // initialize parameters of add class
                    Add.id_app = Long.valueOf(idApp.getText().toString());
                    Add.name_app_text = nameApp.getText().toString();

                    Bundle bundle = new Bundle();
                    bundle.putString("type_app", typeApp.getText().toString());

                    mFragment = new Add();
                    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();
                }
            }
        });

        // id exposes
        editListView.setOnItemLongClickListener(new OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                TextView idApp = (TextView) arg1.findViewById(R.id.edit_row_id);
                KatbagUtilities.message(mainActivity.context,
                        getString(R.string.edit_get_id) + " " + idApp.getText().toString());
                return false;
            }
        });

        return v;
    }

    public void loadListView() {
        editListView = (DragSortListView) v.findViewById(R.id.edit_list_view);
        List<String> idList = new ArrayList<String>();
        idList.clear();

        idList = mainActivity.katbagHandler.selectAllApps();

        if (idList.size() <= 0) {
            notRegister.setVisibility(View.VISIBLE);

        } else {
            notRegister.setVisibility(View.GONE);

            Parcelable state = editListView.onSaveInstanceState();
            adapter = new EditRowAdapter(v.getContext(), R.layout.row_edit, idList);

            editListView.setRemoveListener(onRemove);
            editListView.setAdapter(adapter);
            editListView.onRestoreInstanceState(state);
        }
    }

    private DragSortListView.RemoveListener onRemove = new DragSortListView.RemoveListener() {
        @Override
        public void remove(int which) {
            String item = (String) adapter.getItem(which);
            adapter.remove(item);

            String d[] = item.split("&&");

            mainActivity.katbagHandler.deleteAppForId(Long.parseLong(d[0]));

            adapter.notifyDataSetChanged();
            editListView.refreshDrawableState();
        }
    };

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        menu.clear();
        inflater.inflate(R.menu.edit, menu);
        menuItemEdit = menu.findItem(R.id.edit_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;
            }
        });

        super.onCreateOptionsMenu(menu, inflater);
    }

    @Override
    public void onResume() {
        mainActivity.getSupportActionBar().setTitle(R.string.title_activity_edit);

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