package com.mercandalli.android.apps.files.file.audio; import android.content.Context; import android.graphics.Color; import android.support.annotation.ColorInt; import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import android.util.AttributeSet; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; import com.mercandalli.android.apps.files.R; import com.mercandalli.android.apps.files.file.FileModelCardAdapter; import com.mercandalli.android.apps.files.file.FileModelCardHeaderItem; import java.util.ArrayList; import java.util.List; /* package */ class HeaderView extends FrameLayout implements View.OnClickListener { @NonNull private final List<FileModelCardAdapter.OnHeaderClickListener> mOnHeaderClickListeners = new ArrayList<>(); @ColorInt private int mPrimaryColor; public HeaderView(final Context context) { super(context); initView(context); } public HeaderView(final Context context, final AttributeSet attrs) { super(context, attrs); initView(context); } public HeaderView(final Context context, final AttributeSet attrs, final int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); updateView(); } private void initView(@NonNull final Context context) { inflate(context, R.layout.view_file_header_audio, this); mPrimaryColor = ContextCompat.getColor(context, R.color.primary); updateView(); } /* package */ void addOnHeaderClickListener(@NonNull final FileModelCardAdapter.OnHeaderClickListener onHeaderClickListener) { mOnHeaderClickListeners.add(onHeaderClickListener); } /* package */ void removeOnHeaderClickListener(@NonNull final FileModelCardAdapter.OnHeaderClickListener onHeaderClickListener) { mOnHeaderClickListeners.remove(onHeaderClickListener); } private void updateView() { final List<FileModelCardHeaderItem> headerIds = FileAudioHeaderManager.getInstance().getHeaderIds(); for (FileModelCardHeaderItem f : headerIds) { final TextView tv = (TextView) findViewById(f.getId()); tv.setOnClickListener(this); if (f.isSelected()) { tv.setTextColor(mPrimaryColor); tv.setBackgroundResource(R.drawable.file_local_audio_rounded_bg_selected); } else { tv.setTextColor(Color.WHITE); tv.setBackgroundResource(R.drawable.file_local_audio_rounded_bg); } } } @Override public void onClick(final View v) { final int viewId = v.getId(); final List<FileModelCardHeaderItem> headerIds = FileAudioHeaderManager.getInstance().getHeaderIds(); boolean isElementAlreadySelected = false; for (FileModelCardHeaderItem f : headerIds) { if (f.getId() == viewId && f.isSelected()) { isElementAlreadySelected = true; break; } } if (isElementAlreadySelected) { return; } for (FileModelCardHeaderItem f : headerIds) { f.setSelected(f.getId() == viewId); } FileAudioHeaderManager.getInstance().setHeaderIds(headerIds); notifyOnHeaderClickListeners(v, headerIds); updateView(); } private void notifyOnHeaderClickListeners(View v, List<FileModelCardHeaderItem> fileModelCardHeaderItems) { for (final FileModelCardAdapter.OnHeaderClickListener onHeaderClickListener : mOnHeaderClickListeners) { onHeaderClickListener.onHeaderClick(v, fileModelCardHeaderItems); } } }