Recent Posts
Recent Comments
Link
관리 메뉴

NaggingMachine

wpf 본문

Visual Studio

wpf

naggingmachine 2009. 8. 10. 14:10
내일할일
- Twitter C# 라이브러리들 확인해보기
  - 동적으로 데이터 생성해서 구성하여 보여주는 방법까지 확인
  - TFF 시스템 C#으로 구현
- Paragraph에서 라인이 너무 떨어지지 않고 단락을 유지할 수 있는 방법 확인해보기
- 프로젝트에 이미지 포함시키기

데이터 바인딩할 때 개체 초기화하기


WindowsFormsHost


http://code.google.com/p/tweetsharp/

XAML FlowDocument to HTML Conversion Prototype



[Cool tool] Silverlight Spy


XamlCruncher






문서내에서의 Cross-Reference는 다음 링크 참고

XPlorerBar 예제에서 DocPanel과 Border를 밖으로 빼고 그 안쪽에 <Frame NavigationUIVisibility="Hidden"> 한채로 Source Attribute 설정

--> 

    
    
    
    
    
    
    
      
    
   
   
    class CountToForegroundConverter : IValueConverter
    {
        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            int count = (int)value * 5;

            string str = String.Format("{0:00}", System.Convert.ToString(count, 16));

            return "#FFFF44" +str;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException("The method or operation is not implemented.");
        }

        #endregion
    }





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Dimebrain.TweetSharp.Fluent;
using Dimebrain.TweetSharp.Extensions;
using Dimebrain.TweetSharp.Model;
using Dimebrain.TweetSharp;
using System.Collections;

namespace TwitTimes
{
    public partial class Form1 : Form
    {
        // 아이디 패스워드 설정
        //
        string user = "naggingmachine";
        string pwd = "tjdntjrghkdlxld";

        // 기준 시간
        DateTime dtBase;

        public Form1()
        {
            InitializeComponent();
            DateTime dtCurrent = DateTime.Now;
            dtBase = new DateTime(dtCurrent.Year, dtCurrent.Month, dtCurrent.Day, 17, 00, 0);
        }

        private void buttonClickMe_Click(object sender, EventArgs e)
        {
            var client = new TwitterClientInfo
            {
                ClientName = "Test",
                ClientUrl = "naggingmachine",
                ClientVersion = "1.0"
            };


            // 데이터 구조를 어떻게 가져가야 할까?
            //
            Dictionary dictionary = new Dictionary();
            listBoxResult.Items.Clear();
            var results = new List();
            int page = 1;
            bool bContinue = true;
            int index = 0;
            while (bContinue)
            {
                // Get the public timeline, caching the result for two minutes
                var tweets = FluentTwitter.CreateRequest().AuthenticateAs(user, pwd).Statuses().OnFriendsTimeline().
                    Skip(page).AsJson().Request().AsStatuses();

                foreach (TwitterStatus status in tweets)
                {
                    DateTime dt = TimeZone.CurrentTimeZone.ToLocalTime(status.CreatedDate);
                    if (dtBase >= dt)
                    {
                        bContinue = false;
                        break;
                    }

                    // 사용자 별로 분류
                    //
                    if (dictionary.ContainsKey(status.User.ScreenName) == false)
                    {
                        dictionary.Add(status.User.ScreenName, 1);
                    }
                    else
                    {
                        dictionary[status.User.ScreenName]++;
                    }

                    index++;
                    listBoxResult.Items.Add(index + "[" + dt.ToShortTimeString() + "]" + status.User.ScreenName + ": " + status.Text);

                }
                page++;
            }

            listBoxResult.Items.Add("");
            listBoxResult.Items.Add("--------------------------------");
            listBoxResult.Items.Add("");

            // 사전으로 정렬되어 있는 것을 뽑아낸다.
            //
            foreach (var pair in dictionary)
            {
                listBoxResult.Items.Add(pair.Key + ":" + pair.Value);
            }

            UpdateTopFriendsAndFollowings(user, true);
            UpdateRateLimitStatus();
        }


        // API Reset 횟수, 시간 구하기
        //
        TwitterRateLimitStatus UpdateRateLimitStatus()
        {
            var status = FluentTwitter.CreateRequest()
                .AuthenticateAs(user, pwd)
                .Account().GetRateLimitStatus()
                .AsJson().Request().AsRateLimitStatus();

            labelRateLimit.Text = "" + status.RemainingHits + "/" + status.HourlyLimit + " before " + TimeZone.CurrentTimeZone.ToLocalTime(status.ResetTime).ToShortTimeString();

            return status;
        }

        void UpdateTopFriendsAndFollowings(string ScreenName, bool bFriend)
        {
            var twitterUser = FluentTwitter.CreateRequest()
                .Users().ShowProfileFor(ScreenName).AsJson()
                .Request().AsUser();

            var count = bFriend == true? twitterUser.FriendsCount:twitterUser.FollowersCount;

            var pages = Math.Ceiling(count / 100m);
            var results = new List();

            for (var page = 1; page <= pages; page++)
            {
                var friends = bFriend == true ? FluentTwitter.CreateRequest()
                                                    .AuthenticateAs(user, pwd)
                                                    .Users().GetFriends().For(twitterUser.Id)
                                                    .Skip(page).AsJson()
                                                    .Request().AsUsers() :
                                                FluentTwitter.CreateRequest()
                                                    .AuthenticateAs(user, pwd)
                                                    .Users().GetFollowers().For(twitterUser.Id)
                                                    .Skip(page).AsJson()
                                                    .Request().AsUsers();

                results.AddRange(friends);
            }

            // 트윗을 기준으로 내림차순으로 정렬
            //
            results.Sort(new TweetsAscendingComparer());
        }

        private class TweetsAscendingComparer : IComparer
        {
            int IComparer.Compare(TwitterUser user1, TwitterUser user2)
            {
                if (user1.StatusesCount < user2.StatusesCount)
                    return 1;
                if (user1.StatusesCount > user2.StatusesCount)
                    return -1;
                else
                    return 0;
            }
        }

        private class TweetsDescendingComparer : IComparer
        {
            int IComparer.Compare(TwitterUser user1, TwitterUser user2)
            {
                if (user1.StatusesCount > user2.StatusesCount)
                    return 1;
                if (user1.StatusesCount < user2.StatusesCount)
                    return -1;
                else
                    return 0;
            }
        }


        private class FriendsAscendingComparer : IComparer
        {
            int IComparer.Compare(TwitterUser user1, TwitterUser user2)
            {
                if (user1.FriendsCount < user2.FriendsCount)
                    return 1;
                if (user1.FriendsCount > user2.FriendsCount)
                    return -1;
                else
                    return 0;
            }
        }

        private class FriendsDescendingComparer : IComparer
        {
            int IComparer.Compare(TwitterUser user1, TwitterUser user2)
            {
                if (user1.FriendsCount > user2.FriendsCount)
                    return 1;
                if (user1.FriendsCount < user2.FriendsCount)
                    return -1;
                else
                    return 0;
            }
        }

        private class FollowersAscendingComparer : IComparer
        {
            int IComparer.Compare(TwitterUser user1, TwitterUser user2)
            {
                if (user1.FollowersCount < user2.FollowersCount)
                    return 1;
                if (user1.FollowersCount > user2.FollowersCount)
                    return -1;
                else
                    return 0;
            }
        }

        private class FollowersDescendingComparer : IComparer
        {
            int IComparer.Compare(TwitterUser user1, TwitterUser user2)
            {
                if (user1.FollowersCount > user2.FollowersCount)
                    return 1;
                if (user1.FollowersCount < user2.FollowersCount)
                    return -1;
                else
                    return 0;
            }
        }

    }
}



    
        
            
                
                    
                
                
                    
   Click here!
                    

                

            
        
    

        
        private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
        {
            System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(e.Uri.AbsoluteUri));
            e.Handled = true;
        }




    <Border Grid.Column="0" CornerRadius="10" Background="#FFDEDEDE" Margin="0,0,5,0">
        <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="50" />
            <RowDefinition Height="50" />
        </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="50" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

            <Grid Grid.RowSpan="2">

                <TextBlock Text="Digg Serch" Background="Black" Foreground="#FF14517B" />
             </Grid>
            <Grid Grid.RowSpan="2"></Grid>
            <Button Content="Search" Grid.Row="0" Grid.Column="1"/>
            <Button Content="empas" Grid.Row="1"  Grid.Column="1"/>
        </Grid>
    </Border>

'Visual Studio' 카테고리의 다른 글

Windows Mobile UI 개선하기  (0) 2009.09.14
아직도 LINQ를 모르신다면,  (0) 2009.08.24
Windows 7 코드 팩 v1.0 출시  (0) 2009.08.09
Windows Mobile용 프로그램 만들기  (0) 2009.07.25
CodeRush Xpress for C#  (0) 2009.07.08