Exemplo n.º 1
0
 protected BaseRecyclerAdapter(BaseAniDroidActivity context, List <T> items, RecyclerCardType cardType) : base(context)
 {
     Items             = items ?? throw new ArgumentNullException(nameof(items));
     CardType          = cardType;
     DefaultIconColor  = ColorStateList.ValueOf(new Color(context.GetThemedColor(Resource.Attribute.Secondary_Dark)));
     FavoriteIconColor = ColorStateList.ValueOf(new Color(ContextCompat.GetColor(context, Resource.Color.Favorite_Red)));
 }
Exemplo n.º 2
0
        public static View CreateCheckboxSettingRow(BaseAniDroidActivity context, string name, string description, bool isChecked, EventHandler <CompoundButton.CheckedChangeEventArgs> checkEvent)
        {
            var view = context.LayoutInflater.Inflate(Resource.Layout.View_SettingItem_Checkbox, null);

            var nameView    = view.FindViewById <TextView>(Resource.Id.SettingItem_Name);
            var textTwoView = view.FindViewById <TextView>(Resource.Id.SettingItem_Details);

            if (!string.IsNullOrWhiteSpace(name))
            {
                nameView.Text = name;
            }
            else
            {
                nameView.Visibility = ViewStates.Gone;
                textTwoView.SetTextColor(new Color(context.GetThemedColor(Resource.Attribute.Background_Text)));
            }

            if (!string.IsNullOrWhiteSpace(description))
            {
                textTwoView.Text = description;
            }
            else
            {
                textTwoView.Visibility = ViewStates.Gone;
            }

            var checkboxView = view.FindViewById <AppCompatCheckBox>(Resource.Id.SettingItem_Checkbox);

            checkboxView.Id             = (int)DateTime.Now.Ticks;
            checkboxView.Checked        = isChecked;
            checkboxView.CheckedChange += checkEvent;

            return(view);
        }
Exemplo n.º 3
0
 public AniListActivityRecyclerAdapter(BaseAniDroidActivity context, AniListActivityRecyclerAdapter adapter) :
     base(context, adapter)
 {
     _presenter                  = adapter._presenter;
     _userId                     = adapter._userId;
     _userNameColorHex           = $"#{Context.GetThemedColor(Resource.Attribute.Primary) & 0xffffff:X6}";
     _actionColorHex             = $"#{Context.GetThemedColor(Resource.Attribute.Primary_Dark) & 0xffffff:X6}";
     _defaultIconColor           = new Color(context.GetThemedColor(Resource.Attribute.Secondary_Dark));
     CustomCardUseItemDecoration = adapter.CustomCardUseItemDecoration;
 }
Exemplo n.º 4
0
 public AniListActivityRecyclerAdapter(BaseAniDroidActivity context, IAniListActivityPresenter presenter,
                                       IAsyncEnumerable <OneOf <IPagedData <AniListActivity>, IAniListError> > enumerable, int?currentUserId) : base(context, enumerable, RecyclerCardType.Custom)
 {
     _presenter                  = presenter;
     _userId                     = currentUserId;
     _userNameColorHex           = $"#{Context.GetThemedColor(Resource.Attribute.Primary) & 0xffffff:X6}";
     _actionColorHex             = $"#{Context.GetThemedColor(Resource.Attribute.Primary_Dark) & 0xffffff:X6}";
     _defaultIconColor           = new Color(context.GetThemedColor(Resource.Attribute.Secondary_Dark));
     CustomCardUseItemDecoration = true;
 }
Exemplo n.º 5
0
        public static View CreateSwitchSettingRow(BaseAniDroidActivity context, string name, string description, bool switchState, bool useUniqueControlId, EventHandler <CompoundButton.CheckedChangeEventArgs> switchEvent)
        {
            var view        = context.LayoutInflater.Inflate(Resource.Layout.View_SettingItem_Switch, null);
            var nameView    = view.FindViewById <TextView>(Resource.Id.SettingItem_Name);
            var textTwoView = view.FindViewById <TextView>(Resource.Id.SettingItem_Details);

            if (!string.IsNullOrWhiteSpace(name))
            {
                nameView.Text = name;
            }
            else
            {
                nameView.Visibility = ViewStates.Gone;
                textTwoView.SetTextColor(new Color(context.GetThemedColor(Resource.Attribute.Background_Text)));
            }

            if (!string.IsNullOrWhiteSpace(description))
            {
                textTwoView.Text = description;
            }
            else
            {
                textTwoView.Visibility = ViewStates.Gone;
            }

            var switchView = view.FindViewById <SwitchCompat>(Resource.Id.SettingItem_Switch);

            if (useUniqueControlId)
            {
                switchView.Id = (int)DateTime.Now.Ticks;
            }

            switchView.Checked        = switchState;
            switchView.CheckedChange += switchEvent;

            return(view);
        }
Exemplo n.º 6
0
        public static View CreateSpinnerSettingRow(BaseAniDroidActivity context, string name, string description, IList <string> items, int selectedPosition, EventHandler <AdapterView.ItemSelectedEventArgs> selectedEvent)
        {
            var view = context.LayoutInflater.Inflate(Resource.Layout.View_SettingItem_Spinner, null);

            var nameView    = view.FindViewById <TextView>(Resource.Id.SettingItem_Name);
            var textTwoView = view.FindViewById <TextView>(Resource.Id.SettingItem_Details);

            if (!string.IsNullOrWhiteSpace(name))
            {
                nameView.Text = name;
            }
            else
            {
                nameView.Visibility = ViewStates.Gone;
                textTwoView.SetTextColor(new Color(context.GetThemedColor(Resource.Attribute.Background_Text)));
            }

            if (!string.IsNullOrWhiteSpace(description))
            {
                textTwoView.Text = description;
            }
            else
            {
                textTwoView.Visibility = ViewStates.Gone;
            }

            var spinner = view.FindViewById <Spinner>(Resource.Id.SettingItem_Spinner);

            spinner.Id      = (int)DateTime.Now.Ticks;
            spinner.Adapter = new ArrayAdapter <string>(context, Resource.Layout.View_SpinnerDropDownItem, items);
            spinner.SetSelection(selectedPosition);
            spinner.ItemSelected -= selectedEvent;
            spinner.ItemSelected += selectedEvent;

            return(view);
        }
Exemplo n.º 7
0
        public static void Create(BaseAniDroidActivity context, IAsyncEnumerable <OneOf <IPagedData <AniListNotification>, IAniListError> > enumerable, int unreadCount, Action dataLoadedAction = null)
        {
            var dialogView = context.LayoutInflater.Inflate(Resource.Layout.View_List, null);

            dialogView.SetBackgroundColor(Color.Transparent);
            var recycler = dialogView.FindViewById <RecyclerView>(Resource.Id.List_RecyclerView);
            var adapter  =
                new AniListNotificationRecyclerAdapter(context, enumerable, unreadCount,
                                                       viewModel => AniListNotificationViewModel.CreateViewModel(viewModel, context,
                                                                                                                 new Color(context.GetThemedColor(Resource.Attribute.Primary))))
            {
                LoadingItemBackgroundColor = Color.Transparent
            };

            adapter.DataLoaded += (sender, b) => dataLoadedAction?.Invoke();
            recycler.SetAdapter(adapter);
            var dialog = new AlertDialog.Builder(context, context.GetThemedResourceId(Resource.Attribute.Dialog_Theme))
                         .SetView(dialogView)
                         .Create();

            dialog.Show();
        }
Exemplo n.º 8
0
        public static void Create(BaseAniDroidActivity context, AniListActivity activity, int activityPosition, IAniListActivityPresenter activityPresenter, int?currentUserId, Action <int, string> replyAction, Action <int> likeAction)
        {
            var view           = context.LayoutInflater.Inflate(Resource.Layout.Dialog_AniListActivityReply, null);
            var recycler       = view.FindViewById <RecyclerView>(Resource.Id.AniListActivityReply_Recycler);
            var likesContainer = view.FindViewById <LinearLayout>(Resource.Id.AniListActivityReply_LikesContainer);
            var adapter        = new AniListActivityRepliesRecyclerAdapter(context, activityPresenter,
                                                                           activity.Replies.Select(x => AniListActivityReplyViewModel.CreateViewModel(x,
                                                                                                                                                      new Color(context.GetThemedColor(Resource.Attribute.Secondary_Dark)), currentUserId)).ToList());

            var alert = new AlertDialog.Builder(context, context.GetThemedResourceId(Resource.Attribute.Dialog_Theme));

            alert.SetView(view);

            var a = alert.Create();

            adapter.LongClickAction = (viewModel, position) =>
            {
                if (currentUserId.HasValue && viewModel.Model?.User?.Id == currentUserId)
                {
                    CreateEditReply(context, viewModel.Model.Text,
                                    async text =>
                    {
                        await activityPresenter.EditActivityReplyAsync(viewModel.Model, position, text);
                        viewModel.RecreateViewModel();
                        adapter.NotifyItemChanged(position);

                        a.Dismiss();
                        await activityPresenter.UpdateActivityAsync(activity, activityPosition);
                    },
                                    async() =>
                    {
                        var resp = await activityPresenter.DeleteActivityReplyAsync(viewModel.Model, position);
                        if (resp)
                        {
                            adapter.RemoveItem(position);
                        }

                        a.Dismiss();
                        await activityPresenter.UpdateActivityAsync(activity, activityPosition);
                    });
                }
            };

            PopulateLikesContainer(context, activity, likesContainer);

            recycler.SetAdapter(adapter);

            a.SetButton((int)DialogButtonType.Negative, "Close", (send, args) => a.Dismiss());

            if (currentUserId.HasValue)
            {
                var likeButtonText = activity.Likes?.Any(x => x.Id == currentUserId) == true ? "Unlike" : "Like";
                a.SetButton((int)DialogButtonType.Neutral, likeButtonText, (send, args) => likeAction(activity.Id));

                a.SetButton((int)DialogButtonType.Positive, "Submit",
                            (send, args) => replyAction(activity.Id,
                                                        view.FindViewById <EditText>(Resource.Id.AniListActivityReply_Reply).Text));
            }
            else
            {
                view.FindViewById <EditText>(Resource.Id.AniListActivityReply_Reply).Visibility = ViewStates.Gone;
            }

            a.Show();
        }