Skip to content

Commit 66ee5b0

Browse files
committed
update for deploy the first version of app
1 parent 56680f6 commit 66ee5b0

22 files changed

+1329
-179
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,6 @@ charpie / généré /
8383
peluches / sorties /
8484
charpie / tmp /
8585
# peluches/rapports/
86+
/app/src/androidTest/java/fr/shayfox/k_note/
87+
/app/src/test/java/fr/shayfox/k_note/
88+
/.idea/

.idea/androidTestResultsUserPreferences.xml

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/assetWizardSettings.xml

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

LICENCE

Lines changed: 674 additions & 21 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,15 @@
1-
# K-Note
2-
Dépos open source de l'application de note de cuisine K-Note
1+
<div id="top"></div>
2+
<h2 align="center">K-Note</h2>
3+
<p align="center"><i>Dépos open source de l'application android de note de cuisine K-Note</i></p>
4+
<p align="center">
5+
<img src="https://img.shields.io/badge/build-Ready%20to%20go-brightgreen"/>
6+
<img src="https://img.shields.io/badge/dynamic/json?color=blue&label=Version&query=version&url=https%3A%2F%2Fraw.githubusercontent.com%2FShayF0x%2FK-Note%2Fmaster%2Fk-note.json "/>
7+
</p>
8+
### Qu'est ce que ?
9+
K-Note est une application android téléchargable depuis github qui vous permet de stocker, trier et créer des notes de cuisines complètes. Ajouter le nom, les etiquettes, une image, les ingrédients, les consignes de préparations, le materiel, le temps demandé ... dans l'application elle même et consulté ou partagez les avec qui vous voulez par un simple fichier json.
10+
11+
<br>
12+
13+
### Licence
14+
[ GPL-3.0 ](https://choosealicense.com/licenses/gpl-3.0/)
15+
<p align="right">(<a href="#top">retour en haut</a>)</p>

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ android {
3434

3535
dependencies {
3636

37+
implementation "io.noties.markwon:core:4.6.2"
3738
implementation 'com.google.code.gson:gson:2.8.7'
3839
implementation 'com.github.dhaval2404:imagepicker:2.1'
3940
implementation 'androidx.appcompat:appcompat:1.6.1'

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
66
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
77
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
8+
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
9+
<uses-permission android:name="android.permission.INTERNET"/>
810

911
<application
1012
android:allowBackup="true"
@@ -42,7 +44,7 @@
4244
android:theme="@style/Theme.KNote.NoActionBar">
4345
</activity>
4446
<provider
45-
android:authorities="fr.shayfox.k_note.controller.ConsultNoteActivity.provider"
47+
android:authorities="${applicationId}.provider"
4648
android:name="androidx.core.content.FileProvider"
4749
android:exported="false"
4850
android:grantUriPermissions="true">

app/src/main/java/fr/shayfox/k_note/adapter/NoteAdapter.java

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -121,31 +121,31 @@ public void onBindViewHolder(ViewHolder viewHolder, final int position) {
121121
notifyDataSetChanged();
122122
});
123123

124-
viewHolder.getImageView().setOnLongClickListener(view -> {
125-
if(itemMode != 1)return false;
126-
127-
final int position1 = viewHolder.getAdapterPosition();
128-
final Note note12 = mMainActivity.mAppManager.getNoteList().get(position1);
129-
AtomicBoolean restore = new AtomicBoolean(false);
130-
131-
mMainActivity.mAppManager.removeNote(note12);
132-
notifyItemRemoved(position1);
133-
mMainActivity.updateListTagNote(mMainActivity.binding.autoCompleteTextView.getText().toString());
134-
135-
Snackbar snackbar = Snackbar
136-
.make(mMainActivity.binding.coordinatorLayout, "La recette "+ note12.getName()+" va être supprimée definitivement !", Snackbar.LENGTH_LONG);
137-
snackbar.setAction("Annuler", v -> {
138-
restore.set(true);
139-
mMainActivity.mAppManager.addNote(note12);
140-
notifyItemInserted(position1);
141-
mMainActivity.updateListTagNote(mMainActivity.binding.autoCompleteTextView.getText().toString());
142-
});
143-
144-
snackbar.setActionTextColor(Color.YELLOW);
145-
snackbar.show();
146-
147-
return false;
148-
});
124+
// viewHolder.getImageView().setOnLongClickListener(view -> {
125+
// if(itemMode != 1)return false;
126+
//
127+
// final int position1 = viewHolder.getAdapterPosition();
128+
// final Note note12 = mMainActivity.mAppManager.getNoteList().get(position1);
129+
// AtomicBoolean restore = new AtomicBoolean(false);
130+
//
131+
// mMainActivity.mAppManager.removeNote(note12);
132+
// notifyItemRemoved(position1);
133+
// mMainActivity.updateListTagNote(mMainActivity.binding.autoCompleteTextView.getText().toString());
134+
//
135+
// Snackbar snackbar = Snackbar
136+
// .make(mMainActivity.binding.coordinatorLayout, "La recette "+ note12.getName()+" va être supprimée definitivement !", Snackbar.LENGTH_LONG);
137+
// snackbar.setAction("Annuler", v -> {
138+
// restore.set(true);
139+
// mMainActivity.mAppManager.addNote(note12);
140+
// notifyItemInserted(position1);
141+
// mMainActivity.updateListTagNote(mMainActivity.binding.autoCompleteTextView.getText().toString());
142+
// });
143+
//
144+
// snackbar.setActionTextColor(Color.YELLOW);
145+
// snackbar.show();
146+
//
147+
// return false;
148+
// });
149149
}
150150

151151
// Return the size of your dataset (invoked by the layout manager)

app/src/main/java/fr/shayfox/k_note/controller/ConsultNoteActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
146146

147147
FileUtils.copy(file, tempFile);
148148

149-
Uri uri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + "." + getLocalClassName() + ".provider", tempFile);
149+
Uri uri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", tempFile);
150150
Intent shareIntent = new Intent();
151151
shareIntent.setAction(Intent.ACTION_SEND);
152152
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);

app/src/main/java/fr/shayfox/k_note/controller/InfoActivity.java

Lines changed: 125 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,54 @@
11
package fr.shayfox.k_note.controller;
22

3+
import android.content.Intent;
34
import android.content.pm.PackageInfo;
45
import android.content.pm.PackageManager;
6+
import android.graphics.BitmapFactory;
7+
import android.graphics.PorterDuff;
8+
import android.graphics.drawable.BitmapDrawable;
9+
import android.net.Uri;
10+
import android.os.AsyncTask;
511
import android.os.Bundle;
12+
import android.text.Spanned;
13+
import android.widget.EditText;
614
import android.widget.TextView;
15+
import android.widget.Toast;
716

817
import androidx.annotation.Nullable;
18+
import androidx.appcompat.app.AlertDialog;
919
import androidx.appcompat.app.AppCompatActivity;
20+
import androidx.constraintlayout.widget.ConstraintLayout;
1021

1122
import com.google.android.material.appbar.MaterialToolbar;
23+
import com.google.android.material.snackbar.Snackbar;
24+
import com.google.gson.Gson;
25+
import com.google.gson.GsonBuilder;
26+
import com.google.gson.JsonObject;
27+
28+
import java.io.File;
29+
import java.util.ArrayList;
30+
import java.util.Arrays;
31+
import java.util.List;
32+
import java.util.concurrent.ExecutionException;
1233

1334
import fr.shayfox.k_note.R;
35+
import fr.shayfox.k_note.manager.Response;
36+
import fr.shayfox.k_note.model.Ingredient;
37+
import fr.shayfox.k_note.model.Note;
38+
import fr.shayfox.k_note.model.Tag;
39+
import fr.shayfox.k_note.serializer.BitmapSerializer;
40+
import fr.shayfox.k_note.utils.FileUtils;
41+
import io.noties.markwon.Markwon;
1442

1543
public class InfoActivity extends AppCompatActivity {
1644

1745
public MaterialToolbar toolbar;
18-
public TextView mTextView;
46+
public TextView mVersionTextView;
47+
48+
public ConstraintLayout mChangeLogLayout, mAuthorLayout, mBugLayout;
1949

50+
private int numberOfTaps;
51+
private long timeMillisOfFirstClick;
2052

2153
@Override
2254
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -31,6 +63,11 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
3163
finish();
3264
});
3365

66+
mChangeLogLayout = findViewById(R.id.info_activity_changelog_layout);
67+
mAuthorLayout = findViewById(R.id.info_activity_author_layout);
68+
mBugLayout = findViewById(R.id.info_activity_bug_layout);
69+
mVersionTextView = findViewById(R.id.info_activity_version_textfield);
70+
3471
PackageManager manager = getApplicationContext().getPackageManager();
3572
PackageInfo info;
3673
try {
@@ -40,8 +77,93 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
4077
throw new RuntimeException(e);
4178
}
4279
String version = info.versionName;
43-
mTextView = findViewById(R.id.info_activity_version_textfield);
44-
mTextView.setText(version);
80+
mVersionTextView.setText(version);
81+
82+
mChangeLogLayout.setOnClickListener(view -> {
83+
84+
Response response = null;
85+
try {
86+
response = getResponse("https://api.github.com/repos/ShayF0x/K-Note/releases/tags/"+version);
87+
} catch (ExecutionException e) {
88+
throw new RuntimeException(e);
89+
} catch (InterruptedException e) {
90+
throw new RuntimeException(e);
91+
}
92+
93+
String message = "La mise à jour ne contient pas de note";
94+
if(response != null){
95+
if(response.get_code() == 404){
96+
message = "Votre version n'est pas officielle";
97+
}else if (response.get_code() == 200){
98+
Gson gson = new Gson();
99+
message = gson.fromJson(response.get_content(), JsonObject.class).get("body").getAsString();
100+
}
101+
}
102+
103+
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(InfoActivity.this, R.style.PopupDialogTheme);
104+
105+
final Markwon markwon = Markwon.create(InfoActivity.this);
106+
final Spanned markdown = markwon.toMarkdown(message);
107+
108+
alertDialogBuilder.setMessage(markdown);
109+
110+
// set dialog message
111+
alertDialogBuilder.setCancelable(false).setPositiveButton("OK", null);
112+
113+
// create alert dialog
114+
AlertDialog alertDialog = alertDialogBuilder.create();
115+
// show it
116+
alertDialog.show();
117+
118+
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(getColor(R.color.secondary_font));
119+
120+
});
121+
122+
mBugLayout.setOnClickListener(view -> {
123+
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/ShayF0x/K-Note/issues"));
124+
startActivity(browserIntent);
125+
});
126+
127+
mAuthorLayout.setOnClickListener(view -> {
128+
129+
if (timeMillisOfFirstClick > 0 && (System.currentTimeMillis() - timeMillisOfFirstClick) > 2000)
130+
numberOfTaps = 1;
131+
else
132+
numberOfTaps++;
133+
if (numberOfTaps == 1)
134+
timeMillisOfFirstClick = System.currentTimeMillis();
135+
if (numberOfTaps == 7 && (System.currentTimeMillis() - timeMillisOfFirstClick) <= 2000 && !MainActivity.INSTANCE.mAppManager.hasNote("Omelette au lait")) {
136+
final Gson gson = new GsonBuilder()
137+
.registerTypeAdapter(Note.class, new BitmapSerializer())
138+
.create();
139+
Toast.makeText(this, "Vous avez activé la recette de l'omelette au lait !", Toast.LENGTH_SHORT).show();
140+
final Note note = new Note("Omelette au lait", "Qui a dit que dans une omelette on met pas de lait ?",
141+
BitmapFactory.decodeResource(getResources(), R.drawable.omelette),
142+
new ArrayList<>(), new int[]{0, 5, 0}, new int[]{0, 5, 0}, new int[]{0, 0, 0},
143+
2,
144+
new ArrayList<>(Arrays.asList(
145+
new Ingredient("Sel", 1, "pincée"),
146+
new Ingredient("oeufs", 4, null),
147+
new Ingredient("lait", 20, Ingredient.Measure.CENTILITRE),
148+
new Ingredient("gruyère", 30, Ingredient.Measure.GRAMME)
149+
)),
150+
"ÉTAPE 1\nDans un bol mélanger les œufs puis y incorporer le lait puis le gruyère et le sel.\n\nÉTAPE 2\nFaire cuire environs 5 minutes.\n\nÉTAPE 3\nEt vous obtenez une omelette très aérée et moelleuse.",
151+
new ArrayList<>(Arrays.asList(
152+
"1 pôele",
153+
"1 bol",
154+
"1 cuillère en bois"
155+
)), null);
156+
FileUtils.writeFileExternalStorage("Notes"+ File.separator+note.getUUID()+".json", gson.toJson(note), true);
157+
MainActivity.INSTANCE.mAppManager.addNote(note);
158+
}
159+
160+
});
161+
162+
163+
}
45164

165+
private Response getResponse(String src) throws ExecutionException, InterruptedException {
166+
AsyncTask<String, Void, Response> async = new MainActivity.getResponseTask().execute(src);
167+
return async.get();
46168
}
47169
}

0 commit comments

Comments
 (0)