summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/jopek
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/jopek')
-rw-r--r--app/src/main/java/com/jopek/lectordecodi/MainActivity.java16
-rw-r--r--app/src/main/java/com/jopek/lectordecodi/SharedPreferencesManager.java44
-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
6 files changed, 273 insertions, 27 deletions
diff --git a/app/src/main/java/com/jopek/lectordecodi/MainActivity.java b/app/src/main/java/com/jopek/lectordecodi/MainActivity.java
index 95cfb87..bb925d3 100644
--- a/app/src/main/java/com/jopek/lectordecodi/MainActivity.java
+++ b/app/src/main/java/com/jopek/lectordecodi/MainActivity.java
@@ -1,23 +1,21 @@
package com.jopek.lectordecodi;
import android.os.Bundle;
-import android.view.View;
import android.view.Menu;
-import com.google.android.material.snackbar.Snackbar;
-import com.google.android.material.navigation.NavigationView;
-
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.drawerlayout.widget.DrawerLayout;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
-import androidx.drawerlayout.widget.DrawerLayout;
-import androidx.appcompat.app.AppCompatActivity;
+import com.google.android.material.navigation.NavigationView;
import com.jopek.lectordecodi.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
+ public static String TAG = "maks";
private AppBarConfiguration mAppBarConfiguration;
private ActivityMainBinding binding;
@@ -31,10 +29,9 @@ public class MainActivity extends AppCompatActivity {
setSupportActionBar(binding.appBarMain.toolbar);
DrawerLayout drawer = binding.drawerLayout;
NavigationView navigationView = binding.navView;
- // Passing each menu ID as a set of Ids because each
- // menu should be considered as top level destinations.
+
mAppBarConfiguration = new AppBarConfiguration.Builder(
- R.id.nav_reader, R.id.nav_barcode_gen, R.id.nav_qrcode_gen)
+ R.id.nav_reader, R.id.nav_barcode_gen, R.id.nav_qrcode_gen, R.id.nav_settings)
.setOpenableLayout(drawer)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
@@ -55,4 +52,5 @@ public class MainActivity extends AppCompatActivity {
return NavigationUI.navigateUp(navController, mAppBarConfiguration)
|| super.onSupportNavigateUp();
}
+
} \ No newline at end of file
diff --git a/app/src/main/java/com/jopek/lectordecodi/SharedPreferencesManager.java b/app/src/main/java/com/jopek/lectordecodi/SharedPreferencesManager.java
new file mode 100644
index 0000000..33e51fb
--- /dev/null
+++ b/app/src/main/java/com/jopek/lectordecodi/SharedPreferencesManager.java
@@ -0,0 +1,44 @@
+package com.jopek.lectordecodi;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Environment;
+
+import java.util.Map;
+
+public class SharedPreferencesManager {
+ private static SharedPreferences getPrefs(Context context) {
+ return context.getSharedPreferences("com.jopek.lectordecodi", Context.MODE_PRIVATE);
+ }
+ public static <T> T getFromPrefs(Context context, String key, T def) {
+ SharedPreferences prefs = getPrefs(context);
+ Map map = prefs.getAll();
+ T fromPrefs = (T) map.getOrDefault(key, def);
+
+ return fromPrefs;
+ }
+ public static String getWhereSave(Context context) {
+ String def = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath() + "/lector-de-codi";
+ return getFromPrefs(context, "whereSave", def);
+ }
+ public static boolean setWhereSave(Context context, String whereSave) {
+ SharedPreferences prefs = getPrefs(context);
+ return prefs.edit().putString("whereSave", whereSave).commit();
+ }
+ public static int getSaveWidth(Context context) {
+ int def = 400;
+ return getFromPrefs(context, "saveWidth", def);
+ }
+ public static boolean setSaveWidth(Context context, int saveWidth) {
+ SharedPreferences prefs = getPrefs(context);
+ return prefs.edit().putInt("saveWidth", saveWidth).commit();
+ }
+ public static int getSaveHeight(Context context) {
+ int def = 400;
+ return getFromPrefs(context, "saveHeight", def);
+ }
+ public static boolean setSaveHeight(Context context, int saveHeight) {
+ SharedPreferences prefs = getPrefs(context);
+ return prefs.edit().putInt("saveHeight", saveHeight).commit();
+ }
+}
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