コード例 #1
0
        public StatusWriterView(AccountGroup issuer)
        {
            InitializeComponent();
            gridImageWrapper = new GridImageWrapper(MediaGrid);
            writer           = issuer;
            SetProgressVisible(false);

            for (int i = 0; i < 4; i++)
            {
                //Value Copy
                var inx = i;
                gridImageWrapper[i].GestureRecognizers.Add(new TapGestureRecognizer()
                {
                    Command = new Command(() =>
                    {
                        mediaFiles.RemoveAt(inx);
                        gridImageWrapper[inx].Source = null;
                        gridImageWrapper.SetCount(--currentImageInx);
                        //Shift Source Prop
                        //removed at 0 cause
                        //[0] = [1]
                        //[1] = [2]
                        //[2] = [3]
                        for (int icpy = inx + 1; icpy < 4; icpy++)
                        {
                            gridImageWrapper[icpy - 1].Source = gridImageWrapper[icpy].Source;
                        }
                    })
                });
            }

            DisplayWriter();
            WriterView.GestureRecognizers.Add(new TapGestureRecognizer()
            {
                Command = new Command(async() =>
                {
                    var selected = await Util.SelectAccount("트윗을 쓸 계정을 선택하세요");
                    if (selected == null)
                    {
                        return;
                    }

                    writer = selected;
                    DisplayWriter();
                })
            });
        }
コード例 #2
0
        public void UpdateImage()
        {
            ClearImage();

            if (NeedToPreventDisplay)
            {
                return;
            }

            var display = DisplayStatus;

            ProfileImage.Source = display.Creater.ProfileHttpsImageURL;

            if (display.ExtendMedias != null)
            {
                for (int i = 0; i < display.ExtendMedias.Length; i++)
                {
                    gridImageWrapper[i].Source = display.ExtendMedias[i].MediaURLHttps + ":thumb";
                }
                gridImageWrapper.SetCount(display.ExtendMedias.Length);
            }
        }
コード例 #3
0
        private async void TweetButton_Clicked(object sender, EventArgs e)
        {
            if (TextEditor.Text.Trim() == "" && mediaFiles.Count == 0)
            {
                await Application.Current.MainPage.DisplayAlert("트윗 실패", "트윗은 하나 이상의 미디어 혹은 글자를 포함해야 합니다", "확인");

                return;
            }

            SetInputStatus(false);
            SetProgressVisible(true);
            WriteProgressBar.Progress = 0d;
            WriteProgressLabel.Text   = "초기화...";

            var update = new StatusUpdate
            {
                Text = TextEditor.Text
            };

            if (replyStatus != null)
            {
                update.InReplyToStatusId = replyStatus.ID;
            }

            try
            {
                if (mediaFiles.Count != 0)
                {
                    long[] mediaIDs = new long[mediaFiles.Count];
                    for (int i = 0; i < mediaIDs.Length; i++)
                    {
                        WriteProgressBar.Progress = ((double)i / mediaIDs.Length) * 0.9d;
                        WriteProgressLabel.Text   = (i + 1) + "번째 미디어 업로드 중";
                        mediaIDs[i] = await App.Tail.TwitterAPI.UploadMediaAsync(writer.AccountForWrite, Path.GetFileName(mediaFiles[i].Path), mediaFiles[i].GetStream());
                    }
                    update.MediaIDs = mediaIDs;
                }
                WriteProgressBar.Progress = 0.9d;
                WriteProgressLabel.Text   = "트윗 발송중...";
                await App.Tail.TwitterAPI.CreateStatusAsync(writer.AccountForWrite, update);
            }
            catch (Exception ex)
            {
                await Application.Current.MainPage.DisplayAlert("트윗 실패", ex.Message, "확인");

                SetInputStatus(true);
                return;
            }
            SetInputStatus(true);
            SetProgressVisible(false);

            if (BindingContext != null && BindingContext is Page)
            {
                App.Navigation.RemovePage(BindingContext as Page);
                return;
            }

            mediaFiles.Clear();
            for (int i = 0; i < 4; i++)
            {
                gridImageWrapper[i].Source = null;
            }
            currentImageInx = 0;
            gridImageWrapper.SetCount(0);
            TextEditor.Text = "";
        }