Version 1.3.2

This commit is contained in:
2018-04-01 22:27:36 +02:00
parent 7af33ee1c8
commit e924d24315
26 changed files with 403 additions and 279 deletions

Binary file not shown.

View File

@@ -23,3 +23,17 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-keepattributes *Annotation*
-keepclassmembers class com.google.**.R$* {
public static <fields>;
}
-keep public class com.google.ads.** {*;}
-keep public class com.google.android.gms.** {*;}
-keep public class com.tappx.** { *; }
-ignorewarnings
-keep class * {
public private *;
}

1
app/release/output.json Normal file
View File

@@ -0,0 +1 @@
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":278,"versionName":"1.3.2","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]

View File

@@ -24,7 +24,6 @@
<activity android:name=".OptsActivity" android:label="Opciones"/>
<activity android:name=".FavsActivity" android:label="Favoritos"/>
<activity android:name=".AboutOfActivity" android:label="Acerca de"/>
<activity android:name=".FirstStartActivity"/>
<receiver
android:name=".Alarm"
android:process=":runalarm" />

View File

@@ -28,45 +28,45 @@ public class Config {
return emContext.getSharedPreferences(SHARED_PREFS_FILE, 0);
}
public Integer getHour(){
Integer getHour(){
return getSettings().getInt(KEY_HOUR, 8);
}
public Integer getMinute(){
Integer getMinute(){
return getSettings().getInt(KEY_MINUTE, 0);
}
public Boolean getNotifOn(){
Boolean getNotifOn(){
return getSettings().getBoolean(KEY_NOTIFON, true);
}
public Boolean getPersistNotifOn(){return getSettings().getBoolean(KEY_PERSISTNOTIFON, false);}
public Boolean getFirstTime(){return getSettings().getBoolean(KEY_FIRSTTIME, true);}
Boolean getPersistNotifOn(){return getSettings().getBoolean(KEY_PERSISTNOTIFON, false);}
Boolean getFirstTime(){return getSettings().getBoolean(KEY_FIRSTTIME, true);}
public void setHour(Integer hour){
void setHour(Integer hour){
SharedPreferences.Editor editor = getSettings().edit();
editor.putInt(KEY_HOUR, hour );
editor.apply();
}
public void setMinute(Integer minute){
void setMinute(Integer minute){
SharedPreferences.Editor editor = getSettings().edit();
editor.putInt(KEY_MINUTE, minute );
editor.apply();
}
public void setNotifOn(Boolean notifon){
void setNotifOn(Boolean notifon){
SharedPreferences.Editor editor = getSettings().edit();
editor.putBoolean(KEY_NOTIFON, notifon );
editor.apply();
}
public void setPersistNotifOn(Boolean notifon){
void setPersistNotifOn(Boolean notifon){
SharedPreferences.Editor editor = getSettings().edit();
editor.putBoolean(KEY_PERSISTNOTIFON, notifon );
editor.apply();
}
public void setFirstTime(Boolean notifon){
void setFirstTime(Boolean firstTime){
SharedPreferences.Editor editor = getSettings().edit();
editor.putBoolean(KEY_FIRSTTIME, notifon );
editor.putBoolean(KEY_FIRSTTIME, firstTime );
editor.apply();
}

View File

@@ -14,7 +14,7 @@ import java.util.Calendar;
import java.util.List;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 10;
private static final int DATABASE_VERSION = 11;
private static final String DATABASE_NAME = "database.db";
private final Context contextdb;
@@ -24,7 +24,7 @@ public class DatabaseHelper extends SQLiteOpenHelper {
}
/** Return the sentence passing the ID of it */
public String getFraseFromID(int IDF){
String getFraseFromID(int IDF){
SQLiteDatabase db = this.getWritableDatabase();
String sentence;
@@ -46,7 +46,7 @@ public class DatabaseHelper extends SQLiteOpenHelper {
}
}
public String getAutorFromID(int IDF){
String getAutorFromID(int IDF){
SQLiteDatabase db = this.getWritableDatabase();
String sentence;
@@ -65,9 +65,22 @@ public class DatabaseHelper extends SQLiteOpenHelper {
}
}
/** get fav or a IDFrase */
Integer getFav(int IDF){
SQLiteDatabase db = this.getWritableDatabase();
try{
Cursor query = db.rawQuery("SELECT IDFrase FROM frasesFav WHERE IDFrase = '"+IDF+"'", null);
Integer ret = query.getCount(); //There is integer because getCount is
query.close();
return ret;
}catch(Exception e){
Log.e("Database",e.toString());
return 0; //If error, better return not fav
}
}
/** Add a sentence as favorite */
public void addFav(int IDF){
void addFav(int IDF){
SQLiteDatabase db = this.getWritableDatabase();
try{
db.execSQL("INSERT INTO frasesFav VALUES('"+IDF+"')");
@@ -77,7 +90,7 @@ public class DatabaseHelper extends SQLiteOpenHelper {
}
/** Del a favorite sentence */
public void delFav(int IDF){
void delFav(int IDF){
SQLiteDatabase db = this.getWritableDatabase();
try{
db.execSQL("DELETE FROM frasesFav WHERE IDFrase='"+IDF+"'");
@@ -87,7 +100,7 @@ public class DatabaseHelper extends SQLiteOpenHelper {
}
/** Returns ID from a day X sentence, if possible */
public Integer getIDFraseDay(int year,int month,int dayOfMonth){
Integer getIDFraseDay(int year,int month,int dayOfMonth){
Calendar cal = Calendar.getInstance();
try {
Integer ret;
@@ -143,14 +156,14 @@ public class DatabaseHelper extends SQLiteOpenHelper {
}
/** Returns ID of today's sentence */
public Integer getIDFraseHoy(){
Integer getIDFraseHoy(){
Calendar cal = Calendar.getInstance();
//Month + 1 because Android starts with month=0
return getIDFraseDay(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH)+1,cal.get(Calendar.DAY_OF_MONTH));
}
/** Returns an array of favorite IDs */
public Integer[] getIDFavs(){
Integer[] getIDFavs(){
SQLiteDatabase db = this.getWritableDatabase();
List<Integer> a = new ArrayList<>();
@@ -167,7 +180,7 @@ public class DatabaseHelper extends SQLiteOpenHelper {
}
/** Returns an array of favorite IDs */
public String[] getAllDaysYet(){
String[] getAllDaysYet(){
SQLiteDatabase db = this.getWritableDatabase();
List<String> a = new ArrayList<>();

View File

@@ -1,30 +0,0 @@
package com.jkanetwork.st.calendariodefrases;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
/**
* Created by kprkpr on 24/03/17.
*/
public class FirstStartActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
Config conf = new Config(this);
conf.setFirstTime(false); /* App opened at least one time */
(findViewById(R.id.btnStart)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent newMA= new Intent(FirstStartActivity.this,MainActivity.class);
startActivity(newMA);
}
});
}
}

View File

@@ -1,8 +1,10 @@
package com.jkanetwork.st.calendariodefrases;
import android.app.AlertDialog;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
@@ -11,17 +13,19 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
import com.marcohc.robotocalendar.RobotoCalendarView.RobotoCalendarListener;
import com.marcohc.robotocalendar.RobotoCalendarView;
import java.text.DateFormatSymbols;
import java.util.Calendar;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.MobileAds;
import com.marcohc.robotocalendar.RobotoCalendarView.RobotoCalendarListener;
import com.marcohc.robotocalendar.RobotoCalendarView;
import java.text.DateFormatSymbols;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity implements RobotoCalendarListener {
@@ -40,6 +44,9 @@ public class MainActivity extends AppCompatActivity implements RobotoCalendarLis
TextView txtfraseTitle;
TextView txtfraseText;
TextView txtfraseAutor;
/* More objects of view */
ImageButton btnFav;
ImageButton btnShare;
@Override
@@ -77,14 +84,25 @@ public class MainActivity extends AppCompatActivity implements RobotoCalendarLis
/* First of all,before loading, see if its the first time using the app */
if (conf.getFirstTime()){
Intent newFA= new Intent(MainActivity.this,FirstStartActivity.class);
startActivity(newFA);
new AlertDialog.Builder(MainActivity.this)
.setTitle("Bienvenido")
.setMessage("Bienvenidos a Calendario de Frases, donde cada día disfrutarás de una nueva cita celebre o de un nuevo refrán que podrás guardar o compartir con tus amigos.\nAdemás, podrás poner una notificación para que te avise de la frase del día a la hora que quieras, por ejemplo, al desperarte.\nRecuerda que no puedes ver frases de los días que no hayan pasado aún con la aplicación.\nEsperamos que la disfrutes.")
.setCancelable(false)
.setPositiveButton("Empecemos", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Nothing
}
}).show();
conf.setFirstTime(false); //Only show first time
}
setContentView(R.layout.activity_main);
txtfraseTitle = (TextView) findViewById(R.id.txt_frasetitle);
txtfraseText = (TextView) findViewById(R.id.txt_frasetext);
txtfraseAutor = (TextView) findViewById(R.id.txt_fraseautor);
txtfraseTitle = findViewById(R.id.txt_frasetitle);
txtfraseText = findViewById(R.id.txt_frasetext);
txtfraseAutor = findViewById(R.id.txt_fraseautor);
btnFav = findViewById(R.id.btnFav);
btnShare = findViewById(R.id.btnShare);
/* Calendar basic settings */
robotoCalendarView = (RobotoCalendarView) findViewById(R.id.calendarPicker);
@@ -96,9 +114,8 @@ public class MainActivity extends AppCompatActivity implements RobotoCalendarLis
MobileAds.initialize(getApplicationContext(), MainActivity.this.getString(R.string.admob_launch_api));
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
mAdView.loadAd(adRequest); //request a new ad
onResume(); /* Here all that as to be refreshed when app opens from background */
/* Configure alarm */
@@ -138,6 +155,39 @@ public class MainActivity extends AppCompatActivity implements RobotoCalendarLis
Toast.makeText(getApplicationContext(), "Copiado al portapapeles", Toast.LENGTH_LONG ).show();
}
});
changeFavImage(); //Fav image button
// SetFavListener
btnFav.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View viewIn) {
if (db.getFav(IDFrase) == 1){
db.delFav(IDFrase);
}else {
db.addFav(IDFrase);
}
changeFavImage();
}
});
// ShareListener
btnShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View viewIn) {
String sentence = txtfraseText.getText().toString();
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, sentence+MainActivity.this.getString(R.string.sharefrom));
startActivity(Intent.createChooser(intent, "Compartir con"));
}
});
}
private void changeFavImage() {
if (db.getFav(IDFrase) == 1){
btnFav.setBackgroundResource(R.drawable.star_on);
}else {
btnFav.setBackgroundResource(R.drawable.star_off);
}
}
@@ -149,37 +199,6 @@ public class MainActivity extends AppCompatActivity implements RobotoCalendarLis
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.proverbmenu_add, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
TextView txtfraseText = (TextView) findViewById(R.id.txt_frasetext);
String sentence = txtfraseText.getText().toString();
switch (item.getItemId()) {
case R.id.copy:
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setPrimaryClip(ClipData.newPlainText("Sentence", sentence+MainActivity.this.getString(R.string.sharefrom)));
Toast.makeText(getApplicationContext(), "Copiado al portapapeles", Toast.LENGTH_LONG ).show();
return true;
case R.id.addfav:
db.addFav(IDFrase);
return true;
case R.id.share:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, sentence+MainActivity.this.getString(R.string.sharefrom));
startActivity(Intent.createChooser(intent, "Compartir con"));
return true;
}
return false;
}
@Override
public void onDayClick(Calendar daySelectedCalendar) {
@@ -198,8 +217,13 @@ public class MainActivity extends AppCompatActivity implements RobotoCalendarLis
}else {
txtfraseTitle.setText(R.string.txt_todaysentence); //Change title (today)
}
//markDates(); TODO El programa borra el día seleccionado al hacerlo
changeFavImage(); //For checking fav image
}
@Override
public void onDayLongClick(Calendar daySelectedCalendar) {
onDayClick(daySelectedCalendar);
}
/** It returns the month name */
public String getMonth(int month) {
@@ -207,11 +231,6 @@ public class MainActivity extends AppCompatActivity implements RobotoCalendarLis
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
@Override
public void onDayLongClick(Calendar daySelectedCalendar) {
onDayClick(daySelectedCalendar);
}
public void markDates() {
robotoCalendarView.clearCalendar();
@@ -219,20 +238,19 @@ public class MainActivity extends AppCompatActivity implements RobotoCalendarLis
String[] IDDays = db.getAllDaysYet();
if (IDDays.length != 0) {
for (int x = 0; x <= IDDays.length - 1; x++) {
//Log.d("Date", "String: " + String.valueOf(IDDays[x]));
Integer year = Integer.parseInt(IDDays[x].substring(0, 4));
Integer month = Integer.parseInt(IDDays[x].substring(4, 6));
Integer day = Integer.parseInt(IDDays[x].substring(6, 8));
if (year.equals(calYear) && month.equals(calMonth)) {
time.set(Calendar.DAY_OF_MONTH, day);
time.set(Calendar.MONTH, month-1);
//Log.d("Date", "Marking: " + day);
robotoCalendarView.markCircleImage1(time);
}
}
}
}
/* Overrides for month plus and minus */
@Override
public void onRightButtonClick() {
@@ -253,4 +271,5 @@ public class MainActivity extends AppCompatActivity implements RobotoCalendarLis
}
markDates();
}
}

View File

@@ -9,7 +9,7 @@ import android.app.Service;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.os.IBinder;
import android.support.v7.app.NotificationCompat;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
@@ -48,7 +48,7 @@ public class NotificationHelper extends Service {
CharSequence ticker = "Frase del día";
CharSequence contentTitle = "Frase de hoy:";
CharSequence contentText = db.getFraseFromID(db.getIDFraseHoy());
NotificationCompat.Builder notibuilder = (android.support.v7.app.NotificationCompat.Builder) new NotificationCompat.Builder(NotificationHelper.this)
NotificationCompat.Builder notibuilder = new NotificationCompat.Builder(NotificationHelper.this,"notif")
.setContentIntent(notifIntent)
.setTicker(ticker)
.setContentTitle(contentTitle)

View File

@@ -114,10 +114,10 @@ public class OptsActivity extends AppCompatActivity {
}
public void setEnabledParts(){
/* I have to set vars again because is out of onCreate */
Spinner notifHour = (Spinner) findViewById(R.id.spinnerHour);
Spinner notifMinute = (Spinner) findViewById(R.id.spinnerMinute);
CheckBox chkalarm = (CheckBox) findViewById(R.id.chk_alarm);
CheckBox chkpersistent = (CheckBox) findViewById(R.id.chk_persistent);
Spinner notifHour = findViewById(R.id.spinnerHour);
Spinner notifMinute = findViewById(R.id.spinnerMinute);
CheckBox chkalarm = findViewById(R.id.chk_alarm);
CheckBox chkpersistent = findViewById(R.id.chk_persistent);
if (chkalarm.isChecked()){
chkpersistent.setEnabled(true);
/* This other checks is chkpersistent checked dependent */

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textStart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:text='Bienvenidos a Calendario de Frases, donde cada día disfrutarás de una nueva cita celebre o de un nuevo refrán que podrás guardar o compartir con tus amigos.\nAdemás, podrás poner una notificación para que te avise de la frase del día a la hora que quieras, por ejemplo, al desperarte.\nEsperamos que la disfrutes.'
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:textSize="18sp" />
<Button
android:id="@+id/btnStart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Empezar" />
</LinearLayout>

View File

@@ -1,7 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:ads="http://schemas.android.com/apk/res-auto">
<TextView
@@ -32,46 +34,65 @@
android:textColor="@android:color/black"
android:textSize="18sp" />
<TextView
android:id="@+id/txt_fraseautor"
<LinearLayout
android:id="@+id/buttonLayout"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_height="36dp"
android:layout_below="@+id/txt_frasetext"
android:layout_gravity="end"
android:layout_marginRight="6dp"
android:layout_marginEnd="6dp"
android:layout_marginTop="4dp"
android:text="(Aqui autor)"
android:textAlignment="textEnd"
android:textColor="#222" />
android:layout_marginLeft="48dp"
android:layout_marginRight="42dp"
android:layout_marginTop="12dp"
android:orientation="horizontal">
<ImageButton
android:id="@+id/btnFav"
android:layout_width="36dp"
android:layout_height="match_parent"
android:layout_marginLeft="12dp"
android:background="@drawable/star_on"
android:scaleType="centerInside" />
<ImageButton
android:id="@+id/btnShare"
android:layout_width="58dp"
android:layout_height="match_parent"
android:layout_marginLeft="8dp"
android:background="@null"
android:paddingTop="2dp"
app:srcCompat="@android:drawable/ic_menu_share" />
<TextView
android:id="@+id/txt_fraseautor"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_gravity="top"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:text="(Aqui autor)"
android:textAlignment="textEnd"
android:textColor="#222" />
</LinearLayout>
<com.marcohc.robotocalendar.RobotoCalendarView
android:id="@+id/calendarPicker"
android:layout_width="match_parent"
android:layout_height="310dp"
android:layout_below="@+id/txt_fraseautor"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/buttonLayout"
android:layout_marginTop="13dp" />
<TextView
android:id="@+id/textView3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/calendarPicker"
android:text="Selecciona un día para ver frases anteriores" />
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
ads:adSize="SMART_BANNER"
ads:adUnitId="@string/banner_ad_unit_id" />
</RelativeLayout>
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id">
</com.google.android.gms.ads.AdView>
</RelativeLayout>

View File

@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="4dp"
android:background="@drawable/fondo_opts"
android:orientation="vertical">
android:orientation="vertical"
android:background="#EBEBEB">
<CheckBox
android:id="@+id/chk_alarm"
@@ -72,4 +73,10 @@
android:layout_height="48dp"
android:text="Guardar cambios" />
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@drawable/fondo_opts" />
</LinearLayout>

View File

@@ -1,106 +1,107 @@
INSERT INTO `autores` VALUES (1,'Jean Cocteau'),
(2,'Friedrich Nietzsche'),
(3,'Proverbio Alemán'),
(4,'Louise L. Hay'),
(5,'Yoshinori Noguchi'),
(6,'Publilio Siro'),
(7,'Isabel de Rumania'),
(8,'Franklin, B.'),
(9,'Refrán'),
(10,'Anaxágoras'),
(11,'David Hume'),
(12,'Albert Einstein'),
(13,'Aristóteles'),
(14,'George Bernard Shaw'),
(15,'Lutero'),
(16,'Pitágoras'),
(17,'Andrés Holguín'),
(18,'Juvenal'),
(19,'Enrique Mariscal'),
(20,'Anónimo'),
(21,'San Agustín'),
(22,'Bertold Brecht'),
(23,'Santo Tomás'),
(24,'Anónimo inglés'),
(25,'Alfred Croiset'),
(26,'Epícteto'),
(27,'Victor Hugo'),
(28,'Steve Jobs'),
(29,'Proverbio Africano'),
(30,'Goete'),
(31,'Rabindranath Tagore'),
(32,'Napoleón'),
(33,'Espartaco'),
(34,'Nicolás Mancini'),
(35,'Eclesiastés'),
(36,'Torres y Villarroel'),
(37,'Luis Rosales'),
(38,'Arnold'),
(39,'Pedro Salinas'),
(40,'Lina Furlan'),
(41,'Séneca'),
(42,'R. Burton'),
(43,'Winston Churchill'),
(44,'Stuart Chase'),
(45,'Victoria Farnsworth'),
(46,'OG Mandino'),
(47,'José de J. Quintero'),
(48,'Peterson'),
(49,'Quevedo'),
(50,'Cicerón'),
(51,'Jacinto Benavente'),
(52,'Henry Fonda'),
(53,'Carlyle'),
(54,'José Ingenieros'),
(55,'Shakespeare'),
(56,'David Goldber'),
(57,'Ortega y Gasset'),
(58,'Miguel Ángel'),
(59,'E. Cioran'),
(60,'Buda'),
(61,'Lord Byron'),
(62,'Espronceda'),
(63,'Adolf Hitler'),
(64,'Mary Lyon'),
(65,'Oscar Wilde'),
(66,'Frank Lloyd'),
(67,'Vincent van Gogh'),
(68,'Salvador Dalí'),
(69,'Leonardo da Vinci'),
(70,'Will Smith'),
(71,'Nikita Jrushchov'),
(72,'Platón'),
(73,'John Maynard Keynes'),
(74,'Bertrand Russell'),
(75,'Kevyn Aucoin'),
(76,'Gandhi'),
(77,'Jonny Depp'),
(78,'Margaret Thatcher'),
(79,'Agatha Christie'),
(80,'Mario Benedetti'),
(81,'Proverbio chino'),
(82,'Noel Clarasó'),
(83,'Pierre Augustin de Beaumarchais'),
(84,'Charles Bukowski'),
(85,'Miguel Delibes'),
(86,'Thomas A. Edison'),
(87,'Amit Kalantri'),
(88,'Paulo Coelho'),
(89,'Woody Allen'),
(90,'Enrique Tierno Galván'),
(91,'Frida Kahlo'),
(92,'Enrique López Albújar'),
(93,'James Dean'),
(94,'Stephen Wright'),
(95,'Jon Bon Jovi'),
(96,'Pablo Picasso'),
(97,'Bill Gates'),
(98,'Jeff Pesis'),
(99,'Charles Darwin'),
(100,'Ralph Waldo Emerson'),
(101,'Julio Cesar'),
(102,'Isaac Newton'),
(103,'Cristóbal Colón'),
INSERT INTO `autores` VALUES
(1,'Jean Cocteau'),
(2,'Friedrich Nietzsche'),
(3,'Proverbio Alemán'),
(4,'Louise L. Hay'),
(5,'Yoshinori Noguchi'),
(6,'Publilio Siro'),
(7,'Isabel de Rumania'),
(8,'Franklin, B.'),
(9,'Refrán'),
(10,'Anaxágoras'),
(11,'David Hume'),
(12,'Albert Einstein'),
(13,'Aristóteles'),
(14,'George Bernard Shaw'),
(15,'Lutero'),
(16,'Pitágoras'),
(17,'Andrés Holguín'),
(18,'Juvenal'),
(19,'Enrique Mariscal'),
(20,'Anónimo'),
(21,'San Agustín'),
(22,'Bertold Brecht'),
(23,'Santo Tomás'),
(24,'Anónimo inglés'),
(25,'Alfred Croiset'),
(26,'Epícteto'),
(27,'Victor Hugo'),
(28,'Steve Jobs'),
(29,'Proverbio Africano'),
(30,'Goethe'),
(31,'Rabindranath Tagore'),
(32,'Napoleón'),
(33,'Espartaco'),
(34,'Nicolás Mancini'),
(35,'Eclesiastés'),
(36,'Torres y Villarroel'),
(37,'Luis Rosales'),
(38,'Arnold'),
(39,'Pedro Salinas'),
(40,'Lina Furlan'),
(41,'Séneca'),
(42,'R. Burton'),
(43,'Winston Churchill'),
(44,'Stuart Chase'),
(45,'Victoria Farnsworth'),
(46,'OG Mandino'),
(47,'José de J. Quintero'),
(48,'Peterson'),
(49,'Quevedo'),
(50,'Cicerón'),
(51,'Jacinto Benavente'),
(52,'Henry Fonda'),
(53,'Carlyle'),
(54,'José Ingenieros'),
(55,'Shakespeare'),
(56,'David Goldber'),
(57,'Ortega y Gasset'),
(58,'Miguel Ángel'),
(59,'E. Cioran'),
(60,'Buda'),
(61,'Lord Byron'),
(62,'Espronceda'),
(63,'Adolf Hitler'),
(64,'Mary Lyon'),
(65,'Oscar Wilde'),
(66,'Frank Lloyd'),
(67,'Vincent van Gogh'),
(68,'Salvador Dalí'),
(69,'Leonardo da Vinci'),
(70,'Will Smith'),
(71,'Nikita Jrushchov'),
(72,'Platón'),
(73,'John Maynard Keynes'),
(74,'Bertrand Russell'),
(75,'Kevyn Aucoin'),
(76,'Gandhi'),
(77,'Jonny Depp'),
(78,'Margaret Thatcher'),
(79,'Agatha Christie'),
(80,'Mario Benedetti'),
(81,'Proverbio chino'),
(82,'Noel Clarasó'),
(83,'Pierre Augustin de Beaumarchais'),
(84,'Charles Bukowski'),
(85,'Miguel Delibes'),
(86,'Thomas A. Edison'),
(87,'Amit Kalantri'),
(88,'Paulo Coelho'),
(89,'Woody Allen'),
(90,'Enrique Tierno Galván'),
(91,'Frida Kahlo'),
(92,'Enrique López Albújar'),
(93,'James Dean'),
(94,'Stephen Wright'),
(95,'Jon Bon Jovi'),
(96,'Pablo Picasso'),
(97,'Bill Gates'),
(98,'Jeff Pesis'),
(99,'Charles Darwin'),
(100,'Ralph Waldo Emerson'),
(101,'Julio Cesar'),
(102,'Isaac Newton'),
(103,'Cristóbal Colón'),
(104,'Khalil Gibran'),
(105,'Sigmund Freud'),
(106,'Arquímedes'),
@@ -117,4 +118,17 @@ INSERT INTO `autores` VALUES (1,'Jean Cocteau'),
(117,'Bob Marley'),
(118,'Abraham Lincoln'),
(119,'Carlomagno'),
(120,'Gengis kan');
(120,'Gengis kan'),
(121,'Voltaire'),
(122,'Andreau Buenafuente'),
(123,'Juan Carlos de Borbón'),
(124,'S. Kent'),
(125,'Francisco Umbral'),
(126,'Mario Vargas Llosa'),
(127,'Antonio Machado'),
(128,'Sofocleto'),
(129,'Jaume Perich'),
(130,'Bob Dylan'),
(131,'Les Luthiers'),
(132,'William Somerset Maugham'),
(133,'Groucho Marx');

View File

@@ -1,4 +1,5 @@
INSERT INTO `frases` VALUES (1,'Un vaso medio vacío de vino es también uno medio lleno, pero una mentira a medias de ningún modo es una media verdad.','1'),
INSERT INTO `frases` VALUES
(1,'Un vaso medio vacío de vino es también uno medio lleno, pero una mentira a medias de ningún modo es una media verdad.','1'),
(2,'A menudo la sensualidad apresura el crecimiento del amor, de modo que la raíz queda débil y es fácil de arrancar.','2'),
(3,'Perdonar no es olvidar, y en el perdón sin olvido sobran palabras y falta corazón.','3'),
(4,'Cada vez que decimos; «No sé », nos cerramos la puerta de nuestra propia fuente de sabiduría, que es infinita.','4'),
@@ -122,15 +123,18 @@ INSERT INTO `frases` VALUES (1,'Un vaso medio vacío de vino es también uno med
(122,'Nadie niega a Dios, sino aquel a quien le conviene que Dios no exista.','21'),
(123,'Ver la paja en el ojo ajeno.','9'),
(124,'Quien ama esperando una recompensa está perdiendo el tiempo.','88'),
(125,'La política es el arte de obtener el dinero de los ricos y el voto de los pobres con el pretexto de proteger a los unos de los otros.','20'), (126,'Los perros tienen pulgas, las personas tienen problemas.','84'),
(125,'La política es el arte de obtener el dinero de los ricos y el voto de los pobres con el pretexto de proteger a los unos de los otros.','20'),
(126,'Los perros tienen pulgas, las personas tienen problemas.','84'),
(127,'El alma se conoce por sus actos.','23'),
(128,'El mundo como lo hemos creado es un proceso de nuestro pensamiento. No puede ser cambiado sin cambiar nuestro pensamiento.','12'),
(129,'No cambies la salud por la riqueza, ni la libertad por el poder.','8'),
(130,'La diferencia entre una democracia y una dictadura consiste en que en la democracia puedes votar antes de obedecer las órdenes.','84'), (131,'No es tarea fácil dirigir a hombres; empujarlos, en cambio, es muy sencillo.','31'),
(130,'La diferencia entre una democracia y una dictadura consiste en que en la democracia puedes votar antes de obedecer las órdenes.','84'),
(131,'No es tarea fácil dirigir a hombres; empujarlos, en cambio, es muy sencillo.','31'),
(132,'Reza como si todo dependiera de Dios. Trabaja como si todo dependiera de ti.','21'),
(133,'La posibilidad de realizar un sueño es lo que hace que la vida sea interesante.','88'),
(134,'Un pueblo sin literatura es un pueblo mudo.','85'),
(135,'El hombre que odia a sus víctimas únicamente odia a quien todavía no ha podido perjudicar.','82'), (136,'Si me das pescado, comeré hoy, si me enseñas a pescar podré comer mañana.','81'),
(135,'El hombre que odia a sus víctimas únicamente odia a quien todavía no ha podido perjudicar.','82'),
(136,'Si me das pescado, comeré hoy, si me enseñas a pescar podré comer mañana.','81'),
(137,'Conócete, acéptate, supérate.','21'),
(138,'Asume una virtud si no la tienes.','55'),
(139,'Mi ambición se ve obstaculizada por mi pereza.','84'),
@@ -150,8 +154,9 @@ INSERT INTO `frases` VALUES (1,'Un vaso medio vacío de vino es también uno med
(153,'La vida es como una bicicleta. Para mantener el equilibrio tienes que seguir adelante.','12'),
(154,'El hombre siempre es enemigo natural de otro hombre desconocido. La amistad es un estado de excepción y el amor una excepción rarísima.','82'),
(155,'La honradez reconocida es el más seguro de los juramentos.','8'),
(156,'Si lloras por haber perdido el sol, las lágrimas no te dejarán ver las estrellas.','31'), (157,'Como una cura para la preocupación, el trabajo es mejor que el whisky.','86'),
(158,'La verdad, cuando se dice, parece una cosa pequeña e insignificante; sin embargo, por lo que pesa en tu interior, es inmensa y complicadísima.','82'),
(156,'Si lloras por haber perdido el sol, las lágrimas no te dejarán ver las estrellas.','31'),
(157,'Como una cura para la preocupación, el trabajo es mejor que el whisky.','86'),
(158,'La verdad, cuando se dice, parece una cosa pequeña e insignificante; sin embargo, por lo que pesa en tu interior, es inmensa y complicadísima.','82'),
(159,'Hay una razón para que las personas de tu pasado no estén en tu futuro.','88'),
(160,'Una vez al año es lícito hacer locuras.','21'),
(161,'Convertid un árbol en leña y podrá arder para vosotros; pero ya no producirá flores ni frutos.','31'),
@@ -165,8 +170,10 @@ INSERT INTO `frases` VALUES (1,'Un vaso medio vacío de vino es también uno med
(169,'Cuando el deshonor es público, es preciso que también lo sea la venganza.','83'),
(170,'La fragilidad del inocente, fortalece al culpable.','20'),
(171,'El tiempo discurre como el río: no vuelve.','81'),
(172,'La soberbia no es grandeza sino hinchazón; y lo que está hinchado parece grande pero no está sano.','21'), (173,'Para la cólera y el para el amor, todo lo que se aplaza se pierde.','83'),
(174,'Sólo una cosa vuelve un sueño imposible: el miedo a fracasar.','88'), (175,'Cuando una medicina no hace daño deberíamos alegrarnos y no exigir además que sirva para algo.','83'),
(172,'La soberbia no es grandeza sino hinchazón; y lo que está hinchado parece grande pero no está sano.','21'),
(173,'Para la cólera y el para el amor, todo lo que se aplaza se pierde.','83'),
(174,'Sólo una cosa vuelve un sueño imposible: el miedo a fracasar.','88'),
(175,'Cuando una medicina no hace daño deberíamos alegrarnos y no exigir además que sirva para algo.','83'),
(176,'Cuando se habla de estar enamorado como un loco se exagera; en general, se está enamorado como un tonto.','82'),
(177,'Muchos de los fracasos vitales son de gente que no se dieron cuenta lo cerca que estaban del éxito cuando se rindieron.','86'),
(178,'No alcanzas el éxito cuando celebras tus triunfos. Sino cuando superas tus fracasos.','20'),
@@ -183,7 +190,6 @@ INSERT INTO `frases` VALUES (1,'Un vaso medio vacío de vino es también uno med
(189,'La mayor desgracia de la juventud actual es ya no pertenecer a ella.','68'),
(190,'El éxito es caer nueve veces y levantarse diez.','95'),
(191,'Sueña como si fueras a vivir para siempre, vive como si fueras a morir hoy.','93'),
(192,'El propósito del arte es el lavado del polvo de la vida cotidiana de nuestras almas.','96'),
(193,'La bebida engendra tristezas pensativas de elefante o alegrías ruidosas de mono.','92'),
(194,'La ciencia daña tanto a los que no saben servirse de ella, cuanto es útil a los demás.','10'),
@@ -287,4 +293,54 @@ INSERT INTO `frases` VALUES (1,'Un vaso medio vacío de vino es también uno med
(292,'Del hablador he aprendido a callar; del intolerante, a ser indulgente, y del malévolo a tratar a los demás con amabilidad. Y por curioso que parezca, no siento ninguna gratitud hacia esos maestros.','104'),
(293,'Convendría sentir menos curiosidad por las personas y más por las ideas.','113'),
(294,'Los instintos naturales se pierden en estado doméstico.','99'),
(295,'En las horas de peligro es cuando la patria conoce el quilate de sus hijos.','50');
(295,'En las horas de peligro es cuando la patria conoce el quilate de sus hijos.','50'),
(296,'Para solucionar el problema de la vista cansada basta con mirar una cama durante diez minutos o una silla durante veinte.','129'),
(297,'El gilipollas por definición lo es de cuerpo entero. Se es gilipollas como se es pícnico, barbero, coronel, sastre, canónigo o notario: de una manera genérica y vocacional.','125'),
(298,'La incertidumbre es una margarita cuyos pétalos no se terminan jamás de deshojar.','126'),
(299,'Nunca subo a una balanza porque sé que me va a pesar.','128'),
(300,'Hay quienes sólo utilizan las palabras para disfrazar sus pensamientos.','121'),
(301,'Seguiré dando guerra mientras el cuerpo aguante.','123'),
(302,'Los indios no eran los únicos con pluma por el lejano oeste.','122'),
(303,'La gloria, la fama, la unanimidad es un espejismo. Siempre parecen más brillantes en otro.','125'),
(304,'Converso con el hombre que siempre va conmigo. Quien habla solo, espera hablar con Dios un día.','127'),
(305,'La psiquiatría es el único negocio donde el cliente nunca tiene la razón.','124'),
(306,'Lo importante no es saber, sino tener el teléfono del que sabe.','131'),
(307,'A las cuatro de la mañana nunca se sabe si es demasiado tarde o demasiado temprano.','128'),
(308,'El mal educado cena ejecutando un concierto de sopa.','128'),
(309,'Lo que le concedemos a la memoria quizá se lo quitamos a la especulación.','125'),
(310,'El que lo piensa todo primero, no escribe nada después.','125'),
(311,'No soy un completo inútil. Por lo menos sirvo de mal ejemplo.','131'),
(312,'Quienes creen que el dinero lo hace todo, terminan haciendo todo por dinero.','121'),
(313,'La ignorancia afirma o niega rotundamente; la ciencia duda.','121'),
(314,'No te tomes la vida en serio, al fin y al cabo no saldrás vivo de ella.','131'),
(315,'Tener la conciencia limpia es síntoma de mala memoria.','131'),
(316,'Me gustan los reincidentes porque no cambian de idea.','128'),
(317,'Acepto el caos, pero no estoy seguro de que el caos me acepte a mí.','130'),
(318,'Nadie es libre. Hasta los pájaros están encadenados al cielo.','130'),
(319,'Hay un mundo mejor, pero es carísimo.','122'),
(320,'Una guerra es el fracaso de la razón.','122'),
(321,'Se puede aprender mucho sobre el amor en el cine... si no nos distrae la película.','20'),
(322,'A veces no basta con saber qué significan las cosas, a veces tienes que saber qué no significan.','130'),
(323,'El talento no se destruye, se transforma y sobrevive a los artistas.','122'),
(324,'La gente no busca razones para hacer lo que quiere hacer, busca excusas.','132'),
(325,'Sólo quien ha comido ajo puede darnos una palabra de aliento.','128'),
(326,'Qué desagradable resulta caerle bien a la gente que te cae mal.','129'),
(327,'En tiempos de hipocresía, cualquier sinceridad parece cinismo.','132'),
(328,'Si el dinero pudiera hablar me diría Adiós.','132'),
(329,'Cuando sólo se piensa en el pasado, es que no se tiene futuro.','132'),
(330,'El que revela el secreto de otros pasa por traidor; el que revela el propio secreto pasa por imbécil.','121'),
(331,'A un tontaina le dijeron que su mujer lo engañaba con su mejor amigo, y mato al perro.','131'),
(332,'Dios hizo el mundo en seis días. Hasta el momento nadie se ha podido explicar a qué venía tanta prisa. Así ha quedado como ha quedado.','129'),
(333,'Mis amigos me dicen que soy muy agresivo, pero me lo dicen a gritos.','129'),
(334,'La gente te pide críticas, pero en realidad sólo quiere halagos.','132'),
(335,'Tres clases hay de ignorantes: no saber lo que debiera saberse, saber mal lo que se sabe, y saber lo que no debiera saberse.','132'),
(336,'Un filósofo es un tipo que sube a una cumbre en busca del sol; encuentra niebla, desciende y explica el magnífico espectáculo que ha visto.','132'),
(337,'El dolor une, a veces, pero no enseña a vivir.','132'),
(338,'El amor, si no es pasión, no es amor, sino otra cosa; y la pasión se alimenta menos de satisfacción que de obstáculos.','132'),
(339,'Optimista es aquél que cree poder resolver un atasco de tráfico tocando el claxon.','20'),
(340,'Los avaros se mueren sin dar el último suspiro.','128'),
(341,'El embarazo es la concepción que confirma la regla.','128'),
(342,'La inteligencia me persigue pero yo soy más rápido.','133'),
(343,'Buscamos la felicidad, pero sin saber dónde, como los borrachos buscan su casa, sabiendo que tienen una.','121'),
(344,'Hay dos tipos de patriotas: el que ama a su país y el que ama al gobierno de su país. Lógicamente los gobiernos consideran más patriotas a estos últimos.','129'),
(345,'Un optimista es el que cree que todo tiene arreglo. Un pesimista es el que piensa lo mismo, pero sabe que nadie va a intentarlo.','129');

View File

@@ -1,2 +1,2 @@
#Sun Dec 17 00:34:30 CET 2017
VERSION_CODE=188
#Sun Apr 01 19:07:48 CEST 2018
VERSION_CODE=278