package de.geeksfactory.opacclient.frontend;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatDialog;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceFragmentCompat;
import android.text.Html;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import de.geeksfactory.opacclient.OpacClient;
import de.geeksfactory.opacclient.R;
public class AboutFragment extends PreferenceFragmentCompat {
protected Activity context;
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
this.context = getActivity();
populate();
}
protected void populate() {
addPreferencesFromResource(R.xml.about);
String version = OpacClient.versionName;
findPreference("version").setSummary(version);
findPreference("website").setOnPreferenceClickListener(
new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Intent i = new Intent(Intent.ACTION_VIEW);
if (getString(R.string.website_url).contains("de")) {
i.setData(Uri.parse("http://de.opacapp.net"));
} else {
i.setData(Uri.parse("http://en.opacapp.net"));
}
startActivity(i);
return false;
}
});
findPreference("developer").setOnPreferenceClickListener(
new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("http://www.raphaelmichel.de"));
startActivity(i);
return false;
}
});
findPreference("feedback").setOnPreferenceClickListener(
new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Intent emailIntent = new Intent(
android.content.Intent.ACTION_SEND);
emailIntent.putExtra(
android.content.Intent.EXTRA_EMAIL,
new String[]{"info@opacapp.de"});
emailIntent.setType("text/plain");
startActivity(Intent.createChooser(emailIntent,
getString(R.string.write_mail)));
return false;
}
});
findPreference("rate_play").setOnPreferenceClickListener(
new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
try {
Intent i = new Intent(
Intent.ACTION_VIEW,
Uri.parse("market://details?id=de.geeksfactory.opacclient"));
startActivity(i);
} catch (ActivityNotFoundException e) {
Log.i("rate_play", "no market installed");
}
return false;
}
});
findPreference("source").setOnPreferenceClickListener(
new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Intent i = new Intent(Intent.ACTION_VIEW, Uri
.parse("http://github.com/raphaelm/opacclient"));
startActivity(i);
return false;
}
});
findPreference("osl").setOnPreferenceClickListener(
new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
res_dialog(R.raw.licenses, R.string.osl);
return false;
}
});
findPreference("privacy").setOnPreferenceClickListener(
new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
res_dialog(R.raw.privacy, R.string.privacy);
return false;
}
});
findPreference("thanks").setOnPreferenceClickListener(
new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
res_dialog(R.raw.thanks, R.string.thanks);
return false;
}
});
findPreference("changelog").setOnPreferenceClickListener(
new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
res_dialog(R.raw.changelog, R.string.changelog);
return false;
}
});
}
private void res_dialog(int file, int title) {
final AppCompatDialog dialog = new AppCompatDialog(context);
dialog.setContentView(R.layout.dialog_about);
dialog.setTitle(title);
TextView tvText = (TextView) dialog.findViewById(R.id.tvText);
String text = "";
StringBuilder builder = new StringBuilder();
InputStream fis;
try {
fis = getResources().openRawResource(file);
BufferedReader reader = new BufferedReader(new InputStreamReader(
fis, "utf-8"));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
text = builder.toString();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
tvText.setText(Html.fromHtml(text));
Button closeButton = (Button) dialog.findViewById(R.id.btnClose);
// if button is clicked, close the custom dialog
closeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
}