From 8d178f6f1b14c2825e1d67a4a2d5a37712556b7f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Denis=20=C3=87erri?=
<64997243+deniscerri@users.noreply.github.com>
Date: Sat, 28 May 2022 17:18:04 +0200
Subject: [PATCH] App finalization
Version 1.0.0
- Added delete history in history fragment
- Stored every search result in a database so that you can see them even after app is closed
- Fixed bad directory path text by converting it to UTF-8
- Made the app download the whole playlist
- Made the app keep track of songs that have already been downloaded by showing the finished progress bar on them if the fragment gets reloaded
- Fixed metadata on music files by adding thumbnail and proper metadata on author and title by using tags
---
.idea/misc.xml | 3 +
.../com/deniscerri/ytdl/HistoryFragment.java | 31 +-
.../com/deniscerri/ytdl/HomeFragment.java | 266 +++++++++++++-----
.../com/deniscerri/ytdl/SettingsFragment.java | 11 +-
.../deniscerri/ytdl/database/DBManager.java | 133 +++++++--
.../com/deniscerri/ytdl/database/Video.java | 22 +-
.../drawable-v24/ic_launcher_foreground.xml | 2 +
app/src/main/res/menu/history_menu.xml | 14 +
app/src/main/res/values/strings.xml | 1 +
build.gradle | 6 +-
10 files changed, 386 insertions(+), 103 deletions(-)
create mode 100644 app/src/main/res/menu/history_menu.xml
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ac441813..b08560ec 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -19,12 +19,15 @@
+
+
+
diff --git a/app/src/main/java/com/deniscerri/ytdl/HistoryFragment.java b/app/src/main/java/com/deniscerri/ytdl/HistoryFragment.java
index 5f8cb59b..1b8c3f2d 100644
--- a/app/src/main/java/com/deniscerri/ytdl/HistoryFragment.java
+++ b/app/src/main/java/com/deniscerri/ytdl/HistoryFragment.java
@@ -5,16 +5,24 @@ import android.graphics.PorterDuff;
import android.graphics.Typeface;
import android.os.Bundle;
+import androidx.annotation.NonNull;
+import androidx.appcompat.widget.SearchView;
import androidx.cardview.widget.CardView;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.FragmentTransaction;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
+import android.text.InputType;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
@@ -51,7 +59,7 @@ public class HistoryFragment extends Fragment {
// TODO: Customize parameter initialization
@SuppressWarnings("unused")
- public static HistoryFragment newInstance(int columnCount) {
+ public static HistoryFragment newInstance() {
HistoryFragment fragment = new HistoryFragment();
Bundle args = new Bundle();
return fragment;
@@ -71,7 +79,7 @@ public class HistoryFragment extends Fragment {
initViews();
dbManager = new DBManager(requireContext());
- historyObjects = dbManager.merrVideot();
+ historyObjects = dbManager.merrHistorine();
System.out.println(historyObjects);
@@ -200,4 +208,23 @@ public class HistoryFragment extends Fragment {
linearLayout = fragmentView.findViewById(R.id.linearLayout1);
scrollView = fragmentView.findViewById(R.id.scrollView1);
}
+
+ @Override
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
+ inflater.inflate(R.menu.history_menu, menu);
+ super.onCreateOptionsMenu(menu, inflater);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.delete_history:
+ dbManager.clearHistory();
+ linearLayout.removeAllViews();
+ return true;
+ default:
+ return super.onOptionsItemSelected(item);
+
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/deniscerri/ytdl/HomeFragment.java b/app/src/main/java/com/deniscerri/ytdl/HomeFragment.java
index 8ff0ad15..44d5ed9e 100644
--- a/app/src/main/java/com/deniscerri/ytdl/HomeFragment.java
+++ b/app/src/main/java/com/deniscerri/ytdl/HomeFragment.java
@@ -5,14 +5,13 @@ import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
-import android.content.res.Resources;
import android.graphics.PorterDuff;
import android.graphics.Typeface;
+import android.media.MediaScannerConnection;
import android.os.Bundle;
import android.text.InputType;
import android.util.Log;
import android.util.TypedValue;
-import android.view.ContextThemeWrapper;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -21,7 +20,6 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
-import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
@@ -31,23 +29,20 @@ import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
-import androidx.annotation.RequiresApi;
import androidx.appcompat.widget.SearchView;
import androidx.cardview.widget.CardView;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
-import androidx.preference.PreferenceManager;
import com.deniscerri.ytdl.database.DBManager;
-import com.google.android.material.button.MaterialButton;
+import com.deniscerri.ytdl.database.Video;
import com.squareup.picasso.Picasso;
import com.yausername.youtubedl_android.DownloadProgressCallback;
import com.yausername.youtubedl_android.YoutubeDL;
import com.yausername.youtubedl_android.YoutubeDLRequest;
import org.json.JSONArray;
-import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
@@ -57,11 +52,12 @@ import java.net.HttpURLConnection;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
+import java.util.LinkedList;
import java.util.Locale;
+import java.util.Queue;
import java.util.TimeZone;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -91,8 +87,11 @@ public class HomeFragment extends Fragment implements View.OnClickListener{
private static final String TAG = "HomeFragment";
- private ArrayList resultObjects;
+ private ArrayList