package org.goodev.discourse.ui.dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import org.goodev.discourse.ActivityUtils;
import org.goodev.discourse.App;
import org.goodev.discourse.R;
import org.goodev.discourse.api.data.Links;
import org.goodev.discourse.utils.L;
import org.goodev.discourse.utils.Utils;
public class LinksDialogFragment extends DialogFragment implements OnItemClickListener {
private Links[] mLinks;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
savedInstanceState = getArguments();
}
mLinks = (Links[]) savedInstanceState.getSerializable(Utils.EXTRA_LINKS);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable(Utils.EXTRA_LINKS, mLinks);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dialog_links, container, false);
getDialog().setTitle(R.string.post_links_title);
ListView lv = (ListView) view.findViewById(R.id.links_list_view);
lv.setAdapter(new LinksAdapter(inflater));
lv.setOnItemClickListener(this);
return view;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Links l = (Links) parent.getItemAtPosition(position);
L.d("links %s \n URL: %s", l.title, l.url);
String url = l.url;
if (url.startsWith(Utils.SLASH) || url.startsWith(App.getSiteUrl())) {
ActivityUtils.openDiscourseLinks(getActivity(), url);
} else {
ActivityUtils.openUrl(getActivity(), url);
}
dismissAllowingStateLoss();
}
class LinksAdapter extends BaseAdapter {
LayoutInflater mInflater;
public LinksAdapter(LayoutInflater inflater) {
mInflater = inflater;
}
@Override
public int getCount() {
if (mLinks == null) {
return 0;
}
return mLinks.length;
}
@Override
public Object getItem(int position) {
if (mLinks == null) {
return null;
}
return mLinks[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Links l = (Links) getItem(position);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.dialog_links_item, parent, false);
}
TextView title = (TextView) convertView.findViewById(R.id.links_title);
TextView clicks = (TextView) convertView.findViewById(R.id.links_click_number);
title.setText(l.getTitle());
clicks.setText(String.valueOf(l.clicks));
if (l.url.startsWith(App.getSiteUrl())) {
title.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_nav, 0);
} else {
title.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
}
return convertView;
}
}
}