package org.softeg.slartus.forpdaplus.listfragments;/* * Created by slinkin on 21.03.14. */ import android.app.Activity; import android.text.TextUtils; import android.util.Pair; import android.view.ContextMenu; import android.view.View; import android.widget.AdapterView; import com.afollestad.materialdialogs.MaterialDialog; import org.softeg.slartus.forpdaapi.IListItem; import org.softeg.slartus.forpdaapi.ListInfo; import org.softeg.slartus.forpdaplus.App; import org.softeg.slartus.forpdaplus.Client; import org.softeg.slartus.forpdaplus.IntentActivity; import org.softeg.slartus.forpdaplus.R; import org.softeg.slartus.forpdaplus.classes.MenuListDialog; import org.softeg.slartus.forpdaplus.classes.common.ExtUrl; import org.softeg.slartus.forpdaplus.common.AppLog; import org.softeg.slartus.forpdaplus.db.NotesTable; import org.softeg.slartus.forpdaplus.fragments.NoteFragment; import org.softeg.slartus.forpdaplus.notes.Note; import org.softeg.slartus.forpdaplus.tabs.ListViewMethodsBridge; import java.io.IOException; import java.text.ParseException; import java.util.ArrayList; import java.util.List; public class NotesListFragment extends TopicsListFragment { public static final String TOPIC_ID_KEY="TOPIC_ID_KEY"; public NotesListFragment() { super(); } @Override protected ArrayList<? extends IListItem> loadTopics(Client client, ListInfo listInfo) throws IOException, ParseException { return NotesTable.getNotes(args!=null?args.getString(TOPIC_ID_KEY):null); } @Override public void saveCache() throws Exception { } @Override public void loadCache() throws IOException, IllegalAccessException, NoSuchFieldException, java.lang.InstantiationException { } @Override public void onItemClick(AdapterView<?> adapterView, View v, int position, long id) { if(!v.hasWindowFocus()) return; id = ListViewMethodsBridge.getItemId(getActivity(), position, id); if (id < 0 || getAdapter().getCount() <= id) return; Object o = getAdapter().getItem((int) id); if (o == null) return; final IListItem topic = (IListItem) o; if (TextUtils.isEmpty(topic.getId())) return; try { Note note = NotesTable.getNote(topic.getId().toString()); if (note != null) { if (note.Url!=null) { IntentActivity.tryShowUrl((Activity) getContext(), mHandler, note.Url, true, false, null); }else { NoteFragment.showNote(topic.getId().toString()); } } } catch (IOException | ParseException e) { e.printStackTrace(); } } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; if (info.id == -1) return; if (info.id < 0 || getAdapter().getCount() <= info.id ) return; Object o = getAdapter().getItem((int) info.id ); if (o == null) return; final IListItem topic = (IListItem) o; final List<MenuListDialog> list = new ArrayList<>(); AddLinksSubMenu(list, topic); list.add(new MenuListDialog(App.getContext().getString(R.string.delete), new Runnable() { @Override public void run() { new MaterialDialog.Builder(getContext()) .title(R.string.confirm_action) .content(R.string.ask_delete_note) .cancelable(true) .negativeText(R.string.cancel) .positiveText(R.string.delete) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog dialog) { try { NotesTable.delete(topic.getId().toString()); mData.remove(topic); getAdapter().notifyDataSetChanged(); } catch (Throwable ex) { AppLog.e(getContext(), ex); } } }) .show(); } })); ExtUrl.showContextDialog(getContext(), null, list); } private void AddLinksSubMenu(List<MenuListDialog> list, final IListItem topic) { try { final Note note = NotesTable.getNote(topic.getId().toString()); if (note != null) { final ArrayList<Pair> links = note.getLinks(); if (links.size() != 0) { list.add(new MenuListDialog(App.getContext().getString(R.string.links), new Runnable() { @Override public void run() { final List<MenuListDialog> list1 = new ArrayList<>(); for (final Pair pair : links) { list1.add(new MenuListDialog(pair.first.toString(), new Runnable() { @Override public void run() { IntentActivity.tryShowUrl((Activity) getContext(), mHandler, pair.second.toString(), true, false, null); } })); } ExtUrl.showContextDialog(getContext(), null, list1); } })); } } } catch (Throwable e) { AppLog.e(getContext(), e); } } }