package org.softeg.slartus.forpdaplus.listfragments; import android.content.Intent; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import org.softeg.slartus.forpdaapi.FavTopic; 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.R; import org.softeg.slartus.forpdaplus.db.CacheDbHelper; import org.softeg.slartus.forpdaplus.prefs.ForumTopicsPreferencesActivity; import org.softeg.slartus.forpdaplus.prefs.Preferences; import org.softeg.sqliteannotations.BaseDao; import java.io.IOException; import java.net.URISyntaxException; import java.text.ParseException; import java.util.ArrayList; /* * Created by slartus on 20.02.14. */ public class FavoritesListFragment extends TopicsListFragment { public FavoritesListFragment() { super(); } @Override protected ArrayList<? extends IListItem> loadTopics(Client client, ListInfo listInfo) throws IOException, ParseException, URISyntaxException { SharedPreferences prefs = App.getInstance().getPreferences(); return org.softeg.slartus.forpdaapi.TopicsApi.getFavTopics(Client.getInstance(), prefs.getString(getListName() + ".sort_key", "last_post"), prefs.getString(getListName() + ".sort_by", "Z-A"), prefs.getString(getListName() + ".prune_day", "100"), prefs.getString(getListName() + ".topicfilter", "all"), prefs.getBoolean(getListName() + ".unread_in_top", false), Preferences.List.Favorites.isLoadFullPagesList(), mListInfo); } @Override public void saveCache() throws Exception { CacheDbHelper cacheDbHelper = new CacheDbHelper(App.getContext()); SQLiteDatabase db = null; try { db = cacheDbHelper.getWritableDatabase(); BaseDao<FavTopic> baseDao = new BaseDao<>(App.getContext(), db, getListName(), FavTopic.class); baseDao.createTable(db); for (IListItem item : mData) { FavTopic topic = (FavTopic) item; baseDao.insert(topic); } } finally { if (db != null) db.close(); } } @Override public void loadCache() throws IOException, IllegalAccessException, NoSuchFieldException, java.lang.InstantiationException { mCacheList.clear(); CacheDbHelper cacheDbHelper = new CacheDbHelper(App.getContext()); SQLiteDatabase db = null; try { db = cacheDbHelper.getReadableDatabase(); BaseDao<FavTopic> baseDao = new BaseDao<>(App.getContext(), db, getListName(), FavTopic.class); if (baseDao.isTableExists()) mCacheList.addAll(baseDao.getAll()); } finally { if (db != null) db.close(); } sort(); } @Override protected void sort(){ } private static final int FILTER_SORT_REQUEST = 0; @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == FILTER_SORT_REQUEST && resultCode == ForumTopicsPreferencesActivity.RESULT_OK) { loadData(true); } } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); menu.removeItem(settingItemId); menu.add(R.string.filter_and_ordering) .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { Intent settingsActivity = new Intent( getContext(), ForumTopicsPreferencesActivity.class); settingsActivity.putExtra("listname", getListName()); startActivityForResult(settingsActivity, FILTER_SORT_REQUEST); return true; } }).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); } }