package de.tum.in.tumcampusapp.activities; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v4.content.FileProvider; import android.support.v7.app.AlertDialog; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.ProgressBar; import com.google.common.collect.ImmutableList; import java.io.File; import java.io.IOException; import java.util.List; import de.tum.in.tumcampusapp.R; import de.tum.in.tumcampusapp.activities.generic.BaseActivity; import de.tum.in.tumcampusapp.adapters.PlanListAdapter; import de.tum.in.tumcampusapp.adapters.PlanListAdapter.PlanListEntry; import de.tum.in.tumcampusapp.auxiliary.NetUtils; import de.tum.in.tumcampusapp.auxiliary.Utils; /** * Activity to show plans. */ public class PlansActivity extends BaseActivity implements OnItemClickListener { private static final String[][] FILES_TO_DOWNLOAD = { {"http://www.mvv-muenchen.de/fileadmin/media/Dateien/plaene/pdf/Netz_2016_Version_MVG.PDF", "Schnellbahnnetz.pdf"}, {"http://www.mvv-muenchen.de/fileadmin/media/Dateien/plaene/pdf/Nachtnetz_2016.pdf", "Nachtliniennetz.pdf"}, {"http://www.mvv-muenchen.de/fileadmin/media/Dateien/plaene/pdf/Tramnetz_2016.pdf", "Tramnetz.pdf"}, {"http://www.mvv-muenchen.de/fileadmin/media/Dateien/3_Tickets_Preise/dokumente/TARIFPLAN_2016-Innenraum.pdf", "Tarifplan.pdf"}, }; ProgressBar progressBar; private final Thread downloadFiles = new Thread() { @Override public void run() { Utils.log("Starting download."); NetUtils netUtils = new NetUtils(getApplicationContext()); for (String[] file : PlansActivity.FILES_TO_DOWNLOAD) { try { netUtils.downloadToFile(file[0], getApplicationContext().getFilesDir().getPath() + '/' + file[1]); Utils.log(getApplicationContext().getFilesDir() + file[1]); } catch (IOException e) { Utils.log(e); } } //Finished, notify the UI runOnUiThread(new Runnable() { @Override public void run() { progressBar.setVisibility(View.GONE); } }); } }; private PlanListAdapter mListAdapter; public PlansActivity() { super(R.layout.activity_plans); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); progressBar = (ProgressBar) findViewById(R.id.progressBar2); if (Utils.getInternalSettingInt(this, "mvvplans_downloaded", 0) == 0) { final Intent back_intent = new Intent(this, MainActivity.class); new AlertDialog.Builder(this) .setTitle("MVV plans") .setMessage(getResources().getString(R.string.mvv_download)) .setIcon(android.R.drawable.ic_dialog_alert) .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { startActivity(back_intent); } }) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { progressBar.setVisibility(View.VISIBLE); downloadFiles.start(); Utils.setInternalSetting(getApplicationContext(), "mvvplans_downloaded", 1); } }).show(); } ListView list = (ListView) findViewById(R.id.activity_plans_list_view); List<PlanListEntry> listMenuEntrySet = ImmutableList.<PlanListEntry>builder() .add(new PlanListEntry(R.drawable.plan_mvv_icon, R.string.mvv_fast_train_net, R.string.empty_string, 0)) .add(new PlanListEntry(R.drawable.plan_mvv_night_icon, R.string.mvv_nightlines, R.string.empty_string, 0)) .add(new PlanListEntry(R.drawable.plan_tram_icon, R.string.mvv_tram, R.string.empty_string, 0)) .add(new PlanListEntry(R.drawable.mvv_entire_net_icon, R.string.mvv_entire_net, R.string.empty_string, 0)) .add(new PlanListEntry(R.drawable.plan_campus_garching_icon, R.string.campus_garching, R.string.campus_garching_adress, R.drawable.campus_garching)) .add(new PlanListEntry(R.drawable.plan_campus_klinikum_icon, R.string.campus_klinikum, R.string.campus_klinikum_adress, R.drawable.campus_klinikum)) .add(new PlanListEntry(R.drawable.plan_campus_olympiapark_icon, R.string.campus_olympiapark, R.string.campus_olympiapark_adress, R.drawable.campus_olympiapark)) .add(new PlanListEntry(R.drawable.plan_campus_olympiapark_hallenplan_icon, R.string.campus_olympiapark_gyms, R.string.campus_olympiapark_adress, R.drawable.campus_olympiapark_hallenplan)) .add(new PlanListEntry(R.drawable.plan_campus_stammgelaende__icon, R.string.campus_main, R.string.campus_main_adress, R.drawable.campus_stammgelaende)) .add(new PlanListEntry(R.drawable.plan_campus_weihenstephan_icon, R.string.campus_weihenstephan, R.string.campus_weihenstephan_adress, R.drawable.campus_weihenstephan)) .build(); mListAdapter = new PlanListAdapter(this, listMenuEntrySet); list.setAdapter(mListAdapter); list.setOnItemClickListener(this); } @Override public void onItemClick(AdapterView<?> adapterView, View view, int pos, long id) { PlanListEntry entry = (PlanListEntry) mListAdapter.getItem(pos); if (pos <= 3) { File pdfFile = new File(getFilesDir(), PlansActivity.FILES_TO_DOWNLOAD[pos][1]); final Uri path = FileProvider.getUriForFile(getApplicationContext(), "de.tum.in.tumcampusapp.fileprovider", pdfFile); Intent x = new Intent(); x.setData(path); x.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); setResult(RESULT_OK, x); startActivity(x); } else { Intent intent = new Intent(this, PlansDetailsActivity.class); intent.putExtra(PlansDetailsActivity.PLAN_TITLE_ID, entry.titleId); intent.putExtra(PlansDetailsActivity.PLAN_IMG_ID, entry.imgId); startActivity(intent); } } }