mirror of https://github.com/ThmmyNoLife/mTHMMY
babaliaris
4 years ago
6 changed files with 309 additions and 115 deletions
@ -0,0 +1,180 @@ |
|||||
|
package gr.thmmy.mthmmy.activities.bookmarks; |
||||
|
|
||||
|
import android.app.Activity; |
||||
|
import android.graphics.drawable.Drawable; |
||||
|
import android.view.LayoutInflater; |
||||
|
import android.view.View; |
||||
|
import android.view.ViewGroup; |
||||
|
import android.widget.ImageView; |
||||
|
import android.widget.TextView; |
||||
|
import android.widget.Toast; |
||||
|
|
||||
|
import androidx.annotation.NonNull; |
||||
|
|
||||
|
import com.woxthebox.draglistview.DragItemAdapter; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
|
||||
|
import gr.thmmy.mthmmy.R; |
||||
|
import gr.thmmy.mthmmy.model.Bookmark; |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
public class BookmarksAdapter extends DragItemAdapter<ArrayList<Bookmark>, BookmarksAdapter.BookmarksViewHolder> |
||||
|
{ |
||||
|
private final BookmarksFragment m_fragment; |
||||
|
private final ArrayList<Bookmark> m_bookMarks; |
||||
|
private final Drawable m_notificationsEnabled; |
||||
|
private final Drawable m_notificationsDisabled; |
||||
|
|
||||
|
public BookmarksAdapter(BookmarksFragment fragment, ArrayList<Bookmark> bookmarks, Drawable noteEnabled, Drawable noteDisabled) |
||||
|
{ |
||||
|
this.m_fragment = fragment; |
||||
|
this.m_bookMarks = bookmarks; |
||||
|
this.m_notificationsEnabled = noteEnabled; |
||||
|
this.m_notificationsDisabled = noteDisabled; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public long getUniqueItemId(int position) |
||||
|
{ |
||||
|
return m_bookMarks.get(position).getId().hashCode(); |
||||
|
} |
||||
|
|
||||
|
@NonNull |
||||
|
@Override |
||||
|
public BookmarksAdapter.BookmarksViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) |
||||
|
{ |
||||
|
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_bookmarks_row, parent, false); |
||||
|
return new BookmarksViewHolder(view, view.findViewById(R.id.bookmark_dragable).getId(), true); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void onBindViewHolder(@NonNull BookmarksViewHolder holder, int position) |
||||
|
{ |
||||
|
super.onBindViewHolder(holder, position); |
||||
|
|
||||
|
//Check if bookMarks ArrayList Exists and is not empty.
|
||||
|
if(m_bookMarks != null && !m_bookMarks.isEmpty()) |
||||
|
{ |
||||
|
//Check if the current bookmark exists and has a title.
|
||||
|
if (m_bookMarks.get(position) != null && m_bookMarks.get(position).getTitle() != null) |
||||
|
{ |
||||
|
|
||||
|
//Set the title.
|
||||
|
holder.m_textView.setText(m_bookMarks.get(position).getTitle()); |
||||
|
|
||||
|
//Set Notifications Enabled Image Indicator.
|
||||
|
if (m_bookMarks.get(position).isNotificationsEnabled()) |
||||
|
holder.m_noteView.setImageDrawable(m_notificationsEnabled); |
||||
|
|
||||
|
//Set Notifications Disabled Image Indicator.
|
||||
|
else |
||||
|
holder.m_noteView.setImageDrawable(m_notificationsDisabled); |
||||
|
|
||||
|
|
||||
|
//On Bookmark Click.
|
||||
|
holder.mGrabView.setOnClickListener(v -> { |
||||
|
|
||||
|
//Get the activity.
|
||||
|
Activity activity = m_fragment.getActivity(); |
||||
|
|
||||
|
//Go to the bookmarked activity.
|
||||
|
if (activity instanceof BookmarksActivity) |
||||
|
((BookmarksActivity) activity).onFragmentRowInteractionListener( |
||||
|
m_fragment.type, |
||||
|
m_fragment.interactionClick, |
||||
|
m_bookMarks.get(position)); |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
//On Notifications Toggle.
|
||||
|
holder.m_noteView.setOnClickListener(v -> { |
||||
|
|
||||
|
//Toggle the current local instance.
|
||||
|
m_bookMarks.get(position).toggleNotificationsEnabled(); |
||||
|
|
||||
|
//Get the fragment activity.
|
||||
|
Activity activity = m_fragment.getActivity(); |
||||
|
|
||||
|
//Check if it is indeed the fragment activity.
|
||||
|
if (activity instanceof BookmarksActivity) |
||||
|
{ |
||||
|
|
||||
|
//Trigger the toggle functionality and set the Enabled notifications image.
|
||||
|
if (((BookmarksActivity) activity).onFragmentRowInteractionListener( |
||||
|
m_fragment.type, |
||||
|
m_fragment.interactionToggle, |
||||
|
m_bookMarks.get(position))) |
||||
|
{ |
||||
|
holder.m_noteView.setImageDrawable(m_notificationsEnabled); |
||||
|
} |
||||
|
|
||||
|
//Trigger returned false, so set the notifications disabled image.
|
||||
|
else |
||||
|
holder.m_noteView.setImageDrawable(m_notificationsDisabled); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
//Remove Item.
|
||||
|
holder.m_removeView.setOnClickListener(v -> { |
||||
|
|
||||
|
//Get fragment's activity.
|
||||
|
Activity activity = m_fragment.getActivity(); |
||||
|
|
||||
|
if (activity instanceof BookmarksActivity) |
||||
|
{ |
||||
|
|
||||
|
//Trigger the bookmark remove functionality.
|
||||
|
((BookmarksActivity) activity).onFragmentRowInteractionListener( |
||||
|
m_fragment.type, |
||||
|
m_fragment.interactionRemove, |
||||
|
m_bookMarks.get(position)); |
||||
|
{ |
||||
|
notifyItemRemoved(position); |
||||
|
notifyItemRangeChanged(position, m_bookMarks.size()); |
||||
|
m_bookMarks.remove(m_bookMarks.get(position)); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//If the bookmarks are empty then show nothing marked.
|
||||
|
if (m_bookMarks.isEmpty()) |
||||
|
{ |
||||
|
m_fragment.showNothingBookmarked(); |
||||
|
} |
||||
|
|
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public int getItemCount() |
||||
|
{ |
||||
|
if (m_bookMarks != null) |
||||
|
return m_bookMarks.size(); |
||||
|
|
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
//View Holder.
|
||||
|
static class BookmarksViewHolder extends DragItemAdapter.ViewHolder |
||||
|
{ |
||||
|
|
||||
|
public final TextView m_textView; |
||||
|
public final ImageView m_noteView; |
||||
|
public final ImageView m_removeView; |
||||
|
public final View m_thisView; |
||||
|
|
||||
|
public BookmarksViewHolder(View itemView, int handleResId, boolean dragOnLongPress) |
||||
|
{ |
||||
|
super(itemView, handleResId, dragOnLongPress); |
||||
|
this.m_textView = itemView.findViewById(R.id.bookmark_title); |
||||
|
this.m_noteView = itemView.findViewById(R.id.toggle_notification); |
||||
|
this.m_removeView = itemView.findViewById(R.id.remove_bookmark); |
||||
|
this.m_thisView = itemView; |
||||
|
} |
||||
|
} |
||||
|
} |
@ -1,36 +1,33 @@ |
|||||
<?xml version="1.0" encoding="utf-8"?> |
<?xml version="1.0" encoding="utf-8"?> |
||||
<FrameLayout |
<androidx.constraintlayout.widget.ConstraintLayout |
||||
xmlns:android="http://schemas.android.com/apk/res/android" |
xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:app="http://schemas.android.com/apk/res-auto" |
xmlns:app="http://schemas.android.com/apk/res-auto" |
||||
android:layout_width="match_parent" android:layout_height="match_parent"> |
android:layout_width="match_parent" |
||||
|
android:layout_height="match_parent" |
||||
|
android:orientation="vertical" |
||||
|
> |
||||
|
|
||||
|
<com.woxthebox.draglistview.DragListView |
||||
|
android:id="@+id/fragment_bookmarks_dragList" |
||||
|
android:layout_width="0dp" |
||||
|
android:layout_height="0dp" |
||||
|
app:layout_constraintBottom_toBottomOf="parent" |
||||
|
app:layout_constraintEnd_toEndOf="parent" |
||||
|
app:layout_constraintStart_toStartOf="parent" |
||||
|
app:layout_constraintTop_toTopOf="parent" /> |
||||
|
|
||||
<androidx.core.widget.NestedScrollView |
|
||||
android:id="@+id/bookmarks_nested_scroll" |
|
||||
android:layout_width="match_parent" |
|
||||
android:layout_height="match_parent" |
|
||||
android:layout_gravity="top|start" |
|
||||
android:background="@color/primary_lighter" |
|
||||
android:scrollbars="none" |
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"> |
|
||||
|
|
||||
<LinearLayout |
|
||||
android:id="@+id/bookmarks_container" |
|
||||
android:layout_width="match_parent" |
|
||||
android:layout_height="match_parent" |
|
||||
android:orientation="vertical" |
|
||||
android:showDividers="middle" |
|
||||
android:divider="?android:listDivider" |
|
||||
android:dividerPadding="16dp"/> |
|
||||
</androidx.core.widget.NestedScrollView> |
|
||||
<TextView |
<TextView |
||||
android:id="@+id/nothing_bookmarked" |
android:id="@+id/nothing_bookmarked" |
||||
android:layout_width="wrap_content" |
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
android:layout_height="wrap_content" |
||||
android:layout_gravity="center" |
|
||||
android:visibility="invisible" |
|
||||
android:textIsSelectable="false" |
|
||||
android:text="@string/nothing_bookmarked_here" |
android:text="@string/nothing_bookmarked_here" |
||||
android:textColor="@color/accent" |
android:textColor="@color/accent" |
||||
|
android:textIsSelectable="false" |
||||
android:textSize="@dimen/medium_text" |
android:textSize="@dimen/medium_text" |
||||
/> |
android:visibility="invisible" |
||||
</FrameLayout> |
app:layout_constraintBottom_toBottomOf="parent" |
||||
|
app:layout_constraintEnd_toEndOf="parent" |
||||
|
app:layout_constraintStart_toStartOf="parent" |
||||
|
app:layout_constraintTop_toTopOf="parent" /> |
||||
|
</androidx.constraintlayout.widget.ConstraintLayout> |
@ -1,50 +1,58 @@ |
|||||
<?xml version="1.0" encoding="utf-8"?> |
<?xml version="1.0" encoding="utf-8"?> |
||||
<LinearLayout |
|
||||
|
<FrameLayout |
||||
xmlns:android="http://schemas.android.com/apk/res/android" |
xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:app="http://schemas.android.com/apk/res-auto" |
xmlns:app="http://schemas.android.com/apk/res-auto" |
||||
android:id="@+id/bookmark_row" |
android:id="@+id/bookmark_row" |
||||
android:layout_width="match_parent" |
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
android:layout_height="wrap_content" |
||||
android:background="?android:attr/selectableItemBackground" |
> |
||||
android:clickable="true" |
|
||||
android:focusable="true" |
|
||||
android:gravity="center_vertical" |
|
||||
android:orientation="horizontal"> |
|
||||
|
|
||||
<TextView |
<LinearLayout |
||||
android:id="@+id/bookmark_title" |
android:id="@+id/bookmark_dragable" |
||||
android:layout_width="0dp" |
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
android:layout_height="wrap_content" |
||||
android:layout_weight="1" |
android:background="?android:attr/selectableItemBackground" |
||||
android:paddingBottom="8dp" |
android:clickable="true" |
||||
android:paddingTop="6dp" |
android:focusable="true" |
||||
android:paddingStart="16dp" |
android:gravity="center_vertical" |
||||
android:paddingEnd="0dp" |
android:orientation="horizontal"> |
||||
android:textColor="@color/primary_text" |
|
||||
android:textSize="18sp"/> |
<TextView |
||||
|
android:id="@+id/bookmark_title" |
||||
|
android:layout_width="0dp" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:layout_weight="1" |
||||
|
android:paddingBottom="8dp" |
||||
|
android:paddingTop="6dp" |
||||
|
android:paddingStart="16dp" |
||||
|
android:paddingEnd="0dp" |
||||
|
android:textColor="@color/primary_text" |
||||
|
android:textSize="18sp"/> |
||||
|
|
||||
<ImageButton |
<ImageButton |
||||
android:id="@+id/toggle_notification" |
android:id="@+id/toggle_notification" |
||||
android:layout_width="wrap_content" |
android:layout_width="wrap_content" |
||||
android:layout_height="match_parent" |
android:layout_height="match_parent" |
||||
android:paddingBottom="3dp" |
android:paddingBottom="3dp" |
||||
android:paddingTop="3dp" |
android:paddingTop="3dp" |
||||
android:paddingStart="6dp" |
android:paddingStart="6dp" |
||||
android:paddingEnd="6dp" |
android:paddingEnd="6dp" |
||||
android:background="@android:color/transparent" |
android:background="@android:color/transparent" |
||||
android:contentDescription="@string/toggle_notification" |
android:contentDescription="@string/toggle_notification" |
||||
app:srcCompat="@drawable/ic_notification_on"/> |
app:srcCompat="@drawable/ic_notification_on"/> |
||||
|
|
||||
<ImageButton |
<ImageButton |
||||
android:id="@+id/remove_bookmark" |
android:id="@+id/remove_bookmark" |
||||
android:layout_width="wrap_content" |
android:layout_width="wrap_content" |
||||
android:layout_height="match_parent" |
android:layout_height="match_parent" |
||||
android:paddingBottom="3dp" |
android:paddingBottom="3dp" |
||||
android:paddingTop="3dp" |
android:paddingTop="3dp" |
||||
android:paddingStart="6dp" |
android:paddingStart="6dp" |
||||
android:paddingEnd="6dp" |
android:paddingEnd="6dp" |
||||
android:layout_marginEnd="12dp" |
android:layout_marginEnd="12dp" |
||||
android:background="@android:color/transparent" |
android:background="@android:color/transparent" |
||||
android:contentDescription="@string/remove_bookmark" |
android:contentDescription="@string/remove_bookmark" |
||||
app:srcCompat="@drawable/ic_delete_accent_24dp"/> |
app:srcCompat="@drawable/ic_delete_accent_24dp"/> |
||||
</LinearLayout> |
</LinearLayout> |
||||
|
</FrameLayout> |
Loading…
Reference in new issue