package org.softeg.slartus.forpdaplus.listfragments; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import org.apache.http.NameValuePair; import org.apache.http.client.utils.URIUtils; import org.apache.http.client.utils.URLEncodedUtils; import org.apache.http.message.BasicNameValuePair; import org.softeg.slartus.forpdaapi.IListItem; import org.softeg.slartus.forpdaapi.ListInfo; import org.softeg.slartus.forpdaapi.Topic; import org.softeg.slartus.forpdaapi.TopicsApi; import org.softeg.slartus.forpdaplus.App; import org.softeg.slartus.forpdaplus.Client; import org.softeg.slartus.forpdaplus.MainActivity; import org.softeg.slartus.forpdaplus.R; import org.softeg.slartus.forpdaplus.listfragments.next.ForumFragment; import org.softeg.slartus.forpdaplus.listtemplates.ForumTopicsBrickInfo; import org.softeg.slartus.forpdaplus.prefs.ForumTopicsPreferencesActivity; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.text.ParseException; import java.util.ArrayList; import java.util.List; /* * Created by slinkin on 03.03.14. */ public class ForumTopicsListFragment extends TopicsListFragment { public ForumTopicsListFragment() { super(); } @Override public void saveCache() { } @Override public void loadCache() { } @Override protected void sort() { } private String getForumId() { return getArguments().getString(ForumFragment.FORUM_ID_KEY); } private String getForumTitle() { return getArguments().getString(ForumFragment.FORUM_TITLE_KEY); } @Override public String getListName() { return super.getListName(); } @Override public String getListTitle() { return getForumTitle(); } @Override public void onPause() { super.onPause(); } @Override public void onResume() { super.onResume(); setArrow(); } @Override public void onCreate(android.os.Bundle savedInstanceState) { super.onCreate(savedInstanceState); setArrow(); if (savedInstanceState != null) mUrl = savedInstanceState.getString(URL_KEY, mUrl); } @Override public void onSaveInstanceState(android.os.Bundle outState) { outState.putString(URL_KEY, mUrl); super.onSaveInstanceState(outState); } private final String URL_KEY = "URL_KEY"; private String mUrl = null; @Override protected ArrayList<? extends IListItem> loadTopics(Client client, ListInfo listInfo) throws IOException, ParseException, URISyntaxException { SharedPreferences prefs = App.getInstance().getPreferences(); if (mUrl == null) { List<NameValuePair> qparams = new ArrayList<NameValuePair>(); qparams.add(new BasicNameValuePair("showforum", getForumId())); qparams.add(new BasicNameValuePair("sort_key", prefs.getString(getListName() + ".sort_key", "last_post"))); qparams.add(new BasicNameValuePair("sort_by", prefs.getString(getListName() + ".sort_by", "Z-A"))); qparams.add(new BasicNameValuePair("prune_day", prefs.getString(getListName() + ".prune_day", "100"))); qparams.add(new BasicNameValuePair("topicfilter", prefs.getString(getListName() + ".topicfilter", "all"))); qparams.add(new BasicNameValuePair("st", Integer.toString(listInfo.getFrom()))); URI uri = URIUtils.createURI("http", "4pda.ru", -1, "/forum/index.php", URLEncodedUtils.format(qparams, "UTF-8"), null); mUrl = uri.toString(); } else { mUrl = mUrl.replaceAll("&st=\\d+", "").concat("&st=" + mListInfo.getFrom()); } ArrayList<Topic> res = TopicsApi.getForumTopics(client, mUrl,getForumId(), prefs.getBoolean(getListName() + ".unread_in_top", false), mListInfo); mUrl = Client.getInstance().getRedirectUri() != null ? Client.getInstance().getRedirectUri().toString() : mUrl; return res; } public static void showForumTopicsList(Context context, CharSequence forumId, CharSequence forumTitle) { Bundle args = new Bundle(); args.putString(ForumFragment.FORUM_ID_KEY, forumId.toString()); args.putString(ForumFragment.FORUM_TITLE_KEY, forumTitle.toString()); MainActivity.showListFragment(forumId.toString(), new ForumTopicsBrickInfo().getName(), args); } 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); } }