diff --git a/app/src/main/java/fr/mobdev/blooddonation/Database.java b/app/src/main/java/fr/mobdev/blooddonation/Database.java index 8efdd4e..c12af25 100644 --- a/app/src/main/java/fr/mobdev/blooddonation/Database.java +++ b/app/src/main/java/fr/mobdev/blooddonation/Database.java @@ -49,7 +49,7 @@ public class Database extends SQLiteOpenHelper { public static Database getInstance(Context context) { if(instance == null) - instance = new Database(context, "BloodDonation.db", null, 3); + instance = new Database(context, "BloodDonation.db", null, 4); return instance; } @@ -61,7 +61,7 @@ public class Database extends SQLiteOpenHelper { public void onCreate(SQLiteDatabase db) { db.execSQL("Create table if not exists user (" + "id integer primary key autoincrement, name varchar(1024), city varchar(1024), postal varchar(10), gender INTEGER, blood varchar(10), D INTEGER, C INTEGER, E INTEGER, min_c INTEGER, min_e INTEGER, K INTEGER" + - ",latitude REAL, longitude REAL);"); + ",latitude REAL, longitude REAL, show_support INTEGER);"); db.execSQL("Create table if not exists site (" + "id integer primary key autoincrement, country INTEGER, address varchar(1024), city varchar(1024), details varchar(4096), mail varchar(1024), phone varchar(1024)," +"siteName varchar(1024), siteId INTEGER, date INTEGER, latitude REAL, longitude REAL, type INTEGER, schedule INTEGER" + @@ -78,7 +78,6 @@ public class Database extends SQLiteOpenHelper { @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - //nothing to do right now db.execSQL("Create table if not exists notification (" + "id integer primary key autoincrement, siteId INTEGER, skip INTEGER " + @@ -87,6 +86,24 @@ public class Database extends SQLiteOpenHelper { { db.execSQL("Alter Table notification Add Column skip INTEGER;"); } + if(oldVersion <= 3) { + db.execSQL("Alter Table user Add Column show_support INTEGER;"); + + String[] column = {"id"}; + Cursor cursor = db.query("user",column,null,null,null,null,null); + if(cursor.getCount() > 0) { + cursor.moveToFirst(); + int userId; + userId = cursor.getInt(0); + cursor.close(); + String whereClause = "id = ?"; + String[] whereArgs = new String[1]; + whereArgs[0] = String.valueOf(userId); + ContentValues values = new ContentValues(); + values.put("show_support", false); + db.update("user", values, whereClause, whereArgs); + } + } } @@ -108,7 +125,8 @@ public class Database extends SQLiteOpenHelper { if(!isFirstTime()) { int userId; - Cursor cursor = getReadableDatabase().query("user",null,null,null,null,null,null); + String[] column = {"id"}; + Cursor cursor = getReadableDatabase().query("user",column,null,null,null,null,null); cursor.moveToFirst(); userId = cursor.getInt(0); String whereClause = "id = ?"; @@ -119,6 +137,7 @@ public class Database extends SQLiteOpenHelper { } else { + values.put("show_support",false); getWritableDatabase().insert("user", null, values); } @@ -545,4 +564,31 @@ public class Database extends SQLiteOpenHelper { } } + public boolean hasShownSupport(){ + String[] column = {"show_support"}; + Cursor cursor = getReadableDatabase().query("user",column,null,null,null,null,null); + if(cursor.getCount() > 0) { + cursor.moveToFirst(); + boolean hasShown = cursor.getInt(0) != 0; + cursor.close(); + return hasShown; + } + return false; + } + + public void setHasShownSupport(){ + String[] column = {"id"}; + Cursor cursor = getReadableDatabase().query("user",column,null,null,null,null,null); + cursor.moveToFirst(); + int userId; + userId = cursor.getInt(0); + cursor.close(); + String whereClause = "id = ?"; + String[] whereArgs = new String[1]; + whereArgs[0] = String.valueOf(userId); + ContentValues values = new ContentValues(); + values.put("show_support",true); + getWritableDatabase().update("user", values,whereClause, whereArgs); + } + } diff --git a/app/src/main/java/fr/mobdev/blooddonation/activity/MainActivity.java b/app/src/main/java/fr/mobdev/blooddonation/activity/MainActivity.java index 6623521..2657b70 100644 --- a/app/src/main/java/fr/mobdev/blooddonation/activity/MainActivity.java +++ b/app/src/main/java/fr/mobdev/blooddonation/activity/MainActivity.java @@ -32,6 +32,7 @@ import fr.mobdev.blooddonation.Database; import fr.mobdev.blooddonation.R; import fr.mobdev.blooddonation.dialog.InformationDialog; import fr.mobdev.blooddonation.dialog.PostDonationDialog; +import fr.mobdev.blooddonation.dialog.SupportDialog; import fr.mobdev.blooddonation.fragment.AboutFragment; import fr.mobdev.blooddonation.fragment.DonationFragment; import fr.mobdev.blooddonation.fragment.DonationInfoFragment; @@ -66,6 +67,7 @@ import android.widget.PopupMenu; import com.google.android.material.navigation.NavigationView; import com.google.android.material.snackbar.Snackbar; + import java.text.DateFormat; import java.util.ArrayList; import java.util.List; @@ -208,6 +210,11 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On transaction.replace(R.id.fragment_container,maps); transaction.commit(); setupToolbar(maps); + if(!Database.getInstance(this).hasShownSupport()){ + SupportDialog dialog = new SupportDialog(); + dialog.setCancelable(false); + dialog.show(getSupportFragmentManager(),null); + } } private void showEditInformation(boolean modify) { diff --git a/app/src/main/java/fr/mobdev/blooddonation/dialog/SupportDialog.java b/app/src/main/java/fr/mobdev/blooddonation/dialog/SupportDialog.java new file mode 100644 index 0000000..dfd6c53 --- /dev/null +++ b/app/src/main/java/fr/mobdev/blooddonation/dialog/SupportDialog.java @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2017 Anthony Chomienne, anthony@mob-dev.fr + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package fr.mobdev.blooddonation.dialog; + +import android.annotation.SuppressLint; +import android.app.Dialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.DialogFragment; +import fr.mobdev.blooddonation.Database; +import fr.mobdev.blooddonation.R; + +@SuppressLint("InflateParams") +public class SupportDialog extends DialogFragment { + + public SupportDialog() + { + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + + LayoutInflater inflater = getActivity().getLayoutInflater(); + View view = inflater.inflate(R.layout.support_dialog, null); + + ImageView tipeee = view.findViewById(R.id.tipeee); + tipeee.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + String url = "https://tipeee.com/schoumi"; + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(url)); + startActivity(intent); + } + }); + + ImageView liberapay = view.findViewById(R.id.liberapay); + liberapay.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + String url = "https://fr.liberapay.com/Schoumi"; + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(url)); + startActivity(intent); + } + }); + + builder + .setTitle(R.string.information) + .setView(view) + .setPositiveButton(R.string.close, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + Database.getInstance(getActivity()).setHasShownSupport(); + } + }).setOnCancelListener(new DialogInterface.OnCancelListener() { + @Override + public void onCancel(DialogInterface dialogInterface) { + Database.getInstance(getActivity()).setHasShownSupport(); + } + }); + return builder.create(); + } +} diff --git a/app/src/main/res/drawable/liberapay_logo.png b/app/src/main/res/drawable/liberapay_logo.png new file mode 100644 index 0000000..86d8c28 Binary files /dev/null and b/app/src/main/res/drawable/liberapay_logo.png differ diff --git a/app/src/main/res/drawable/tipeee.png b/app/src/main/res/drawable/tipeee.png new file mode 100644 index 0000000..11a26d8 Binary files /dev/null and b/app/src/main/res/drawable/tipeee.png differ diff --git a/app/src/main/res/layout/support_dialog.xml b/app/src/main/res/layout/support_dialog.xml new file mode 100644 index 0000000..d8dcc7f --- /dev/null +++ b/app/src/main/res/layout/support_dialog.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 11281c8..d629d9b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -93,6 +93,9 @@ La Carte à besoin des droits en écriture/lecture sur le stockage externe Réessayer Accueil + Information + Cette application est une initiative indépendante de l\'EFS. Vous pouvez soutenir son développement ainsi que d\'autre projet de son créateur grâce à + et ou grâce à Tipeee