ActivityPastLayout.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package com.ivalentin.margolariak;
  2. import android.annotation.SuppressLint;
  3. import android.database.Cursor;
  4. import android.database.sqlite.SQLiteDatabase;
  5. import android.graphics.Bitmap;
  6. import android.graphics.BitmapFactory;
  7. import android.os.Build;
  8. import android.os.Bundle;
  9. import android.app.Fragment;
  10. import android.util.Log;
  11. import android.view.LayoutInflater;
  12. import android.view.View;
  13. import android.view.ViewGroup;
  14. import android.webkit.WebView;
  15. import android.widget.ImageView;
  16. import android.widget.TextView;
  17. import java.io.File;
  18. /**
  19. * Fragment to display past activities.
  20. * The id of the activity to display is passes in a bundle.
  21. *
  22. * @author Iñigo Valentin
  23. *
  24. * @see Fragment
  25. *
  26. */
  27. public class ActivityPastLayout extends Fragment {
  28. @SuppressWarnings("ResultOfMethodCallIgnored")
  29. @SuppressLint("InflateParams")
  30. @Override
  31. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  32. //Load the layout
  33. View view = inflater.inflate(R.layout.fragment_layout_activity_past, null);
  34. //Get bundled id
  35. Bundle bundle = this.getArguments();
  36. int id = bundle.getInt("activity", -1);
  37. if (id == -1){
  38. Log.e("Activity error", "No such activity: " + id);
  39. this.getActivity().onBackPressed();
  40. }
  41. //Get data from database
  42. SQLiteDatabase db = SQLiteDatabase.openDatabase(getActivity().getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY);
  43. final Cursor cursor;
  44. String lang = GM.getLang();
  45. cursor = db.rawQuery("SELECT id, title_" + lang+ " AS title, text_" + lang + " AS text, date, city, after_" + lang + " AS after, permalink FROM activity WHERE id = " + id + ";", null);
  46. cursor.moveToFirst();
  47. //Get display elements
  48. ImageView images[] = new ImageView[5];
  49. images[0] = (ImageView) view.findViewById(R.id.iv_activity_past_0);
  50. images[1] = (ImageView) view.findViewById(R.id.iv_activity_past_1);
  51. images[2] = (ImageView) view.findViewById(R.id.iv_activity_past_2);
  52. images[3] = (ImageView) view.findViewById(R.id.iv_activity_past_3);
  53. images[4] = (ImageView) view.findViewById(R.id.iv_activity_past_4);
  54. TextView tvTitle = (TextView) view.findViewById(R.id.tv_activity_past_title);
  55. TextView tvDate = (TextView) view.findViewById(R.id.tv_activity_past_date);
  56. TextView tvCity = (TextView) view.findViewById(R.id.tv_activity_past_city);
  57. WebView wvText = (WebView) view.findViewById(R.id.wv_activity_past_text);
  58. if (Build.VERSION.SDK_INT >= 19) {
  59. wvText.setLayerType(View.LAYER_TYPE_HARDWARE, null);
  60. }
  61. else {
  62. wvText.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
  63. }
  64. //Set fields
  65. tvTitle.setText(cursor.getString(1));
  66. ((MainActivity) getActivity()).setSectionTitle(cursor.getString(1));
  67. ((MainActivity) getActivity()).setShareLink(String.format(getString(R.string.share_with_title), cursor.getString(1)), GM.SHARE.ACTIVITIES + cursor.getString(6));
  68. if (cursor.getString(5) == null || cursor.getString(5).length() < 1) {
  69. wvText.loadDataWithBaseURL(null, cursor.getString(2), "text/html", "utf-8", null);
  70. } else {
  71. wvText.loadDataWithBaseURL(null, cursor.getString(5), "text/html", "utf-8", null);
  72. }
  73. tvDate.setText(GM.formatDate(cursor.getString(3) + " 00:00:00", lang, false));
  74. tvCity.setText(cursor.getString(4));
  75. //Get images
  76. Cursor imageCursor = db.rawQuery("SELECT image, idx FROM activity_image WHERE activity = " + id + " ORDER BY idx LIMIT 5;", null);
  77. int i = 0;
  78. while (imageCursor.moveToNext()) {
  79. String image = imageCursor.getString(0);
  80. //Check if image exists
  81. File f;
  82. f = new File(this.getActivity().getFilesDir().toString() + "/img/actividades/preview/" + image);
  83. if (f.exists()){
  84. //If the image exists, set it.
  85. Bitmap myBitmap = BitmapFactory.decodeFile(this.getActivity().getFilesDir().toString() + "/img/actividades/preview/" + image);
  86. images[i].setImageBitmap(myBitmap);
  87. }
  88. else {
  89. //If not, create directories and download asynchronously
  90. File fpath;
  91. fpath = new File(this.getActivity().getFilesDir().toString() + "/img/actividades/preview/");
  92. fpath.mkdirs();
  93. new DownloadImage(GM.API.SERVER + "/img/actividades/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/actividades/preview/" + image, images[i], GM.IMG.SIZE.PREVIEW).execute();
  94. }
  95. images[i].setVisibility(View.VISIBLE);
  96. i ++;
  97. }
  98. imageCursor.close();
  99. cursor.close();
  100. db.close();
  101. return view;
  102. }
  103. }