summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/jopek/lectordecodi/ui
diff options
context:
space:
mode:
authorMaksymilian Jopek <maks@jopek.eu>2022-09-22 20:25:19 +0200
committerMaksymilian Jopek <maks@jopek.eu>2022-09-22 20:25:19 +0200
commitd191a1cfc5ec76fd9985a0878b42775dbe1eddf8 (patch)
treef93cb7fb6de2abc9f178987f081865ce43aed0d9 /app/src/main/java/com/jopek/lectordecodi/ui
parent36703c46b11a2300cdbba219628fc63be5bde7c3 (diff)
downloadlector-de-codi-d191a1cfc5ec76fd9985a0878b42775dbe1eddf8.tar.gz
lector-de-codi-d191a1cfc5ec76fd9985a0878b42775dbe1eddf8.tar.zst
lector-de-codi-d191a1cfc5ec76fd9985a0878b42775dbe1eddf8.zip
All / settings logic
Diffstat (limited to 'app/src/main/java/com/jopek/lectordecodi/ui')
-rw-r--r--app/src/main/java/com/jopek/lectordecodi/ui/barcode_gen/BarcodeGenFragment.java81
-rw-r--r--app/src/main/java/com/jopek/lectordecodi/ui/qrcode_gen/QRCodeGenFragment.java98
-rw-r--r--app/src/main/java/com/jopek/lectordecodi/ui/settings/SettingsFragment.java54
-rw-r--r--app/src/main/java/com/jopek/lectordecodi/ui/settings/SettingsViewModel.java7
4 files changed, 222 insertions, 18 deletions
diff --git a/app/src/main/java/com/jopek/lectordecodi/ui/barcode_gen/BarcodeGenFragment.java b/app/src/main/java/com/jopek/lectordecodi/ui/barcode_gen/BarcodeGenFragment.java
index 7ccda24..f13edee 100644
--- a/app/src/main/java/com/jopek/lectordecodi/ui/barcode_gen/BarcodeGenFragment.java
+++ b/app/src/main/java/com/jopek/lectordecodi/ui/barcode_gen/BarcodeGenFragment.java
@@ -1,6 +1,14 @@
package com.jopek.lectordecodi.ui.barcode_gen;
+import static com.jopek.lectordecodi.MainActivity.TAG;
+import static com.jopek.lectordecodi.SharedPreferencesManager.getSaveHeight;
+import static com.jopek.lectordecodi.SharedPreferencesManager.getSaveWidth;
+import static com.jopek.lectordecodi.SharedPreferencesManager.getWhereSave;
+
+import android.Manifest;
+import android.content.pm.PackageManager;
import android.graphics.Bitmap;
+import android.media.MediaScannerConnection;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
@@ -9,9 +17,10 @@ import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
-import android.widget.TextView;
+import android.widget.Toast;
import androidx.annotation.NonNull;
+import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
@@ -19,17 +28,20 @@ import com.google.zxing.BarcodeFormat;
import com.jopek.lectordecodi.databinding.FragmentBarcodeGenBinding;
import com.journeyapps.barcodescanner.BarcodeEncoder;
-public class BarcodeGenFragment extends Fragment {
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.Random;
+public class BarcodeGenFragment extends Fragment {
private FragmentBarcodeGenBinding binding;
private EditText etInput;
private ImageView img;
private Button btnGen;
+ private Button btnSave;
+ private Bitmap code;
- public View onCreateView(@NonNull LayoutInflater inflater,
- ViewGroup container, Bundle savedInstanceState) {
- BarcodeGenViewModel barcodeGenViewModel =
- new ViewModelProvider(this).get(BarcodeGenViewModel.class);
+ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ BarcodeGenViewModel barcodeGenViewModel = new ViewModelProvider(this).get(BarcodeGenViewModel.class);
binding = FragmentBarcodeGenBinding.inflate(inflater, container, false);
View root = binding.getRoot();
@@ -37,21 +49,68 @@ public class BarcodeGenFragment extends Fragment {
etInput = binding.plainTextInput;
img = binding.barcodeImg;
btnGen = binding.btnGenBarcode;
+ btnSave = binding.btnSaveBarcode;
btnGen.setOnClickListener(v -> {
try {
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
- Bitmap bitmap = barcodeEncoder.encodeBitmap(String.valueOf(etInput.getText()), BarcodeFormat.EAN_13, 400, 400);
- Log.d("maks", "onCreateView: " + bitmap);
- img.setImageBitmap(bitmap);
- } catch(Exception e) {
-
+ code = barcodeEncoder.encodeBitmap(String.valueOf(etInput.getText()), BarcodeFormat.CODE_128, getSaveWidth(getActivity()), getSaveHeight(getActivity()));
+ img.setImageBitmap(code);
+ } catch (Exception e) {
+ Log.d(TAG, "onCreateView: ", e);
+ }
+ });
+ btnSave.setOnClickListener(v -> {
+ if (getActivity().checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
+ } else {
+ saveBitmap();
}
});
return root;
}
+ private void saveBitmap() {
+ //MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), code, "UwU" , "OwO");
+ File myDir = new File(getWhereSave(getActivity()));
+ Log.d(TAG, "onCreateView: " + myDir.getAbsolutePath());
+ myDir.mkdir();
+ Random generator = new Random();
+
+ int n = 10000;
+ n = generator.nextInt(n);
+ String fname = "image-" + n + ".jpg";
+ File file = new File(myDir, fname);
+ try {
+ Log.d(TAG, file.getAbsolutePath());
+ Log.d(TAG, String.valueOf(file.createNewFile()));
+ FileOutputStream out = new FileOutputStream(file);
+ code.compress(Bitmap.CompressFormat.JPEG, 90, out);
+ // sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
+ // Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
+ out.flush();
+ out.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return;
+ }
+ MediaScannerConnection.scanFile(getActivity(), new String[]{file.toString()}, null, (path, uri) -> {
+ Log.i("ExternalStorage", "Scanned " + path + ":");
+ Log.i("ExternalStorage", "-> uri=" + uri);
+ });
+ Toast.makeText(getActivity(), "Barcode saved", Toast.LENGTH_LONG).show();
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ Log.v(TAG, "Permission: " + permissions[0] + "was " + grantResults[0]);
+ saveBitmap();
+ }
+ }
+
@Override
public void onDestroyView() {
super.onDestroyView();
diff --git a/app/src/main/java/com/jopek/lectordecodi/ui/qrcode_gen/QRCodeGenFragment.java b/app/src/main/java/com/jopek/lectordecodi/ui/qrcode_gen/QRCodeGenFragment.java
index c3ec155..b2d7e6c 100644
--- a/app/src/main/java/com/jopek/lectordecodi/ui/qrcode_gen/QRCodeGenFragment.java
+++ b/app/src/main/java/com/jopek/lectordecodi/ui/qrcode_gen/QRCodeGenFragment.java
@@ -1,34 +1,118 @@
package com.jopek.lectordecodi.ui.qrcode_gen;
+import static com.jopek.lectordecodi.MainActivity.TAG;
+import static com.jopek.lectordecodi.SharedPreferencesManager.getSaveHeight;
+import static com.jopek.lectordecodi.SharedPreferencesManager.getSaveWidth;
+import static com.jopek.lectordecodi.SharedPreferencesManager.getWhereSave;
+
+import android.Manifest;
+import android.content.pm.PackageManager;
+import android.graphics.Bitmap;
+import android.media.MediaScannerConnection;
import android.os.Bundle;
+import android.os.Environment;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageView;
import android.widget.TextView;
+import android.widget.Toast;
import androidx.annotation.NonNull;
+import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
+import com.google.zxing.BarcodeFormat;
import com.jopek.lectordecodi.databinding.FragmentQrcodeGenBinding;
+import com.journeyapps.barcodescanner.BarcodeEncoder;
-public class QRCodeGenFragment extends Fragment {
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.Random;
+public class QRCodeGenFragment extends Fragment {
private FragmentQrcodeGenBinding binding;
+ private EditText etInput;
+ private ImageView img;
+ private Button btnGen;
+ private Button btnSave;
+ private Bitmap code;
- public View onCreateView(@NonNull LayoutInflater inflater,
- ViewGroup container, Bundle savedInstanceState) {
- QRCodeGenViewModel QRCodeGenViewModel =
- new ViewModelProvider(this).get(QRCodeGenViewModel.class);
+ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ QRCodeGenViewModel qrCodeGenViewModel = new ViewModelProvider(this).get(QRCodeGenViewModel.class);
binding = FragmentQrcodeGenBinding.inflate(inflater, container, false);
View root = binding.getRoot();
- final TextView textView = binding.textSlideshow;
- QRCodeGenViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);
+ etInput = binding.plainTextInputt;
+ img = binding.barcodeImg;
+ btnGen = binding.btnGenBarcode;
+ btnSave = binding.btnSaveBarcode;
+
+ btnGen.setOnClickListener(v -> {
+ try {
+ BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
+ code = barcodeEncoder.encodeBitmap(String.valueOf(etInput.getText()), BarcodeFormat.QR_CODE, getSaveWidth(getActivity()), getSaveHeight(getActivity()));
+ img.setImageBitmap(code);
+ } catch (Exception e) {
+ Log.d(TAG, "onCreateView: ", e);
+ }
+ });
+ btnSave.setOnClickListener(v -> {
+ if (getActivity().checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
+ } else {
+ saveBitmap();
+ }
+ });
+
return root;
}
+ private void saveBitmap() {
+ //MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), code, "UwU" , "OwO");
+ File myDir = new File(getWhereSave(getActivity()));
+ Log.d(TAG, "onCreateView: " + myDir.getAbsolutePath());
+ myDir.mkdir();
+ Random generator = new Random();
+
+ int n = 10000;
+ n = generator.nextInt(n);
+ String fname = "image-" + n + ".jpg";
+ File file = new File(myDir, fname);
+ try {
+ Log.d(TAG, file.getAbsolutePath());
+ Log.d(TAG, String.valueOf(file.createNewFile()));
+ FileOutputStream out = new FileOutputStream(file);
+ code.compress(Bitmap.CompressFormat.JPEG, 90, out);
+ // sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
+ // Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
+ out.flush();
+ out.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return;
+ }
+ MediaScannerConnection.scanFile(getActivity(), new String[]{file.toString()}, null, (path, uri) -> {
+ Log.i("ExternalStorage", "Scanned " + path + ":");
+ Log.i("ExternalStorage", "-> uri=" + uri);
+ });
+ Toast.makeText(getActivity(), "QRCode saved", Toast.LENGTH_LONG).show();
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ Log.v(TAG, "Permission: " + permissions[0] + "was " + grantResults[0]);
+ saveBitmap();
+ }
+ }
+
@Override
public void onDestroyView() {
super.onDestroyView();
diff --git a/app/src/main/java/com/jopek/lectordecodi/ui/settings/SettingsFragment.java b/app/src/main/java/com/jopek/lectordecodi/ui/settings/SettingsFragment.java
new file mode 100644
index 0000000..0f68cf5
--- /dev/null
+++ b/app/src/main/java/com/jopek/lectordecodi/ui/settings/SettingsFragment.java
@@ -0,0 +1,54 @@
+package com.jopek.lectordecodi.ui.settings;
+
+import static com.jopek.lectordecodi.SharedPreferencesManager.getWhereSave;
+
+import androidx.lifecycle.ViewModelProvider;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import android.os.Environment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.jopek.lectordecodi.R;
+import com.jopek.lectordecodi.databinding.FragmentReaderBinding;
+import com.jopek.lectordecodi.databinding.FragmentSettingsBinding;
+
+import java.io.File;
+
+public class SettingsFragment extends Fragment {
+
+ private SettingsViewModel mViewModel;
+ private FragmentSettingsBinding binding;
+
+ public static SettingsFragment newInstance() {
+ return new SettingsFragment();
+ }
+
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
+
+ binding = FragmentSettingsBinding.inflate(inflater, container, false);
+ View root = binding.getRoot();
+
+ binding.etWhereSave.setText(getWhereSave(getActivity()));
+
+ return root;
+ }
+
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ mViewModel = new ViewModelProvider(this).get(SettingsViewModel.class);
+ // TODO: Use the ViewModel
+ }
+
+} \ No newline at end of file
diff --git a/app/src/main/java/com/jopek/lectordecodi/ui/settings/SettingsViewModel.java b/app/src/main/java/com/jopek/lectordecodi/ui/settings/SettingsViewModel.java
new file mode 100644
index 0000000..1347766
--- /dev/null
+++ b/app/src/main/java/com/jopek/lectordecodi/ui/settings/SettingsViewModel.java
@@ -0,0 +1,7 @@
+package com.jopek.lectordecodi.ui.settings;
+
+import androidx.lifecycle.ViewModel;
+
+public class SettingsViewModel extends ViewModel {
+ // TODO: Implement the ViewModel
+} \ No newline at end of file