Skip to content
Snippets Groups Projects
Commit de03b9ab authored by Geoffrey Métais's avatar Geoffrey Métais
Browse files

Refactor browsers item layout with ConstraintLayout

parent 87e99806
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_item"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="5dip"
android:paddingTop="5dip"
android:paddingBottom="5dip">
<CheckBox
android:id="@+id/browser_item_selected"
android:layout_width="wrap_content"
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View"/>
<import type="android.text.TextUtils"/>
<import type="org.videolan.medialibrary.media.MediaLibraryItem"/>
<variable
name="holder"
type="org.videolan.vlc.gui.browser.BaseBrowserAdapter.ViewHolder"/>
<variable
name="item"
type="MediaLibraryItem"/>
<variable
name="hasContextMenu"
type="boolean"/>
<variable
name="checkEnabled"
type="boolean"/>
<variable
name="checked"
type="boolean"/>
<variable
name="protocol"
type="String"/>
<variable
name="cover"
type="android.graphics.drawable.BitmapDrawable"/>
</data>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="false" />
<TextView
android:id="@+id/browser_item_dir"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/directory"
android:paddingLeft="10dip"
android:singleLine="true" />
</LinearLayout>
android:minHeight="50dp"
android:padding="2dp"
android:focusable="true"
android:clickable="@{holder != null}"
android:longClickable="@{hasContextMenu || item.getItemType() == MediaLibraryItem.TYPE_STORAGE}"
android:onClick="@{holder::onClick}"
android:background="@drawable/background_item">
<CheckBox
android:id="@+id/browser_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{checked, default=false}"
android:enabled="@{checkEnabled}"
android:focusable="false"
android:onClick="@{holder::onCheckBoxClick}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:visibility="@{item.getItemType() == MediaLibraryItem.TYPE_STORAGE ? View.VISIBLE : View.GONE, default=gone}" />
<!-- Image downloading is handled by org.videolan.vlc.gui.helpers.AsyncImageLoader.downloadIcon() -->
<TextView
android:id="@+id/dvi_icon"
android:layout_width="0dp"
app:layout_constraintDimensionRatio="1:1"
android:layout_height="match_parent"
android:background="@{cover}"
android:contentDescription="@string/cover_art"
android:gravity="center"
android:text="@{protocol}"
android:textColor="@color/whitetransparent"
android:textSize="11sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/browser_checkbox"
app:layout_constraintTop_toTopOf="parent"
app:media="@{item}"
android:visibility="@{item.getItemType() == MediaLibraryItem.TYPE_STORAGE ? View.GONE : View.VISIBLE}" />
<TextView
android:id="@+id/title"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_goneMarginBottom="2dp"
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@+id/dvi_icon"
app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintEnd_toStartOf="@+id/item_more"
app:layout_constraintBottom_toTopOf="@+id/text"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:maxLines="1"
android:text="@{item.title}"
android:fontFamily="sans-serif-light"
android:textColor="?attr/list_title"
android:textSize="16sp" />
<TextView
android:id="@+id/text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:fontFamily="sans-serif-light"
android:maxLines="1"
android:text="@{item.description}"
android:textColor="?attr/list_subtitle"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@+id/item_more"
app:layout_constraintStart_toStartOf="@+id/title"
app:layout_constraintTop_toBottomOf="@+id/title"
android:visibility="@{TextUtils.isEmpty(item.description) ? View.GONE : View.VISIBLE, default=gone}" />
<ImageView
android:id="@+id/item_more"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:paddingRight="10dp"
android:paddingLeft="10dp"
android:background="@drawable/ic_more"
android:visibility="@{hasContextMenu ? View.VISIBLE : View.GONE, default=gone}"
android:onClick="@{holder::onMoreClick}"
android:clickable="@{hasContextMenu}" />
</android.support.constraint.ConstraintLayout>
</layout>
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:vlc="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View"/>
<import type="org.videolan.medialibrary.media.MediaLibraryItem"/>
<variable
name="holder"
type="org.videolan.vlc.gui.browser.BaseBrowserAdapter.ViewHolder"/>
<variable
name="item"
type="MediaLibraryItem"/>
<variable
name="hasContextMenu"
type="boolean"/>
<variable
name="checkEnabled"
type="boolean"/>
<variable
name="checked"
type="boolean"/>
<variable
name="protocol"
type="String"/>
<variable
name="cover"
type="android.graphics.drawable.BitmapDrawable"/>
</data>
<LinearLayout
android:id="@+id/layout_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:focusable="true"
android:clickable="@{holder != null}"
android:longClickable="@{hasContextMenu || item.getItemType() == MediaLibraryItem.TYPE_STORAGE}"
android:onClick="@{holder::onClick}"
android:background="@drawable/background_item">
<CheckBox
android:id="@+id/browser_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="15dp"
android:visibility="@{item.getItemType() == MediaLibraryItem.TYPE_STORAGE ? View.VISIBLE : View.GONE, default=gone}"
android:focusable="false"
android:enabled="@{checkEnabled}"
android:checked="@{checked}"
android:onClick="@{holder::onCheckBoxClick}"/>
<!-- Image downloading is handled by org.videolan.vlc.gui.helpers.AsyncImageLoader.downloadIcon() -->
<TextView
android:id="@+id/dvi_icon"
android:layout_width="@dimen/directory_browser_item_size"
android:layout_height="@dimen/directory_browser_item_size"
android:layout_gravity="center"
android:gravity="center"
android:layout_marginLeft="15dp"
android:contentDescription="@string/cover_art"
android:visibility="@{item.getItemType() != MediaLibraryItem.TYPE_STORAGE ? View.VISIBLE : View.GONE}"
android:text="@{protocol}"
android:textSize="11sp"
android:textColor="@color/whitetransparent"
android:background="@{cover}"
vlc:media="@{item}" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
android:layout_marginTop="2dp"
android:layout_weight="1"
android:minHeight="52dp"
android:gravity="center_vertical"
android:orientation="vertical"
android:paddingLeft="15dp" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
android:text="@{item.title}"
android:fontFamily="sans-serif-light"
android:textColor="?attr/list_title"
android:textSize="16sp"/>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:maxLines="1"
android:text="@{item.description}"
android:fontFamily="sans-serif-light"
android:visibility="@{item.description != null ? View.VISIBLE : View.GONE}"
android:textColor="?attr/list_subtitle"/>
</LinearLayout>
<ImageView
android:id="@+id/item_more"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingRight="10dp"
android:paddingLeft="10dp"
android:background="@drawable/ic_more"
android:visibility="@{hasContextMenu ? View.VISIBLE : View.GONE}"
android:onClick="@{holder::onMoreClick}"
android:clickable="@{hasContextMenu}" />
</LinearLayout>
</layout>
......@@ -44,8 +44,8 @@ import org.videolan.medialibrary.media.MediaWrapper;
import org.videolan.medialibrary.media.Storage;
import org.videolan.vlc.R;
import org.videolan.vlc.VLCApplication;
import org.videolan.vlc.databinding.BrowserItemBinding;
import org.videolan.vlc.databinding.BrowserItemSeparatorBinding;
import org.videolan.vlc.databinding.DirectoryViewItemBinding;
import org.videolan.vlc.gui.helpers.UiTools;
import org.videolan.vlc.util.MediaItemDiffCallback;
import org.videolan.vlc.util.MediaItemFilter;
......@@ -84,7 +84,7 @@ public class BaseBrowserAdapter extends RecyclerView.Adapter<BaseBrowserAdapter.
View v;
if (viewType == MediaLibraryItem.TYPE_MEDIA) {
v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.directory_view_item, parent, false);
.inflate(R.layout.browser_item, parent, false);
vh = new MediaViewHolder(v);
} else {
v = LayoutInflater.from(parent.getContext())
......@@ -149,7 +149,7 @@ public class BaseBrowserAdapter extends RecyclerView.Adapter<BaseBrowserAdapter.
}
class MediaViewHolder extends ViewHolder<DirectoryViewItemBinding> implements View.OnLongClickListener {
class MediaViewHolder extends ViewHolder<BrowserItemBinding> implements View.OnLongClickListener {
MediaViewHolder(View v) {
super(v);
......
......@@ -59,7 +59,7 @@ public class StorageBrowserAdapter extends BaseBrowserAdapter {
ViewHolder vh;
View v;
v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.directory_view_item, parent, false);
.inflate(R.layout.browser_item, parent, false);
vh = new MediaViewHolder(v);
return vh;
}
......
......@@ -40,7 +40,7 @@ import org.videolan.medialibrary.media.MediaWrapper;
import org.videolan.medialibrary.media.Storage;
import org.videolan.vlc.R;
import org.videolan.vlc.VLCApplication;
import org.videolan.vlc.databinding.DirectoryViewItemBinding;
import org.videolan.vlc.databinding.BrowserItemBinding;
import org.videolan.vlc.util.AndroidDevices;
import org.videolan.vlc.util.CustomDirectories;
......@@ -134,6 +134,7 @@ public class StorageBrowserFragment extends FileBrowserFragment {
storage = new Storage(Uri.parse(customDir));
storagesList.add(storage);
}
parseSubDirectories();
mHandler.sendEmptyMessage(BrowserFragmentHandler.MSG_HIDE_LOADING);
mAdapter.dispatchUpdate(storagesList);
}
......@@ -189,7 +190,7 @@ public class StorageBrowserFragment extends FileBrowserFragment {
public void onClick(View v, int position, MediaLibraryItem item) {
MediaWrapper mw = new MediaWrapper(((Storage) item).getUri());
mw.setType(MediaWrapper.TYPE_DIR);
browse(mw, position, ((DirectoryViewItemBinding)DataBindingUtil.findBinding(v)).browserCheckbox.isChecked());
browse(mw, position, ((BrowserItemBinding)DataBindingUtil.findBinding(v)).browserCheckbox.isChecked());
}
@Override
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment