diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml index 2375cff6..4d3ff620 100644 --- a/.idea/assetWizardSettings.xml +++ b/.idea/assetWizardSettings.xml @@ -320,7 +320,7 @@ @@ -331,7 +331,7 @@ diff --git a/.idea/misc.xml b/.idea/misc.xml index d739b9ab..b893ad75 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -47,6 +47,7 @@ + @@ -85,6 +86,7 @@ + diff --git a/app/src/main/java/com/deniscerri/ytdlnis/adapter/HistoryRecyclerViewAdapter.java b/app/src/main/java/com/deniscerri/ytdlnis/adapter/HistoryRecyclerViewAdapter.java index 9ded68fb..289b6396 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/adapter/HistoryRecyclerViewAdapter.java +++ b/app/src/main/java/com/deniscerri/ytdlnis/adapter/HistoryRecyclerViewAdapter.java @@ -1,6 +1,7 @@ package com.deniscerri.ytdlnis.adapter; import android.content.Context; +import android.content.res.ColorStateList; import android.graphics.Color; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; @@ -21,6 +22,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.deniscerri.ytdlnis.R; import com.deniscerri.ytdlnis.database.Video; +import com.google.android.material.button.MaterialButton; import com.squareup.picasso.Picasso; import java.io.File; @@ -91,21 +93,33 @@ public class HistoryRecyclerViewAdapter extends RecyclerView.Adapter onItemClickListener.onCardClick(position)); } diff --git a/app/src/main/java/com/deniscerri/ytdlnis/adapter/HomeRecyclerViewAdapter.java b/app/src/main/java/com/deniscerri/ytdlnis/adapter/HomeRecyclerViewAdapter.java index 45d723c8..8a251331 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/adapter/HomeRecyclerViewAdapter.java +++ b/app/src/main/java/com/deniscerri/ytdlnis/adapter/HomeRecyclerViewAdapter.java @@ -10,17 +10,15 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; -import android.widget.ProgressBar; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; - import com.deniscerri.ytdlnis.R; import com.deniscerri.ytdlnis.database.Video; import com.google.android.material.button.MaterialButton; import com.google.android.material.card.MaterialCardView; +import com.google.android.material.progressindicator.LinearProgressIndicator; import com.squareup.picasso.Picasso; import java.util.ArrayList; @@ -105,7 +103,7 @@ public class HomeRecyclerViewAdapter extends RecyclerView.Adapter { @@ -200,8 +200,34 @@ public class HistoryFragment extends Fragment implements HistoryRecyclerViewAdap no_results.setVisibility(View.VISIBLE); }); delete_dialog.show(); - }else if(itemID == R.id.refresh_history){ - initCards(); + }else if(itemID == R.id.filter_history){ +// bottomSheet = new BottomSheetDialog(fragmentContext); +// bottomSheet.requestWindowFeature(Window.FEATURE_NO_TITLE); +// bottomSheet.setContentView(R.layout.history_bottom_sheet); +// Video video = historyObjects.get(position); +// +// TextView title = bottomSheet.findViewById(R.id.bottom_sheet_title); +// title.setText(video.getTitle()); +// +// TextView author = bottomSheet.findViewById(R.id.bottom_sheet_author); +// author.setText(video.getAuthor()); +// +// Button link = bottomSheet.findViewById(R.id.bottom_sheet_link); +// String url = video.getURL(); +// link.setText(url); +// link.setTag(position); +// link.setOnClickListener(this); +// +// Button remove = bottomSheet.findViewById(R.id.bottomsheet_remove_button); +// remove.setTag(position); +// remove.setOnClickListener(this); +// +// Button openLink = bottomSheet.findViewById(R.id.bottomsheet_open_link_button); +// openLink.setTag(position); +// openLink.setOnClickListener(this); +// +// bottomSheet.show(); +// bottomSheet.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT); } return true; }); @@ -224,7 +250,7 @@ public class HistoryFragment extends Fragment implements HistoryRecyclerViewAdap if(bottomSheet != null) bottomSheet.hide(); Video v = historyObjects.get(position); - MaterialAlertDialogBuilder delete_dialog = new MaterialAlertDialogBuilder(context); + MaterialAlertDialogBuilder delete_dialog = new MaterialAlertDialogBuilder(fragmentContext); delete_dialog.setTitle(getString(R.string.confirm_delete_history)); delete_dialog.setMessage(getString(R.string.you_are_going_to_delete) + " \""+v.getTitle()+"\"!"); delete_dialog.setNegativeButton(getString(R.string.cancel), (dialogInterface, i) -> { diff --git a/app/src/main/java/com/deniscerri/ytdlnis/page/HomeFragment.java b/app/src/main/java/com/deniscerri/ytdlnis/page/HomeFragment.java index f3ac6164..87d6014e 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/page/HomeFragment.java +++ b/app/src/main/java/com/deniscerri/ytdlnis/page/HomeFragment.java @@ -40,6 +40,7 @@ import com.google.android.material.bottomsheet.BottomSheetDialog; import com.google.android.material.button.MaterialButton; import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton; import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.android.material.progressindicator.LinearProgressIndicator; import com.google.android.material.textfield.TextInputLayout; import java.io.File; @@ -56,7 +57,7 @@ import java.util.regex.Pattern; public class HomeFragment extends Fragment implements HomeRecyclerViewAdapter.OnItemClickListener, View.OnClickListener { private boolean downloading = false; private View fragmentView; - private ProgressBar progressBar; + private LinearProgressIndicator progressBar; private String inputQuery; private RecyclerView recyclerView; private HomeRecyclerViewAdapter homeRecyclerViewAdapter; @@ -91,8 +92,6 @@ public class HomeFragment extends Fragment implements HomeRecyclerViewAdapter.On MaterialButton clickedButton = recyclerView.findViewWithTag(id + "##"+type); progressBar = recyclerView.findViewWithTag(id + "##progress"); progressBar.setVisibility(View.VISIBLE); - progressBar.setIndeterminate(true); - progressBar.setProgress(0); downloading = true; topAppBar.getMenu().findItem(R.id.cancel_download).setVisible(true); @@ -111,12 +110,12 @@ public class HomeFragment extends Fragment implements HomeRecyclerViewAdapter.On activity.runOnUiThread(() -> { try{ int progress = info.getProgress(); - progressBar = fragmentView.findViewWithTag(info.getVideo().getVideoId()+"##progress"); - progressBar.setVisibility(View.VISIBLE); - if (progress > 1){ - progressBar.setIndeterminate(false); - progressBar.setProgress(info.getProgress()); + if (progress > 0) { + progressBar = fragmentView.findViewWithTag(info.getVideo().getVideoId()+"##progress"); + progressBar.setVisibility(View.VISIBLE); + progressBar.setProgressCompat(progress, true); } + }catch(Exception ignored){} }); } @@ -154,16 +153,20 @@ public class HomeFragment extends Fragment implements HomeRecyclerViewAdapter.On // MEDIA SCAN ArrayList files = new ArrayList<>(); - String title = downloadInfo.getVideo().getTitle(); - + String title = downloadInfo.getVideo().getTitle().replaceAll("[^a-zA-Z0-9]",""); + String pathTmp = ""; File path = new File(downloadInfo.getDownloadPath()); for( File file : path.listFiles() ){ - if(file.isFile() && file.getAbsolutePath().contains(title)) files.add(file); + if(file.isFile()){ + pathTmp = file.getAbsolutePath().replaceAll("[^a-zA-Z0-9]",""); + if (pathTmp.contains(title)){ + files.add(file); + } + } } String[] paths = new String[files.size()]; for (int i = 0; i < files.size(); i++) paths[i] = files.get(i).getAbsolutePath(); - MediaScannerConnection.scanFile(context, paths, null, null); addToHistory(item, new Date(), paths); updateDownloadStatusOnResult(item, type); diff --git a/app/src/main/res/drawable/ic_delete_all.xml b/app/src/main/res/drawable/ic_delete_all.xml index b6f77b76..216dc1e0 100644 --- a/app/src/main/res/drawable/ic_delete_all.xml +++ b/app/src/main/res/drawable/ic_delete_all.xml @@ -1,5 +1,5 @@ - + diff --git a/app/src/main/res/drawable/ic_filter.xml b/app/src/main/res/drawable/ic_filter.xml new file mode 100644 index 00000000..798fffd6 --- /dev/null +++ b/app/src/main/res/drawable/ic_filter.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/fragment_history.xml b/app/src/main/res/layout/fragment_history.xml index 4e8f2a8e..1b668536 100644 --- a/app/src/main/res/layout/fragment_history.xml +++ b/app/src/main/res/layout/fragment_history.xml @@ -18,7 +18,7 @@ android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_scrollFlags="scroll|enterAlways|snap" - app:title="@string/history" + app:title="@string/downloads" app:menu="@menu/history_menu" android:theme="@style/Toolbar" /> diff --git a/app/src/main/res/layout/result_card.xml b/app/src/main/res/layout/result_card.xml index 74e611a0..5bc4f71f 100644 --- a/app/src/main/res/layout/result_card.xml +++ b/app/src/main/res/layout/result_card.xml @@ -36,15 +36,13 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> - - Pastro Historinë Arrite fundin e rezultateve Shkarko të gjitha - Historia Cilësime Kryesore Direktoritë @@ -97,4 +96,5 @@ Përdor një çelës api për të marrë rezultate më të shpejta nga YouTube Njoftohu kur një përditësim është i vlefshëm Shkarkimet + Filtro Historinë \ 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 c22a85b9..2bddce32 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,7 +6,6 @@ Trending You reached the end of results Download All - History Settings Home Directories @@ -100,4 +99,5 @@ Use an api key to get faster results from YouTube Let you know when updates are available right when you open the application Downloads + Filter History