Browse Source

Merge branch 'master' into NotificationV1API

Iñigo Valentin 9 years ago
parent
commit
011a3a1e98
68 changed files with 3580 additions and 1185 deletions
  1. 2 0
      .gitignore
  2. 51 0
      README.es-ES.md
  3. 51 0
      README.es-EU.md
  4. 29 9
      README.md
  5. 2 2
      app/build.gradle
  6. 3 3
      app/src/main/AndroidManifest.xml
  7. 0 9
      app/src/main/java/com/ivalentin/margolariak/AboutActivity.java
  8. 4 3
      app/src/main/java/com/ivalentin/margolariak/ActivityFutureLayout.java
  9. 3 3
      app/src/main/java/com/ivalentin/margolariak/ActivityLayout.java
  10. 6 10
      app/src/main/java/com/ivalentin/margolariak/ActivityPastLayout.java
  11. 8 2
      app/src/main/java/com/ivalentin/margolariak/AlbumLayout.java
  12. 1 1
      app/src/main/java/com/ivalentin/margolariak/BlogLayout.java
  13. 120 9
      app/src/main/java/com/ivalentin/margolariak/GM.java
  14. 14 5
      app/src/main/java/com/ivalentin/margolariak/HomeLayout.java
  15. 4 3
      app/src/main/java/com/ivalentin/margolariak/LablancaLayout.java
  16. 2 0
      app/src/main/java/com/ivalentin/margolariak/LablancaNoFestivalsLayout.java
  17. 96 16
      app/src/main/java/com/ivalentin/margolariak/MainActivity.java
  18. 9 5
      app/src/main/java/com/ivalentin/margolariak/PhotoLayout.java
  19. 63 53
      app/src/main/java/com/ivalentin/margolariak/PostComment.java
  20. 4 3
      app/src/main/java/com/ivalentin/margolariak/PostLayout.java
  21. 12 8
      app/src/main/java/com/ivalentin/margolariak/ScheduleLayout.java
  22. 259 1
      app/src/main/java/com/ivalentin/margolariak/SponsorActivity.java
  23. 133 28
      app/src/main/java/com/ivalentin/margolariak/Sync.java
  24. 143 0
      app/src/main/java/com/ivalentin/margolariak/UsActivity.java
  25. 2 2
      app/src/main/res/drawable/button.xml
  26. 2 2
      app/src/main/res/drawable/buttonpressed.xml
  27. 1 1
      app/src/main/res/drawable/input.xml
  28. BIN
      app/src/main/res/drawable/ul.png
  29. BIN
      app/src/main/res/drawable/us_activities.png
  30. BIN
      app/src/main/res/drawable/us_asociacion.png
  31. BIN
      app/src/main/res/drawable/us_cuadrilla.png
  32. BIN
      app/src/main/res/drawable/us_transparency.png
  33. BIN
      app/src/main/res/drawable/web.png
  34. 126 123
      app/src/main/res/layout/activity_main.xml
  35. 5 4
      app/src/main/res/layout/activity_settings.xml
  36. 119 0
      app/src/main/res/layout/activity_sponsor.xml
  37. 385 0
      app/src/main/res/layout/activity_us.xml
  38. 57 34
      app/src/main/res/layout/dialog_schedule.xml
  39. 128 0
      app/src/main/res/layout/dialog_sponsor.xml
  40. 11 10
      app/src/main/res/layout/dialog_sync.xml
  41. 23 21
      app/src/main/res/layout/dialog_sync_failed.xml
  42. 64 0
      app/src/main/res/layout/dialog_us.xml
  43. 109 119
      app/src/main/res/layout/fragment_layout_activity_future.xml
  44. 87 80
      app/src/main/res/layout/fragment_layout_activity_past.xml
  45. 55 29
      app/src/main/res/layout/fragment_layout_album.xml
  46. 60 51
      app/src/main/res/layout/fragment_layout_blog.xml
  47. 43 24
      app/src/main/res/layout/fragment_layout_home.xml
  48. 79 50
      app/src/main/res/layout/fragment_layout_lablanca.xml
  49. 425 27
      app/src/main/res/layout/fragment_layout_lablanca_nofestivals.xml
  50. 17 17
      app/src/main/res/layout/fragment_layout_location.xml
  51. 169 146
      app/src/main/res/layout/fragment_layout_photo.xml
  52. 183 147
      app/src/main/res/layout/fragment_layout_post.xml
  53. 97 63
      app/src/main/res/layout/fragment_layout_schedule.xml
  54. 6 3
      app/src/main/res/layout/row_activity_schedule.xml
  55. 25 14
      app/src/main/res/layout/row_album.xml
  56. 6 3
      app/src/main/res/layout/row_blog.xml
  57. 13 6
      app/src/main/res/layout/row_festival_price_day.xml
  58. 15 9
      app/src/main/res/layout/row_festival_price_pack.xml
  59. 6 2
      app/src/main/res/layout/row_schedule.xml
  60. 75 0
      app/src/main/res/layout/row_sponsor.xml
  61. 3 0
      app/src/main/res/menu/menu.xml
  62. 49 3
      app/src/main/res/values-en/strings.xml
  63. 50 4
      app/src/main/res/values-eu-rES/strings.xml
  64. 6 5
      app/src/main/res/values/color.xml
  65. 55 8
      app/src/main/res/values/strings.xml
  66. 1 1
      build.gradle
  67. 2 2
      gradle.properties
  68. 2 2
      gradle/wrapper/gradle-wrapper.properties

+ 2 - 0
.gitignore

@@ -1,6 +1,8 @@
  
 # Built application files
 /*/build/
+build/android-profile/
+projectFilesBackup/
 
 # Crashlytics configuations
 com_crashlytics_export_strings.xml

+ 51 - 0
README.es-ES.md

@@ -0,0 +1,51 @@
+---
+[Information in english](README.md) 
+[Informazioa euskaraz](README.es-EU.md)
+---
+
+
+# Aplicación de Gasteizko Margolariak para Android #
+
+Una aplicacion para dispositivos Android para miembros de [Gasteizko Margolariak](https://margolariak.com/) [Vitoria-Gasteiz](http://www.vitoria-gasteiz.org/).
+
+[![Gasteizko Margolariak en Google Play](https://margolariak.com/img/app/android.gif)](https://play.google.com/store/apps/details?id=com.ivalentin.margolariak)
+
+### Durante las Fiestas ###
+
+Hay funciones diseñadas especificamente para las Fiestas de La Blanca, y solo estarán disponibles en esas fechas.
+
+* Consulta en tu teléfono el Programa de Fiestas, encuentra actos alrededor tuyo ydescubre como llegar hasta ellos.
+* Consulta el Programa de Fiestas de Gasteizko Margolariak, detallado y con la ubicación de cada actividad...
+* ... pero, como no somos famosos por nuestra puntualidad, comprueba nuestra ubicación en tiempo real.
+
+
+### Durante el resto del año ###
+
+* Mantente informado de las actividades que organizamos durante el resto del año.
+* Recibe las ultimas noticias sobre la Cuadrilla en nuestro Blog
+* Galería de fotos de todas nuestras actividades.
+
+
+### Compatibilidad ###
+
+Requiere Android 3.0 (Honeycomb, API 11) o superior.
+
+
+### Idiomas ###
+
+* Castellano
+* Inglés
+* Euskera (parcialmente)
+
+
+### Permisos ###
+
+* UBICACION: Permite el uso del GPS para calcular la distancia a lugares y eventos.
+* ALMACENAMIENTO: Para almacenar las imagenes descargadas y no tener que descargarlas continuamente.
+
+
+### Otros dispositivos ###
+
+* ¿Eres de iPhone? [Estamos en ello!](https://github.com/GasteizkoMargolariak/GasteizkoMargolariakIOSApp) 
+* ¿Prefieres el sitio web? [No problem!](https://github.com/GasteizkoMargolariak/GasteizkoMargolariakWeb)
+

+ 51 - 0
README.es-EU.md

@@ -0,0 +1,51 @@
+---
+[Informacion en castellano](README.es-ES.md) 
+[Information in english](README.md)
+---
+
+
+# Androizko Gasteizko Margolariak aplikazioia #
+
+Una aplicacion para dispositivos Android para miembros de [Gasteizko Margolariak](https://margolariak.com/) [Vitoria-Gasteiz](http://www.vitoria-gasteiz.org/).
+
+[![Gasteizko Margolariak en Google Play](https://margolariak.com/img/app/android.gif)](https://play.google.com/store/apps/details?id=com.ivalentin.margolariak)
+
+### Durante las Fiestas ###
+
+Hay funciones diseñadas especificamente para las Fiestas de La Blanca, y solo estarán disponibles en esas fechas.
+
+* Consulta en tu teléfono el Programa de Fiestas, encuentra actos alrededor tuyo ydescubre como llegar hasta ellos.
+* Consulta el Programa de Fiestas de Gasteizko Margolariak, detallado y con la ubicación de cada actividad...
+* ... pero, como no somos famosos por nuestra puntualidad, comprueba nuestra ubicación en tiempo real.
+
+
+### Durante el resto del año ###
+
+* Mantente informado de las actividades que organizamos durante el resto del año.
+* Recibe las ultimas noticias sobre la Cuadrilla en nuestro Blog
+* Galería de fotos de todas nuestras actividades.
+
+
+### Compatibilidad ###
+
+Requiere Android 3.0 (Honeycomb, API 11) o superior.
+
+
+### Idiomas ###
+
+* Castellano
+* Inglés
+* Euskera (parcialmente)
+
+
+### Permisos ###
+
+* UBICACION: Permite el uso del GPS para calcular la distancia a lugares y eventos.
+* ALMACENAMIENTO: Para almacenar las imagenes descargadas y no tener que descargarlas continuamente.
+
+
+### Otros dispositivos ###
+
+* ¿Eres de iPhone? [Estamos en ello!](https://github.com/GasteizkoMargolariak/GasteizkoMargolariakIOSApp) 
+* ¿Prefieres el sitio web? [No problem!](https://github.com/GasteizkoMargolariak/GasteizkoMargolariakWeb)
+

+ 29 - 9
README.md

@@ -1,24 +1,30 @@
- 
-Gasteizko Margolariak Android App
-===
+---
+[Información en castellano](README.es-ES.md) 
+[Informazioa euskaraz](README.es-EU.md)
+---
 
-An Android app intended for members of <a href="http://margolariak.com/">Gasteizko Margolariak</a> in <a href="http://www.vitoria-gasteiz.org/">Vitoria-Gasteiz</a>, Spain.
 
+# Gasteizko Margolariak Android App #
+
+An Android app intended for members of [Gasteizko Margolariak](https://margolariak.com/) in [Vitoria-Gasteiz](http://www.vitoria-gasteiz.org/), Spain.
+
+[![Gasteizko Margolariak on Google Play](https://margolariak.com/img/app/android.gif)](https://play.google.com/store/apps/details?id=com.ivalentin.margolariak)
 
 ### Features during the city festivals ###
 
 This features wil be only available during the city festivals.
 
-* Check out the festival schedule, showing events all around the city, and indicating their location.
+* Check out the festival schedule, discover events all around the city, and get their location.
 * Check out the schedule for the members of Gasteizko Margolariak, indicating the location of every event and activity...
 * ... but, since we are not known for our puntuality, check out the location of Gasteizko Margolariak in real time.
+* Approximate distanc eto important event around the city.
 
 
 ### Features for the rest of the year ###
 
-* Check out and be notified of all activities organized by gasteizzko margolariak.
-* View nd comment our blog.
-* View and comment our gallery.
+* Check out and be notified of all activities organized by Gasteizko Margolariak.
+* Stay updated witho our blog.
+* Check out our photo gallery.
 
 
 ### Compatibility ###
@@ -26,7 +32,21 @@ This features wil be only available during the city festivals.
 Required Android 3.0 (Honeycomb, API level 11) or higher.
 
 
+### Languages ###
+
+* Spanish
+* English
+* Basque (mostly)
+
+
 ### Permissions ###
 
-* __ACCESS_FINE_LOCATION__: Allow the use of GPS location to indicate distance to certain events and activities.
+* LOCATION: Allow the use of GPS location to indicate distance to certain events and activities.
+* STORAGE: Required to  cache images, so they are not downloaded avery time the app is opened.
+
+
+### On other devices ###
+
+* Got an iPhone? [We are working on it!](https://github.com/GasteizkoMargolariak/GasteizkoMargolariakIOSApp) 
+* Do you prefer web pages? [No problem!](https://github.com/GasteizkoMargolariak/GasteizkoMargolariakWeb)
 

+ 2 - 2
app/build.gradle

@@ -2,11 +2,11 @@ apply plugin: 'com.android.application'
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.3"
+    buildToolsVersion '25.0.0'
 
     defaultConfig {
         applicationId "com.ivalentin.margolariak"
-        minSdkVersion 12
+        minSdkVersion 14
         targetSdkVersion 23
         multiDexEnabled true
     }

+ 3 - 3
app/src/main/AndroidManifest.xml

@@ -2,8 +2,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           xmlns:tools="http://schemas.android.com/tools"
           package="com.ivalentin.margolariak"
-    android:versionCode="19"
-    android:versionName="2.0.5" >
+    android:versionCode="23"
+    android:versionName="3.0.2" >
 
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
@@ -61,8 +61,8 @@
             android:screenOrientation="portrait"
             android:label="@string/app_name">
         </activity>
-        <activity android:name=".AboutActivity"/>
         <activity android:name=".SponsorActivity"/>
+        <activity android:name=".UsActivity"/>
 
         <receiver
             android:process=":remote"

+ 0 - 9
app/src/main/java/com/ivalentin/margolariak/AboutActivity.java

@@ -1,9 +0,0 @@
-package com.ivalentin.margolariak;
-
-import android.app.Activity;
-
-/**
- * Created by seavenois on 26/09/16.
- */
-public class AboutActivity extends Activity{
-}

+ 4 - 3
app/src/main/java/com/ivalentin/margolariak/ActivityFutureLayout.java

@@ -82,7 +82,7 @@ public class ActivityFutureLayout extends Fragment implements OnMapReadyCallback
         final Cursor cursor;
 		String lang = GM.getLang();
 
-        cursor = db.rawQuery("SELECT id, title_" + lang+ " AS title, text_" + lang + " AS text, date, city, price FROM activity WHERE id = " + id + ";", null);
+        cursor = db.rawQuery("SELECT id, title_" + lang+ " AS title, text_" + lang + " AS text, date, city, price, permalink FROM activity WHERE id = " + id + ";", null);
         cursor.moveToFirst();
 
         //Get display elements
@@ -102,6 +102,7 @@ public class ActivityFutureLayout extends Fragment implements OnMapReadyCallback
         //Set fields
         tvTitle.setText(cursor.getString(1));
         ((MainActivity) getActivity()).setSectionTitle(cursor.getString(1));
+		((MainActivity) getActivity()).setShareLink(String.format(getString(R.string.share_with_title), cursor.getString(1)), GM.SHARE.ACTIVITIES + cursor.getString(6));
 		if (Build.VERSION.SDK_INT >= 19) {
 			wvText.setLayerType(View.LAYER_TYPE_HARDWARE, null);
 		}
@@ -110,7 +111,7 @@ public class ActivityFutureLayout extends Fragment implements OnMapReadyCallback
 		}
 		wvText.loadDataWithBaseURL(null, cursor.getString(2), "text/html", "utf-8", null);
 		//wvText.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
-        tvDate.setText(GM.formatDate(cursor.getString(3) + " 00:00:00", lang, false));
+        tvDate.setText(GM.formatDate(cursor.getString(3) + " 00:00:00", lang, true, false, false));
         tvPrice.setText(String.format(getString(R.string.price), cursor.getInt(5)));
         tvCity.setText(cursor.getString(4));
 
@@ -291,7 +292,7 @@ public class ActivityFutureLayout extends Fragment implements OnMapReadyCallback
 
             //Set time
             try{
-                if (cursor.getString(5).length() == 0) {
+                if (cursor.getString(5) == null || cursor.getString(5).length() == 0) {
                     tvTime.setText(timeFormat.format(dateFormat.parse(cursor.getString(4))));
                 }
                 else {

+ 3 - 3
app/src/main/java/com/ivalentin/margolariak/ActivityLayout.java

@@ -112,7 +112,7 @@ public class ActivityLayout extends Fragment{
 
                 //Set date
                 TextView tvDate = (TextView) entry.findViewById(R.id.tv_row_activity_future_date);
-                tvDate.setText(GM.formatDate(cursor.getString(1) + " 00:00:00", lang, false));
+                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_activity_future_hidden);
@@ -195,7 +195,7 @@ public class ActivityLayout extends Fragment{
                 text = Html.fromHtml(cursorPast.getString(4)).toString();
             }
             else {
-                if (cursorPast.getString(5).length() < 1) {
+                if (cursorPast.getString(5) == null || cursorPast.getString(5).length() < 1) {
                     text = Html.fromHtml(cursorPast.getString(4)).toString();
                 } else {
                     text = Html.fromHtml(cursorPast.getString(5)).toString();
@@ -206,7 +206,7 @@ public class ActivityLayout extends Fragment{
 
             //Set date
             TextView tvDate = (TextView) entry.findViewById(R.id.tv_row_activity_past_date);
-            tvDate.setText(GM.formatDate(cursorPast.getString(1) + " 00:00:00", lang, false));
+            tvDate.setText(GM.formatDate(cursorPast.getString(1) + " 00:00:00", lang, true, true, false));
 
             //Set hidden id
             TextView tvId = (TextView) entry.findViewById(R.id.tv_row_activity_past_hidden);

+ 6 - 10
app/src/main/java/com/ivalentin/margolariak/ActivityPastLayout.java

@@ -50,7 +50,7 @@ public class ActivityPastLayout extends Fragment {
         SQLiteDatabase db = SQLiteDatabase.openDatabase(getActivity().getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY);
         final Cursor cursor;
         String lang = GM.getLang();
-        cursor = db.rawQuery("SELECT id, title_" + lang+ " AS title, text_" + lang + " AS text, date, city, after_" + lang + " AS after FROM activity WHERE id = " + id + ";", null);
+        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);
         cursor.moveToFirst();
 
         //Get display elements
@@ -75,17 +75,13 @@ public class ActivityPastLayout extends Fragment {
         //Set fields
         tvTitle.setText(cursor.getString(1));
         ((MainActivity) getActivity()).setSectionTitle(cursor.getString(1));
-        if (cursor.getString(5) != null) {
-            if (cursor.getString(5).length() < 1) {
-                wvText.loadDataWithBaseURL(null, cursor.getString(2), "text/html", "utf-8", null);
-            } else {
-                wvText.loadDataWithBaseURL(null, cursor.getString(5), "text/html", "utf-8", null);
-            }
-        }
-        else{
+        ((MainActivity) getActivity()).setShareLink(String.format(getString(R.string.share_with_title), cursor.getString(1)), GM.SHARE.ACTIVITIES + cursor.getString(6));
+        if (cursor.getString(5) == null || cursor.getString(5).length() < 1) {
             wvText.loadDataWithBaseURL(null, cursor.getString(2), "text/html", "utf-8", null);
+        } else {
+            wvText.loadDataWithBaseURL(null, cursor.getString(5), "text/html", "utf-8", null);
         }
-        tvDate.setText(GM.formatDate(cursor.getString(3) + " 00:00:00", lang, false));
+        tvDate.setText(GM.formatDate(cursor.getString(3) + " 00:00:00", lang, true, true, false));
         tvCity.setText(cursor.getString(4));
 
         //Get images

+ 8 - 2
app/src/main/java/com/ivalentin/margolariak/AlbumLayout.java

@@ -52,7 +52,7 @@ public class AlbumLayout extends Fragment {
         SQLiteDatabase db = SQLiteDatabase.openDatabase(getActivity().getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY);
         final Cursor cursor;
 		String lang = GM.getLang();
-        cursor = db.rawQuery("SELECT id, title_" + lang + " AS title, description_" + lang + " AS description FROM album WHERE id = " + id + ";", null);
+        cursor = db.rawQuery("SELECT id, title_" + lang + " AS title, description_" + lang + " AS description, permalink FROM album WHERE id = " + id + ";", null);
         cursor.moveToFirst();
 
         //Set album elements
@@ -67,8 +67,12 @@ public class AlbumLayout extends Fragment {
 		}
 
         tvTitle.setText(cursor.getString(1));
+		((MainActivity) getActivity()).setSectionTitle(cursor.getString(1));
+		((MainActivity) getActivity()).setShareLink(String.format(getString(R.string.share_with_title), cursor.getString(1)), GM.SHARE.GALLERY + cursor.getString(3));
+
 		final String albumName = cursor.getString(1);
-        if (cursor.getString(2).length() < 1){
+		final String albumPerm = cursor.getString(3);
+        if (cursor.getString(2) == null || cursor.getString(2).length() < 1){
             tvDescription.setVisibility(View.GONE);
         }
         else {
@@ -95,6 +99,7 @@ public class AlbumLayout extends Fragment {
 
             //Set title
             TextView tvTitleLeft = (TextView) entry.findViewById(R.id.tv_row_album_title_left);
+
 			if (imageCursor.getString(1) != null && imageCursor.getString(1).length() > 0) {
 				tvTitleLeft.setText(imageCursor.getString(1));
 			}
@@ -148,6 +153,7 @@ public class AlbumLayout extends Fragment {
 				int id = Integer.parseInt(((TextView) v.findViewById(R.id.tv_row_album_hidden_left)).getText().toString());
 				bundle.putInt("photo", id);
 				bundle.putString("albumName", albumName);
+				bundle.putString("albumPerm", albumPerm);
 				fragment.setArguments(bundle);
 
 				FragmentManager fm = AlbumLayout.this.getActivity().getFragmentManager();

+ 1 - 1
app/src/main/java/com/ivalentin/margolariak/BlogLayout.java

@@ -175,7 +175,7 @@ public class BlogLayout extends Fragment{
 
             //Set date
             TextView tvDate = (TextView) entry.findViewById(R.id.tv_row_blog_date);
-            tvDate.setText(GM.formatDate(cursor.getString(3), lang, false));
+            tvDate.setText(GM.formatDate(cursor.getString(3), lang, true, true, false));
 
             //Set hidden id
             TextView tvId = (TextView) entry.findViewById(R.id.tv_row_blog_hidden);

+ 120 - 9
app/src/main/java/com/ivalentin/margolariak/GM.java

@@ -23,8 +23,16 @@ final class GM {
 	 */
 	final class DB {
 
+		/**
+		 * Name of the database.
+		 */
 		static final String NAME = "gm";
 
+		/**
+		 * Initial version of the database.
+		 */
+		static final int INITIAL_VERSION = 0;
+
 		/**
 		 * Column types
 		 */
@@ -605,9 +613,19 @@ final class GM {
 			static final String PREVIOUS_APP_VERSION = "previous_app_version";
 
 			/**
-			 * Key of the data to store if ther is a festival season..
+			 * Key of the data to store if ther is a festival season.
 			 */
 			static final String LABLANCA = "lablanca";
+
+			/**
+			 * Key that indicates if comments can be posted.
+			 */
+			static final String COMMENTS = "comments";
+
+			/**
+			 * Key that indicates if photos can be uploaded.
+			 */
+			static final String PHOTOS = "photos";
 		}
 
 		/**
@@ -630,6 +648,16 @@ final class GM {
 			 * Default value for the data that indicates if it's festival season.
 			 */
 			static final boolean LABLANCA = false;
+
+			/**
+			 * Default value for the key that indicates if comments can be posted.
+			 */
+			static final boolean COMMENTS = false;
+
+			/**
+			 * Default value for the key that indicates if photos can be uploaded.
+			 */
+			static final boolean PHOTOS = false;
 		}
 	}
 
@@ -689,7 +717,7 @@ final class GM {
 		/**
 		 * URL of the server.
 		 */
-		static final String SERVER = "http://margolariak.com";
+		static final String SERVER = "https://margolariak.com";
 	}
 
 	/**
@@ -865,6 +893,55 @@ final class GM {
 				static final String FORMAT = "json";
 			}
 		}
+
+		/**
+		 * Utilities for the COMMENT V1 API.
+		 */
+		static final class COMMENT {
+
+			/**
+			 * Path to the API.
+			 */
+			static final String PATH = "/API/v1/comment.php";
+
+			/**
+			 * Keys fotr the API parameters.
+			 */
+			static final class KEY {
+
+				/**
+				 * Key for the client identifier.
+				 */
+				static final String CLIENT = "client";
+
+				/**
+				 * Key for the user identifier.
+				 */
+				static final String USER = "user";
+
+				/**
+				 * Key for the action to perform with the API ("sync" or "version").
+				 */
+				static final String TARGET = "target";
+
+				/**
+				 * Key to indicate the format of the data for the API to send.
+				 */
+				static final String ID = "id";
+
+				/**
+				 * Key to indicate the comment's username.
+				 */
+				static final String USERNAME = "username";
+
+				/**
+				 * Key to indicate the text.
+				 */
+				static final String TEXT = "text";
+
+			}
+		}
+
 	}
 
 	/**
@@ -1096,6 +1173,17 @@ final class GM {
 		static final int ENTRY_MARGIN = 8;
 	}
 
+	/**
+	 * URLs to be shared.
+	 */
+	static final class SHARE {
+		static final String HOME = "https://www.margolariak.com";
+		static final String LABLANCA = HOME + "/lablanca/";
+		static final String ACTIVITIES = HOME + "/actividades/";
+		static final String BLOG = HOME + "/blog/";
+		static final String GALLERY = HOME + "/galeria/";
+	}
+
 	/**
 	 * Gets the language code for sql queries.
 	 * Only three values can be returned: es, eu, en.
@@ -1121,15 +1209,17 @@ final class GM {
 	/**
 	 * Formats a datetime format strings and returns a human readable date, depending on the language
 	 *
-	 * @param dateString String in a datetime format
-	 * @param lang Language (es, en, eu)
-	 * @param includeTime Also returns the hour and minutes
+	 * @param dateString String in a datetime format.
+	 * @param lang Language (es, en, eu).
+	 * @param includeDay Also returns the weekday.
+	 * @param includeYear Also returns the year.
+	 * @param includeTime Also returns the hour and minute.
 	 *
 	 * @return The fragment view
 	 *
 	 * @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)
 	 */
-	static String formatDate(String dateString, String lang, boolean includeTime){
+	static String formatDate(String dateString, String lang, boolean includeDay, boolean includeYear, boolean includeTime){
 
 		String output = "";
 
@@ -1164,7 +1254,14 @@ final class GM {
 				case "es":
 					dayName = dayNameEs[dayNumber];
 					monthName = monthNameEs[monthNumber];
-					output = dayName + ", " + day + " de " + monthName + " de " + year;
+					output = "";
+					if (includeDay){
+						output = dayName + ", ";
+					}
+					output = output + day + " de " + monthName;
+					if (includeYear){
+						output = output + " de " + year;
+					}
 					if (includeTime){
 						output = output + " a las " + time;
 					}
@@ -1172,7 +1269,14 @@ final class GM {
 				case "eu":
 					dayName = dayNameEu[dayNumber];
 					monthName = monthNameEu[monthNumber];
-					output = year + "ko" + monthName + " " + day + "an, " + dayName;
+					output = "";
+					if (includeYear){
+						output = year + "ko";
+					}
+					output = output + monthName + " " + day + "an";
+					if (includeDay){
+						output = output + ", " + dayName;
+					}
 					if (includeTime){
 						output = output + " " + time + "etan";
 					}
@@ -1180,7 +1284,14 @@ final class GM {
 				default:
 					dayName = dayNameEn[dayNumber];
 					monthName = monthNameEn[monthNumber];
-					output = dayName + ", " + monthName + " " + day + ", " + year;
+					output = "";
+					if (includeDay){
+						output = dayName + ", ";
+					}
+					output = output + monthName + " " + day;
+					if (includeYear){
+						output = output + ", " + year;
+					}
 					if (includeTime){
 						output = output + " " + time;
 					}

+ 14 - 5
app/src/main/java/com/ivalentin/margolariak/HomeLayout.java

@@ -34,6 +34,7 @@ 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;
@@ -150,6 +151,7 @@ public class HomeLayout extends Fragment implements LocationListener {
 
 		//Views in each row
 		TextView tvRowTitle, tvRowTime, tvRowPlace, tvRowId;
+		Button btSchedule;
 
 		//Assign layouts
 		LinearLayout section, listNow, listNext, now, next, entry;
@@ -159,6 +161,13 @@ public class HomeLayout extends Fragment implements LocationListener {
 			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);
@@ -433,7 +442,7 @@ public class HomeLayout extends Fragment implements LocationListener {
 
 				//Set image
 				String image = cursor.getString(1);
-				if (image.length() > 0){
+				if (image != null && image.length() > 0){
 
 					//Check if image exists
 					File f;
@@ -655,7 +664,7 @@ public class HomeLayout extends Fragment implements LocationListener {
 
 			//Set text
 			String text;
-			if (cursor.getString(6).length() < 1) {
+			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();
@@ -666,7 +675,7 @@ public class HomeLayout extends Fragment implements LocationListener {
 
 			//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, false));
+			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);
@@ -797,7 +806,7 @@ public class HomeLayout extends Fragment implements LocationListener {
 
 				//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, false));
+				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);
@@ -916,7 +925,7 @@ public class HomeLayout extends Fragment implements LocationListener {
 
 			//Set date
 			TextView tvDate = (TextView) entry.findViewById(R.id.tv_row_home_blog_date);
-			tvDate.setText(GM.formatDate(cursor.getString(3), lang, false));
+			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);

+ 4 - 3
app/src/main/java/com/ivalentin/margolariak/LablancaLayout.java

@@ -77,7 +77,7 @@ public class LablancaLayout extends Fragment {
 		//Set image
 		ImageView headerImage = (ImageView) view.findViewById(R.id.iv_lablanca_header);
 		String image = cursor.getString(1);
-		if (image.length() > 0){
+		if (image != null && image.length() > 0){
 
 			//Check if image exists
 			File f;
@@ -124,7 +124,8 @@ public class LablancaLayout extends Fragment {
 
 			//Set date
 			TextView tvDate = (TextView) entry.findViewById(R.id.tv_row_festival_price_day_date);
-			DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.ENGLISH);
+			tvDate.setText(GM.formatDate(cursorDays.getString(0) + " 00:00:00", lang, false, false, false));
+			/*DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
 			Date date;
 			try {
 				date = format.parse(cursorDays.getString(0));
@@ -143,7 +144,7 @@ public class LablancaLayout extends Fragment {
 			}
 			catch(Exception ex){
 				Log.e("Date format error", ex.toString());
-			}
+			}*/
 
 			list.addView(entry);
 		}

+ 2 - 0
app/src/main/java/com/ivalentin/margolariak/LablancaNoFestivalsLayout.java

@@ -3,9 +3,11 @@ package com.ivalentin.margolariak;
 import android.annotation.SuppressLint;
 import android.app.Fragment;
 import android.os.Bundle;
+import android.text.Html;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.TextView;
 
 /**
  * Fragment openen for La Blanca sections while the festivals are not close.

+ 96 - 16
app/src/main/java/com/ivalentin/margolariak/MainActivity.java

@@ -19,6 +19,7 @@ import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
 import android.support.v7.app.AppCompatActivity;
+import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.KeyEvent;
@@ -76,6 +77,34 @@ public class MainActivity extends Activity {
 	 */
 	private GoogleApiClient client;
 
+	// Shareable URL
+	private String shareURL = GM.SHARE.HOME;
+	private String shareTitle = "";
+
+	/**
+	 * Sets the displayed section url and localized title.
+	 * Thy can be retrieved later with getShareLink() to share the URL.
+	 *
+	 * @param title The title of the displayed section.
+	 * @param url The URL of the current section.
+	 *
+	 * @see MainActivity#getShareLink();
+	 */
+	public void setShareLink(String title, String url){
+		shareTitle = title;
+		shareURL = url;
+	}
+
+	/**
+	 * Returns the url of the current sections and a title.
+	 * To be used with the share option.
+	 *
+	 * @return String array. Index 0 has the title of the section. Index 1 has the URL.
+	 */
+	public String[] getShareLink(){
+		return(new String[]{shareTitle, shareURL});
+	}
+
 	/**
 	 * Enables o disables the location section.
 	 *
@@ -98,7 +127,12 @@ public class MainActivity extends Activity {
 		}
 	}
 
-	//Not referenced in code.
+	/**
+	 * Opens and closes the app menu.
+	 * Not referenced in code.
+	 *
+	 * @param v Menu view.
+	 */
 	public void showMenu(View v) {
 		PopupMenu popup = new PopupMenu(this, v);
 		MenuInflater inflater = popup.getMenuInflater();
@@ -107,8 +141,11 @@ public class MainActivity extends Activity {
 		popup.getMenu().getItem(0).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
 			@Override
 			public boolean onMenuItemClick(MenuItem item) {
-				Intent intent = new Intent(MainActivity.this, AboutActivity.class);
-				startActivity(intent);
+				Intent sendIntent = new Intent();
+				sendIntent.setAction(Intent.ACTION_SEND);
+				sendIntent.putExtra(Intent.EXTRA_TEXT, getShareLink()[0] + "\n\n" + getShareLink()[1] + "\n\n");
+				sendIntent.setType("text/plain");
+				startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.share_with)));
 				return true;
 			}
 		});
@@ -116,13 +153,22 @@ public class MainActivity extends Activity {
 		popup.getMenu().getItem(1).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
 			@Override
 			public boolean onMenuItemClick(MenuItem item) {
-				Intent intent = new Intent(MainActivity.this, SponsorActivity.class);
+				Intent intent = new Intent(MainActivity.this, UsActivity.class);
 				startActivity(intent);
 				return true;
 			}
 		});
 
 		popup.getMenu().getItem(2).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
+			@Override
+			public boolean onMenuItemClick(MenuItem item) {
+				Intent intent = new Intent(MainActivity.this, SponsorActivity.class);
+				startActivity(intent);
+				return true;
+			}
+		});
+
+		popup.getMenu().getItem(3).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
 			@Override
 			public boolean onMenuItemClick(MenuItem item) {
 				Intent intent = new Intent(MainActivity.this, SettingsActivity.class);
@@ -145,28 +191,39 @@ public class MainActivity extends Activity {
 		FragmentTransaction ft = fm.beginTransaction();
 		Fragment fragment = null;
 		String title = "";
+		String shareURL = GM.SHARE.HOME;
+		String shareTitle = getString(R.string.share_home);
 		Bundle bundle = new Bundle();
 
+		//Get measures in dp
+		DisplayMetrics metrics = getResources().getDisplayMetrics();
+		int dp7 = (int) (8 * ((float)metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT));
+		int dp3 = (int) (4 * ((float)metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT));
+
 		//Reset all tabs to it's original state
 		for (int i = 0; i < 6; i++) {
 			menuText[i].setTypeface(null, Typeface.NORMAL);
 			menuImage[i].requestLayout();
-			menuImage[i].getLayoutParams().height = 2;
+			menuImage[i].getLayoutParams().height = dp3;
 		}
 
 		switch (section) {
 			case GM.SECTION.HOME:
 				fragment = new HomeLayout();
 				title = getString(R.string.menu_home);
+				shareURL = GM.SHARE.HOME;
+				shareTitle = getString(R.string.share_home);
 				menuText[0].setTypeface(null, Typeface.BOLD);
-				menuImage[0].getLayoutParams().height = 8;
+				menuImage[0].getLayoutParams().height = dp7;
 				break;
 
 			case GM.SECTION.LOCATION:
 				fragment = new LocationLayout();
 				title = getString(R.string.menu_location);
+				shareURL = GM.SHARE.HOME;
+				shareTitle = getString(R.string.share_home);
 				menuText[1].setTypeface(null, Typeface.BOLD);
-				menuImage[1].getLayoutParams().height = 8;
+				menuImage[1].getLayoutParams().height = dp7;
 				break;
 
 			case GM.SECTION.LABLANCA:
@@ -178,17 +235,21 @@ public class MainActivity extends Activity {
 					fragment = new LablancaNoFestivalsLayout();
 				}
 				title = getString(R.string.menu_lablanca);
+				shareURL = GM.SHARE.LABLANCA;
+				shareTitle = getString(R.string.share_lablanca);
 				menuText[2].setTypeface(null, Typeface.BOLD);
-				menuImage[2].getLayoutParams().height = 8;
+				menuImage[2].getLayoutParams().height = dp7;
 				break;
 
 			case GM.SECTION.SCHEDULE:
 				fragment = new ScheduleLayout();
-				bundle.putInt(GM.SCHEDULE.KEY, GM.SCHEDULE.MARGOLARIAK);
+				bundle.putInt(GM.SCHEDULE.KEY, GM.SCHEDULE.CITY);
 				fragment.setArguments(bundle);
 				title = getString(R.string.menu_lablanca_schedule);
+				shareURL = GM.SHARE.LABLANCA;
+				shareTitle = getString(R.string.share_lablanca);
 				menuText[2].setTypeface(null, Typeface.BOLD);
-				menuImage[2].getLayoutParams().height = 8;
+				menuImage[2].getLayoutParams().height = dp7;
 				break;
 
 			case GM.SECTION.GM_SCHEDULE:
@@ -196,37 +257,47 @@ public class MainActivity extends Activity {
 				bundle.putInt(GM.SCHEDULE.KEY, GM.SCHEDULE.MARGOLARIAK);
 				fragment.setArguments(bundle);
 				title = getString(R.string.menu_lablanca_gm_schedule);
+				shareURL = GM.SHARE.LABLANCA;
+				shareTitle = getString(R.string.share_lablanca);
 				menuText[2].setTypeface(null, Typeface.BOLD);
-				menuImage[2].getLayoutParams().height = 8;
+				menuImage[2].getLayoutParams().height = dp7;
 				break;
 
 			case GM.SECTION.ACTIVITIES:
 				fragment = new ActivityLayout();
 				title = getString(R.string.menu_activities);
+				shareURL = GM.SHARE.ACTIVITIES;
+				shareTitle = getString(R.string.share_activities);
 				menuText[3].setTypeface(null, Typeface.BOLD);
-				menuImage[3].getLayoutParams().height = 8;
+				menuImage[3].getLayoutParams().height = dp7;
 				break;
 
 			case GM.SECTION.BLOG:
 				fragment = new BlogLayout();
 				title = getString(R.string.menu_blog);
+				shareURL = GM.SHARE.BLOG;
+				shareTitle = getString(R.string.share_blog);
 				menuText[4].setTypeface(null, Typeface.BOLD);
-				menuImage[4].getLayoutParams().height = 8;
+				menuImage[4].getLayoutParams().height = dp7;
 				break;
 
 			case GM.SECTION.GALLERY:
 				fragment = new GalleryLayout();
 				title = getString(R.string.menu_blog);
+				shareURL = GM.SHARE.GALLERY;
+				shareTitle = getString(R.string.share_gallery);
 				menuText[5].setTypeface(null, Typeface.BOLD);
-				menuImage[5].getLayoutParams().height = 8;
+				menuImage[5].getLayoutParams().height = dp7;
 				break;
 		}
 
 		//Replace the fragment.
 		ft.replace(R.id.activity_main_content_fragment, fragment);
-		//ft.addToBackStack(title);
+		ft.addToBackStack(title);
 		ft.commit();
 		setSectionTitle(title);
+		//Set the shareable url
+		setShareLink(shareTitle, shareURL);
 	}
 
 	/**
@@ -354,7 +425,7 @@ public class MainActivity extends Activity {
 		});
 
 		//Get preferences
-		SharedPreferences sharedData = getSharedPreferences(GM.PREFERENCES.PREFERNCES, Context.MODE_PRIVATE);
+		SharedPreferences sharedData = getSharedPreferences(GM.DATA.DATA, Context.MODE_PRIVATE);
 		SharedPreferences.Editor dataEditor = sharedData.edit();
 
 		//If the user code is not set, generate one
@@ -626,6 +697,14 @@ public class MainActivity extends Activity {
 		new Sync(this, pbSync, ivSync).execute();
 	}
 
+	/**
+	 * Asks the activity to performa a sync.
+	 * Intended to be called from any screen.
+	 */
+	public void bgSync(){
+		new Sync(this).execute();
+	}
+
 	/**
 	 * Perform an initial sync before the app can be used.
 	 * A dialog will block the UI.
@@ -666,6 +745,7 @@ public class MainActivity extends Activity {
 	public void onBackPressed() {
 		try {
 			FragmentManager fm = getFragmentManager();
+			Log.d("BACK", "StackEntryCount " + fm.getBackStackEntryCount());
 			if (fm.getBackStackEntryCount() > 1) {
 				fm.popBackStack();
 			} else {

+ 9 - 5
app/src/main/java/com/ivalentin/margolariak/PhotoLayout.java

@@ -37,6 +37,7 @@ public class PhotoLayout extends Fragment {
 	private View view;
 
 	private String albumName;
+	private String albumPerm;
 
 	private Integer photos[];
 	private int position;
@@ -54,6 +55,7 @@ public class PhotoLayout extends Fragment {
 		//Get bundled id
 		Bundle bundle = this.getArguments();
 		albumName = bundle.getString("albumName", "");
+		albumPerm = bundle.getString("albumPerm", "");
 		int id = bundle.getInt("photo", -1);
 		if (id == -1) {
 			Log.e("Photo error", "No such photo: " + id);
@@ -85,6 +87,9 @@ public class PhotoLayout extends Fragment {
 			}
 		});
 
+		//Set title and share link
+		((MainActivity) getActivity()).setShareLink(String.format(getString(R.string.share_with_title), albumName), GM.SHARE.GALLERY + albumPerm);
+
 		populate(id, view);
 
 		return view;
@@ -123,9 +128,8 @@ public class PhotoLayout extends Fragment {
 	 */
 	private Integer[] loadPhotos(int id){
 
-		SQLiteDatabase db = SQLiteDatabase.openDatabase(getActivity().getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY);
-
 		//Get album id for the photo
+		SQLiteDatabase db = SQLiteDatabase.openDatabase(getActivity().getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY);
 		Cursor cAlbum = db.rawQuery("SELECT album FROM photo_album WHERE photo = " + id + ";", null);
 		cAlbum.moveToFirst();
 		int album = cAlbum.getInt(0);
@@ -189,7 +193,7 @@ public class PhotoLayout extends Fragment {
 		else{
 			tvDescription.setVisibility(View.GONE);
 		}
-		tvDate.setText(GM.formatDate(cursor.getString(4), lang, true));
+		tvDate.setText(GM.formatDate(cursor.getString(4), lang, true, true, false));
 
 		//Get image
 		String image = cursor.getString(1);
@@ -204,7 +208,7 @@ public class PhotoLayout extends Fragment {
 		}
 		else {
 			//If not,  set placeholder image, create directories and download asynchronously
-			imageView.setImageResource(getResources().getIdentifier("com.ivalentin.margolariak:drawable/pinpoint_gm", null, null));
+			imageView.setImageResource(getResources().getIdentifier("com.ivalentin.margolariak:drawable/photo_placeholder", null, null));
 			File fpath;
 			fpath = new File(this.getActivity().getFilesDir().toString() + "/img/galeria/view/");
 			fpath.mkdirs();
@@ -244,7 +248,7 @@ public class PhotoLayout extends Fragment {
 			TextView tvUser = (TextView) entry.findViewById(R.id.tv_row_comment_user);
 			tvUser.setText(commentCursor.getString(2));
 			TextView tvCDate = (TextView) entry.findViewById(R.id.tv_row_comment_date);
-			tvCDate.setText(GM.formatDate(commentCursor.getString(1), lang, true));
+			tvCDate.setText(GM.formatDate(commentCursor.getString(1), lang, true, true, true));
 			TextView tvText = (TextView) entry.findViewById(R.id.tv_row_comment_text);
 			tvText.setText(commentCursor.getString(0));
 

+ 63 - 53
app/src/main/java/com/ivalentin/margolariak/PostComment.java

@@ -1,6 +1,7 @@
 package com.ivalentin.margolariak;
 
 import android.annotation.SuppressLint;
+import android.app.Activity;
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.database.sqlite.SQLiteDatabase;
@@ -15,8 +16,11 @@ import android.widget.LinearLayout;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
-import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
 import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.ProtocolException;
 import java.net.URL;
 import java.net.URLEncoder;
 import java.util.Date;
@@ -36,7 +40,7 @@ class PostComment extends AsyncTask<String, String, Integer> {
 
     private int code = 404;
 
-    public PostComment(String type, String user, String text, String language, int id, LinearLayout form, LinearLayout list, Context context) {
+    PostComment(String type, String user, String text, String language, int id, LinearLayout form, LinearLayout list, Context context) {
         super();
         this.type = type;
         this.user = user;
@@ -75,22 +79,23 @@ class PostComment extends AsyncTask<String, String, Integer> {
         String urlParams;
         try {
 
-            urlParams = "user=" + URLEncoder.encode(user) + "&text=" + URLEncoder.encode(text);
-            switch (type){
+            urlParams = "username=" + URLEncoder.encode(user) + "&text=" + URLEncoder.encode(text);
+            urlParams = urlParams + "&id=" + id;
+            switch (type) {
                 case "blog":
-                    urlParams = urlParams + "&post=" + id;
+                    urlParams = urlParams + "&target=post";
                     break;
                 case "galeria":
-                    urlParams = urlParams + "&photo=" + id;
+                    urlParams = urlParams + "&target=photo";
                     break;
                 case "actividades":
-                    urlParams = urlParams + "&activity=" + id;
+                    urlParams = urlParams + "&target=activity";
                     break;
                 default:
                     Log.e("Comment error", "Unknown section: " + type);
                     return -1;
             }
-            switch (language){
+            switch (language) {
                 case "es":
                     urlParams = urlParams + "&lang=es";
                     break;
@@ -100,53 +105,54 @@ class PostComment extends AsyncTask<String, String, Integer> {
                 default:
                     urlParams = urlParams + "&lang=en";
             }
-            urlParams = urlParams + "&from=app&code=" + userCode;
-            byte[] postData       = urlParams.getBytes("UTF-8");
-            int    postDataLength = postData.length;
-            String request        = GM.API.SERVER + "/" + type + "/comment.php";
-            url            = new URL( request );
-            HttpURLConnection conn= (HttpURLConnection) url.openConnection();
-            conn.setDoOutput( true );
-            conn.setInstanceFollowRedirects( false );
-            conn.setRequestMethod( "POST" );
-            conn.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded");
-            conn.setRequestProperty( "charset", "utf-8");
-            conn.setRequestProperty( "Content-Length", Integer.toString( postDataLength ));
-            conn.setUseCaches( false );
-            DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
-            wr.write(postData);
-            conn.connect();
-
-            code = conn.getResponseCode();
-            Log.d("Comment status", "" + code);
-
-            if (code == 200){
-                //Insert into local db
-                SQLiteDatabase db = SQLiteDatabase.openDatabase(context.getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS);
-                String table = "";
-                String item = "";
-                switch (type){
-                    case "blog":
-                        table = "post_comment";
-                        item = "post";
-                        break;
-                    case "galeria":
-                        table = "photo_comment";
-                        item = "photo";
-                        break;
-                    case "actividades":
-                        table = "activity_comment";
-                        item = "activity";
-                        break;
-                }
-                db.execSQL("INSERT INTO " + table + " (" + item + ", text, username, lang, dtime) VALUES (" + id + ", '" + text + "', '" + user + "', '" + language + "', datetime('NOW'));");
-                db.close();
+            urlParams = urlParams + "&client=" + GM.API.CLIENT + "&user=" + userCode;
+
+            String uri = GM.API.SERVER + GM.API.COMMENT.PATH + "?" + urlParams;
+            url = new URL(uri);
+			Log.e("URI", uri);
+
+            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
+
+            code = urlConnection.getResponseCode();
+
+            switch (code) {
+                case 400:    //Client error: Bad request
+                    Log.e("COMMENT", "The server returned a 400 code (Client Error: Bad request) for the url \"" + uri + "\"");
+					return(-400);
+                case 403:    //Client error: Forbidden
+                    Log.e("COMMENT", "The server returned a 403 code (Client Error: Forbidden) for the url \"" + uri + "\"");
+					return(-403);
+                case 200:    //Success: OK
+                    Log.d("COMMENT", "The server returned a 200 code (Success: OK) for the url \"" + uri + "\".");
+					break;
+				default:
+					Log.e("COMMENT", "The server returned a " + code + " code for the url \"" + uri + "\".");
+					return(-6);
             }
 
-        } catch (Exception e) {
-            Log.e("Error posting: ", e.getMessage());
         }
-        return code;
+		catch (UnsupportedEncodingException e) {
+            Log.e("COMMENT", "Unable to post comment (UnsupportedEncodingException): " + e.toString());
+			return -2;
+        }
+		catch (ProtocolException e) {
+            Log.e("COMMENT", "Unable to post comment (ProtocolException): " + e.toString());
+			return -3;
+        }
+		catch (MalformedURLException e) {
+            Log.e("COMMENT", "Unable to post comment (MalformedURLException): " + e.toString());
+			return -4;
+        }
+		catch (IOException e) {
+            Log.e("COMMENT", "Unable to post comment (IOException): " + e.toString());
+			return -5;
+        }
+		catch (Exception e) {
+            Log.e("COMMENT", "Unable to post comment: " + e.toString());
+			return -1;
+        }
+
+		return 0;
     }
 
 
@@ -167,6 +173,10 @@ class PostComment extends AsyncTask<String, String, Integer> {
 
             //TODO: Update counter
 
+			//Perform a sync
+			((MainActivity) context).bgSync();
+
+
             //Insert comment in list
             LayoutInflater factory = LayoutInflater.from(context);
             LinearLayout entry = (LinearLayout) factory.inflate(R.layout.row_comment, null);
@@ -177,7 +187,7 @@ class PostComment extends AsyncTask<String, String, Integer> {
             Date d = new Date();
             String date = DateFormat.format("yyyy-MM-dd hh:mm:ss", d.getTime()).toString();
             TextView tvCDate = (TextView) entry.findViewById(R.id.tv_row_comment_date);
-            tvCDate.setText(GM.formatDate(date, language, true));
+            tvCDate.setText(GM.formatDate(date, language, true, true, true));
             TextView tvText = (TextView) entry.findViewById(R.id.tv_row_comment_text);
             tvText.setText(text);
 

+ 4 - 3
app/src/main/java/com/ivalentin/margolariak/PostLayout.java

@@ -60,7 +60,7 @@ public class PostLayout extends Fragment {
         SQLiteDatabase db = SQLiteDatabase.openDatabase(getActivity().getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY);
         final Cursor cursor;
         String lang = GM.getLang();
-        cursor = db.rawQuery("SELECT id, title_" + lang+ " AS title, text_" + lang + " AS text, dtime FROM post WHERE id = " + id + ";", null);
+        cursor = db.rawQuery("SELECT id, title_" + lang+ " AS title, text_" + lang + " AS text, dtime, permalink FROM post WHERE id = " + id + ";", null);
         cursor.moveToFirst();
 
         //Get display elements
@@ -88,8 +88,9 @@ public class PostLayout extends Fragment {
         //Set fields
         tvTitle.setText(cursor.getString(1));
         ((MainActivity) getActivity()).setSectionTitle(cursor.getString(1));
+        ((MainActivity) getActivity()).setShareLink(String.format(getString(R.string.share_with_title), cursor.getString(1)), GM.SHARE.BLOG + cursor.getString(4));
         wvText.loadDataWithBaseURL(null, cursor.getString(2), "text/html", "utf-8", null);
-        tvDate.setText(GM.formatDate(cursor.getString(3), lang, true));
+        tvDate.setText(GM.formatDate(cursor.getString(3), lang, true, true, true));
 
         //Get images
         Cursor imageCursor = db.rawQuery("SELECT image, idx FROM post_image WHERE post = " + id + " ORDER BY idx LIMIT 5;", null);
@@ -131,7 +132,7 @@ public class PostLayout extends Fragment {
             TextView tvUser = (TextView) entry.findViewById(R.id.tv_row_comment_user);
             tvUser.setText(commentCursor.getString(2));
             TextView tvCDate = (TextView) entry.findViewById(R.id.tv_row_comment_date);
-            tvCDate.setText(GM.formatDate(commentCursor.getString(1), lang, true));
+            tvCDate.setText(GM.formatDate(commentCursor.getString(1), lang, true, true, true));
             TextView tvText = (TextView) entry.findViewById(R.id.tv_row_comment_text);
             tvText.setText(commentCursor.getString(0));
 

+ 12 - 8
app/src/main/java/com/ivalentin/margolariak/ScheduleLayout.java

@@ -87,8 +87,6 @@ public class ScheduleLayout extends Fragment implements OnMapReadyCallback{
 		String year = Integer.toString(calendar.get(Calendar.YEAR));
 
 
-
-
 		//Set bundle for the map
 		bund = savedInstanceState;
 		
@@ -104,14 +102,20 @@ public class ScheduleLayout extends Fragment implements OnMapReadyCallback{
 		});
 
 		//Get schedule type
+		TextView title = (TextView) view.findViewById(R.id.tv_schedule_type);
 		Bundle bundle = this.getArguments();
 		schedule = bundle.getInt(GM.SCHEDULE.KEY, GM.SCHEDULE.CITY);
 		
 		//Set the title
-		if (schedule == GM.SCHEDULE.CITY)
+		if (schedule == GM.SCHEDULE.CITY) {
 			((MainActivity) getActivity()).setSectionTitle(view.getContext().getString(R.string.menu_lablanca_schedule));
-		else
+			title.setText(R.string.menu_lablanca_schedule);
+		}
+		else{
 			((MainActivity) getActivity()).setSectionTitle(view.getContext().getString(R.string.menu_lablanca_gm_schedule));
+			title.setText(R.string.menu_lablanca_gm_schedule);
+		}
+		((MainActivity) getActivity()).setShareLink(getString(R.string.share_lablanca), GM.SHARE.LABLANCA);
 
 		//Populate the dates array
 		SQLiteDatabase db = SQLiteDatabase.openDatabase(getActivity().getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY);
@@ -308,7 +312,7 @@ public class ScheduleLayout extends Fragment implements OnMapReadyCallback{
 
 			//Set description
 			tvRowDesc = (TextView) entry.findViewById(R.id.tv_row_schedule_description);
-			if (cursor.getString(2).length() <= 0 || cursor.getString(2).equals(cursor.getString(1))) {
+			if (cursor.getString(2) == null || cursor.getString(2).length() <= 0 || cursor.getString(2).equals(cursor.getString(1))) {
 				tvRowDesc.setVisibility(View.GONE);
 			} else {
 				tvRowDesc.setText(cursor.getString(2));
@@ -320,7 +324,7 @@ public class ScheduleLayout extends Fragment implements OnMapReadyCallback{
 
 			//Set address
 			tvRowAddress = (TextView) entry.findViewById(R.id.tv_row_schedule_address);
-			if (cursor.getString(7).length() <= 0 || cursor.getString(7).equals(cursor.getString(6))) {
+			if (cursor.getString(7) == null || cursor.getString(7).length() <= 0 || cursor.getString(7).equals(cursor.getString(6))) {
 				tvRowAddress.setVisibility(View.GONE);
 			} else {
 				tvRowAddress.setText(cursor.getString(7));
@@ -410,7 +414,7 @@ public class ScheduleLayout extends Fragment implements OnMapReadyCallback{
 			markerName = cursor.getString(1);
 			
 			//Set description
-			if (cursor.getString(2).length() > 0) {
+			if (cursor.getString(2) != null && cursor.getString(2).length() > 0) {
 				tvDescription.setText(cursor.getString(2));
 			}
 			else{
@@ -477,7 +481,7 @@ public class ScheduleLayout extends Fragment implements OnMapReadyCallback{
 			
 			//Set time
 			try{
-				if (cursor.getString(5).length() == 0) {
+				if (cursor.getString(5) == null || cursor.getString(5).length() == 0) {
 					tvTime.setText(timeFormat.format(dateFormat.parse(cursor.getString(4))));
 				}
 				else {

+ 259 - 1
app/src/main/java/com/ivalentin/margolariak/SponsorActivity.java

@@ -1,9 +1,267 @@
 package com.ivalentin.margolariak;
 
+import android.annotation.SuppressLint;
 import android.app.Activity;
+import android.app.Dialog;
+import android.content.Intent;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.os.Bundle;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+
+import java.io.File;
 
 /**
- * Created by seavenois on 26/09/16.
+ * Activity that lists sponsors.
+ *
+ * @author Iñigo Valentin
+ *
+ * @see Activity
+ *
  */
 public class SponsorActivity extends Activity {
+
+	/**
+	 * Runs when the activity is created.
+	 *
+	 * @param savedInstanceState Saved state of the activity.
+	 * @see Activity#onCreate(Bundle)
+	 */
+	@SuppressLint("InflateParams")
+	@Override
+	protected void onCreate(Bundle savedInstanceState) {
+
+		//Remove title bar.
+		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
+		super.onCreate(savedInstanceState);
+
+		//Set layout.
+		setContentView(R.layout.activity_sponsor);
+
+		//Assign menu items
+		LinearLayout llList = (LinearLayout) findViewById(R.id.ll_sponsor_list);
+		LinearLayout entry;
+		LayoutInflater factory = LayoutInflater.from(this);
+
+		//Get data from database
+		SQLiteDatabase db = SQLiteDatabase.openDatabase(getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY);
+		final Cursor cursor;
+		String lang = GM.getLang();
+		cursor = db.rawQuery("SELECT id, name_" + lang + " AS name, text_" + lang + " AS text, image, address_" + lang + " AS address, link, lat, lon FROM sponsor ORDER BY RANDOM();", null);
+		cursor.moveToFirst();
+
+		while (cursor.moveToNext()) {
+			//Create a new row
+			entry = (LinearLayout) factory.inflate(R.layout.row_sponsor, null);
+
+			//Set margins TODO: I don't know why it doesnt read margins from the xml
+			LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
+			int margin = (int) (9 * getResources().getDisplayMetrics().density);
+			layoutParams.setMargins(margin, margin, margin, margin);
+			entry.setLayoutParams(layoutParams);
+
+			//Set id (hidden)
+			TextView tvId = (TextView) entry.findViewById(R.id.tv_row_sponsor_id);
+			tvId.setText(cursor.getString(0));
+
+			//Set title
+			TextView tvTitle = (TextView) entry.findViewById(R.id.tv_row_sponsor_name);
+			tvTitle.setText(cursor.getString(1));
+
+			//Set text
+			TextView tvText = (TextView) entry.findViewById(R.id.tv_row_sponsor_text);
+			tvText.setText(cursor.getString(2));
+
+			//Set image
+			ImageView ivImage = (ImageView) entry.findViewById(R.id.iv_row_sponsor_image);
+			//Check if image exists
+			if (cursor.getString(3) != null && !"".equals(cursor.getString(3))) {
+				String image = cursor.getString(3);
+				File f;
+				f = new File(getFilesDir().toString() + "/img/spo/preview/" + image);
+				if (f.exists()) {
+					//If the image exists, set it.
+					Bitmap myBitmap = BitmapFactory.decodeFile(getFilesDir().toString() + "/img/spo/preview/" + image);
+					ivImage.setImageBitmap(myBitmap);
+				} else {
+					//If not, create directories and download asynchronously
+					File fpath;
+					fpath = new File(getFilesDir().toString() + "/img/spo/preview/");
+					//noinspection ResultOfMethodCallIgnored
+					fpath.mkdirs();
+					new DownloadImage(GM.API.SERVER + "/img/spo/preview/" + image, getFilesDir().toString() + "/img/spo/preview/" + image, ivImage, GM.IMG.SIZE.PREVIEW).execute();
+				}
+			}
+			else{
+				ivImage.setVisibility(View.GONE);
+			}
+
+			//Set onClick listener
+			entry.setOnClickListener(new View.OnClickListener() {
+				@Override
+				public void onClick(View v) {
+					TextView tvId = (TextView) v.findViewById(R.id.tv_row_sponsor_id);
+					int id = Integer.parseInt(tvId.getText().toString());
+					openDialog(id);
+				}
+			});
+
+
+			llList.addView(entry);
+		}
+		cursor.close();
+		db.close();
+
+	}
+
+	/**
+	 * Shows a dialog with info about the selected event.
+	 *
+	 * @param id The event id
+	 */
+	@SuppressWarnings("ConstantConditions")
+	private void openDialog(final int id){
+
+		//Create the dialog
+		final Dialog dialog = new Dialog(this);
+
+		//Set up dialog window
+		dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+		dialog.setContentView(R.layout.dialog_sponsor);
+
+		//Set the custom dialog components - text, image and button
+		TextView tvTitle = (TextView) dialog.findViewById(R.id.tv_dialog_sponsor_title);
+		TextView tvText = (TextView) dialog.findViewById(R.id.tv_dialog_sponsor_text);
+		ImageView ivImage = (ImageView) dialog.findViewById(R.id.iv_dialog_sponsor_image);
+		TextView tvUrl = (TextView) dialog.findViewById(R.id.tv_dialog_sponsor_url);
+		TextView tvAddress = (TextView) dialog.findViewById(R.id.tv_dialog_sponsor_address);
+		Button btClose = (Button) dialog.findViewById(R.id.bt_dialog_sponsor_close);
+		LinearLayout llUrl = (LinearLayout) dialog.findViewById(R.id.ll_dialog_sponsor_url);
+		LinearLayout llAddress = (LinearLayout) dialog.findViewById(R.id.ll_dialog_sponsor_address);
+
+		//Get info about the event
+		SQLiteDatabase db = SQLiteDatabase.openDatabase(getDatabasePath(GM.DB.NAME).getAbsolutePath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY);
+		String lang = GM.getLang();
+		Cursor cursor = db.rawQuery("SELECT id, name_" + lang + " AS name, text_" + lang + " AS text, image, address_" + lang + " AS address, link, lat, lon FROM sponsor WHERE id = " + id + ";", null);
+		if (cursor.getCount() > 0){
+			cursor.moveToNext();
+
+			//Set title
+			tvTitle.setText(cursor.getString(1));
+
+			//Set description
+			tvText.setText(cursor.getString(2));
+
+			//Set image (if any)
+			if (cursor.getString(3) != null && !"".equals(cursor.getString(3))){
+				File f;
+				f = new File(getFilesDir().toString() + "/img/spo/preview/" + cursor.getString(3));
+				if (f.exists()){
+					//If the image exists, set it.
+					Bitmap myBitmap = BitmapFactory.decodeFile(getFilesDir().toString() + "/img/spo/preview/" + cursor.getString(3));
+					ivImage.setImageBitmap(myBitmap);
+				}
+				else {
+					//If not, create directories and download asynchronously
+					File fpath;
+					fpath = new File(getFilesDir().toString() + "/img/spo/preview/");
+					//noinspection ResultOfMethodCallIgnored
+					fpath.mkdirs();
+					new DownloadImage(GM.API.SERVER + "/img/spo/preview/" + cursor.getString(3), getFilesDir().toString() + "/img/spo/preview/" + cursor.getString(3), ivImage, GM.IMG.SIZE.PREVIEW).execute();
+				}
+				ivImage.setVisibility(View.VISIBLE);
+			}
+			else{
+				ivImage.setVisibility(View.GONE);
+			}
+
+			//Set address (if any)
+			if (cursor.getString(4) != null && !"".equals(cursor.getString(4))){
+				final String lat = cursor.getString(6);
+				final String lon = cursor.getString(7);
+				tvAddress.setText(cursor.getString(4));
+				tvAddress.setOnClickListener(new View.OnClickListener() {
+					@Override
+					public void onClick(View v) {
+						String url = "https://www.google.com/maps/preview/@" + lat + "," + lon + ",8z";
+						Intent i = new Intent(Intent.ACTION_VIEW);
+						i.setData(Uri.parse(url));
+						startActivity(i);
+					}
+				});
+			}
+			else{
+				llAddress.setVisibility(View.GONE);
+			}
+
+			//Set url (if any)
+			if (cursor.getString(5) != null && !"".equals(cursor.getString(3))){
+				final String url = cursor.getString(5);
+				tvUrl.setOnClickListener(new View.OnClickListener() {
+					@Override
+					public void onClick(View v) {
+						Intent i = new Intent(Intent.ACTION_VIEW);
+						i.setData(Uri.parse(url));
+						startActivity(i);
+					}
+				});
+			}
+			else{
+				llUrl.setVisibility(View.GONE);
+			}
+
+			//Close the db connection
+			cursor.close();
+			db.close();
+
+			//Set close button
+			btClose.setOnClickListener(new View.OnClickListener() {
+				@Override
+				public void onClick(View v) {
+					dialog.dismiss();
+				}
+			});
+
+
+
+			//Show the dialog
+			WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
+			lp.copyFrom(dialog.getWindow().getAttributes());
+			lp.width = WindowManager.LayoutParams.MATCH_PARENT;
+			lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+			lp.gravity = Gravity.CENTER;
+			dialog.getWindow().setAttributes(lp);
+
+			//Show dialog
+			dialog.show();
+
+
+		}
+	}
+
+
+	/**
+	 * Not called from code, but referenced from activity_sponsor.xml.
+	 * Finishes the activity.
+	 *
+	 * @param v Ignored
+	 *
+	 * @see Activity#finish()
+	 */
+	public void finish(View v){
+		finish();
+	}
+
 }

+ 133 - 28
app/src/main/java/com/ivalentin/margolariak/Sync.java

@@ -19,11 +19,15 @@ import android.content.SharedPreferences;
 import android.database.Cursor;
 import android.database.DatabaseUtils;
 import android.database.sqlite.SQLiteDatabase;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
 import android.os.AsyncTask;
 import android.util.Log;
+import android.view.Gravity;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.Window;
+import android.view.WindowManager;
 import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.ProgressBar;
@@ -71,7 +75,7 @@ class Sync extends AsyncTask<Void, Void, Void> {
 
 			//Show the dialog and assign the elements on it
 			dialog.show();
-			strings = new String[10];
+			strings = new String[15];
 			strings[0] = myContextRef.getString(R.string.dialog_sync_text_0);
 			strings[1] = myContextRef.getString(R.string.dialog_sync_text_1);
 			strings[2] = myContextRef.getString(R.string.dialog_sync_text_2);
@@ -81,14 +85,19 @@ class Sync extends AsyncTask<Void, Void, Void> {
 			strings[6] = myContextRef.getString(R.string.dialog_sync_text_6);
 			strings[7] = myContextRef.getString(R.string.dialog_sync_text_7);
 			strings[8] = myContextRef.getString(R.string.dialog_sync_text_8);
-			strings[9] = myContextRef.getString(R.string.dialog_sync_text_8); //In case I get a 9;
+			strings[9] = myContextRef.getString(R.string.dialog_sync_text_9);
+			strings[10] = myContextRef.getString(R.string.dialog_sync_text_10);
+			strings[11] = myContextRef.getString(R.string.dialog_sync_text_11);
+			strings[12] = myContextRef.getString(R.string.dialog_sync_text_12);
+			strings[13] = myContextRef.getString(R.string.dialog_sync_text_13);
+			strings[14] = myContextRef.getString(R.string.dialog_sync_text_0); //In case I get a 13;
 			tv = (TextView) dialog.findViewById(R.id.tv_dialog_sync_text);
-			int idx = (int) (Math.random() * 9);
+			int idx = (int) (Math.random() * 13);
 			tv.setText(strings[idx]);
 			doProgress = true;
 
 		}
-		Log.d("Sync", "Starting full sync");
+		Log.d("SYNC", "Starting full sync");
 	}
 	
 	/**
@@ -114,7 +123,7 @@ class Sync extends AsyncTask<Void, Void, Void> {
 			//Check db version again
 			SQLiteDatabase db = myContextRef.openOrCreateDatabase(GM.DB.NAME, Activity.MODE_PRIVATE, null);
 			if (db.isReadOnly()){
-				Log.e("Db ro", "Database is locked and in read only mode. Skipping sync.");
+				Log.e("SYNC", "Database is locked and in read only mode. Skipping sync.");
 				return;
 			}
 
@@ -128,7 +137,7 @@ class Sync extends AsyncTask<Void, Void, Void> {
 			db.close();
 
 			//If the database is on it's initial version (i.e: There is no data, new or old)
-			if (true){ //TODO dbVersion == GM.DATA.DEFAULT.DEFAULT_PREF_DB_VERSION){
+			if (dbVersion == GM.DB.INITIAL_VERSION){
 
 				Log.e("SYNC", "Full sync failed");
 
@@ -149,7 +158,17 @@ class Sync extends AsyncTask<Void, Void, Void> {
 					activity.finish();
 					}
 				});
-				
+
+				//Set dialog parameters
+				WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
+				//noinspection ConstantConditions
+				lp.copyFrom(dial.getWindow().getAttributes());
+				lp.width = WindowManager.LayoutParams.MATCH_PARENT;
+				lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+				lp.gravity = Gravity.CENTER;
+				dial.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+				dial.getWindow().setAttributes(lp);
+
 				//Show the dialog
 				dial.show();
 			}
@@ -224,9 +243,9 @@ class Sync extends AsyncTask<Void, Void, Void> {
 	 */
 	protected void onProgressUpdate(Void...progress) {
 		if (doProgress){
-			if (millis + 600 < System.currentTimeMillis()) {
+			if (millis + 900 < System.currentTimeMillis()) {
 				millis = System.currentTimeMillis();
-				int idx = (int) (Math.random() * ((4) + 1));
+				int idx = (int) (Math.random() * 13);
 				tv.setText(strings[idx]);
 			}
 		}
@@ -269,9 +288,11 @@ class Sync extends AsyncTask<Void, Void, Void> {
 	 *
 	 * @return False if there were errors, true otherwise.
 	 */
+	@SuppressWarnings("unused")
 	private boolean recreateDb(SQLiteDatabase db) {
 		boolean result = true;
 		try {
+			db.beginTransaction();
 			db.execSQL(GM.DB.QUERY.DROP.ACTIVITY);
 			db.execSQL(GM.DB.QUERY.DROP.ACTIVITY_COMMENT);
 			db.execSQL(GM.DB.QUERY.DROP.ACTIVITY_IMAGE);
@@ -295,8 +316,10 @@ class Sync extends AsyncTask<Void, Void, Void> {
 			db.execSQL(GM.DB.QUERY.DROP.SETTINGS);
 			db.execSQL(GM.DB.QUERY.DROP.SPONSOR);
 			db.execSQL(GM.DB.QUERY.DROP.VERSION);
-			//TODO: Is this really necessary?
-			Thread.sleep(1000);
+			db.setTransactionSuccessful();
+			db.endTransaction();
+			publishProgress();
+			db.beginTransaction();
 			db.execSQL(GM.DB.QUERY.CREATE.ACTIVITY);
 			db.execSQL(GM.DB.QUERY.CREATE.ACTIVITY_COMMENT);
 			db.execSQL(GM.DB.QUERY.CREATE.ACTIVITY_IMAGE);
@@ -320,10 +343,8 @@ class Sync extends AsyncTask<Void, Void, Void> {
 			db.execSQL(GM.DB.QUERY.CREATE.SETTINGS);
 			db.execSQL(GM.DB.QUERY.CREATE.SPONSOR);
 			db.execSQL(GM.DB.QUERY.CREATE.VERSION);
-			//TODO: Is this really necessary?
-			Thread.sleep(1000);
-		} catch (InterruptedException e) {
-			Log.e("SYNC", "Couldn't wait for the database to be recreated: " + e.toString());
+			db.setTransactionSuccessful();
+			db.endTransaction();
 		}
 		catch (Exception ex) {
 			result = false;
@@ -391,12 +412,15 @@ class Sync extends AsyncTask<Void, Void, Void> {
 				keys[totalVersions] = key;
 				values[totalVersions] = value;
 				totalVersions ++;
+				publishProgress();
 			}
 			if (totalVersions > 0 && totalVersions < 99){
 				db.execSQL(GM.DB.QUERY.CREATE.VERSION);
 				db.execSQL(GM.DB.QUERY.EMPTY.VERSION);
 				for (int i = 0; i < totalVersions; i ++){
-					db.execSQL("INSERT INTO version VALUES ('" + keys[i] + "', " + values[i] + ");");
+					if (!"all".equals(keys[i])) {
+						db.execSQL("INSERT INTO version VALUES ('" + keys[i] + "', " + values[i] + ");");
+					}
 				}
 			}
 			else{
@@ -445,6 +469,7 @@ class Sync extends AsyncTask<Void, Void, Void> {
 					Log.d("SYNC", "End of data string:" + ex.toString());
 					str = "";
 				}
+				publishProgress();
 			}
 		}
 		catch (Exception ex){
@@ -455,6 +480,67 @@ class Sync extends AsyncTask<Void, Void, Void> {
 		return result;
 	}
 
+	/**
+	 * When the table "settings cames up, dont make a table, but store required
+	 * values as data.
+	 *
+	 * @param settings JSON string with the contents of the "settings" table.
+	 * @return true if values could be saved, false otherwise.
+	 */
+	private boolean saveSettings(String settings){
+
+		SharedPreferences sharedData = myContextRef.getSharedPreferences(GM.DATA.DATA, Context.MODE_PRIVATE);
+		SharedPreferences.Editor editor = sharedData.edit();
+		try{
+			String value;
+			if (settings.contains("\"name\":\"comments\",\"value\":\"")){
+				value = settings.substring(settings.indexOf("\"name\":\"comments\",\"value\":\"") + 27, settings.indexOf("\"name\":\"comments\",\"value\":\"") + 28);
+				if ("0".equals(value) || "1".equals(value)){
+					Log.d("SYNC", "Setting found: comments = " + value);
+					if ("0".equals(value)) {
+						editor.putBoolean(GM.DATA.KEY.COMMENTS, false);
+					}
+					else {
+						editor.putBoolean(GM.DATA.KEY.COMMENTS, true);
+					}
+				}
+			}
+			if (settings.contains("\"name\":\"festivals\",\"value\":\"")){
+				value = settings.substring(settings.indexOf("\"name\":\"festivals\",\"value\":\"") + 28, settings.indexOf("\"name\":\"festivals\",\"value\":\"") + 29);
+				if ("0".equals(value) || "1".equals(value)){
+					Log.d("SYNC", "Setting found: lablanca = " + value);
+					if ("0".equals(value)) {
+						editor.putBoolean(GM.DATA.KEY.LABLANCA, false);
+					}
+					else {
+						editor.putBoolean(GM.DATA.KEY.LABLANCA, true);
+					}
+				}
+			}
+			if (settings.contains("\"name\":\"photos\",\"value\":\"")){
+				value = settings.substring(settings.indexOf("\"name\":\"photos\",\"value\":\"") + 25, settings.indexOf("\"name\":\"photos\",\"value\":\"") + 26);
+				if ("0".equals(value) || "1".equals(value)){
+					Log.d("SYNC" ,"Setting found: photos = " + value);
+					if ("0".equals(value)) {
+						editor.putBoolean(GM.DATA.KEY.PHOTOS, false);
+					}
+					else {
+						editor.putBoolean(GM.DATA.KEY.PHOTOS, true);
+					}
+				}
+			}
+
+			editor.apply();
+			publishProgress();
+			Log.d("SYNC", "Settings saved.");
+			return true;
+		}
+		catch (Exception ex){
+			editor.apply();
+			Log.e("SYNC", "Unable to save settings: " + ex.toString());
+			return false;
+		}
+	}
 
 
 
@@ -468,6 +554,13 @@ class Sync extends AsyncTask<Void, Void, Void> {
 	 * @return False if there were errors, true otherwise.
 	 */
 	private boolean saveTable(SQLiteDatabase db, String table, String data) {
+
+		//If settings table, do something else
+		if ("settings".equals(table)){
+			Log.d("SYNC", "Got the settings table. Special treatment...");
+			return saveSettings(data);
+		}
+
 		int type, i;
 		JSONObject jsonObj;
 		String[] values = new String[99];
@@ -511,7 +604,7 @@ class Sync extends AsyncTask<Void, Void, Void> {
 				//Loop trough values
 				for (int j = 0; j < i; j++) {
 
-					//If the value is empty, I dont care what tipe is it, it will be 'null'.
+					//If the value is empty, I don't care what type is it, it will be 'null'.
 					if (values[j].length() == 0) {
 						val = "null";
 						q = q + val + ", ";
@@ -552,16 +645,18 @@ class Sync extends AsyncTask<Void, Void, Void> {
 
 			}
 			catch (JSONException e) {
-				Log.e("SYNC", "Error parsing table '" + table + "': " + e.toString());
+				Log.e("SYNC", "Error parsing table '" + table + "' (JSONException): " + e.toString());
 				return false;
 			}
 			catch (Exception ex) {
-				Log.e("SYNC", "Error inserting data from remote table " + table + " into the local db: " + ex.toString());
+				Log.e("SYNC", "Error parsing table '" + table + "': " + ex.toString());
 				return false;
 			}
 
 			//Process str for the next loop pass.
 			str = str.substring(str.indexOf("\"}") + 2);
+
+			publishProgress();
 		}
 
 		//If I get to this point, there were no errors, and I can safely execute the queries
@@ -571,7 +666,7 @@ class Sync extends AsyncTask<Void, Void, Void> {
 				db.execSQL(queries.get(i));
 			}
 		} catch (Exception ex) {
-			Log.e("SYNC", "Error inserting data from remote table " + table + " into the local db: " + ex.toString().substring(18 * ex.toString().length() / 20));
+			Log.e("SYNC", "Error inserting data from remote table " + table + " into the local db: " + ex.toString());
 
 			//I don't put a 'return false;' here because I dont want to loose the whole table for just one row.
 		}
@@ -598,13 +693,20 @@ class Sync extends AsyncTask<Void, Void, Void> {
 			return null;
 		}
 
+		publishProgress();
+
 		//Get database version
 		Cursor cursor;
-		int dbVersion;
-		cursor = db.rawQuery("SELECT sum(version) AS v FROM version;", null);
-		cursor.moveToFirst();
-		dbVersion = cursor.getInt(0);
-		cursor.close();
+		int dbVersion = 0;
+		try{
+			cursor = db.rawQuery("SELECT sum(version) AS v FROM version;", null);
+			cursor.moveToFirst();
+			dbVersion = cursor.getInt(0);
+			cursor.close();
+		}
+		catch (Exception e){
+			Log.e("SYNC", "Unable to read from table 'version': " + e.toString());
+		}
 
 		URL url;
 		String uri = buildUrl(userCode, dbVersion, fg, GM.getLang());
@@ -632,6 +734,8 @@ class Sync extends AsyncTask<Void, Void, Void> {
 					while ((o = br.readLine()) != null)
 						sb.append(o);
 
+					publishProgress();
+
 					//Get the string with the sync json. (The whole page)
 					String strSync = sb.toString();
 					strSync = strSync.replace(":null", ":\"\"");
@@ -649,11 +753,11 @@ class Sync extends AsyncTask<Void, Void, Void> {
 					String strData = strSync.substring(1, strSync.length() - 1);
 					strData = strData.substring(strData.indexOf("{\"data\":"));
 
+					publishProgress();
+
 					//If the data is correctly parsed and stored, commit changes to the database.
 					db.beginTransaction();
 
-					//TODO: for save version apps, this is not needed, but I have to check it after an app update.
-					//recreateDb(db);
 
 					if (saveVersions(db, strVersion) && saveData(db, strData)){
 						db.setTransactionSuccessful();
@@ -669,6 +773,7 @@ class Sync extends AsyncTask<Void, Void, Void> {
 					Log.e("SYNC", "The server returned an unexpected code (" + httpCode + ") for the url \"" + uri + "\"");
 			}
 
+			publishProgress();
 			urlConnection.disconnect();
 			return null;
 
@@ -690,4 +795,4 @@ class Sync extends AsyncTask<Void, Void, Void> {
 		return null;
     	
 	}
-}
+}

+ 143 - 0
app/src/main/java/com/ivalentin/margolariak/UsActivity.java

@@ -0,0 +1,143 @@
+package com.ivalentin.margolariak;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.app.Dialog;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.view.Gravity;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import java.io.File;
+
+/**
+ * Activity with info about Gasteizko margolariak.
+ *
+ * @author Iñigo Valentin
+ *
+ * @see Activity
+ *
+ */
+public class UsActivity extends Activity {
+
+	/**
+	 * Runs when the activity is created.
+	 *
+	 * @param savedInstanceState Saved state of the activity.
+	 * @see Activity#onCreate(Bundle)
+	 */
+	@SuppressLint("InflateParams")
+	@Override
+	protected void onCreate(Bundle savedInstanceState) {
+
+		//Remove title bar.
+		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
+		super.onCreate(savedInstanceState);
+
+		//Set layout.
+		setContentView(R.layout.activity_us);
+
+		//Assign layout items
+		LinearLayout llCuadrilla = (LinearLayout) findViewById(R.id.ll_us_cuadrilla);
+		LinearLayout llAssociation = (LinearLayout) findViewById(R.id.ll_us_asociacion);
+		LinearLayout llActivities = (LinearLayout) findViewById(R.id.ll_us_activities);
+		LinearLayout llTransparency = (LinearLayout) findViewById(R.id.ll_us_transparency);
+
+		//Set onClick listeners.
+		llCuadrilla.setOnClickListener(new View.OnClickListener() {
+			@Override
+			public void onClick(View v) {
+				openDialog(getString(R.string.us_cuadrilla), getString(R.string.us_cuadrilla_content), getResources().getDrawable(R.drawable.us_cuadrilla));
+			}
+		});
+		llAssociation.setOnClickListener(new View.OnClickListener() {
+			@Override
+			public void onClick(View v) {
+				openDialog(getString(R.string.us_association), getString(R.string.us_association_content), getResources().getDrawable(R.drawable.us_asociacion));
+			}
+		});
+		llActivities.setOnClickListener(new View.OnClickListener() {
+			@Override
+			public void onClick(View v) {
+				openDialog(getString(R.string.us_activities), getString(R.string.us_activities_content), getResources().getDrawable(R.drawable.us_activities));
+			}
+		});
+		llTransparency.setOnClickListener(new View.OnClickListener() {
+			@Override
+			public void onClick(View v) {
+				openDialog(getString(R.string.us_transparency), getString(R.string.us_transparency_content), getResources().getDrawable(R.drawable.us_transparency));
+			}
+		});
+
+	}
+
+	/**
+	 * Shows a dialog with expanded info.
+	 *
+	 * @param title The event id.
+	 * @param text The dialog text.
+	 * @param img The dialog image.
+	 */
+	@SuppressWarnings("ConstantConditions")
+	private void openDialog(final String title, final String text, final Drawable img){
+
+		//Create the dialog
+		final Dialog dialog = new Dialog(this);
+
+		//Set up dialog window
+		dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+		dialog.setContentView(R.layout.dialog_us);
+
+		//Set the custom dialog components - text, image and button
+		TextView tvTitle = (TextView) dialog.findViewById(R.id.tv_dialog_us_title);
+		TextView tvText = (TextView) dialog.findViewById(R.id.tv_dialog_us_text);
+		ImageView ivImage = (ImageView) dialog.findViewById(R.id.iv_dialog_us_image);
+		Button btClose = (Button) dialog.findViewById(R.id.bt_dialog_us_close);
+
+		//Set text fields
+		tvTitle.setText(title);
+		tvText.setText(text);
+
+		//Set image
+		ivImage.setImageDrawable(img);
+
+		//Set close button
+		btClose.setOnClickListener(new View.OnClickListener() {
+			@Override
+			public void onClick(View v) {
+				dialog.dismiss();
+			}
+		});
+
+		//Show the dialog
+		WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
+		lp.copyFrom(dialog.getWindow().getAttributes());
+		lp.width = WindowManager.LayoutParams.MATCH_PARENT;
+		lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+		lp.gravity = Gravity.CENTER;
+		dialog.getWindow().setAttributes(lp);
+
+		//Show dialog
+		dialog.show();
+	}
+
+
+	/**
+	 * Not called from code, but referenced from activity_sponsor.xml.
+	 * Finishes the activity.
+	 *
+	 * @param v Ignored
+	 *
+	 * @see Activity#finish()
+	 */
+	public void finish(View v){
+		finish();
+	}
+
+}

+ 2 - 2
app/src/main/res/drawable/button.xml

@@ -2,9 +2,9 @@
     android:shape="rectangle" >
 
     <stroke
-        android:width="5dp"
+        android:width="3dp"
         android:color="@color/input_border" />
-    <solid android:color="@color/input_background" />
+    <solid android:color="@color/input_button_background" />
     <corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp"
         android:topLeftRadius="7dp" android:topRightRadius="7dp"/>
     <padding android:left="5dp"

+ 2 - 2
app/src/main/res/drawable/buttonpressed.xml

@@ -2,9 +2,9 @@
     android:shape="rectangle" >
 
     <stroke
-        android:width="5dp"
+        android:width="3dp"
         android:color="@color/input_border" />
-    <solid android:color="@color/input_background_pressed" />
+    <solid android:color="@color/input_button_background_pressed" />
     <corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp"
         android:topLeftRadius="7dp" android:topRightRadius="7dp"/>
     <padding android:left="5dp"

+ 1 - 1
app/src/main/res/drawable/input.xml

@@ -2,7 +2,7 @@
     android:shape="rectangle" >
 
     <stroke
-        android:width="5dp"
+        android:width="3dp"
         android:color="@color/input_border" />
     <solid android:color="@color/input_background" />
     <corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp"

BIN
app/src/main/res/drawable/ul.png


BIN
app/src/main/res/drawable/us_activities.png


BIN
app/src/main/res/drawable/us_asociacion.png


BIN
app/src/main/res/drawable/us_cuadrilla.png


BIN
app/src/main/res/drawable/us_transparency.png


BIN
app/src/main/res/drawable/web.png


+ 126 - 123
app/src/main/res/layout/activity_main.xml

@@ -17,26 +17,27 @@
 		<!-- Button to open slider menu -->
 
 		<ImageView
-			android:contentDescription="@string/app_name"
-			android:layout_width="40dp"
-			android:layout_height="40dp"
 			android:id="@+id/iv_logo"
-			android:src="@drawable/ic_launcher"
-			android:adjustViewBounds="true"
+			android:layout_width="wrap_content"
+			android:layout_height="wrap_content"
+			android:layout_gravity="center_vertical"
 			android:layout_weight=".2"
+			android:adjustViewBounds="true"
+			android:contentDescription="@string/app_name"
 			android:maxHeight="45dp"
 			android:maxWidth="45dp"
-			android:padding="1dp"/>
+			android:padding="1dp"
+			android:src="@drawable/ic_launcher"/>
 
 		<!-- Layout with the app title and current section -->
 
 		<LinearLayout
 			android:layout_width="wrap_content"
 			android:layout_height="wrap_content"
-			android:layout_gravity="center"
+			android:layout_gravity="center_vertical|center"
 			android:layout_weight=".8"
 			android:gravity="center"
-			android:orientation="vertical" >
+			android:orientation="vertical">
 
 			<!-- App name. Remains unchanged -->
 
@@ -45,9 +46,9 @@
 				android:layout_height="wrap_content"
 				android:gravity="center"
 				android:text="@string/app_name"
+				android:textColor="@color/menu_entry"
 				android:textSize="18sp"
-				android:textStyle="bold"
-				android:textColor="@color/menu_entry"/>
+				android:textStyle="bold"/>
 
 			<!-- Section title -->
 
@@ -57,253 +58,255 @@
 				android:layout_height="wrap_content"
 				android:gravity="center"
 				android:text="@string/menu_home"
-				android:textSize="20sp"
-				android:textColor="@color/menu_entry"/>
+				android:textColor="@color/menu_entry"
+				android:textSize="20sp"/>
 
 		</LinearLayout>
 
 		<ImageButton
-			android:layout_width="40dp"
+			android:id="@+id/bt_menu"
+			android:layout_width="wrap_content"
 			android:layout_height="match_parent"
-			android:src="@drawable/ic_expand"
+			android:layout_weight=".2"
+			android:adjustViewBounds="false"
+			android:background="#00000000"
 			android:contentDescription="@string/tutorial_menu"
+			android:cropToPadding="false"
 			android:onClick="showMenu"
-			android:layout_weight=".2"
-			android:id="@+id/bt_menu"
-			app:srcCompat="@drawable/ic_expand"
-			android:background="#00000000"/>
+			android:src="@drawable/ic_expand"
+			app:srcCompat="@drawable/ic_expand"/>
 
 		<ProgressBar
 			android:id="@+id/pb_sync"
 			android:layout_width="40dp"
 			android:layout_height="40dp"
 			android:layout_weight=".2"
-			android:visibility="gone"
 			android:maxHeight="40dp"
-			android:maxWidth="40dp"/>
+			android:maxWidth="40dp"
+			android:visibility="gone"/>
 
 	</LinearLayout>
 
 	<!-- The part where the fragments will be loaded -->
 
 	<HorizontalScrollView
-		android:layout_width="wrap_content"
-		android:layout_height="50dp"
 		android:id="@+id/sv_menu"
-		android:scrollIndicators="none"
-		android:requiresFadingEdge="horizontal"
-		android:fadingEdgeLength="125dp"
+		android:layout_width="match_parent"
+		android:layout_height="55dp"
 		android:background="@color/background_menu"
+		android:fadingEdgeLength="80dp"
+		android:requiresFadingEdge="horizontal"
+		android:scrollIndicators="none"
 		tools:ignore="UnusedAttribute">
 
 		<LinearLayout
-			android:orientation="horizontal"
 			android:layout_width="wrap_content"
 			android:layout_height="match_parent"
-			>
+			android:layout_marginBottom="1dp"
+			android:orientation="horizontal">
 
 			<RelativeLayout
-				android:orientation="vertical"
+				android:id="@+id/rl_menu_home"
 				android:layout_width="100dp"
 				android:layout_height="match_parent"
-				android:id="@+id/rl_menu_home"
+				android:layout_marginLeft="0.5dp"
 				android:layout_marginRight="0.5dp"
-				android:layout_marginLeft="0.5dp">
+				android:orientation="vertical">
 
 				<TextView
+					android:id="@+id/tv_menu_home"
 					android:layout_width="wrap_content"
 					android:layout_height="wrap_content"
-					android:textAppearance="?android:attr/textAppearanceMedium"
-					android:text="@string/menu_home"
+					android:layout_centerInParent="true"
 					android:layout_gravity="top"
+					android:text="@string/menu_home"
+					android:textAppearance="?android:attr/textAppearanceMedium"
+					android:textColor="@color/menu_entry"
 					android:textSize="15sp"
-					android:layout_centerInParent="true"
-					android:textStyle="bold"
-					android:id="@+id/tv_menu_home"
-					android:textColor="@color/menu_entry"/>
+					android:textStyle="bold"/>
 
 				<ImageView
-					android:layout_width="match_parent"
-					android:layout_height="8dp"
 					android:id="@+id/iv_menu_home"
-					android:background="@color/menu_selected"
-					android:alpha="1"
-					android:layout_gravity="bottom"
-					android:layout_alignParentStart="false"
+					android:layout_width="match_parent"
+					android:layout_height="7dp"
+					android:layout_alignParentBottom="true"
 					android:layout_alignParentEnd="false"
 					android:layout_alignParentLeft="false"
 					android:layout_alignParentRight="false"
-					android:layout_alignParentBottom="true"
+					android:layout_alignParentStart="false"
+					android:layout_gravity="bottom"
+					android:alpha="1"
+					android:background="@color/menu_selected"
 					tools:ignore="ContentDescription"/>
 			</RelativeLayout>
 
 			<RelativeLayout
-				android:orientation="vertical"
+				android:id="@+id/rl_menu_location"
 				android:layout_width="100dp"
 				android:layout_height="match_parent"
-				android:id="@+id/rl_menu_location"
 				android:layout_marginLeft="1dp"
-				android:layout_marginRight="1dp">
+				android:layout_marginRight="1dp"
+				android:orientation="vertical">
 
 				<TextView
+					android:id="@+id/tv_menu_location"
 					android:layout_width="wrap_content"
 					android:layout_height="wrap_content"
-					android:textAppearance="?android:attr/textAppearanceMedium"
-					android:text="@string/menu_location"
-					android:layout_gravity="top"
-					android:textSize="15sp"
 					android:layout_centerInParent="true"
-					android:id="@+id/tv_menu_location"
-					android:textColor="@color/menu_entry"/>
+					android:layout_gravity="top"
+					android:text="@string/menu_location"
+					android:textAppearance="?android:attr/textAppearanceMedium"
+					android:textColor="@color/menu_entry"
+					android:textSize="15sp"/>
 
 				<ImageView
-					android:layout_width="match_parent"
-					android:layout_height="2dp"
 					android:id="@+id/iv_menu_location"
-					android:background="@color/menu_selected"
-					android:alpha="1"
-					android:layout_gravity="bottom"
-					android:layout_alignParentStart="false"
+					android:layout_width="match_parent"
+					android:layout_height="3dp"
+					android:layout_alignParentBottom="true"
 					android:layout_alignParentEnd="false"
 					android:layout_alignParentLeft="false"
 					android:layout_alignParentRight="false"
-					android:layout_alignParentBottom="true"
+					android:layout_alignParentStart="false"
+					android:layout_gravity="bottom"
+					android:alpha="1"
+					android:background="@color/menu_selected"
 					tools:ignore="ContentDescription"/>
 			</RelativeLayout>
 
 			<RelativeLayout
-				android:orientation="vertical"
+				android:id="@+id/rl_menu_lablanca"
 				android:layout_width="100dp"
 				android:layout_height="match_parent"
-				android:id="@+id/rl_menu_lablanca"
 				android:layout_marginLeft="1dp"
-				android:layout_marginRight="1dp">
+				android:layout_marginRight="1dp"
+				android:orientation="vertical">
 
 				<TextView
+					android:id="@+id/tv_menu_lablanca"
 					android:layout_width="wrap_content"
 					android:layout_height="wrap_content"
-					android:textAppearance="?android:attr/textAppearanceMedium"
-					android:text="@string/menu_lablanca"
-					android:layout_gravity="top"
-					android:textSize="15sp"
 					android:layout_centerInParent="true"
-					android:id="@+id/tv_menu_lablanca"
-					android:textColor="@color/menu_entry"/>
+					android:layout_gravity="top"
+					android:text="@string/menu_lablanca"
+					android:textAppearance="?android:attr/textAppearanceMedium"
+					android:textColor="@color/menu_entry"
+					android:textSize="15sp"/>
 
 				<ImageView
-					android:layout_width="match_parent"
-					android:layout_height="2dp"
 					android:id="@+id/iv_menu_lablanca"
-					android:background="@color/menu_selected"
-					android:alpha="1"
-					android:layout_gravity="bottom"
-					android:layout_alignParentStart="false"
+					android:layout_width="match_parent"
+					android:layout_height="3dp"
+					android:layout_alignParentBottom="true"
 					android:layout_alignParentEnd="false"
 					android:layout_alignParentLeft="false"
 					android:layout_alignParentRight="false"
-					android:layout_alignParentBottom="true"
+					android:layout_alignParentStart="false"
+					android:layout_gravity="bottom"
+					android:alpha="1"
+					android:background="@color/menu_selected"
 					tools:ignore="ContentDescription"/>
 			</RelativeLayout>
 
 			<RelativeLayout
-				android:orientation="vertical"
+				android:id="@+id/rl_menu_activities"
 				android:layout_width="100dp"
 				android:layout_height="match_parent"
-				android:id="@+id/rl_menu_activities"
 				android:layout_marginLeft="1dp"
-				android:layout_marginRight="1dp">
+				android:layout_marginRight="1dp"
+				android:orientation="vertical">
 
 				<TextView
+					android:id="@+id/tv_menu_activities"
 					android:layout_width="wrap_content"
 					android:layout_height="wrap_content"
-					android:textAppearance="?android:attr/textAppearanceMedium"
-					android:text="@string/menu_activities"
-					android:layout_gravity="top"
-					android:textSize="15sp"
 					android:layout_centerInParent="true"
-					android:id="@+id/tv_menu_activities"
-					android:textColor="@color/menu_entry"/>
+					android:layout_gravity="top"
+					android:text="@string/menu_activities"
+					android:textAppearance="?android:attr/textAppearanceMedium"
+					android:textColor="@color/menu_entry"
+					android:textSize="15sp"/>
 
 				<ImageView
-					android:layout_width="match_parent"
-					android:layout_height="2dp"
 					android:id="@+id/iv_menu_activities"
-					android:background="@color/menu_selected"
-					android:alpha="1"
-					android:layout_gravity="bottom"
-					android:layout_alignParentStart="false"
+					android:layout_width="match_parent"
+					android:layout_height="3dp"
+					android:layout_alignParentBottom="true"
 					android:layout_alignParentEnd="false"
 					android:layout_alignParentLeft="false"
 					android:layout_alignParentRight="false"
-					android:layout_alignParentBottom="true"
+					android:layout_alignParentStart="false"
+					android:layout_gravity="bottom"
+					android:alpha="1"
+					android:background="@color/menu_selected"
 					tools:ignore="ContentDescription"/>
 			</RelativeLayout>
 
 			<RelativeLayout
-				android:orientation="vertical"
+				android:id="@+id/rl_menu_blog"
 				android:layout_width="100dp"
 				android:layout_height="match_parent"
-				android:id="@+id/rl_menu_blog"
 				android:layout_marginLeft="1dp"
-				android:layout_marginRight="1dp">
+				android:layout_marginRight="1dp"
+				android:orientation="vertical">
 
 				<TextView
+					android:id="@+id/tv_menu_blog"
 					android:layout_width="wrap_content"
 					android:layout_height="wrap_content"
-					android:textAppearance="?android:attr/textAppearanceMedium"
-					android:text="@string/menu_blog"
-					android:layout_gravity="top"
-					android:textSize="15sp"
 					android:layout_centerInParent="true"
-					android:id="@+id/tv_menu_blog"
-					android:textColor="@color/menu_entry"/>
+					android:layout_gravity="top"
+					android:text="@string/menu_blog"
+					android:textAppearance="?android:attr/textAppearanceMedium"
+					android:textColor="@color/menu_entry"
+					android:textSize="15sp"/>
 
 				<ImageView
-					android:layout_width="match_parent"
-					android:layout_height="2dp"
 					android:id="@+id/iv_menu_blog"
-					android:background="@color/menu_selected"
-					android:alpha="1"
-					android:layout_gravity="bottom"
-					android:layout_alignParentStart="false"
+					android:layout_width="match_parent"
+					android:layout_height="3dp"
+					android:layout_alignParentBottom="true"
 					android:layout_alignParentEnd="false"
 					android:layout_alignParentLeft="false"
 					android:layout_alignParentRight="false"
-					android:layout_alignParentBottom="true"
+					android:layout_alignParentStart="false"
+					android:layout_gravity="bottom"
+					android:alpha="1"
+					android:background="@color/menu_selected"
 					tools:ignore="ContentDescription"/>
 			</RelativeLayout>
 
 			<RelativeLayout
-				android:orientation="vertical"
+				android:id="@+id/rl_menu_gallery"
 				android:layout_width="100dp"
 				android:layout_height="match_parent"
-				android:id="@+id/rl_menu_gallery"
 				android:layout_marginLeft="1dp"
-				android:layout_marginRight="1dp">
+				android:layout_marginRight="1dp"
+				android:orientation="vertical">
 
 				<TextView
+					android:id="@+id/tv_menu_gallery"
 					android:layout_width="wrap_content"
 					android:layout_height="wrap_content"
-					android:textAppearance="?android:attr/textAppearanceMedium"
-					android:text="@string/menu_gallery"
-					android:layout_gravity="top"
-					android:textSize="15sp"
 					android:layout_centerInParent="true"
-					android:id="@+id/tv_menu_gallery"
-					android:textColor="@color/menu_entry"/>
+					android:layout_gravity="top"
+					android:text="@string/menu_gallery"
+					android:textAppearance="?android:attr/textAppearanceMedium"
+					android:textColor="@color/menu_entry"
+					android:textSize="15sp"/>
 
 				<ImageView
-					android:layout_width="match_parent"
-					android:layout_height="2dp"
 					android:id="@+id/iv_menu_gallery"
-					android:background="@color/menu_selected"
-					android:alpha="1"
-					android:layout_gravity="bottom"
-					android:layout_alignParentStart="false"
+					android:layout_width="match_parent"
+					android:layout_height="3dp"
+					android:layout_alignParentBottom="true"
 					android:layout_alignParentEnd="false"
 					android:layout_alignParentLeft="false"
 					android:layout_alignParentRight="false"
-					android:layout_alignParentBottom="true"
+					android:layout_alignParentStart="false"
+					android:layout_gravity="bottom"
+					android:alpha="1"
+					android:background="@color/menu_selected"
 					tools:ignore="ContentDescription"/>
 			</RelativeLayout>
 

+ 5 - 4
app/src/main/res/layout/activity_settings.xml

@@ -16,20 +16,21 @@
 
         <ImageView
             android:contentDescription="@string/app_name"
-            android:layout_width="40dp"
-            android:layout_height="40dp"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
             android:id="@+id/iv_logo"
             android:src="@drawable/ic_launcher"
             android:adjustViewBounds="true"
             android:layout_weight=".2"
             android:maxHeight="45dp"
             android:maxWidth="45dp"
-            android:padding="1dp"/>
+            android:padding="1dp"
+            android:layout_gravity="center_vertical"/>
 
         <LinearLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_gravity="center"
+            android:layout_gravity="center_vertical|center"
             android:layout_weight=".8"
             android:gravity="center"
             android:orientation="vertical" >

+ 119 - 0
app/src/main/res/layout/activity_sponsor.xml

@@ -0,0 +1,119 @@
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="fill_parent"
+    android:orientation="vertical"
+    android:background="@color/background_app">
+
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/background_menu"
+        android:gravity="center_vertical"
+        android:orientation="horizontal"
+        android:padding="2dp">
+
+        <ImageView
+            android:contentDescription="@string/app_name"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:id="@+id/iv_logo"
+            android:src="@drawable/ic_launcher"
+            android:adjustViewBounds="true"
+            android:layout_weight=".2"
+            android:maxHeight="45dp"
+            android:maxWidth="45dp"
+            android:padding="1dp"
+            android:layout_gravity="center_vertical"/>
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical|center"
+            android:layout_weight=".8"
+            android:gravity="center"
+            android:orientation="vertical" >
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:text="@string/app_name"
+                android:contentDescription="@string/app_name"
+                android:textSize="18sp"
+                android:textStyle="bold"
+                android:textColor="@color/menu_entry"/>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:text="@string/pop_menu_sponsors"
+                android:textSize="20sp"
+                android:textColor="@color/menu_entry"/>
+
+        </LinearLayout>
+
+        <ImageButton
+            android:layout_width="40dp"
+            android:layout_height="match_parent"
+            android:src="@android:drawable/ic_menu_revert"
+            android:onClick="finish"
+            android:contentDescription="@string/accept"
+            android:layout_weight=".2"
+            android:id="@+id/bt_back"
+            app:srcCompat="@android:drawable/ic_menu_revert"
+            android:background="#00000000"/>
+
+    </LinearLayout>
+
+    <ScrollView
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/background_app"
+        >
+
+        <LinearLayout
+            android:id="@+id/ll_sponsors_section"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:background="@drawable/section"
+            android:layout_marginBottom="40dp"
+            android:layout_marginEnd="10dp"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:layout_marginStart="10dp"
+            android:layout_marginTop="10dp">
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/pop_menu_sponsors"
+                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:textStyle="bold"
+                tools:layout_width="match_parent"
+                android:background="@drawable/section_title"
+                android:paddingBottom="4dp"
+                android:paddingEnd="10dp"
+                android:paddingLeft="20dp"
+                android:paddingRight="10dp"
+                android:paddingStart="20dp"
+                android:paddingTop="4dp"
+                android:textColor="@color/section_title"/>
+
+            <LinearLayout
+                android:orientation="vertical"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:id="@+id/ll_sponsor_list"
+                android:layout_marginBottom="20dp">
+            </LinearLayout>
+
+        </LinearLayout>
+    </ScrollView>
+
+</LinearLayout>
+

+ 385 - 0
app/src/main/res/layout/activity_us.xml

@@ -0,0 +1,385 @@
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="fill_parent"
+    android:orientation="vertical"
+    android:background="@color/background_app">
+
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/background_menu"
+        android:gravity="center_vertical"
+        android:orientation="horizontal"
+        android:padding="2dp">
+
+        <ImageView
+            android:contentDescription="@string/app_name"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:src="@drawable/ic_launcher"
+            android:adjustViewBounds="true"
+            android:layout_weight=".2"
+            android:maxHeight="45dp"
+            android:maxWidth="45dp"
+            android:padding="1dp"
+            android:layout_gravity="center_vertical"/>
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical|center"
+            android:layout_weight=".8"
+            android:gravity="center"
+            android:orientation="vertical" >
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:text="@string/app_name"
+                android:contentDescription="@string/app_name"
+                android:textSize="18sp"
+                android:textStyle="bold"
+                android:textColor="@color/menu_entry"/>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:text="@string/pop_menu_sponsors"
+                android:textSize="20sp"
+                android:textColor="@color/menu_entry"/>
+
+        </LinearLayout>
+
+        <ImageButton
+            android:layout_width="40dp"
+            android:layout_height="match_parent"
+            android:src="@android:drawable/ic_menu_revert"
+            android:onClick="finish"
+            android:contentDescription="@string/accept"
+            android:layout_weight=".2"
+            android:id="@+id/bt_back"
+            app:srcCompat="@android:drawable/ic_menu_revert"
+            android:background="#00000000"/>
+
+    </LinearLayout>
+
+    <ScrollView
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/background_app"
+        >
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:background="@drawable/section"
+            android:layout_marginBottom="40dp"
+            android:layout_marginEnd="10dp"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:layout_marginStart="10dp"
+            android:layout_marginTop="10dp">
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/pop_menu_sponsors"
+                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:textStyle="bold"
+                tools:layout_width="match_parent"
+                android:background="@drawable/section_title"
+                android:paddingBottom="4dp"
+                android:paddingEnd="10dp"
+                android:paddingLeft="20dp"
+                android:paddingRight="10dp"
+                android:paddingStart="20dp"
+                android:paddingTop="4dp"
+                android:textColor="@color/section_title"/>
+
+            <LinearLayout
+                xmlns:android="http://schemas.android.com/apk/res/android"
+                xmlns:tools="http://schemas.android.com/tools"
+                android:id="@+id/ll_us_cuadrilla"
+                android:orientation="vertical"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@drawable/entry"
+                android:padding="7dp"
+                android:layout_margin="8dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/entry_title"
+                    android:textStyle="bold"
+                    android:text="@string/us_cuadrilla"/>
+
+                <LinearLayout
+                    android:orientation="horizontal"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent">
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:maxWidth="110dp"
+                        android:contentDescription="@string/app_cdesc"
+                        android:minHeight="30dp"
+                        android:minWidth="30dp"
+                        android:layout_gravity="top|center_vertical"
+                        android:padding="0.5dp"
+                        android:layout_margin="3dp"
+                        android:adjustViewBounds="true"
+                        android:maxHeight="100dp"
+                        android:src="@drawable/us_cuadrilla"/>
+
+                    <LinearLayout
+                        android:orientation="vertical"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="top">
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:textAppearance="@android:style/TextAppearance.Medium"
+                            android:layout_margin="5dp"
+                            android:maxLines="4"
+                            android:minHeight="30dp"
+                            android:text="@string/us_cuadrilla_content"/>
+
+                        <ImageView
+                            android:layout_width="match_parent"
+                            android:layout_weight="1"
+                            android:layout_height="40dp"
+                            android:layout_marginTop="-40dp"
+                            android:background="@drawable/gradient_v_white"
+                            android:adjustViewBounds="true"
+                            android:contentDescription="@string/empty"
+                            tools:ignore="InefficientWeight"/>
+
+                    </LinearLayout>
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+            <LinearLayout
+                xmlns:android="http://schemas.android.com/apk/res/android"
+                xmlns:tools="http://schemas.android.com/tools"
+                android:id="@+id/ll_us_asociacion"
+                android:orientation="vertical"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@drawable/entry"
+                android:padding="7dp"
+                android:layout_margin="8dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/entry_title"
+                    android:textStyle="bold"
+                    android:text="@string/us_association"/>
+
+                <LinearLayout
+                    android:orientation="horizontal"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent">
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:maxWidth="110dp"
+                        android:contentDescription="@string/app_cdesc"
+                        android:minHeight="30dp"
+                        android:minWidth="30dp"
+                        android:layout_gravity="top|center_vertical"
+                        android:padding="0.5dp"
+                        android:layout_margin="3dp"
+                        android:adjustViewBounds="true"
+                        android:maxHeight="100dp"
+                        android:src="@drawable/us_asociacion"/>
+
+                    <LinearLayout
+                        android:orientation="vertical"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="top">
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:textAppearance="@android:style/TextAppearance.Medium"
+                            android:layout_margin="5dp"
+                            android:maxLines="4"
+                            android:minHeight="30dp"
+                            android:text="@string/us_association_content"/>
+
+                        <ImageView
+                            android:layout_width="match_parent"
+                            android:layout_weight="1"
+                            android:layout_height="40dp"
+                            android:layout_marginTop="-40dp"
+                            android:background="@drawable/gradient_v_white"
+                            android:adjustViewBounds="true"
+                            android:contentDescription="@string/empty"
+                            tools:ignore="InefficientWeight"/>
+
+                    </LinearLayout>
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+            <LinearLayout
+                xmlns:android="http://schemas.android.com/apk/res/android"
+                xmlns:tools="http://schemas.android.com/tools"
+                android:id="@+id/ll_us_activities"
+                android:orientation="vertical"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@drawable/entry"
+                android:padding="7dp"
+                android:layout_margin="8dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/entry_title"
+                    android:textStyle="bold"
+                    android:text="@string/us_activities"/>
+
+                <LinearLayout
+                    android:orientation="horizontal"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent">
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:maxWidth="110dp"
+                        android:contentDescription="@string/app_cdesc"
+                        android:minHeight="30dp"
+                        android:minWidth="30dp"
+                        android:layout_gravity="top|center_vertical"
+                        android:padding="0.5dp"
+                        android:layout_margin="3dp"
+                        android:adjustViewBounds="true"
+                        android:maxHeight="100dp"
+                        android:src="@drawable/us_activities"/>
+
+                    <LinearLayout
+                        android:orientation="vertical"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="top">
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:textAppearance="@android:style/TextAppearance.Medium"
+                            android:layout_margin="5dp"
+                            android:maxLines="4"
+                            android:minHeight="30dp"
+                            android:text="@string/us_activities_content"/>
+
+                        <ImageView
+                            android:layout_width="match_parent"
+                            android:layout_weight="1"
+                            android:layout_height="40dp"
+                            android:layout_marginTop="-40dp"
+                            android:background="@drawable/gradient_v_white"
+                            android:adjustViewBounds="true"
+                            android:contentDescription="@string/empty"
+                            tools:ignore="InefficientWeight"/>
+
+                    </LinearLayout>
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+            <LinearLayout
+                xmlns:android="http://schemas.android.com/apk/res/android"
+                xmlns:tools="http://schemas.android.com/tools"
+                android:id="@+id/ll_us_transparency"
+                android:orientation="vertical"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@drawable/entry"
+                android:padding="7dp"
+                android:layout_margin="8dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/entry_title"
+                    android:textStyle="bold"
+                    android:text="@string/us_transparency"/>
+
+                <LinearLayout
+                    android:orientation="horizontal"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent">
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:maxWidth="110dp"
+                        android:contentDescription="@string/app_cdesc"
+                        android:minHeight="30dp"
+                        android:minWidth="30dp"
+                        android:layout_gravity="top|center_vertical"
+                        android:padding="0.5dp"
+                        android:layout_margin="3dp"
+                        android:adjustViewBounds="true"
+                        android:maxHeight="100dp"
+                        android:src="@drawable/us_transparency"/>
+
+                    <LinearLayout
+                        android:orientation="vertical"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="top">
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:textAppearance="@android:style/TextAppearance.Medium"
+                            android:layout_margin="5dp"
+                            android:maxLines="4"
+                            android:minHeight="30dp"
+                            android:text="@string/us_transparency_content"/>
+
+                        <ImageView
+                            android:layout_width="match_parent"
+                            android:layout_weight="1"
+                            android:layout_height="40dp"
+                            android:layout_marginTop="-40dp"
+                            android:background="@drawable/gradient_v_white"
+                            android:adjustViewBounds="true"
+                            android:contentDescription="@string/empty"
+                            tools:ignore="InefficientWeight"/>
+
+                    </LinearLayout>
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+        </LinearLayout>
+    </ScrollView>
+
+</LinearLayout>
+

+ 57 - 34
app/src/main/res/layout/dialog_schedule.xml

@@ -3,16 +3,22 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
+    android:layout_marginBottom="0dp"
+    android:layout_marginEnd="0dp"
+    android:layout_marginLeft="0dp"
+    android:layout_marginRight="0dp"
+    android:layout_marginStart="0dp"
+    android:layout_marginTop="0dp"
     android:background="@drawable/section"
     android:orientation="vertical"
-    android:padding="7dp">
+    >
 
     <LinearLayout
         android:id="@+id/ll_dialog_schedule_buttons"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_alignParentBottom="true"
-        android:orientation="horizontal" >
+        android:orientation="horizontal">
 
         <Button
             android:id="@+id/bt_schedule_close"
@@ -39,50 +45,44 @@
         android:layout_above="@id/ll_dialog_schedule_buttons"
         android:layout_alignParentTop="true"
         android:orientation="vertical"
-        android:padding="10dp" >
+        android:paddingBottom="15dp">
 
         <TextView
             android:id="@+id/tv_dialog_schedule_title"
-            android:layout_width="wrap_content"
+            android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:textAppearance="@android:style/TextAppearance.Large"
+            android:background="@drawable/section_title"
+            android:paddingBottom="4dp"
+            android:paddingEnd="10dp"
+            android:paddingLeft="20dp"
+            android:paddingRight="10dp"
+            android:paddingStart="20dp"
+            android:paddingTop="4dp"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textColor="@color/section_title"
             android:textStyle="bold"/>
 
         <LinearLayout
-            android:orientation="vertical"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
+            android:layout_margin="8dp"
             android:background="@drawable/entry"
+            android:orientation="vertical"
             android:padding="7dp">
 
-            <TextView
-                android:id="@+id/tv_dialog_schedule_description"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_margin="10dp"
-                android:textAppearance="@android:style/TextAppearance.Medium"/>
-
-            <TextView
-                android:id="@+id/tv_dialog_schedule_host"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="10dp"
-                android:layout_marginStart="5dp"
-                android:textStyle="italic"
-                android:visibility="gone"
-                android:textAppearance="@android:style/TextAppearance.Small"/>
-
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="10dp" >
+                android:layout_margin="10dp">
 
                 <TextView
                     android:id="@+id/tv_dialog_schedule_date"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:textAppearance="@android:style/TextAppearance.Medium"
                     android:capitalize="sentences"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/entry_title"
+                    android:textStyle="bold"
                     tools:ignore="Deprecated,TextViewEdits"/>
 
                 <TextView
@@ -91,15 +91,34 @@
                     android:layout_height="wrap_content"
                     android:layout_marginLeft="10dp"
                     android:layout_marginStart="10dp"
-                    android:textAppearance="@android:style/TextAppearance.Medium"/>
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/entry_title"
+                    android:textStyle="bold"/>
 
             </LinearLayout>
 
+            <TextView
+                android:id="@+id/tv_dialog_schedule_description"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_margin="10dp"
+                android:textAppearance="@android:style/TextAppearance.Medium"/>
+
+            <TextView
+                android:id="@+id/tv_dialog_schedule_host"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="15dp"
+                android:layout_marginStart="15dp"
+                android:textAppearance="@android:style/TextAppearance.Small"
+                android:textStyle="italic"
+                android:visibility="gone"/>
+
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_margin="10dp"
-                android:orientation="horizontal" >
+                android:layout_margin="15dp"
+                android:orientation="horizontal">
 
                 <ImageView
                     android:id="@+id/imageView1"
@@ -110,12 +129,14 @@
                     android:maxHeight="50dp"
                     android:maxWidth="50dp"
                     android:scaleType="centerInside"
-                    android:src="@drawable/pinpoint" />
+                    android:src="@drawable/pinpoint"/>
 
                 <LinearLayout
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:orientation="vertical" >
+                    android:layout_marginLeft="10dp"
+                    android:layout_marginStart="10dp"
+                    android:orientation="vertical">
 
                     <TextView
                         android:id="@+id/tv_dialog_schedule_place"
@@ -127,8 +148,8 @@
                         android:id="@+id/tv_dialog_schedule_address"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:textStyle="italic"
-                        android:textAppearance="@android:style/TextAppearance.Small"/>
+                        android:textAppearance="@android:style/TextAppearance.Small"
+                        android:textStyle="italic"/>
 
                 </LinearLayout>
             </LinearLayout>
@@ -137,12 +158,14 @@
                 android:layout_width="fill_parent"
                 android:layout_height="fill_parent"
                 android:layout_margin="20dp"
-                android:padding="3dp" >
+                android:padding="3dp">
 
                 <com.google.android.gms.maps.MapView
                     android:id="@+id/mv_dialog_schedule_map"
                     android:layout_width="fill_parent"
-                    android:layout_height="fill_parent" >
+                    android:layout_height="fill_parent"
+                    android:background="@android:color/black"
+                    android:padding="1dp">
                 </com.google.android.gms.maps.MapView>
             </LinearLayout>
         </LinearLayout>

+ 128 - 0
app/src/main/res/layout/dialog_sponsor.xml

@@ -0,0 +1,128 @@
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:background="@drawable/section"
+    android:paddingBottom="15dp">
+
+    <TextView
+        android:id="@+id/tv_dialog_sponsor_title"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceLarge"
+        android:textStyle="bold"
+        android:background="@drawable/section_title"
+        android:paddingBottom="4dp"
+        android:paddingEnd="10dp"
+        android:paddingLeft="20dp"
+        android:paddingRight="10dp"
+        android:paddingStart="20dp"
+        android:paddingTop="4dp"
+        android:textColor="@color/section_title"
+        android:layout_alignParentTop="true"/>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="fill_parent"
+        android:orientation="vertical"
+        android:background="@drawable/entry"
+        android:layout_margin="8dp"
+        android:padding="7dp"
+        >
+
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:srcCompat="@drawable/photo_placeholder_thumb"
+            android:id="@+id/iv_dialog_sponsor_image"
+            android:maxHeight="140dp"
+            android:adjustViewBounds="true"/>
+
+        <TextView
+            android:id="@+id/tv_dialog_sponsor_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_margin="7dp"
+            android:textAppearance="@android:style/TextAppearance.Medium"/>
+
+        <LinearLayout
+            android:orientation="vertical"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
+
+            <LinearLayout
+                android:orientation="horizontal"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:id="@+id/ll_dialog_sponsor_url">
+
+                <ImageView
+                    android:layout_width="30dp"
+                    android:layout_height="30dp"
+                    android:layout_marginBottom="20dp"
+                    android:layout_marginStart="15dp"
+                    android:layout_marginRight="15dp"
+                    android:layout_marginLeft="15dp"
+                    android:layout_marginEnd="15dp"
+                    android:layout_marginTop="20dp"
+                    android:adjustViewBounds="true"
+                    android:src="@drawable/web"/>
+
+                <TextView
+                    android:text="@string/sponsors_url"
+                    android:layout_height="match_parent"
+                    android:id="@+id/tv_dialog_sponsor_url"
+                    android:layout_weight="1"
+                    android:gravity="center_vertical"
+                    android:layout_width="match_parent"
+                    android:textColor="@color/background_menu"
+                    android:textSize="16sp"
+                    android:textStyle="normal|bold"/>
+            </LinearLayout>
+
+            <LinearLayout
+                android:orientation="horizontal"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:id="@+id/ll_dialog_sponsor_address">
+
+                <ImageView
+                    android:layout_width="30dp"
+                    android:layout_height="30dp"
+                    android:adjustViewBounds="false"
+                    android:layout_marginBottom="20dp"
+                    android:layout_marginStart="15dp"
+                    android:layout_marginRight="15dp"
+                    android:layout_marginLeft="15dp"
+                    android:layout_marginEnd="15dp"
+                    android:layout_marginTop="20dp"
+                    android:src="@drawable/pinpoint"/>
+
+                <TextView
+                    android:layout_height="match_parent"
+                    android:id="@+id/tv_dialog_sponsor_address"
+                    android:layout_weight="1"
+                    android:gravity="center_vertical"
+                    android:layout_width="match_parent"
+                    android:textStyle="normal|bold"
+                    android:textSize="16sp"
+                    android:textColor="@color/background_menu"/>
+            </LinearLayout>
+        </LinearLayout>
+
+    </LinearLayout>
+
+    <Button
+        android:id="@+id/bt_dialog_sponsor_close"
+        android:layout_width="match_parent"
+        android:layout_margin="5dp"
+        android:background="@drawable/button_selector"
+        android:text="@string/notification_close"
+        android:textColor="@color/input_text_color"
+        android:textStyle="bold"
+        android:layout_alignParentBottom="true"
+        android:layout_height="50dp"/>
+
+</LinearLayout>

+ 11 - 10
app/src/main/res/layout/dialog_sync.xml

@@ -1,9 +1,10 @@
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              android:layout_width="fill_parent"
-              android:layout_height="wrap_content"
-              android:background="@drawable/section"
-              android:orientation="vertical"
-              android:layout_margin="20dp">
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/section"
+    android:orientation="vertical"
+    android:layout_margin="20dp">
 
     <TextView
         android:id="@+id/textView1"
@@ -24,7 +25,7 @@
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
+        android:layout_height="wrap_content"
         android:layout_margin="8dp"
         android:padding="7dp"
         android:background="@drawable/entry">
@@ -32,10 +33,10 @@
         <ProgressBar
             android:id="@+id/pb_sync_dialog"
             style="?android:attr/progressBarStyleLarge"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
             android:layout_gravity="center_horizontal"
-            android:layout_marginTop="20dp"/>
+            android:layout_marginTop="20dp"
+            android:layout_height="60dp"/>
 
         <TextView
             android:id="@+id/tv_dialog_sync_text"

+ 23 - 21
app/src/main/res/layout/dialog_sync_failed.xml

@@ -4,31 +4,33 @@
     android:layout_height="wrap_content"
     android:background="@drawable/section"
     android:orientation="vertical"
-    android:paddingBottom="10dp" >
+    android:layout_margin="20dp"
+    android:minHeight="250dp"
+    android:minWidth="200dp">
 
-    <LinearLayout
+    <TextView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:orientation="vertical"
-        android:padding="7dp">
-
-        <TextView
-            android:layout_width="fill_parent"
-            android:layout_height="wrap_content"
-            android:text="@string/dialog_sync_failed_title"
-            android:textAppearance="@android:style/TextAppearance.Large"
-            android:layout_marginBottom="10dp"
-            android:textStyle="bold"/>
-
-        <TextView
-            android:layout_width="fill_parent"
-            android:layout_height="wrap_content"
-            android:text="@string/dialog_sync_failed_text"
-            android:background="@drawable/entry"
-            android:padding="7dp"
-            android:textAppearance="@android:style/TextAppearance.Medium"/>
+        android:text="@string/dialog_sync_failed_title"
+        android:textAppearance="?android:attr/textAppearanceLarge"
+        android:textStyle="bold"
+        android:background="@drawable/section_title"
+        android:paddingBottom="4dp"
+        android:paddingEnd="10dp"
+        android:paddingLeft="20dp"
+        android:paddingRight="10dp"
+        android:paddingStart="20dp"
+        android:paddingTop="4dp"
+        android:textColor="@color/section_title"/>
 
-    </LinearLayout>
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:textAppearance="@android:style/TextAppearance.Medium"
+        android:text="@string/dialog_sync_failed_text"
+        android:layout_margin="8dp"
+        android:padding="7dp"
+        android:background="@drawable/entry"/>
 
     <Button
         android:id="@+id/bt_dialog_sync_failed_close"

+ 64 - 0
app/src/main/res/layout/dialog_us.xml

@@ -0,0 +1,64 @@
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:background="@drawable/section"
+    android:paddingBottom="15dp">
+
+    <TextView
+        android:id="@+id/tv_dialog_us_title"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceLarge"
+        android:textStyle="bold"
+        android:background="@drawable/section_title"
+        android:paddingBottom="4dp"
+        android:paddingEnd="10dp"
+        android:paddingLeft="20dp"
+        android:paddingRight="10dp"
+        android:paddingStart="20dp"
+        android:paddingTop="4dp"
+        android:textColor="@color/section_title"
+        android:layout_alignParentTop="true"/>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="fill_parent"
+        android:orientation="vertical"
+        android:background="@drawable/entry"
+        android:layout_margin="8dp"
+        android:padding="7dp"
+        >
+
+        <ImageView
+            android:id="@+id/iv_dialog_us_image"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:adjustViewBounds="true"
+            android:maxHeight="140dp"
+            android:minHeight="100dp"
+            app:srcCompat="@drawable/photo_placeholder_thumb"/>
+
+        <TextView
+            android:id="@+id/tv_dialog_us_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_margin="7dp"
+            android:textAppearance="@android:style/TextAppearance.Medium"/>
+
+    </LinearLayout>
+
+    <Button
+        android:id="@+id/bt_dialog_us_close"
+        android:layout_width="match_parent"
+        android:layout_margin="5dp"
+        android:background="@drawable/button_selector"
+        android:text="@string/notification_close"
+        android:textColor="@color/input_text_color"
+        android:textStyle="bold"
+        android:layout_alignParentBottom="true"
+        android:layout_height="50dp"/>
+
+</LinearLayout>

+ 109 - 119
app/src/main/res/layout/fragment_layout_activity_future.xml

@@ -4,180 +4,170 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
-    android:id="@+id/scrollView3"
-    android:background="@color/background_app"
-    android:padding="7dp"
-    tools:ignore="Overdraw">
+    android:background="@color/background_app">
 
     <LinearLayout
         android:orientation="vertical"
-        android:layout_width="fill_parent"
-        android:layout_height="match_parent"
-        android:background="@drawable/section"
-        android:layout_margin="7dp"
-        android:padding="7dp" >
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceLarge"
-            android:text="Large Text"
-            android:id="@+id/tv_activity_future_title"
-            android:textStyle="bold"/>
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="10dp">
 
         <LinearLayout
             android:orientation="vertical"
             android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:background="@drawable/entry"
-            android:padding="7dp" >
+            android:layout_height="wrap_content"
+            android:background="@drawable/section"
+            android:layout_margin="10dp"
+            tools:ignore="UselessParent">
 
             <TextView
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:id="@+id/tv_activity_future_title"
                 android:textAppearance="?android:attr/textAppearanceLarge"
-                android:text="Large Text"
-                android:id="@+id/tv_activity_future_date"
-                android:layout_gravity="end"
-                android:gravity="center_horizontal" />
-
-            <ImageView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:id="@+id/iv_activity_future_0"
-                android:layout_gravity="center_horizontal"
-                android:contentDescription="@string/app_cdesc"
-                android:visibility="gone"
-                android:maxHeight="70dp"
-                />
-
-            <WebView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:id="@+id/wv_activity_future_text" />
+                android:textStyle="bold"
+                tools:layout_width="match_parent"
+                android:background="@drawable/section_title"
+                android:paddingBottom="4dp"
+                android:paddingEnd="10dp"
+                android:paddingLeft="20dp"
+                android:paddingRight="10dp"
+                android:paddingStart="20dp"
+                android:paddingTop="4dp"
+                android:textColor="@color/section_title"/>
 
             <LinearLayout
-                android:orientation="horizontal"
+                android:orientation="vertical"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:gravity="center_horizontal"
-                android:layout_gravity="center_horizontal" >
+                android:background="@drawable/entry"
+                android:padding="7dp"
+                android:layout_margin="8dp">
 
-                <ImageView
-                    android:layout_width="wrap_content"
+                <TextView
+                    android:layout_width="fill_parent"
                     android:layout_height="wrap_content"
-                    android:id="@+id/iv_activity_future_1"
-                    android:contentDescription="@string/app_cdesc"
-                    android:layout_gravity="center_horizontal"
-                    android:maxHeight="50dp"
-                    android:visibility="gone"/>
+                    android:id="@+id/tv_activity_future_date"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/entry_title"
+                    android:textStyle="bold" />
 
-                <ImageView
+                <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:id="@+id/iv_activity_future_2"
-                    android:contentDescription="@string/app_cdesc"
-                    android:visibility="gone"
-                    android:maxHeight="50dp" />
+                    android:id="@+id/tv_activity_future_city"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/entry_title"
+                    android:textStyle="bold"/>
 
                 <ImageView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:id="@+id/iv_activity_future_3"
-                    android:contentDescription="@string/app_cdesc"
+                    android:id="@+id/iv_activity_future_0"
+                    android:layout_gravity="center_horizontal"
+                    android:contentDescription="@string/empty"
                     android:visibility="gone"
-                    android:maxHeight="50dp" />
+                    android:maxHeight="90dp"/>
 
-                <ImageView
-                    android:layout_width="wrap_content"
+                <LinearLayout
+                    android:orientation="horizontal"
+                    android:gravity="center_horizontal"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:id="@+id/iv_activity_future_4"
-                    android:contentDescription="@string/app_cdesc"
-                    android:visibility="gone"
-                    android:maxHeight="50dp" />
-            </LinearLayout>
-
-            <TableLayout
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                android:layout_margin="15dp"
-                android:layout_gravity="center_horizontal"
-                android:background="@color/album_border"
-                >
-
-                <TableRow
-                    android:layout_width="wrap_content"
-                    android:layout_height="match_parent">
+                    android:layout_marginBottom="10dp">
 
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:textAppearance="@android:style/TextAppearance.Medium"
-                        android:text="@string/activity_city"
-                        android:gravity="end"
-                        android:background="#ffffff"
+                        android:textAppearance="@android:style/TextAppearance.Small"
+                        android:text="@string/activity_price"
                         android:layout_margin="1dp"
-                        android:padding="4dp"/>
+                        android:padding="4dp"
+                        android:visibility="gone"/>
 
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:textAppearance="@android:style/TextAppearance.Medium"
-                        android:id="@+id/tv_activity_future_city"
-                        android:layout_margin="1dp"
-                        android:background="#ffffff"
+                        android:textAppearance="@android:style/TextAppearance.Small"
+                        android:id="@+id/tv_activity_future_price"
                         android:padding="4dp"/>
-                </TableRow>
+                </LinearLayout>
+
+                <WebView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:id="@+id/wv_activity_future_text" />
 
-                <TableRow
+                <LinearLayout
+                    android:orientation="horizontal"
                     android:layout_width="match_parent"
-                    android:layout_height="match_parent">
+                    android:layout_height="match_parent"
+                    android:gravity="center_horizontal"
+                    android:layout_gravity="center_horizontal" >
 
-                    <TextView
+                    <ImageView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:textAppearance="@android:style/TextAppearance.Medium"
-                        android:text="@string/activity_price"
-                        android:layout_margin="1dp"
-                        android:gravity="end"
-                        android:background="#ffffff"
-                        android:padding="4dp"/>
+                        android:id="@+id/iv_activity_future_1"
+                        android:contentDescription="@string/app_cdesc"
+                        android:layout_gravity="center_horizontal"
+                        android:maxHeight="50dp"
+                        android:visibility="gone"/>
 
-                    <TextView
+                    <ImageView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:textAppearance="@android:style/TextAppearance.Medium"
-                        android:id="@+id/tv_activity_future_price"
-                        android:layout_margin="1dp"
-                        android:background="#ffffff"
-                        android:padding="4dp"/>
-                </TableRow>
-            </TableLayout>
+                        android:id="@+id/iv_activity_future_2"
+                        android:contentDescription="@string/app_cdesc"
+                        android:visibility="gone"
+                        android:maxHeight="50dp" />
 
-        </LinearLayout>
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:id="@+id/iv_activity_future_3"
+                        android:contentDescription="@string/app_cdesc"
+                        android:visibility="gone"
+                        android:maxHeight="50dp" />
 
-        <LinearLayout
-            android:orientation="vertical"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_marginTop="15dp"
-            android:id="@+id/ll_activity_future_schedule">
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:id="@+id/iv_activity_future_4"
+                        android:contentDescription="@string/app_cdesc"
+                        android:visibility="gone"
+                        android:maxHeight="50dp" />
+                </LinearLayout>
 
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:textAppearance="?android:attr/textAppearanceLarge"
-                android:text="@string/activity_schedule"
-                android:textStyle="bold"/>
+            </LinearLayout>
 
             <LinearLayout
                 android:orientation="vertical"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:id="@+id/ll_activity_future_schedule_list"
                 android:background="@drawable/entry"
-                android:padding="7dp"/>
+                android:padding="7dp"
+                android:layout_margin="8dp"
+                android:id="@+id/ll_activity_future_schedule">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/activity_schedule"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/entry_title"
+                    android:textStyle="bold"/>
+
+                <LinearLayout
+                    android:orientation="vertical"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:id="@+id/ll_activity_future_schedule_list"
+                    android:padding="7dp"/>
+            </LinearLayout>
+
         </LinearLayout>
 
     </LinearLayout>
+
 </com.ivalentin.margolariak.CustomScrollView>

+ 87 - 80
app/src/main/res/layout/fragment_layout_activity_past.xml

@@ -4,117 +4,124 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="fill_parent"
     android:layout_height="match_parent"
-    android:id="@+id/scrollView3"
-    android:background="@color/background_app"
-    android:padding="7dp"
-    tools:ignore="Overdraw">
+    android:background="@color/background_app">
 
     <LinearLayout
         android:orientation="vertical"
-        android:layout_width="fill_parent"
-        android:layout_height="match_parent"
-        android:background="@drawable/section"
-        android:layout_margin="7dp"
-        android:padding="7dp" >
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceLarge"
-            android:text="Large Text"
-            android:id="@+id/tv_activity_past_title"
-            android:textStyle="bold"/>
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="10dp">
 
         <LinearLayout
             android:orientation="vertical"
-            android:transitionGroup="true"
             android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:background="@drawable/entry"
-            android:padding="7dp">
+            android:layout_height="wrap_content"
+            android:background="@drawable/section"
+            android:layout_margin="10dp"
+            tools:ignore="UselessParent">
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:id="@+id/tv_activity_past_title"
+                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:textStyle="bold"
+                tools:layout_width="match_parent"
+                android:background="@drawable/section_title"
+                android:paddingBottom="4dp"
+                android:paddingEnd="10dp"
+                android:paddingLeft="20dp"
+                android:paddingRight="10dp"
+                android:paddingStart="20dp"
+                android:paddingTop="4dp"
+                android:textColor="@color/section_title"/>
 
             <LinearLayout
-                android:orientation="horizontal"
+                android:orientation="vertical"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:layout_marginBottom="7dp">
+                android:background="@drawable/entry"
+                android:padding="7dp"
+                android:layout_margin="8dp">
 
                 <TextView
-                    android:layout_width="wrap_content"
+                    android:layout_width="fill_parent"
                     android:layout_height="wrap_content"
+                    android:id="@+id/tv_activity_past_date"
                     android:textAppearance="?android:attr/textAppearanceMedium"
-                    android:id="@+id/tv_activity_past_city"
-                    android:layout_margin="5dp" />
+                    android:textColor="@color/entry_title"
+                    android:textStyle="bold"/>
 
                 <TextView
-                    android:layout_width="fill_parent"
+                    android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:id="@+id/tv_activity_past_city"
                     android:textAppearance="?android:attr/textAppearanceMedium"
-                    android:id="@+id/tv_activity_past_date"
-                    android:layout_margin="5dp"
-                    android:gravity="end" />
-
-            </LinearLayout>
-
-            <ImageView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:id="@+id/iv_activity_past_0"
-                android:contentDescription="@string/app_cdesc"
-                android:layout_gravity="center_horizontal"
-                android:visibility="gone"
-                android:maxHeight="70dp" />
-
-            <WebView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:id="@+id/wv_activity_past_text"
-                android:layout_marginTop="10dp"
-                android:layout_marginBottom="10dp" />
-
-            <LinearLayout
-                android:orientation="horizontal"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:gravity="center_horizontal"
-                android:layout_gravity="center_horizontal"
-                android:layout_marginBottom="15dp">
+                    android:textColor="@color/entry_title"
+                    android:textStyle="bold"/>
 
                 <ImageView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:id="@+id/iv_activity_past_1"
-                    android:contentDescription="@string/app_cdesc"
-                    android:visibility="gone"
+                    android:id="@+id/iv_activity_past_0"
                     android:layout_gravity="center_horizontal"
-                    android:maxHeight="50dp" />
-
-                <ImageView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:id="@+id/iv_activity_past_2"
-                    android:contentDescription="@string/app_cdesc"
+                    android:contentDescription="@string/empty"
                     android:visibility="gone"
-                    android:maxHeight="50dp" />
+                    android:maxHeight="90dp"/>
 
-                <ImageView
-                    android:layout_width="wrap_content"
+                <WebView
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:id="@+id/iv_activity_past_3"
-                    android:contentDescription="@string/app_cdesc"
-                    android:visibility="gone"
-                    android:maxHeight="50dp" />
+                    android:id="@+id/wv_activity_past_text"
+                    android:layout_marginTop="10dp"
+                    android:layout_marginBottom="10dp" />
+
+                <LinearLayout
+                    android:orientation="horizontal"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:gravity="center_horizontal"
+                    android:layout_gravity="center_horizontal"
+                    android:layout_marginBottom="15dp">
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:id="@+id/iv_activity_past_1"
+                        android:contentDescription="@string/app_cdesc"
+                        android:visibility="gone"
+                        android:layout_gravity="center_horizontal"
+                        android:maxHeight="50dp" />
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:id="@+id/iv_activity_past_2"
+                        android:contentDescription="@string/empty"
+                        android:visibility="gone"
+                        android:maxHeight="50dp" />
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:id="@+id/iv_activity_past_3"
+                        android:contentDescription="@string/app_cdesc"
+                        android:visibility="gone"
+                        android:maxHeight="50dp" />
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:id="@+id/iv_activity_past_4"
+                        android:contentDescription="@string/empty"
+                        android:visibility="gone"
+                        android:maxHeight="50dp" />
+                </LinearLayout>
 
-                <ImageView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:id="@+id/iv_activity_past_4"
-                    android:contentDescription="@string/app_cdesc"
-                    android:visibility="gone"
-                    android:maxHeight="50dp" />
             </LinearLayout>
 
         </LinearLayout>
 
     </LinearLayout>
+
 </com.ivalentin.margolariak.CustomScrollView>

+ 55 - 29
app/src/main/res/layout/fragment_layout_album.xml

@@ -5,47 +5,73 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
-    android:id="@+id/scrollView3"
-    android:background="@color/background_app"
-    android:padding="7dp"
-    tools:ignore="Overdraw">
+    >
 
     <LinearLayout
-        android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="@drawable/section"
-        android:paddingBottom="15dp"
-        android:paddingLeft="7dp"
-        android:paddingTop="7dp"
-        android:paddingRight="7dp">
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
 
         <TextView
-            android:layout_width="wrap_content"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceLarge"
             android:id="@+id/tv_album_title"
-            android:textStyle="bold"/>
-
-        <WebView
-            android:layout_width="fill_parent"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:text="Medium Text"
-            android:id="@+id/wv_album_description"
-            android:layout_margin="7dp"
-            android:background="@drawable/entry"
-            android:padding="7dp" />
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textStyle="bold"
+            tools:layout_width="match_parent"
+            android:background="@drawable/section_title"
+            android:paddingBottom="4dp"
+            android:paddingEnd="10dp"
+            android:paddingLeft="20dp"
+            android:paddingRight="10dp"
+            android:paddingStart="20dp"
+            android:paddingTop="4dp"
+            android:textColor="@color/section_title"
+            android:layout_marginBottom="-1.3dp"
+            android:layout_marginEnd="10dp"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:layout_marginStart="10dp"
+            android:layout_marginTop="10dp"/>
 
         <LinearLayout
             android:orientation="vertical"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:layout_marginLeft="7dp"
-            android:layout_marginTop="15dp"
-            android:layout_marginRight="7dp"
-            android:layout_marginBottom="7dp"
-            android:id="@+id/ll_album_list">
+            android:background="@drawable/section_large"
+            android:layout_marginBottom="10dp"
+            android:layout_marginEnd="10dp"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:layout_marginStart="10dp"
+            android:layout_marginTop="0dp">
+
+            <LinearLayout
+                android:orientation="vertical"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="@drawable/entry"
+                android:padding="7dp"
+                android:layout_margin="8dp">
+
+                <WebView
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:id="@+id/wv_album_description"/>
+
+            </LinearLayout>
+
+            <LinearLayout
+                android:orientation="vertical"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginLeft="7dp"
+                android:layout_marginTop="15dp"
+                android:layout_marginRight="7dp"
+                android:layout_marginBottom="7dp"
+                android:id="@+id/ll_album_list">
+            </LinearLayout>
+
         </LinearLayout>
 
     </LinearLayout>

+ 60 - 51
app/src/main/res/layout/fragment_layout_blog.xml

@@ -3,71 +3,80 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:id="@+id/scrollView3"
-    tools:ignore="Overdraw">
+    android:layout_height="wrap_content">
 
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="fill_parent"
-        android:layout_weight="1"
-        android:background="@drawable/section"
-        android:layout_margin="10dp">
-
-        <TextView
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:text="@string/section_title_blog"
-            android:textAppearance="?android:attr/textAppearanceLarge"
-            android:textStyle="bold"
-            tools:layout_width="match_parent"
-            android:background="@drawable/section_title"
-            android:paddingBottom="4dp"
-            android:paddingEnd="10dp"
-            android:paddingLeft="20dp"
-            android:paddingRight="10dp"
-            android:paddingStart="20dp"
-            android:paddingTop="4dp"
-            android:textColor="@color/section_title"/>
+        android:layout_marginBottom="10dp"
+        tools:ignore="UselessParent">
 
         <LinearLayout
             android:orientation="vertical"
             android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:id="@+id/ll_blog_list"/>
-
-        <LinearLayout
-            android:orientation="horizontal"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_gravity="center_horizontal"
-            android:gravity="center_horizontal">
+            android:layout_height="fill_parent"
+            android:background="@drawable/section"
+            android:layout_margin="10dp">
 
-            <Button
-                android:layout_width="wrap_content"
+            <TextView
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:text="@string/blog_pager_previous"
-                android:id="@+id/bt_blog_previous"
-                android:background="@drawable/button_selector"
+                android:text="@string/section_title_blog"
+                android:textAppearance="?android:attr/textAppearanceLarge"
                 android:textStyle="bold"
-                android:textColor="@color/input_button_color"
-                android:layout_gravity="center_horizontal"
-                android:visibility="gone"
-                android:layout_margin="5dp"
-                tools:ignore="ButtonStyle"/>
+                tools:layout_width="match_parent"
+                android:background="@drawable/section_title"
+                android:paddingBottom="4dp"
+                android:paddingEnd="10dp"
+                android:paddingLeft="20dp"
+                android:paddingRight="10dp"
+                android:paddingStart="20dp"
+                android:paddingTop="4dp"
+                android:textColor="@color/section_title"/>
 
-            <Button
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/blog_pager_next"
-                android:id="@+id/bt_blog_next"
-                android:background="@drawable/button_selector"
-                android:textStyle="bold"
-                android:textColor="@color/input_button_color"
+            <LinearLayout
+                android:orientation="vertical"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:id="@+id/ll_blog_list"/>
+
+            <LinearLayout
+                android:orientation="horizontal"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
                 android:layout_gravity="center_horizontal"
-                android:layout_margin="5dp"
-                tools:ignore="ButtonStyle"/>
+                android:gravity="center_horizontal">
+
+                <Button
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/blog_pager_previous"
+                    android:id="@+id/bt_blog_previous"
+                    android:background="@drawable/button_selector"
+                    android:textStyle="bold"
+                    android:textColor="@color/input_button_color"
+                    android:layout_gravity="center_horizontal"
+                    android:visibility="gone"
+                    android:layout_margin="5dp"
+                    tools:ignore="ButtonStyle"/>
+
+                <Button
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/blog_pager_next"
+                    android:id="@+id/bt_blog_next"
+                    android:background="@drawable/button_selector"
+                    android:textStyle="bold"
+                    android:textColor="@color/input_button_color"
+                    android:layout_gravity="center_horizontal"
+                    android:layout_margin="5dp"
+                    tools:ignore="ButtonStyle"/>
+
+            </LinearLayout>
+
         </LinearLayout>
+
     </LinearLayout>
+
 </com.ivalentin.margolariak.CustomScrollView>

+ 43 - 24
app/src/main/res/layout/fragment_layout_home.xml

@@ -85,64 +85,82 @@
 		</LinearLayout>
 
 		<LinearLayout
-			android:orientation="vertical"
+			android:id="@+id/ll_home_section_lablanca"
 			android:layout_width="match_parent"
 			android:layout_height="wrap_content"
-			android:background="@drawable/section"
-			android:id="@+id/ll_home_section_lablanca"
 			android:layout_margin="10dp"
+			android:background="@drawable/section"
+			android:orientation="vertical"
 			android:visibility="gone">
 
 			<TextView
 				android:layout_width="match_parent"
 				android:layout_height="wrap_content"
-				android:textAppearance="?android:attr/textAppearanceLarge"
-				android:text="@string/lablanca_title"
-				android:textStyle="bold"
-				android:textColor="@color/section_title"
+				android:background="@drawable/section_title"
 				android:paddingBottom="4dp"
 				android:paddingEnd="10dp"
 				android:paddingLeft="20dp"
 				android:paddingRight="10dp"
 				android:paddingStart="20dp"
 				android:paddingTop="4dp"
-				android:background="@drawable/section_title"/>
+				android:text="@string/lablanca_title"
+				android:textAppearance="?android:attr/textAppearanceLarge"
+				android:textColor="@color/section_title"
+				android:textStyle="bold"/>
 
 			<LinearLayout
-				android:orientation="horizontal"
 				android:layout_width="match_parent"
 				android:layout_height="match_parent"
+				android:layout_margin="8dp"
 				android:background="@drawable/entry"
-				android:padding="7dp"
-				android:layout_margin="8dp">
+				android:orientation="horizontal"
+				android:padding="7dp">
 
 				<ImageView
-					android:layout_width="wrap_content"
-					android:layout_height="wrap_content"
 					android:id="@+id/iv_home_section_lablanca_image"
-					android:contentDescription="@string/app_cdesc"
-					android:layout_weight=".4"
+					android:layout_width="match_parent"
+					android:layout_height="wrap_content"
 					android:layout_margin="3dp"
+					android:layout_weight=".7"
 					android:adjustViewBounds="true"
-					android:maxWidth="130dp"/>
+					android:contentDescription="@string/app_cdesc"
+					android:maxWidth="130dp"
+					android:minHeight="95dp"/>
 
 				<TextView
-					android:layout_width="wrap_content"
-					android:layout_height="wrap_content"
-					android:textAppearance="@android:style/TextAppearance.Medium"
 					android:id="@+id/tv_home_section_lablanca_text"
-					android:layout_weight=".6"
+					android:layout_width="match_parent"
+					android:layout_height="wrap_content"
+					android:layout_weight=".3"
+					android:maxLines="4"
 					android:padding="7dp"
-					android:maxLines="4"/>
+					android:textAppearance="@android:style/TextAppearance.Medium"/>
 
 				<ImageView
 					android:layout_width="match_parent"
-					android:layout_weight="1"
 					android:layout_height="40dp"
 					android:layout_marginTop="-40dp"
+					android:layout_weight="1"
 					android:background="@drawable/gradient_v_white"/>
 
 			</LinearLayout>
+
+			<Button
+				android:id="@+id/bt_home_gm"
+				android:layout_width="match_parent"
+				android:layout_height="wrap_content"
+				android:layout_marginBottom="20dp"
+				android:layout_marginEnd="50dp"
+				android:layout_marginLeft="50dp"
+				android:layout_marginRight="50dp"
+				android:layout_marginStart="50dp"
+				android:layout_marginTop="20dp"
+				android:layout_weight=".7"
+				android:background="@drawable/button_selector"
+				android:text="@string/lablanca_schedule_gm"
+				android:textColor="@color/input_button_color"
+				android:textStyle="bold"/>
+
 		</LinearLayout>
 
 		<LinearLayout
@@ -448,7 +466,7 @@
 				android:id="@+id/ll_home_section_gallery_content"
 				android:layout_width="match_parent"
 				android:layout_height="wrap_content"
-				android:layout_margin="8dp"
+				android:layout_margin="10dp"
 				android:orientation="vertical"
 				android:background="@drawable/entry"
 				android:padding="7dp">
@@ -606,7 +624,8 @@
 				android:id="@+id/ll_home_section_activities_past_content"
 				android:layout_width="match_parent"
 				android:layout_height="wrap_content"
-				android:orientation="vertical">
+				android:orientation="vertical"
+				android:layout_margin="8dp">
 
 			</LinearLayout>
 

+ 79 - 50
app/src/main/res/layout/fragment_layout_lablanca.xml

@@ -5,103 +5,120 @@
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:background="@color/background_app"
-    android:padding="7dp"
     tools:ignore="Overdraw">
 
     <LinearLayout
-        android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:paddingBottom="5dp">
+        android:layout_margin="10dp"
+        android:orientation="vertical"
+        >
 
         <LinearLayout
-            android:orientation="vertical"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:background="@drawable/section"
-            android:padding="7dp">
+            android:orientation="vertical">
 
             <TextView
-                android:layout_width="wrap_content"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:background="@drawable/section_title"
+                android:paddingBottom="4dp"
+                android:paddingEnd="10dp"
+                android:paddingLeft="20dp"
+                android:paddingRight="10dp"
+                android:paddingStart="20dp"
+                android:paddingTop="4dp"
                 android:text="@string/lablanca_title"
-                android:id="@+id/textView10"
-                android:textStyle="bold"/>
+                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:textColor="@color/section_title"
+                android:textStyle="bold"
+                tools:layout_width="match_parent"/>
 
             <LinearLayout
-                android:orientation="vertical"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
+                android:layout_margin="10dp"
                 android:background="@drawable/entry"
+                android:orientation="vertical"
                 android:padding="7dp">
 
                 <ImageView
+                    android:id="@+id/iv_lablanca_header"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:id="@+id/iv_lablanca_header"
-                    android:contentDescription="@string/app_cdesc"
+                    android:layout_gravity="center_horizontal"
                     android:layout_margin="3dp"
                     android:adjustViewBounds="true"
-                    android:layout_gravity="center_horizontal"
+                    android:contentDescription="@string/app_cdesc"
                     android:maxHeight="130dp"/>
 
                 <WebView
+                    android:id="@+id/wv_lablanca_header"
                     android:layout_width="fill_parent"
                     android:layout_height="wrap_content"
-                    android:textAppearance="?android:attr/textAppearanceMedium"
-                    android:id="@+id/wv_lablanca_header"
-                    android:padding="7dp"
                     android:layout_marginBottom="7dp"
+                    android:padding="7dp"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
                     />
             </LinearLayout>
 
         </LinearLayout>
 
         <LinearLayout
-            android:orientation="vertical"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
+            android:layout_marginTop="15dp"
             android:background="@drawable/section"
-            android:padding="7dp"
-            android:layout_marginTop="15dp">
+            android:orientation="vertical">
 
             <TextView
-                android:layout_width="wrap_content"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:background="@drawable/section_title"
+                android:paddingBottom="4dp"
+                android:paddingEnd="10dp"
+                android:paddingLeft="20dp"
+                android:paddingRight="10dp"
+                android:paddingStart="20dp"
+                android:paddingTop="4dp"
                 android:text="@string/lablanca_schedule"
-                android:textStyle="bold"/>
+                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:textColor="@color/section_title"
+                android:textStyle="bold"
+                tools:layout_width="match_parent"/>
 
             <LinearLayout
-                android:orientation="horizontal"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
+                android:layout_margin="10dp"
                 android:background="@drawable/entry"
+                android:orientation="horizontal"
                 android:padding="7dp">
 
                 <Button
+                    android:id="@+id/bt_lablanca_schedule_city"
                     android:layout_width="fill_parent"
                     android:layout_height="fill_parent"
-                    android:text="@string/lablanca_schedule_city"
-                    android:id="@+id/bt_lablanca_schedule_city"
+                    android:layout_margin="6dp"
+                    android:layout_weight=".5"
                     android:background="@drawable/button_selector"
+                    android:text="@string/lablanca_schedule_city"
                     android:textColor="@color/input_button_color"
                     android:textStyle="bold"
-                    android:layout_margin="6dp"
-                    android:layout_weight=".5"
                     tools:ignore="ButtonStyle"/>
 
                 <Button
+                    android:id="@+id/bt_lablanca_schedule_gm"
                     android:layout_width="fill_parent"
                     android:layout_height="fill_parent"
-                    android:text="@string/lablanca_schedule_gm"
-                    android:id="@+id/bt_lablanca_schedule_gm"
+                    android:layout_margin="6dp"
+                    android:layout_weight=".5"
                     android:background="@drawable/button_selector"
+                    android:text="@string/lablanca_schedule_gm"
                     android:textColor="@color/input_button_color"
                     android:textStyle="bold"
-                    android:layout_margin="6dp"
-                    android:layout_weight=".5"
                     tools:ignore="ButtonStyle"/>
             </LinearLayout>
 
@@ -109,63 +126,75 @@
 
 
         <LinearLayout
-            android:orientation="vertical"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:background="@drawable/section"
+            android:layout_marginBottom="20dp"
             android:layout_marginTop="12dp"
-            android:padding="7dp">
+            android:background="@drawable/section"
+            android:orientation="vertical">
 
             <TextView
-                android:layout_width="wrap_content"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:background="@drawable/section_title"
+                android:paddingBottom="4dp"
+                android:paddingEnd="10dp"
+                android:paddingLeft="20dp"
+                android:paddingRight="10dp"
+                android:paddingStart="20dp"
+                android:paddingTop="4dp"
                 android:text="@string/lablanca_prices"
-                android:textStyle="bold"/>
+                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:textColor="@color/section_title"
+                android:textStyle="bold"
+                tools:layout_width="match_parent"/>
 
             <LinearLayout
-                android:orientation="vertical"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
+                android:layout_margin="10dp"
                 android:background="@drawable/entry"
+                android:orientation="vertical"
                 android:padding="7dp">
 
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:textAppearance="?android:attr/textAppearanceLarge"
+                    android:layout_marginBottom="15dp"
                     android:text="@string/lablanca_prices_days"
-                    android:layout_marginBottom="15dp"/>
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/entry_title"
+                    android:textStyle="bold"/>
 
                 <LinearLayout
-                    android:orientation="vertical"
+                    android:id="@+id/ll_lablanca_prices_days_list"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"
-                    android:id="@+id/ll_lablanca_prices_days_list">
+                    android:orientation="vertical">
                 </LinearLayout>
             </LinearLayout>
 
             <LinearLayout
-                android:orientation="vertical"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
+                android:layout_margin="10dp"
                 android:background="@drawable/entry"
-                android:padding="7dp"
-                android:layout_marginTop="10dp"
-                android:layout_marginBottom="10dp">
+                android:orientation="vertical"
+                android:padding="7dp">
 
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:textAppearance="?android:attr/textAppearanceLarge"
                     android:text="@string/lablanca_prices_pack"
-                    android:layout_marginBottom="15dp"/>
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/entry_title"
+                    android:textStyle="bold"/>
 
                 <LinearLayout
-                    android:orientation="vertical"
+                    android:id="@+id/ll_lablanca_prices_packs_list"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"
-                    android:id="@+id/ll_lablanca_prices_packs_list"
+                    android:orientation="vertical"
                     />
             </LinearLayout>
 

+ 425 - 27
app/src/main/res/layout/fragment_layout_lablanca_nofestivals.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <com.ivalentin.margolariak.CustomScrollView
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
@@ -8,38 +9,435 @@
     tools:ignore="Overdraw">
 
     <LinearLayout
-        android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="@drawable/section"
-        android:layout_margin="10dp">
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:padding="10dp">
 
-        <TextView
+        <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:text="@string/lablanca_title"
-            android:textAppearance="?android:attr/textAppearanceLarge"
-            android:textStyle="bold"
-            tools:layout_width="match_parent"
-            android:background="@drawable/section_title"
-            android:paddingBottom="4dp"
-            android:paddingEnd="10dp"
-            android:paddingLeft="20dp"
-            android:paddingRight="10dp"
-            android:paddingStart="20dp"
-            android:paddingTop="4dp"
-            android:textColor="@color/section_title"/>
-
-        <TextView
-            android:layout_width="fill_parent"
-            android:layout_height="wrap_content"
-            android:textAppearance="@android:style/TextAppearance.Medium"
-            android:text="@string/lablanca_nofestivals"
-            android:id="@+id/textView11"
-            android:background="@drawable/entry"
-            android:padding="7dp"
-            android:layout_margin="8dp"/>
+            android:background="@drawable/section"
+            android:orientation="vertical"
+            >
+
+            <TextView
+                android:id="@+id/textView4"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@drawable/section_title"
+                android:paddingBottom="4dp"
+                android:paddingEnd="10dp"
+                android:paddingLeft="20dp"
+                android:paddingRight="10dp"
+                android:paddingStart="20dp"
+                android:paddingTop="4dp"
+                android:text="@string/lablanca_title"
+                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:textColor="@color/section_title"
+                android:textStyle="bold"
+                tools:layout_width="match_parent"/>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_margin="8dp"
+                android:background="@drawable/entry"
+                android:orientation="vertical"
+                android:padding="7dp">
+
+                <TextView
+                    android:id="@+id/tv_lablanca_nofestivals"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginBottom="15dp"
+                    android:text="@string/lablanca_nofestivals"
+                    android:textAppearance="@android:style/TextAppearance.Medium"/>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginBottom="15dp"
+                    android:orientation="horizontal">
+
+                    <ImageView
+                        android:id="@+id/imageView4"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="10dp"
+                        android:layout_marginLeft="10dp"
+                        android:layout_marginRight="10dp"
+                        android:layout_marginStart="10dp"
+                        android:layout_marginTop="5dp"
+                        android:adjustViewBounds="false"
+                        android:baselineAlignBottom="true"
+                        android:minHeight="15dp"
+                        android:minWidth="15dp"
+                        android:src="@drawable/ul"
+                        app:srcCompat="@drawable/ul"/>
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:id="@+id/textView2"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:text="@string/lablanca_nofestivals_1_title"
+                            android:textColor="#001133"
+                            android:textSize="20sp"
+                            android:textStyle="bold"/>
+
+                        <TextView
+                            android:id="@+id/textView3"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginStart="10dp"
+                            android:text="@string/lablanca_nofestivals_1"
+                            android:textAppearance="@android:style/TextAppearance.Medium"/>
+                    </LinearLayout>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginBottom="15dp"
+                    android:orientation="horizontal">
+
+                    <ImageView
+                        android:id="@+id/imageView4"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="10dp"
+                        android:layout_marginLeft="10dp"
+                        android:layout_marginRight="10dp"
+                        android:layout_marginStart="10dp"
+                        android:layout_marginTop="5dp"
+                        android:adjustViewBounds="false"
+                        android:baselineAlignBottom="false"
+                        android:minHeight="15dp"
+                        android:minWidth="15dp"
+                        android:src="@drawable/ul"
+                        app:srcCompat="@drawable/ul"/>
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:id="@+id/textView2"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:text="@string/lablanca_nofestivals_2_title"
+                            android:textColor="#001133"
+                            android:textSize="20sp"
+                            android:textStyle="bold"/>
+
+                        <TextView
+                            android:id="@+id/textView3"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginStart="10dp"
+                            android:text="@string/lablanca_nofestivals_2"
+                            android:textAppearance="@android:style/TextAppearance.Medium"/>
+
+                    </LinearLayout>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginBottom="15dp"
+                    android:orientation="horizontal">
+
+                    <ImageView
+                        android:id="@+id/imageView4"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="10dp"
+                        android:layout_marginLeft="10dp"
+                        android:layout_marginRight="10dp"
+                        android:layout_marginStart="10dp"
+                        android:layout_marginTop="5dp"
+                        android:adjustViewBounds="false"
+                        android:baselineAlignBottom="false"
+                        android:minHeight="15dp"
+                        android:minWidth="15dp"
+                        android:src="@drawable/ul"
+                        app:srcCompat="@drawable/ul"/>
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:id="@+id/textView2"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:text="@string/lablanca_nofestivals_3_title"
+                            android:textColor="#001133"
+                            android:textSize="20sp"
+                            android:textStyle="bold"/>
+
+                        <TextView
+                            android:id="@+id/textView3"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginStart="10dp"
+                            android:text="@string/lablanca_nofestivals_3"
+                            android:textAppearance="@android:style/TextAppearance.Medium"/>
+                    </LinearLayout>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginBottom="15dp"
+                    android:orientation="horizontal">
+
+                    <ImageView
+                        android:id="@+id/imageView4"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="10dp"
+                        android:layout_marginLeft="10dp"
+                        android:layout_marginRight="10dp"
+                        android:layout_marginStart="10dp"
+                        android:layout_marginTop="5dp"
+                        android:adjustViewBounds="false"
+                        android:baselineAlignBottom="false"
+                        android:minHeight="15dp"
+                        android:minWidth="15dp"
+                        android:src="@drawable/ul"
+                        app:srcCompat="@drawable/ul"/>
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:id="@+id/textView2"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:text="@string/lablanca_nofestivals_4_title"
+                            android:textColor="#001133"
+                            android:textSize="20sp"
+                            android:textStyle="bold"/>
+
+                        <TextView
+                            android:id="@+id/textView3"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginStart="10dp"
+                            android:text="@string/lablanca_nofestivals_4"
+                            android:textAppearance="@android:style/TextAppearance.Medium"/>
+                    </LinearLayout>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginBottom="15dp"
+                    android:orientation="horizontal">
+
+                    <ImageView
+                        android:id="@+id/imageView4"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="10dp"
+                        android:layout_marginLeft="10dp"
+                        android:layout_marginRight="10dp"
+                        android:layout_marginStart="10dp"
+                        android:layout_marginTop="5dp"
+                        android:adjustViewBounds="false"
+                        android:baselineAlignBottom="false"
+                        android:minHeight="15dp"
+                        android:minWidth="15dp"
+                        android:src="@drawable/ul"
+                        app:srcCompat="@drawable/ul"/>
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:id="@+id/textView2"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:text="@string/lablanca_nofestivals_5_title"
+                            android:textColor="#001133"
+                            android:textSize="20sp"
+                            android:textStyle="bold"/>
+
+                        <TextView
+                            android:id="@+id/textView3"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginStart="10dp"
+                            android:text="@string/lablanca_nofestivals_5"
+                            android:textAppearance="@android:style/TextAppearance.Medium"/>
+                    </LinearLayout>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginBottom="15dp"
+                    android:orientation="horizontal">
+
+                    <ImageView
+                        android:id="@+id/imageView4"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="10dp"
+                        android:layout_marginLeft="10dp"
+                        android:layout_marginRight="10dp"
+                        android:layout_marginStart="10dp"
+                        android:layout_marginTop="5dp"
+                        android:adjustViewBounds="false"
+                        android:baselineAlignBottom="false"
+                        android:minHeight="15dp"
+                        android:minWidth="15dp"
+                        android:src="@drawable/ul"
+                        app:srcCompat="@drawable/ul"/>
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:id="@+id/textView2"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:text="@string/lablanca_nofestivals_6_title"
+                            android:textColor="#001133"
+                            android:textSize="20sp"
+                            android:textStyle="bold"/>
+
+                        <TextView
+                            android:id="@+id/textView3"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginStart="10dp"
+                            android:text="@string/lablanca_nofestivals_6"
+                            android:textAppearance="@android:style/TextAppearance.Medium"/>
+                    </LinearLayout>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginBottom="15dp"
+                    android:orientation="horizontal">
+
+                    <ImageView
+                        android:id="@+id/imageView4"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="10dp"
+                        android:layout_marginLeft="10dp"
+                        android:layout_marginRight="10dp"
+                        android:layout_marginStart="10dp"
+                        android:layout_marginTop="5dp"
+                        android:adjustViewBounds="false"
+                        android:baselineAlignBottom="false"
+                        android:minHeight="15dp"
+                        android:minWidth="15dp"
+                        android:src="@drawable/ul"
+                        app:srcCompat="@drawable/ul"/>
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:id="@+id/textView2"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:text="@string/lablanca_nofestivals_7_title"
+                            android:textColor="#001133"
+                            android:textSize="20sp"
+                            android:textStyle="bold"/>
+
+                        <TextView
+                            android:id="@+id/textView3"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginStart="10dp"
+                            android:text="@string/lablanca_nofestivals_7"
+                            android:textAppearance="@android:style/TextAppearance.Medium"/>
+                    </LinearLayout>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginBottom="15dp"
+                    android:orientation="horizontal">
+
+                    <ImageView
+                        android:id="@+id/imageView4"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="10dp"
+                        android:layout_marginLeft="10dp"
+                        android:layout_marginRight="10dp"
+                        android:layout_marginStart="10dp"
+                        android:layout_marginTop="5dp"
+                        android:adjustViewBounds="false"
+                        android:baselineAlignBottom="false"
+                        android:minHeight="15dp"
+                        android:minWidth="15dp"
+                        android:src="@drawable/ul"
+                        app:srcCompat="@drawable/ul"/>
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:id="@+id/textView2"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:text="@string/lablanca_nofestivals_8_title"
+                            android:textColor="#001133"
+                            android:textSize="20sp"
+                            android:textStyle="bold"/>
+
+                        <TextView
+                            android:id="@+id/textView3"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginStart="10dp"
+                            android:text="@string/lablanca_nofestivals_8"
+                            android:textAppearance="@android:style/TextAppearance.Medium"/>
+                    </LinearLayout>
+                </LinearLayout>
+
+            </LinearLayout>
+
+        </LinearLayout>
+
     </LinearLayout>
 
 
+
+
 </com.ivalentin.margolariak.CustomScrollView>

+ 17 - 17
app/src/main/res/layout/fragment_layout_location.xml

@@ -2,25 +2,21 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 			  xmlns:tools="http://schemas.android.com/tools"
 			  android:layout_width="fill_parent"
-			  android:orientation="vertical"
 			  android:layout_height="fill_parent"
 			  android:background="@color/background_app"
+			  android:orientation="vertical"
 			  tools:ignore="Overdraw">
 
 	<LinearLayout
-		android:orientation="vertical"
 		android:layout_width="match_parent"
 		android:layout_height="match_parent"
+		android:layout_margin="10dp"
 		android:background="@drawable/section"
-		android:layout_margin="10dp">
+		android:orientation="vertical">
 
 		<TextView
 			android:layout_width="match_parent"
 			android:layout_height="wrap_content"
-			android:text="@string/menu_location"
-			android:textAppearance="?android:attr/textAppearanceLarge"
-			android:textStyle="bold"
-			tools:layout_width="match_parent"
 			android:background="@drawable/section_title"
 			android:paddingBottom="4dp"
 			android:paddingEnd="10dp"
@@ -28,38 +24,42 @@
 			android:paddingRight="10dp"
 			android:paddingStart="20dp"
 			android:paddingTop="4dp"
-			android:textColor="@color/section_title"/>
+			android:text="@string/menu_location"
+			android:textAppearance="?android:attr/textAppearanceLarge"
+			android:textColor="@color/section_title"
+			android:textStyle="bold"
+			tools:layout_width="match_parent"/>
 
 		<LinearLayout
-			android:orientation="vertical"
 			android:layout_width="match_parent"
 			android:layout_height="match_parent"
+			android:layout_margin="8dp"
 			android:background="@drawable/entry"
-			android:padding="7dp"
-			android:layout_margin="8dp">
+			android:orientation="vertical"
+			android:padding="7dp">
 
 			<TextView
-                android:text="@string/home_section_location_text_0"
 				android:layout_width="wrap_content"
 				android:layout_height="wrap_content"
+				android:text="@string/home_section_location_text_0"
 				android:textAppearance="?android:attr/textAppearanceMedium"
 				android:textColor="@color/entry_title"
 				android:textStyle="bold"/>
 
 			<TextView
+				android:id="@+id/tv_location_distance"
 				android:layout_width="wrap_content"
 				android:layout_height="wrap_content"
-				android:textAppearance="?android:attr/textAppearanceSmall"
-				android:id="@+id/tv_location_distance"
+				android:layout_margin="10dp"
 				android:text="@string/home_section_location_text_calculating"
-				android:layout_margin="10dp"/>
+				android:textAppearance="?android:attr/textAppearanceSmall"/>
 
 			<com.google.android.gms.maps.MapView
 				android:id="@+id/mapview"
 				android:layout_width="fill_parent"
 				android:layout_height="fill_parent"
-				android:minHeight="150dp"
-				android:layout_margin="7dp"/>
+				android:layout_margin="7dp"
+				android:minHeight="150dp"/>
 		</LinearLayout>
 
 	</LinearLayout>

+ 169 - 146
app/src/main/res/layout/fragment_layout_photo.xml

@@ -2,198 +2,221 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:background="@color/background_app"
-    android:padding="7dp"
-    tools:ignore="Overdraw">
+    android:layout_height="wrap_content">
 
     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="@drawable/section"
-        android:paddingBottom="15dp"
-        android:paddingLeft="7dp"
-        android:paddingTop="7dp"
-        android:paddingRight="7dp">
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceLarge"
-            android:id="@+id/tv_photo_title"
-            android:textStyle="bold"/>
+        android:layout_height="fill_parent"
+        android:layout_marginBottom="10dp">
 
         <LinearLayout
             android:orientation="vertical"
             android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:background="@drawable/entry"
-            android:padding="7dp">
-
-            <ImageView
-                android:layout_width="fill_parent"
-                android:layout_height="wrap_content"
-                android:id="@+id/iv_photo"
-                android:contentDescription="@string/app_cdesc"
-                android:padding="2dp"
-                android:background="@color/album_border"
-                android:adjustViewBounds="true"
-                android:src="@drawable/photo_placeholder_preview"/>
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:text="Medium Text"
-                android:id="@+id/tv_photo_description"/>
+            android:layout_height="wrap_content"
+            android:background="@drawable/section"
+            android:layout_margin="10dp"
+            tools:ignore="UselessParent">
 
             <TextView
-                android:layout_width="wrap_content"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:textAppearance="?android:attr/textAppearanceSmall"
-                android:text="Small Text"
-                android:id="@+id/tv_photo_date"
-                android:layout_marginStart="15dp"
-                android:layout_marginBottom="15dp"
-                android:textStyle="italic"/>
+                android:id="@+id/tv_photo_title"
+                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:textStyle="bold"
+                tools:layout_width="match_parent"
+                android:background="@drawable/section_title"
+                android:paddingBottom="4dp"
+                android:paddingEnd="10dp"
+                android:paddingLeft="20dp"
+                android:paddingRight="10dp"
+                android:paddingStart="20dp"
+                android:paddingTop="4dp"
+                android:textColor="@color/section_title"/>
 
             <LinearLayout
-                android:orientation="horizontal"
+                android:orientation="vertical"
                 android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:layout_gravity="center_horizontal"
-                android:gravity="center_horizontal"
-                android:padding="7dp">
+                android:layout_height="wrap_content"
+                android:background="@drawable/entry"
+                android:padding="7dp"
+                android:layout_margin="8dp">
 
-                <Button
-                    android:layout_width="wrap_content"
+                <ImageView
+                    android:layout_width="fill_parent"
                     android:layout_height="wrap_content"
-                    android:text="@string/blog_pager_previous"
-                    android:id="@+id/bt_photo_previous"
-                    android:background="@drawable/button_selector"
-                    android:textStyle="bold"
-                    android:textColor="@color/input_button_color"
-                    android:layout_gravity="center_horizontal"
-                    android:visibility="visible"
-                    android:layout_margin="5dp"
-                    tools:ignore="ButtonStyle"/>
+                    android:id="@+id/iv_photo"
+                    android:contentDescription="@string/app_cdesc"
+                    android:padding="2dp"
+                    android:background="@color/album_border"
+                    android:adjustViewBounds="true"
+                    android:src="@drawable/photo_placeholder_preview"/>
 
-                <Button
+                <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="@string/blog_pager_next"
-                    android:id="@+id/bt_photo_next"
-                    android:background="@drawable/button_selector"
-                    android:textStyle="bold"
-                    android:textColor="@color/input_button_color"
-                    android:layout_gravity="center_horizontal"
-                    android:layout_margin="5dp"
-                    tools:ignore="ButtonStyle"/>
-            </LinearLayout>
-        </LinearLayout>
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:text="Medium Text"
+                    android:id="@+id/tv_photo_description"/>
 
-        <LinearLayout
-            android:orientation="vertical"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:background="@drawable/entry"
-            android:layout_marginTop="15dp"
-            android:padding="7dp">
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textAppearance="?android:attr/textAppearanceSmall"
+                    android:text="Small Text"
+                    android:id="@+id/tv_photo_date"
+                    android:layout_marginStart="15dp"
+                    android:layout_marginBottom="15dp"
+                    android:textStyle="italic"/>
 
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="New Text"
-                android:id="@+id/tv_comments"
-                android:textAppearance="@android:style/TextAppearance.Medium" />
+                <LinearLayout
+                    android:orientation="horizontal"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_gravity="center_horizontal"
+                    android:gravity="center_horizontal"
+                    android:padding="7dp">
 
-            <LinearLayout
-                android:orientation="vertical"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:id="@+id/ll_comment_list">
+                    <Button
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/blog_pager_previous"
+                        android:id="@+id/bt_photo_previous"
+                        android:background="@drawable/button_selector"
+                        android:textStyle="bold"
+                        android:textColor="@color/input_button_color"
+                        android:layout_gravity="center_horizontal"
+                        android:visibility="visible"
+                        android:layout_margin="5dp"
+                        tools:ignore="ButtonStyle"/>
 
+                    <Button
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/blog_pager_next"
+                        android:id="@+id/bt_photo_next"
+                        android:background="@drawable/button_selector"
+                        android:textStyle="bold"
+                        android:textColor="@color/input_button_color"
+                        android:layout_gravity="center_horizontal"
+                        android:layout_margin="5dp"
+                        tools:ignore="ButtonStyle"/>
+                </LinearLayout>
             </LinearLayout>
 
-            <LinearLayout
-                android:orientation="vertical"
-                android:layout_width="match_parent"
-                android:layout_height="2dp"
-                android:background="@color/background_separator"
-                android:layout_margin="6dp" />
-
             <LinearLayout
                 android:orientation="vertical"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:id="@+id/ll_new_comment"
-                android:layout_marginTop="15dp"
-                android:layout_marginLeft="7dp"
-                android:layout_marginRight="7dp"
-                android:layout_marginBottom="7dp">
+                android:background="@drawable/entry"
+                android:padding="7dp"
+                android:layout_margin="8dp">
 
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="@string/comment_your_comment"
-                    android:textAppearance="@android:style/TextAppearance.Medium" />
+                    android:id="@+id/tv_comments"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/entry_title"
+                    android:textStyle="bold" />
 
-                <EditText
-                    android:layout_width="fill_parent"
-                    android:layout_height="wrap_content"
-                    android:id="@+id/et_comment_text"
-                    android:minLines="2"
-                    android:hint="@string/comment_text"
-                    android:background="@drawable/input"
-                    android:textColor="@color/input_text_color"
-                    android:textColorHint="@color/input_hint_color"
-                    android:gravity="top"
-                    android:layout_margin="4dp"
-                    android:inputType="textCapSentences|textMultiLine"/>
-
-                <EditText
-                    android:layout_width="fill_parent"
-                    android:layout_height="wrap_content"
-                    android:id="@+id/et_comment_name"
-                    android:layout_marginLeft="20dp"
-                    android:layout_marginRight="20dp"
-                    android:hint="@string/comment_name"
-                    android:background="@drawable/input"
-                    android:textColor="@color/input_text_color"
-                    android:textColorHint="@color/input_hint_color"
-                    android:layout_marginTop="5dp"
-                    android:layout_marginBottom="5dp"
-                    android:inputType="textCapWords"/>
+                <LinearLayout
+                    android:orientation="vertical"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:id="@+id/ll_comment_list">
+
+                </LinearLayout>
+
+                <ImageView
+                    android:layout_width="match_parent"
+                    android:layout_height="0.5dp"
+                    android:background="@color/image_border"
+                    android:layout_margin="10dp"
+                    android:layout_marginBottom="1dp"
+                    android:layout_marginEnd="10dp"
+                    android:layout_marginLeft="10dp"
+                    android:layout_marginRight="10dp"
+                    android:layout_marginStart="10dp"
+                    android:layout_marginTop="3dp"
+                    android:alpha="0.5"
+                    android:adjustViewBounds="false"
+                    android:contentDescription="@string/empty"/>
 
                 <LinearLayout
-                    android:orientation="horizontal"
+                    android:orientation="vertical"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"
-                    android:gravity="center_horizontal"
-                    android:layout_marginBottom="10dp">
+                    android:id="@+id/ll_new_comment"
+                    android:layout_marginTop="15dp"
+                    android:layout_marginLeft="7dp"
+                    android:layout_marginRight="7dp"
+                    android:layout_marginBottom="7dp">
 
-                    <Button
+                    <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:text="@string/comment_send"
-                        android:id="@+id/bt_comment_send"
-                        android:layout_gravity="center_horizontal"
-                        android:background="@drawable/button_selector"
-                        android:textColor="@color/input_button_color"
-                        android:textStyle="bold"
-                        android:layout_marginTop="5dp"
-                        android:layout_marginBottom="5dp" />
+                        android:text="@string/comment_your_comment"
+                        android:textAppearance="@android:style/TextAppearance.Medium" />
 
-                    <ProgressBar
-                        android:layout_width="wrap_content"
+                    <EditText
+                        android:layout_width="fill_parent"
                         android:layout_height="wrap_content"
-                        android:id="@+id/pb_comment"
-                        android:layout_gravity="center_horizontal"
-                        android:visibility="gone" />
+                        android:id="@+id/et_comment_text"
+                        android:minLines="2"
+                        android:hint="@string/comment_text"
+                        android:background="@drawable/input"
+                        android:textColor="@color/input_text_color"
+                        android:textColorHint="@color/input_hint_color"
+                        android:gravity="top"
+                        android:layout_margin="4dp"
+                        android:inputType="textCapSentences|textMultiLine"/>
+
+                    <EditText
+                        android:layout_width="fill_parent"
+                        android:layout_height="wrap_content"
+                        android:id="@+id/et_comment_name"
+                        android:layout_marginLeft="20dp"
+                        android:layout_marginRight="20dp"
+                        android:hint="@string/comment_name"
+                        android:background="@drawable/input"
+                        android:textColor="@color/input_text_color"
+                        android:textColorHint="@color/input_hint_color"
+                        android:layout_marginTop="5dp"
+                        android:layout_marginBottom="5dp"
+                        android:inputType="textCapWords"/>
+
+                    <LinearLayout
+                        android:orientation="horizontal"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:gravity="center_horizontal"
+                        android:layout_marginBottom="10dp">
+
+                        <Button
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/comment_send"
+                            android:id="@+id/bt_comment_send"
+                            android:layout_gravity="center_horizontal"
+                            android:background="@drawable/button_selector"
+                            android:textColor="@color/input_button_color"
+                            android:textStyle="bold"
+                            android:layout_marginTop="5dp"
+                            android:layout_marginBottom="5dp" />
+
+                        <ProgressBar
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:id="@+id/pb_comment"
+                            android:layout_gravity="center_horizontal"
+                            android:visibility="gone" />
+                    </LinearLayout>
+
                 </LinearLayout>
 
             </LinearLayout>
+
         </LinearLayout>
 
     </LinearLayout>

+ 183 - 147
app/src/main/res/layout/fragment_layout_post.xml

@@ -2,207 +2,243 @@
 <com.ivalentin.margolariak.CustomScrollView
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:background="@color/background_app"
-    android:padding="7dp"
-    tools:ignore="Overdraw">
+    android:background="@color/background_app">
+
+
 
     <LinearLayout
         android:orientation="vertical"
-        android:layout_width="fill_parent"
-        android:layout_height="match_parent"
-        android:background="@drawable/section"
-        android:layout_margin="7dp"
-        android:padding="7dp">
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceLarge"
-            android:text="Large Text"
-            android:id="@+id/tv_post_title"
-            android:textStyle="bold"/>
+        android:layout_width="match_parent"
+        android:layout_height="fill_parent"
+        android:layout_marginBottom="10dp">
 
         <LinearLayout
             android:orientation="vertical"
             android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:background="@drawable/entry"
-            android:padding="7dp">
+            android:layout_height="wrap_content"
+            android:background="@drawable/section"
+            android:layout_margin="10dp"
+            tools:ignore="UselessParent">
 
-            <ImageView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:id="@+id/iv_post_0"
-                android:contentDescription="@string/app_cdesc"
-                android:layout_gravity="center_horizontal"
-                android:visibility="gone"
-                android:maxHeight="70dp" />
-
-            <WebView
-                android:layout_width="wrap_content"
+            <TextView
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:id="@+id/wv_post_text" />
+                android:id="@+id/tv_post_title"
+                android:textAppearance="?android:attr/textAppearanceLarge"
+                android:textStyle="bold"
+                tools:layout_width="match_parent"
+                android:background="@drawable/section_title"
+                android:paddingBottom="4dp"
+                android:paddingEnd="10dp"
+                android:paddingLeft="20dp"
+                android:paddingRight="10dp"
+                android:paddingStart="20dp"
+                android:paddingTop="4dp"
+                android:textColor="@color/section_title"/>
 
             <LinearLayout
-                android:orientation="horizontal"
+                android:orientation="vertical"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:gravity="center_horizontal"
-                android:layout_gravity="center_horizontal">
+                android:background="@drawable/entry"
+                android:padding="7dp"
+                android:layout_margin="8dp">
 
                 <ImageView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:id="@+id/iv_post_1"
+                    android:id="@+id/iv_post_0"
                     android:contentDescription="@string/app_cdesc"
-                    android:visibility="gone"
                     android:layout_gravity="center_horizontal"
-                    android:maxHeight="50dp" />
-
-                <ImageView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:id="@+id/iv_post_2"
-                    android:contentDescription="@string/app_cdesc"
                     android:visibility="gone"
-                    android:maxHeight="50dp" />
+                    android:maxHeight="90dp" />
 
-                <ImageView
+                <WebView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:id="@+id/iv_post_3"
-                    android:contentDescription="@string/app_cdesc"
-                    android:visibility="gone"
-                    android:maxHeight="50dp" />
+                    android:id="@+id/wv_post_text" />
 
-                <ImageView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:id="@+id/iv_post_4"
-                    android:contentDescription="@string/app_cdesc"
-                    android:visibility="gone"
-                    android:maxHeight="50dp" />
-            </LinearLayout>
+                <LinearLayout
+                    android:orientation="horizontal"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:gravity="center_horizontal"
+                    android:layout_gravity="center_horizontal">
 
-            <LinearLayout
-                android:orientation="vertical"
-                android:layout_width="match_parent"
-                android:layout_height="1dp"
-                android:background="@color/background_separator"
-                android:layout_margin="6dp"/>
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:id="@+id/iv_post_1"
+                        android:contentDescription="@string/app_cdesc"
+                        android:visibility="gone"
+                        android:layout_gravity="center_horizontal"
+                        android:maxHeight="50dp" />
 
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="New Text"
-                android:id="@+id/tv_post_date"
-                android:layout_gravity="end" />
-        </LinearLayout>
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:id="@+id/iv_post_2"
+                        android:contentDescription="@string/app_cdesc"
+                        android:visibility="gone"
+                        android:maxHeight="50dp" />
 
-        <LinearLayout
-            android:orientation="vertical"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:background="@drawable/entry"
-            android:layout_marginTop="15dp"
-            android:padding="7dp">
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:id="@+id/iv_post_3"
+                        android:contentDescription="@string/app_cdesc"
+                        android:visibility="gone"
+                        android:maxHeight="50dp" />
 
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="New Text"
-                android:id="@+id/tv_comments"
-                android:textAppearance="@android:style/TextAppearance.Medium" />
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:id="@+id/iv_post_4"
+                        android:contentDescription="@string/app_cdesc"
+                        android:visibility="gone"
+                        android:maxHeight="50dp" />
+                </LinearLayout>
 
-            <LinearLayout
-                android:orientation="vertical"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:id="@+id/ll_comment_list">
+                <ImageView
+                    android:layout_width="match_parent"
+                    android:layout_height="0.5dp"
+                    android:background="@color/image_border"
+                    android:layout_margin="10dp"
+                    android:layout_marginBottom="1dp"
+                    android:layout_marginEnd="10dp"
+                    android:layout_marginLeft="10dp"
+                    android:layout_marginRight="10dp"
+                    android:layout_marginStart="10dp"
+                    android:layout_marginTop="3dp"
+                    android:alpha="0.5"
+                    android:adjustViewBounds="false"
+                    android:contentDescription="@string/empty"/>
 
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:id="@+id/tv_post_date"
+                    android:layout_gravity="end" />
             </LinearLayout>
 
-            <LinearLayout
-                android:orientation="vertical"
-                android:layout_width="match_parent"
-                android:layout_height="2dp"
-                android:background="@color/background_separator"
-                android:layout_margin="6dp" />
-
             <LinearLayout
                 android:orientation="vertical"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:id="@+id/ll_new_comment"
-                android:layout_marginTop="15dp"
-                android:layout_marginLeft="7dp"
-                android:layout_marginRight="7dp"
-                android:layout_marginBottom="7dp">
+                android:background="@drawable/entry"
+                android:padding="7dp"
+                android:layout_margin="8dp">
 
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="@string/comment_your_comment"
-                    android:id="@+id/textView"
-                    android:textAppearance="@android:style/TextAppearance.Medium" />
+                    android:id="@+id/tv_comments"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/entry_title"
+                    android:textStyle="bold" />
 
-                <EditText
-                    android:layout_width="fill_parent"
-                    android:layout_height="wrap_content"
-                    android:id="@+id/et_comment_text"
-                    android:minLines="2"
-                    android:hint="@string/comment_text"
-                    android:background="@drawable/input"
-                    android:textColor="@color/input_text_color"
-                    android:textColorHint="@color/input_hint_color"
-                    android:gravity="top"
-                    android:layout_margin="4dp"
-                    android:inputType="textCapSentences|textMultiLine"/>
-
-                <EditText
-                    android:layout_width="fill_parent"
-                    android:layout_height="wrap_content"
-                    android:id="@+id/et_comment_name"
-                    android:layout_marginLeft="20dp"
-                    android:layout_marginRight="20dp"
-                    android:hint="@string/comment_name"
-                    android:background="@drawable/input"
-                    android:textColor="@color/input_text_color"
-                    android:textColorHint="@color/input_hint_color"
-                    android:layout_marginTop="5dp"
-                    android:layout_marginBottom="5dp"
-                    android:inputType="textCapSentences"/>
+                <LinearLayout
+                    android:orientation="vertical"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:id="@+id/ll_comment_list">
+
+                </LinearLayout>
+
+                <ImageView
+                    android:layout_width="match_parent"
+                    android:layout_height="0.5dp"
+                    android:background="@color/image_border"
+                    android:layout_margin="10dp"
+                    android:layout_marginBottom="1dp"
+                    android:layout_marginEnd="10dp"
+                    android:layout_marginLeft="10dp"
+                    android:layout_marginRight="10dp"
+                    android:layout_marginStart="10dp"
+                    android:layout_marginTop="3dp"
+                    android:alpha="0.5"
+                    android:adjustViewBounds="false"
+                    android:contentDescription="@string/empty"/>
 
                 <LinearLayout
-                    android:orientation="horizontal"
+                    android:orientation="vertical"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"
-                    android:gravity="center_horizontal"
-                    android:layout_marginBottom="10dp">
+                    android:id="@+id/ll_new_comment"
+                    android:layout_marginTop="15dp"
+                    android:layout_marginLeft="7dp"
+                    android:layout_marginRight="7dp"
+                    android:layout_marginBottom="7dp">
 
-                    <Button
+                    <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:text="@string/comment_send"
-                        android:id="@+id/bt_comment_send"
-                        android:layout_gravity="center_horizontal"
-                        android:background="@drawable/button_selector"
-                        android:textColor="@color/input_button_color"
-                        android:textStyle="bold"
-                        android:layout_marginTop="5dp"
-                        android:layout_marginBottom="5dp" />
+                        android:text="@string/comment_your_comment"
+                        android:id="@+id/textView"
+                        android:textAppearance="@android:style/TextAppearance.Medium" />
 
-                    <ProgressBar
-                        android:layout_width="wrap_content"
+                    <EditText
+                        android:layout_width="fill_parent"
                         android:layout_height="wrap_content"
-                        android:id="@+id/pb_comment"
-                        android:layout_gravity="center_horizontal"
-                        android:visibility="gone" />
+                        android:id="@+id/et_comment_text"
+                        android:minLines="2"
+                        android:hint="@string/comment_text"
+                        android:background="@drawable/input"
+                        android:textColor="@color/input_text_color"
+                        android:textColorHint="@color/input_hint_color"
+                        android:gravity="top"
+                        android:layout_margin="4dp"
+                        android:inputType="textCapSentences|textMultiLine"/>
+
+                    <EditText
+                        android:layout_width="fill_parent"
+                        android:layout_height="wrap_content"
+                        android:id="@+id/et_comment_name"
+                        android:layout_marginLeft="20dp"
+                        android:layout_marginRight="20dp"
+                        android:hint="@string/comment_name"
+                        android:background="@drawable/input"
+                        android:textColor="@color/input_text_color"
+                        android:textColorHint="@color/input_hint_color"
+                        android:layout_marginTop="5dp"
+                        android:layout_marginBottom="5dp"
+                        android:inputType="textCapSentences"/>
+
+                    <LinearLayout
+                        android:orientation="horizontal"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:gravity="center_horizontal"
+                        android:layout_marginBottom="10dp">
+
+                        <Button
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/comment_send"
+                            android:id="@+id/bt_comment_send"
+                            android:layout_gravity="center_horizontal"
+                            android:background="@drawable/button_selector"
+                            android:textColor="@color/input_button_color"
+                            android:textStyle="bold"
+                            android:layout_marginTop="5dp"
+                            android:layout_marginBottom="5dp" />
+
+                        <ProgressBar
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:id="@+id/pb_comment"
+                            android:layout_gravity="center_horizontal"
+                            android:visibility="gone" />
+                    </LinearLayout>
+
                 </LinearLayout>
 
             </LinearLayout>
+
         </LinearLayout>
+
     </LinearLayout>
+
 </com.ivalentin.margolariak.CustomScrollView>

+ 97 - 63
app/src/main/res/layout/fragment_layout_schedule.xml

@@ -16,98 +16,132 @@
         android:background="@drawable/section"
         android:layout_margin="7dp">
 
-        <LinearLayout
-            android:id="@+id/ll_schedule_date"
-            android:layout_width="fill_parent"
+        <TextView
+            android:id="@+id/tv_schedule_type"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:padding="8dp" >
+            android:background="@drawable/section_title"
+            android:paddingBottom="4dp"
+            android:paddingEnd="10dp"
+            android:paddingLeft="20dp"
+            android:paddingRight="10dp"
+            android:paddingStart="20dp"
+            android:paddingTop="4dp"
+            android:text="@string/lablanca_schedule_gm"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textColor="@color/section_title"
+            android:textStyle="bold"
+            tools:layout_width="match_parent"/>
 
-            <Button
-                android:id="@+id/bt_schedule_l"
-                android:layout_width="fill_parent"
-                android:layout_height="fill_parent"
-                android:layout_weight=".8"
-                android:background="@drawable/button_selector"
-                android:text="@string/arrow_left"
-                android:textColor="@color/input_button_color"
-                android:textStyle="bold"/>
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_margin="7dp"
+            android:background="@drawable/entry"
+            android:orientation="vertical"
+            android:padding="7dp">
 
             <LinearLayout
-                android:layout_width="fill_parent"
-                android:layout_height="wrap_content"
-                android:layout_weight=".3"
-                android:gravity="center"
-                android:orientation="horizontal" >
-
-                <TextView
-                    android:id="@+id/tv_schedule_day_number"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:textAppearance="?android:attr/textAppearanceLarge"
-                    android:textSize="40sp" />
+                android:id="@+id/ll_schedule_date"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent">
+
+                <Button
+                    android:id="@+id/bt_schedule_l"
+                    android:layout_width="fill_parent"
+                    android:layout_height="fill_parent"
+                    android:layout_weight=".8"
+                    android:background="@drawable/button_selector"
+                    android:text="@string/arrow_left"
+                    android:textColor="@color/input_button_color"
+                    android:textStyle="bold"/>
 
                 <LinearLayout
-                    android:layout_width="wrap_content"
+                    android:layout_width="fill_parent"
                     android:layout_height="wrap_content"
-                    android:orientation="vertical" >
+                    android:layout_weight=".3"
+                    android:gravity="center"
+                    android:orientation="horizontal">
 
                     <TextView
-                        android:id="@+id/tv_schedule_day_title"
+                        android:id="@+id/tv_schedule_day_number"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:paddingEnd="0dp"
-                        android:paddingLeft="13dp"
-                        android:paddingRight="0dp"
-                        android:paddingStart="13dp"
-                        android:textSize="20sp"
-                        android:textStyle="italic" />
+                        android:textAppearance="?android:attr/textAppearanceLarge"
+                        android:textSize="40sp"/>
 
-                    <TextView
-                        android:id="@+id/tv_schedule_day_month"
+                    <LinearLayout
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:textAppearance="?android:attr/textAppearanceSmall" />
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:id="@+id/tv_schedule_day_title"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:paddingEnd="0dp"
+                            android:paddingLeft="13dp"
+                            android:paddingRight="0dp"
+                            android:paddingStart="13dp"
+                            android:textSize="20sp"
+                            android:textStyle="italic"/>
+
+                        <TextView
+                            android:id="@+id/tv_schedule_day_month"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:textAppearance="?android:attr/textAppearanceSmall"/>
+                    </LinearLayout>
                 </LinearLayout>
+
+                <Button
+                    android:id="@+id/bt_schedule_r"
+                    android:layout_width="fill_parent"
+                    android:layout_height="fill_parent"
+                    android:layout_gravity="end"
+                    android:layout_weight=".8"
+                    android:background="@drawable/button_selector"
+                    android:text="@string/arrow_right"
+                    android:textColor="@color/input_button_color"
+                    android:textStyle="bold"/>
             </LinearLayout>
 
-            <Button
-                android:id="@+id/bt_schedule_r"
+            <EditText
+                android:id="@+id/et_schedule_filter"
                 android:layout_width="fill_parent"
-                android:layout_height="fill_parent"
-                android:layout_gravity="end"
-                android:layout_weight=".8"
-                android:background="@drawable/button_selector"
-                android:text="@string/arrow_right"
-                android:textStyle="bold"
-                android:textColor="@color/input_button_color"/>
-        </LinearLayout>
-
-        <EditText
-            android:id="@+id/et_schedule_filter"
-            android:layout_width="fill_parent"
-            android:layout_height="wrap_content"
-            android:ems="10"
-            android:hint="@string/schedule_filter"
-            android:background="@drawable/input"
-            android:textColor="@color/input_text_color"
-            android:textColorHint="@color/input_hint_color">
+                android:layout_height="wrap_content"
+                android:layout_marginEnd="10dp"
+                android:layout_marginLeft="10dp"
+                android:layout_marginRight="10dp"
+                android:layout_marginStart="10dp"
+                android:layout_marginTop="15dp"
+                android:layout_weight="1"
+                android:background="@drawable/input"
+                android:ems="10"
+                android:hint="@string/schedule_filter"
+                android:textColor="@color/input_text_color"
+                android:textColorHint="@color/input_hint_color">
+
+                <requestFocus/>
+            </EditText>
 
-            <requestFocus />
-        </EditText>
+        </LinearLayout>
 
         <com.ivalentin.margolariak.CustomScrollView
             android:id="@+id/sv_schedule"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:layout_margin="7dp"
+            android:background="@drawable/entry"
             android:orientation="vertical"
-            android:padding="7dp">
+            android:padding="2dp">
 
             <LinearLayout
-                android:orientation="vertical"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:background="@drawable/entry"
-                android:padding="7dp">
+                android:layout_margin="0dp"
+                android:orientation="vertical"
+                >
 
                 <LinearLayout
                     android:id="@+id/ll_schedule_list"

+ 6 - 3
app/src/main/res/layout/row_activity_schedule.xml

@@ -9,10 +9,11 @@
     <TextView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:textAppearance="@android:style/TextAppearance.Medium"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textColor="@color/entry_title"
+        android:textStyle="bold"
         android:id="@+id/tv_row_activity_itinerary_time"
         android:layout_weight=".8"
-        android:textStyle="bold"
         android:gravity="end" />
 
     <TextView
@@ -56,7 +57,9 @@
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textAppearance="@android:style/TextAppearance.Large"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textColor="@color/entry_title"
+            android:textStyle="bold"
             android:id="@+id/tv_row_activity_itinerary_title" />
 
         <TextView

+ 25 - 14
app/src/main/res/layout/row_album.xml

@@ -13,15 +13,19 @@
         android:layout_height="wrap_content"
         android:layout_weight=".5"
         android:background="@drawable/entry"
-        android:layout_margin="5dp"
-        android:padding="5dp"
-        android:id="@+id/ll_row_album_left">
+        android:padding="7dp"
+        android:id="@+id/ll_row_album_left"
+        android:layout_marginBottom="8dp"
+        android:layout_marginEnd="8dp"
+        android:layout_marginLeft="0dp"
+        android:layout_marginRight="8dp"
+        android:layout_marginStart="0dp"
+        android:layout_marginTop="8dp">
 
         <TextView
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:textAppearance="?android:attr/textAppearanceMedium"
-            android:text="Medium Text"
             android:id="@+id/tv_row_album_hidden_left"
             android:visibility="gone" />
 
@@ -40,6 +44,8 @@
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textColor="@color/entry_title"
+            android:textStyle="bold"
             android:id="@+id/tv_row_album_title_left"
             android:gravity="center_horizontal" />
 
@@ -59,10 +65,10 @@
                 android:layout_gravity="center_vertical" />
 
             <ImageView
-                android:layout_width="15dp"
-                android:layout_height="15dp"
+                android:layout_width="11dp"
+                android:layout_height="11dp"
                 android:src="@drawable/comment"
-                android:contentDescription="@string/app_cdesc"
+                android:contentDescription="@string/empty"
                 android:layout_marginStart="5dp"
                 android:layout_gravity="center_vertical" />
         </LinearLayout>
@@ -75,16 +81,20 @@
         android:layout_height="wrap_content"
         android:layout_weight=".5"
         android:background="@drawable/entry"
-        android:layout_margin="5dp"
-        android:padding="5dp"
+        android:padding="7dp"
         android:id="@+id/ll_row_album_right"
+        android:layout_marginBottom="8dp"
+        android:layout_marginEnd="8dp"
+        android:layout_marginLeft="0dp"
+        android:layout_marginRight="8dp"
+        android:layout_marginStart="0dp"
+        android:layout_marginTop="8dp"
         android:visibility="invisible">
 
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:textAppearance="?android:attr/textAppearanceMedium"
-            android:text="Medium Text"
             android:id="@+id/tv_row_album_hidden_right"
             android:visibility="gone" />
 
@@ -103,7 +113,8 @@
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:textAppearance="?android:attr/textAppearanceMedium"
-            android:text="Medium Text"
+            android:textColor="@color/entry_title"
+            android:textStyle="bold"
             android:id="@+id/tv_row_album_title_right"
             android:gravity="center_horizontal" />
 
@@ -124,10 +135,10 @@
                 android:layout_gravity="center_vertical" />
 
             <ImageView
-                android:layout_width="15dp"
-                android:layout_height="15dp"
+                android:layout_width="11dp"
+                android:layout_height="11dp"
                 android:src="@drawable/comment"
-                android:contentDescription="@string/app_cdesc"
+                android:contentDescription="@string/empty"
                 android:layout_marginStart="5dp"
                 android:layout_gravity="center_vertical" />
         </LinearLayout>

+ 6 - 3
app/src/main/res/layout/row_blog.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:orientation="vertical"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
@@ -19,7 +20,6 @@
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:text="New Text"
         android:id="@+id/tv_row_blog_hidden"
         android:visibility="gone" />
 
@@ -64,7 +64,9 @@
                 android:layout_height="40dp"
                 android:layout_marginTop="-40dp"
                 android:background="@drawable/gradient_v_white"
-                android:adjustViewBounds="true"/>
+                android:adjustViewBounds="true"
+                android:contentDescription="@string/empty"
+                tools:ignore="InefficientWeight"/>
 
         </LinearLayout>
 
@@ -82,7 +84,8 @@
         android:layout_marginStart="10dp"
         android:layout_marginTop="3dp"
         android:alpha="0.5"
-        android:adjustViewBounds="false"/>
+        android:adjustViewBounds="false"
+        android:contentDescription="@string/empty"/>
 
     <LinearLayout
         android:orientation="horizontal"

+ 13 - 6
app/src/main/res/layout/row_festival_price_day.xml

@@ -18,26 +18,33 @@
             android:layout_height="wrap_content">
 
             <TextView
+                android:id="@+id/tv_row_festival_price_day_date"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:textAppearance="@android:style/TextAppearance.Small"
-                android:id="@+id/tv_row_festival_price_day_date"/>
+                android:textAppearance="@android:style/TextAppearance.Large"
+                android:textStyle="bold"/>
 
             <TextView
+                android:id="@+id/tv_row_festival_price_day_name"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:layout_marginLeft="5dp"
+                android:layout_marginStart="5dp"
                 android:textAppearance="@android:style/TextAppearance.Medium"
-                android:id="@+id/tv_row_festival_price_day_name"/>
+                android:textStyle="italic"/>
 
         </LinearLayout>
 
         <TextView
+            android:id="@+id/tv_row_festival_price_day_price"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:textAppearance="@android:style/TextAppearance.Medium"
-            android:id="@+id/tv_row_festival_price_day_price"
+            android:layout_gravity="bottom"
             android:gravity="end"
-            android:layout_gravity="bottom"/>
+            android:textAppearance="@android:style/TextAppearance.Large"
+            android:textColor="@color/background_menu"
+            android:textSize="24sp"
+            android:textStyle="bold"/>
     </LinearLayout>
 
     <LinearLayout

+ 15 - 9
app/src/main/res/layout/row_festival_price_pack.xml

@@ -19,29 +19,35 @@
             android:layout_weight=".3">
 
             <TextView
+                android:id="@+id/tv_row_festival_price_pack_name"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:textAppearance="@android:style/TextAppearance.Medium"
-                android:id="@+id/tv_row_festival_price_pack_name"/>
+                android:textAppearance="@android:style/TextAppearance.Large"
+                android:textStyle="bold"/>
 
             <TextView
+                android:id="@+id/tv_row_festival_price_pack_text"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:textAppearance="@android:style/TextAppearance.Small"
-                android:id="@+id/tv_row_festival_price_pack_text"
-                android:layout_marginStart="10dp"/>
+                android:layout_marginLeft="5dp"
+                android:layout_marginStart="5dp"
+                android:textAppearance="@android:style/TextAppearance.Medium"
+                android:textStyle="italic"/>
 
         </LinearLayout>
 
         <TextView
+            android:id="@+id/tv_row_festival_price_pack_price"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:textAppearance="@android:style/TextAppearance.Medium"
-            android:id="@+id/tv_row_festival_price_pack_price"
-            android:gravity="end"
             android:layout_gravity="bottom"
+            android:layout_weight=".7"
+            android:gravity="end"
             android:minWidth="70dp"
-            android:layout_weight=".7"/>
+            android:textAppearance="@android:style/TextAppearance.Large"
+            android:textColor="@color/background_menu"
+            android:textSize="24sp"
+            android:textStyle="bold"/>
     </LinearLayout>
 
     <LinearLayout

+ 6 - 2
app/src/main/res/layout/row_schedule.xml

@@ -49,7 +49,9 @@
             android:layout_alignParentTop="true"
             android:layout_toLeftOf="@id/schedule_timeline"
             android:layout_toStartOf="@id/schedule_timeline"
-            android:textAppearance="@android:style/TextAppearance.Medium"/>
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textColor="@color/entry_title"
+            android:textStyle="bold"/>
 
     </RelativeLayout>
 
@@ -65,7 +67,9 @@
             android:id="@+id/tv_row_schedule_title"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textAppearance="@android:style/TextAppearance.Large" />
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textColor="@color/entry_title"
+            android:textStyle="bold" />
 
         <TextView
             android:id="@+id/tv_row_schedule_description"

+ 75 - 0
app/src/main/res/layout/row_sponsor.xml

@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/entry"
+    android:padding="7dp"
+    android:layout_margin="8dp">
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textColor="@color/entry_title"
+        android:textStyle="bold"
+        android:id="@+id/tv_row_sponsor_name" />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@+id/tv_row_sponsor_id"
+        android:visibility="gone" />
+
+    <LinearLayout
+        android:orientation="horizontal"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/iv_row_sponsor_image"
+            android:maxWidth="110dp"
+            android:contentDescription="@string/app_cdesc"
+            android:minHeight="30dp"
+            android:minWidth="30dp"
+            android:layout_gravity="top|center_vertical"
+            android:background="@color/image_border"
+            android:padding="0.5dp"
+            android:layout_margin="3dp"
+            android:adjustViewBounds="true"
+            android:maxHeight="100dp"/>
+
+        <LinearLayout
+            android:orientation="vertical"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="top">
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:id="@+id/tv_row_sponsor_text"
+                android:textAppearance="@android:style/TextAppearance.Medium"
+                android:layout_margin="5dp"
+                android:maxLines="4"
+                android:minHeight="30dp"/>
+
+            <ImageView
+                android:layout_width="match_parent"
+                android:layout_weight="1"
+                android:layout_height="40dp"
+                android:layout_marginTop="-40dp"
+                android:background="@drawable/gradient_v_white"
+                android:adjustViewBounds="true"
+                android:contentDescription="@string/empty"
+                tools:ignore="InefficientWeight"/>
+
+        </LinearLayout>
+
+    </LinearLayout>
+
+</LinearLayout>

+ 3 - 0
app/src/main/res/menu/menu.xml

@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:id="@+id/pop_menu_share"
+        android:title="@string/pop_menu_share" />
     <item
         android:id="@+id/pop_menu_about"
         android:title="@string/pop_menu_about" />

+ 49 - 3
app/src/main/res/values-en/strings.xml

@@ -65,7 +65,7 @@
 	<string name="settings_about">About us</string>
 	<string name="settings_transparency">Transparency</string>
 	<string name="settings_license_content">Copyright 2016 Iñigo Valentin&lt;br/>&lt;br/>This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation.&lt;br/>&lt;br/>This program 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 at http://www.gnu.org/licenses/.&lt;br/>&lt;br/>The name "Gasteizko Margolariak" and its logotype are property of Gasteizko Margolariak.&lt;br/>&lt;br/>&lt;br/>&lt;div style="background-color:#bbbbbb;padding:6px;border-radius:5px;border-style:solid;border-width:2px;border-color:#333333;text-align:center;">You can get the source code for this project at &lt;a href="https://github.com/Seavenois/GM">Github&lt;/a>&lt;/div></string>
-	<string name="settings_privacy_content"><![CDATA[In Gasteizko Margolariak we respect your privacy. We don\'t collect ANY data from our users, including personal information, location, shopping habits, sexual preferences, favourite colour, first love\'s name… ANY.<br/><br/>In order of making you believe us, we\'ll explain what we DO store:<br/><br/><ul><li>A randomly generated user code, unique to your device. This is necessary to sync content with aur database, so you can get info about our post, activities... But it\'s done in a way that won\'t allow un to identify you as a person with that number.</li><li>When commenting on a photo ar an entry, we store your current IP address. This is incredibly useful for us to know how many actual people are posting comments, and it also makes imposible for us to identify you as a person.</li></ul>]]></string>
+	<string name="settings_privacy_content"><![CDATA[In Gasteizko Margolariak we respect your privacy. We don\'t collect ANY data from our users, including personal information, location, shopping habits, sexual preferences, favourite colour, first love\'s name… ANY.<br/><br/>In order of making you believe us, we\'ll explain what we DO store:<br/><br/><ul><li>A randomly generated user code, unique to your device. This is necessary to sync content with aur database, so you can get info about our post, activities But it\'s done in a way that won\'t allow un to identify you as a person with that number.</li><li>When commenting on a photo ar an entry, we store your current IP address. This is incredibly useful for us to know how many actual people are posting comments, and it also makes imposible for us to identify you as a person.</li></ul>]]></string>
 	<string name="settings_about_content">La Asociación Cultural Gasteizko Margolariak nace en el año 2013 con la idea de estimular la participación ciudadana y fortalecer la cultura y las tradiciones de Vitoria-Gasteiz.&lt;br/>&lt;br/>En nuestro nombre se refleja un barrio en el que las calles nos recuerdan a grandes pintores: el barrio de San Martín. Estamos representados en los barrios, y creemos que son la esencia de esta ciudad.&lt;br/>&lt;br/>Nos convertimos en Cuadrilla de Blusas y Neskas en 2013, y en ese mismo año, miembros de la Comisión de Blusas y Neskas.&lt;br/>&lt;br/>Desde entonces no hemos hecho más que crecer junto con todos los que han decidido, año tras año, apostar por nosotros.</string>
 	<string name="settings_transparency_content">¿Te preocupa saber dónde va tu dinero? En Gasteizko Margolariak queremos que estés tranquilo.&lt;br/>&lt;br/>Muchas de nuestras actividades son gratuitas. Otras, como las fiestas de La Blanca, tienen una cuota de inscripción. Gasteizko Margolariak no es una empresa, es una Asociación Cultural, y como tal, no tenemos beneficios.&lt;br/>&lt;br/>Queremos ser transparentes, y por eso, empezando en 2016, pondremos a tu disposición nuestras cuentas de manera online, para que sepas que cada euro se reinvierte en tí.</string>
 
@@ -156,14 +156,50 @@
 	<string name="dialog_sync_text_6">Ari ari ari!</string>
 	<string name="dialog_sync_text_7">Llegando tarde…</string>
 	<string name="dialog_sync_text_8">¿Cabe más gente en el Foro Margolari?</string>
+	<string name="dialog_sync_text_9">Arreglando el tirador de cerveza...</string>
+	<string name="dialog_sync_text_10">Descorchando botellas...</string>
+	<string name="dialog_sync_text_11">Repartiendo pulseras...</string>
+	<string name="dialog_sync_text_12">Pintando las fiestas...</string>
+	<string name="dialog_sync_text_13">Desplegando pancarta...</string>
 	<string name="dialog_sync_failed_title">Synchronization failed</string>
 	<string name="dialog_sync_failed_text">Couldn\'t download content.\n\nMake sure you have a network connection and try again.</string>
 	<string name="dialog_sync_failed_close">Close</string>
-	<string name="lablanca_nofestivals">Las Fiestas de La Blanca. Esos días, del 4 al 9 de agosto, en los que Vitoria-Gasteiz se transforma. Se llena de color y alegría, y en cada esquina puedes encontrar actividades y espectáculos. Todos las estamos esperando.\n\nPor desgracia, aún hay que esperar más.\n\nNosotros ya estamos trabajando en ello. Tan pronto como vayamos sabiendo más, aquí iremos publicando nuestro programa y otra información sobre las fiestas.</string>
+	<string name="lablanca_nofestivals"><![CDATA[Las Fiestas de La Blanca. Esos días, del 4 al 9 de agosto, en los que Vitoria-Gasteiz se transforma. Se llena de color y alegría, y en cada esquina puedes encontrar actividades y espectáculos. Todos las estamos esperando.\n\nPor desgracia, aún hay que esperar más.\n\nNosotros ya estamos trabajando en ello. Tan pronto como vayamos sabiendo más, aquí iremos publicando nuestro programa y otra información sobre las fiestas. Para ir abriendo boca, dejanos contarte algunas de las claves del plan Margolari de fiestas:]]></string>
+	<string name="lablanca_nofestivals_1_title">Planes que se adaptan a tí:</string>
+	<string name="lablanca_nofestivals_1"><![CDATA[Puedes apuntarte días sueltos, o elegir entre las varias ofertas por varios días para conseguir descuentos.]]></string>
+	<string name="lablanca_nofestivals_2_title">Dormir es de cobardes:</string>
+	<string name="lablanca_nofestivals_2"><![CDATA[Casi todos los días organizamos actividades desde la mañana, ya sean almuerzos, actividades para el público general o competiciones en los Herri Kirolak. Después solemos ir a comer juntos, antes de los paseillos, y después, siempre cenamos juntos. Y por la noche, hasta que el cuerpo aguante!]]></string>
+	<string name="lablanca_nofestivals_3_title">Especialistas en paseillos:</string>
+	<string name="lablanca_nofestivals_3"><![CDATA[A la hora de hacer paseillos, no hay quien nos gane. Con nuestra furgoneta siempre abierta a la cabeza, y la txaranga El Postín animando desde atrás, es imposible aburrirse. Y entre paseillos tampoco descansamos, siempre estamos organizando cosas: juegos, carreras, bingos, música, ida a las barracas...]]></string>
+	<string name="lablanca_nofestivals_4_title">Nos gusta comer:</string>
+	<string name="lablanca_nofestivals_4"><![CDATA[No queremos que un Margolari pase hambre. Las comidas en Gasteizko Margolariak son en restaurante, con un buen men&ú, que nos den fuerzas para aguantar el resto del día. Las cenas las hacemos bien en la calle o bien en restaurante, pero siempre con comida buena y caliente. Los mismo que los almuerzos.]]></string>
+	<string name="lablanca_nofestivals_5_title">Y beber:</string>
+	<string name="lablanca_nofestivals_5"><![CDATA[Sea cual sea tu veneno, lo tenemos: Ron, vodka, kalimotxo, cerveza, whiskey, agua, refrescos Durante los paseillos (y varias veces m&aacute;s a lo largo del d&iacute;a) en la furgoneta tendr&aacute;s barra libre de todo lo que quieras.]]></string>
+	<string name="lablanca_nofestivals_6_title">Nos apuntamos a un bombardeo:</string>
+	<string name="lablanca_nofestivals_6"><![CDATA[Carrera de Barricas, Herri Kirolak... Nunca hemos faltado a nada. Ganar, lo que es ganar, aún lo tenemos pendiente, pero lo pasamos bien. Así que ya sabes, si quieres representar a Gasteizko Margolariak, avísanos!]]></string>
+	<string name="lablanca_nofestivals_7_title">Por la ciudad, para la ciudad:</string>
+	<string name="lablanca_nofestivals_7"><![CDATA[No nos gusta mirarnos el ombligo. Aunque la mayor parte de actividades que organizamos son para los miembros de Gasteizko Margolariak, hay otras que son para todo el público. Hasta ahora hemos organizado talleres de Cesta Punta para txikis, Margotxef (un concurso de cocina infantil), visitas a residencias de ancianos...]]></string>
+	<string name="lablanca_nofestivals_8_title">Margolaris:</string>
+	<string name="lablanca_nofestivals_8"><![CDATA[Todo lo demás no sirve de nada si en una cuadrilla no hay buen ambiente. En Gasteizko Margolariak podemos presumir de gente cercana, participativa, capaz de hacer que desde el primer día ya te sientas como en casa. Además, los organizadores son gente cercana, que escucha y está siempre abierta a nuevas propuestas. Por esto, quien prueba, repite.]]></string>
 	<string name="home_section_location_text_calculating">Calculating distance…</string>
+	<string name="pop_menu_share">Share</string>
 	<string name="pop_menu_about">About us</string>
 	<string name="pop_menu_settings">Settings</string>
-	<string name="pop_menu_sponsors">-</string>
+	<string name="pop_menu_sponsors">Sponsors</string>
+	<string name="sponsors_url">Open web site</string>
+
+	<!-- Us -->
+	<string name="us_title">Nosotros</string>
+	<string name="us_association">La asociación</string>
+	<string name="us_association_content">La Asociación Cultural Gasteizko Margolariak nace en el año 2013 con la idea de estimular la participación ciudadana y fortalecer la cultura y las tradiciones de Vitoria-Gasteiz.\n\nEn nuestro nombre se refleja un barrio en el que las calles nos recuerdan a grandes pintores: el barrio de San Martín. Estamos representados en los barrios, y creemos que son la esencia de esta ciudad.</string>
+	<string name="us_cuadrilla">La cuadrilla</string>
+	<string name="us_cuadrilla_content">Nos convertimos en Cuadrilla de Blusas y Neskas en 2013, y en ese mismo año, miembros de la Comisión de Blusas y Neskas.\n\nDesde entonces no hemos hecho mas que crecer junto con todos los que han decidido, año tras año, apostar por nosotros.</string>
+	<string name="us_activities">Lo que hacemos</string>
+	<string name="us_activities_content">Excursiones, partidos, causas benéficas... No solo se nos ve en fiestas.\n\nCreemos que, como Cuadrilla de Blusas y Neskas, existimos por y para la ciudad, y por eso organizamos actividades durante todo el año, para todo aquel que quiera acompañarnos.</string>
+	<string name="us_transparency">Transparencia</string>
+	<string name="us_transparency_content">¿Te preocupa saber dónde va tu dinero? En Gasteizko Margolariak queremos que estés tranquilo.\n\nMuchas de nuestras actividades son gratuitas. Otras, como las fiestas de La Blanca, tienen una cuota de inscripción. Gasteizko Margolariak no es una empresa, es una Asociación Cultural, y como tal, no tenemos beneficios.\n\nQueremos ser transparentes, y por eso, empezando en 2017, pondremos a tu disposición nuestras cuentas de manera online, para que sepas que cada euro se reinvierte en ti.</string>
+
+
 	<string name="preferences">Preferences</string>
 	<string name="preferences_info">Information</string>
 	<string name="preferences_info_feedback">Feedback</string>
@@ -182,4 +218,14 @@
 	<string name="preferences_sync_sync_off">Background sync is disabled</string>
 	<string name="changelog">Changelog</string>
 
+	<!-- Share menu -->
+	<string name="share">Share</string>
+	<string name="share_with">Share using…</string>
+	<string name="share_home">Gasteizko Margolariak</string>
+	<string name="share_lablanca">La Blanca - Gasteizko Margolariak</string>
+	<string name="share_activities">Activities - Gasteizko Margolariak</string>
+	<string name="share_blog">Blog - Gasteizko Margolariak</string>
+	<string name="share_gallery">Gallery - Gasteizko Margolariak</string>
+	<string name="share_with_title">%s - Gasteizko Margolariak</string>
+
 </resources>

+ 50 - 4
app/src/main/res/values-eu-rES/strings.xml

@@ -150,7 +150,7 @@
 	<string name="settings_license_content"><![CDATA[Copyright 2016 Iñigo Valentin<br/><br/>This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation.<br/><br/>This program 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 at http://www.gnu.org/licenses/.<br/><br/>The name "Gasteizko Margolariak" and its logotype are property of Gasteizko Margolariak.<br/><br/><br/><div style="background-color:#bbbbbb;padding:6px;border-radius:5px;border-style:solid;border-width:2px;border-color:#333333;text-align:center;">You can get the source code for this project at <a href="https://github.com/Seavenois/GM">Github</a></div>]]></string>
 	<string name="settings_privacy">Pribazitatea</string>
 	<string name="settings_transparency">Transparentzia</string>
-	<string name="settings_privacy_content"><![CDATA[En Gasteizko Margolariak respetamos tu privacidad. No guardamos NINGÚN dato de nuestros usuarios, incluyendo información personal, localización, hábitos de compra, preferencias sexuales, color favorito, nombre de su primer amor… NINGUNO.<br/><br/>Para que nos creas, te explicamos lo que sí almacenamos:<br/><br/><ul><li>Un código de usuario, generado aleatoriamente, único para tu dispositivo. Esto es necesario para sincronizar la aplicación con nuestra base de datos y poder descargar los últimos posts, actividades... Pero esta hecho de tal manera que no podamos identificarte como persona a través de ese código.</li><li>Al publicar un comentario en una entrada o una foto, guardaremos temporalmente (120 minutos, lo justo para procesar información) tu dirección IP. Esto nos es súper útil para saber cuántas personas diferentes publican comentarios, y tampoco nos permite identificarte como persona.</li></ul>]]></string>
+	<string name="settings_privacy_content"><![CDATA[En Gasteizko Margolariak respetamos tu privacidad. No guardamos NINGÚN dato de nuestros usuarios, incluyendo información personal, localización, hábitos de compra, preferencias sexuales, color favorito, nombre de su primer amor… NINGUNO.<br/><br/>Para que nos creas, te explicamos lo que sí almacenamos:<br/><br/><ul><li>Un código de usuario, generado aleatoriamente, único para tu dispositivo. Esto es necesario para sincronizar la aplicación con nuestra base de datos y poder descargar los últimos posts, actividades Pero esta hecho de tal manera que no podamos identificarte como persona a través de ese código.</li><li>Al publicar un comentario en una entrada o una foto, guardaremos temporalmente (120 minutos, lo justo para procesar información) tu dirección IP. Esto nos es súper útil para saber cuántas personas diferentes publican comentarios, y tampoco nos permite identificarte como persona.</li></ul>]]></string>
 	<string name="settings_transparency_content"><![CDATA[¿Te preocupa saber dónde va tu dinero? En Gasteizko Margolariak queremos que estés tranquilo.<br/><br/>Muchas de nuestras actividades son gratuitas. Otras, como las fiestas de La Blanca, tienen una cuota de inscripción. Gasteizko Margolariak no es una empresa, es una Asociación Cultural, y como tal, no tenemos beneficios.<br/><br/>Queremos ser transparentes, y por eso, empezando en 2016, pondremos a tu disposición nuestras cuentas de manera online, para que sepas que cada euro se reinvierte en tí.]]></string>
 	<string name="dialog_sync_text_0">Locating Don Margolo&#8230;</string>
 	<string name="dialog_sync_text_1">Starting up the van&#8230;</string>
@@ -161,14 +161,50 @@
 	<string name="dialog_sync_text_6">Ari ari ari!</string>
 	<string name="dialog_sync_text_7">Llegando tarde…</string>
 	<string name="dialog_sync_text_8">¿Cabe más gente en el Foro Margolari?</string>
+	<string name="dialog_sync_text_9">Arreglando el tirador de cerveza...</string>
+	<string name="dialog_sync_text_10">Descorchando botellas...</string>
+	<string name="dialog_sync_text_11">Repartiendo pulseras...</string>
+	<string name="dialog_sync_text_12">Pintando las fiestas...</string>
+	<string name="dialog_sync_text_13">Desplegando pancarta...</string>
 	<string name="dialog_sync_failed_text">No se pudierdon descargar los contenidos\n\nAsegúrate de que dispones de conexión a internet e inténtalo de nuevo.</string>
-	<string name="lablanca_nofestivals">Las Fiestas de La Blanca. Esos días, del 4 al 9 de agosto, en los que Vitoria-Gasteiz se transforma. Se llena de color y alegría, y en cada esquina puedes encontrar actividades y espectáculos. Todos las estamos esperando.\n\nPor desgracia, aún hay que esperar más.\n\nNosotros ya estamos trabajando en ello. Tan pronto como vayamos sabiendo más, aquí iremos publicando nuestro programa y otra información sobre las fiestas.</string>
+	<string name="lablanca_nofestivals"><![CDATA[Las Fiestas de La Blanca. Esos días, del 4 al 9 de agosto, en los que Vitoria-Gasteiz se transforma. Se llena de color y alegría, y en cada esquina puedes encontrar actividades y espectáculos. Todos las estamos esperando.\n\nPor desgracia, aún hay que esperar más.\n\nNosotros ya estamos trabajando en ello. Tan pronto como vayamos sabiendo más, aquí iremos publicando nuestro programa y otra información sobre las fiestas. Para ir abriendo boca, dejanos contarte algunas de las claves del plan Margolari de fiestas:]]></string>
+	<string name="lablanca_nofestivals_1_title">Planes que se adaptan a tí:</string>
+	<string name="lablanca_nofestivals_1"><![CDATA[Puedes apuntarte días sueltos, o elegir entre las varias ofertas por varios días para conseguir descuentos.]]></string>
+	<string name="lablanca_nofestivals_2_title">Dormir es de cobardes:</string>
+	<string name="lablanca_nofestivals_2"><![CDATA[Casi todos los días organizamos actividades desde la mañana, ya sean almuerzos, actividades para el público general o competiciones en los Herri Kirolak. Después solemos ir a comer juntos, antes de los paseillos, y después, siempre cenamos juntos. Y por la noche, hasta que el cuerpo aguante!]]></string>
+	<string name="lablanca_nofestivals_3_title">Especialistas en paseillos:</string>
+	<string name="lablanca_nofestivals_3"><![CDATA[A la hora de hacer paseillos, no hay quien nos gane. Con nuestra furgoneta siempre abierta a la cabeza, y la txaranga El Postín animando desde atrás, es imposible aburrirse. Y entre paseillos tampoco descansamos, siempre estamos organizando cosas: juegos, carreras, bingos, música, ida a las barracas...]]></string>
+	<string name="lablanca_nofestivals_4_title">Nos gusta comer:</string>
+	<string name="lablanca_nofestivals_4"><![CDATA[No queremos que un Margolari pase hambre. Las comidas en Gasteizko Margolariak son en restaurante, con un buen men&ú, que nos den fuerzas para aguantar el resto del día. Las cenas las hacemos bien en la calle o bien en restaurante, pero siempre con comida buena y caliente. Los mismo que los almuerzos.]]></string>
+	<string name="lablanca_nofestivals_5_title">Y beber:</string>
+	<string name="lablanca_nofestivals_5"><![CDATA[Sea cual sea tu veneno, lo tenemos: Ron, vodka, kalimotxo, cerveza, whiskey, agua, refrescos Durante los paseillos (y varias veces m&aacute;s a lo largo del d&iacute;a) en la furgoneta tendr&aacute;s barra libre de todo lo que quieras.]]></string>
+	<string name="lablanca_nofestivals_6_title">Nos apuntamos a un bombardeo:</string>
+	<string name="lablanca_nofestivals_6"><![CDATA[Carrera de Barricas, Herri Kirolak... Nunca hemos faltado a nada. Ganar, lo que es ganar, aún lo tenemos pendiente, pero lo pasamos bien. Así que ya sabes, si quieres representar a Gasteizko Margolariak, avísanos!]]></string>
+	<string name="lablanca_nofestivals_7_title">Por la ciudad, para la ciudad:</string>
+	<string name="lablanca_nofestivals_7"><![CDATA[No nos gusta mirarnos el ombligo. Aunque la mayor parte de actividades que organizamos son para los miembros de Gasteizko Margolariak, hay otras que son para todo el público. Hasta ahora hemos organizado talleres de Cesta Punta para txikis, Margotxef (un concurso de cocina infantil), visitas a residencias de ancianos...]]></string>
+	<string name="lablanca_nofestivals_8_title">Margolaris:</string>
+	<string name="lablanca_nofestivals_8"><![CDATA[Todo lo demás no sirve de nada si en una cuadrilla no hay buen ambiente. En Gasteizko Margolariak podemos presumir de gente cercana, participativa, capaz de hacer que desde el primer día ya te sientas como en casa. Además, los organizadores son gente cercana, que escucha y está siempre abierta a nuevas propuestas. Por esto, quien prueba, repite.]]></string>
 	<string name="settings_notification_off">No recibir notificaciones</string>
 	<string name="settings_notification_on">Recibir notificaciones</string>
 	<string name="home_section_location_text_calculating">Calculando distancia…</string>
-	<string name="pop_menu_about">About us</string>
+	<string name="pop_menu_share">Bitarte</string>
+	<string name="pop_menu_about">Gu</string>
 	<string name="pop_menu_settings">Ajustes</string>
-	<string name="pop_menu_sponsors">-</string>
+	<string name="pop_menu_sponsors">Patrocinadores</string>
+	<string name="sponsors_url">Web horria</string>
+
+	<!-- Us -->
+	<string name="us_title">Nosotros</string>
+	<string name="us_association">La asociación</string>
+	<string name="us_association_content">La Asociación Cultural Gasteizko Margolariak nace en el año 2013 con la idea de estimular la participación ciudadana y fortalecer la cultura y las tradiciones de Vitoria-Gasteiz.\n\nEn nuestro nombre se refleja un barrio en el que las calles nos recuerdan a grandes pintores: el barrio de San Martín. Estamos representados en los barrios, y creemos que son la esencia de esta ciudad.</string>
+	<string name="us_cuadrilla">La cuadrilla</string>
+	<string name="us_cuadrilla_content">Nos convertimos en Cuadrilla de Blusas y Neskas en 2013, y en ese mismo año, miembros de la Comisión de Blusas y Neskas.\n\nDesde entonces no hemos hecho mas que crecer junto con todos los que han decidido, año tras año, apostar por nosotros.</string>
+	<string name="us_activities">Lo que hacemos</string>
+	<string name="us_activities_content">Excursiones, partidos, causas benéficas... No solo se nos ve en fiestas.\n\nCreemos que, como Cuadrilla de Blusas y Neskas, existimos por y para la ciudad, y por eso organizamos actividades durante todo el año, para todo aquel que quiera acompañarnos.</string>
+	<string name="us_transparency">Transparencia</string>
+	<string name="us_transparency_content">¿Te preocupa saber dónde va tu dinero? En Gasteizko Margolariak queremos que estés tranquilo.\n\nMuchas de nuestras actividades son gratuitas. Otras, como las fiestas de La Blanca, tienen una cuota de inscripción. Gasteizko Margolariak no es una empresa, es una Asociación Cultural, y como tal, no tenemos beneficios.\n\nQueremos ser transparentes, y por eso, empezando en 2017, pondremos a tu disposición nuestras cuentas de manera online, para que sepas que cada euro se reinvierte en ti.</string>
+
+
 	<string name="preferences_info">Informazioa</string>
 	<string name="preferences_info_feedback_summary">Send anonymous feedback to the developer</string>
 	<string name="preferences_info_source">Codigo fuente</string>
@@ -187,4 +223,14 @@
 	<string name="preferences_sync_sync_off">Sincronización desactivada</string>
 	<string name="changelog">Changelog</string>
 
+	<!-- Share menu -->
+	<string name="share">Compartir</string>
+	<string name="share_with">Enviar con…</string>
+	<string name="share_home">Gasteizko Margolariak</string>
+	<string name="share_lablanca">Andre Zuria - Gasteizko Margolariak</string>
+	<string name="share_activities">Aktibitateak - Gasteizko Margolariak</string>
+	<string name="share_blog">La Blanca - Gasteizko Margolariak</string>
+	<string name="share_gallery">Galeria - Gasteizko Margolariak</string>
+	<string name="share_with_title">%s - Gasteizko Margolariak</string>
+
 </resources>

+ 6 - 5
app/src/main/res/values/color.xml

@@ -30,12 +30,13 @@
     <color name="menu_selected">#ccccff</color>
 
     <!--Color for input fields-->
-    <color name="input_background">#223344</color>
-    <color name="input_background_pressed">#446688</color>
-    <color name="input_border">#9cd3d9</color>
-    <color name="input_text_color">#cccccc</color>
-    <color name="input_hint_color">#999999</color>
+    <color name="input_background">#ccddff</color>
+    <color name="input_border">#0078ff</color>
+    <color name="input_text_color">#0078ff</color>
+    <color name="input_hint_color">#888888</color>
+    <color name="input_button_background">#124567</color>
     <color name="input_button_color">#cccccc</color>
+    <color name="input_button_background_pressed">#446688</color>
 
 
     <color name="album_border">#111111</color>

+ 55 - 8
app/src/main/res/values/strings.xml

@@ -44,7 +44,7 @@
 	<!-- Day strings -->
 	<string name="today">Hoy</string>
 	<string name="tomorrow">Mañana</string>
-	
+
 	<!-- Blog section strings -->
 	<string name="blog_pager_previous" translatable="false">&lt;</string>
 	<string name="blog_pager_next" translatable="false">&gt;</string>
@@ -57,7 +57,7 @@
 	<string name="home_section_location_text_0">¡Gasteizko Margolariak está cerca!</string>
 	<string name="home_section_social">Síguenos</string>
 
-	
+
 	<!-- Prices dialog strings -->
 
 
@@ -67,7 +67,7 @@
 	<string name="settings_notification_on">Recibir notificaciones</string>
 	<string name="settings_notification_off">No recibir notificaciones</string>
 
-	
+
 	<!-- Social networks strings -->
 
 	<string name="social_phone" translatable="false">Phone</string>
@@ -92,11 +92,11 @@
 
 
 	<!-- Notification dialog strings -->
-	
+
 	<string name="notification_close">Cerrar</string>
 
 	<!-- Sync dialog strings -->
-	
+
 	<string name="dialog_sync_title">Sincronizando</string>
 	<string name="dialog_sync_failed_title">Error de sincronización</string>
 	<string name="dialog_sync_failed_text">No se pudierdon descargar los contenidos\n\nAsegúrate de que dispones de conexión a internet e inténtalo de nuevo.</string>
@@ -126,6 +126,11 @@
 	<string name="dialog_sync_text_6">Ari ari ari!</string>
 	<string name="dialog_sync_text_7">Llegando tarde…</string>
 	<string name="dialog_sync_text_8">¿Cabe más gente en el Foro Margolari?</string>
+	<string name="dialog_sync_text_9">Arreglando el tirador de cerveza...</string>
+	<string name="dialog_sync_text_10">Descorchando botellas...</string>
+	<string name="dialog_sync_text_11">Repartiendo pulseras...</string>
+	<string name="dialog_sync_text_12">Pintando las fiestas...</string>
+	<string name="dialog_sync_text_13">Desplegando pancarta...</string>
 	<string name="gallery_albums">Albums</string>
 	<string name="gallery_upload">Subir fotos</string>
 	<string name="gallery_upload_button">Subir</string>
@@ -174,7 +179,23 @@
 	<string name="settings_privacy_content"><![CDATA[En Gasteizko Margolariak respetamos tu privacidad. No guardamos NINGÚN dato de nuestros usuarios, incluyendo información personal, localización, hábitos de compra, preferencias sexuales, color favorito, nombre de su primer amor… NINGUNO.<br/><br/>Para que nos creas, te explicamos lo que sí almacenamos:<br/><br/><ul><li>Un código de usuario, generado aleatoriamente, único para tu dispositivo. Esto es necesario para sincronizar la aplicación con nuestra base de datos y poder descargar los últimos posts, actividades… Pero esta hecho de tal manera que no podamos identificarte como persona a través de ese código.</li><li>Al publicar un comentario en una entrada o una foto, guardaremos temporalmente (120 minutos, lo justo para procesar información) tu dirección IP. Esto nos es súper útil para saber cuántas personas diferentes publican comentarios, y tampoco nos permite identificarte como persona.</li></ul>]]></string>
 	<string name="settings_transparency">Transparencia</string>
 	<string name="settings_transparency_content"><![CDATA[¿Te preocupa saber dónde va tu dinero? En Gasteizko Margolariak queremos que estés tranquilo.<br/><br/>Muchas de nuestras actividades son gratuitas. Otras, como las fiestas de La Blanca, tienen una cuota de inscripción. Gasteizko Margolariak no es una empresa, es una Asociación Cultural, y como tal, no tenemos beneficios.<br/><br/>Queremos ser transparentes, y por eso, empezando en 2016, pondremos a tu disposición nuestras cuentas de manera online, para que sepas que cada euro se reinvierte en tí.]]></string>
-	<string name="lablanca_nofestivals">Las Fiestas de La Blanca. Esos días, del 4 al 9 de agosto, en los que Vitoria-Gasteiz se transforma. Se llena de color y alegría, y en cada esquina puedes encontrar actividades y espectáculos. Todos las estamos esperando.\n\nPor desgracia, aún hay que esperar más.\n\nNosotros ya estamos trabajando en ello. Tan pronto como vayamos sabiendo más, aquí iremos publicando nuestro programa y otra información sobre las fiestas.</string>
+	<string name="lablanca_nofestivals"><![CDATA[Las Fiestas de La Blanca. Esos días, del 4 al 9 de agosto, en los que Vitoria-Gasteiz se transforma. Se llena de color y alegría, y en cada esquina puedes encontrar actividades y espectáculos. Todos las estamos esperando.\n\nPor desgracia, aún hay que esperar más.\n\nNosotros ya estamos trabajando en ello. Tan pronto como vayamos sabiendo más, aquí iremos publicando nuestro programa y otra información sobre las fiestas. Para ir abriendo boca, dejanos contarte algunas de las claves del plan Margolari de fiestas:]]></string>
+	<string name="lablanca_nofestivals_1_title">Planes que se adaptan a tí:</string>
+	<string name="lablanca_nofestivals_1"><![CDATA[Puedes apuntarte días sueltos, o elegir entre las varias ofertas por varios días para conseguir descuentos.]]></string>
+	<string name="lablanca_nofestivals_2_title">Dormir es de cobardes:</string>
+	<string name="lablanca_nofestivals_2"><![CDATA[Casi todos los días organizamos actividades desde la mañana, ya sean almuerzos, actividades para el público general o competiciones en los Herri Kirolak. Después solemos ir a comer juntos, antes de los paseillos, y después, siempre cenamos juntos. Y por la noche, hasta que el cuerpo aguante!]]></string>
+	<string name="lablanca_nofestivals_3_title">Especialistas en paseillos:</string>
+	<string name="lablanca_nofestivals_3"><![CDATA[A la hora de hacer paseillos, no hay quien nos gane. Con nuestra furgoneta siempre abierta a la cabeza, y la txaranga El Postín animando desde atrás, es imposible aburrirse. Y entre paseillos tampoco descansamos, siempre estamos organizando cosas: juegos, carreras, bingos, música, ida a las barracas...]]></string>
+	<string name="lablanca_nofestivals_4_title">Nos gusta comer:</string>
+	<string name="lablanca_nofestivals_4"><![CDATA[No queremos que un Margolari pase hambre. Las comidas en Gasteizko Margolariak son en restaurante, con un buen men&ú, que nos den fuerzas para aguantar el resto del día. Las cenas las hacemos bien en la calle o bien en restaurante, pero siempre con comida buena y caliente. Los mismo que los almuerzos.]]></string>
+	<string name="lablanca_nofestivals_5_title">Y beber:</string>
+	<string name="lablanca_nofestivals_5"><![CDATA[Sea cual sea tu veneno, lo tenemos: Ron, vodka, kalimotxo, cerveza, whiskey, agua, refrescos Durante los paseillos (y varias veces m&aacute;s a lo largo del d&iacute;a) en la furgoneta tendr&aacute;s barra libre de todo lo que quieras.]]></string>
+	<string name="lablanca_nofestivals_6_title">Nos apuntamos a un bombardeo:</string>
+	<string name="lablanca_nofestivals_6"><![CDATA[Carrera de Barricas, Herri Kirolak... Nunca hemos faltado a nada. Ganar, lo que es ganar, aún lo tenemos pendiente, pero lo pasamos bien. Así que ya sabes, si quieres representar a Gasteizko Margolariak, avísanos!]]></string>
+	<string name="lablanca_nofestivals_7_title">Por la ciudad, para la ciudad:</string>
+	<string name="lablanca_nofestivals_7"><![CDATA[No nos gusta mirarnos el ombligo. Aunque la mayor parte de actividades que organizamos son para los miembros de Gasteizko Margolariak, hay otras que son para todo el público. Hasta ahora hemos organizado talleres de Cesta Punta para txikis, Margotxef (un concurso de cocina infantil), visitas a residencias de ancianos...]]></string>
+	<string name="lablanca_nofestivals_8_title">Margolaris:</string>
+	<string name="lablanca_nofestivals_8"><![CDATA[Todo lo demás no sirve de nada si en una cuadrilla no hay buen ambiente. En Gasteizko Margolariak podemos presumir de gente cercana, participativa, capaz de hacer que desde el primer día ya te sientas como en casa. Además, los organizadores son gente cercana, que escucha y está siempre abierta a nuevas propuestas. Por esto, quien prueba, repite.]]></string>
 	<string name="settings_about_content"><![CDATA[La Asociación Cultural Gasteizko Margolariak nace en el año 2013 con la idea de estimular la participación ciudadana y fortalecer la cultura y las tradiciones de Vitoria-Gasteiz.<br/><br/>En nuestro nombre se refleja un barrio en el que las calles nos recuerdan a grandes pintores: el barrio de San Martín. Estamos representados en los barrios, y creemos que son la esencia de esta ciudad.<br/><br/>Nos convertimos en Cuadrilla de Blusas y Neskas en 2013, y en ese mismo año, miembros de la Comisión de Blusas y Neskas.<br/><br/>Desde entonces no hemos hecho más que crecer junto con todos los que han decidido, año tras año, apostar por nosotros.]]></string>
 
 	<!-- Misc strings -->
@@ -182,7 +203,23 @@
 
 	<!-- Pop-up menu entry strings -->
 	<string name="pop_menu_settings">Ajustes</string>
-	<string name="pop_menu_sponsors">Sponsors</string>
+	<string name="pop_menu_share">Compartir</string>
+	<string name="pop_menu_sponsors">Patrocinadores</string>
+	<string name="pop_menu_about">Sobre nosotros</string>
+
+	<!-- Sponsors -->
+	<string name="sponsors_url">Sitio web</string>
+
+	<!-- Us -->
+	<string name="us_title">Nosotros</string>
+	<string name="us_association">La asociación</string>
+	<string name="us_association_content">La Asociación Cultural Gasteizko Margolariak nace en el año 2013 con la idea de estimular la participación ciudadana y fortalecer la cultura y las tradiciones de Vitoria-Gasteiz.\n\nEn nuestro nombre se refleja un barrio en el que las calles nos recuerdan a grandes pintores: el barrio de San Martín. Estamos representados en los barrios, y creemos que son la esencia de esta ciudad.</string>
+	<string name="us_cuadrilla">La cuadrilla</string>
+	<string name="us_cuadrilla_content">Nos convertimos en Cuadrilla de Blusas y Neskas en 2013, y en ese mismo año, miembros de la Comisión de Blusas y Neskas.\n\nDesde entonces no hemos hecho mas que crecer junto con todos los que han decidido, año tras año, apostar por nosotros.</string>
+	<string name="us_activities">Lo que hacemos</string>
+	<string name="us_activities_content">Excursiones, partidos, causas benéficas... No solo se nos ve en fiestas.\n\nCreemos que, como Cuadrilla de Blusas y Neskas, existimos por y para la ciudad, y por eso organizamos actividades durante todo el año, para todo aquel que quiera acompañarnos.</string>
+	<string name="us_transparency">Transparencia</string>
+	<string name="us_transparency_content">¿Te preocupa saber dónde va tu dinero? En Gasteizko Margolariak queremos que estés tranquilo.\n\nMuchas de nuestras actividades son gratuitas. Otras, como las fiestas de La Blanca, tienen una cuota de inscripción. Gasteizko Margolariak no es una empresa, es una Asociación Cultural, y como tal, no tenemos beneficios.\n\nQueremos ser transparentes, y por eso, empezando en 2017, pondremos a tu disposición nuestras cuentas de manera online, para que sepas que cada euro se reinvierte en ti.</string>
 
 	<!--Preferences screen-->
 	<string name="preferences">Preferencias</string>
@@ -201,11 +238,21 @@
 	<string name="preferences_info_feedback">Feedback</string>
 	<string name="preferences_info_feedback_summary">Enviar información anónima al desarrollador</string>
 
+	<!-- Share menu -->
+	<string name="share">Comartir</string>
+	<string name="share_with">Enviar con…</string>
+	<string name="share_home">Gasteizko Margolariak</string>
+	<string name="share_lablanca">La Blanca - Gasteizko Margolariak</string>
+	<string name="share_activities">Actividades - Gasteizko Margolariak</string>
+	<string name="share_blog">Blog - Gasteizko Margolariak</string>
+	<string name="share_gallery">Galería - Gasteizko Margolariak</string>
+	<string name="share_with_title">%s - Gasteizko Margolariak</string>
+
 	<string name="eur" translatable="false">€</string>
 	<string name="Kb" translatable="false"> Kb</string>
 	<string name="Mb" translatable="false"> Mb</string>
-	<string name="pop_menu_about">Sobre nosotros</string>
 	<string name="preferences_info_source">Código fuente</string>
 	<string name="changelog">Changelog</string>
+	<string name="empty" translatable="false"> </string>
 
 </resources>

+ 1 - 1
build.gradle

@@ -4,7 +4,7 @@ buildscript {
         jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.2.2'
+        classpath 'com.android.tools.build:gradle:2.3.0'
     }
 }
 

+ 2 - 2
gradle.properties

@@ -1,4 +1,4 @@
 org.gradle.daemon=true
-org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+org.gradle.jvmargs=-Xmx2560m -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
 org.gradle.parallel=true
-org.gradle.configureondemand=true
+org.gradle.configureondemand=true

+ 2 - 2
gradle/wrapper/gradle-wrapper.properties

@@ -1,6 +1,6 @@
-#Sun Oct 09 00:49:43 CEST 2016
+#Sat Apr 01 22:26:43 CEST 2017
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip