Initial commit
41
.gitignore
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
## Android Studio 3 gitignore file
|
||||
## It ignores also config files for making full portable into different computers
|
||||
#built application files
|
||||
*.apk
|
||||
*.ap_
|
||||
|
||||
# files for the dex VM
|
||||
*.dex
|
||||
|
||||
# Java class files
|
||||
*.class
|
||||
|
||||
# generated files
|
||||
bin/
|
||||
gen/
|
||||
|
||||
# Local configuration file (sdk path, etc)
|
||||
local.properties
|
||||
|
||||
# Windows thumbnail db
|
||||
Thumbs.db
|
||||
|
||||
# OSX files
|
||||
.DS_Store
|
||||
|
||||
# Android Studio
|
||||
*.iml
|
||||
.idea
|
||||
#.idea/workspace.xml - remove # and delete .idea if it better suit your needs.
|
||||
.gradle
|
||||
build/
|
||||
.navigation
|
||||
captures/
|
||||
output.json #Since Android Studio 3.0
|
||||
|
||||
#NDK
|
||||
obj/
|
||||
.externalNativeBuild
|
||||
|
||||
#Admob strings
|
||||
app/src/main/res/values/admob.xml
|
||||
21
README.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Codigo fuente de "Frases de Anime"
|
||||
|
||||
Frases de Anime es una aplicacion para Android en la que todos los días tendrás una nueva frase de una serie Anime o película en tus notificaciones
|
||||
|
||||
Podrás ver frases anteriores, marcar como favoritos, o compartirlas con tus amigos
|
||||
|
||||
## Requisitos para compilarla
|
||||
|
||||
Android Studio 3.0+
|
||||
|
||||
Kotlin
|
||||
|
||||
Anko (Debería descargarse automáticamente)
|
||||
|
||||
## Problemas al compilar la aplicación
|
||||
|
||||
La aplicación puede dar problemas de compilación al faltar las claves API de Admob (No subidas porque son propias, evitamos un mal uso de la API). En res/strings.xml hay unas de ejemplo, deberían valer
|
||||
|
||||
## Licencia
|
||||
|
||||
Mire el fichero LICENSE.md para detalles, usamos licencia GPL
|
||||
58
app/build.gradle
Normal file
@@ -0,0 +1,58 @@
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android' // apply kotlin android plugin
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
|
||||
def anko_version = '0.10.1'
|
||||
android {
|
||||
compileSdkVersion 26
|
||||
buildToolsVersion '26.0.2'
|
||||
defaultConfig {
|
||||
applicationId "com.jkanetwork.st.com.jkanetwork.st.frasesdeanime"
|
||||
minSdkVersion 17
|
||||
targetSdkVersion 26
|
||||
// Sube automáticamente la build en cada compilacion
|
||||
def versionPropsFile = file('versioncode.count')
|
||||
Properties versionProps = new Properties()
|
||||
versionProps.load(new FileInputStream(versionPropsFile))
|
||||
def code = versionProps['VERSION_CODE'].toInteger() + 1
|
||||
versionProps['VERSION_CODE'] = code.toString()
|
||||
versionProps.store(versionPropsFile.newWriter(), null)
|
||||
// Fin de subir automáticamente la build en cada compilación
|
||||
versionName "1.0"
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
productFlavors {
|
||||
}
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main.java.srcDirs += 'src/main/kotlin'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile fileTree(include: ['*.jar'], dir: 'libs')
|
||||
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
|
||||
exclude group: 'com.android.support', module: 'support-annotations'
|
||||
})
|
||||
compile 'com.android.support:appcompat-v7:26.1.0'
|
||||
compile 'com.android.support.constraint:constraint-layout:1.0.2'
|
||||
compile "org.jetbrains.anko:anko-sqlite:$anko_version"
|
||||
compile "org.jetbrains.anko:anko-commons:$anko_version"
|
||||
// Anko Layouts
|
||||
compile "org.jetbrains.anko:anko-sdk25:$anko_version"
|
||||
// sdk15, sdk19, sdk21, sdk23 are also available
|
||||
compile "org.jetbrains.anko:anko-appcompat-v7:$anko_version"
|
||||
// Coroutine listeners for Anko Layouts
|
||||
compile "org.jetbrains.anko:anko-sdk25-coroutines:$anko_version"
|
||||
compile "org.jetbrains.anko:anko-appcompat-v7-coroutines:$anko_version"
|
||||
compile 'com.github.mirrajabi:kotlin-preferences-extensions:1.0'
|
||||
compile 'com.android.support:recyclerview-v7:26.1.0'
|
||||
compile 'com.google.android.gms:play-services-ads:11.6.2'
|
||||
testCompile 'junit:junit:4.12'
|
||||
}
|
||||
25
app/proguard-rules.pro
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# By default, the flags in this file are appended to flags specified
|
||||
# in /home/kprkpr/AndroidStudio/sdkLinux/tools/proguard/proguard-android.txt
|
||||
# You can edit the include path and order by changing the proguardFiles
|
||||
# directive in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# Add any project specific keep options here:
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
||||
1
app/release/output.json
Normal file
@@ -0,0 +1 @@
|
||||
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":-1},"path":"app-release.apk","properties":{"packageId":"com.jkanetwork.st.com.jkanetwork.st.frasesdeanime","split":"","minSdkVersion":"17"}}]
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.jkanetwork.st.frasesdeanime;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.test.InstrumentationRegistry;
|
||||
import android.support.test.runner.AndroidJUnit4;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Instrumentation test, which will execute on an Android device.
|
||||
*
|
||||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
*/
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class ExampleInstrumentedTest {
|
||||
@Test
|
||||
public void useAppContext() throws Exception {
|
||||
// Context of the app under test.
|
||||
Context appContext = InstrumentationRegistry.getTargetContext();
|
||||
|
||||
assertEquals("com.jkanetwork.st.com.jkanetwork.st.frasesdeanime", appContext.getPackageName());
|
||||
}
|
||||
}
|
||||
37
app/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.jkanetwork.st.frasesdeanime">
|
||||
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<!-- For Admob -->
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity android:name=".MainActivity">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name=".FavsActivity" />
|
||||
<activity android:name=".AnimesSelActivity" />
|
||||
<activity android:name=".OptsActivity" />
|
||||
<activity android:name=".AboutActivity" />
|
||||
<receiver android:process=":alarm" android:name=".AlarmNotif" android:enabled="true" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED"/>
|
||||
<action android:name="com.jkanetwork.st.frasesdeanime.notif" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.jkanetwork.st.frasesdeanime
|
||||
|
||||
import android.os.Bundle
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.content.Context
|
||||
|
||||
/**
|
||||
* Created by kprkpr on 30/08/17.
|
||||
*/
|
||||
class AboutActivity : AppCompatActivity(){
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_about)
|
||||
}
|
||||
|
||||
/*override fun onBackPressed() {
|
||||
startActivity<MainActivity>()
|
||||
}*/
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.jkanetwork.st.frasesdeanime
|
||||
|
||||
import android.app.Notification
|
||||
import android.app.NotificationManager
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import java.util.Calendar
|
||||
import android.app.AlarmManager
|
||||
import android.support.v4.app.NotificationCompat
|
||||
import android.app.PendingIntent
|
||||
|
||||
/*
|
||||
Help of: https://github.com/okwrtdsh/AlarmTest/blob/master/app/src/main/kotlin/com/github/okwrtdsh/alarmtest/AlarmBroadcastReceiver.kt
|
||||
|
||||
*/
|
||||
|
||||
class AlarmNotif : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context, intent: Intent?) {
|
||||
var db = SQLiteHelper(context)
|
||||
var P = Prefs(context)
|
||||
val time = Calendar.getInstance()
|
||||
var frase = db.getSentenceFromIDF(db.getIDFraseHoy())
|
||||
var anime = db.getAnimeFromIDF(db.getIDFraseHoy())
|
||||
val nm = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||
val alarmMgr = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
|
||||
|
||||
nm.cancel(1);
|
||||
val notificationBuilder = NotificationCompat.Builder(context, "STN")
|
||||
.setContentTitle(anime)
|
||||
.setStyle(NotificationCompat.BigTextStyle().bigText(frase))
|
||||
.setSmallIcon(R.mipmap.ic_launcher)
|
||||
.setContentText(frase)
|
||||
.setWhen(System.currentTimeMillis())
|
||||
.setContentIntent(PendingIntent.getActivity(context, 0, Intent(context, MainActivity::class.java), 0))
|
||||
|
||||
var noti = notificationBuilder.build();
|
||||
|
||||
if (P.getPersNotifOn() == true) {
|
||||
noti.flags = Notification.FLAG_ONGOING_EVENT
|
||||
}
|
||||
|
||||
nm.notify(1,noti);
|
||||
|
||||
if (P.getPersNotifOn() == true) {
|
||||
/* Do notif change all days */
|
||||
time.add(Calendar.DATE, 1)
|
||||
time.set(Calendar.HOUR_OF_DAY, 0)
|
||||
time.set(Calendar.MINUTE, 0)
|
||||
time.set(Calendar.SECOND, 1)
|
||||
val sender = PendingIntent.getBroadcast(context, 1, Intent(context, AlarmNotif::class.java), 0)
|
||||
alarmMgr.setRepeating(AlarmManager.RTC, time.getTimeInMillis(), AlarmManager.INTERVAL_DAY, sender) // Repeat every day
|
||||
}else{ /* For boot actions */
|
||||
putAlarm(context)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
package com.jkanetwork.st.frasesdeanime
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.view.View
|
||||
import android.widget.SimpleAdapter
|
||||
import android.widget.ListView
|
||||
import android.widget.TextView
|
||||
import android.widget.Button
|
||||
import org.jetbrains.anko.*
|
||||
import org.jetbrains.anko.support.v4.UI
|
||||
import org.jetbrains.anko.support.v4.find
|
||||
import android.widget.Toast
|
||||
import android.util.Log
|
||||
|
||||
|
||||
import android.support.v4.content.ContextCompat.startActivity
|
||||
import android.content.Intent
|
||||
import android.widget.AdapterView
|
||||
|
||||
|
||||
/**
|
||||
* Created by kprkpr on 25/07/17.
|
||||
* Help: https://www.youtube.com/watch?v=x-M1L6tcsLo
|
||||
*/
|
||||
class AnimesSelActivity : AppCompatActivity(){
|
||||
val act = this /* Activity Context */
|
||||
|
||||
/* For DSL bind */
|
||||
lateinit var view_list : ListView
|
||||
lateinit var btn_exit : Button
|
||||
lateinit var btn_sel : Button
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
/** Layout in DSL */
|
||||
verticalLayout {
|
||||
linearLayout {
|
||||
btn_exit = button("Volver");
|
||||
btn_sel = button("Seleccionar todos").lparams(width = matchParent);
|
||||
}
|
||||
view_list = listView {
|
||||
}.lparams(width = matchParent, height = matchParent) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
val data = ArrayList<HashMap<String,String>>()
|
||||
var db = SQLiteHelper(applicationContext)
|
||||
val listIDs = db.getAllAnimeIDs()
|
||||
var listNames = db.getAllAnimeNames()
|
||||
val length = listIDs.size
|
||||
|
||||
|
||||
if (db.getAllAnimeSel()){ //If all selected
|
||||
btn_sel.setText("Deseleccionar todos")
|
||||
}else{
|
||||
btn_sel.setText("Seleccionar todos")
|
||||
}
|
||||
|
||||
for (i in 0..length -1){
|
||||
val item = HashMap<String, String>()
|
||||
item.put("anime",listNames[i])
|
||||
if (db.getAnimeSel(listIDs[i]) == true) {
|
||||
item.put("selected", "Seleccionado")
|
||||
}else{
|
||||
item.put("selected", "No seleccionado")
|
||||
}
|
||||
data.add(item)
|
||||
}
|
||||
|
||||
var adapter = SimpleAdapter(this,data,android.R.layout.simple_list_item_2,
|
||||
arrayOf("anime","selected"), intArrayOf(android.R.id.text1,android.R.id.text2))
|
||||
|
||||
view_list.adapter = adapter
|
||||
|
||||
/* For selected item, change status */
|
||||
view_list.setOnItemClickListener(object : AdapterView.OnItemClickListener{
|
||||
override fun onItemClick (parent: AdapterView<*>, view: View, pos: Int, id: Long){
|
||||
db.setAnimeSel(listIDs[pos])
|
||||
restartActivity(act)
|
||||
}
|
||||
})
|
||||
|
||||
btn_sel.setOnClickListener() {
|
||||
db.setAllAnimeSel()
|
||||
restartActivity(act)
|
||||
}
|
||||
|
||||
//"Return" to main
|
||||
btn_exit.setOnClickListener() {
|
||||
startActivity<MainActivity>()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/** On back go to main */
|
||||
override fun onBackPressed() {
|
||||
startActivity<MainActivity>()
|
||||
}
|
||||
|
||||
}
|
||||
83
app/src/main/kotlin/com/jkanetwork/st/frasesdeanime/App.kt
Normal file
@@ -0,0 +1,83 @@
|
||||
package com.jkanetwork.st.frasesdeanime
|
||||
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.content.Intent
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.app.PendingIntent
|
||||
import java.util.Calendar
|
||||
import android.app.AlarmManager
|
||||
import android.util.Log
|
||||
import android.app.Notification
|
||||
import android.app.NotificationManager
|
||||
|
||||
/**
|
||||
* Created by kprkpr on 18/07/17.
|
||||
* Here, functions for using in every part of app
|
||||
*/
|
||||
|
||||
|
||||
/** Restart activity without doing animations for refresh favs
|
||||
* @param act: Use "this.intent"
|
||||
* */
|
||||
fun restartActivity(act: AppCompatActivity){
|
||||
val intent = act.intent
|
||||
act.overridePendingTransition(0, 0)
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
|
||||
act.finish()
|
||||
act.overridePendingTransition(0, 0)
|
||||
act.startActivity(intent)
|
||||
}
|
||||
|
||||
|
||||
/* Call for putting alarm */
|
||||
fun putAlarm(context: Context) {
|
||||
var P = Prefs(context)
|
||||
//val nm = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||
/* Common vars for alarm config */
|
||||
val alarmMgr = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
|
||||
val sender = PendingIntent.getBroadcast(context, 1, Intent(context, AlarmNotif::class.java), 0)
|
||||
|
||||
/* Cancel alarm first */
|
||||
alarmMgr.cancel(sender)
|
||||
//nm.cancel(1);
|
||||
|
||||
|
||||
var time = Calendar.getInstance()
|
||||
if (P.getNotifOn()) {
|
||||
if (P.getPersNotifOn()) { /* Persistent */
|
||||
var intent = Intent()
|
||||
intent.setAction("com.jkanetwork.st.com.jkanetwork.st.frasesdeanime.notif")
|
||||
context.sendBroadcast(intent)
|
||||
|
||||
}else{ /* At x hour every day */
|
||||
|
||||
/* Here set the alarm to one time a day in selected date. Default: 8AM */
|
||||
/* Shedechule Alarm for tomorrow instead before now if alarm set to before. */
|
||||
if (time.get(Calendar.HOUR_OF_DAY) > P.getHour() || ( time.get(Calendar.HOUR_OF_DAY) == P.getHour() && time.get(Calendar.MINUTE) > P.getMinute())) {
|
||||
/* Add a day */
|
||||
time.add(Calendar.DATE, 1)
|
||||
}
|
||||
time.set(Calendar.HOUR_OF_DAY, P.getHour())
|
||||
time.set(Calendar.MINUTE, P.getMinute())
|
||||
time.set(Calendar.SECOND, 0)
|
||||
Log.d("STLOG (Next)", time.getTime().toString())
|
||||
alarmMgr.setRepeating(AlarmManager.RTC, time.getTimeInMillis(), AlarmManager.INTERVAL_DAY, sender) // Repeat every day
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class App : Application() {
|
||||
|
||||
companion object {
|
||||
|
||||
}
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package com.jkanetwork.st.frasesdeanime
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.content.Intent
|
||||
import android.view.View
|
||||
import android.widget.SimpleAdapter
|
||||
import android.widget.ListView
|
||||
import android.widget.TextView
|
||||
import android.view.ContextMenu
|
||||
import android.view.MenuItem
|
||||
import android.widget.AdapterView
|
||||
import android.content.ClipboardManager
|
||||
import android.content.ClipData
|
||||
import org.jetbrains.anko.*
|
||||
|
||||
//import kotlinx.android.synthetic.main.activity_simplelistview.*
|
||||
|
||||
/**
|
||||
* Created by kprkpr on 25/07/17.
|
||||
* Help: https://www.youtube.com/watch?v=x-M1L6tcsLo
|
||||
*/
|
||||
class FavsActivity : AppCompatActivity(){
|
||||
|
||||
/* For DSL bind */
|
||||
lateinit var view_list : ListView
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
/** Layout in DSL */
|
||||
verticalLayout {
|
||||
view_list = listView {
|
||||
}.lparams(width = matchParent, height = matchParent) {
|
||||
}
|
||||
}
|
||||
|
||||
val data = ArrayList<HashMap<String,String>>()
|
||||
var db = SQLiteHelper(applicationContext)
|
||||
val listIDFrases = db.getAllIDFavs()
|
||||
val length = listIDFrases.size
|
||||
|
||||
for (i in 0..length -1){
|
||||
val item = HashMap<String, String>()
|
||||
item.put("sentence",db.getSentenceFromIDF(listIDFrases[i]))
|
||||
item.put("anime",db.getAnimeFromIDF(listIDFrases[i]))
|
||||
data.add(item)
|
||||
}
|
||||
|
||||
view_list.adapter = SimpleAdapter(this,data,android.R.layout.simple_list_item_2,
|
||||
arrayOf("sentence","anime"), intArrayOf(android.R.id.text1,android.R.id.text2))
|
||||
|
||||
registerForContextMenu(view_list)
|
||||
|
||||
}
|
||||
|
||||
override fun onCreateContextMenu(menu: ContextMenu, v: View,
|
||||
menuInfo: ContextMenu.ContextMenuInfo) {
|
||||
super.onCreateContextMenu(menu, v, menuInfo)
|
||||
val inflater = getMenuInflater()
|
||||
inflater.inflate(R.menu.menu_favsentence, menu)
|
||||
}
|
||||
|
||||
|
||||
override fun onContextItemSelected(item: MenuItem): Boolean {
|
||||
val info = item.getMenuInfo() as AdapterView.AdapterContextMenuInfo
|
||||
val obj = view_list.getItemAtPosition(info.position) as HashMap<String, String>
|
||||
|
||||
when (item.getItemId()) {
|
||||
R.id.copy -> {
|
||||
var clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
||||
clipboard.setPrimaryClip(ClipData.newPlainText("Sentence", "${obj.get("sentence")} (${obj.get("anime")}) \n ${this.getString(R.string.sharefrom)}"))
|
||||
toast("Copiado al portapapeles")
|
||||
return true
|
||||
}
|
||||
R.id.delfav -> {
|
||||
var db = SQLiteHelper(applicationContext)
|
||||
val IDFavs = db.getAllIDFavs()
|
||||
db.setFav(IDFavs[info.position])
|
||||
restartActivity(this)
|
||||
return true
|
||||
}
|
||||
R.id.share -> {
|
||||
share("${obj.get("sentence")} (${obj.get("anime")}) \n ${this.getString(R.string.sharefrom)}")
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,252 @@
|
||||
package com.jkanetwork.st.frasesdeanime
|
||||
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.os.Bundle
|
||||
import org.jetbrains.anko.*
|
||||
import android.util.Log
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.view.Menu
|
||||
import android.view.View
|
||||
//import android.view.ImageView
|
||||
import android.view.MenuItem
|
||||
import java.util.Calendar
|
||||
import java.text.DateFormatSymbols
|
||||
import android.support.v4.view.ViewPager
|
||||
import android.widget.Toast
|
||||
|
||||
import kotlinx.android.synthetic.main.activity_main.*
|
||||
|
||||
/* Ads */
|
||||
import com.google.android.gms.ads.AdRequest;
|
||||
import com.google.android.gms.ads.MobileAds;
|
||||
import com.google.android.gms.ads.reward.RewardItem;
|
||||
import com.google.android.gms.ads.reward.RewardedVideoAd;
|
||||
import com.google.android.gms.ads.reward.RewardedVideoAdListener;
|
||||
import android.text.method.ScrollingMovementMethod
|
||||
|
||||
|
||||
class MainActivity : AppCompatActivity(), RewardedVideoAdListener {
|
||||
|
||||
// Overrides for making it compile ok, it needs all methods
|
||||
override fun onRewardedVideoAdLeftApplication() {}
|
||||
override fun onRewardedVideoAdClosed() {}
|
||||
override fun onRewardedVideoAdFailedToLoad(errorCode: Int) {}
|
||||
override fun onRewardedVideoAdLoaded() {}
|
||||
override fun onRewardedVideoAdOpened() {}
|
||||
override fun onRewardedVideoStarted() {}
|
||||
|
||||
|
||||
/* Prefs, database init and calendar data */
|
||||
lateinit var P: Prefs
|
||||
lateinit var db: SQLiteHelper
|
||||
var cal = Calendar.getInstance()
|
||||
var dayS = cal.get(Calendar.DAY_OF_MONTH)
|
||||
var monthS = cal.get(Calendar.MONTH)+1
|
||||
var yearS = cal.get(Calendar.YEAR)
|
||||
|
||||
var IDFraseS = -2 /* Error if not changes */
|
||||
|
||||
lateinit var mRewardedVideoAd: RewardedVideoAd
|
||||
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_main);
|
||||
|
||||
P = Prefs(applicationContext)
|
||||
db = SQLiteHelper(applicationContext)
|
||||
|
||||
|
||||
/* Ads */
|
||||
// Initialize the Mobile Ads SDK.
|
||||
MobileAds.initialize(this, this.getString(R.string.admob_id))
|
||||
|
||||
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this)
|
||||
mRewardedVideoAd.setRewardedVideoAdListener(this);
|
||||
|
||||
preloadAd()
|
||||
|
||||
/* Check if first time or not, for welcoming user */
|
||||
if (P.getFirstTime() == true){
|
||||
alert("Bienvenido a Frases de anime! Un lugar donde puedes descubrir las frases de tus animes favoritos, todos los días!\n" +
|
||||
"Selecciona de la siguiente lista los que más te gusten para empezar."){
|
||||
positiveButton("Empezemos") {startActivity<AnimesSelActivity>()}
|
||||
}.show()
|
||||
|
||||
}else {
|
||||
/* Check if no anime is selected */
|
||||
if (db.getCountAnimeSel() == 0) {
|
||||
alert("No tienes ningún anime seleccionado, ¿Quieres seleccionarlos ahora?", "No hay animes seleccionados") {
|
||||
positiveButton("Si") { startActivity<AnimesSelActivity>() }
|
||||
negativeButton("No") { }
|
||||
}.show()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
txt_sentence.setMovementMethod(ScrollingMovementMethod()) //Make sentence text scrollable
|
||||
|
||||
/* Button listeners */
|
||||
btn_fav.setOnClickListener() {
|
||||
db.setFav(IDFraseS)
|
||||
if (db.getFav(IDFraseS) == true) {
|
||||
btn_fav.setBackgroundResource(R.drawable.star_on);
|
||||
}else{
|
||||
btn_fav.setBackgroundResource(R.drawable.star_off);
|
||||
}
|
||||
}
|
||||
|
||||
btn_share.setOnClickListener() {
|
||||
share("${txt_sentence.text} (${txt_anime.text}) \n ${this.getString(R.string.sharefrom)}")
|
||||
}
|
||||
|
||||
btn_change.setOnClickListener() {
|
||||
if (mRewardedVideoAd.isLoaded() && IDFraseS > 0) {
|
||||
mRewardedVideoAd.show();
|
||||
}else if (IDFraseS <= 0) {
|
||||
alert("Aquí no puedes ver una frase aún, no sirve de nada pulsar el botón") {
|
||||
positiveButton("Ok") { }
|
||||
}.show()
|
||||
}else{
|
||||
alert("Aún no hay un anuncio disponible, espere") {
|
||||
positiveButton("Ok") { }
|
||||
}.show()
|
||||
preloadAd()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
btn_prev.setOnClickListener() {
|
||||
//toast("Anterior")
|
||||
if (dayS == 1){
|
||||
if (monthS == 1){
|
||||
monthS=12
|
||||
yearS -= 1
|
||||
}else{
|
||||
monthS -=1
|
||||
}
|
||||
if (monthS in arrayOf(1, 3, 5,7,8,10,12)){
|
||||
dayS = 31
|
||||
}else if (monthS == 2){
|
||||
dayS = 28
|
||||
}else{
|
||||
dayS = 30
|
||||
}
|
||||
}else{
|
||||
dayS -=1
|
||||
}
|
||||
IDFraseS = db.getIDFrase(yearS,monthS, dayS)
|
||||
changeData()
|
||||
}
|
||||
|
||||
btn_next.setOnClickListener() {
|
||||
//toast("Siguiente")
|
||||
if ((monthS in arrayOf(1, 3, 5,7,8,10,12) && dayS == 31) || (monthS == 2 && dayS == 28)){
|
||||
monthS += 1
|
||||
dayS = 1
|
||||
}else if (dayS == 30 && monthS in arrayOf(2,4,6,9,11) ){
|
||||
monthS += 1
|
||||
dayS = 1
|
||||
}else{
|
||||
dayS +=1
|
||||
}
|
||||
|
||||
IDFraseS = db.getIDFrase(yearS,monthS, dayS)
|
||||
changeData()
|
||||
}
|
||||
}
|
||||
|
||||
/** At onResume, called after onCreate and in resume, check day and put sentence */
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
cal = Calendar.getInstance() //Because it can be changed the day
|
||||
IDFraseS = db.getIDFrase(yearS,monthS, dayS)
|
||||
changeData()
|
||||
}
|
||||
|
||||
/** "Close" app on back button */
|
||||
override fun onBackPressed() {
|
||||
moveTaskToBack(true)
|
||||
}
|
||||
|
||||
/** It returns the month name */
|
||||
fun getMonth(month: Int): String {
|
||||
val str = DateFormatSymbols().getMonths()[month - 1]
|
||||
return str.capitalize()
|
||||
}
|
||||
|
||||
/** This function replaces texts of main activity to sentence using IDFraseS var
|
||||
*/
|
||||
fun changeData(){
|
||||
txt_sentence.setText(db.getSentenceFromIDF(IDFraseS))
|
||||
txt_anime.setText(db.getAnimeFromIDF(IDFraseS))
|
||||
//txt_date.setText("Frase de hoy")
|
||||
txt_date.setText("Frase del $dayS de ${getMonth(monthS)}")
|
||||
/* Set fav icon */
|
||||
if (db.getFav(IDFraseS) == true) {
|
||||
btn_fav.setBackgroundResource(R.drawable.star_on);
|
||||
}else{
|
||||
btn_fav.setBackgroundResource(R.drawable.star_off);
|
||||
}
|
||||
}
|
||||
|
||||
/** This changes sentence of day you are seeing */
|
||||
override fun onRewarded(reward: RewardItem) {
|
||||
alert {
|
||||
customView {
|
||||
linearLayout {
|
||||
imageView {
|
||||
imageResource = R.drawable.gato
|
||||
}.lparams(width = matchParent) {
|
||||
margin = dip(4)
|
||||
}
|
||||
}
|
||||
}
|
||||
positiveButton("Cambiar la frase") {
|
||||
/* First remove sentence, then load a new one, and change data */
|
||||
db.delSentence(yearS,monthS, dayS)
|
||||
IDFraseS = db.getIDFrase(yearS,monthS, dayS)
|
||||
changeData()
|
||||
}
|
||||
}.show()
|
||||
}
|
||||
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
|
||||
menuInflater.inflate(R.menu.main, menu)
|
||||
return super.onCreateOptionsMenu(menu)
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean{
|
||||
when (item.getItemId()) {
|
||||
R.id.favs -> {
|
||||
startActivity<FavsActivity>()
|
||||
return true
|
||||
}
|
||||
R.id.anime -> {
|
||||
startActivity<AnimesSelActivity>()
|
||||
return true
|
||||
}
|
||||
R.id.options -> {
|
||||
startActivity<OptsActivity>()
|
||||
return true
|
||||
}
|
||||
R.id.about -> {
|
||||
startActivity<AboutActivity>()
|
||||
return true
|
||||
}
|
||||
R.id.exit -> {
|
||||
moveTaskToBack(true) /* Returns to "desktop" */
|
||||
return super.onOptionsItemSelected(item)
|
||||
}
|
||||
else -> return super.onOptionsItemSelected(item)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun preloadAd() {
|
||||
mRewardedVideoAd.loadAd(this.getString(R.string.admob_videoid), AdRequest.Builder().build());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
package com.jkanetwork.st.frasesdeanime
|
||||
|
||||
import android.os.Bundle
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.content.Context
|
||||
import android.widget.ArrayAdapter
|
||||
import org.jetbrains.anko.*
|
||||
import kotlinx.android.synthetic.main.activity_opts.*
|
||||
import android.content.Intent
|
||||
import java.util.*
|
||||
import android.content.BroadcastReceiver
|
||||
|
||||
/**
|
||||
* Created by kprkpr on 30/08/17.
|
||||
*/
|
||||
class OptsActivity : AppCompatActivity(){
|
||||
|
||||
lateinit var P: Prefs
|
||||
|
||||
val cont = this
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_opts)
|
||||
|
||||
P = Prefs(applicationContext)
|
||||
|
||||
val hours = ArrayList<Int>()
|
||||
val minutes = ArrayList<Int>()
|
||||
|
||||
for (i in 0..23){
|
||||
hours.add(i)
|
||||
}
|
||||
for (i in 0..59){
|
||||
minutes.add(i)
|
||||
}
|
||||
|
||||
var hoursAdapter = ArrayAdapter(this,android.R.layout.simple_list_item_1,hours)
|
||||
var minutesAdapter = ArrayAdapter(this,android.R.layout.simple_list_item_1,minutes)
|
||||
|
||||
hoursAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
||||
minutesAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
||||
|
||||
spinnerHour.adapter = hoursAdapter
|
||||
spinnerMinute.adapter = minutesAdapter
|
||||
|
||||
spinnerHour.setSelection(P.getHour())
|
||||
spinnerMinute.setSelection(P.getMinute())
|
||||
|
||||
chk_alarm.setChecked(P.getNotifOn())
|
||||
chk_persistent.setChecked(P.getPersNotifOn())
|
||||
|
||||
setEnabledParts()
|
||||
|
||||
/* Button listeners */
|
||||
chk_alarm.setOnClickListener() {
|
||||
setEnabledParts()
|
||||
}
|
||||
chk_persistent.setOnClickListener() {
|
||||
setEnabledParts()
|
||||
}
|
||||
|
||||
btn_SaveNotif.setOnClickListener() {
|
||||
|
||||
P.setHour(spinnerHour.getSelectedItem().toString().toInt())
|
||||
P.setMinute(spinnerMinute.getSelectedItem().toString().toInt())
|
||||
|
||||
P.setNotifOn(chk_alarm.isChecked())
|
||||
P.setPersNotifOn(chk_persistent.isChecked())
|
||||
|
||||
val nm = applicationContext.notificationManager
|
||||
nm.cancel(1); //Canel notif before service going on, for persistent notification problems
|
||||
putAlarm(this)
|
||||
if (chk_persistent.isChecked() && chk_alarm.isChecked()) {
|
||||
this.startService(Intent(this, AlarmNotif::class.java))
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun setEnabledParts() {
|
||||
if (chk_alarm.isChecked()) {
|
||||
chk_persistent.setEnabled(true)
|
||||
/* This other checks is chk_persistent checked dependent */
|
||||
if (chk_persistent.isChecked()) {
|
||||
spinnerHour.setEnabled(false)
|
||||
spinnerMinute.setEnabled(false)
|
||||
} else {
|
||||
spinnerHour.setEnabled(true)
|
||||
spinnerMinute.setEnabled(true)
|
||||
}
|
||||
} else {
|
||||
chk_persistent.setEnabled(false)
|
||||
spinnerHour.setEnabled(false)
|
||||
spinnerMinute.setEnabled(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
/** DISABLED
|
||||
package com.jkanetwork.st.frasesdeanime
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.view.View
|
||||
import org.jetbrains.anko.*
|
||||
import android.widget.Toast
|
||||
import android.support.v4.content.ContextCompat.startActivity
|
||||
import android.content.Intent
|
||||
import android.widget.AdapterView
|
||||
|
||||
import kotlinx.android.synthetic.main.activity_pager.*
|
||||
|
||||
/**
|
||||
* Created by kprkpr on 25/07/17.
|
||||
* Help: https://www.youtube.com/watch?v=x-M1L6tcsLo
|
||||
*/
|
||||
|
||||
class PagerActivity : AppCompatActivity(){
|
||||
|
||||
val act = this
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_pager)
|
||||
|
||||
img.setImageResource(R.drawable.drawable);
|
||||
|
||||
/* Button listeners */
|
||||
btn_next.setOnClickListener() {
|
||||
startActivity<AnimesSelActivity>()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/** On back go to main */
|
||||
override fun onBackPressed() {
|
||||
startActivity<MainActivity>()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
*/
|
||||
54
app/src/main/kotlin/com/jkanetwork/st/frasesdeanime/Prefs.kt
Normal file
@@ -0,0 +1,54 @@
|
||||
package com.jkanetwork.st.frasesdeanime
|
||||
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
|
||||
/**
|
||||
* Created by kprkpr on 18/07/17.
|
||||
* Help of: http://blog.teamtreehouse.com/making-sharedpreferences-easy-with-kotlin
|
||||
*/
|
||||
class Prefs (context: Context){
|
||||
var prefs: SharedPreferences = context.getSharedPreferences("com.jkanetwork.st.com.jkanetwork.st.frasesdeanime.PREFS", 0);
|
||||
|
||||
fun getHour(): Int {
|
||||
return prefs.getInt("HOUR", 8)
|
||||
}
|
||||
|
||||
fun setHour(x: Int) {
|
||||
prefs.edit().putInt("HOUR", x).commit()
|
||||
}
|
||||
|
||||
fun getMinute(): Int {
|
||||
return prefs.getInt("MINUTE", 0)
|
||||
}
|
||||
|
||||
fun setMinute(x: Int) {
|
||||
prefs.edit().putInt("MINUTE", x).commit()
|
||||
}
|
||||
|
||||
fun getNotifOn(): Boolean {
|
||||
return prefs.getBoolean("NOTIFON", true)
|
||||
}
|
||||
|
||||
fun setNotifOn(b: Boolean) {
|
||||
prefs.edit().putBoolean("NOTIFON", b).commit()
|
||||
}
|
||||
|
||||
fun getPersNotifOn(): Boolean {
|
||||
return prefs.getBoolean("PERSNOTIFON", false)
|
||||
}
|
||||
|
||||
fun setPersNotifOn(b: Boolean) {
|
||||
prefs.edit().putBoolean("PERSNOTIFON", b).commit()
|
||||
}
|
||||
|
||||
/** Esto devuelve true solo la primera vez */
|
||||
fun getFirstTime(): Boolean {
|
||||
if (prefs.getBoolean("FIRSTTIME",true) == true){
|
||||
prefs.edit().putBoolean("FIRSTTIME", false).commit()
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,269 @@
|
||||
package com.jkanetwork.st.frasesdeanime
|
||||
|
||||
import android.content.Context
|
||||
import android.database.sqlite.SQLiteDatabase
|
||||
import org.jetbrains.anko.db.*
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.IOException
|
||||
import java.io.InputStream
|
||||
import java.util.Calendar
|
||||
import android.util.Log
|
||||
|
||||
/**
|
||||
* Created by kprkpr on 18/07/17.
|
||||
*/
|
||||
|
||||
/** ctx, DB.NAME, null, DB.Version */
|
||||
class SQLiteHelper(ctx: Context) : ManagedSQLiteOpenHelper(ctx, "otaku.sqlite", null, 2) {
|
||||
val context = ctx
|
||||
val db = this.getWritableDatabase()
|
||||
|
||||
// Hacer que los números al pasar a String tengan X digitos
|
||||
fun Int.format(digits: Int) = java.lang.String.format("%0${digits}d", this)
|
||||
companion object {
|
||||
private var instance: SQLiteHelper? = null
|
||||
|
||||
@Synchronized
|
||||
fun getInstance(ctx: Context): SQLiteHelper {
|
||||
if (instance == null) {
|
||||
instance = SQLiteHelper(ctx.applicationContext)
|
||||
}
|
||||
return instance!!
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreate(db: SQLiteDatabase) {
|
||||
// Here you create tables
|
||||
db.execSQL("CREATE TABLE FRASES (" +
|
||||
"_id INTEGER PRIMARY KEY," +
|
||||
"Frase TEXT NOT NULL UNIQUE," +
|
||||
"IDAnime INTEGER)")
|
||||
db.createTable("ANIMES", true,
|
||||
"_id" to INTEGER + PRIMARY_KEY,
|
||||
"Anime" to TEXT + UNIQUE)
|
||||
db.execSQL("CREATE TABLE FRASESVI (" +
|
||||
"_id INTEGER PRIMARY KEY AUTOINCREMENT," +
|
||||
"TDay TEXT NOT NULL UNIQUE," +
|
||||
"IDFrase INTEGER)")
|
||||
db.createTable("FRASESFAV", true,
|
||||
"IDFrase" to INTEGER + UNIQUE)
|
||||
db.createTable("ANIMESON", true,
|
||||
"IDAnime" to INTEGER + UNIQUE)
|
||||
db.execSQL(readSqldata("sqlfrases"))
|
||||
db.execSQL(readSqldata("sqlanimes"))
|
||||
}
|
||||
|
||||
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
|
||||
// Here you can upgrade tables, as usual
|
||||
db.execSQL("DELETE FROM FRASES")
|
||||
db.execSQL("DELETE FROM ANIMES")
|
||||
db.execSQL(readSqldata("sqlfrases"))
|
||||
db.execSQL(readSqldata("sqlanimes"))
|
||||
}
|
||||
|
||||
|
||||
fun readSqldata(str: String): String {
|
||||
//getting the file
|
||||
val inputStream: InputStream
|
||||
if (str == "sqlfrases") {
|
||||
inputStream = context.getResources().openRawResource(R.raw.sqlfrases)
|
||||
} else {
|
||||
inputStream = context.getResources().openRawResource(R.raw.sqlanimes)
|
||||
}
|
||||
val byteArrayOutputStream = ByteArrayOutputStream()
|
||||
try {
|
||||
var i = inputStream.read()
|
||||
while (i != -1) {
|
||||
byteArrayOutputStream.write(i)
|
||||
i = inputStream.read()
|
||||
}
|
||||
inputStream.close()
|
||||
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
return byteArrayOutputStream.toString()
|
||||
}
|
||||
|
||||
/** Returns a boolean saying if a sentence is faved or not */
|
||||
fun getFav (IDFrase: Int): Boolean {
|
||||
val query = db.rawQuery("SELECT IDFrase FROM FRASESFAV WHERE IDFrase = '$IDFrase'", null)
|
||||
val res = query.getCount()
|
||||
query.close()
|
||||
if (res > 0){
|
||||
return true
|
||||
}else{
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
/** Changes the state of fav of a sentence
|
||||
* @param IDFrase: Sentence
|
||||
*/
|
||||
fun setFav (IDFrase: Int) {
|
||||
if (getFav(IDFrase) == false){
|
||||
db.insert("FRASESFAV","IDFrase" to IDFrase)
|
||||
}else{
|
||||
db.execSQL("DELETE FROM FRASESFAV WHERE IDFrase='$IDFrase'")
|
||||
}
|
||||
}
|
||||
|
||||
fun getSentenceFromIDF (IDFrase: Int): String {
|
||||
if (IDFrase == 0){ return "No hay más frases disponibles..."}
|
||||
if (IDFrase == -1){ return "No puedes ver aún esta frase"}
|
||||
if (IDFrase == -2){ return "Error inesperado"}
|
||||
val c = db.rawQuery("SELECT Frase FROM FRASES WHERE _id = '$IDFrase'", null)
|
||||
c.moveToFirst()
|
||||
val ret = c.getString(0)
|
||||
c.close()
|
||||
return ret
|
||||
}
|
||||
|
||||
fun getAnimeFromIDF (IDFrase: Int): String {
|
||||
if (IDFrase <= 0){ return "..."}
|
||||
val c = db.rawQuery("SELECT Anime FROM ANIMES WHERE _id = (SELECT IDAnime FROM FRASES WHERE _id = '$IDFrase')", null)
|
||||
c.moveToFirst()
|
||||
val ret = c.getString(0)
|
||||
c.close()
|
||||
return ret
|
||||
}
|
||||
|
||||
fun getIDAnimeFromName (Name: String): Int {
|
||||
var query = db.select("ANIMES", "_id").whereArgs("Anime = '$Name'")
|
||||
return query.parseSingle(IntParser)
|
||||
}
|
||||
|
||||
|
||||
|
||||
fun getIDFrase (year: Int,month: Int, day: Int): Int {
|
||||
val cal = Calendar.getInstance()
|
||||
/* First Integer to Strings of format YYYYMMDD for store and compare */
|
||||
val diaArg = "${year}${month.format(2)}${day.format(2)}"
|
||||
val diaAct = "${cal.get(Calendar.YEAR)}${(cal.get(Calendar.MONTH)+1).format(2)}${cal.get(Calendar.DAY_OF_MONTH).format(2)}"
|
||||
|
||||
/* Query db looking for the sentence. If there are not loaded yet, see (else if) if they can show a new one, if criteria is true. If not, not show sentence */
|
||||
var query = db.rawQuery("SELECT IDFrase FROM FRASESVI WHERE TDay = '$diaArg'", null)
|
||||
if (query.getCount() > 0){
|
||||
query.moveToFirst()
|
||||
val ret = query.getInt(0)
|
||||
query.close()
|
||||
return ret
|
||||
}else if (diaArg == diaAct || diaArg.toInt() < diaAct.toInt() && db.rawQuery("SELECT IDFrase FROM FRASESVI WHERE Tday < '$diaArg'", null).count > 0 ) {
|
||||
try {
|
||||
query = db.rawQuery("SELECT _id FROM FRASES WHERE IDAnime IN (SELECT IDAnime FROM ANIMESON) AND _id NOT IN (SELECT IDFrase FROM FRASESVI) ORDER BY RANDOM() LIMIT 1", null)
|
||||
query.moveToFirst()
|
||||
db.insert("FRASESVI",
|
||||
"TDay" to diaArg,
|
||||
"IDFrase" to query.getString(0))
|
||||
val ret = query.getInt(0)
|
||||
query.close()
|
||||
return ret
|
||||
}
|
||||
catch (e: Exception) {
|
||||
return 0 //No more sentences
|
||||
}
|
||||
}else{
|
||||
return -1 //Day not yet
|
||||
}
|
||||
}
|
||||
|
||||
fun getIDFraseHoy(): Int {
|
||||
val cal = Calendar.getInstance()
|
||||
//Month + 1 because Android starts with month=0
|
||||
return getIDFrase(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH))
|
||||
}
|
||||
|
||||
fun getAllIDFavs(): Array<Int>{
|
||||
var query = db.select("FRASESFAV", "IDFrase")
|
||||
var list = query.parseList(IntParser)
|
||||
return list.toTypedArray()
|
||||
}
|
||||
|
||||
fun getAllAnimeIDs(): Array<Int>{
|
||||
var query = db.select("ANIMES", "_id").orderBy("Anime", SqlOrderDirection.ASC)
|
||||
var list = query.parseList(IntParser)
|
||||
return list.toTypedArray()
|
||||
}
|
||||
|
||||
fun getAllAnimeNames(): Array<String>{
|
||||
var query = db.select("ANIMES", "Anime").orderBy("Anime", SqlOrderDirection.ASC)
|
||||
var list = query.parseList(StringParser)
|
||||
return list.toTypedArray()
|
||||
}
|
||||
|
||||
/** Return if the anime asked by [IDA] is selected */
|
||||
fun getAnimeSel(IDA: Int): Boolean{
|
||||
val query = db.rawQuery("SELECT IDAnime FROM ANIMESON WHERE IDAnime = '$IDA'", null)
|
||||
val res = query.getCount()
|
||||
query.close()
|
||||
if (res > 0){
|
||||
return true
|
||||
}else{
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
/** Changes the state of a selected or not anime
|
||||
* @param IDAnime: Anime
|
||||
*/
|
||||
fun setAnimeSel (IDAnime: Int) {
|
||||
if (getAnimeSel(IDAnime) == false){
|
||||
db.insert("ANIMESON","IDAnime" to IDAnime)
|
||||
}else{
|
||||
db.execSQL("DELETE FROM ANIMESON WHERE IDAnime='$IDAnime'")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/** Return how much animes are selected (For knowing if 0) */
|
||||
fun getCountAnimeSel(): Int{
|
||||
val query = db.rawQuery("SELECT COUNT(*) FROM ANIMESON", null)
|
||||
query.moveToFirst()
|
||||
val ret = query.getInt(0)
|
||||
query.close();
|
||||
return ret;
|
||||
}
|
||||
|
||||
/** Deletes the sentence of the day passed as argument yearS,monthS, dayS
|
||||
* @param year: Year selected
|
||||
* @param month: Month selected
|
||||
* @param day: Day selected
|
||||
*/
|
||||
fun delSentence (year: Int, month: Int, day: Int) {
|
||||
val diaArg = "${year}${month.format(2)}${day.format(2)}"
|
||||
db.execSQL("DELETE FROM FRASESVI WHERE TDay='$diaArg'")
|
||||
}
|
||||
|
||||
|
||||
/** This funcion selects or desselects all animes from selected to show */
|
||||
fun setAllAnimeSel(){
|
||||
var selectAll = getAllAnimeSel(); //Know if anyone is select (true/false)
|
||||
//First, unset all, and after that, select all if they were not before. (Why? Because if someone are select, inserting again will crash)
|
||||
db.execSQL("DELETE FROM ANIMESON")
|
||||
if (selectAll == false){ //Set all
|
||||
var animeIDs = getAllAnimeIDs()
|
||||
|
||||
for (pos in animeIDs){
|
||||
db.insert("ANIMESON",
|
||||
"IDAnime" to animeIDs[pos-1]) //Pos is a count, arrays start at 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** It returns if all animes are selected or not */
|
||||
fun getAllAnimeSel(): Boolean{
|
||||
var set = getCountAnimeSel();
|
||||
var countanime = getAllAnimeIDs().size;
|
||||
if (set == countanime){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Access property for Context
|
||||
val Context.database: SQLiteHelper
|
||||
get() = SQLiteHelper.getInstance(applicationContext)
|
||||
BIN
app/src/main/res/drawable/cerebro.png
Normal file
|
After Width: | Height: | Size: 163 KiB |
BIN
app/src/main/res/drawable/gato.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
app/src/main/res/drawable/opts.png
Normal file
|
After Width: | Height: | Size: 123 KiB |
BIN
app/src/main/res/drawable/star_off.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
app/src/main/res/drawable/star_on.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
15
app/src/main/res/layout/activity_about.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?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" android:background="@drawable/cerebro">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="12dp"
|
||||
android:text="Gracias por usar CalendarioOtaku! \nIdea por Alba García y desarrollada por JKANetwork! \nCreditos: \nImage Credit: 5 Star Rating System from Vector.me (by jhnri4)"
|
||||
android:textAlignment="center"
|
||||
android:textColor="@android:color/black"
|
||||
android:textSize="18sp" />
|
||||
</LinearLayout>
|
||||
132
app/src/main/res/layout/activity_main.xml
Normal file
@@ -0,0 +1,132 @@
|
||||
<?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"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="12dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txt_date"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:layout_marginRight="4dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@color/colorPrimaryLight"
|
||||
android:paddingTop="8dp"
|
||||
android:text="Fecha"
|
||||
android:textAlignment="center"
|
||||
android:textAllCaps="false"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="24sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/Sep_1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="2dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@android:color/black"
|
||||
android:scaleType="fitXY" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txt_sentence"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="90dp"
|
||||
android:layout_marginTop="18dp"
|
||||
android:layout_weight="8.89"
|
||||
android:fadeScrollbars="true"
|
||||
android:scrollbarStyle="insideOverlay"
|
||||
android:scrollbars="vertical"
|
||||
android:text="Aquí la frase, no?"
|
||||
android:textAlignment="center"
|
||||
android:textColor="@android:color/black"
|
||||
android:textSize="18sp"
|
||||
tools:text="Si la frase es muy larga, muy larga, muuuy larga, muy larga, muuuy larga, muy larga, muuuy larga, muy larga, muuuy larga, muy larga, muuuy larga, muy larga, muuuy larga, muy larga, muuuy larga, muy larga, muuuy larga, saldrá una scrollbar." />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/Sep_2"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="2dp"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:layout_marginTop="18dp"
|
||||
android:background="@android:color/black"
|
||||
android:scaleType="fitXY" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="58dp"
|
||||
android:layout_marginLeft="26dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/btn_fav"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="44dp"
|
||||
android:layout_marginLeft="12dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:background="@drawable/star_off"
|
||||
android:scaleType="centerInside" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/btn_share"
|
||||
android:layout_width="58dp"
|
||||
android:layout_height="58dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:background="@null"
|
||||
android:paddingTop="2dp"
|
||||
app:srcCompat="@android:drawable/ic_menu_share" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txt_anime"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="end"
|
||||
android:paddingRight="12dp"
|
||||
android:paddingTop="20dp"
|
||||
android:text="Texto Anime"
|
||||
android:textAlignment="center"
|
||||
android:textColor="@android:color/black"
|
||||
android:textSize="16sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/btn_prev"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
app:srcCompat="@android:drawable/ic_media_previous" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/btn_next"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
app:srcCompat="@android:drawable/ic_media_next" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_change"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="Cambiar Frase" />
|
||||
|
||||
</LinearLayout>
|
||||
75
app/src/main/res/layout/activity_opts.xml
Normal file
@@ -0,0 +1,75 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_margin="4dp"
|
||||
android:orientation="vertical"
|
||||
android:background="@drawable/opts">
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/chk_alarm"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="57dp"
|
||||
android:text="¿Notificar frase diaria?"
|
||||
android:textAlignment="textStart" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/chk_persistent"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="57dp"
|
||||
android:text="¿Quieres que sea persistente?"
|
||||
android:textAlignment="textStart" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/layoutWhen"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="48dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txt_when"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_weight="1"
|
||||
android:paddingTop="12dp"
|
||||
android:text="Cuando mostrar:"
|
||||
android:textAlignment="center"
|
||||
android:textColor="@android:color/black"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/spinnerHour"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="48dp"
|
||||
android:layout_weight="1"
|
||||
android:dropDownWidth="80dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txt_septime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:layout_marginRight="4dp"
|
||||
android:layout_weight="0.02"
|
||||
android:text=":"
|
||||
android:textColor="@android:color/black"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/spinnerMinute"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="48dp"
|
||||
android:layout_weight="1"
|
||||
android:dropDownWidth="80dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_SaveNotif"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:text="Guardar cambios" />
|
||||
|
||||
</LinearLayout>
|
||||
24
app/src/main/res/layout/activity_pager.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<?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"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_margin="12dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_next"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="36dp"
|
||||
android:elevation="0dp"
|
||||
android:text="Siguiente"
|
||||
android:textAlignment="textStart" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/img"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:srcCompat="@mipmap/ic_launcher_round" />
|
||||
|
||||
</LinearLayout>
|
||||
22
app/src/main/res/menu/main.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!--<item
|
||||
android:id="@+id/calendar"
|
||||
android:title="Calendario"/>-->
|
||||
<item
|
||||
android:id="@+id/anime"
|
||||
android:title="Animes"/>
|
||||
<item
|
||||
android:id="@+id/favs"
|
||||
android:title="Favoritos"/>
|
||||
<item
|
||||
android:id="@+id/options"
|
||||
android:title="Opciones"/>
|
||||
<item
|
||||
android:id="@+id/about"
|
||||
android:title="Acerca de"/>
|
||||
<item
|
||||
android:id="@+id/exit"
|
||||
android:title="Salir" />
|
||||
</menu>
|
||||
13
app/src/main/res/menu/menu_favsentence.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item android:id="@+id/copy"
|
||||
android:title="Copiar" />
|
||||
|
||||
<item android:id="@+id/delfav"
|
||||
android:title="Borrar de los favoritos" />
|
||||
|
||||
<item android:id="@+id/share"
|
||||
android:title="Compartir" />
|
||||
</menu>
|
||||
BIN
app/src/main/res/mipmap-hdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
BIN
app/src/main/res/mipmap-hdpi/ic_launcher_round.png
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
BIN
app/src/main/res/mipmap-mdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
app/src/main/res/mipmap-mdpi/ic_launcher_round.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
app/src/main/res/mipmap-xhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
BIN
app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
46
app/src/main/res/raw/sqlanimes
Normal file
@@ -0,0 +1,46 @@
|
||||
INSERT INTO `ANIMES` VALUES (1,'Mirai Nikki'),
|
||||
(2,'Death Note'),
|
||||
(3,'No game no life'),
|
||||
(4,'Inu x Boku SS'),
|
||||
(5,'Sakurasou no pet'),
|
||||
(6,'Ouran Highschool Host Club'),
|
||||
(7,'Naruto'),
|
||||
(8,'Koe no Katachi (A Silent Voice)'),
|
||||
(9,'Psycho-Pass'),
|
||||
(10,'Parasyte'),
|
||||
(11,'Btooom'),
|
||||
(12,'Ao no Exorcist'),
|
||||
(13,'Angel Beats'),
|
||||
(14,'Sword Art Online'),
|
||||
(15,'Servamp'),
|
||||
(16,'Arakawa'),
|
||||
(17,'Prison School'),
|
||||
(18,'Fullmetal Alchemist'),
|
||||
(19,'Re:Zero kara Hajim..'),
|
||||
(20,'Gintama'),
|
||||
(21,'Haikyuu!!'),
|
||||
(22,'Akame ga kill'),
|
||||
(23,'Shingeki no kyojin'),
|
||||
(24,'Another'),
|
||||
(25,'Elfen Lied'),
|
||||
(26,'Nanatsu no Taizai'),
|
||||
(27,'Inuyasha'),
|
||||
(28,'Chobits'),
|
||||
(29,'Saint Seiya'),
|
||||
(30,'Ao Haru Ride'),
|
||||
(31,'Relife'),
|
||||
(32,'Kimi no Na wa'),
|
||||
(33,'School Rumble'),
|
||||
(34,'Noragami'),
|
||||
(35,'Toradora'),
|
||||
(36,'One Piece'),
|
||||
(37,'Deadman Wonderland'),
|
||||
(38,'Pandora Hearts'),
|
||||
(39,'To Aru Majutsu no Index'),
|
||||
(40,'Durara!!'),
|
||||
(41,'Code Geass'),
|
||||
(42,'Vampire Knight'),
|
||||
(43,'Boku no Hero Academia'),
|
||||
(44,'Ansatsu Kyōshitsu'),
|
||||
(45,'Sket Dance'),
|
||||
(46,'Yuri on Ice');
|
||||
581
app/src/main/res/raw/sqlfrases
Normal file
@@ -0,0 +1,581 @@
|
||||
INSERT INTO `FRASES` VALUES
|
||||
(1,'Si quieres saber lo que alguien intenta hacer, empieza por decir lo que tú quieres.','1'),
|
||||
(2,'Todos los seres humanos tenemos un lado oscuro en nuestros corazones, de ese lado oscuro nace la desesperación.','1'),
|
||||
(3,'Tu fallo es que siempre muestras tus debilidades.','1'),
|
||||
(4,'Te amaré, hasta que este mundo se acabe para que cuando nuestra alma repose en las estrellas, estemos agarrados de la mano.','1'),
|
||||
(5,'La justicia es más que una fantasía.','1'),
|
||||
(6,'¿Acaso los pájaros se preguntan por qué pueden volar? No. Lo mismo me pasa a mí.','1'),
|
||||
(7,'Recuerda las enseñanzas de una terrorista.','1'),
|
||||
(8,'Si escuchás tu miedo, verás las cosas más difíciles.','1'),
|
||||
(9,'No me temas solo porque se me da bien matar gente, Yukki... Así es como te demuestro que te amo.','1'),
|
||||
(10,'Todos tienen que vivir con desgracias!','1'),
|
||||
(11,'¿De qué sirve tener poder ilimitado si tienes que sacrificar la vida de la persona que te gusta?','1'),
|
||||
(12,'Hay media luna. Con una mitad brillante y la otra oscura. Al igual que yo.','1'),
|
||||
(13,'¿Cómo puedes sacar un cero en inglés si vivías en Inglaterra?','5'),
|
||||
(14,'No todos aquellos que trabajan duro tienen éxito, pero todos los que tienen éxito han trabajado duro.','5'),
|
||||
(15,'Hay algunas cosas que jamás le dirás a alguien, no importa lo cerca que esté.','5'),
|
||||
(16,'Yo no quiero quedarme contigo si eso te hace odiarme.','5'),
|
||||
(17,'Una persona normal ve lejos lo que no quiere ver. A pesar de que saben que hay cosas que sólo se pueden adquirir si se enfrentan a las cosas que ellos odian.','5'),
|
||||
(18,'Pensé que la gente con talento no tenía que trabajar duro.','5'),
|
||||
(19,'Ella es la persona más terca y egoísta del mundo. ¡Ella no sabe lo que es rendirse!','5'),
|
||||
(20,'No tiene sentido llorar por el pasado.','5'),
|
||||
(21,'No pidas disculpas si no sabes porque lo haces.','5'),
|
||||
(22,'Hoy tenemos que decir adiós, hasta el día que nos encontremos otra vez.','5'),
|
||||
(23,'Shiina siempre a estado corriendo por delante de mí. Tan lejos que ni siquiera puedo verla. Pero no soy el único que no puede ver, incluso si Shiina se voltea, no puede verme.','5'),
|
||||
(24,'No es que sea antisocial, ni solitario; es que conozco la estupidez humana y no me quiero contagiar.','2'),
|
||||
(25,'Tengo dos reglas. La primera: nunca me equivoco. La segunda: si me equivoco... volver a la primera regla.','2'),
|
||||
(26,'Si terminas matando a todos los criminales de este mundo, entonces el único criminal que quedará serás tú.','2'),
|
||||
(27,'Solo puedo sentarme así, si me siento como el resto de la gente hace, perdería el 40% de mi capacidad deductiva.','2'),
|
||||
(28,'Los idiotas sólo son personas que subestiman sus deseos.','2'),
|
||||
(29,'Todas las almas de los no inocentes rondaran por las llamas de la justicia.','2'),
|
||||
(30,'Como castigo por desafiar al dios del nuevo mundo, morirás...','2'),
|
||||
(31,'Espera, si alguien de verdad muere. ¿Me convertiría en un asesino?','2'),
|
||||
(32,'No importa donde te encuentres, siempre hay quienes no merecen existir.','2'),
|
||||
(33,'¡Lo que daría por una manzana!','2'),
|
||||
(34,'Todos mis obstáculos fueron removidos. Ahora soy el dios del nuevo mundo.','2'),
|
||||
(35,'La gente no es perfecta.','2'),
|
||||
(36,'Seguramente nadie puede ser veraz durante toda su vida.','2'),
|
||||
(37,'No podría importarme si encontrar el cuaderno te ha hecho feliz o infeliz.','2'),
|
||||
(38,'Nunca he considerado haber encontrado ese cuaderno y obtener ese poder un infortunio. De hecho, ganar este poder me ha hecho más feliz que nunca.','2'),
|
||||
(39,'¿Quién querría a Ryuk como mascota? No es bonito ni nada.','2'),
|
||||
(40,'Las nubes no se pueden atrapar, salen volando en cuanto las sopla el viento. Son lo más errante que hay.','7'),
|
||||
(41,'Son los vínculos los que nos hacen sufrir.','7'),
|
||||
(42,'No vivas con falsedades ni miedos, porque terminarás odiándote a ti mismo.','7'),
|
||||
(43,'No hay atajos en el camino para ser Hokage.','7'),
|
||||
(44,'La pereza es la madre de todos los malos hábitos. Pero en última instancia, ella es una madre y debemos respetarla.','7'),
|
||||
(45,'La diferencia entre la estupidez y el genio, es que el genio tiene sus límites.','7'),
|
||||
(46,'Mientras no le des la espalda a la juventud, no acabará nunca.','7'),
|
||||
(47,'Una vez que cuestionas tus propias creencias, estás acabado.','7'),
|
||||
(48,'A nadie le importaba quién fuera hasta que me puse una máscara.','7'),
|
||||
(49,'Aquellos que rompen las reglas son escoria, sí, pero aquel que abandona un amigo es peor que escoria.','7'),
|
||||
(50,'Las lágrimas y la lluvia caen sobre mi cara, mi cuerpo es incapaz de quedarse, pero mi corazón no está dispuesto a irse.','7'),
|
||||
(51,'Cuando eres herido aprendes a odiar, por otro lado cuando hieres, te resientes, pero también comienzas a sentirte culpable..','7'),
|
||||
(52,'Cuando una persona tiene algo importante que proteger es cuando puede volverse verdaderamente fuerte.','7'),
|
||||
(54,'El lugar donde se acuerden de ti, es al que debes regresar y llamar hogar.','7'),
|
||||
(55,'Todo lo que necesita un ninja, es el valor de no rendirse nunca.','7'),
|
||||
(56,'No me retractaré de lo dicho, porque ese es mi camino del ninja.','7'),
|
||||
(57,'Si conoces tus debilidades, podrás concentrarte en tus virtudes.','7'),
|
||||
(58,'Me salvaron de mí mismo, me rescataron de mi soledad. Ellos fueron los primeros en aceptarme por lo que soy. Ellos son mis amigos.','7'),
|
||||
(59,'No soy un pervertido.. soy un súper pervertido.','7'),
|
||||
(60,'El trabajo duro puede derrotar al talento natural.','7'),
|
||||
(61,'Con esfuerzo y trabajo un fracasado puede derrotar a un genio.','7'),
|
||||
(62,'¿Ven? Está enojado... porque mamá le escondió un secreto a papá.','6'),
|
||||
(63,'Si clasificas a la gente en categorías, entonces no serás capaz de ver lo que realmente es importante, creo que es algo divertido observar adecuadamente a la gente y gradualmente ir conociéndola más y más.','6'),
|
||||
(64,'Sí, yo soy el gemelo bueno, pero esta conversación me aburre.','6'),
|
||||
(65,'Pensé que yo era, hasta cierto punto, una persona inteligente. Cuando me di cuenta que era idiota, ¡me sorprendió realmente!','6'),
|
||||
(66,'Si realmente quieres ganarte la amistad de alguien, en vez de verlo como a un juguete debes respetarle.','6'),
|
||||
(67,'Si no tienes dinero, trabaja para ello.','6'),
|
||||
(68,'Los sentimientos que tienes no se conocerán a menos que les des voz.','6'),
|
||||
(69,'El conejito...tenía muchísimas ganas de beber té.','6'),
|
||||
(70,'A los hombres atractivos, no nos hace daño el agua.','6'),
|
||||
(71,'Otori Kyouya-kun se le solicita en la sala de espera. Su tutor Suou Tamaki lo está esperando. Kyouya-kun mide 1.80 y trae gafas.','6'),
|
||||
(72,'Debes mantenerte fuerte, incluso si tu mundo parece estarse desmoronando a tu alrededor.','6'),
|
||||
(73,'Si compartía su mundo, sentí que podía ser capaz de ver paisajes distintos en lugares que yo ya había visto.','6'),
|
||||
(74,'La razón por la cual la gente se enamora es diferente para todos, pero tal vez eres mi amor.','6'),
|
||||
(75,'Me gusta la gente que se esfuerza en algo, incluso si no son buenos en ello.','6'),
|
||||
(76,'¿No es tener el coraje de admitir lo que amas, disfrutar lo que amas y ser sincero contigo mismo lo que también significa ser fuerte?','6'),
|
||||
(77,'Al investigar el concepto de demonio, entre todas las formas de vida, el humano es el que está más cerca de serlo.','10'),
|
||||
(78,'No tiene sentido despreciar a los humanos usando estándares humanos.','10'),
|
||||
(79,'Como dos especies diferentes, a veces nos aprovecharemos el uno del otro y nos mataremos entre sí, pero es imposible entendernos mutuamente.','10'),
|
||||
(80,'¿Qué tiene de malo querer vivir?','10'),
|
||||
(81,'Para detener a una máquina, solo hay que destruir el motor.','10'),
|
||||
(82,'El propósito común que nos une es la supervivencia.','10'),
|
||||
(83,'Cállate, tú no decides a quien le rompo la cara.','10'),
|
||||
(84,'Un amigo me dijo que podías pensar en la gente como cerdos o ganado. Que cuando lo haces, te das cuenta que la gente come animales hechos pedazos todos los días, así que no deberías tener miedo de eso.','10'),
|
||||
(85,'Me pregunto si mi corazón estará mal. Ya no puedo llorar. Siento que perdí algo importante, algo importante como ser humano.','10'),
|
||||
(86,'A veces pones una cara terrible, como... si lloraras por dentro.','10'),
|
||||
(87,'Al sentir que tu vida corre peligro, tu verdadera naturaleza sale a flote.','10'),
|
||||
(88,'Al final, solo pisoteo a quienes me rodean para vivir.','10'),
|
||||
(89,'Pero no importa cuántos parásitos haya en un cuerpo, sólo hay un corazón.','10'),
|
||||
(90,'Desde la perspectiva de la naturaleza, somos veneno y ellos son la cura.','10'),
|
||||
(91,'¿Quién decide el valor de las vidas humanas y las que no lo son?','10'),
|
||||
(92,'No siento deseos de vivir, temor a la muerte, ira u odio... Pero voy directo al origen de esto, como si algo me impulsara.','10'),
|
||||
(93,'Casi no tengo oportunidad. Pero si no lo intento... ¡De verdad no tendré oportunidad!','10'),
|
||||
(94,'Desprecio a los humanos que dicen que hacen algo por la Tierra sin razón. Después de todo, la Tierra no tiene emociones.','10'),
|
||||
(95,'Hace poco me reí a carcajadas frente al espejo como una humana... No estuvo mal.','10'),
|
||||
(96,'La ignorancia es la felicidad.','10'),
|
||||
(97,'Me preocupa que clase de criterio utilizas para dividir a la gente en buena y mala.','9'),
|
||||
(98,'¿Realmente es un "sistema"? ¿O es más como una prisión gigante?','9'),
|
||||
(99,'Cuando miras hacia el abismo, el abismo también te devuelve la mirada.','9'),
|
||||
(100,'No me apetece convertirme en un juez o árbitro. No puedo disfrutar de un juego si no participo en él. Y yo adoro de todo corazón este juego que la gente llama "vida".','9'),
|
||||
(101,'Nada en este mundo es eterno.','9'),
|
||||
(102,'Es intrigante. ¿Cómo es que esas personas, que son tratadas como ganado en esta aburrida sociedad, no han intentado destruirla?','9'),
|
||||
(103,'La eternidad no es algo que se le esté prometida ni a los libros, ni a los humanos.','9'),
|
||||
(104,'Envejecer es similar a la muerte.','9'),
|
||||
(105,'Ahora mismo parece que podrías comerte el mundo, pero al mismo tiempo, parece que todo el peso del mundo descansa sobre tus hombros.','9'),
|
||||
(106,'Cuando le quitas el collar a semejante perro de caza, no es muy diferente de un lobo. Ahora que ha vuelto a ser libre, quizá esté viviendo una diferente y tranquila vida.','9'),
|
||||
(107,'También solía pensar que el sistema era absoluto. Eso era lo que creía hasta que atravesé esa puerta.','9'),
|
||||
(108,'Nunca pensé que fuera tan difícil investigar sobre el pasado.','9'),
|
||||
(109,'Quiere confrontar esta sociedad, protegida por el sistema, con la naturaleza humana.','9'),
|
||||
(110,'Me hace sentir que todo depende del ojo con el que se mire.','9'),
|
||||
(111,'La administración burocrática domina a la gente mediante el conocimiento tanto técnico como práctico. Mantener ese conocimiento aumenta su superioridad.','9'),
|
||||
(112,'Hoy en día, el mundo está lleno de personas que dan por sentado las bendiciones de la ciencia.','9'),
|
||||
(113,'Si tomas todas las ideologías y errores repetidos durante todo el tiempo, posiblemente puedas imaginar cómo podría verse un futuro mundo ideal.','9'),
|
||||
(114,'Cuando obtienen la libertad para actuar fuera de los límites de la ley y la ética, algunas veces puedes ver sus almas.','9'),
|
||||
(115,'Creo que los humanos, en general, son criaturas con recursos. Podemos tratar de evitar nuestras responsabilidades de forma involuntaria.','9'),
|
||||
(116,'Dicen que el necio aprende de su experiencia, mientras que el sabio de la Historia.','9'),
|
||||
(117,'Cuando el débil se convierta en fuerte... Cuando los buenos ciudadanos encuentren la libertad de usar la violencia... Estoy interesado en ver el resultado de eso.','9'),
|
||||
(118,'Buenas noches, esto... Te están apuntando con un arma.','13'),
|
||||
(119,'Ni la muerte puede curar lo idiota.','13'),
|
||||
(120,'La vida es una canción sólo tengo que tocar las notas correctas para una bella melodía... ','13'),
|
||||
(121,'Aún en esta vida tan triste, existen canciones.','13'),
|
||||
(122,'Nunca he podido ser sincera conmigo misma, porque si lo era, todo desaparecería... Al igual que yo.','13'),
|
||||
(123,'Estoy segura de que esa persona te dirá "Gracias" por el resto de su vida.','13'),
|
||||
(124,'Fui capaz de seguir con vida por tu corazón. Incluso ahora, tu corazón está latiendo en mi corazón.','13'),
|
||||
(125,'Las personas que han estado en algo juntas se entienden mejor entre ellas.','13'), (126,'Si pude salvar a alguien, entonces mi vida no pudo ser tan mala.','13'),
|
||||
(127,'Nada se resuelve solo con discursos emocionales.','13'),
|
||||
(128,'Debes aprender a adaptarte. Acepta las cosas por lo que son.','13'),
|
||||
(129,'Los sueños que no se pueden cumplir siempre terminan por convertirse en lo que llamamos esperanza.','13'),
|
||||
(130,'Al derramar mis lágrimas quiero explicar que aún tengo fe en los milagros.','13'), (131,'No debes perder el tiempo manteniendo rencores. Solo sigue mirando hacia adelante.','13'),
|
||||
(132,'No importa dónde o cómo te conozca, yo me enamoraré de ti.','13'),
|
||||
(133,'Si te acercas mucho al sol te quemarás.','18'),
|
||||
(134,'Una vez intente alcanzar el cielo y fue mala idea, pues no hice más que hundirme en la tierra.','18'),
|
||||
(135,'"Si trabajas duro obtendrás una buena recompensa" es una útil frase para consolar a los marginados y para que los niños hagan sus tareas.','18'),
|
||||
(136,'¿Acaso crees que las plegarias lograrán lo que la ciencia nunca pudo?','18'),
|
||||
(137,'No hay nada tan tonto como un tonto.','18'),
|
||||
(138,'¡Eso es una injusticia! Por supuesto que ustedes querrían que los otros sean felices. ¡¿Pero no quieren ser felices ustedes mismos?! ¡El autosacrificio es solo una mera autosatisfacción!','18'),
|
||||
(139,'No olvidar 3.Oct.10.','18'),
|
||||
(140,'Para crear una cosa, debes pagar con otra del mismo valor. Es la Ley de los Estados Equivalentes.','18'),
|
||||
(141,'Hay lugares en este mundo donde nunca brilla el sol. La gente del mundo de arriba nunca se imagina cómo son las cosas del bajo mundo... No hay nada tan raro que no pueda existir.','18'),
|
||||
(142,'La venganza solo trae mas venganza, debes romper el círculo.','18'),
|
||||
(143,'El mundo no es perfecto, eso es lo que lo hace bello.','18'),
|
||||
(144,'Uno de los trabajos de un adulto es proteger a los niños.','18'),
|
||||
(145,'Alguien me dijo una vez que las cicatrices pueden desaparecer, pero hay algunas que no curan nunca.','18'),
|
||||
(146,'El proceso de transmutación en alquimia consta de tres fases: Entendimiento, descomposición y reestructuración.','18'),
|
||||
(147,'Toda destrucción conlleva una creación... Y toda creación implica una destrucción. Destrucción y creación, es una ley universal.','18'),
|
||||
(148,'No puedo perdonar a los que han vendido sus almas a cambio de privilegios.','18'), (149,'Cuando yo, quien es llamado un "arma" o "monstruo" pelea con un verdadero monstruo, puedo comprender completamente porque soy solo un "humano".','18'), (150,'Aquellos que reciben dolor aún pueden dormir, aquellos que dan dolor no pueden dormir.','18'),
|
||||
(151,'El mundo no es perfecto y no existe una sola ley que gobierne todo lo que sucede en él.','18'),
|
||||
(152,'Las chispas de lucha se convierten en llamas y la maldad alimentan esas llamas. Poco a poco, esas llamas se propagarán como un incendio.','18'),
|
||||
(153,'La esencia en la cocina es tener perspicacia y tomar buenas decisiones.','4'),
|
||||
(154,'Si intentas evitarlo, lo único que harás será retrasarlo y alguien más tendrá que pagar por ese destino.','4'),
|
||||
(155,'Él lo negó, pero... pienso que todos tenemos un vínculo y una conexión.','4'),
|
||||
(156,'A primera vista pensarías que es una S, pero en esa expresión veo la verdadera naturaleza de una M.','4'),
|
||||
(157,'Además... ¡Tú también eres un S!. Y uno peor que yo, porque ni siquiera lo pareces.','4'),
|
||||
(158,'N-no me huelas... ¡Corromperás a esos niños!','4'),
|
||||
(159,'¿A quién le importa lo que eres? Sólo ve a donde quieras, y vive de la forma que quieras.','4'),
|
||||
(160,'Quería cambiar. Él me dio el valor para hacerlo. Es por eso que quiero ser una mejor yo y devolverle un poco de lo que me ha dado.','4'),
|
||||
(161,'No lo compliques diciendo, "No sé cómo interactuar con los demás". ¡Tan solo deja que suceda!','4'),
|
||||
(162,'La comida sabe mejor cuando comes con alguien más.','4'),
|
||||
(163,'Chicos disfrutando de su juventud... Eso es felicidad.','4'),
|
||||
(164,'Dijiste "hasta que pueda interactuar bien con los demás..." Pero ésa es una habilidad que solo puede aprenderse lastimando y siendo lastimado por los demás.','4'),
|
||||
(165,'Dice que le agrado por quien soy... está tratando de entenderme. Quiero compensarlo, pero... O-otra vez mi corazón está latiendo de manera extraña.','4'),
|
||||
(166,'Tu idea de "normal" es desagradable.','4'),
|
||||
(167,'¿Monstruo? Que grosero. Somos humanos más capacitados.','4'),
|
||||
(168,'Una vida sin lamentos es una vida aburrida.','4'),
|
||||
(169,'Hay cosas que no cambian sin importar qué. Cosas que después de que mueras seguirán igual. Una parte de ti se queda siempre. Es el karma.','4'),
|
||||
(170,'Sabes que las personas y los lugares cambian, pero no puedes verlo por tu cuenta, pienso que la vida carece de sentido sin la libertad.','4'),
|
||||
(171,'El tiempo es una molestia. Eso es lo que creo.','4'),
|
||||
(172,'Desiste de la idea del destino.','4'),
|
||||
(173,'Aquellos que detestan el amor son sádicos.','4'),
|
||||
(174,'Las leyendas urbanas son una clase de deseo, porque... En realidad la respuesta menos interesante suele ser la correcta.','3'),
|
||||
(175,'El mundo es sólo un juego basura.','3'),
|
||||
(176,'Nuestro Dios se niega a mover el culo, debería aprender algunas cosas de ti.','3'), (177,'Lo único verdadero en este mundo es... ¡La lindura! ¡La lindura es honesta y justa! Esa es la verdad del mundo.','3'),
|
||||
(178,'¿Quién dice que las hormigas son débiles e impotentes? Débil es el que no sabe cómo son las cosas.','3'),
|
||||
(179,'El ajedrez no es diferente del tres en raya.','3'),
|
||||
(180,'Hay más de una forma de ganar un juego.','3'),
|
||||
(181,'No hay un espectador más confiable que uno que sospecha de ti.','3'),
|
||||
(182,'No tienes que cambiar tú, sino como haces las cosas.','3'),
|
||||
(183,'Tu primera derrota duele. Pero eso es divertido.','3'),
|
||||
(184,'Incluso un perro que habla y camina sigue siendo un perro.','3'),
|
||||
(185,'¡Somos los orgullosos débiles y desgarraremos las gargantas de los fuertes y orgullosos!','3'),
|
||||
(186,'Ningún soldado iría gustoso a un sitio donde seguro lo matarán. Solamente una moral que rozara la locura lo obligaría a hacer eso.','3'),
|
||||
(187,'¡Nosotros lo declaramos por esta pieza que viviremos como el débil, pelearemos como el débil, y como los débiles, destruiremos al fuerte!','3'),
|
||||
(188,'No dices "Jaque Mate" cuando crees que has ganado. Lo dices cuando el Rey enemigo es tuyo.','3'),
|
||||
(189,'¡Dispárale a las chicas con tu bala de amor!','3'),
|
||||
(190,'Solo un idiota empieza una pelea que no va a ganar.','3'),
|
||||
(191,'En el mundo que solíamos vivir, la muerte vino a nosotros al azar, sin discriminaciones.','13'),
|
||||
(192,'No importa qué tipo de pasado tengas, nunca intentes olvidar quien eres.','13'),
|
||||
(193,'Incluso si la última estrella muere yo seguiré lanzando fuegos artificiales, así el cielo no estará completamente oscuro aunque sea por un momento.','16'),
|
||||
(194,'La cosa más importante en el amor es... ¡La sensación de distancia! Mientras estás cerca puede que te preocupes por los malos entendidos. ¡Pero la distancia no hace más que aumentar tu amor!','16'),
|
||||
(195,'Si el corazón de las personas fuese el mar, sus aguas estarían estancadas.','16'), (196,'Tranquilízate. Tienes que darte prisa y recuperar tus pantalones. Si esta mujer me malinterpreta y se pone a gritar "kyaaa", estoy acabado.','16'),
|
||||
(197,'Bueno, hay algo que podría pedir. ¿Podrías... enamorarte de mí?','16'),
|
||||
(198,'Nunca deberle nada a nadie.','16'),
|
||||
(199,'Soy venusiana.','16'),
|
||||
(200,'No digas nada, cada quien es libre de ser un parásito, si quiere.','16'),
|
||||
(201,'No importa lo que seas, el rechazo siempre te hace sentir solo.','16'),
|
||||
(202,'Echar de menos al otro, también forma parte del amor.','16'),
|
||||
(203,'El sentimiento de "amar" es fuerte. A veces gracias a la fuerza de esos sentimientos la gente demuestra una fuerza que nunca te esperarías.','16'),
|
||||
(204,'¡Si van a romperle el corazón, cuanto antes sea menos le dolerá!','16'),
|
||||
(205,'Acaso, en este planeta... ¿La gente solo hace favores porque quiere algo a cambio?','16'),
|
||||
(206,'Los débiles están para ser devorados por los fuertes. No importa si estas en una isla o en la realidad.','11'),
|
||||
(207,'Hasta que mi vida desaparezca, seguiré luchando contra mi destino.','11'),
|
||||
(208,'El fuerte y el débil siempre coexisten. El que el fuerte tome ventaja del débil es lo que hace girar al mundo. El privilegiado debe de enmascarar esto con palabras como "libertad" e "igualdad".','11'),
|
||||
(209,'Cuando uno está asustado, sólo puede pensar en lo peor.','11'),
|
||||
(210,'Los vivos tiene que llevar la voluntad de los muertos.','11'),
|
||||
(211,'Si estás siguiendo a idiotas, entonces ya estás caminando con un pie en la tumba.','11'),
|
||||
(212,'El juego solo acaba de empezar. El principio del fin está en mis ojos.','11'),
|
||||
(213,'Los humanos matan cerdos y vacas para comer, ¿por qué se supone que deberíamos tener lástima de las ranas?','11'),
|
||||
(214,'Si no se convierte en cazador. ¡El hombre se condena a la extinción!','11'), (215,'Hablar acerca de lo que es "correcto" es solo hipocresía.','11'),
|
||||
(216,'Por algo tengo el cerebro con más recursos de Nerima.','17'),
|
||||
(217,'Los milagros no ocurren solo esperándolos, tenemos que hacer que sucedan.','17'), (218,'Algún día una verdadera lluvia vendrá… y lavará cada centímetro de mi sufrimiento… No… no tiene sentido esperar… si la lluvia nunca cae… entonces yo haré que llueva.','17'),
|
||||
(219,'Hana: Me siento sucia.','17'),
|
||||
(220,'¿Qué preferís culos o tetas?','17'),
|
||||
(221,'Un trabajo que vale la pena hacer, vale la pena hacerlo bien.','17'),
|
||||
(222,'Es mejor hacerlo que no hacerlo.','17'),
|
||||
(223,'Si no nos queda tiempo, no podemos perderlo dudando.','17'),
|
||||
(224,'Sun-Tzu dijo: "En todas las peleas, los métodos directos pueden usarse para comenzar la pelea, pero los métodos indirectos se usarán para asegurar la victoria".','17'), (225,'Si en ese entonces hubiéramos podido escuchar nuestras voces, todo hubiera sido mucho mejor.','8'),
|
||||
(226,'La vida es una guerra contra el aburrimiento.','8'),
|
||||
(227,'Los adultos solo pueden ver y juzgar una pequeña porción de nuestro ser. Pero nuestras lágrimas y sonrisas son algo que nos pertenecen enteramente a nosotros.','8'), (228,'Oye, si tienes a alguien que fue malo contigo, dímelo. Me encargaré de darle una paliza por ti.','8'),
|
||||
(229,'Puede que simplemente me haya sentido feliz de tener a alguien con quien pelear por algo sin sentido.','8'),
|
||||
(230,'Creo que no necesitas una razón para que te guste alguien, pero pienso que cuando odias a alguien, necesitas una razón para odiarla.','8'),
|
||||
(231,'Permanecer a mi lado solo te traerá más desgracias.','8'),
|
||||
(232,'Creo que la amistad va más allá de las palabras y la razón.','8'),
|
||||
(233,'¡Tu gran amigo es uno solo! ¿No es así? ¡Yashou! ¡¿Cómo puedes decir que iras a orinar con otro hombre que no sea yo?!','8'),
|
||||
(234,'Tú y yo, podemos ser…,¿amigos?','8'),
|
||||
(235,'¡Quiero aprovechar bien el tiempo que me queda de vida para ayudar a Nishimiya! ¡Incluso si pongo mi vida en riesgo!','8'),
|
||||
(236,'Una madre nunca aceptaría el dinero que le dejase su hijo para suicidarse sin remordimientos','8'),
|
||||
(237,'Usa la cabeza.','12'),
|
||||
(238,'Las mentiras suelen estar basadas en la verdad.','12'),
|
||||
(239,'La vida es difícil, si es fácil para ti estás haciendo algo mal.','12'),
|
||||
(240,'Dios habita en mi puño y el demonio en mi corazón.','12'),
|
||||
(241,'¡¿Quién te has creído que soy?! ¡No voy a luchar contra mi propio hermano!','12'), (242,'No juzgues a las personas sin pensarlo, por favor.','12'),
|
||||
(243,'Sólo quiero proteger lo que tengo y si para eso he de convertirme en demonio, no dudaré en hacerlo.','12'),
|
||||
(244,'Esta lluvia es tan fría como la soledad que siento... Como la soledad que siente un demonio.','12'),
|
||||
(245,'No me subestimes. Voy a demostrarles que puedo hacerlo por mí mismo; ¡abre bien los ojos y mira!','12'),
|
||||
(246,'Los demonios siempre serán los oponentes de aquellos que buscan la felicidad.','12'), (247,'El camino recto siempre es duro.','12'),
|
||||
(248,'Los demonios siempre serán oponentes de los que buscan la felicidad y existen para hacer sufrir a los humanos.','12'),
|
||||
(249,'Aves, flores e inclusive los humanos... todo muere. La vida es un fenómeno único que no puede ser igualado. Es muy preciado.','12'),
|
||||
(250,'Tan solo vive como quieras vivir.','12'),
|
||||
(251,'No renuncies solo porque las cosas se pusieron difíciles. Recuerda; si vale la pena, no será fácil.','12'),
|
||||
(252,'Si yo no reconozco mis llamas, no seré capaz de seguir adelante.','12'),
|
||||
(253,'Un plan perfecto no significa tener todo yendo sin complicaciones. Un plan perfecto se obtiene... cuando tiene la elasticidad necesaria para poder lidiar con los problemas.','9'),
|
||||
(254,'Cuando maldices a alguien tienes que cavar dos tumbas.','7'),
|
||||
(255,'Aferrarse a una tenue esperanza es sólo para tu conveniencia. Lo que se perdió, no puede recuperarse.','19'),
|
||||
(256,'¿Crees que lo que haces está mal? Si no, no tienes por que bajar la cabeza.','19'),
|
||||
(257,'No es fácil pelear sabiendo que tienes un punto débil.','19'),
|
||||
(258,'No bajes la mirada, Subaru Natsuki. Cuando tus ojos se nublan, tu alma se oscurece. Tu futuro se cierra para ti, y pierdes de vista tu razón para vivir. Si haces lo que sabes que está bien, ¿qué vas a conseguir mirando hacia abajo? Levanta la cabeza, mira al frente y extiende las manos. No quiero considerarte un enemigo insignificante.','19'),
|
||||
(259,'Mi cuerpo se mueve. Mi voz funciona. Mi corazón ya no duele. Pero... el miedo se quedó grabado.','19'),
|
||||
(260,'Vive, muere, repite.','19'),
|
||||
(261,'Te estaba esperando, creyente del amor.','19'),
|
||||
(262,'¿Qué comedia romántica incluye aplastar el corazón de tu pareja?','19'),
|
||||
(263,'No quiero morir, pero mientras tenga una vida tengo que pelear con todas mis fuerzas.','19'),
|
||||
(264,'No me retiraré, no cederé, no me rendiré. No quiero perder a nadie más.','19'), (265,'¡Tratar de matarme mientras hablo no es educado!','19'),
|
||||
(266,'¡Los hombre necesitan agallas y las mujeres belleza! Así que... ¡Deja de poner esa cara y sonríe, Rem!','19'),
|
||||
(267,'¡Mi cerebro tiembla!','19'),
|
||||
(268,'Quiero a Emilia.','19'),
|
||||
(269,'Incluso cuando creas que vas a perder. Cuando nadie más en el mundo crea en ti,cuando ni siquiera tú creas en ti mismo...yo creeré.','19'),
|
||||
(270,'Incluso si no hubiera una razón, está bien estar con vida.','14'),
|
||||
(271,'No importa lo que pienses de mí, la opinión es tuya.','14'),
|
||||
(272,'Queremos al que no nos quiere y odiamos al que nos quiere.','14'),
|
||||
(273,'Prefiero confiar y lamentar, que dudar y lamentar.','14'),
|
||||
(274,'Le pregunté a un ángel, ¿cuál es el castigo más grande? El ángel respondió amar sin ser amado.','14'),
|
||||
(275,'A pesar de que es un mundo virtual, mis sentimientos son reales.','14'),
|
||||
(276,'Incluso en un mundo como este, él en verdad estaba viviendo. Él no estaba perdiendo días en el mundo real. Él estaba ganando días aquí.','14'),
|
||||
(277,'Si logramos volver al mundo real, te encontraré otra vez. Y me enamoraré de ti otra vez.','14'),
|
||||
(278,'Todo en la vida es una experiencia.','14'),
|
||||
(279,'Preferiría mil veces morir junto a ti, que dejarte morir sola.','14'),
|
||||
(280,'No dejes que termine el día sin haber sido feliz.','14'),
|
||||
(281,'Lo que te define no es lo que haces, sino la forma en que te levantas después de caer.','14'),
|
||||
(282,'No soy el mejor en nada, pero puedo mejorar en todo.','14'),
|
||||
(283,'Acepta la realidad porque esa es tu verdad.','14'),
|
||||
(284,'En este mundo estamos tan acostumbrados a todo lo malo que pasa alrededor, que cuando pasa algo bueno en nuestra vida dudamos si en verdad es real.','14'),
|
||||
(285,'Solo viviendo tu vida al límite, te encontrarás a ti mismo.','14'),
|
||||
(286,'La muerte nos espera siempre con una sonrisa y lo único que podemos hacer es devolverle la sonrisa.','14'),
|
||||
(287,'Dices haber sufrido más que alguien pero no compares el sufrimiento de esa persona con el tuyo porque puede que tu sufrimiento no sea nada comparado con el de esa persona.','14'),
|
||||
(288,'No esperes que alguien haga algo, porque el que tiene que hacer algo eres tú.','14'), (289,'Ir por algo y esforzarte por ello, es ser tú mismo. ¡Es lo que te hace incomparable a otra persona!','15'),
|
||||
(290,'Si soy malo dudando de otros, es mejor creer en ellos. Si soy engañado, pensaré en qué hacer cuando suceda. Las cosas son simples de esa forma.','15'),
|
||||
(291,'Amo las cosas simples. Odio las cosas problemáticas.','15'),
|
||||
(292,'Las palabras son el origen de los malos entendidos.','15'),
|
||||
(293,'Aceptar que tu decisión fue equivocada, requiere coraje.','15'),
|
||||
(294,'La valentía y la estupidez son dos cosas diferentes.','15'),
|
||||
(295,'Tus ojos... han cambiado. Estás más cerca de convertirte en un ángel.','15'),
|
||||
(296,'Es realmente problemático no hacer nada y arrepentirse después.','15'),
|
||||
(297,'No quiero decepcionar a nadie. La verdad es que, incluso yo, quiero ser un héroe.','15'),
|
||||
(298,'Los humanos aman las mentiras que les son convenientes.','15'),
|
||||
(299,'La luz por sí misma es inútil, tiene que estar con la oscuridad, o de lo contrario, no sabrás que es luz.','15'),
|
||||
(300,'Eso es porque soy un ángel. ¡Muere!','15'),
|
||||
(301,'Mientras no haga nada, nada será mi culpa.','15'),
|
||||
(302,'Cuando uno está preparado, los problemas no son problemas.','15'),
|
||||
(303,'Los humanos son mucho más crueles que los vampiros.','15'),
|
||||
(304,'Incluso si es el fin, aunque sea solo por un segundo, seguiremos viviendo nuestra vida al máximo para así nunca arrepentirnos. Es es lo que significa ser un samurái.','20'), (305,'Por miedo a ser rechazado, rechacé a todos primero... Por miedo a ser herido, fingía que me gustaba estar solo.','20'),
|
||||
(306,'El amor, sea verdadero o no, es algo que hace madurar a la gente.','20'),
|
||||
(307,'Es mucho mejor ensuciarse mientras vives bajo tus creencias, que olvidarte de ti mismo y morir limpio.','20'),
|
||||
(308,'El mejor maquillaje para una mujer, es su sonrisa...','20'),
|
||||
(309,'Por cada héroe legendario de videojuegos, hay un legendario inútil para la vida real.','20'),
|
||||
(310,'Shinpachi, no pierdas la calma y busca una máquina del tiempo.','20'),
|
||||
(311,'No hay lluvia que no se detenga, no hay noche que no termine.','20'),
|
||||
(312,'Puede que sea un gorila, pero para nosotros es nuestro preciado capitán.','20'), (313,'Pensé que eras un hombre que iba a jugar sucio o que no cambiaría su estilo de vida por la mujer que ama.','20'),
|
||||
(314,'Si tuviera piedad para darte se la pondría al arroz para la cena.','20'),
|
||||
(315,'Las cosas que ahora dejamos atrás, son aquellas cosas que una vez nos fueron dejadas a nosotros.','21'),
|
||||
(316,'¿Lo que motiva a la gente no suele ser infantil?','21'),
|
||||
(317,'Ustedes son la única razón por la que deben de ganar.','21'),
|
||||
(318,'La fortuna juega a favor de una mente preparada.','21'),
|
||||
(319,'Es difícil tratar con las personas pero no siempre puedes ser amable.','21'), (320,'Aunque estén en el mismo equipo, la tensión que sienten como rivales es esencial para crecer.','21'),
|
||||
(321,'No hay un equipo que vaya a entrar a un torneo para perder, todos van por la victoria. Sean fuertes o débiles, todos quieren ganar.','21'),
|
||||
(322,'En cuanto encontremos un muro, será nuestra oportunidad de saltar sobre este.','21'),
|
||||
(323,'¡¡Estoy muy celoso de la gente alta!!, pero a pesar de que esté muy celoso de ellos, y a pesar de que no soy alto, ¡¡nunca dije que me dejaría ganar en una batalla de altura!!','21'),
|
||||
(324,'Quien pensaría que un simple rey dictador podría convertirse en un gobernante justo.','21'),
|
||||
(325,'¡Un buen salto empieza con un buen paso!','21'),
|
||||
(326,'Hay flores que solo ves cuando tomas desvíos.','21'),
|
||||
(327,'Si tu eres el rey que reina en la cancha... ¡Te derrotaré y seré quien se quede en la cancha por más tiempo!','21'),
|
||||
(328,'Vuelen.','21'),
|
||||
(329,'Una bandada de cuervos deben ser capaces de matar a una gran águila.','21'), (330,'Todos los puntos ganados o perdidos pertenecen a todo el equipo.','21'),
|
||||
(331,'La "esperanza" y las "posibilidades", nacen de las desgracias y la mala suerte.','21'), (332,'Vamos causen estragos, combo raro.','21'),
|
||||
(333,'Incluso si el balón rebota contra la muralla, lo mantendré en juego, ¡así que sigue pidiendo que te pasen el balón, Ace!','21'),
|
||||
(334,'Si el balón pasa a través de una abertura, ¡habrá un súper líbero que lo estará esperando!','21'),
|
||||
(335,'No hay nada más aterrador que haber golpeado mi nuca durante un servicio..¿o si?','21'),
|
||||
(336,'Aparecieron, los raros de la levantada y el remate.','21'),
|
||||
(337,'No existe peor monstruo que el ser humano.','22'),
|
||||
(338,'El final siempre es efímero.','22'),
|
||||
(339,'Vivimos en la oscuridad, y moriremos en la oscuridad. Somos asesinos a sueldo.','22'),
|
||||
(340,'Al igual que las personas poco a poco se pudren, los países también colapsan eventualmente...','22'),
|
||||
(341,'Mierda... Eres tan bonita... Si no fueras mi enemiga, seguro que hubiera tratado de seducirte.','22'),
|
||||
(342,'¡Ya sea el equivocado o no, seguiré mi propio camino!','22'),
|
||||
(343,'No importa cuán resistente se vea, todo tiene un punto débil.','22'),
|
||||
(344,'Vas a crecer hasta ser un adulto triste si lo único que hablas es de dinero, muchacho.','22'),
|
||||
(345,'La rendición es un arma de los débiles...Y es natural que los débiles sean borrados del mundo.','22'),
|
||||
(346,'Pelea con la mente fría y con el corazón ardiente.','22'),
|
||||
(347,'Si voy a morir, lo haré luchando... Al igual como lo hicieron mis amigos.','22'), (348,'Desde las sombras nos encargamos de erradicar... Toda esa maldad que no puede juzgar el cielo. Pertenecemos al gremio... De los asesinos profesionales.','22'),
|
||||
(349,'Tus sentimientos por Tatsumi no están muy alejados de lo que me dijiste que no podías comprender.','22'),
|
||||
(350,'Ser cobarde es algo crucial para la supervivencia de un asesino.','22'),
|
||||
(351,'Muy buen insulto, al menos ganaste en el aspecto psicológico.','22'),
|
||||
(352,'Me reiré en la cara de la muerte y te mostraré el orgullo de Night Raid.','22'),
|
||||
(353,'La intuición de un gay nunca falla.','22'),
|
||||
(354,'Uno debe transitar por el camino en el que confía.','22'),
|
||||
(355,'Todos los supervivientes cargamos con los sentimiento de los caídos.','22'),
|
||||
(356,'Los débiles siempre mueren.','22'),
|
||||
(357,'Había muchas cosas que quería decirte, pero lo olvide todo cuando vi tu rostro.','22'), (358,'¡Aunque seas capaz de detener mi Teigu, mi alma es mucho más fuerte que ese vacío putrefacto en el que debería estar la tuya!','22'),
|
||||
(359,'Aquel que solo se queja de su debilidad... no puede cambiar nada.','23'),
|
||||
(360,'Lo único que se nos permite hacer, es creer que no vamos a lamentar la elección que hemos hecho.','23'),
|
||||
(361,'Nadie puede decir cual es la decisión correcta, nadie puede ver el futuro, no importa cual sea la decisión que tomemos no hay que arrepentirse.','23'),
|
||||
(362,'No es el héroe perfecto a invulnerable que la gente cree. ¿Verdad? El auténtico cabo Levi es un hombre bajito, gruñón, violento y poco accesible.','23'),
|
||||
(363,'Si quieres ganar tienes que arriesgar, si no arriesgas no ganas.','23'),
|
||||
(364,'Si no te aferras a algo ¿cómo soportarás este mundo?','23'),
|
||||
(365,'Puede que no tenga talento... ¡Pero tengo determinación!','23'),
|
||||
(366,'El mundo me odio solo por existir. Morí por la felicidad de muchas personas. Pero en aquel momento, deseé algo de todo corazón. Si llegara a renacer, ¡me gustaría vivir por mi misma!','23'),
|
||||
(367,'¡No importa lo terrible que sea este mundo!¡Lucha!','23'),
|
||||
(368,'Es mejor si escoges la opción por ti mismo, así no te lamentarás después.','23'), (369,'Tengo sentimientos, que no los demuestre es diferente.','23'),
|
||||
(370,'¿Hacia dónde sopla el viento? ¡Al mañana!','23'),
|
||||
(371,'¡No puedes esperar un final feliz de una historia de terror!','23'),
|
||||
(372,'Sólo los que consiguen la victoria tienen permitido vivir. Así de cruel es el mundo.','23'), (373,'Para ir en contra de la mayoría ... se necesita bastante coraje.','23'),
|
||||
(374,'La realidad de la vida es no dejarte llevar por tus impulsos.','23'),
|
||||
(375,'Nadie se acuerda de los nombres de las flores pisoteadas.','23'),
|
||||
(376,'¡Al fin la humanidad va a contraatacar!','23'),
|
||||
(377,'Los seres humanos son animales que viven en grupos en un ambiente reducido donde la minoría tiene que unirse al estilo de vida de la mayoría y adoptar ese estilo de vida.','23'), (378,'Si imaginara cómo voy a morir, probablemente no encontraría la voluntad para pelear.','23'),
|
||||
(379,'Con el fin de luchar contra sus miedos... La humanidad se volvió a adorar a los dioses.','23'),
|
||||
(380,'Todo está conectado a la cadena de la tristeza.','24'),
|
||||
(381,'Lo que más miedo me da es quedarme sin nadie, cara a cara con la soledad.','24'),
|
||||
(382,'No importa cuántas relaciones parece que tengamos, todos estamos solos.','24'),
|
||||
(383,'Las cosas huecas intentan llenar constantemente su vacío.','24'),
|
||||
(384,'Si realmente quieres cumplir tus sueños, no tengas miedo de ir tras ellos. Los perdedores son los que no lo intentan.','24'),
|
||||
(385,'Nada bueno puede venir de pretender que no ves lo que está ocurriendo.','24'),
|
||||
(386,'No creas en lo que aparento ser. Cree en lo que realmente soy, conóceme.','24'),
|
||||
(387,'Después de una muerte, no siempre sigue un funeral.','24'),
|
||||
(388,'La visita del desastre siempre ocurre de repente.','24'),
|
||||
(389,'Aquellos que viven de la ignorancia se mantienen ajenos a una oscura realidad.','24'),
|
||||
(390,'La muerte no es amable. Es oscura, oscura como lo que puede ver a lo lejos, y estás completamente solo.','24'),
|
||||
(391,'No puedo perdonar que un fenómeno sin sentido como este exista. Voy a terminar con él.','24'),
|
||||
(392,'Lo más cuerdo es estar loco.','24'),
|
||||
(393,'Las personas miserables necesitan que existan personas más miserables que ellas para sentirse felices.','25'),
|
||||
(394,'Cuando los humanos se sienten patéticos, buscan la sombra de alguien más patético para esconderse...','25'),
|
||||
(395,'Aprenderás que cuando sientes rabia, tienes derecho a tenerla, pero eso no te da el derecho de ser cruel.','25'),
|
||||
(396,'Lo único que quería era estar a tu lado.','25'),
|
||||
(397,'Cuando mi voz calle con la muerte, mi corazón te seguirá hablando.','25'),
|
||||
(398,'El arrepentimiento es para las personas que buscan reflexionar sobre su pasado.','25'),
|
||||
(399,'Un hombre que mira hacia atrás y juzga su pasado, es alguien débil.','25');
|
||||
INSERT INTO `FRASES` VALUES
|
||||
(400,'Tú vives por los demás. Yo vivo por mi misma. Ninguna de las dos formas funciona.','25'),
|
||||
(401,'Cambiaré este mundo en un mundo para mí.','25'),
|
||||
(402,'Violencia, si no soluciona tus problemas, es que no estás usando suficiente.','25'),
|
||||
(403,'Si sólo actúas por lo que el instinto te dicta ¡eres igual a un animal!','25'),
|
||||
(404,'Me encerré en una armadura por temor al mundo; ahora es el mundo quien me teme.','25'),
|
||||
(405,'Adiós Kota, en verdad... en verdad sentía algo por ti.','25'),
|
||||
(406,'Un humano deja de serlo cuando deja de pensar.','26'),
|
||||
(407,'No te traicioné, jamás estuve de tu lado para empezar.','26'),
|
||||
(408,'Lo importante no es lo que los demás piensen de ti, sino cómo te sientes por ellos.','26'),
|
||||
(409,'Meliodas, de vez en cuando debes dejar que yo te proteja.','26'),
|
||||
(410,'No importa cuanto mientas, uno nunca puede engañar al corazón.','26'),
|
||||
(411,'Las mujeres se derriten con las palabras de los hombres, mientras que los hombres se derriten con las acciones de las mujeres.','26'),
|
||||
(412,'Que mi arma esté rota no implica que no pueda usarla.','26'),
|
||||
(413,'Hay cosas que es preferible no saber.','26'),
|
||||
(414,'Has leído demasiados libros que pareces estar perdiendo el control de la realidad.','26'),
|
||||
(415,'Tomé mi decisión hace mucho tiempo. Voy a volverme lo suficientemente fuerte como para permanecer a tu lado para siempre.','26'),
|
||||
(416,'Hubiera sido bueno que en vez de robar la fuente de la vida, Ban me hubiera robado a mí.','26'),
|
||||
(417,'Personas tan fuertes no son derrotadas tan fácilmente.','26'),
|
||||
(418,'Las personas que no saben apreciar una buena bebida no tienen derecho a beber.','26'),
|
||||
(419,'No digas que me conoces cuando ni siquiera yo, me he terminado de conocer...','27'), (420,'Inuyasha...¡Sientate!','27'),
|
||||
(421,'Al final... Terminé a tu lado.','27'),
|
||||
(422,'Lo puro se ensucia, lo sucio se purifica, lo bueno se vuelve malo, lo malo se vuelve bueno, todo lo que vive muere y lo que muere renace.','27'),
|
||||
(423,'La ira comienza con la locura y termina con el arrepentimiento.','27'),
|
||||
(424,'Cuando conocí a Kagome recuperé mi corazón perdido.','27'),
|
||||
(425,'¿Querrías ser la madre de mis hijos?','27'),
|
||||
(426,'Mientras mi alma siga en este mundo, más hermosa se verá la luna de medianoche.','27'),
|
||||
(427,'Poseo la libertad para odiar a quien sea, me doy cuenta que mi alma posee mucha más libertad que antes tanto para odiar, como para amar.','27'),
|
||||
(428,'Si una persona necesitara mi ayuda, no lo pensaría dos veces para ayudarla.','27'),
|
||||
(429,'Entiendo que Kikyo siempre estará en el corazón de Inuyasha, pero no puedo evitar el amor que siento por él.','27'),
|
||||
(430,'Te has convertido en demonio por tu propia desesperación.','27'),
|
||||
(431,'Los tontos siempre seran tontos.','27'),
|
||||
(432,'Todos hablan del infierno y del paraíso, pero cuando los humanos fallecen simplemente se encuentran con su fin.','27'),
|
||||
(433,'Los recuerdos no se pueden reemplazar como los datos.','28'),
|
||||
(434,'Hoy también buscaré una persona para mí, una persona que me quiera como soy, que me quiera aunque no pueda hacer sus deseos realidad.','28'),
|
||||
(435,'Espero encontrar algún día a alguien que me quiera solo por ser lo que soy, y espero poder quererla solo por ser lo que es. Poder encontrar a esa persona que es "solo para mí" y que yo sea esa persona "solo para ella".','28'),
|
||||
(436,'La felicidad es estar con alguien a quien quieres aunque nos sucedan cosas malas y dolorosas por estar juntos. Porque no ser capaz de estar juntos es lo más doloroso.','28'),
|
||||
(437,'Braaagas, braagas.','28'),
|
||||
(438,'La amistad es nuestro único tesoro en este mundo. Ignoro por qué razón lucha la gente yo prefiero dar mi vida por aquello en lo que creo.','29'),
|
||||
(439,'A veces se puede hacer justicia desde la maldad.','29'),
|
||||
(440,'Cuando creemos en un sueño y peleamos por él, se hace realidad.','29'),
|
||||
(441,'Lo único que necesita el mal para triunfar, es que la gente buena no haga nada.','29'), (442,'Te prometo que siempre voy a estar a tu lado, tocaré mis mejores melodías para ti, incluso después de la muerte, por toda la eternidad.','29'),
|
||||
(443,'La verdad del universo es que nada es seguro... No existe justicia perfecta ni maldad perfecta.','29'),
|
||||
(444,'El amor les da a los humanos la capacidad de superar sus limitaciones.','29'),
|
||||
(445,'No se necesitan razones particulares para ayudar a alguien más.','29'),
|
||||
(446,'En algún lugar de mi corazón tengo miedo de saber la verdad.','30'),
|
||||
(447,'Si utilizas una forma vaga de comunicación, sólo molestaras más a la otra persona.','30'),
|
||||
(448,'No puedo pensar en qué más decirle a la persona que se alejó de mí sin decirme porqué.','30'),
|
||||
(449,'Solo puedo ayudarte a lidiar con las consecuencias.','30'),
|
||||
(450,'Hacer algo y esperar que la otra persona lo olvide... Eso no es propio de un hombre.','30'),
|
||||
(451,'Nuestras espaldas están tan cerca, y aún así las cosas que vemos son totalmente diferentes.','30'),
|
||||
(452,'Encariñarse con algo trae muchos problemas.','30'),
|
||||
(453,'Estaba tan desesperado que perdí de vista el objetivo.','30'),
|
||||
(454,'Si lo que has perdido era demasiado,y no se puede sustituir con otra cosa... no tienes que reemplazarla por una sola cosa, ¿verdad?','30'),
|
||||
(455,'Si sólo dependes de tus propios sentimientos, hay cosas que no podrás proteger.','30'),
|
||||
(456,'Quisiera decirle a mi yo de entonces, quien lloraba porque nada empezaría. Que en realidad ha empezado. Que siempre empezará algo.','30'),
|
||||
(457,'Cuando tienes tus manos llenas lidiando con tus propios problemas, puede ser muy difícil simpatizar con otros.','31'),
|
||||
(458,'Desprestigiar a otros te desacredita a ti mismo.','31'),
|
||||
(459,'Mi punto débil es mi falta de interés por lo que me rodea. Por culpa de eso, no sé relacionarme con otros, y probablemente importuné a mucha gente. Pero ahora quiero cambiar.','31'),
|
||||
(460,'Es ineficaz intentar solucionar muchos problemas a la vez.','31'),
|
||||
(461,'¿Quitar las piedras del camino ayuda a la persona que lo recorrerá?','31'),
|
||||
(462,'Si tienen tiempo para criticarla, esfuércense más que ella. Si tienen menos talento, y no trabajan, ¿qué conseguirán?','31'),
|
||||
(463,'La solución correcta depende de la persona...','31'),
|
||||
(464,'¿Cómo crees que se siente la persona a la que le sonríes así?','31'),
|
||||
(465,'Pasarse día tras días con tus amigos, no es algo que pueda hacer un adulto.','31'),
|
||||
(466,'Lentamente, pasar tiempo juntos con esa persona, hará que el cariño que sientas por esa persona crezca. Si sabes como funciona una amistad y su significado, lo más probable es que también sepas lo que es el amor, ¿no lo crees?','31'),
|
||||
(467,'Una lección sin sufrimiento no tiene sentido.','18'),
|
||||
(468,'Tú lloras cuando estás feliz y ríes cuando estás triste. Porque tu corazón te sobrepasó a ti.','32'),
|
||||
(469,'De vez en cuando, cuando despierto... descubro que estoy llorando. El sueño que tuve, no puedo recordarlo. Pero... la sensación de que he perdido algo permanece mucho tiempo después de que despierto.','32'),
|
||||
(470,'Hay una cosa que es cierta, si nos vemos el uno al otro, lo sabremos.','32'),
|
||||
(471,'Las cuerdas representan el flujo en sí mismo. Las cuerdas se tuercen, tambalean, se desenredan, se conectan de nuevo. Eso es el tiempo.','32'),
|
||||
(472,'Aprecia la experiencia, los sueños se desvanecen cuando despiertas.','32'), (473,'Estoy soltero porque quiero.','32'),
|
||||
(474,'No importa dónde estés, te buscaré.','32'),
|
||||
(475,'Siempre estoy buscando algo, una persona, un lugar... no recuerdo qué es o dónde está, pero sé que es importante para mi...','32'),
|
||||
(476,'Te quiero... Que frase tan misteriosa. Cambia el mundo cuando la dices en voz alta. Es una frase mágica. Seguro que lo diré... y te lo diré... a ti.','33'),
|
||||
(477,'Antes de lamentarte... ¿Por qué no mejor haces lo que tengas que hacer y después te lamentas por ello?','33'),
|
||||
(478,'¡Perdón tenma!, ¡No me acordaba de que soy tonto!','33'),
|
||||
(479,'No gastes tus lágrimas en nadie que no valga la pena.','33'),
|
||||
(480,'En el momento en el una persona detiene su camino lo único que le espera es la muerte. Si no deseas eso tienes que seguir corriendo hacia el éxito.','33'),
|
||||
(481,'Todo lo hago por ti, Tenma-chan. Para mí, la escuela era algo sin importancia, pero tú la has convertido en un oasis.','33'),
|
||||
(482,'¿Nunca escuchaste que debes corregir tus errores observando los de los otros?','33'),
|
||||
(483,'Incluso si las cosas son dolorosas y difíciles las personas deberían apreciar el significado de lo que es estar vivo al máximo.','34'),
|
||||
(484,'Cortar un vínculo siempre es mucho más fácil que forjar uno.','34'),
|
||||
(485,'El pesimista se queja del viento, el optimista espera que cambie y el realista ajusta las velas.','34'),
|
||||
(486,'Si puedes huir y regresar, si puedes dormir y despertar, si estás destruida, deberías ser capaz de recomponerte.','34'),
|
||||
(487,'¡Tú que profanas esta tierra del sol naciente! ¡Erradico con Hanki y expulso la frívola y basta inmundicia! ¡DESGÁRRATE!','34'),
|
||||
(488,'El crepúsculo es el límite entre el día y la noche. Aquellos de este mundo temen a la oscuridad y se esconden de ella... Mientras que aquellos del otro mundo se mezclan en la oscuridad y se divierten salvajemente.','34'),
|
||||
(489,'Si tú murieses ahora... habrán muchas personas que nunca te volverán a ver... es por eso que no debes cruzar la línea.','34'),
|
||||
(490,'No te preocupes... ¡Los dioses no cagan!','34'),
|
||||
(491,'Los deseos de las personas son lo que dejan a los dioses existir.','34'),
|
||||
(492,'Si muero aquí será porque no estaba destinado a llegar más lejos.','36'),
|
||||
(493,'A mi me da igual que los dioses existan o no, yo soy el amo de mi vida, paso de los temas religiosos, pero jamás menospreciaré a alguien que crea en ellos.','36'), (494,'Gracias por haberme amado, sabiendo que tengo sangre maldita por mis venas, gracias por haberme amado antes de haberme juzgado... ¡Gracias!','36'),
|
||||
(495,'No me importa lo que la sociedad diga de mí. Nunca voy a hacer nada que vaya en contra de mis valores y de lo que después pueda arrepentirme.','36'),
|
||||
(496,'Yo nunca me pierdo... son los demás los que no me encuentran.','36'),
|
||||
(497,'¡Un hombre solo tiene derecho a mirar a otro hacia abajo, cuando ha de ayudarle a levantarse!','36'),
|
||||
(498,'El poder no está determinado por el tamaño de tu cuerpo, sino por el tamaño de tu corazón y sueños.','36'),
|
||||
(499,'Cuando tienes mala suerte lo único que puedes hacer es enfrentarla, quejarte y poner excusas te hará lucir patético.','36'),
|
||||
(500,'Si me rindiera, no tendría sentido haber nacido hombre. Jamás me arrepentiré de nada en mi vida.','36'),
|
||||
(501,'La muerte no es excusa para fallar a una promesa.','36'),
|
||||
(502,'Los débiles no pueden escoger su manera de morir.','36'),
|
||||
(503,'Cuando alguien no está destinado a morir en ese momento, ni todas las armas del mundo podrían matarlo.','36'),
|
||||
(504,'Es horrible como algunas personas pueden odiar a otras por no pensar como ellos.','36'),
|
||||
(505,'Nadie nace completamente solo en este mundo, algún día encontrarás nakamas que lucharán por ti, y tendrás un sitio al que llamar hogar. ¡Mantente viva hasta entonces!','36'),
|
||||
(506,'No importa cuán oscura sea la noche. Al final, siempre se acabará haciendo de día.','36'),
|
||||
(507,'¡Yo no se utilizar una espada! ¡Ni tampoco se cocinar! ¡Ni se me da bien navegar! ¡Ni tampoco decir mentiras!... Por eso se que sin mis amigos no podría hacer nada.','36'),
|
||||
(508,'Tengo la enfermedad de "Si-entro-en-esa-isla-me-muero".','36'),
|
||||
(509,'Todos se debilitan cuando dudan.','36'),
|
||||
(510,'Me quedé sin lugar a donde correr... entonces ¡Volé!...','36'),
|
||||
(511,'Seguiré creyendo en el futuro sin importar que se burlen de mi.','36'),
|
||||
(512,'De lo único que me arrepiento, es de no poder verte cumplir tu sueño, aunque se que lo lograrás, porque eres mi hermano.','36'),
|
||||
(513,'El mundo consiste en constantes elecciones. En otras palabras, consiste de continuas apuestas arriesgadas. No todo el mundo es consciente de esto.','37'),
|
||||
(514,'Yo quiero ser lo suficientemente fuerte para golpear al débil que soy hoy.','37'), (515,'Algún día, la lluvia se detendrá, el cielo se aclarará y un arco iris aparecerá.','37'), (516,'¿Acaso existe alguien tan idiota para detenerse cuando se lo piden?','37'),
|
||||
(517,'Los humanos débiles son irresponsables y desconfiados, prefieren culpar a los demás y dejarlos sufrir.','37'),
|
||||
(518,'Solo los adultos cabreados y niños ingenuos se creen sus propias fantasías.','37'), (519,'¡No tengo tiempo para morir!','37'),
|
||||
(520,'Cuando la gente se aleja de ti, déjalos ir, no significa que sean malas personas, solo que su parte en tu historia ya se terminó.','37'),
|
||||
(521,'No entiendo este extraño poder de sangre... duele... estoy asustado... pero... no pienso rendirme... ¡Sin pelear!','37'),
|
||||
(522,'Si le preguntas a alguien lo que piensa, no deberías tratar de imponer tu propia opinión en ellos si no te gusta su respuesta.','38'),
|
||||
(523,'Si aceptas todo lo que te dicen sin cuestionarlo acabarás perdiendo la habilidad de pensar.','38'),
|
||||
(524,'El no tener miedo a sufrir no significa ser fuerte.','38'),
|
||||
(525,'Alguien que no aprecia su propia vida, no tiene lo que se necesita para proteger a alguien más..','38'),
|
||||
(526,'Al final lo que queda... no siempre es lo que deseas.','38'),
|
||||
(527,'La lluvia cae como si hubiera olvidado cómo parar.','38'),
|
||||
(528,'No estoy desesperado, porque... sin esperanza, no puede haber desesperación.','38'), (529,'Es imposible vivir sin lastimar a nadie.','38'),
|
||||
(530,'Prefiero disfrutar lo que estoy viviendo ahora a preocuparme por lo que ya ha pasado.','38'),
|
||||
(531,'Descubrí el miedo de estar solo. Eso supera cualquier cosa.','38'),
|
||||
(532,'La peor parte de ser fuerte, es que nadie te pregunta si estás bien.','39'),
|
||||
(533,'El miedo a sufrir es peor que el propio sufrimiento.','39'),
|
||||
(534,'No puedo decir si eres un Ángel o un Demonio. Se trata de dos seres de naturaleza similar, la diferencia es donde residen sus órdenes.','39'),
|
||||
(535,'Si vas a lastimar a tantas personas inocentes con la ridícula excusa de querer hacer un mejor lugar... Destruiré esa ilusión con mis puños.','39'),
|
||||
(536,'Si la respuesta no tiene ningún significado para ti, preguntar es una pérdida de tiempo.','39'),
|
||||
(537,'Si termino fallando 100 veces, ¡pues intentaré 100 veces más! Y si fallo 1000 veces, ¡Intentaré 1000 Veces más!','39'),
|
||||
(538,'Somos aviadores del tiempo, escaladores trepando por el tiempo.','32'),
|
||||
(539,'¿Crees que eres especial? No lo eres. Todo el mundo es igual, todos mienten, todos tienen algo que ocultar. Nadie pasa esta vida siendo completamente honesto.','40'),
|
||||
(540,'Si de verdad deseas escapar de una vida rutinaria, debes mantenerte constantemente involucrado.','40'),
|
||||
(541,'El mundo gira..., pero no en la dirección que ella creía.','40'),
|
||||
(542,'No soy tan malo como para matar a alguien, pero tampoco soy tan bueno como para detener a alguien que quiere morir.','40'),
|
||||
(543,'Si quieres huir del pasado, bien. Pero hagas lo que hagas, nunca huyas del presente, o peor, de tu futuro.','40'),
|
||||
(544,'Como sea, una vez que aceptas que existen las coincidencias, puedes encontrar muchas de ellas.','40'),
|
||||
(545,'El falso amigo es como la sombra que nos sigue mientras dura el sol.','40'),
|
||||
(546,'Las cosas no cambian tan fácil, aunque estes en otro lugar, sigues siendo la misma persona.','40'),
|
||||
(547,'Sus sueños eran mentiras que ella se decía a sí misma.','40'),
|
||||
(548,'No puedo perder frente a alguien que me ama.','40'),
|
||||
(549,'Esta tarde las piezas del ajedrez están en mi poder.','40'),
|
||||
(550,'Yo soy un dragón. Tú eres un tigre. Desde tiempos remotos, el dragón ha sido la única bestia que ha podido igualar al tigre.','35'),
|
||||
(551,'Incluso si no estás ahora a mi lado, saltaré a través del tiempo y el espacio para estar siempre a tu lado. Estos sentimientos nunca cambiarán.','35'),
|
||||
(552,'El amor es como creer en los ovnis, nunca los has visto pero no pierdes las esperanzas.','35'),
|
||||
(553,'Si tropiezas en los pasillos te sangrará la nariz y si tropiezas en la vida te sangrará el corazón.','35'),
|
||||
(554,'Mi felicidad sólo puede... ¡Solo puede hacerse con mis propias manos! Mi felicidad no depende de nadie más que de mí.','35'),
|
||||
(555,'La mejor forma de tener algo es dejando de desearlo...','35'),
|
||||
(556,'Si .... si de casualidad quiero escaparme, solo asegúrate de alcanzarme.','35'),
|
||||
(557,'Hay cosas que no se pueden solucionar con un simple “perdón".','35'),
|
||||
(558,'No quiero emocionarme y ser atrapada por algo que no puedo ver... y perder las cosas que puedo ver.','35'),
|
||||
(559,'Hablar contigo me sienta peor que la regla.','35'),
|
||||
(560,'Ya has levantado el pie, ¿no? Lo levantaste porque querías moverte hacia adelante, ¿verdad? Así que, ¿qué otra opción tienes si no es dar un paso hacia el frente?','35'),
|
||||
(561,'No entiendo qué está mal y qué no.... todo lo que sé es... ¡Que no puedo parar de moverme hacia delante!','35'),
|
||||
(562,'La amistad entre mujeres en verdad asusta.','35'),
|
||||
(563,'Por favor, llévate estos sentimientos lejos de mí... Hazme más fuerte. Ahora mismo no soy buena... No importa lo que haga, no puedo parar... de amar a Ryuuji.','35'),
|
||||
(564,'¡No lo sabrás hasta que lo intentes!','35'),
|
||||
(565,'¿Ryuuji?... ¿Kitamura-kun?... Pensé que eras Ryuuji... Ryuuji me hubiera salvado de algo como esto... Lo siento.','35'),
|
||||
(566,'¿Tigre Compacto?... ¡Lo tengo, tigr-- *golpe*... Sí, encaja a la perfección...','35'),
|
||||
(567,'¿Me obedecerás como un perrito? ¿Harás cualquier cosa hasta la exageración?','35'),
|
||||
(568,'Ahora que la encontraste no puedo seguir viviendo. Debo morir.
|
||||
- ¡Entonces no me mates!
|
||||
¡No quiero morir, por eso te mataré!','35'),
|
||||
(569,'Las lagrimas falsas traen dolor a los que te rodean. Una falsa sonrisa falsa trae dolor a uno mismo.','41'),
|
||||
(570,'Si la felicidad tuviera una forma, tendría forma de cristal, porque puede estar a tu alrededor sin que la notes. Pero si cambias de perspectiva, puede reflejar una luz capaz de iluminarlo todo.','41'),
|
||||
(571,'Hay bondad que nace de la maldad, pero también hay maldad que nace de la bondad.','41'),
|
||||
(572,'No es difícil hacer lo correcto .... lo difícil es saber qué es lo correcto ...','41'),
|
||||
(573,'¿Inmortalidad?.¿Para qué deseas eso? La vida se llama vida porque tiene un límite. Una vida sin muerte no es vida, es mera existencia.','41'),
|
||||
(574,'Por el mundo podría dar mucho... pero por la persona que amo, daría hasta mi vida.','41'),
|
||||
(575,'Una vida que se vive sin hacer nada es lo mismo que una muerte lenta.','41'),
|
||||
(576,'Para vencer al mal me convertiré en un mal aún mayor.','41'),
|
||||
(577,'¿Qué harás cuando la justicia no pueda ganarle a la maldad, derrotarás maldad con maldad, o aceptarás que la justicia no puede ganar a la maldad?','41'),
|
||||
(578,'Lelouch ¿Sabes por qué la nieve es blanca? Porque se ha olvidado de qué color era.','41'),
|
||||
(579,'El orgullo no solo puede hacer a una persona, también puede destruirla.','41'),
|
||||
(580,'Lelouch vi Britannia te ordena:..','41'),
|
||||
(581,'Es gracioso que la persona que tratas de proteger, sea quien te hiere.','42'),
|
||||
(582,'Todos son peones para proteger a la pieza más valiosa del juego.','42'),
|
||||
(583,'No sé que es más fuerte, mi deseo de matarte o mi deseo de amarte hasta que nos consuma toda la eternidad.','42'),
|
||||
(584,'Mis manos... están más manchadas de lo que tú crees. ¿Podrás soportar que el resto de tu vida te acaricie con estas manos sucias?','42'),
|
||||
(585,'Entonces huiré de ti para que tengas un motivo para vivir.','42'),
|
||||
(586,'Hace tiempo decidí... que siempre estaría de tu parte, aún en el caso, de que seamos enemigos...','42'),
|
||||
(587,'Tu nombre es Yuuki, la mujer que quiero proteger.','42'),
|
||||
(588,'Yo... En realidad no sé porque, pero... Creo... Que es increíble poder salvar a la gente.','43'),
|
||||
(589,'Por una u otra razón, recordé las palabras de mi madre. Y esa vez solo quería que me dijeses. ¡Tú también puedes ser un héroe!','43'),
|
||||
(590,'¡Dile al mundo entero ¡Estoy aquí!','43'),
|
||||
(591,'No hay nada más frágil que un corazón apunto de estallar.','43'),
|
||||
(592,'Cuanto más brilla la luz, más grande es la oscuridad.','43'),
|
||||
(593,'Plus ultra!!!!!','43'),
|
||||
(594,'Hay una diferencia entre los que han nacido con suerte... ¡Y los que han luchado para ganárselo! Hincha el pecho y siéntete orgulloso. ¡Este es el poder que te has ganado por ti mismo, chico!','43'),
|
||||
(595,'Ya es hora de tu recompensa, Midoriya Izuku. (..) Cómetelo','43'),
|
||||
(596,'"Deku" suena como la palabra japonesa "Puedes hacerlo".','43'),
|
||||
(597,'¡Recuperaré lo que es ser un héroe! ¡Vamos! ¡Vengan por mi impostores! ¡Al único que dejaré que me mate es al héroe verdadero! ¡All Might!','43'),
|
||||
(598,'Entrometerse cuando no hacía falta es la esencia de ser un héroe.','43'),
|
||||
(599,'La gente que solo habla no vale nada.','43'),
|
||||
(600,'Un objetivo sin un plan no es más que una mera ilusión.','43'),
|
||||
(601,'Cada ser humano tiene un número de oportunidades de salir de su caparazón y crecer. Pero no pueden lograr la mayoría de esas oportunidades por su cuenta. Necesitan poderosos enemigos que llamen sus poderes de concentración y aliados con los cuales compartir sus experiencias.','44'),
|
||||
(602,'Clase, no podemos recuperar el pasado que perdimos. Yo mismo... He cometido muchos errores. Aunque lo que podemos hacer... Es aprender de nuestro pasado, así no lo repetiremos.','44'),
|
||||
(603,'Para mí, la opción de abandonarte no existe. Confía en mí y salta cuando quieras.','44'),
|
||||
(604,'No subestimes a los humanos.','44'),
|
||||
(605,'Su talento para los asesinatos con certeza le será útil en su trabajo como profesor.','44'),
|
||||
(606,'Ignora todos los obstáculos que encuentres en el camino, persevera y serás recompensado.','45'),
|
||||
(607,'Quedarte sin imaginación es como estar muerto.','46'),
|
||||
(608,'Tienes que hacer lo opuesto de lo que la gente se espera. ¿De qué otra manera los sorprenderías?','46'),
|
||||
(609,'No hay historia más atractiva que una sin fin definido.','46'),
|
||||
(610,'Soy un tazón de cerdo atractivo que enamora a los hombres.','46');
|
||||
8
app/src/main/res/values/colors.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="colorPrimaryLight">#394850</color>
|
||||
<color name="colorPrimary">#28343a</color>
|
||||
<color name="colorPrimaryDark">#23292d</color>
|
||||
<color name="colorAccent">#FF4081</color>
|
||||
|
||||
</resources>
|
||||
7
app/src/main/res/values/strings.xml
Normal file
@@ -0,0 +1,7 @@
|
||||
<resources>
|
||||
<string name="app_name">Calendario Otaku</string>
|
||||
<string name="sharefrom"> -A través de Calendario Otaku, consíguelo aquí (URL goo.gl)-</string>
|
||||
<!-- TEST IDS OF ADMOB, FOR GIT -->
|
||||
<!--<string name="admob_id">ca-app-pub-3940256099942544~3347511713</string>
|
||||
<string name="admob_videoid">ca-app-pub-3940256099942544/5224354917</string>-->
|
||||
</resources>
|
||||
11
app/src/main/res/values/styles.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<resources>
|
||||
|
||||
<!-- Base application theme. -->
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
|
||||
<!-- Customize your theme here. -->
|
||||
<item name="colorPrimary">@color/colorPrimary</item>
|
||||
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
|
||||
<item name="colorAccent">@color/colorAccent</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.jkanetwork.st.frasesdeanime;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Example local unit test, which will execute on the development machine (host).
|
||||
*
|
||||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
*/
|
||||
public class ExampleUnitTest {
|
||||
@Test
|
||||
public void addition_isCorrect() throws Exception {
|
||||
assertEquals(4, 2 + 2);
|
||||
}
|
||||
}
|
||||
2
app/versioncode.count
Normal file
@@ -0,0 +1,2 @@
|
||||
#Sat Dec 02 21:22:52 CET 2017
|
||||
VERSION_CODE=830
|
||||
30
build.gradle
Normal file
@@ -0,0 +1,30 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
ext.kotlin_version = '1.2.0-release-Studio3.0-1'
|
||||
buildscript {
|
||||
repositories {
|
||||
jcenter()
|
||||
google()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.0.1'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.0"
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
jcenter()
|
||||
maven { url 'https://jitpack.io' }
|
||||
maven {
|
||||
url "https://maven.google.com"
|
||||
}
|
||||
|
||||
google()
|
||||
}
|
||||
}
|
||||
|
||||
task clean(type: Delete) {
|
||||
delete rootProject.buildDir
|
||||
}
|
||||
17
createimgs
Normal file
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
## Create the .pngs from a 512x512 img using "convert"
|
||||
img=logo512.png
|
||||
convert $img -resize 192x192 /tmp/a.png && pngcrush -reduce -brute /tmp/a.png app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
|
||||
convert $img -resize 144x144 /tmp/a.png && pngcrush -reduce -brute /tmp/a.png app/src/main/res/mipmap-xxhdpi/ic_launcher.png
|
||||
convert $img -resize 96x96 /tmp/a.png && pngcrush -reduce -brute /tmp/a.png app/src/main/res/mipmap-xhdpi/ic_launcher.png
|
||||
convert $img -resize 72x72 /tmp/a.png && pngcrush -reduce -brute /tmp/a.png app/src/main/res/mipmap-hdpi/ic_launcher.png
|
||||
convert $img -resize 48x48 /tmp/a.png && pngcrush -reduce -brute /tmp/a.png app/src/main/res/mipmap-mdpi/ic_launcher.png
|
||||
|
||||
#Rounded
|
||||
cp app/src/main/res/mipmap-xxxhdpi/ic_launcher.png app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
|
||||
cp app/src/main/res/mipmap-xxhdpi/ic_launcher.png app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
|
||||
cp app/src/main/res/mipmap-xhdpi/ic_launcher.png app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
|
||||
cp app/src/main/res/mipmap-hdpi/ic_launcher.png app/src/main/res/mipmap-hdpi/ic_launcher_round.png
|
||||
cp app/src/main/res/mipmap-mdpi/ic_launcher.png app/src/main/res/mipmap-mdpi/ic_launcher_round.png
|
||||
|
||||
rm /tmp/a.png
|
||||
17
gradle.properties
Normal file
@@ -0,0 +1,17 @@
|
||||
## Project-wide Gradle settings.
|
||||
#
|
||||
# For more details on how to configure your build environment visit
|
||||
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
||||
#
|
||||
# Specifies the JVM arguments used for the daemon process.
|
||||
# The setting is particularly useful for tweaking memory settings.
|
||||
# Default value: -Xmx1024m -XX:MaxPermSize=256m
|
||||
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
|
||||
#
|
||||
# When configured, Gradle will run in incubating parallel mode.
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||
# org.gradle.parallel=true
|
||||
#Tue Nov 14 12:27:09 CET 2017
|
||||
org.gradle.jvmargs=-Xmx1536m
|
||||
android.enableAapt2=false
|
||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
6
gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
#Sat Sep 02 13:38:47 CEST 2017
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
|
||||
160
gradlew
vendored
Normal file
@@ -0,0 +1,160 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn ( ) {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die ( ) {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
esac
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
||||
function splitJvmOpts() {
|
||||
JVM_OPTS=("$@")
|
||||
}
|
||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
||||
|
||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
||||
90
gradlew.bat
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
set CMD_LINE_ARGS=%$
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
||||
BIN
logo512.png
Normal file
|
After Width: | Height: | Size: 92 KiB |
1
settings.gradle
Normal file
@@ -0,0 +1 @@
|
||||
include ':app'
|
||||
329
svg_copiado/dibu opciones con muñequito.svg
Normal file
|
After Width: | Height: | Size: 126 KiB |
212
svg_copiado/dibu opciones.svg
Normal file
|
After Width: | Height: | Size: 120 KiB |
752
svg_copiado/dibu.svg
Normal file
|
After Width: | Height: | Size: 144 KiB |