diff options
| author | Maksymilian Jopek <maks@jopek.eu> | 2022-09-22 20:25:19 +0200 |
|---|---|---|
| committer | Maksymilian Jopek <maks@jopek.eu> | 2022-09-22 20:25:19 +0200 |
| commit | d191a1cfc5ec76fd9985a0878b42775dbe1eddf8 (patch) | |
| tree | f93cb7fb6de2abc9f178987f081865ce43aed0d9 /app | |
| parent | 36703c46b11a2300cdbba219628fc63be5bde7c3 (diff) | |
| download | lector-de-codi-d191a1cfc5ec76fd9985a0878b42775dbe1eddf8.tar.gz lector-de-codi-d191a1cfc5ec76fd9985a0878b42775dbe1eddf8.tar.zst lector-de-codi-d191a1cfc5ec76fd9985a0878b42775dbe1eddf8.zip | |
All / settings logic
Diffstat (limited to 'app')
16 files changed, 409 insertions, 34 deletions
diff --git a/app/build.gradle b/app/build.gradle index 4e93c0c..b6264bc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -41,6 +41,7 @@ dependencies { implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1' implementation 'androidx.navigation:navigation-fragment:2.5.2' implementation 'androidx.navigation:navigation-ui:2.5.2' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' implementation 'com.journeyapps:zxing-android-embedded:4.3.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 56d55cb..c652fe6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,9 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> + <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" 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 diff --git a/app/src/main/res/drawable/ic_baseline_settings_24.xml b/app/src/main/res/drawable/ic_baseline_settings_24.xml new file mode 100644 index 0000000..298a5a1 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_settings_24.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#000000" + android:viewportHeight="24" android:viewportWidth="24" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M19.14,12.94c0.04,-0.3 0.06,-0.61 0.06,-0.94c0,-0.32 -0.02,-0.64 -0.07,-0.94l2.03,-1.58c0.18,-0.14 0.23,-0.41 0.12,-0.61l-1.92,-3.32c-0.12,-0.22 -0.37,-0.29 -0.59,-0.22l-2.39,0.96c-0.5,-0.38 -1.03,-0.7 -1.62,-0.94L14.4,2.81c-0.04,-0.24 -0.24,-0.41 -0.48,-0.41h-3.84c-0.24,0 -0.43,0.17 -0.47,0.41L9.25,5.35C8.66,5.59 8.12,5.92 7.63,6.29L5.24,5.33c-0.22,-0.08 -0.47,0 -0.59,0.22L2.74,8.87C2.62,9.08 2.66,9.34 2.86,9.48l2.03,1.58C4.84,11.36 4.8,11.69 4.8,12s0.02,0.64 0.07,0.94l-2.03,1.58c-0.18,0.14 -0.23,0.41 -0.12,0.61l1.92,3.32c0.12,0.22 0.37,0.29 0.59,0.22l2.39,-0.96c0.5,0.38 1.03,0.7 1.62,0.94l0.36,2.54c0.05,0.24 0.24,0.41 0.48,0.41h3.84c0.24,0 0.44,-0.17 0.47,-0.41l0.36,-2.54c0.59,-0.24 1.13,-0.56 1.62,-0.94l2.39,0.96c0.22,0.08 0.47,0 0.59,-0.22l1.92,-3.32c0.12,-0.22 0.07,-0.47 -0.12,-0.61L19.14,12.94zM12,15.6c-1.98,0 -3.6,-1.62 -3.6,-3.6s1.62,-3.6 3.6,-3.6s3.6,1.62 3.6,3.6S13.98,15.6 12,15.6z"/> +</vector> diff --git a/app/src/main/res/layout/fragment_barcode_gen.xml b/app/src/main/res/layout/fragment_barcode_gen.xml index caec265..c90f4a7 100644 --- a/app/src/main/res/layout/fragment_barcode_gen.xml +++ b/app/src/main/res/layout/fragment_barcode_gen.xml @@ -39,7 +39,6 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> - <ImageView android:id="@+id/barcode_img" android:layout_width="wrap_content" @@ -53,4 +52,13 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + <Button + android:id="@+id/btn_save_barcode" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Save Barcode" + android:layout_marginBottom="80dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/fragment_qrcode_gen.xml b/app/src/main/res/layout/fragment_qrcode_gen.xml index c35eb6c..ebe8c00 100644 --- a/app/src/main/res/layout/fragment_qrcode_gen.xml +++ b/app/src/main/res/layout/fragment_qrcode_gen.xml @@ -7,9 +7,42 @@ tools:context=".ui.qrcode_gen.QRCodeGenFragment"> <TextView - android:id="@+id/text_slideshow" + android:id="@id/edit_text_label" android:layout_width="match_parent" android:layout_height="wrap_content" + android:text="Gimme text to encode in qrcode" + android:textAlignment="center" + android:layout_marginTop="40dp" + android:textSize="20sp" + app:layout_constraintStart_toEndOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + <EditText + android:labelFor="@+id/edit_text_label" + android:id="@+id/plain_text_inputt" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:layout_marginTop="80dp" + app:layout_constraintStart_toEndOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + <Button + android:id="@+id/btn_gen_barcode" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Generate QRcode" + android:layout_marginTop="160dp" + app:layout_constraintStart_toEndOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + <ImageView + android:id="@+id/barcode_img" + android:layout_width="wrap_content" + android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" @@ -19,4 +52,13 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + <Button + android:id="@+id/btn_save_barcode" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Save QRCode" + android:layout_marginBottom="80dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml new file mode 100644 index 0000000..ac387fb --- /dev/null +++ b/app/src/main/res/layout/fragment_settings.xml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="utf-8"?> +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".ui.settings.SettingsFragment"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Where to save pictures?" + android:textAlignment="center" + android:layout_marginTop="40dp" + android:gravity="center" + android:textSize="20sp" /> + <EditText + android:id="@+id/et_where_save" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:layout_marginTop="10dp" /> + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Width of saved image" + android:textAlignment="center" + android:layout_marginTop="40dp" + android:gravity="center" + android:textSize="20sp" /> + <EditText + android:id="@+id/et_save_width" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="numberDecimal" + android:layout_marginTop="10dp" /> + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Height of saved image" + android:textAlignment="center" + android:layout_marginTop="40dp" + android:gravity="center" + android:textSize="20sp" /> + <EditText + android:id="@+id/et_save_height" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="numberDecimal" + android:layout_marginTop="10dp" /> + </LinearLayout> +</FrameLayout>
\ No newline at end of file diff --git a/app/src/main/res/menu/activity_main_drawer.xml b/app/src/main/res/menu/activity_main_drawer.xml index b8ed546..6d45cac 100644 --- a/app/src/main/res/menu/activity_main_drawer.xml +++ b/app/src/main/res/menu/activity_main_drawer.xml @@ -24,5 +24,13 @@ android:title="@string/menu_qrcode_gen" /> </menu> </item> + <item android:title="SETTINGS"> + <menu> + <item + android:id="@+id/nav_settings" + android:icon="@drawable/ic_baseline_settings_24" + android:title="Settings" /> + </menu> + </item> </group> </menu>
\ No newline at end of file diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml index 412d5f8..28b13c5 100644 --- a/app/src/main/res/menu/main.xml +++ b/app/src/main/res/menu/main.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> - <item - android:id="@+id/action_settings" - android:orderInCategory="100" - android:title="@string/action_settings" - app:showAsAction="never" /> +<!-- <item--> +<!-- android:id="@+id/action_settings"--> +<!-- android:orderInCategory="100"--> +<!-- android:title="@string/action_settings"--> +<!-- app:showAsAction="never" />--> </menu>
\ No newline at end of file diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index 23328c9..86c8cd6 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -22,4 +22,10 @@ android:name="com.jopek.lectordecodi.ui.qrcode_gen.QRCodeGenFragment" android:label="@string/menu_qrcode_gen" tools:layout="@layout/fragment_qrcode_gen" /> + + <fragment + android:id="@+id/nav_settings" + android:name="com.jopek.lectordecodi.ui.settings.SettingsFragment" + android:label="@string/menu_settings" + tools:layout="@layout/fragment_qrcode_gen" /> </navigation>
\ 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 1a3ac07..7c65a0c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -13,4 +13,5 @@ <string name="menu_reader">QbarRCode Reader</string> <string name="menu_barcode_gen">Barcode generator</string> <string name="menu_qrcode_gen">QR Code Generator</string> + <string name="menu_settings">Settings</string> </resources>
\ No newline at end of file |
