package org.sorz.lab.smallcloudemoji.fragments;
import android.app.ListFragment;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;
import org.sorz.lab.smallcloudemoji.R;
import org.sorz.lab.smallcloudemoji.activites.AddRepositoryActivity;
import org.sorz.lab.smallcloudemoji.activites.SettingsActivity;
import org.sorz.lab.smallcloudemoji.adapters.StoreSourceAdapter;
import org.sorz.lab.smallcloudemoji.db.DaoSession;
import org.sorz.lab.smallcloudemoji.db.DatabaseHelper;
import org.sorz.lab.smallcloudemoji.tasks.RefreshStoreAsyncTask;
/**
* A fragment representing a list of source.
*/
public class StoreFragment extends ListFragment implements SwipeRefreshLayout.OnRefreshListener {
private static final String STORE_URL = "storeUrl";
private Context context;
private DaoSession daoSession;
private String storeUrl;
private OnSourceClickListener mListener;
private SwipeRefreshLayout swipeLayout;
private StoreSourceAdapter adapter;
public static StoreFragment newInstance(String storeUrl) {
StoreFragment fragment = new StoreFragment();
Bundle args = new Bundle();
args.putString(STORE_URL, storeUrl);
fragment.setArguments(args);
return fragment;
}
public StoreFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = getActivity();
mListener = (OnSourceClickListener) context;
daoSession = DatabaseHelper.getInstance(context).getDaoSession();
if (getArguments() != null) {
storeUrl = getArguments().getString(STORE_URL);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_store, container, false);
swipeLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipe_container);
swipeLayout.setOnRefreshListener(this);
ListView listView = (ListView) view.findViewById(android.R.id.list);
adapter = new StoreSourceAdapter(context, daoSession.getSourceDao());
listView.setAdapter(adapter);
if (adapter.isEmpty()) {
swipeLayout.setRefreshing(true);
onRefresh();
}
return view;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
if (!swipeLayout.isRefreshing())
mListener.onSourceClick(id);
}
@Override
public void onRefresh() {
new RefreshStoreAsyncTask(context) {
@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
swipeLayout.setRefreshing(false);
adapter.notifyDataSetChanged();
if (result == RESULT_SUCCESS)
Toast.makeText(context,
R.string.download_success, Toast.LENGTH_SHORT).show();
else if (result == RESULT_ERROR_IO)
Toast.makeText(context,
R.string.download_io_exception, Toast.LENGTH_SHORT).show();
else if (result == RESULT_ERROR_SERVER_FAIL)
Toast.makeText(context,
R.string.store_server_fail, Toast.LENGTH_SHORT).show();
else
Toast.makeText(context,
R.string.download_unknown_error, Toast.LENGTH_SHORT).show();
}
}.execute(storeUrl);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SettingsActivity.REQUEST_FOR_ADDING_REPOSITORY) {
if (resultCode == AddRepositoryActivity.RESULT_SUCCESS_ADDED) {
adapter.notifyDataSetChanged();
}
return;
}
super.onActivityResult(requestCode, resultCode, data);
}
public interface OnSourceClickListener {
public void onSourceClick(long sourceId);
}
}