Commit 9214f6d3 by Pablo Molina

Merge branch 'issue/408' into 'develop'

Solved #408
parents a3812f5a af555106
package com.yottacode.pictogram.gui;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import com.yottacode.pictogram.R;
import com.yottacode.pictogram.dao.Picto;
import com.yottacode.pictogram.tools.PCBcontext;
import java.io.IOException;
/**
* This class is used for generating PictoViews which will be inserted inside a picto grid
* or a picto tape.
*/
public class PictoItemViewGenerator {
public static final int LAYOUT = R.layout.picto_grid_item;
public static View getPictoView(Picto picto, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(LAYOUT, parent, false);
}
RelativeLayout layoutWrapper = (RelativeLayout) convertView.findViewById(R.id.picto_grid_item_layout_wrapper);
FrameLayout layout = (FrameLayout) convertView.findViewById(R.id.picto_grid_item_layout);
ImageView pictoImage = (ImageView) convertView.findViewById(R.id.picto_grid_item_image);
ImageView redCrossImage = (ImageView) convertView.findViewById(R.id.picto_grid_item_redcross);
layoutWrapper.setVisibility(View.GONE);
layoutWrapper.setBackground(null);
layoutWrapper.setAlpha(0.25f);
layout.setBackgroundColor(convertView.getResources()
.getColor(R.color.picto_default_background));
redCrossImage.setVisibility(View.GONE);
pictoImage.setScaleX(1.0f);
pictoImage.setScaleY(1.0f);
pictoImage.setVisibility(View.GONE);
if (picto != null) {
if (!picto.is_invisible() && !picto.is_disabled()) {
layoutWrapper.setAlpha(1.00f);
}
try {
pictoImage.setImageBitmap(picto.get_bitmap(PCBcontext.getContext()));
if (!picto.is_invisible() || PCBcontext.getPcbdb().getCurrentUser().is_supervisor()) {
layoutWrapper.setVisibility(View.VISIBLE);
pictoImage.setVisibility(View.VISIBLE);
layoutWrapper.setBackground(convertView.getResources()
.getDrawable(R.drawable.picto_grid_item_border));
if (picto.is_magnify()) {
pictoImage.setScaleX(1.2f);
pictoImage.setScaleY(1.2f);
}
if (picto.is_disabled()) {
redCrossImage.setVisibility(View.VISIBLE);
}
if (picto.is_category()) {
layout.setBackgroundColor(picto.get_color());
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
return convertView;
}
}
......@@ -235,8 +235,6 @@ public class PictogramActivity extends Activity implements iVocabularyListener,
this.pictoCategoriesGridAdapter.addAll(this.sort(this.vocabulary.startSentence()));
this.pictoCategoriesGridAdapter.notifyDataSetChanged();
this.pictoGridAdapter.setColor(Color.parseColor("#AFAFAF"));
this.pictoCategoriesGridView.setEnabled(true);
this.pictoGridView.setEnabled(false);
......@@ -258,7 +256,6 @@ public class PictogramActivity extends Activity implements iVocabularyListener,
this.pictoGridAdapter.notifyDataSetChanged();
if (this.currentCategory.get_color() != -1) {
this.pictoGridAdapter.setColor(this.currentCategory.get_darkner_color());
this.pictoGridView.setBackgroundColor(this.currentCategory.get_color());
}
......@@ -648,8 +645,6 @@ public class PictogramActivity extends Activity implements iVocabularyListener,
tapeAdapter.deleteAll();
tapeAdapter.notifyDataSetChanged();
pictoGridAdapter.setColor(Color.parseColor("#AFAFAF"));
RelativeLayout rl = (RelativeLayout) findViewById(R.id.pictogramLayout);
rl.setBackgroundColor(Color.parseColor("#BDBDBD"));
......
package com.yottacode.pictogram.gui;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.FrameLayout;
import android.widget.ImageView;
import com.yottacode.pictogram.R;
import com.yottacode.pictogram.dao.Picto;
import com.yottacode.pictogram.tools.PCBcontext;
import com.yottacode.pictogram.tts.TTSHelper;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Locale;
/**
* Created by emblanco on 9/10/14.
* @version 2.2
* @author Miguel Ángel García
*/
public class TapeAdapter extends BaseAdapter {
//private Context mContext;
private LinkedList<Picto> lPictos;
private LinkedList<Picto> pictoLinkedList;
public TapeAdapter(){
//mContext = c;
lPictos = new LinkedList<Picto>(); // the list begins empty
pictoLinkedList = new LinkedList<Picto>(); // the list begins empty
}
@Override
public int getCount(){
return lPictos.size();
return pictoLinkedList.size();
}
public Picto getItem(int position) {
// este método debería devolver el objeto que esta en esa posición del
// adapter.
return lPictos.get(position);
return pictoLinkedList.get(position);
}
public long getItemId(int position) {
......@@ -59,19 +47,19 @@ public class TapeAdapter extends BaseAdapter {
// AÑADIR ITEM AL ADAPTADOR
public void addItem(Picto p){
lPictos.add(p);
pictoLinkedList.add(p);
}
// ELIMINAR ITEM DEL ADAPTADOR
public void deleteItem(int position){
lPictos.remove(position);
pictoLinkedList.remove(position);
}
// ELIMINAR el último ITEM DEL ADAPTADOR
public void deleteLastView(){
// Controlar excepcion al intentar eliminar el último cuando no hay elementos
try{
lPictos.removeLast();
pictoLinkedList.removeLast();
}catch(ArrayIndexOutOfBoundsException exception){
Log.e("Excepción", "ArrayIndexOutOfBounds: " + exception.getMessage());
}
......@@ -79,16 +67,16 @@ public class TapeAdapter extends BaseAdapter {
// ELIMINAR TODOS LOS ITEMS DEL ADAPTADOR
public void deleteAll(){
lPictos.clear();
pictoLinkedList.clear();
}
// DEVUELVE TODOS LOS ELEMENTOS
public LinkedList<Picto> getAll(){ return lPictos; }
public LinkedList<Picto> getAll(){ return pictoLinkedList; }
// Devuelvo la cadena actual como un String
public String getAllAsString(){
String complete = "";
Iterator<Picto> iterator = lPictos.iterator();
Iterator<Picto> iterator = pictoLinkedList.iterator();
while (iterator.hasNext()) {
Picto current = iterator.next();
complete += " " + current.get_translation();
......@@ -97,47 +85,28 @@ public class TapeAdapter extends BaseAdapter {
}
// DEVUELVE último elemento
public Picto getLastItem(){ return lPictos.getLast(); }
public Picto getLastItem(){
return pictoLinkedList.getLast();
}
// Devuelve true o false si tiene o no elementos la lista de pictos
public boolean hasElements(){
return (lPictos.size() > 0);
return (pictoLinkedList.size() > 0);
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
ImageView view;
if(convertView == null){
view = new ImageView(PCBcontext.getContext());
// Ancho y alto de la imagen en la vista donde se va a colocar (en pixels)
view.setLayoutParams(new GridView.LayoutParams(80, 60));
view.setScaleType(ImageView.ScaleType.CENTER_CROP);
view.setPadding(5,5,5,5);
//view.setPadding(10,15,10,10);
}else{
view = (ImageView) convertView;
}
try{
view.setImageBitmap(lPictos.get(position).get_bitmap(PCBcontext.getContext()));
} catch (IOException e) {
e.printStackTrace();
}
return view;
}
// Función que devuelve los píxeles equivalentes a los dps pasados
public int getPx(int dimensionDp) {
float density = PCBcontext.getContext().getResources().getDisplayMetrics().density;
return (int) (dimensionDp * density + 0.5f);
return PictoItemViewGenerator.getPictoView(
this.pictoLinkedList.get(position),
convertView,
parent
);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public void ttsAllNew(TextToSpeech tts){
// DE PRUEBA
//String input = lPictos.getFirst().get_translation();
//String input = pictoLinkedList.getFirst().get_translation();
String input = getAllAsString();
//String input = "Geni, vaya fin de semana en el bater vas a pasar !!!";
......
......@@ -132,8 +132,9 @@ public class Img {
try {
this.bitmap=BitmapFactory.decodeStream(is);
if (this.bitmap.getWidth()>MAX_WIDTH) {
this.bitmap = new BitmapTools(this.bitmap).rescale(MAX_WIDTH / (float) this.bitmap.getWidth()).paintSquare(3, Color.DKGRAY).get();
this.bitmap = new BitmapTools(this.bitmap)
.rescale(MAX_WIDTH / (float) this.bitmap.getWidth())
.get();
}
}catch(java.lang.OutOfMemoryError err) {
Log.e(Img.class.getCanonicalName(), "Out of memory when decoding "+this.get_url());
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="7dp"
android:color="#de0707" />
<stroke android:width="@dimen/picto_border_width" android:color="@color/picto_border" />
<corners android:radius="2dp" />
</shape>
\ No newline at end of file
......@@ -7,29 +7,30 @@
android:keepScreenOn="true"
android:id="@+id/pictogramLayout"
tools:context=".PictogramActivity"
android:padding="8dp">
android:padding="@dimen/small_padding">
<!-- android:keepScreenOn - To keep the screen bright as long as the app is visible (also forever) -->
<GridView
android:id="@+id/tape_grid_view"
android:layout_width="wrap_content"
android:layout_height="64dp"
android:padding="8dp"
android:layout_height="@dimen/picto_normal_height"
android:padding="@dimen/small_padding"
android:gravity="center"
android:numColumns="@integer/columns"
android:numColumns="10"
android:accessibilityLiveRegion="none"
android:background="@android:color/holo_red_light"
android:clickable="false"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:paddingRight="192dp">
android:paddingRight="192dp"
android:horizontalSpacing="@dimen/picto_grid_spacing">
</GridView>
<ImageButton
android:layout_width="96dp"
android:layout_height="64dp"
android:layout_width="@dimen/picto_normal_width"
android:layout_height="@dimen/picto_normal_height"
android:src="@drawable/ic_backspace_white_48dp"
android:id="@+id/button_delete"
android:layout_alignParentTop="true"
......@@ -40,8 +41,8 @@
android:background="@null" />
<ImageButton
android:layout_width="96dp"
android:layout_height="64dp"
android:layout_width="@dimen/picto_normal_width"
android:layout_height="@dimen/picto_normal_height"
android:src="@drawable/ic_play_circle_filled_white_48dp"
android:background="@null"
android:id="@+id/button_tts"
......@@ -66,14 +67,18 @@
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_below="@+id/tape_grid_view"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:numColumns="10"
android:gravity="center_vertical|center|center_horizontal"
android:paddingTop="32dp"
android:verticalSpacing="24dp"
android:background="@color/common_signin_btn_default_background"
android:layout_toEndOf="@+id/showPictoCategoriesViewButton">
android:background="#DDDDDD"
android:layout_alignParentEnd="true"
android:layout_toEndOf="@+id/showPictoCategoriesViewButton"
android:paddingLeft="@dimen/small_padding"
android:paddingTop="@dimen/small_padding"
android:paddingRight="@dimen/small_padding"
android:paddingBottom="@dimen/small_padding"
android:verticalSpacing="@dimen/picto_grid_spacing"
android:horizontalSpacing="@dimen/picto_grid_spacing">
</GridView>
<GridView
......@@ -82,12 +87,15 @@
android:layout_width="match_parent"
android:layout_below="@+id/tape_grid_view"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:numColumns="10"
android:gravity="center_vertical|center|center_horizontal"
android:paddingTop="32dp"
android:verticalSpacing="24dp"
android:background="#DDDDDD">
android:background="#DDDDDD"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:paddingLeft="@dimen/small_padding"
android:paddingTop="@dimen/small_padding"
android:horizontalSpacing="@dimen/picto_grid_spacing"
android:verticalSpacing="@dimen/picto_grid_spacing">
</GridView>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/image_border"/>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:id="@+id/picto_grid_item_layout_wrapper"
android:background="@drawable/picto_grid_item_border"
android:padding="@dimen/picto_border_width">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="@dimen/picto_normal_height"
android:id="@+id/picto_grid_item_layout"
android:background="@color/picto_default_background"
android:padding="@dimen/picto_padding">
<ImageView
android:id="@+id/picto_grid_item_image"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/picto_grid_item_redcross"
android:src="@drawable/redcross" />
</FrameLayout>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="picto_default_background" type="color">#CCFFFFFF</item>
<item name="picto_border" type="color">#AA000000</item>
<item name="blue" type="color">#FF33B5E5</item>
<item name="purple" type="color">#FFAA66CC</item>
<item name="green" type="color">#FF99CC00</item>
......
......@@ -2,4 +2,11 @@
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="small_padding">8dp</dimen>
<dimen name="picto_grid_spacing">4dp</dimen>
<dimen name="picto_border_width">1dp</dimen>
<dimen name="picto_padding">4dp</dimen>
<dimen name="picto_normal_height">80dp</dimen>
<dimen name="picto_normal_width">80dp</dimen>
</resources>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment