/* Copyright (C) 2013 Prasanna Thirumalai This file is part of StackX. StackX is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. StackX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with StackX. If not, see <http://www.gnu.org/licenses/>. */ package com.prasanna.android.stacknetwork.fragment; import java.util.ArrayList; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import com.prasanna.android.stacknetwork.R; import com.prasanna.android.stacknetwork.adapter.ItemListAdapter; import com.prasanna.android.stacknetwork.model.Question; import com.prasanna.android.stacknetwork.service.UserIntentService; import com.prasanna.android.stacknetwork.utils.AppUtils; import com.prasanna.android.stacknetwork.utils.DateTimeUtils; import com.prasanna.android.stacknetwork.utils.StackXQuickActionMenu; import com.prasanna.android.stacknetwork.utils.StringConstants; import com.prasanna.android.views.QuickActionMenu; public class UserQuestionListFragment extends AbstractQuestionListFragment { private static final String TAG = UserQuestionListFragment.class.getSimpleName(); private Intent intent; private int page = 0; private int action; public static UserQuestionListFragment newFragment(int action) { UserQuestionListFragment userQuestionListFragment = new UserQuestionListFragment(); userQuestionListFragment.action = action; return userQuestionListFragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); page = 0; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (itemsContainer == null) { itemsContainer = (LinearLayout) inflater.inflate(R.layout.list_view, null); itemListAdapter = new ItemListAdapter<Question>(getActivity(), R.layout.question_snippet_layout, new ArrayList<Question>(), this); } return itemsContainer; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (savedInstanceState != null) action = savedInstanceState.getInt(StringConstants.ACTION); } @Override public void onResume() { super.onResume(); if (itemListAdapter != null && itemListAdapter.getCount() == 0) startIntentService(); } @Override public void onSaveInstanceState(Bundle outState) { outState.putInt(StringConstants.ACTION, action); super.onSaveInstanceState(outState); } @Override protected QuickActionMenu initQuickActionMenu(final Question question) { if (action != UserIntentService.GET_USER_QUESTIONS) return super.initQuickActionMenu(question); StackXQuickActionMenu quickActionMenu = new StackXQuickActionMenu(getActivity()); return quickActionMenu.addSimilarQuestionsItem(question.title).addRelatedQuickActionItem(question.id) .addEmailQuickActionItem(question.title, AppUtils.createEmailBody(question)).build(); } @Override protected void startIntentService() { intent = getIntentForService(UserIntentService.class, null); if (intent != null) { showProgressBar(); intent.putExtra(StringConstants.ACTION, action); intent.putExtra(StringConstants.ME, getActivity().getIntent().getBooleanExtra(StringConstants.ME, false)); intent.putExtra(StringConstants.USER_ID, getActivity().getIntent().getLongExtra(StringConstants.USER_ID, 0L)); intent.putExtra(StringConstants.PAGE, ++page); intent.putExtra(StringConstants.RESULT_RECEIVER, resultReceiver); startService(intent); } } @Override protected void setValuesForQuestionView(QuestionViewHolder holder, Question question) { super.setValuesForQuestionView(holder, question); if (action == UserIntentService.GET_USER_QUESTIONS) holder.owner.setText(DateTimeUtils.getElapsedDurationSince(question.creationDate)); } @Override public String getLogTag() { return TAG; } @Override protected void loadNextPage() { startIntentService(); } }