예제 #1
0
        private void DeleteTweet()
        {
            ClientTweet tweet = selectTweet;

            if (tweet == null)
            {
                return;
            }
            if (tweet.originalTweet == null)
            {
                return;
            }

            if (tweet.user == null)
            {
                return;
            }
            if (tweet.originalTweet.user.id != DataInstence.userInfo.user.id)
            {
                return;                                                                          //자기 트윗 아니면 종료
            }
            if (tweet.uiProperty.isDeleteTweet)
            {
                return;                                            //이미 삭제된 트윗이면 종료
            }
            MessageBoxResult mbr = MessageBox.Show("트윗을 삭제 하시겠습니까?", "삭제", MessageBoxButton.YesNo, MessageBoxImage.None);

            if (mbr == MessageBoxResult.Yes)
            {
                DalsaeInstence.TweetDelete(tweet.originalTweet.id);
            }
            FocusPanel();
        }
예제 #2
0
        public void Retweet(ClientTweet tweet)
        {
            if (tweet.user.Protected && DataInstence.CheckIsMe(tweet.user.id) == false &&
                DataInstence.option.isRetweetProtectUser == false)
            {
                DalsaeInstence.ShowMessageBox("잠금 계정의 트윗은 리트윗 할 수 없습니다.\r", "알림");
                return;
            }

            if (tweet.originalTweet.retweeted == false)
            {
                MessageBoxResult mr = DalsaeInstence.ShowMessageBox("선택한 트윗을 리트윗 하시겠습니까?", "리트윗 확인", MessageBoxButton.YesNo);
                if (mr != MessageBoxResult.Yes)
                {
                    return;
                }
            }
            if (tweet.user.Protected && tweet.isRetweet == false && DataInstence.CheckIsMe(tweet.user.id) == false)
            {
                DalsaeInstence.RetweetProtect(tweet);
            }
            else
            {
                DalsaeInstence.Retweet(tweet.originalTweet.id, !tweet.originalTweet.retweeted);
            }
        }
예제 #3
0
        public MainWindow()
        {
            DalsaeInstence.SetMainWindow(this);
            SetEvent();
            LoadResources(lockImage, Properties.Resources.LockPic);
            LoadResources(gongSikImage, Properties.Resources.gongSik_Small);
            LoadResources(bitmapGif, Properties.Resources.gif);
            LoadResources(bitmapPlay, Properties.Resources.play2);

            LoadResources(bitmapHome, Properties.Resources.home_icon);
            LoadResources(bitmapMention, Properties.Resources.noti_icon);
            LoadResources(bitmapDM, Properties.Resources.dm_icon);
            LoadResources(bitmapFav, Properties.Resources.favorite);
            LoadResources(bitmapOpen, Properties.Resources.unlink);

            InitializeComponent();            //리소스 로드 하고 이니셜 해야 메모리 문제 없음
            gridProfilePicture.DataContext = DataInstence.userInfo.user;
            SetListBox();
            SetPosition();

            LoadAccount();
            SetTopUI(DataInstence.option.isSmallUI);
            timer.Tick    += CheckMessageQueue;
            timer.Interval = new TimeSpan(0, 0, 0, 4);
            timer.Start();
            findCommand.InputGestures.Add(new KeyGesture(Key.F, ModifierKeys.Control));            //찾기 단축키 등록
            SetFindGridVisibility(false);
        }
예제 #4
0
        //최초 로딩 시
        private void Dalsae_Loded(object sender, RoutedEventArgs e)
        {
            gridPreview.Visibility = Visibility.Hidden;
            gridPreview.Background = new SolidColorBrush(Color.FromRgb(255, 255, 255));
            DalsaeInstence.LoadedMainWindow();
            foreach (TreeViewManager item in dicPanel.Values)
            {
                ScrollViewer scroll = Generate.FindElementByName <ScrollViewer>(item.treeView);
                item.scrollViewer = scroll;
            }
            imageHome.Source    = bitmapHome;
            imageMention.Source = bitmapMention;
            imageDm.Source      = bitmapDM;
            imageFav.Source     = bitmapFav;
            imageOpen.Source    = bitmapOpen;

            if (FileInstence.isPatched)
            {
                MessageBoxResult mr = MessageBox.Show(this, $"달새의 오류를 자동으로 전송 하시겠습니까?{Environment.NewLine}차후 패치까지 적용 됩니다.{Environment.NewLine}어려분의 오류 보고가 달새를 더 안정적으로 만듭니다.", "알림", MessageBoxButton.YesNo, MessageBoxImage.Information);
                if (mr == MessageBoxResult.Yes)
                {
                    DataInstence.option.isSendError = true;
                }
                else
                {
                    DataInstence.option.isSendError = false;
                }
                FileInstence.UpdateOption(DataInstence.option);
            }
        }
예제 #5
0
        //-------------------------------------------------------------------------------------------
        //---------------------------------각종 공용 함수------------------------------------------
        //-------------------------------------------------------------------------------------------

        private void ShowPanel(eTweetPanel panel)
        {
            dicPanel[selectPanel].HideTreeView();
            dicPanel[panel].ShowTreeView();
            TweetInstence.ClearTweet(selectPanel);
            selectPanel = panel;
            if (panel == eTweetPanel.eMention)
            {
                notiMention.isOn = false;
            }
            else if (panel == eTweetPanel.eDm)
            {
                notiDm.isOn = false;
            }
            //패널 띄웠을 때 로딩된 글이 없을 경우 API콜
            if (selectPanel == eTweetPanel.eDm && dicPanel[selectPanel].treeView.Items.Count < 2)
            {
                DalsaeInstence.LoadTweet(eTweetPanel.eDm);
            }
            else if (selectPanel == eTweetPanel.eFavorite && dicPanel[selectPanel].treeView.Items.Count < 2)
            {
                DalsaeInstence.LoadTweet(eTweetPanel.eFavorite);
            }
            else if (selectPanel == eTweetPanel.eMention && dicPanel[selectPanel].treeView.Items.Count < 2)
            {
                DalsaeInstence.LoadTweet(eTweetPanel.eMention);
            }
            dicPanel[selectPanel].Focus();
        }
예제 #6
0
        private void contextClick_Retweet(object sender, RoutedEventArgs e)
        {
            if (tweet == null)
            {
                return;
            }

            if (tweet.user.Protected && DataInstence.CheckIsMe(tweet.user.id) == false &&
                DataInstence.option.isRetweetProtectUser == false)
            {
                DalsaeInstence.ShowMessageBox("잠금 계정의 트윗은 리트윗 할 수 없습니다.\r", "알림");
                return;
            }

            MessageBoxResult mr = DalsaeInstence.ShowMessageBox("선택한 트윗을 리트윗 하시겠습니까?", "리트윗 확인", MessageBoxButton.YesNo);

            if (mr != MessageBoxResult.Yes)
            {
                return;
            }

            if (tweet.user.Protected && DataInstence.CheckIsMe(tweet.user.id) == false)
            {
                DalsaeInstence.RetweetProtect(tweet);
            }
            else
            {
                DalsaeInstence.Retweet(tweet.originalTweet.id, !tweet.retweeted);
            }
        }
예제 #7
0
 private void mainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
 {
     if (WindowState != WindowState.Maximized && WindowState != WindowState.Minimized)
     {
         DataInstence.SetMainWindowLocation(Left, Top, Width, Height);
     }
     DalsaeInstence.ProgramClosing();
 }
예제 #8
0
 private void contextClick_Favorite(object sender, RoutedEventArgs e)
 {
     if (tweet == null)
     {
         return;
     }
     DalsaeInstence.Favorite(tweet.originalTweet.id, !tweet.originalTweet.favorited);
 }
예제 #9
0
        private void menuItemChangeAccount_Click(object sender, RoutedEventArgs e)
        {
            MenuItem item = sender as MenuItem;

            if (item == null)
            {
                return;
            }
            DalsaeInstence.ChangeAccount(item.Name);
        }
예제 #10
0
 private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
 {
     isClosed = true;
     timer.Stop();
     mediaElement.Stop();
     mediaElement.Source = null;
     DataInstence.SetVideoWindowLocation(Left, Top, Width, Height);
     Properties.Settings.Default.videoVolume = mediaElement.Volume;
     DalsaeInstence.FocusPanel();
 }
예제 #11
0
        private void contextClick_UserRetweetOff(object sender, RoutedEventArgs e)
        {
            ClientTweet tweet = selectTweet;

            if (tweet == null)
            {
                return;
            }

            DalsaeInstence.RetweetOff(tweet.user.id);
        }
예제 #12
0
        private void contextClick_showTweet(object sender, RoutedEventArgs e)
        {
            UserFollow user = dicPanel[selectPanel].listbox.SelectedItem as UserFollow;

            if (user == null)
            {
                return;
            }

            DalsaeInstence.LoadTweet(eTweetPanel.eUser, user.screen_name);
        }
예제 #13
0
        public App()
        {
            this.Dispatcher.UnhandledException         += Dispatcher_UnhandledException;
            this.Dispatcher.UnhandledExceptionFilter   += Dispatcher_UnhandledExceptionFilter;
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
            TaskScheduler.UnobservedTaskException      += TaskScheduler_UnobservedTaskException;

            DataInstence.Init();
            FileInstence.Init();            //init
            DalsaeInstence.Init();          //init
        }
예제 #14
0
        //private bool UpdateKey(TextBox textBox, Keys key)
        //{
        //	bool ret = true;

        //	if(textBox.Equals(textReplyAll))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeyReplyAll, key);
        //	}
        //	else if(textBox.Equals(textReply))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeyReply, key);
        //	}
        //	else if (textBox.Equals(textRetweet))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeyRetweet, key);
        //	}
        //	else if (textBox.Equals(textFavorite))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeyFavorite, key);
        //	}
        //	else if (textBox.Equals(textQRtweet))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeyQRetweet, key);
        //	}
        //	else if (textBox.Equals(textInput))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeyInput, key);
        //	}
        //	else if (textBox.Equals(textSendDM))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeySendDM, key);
        //	}
        //	else if (textBox.Equals(textDelete))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeyDeleteTweet, key);
        //	}
        //	else if (textBox.Equals(textHashTag))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeyHashTag, key);
        //	}
        //	else if (textBox.Equals(textTL))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeyShowTL, key);
        //	}
        //	else if (textBox.Equals(textMention))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeyShowMention, key);
        //	}
        //	else if (textBox.Equals(textShowDM))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeyShowDM, key);
        //	}
        //	else if (textBox.Equals(textShowFavorite))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeyShowFavorite, key);
        //	}
        //	else if (textBox.Equals(textGoEnd))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeyGoEnd, key);
        //	}
        //	else if (textBox.Equals(textGoHome))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeyGoHome, key);
        //	}
        //	else if (textBox.Equals(textLoad))
        //	{
        //		ret = hotkey.UpdateKey(HotKeys.eHotKeys.eKeyLoad, key);
        //	}

        //	return ret;
        //}

        private void okButton_Click(object sender, EventArgs e)
        {
            UpdateKey();
            if (CheckKeys())
            {
                SaveHotkey();
                this.Close();
            }
            else
            {
                DalsaeInstence.ShowMessageBox("단축키가 중복됩니다.", "오류");
            }
        }
예제 #15
0
        private void button_Click(object sender, RoutedEventArgs e)
        {
            int pin;

            if (int.TryParse(textBox.Text, out pin) && textBox.Text.Length == 7)
            {
                DalsaeInstence.InputPin(textBox.Text);
                Close();
            }
            else
            {
                MessageBox.Show(this, "웹 페이지에서 발급 받은.\r7자리 숫자를 제대로 입력 해주세요", "오류", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
예제 #16
0
        private void AddFavorite()
        {
            ClientTweet tweet = selectTweet;

            if (tweet == null)
            {
                return;
            }
            if (tweet.originalTweet == null)
            {
                return;
            }

            DalsaeInstence.Favorite(tweet.originalTweet.id, !tweet.originalTweet.favorited);
        }
예제 #17
0
        private void AddTweetData(eTweetPanel panel, ClientTweet tweet, bool isMore = false)
        {
            dicHashs[panel].Add(tweet.id);
            SetBackground(panel, tweet);
            if (isMore == false)
            {
                if (panel == eTweetPanel.eHome || panel == eTweetPanel.eDm)
                {
                    if (dicTweetTree[panel].Count > ConMaxTweet)
                    {
                        dicHashs[panel].Remove(dicTweetTree[panel][dicTweetTree[panel].Count - 1].id);
                        dicTweetTree[panel].RemoveAt(dicTweetTree[panel].Count - 1);
                    }
                }
                else
                {
                    if (dicTweetTree[panel].Count > ConMaxTweet)
                    {
                        dicHashs[panel].Remove(dicTweetTree[panel][dicTweetTree[panel].Count - 2].id);
                        dicTweetTree[panel].RemoveAt(dicTweetTree[panel].Count - 2);
                    }
                }
                dicTweetTree[panel].Insert(0, tweet);                //list의 앞에 등록해야 순차적으로 표시됨
            }
            else
            {
                dicTweetTree[panel].Insert(dicTweetTree[panel].Count - 1, tweet);                //더 불러오기 버튼 앞에 추가
            }
            if (panel == eTweetPanel.eMention)
            {
                tweet.uiProperty.isHighlight = true;
            }

            if (panel == eTweetPanel.eMention || panel == eTweetPanel.eDm)            //알림
            {
                DalsaeInstence.OnMentionNoti();
            }
            if (tweet.isQTRetweet)
            {
                Manager.APICallAgent.apiInstence.LoadSingleTweet(tweet, tweet.originalTweet.quoted_status_id_str);
            }
            //Application.Current.Dispatcher.BeginInvoke(OnQt, new object[] { tweet });
            //OnQt?.Invoke(tweet);
            //if (tweet.isQTRetweet)
            //{
            //	ThreadPool.QueueUserWorkItem(new WaitCallback(LoadQTRetweet), new object[] { tweet, panel });
            //}
        }
예제 #18
0
 private void LoadDeahwa()
 {
     if (selectTweet == null)
     {
         return;
     }
     if (selectTweet.originalTweet == null)
     {
         return;
     }
     DalsaeInstence.LoadSingleTweet(selectTweet);
     //if (string.IsNullOrEmpty(selectTweet.originalTweet.in_reply_to_status_id_str) == false)
     //	DalsaeInstence.LoadDeahwa(selectTweet);
     //DalsaeInstence.LoadSingleTweet(selectTweet);
     //if (selectTweet.isQTRetweet)
     //	ThreadPool.QueueUserWorkItem(new WaitCallback(LoadQTRetweet), new object[] { selectTweet, selectPanel });
 }
예제 #19
0
        private void click_MoreButton(object sender, RoutedEventArgs e)
        {
            if (dicPanel[selectPanel].treeView.Items.Count < 2)            //2개 이상일 경우 로딩된 트윗이 있는 거
            {
                return;
            }

            if (selectPanel == eTweetPanel.eUser || selectPanel == eTweetPanel.eUserMedia)
            {
                ClientTweet tweet = dicPanel[selectPanel].treeView.Items[dicPanel[selectPanel].treeView.Items.Count - 2] as ClientTweet;
                DalsaeInstence.LoadTweetMore(selectPanel, tweet.id, tweet.user.screen_name);
            }
            else
            {
                ClientTweet tweet = dicPanel[selectPanel].treeView.Items[dicPanel[selectPanel].treeView.Items.Count - 2] as ClientTweet;
                DalsaeInstence.LoadTweetMore(selectPanel, tweet.id);
            }
        }
예제 #20
0
 private void LoadTweetByKey()
 {
     if (selectPanel == eTweetPanel.eUser)
     {
         if (dicPanel[eTweetPanel.eUser].treeView.Items.Count < 2)
         {
             return;
         }
         ClientTweet tweet = dicPanel[eTweetPanel.eUser].treeView.Items[0] as ClientTweet;
         if (tweet.user != null)
         {
             DalsaeInstence.LoadTweet(selectPanel, tweet.user.screen_name);
         }
     }
     else
     {
         DalsaeInstence.LoadTweet(selectPanel);
     }
 }
예제 #21
0
        private void contextClick_UserMediaTweet(object sender, RoutedEventArgs e)
        {
            ClientTweet tweet = selectTweet;

            if (tweet == null)
            {
                return;
            }
            MenuItem item = sender as MenuItem;

            if (item == null)
            {
                return;
            }
            string strUser = item.Header.ToString().Replace("__", "_");

            DalsaeInstence.LoadTweet(eTweetPanel.eUserMedia, strUser);
            //ShowPanel(eTweetPanel.eUser);
        }
예제 #22
0
 //-------------------------------------------------------------------------------------------
 //---------------------------------컨텍스트 클릭-------------------------------------------
 //-------------------------------------------------------------------------------------------
 private void tweetGrid_MouseLeftDown(object sender, MouseButtonEventArgs e)
 {
     if (e.ClickCount >= 2)            //더블 클릭이 아닐 경우 종료
     {
         if (selectTweet == null)
         {
             return;
         }
         if (selectTweet.originalTweet == null)
         {
             return;
         }
         if (string.IsNullOrEmpty(selectTweet.originalTweet.in_reply_to_status_id_str))
         {
             return;
         }
         DalsaeInstence.LoadSingleTweet(selectTweet);
     }
 }
예제 #23
0
        private void dmcontextClick_UserTweet(object sender, RoutedEventArgs e)
        {
            ClientDirectMessage dm = selectDM;

            if (dm == null)
            {
                return;
            }
            MenuItem item = sender as MenuItem;

            if (item == null)
            {
                return;
            }
            string strUser = item.Header.ToString().Replace("__", "_");

            DalsaeInstence.LoadTweet(eTweetPanel.eUser, strUser);
            ShowPanel(eTweetPanel.eUser);
        }
예제 #24
0
 private void button_Click(object sender, RoutedEventArgs e)
 {
     DalsaeInstence.LoadTweet(eTweetPanel.eUser, textBox.Text.Replace("@", "").Replace(" ", ""));
     Close();
 }
예제 #25
0
 private void contextClick_Qt(object sender, RoutedEventArgs e)
 {
     DalsaeInstence.QTRetweet(tweet);
 }
예제 #26
0
 private void contextClick_ReplyAll(object sender, RoutedEventArgs e)
 {
     DalsaeInstence.ReplyAll(tweet);
 }
예제 #27
0
 private void imageWindow_Closed(object sender, EventArgs e)
 {
     DalsaeInstence.FocusPanel();
 }
예제 #28
0
        private void labelTweetCount_MouseDown(object sender, MouseButtonEventArgs e)
        {
            UserFollow user = gridUserTop.DataContext as UserFollow;

            DalsaeInstence.LoadTweet(eTweetPanel.eUser, user.screen_name);
        }
예제 #29
0
 private void menuItemAddAccount_Click(object sender, RoutedEventArgs e)
 {
     DalsaeInstence.AddAccount();
 }
예제 #30
0
 private void menuItemDeleteAccount_Click(object sender, RoutedEventArgs e)
 {
     DeleteAccount();
     DalsaeInstence.DeleteNowAccount();
 }