public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            HasOptionsMenu = true;

            var fragment = inflater.Inflate(Resource.Layout.frag_ViewLetters, container, false);

            _viewSwitcher = fragment.FindViewById <ViewSwitcher>(Resource.Id.viewLettersFrag_viewSwitcher);

            _lettersRecyclerView = fragment.FindViewById <RecyclerView>(Resource.Id.viewLettersFrag_lettersRecycler);
            var layoutManager = new LinearLayoutManager(fragment.Context, LinearLayoutManager.Vertical, false);

            _lettersRecyclerView.SetLayoutManager(layoutManager);

            var letters = IsDraftLettersViewer()
                ?   GetBaseApp().LetterManager.GetAllDraftLetters()
                : GetBaseApp().LetterManager.GettAllSentLetters();

            _adapter                        = new LetterAdapter(this, letters);
            _adapter.LetterClick           += OnLetterClicked;
            _adapter.CopyLetterSucceeded   += LetterCopied;
            _adapter.DeleteLetterSucceeded += LetterDeleted;
            _lettersRecyclerView.SetAdapter(_adapter);

            _emptyDraftLettersText      = fragment.FindViewById <TextView>(Resource.Id.viewLettersFrag_emptyText);
            _emptyDraftLettersText.Text = AndroidHelper.GetString(IsDraftLettersViewer()
                ? Resource.String.emptyDraftLettersText
                : Resource.String.emptySentLettersText);

            return(fragment);
        }
Beispiel #2
0
        public void UpdateLetters(List <Letter> letters)
        {
            _letters = letters;
            NotifyDataSetChanged();

            _fragment.ShowToast(AndroidHelper.GetString(Resource.String.updatedDraftLetters), ToastLength.Short);
        }
Beispiel #3
0
        public CommitteeAdapter(BaseFragment fragment)
        {
            _fragment = fragment;
            _logger   = new Logger(Class.SimpleName);

            _subcommitte = AndroidHelper.GetString(Resource.String.subcommitte);
        }
Beispiel #4
0
        protected virtual void SetupSearchMenuItem(IMenu menu)
        {
            if (SearchItemId != 0)
            {
                using (var searchMenuItem = menu.FindItem(SearchItemId))
                    using (var searchView = MenuItemCompat.GetActionView(searchMenuItem))
                        using (var searchViewJavaObj = searchView.JavaCast <Android.Support.V7.Widget.SearchView>())
                        {
                            searchViewJavaObj.QueryHint        = AndroidHelper.GetString(Resource.String.enterSearchCriteria);
                            searchViewJavaObj.QueryTextSubmit += (s, e) =>
                            {
                                _searchTextChanged?.Invoke(e.Query);
                                e.Handled = true;
                            };

                            var onSearchCollapsedListener = new OnActionExpandListener();
                            onSearchCollapsedListener.MenuItemCollaspe += (sender, e) =>
                            {
                                _searchSearchviewCollapsed?.Invoke();
                                e.Handled = true;
                            };

                            MenuItemCompat.SetOnActionExpandListener(searchMenuItem, onSearchCollapsedListener);
                        }
            }
        }
Beispiel #5
0
        private void VerifyUserWantsToUpdateLegislators()
        {
            var lastUpdate = AppHelper.GetLastLegislatorUpdate();

            var message = string.Format("{0}{1}{1}{2}{1}{1}{3}",
                                        AndroidHelper.GetString(Resource.String.verifyUpdateOfLegislatorData),
                                        System.Environment.NewLine,
                                        AndroidHelper.GetString(Resource.String.verifyUpdateOfLegislatorDataWarning),
                                        lastUpdate == DateTime.MinValue
                    ? string.Empty
                    : $"{AndroidHelper.GetString(Resource.String.verifyUpdateOfLegislatorDataLastUpdate)}: {lastUpdate.ToString("G")}");

            var verifyPrompt = new Android.Support.V7.App.AlertDialog.Builder(this);//, Resource.Style.VerifyDialogTheme);

            verifyPrompt.SetTitle(AndroidHelper.GetString(Resource.String.confirmRefresh));
            verifyPrompt.SetMessage(message);
            verifyPrompt.SetNegativeButton(Resource.String.dismiss,
                                           (sender, args) =>
            {
                RunOnUiThread(() => (sender as Android.Support.V7.App.AlertDialog).Dismiss());
            });
            verifyPrompt.SetPositiveButton(Resource.String.ok,
                                           (sender, args) =>
            {
                RunOnUiThread(UpdateLegislators);
            });

            verifyPrompt.Create().Show();
        }
Beispiel #6
0
        protected override void FetchMoreLegislatorContent(bool isNextClick)
        {
            base.FetchMoreLegislatorContent(isNextClick);

            var getBillsTask = GetBillsContentTaskForViewerMode(_viewerMode);

            getBillsTask.ContinueWith((antecedent) =>
            {
                if (Activity == null || Activity.IsDestroyed || Activity.IsFinishing)
                {
                    return;
                }

                Activity.RunOnUiThread(() =>
                {
                    if (antecedent.IsFaulted || antecedent.IsCanceled)
                    {
                        HandleErrorRetrievingData();
                    }
                    else
                    {
                        HandleSuccessfullDataRetrieval();

                        currentPage       = antecedent.Result.Item3 + 1;
                        _isThereMoreVotes = antecedent.Result.Item2;

                        if (_billsToDisplay == null || !_billsToDisplay.Any())
                        {
                            _billsToDisplay = antecedent.Result.Item1;
                        }
                        else
                        {
                            _billsToDisplay.AddRange(antecedent.Result.Item1);
                        }

                        //SetLoadMoreButtonInDisabledState(false);
                        //SetLoadMoreButtonVisibility(_isThereMoreVotes);

                        ShowBills(_billsToDisplay, _isThereMoreVotes);

                        if (_viewerMode == BillViewerKind.LastestBillsForEveryone)
                        {
                            GetBaseActivity().UpdateTitleBarText(AndroidHelper.GetString(Resource.String.latestBills));
                        }
                        else if (_viewerMode == BillViewerKind.BillSearch)
                        {
                            GetBaseActivity().UpdateTitleBarText($"'{antecedent.Result.Item4}' Bills");
                        }
                    }

                    if (_viewerMode == BillViewerKind.BillSearch)
                    {
                        SetToolbarForSearchResultReturned(AreThereBillsToShow());
                    }
                });
            });

            getBillsTask.Start();
        }
Beispiel #7
0
        private void UpdateLegislators()
        {
            var results = GetBaseApp().UpdateLegislatorData();
            var message = AndroidHelper.GetString(results
                ? Resource.String.legislatorDataSuccessfullyUpdated
                : Resource.String.unableToUpdateLegislatorData);

            ShowToast(message);
        }
        public override void OnPrepareOptionsMenu(IMenu menu)
        {
            GetToolbar().SetDisplayShowTitleEnabled(true);
            GetToolbar().Title = AndroidHelper.GetString(IsDraftLettersViewer()
                ? Resource.String.drafts
                : Resource.String.sent);

            base.OnPrepareOptionsMenu(menu);
        }
Beispiel #9
0
        public VoteAdapter(BaseFragment fragment)
        {
            _fragment = fragment;

            voteResult     = AndroidHelper.GetString(Resource.String.voteResult);
            voteType       = AndroidHelper.GetString(Resource.String.voteType);
            date           = AndroidHelper.GetString(Resource.String.date);
            billInfo       = AndroidHelper.GetString(Resource.String.billInfo);
            nominationInfo = AndroidHelper.GetString(Resource.String.nominationInfo);
        }
Beispiel #10
0
        private void HandleExitSearchviewClicked()
        {
            GetBaseActivity().UpdateTitleBarText(AndroidHelper.GetString(Resource.String.searchBills));
            GetBaseActivityWithToolbarSearch().SetToolbarFilterviewVisibility(false);

            _lastSearchTerm = string.Empty;
            currentPage     = 1;
            _billsToDisplay = null;

            ShowBills(_billsToDisplay, _isThereMoreVotes);
        }
Beispiel #11
0
        protected virtual void HandleErrorRetrievingData()
        {
            //errorOccurred = true;

            if (emptyText != null)
            {
                emptyText.Text = AndroidHelper.GetString(Resource.String.unableToRetrieveFavLegislators);
            }

            ShowToast(AndroidHelper.GetString(Resource.String.dataRetrievedError), ToastLength.Long);
        }
Beispiel #12
0
        public BillAdapter(BaseFragment fragment)
        {
            _fragment = fragment;

            dateIntroduced = AndroidHelper.GetString(Resource.String.dateIntroduced);
            cosponsors     = AndroidHelper.GetString(Resource.String.cosponsorCount);
            status         = AndroidHelper.GetString(Resource.String.status);
            date           = AndroidHelper.GetString(Resource.String.statusDate);
            summary        = AndroidHelper.GetString(Resource.String.summary);
            lastaction     = AndroidHelper.GetString(Resource.String.lastAction);
            lastactionDate = AndroidHelper.GetString(Resource.String.lastActionDate);
        }
        public LegislatorAdapter(BaseFragment fragment, List <Legislator> legislators)
        {
            Logger       = new Logger(Class.SimpleName);
            _legislators = legislators;
            _fragment    = fragment;

            _termStartDate = AndroidHelper.GetString(Resource.String.termStarted);
            _termEndDate   = AndroidHelper.GetString(Resource.String.termEnds);
            _senate        = AndroidHelper.GetString(Resource.String.senate);
            _congress      = AndroidHelper.GetString(Resource.String.congress);

            _selectableItemBackground = AppHelper.GetTypedValueFromActv(_fragment.Activity);
        }
Beispiel #14
0
        public override string ViewerTitle()
        {
            switch (_viewerMode)
            {
            case BillViewerKind.SponsoredBills:
                return(AndroidHelper.GetString(Resource.String.billsSponsored));

            case BillViewerKind.CosponsoredBills:
                return(AndroidHelper.GetString(Resource.String.billsCosponsored));

            default:
                return(string.Empty);
            }
        }
        private void OnActionButtonClick(int position, int buttonResourceId)
        {
            var legislator = GetLegislatorAtPosition(position);

            if (legislator == null)
            {
                Logger.Error($"Unable to process legislator's action button click. Unable to find legislator at position {position}");
                _fragment.ShowToast(AndroidHelper.GetString(Resource.String.unableToProcessAction));
                return;
            }

            ContactMethod contactMethod = null;

            switch (buttonResourceId)
            {
            case Resource.Id.legislatorCtrl_email:
                contactMethod = legislator.Email;
                break;

            case Resource.Id.legislatorCtrl_phone:
                contactMethod = legislator.OfficeNumber;
                break;

            case Resource.Id.legislatorCtrl_address:
                contactMethod = legislator.OfficeAddress;
                break;

            case Resource.Id.legislatorCtrl_facebook:
                contactMethod = legislator.FacebookId;
                break;

            case Resource.Id.legislatorCtrl_twitter:
                contactMethod = legislator.TwitterId;
                break;

            case Resource.Id.legislatorCtrl_youtube:
                contactMethod = legislator.YouTubeId;
                break;

            case Resource.Id.legislatorCtrl_webpage:
                contactMethod = legislator.Website;
                break;
            }

            if (contactMethod != null)
            {
                AppHelper.PerformContactMethodIntent(_fragment, contactMethod, false);
            }
        }
        protected virtual void HandleErrorRetrievingData()
        {
            errorOccurred = true;

            if (loadMoreButton != null)
            {
                loadMoreButton.Enabled = true;
            }

            if (emptyText != null)
            {
                emptyText.Text = AndroidHelper.GetString(Resource.String.unableToRetrieveData);
            }

            ShowToast(AndroidHelper.GetString(Resource.String.dataRetrievedError), ToastLength.Long);
        }
Beispiel #17
0
 private void UpdateTextview(View fragment, int textviewResId, int labelTextId, string text)
 {
     using (var textView = fragment.FindViewById <TextView>(textviewResId))
     {
         if (string.IsNullOrWhiteSpace(text))
         {
             textView.Visibility = ViewStates.Gone;
         }
         else
         {
             var labelText = AndroidHelper.GetString(labelTextId);
             textView.Text       = $"{labelText}: {text}";
             textView.Visibility = ViewStates.Visible;
         }
     }
 }
Beispiel #18
0
        protected virtual void SetupFilterMenuItem(IMenu menu)
        {
            if (FilterDataItemId != 0)
            {
                using (var filterMenuItem = menu.FindItem(FilterDataItemId))
                    using (var filterView = MenuItemCompat.GetActionView(filterMenuItem))
                        using (var filterViewJavaObj = filterView.JavaCast <Android.Support.V7.Widget.SearchView>())
                        {
                            filterViewJavaObj.QueryHint        = AndroidHelper.GetString(Resource.String.enterFilterCriteria);
                            filterViewJavaObj.QueryTextChange += (s, e) =>
                            {
                                _filterDataTextChanged?.Invoke(e.NewText);
                                e.Handled = true;
                            };

                            filterViewJavaObj.QueryTextSubmit += (s, e) =>
                            {
                                _filterDataTextChanged?.Invoke(e.Query);
                                e.Handled = true;
                            };

                            var onCollapseListener = new OnActionExpandListener();
                            onCollapseListener.MenuItemCollaspe += (sender, e) =>
                            {
                                _filterSearchviewCollapsed?.Invoke();
                                e.Handled = true;
                            };

                            MenuItemCompat.SetOnActionExpandListener(filterMenuItem, onCollapseListener);

                            if (!string.IsNullOrWhiteSpace(CurrentFilter))
                            {
                                var previousFilter = CurrentFilter;

                                //For some reason these to invoke QueryTextChanged
                                // the secodn time it is called, the CurrentFilter is set to empty
                                filterMenuItem.ExpandActionView();

                                CurrentFilter = previousFilter;
                                filterViewJavaObj.SetQuery(CurrentFilter, false);

                                CurrentFilter = previousFilter;
                            }
                        }
            }
        }
Beispiel #19
0
        private void PopulateBasicInfo(View fragment, Legislator legislator)
        {
            _portrait = fragment.FindViewById <ImageView>(Resource.Id.viewLegislatorFrag_portrait);
            AppHelper.SetLegislatorPortrait(legislator, _portrait);

            using (var chamber = fragment.FindViewById <TextView>(Resource.Id.viewLegislatorFrag_chamber))
                chamber.Text = $"{AndroidHelper.GetString(Resource.String.chamber)}: {legislator.Chamber} ({legislator.State.ToString()})";

            using (var party = fragment.FindViewById <TextView>(Resource.Id.viewLegislatorFrag_party))
                party.Text = $"{AndroidHelper.GetString(Resource.String.party)}: {legislator.Party.ToString()}";

            var termStartDateText = AndroidHelper.GetString(Resource.String.termStarted);

            using (var termStartDate = fragment.FindViewById <TextView>(Resource.Id.viewLegislatorFrag_termStartDate))
                termStartDate.Text = AppHelper.GetLegislatorTermStartDate(legislator, termStartDateText);

            var termEndDateText = AndroidHelper.GetString(Resource.String.termEnds);

            using (var termEndDate = fragment.FindViewById <TextView>(Resource.Id.viewLegislatorFrag_termEndDate))
                termEndDate.Text = AppHelper.GetLegislatorTermEndDate(legislator, termEndDateText);

            using (var birthday = fragment.FindViewById <TextView>(Resource.Id.viewLegislatorFrag_birthdate))
            {
                var bdayText = AndroidHelper.GetString(Resource.String.birthday);
                birthday.Text = legislator.Birthday == DateTime.MinValue
                    ? string.Empty
                    : $"{bdayText}: {AppHelper.GetLegislatorBirthdateAndAge(legislator)}";
            }

            UpdateTextview(fragment,
                           Resource.Id.viewLegislatorFrag_votesTotal,
                           Resource.String.votesTotal,
                           legislator.TotalVotes.ToString());

            UpdateTextview(fragment,
                           Resource.Id.viewLegislatorFrag_voteWithPartyPrct,
                           Resource.String.votesWithPartyPercent,
                           legislator.VotesWithPartyPercent.ToString());

            UpdateTextview(fragment,
                           Resource.Id.viewLegislatorFrag_voteMissedPrct,
                           Resource.String.votesMissedPercent,
                           legislator.MissedVotesPercent.ToString());
        }
Beispiel #20
0
        public LetterAdapter(BaseFragment fragment, List <Letter> letters)
        {
            _logger   = new Logger(Class.SimpleName);
            _letters  = letters;
            _fragment = fragment;

            _lastSavedDate = AndroidHelper.GetString(Resource.String.letterSaved);
            _sendDate      = AndroidHelper.GetString(Resource.String.send);

            //TODO RM: Ensure this works with pre 5.0 like 4.4
            try
            {
                _fragment.Activity.Theme.ResolveAttribute(Android.Resource.Attribute.SelectableItemBackground, _selectableItemBackground, true);
            }
            catch (Exception e)
            {
                _logger.Error($"An Error occurred while retrieving the SelectableItemBackground used for transparent buttons. {e.Message}");
                _selectableItemBackground = null;
            }
        }
        public override bool OnOptionsItemSelected(IMenuItem item)
        {
            switch (item.ItemId)
            {
            case Resource.Id.viewLegislator_menu_favButtonOff:
                AppHelper.AddLegislatorToFavoriteList(_viewLegislatorFragment.GetLegislator());
                ShowToast(AndroidHelper.GetString(Resource.String.legislatorAddedToFavorites));
                _currentMenuId = Resource.Menu.menu_viewLegislator_favButtonOn;
                break;

            case Resource.Id.viewLegislator_menu_favButtonOn:
                AppHelper.RemoveLegislatorFromFavoriteList(_viewLegislatorFragment.GetLegislator());
                ShowToast(AndroidHelper.GetString(Resource.String.legislatorRemovedFromFavorites));
                _currentMenuId = Resource.Menu.menu_viewLegislator_favButtonOff;
                break;
            }

            //ReloadMenu();
            SupportInvalidateOptionsMenu();
            return(true);
        }
Beispiel #22
0
        private void Copy_Click(int position)
        {
            var letter = GetLetterAtPosition(position);

            if (letter == null)
            {
                _logger.Error($"Unable to copy letter. Could not retrive letter at position {position}.");
                _fragment.ShowToast(AndroidHelper.GetString(Resource.String.unableToCopyLetter));
                return;
            }

            var copiedLetter = new Letter()
            {
                Body           = letter.Body,
                Id             = Guid.NewGuid(),
                DateSent       = DateTime.MinValue,
                LastSaved      = DateTime.Now,
                Recipient      = letter.Recipient,
                RecipientEmail = letter.RecipientEmail,
                Sent           = false,
                Signature      = letter.Signature,
                Subject        = letter.Subject
            };

            if (_fragment.GetBaseApp().LetterManager.SaveLetter(copiedLetter))
            {
                _letters.Insert(0, copiedLetter);
                NotifyItemInserted(0);

                OnCopyLetterSucceeded(position);
                _fragment.ShowToast(AndroidHelper.GetString(Resource.String.letterCopied));
            }
            else
            {
                _fragment.ShowToast(AndroidHelper.GetString(Resource.String.unableToCopyLetter));
            }
        }
Beispiel #23
0
        private void Delete_Click(int position)
        {
            var letter = GetLetterAtPosition(position);

            if (letter == null)
            {
                _logger.Error($"Unable to delete letter. Could not retrive letter at position {position}.");
                _fragment.ShowToast(AndroidHelper.GetString(Resource.String.unableToDeleteLetter));
                return;
            }

            if (_fragment.GetBaseApp().LetterManager.DeleteLetterById(letter.Id.ToString()))
            {
                //Position is not zero based
                _letters.RemoveAt(position);
                NotifyItemRemoved(position);
                _fragment.ShowToast(AndroidHelper.GetString(Resource.String.letterDeleted));
                DeleteLetterSucceeded?.Invoke(this, position);
            }
            else
            {
                _fragment.ShowToast(AndroidHelper.GetString(Resource.String.unableToDeleteLetter));
            }
        }
 protected void SetLoadingUi()
 {
     emptyText.Text = AndroidHelper.GetString(Resource.String.loading);
     ShowEmptyview();
 }
        public override void OnStart()
        {
            base.OnStart();

            (Activity as Activities.BaseActivity).UpdateTitleBarText(AndroidHelper.GetString(Resource.String.settings));
        }
Beispiel #26
0
        public override void OnStart()
        {
            base.OnStart();

            GetBaseActivity().UpdateTitleBarText(AndroidHelper.GetString(Resource.String.donate));
        }
 protected virtual string GetSuccessfullDataRetrievalMessage()
 {
     return(AndroidHelper.GetString(Resource.String.dataRetrievedSuccessfully));
 }
 protected void SetLoadingTextInEmptyView()
 {
     ShowEmptyview(AndroidHelper.GetString(Resource.String.loading));
 }
Beispiel #29
0
 protected override string EmptyText()
 {
     return(AndroidHelper.GetString(Resource.String.emptyBillsText));
 }
Beispiel #30
0
        protected override void OnStart()
        {
            base.OnStart();

            UpdateTitleBarText(AndroidHelper.GetString(Resource.String.feedback));
        }