| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091 |
- package com.ivalentin.margolariak;
- import java.io.File;
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Locale;
- import android.annotation.SuppressLint;
- import android.Manifest;
- import android.app.Activity;
- import android.content.Context;
- import android.content.Intent;
- import android.content.SharedPreferences;
- import android.content.pm.PackageManager;
- import android.database.Cursor;
- import android.database.sqlite.SQLiteDatabase;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.app.Fragment;
- import android.location.Criteria;
- import android.location.Location;
- import android.location.LocationListener;
- import android.location.LocationManager;
- import android.net.Uri;
- import android.os.Bundle;
- import android.app.FragmentManager;
- import android.app.FragmentTransaction;
- import android.support.v4.app.ActivityCompat;
- import android.text.Html;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.MenuItem;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.ViewGroup;
- import android.widget.Button;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import android.widget.Toast;
- /**
- * Section that will be seen when the app is started.
- * Contains info from almost every other section.
- *
- * @author Iñigo Valentin
- *
- * @see Fragment
- *
- */
- @SuppressWarnings("UnusedReturnValue")
- public class HomeLayout extends Fragment implements LocationListener {
- //The location manager
- private LocationManager locationManager;
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- return false;
- }
- private View view;
- /**
- * Run when the fragment is inflated.
- * Assigns views, gets the date and does the first call to the {//@link populate function}.
- *
- * @param inflater A LayoutInflater to handle the views
- * @param container The parent View
- * @param savedInstanceState Bundle with the saved state
- *
- * @return The fragment view
- *
- * @see android.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)
- */
- @SuppressLint("InflateParams") //Throws unknown error when done properly.
- @Override
- public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
- //Load the layout.
- view = inflater.inflate(R.layout.fragment_layout_home, null);
- //Request location permissions if not set
- if (ActivityCompat.checkSelfPermission(view.getContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(view.getContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(this.getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, GM.PERMISSION.LOCATION);
- }
- //Set Location manager
- locationManager = (LocationManager) view.getContext().getSystemService(Context.LOCATION_SERVICE);
- if (!(ActivityCompat.checkSelfPermission(view.getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(view.getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)) {
- locationManager.requestLocationUpdates(locationManager.getBestProvider(new Criteria(), true), GM.LOCATION.ACCURACY.TIME, GM.LOCATION.ACCURACY.SPACE, this);
- onLocationChanged(locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER));
- }
- //Set the title
- ((MainActivity) getActivity()).setSectionTitle(view.getContext().getString(R.string.menu_home));
- setUpLablanca(view);
- //Set up the blog section
- setUpBlog(view);
- //Set up activities sections
- if (setUpFutureActivities(view) == 0) {
- setUpPastActivities(view);
- }
- //Set up the gallery section
- setUpGallery(view);
- //Asynchronously set up location section
- //This will trigger onLocationChanged, that will trigger setUpLocation
- new HomeSectionLocation(view).execute();
- //Set up schedule sections
- setUpSchedule(1, view);
- setUpSchedule(0, view);
- //Setup the social section
- setUpSocial(view);
- //Return the view itself.
- return view;
- }
- /**
- * Populates the schedule sections of the home screen.
- *
- * @return The number of entries shown.
- */
- @SuppressLint("InflateParams")
- private int setUpSchedule(int gm, View view) {
- int count = 0;
- SharedPreferences data = view.getContext().getSharedPreferences(GM.DATA.DATA, Context.MODE_PRIVATE);
- if (!data.getBoolean(GM.DATA.KEY.LABLANCA, GM.DATA.DEFAULT.LABLANCA)) {
- return count;
- }
- SQLiteDatabase db = SQLiteDatabase.openDatabase(getActivity().getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY);
- Calendar calendar = Calendar.getInstance();
- Calendar calendarEnd;
- DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
- String nowString = dateFormat.format(calendar.getTime());
- String endString;
- String query;
- //An inflater
- LayoutInflater factory = LayoutInflater.from(getActivity());
- //Views in each row
- TextView tvRowTitle, tvRowTime, tvRowPlace, tvRowId;
- Button btSchedule;
- //Assign layouts
- LinearLayout section, listNow, listNext, now, next, entry;
- if (gm == 1) {
- section = (LinearLayout) view.findViewById(R.id.ll_home_section_gmschedule);
- listNow = (LinearLayout) view.findViewById(R.id.ll_home_section_gmschedule_now_list);
- listNext = (LinearLayout) view.findViewById(R.id.ll_home_section_gmschedule_later_list);
- now = (LinearLayout) view.findViewById(R.id.ll_home_section_gmschedule_now_content);
- next = (LinearLayout) view.findViewById(R.id.ll_home_section_gmschedule_later_content);
- btSchedule = (Button) view.findViewById(R.id.bt_home_gm);
- btSchedule.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- ((MainActivity) getActivity()).loadSection(GM.SECTION.GM_SCHEDULE);
- }
- });
- } else {
- section = (LinearLayout) view.findViewById(R.id.ll_home_section_cityschedule);
- listNow = (LinearLayout) view.findViewById(R.id.ll_home_section_cityschedule_now_list);
- listNext = (LinearLayout) view.findViewById(R.id.ll_home_section_cityschedule_later_list);
- now = (LinearLayout) view.findViewById(R.id.ll_home_section_cityschedule_now_content);
- next = (LinearLayout) view.findViewById(R.id.ll_home_section_cityschedule_later_content);
- }
- //Set query for current events
- String lang = GM.getLang();
- calendarEnd = calendar;
- calendarEnd.add(Calendar.MINUTE, -40);
- endString = dateFormat.format(calendarEnd.getTime());
- query = "SELECT festival_event.id, title_" + lang + ", description_" + lang + ", place, start, end, name_" + lang + ", address_" + lang + ", lat, lon FROM festival_event, place WHERE place = place.id AND ((start <= '" + nowString + "' AND end > '" + nowString + "') OR (start > '" + endString + "' AND start < '" + nowString + "')) AND gm = " + gm + " ORDER BY start LIMIT 2";
- //Execute query and loop
- Cursor cursorNow = db.rawQuery(query, null);
- if (cursorNow.getCount() == 0) {
- now.setVisibility(View.GONE);
- }
- while (cursorNow.moveToNext()) {
- count++;
- entry = (LinearLayout) factory.inflate(R.layout.row_home_schedule, null);
- //Set id
- tvRowId = (TextView) entry.findViewById(R.id.tv_row_home_schedule_id);
- tvRowId.setText(cursorNow.getString(0));
- //Set title
- tvRowTitle = (TextView) entry.findViewById(R.id.tv_row_home_schedule_title);
- tvRowTitle.setText(cursorNow.getString(1));
- //Set place
- tvRowPlace = (TextView) entry.findViewById(R.id.tv_row_home_schedule_place);
- tvRowPlace.setText(cursorNow.getString(6));
- //Set icon
- if (gm == GM.SECTION.GM_SCHEDULE) {
- ImageView pinPoint = (ImageView) entry.findViewById(R.id.iv_row_home_schedule_pinpoint);
- pinPoint.setImageResource(getResources().getIdentifier("com.ivalentin.gm:drawable/pinpoint_gm", null, null));
- }
- //Set time
- tvRowTime = (TextView) entry.findViewById(R.id.tv_row_home_schedule_time);
- tvRowTime.setVisibility(View.GONE);
- //Add the view
- listNow.addView(entry);
- }
- cursorNow.close();
- //Prepare query for upcaming events
- calendarEnd = calendar;
- calendarEnd.add(Calendar.MINUTE, 320);
- endString = dateFormat.format(calendarEnd.getTime());
- query = "SELECT festival_event.id, title_" + lang + ", description_" + lang + ", place, start, end, name_" + lang + ", address_" + lang + ", lat, lon FROM festival_event, place WHERE place = place.id AND start > '" + nowString + "' AND start < '" + endString + "' AND gm = " + gm + " ORDER BY start LIMIT 2";
- //Execute query and loop
- Cursor cursorNext = db.rawQuery(query, null);
- if (cursorNext.getCount() == 0) {
- next.setVisibility(View.GONE);
- }
- while (cursorNext.moveToNext()) {
- count++;
- entry = (LinearLayout) factory.inflate(R.layout.row_home_schedule, null);
- //Set id
- tvRowId = (TextView) entry.findViewById(R.id.tv_row_home_schedule_id);
- tvRowId.setText(cursorNext.getString(0));
- //Set title
- tvRowTitle = (TextView) entry.findViewById(R.id.tv_row_home_schedule_title);
- tvRowTitle.setText(cursorNext.getString(1));
- //Set place
- tvRowPlace = (TextView) entry.findViewById(R.id.tv_row_home_schedule_place);
- tvRowPlace.setText(cursorNext.getString(6));
- //Set icon
- if (gm == GM.SECTION.GM_SCHEDULE) {
- ImageView pinPoint = (ImageView) entry.findViewById(R.id.iv_row_home_schedule_pinpoint);
- pinPoint.setImageResource(getResources().getIdentifier("com.ivalentin.gm:drawable/pinpoint_gm", null, null));
- }
- //Set time
- tvRowTime = (TextView) entry.findViewById(R.id.tv_row_home_schedule_time);
- String tm = cursorNext.getString(4).substring(cursorNext.getString(4).length() - 8, cursorNext.getString(4).length() - 3);
- tvRowTime.setText(tm);
- //Add the view
- listNext.addView(entry);
- }
- cursorNext.close();
- if (count > 0) {
- section.setVisibility(View.VISIBLE);
- if (gm == 1) {
- section.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- ((MainActivity) getActivity()).loadSection(GM.SECTION.GM_SCHEDULE);
- }
- });
- } else {
- section.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- ((MainActivity) getActivity()).loadSection(GM.SECTION.SCHEDULE);
- }
- });
- }
- }
- db.close();
- return count;
- }
- /**
- * Populates the Social section of the home screen.
- */
- private void setUpSocial(View view) {
- ImageView phone = (ImageView) view.findViewById(R.id.iv_home_section_social_phone);
- ImageView mail = (ImageView) view.findViewById(R.id.iv_home_section_social_mail);
- ImageView whatsapp = (ImageView) view.findViewById(R.id.iv_home_section_social_whatsapp);
- ImageView facebook = (ImageView) view.findViewById(R.id.iv_home_section_social_facebook);
- ImageView twitter = (ImageView) view.findViewById(R.id.iv_home_section_social_twitter);
- ImageView googleplus = (ImageView) view.findViewById(R.id.iv_home_section_social_googleplus);
- ImageView youtube = (ImageView) view.findViewById(R.id.iv_home_section_social_youtube);
- ImageView instagram = (ImageView) view.findViewById(R.id.iv_home_section_social_instagram);
- phone.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String url = v.getContext().getString(R.string.social_phone_link);
- Intent intent = new Intent(Intent.ACTION_DIAL);
- intent.setData(Uri.parse(url));
- startActivity(intent);
- }
- });
- mail.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String url = v.getContext().getString(R.string.social_mail_link);
- Intent i = new Intent(Intent.ACTION_VIEW);
- i.setData(Uri.parse(url));
- startActivity(i);
- }
- });
- whatsapp.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- try {
- Uri mUri = Uri.parse(getString(R.string.social_whatsapp_link));
- Intent mIntent = new Intent(Intent.ACTION_SENDTO, mUri);
- mIntent.setPackage(getString(R.string.social_whatsapp_package));
- mIntent.putExtra(getString(R.string.social_whatsapp_chat), true);
- startActivity(mIntent);
- } catch (Exception e) {
- Toast.makeText(v.getContext(), getString(R.string.social_whatsapp_error), Toast.LENGTH_LONG).show();
- }
- }
- });
- facebook.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String url = v.getContext().getString(R.string.social_facebook_link);
- Intent i = new Intent(Intent.ACTION_VIEW);
- i.setData(Uri.parse(url));
- startActivity(i);
- }
- });
- twitter.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String url = v.getContext().getString(R.string.social_twitter_link);
- Intent i = new Intent(Intent.ACTION_VIEW);
- i.setData(Uri.parse(url));
- startActivity(i);
- }
- });
- googleplus.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String url = v.getContext().getString(R.string.social_googleplus_link);
- Intent i = new Intent(Intent.ACTION_VIEW);
- i.setData(Uri.parse(url));
- startActivity(i);
- }
- });
- youtube.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String url = v.getContext().getString(R.string.social_youtube_link);
- Intent i = new Intent(Intent.ACTION_VIEW);
- i.setData(Uri.parse(url));
- startActivity(i);
- }
- });
- instagram.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String url = v.getContext().getString(R.string.social_instagram_link);
- Intent i = new Intent(Intent.ACTION_VIEW);
- i.setData(Uri.parse(url));
- startActivity(i);
- }
- });
- }
- /**
- * Populates the La Blanca section of the home screen.
- *
- * @return True if the section has been shown, false otherwise.
- */
- @SuppressWarnings("ResultOfMethodCallIgnored")
- private boolean setUpLablanca(View view) {
- SharedPreferences preferences = view.getContext().getSharedPreferences(GM.DATA.DATA, Context.MODE_PRIVATE);
- Boolean set = false;
- if (preferences.getBoolean(GM.DATA.KEY.LABLANCA, GM.DATA.DEFAULT.LABLANCA)) {
- LinearLayout llSection = (LinearLayout) view.findViewById(R.id.ll_home_section_lablanca);
- TextView tvText = (TextView) view.findViewById(R.id.tv_home_section_lablanca_text);
- ImageView ivImage = (ImageView) view.findViewById(R.id.iv_home_section_lablanca_image);
- //Set click listener
- llSection.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- ((MainActivity) getActivity()).loadSection(GM.SECTION.LABLANCA);
- }
- });
- //Get data from the database of the future activities
- SQLiteDatabase db = SQLiteDatabase.openDatabase(getActivity().getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY);
- int year = Calendar.getInstance().get(Calendar.YEAR);
- String lang = GM.getLang();
- Cursor cursor = db.rawQuery("SELECT text_" + lang + ", img FROM festival WHERE year = " + year + ";", null);
- if (cursor.getCount() > 0) {
- cursor.moveToFirst();
- llSection.setVisibility(View.VISIBLE);
- //Enable menu entries
- //this.getActivity().findViewById(R.id.menu_lablanca_gm_schedule).setVisibility(View.VISIBLE);
- //this.getActivity().findViewById(R.id.menu_lablanca_schedule).setVisibility(View.VISIBLE);
- //Set text
- String text = Html.fromHtml(cursor.getString(0)).toString();
- String shortText = text.substring(0, 80);
- if (text.equals(shortText)) {
- tvText.setText(text);
- }
- else{
- shortText = shortText + "...";
- tvText.setText(shortText);
- }
- set = true;
- //Set image
- String image = cursor.getString(1);
- if (image != null && image.length() > 0){
- //Check if image exists
- File f;
- f = new File(this.getActivity().getFilesDir().toString() + "/img/fiestas/preview/" + image);
- if (f.exists()) {
- //If the image exists, set it.
- Bitmap myBitmap = BitmapFactory.decodeFile(this.getActivity().getFilesDir().toString() + "/img/fiestas/preview/" + image);
- ivImage.setImageBitmap(myBitmap);
- } else {
- //If not, create directories and download asynchronously
- File fpath;
- fpath = new File(this.getActivity().getFilesDir().toString() + "/img/fiestas/preview/");
- fpath.mkdirs();
- new DownloadImage(GM.API.SERVER + "/img/fiestas/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/fiestas/preview/" + image, ivImage, GM.IMG.SIZE.PREVIEW).execute();
- }
- }
- else {
- ivImage.setVisibility(View.GONE);
- }
- }
- cursor.close();
- db.close();
- }
- return set;
- }
- /**
- * Populates the Location section of the home screen.
- *
- * @return True if the section has been shown, false otherwise.
- */
- private boolean setUpLocation(Location location, View view) {
- try {
- Double lat, lon;
- SQLiteDatabase db = getActivity().openOrCreateDatabase(GM.DB.NAME, Activity.MODE_PRIVATE, null);
- Cursor cursor;
- cursor = db.rawQuery("SELECT lat, lon FROM location WHERE dtime >= Datetime('now', '-10 minutes') ORDER BY dtime DESC LIMIT 1;", null);
- if (cursor.getCount() == 0){
- cursor.close();
- db.close();
- return false;
- }
- else {
- cursor.moveToFirst();
- lat = cursor.getDouble(0);
- lon = cursor.getDouble(1);
- cursor.close();
- db.close();
- Double distance = Distance.calculateDistance(lat, lon, location.getLatitude(), location.getLongitude());
- TextView text = (TextView) view.findViewById(R.id.tv_home_section_location_distance);
- if (distance <= 2) {
- distance = 1000 * distance;
- text.setText(String.format(getString(R.string.home_section_location_text_short), distance.intValue(), (int) (0.012 * distance.intValue())));
- } else {
- text.setText(String.format(getString(R.string.home_section_location_text_long), String.format(Locale.US, "%.02f", distance)));
- }
- return true;
- }
- }
- catch (Exception ex){
- Log.e("Location", "Couldn't set up home location section: " + ex.toString());
- }
- return false;
- }
- /**
- * Populates the Gallery section of the home screen.
- * Loads four photos.
- * Tapping them takes to the respective album, tapping anywhere else, to the gallery section.
- *
- * @return The number of entries shown
- */
- @SuppressWarnings("ResultOfMethodCallIgnored")
- private int setUpGallery(View view) {
- int counter = 0;
- //Set onClick listener of section
- LinearLayout llGallery = (LinearLayout) view.findViewById(R.id.ll_home_section_gallery);
- //Set click listener
- llGallery.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- ((MainActivity) getActivity()).loadSection(GM.SECTION.GALLERY);
- }
- });
- //Assign views
- ImageView ivPhoto[] = new ImageView[4];
- ivPhoto[0] = (ImageView) view.findViewById(R.id.iv_home_section_gallery_0);
- ivPhoto[1] = (ImageView) view.findViewById(R.id.iv_home_section_gallery_1);
- ivPhoto[2] = (ImageView) view.findViewById(R.id.iv_home_section_gallery_2);
- ivPhoto[3] = (ImageView) view.findViewById(R.id.iv_home_section_gallery_3);
- //Get data from the database of the future activities
- SQLiteDatabase db = SQLiteDatabase.openDatabase(getActivity().getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY);
- Cursor cursor = db.rawQuery("SELECT id, album, file, uploaded FROM photo, photo_album WHERE id = photo ORDER BY uploaded DESC LIMIT 4;", null);
- while (cursor.moveToNext()) {
- //Set id
- ivPhoto[counter].setTag(R.string.key_0, cursor.getString(0));
- ivPhoto[counter].setTag(R.string.key_1, cursor.getString(1));
- //Set image
- String image = cursor.getString(2);
- //Check if image exists
- File f;
- f = new File(this.getActivity().getFilesDir().toString() + "/img/galeria/preview/" + image);
- if (f.exists()) {
- //If the image exists, set it.
- Bitmap myBitmap = BitmapFactory.decodeFile(this.getActivity().getFilesDir().toString() + "/img/galeria/preview/" + image);
- ivPhoto[counter].setImageBitmap(myBitmap);
- } else {
- //If not, create directories and download asynchronously
- File fpath;
- fpath = new File(this.getActivity().getFilesDir().toString() + "/img/galeria/preview/");
- fpath.mkdirs();
- new DownloadImage(GM.API.SERVER + "/img/galeria/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/galeria/preview/" + image, ivPhoto[counter], GM.IMG.SIZE.PREVIEW).execute();
- }
- //Set listeners for images
- ivPhoto[counter].setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Fragment fragment = new AlbumLayout();
- Bundle bundle = new Bundle();
- int photoId = Integer.parseInt((String) v.getTag(R.string.key_0));
- int albumId = Integer.parseInt((String) v.getTag(R.string.key_1));
- bundle.putInt("album", albumId);
- bundle.putInt("photo", photoId);
- fragment.setArguments(bundle);
- FragmentManager fm = HomeLayout.this.getActivity().getFragmentManager();
- FragmentTransaction ft = fm.beginTransaction();
- ft.replace(R.id.activity_main_content_fragment, fragment);
- ft.addToBackStack("album_" + albumId);
- ft.commit();
- }
- });
- counter++;
- }
- //Close db
- cursor.close();
- db.close();
- return counter;
- }
- /**
- * Populates the Past Activities section of the home screen.
- * Makes the section visible and adds two rows with the two last activities.
- * Tapping them takes to the post, tapping anywhere else, to the blog section.
- *
- * @return The number of entries shown
- */
- @SuppressLint("InflateParams") //Throws unknown error when done properly.
- @SuppressWarnings("ResultOfMethodCallIgnored")
- private int setUpPastActivities(View view) {
- int counter = 0;
- String lang = GM.getLang();
- //Get data from the database of the future activities
- SQLiteDatabase db = SQLiteDatabase.openDatabase(getActivity().getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY);
- Cursor cursor = db.rawQuery("SELECT id, date, city, title_" + lang + " AS title, text_" + lang + " AS text, price, after_" + lang + " AS after FROM activity WHERE date < date('now') ORDER BY date DESC LIMIT 2;", null);
- //Show section
- LinearLayout llActivitiesPast = (LinearLayout) view.findViewById(R.id.ll_home_section_activities_past);
- llActivitiesPast.setVisibility(View.VISIBLE);
- //Set click listener
- llActivitiesPast.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- ((MainActivity) getActivity()).loadSection(GM.SECTION.ACTIVITIES);
- }
- });
- LinearLayout llList = (LinearLayout) view.findViewById(R.id.ll_home_section_activities_past_content);
- LinearLayout entry;
- //An inflater
- LayoutInflater factory = LayoutInflater.from(getActivity());
- //Print rows
- while (cursor.moveToNext()) {
- //Create a new row
- entry = (LinearLayout) factory.inflate(R.layout.row_home_activities, null);
- //Set margins
- LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
- layoutParams.setMargins(GM.UI.ENTRY_MARGIN, GM.UI.ENTRY_MARGIN, GM.UI.ENTRY_MARGIN, GM.UI.ENTRY_MARGIN);
- entry.setLayoutParams(layoutParams);
- //Set title
- TextView tvTitle = (TextView) entry.findViewById(R.id.tv_row_home_activity_title);
- tvTitle.setText(cursor.getString(3));
- //Set city
- TextView tvCity = (TextView) entry.findViewById(R.id.tv_row_home_activity_city);
- tvCity.setText(cursor.getString(2));
- //Hide price
- TextView tvPrice = (TextView) entry.findViewById(R.id.tv_row_home_activity_price);
- tvPrice.setVisibility(View.GONE);
- //tvPrice.setText(cursor.getString(5) + "€");
- //Set text
- String text;
- if (cursor.getString(6) == null || cursor.getString(6).length() < 1) {
- text = Html.fromHtml(cursor.getString(4)).toString();
- } else {
- text = Html.fromHtml(cursor.getString(6)).toString();
- }
- TextView tvText = (TextView) entry.findViewById(R.id.tv_row_home_activity_text);
- tvText.setText(text);
- //Set date
- TextView tvDate = (TextView) entry.findViewById(R.id.tv_row_home_activity_date);
- tvDate.setText(GM.formatDate(cursor.getString(1) + " 00:00:00", lang, true, true, false));
- //Set hidden id
- TextView tvId = (TextView) entry.findViewById(R.id.tv_row_home_activity_hidden);
- tvId.setText(cursor.getString(0));
- //Get image
- ImageView iv = (ImageView) entry.findViewById(R.id.iv_row_home_activity);
- Cursor cursorImage = db.rawQuery("SELECT image FROM activity_image WHERE activity = " + cursor.getString(0) + " ORDER BY idx LIMIT 1;", null);
- if (cursorImage.getCount() > 0) {
- cursorImage.moveToFirst();
- String image = cursorImage.getString(0);
- //Check if image exists
- File f;
- f = new File(this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/" + image);
- if (f.exists()) {
- //If the image exists, set it.
- Bitmap myBitmap = BitmapFactory.decodeFile(this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/" + image);
- iv.setImageBitmap(myBitmap);
- } else {
- //If not, create directories and download asynchronously
- File fpath;
- fpath = new File(this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/");
- fpath.mkdirs();
- new DownloadImage(GM.API.SERVER + "/img/actividades/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/" + image, iv, GM.IMG.SIZE.MINIATURE).execute();
- }
- }
- cursorImage.close();
- //Set onCLickListener
- entry.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //Toast.makeText(getActivity(), "OPENING POST", Toast.LENGTH_LONG).show();
- Fragment fragment = new ActivityPastLayout();
- Bundle bundle = new Bundle();
- //Pass post id
- int id = Integer.parseInt(((TextView) v.findViewById(R.id.tv_row_home_activity_hidden)).getText().toString());
- bundle.putInt("activity", id);
- fragment.setArguments(bundle);
- FragmentManager fm = HomeLayout.this.getActivity().getFragmentManager();
- FragmentTransaction ft = fm.beginTransaction();
- ft.replace(R.id.activity_main_content_fragment, fragment);
- ft.addToBackStack("activity_" + id);
- ft.commit();
- }
- });
- //Add to the list
- llList.addView(entry);
- counter++;
- }
- //Close db
- cursor.close();
- db.close();
- return counter;
- }
- /**
- * Populates the Future activities section of the home screen.
- * If there are future activities, makes the section visible.
- * Adds two rows with the two next activities.
- * Tapping them takes to the post, tapping anywhere else, to the blog section.
- *
- * @return The number of entries shown
- */
- @SuppressLint("InflateParams") //Throws unknown error when done properly.
- @SuppressWarnings("ResultOfMethodCallIgnored")
- private int setUpFutureActivities(View view) {
- int counter = 0;
- String lang = GM.getLang();
- LinearLayout llList = (LinearLayout) view.findViewById(R.id.ll_home_section_activities_future_content);
- LinearLayout entry;
- //An inflater
- LayoutInflater factory = LayoutInflater.from(getActivity());
- //Get data from the database of the future activities
- SQLiteDatabase db = SQLiteDatabase.openDatabase(getActivity().getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY);
- Cursor cursor = db.rawQuery("SELECT id, date, city, title_" + lang + " AS title, text_" + lang + " AS text, price FROM activity WHERE date >= date('now') ORDER BY date LIMIT 2;", null);
- //If there are future activities...
- if (cursor.getCount() > 0) {
- //Show section
- LinearLayout llActivitiesFuture = (LinearLayout) view.findViewById(R.id.ll_home_section_activities_future);
- llActivitiesFuture.setVisibility(View.VISIBLE);
- //Set click listener
- llActivitiesFuture.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- ((MainActivity) getActivity()).loadSection(GM.SECTION.ACTIVITIES);
- }
- });
- //Print rows
- while (cursor.moveToNext()) {
- //Create a new row
- entry = (LinearLayout) factory.inflate(R.layout.row_home_activities, null);
- //Set margins
- LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
- layoutParams.setMargins(GM.UI.ENTRY_MARGIN, GM.UI.ENTRY_MARGIN, GM.UI.ENTRY_MARGIN, GM.UI.ENTRY_MARGIN);
- entry.setLayoutParams(layoutParams);
- //Set title
- TextView tvTitle = (TextView) entry.findViewById(R.id.tv_row_home_activity_title);
- tvTitle.setText(cursor.getString(3));
- //Set city
- TextView tvCity = (TextView) entry.findViewById(R.id.tv_row_home_activity_city);
- tvCity.setText(cursor.getString(2));
- //Set price
- TextView tvPrice = (TextView) entry.findViewById(R.id.tv_row_home_activity_price);
- tvPrice.setText(String.format(getString(R.string.price), cursor.getInt(5)));
- //Set text
- String text = Html.fromHtml(cursor.getString(4)).toString();
- TextView tvText = (TextView) entry.findViewById(R.id.tv_row_home_activity_text);
- tvText.setText(text);
- //Set date
- TextView tvDate = (TextView) entry.findViewById(R.id.tv_row_home_activity_date);
- tvDate.setText(GM.formatDate(cursor.getString(1) + " 00:00:00", lang, true, false, false));
- //Set hidden id
- TextView tvId = (TextView) entry.findViewById(R.id.tv_row_home_activity_hidden);
- tvId.setText(cursor.getString(0));
- //Get image
- ImageView iv = (ImageView) entry.findViewById(R.id.iv_row_home_activity);
- Cursor cursorImage = db.rawQuery("SELECT image FROM activity_image WHERE activity = " + cursor.getString(0) + " ORDER BY idx LIMIT 1;", null);
- if (cursorImage.getCount() > 0) {
- cursorImage.moveToFirst();
- String image = cursorImage.getString(0);
- //Check if image exists
- File f;
- f = new File(this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/" + image);
- if (f.exists()) {
- //If the image exists, set it.
- Bitmap myBitmap = BitmapFactory.decodeFile(this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/" + image);
- iv.setImageBitmap(myBitmap);
- } else {
- //If not, create directories and download asynchronously
- File fpath;
- fpath = new File(this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/");
- fpath.mkdirs();
- new DownloadImage(GM.API.SERVER + "/img/actividades/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/" + image, iv, GM.IMG.SIZE.MINIATURE).execute();
- }
- }
- cursorImage.close();
- //Set onCLickListener
- entry.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Fragment fragment = new ActivityFutureLayout();
- Bundle bundle = new Bundle();
- //Pass post id
- int id = Integer.parseInt(((TextView) v.findViewById(R.id.tv_row_home_activity_hidden)).getText().toString());
- bundle.putInt("activity", id);
- fragment.setArguments(bundle);
- FragmentManager fm = HomeLayout.this.getActivity().getFragmentManager();
- FragmentTransaction ft = fm.beginTransaction();
- ft.replace(R.id.activity_main_content_fragment, fragment);
- ft.addToBackStack("activity_" + id);
- ft.commit();
- }
- });
- //Add to the list
- llList.addView(entry);
- counter++;
- }
- }
- //Close db
- cursor.close();
- db.close();
- return counter;
- }
- /**
- * Populates the Blog section of the home screen.
- * Adds two rows with the two latest posts. Tapping them takes to the post, tapping anywhere else, to the blog section.
- *
- * @return The number of entries shown
- */
- @SuppressLint("InflateParams") //Throws unknown error when done properly.
- @SuppressWarnings("ResultOfMethodCallIgnored")
- private int setUpBlog(View view) {
- int counter = 0;
- String lang = GM.getLang();
- LinearLayout llBlog = (LinearLayout) view.findViewById(R.id.ll_home_section_blog);
- llBlog.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- ((MainActivity) getActivity()).loadSection(GM.SECTION.BLOG);
- }
- });
- //Assign elements
- LinearLayout llList = (LinearLayout) view.findViewById(R.id.ll_home_section_blog_content);
- LinearLayout entry;
- //An inflater
- LayoutInflater factory = LayoutInflater.from(getActivity());
- SQLiteDatabase db = SQLiteDatabase.openDatabase(getActivity().getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY);
- final Cursor cursor;
- //Get data from the database
- cursor = db.rawQuery("SELECT id, title_" + lang + " AS title, text_" + lang + " AS text, dtime FROM post ORDER BY dtime DESC LIMIT 2;", null);
- //Loop
- while (cursor.moveToNext()) {
- //Create a new row
- entry = (LinearLayout) factory.inflate(R.layout.row_home_blog, null);
- //Set margins
- LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
- layoutParams.setMargins(GM.UI.ENTRY_MARGIN, GM.UI.ENTRY_MARGIN, GM.UI.ENTRY_MARGIN, GM.UI.ENTRY_MARGIN);
- entry.setLayoutParams(layoutParams);
- //Set title
- TextView tvTitle = (TextView) entry.findViewById(R.id.tv_row_home_blog_title);
- tvTitle.setText(cursor.getString(1));
- //Set text
- String text = Html.fromHtml(cursor.getString(2)).toString();
- TextView tvText = (TextView) entry.findViewById(R.id.tv_row_home_blog_text);
- tvText.setText(text);
- //Set date
- TextView tvDate = (TextView) entry.findViewById(R.id.tv_row_home_blog_date);
- tvDate.setText(GM.formatDate(cursor.getString(3), lang, true, true, false));
- //Set hidden id
- TextView tvId = (TextView) entry.findViewById(R.id.tv_row_home_blog_hidden);
- tvId.setText(cursor.getString(0));
- //Get image
- ImageView iv = (ImageView) entry.findViewById(R.id.iv_row_home_blog_image);
- Cursor cursorImage = db.rawQuery("SELECT image FROM post_image WHERE post = " + cursor.getString(0) + " ORDER BY idx LIMIT 1;", null);
- if (cursorImage.getCount() > 0) {
- cursorImage.moveToFirst();
- String image = cursorImage.getString(0);
- //Check if image exists
- File f;
- f = new File(this.getActivity().getFilesDir().toString() + "/img/blog/miniature/" + image);
- if (f.exists()) {
- //If the image exists, set it.
- Bitmap myBitmap = BitmapFactory.decodeFile(this.getActivity().getFilesDir().toString() + "/img/blog/miniature/" + image);
- iv.setImageBitmap(myBitmap);
- } else {
- //If not, create directories and download asynchronously
- File fpath;
- fpath = new File(this.getActivity().getFilesDir().toString() + "/img/blog/miniature/");
- fpath.mkdirs();
- new DownloadImage(GM.API.SERVER + "/img/blog/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/blog/miniature/" + image, iv, GM.IMG.SIZE.MINIATURE).execute();
- }
- }
- cursorImage.close();
- //Set onCLickListener
- entry.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Fragment fragment = new PostLayout();
- Bundle bundle = new Bundle();
- //Pass post id
- int id = Integer.parseInt(((TextView) v.findViewById(R.id.tv_row_home_blog_hidden)).getText().toString());
- bundle.putInt("post", id);
- fragment.setArguments(bundle);
- FragmentManager fm = HomeLayout.this.getActivity().getFragmentManager();
- FragmentTransaction ft = fm.beginTransaction();
- ft.replace(R.id.activity_main_content_fragment, fragment);
- ft.addToBackStack("post_" + id);
- ft.commit();
- }
- });
- //Add to the list
- llList.addView(entry);
- counter++;
- }
- //Close database
- cursor.close();
- db.close();
- return counter;
- }
- /**
- * Called when the user location changes.
- * Recalculates the list of around events and calls updateLocation() to
- * update the distance in the location section.
- *
- * @param location The new location
- *
- * @see android.location.LocationListener#onLocationChanged(android.location.Location)
- */
- @Override
- public void onLocationChanged(Location location) {
- setUpLocation(location, view);
- }
- /**
- * Called when the location provider changes it's state.
- * Recalculates the list of events in the around section.
- *
- * @param provider The name of the provider
- * @param status Status code of the provider
- * @param extras Extras passed
- *
- * @see android.location.LocationListener#onStatusChanged(java.lang.String, int, android.os.Bundle)
- */
- @Override
- public void onStatusChanged(String provider, int status, Bundle extras) {
- //populateAround();
- }
- /**
- * Called when a location provider is enabled.
- * Recalculates the list of events.
- *
- * @param provider The name of the provider
- *
- * @see android.location.LocationListener#onProviderEnabled(java.lang.String)
- */
- @Override
- public void onProviderEnabled(String provider) {
- //populateAround();
- }
- /**
- * Called when a location provider is disabled.
- * Recalculates the list of events.
- *
- * @param provider The name of the provider
- *
- * @see android.location.LocationListener#onProviderDisabled(java.lang.String)
- */
- @Override
- public void onProviderDisabled(String provider) {
- //populateAround();
- }
- /**
- * Called when the fragment is paused.
- * Stops the location manager
- * @see android.app.Fragment#onPause()
- */
- @Override
- public void onPause() {
- if (!(ActivityCompat.checkSelfPermission(view.getContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(view.getContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)) {
- locationManager.removeUpdates(this);
- }
- super.onPause();
- }
- /**
- * Called when the fragment is destroyed.
- * Stops the location manager
- * @see android.app.Fragment#onDestroy()
- */
- @Override
- public void onDestroy() {
- try {
- if (!(ActivityCompat.checkSelfPermission(view.getContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(view.getContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)) {
- locationManager.removeUpdates(this);
- }
- }
- catch (Exception ex){
- Log.e("Location manager", "Unable to stop location manager on destroy: " + ex.toString());
- }
- super.onDestroy();
- }
-
- /**
- * Called when the fragment is brought back into the foreground.
- * Resumes the map and the location manager.
- *
- * @see android.app.Fragment#onResume()
- */
- @Override
- public void onResume(){
- if (!(ActivityCompat.checkSelfPermission(view.getContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(view.getContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)) {
- locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, this);
- }
- super.onResume();
- }
- }
|