/** * Copyright (C) 2013 Romain Guefveneu. * * This file is part of naonedbus. * * Naonedbus 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. * * Naonedbus 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 this program. If not, see <http://www.gnu.org/licenses/>. */ package net.naonedbus.fragment.impl; import net.naonedbus.R; import net.naonedbus.activity.impl.WebViewActivity; import net.naonedbus.fragment.CustomFragment; import net.naonedbus.utils.VersionUtils; import net.naonedbus.widget.ContactView; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import android.util.SparseArray; import android.util.SparseIntArray; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; public class AboutFragment extends CustomFragment implements OnClickListener { private static final SparseArray<String> URLS = new SparseArray<String>(); static { URLS.append(R.id.aboutTwitter, "http://twitter.com/naonedbus"); URLS.append(R.id.aboutFacebook, "http://www.facebook.com/naonedbus"); URLS.append(R.id.aboutMail, "mailto:naonedbus@gmail.com?subject=Naonedbus&body=Bonjour,%0d%0a"); } private static final SparseIntArray LICENCES_ID = new SparseIntArray(); static { LICENCES_ID.append(R.id.aboutLicenceLibs, R.raw.licences_lib); LICENCES_ID.append(R.id.aboutLicenceIcons, R.raw.licences_icons); } private final OnClickListener mLinkOnClickListener = new OnClickListener() { @Override public void onClick(final View v) { final String url = URLS.get(v.getId()); if (url != null) openUrl(url); } }; private final OnClickListener mOnContactViewClickListener = new OnClickListener() { @Override public void onClick(final View v) { if (v instanceof ContactView) { final ContactView contactView = (ContactView) v; final String url = contactView.getUrl(); openUrl(url); } } }; private final OnClickListener mLicencesOnClickListener = new OnClickListener() { @Override public void onClick(final View v) { final int id = LICENCES_ID.get(v.getId()); final Intent intent = new Intent(getActivity(), WebViewActivity.class); intent.putExtra(WebViewActivity.PARAM_RAW_ID, id); startActivity(intent); } }; private String mVersion; private String mSha1; public AboutFragment() { super(R.layout.fragment_about); } @Override protected void bindView(final View view, final Bundle savedInstanceState) { mVersion = getString(R.string.version_number, VersionUtils.getVersion(getActivity())); mSha1 = getString(R.string.version_sha1); final TextView version = (TextView) view.findViewById(R.id.version); version.setText(mVersion); version.setTag(true); version.setOnClickListener(new OnClickListener() { @Override public void onClick(final View v) { if ((Boolean) version.getTag() == true) { version.setText(mSha1); version.setTag(false); } else { version.setText(mVersion); version.setTag(true); } } }); setClickListeners(view); view.findViewById(R.id.aboutTwitter).setOnClickListener(mLinkOnClickListener); view.findViewById(R.id.aboutFacebook).setOnClickListener(mLinkOnClickListener); view.findViewById(R.id.aboutMail).setOnClickListener(mLinkOnClickListener); fillThanks((ViewGroup) view.findViewById(R.id.aboutSectionThanks)); fillTranslators((ViewGroup) view.findViewById(R.id.aboutSectionTranslators)); view.findViewById(R.id.aboutLicenceLibs).setOnClickListener(mLicencesOnClickListener); view.findViewById(R.id.aboutLicenceIcons).setOnClickListener(mLicencesOnClickListener); } private void setClickListeners(final View v) { if (v instanceof ViewGroup) { final ViewGroup vg = (ViewGroup) v; for (int i = 0; i < vg.getChildCount(); i++) { final View child = vg.getChildAt(i); setClickListeners(child); } } else if (v instanceof ContactView) { final ContactView contactView = (ContactView) v; contactView.setOnClickListener(mOnContactViewClickListener); } } private void openUrl(final String url) { final Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); startActivity(intent); } private void fillThanks(final ViewGroup parent) { fillView(parent, R.array.thanks); } private void fillTranslators(final ViewGroup parent) { fillView(parent, R.array.translators); } private void fillView(final ViewGroup parent, final int idLabels) { final String[] values = getActivity().getResources().getStringArray(idLabels); final LayoutInflater inflater = LayoutInflater.from(getActivity()); for (int i = 0; i < values.length; i++) { final TextView label = (TextView) inflater.inflate(R.layout.section_item_small, parent, false); label.setText(values[i]); parent.addView(label); } } @Override public void onClick(final View v) { final String url = (String) v.getTag(); openUrl(url); } }