Some fixes
This commit is contained in:
parent
b23686ab64
commit
11209a5334
|
@ -229,4 +229,9 @@
|
||||||
<string name="help">Help</string>
|
<string name="help">Help</string>
|
||||||
<string name="sensitive_video"> Sensitive videos</string>
|
<string name="sensitive_video"> Sensitive videos</string>
|
||||||
<string name="pickup_categories">Pickup categories</string>
|
<string name="pickup_categories">Pickup categories</string>
|
||||||
|
|
||||||
|
<string name="do_not_list">Do not list</string>
|
||||||
|
<string name="blur">Blur</string>
|
||||||
|
<string name="display">Display</string>
|
||||||
|
<string name="no_opinion">No opinion</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -9,7 +9,10 @@
|
||||||
<string name="toast_error">Oops! An error occurred!</string>
|
<string name="toast_error">Oops! An error occurred!</string>
|
||||||
<string name="title_muted">Muted</string>
|
<string name="title_muted">Muted</string>
|
||||||
<string name="title_channel">Channels</string>
|
<string name="title_channel">Channels</string>
|
||||||
|
<string name="do_not_list">Do not list</string>
|
||||||
|
<string name="blur">Blur</string>
|
||||||
|
<string name="display">Display</string>
|
||||||
|
<string name="no_opinion">No opinion</string>
|
||||||
<string name="instance_choice">Pickup an instance</string>
|
<string name="instance_choice">Pickup an instance</string>
|
||||||
<string name="not_valide_instance">This instance does not seem to be valid!</string>
|
<string name="not_valide_instance">This instance does not seem to be valid!</string>
|
||||||
<string name="no_videos">No videos!</string>
|
<string name="no_videos">No videos!</string>
|
||||||
|
|
|
@ -14,13 +14,21 @@ package app.fedilab.fedilabtube;
|
||||||
* You should have received a copy of the GNU General Public License along with TubeLab; if not,
|
* You should have received a copy of the GNU General Public License along with TubeLab; if not,
|
||||||
* see <http://www.gnu.org/licenses>. */
|
* see <http://www.gnu.org/licenses>. */
|
||||||
|
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.text.SpannableStringBuilder;
|
||||||
|
import android.text.Spanned;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.CheckBox;
|
import android.widget.AdapterView;
|
||||||
|
import android.widget.ArrayAdapter;
|
||||||
|
import android.widget.Button;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
|
import android.widget.Spinner;
|
||||||
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
@ -36,9 +44,12 @@ import app.fedilab.fedilabtube.client.APIResponse;
|
||||||
import app.fedilab.fedilabtube.client.entities.Instance;
|
import app.fedilab.fedilabtube.client.entities.Instance;
|
||||||
import app.fedilab.fedilabtube.client.entities.InstanceParams;
|
import app.fedilab.fedilabtube.client.entities.InstanceParams;
|
||||||
import app.fedilab.fedilabtube.drawer.InstanceAdapter;
|
import app.fedilab.fedilabtube.drawer.InstanceAdapter;
|
||||||
|
import app.fedilab.fedilabtube.helper.Helper;
|
||||||
|
import app.fedilab.fedilabtube.helper.RoundedBackgroundSpan;
|
||||||
import app.fedilab.fedilabtube.viewmodel.InstancesVM;
|
import app.fedilab.fedilabtube.viewmodel.InstancesVM;
|
||||||
import es.dmoral.toasty.Toasty;
|
import es.dmoral.toasty.Toasty;
|
||||||
|
|
||||||
|
|
||||||
import static app.fedilab.fedilabtube.MainActivity.peertubeInformation;
|
import static app.fedilab.fedilabtube.MainActivity.peertubeInformation;
|
||||||
|
|
||||||
|
|
||||||
|
@ -49,6 +60,10 @@ public class InstancePickerActivity extends AppCompatActivity {
|
||||||
private RelativeLayout mainLoader, textviewNoAction;
|
private RelativeLayout mainLoader, textviewNoAction;
|
||||||
private List<Instance> instances;
|
private List<Instance> instances;
|
||||||
private InstanceAdapter instanceAdapter;
|
private InstanceAdapter instanceAdapter;
|
||||||
|
boolean[] checkedItems;
|
||||||
|
String[] itemsLabel;
|
||||||
|
InstanceParams instanceParams;
|
||||||
|
private TextView categories_view;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
@ -65,19 +80,91 @@ public class InstancePickerActivity extends AppCompatActivity {
|
||||||
mainLoader = findViewById(R.id.loader);
|
mainLoader = findViewById(R.id.loader);
|
||||||
textviewNoAction = findViewById(R.id.no_action);
|
textviewNoAction = findViewById(R.id.no_action);
|
||||||
mainLoader.setVisibility(View.VISIBLE);
|
mainLoader.setVisibility(View.VISIBLE);
|
||||||
|
Button pickup_categories = findViewById(R.id.pickup_categories);
|
||||||
|
categories_view = findViewById(R.id.categories_view);
|
||||||
|
Spinner sensitive = findViewById(R.id.sensitive);
|
||||||
|
|
||||||
/*RelativeLayout checkbox_container = findViewById(R.id.checkbox_container);
|
String[] channelSensitive = new String[]{"do_not_list", "blur", "display", "no_opinion"};
|
||||||
LinkedHashMap<Integer, String> categories = peertubeInformation.getCategories();
|
String[] channelSensitivesLabel = new String[]{getString(R.string.do_not_list), getString(R.string.blur), getString(R.string.display), getString(R.string.no_opinion)};
|
||||||
if (categories != null && categories.size() > 0) {
|
ArrayAdapter<String> adapterChannel = new ArrayAdapter<>(InstancePickerActivity.this,
|
||||||
Iterator<Map.Entry<Integer, String>> it = categories.entrySet().iterator();
|
android.R.layout.simple_spinner_dropdown_item, channelSensitivesLabel);
|
||||||
while (it.hasNext()) {
|
sensitive.setAdapter(adapterChannel);
|
||||||
Map.Entry<Integer, String> pair = it.next();
|
|
||||||
CheckBox cb = new CheckBox(InstancePickerActivity.this);
|
|
||||||
cb.setText(pair.getValue());
|
InstancesVM viewModel = new ViewModelProvider(InstancePickerActivity.this).get(InstancesVM.class);
|
||||||
checkbox_container.addView(cb);
|
|
||||||
it.remove();
|
sensitive.setSelection(1, false);
|
||||||
|
sensitive.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||||
|
@Override
|
||||||
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||||
|
instanceParams.setNsfwPolicy(channelSensitive[position]);
|
||||||
|
viewModel.getInstances(instanceParams).observe(InstancePickerActivity.this, apiResponse -> manageVIewInstance(apiResponse));
|
||||||
}
|
}
|
||||||
}*/
|
|
||||||
|
@Override
|
||||||
|
public void onNothingSelected(AdapterView<?> parent) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
checkedItems = new boolean[peertubeInformation.getCategories().size()];
|
||||||
|
itemsLabel= new String[peertubeInformation.getCategories().size()];
|
||||||
|
|
||||||
|
|
||||||
|
pickup_categories.setOnClickListener(v->{
|
||||||
|
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(InstancePickerActivity.this);
|
||||||
|
|
||||||
|
|
||||||
|
LinkedHashMap<Integer, String> categories = peertubeInformation.getCategories();
|
||||||
|
int i = 0;
|
||||||
|
if (categories != null && categories.size() > 0) {
|
||||||
|
Iterator<Map.Entry<Integer, String>> it = categories.entrySet().iterator();
|
||||||
|
while (it.hasNext()) {
|
||||||
|
Map.Entry<Integer, String> pair = it.next();
|
||||||
|
itemsLabel[i] = pair.getValue();
|
||||||
|
checkedItems[i] = false;
|
||||||
|
it.remove();
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dialogBuilder.setMultiChoiceItems(itemsLabel, checkedItems, (dialog, which, isChecked) -> {
|
||||||
|
// The user checked or unchecked a box
|
||||||
|
checkedItems[which] = isChecked;
|
||||||
|
});
|
||||||
|
|
||||||
|
dialogBuilder.setOnDismissListener(dialogInterface -> {
|
||||||
|
int j = 0;
|
||||||
|
SpannableStringBuilder stringBuilder = new SpannableStringBuilder();
|
||||||
|
String between = "";
|
||||||
|
stringBuilder.append(between);
|
||||||
|
List<Integer> cats = new ArrayList<>();
|
||||||
|
for(boolean itemcheked: checkedItems){
|
||||||
|
if( itemcheked) {
|
||||||
|
cats.add(j);
|
||||||
|
String cat = itemsLabel[j];
|
||||||
|
if (cat != null && cat.trim().toLowerCase().compareTo("null") != 0) {
|
||||||
|
if (between.length() == 0) between = " ";
|
||||||
|
String tag = " " + cat + " ";
|
||||||
|
stringBuilder.append(tag);
|
||||||
|
stringBuilder.setSpan(new RoundedBackgroundSpan(InstancePickerActivity.this), stringBuilder.length() - tag.length(), stringBuilder.length() - tag.length() + tag.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||||
|
stringBuilder.append(" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
instanceParams.setCategoriesOr(cats);
|
||||||
|
categories_view.setText(stringBuilder, TextView.BufferType.SPANNABLE);
|
||||||
|
viewModel.getInstances(instanceParams).observe(InstancePickerActivity.this, this::manageVIewInstance);
|
||||||
|
});
|
||||||
|
dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> dialog.dismiss());
|
||||||
|
|
||||||
|
AlertDialog alertDialog = dialogBuilder.create();
|
||||||
|
alertDialog.setTitle(getString(R.string.action_playlist_create));
|
||||||
|
alertDialog.show();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
mainLoader.setVisibility(View.VISIBLE);
|
mainLoader.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
|
@ -88,14 +175,13 @@ public class InstancePickerActivity extends AppCompatActivity {
|
||||||
lv_instances.setLayoutManager(mLayoutManager);
|
lv_instances.setLayoutManager(mLayoutManager);
|
||||||
|
|
||||||
|
|
||||||
if (getSupportActionBar() != null)
|
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
|
||||||
|
|
||||||
setTitle(R.string.instances_picker);
|
setTitle(R.string.instances_picker);
|
||||||
|
|
||||||
InstancesVM viewModel = new ViewModelProvider(InstancePickerActivity.this).get(InstancesVM.class);
|
|
||||||
|
|
||||||
viewModel.getInstances(new InstanceParams()).observe(InstancePickerActivity.this, this::manageVIewInstance);
|
instanceParams = new InstanceParams();
|
||||||
|
instanceParams.setNsfwPolicy(channelSensitive[1]);
|
||||||
|
viewModel.getInstances(instanceParams).observe(InstancePickerActivity.this, this::manageVIewInstance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,6 @@ import android.database.sqlite.SQLiteDatabase;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
|
@ -600,27 +599,22 @@ public class PeertubeAPI {
|
||||||
if (instanceParams != null) {
|
if (instanceParams != null) {
|
||||||
if (instanceParams.getCategoriesOr() != null && instanceParams.getCategoriesOr().size() > 0) {
|
if (instanceParams.getCategoriesOr() != null && instanceParams.getCategoriesOr().size() > 0) {
|
||||||
StringBuilder parameters = new StringBuilder();
|
StringBuilder parameters = new StringBuilder();
|
||||||
parameters.append("[]&");
|
for (String lang : instanceParams.getLanguagesOr())
|
||||||
for (Integer category : instanceParams.getCategoriesOr())
|
parameters.append("categoriesOr[]=").append(lang).append("&");
|
||||||
parameters.append("categoriesOr=").append(category).append("&");
|
parameters = new StringBuilder(parameters.substring(0, parameters.length() - 1).substring(15));
|
||||||
String strParam = parameters.toString();
|
params.put("categoriesOr[]", parameters.toString());
|
||||||
strParam = strParam.substring(0, strParam.length() - 1);
|
|
||||||
params.put("categoriesOr[]", strParam);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (instanceParams.getLanguagesOr() != null && instanceParams.getLanguagesOr().size() > 0) {
|
if (instanceParams.getLanguagesOr() != null && instanceParams.getLanguagesOr().size() > 0) {
|
||||||
StringBuilder parameters = new StringBuilder();
|
StringBuilder parameters = new StringBuilder();
|
||||||
parameters.append("[]&");
|
for (String lang : instanceParams.getLanguagesOr())
|
||||||
for (String language : instanceParams.getLanguagesOr())
|
parameters.append("languagesOr[]=").append(lang).append("&");
|
||||||
parameters.append("languagesOr=").append(language).append("&");
|
parameters = new StringBuilder(parameters.substring(0, parameters.length() - 1).substring(14));
|
||||||
String strParam = parameters.toString();
|
params.put("languagesOr[]", parameters.toString());
|
||||||
strParam = strParam.substring(0, strParam.length() - 1);
|
|
||||||
params.put("languagesOr[]", strParam);
|
|
||||||
}
|
}
|
||||||
params.put("minUserQuota", instanceParams.getMinUserQuota());
|
params.put("minUserQuota", instanceParams.getMinUserQuota());
|
||||||
params.put("nsfwPolicy[]", instanceParams.getNsfwPolicy());
|
params.put("nsfwPolicy[]", instanceParams.getNsfwPolicy());
|
||||||
}
|
}
|
||||||
Log.v(Helper.TAG, "params: " + params);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String response = new HttpsConnection(context).get("https://instances.joinpeertube.org/api/v1/instances", 30, params, null);
|
String response = new HttpsConnection(context).get("https://instances.joinpeertube.org/api/v1/instances", 30, params, null);
|
||||||
|
|
|
@ -14,6 +14,8 @@ package app.fedilab.fedilabtube.client.entities;
|
||||||
* You should have received a copy of the GNU General Public License along with TubeLab; if not,
|
* You should have received a copy of the GNU General Public License along with TubeLab; if not,
|
||||||
* see <http://www.gnu.org/licenses>. */
|
* see <http://www.gnu.org/licenses>. */
|
||||||
|
|
||||||
|
import android.text.SpannableStringBuilder;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
|
||||||
|
@ -41,6 +43,7 @@ public class Instance {
|
||||||
private String userVideoQuota;
|
private String userVideoQuota;
|
||||||
private String version;
|
private String version;
|
||||||
private boolean isNSFW;
|
private boolean isNSFW;
|
||||||
|
private SpannableStringBuilder spannableStringBuilder;
|
||||||
|
|
||||||
|
|
||||||
public boolean isAutoBlacklistUserVideosEnabled() {
|
public boolean isAutoBlacklistUserVideosEnabled() {
|
||||||
|
@ -210,4 +213,12 @@ public class Instance {
|
||||||
public void setUserVideoQuota(String userVideoQuota) {
|
public void setUserVideoQuota(String userVideoQuota) {
|
||||||
this.userVideoQuota = userVideoQuota;
|
this.userVideoQuota = userVideoQuota;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public SpannableStringBuilder getSpannableStringBuilder() {
|
||||||
|
return spannableStringBuilder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSpannableStringBuilder(SpannableStringBuilder spannableStringBuilder) {
|
||||||
|
this.spannableStringBuilder = spannableStringBuilder;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,7 +76,7 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||||
|
|
||||||
SpannableStringBuilder stringBuilder = new SpannableStringBuilder();
|
SpannableStringBuilder stringBuilder = new SpannableStringBuilder();
|
||||||
String between = "";
|
String between = "";
|
||||||
if (instance.getCategories() != null && instance.getCategories().size() > 0) {
|
if (instance.getCategories() != null && instance.getCategories().size() > 0 && instance.getSpannableStringBuilder() == null) {
|
||||||
Iterator<Map.Entry<Integer, Integer>> it = instance.getCategories().entrySet().iterator();
|
Iterator<Map.Entry<Integer, Integer>> it = instance.getCategories().entrySet().iterator();
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
Map.Entry<Integer, Integer> pair = it.next();
|
Map.Entry<Integer, Integer> pair = it.next();
|
||||||
|
@ -91,8 +91,12 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||||
}
|
}
|
||||||
it.remove();
|
it.remove();
|
||||||
}
|
}
|
||||||
|
instance.setSpannableStringBuilder(stringBuilder);
|
||||||
}
|
}
|
||||||
holder.tags.setText(stringBuilder);
|
if( instance.getSpannableStringBuilder() != null) {
|
||||||
|
holder.tags.setText(instance.getSpannableStringBuilder());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
StringBuilder languages = new StringBuilder();
|
StringBuilder languages = new StringBuilder();
|
||||||
if (instance.getLanguages() != null && instance.getLanguages().size() > 0) {
|
if (instance.getLanguages() != null && instance.getLanguages().size() > 0) {
|
||||||
|
|
|
@ -25,8 +25,7 @@ public class RoundedBackgroundSpan extends ReplacementSpan {
|
||||||
public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, @NotNull Paint paint) {
|
public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, @NotNull Paint paint) {
|
||||||
RectF rect = new RectF(x, top, x + measureText(paint, text, start, end), bottom);
|
RectF rect = new RectF(x, top, x + measureText(paint, text, start, end), bottom);
|
||||||
paint.setColor(backgroundColor);
|
paint.setColor(backgroundColor);
|
||||||
int CORNER_RADIUS = 8;
|
canvas.drawRoundRect(rect, 8, 8, paint);
|
||||||
canvas.drawRoundRect(rect, CORNER_RADIUS, CORNER_RADIUS, paint);
|
|
||||||
paint.setColor(textColor);
|
paint.setColor(textColor);
|
||||||
canvas.drawText(text, start, end, x, y, paint);
|
canvas.drawText(text, start, end, x, y, paint);
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,55 +18,67 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_margin="@dimen/fab_margin"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:fitsSystemWindows="true">
|
android:layout_margin="@dimen/fab_margin">
|
||||||
|
|
||||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".InstancePickerActivity">
|
tools:context=".InstancePickerActivity"
|
||||||
|
>
|
||||||
<LinearLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/pickup_categories"
|
android:id="@+id/pickup_categories"
|
||||||
style="@style/Base.Widget.AppCompat.Button.Colored"
|
style="@style/Base.Widget.AppCompat.Button.Colored"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="@string/pickup_categories" />
|
android:text="@string/pickup_categories"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/categories"
|
app:layout_constraintTop_toBottomOf="@+id/pickup_categories"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
android:id="@+id/categories_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
android:minHeight="50dp"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
<TextView
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:id="@+id/text_spinner"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/categories_view"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:text="@string/sensitive_video"
|
||||||
android:showDividers="end">
|
android:labelFor="@+id/sensitive"/>
|
||||||
|
<Spinner
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/categories_view"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/text_spinner"
|
||||||
|
android:id="@+id/sensitive"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="14dp" />
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/sensitive_video" />
|
|
||||||
|
|
||||||
<Spinner
|
|
||||||
android:id="@+id/sensitive"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="10dp" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/text_spinner"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_marginTop="10dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:padding="@dimen/fab_margin">
|
>
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/lv_instances"
|
android:id="@+id/lv_instances"
|
||||||
|
@ -117,6 +129,6 @@
|
||||||
android:indeterminate="true" />
|
android:indeterminate="true" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
</androidx.drawerlayout.widget.DrawerLayout>
|
</androidx.drawerlayout.widget.DrawerLayout>
|
Loading…
Reference in New Issue