コード例 #1
0
ファイル: Inbox.cs プロジェクト: l3dlp-sandbox/gmail-notifier
        /// <summary>
        /// Asynchronous method used to get account statistics
        /// </summary>
        private async void UpdateStatistics()
        {
            // gets inbox message count
            int unread = (int)Box.ThreadsUnread;
            int total  = (int)Box.ThreadsTotal;

            // builds the chart
            if (total == 0)
            {
                UI.chartUnreadMails.Width = 0;
                UI.chartTotalMails.Width  = 0;
            }
            else
            {
                const int MAXIMUM_SCALE = 100;
                bool      INBOX_FULL    = total > MAXIMUM_SCALE;
                int       scale         = INBOX_FULL ? total : MAXIMUM_SCALE;

                UI.chartUnreadMails.Width = INBOX_FULL && unread == 1 ? 1 : (unread * UI.chartInbox.Width) / scale;
                UI.chartTotalMails.Width  = (total * UI.chartInbox.Width) / scale;
            }

            // updates the tooltip informations
            UI.tip.SetToolTip(UI.chartUnreadMails, unread + " " + (unread > 1 ? Translation.unreadMessages : Translation.unreadMessage));
            UI.tip.SetToolTip(UI.chartTotalMails, total + " " + (total > 1 ? Translation.messages : Translation.message));

            // updates the draft informations
            ListDraftsResponse drafts = await Api.Users.Drafts.List("me").ExecuteAsync();

            UI.labelTotalDrafts.Text = drafts.Drafts != null?drafts.Drafts.Count.ToString() : "0";

            // updates the label informations
            ListLabelsResponse labels = await Api.Users.Labels.List("me").ExecuteAsync();

            UI.labelTotalLabels.Text = labels.Labels != null?labels.Labels.Count.ToString() : "0";
        }
コード例 #2
0
        private async Task <List <FormattedMessage> > GetDrafts(ISender sender, int offset = 0,
                                                                string searchExpression    = null, int resultsPerPage = 50, int draftsInOneResponse = 10)
        {
            if (resultsPerPage < 1 || resultsPerPage > 500)
            {
                throw new ArgumentOutOfRangeException(nameof(resultsPerPage), "must be from 1 to 500.");
            }
            if (draftsInOneResponse < 1 || draftsInOneResponse > 50)
            {
                throw new ArgumentOutOfRangeException(nameof(draftsInOneResponse), "must be from 1 to 50.");
            }

            var formattedMessages = new List <FormattedMessage>();
            var service           = Methods.SearchServiceByUserId(sender.From);
            var query             = service.GmailService.Users.Drafts.List("me");

            query.MaxResults = resultsPerPage;
            query.Q          = searchExpression;

            ListDraftsResponse listDraftsResponse = null;
            var    totalDrafts = new List <Draft>();
            string pageToken   = null;
            var    tempOffset  = offset;

            while (tempOffset >= 0)
            {
                query.PageToken    = pageToken;
                listDraftsResponse = await query.ExecuteAsync();

                if (listDraftsResponse.Drafts != null)
                {
                    totalDrafts.AddRange(listDraftsResponse.Drafts);
                }
                if (string.IsNullOrEmpty(listDraftsResponse.NextPageToken))
                {
                    break;
                }
                pageToken   = listDraftsResponse.NextPageToken;
                tempOffset -= resultsPerPage;
            }

            if (listDraftsResponse?.Drafts == null)
            {
                return(formattedMessages);
            }

            foreach (var draft in totalDrafts.Skip(offset).Take(draftsInOneResponse))
            {
                var getDraftRequest = service.GmailService.Users.Drafts.Get("me", draft.Id);
                getDraftRequest.Format = UsersResource.DraftsResource.GetRequest.FormatEnum.Metadata;
                var draftInfoResponse = await getDraftRequest.ExecuteAsync();

                if (draftInfoResponse == null)
                {
                    continue;
                }
                var fMessage = new FormattedMessage(draftInfoResponse);
                formattedMessages.Add(fMessage);
            }
            return(formattedMessages);
        }