Changeset 10491 for platform/silverlight
- Timestamp:
- 04/26/08 10:17:39 (5 years ago)
- Location:
- platform/silverlight/Swit/trunk/src
- Files:
-
- 9 modified
-
Swit/App.xaml.cs (modified) (1 diff)
-
Swit/Page.xaml (modified) (1 diff)
-
Swit/Page.xaml.cs (modified) (5 diffs)
-
Swit_Web/App_Data/msgLog.xml (modified) (1 diff)
-
Swit_Web/Controllers/SwitController.cs (modified) (2 diffs)
-
Swit_Web/Global.asax.cs (modified) (1 diff)
-
Swit_Web/Login.aspx.cs (modified) (2 diffs)
-
Swit_Web/Swit_Web.csproj.user (modified) (1 diff)
-
Swit_Web/Views/Home/Index.aspx.cs (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
platform/silverlight/Swit/trunk/src/Swit/App.xaml.cs
r10215 r10491 26 26 using System.Windows; 27 27 using System.Windows.Controls; 28 using System.Net; 29 using System.Windows.Browser; 28 30 29 31 #endregion -
platform/silverlight/Swit/trunk/src/Swit/Page.xaml
r10215 r10491 16 16 </UserControl.Resources> 17 17 18 <StackPanel Width="350" Margin="6" HorizontalAlignment="Left" VerticalAlignment="Top"> 19 <ListBox x:Name="logList" Height="300"> 18 <Grid Margin="6" HorizontalAlignment="Left" VerticalAlignment="Top"> 19 <Grid.ColumnDefinitions> 20 <ColumnDefinition Width="350" /> 21 <ColumnDefinition /> 22 </Grid.ColumnDefinitions> 23 24 <StackPanel> 25 <ListBox x:Name="logList" Height="300" MouseLeftButtonDown="logList_MouseLeftButtonDown"> 26 <ListBox.Template> 27 <ControlTemplate> 28 <ScrollViewer VerticalScrollBarVisibility="Auto"> 29 <ItemsPresenter /> 30 </ScrollViewer> 31 </ControlTemplate> 32 </ListBox.Template> 33 34 <ListBox.ItemTemplate> 35 <DataTemplate> 36 <StackPanel Width="330" Margin="4"> 37 <Grid> 38 <TextBlock Text="{Binding User}" FontSize="12" TextDecorations="Underline" /> 39 40 <TextBlock Text="{Binding DateString}" FontSize="12" Margin="0,0,8,0" HorizontalAlignment="Right" /> 41 </Grid> 42 43 <TextBlock Text="{Binding Message}" FontSize="16" TextWrapping="Wrap" /> 44 </StackPanel> 45 </DataTemplate> 46 </ListBox.ItemTemplate> 47 </ListBox> 48 49 <Grid Margin="0,5,0,0"> 50 <Grid.ColumnDefinitions> 51 <ColumnDefinition /> 52 <ColumnDefinition Width="60" /> 53 </Grid.ColumnDefinitions> 54 55 <TextBox x:Name="msgInput" FontSize="14" Margin="0,0,5,0" KeyDown="msgInput_KeyDown" /> 56 57 <Button x:Name="sendButton" Grid.Column="1" Content="送信" Cursor="Hand" 58 Click="sendButton_Click" MouseMove="sendButton_MouseMove" MouseLeave="sendButton_MouseLeave"> 59 <Button.Background> 60 <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 61 <GradientStop Color="White" Offset="0" /> 62 <GradientStop x:Name="highlightColor" Color="Black" Offset="0.55" /> 63 <GradientStop Color="White" Offset="1" /> 64 </LinearGradientBrush> 65 </Button.Background> 66 67 <Button.Template> 68 <ControlTemplate TargetType="Button"> 69 <Border Background="{TemplateBinding Background}" CornerRadius="6" 70 BorderBrush="Black" BorderThickness="1"> 71 <ContentPresenter Content="{TemplateBinding Content}" Foreground="White" 72 HorizontalAlignment="Center" VerticalAlignment="Center" /> 73 </Border> 74 </ControlTemplate> 75 </Button.Template> 76 </Button> 77 </Grid> 78 79 <TextBlock x:Name="statusText" FontSize="12" HorizontalAlignment="Right" /> 80 </StackPanel> 81 82 <ListBox x:Name="userList" Grid.Column="1" 83 Width="100" Height="150" Margin="10,0,0,0" VerticalAlignment="Top"> 20 84 <ListBox.Template> 21 85 <ControlTemplate> 22 <ScrollViewer VerticalScrollBarVisibility="Auto">23 <ItemsPresenter />86 <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> 87 <ItemsPresenter IsHitTestVisible="False" /> 24 88 </ScrollViewer> 25 89 </ControlTemplate> 26 90 </ListBox.Template> 27 28 <ListBox.ItemTemplate>29 <DataTemplate>30 <StackPanel Width="340" Margin="4">31 <Grid>32 <TextBlock Text="{Binding User}" FontSize="12" TextDecorations="Underline" />33 34 <TextBlock Text="{Binding DateString}" FontSize="12" HorizontalAlignment="Right" />35 </Grid>36 37 <TextBlock Text="{Binding Message}" FontSize="16" TextWrapping="Wrap" />38 </StackPanel>39 </DataTemplate>40 </ListBox.ItemTemplate>41 91 </ListBox> 42 43 <Grid Margin="0,5,0,0"> 44 <Grid.ColumnDefinitions> 45 <ColumnDefinition /> 46 <ColumnDefinition Width="60" /> 47 </Grid.ColumnDefinitions> 48 49 <TextBox x:Name="msgInput" FontSize="14" Margin="0,0,5,0" KeyDown="msgInput_KeyDown" /> 50 51 <Button x:Name="sendButton" Grid.Column="1" Content="送信" Cursor="Hand" 52 Click="sendButton_Click" MouseMove="sendButton_MouseMove" MouseLeave="sendButton_MouseLeave"> 53 <Button.Background> 54 <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 55 <GradientStop Color="White" Offset="0" /> 56 <GradientStop x:Name="highlightColor" Color="Black" Offset="0.55" /> 57 <GradientStop Color="White" Offset="1" /> 58 </LinearGradientBrush> 59 </Button.Background> 60 61 <Button.Template> 62 <ControlTemplate TargetType="Button"> 63 <Border Background="{TemplateBinding Background}" CornerRadius="6" 64 BorderBrush="Black" BorderThickness="1"> 65 <ContentPresenter Content="{TemplateBinding Content}" Foreground="White" 66 HorizontalAlignment="Center" VerticalAlignment="Center" /> 67 </Border> 68 </ControlTemplate> 69 </Button.Template> 70 </Button> 71 </Grid> 72 73 <TextBlock x:Name="statusText" FontSize="12" HorizontalAlignment="Right" /> 74 </StackPanel> 92 </Grid> 75 93 76 94 </UserControl> -
platform/silverlight/Swit/trunk/src/Swit/Page.xaml.cs
r10215 r10491 53 53 private bool downloading = false; 54 54 55 /// <summary> 56 /// 最後にリストをクリックした時間 57 /// </summary> 58 private DateTime lastClickTime = DateTime.MinValue; 59 55 60 #endregion 56 61 … … 148 153 } 149 154 155 /// <summary> 156 /// 現在ログインしているユーザの一覧を取得します。 157 /// </summary> 158 /// <param name="callback">取得が完了した時に呼び出されるコールバック</param> 159 private void GetLoginUsers(Action callback) { 160 var webClient = new WebClient(); 161 webClient.DownloadStringCompleted += (s, e) => { 162 if(e.Error == null) { 163 var xml = XDocument.Parse(e.Result); 164 var result = from user in xml.Descendants("user") 165 select (string)user; 166 167 userList.ItemsSource = result; 168 169 if(callback != null) callback(); 170 } 171 }; 172 webClient.DownloadStringAsync(new Uri(AppBase + "Swit/Users.aspx")); 173 } 174 150 175 /// <summary> 151 176 /// 指定したメッセージを表示します。 … … 164 189 165 190 private void UserControl_Loaded(object sender, RoutedEventArgs e) { 166 timer = new Timer(o => Dispatcher.BeginInvoke(() => GetLog(null))); 191 timer = new Timer(o => Dispatcher.BeginInvoke( 192 () => GetLoginUsers(() => GetLog(() => PrintMessage("メッセージを更新しました。"))) 193 )); 167 194 timer.Change(0, 60000); // 一分 168 195 … … 171 198 172 199 private void sendButton_Click(object sender, RoutedEventArgs e) { 173 if(msgInput.Text.Length > 0) { 174 SendMessage(msgInput.Text, () => { 175 msgInput.Text = string.Empty; 176 177 GetLog(() => PrintMessage("メッセージを更新しました。")); 178 }); 179 } 200 if(msgInput.Text.Length > 0) { 201 SendMessage(msgInput.Text, () => { 202 msgInput.Text = string.Empty; 203 204 GetLog(() => PrintMessage("メッセージを更新しました。")); 205 }); 206 207 } else GetLog(() => PrintMessage("メッセージを更新しました。")); 208 180 209 msgInput.Focus(); 181 210 } … … 189 218 private void sendButton_MouseMove(object sender, MouseEventArgs e) { highlightAnime.Begin(); } 190 219 private void sendButton_MouseLeave(object sender, MouseEventArgs e) { highlightAnime.Stop(); } 220 221 private void logList_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { 222 var now = DateTime.Now; 223 224 if((now - lastClickTime).TotalMilliseconds <= 200) { 225 var log = (Log)logList.SelectedItem; 226 227 if(log != null && msgInput.Text.Length == 0) { 228 msgInput.Text = string.Format(">{0} ", log.User); 229 msgInput.Focus(); 230 msgInput.SelectionStart = msgInput.Text.Length; 231 } 232 } 233 lastClickTime = now; 234 } 191 235 192 236 #endregion -
platform/silverlight/Swit/trunk/src/Swit_Web/App_Data/msgLog.xml
r10216 r10491 1 1 <?xml version="1.0" encoding="utf-8"?> 2 <logs /> 2 <logs> 3 <log> 4 <user>coma2n</user> 5 <message>hoge</message> 6 <date>2008-04-25T16:42:05.3437</date> 7 </log> 8 <log> 9 <user>coma2n</user> 10 <message>>coma2n hello</message> 11 <date>2008-04-25T16:44:07.1875</date> 12 </log> 13 </logs> -
platform/silverlight/Swit/trunk/src/Swit_Web/Controllers/SwitController.cs
r10215 r10491 24 24 25 25 using System; 26 using System.IO; 26 27 using System.Web.Mvc; 27 28 using System.Xml.Linq; 28 29 using System.Text; 29 30 using System.Linq; 31 using System.Collections.Generic; 30 32 using System.Diagnostics; 31 using System.IO;32 33 33 34 #endregion … … 127 128 } 128 129 130 /// <summary> 131 /// 現在ログインしているユーザの一覧を取得します。 132 /// </summary> 133 public void Users() { 134 var loginUsers = (List<string>)HttpContext.Application["loginUsers"]; 135 136 if(loginUsers != null) { 137 var outXml = new XDocument(); 138 outXml.Declaration = new XDeclaration("1.0", "utf-8", "no"); 139 140 outXml.Add(new XElement("users", 141 loginUsers.Select(name => new XElement("user", name)) 142 )); 143 OutputValue(outXml.ToString(), "text/xml"); 144 } 145 } 146 129 147 #region private 130 148 -
platform/silverlight/Swit/trunk/src/Swit_Web/Global.asax.cs
r10215 r10491 40 40 RouteTable.Routes.Add(new Route("{controller}/{action}.aspx", new MvcRouteHandler())); 41 41 } 42 42 43 } 43 44 } -
platform/silverlight/Swit/trunk/src/Swit_Web/Login.aspx.cs
r10215 r10491 25 25 using System; 26 26 using System.Web.Security; 27 using System.Collections.Generic; 27 28 28 29 #endregion … … 38 39 protected void loginButton_Click(object sender, EventArgs e) { 39 40 if(userInput.Text.Length != 0) { 41 var loginUsers = (List<string>)Application["loginUsers"]; 42 43 if(loginUsers == null) { 44 loginUsers = new List<string>(); 45 46 Application["loginUsers"] = loginUsers; 47 } 48 if(!loginUsers.Contains(userInput.Text)) loginUsers.Add(userInput.Text); 49 40 50 FormsAuthentication.RedirectFromLoginPage(userInput.Text, false); 41 51 } -
platform/silverlight/Swit/trunk/src/Swit_Web/Swit_Web.csproj.user
r10217 r10491 11 11 <SQLDebugging>False</SQLDebugging> 12 12 <PublishCopyOption>RunFiles</PublishCopyOption> 13 <PublishTargetLocation> ftp://www.coma2n.com/demo/swit/</PublishTargetLocation>13 <PublishTargetLocation>http://www.coma2n.com/demo/swit/</PublishTargetLocation> 14 14 <PublishDeleteAllFiles>False</PublishDeleteAllFiles> 15 15 <PublishCopyAppData>True</PublishCopyAppData> -
platform/silverlight/Swit/trunk/src/Swit_Web/Views/Home/Index.aspx.cs
r10215 r10491 24 24 25 25 using System; 26 using System.Collections.Generic; 26 27 27 28 #endregion 28 29 29 30 namespace Swit.Web.Views.Home { 31 /// <summary> 32 /// 33 /// </summary> 30 34 public partial class Index : System.Web.Mvc.ViewPage { 31 35 protected void Page_Load(object sender, EventArgs e) { … … 34 38 protected void LoginStatus1_LoggedOut(object sender, EventArgs e) { 35 39 Session.Abandon(); 40 41 var loginUsers = (List<string>)Application["loginUsers"]; 42 43 if(loginUsers != null) { 44 loginUsers.Remove(User.Identity.Name); 45 } 36 46 } 37 47 }
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)