package com.masterofcode.android.magreader.fragments;
import org.kroz.activerecord.ActiveRecordBase;
import org.kroz.activerecord.ActiveRecordException;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.Fragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.InputFilter;
import android.text.TextUtils;
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.EditText;
import android.widget.ListView;
import com.masterofcode.android.magreader.MainActivity;
import com.masterofcode.android.magreader.adapters.ListOfCategoriesAdapter;
import com.masterofcode.android.magreader.application.JtjApplication;
import com.masterofcode.android.magreader.db.entity.FeedType;
import com.sandsmedia.apps.mobile.android.epub.lib.R;
public class FeedsCategoriesFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View returnView = inflater.inflate(R.layout.feed_categories_list, container, false);
((ListView) returnView).setOnItemClickListener(listViewItemClickListener);
((ListView) returnView).setOnItemLongClickListener(listViewItemLongClickListener);
return returnView;
}
public void setListAdapter(ListOfCategoriesAdapter mListOfCategoriesAdapter){
((ListView) getView()).setAdapter(mListOfCategoriesAdapter);
}
public ListView getListView(){
return ((ListView) getView());
}
public void setListShown(boolean isShow){
if (isShow)
getListView().setVisibility(View.VISIBLE);
else
getListView().setVisibility(View.GONE);
}
public void setPosition(int position) {
ListView lv = getListView();
lv.setItemChecked(position, true);
updateLinksList(lv.getItemIdAtPosition(position));
}
private OnItemClickListener listViewItemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
if (((MainActivity) getActivity()).getCurrentPosition() != position) {
updateLinksList(id);
((MainActivity) getActivity()).setCurrentPosition(position);
}
}
};
private OnItemLongClickListener listViewItemLongClickListener = new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int position, long id) {
// TODO Auto-generated method stub
if (id>3){
createDialog(id).show();
}
return false;
}
};
private Dialog createDialog(final long id) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final EditText input = new EditText(getActivity());
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(25);
input.setFilters(FilterArray);
input.setMaxLines(1);
builder.setTitle("Rename")
.setIcon(android.R.drawable.stat_sys_warning)
.setMessage("Enter new name:")
.setView(input)
.setCancelable(false)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(!TextUtils.isEmpty(input.getText())){
renameCategory(input.getText().toString(), id);
((MainActivity)getActivity()).updateAdapters();
}
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
return builder.create();
}
public void onListItemClick(ListView l, View v, int position, long id) {
if (((MainActivity) getActivity()).getCurrentPosition() != position) {
updateLinksList(id);
((MainActivity) getActivity()).setCurrentPosition(position);
}
}
private void updateLinksList(long id) {
FeedsListFragment feedList = (FeedsListFragment) getFragmentManager().findFragmentById(R.id.feed_list_fragment);
feedList.setItemsForCategories(id);
}
private void renameCategory(String name, long id){
ActiveRecordBase _db;
_db = ((JtjApplication)getActivity().getApplication()).getDatabase();
try {
if(!_db.isOpen()) _db.open();
FeedType ft = _db.findByID(FeedType.class, id);
ft.title = name;
ft.update();
} catch (ActiveRecordException e) {
e.printStackTrace();
}
}
}