private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e) { GlobalHelper.HandleScroll(sender, e); }
public MainWindow() { InitializeComponent(); TSW_DarkMode.IsChecked = Properties.Settings.Default.DarkMode; TSW_DarkMode_Click(null, null); Dispatcher.InvokeAsync(async() => { if (Environment.OSVersion.Version.Major != 10) { bool isLatest = await GlobalHelper.CheckUpdate(); if (!isLatest) { if (MessageBox.Show("새로운 업데이트를 확인했습니다.\n 업데이트를 받으시겠습니까?", "안내", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes) { System.Diagnostics.Process.Start("https://kagamine-rin.com/?p=186"); } } } }); CB_AutoLogin.IsChecked = Properties.Settings.Default.AutoLogin; Environment.CurrentDirectory = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath); TrayNotifyIcon = new NotifyIcon { Icon = new Icon("icon.ico"), Visible = true }; TrayNotifyIcon.MouseDoubleClick += (s, e) => { if (Properties.Settings.Default.DefaultMinimize) { WindowState = WindowState.Normal; } else { Show(); } Activate(); }; TrayNotifyIcon.BalloonTipClicked += (s, e) => { if (TrayNotifyIcon.Tag != null) { KSPNotificationActivator.ActivateHandler((string)TrayNotifyIcon.Tag, null); TrayNotifyIcon.Tag = null; } else { Show(); //Activate(); } }; ContextMenu menu = new ContextMenu(); MenuItem timeline = new MenuItem { Index = 0, Text = "타임라인" }; timeline.Click += (s, a) => { BT_TimeLine_Click(null, null); }; menu.MenuItems.Add(timeline); MenuItem write = new MenuItem { Index = 0, Text = "게시글 작성" }; write.Click += (s, a) => { BT_Write_Click(null, null); }; menu.MenuItems.Add(write); MenuItem notification = new MenuItem { Index = 0, Text = "알림 확인" }; notification.Click += (s, a) => { BT_Notifiations_Click(null, null); }; menu.MenuItems.Add(notification); MenuItem profile = new MenuItem { Index = 0, Text = "내 프로필" }; profile.Click += (s, a) => { BT_MyProfile_Click(null, null); }; menu.MenuItems.Add(profile); MenuItem settings = new MenuItem { Index = 0, Text = "설정" }; settings.Click += (s, a) => { BT_Settings_Click(null, null); }; menu.MenuItems.Add(settings); MenuItem exit = new MenuItem { Index = 0, Text = "종료" }; exit.Click += (s, a) => { Hide(); IsClose = true; Environment.Exit(0); }; menu.MenuItems.Add(exit); TrayNotifyIcon.ContextMenu = menu; if (Properties.Settings.Default.AutoLogin) { TBX_Email.Text = Properties.Settings.Default.AutoEmail; TBX_Password.Password = Properties.Settings.Default.AutoPassword; Task.Run(() => { Dispatcher.InvokeAsync(() => { TryLogin(); }); }); } SetClickObject(GD_Friends); SetClickObject(GD_Write); SetClickObject(GD_Timeline); SetClickObject(GD_Notifications); SetClickObject(GD_Mail); SetClickObject(GD_Settings); SetClickObject(GD_Friends); SetClickObject(GD_ProfileSettings); SetClickObject(BT_Login); SetClickObject(EL_Profile); SetClickObject(TB_MyProfile); SetClickObject(TB_Tray); SetClickObject(IMG_Power); Dispatcher.InvokeAsync(async() => { await KakaoRequestClass.RequestNotification(false); }); }
public ProfileWindow() { InitializeComponent(); //if (!Properties.Settings.Default.HideScrollBar) //SV_Main.VerticalScrollBarVisibility = ScrollBarVisibility.Auto; RC_Mask.Visibility = Visibility.Visible; PR_Mask.Visibility = Visibility.Visible; Dispatcher.InvokeAsync(async() => { await MainWindow.UpdateProfile(); RC_Mask.Visibility = Visibility.Collapsed; PR_Mask.Visibility = Visibility.Collapsed; TB_Name.Text = MainWindow.UserProfile.display_name; TBX_Name.Text = MainWindow.UserProfile.display_name; TB_Desc.Text = MainWindow.UserProfile.status_objects?[0]?.message ?? "한줄 소개 없음"; TBX_Desc.Text = MainWindow.UserProfile.status_objects?[0]?.message ?? ""; if (MainWindow.UserProfile.status_objects?[0]?.message == null) { isDescExists = false; IC_DescEdit.Foreground = ButtonUnActivatedBrush; IC_DescDelete.Kind = MaterialDesignThemes.Wpf.PackIconKind.Add; } else { isDescExists = true; IC_DescEdit.Foreground = ButtonActivatedBrush; IC_DescDelete.Kind = MaterialDesignThemes.Wpf.PackIconKind.Delete; MainWindow.SetClickObject(IC_DescEdit); } string uri = MainWindow.UserProfile.profile_video_url_square_small ?? MainWindow.UserProfile.profile_thumbnail_url; GlobalHelper.AssignImage(IMG_Profile, uri); GlobalHelper.AssignImage(IMG_ProfileBG, MainWindow.UserProfile.bg_image_url); MainWindow.SetClickObject(EL_ProfileEdit); MainWindow.SetClickObject(IC_BGEdit); MainWindow.SetClickObject(IC_NameEdit); MainWindow.SetClickObject(IC_DescDelete); MainWindow.SetClickObject(IC_BirthdayDelete); MainWindow.SetClickObject(IC_SexDelete); if (MainWindow.UserProfile.birth_type == null) { isBirthdayExists = false; IC_BirthdayDelete.Kind = MaterialDesignThemes.Wpf.PackIconKind.Add; CB_SunDate.IsEnabled = false; DP_Birthday.IsEnabled = false; } else { isBirthdayExists = true; IC_BirthdayDelete.Kind = MaterialDesignThemes.Wpf.PackIconKind.Delete; CB_SunDate.IsChecked = MainWindow.UserProfile.birth_type.Equals("+"); CB_LeapType.IsChecked = MainWindow.UserProfile.birth_leap_type; DP_Birthday.SelectedDate = DateTime.ParseExact(MainWindow.UserProfile.birth, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); } if (MainWindow.UserProfile.gender_permission.Length > 0) { isGenderExists = true; CB_PublicSex.IsChecked = MainWindow.UserProfile.gender_permission.Equals("A"); if (MainWindow.UserProfile.gender.Equals("M")) { RB_Male.IsChecked = true; } else if (MainWindow.UserProfile.gender.Equals("F")) { RB_Female.IsChecked = true; } else { RB_Alien.IsChecked = true; } IC_SexDelete.Kind = MaterialDesignThemes.Wpf.PackIconKind.Delete; } else { isGenderExists = false; RB_Male.IsEnabled = false; RB_Female.IsEnabled = false; RB_Alien.IsEnabled = false; CB_PublicSex.IsEnabled = false; IC_SexDelete.Kind = MaterialDesignThemes.Wpf.PackIconKind.Add; } DP_Birthday.SelectedDateChanged += DP_Birthday_SelectedDateChanged; }); }
private void RefreshTimeLineFeed(TimeLinePageControl tlp, CommentData.PostData feed) { tlp.SP_Comments?.Children?.Clear(); tlp.SP_Content?.Children?.Clear(); string imgUri = feed.actor.profile_image_url2 ?? feed.actor.profile_thumbnail_url; if (Properties.Settings.Default.GIFProfile && feed.actor.profile_video_url_square_small != null) { imgUri = feed.actor.profile_video_url_square_small; } GlobalHelper.AssignImage(tlp.IMG_Profile, imgUri); MainWindow.SetClickObject(tlp.IMG_Profile); tlp.IMG_Profile.Tag = feed.actor.id; tlp.IMG_Profile.MouseLeftButtonDown += GlobalHelper.SubContentMouseEvent; tlp.TB_Name.Text = feed.actor.display_name; tlp.TB_Date.Text = PostWindow.GetTimeString(feed.created_at); GlobalHelper.RefreshContent(feed.content_decorators, feed.content, tlp.TB_Content); if (feed.media_type != null && feed.media != null) { RefreshImageContent(feed.media, tlp.SP_Content); } bool willDisplayInfo = false; if (feed.comment_count > 0) { willDisplayInfo = true; tlp.TB_CommentCount.Visibility = Visibility.Visible; var txt = new Bold(new Run($" {feed.comment_count.ToString()} ")) { FontSize = 12 }; tlp.TB_CommentCount.Inlines.Add(txt); } else { tlp.TB_CommentCount.Visibility = Visibility.Collapsed; tlp.SP_Comments.Margin = new Thickness(0, 0, 0, 0); } if (feed.like_count > 0) { willDisplayInfo = true; tlp.TB_LikeCount.Visibility = Visibility.Visible; var txt = new Bold(new Run($" {feed.like_count.ToString()} ")); txt.FontSize = 12; tlp.TB_LikeCount.Inlines.Add(txt); } else { tlp.TB_LikeCount.Visibility = Visibility.Collapsed; } int shares = feed.share_count - feed.sympathy_count; if (shares > 0) { willDisplayInfo = true; tlp.TB_ShareCount.Visibility = Visibility.Visible; var txt = new Bold(new Run($" {shares.ToString()} ")); txt.FontSize = 12; tlp.TB_ShareCount.Inlines.Add(txt); } else { tlp.TB_ShareCount.Visibility = Visibility.Collapsed; } if (feed.sympathy_count > 0) { willDisplayInfo = true; tlp.TB_UpCount.Visibility = Visibility.Visible; var txt = new Bold(new Run($" {feed.sympathy_count.ToString()} ")); txt.FontSize = 12; tlp.TB_UpCount.Inlines.Add(txt); } else { tlp.TB_UpCount.Visibility = Visibility.Collapsed; } if (!willDisplayInfo) { tlp.RD_CommentInfos.Height = new GridLength(0); } if (feed.closest_with_tags != null && feed.closest_with_tags.Count > 0) { Separator sep = new Separator(); tlp.SP_Main.Children.Add(sep); sep.Margin = new Thickness(0, 5, 0, 5); var TB_Closest_With = GlobalHelper.GetWithFriendTB(feed); tlp.SP_Main.Children.Add(TB_Closest_With); } }
public async Task RefreshTimeline(string from, bool isClear) { if (from == null) { lastOffset = -1; } BT_Refresh.IsEnabled = false; PR_Loading.IsActive = true; TB_RefreshBT.Text = "갱신중..."; IC_Refresh.Kind = MaterialDesignThemes.Wpf.PackIconKind.ProgressClock; List <CommentData.PostData> feeds; if (!isProfile) { TimeLineData.TimeLine feedData = await KakaoRequestClass.GetFeed(from); nextRequest = feedData.next_since; feeds = feedData.feeds; } else { string from2 = from; if (showBookmarked) { from2 = null; } var profile = await KakaoRequestClass.GetProfileFeed(profileID, from2); relationship = await KakaoRequestClass.GetProfileRelationship(profileID); if (profile.profile.bg_image_url != null) { string imgUri = profile.profile.profile_video_url_square_small ?? profile.profile.profile_image_url2; if (Properties.Settings.Default.GIFProfile && profile.profile.profile_video_url_square_small != null) { imgUri = profile.profile.profile_video_url_square_small; } GlobalHelper.AssignImage(IMG_Profile, imgUri); GlobalHelper.AssignImage(IMG_ProfileBG, profile.profile.bg_image_url); IMG_Profile.MouseLeftButtonDown += GlobalHelper.SaveImageHandler; IMG_ProfileBG.MouseLeftButtonDown += GlobalHelper.SaveImageHandler; TB_Name.Text = profile.profile.display_name; if (profile.profile.status_objects?.Count > 0) { TB_Desc.Text = profile.profile.status_objects?[0]?.message ?? "한줄 소개 없음"; } else { TB_Desc.Text = "한줄 소개 없음"; } TB_Desc2.Text = profile.mutual_friend?.message ?? "함께 아는 친구 없음"; TB_Desc2.Text += "/ " + profile.profile.activity_count.ToString() + "개의 스토리"; } GD_Favorite.Visibility = Visibility.Collapsed; if (relationship.relationship.Equals("F")) { IC_Friend.Kind = MaterialDesignThemes.Wpf.PackIconKind.AccountMinus; IC_Friend.ToolTip = "친구 삭제"; GD_Favorite.Visibility = Visibility.Visible; if (profile.profile.is_favorite) { IC_Favorite.Fill = Brushes.OrangeRed; } else { IC_Favorite.Fill = Brushes.Gray; } MainWindow.SetClickObject(IC_Favorite); ICP_Favorite.MouseEnter += (s, e) => { Mouse.OverrideCursor = Cursors.Hand; e.Handled = true; }; async void onMouseDown(object s, MouseButtonEventArgs e) { await KakaoRequestClass.FavoriteRequest(profile.profile.id, profile.profile.is_favorite); await RefreshTimeline(null, true); e.Handled = true; } IC_Favorite.MouseLeftButtonDown += onMouseDown; ICP_Favorite.MouseLeftButtonDown += onMouseDown; } else if (relationship.relationship.Equals("R")) { IC_Friend.Kind = MaterialDesignThemes.Wpf.PackIconKind.AccountRemove; IC_Friend.ToolTip = "친구 신청 취소"; } else if (relationship.relationship.Equals("C")) { IC_Friend.Kind = MaterialDesignThemes.Wpf.PackIconKind.AccountQuestionMark; IC_Friend.ToolTip = "친구 신청 처리"; } else if (relationship.relationship.Equals("N")) { IC_Friend.Kind = MaterialDesignThemes.Wpf.PackIconKind.AccountPlus; IC_Friend.ToolTip = "친구 추가"; } else { IC_Friend.Visibility = Visibility.Collapsed; } BT_Write.Visibility = Visibility.Collapsed; if (profile.activities.Count > 15) { nextRequest = profile.activities.Last().id; } if (MainWindow.UserProfile.id.Equals(profileID) && showBookmarked != true) { Title = "내 프로필"; TB_Desc2.Text = profile.profile.activity_count.ToString() + "개의 스토리"; } else { Title = profile.profile.display_name + "님의 프로필"; } if (showBookmarked) { Title = "관심글 조회"; var bookmarks = await KakaoRequestClass.GetBookmark(profileID, from); var feedsNow = new List <CommentData.PostData>(); foreach (var bookmark in bookmarks.bookmarks) { if (bookmark.status == 0) { feedsNow.Add(bookmark.activity); } } feeds = feedsNow; nextRequest = bookmarks.bookmarks.Last().id; } else { feeds = profile.activities; } } if (isProfile && feeds.Count != 18) { scrollEnd = true; } if (isClear) { SP_Content.Children.Clear(); SV_Content.ScrollToVerticalOffset(0); } foreach (var feed in feeds) { if (feed.verb.Equals("post") || feed.verb.Equals("share")) { TimeLinePageControl tlp = GenerateTimeLinePageControl(feed); SP_Content.Children.Add(tlp); SP_Content.Children.Add(new Rectangle() { Height = 10, Fill = Brushes.Transparent }); } else if (feed.verb.Equals("bundled_feed")) { try { if (feed.bundled_feed != null && feed.bundled_feed.type.Equals("share")) { CommentData.PostData feedNow = feed.bundled_feed.activities?[0]; if (feedNow != null) { feedNow.@object = feed.bundled_feed.original_activity; TimeLinePageControl tlp = GenerateTimeLinePageControl(feedNow); GlobalHelper.SetShareFriendsTB(tlp.TB_Title, feed.bundled_feed.title_decorators); tlp.TB_Title.Visibility = Visibility.Visible; tlp.TB_TitleSep.Visibility = Visibility.Visible; SP_Content.Children.Add(tlp); SP_Content.Children.Add(new Rectangle() { Height = 10, Fill = Brushes.Transparent }); } } else if (feed.bundled_feed != null && feed.bundled_feed.type.Equals("up")) { CommentData.PostData feedNow = feed.bundled_feed.original_activity; if (feedNow != null) { TimeLinePageControl tlp = GenerateTimeLinePageControl(feedNow); GlobalHelper.SetShareFriendsTB(tlp.TB_Title, feed.bundled_feed.title_decorators); tlp.TB_Title.Visibility = Visibility.Visible; tlp.TB_TitleSep.Visibility = Visibility.Visible; SP_Content.Children.Add(tlp); SP_Content.Children.Add(new Rectangle() { Height = 10, Fill = Brushes.Transparent }); } } } catch (Exception) { } } } BT_Refresh.IsEnabled = true; TB_RefreshBT.Text = "새로고침"; IC_Refresh.Kind = MaterialDesignThemes.Wpf.PackIconKind.Refresh; PR_Loading.IsActive = false; return; }
public TimeLinePageControl GenerateTimeLinePageControl(CommentData.PostData feed) { TimeLinePageControl tlp = new TimeLinePageControl(); if (Properties.Settings.Default.ScrollTimeline) { tlp.SV_Content.MaxHeight = 300; } try { try { RefreshTimeLineFeed(tlp, feed); } catch (Exception) { tlp.TB_Content.Text = ""; tlp.TB_Content.Inlines.Clear(); tlp.TB_Content.Inlines.Add(new Bold(new Run("(오류 : 삭제 등의 원인으로 인해 글 원본을 가져올 수 없습니다)"))); tlp.GD_Share.Visibility = Visibility.Collapsed; } if (feed.scrap != null) { GlobalHelper.RefreshScrap(feed.scrap, tlp.Scrap_Main); } MainWindow.SetClickObject(tlp.Card); tlp.Card.Tag = feed.id; tlp.TB_Content.Tag = feed.id; tlp.SP_Content.Tag = feed.id; tlp.Card.MouseLeftButtonDown += MainContentMouseEvent; tlp.TB_Content.MouseRightButtonDown += (s, e) => { Clipboard.SetDataObject(feed.content); MessageBox.Show("클립보드에 글 내용이 복사됐습니다."); e.Handled = true; }; if (feed.verb.Equals("share")) { if (feed.@object?.share_count == null || feed.@object?.id == null || feed.@object?.actor?.profile_thumbnail_url == null) { tlp.TB_Content.Inlines.Add(new Bold(new Run("\n(오류 : 삭제 등의 원인으로 인해 공유글 원본을 가져올 수 없습니다)"))); tlp.GD_Share.Visibility = Visibility.Collapsed; } else { tlp.GD_ShareCount.Visibility = Visibility.Visible; tlp.TB_GD_ShareCount.Text = [email protected]_count.ToString(); tlp.GD_Share.Tag = [email protected]; tlp.GD_Share.MouseLeftButtonDown += ShareContentMouseEvent; string imgUri = [email protected]_image_url2 ?? [email protected]_thumbnail_url; if (Properties.Settings.Default.GIFProfile && [email protected]_video_url_square_small != null) { imgUri = [email protected]_video_url_square_small; } GlobalHelper.AssignImage(tlp.IMG_ProfileShare, imgUri); MainWindow.SetClickObject(tlp.IMG_ProfileShare); tlp.IMG_ProfileShare.Tag = [email protected]; tlp.IMG_ProfileShare.MouseLeftButtonDown += GlobalHelper.SubContentMouseEvent; tlp.TB_NameShare.Text = [email protected]_name; tlp.TB_DateShare.Text = PostWindow.GetTimeString([email protected]_at); GlobalHelper.RefreshContent([email protected]_decorators, [email protected], tlp.TB_ShareContent); tlp.TB_ShareContent.MouseRightButtonDown += (s, e) => { Clipboard.SetDataObject([email protected]); MessageBox.Show("클립보드에 공유한 글 내용이 복사됐습니다."); e.Handled = true; }; if ([email protected]_type != null && [email protected] != null) { RefreshImageContent([email protected], tlp.SP_ShareContent); } if ([email protected] != null) { GlobalHelper.RefreshScrap([email protected], tlp.Scrap_Share); } if ([email protected]_with_tags != null && [email protected]_with_tags.Count > 0) { Separator sep = new Separator(); tlp.SP_ShareContent.Children.Add(sep); sep.Margin = new Thickness(0, 5, 0, 5); var TB_Closest_With = GlobalHelper.GetWithFriendTB(feed.@object); tlp.SP_ShareContent.Children.Add(TB_Closest_With); tlp.SP_ShareContent.Visibility = Visibility.Visible; } } } else { tlp.GD_Share.Visibility = Visibility.Collapsed; } } catch (Exception e) { tlp.SP_Content.Background = Brushes.DarkRed; tlp.TB_Name.Text = "오류!"; tlp.TB_Content.Text = e.StackTrace; } return(tlp); }
private void BT_Clipboard_Click(object sender, RoutedEventArgs e) { GlobalHelper.CopyImageHandler(IMG_Main, null); }
private async Task <bool> WriteText(string text, string permission, bool isCommentable, bool isSharable) { text = text.Replace("\"", "\\\""); text = text.Replace("\r\n", "\\n"); text = text.Replace("\n", "\\n"); text = text.Replace("\r", "\\n"); string commentable = isCommentable ? "true" : "false"; string sharable = isSharable ? "true" : "false"; List <QuoteData> rawContent = GlobalHelper.GetQuoteDataFromString(text); string textContent = Uri.EscapeDataString(JsonConvert.SerializeObject(rawContent, Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore })); StringBuilder postDataBuilder = new StringBuilder(); postDataBuilder.Append("permission=" + permission + "&comment_all_writable=" + commentable + "&is_must_read=false&enable_share=" + sharable); postDataBuilder.Append("&content=" + textContent); if (with_ids.Count > 0) { postDataBuilder.Append("&with_tags=" + Uri.EscapeDataString(JsonConvert.SerializeObject(with_ids))); } if (trust_ids.Count > 0) { postDataBuilder.Append("&allowed_profile_ids=" + Uri.EscapeDataString(JsonConvert.SerializeObject(trust_ids))); } if (mediaText != null) { postDataBuilder.Append("&" + Uri.EscapeDataString("media") + "=" + Uri.EscapeDataString(mediaText)); } foreach (string mediaPath in editOldMediaPath) { postDataBuilder.Append("&" + Uri.EscapeDataString("old_media_path[]") + "=" + Uri.EscapeDataString(mediaPath)); } if (linkData != null) { postDataBuilder.Append("&scrap_content=" + Uri.EscapeDataString(linkData)); } assets.Clear(); string postData = postDataBuilder.ToString(); byte[] byteArray = Encoding.UTF8.GetBytes(postData); string requestURI = "https://story.kakao.com/a/activities"; if (isEdit) { requestURI = "https://story.kakao.com/a/activities/" + editFeedID + "/content"; } HttpWebRequest request = WebRequest.CreateHttp(requestURI); request.Method = "POST"; if (isEdit) { request.Method = "PUT"; } request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; request.CookieContainer = WebViewWindow.GetUriCookieContainer(new Uri("https://story.kakao.com")); request.Headers["X-Kakao-DeviceInfo"] = "web:d;-;-"; request.Headers["X-Kakao-ApiLevel"] = "46"; request.Headers["X-Requested-With"] = "XMLHttpRequest"; request.Headers["X-Kakao-VC"] = "185412afe1da9580e67f"; request.Headers["Cache-Control"] = "max-age=0"; request.Headers["Accept-Encoding"] = "gzip, deflate, br"; request.Headers["Accept-Language"] = "ko"; request.Headers["DNT"] = "1"; request.Headers["authority"] = "story.kakao.com"; request.Referer = "https://story.kakao.com"; request.KeepAlive = true; request.UseDefaultCredentials = true; request.Host = "story.kakao.com"; request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"; request.Accept = "application/json"; Stream writeStream = await request.GetRequestStreamAsync(); writeStream.Write(byteArray, 0, byteArray.Length); var readStream = await request.GetResponseAsync(); var respReader = readStream.GetResponseStream(); await(new StreamReader(respReader, Encoding.UTF8)).ReadToEndAsync(); respReader.Close(); return(true); }