Skip to content
Snippets Groups Projects
Commit e4b56269 authored by @potel5u's avatar @potel5u
Browse files

test de creation et ouverture de modele simplifié

parent 0dac6259
No related branches found
No related tags found
No related merge requests found
......@@ -21,6 +21,12 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".CreateActivity"
android:exported="false"/>
<activity
android:name=".OpenActivity"
android:exported="false"/>
</application>
</manifest>
\ No newline at end of file
package fr.ul.projet;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
public class CreateActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_create);
String titreModele = getIntent().getStringExtra("titreModele");
TextView textView = findViewById(R.id.textView);
textView.setText(titreModele);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.create), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
}
public void home(View v){
Intent res = new Intent();
finish();
}
}
package fr.ul.projet;
import android.content.ContentResolver;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.OpenableColumns;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
public class MainActivity extends AppCompatActivity {
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private ActivityResultLauncher<Intent> launcher;
private static final int PICK_FILE_REQUEST = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
......@@ -20,5 +38,129 @@ public class MainActivity extends AppCompatActivity {
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
findViewById(R.id.boutonNouveau).setOnClickListener(this);
findViewById(R.id.boutonOuvrir).setOnClickListener(this);
this.launcher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result){
int resCode = result.getResultCode(); // Code retourné par l'activité
}
}
);
}
public void onClick(View v){
if (v.getId() == R.id.boutonNouveau) {
nouveauModele();
}else if (v.getId() == R.id.boutonOuvrir){
ouvrirModele();
}
}
public void nouveauModele(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Entrez un nom pour votre modèle");
final EditText input = new EditText(this);
builder.setView(input);
// Bouton de validation
builder.setPositiveButton("OK", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which){
String userInput = input.getText().toString();
Intent intent = new Intent(MainActivity.this, CreateActivity.class);
intent.putExtra("titreModele", userInput);
launcher.launch(intent);
}
});
// Bouton d'annulatiopn
builder.setNegativeButton("Annuler", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which){
dialog.cancel();
}
});
builder.show();
}
public void ouvrirModele(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Sélectionner un fichier");
builder.setMessage("Voulez-vous choisir un fihcier ?");
// Bouton de validation
builder.setPositiveButton("Choisir", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which){
openFileChooser();
}
});
// Bouton d'annulatiopn
builder.setNegativeButton("Annuler", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which){
dialog.dismiss();
}
});
builder.show();
}
private void openFileChooser(){
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(intent, "Sélectionner un fichier"), PICK_FILE_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_FILE_REQUEST && resultCode == RESULT_OK && data != null){
Uri fileUri = data.getData();
if (fileUri != null){
Intent intent = new Intent(MainActivity.this, OpenActivity.class);
intent.putExtra("fichier", getFileName(fileUri));
launcher.launch(intent);
}
}
}
public String getFileName(Uri uri){
String result = null;
// Vérifier si l'URI contient un nom de fichier
if (uri.getScheme().equals("content")) {
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(uri, null, null, null, null);
if (cursor != null) {
int nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
if (nameIndex != -1) {
cursor.moveToFirst();
result = cursor.getString(nameIndex);
}
cursor.close();
}
}
// Si l'URI est un chemin de fichier, extraire le nom du fichier
if (result == null) {
result = uri.getPath();
int cut = result.lastIndexOf('/');
if (cut != -1) {
result = result.substring(cut + 1);
}
}
return result;
}
}
\ No newline at end of file
package fr.ul.projet;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
public class OpenActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_open);
String nomFichier = getIntent().getStringExtra("fichier");
TextView textView = findViewById(R.id.textView);
textView.setText(nomFichier);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.open), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
}
public void home(View v){
Intent res = new Intent();
finish();
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/create"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/creer_mess"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="home"
android:text="@string/home"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.929" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -7,13 +7,28 @@
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
<Button
android:id="@+id/boutonNouveau"
android:layout_width="220dp"
android:layout_height="41dp"
android:text="@string/creer"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.39" />
<Button
android:id="@+id/boutonOuvrir"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:text="@string/ouvrir"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.556" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/open"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ouvrir_mess"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="home"
android:text="@string/home"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.929" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<resources>
<string name="app_name">PROJET</string>
<string name="creer">Créer un nouveau modèle</string>
<string name="ouvrir">Ouvrir un modèle existant</string>
<string name="creer_mess">Nouveau modèle créé</string>
<string name="ouvrir_mess">Modèle correctement importé</string>
<string name="home">Retour à l\'accueil</string>
</resources>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment