PageRenderTime 27ms CodeModel.GetById 27ms RepoModel.GetById 1ms app.codeStats 0ms

/cs/MiniTwitter-ma/MiniTwitter-ma/modified-files.diff

https://bitbucket.org/ksksts/junk
Unknown | 1126 lines | 1098 code | 28 blank | 0 comment | 0 complexity | 59919cdd510adcca09a82d7135a38b80 MD5 | raw file
Possible License(s): Apache-2.0

Large files files are truncated, but you can click here to view the full file

  1. C:\home\development\projects\bitbucket\junk\cs\MiniTwitter-ma>C:\cygwin\bin\diff.exe -urN -xobj -xbin -xmodified-files.diff MiniTwitter MiniTwitter-ma
  2. diff -urN -xobj -xbin -xmodified-files.diff MiniTwitter/MiniTwitter/Account.cs MiniTwitter-ma/MiniTwitter/Account.cs
  3. --- MiniTwitter/MiniTwitter/Account.cs 1970-01-01 09:00:00.000000000 +0900
  4. +++ MiniTwitter-ma/MiniTwitter/Account.cs 2010-01-12 22:47:24.183337200 +0900
  5. @@ -0,0 +1,90 @@
  6. +?using System;
  7. +using System.Collections.Generic;
  8. +using System.ComponentModel;
  9. +using System.Linq;
  10. +using System.Text;
  11. +using System.Text.RegularExpressions;
  12. +using System.Xml.Serialization;
  13. +
  14. +using MiniTwitter.Net.Twitter;
  15. +
  16. +namespace MiniTwitter
  17. +{
  18. + [Serializable]
  19. + public class Account : PropertyChangedBase, IEditableObject, IEquatable<Account>
  20. + {
  21. + private string username;
  22. +
  23. + [XmlAttribute]
  24. + public string Username
  25. + {
  26. + get { return username; }
  27. + set
  28. + {
  29. + if (username != value)
  30. + {
  31. + username = value;
  32. + OnPropertyChanged("Username");
  33. + }
  34. + }
  35. + }
  36. +
  37. + private string password;
  38. +
  39. + [XmlAttribute]
  40. + public string Password
  41. + {
  42. + get { return password; }
  43. + set
  44. + {
  45. + if (password != value)
  46. + {
  47. + password = value;
  48. + OnPropertyChanged("Password");
  49. + OnPropertyChanged("HiddenPassword");
  50. + }
  51. + }
  52. + }
  53. +
  54. + [XmlIgnore]
  55. + public string HiddenPassword
  56. + {
  57. + get { return new string('?', password.Length); }
  58. + }
  59. +
  60. + private Account copy;
  61. +
  62. + public void BeginEdit()
  63. + {
  64. + if (copy == null)
  65. + {
  66. + copy = new Account();
  67. + }
  68. + copy.Username = this.Username;
  69. + copy.Password = this.Password;
  70. + }
  71. +
  72. + public void CancelEdit()
  73. + {
  74. + this.Username = copy.Username;
  75. + this.Password = copy.Password;
  76. + }
  77. +
  78. + public void EndEdit()
  79. + {
  80. + copy.Username = "";
  81. + copy.Password = "";
  82. + }
  83. +
  84. + #region IEquatable<Account> ???
  85. +
  86. + public bool Equals(Account other)
  87. + {
  88. + if (other == null)
  89. + return false;
  90. + return username == other.username && password == other.password;
  91. + }
  92. +
  93. + #endregion
  94. + }
  95. +}
  96. diff -urN -xobj -xbin -xmodified-files.diff MiniTwitter/MiniTwitter/App.xaml.cs MiniTwitter-ma/MiniTwitter/App.xaml.cs
  97. --- MiniTwitter/MiniTwitter/App.xaml.cs 2010-01-16 19:32:34.890625000 +0900
  98. +++ MiniTwitter-ma/MiniTwitter/App.xaml.cs 2010-01-22 22:46:46.156250000 +0900
  99. @@ -1,4 +1,5 @@
  100. -?using System;
  101. +?/* modified by ksksts. see modified-files.diff */
  102. +using System;
  103. using System.Collections.Generic;
  104. using System.Configuration;
  105. using System.Data;
  106. @@ -120,7 +121,7 @@
  107. private readonly string directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), NAME);
  108. - public const string VERSION = "1.05.2";
  109. - public const string NAME = "MiniTwitter";
  110. + public const string VERSION = "1.05.2+20100122";
  111. + public const string NAME = "MiniTwitter-ma";
  112. }
  113. }
  114. diff -urN -xobj -xbin -xmodified-files.diff MiniTwitter/MiniTwitter/Controls/TextViewer.xaml MiniTwitter-ma/MiniTwitter/Controls/TextViewer.xaml
  115. --- MiniTwitter/MiniTwitter/Controls/TextViewer.xaml 2010-01-16 19:32:34.906250000 +0900
  116. +++ MiniTwitter-ma/MiniTwitter/Controls/TextViewer.xaml 2010-01-22 22:27:31.125000000 +0900
  117. @@ -1,6 +1,7 @@
  118. -?<UserControl x:Class="MiniTwitter.Controls.TextViewer"
  119. +?<!-- modified by ksksts. see modified-files.diff -->
  120. +<UserControl x:Class="MiniTwitter.Controls.TextViewer"
  121. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  122. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  123. x:Name="UserControl">
  124. - <TextBlock x:Name="TextBlock" TextWrapping="{Binding ElementName=UserControl, Path=TextWrapping}" TextTrimming="{Binding ElementName=UserControl, Path=TextTrimming}"/>
  125. + <TextBlock x:Name="TextBlock" TextWrapping="{Binding ElementName=UserControl, Path=TextWrapping}" TextTrimming="{Binding ElementName=UserControl, Path=TextTrimming}" LineHeight="{Binding ElementName=UserControl, Path=LineHeight}" LineStackingStrategy="{Binding ElementName=UserControl, Path=LineStackingStrategy}"/>
  126. </UserControl>
  127. diff -urN -xobj -xbin -xmodified-files.diff MiniTwitter/MiniTwitter/Controls/TextViewer.xaml.cs MiniTwitter-ma/MiniTwitter/Controls/TextViewer.xaml.cs
  128. --- MiniTwitter/MiniTwitter/Controls/TextViewer.xaml.cs 2010-01-16 19:32:34.921875000 +0900
  129. +++ MiniTwitter-ma/MiniTwitter/Controls/TextViewer.xaml.cs 2010-01-22 22:33:57.187500000 +0900
  130. @@ -1,4 +1,5 @@
  131. -?using System;
  132. +?/* modified by ksksts. see modified-files.diff */
  133. +using System;
  134. using System.Collections.Generic;
  135. using System.Diagnostics;
  136. using System.Linq;
  137. @@ -57,6 +58,24 @@
  138. public static readonly DependencyProperty TextTrimmingProperty =
  139. DependencyProperty.Register("TextTrimming", typeof(TextTrimming), typeof(TextViewer), new PropertyMetadata(TextTrimming.None));
  140. + public double LineHeight
  141. + {
  142. + get { return (double)GetValue(LineHeightProperty); }
  143. + set { SetValue(LineHeightProperty, value); }
  144. + }
  145. +
  146. + public static readonly DependencyProperty LineHeightProperty =
  147. + DependencyProperty.Register("LineHeight", typeof(double), typeof(TextViewer), new PropertyMetadata(Double.NaN));
  148. +
  149. + public LineStackingStrategy LineStackingStrategy
  150. + {
  151. + get { return (LineStackingStrategy)GetValue(LineStackingStrategyProperty); }
  152. + set { SetValue(LineStackingStrategyProperty, value); }
  153. + }
  154. +
  155. + public static readonly DependencyProperty LineStackingStrategyProperty =
  156. + DependencyProperty.Register("LineStackingStrategy", typeof(LineStackingStrategy), typeof(TextViewer), new PropertyMetadata(LineStackingStrategy.MaxHeight));
  157. +
  158. private static void TextPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
  159. {
  160. ((TextViewer)sender).OnTextChanged((string)e.NewValue);
  161. diff -urN -xobj -xbin -xmodified-files.diff MiniTwitter/MiniTwitter/Controls/TimelineStyleSelector.cs MiniTwitter-ma/MiniTwitter/Controls/TimelineStyleSelector.cs
  162. --- MiniTwitter/MiniTwitter/Controls/TimelineStyleSelector.cs 2010-01-16 19:32:34.921875000 +0900
  163. +++ MiniTwitter-ma/MiniTwitter/Controls/TimelineStyleSelector.cs 2010-01-22 22:33:57.140625000 +0900
  164. @@ -1,4 +1,5 @@
  165. -?using System;
  166. +?/* modified by ksksts. see modified-files.diff */
  167. +using System;
  168. using System.Collections.Generic;
  169. using System.Linq;
  170. using System.Text;
  171. @@ -26,6 +27,9 @@
  172. case TimelineStyle.List:
  173. style = "List";
  174. break;
  175. + case TimelineStyle.Tight:
  176. + style = "Tight";
  177. + break;
  178. default:
  179. return null;
  180. }
  181. diff -urN -xobj -xbin -xmodified-files.diff MiniTwitter/MiniTwitter/MainWindow.xaml MiniTwitter-ma/MiniTwitter/MainWindow.xaml
  182. --- MiniTwitter/MiniTwitter/MainWindow.xaml 2010-01-16 19:32:34.937500000 +0900
  183. +++ MiniTwitter-ma/MiniTwitter/MainWindow.xaml 2010-01-22 22:32:28.109375000 +0900
  184. @@ -1,4 +1,5 @@
  185. -?<Window x:Class="MiniTwitter.MainWindow"
  186. +?<!-- modified by ksksts. see modified-files.diff -->
  187. +<Window x:Class="MiniTwitter.MainWindow"
  188. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  189. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  190. xmlns:MiniTwitter="clr-namespace:MiniTwitter"
  191. @@ -48,9 +49,21 @@
  192. <RowDefinition/>
  193. </Grid.RowDefinitions>
  194. <TextBlock Grid.Row="0" Text="What's happening?" VerticalAlignment="Center" Style="{DynamicResource HeaderTextBlockStyle}"/>
  195. - <TextBlock Grid.Row="0" HorizontalAlignment="Right" VerticalAlignment="Center"
  196. - Text="{Binding ElementName=TweetTextBox, Path=Text.Length, Converter={StaticResource TextCountConverter}}"
  197. - Style="{DynamicResource CounterTextBlockStyle}"/>
  198. + <StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
  199. + <Button VerticalAlignment="Center" Margin="0,0,6,0"
  200. + Click="AccountSwitchButton_Click" Style="{DynamicResource ImageButtonStyle}">
  201. + <StackPanel Orientation="Horizontal">
  202. + <Image Margin="0,0,3,0" Style="{DynamicResource ImageStyle}"
  203. + Source="{Binding ElementName=Window, Path=LoginedUserImageUrl}"
  204. + Visibility="{Binding Source={x:Static MiniTwitter_Properties:Settings.Default}, Path=IsIconVisible, Converter={StaticResource BooleanToVisibilityConverter}}"/>
  205. + <TextBlock VerticalAlignment="Center" HorizontalAlignment="Right"
  206. + Text="{Binding ElementName=Window, Path=LoginedUserName}"
  207. + Style="{DynamicResource CurrentAccountTextBlockStyle}"/>
  208. + </StackPanel>
  209. + </Button>
  210. + <TextBlock Text="{Binding ElementName=TweetTextBox, Path=Text.Length, Converter={StaticResource TextCountConverter}}"
  211. + VerticalAlignment="Center" Style="{DynamicResource CounterTextBlockStyle}"/>
  212. + </StackPanel>
  213. <TextBox x:Name="TweetTextBox" Grid.Row="1" Margin="0,4.5,0,6" TextWrapping="Wrap" TextChanged="TweetTextBox_TextChanged"
  214. VerticalScrollBarVisibility="Auto" KeyDown="TweetTextBox_KeyDown" PreviewKeyDown="TweetTextBox_PreviewKeyDown" Style="{DynamicResource TweetTextBoxStyle}">
  215. <TextBox.CommandBindings>
  216. diff -urN -xobj -xbin -xmodified-files.diff MiniTwitter/MiniTwitter/MainWindow.xaml.cs MiniTwitter-ma/MiniTwitter/MainWindow.xaml.cs
  217. --- MiniTwitter/MiniTwitter/MainWindow.xaml.cs 2010-01-16 19:32:34.953125000 +0900
  218. +++ MiniTwitter-ma/MiniTwitter/MainWindow.xaml.cs 2010-01-22 22:33:57.093750000 +0900
  219. @@ -1,4 +1,5 @@
  220. -?using System;
  221. +?/* modified by ksksts. see modified-files.diff */
  222. +using System;
  223. using System.Collections.Generic;
  224. using System.Collections.ObjectModel;
  225. using System.ComponentModel;
  226. @@ -74,6 +75,24 @@
  227. public static readonly DependencyProperty StatusTextProperty =
  228. DependencyProperty.Register("StatusText", typeof(string), typeof(MainWindow), new PropertyMetadata(App.NAME + " " + App.VERSION));
  229. + public string LoginedUserName
  230. + {
  231. + get { return (string)GetValue(LoginedUserNameProperty); }
  232. + set { SetValue(LoginedUserNameProperty, value); }
  233. + }
  234. +
  235. + public static readonly DependencyProperty LoginedUserNameProperty =
  236. + DependencyProperty.Register("LoginedUserName", typeof(string), typeof(MainWindow));
  237. +
  238. + public string LoginedUserImageUrl
  239. + {
  240. + get { return (string)GetValue(LoginedUserImageUrlProperty); }
  241. + set { SetValue(LoginedUserImageUrlProperty, value); }
  242. + }
  243. +
  244. + public static readonly DependencyProperty LoginedUserImageUrlProperty =
  245. + DependencyProperty.Register("LoginedUserImageUrl", typeof(string), typeof(MainWindow));
  246. +
  247. public enum RefreshTarget
  248. {
  249. All,
  250. @@ -107,7 +126,7 @@
  251. replies.Filters.Add(new Filter { Type = FilterType.RegexText, Pattern = string.Format(@"@{0}[^a-zA-Z_0-9]", client.LoginedUser.ScreenName) });
  252. var archive = Timelines.TypeAt(TimelineType.Archive);
  253. archive.Filters.Clear();
  254. - archive.Filters.Add(new Filter { Type = FilterType.Name, Pattern = Settings.Default.Username });
  255. + archive.Filters.Add(new Filter { Type = FilterType.Name, Pattern = client.LoginedUser.Name });
  256. }
  257. private void InitializeAutoRefresh()
  258. @@ -207,8 +226,17 @@
  259. private void LoginCallback(object state)
  260. {
  261. + // ??????????????????
  262. + Timelines.ClearAll();
  263. // ???????????
  264. - var result = client.Login(Settings.Default.Username, Settings.Default.Password);
  265. + var account = Settings.Default.CurrentAccount;
  266. + if (account == null)
  267. + {
  268. + // ??????????????
  269. + this.Invoke(() => StatusText = "???????????????");
  270. + return;
  271. + }
  272. + var result = client.Login(account.Username, account.Password);
  273. if (result == null)
  274. {
  275. // ????ID?????????
  276. @@ -222,8 +250,9 @@
  277. }
  278. else
  279. {
  280. - // ??????????????????
  281. - Timelines.ClearAll();
  282. + // ??????????????
  283. + this.Invoke(() => LoginedUserName = client.LoginedUser.Name);
  284. + this.Invoke(() => LoginedUserImageUrl = client.LoginedUser.ImageUrl);
  285. // ????????
  286. InitializeFilter();
  287. // ???????????????
  288. @@ -346,7 +375,7 @@
  289. popupWindow.Show(statuses);
  290. }
  291. }
  292. - var action = statuses.Any(p => Regex.IsMatch(p.Text, string.Format(@"{0}[^a-zA-Z_0-9]", Settings.Default.Username))) ? SoundAction.Reply : SoundAction.Status;
  293. + var action = statuses.Any(p => Regex.IsMatch(p.Text, string.Format(@"{0}[^a-zA-Z_0-9]", client.LoginedUser.Name))) ? SoundAction.Reply : SoundAction.Status;
  294. var sound = Settings.Default.SoundBindings.Where(p => p.IsEnabled && p.Action == action).FirstOrDefault();
  295. if (sound != null)
  296. {
  297. @@ -460,7 +489,7 @@
  298. private void MainWindow_Loaded(object sender, RoutedEventArgs e)
  299. {
  300. - if (string.IsNullOrEmpty(Settings.Default.Username) || string.IsNullOrEmpty(Settings.Default.Password))
  301. + if (Settings.Default.CurrentAccount == null)
  302. {
  303. SettingButton_Click(null, null);
  304. return;
  305. @@ -616,6 +645,29 @@
  306. TweetTextBox.Focus();
  307. }
  308. + private void AccountSwitchButton_Click(object sender, RoutedEventArgs e)
  309. + {
  310. + var accountMenu = new ContextMenu();
  311. + foreach (var account in Settings.Default.Accounts)
  312. + {
  313. + var item = new MenuItem();
  314. + item.Header = account.Username;
  315. + item.Tag = accountMenu.Items.Count;
  316. + item.Click += (senderItem, eventArgs) =>
  317. + {
  318. + Settings.Default.CurrentAccountIndex = (int)((MenuItem)senderItem).Tag;
  319. + Login();
  320. + };
  321. + accountMenu.Items.Add(item);
  322. + }
  323. + if (Settings.Default.CurrentAccountIndex >= 0)
  324. + {
  325. + var item = (MenuItem)accountMenu.Items[Settings.Default.CurrentAccountIndex];
  326. + item.IsChecked = true;
  327. + }
  328. + accountMenu.IsOpen = true;
  329. + }
  330. +
  331. private void HomeButton_Click(object sender, RoutedEventArgs e)
  332. {
  333. Process.Start("http://twitter.com/home");
  334. @@ -623,6 +675,7 @@
  335. private void SettingButton_Click(object sender, RoutedEventArgs e)
  336. {
  337. + var currentAccount = Settings.Default.CurrentAccount;
  338. SettingDialog dialog = new SettingDialog { Owner = this };
  339. if (!(dialog.ShowDialog() ?? false))
  340. {
  341. @@ -636,8 +689,9 @@
  342. InitializePopupWindow();
  343. // ????????????????
  344. InitializeKeyboardShortcut();
  345. - // ???????????
  346. - if (!client.IsLogined)
  347. + // ?????????
  348. + if (Settings.Default.CurrentAccount != null &&
  349. + !Settings.Default.CurrentAccount.Equals(currentAccount))
  350. {
  351. // Twitter ?????
  352. Login();
  353. diff -urN -xobj -xbin -xmodified-files.diff MiniTwitter/MiniTwitter/MiniTwitter.csproj MiniTwitter-ma/MiniTwitter/MiniTwitter.csproj
  354. --- MiniTwitter/MiniTwitter/MiniTwitter.csproj 2010-01-16 19:32:34.968750000 +0900
  355. +++ MiniTwitter-ma/MiniTwitter/MiniTwitter.csproj 2010-01-12 22:39:47.402087200 +0900
  356. @@ -17,10 +17,14 @@
  357. <UICulture>ja-JP</UICulture>
  358. <TargetFrameworkSubset>Full</TargetFrameworkSubset>
  359. <RunPostBuildEvent>OnOutputUpdated</RunPostBuildEvent>
  360. - <SccProjectName>SAK</SccProjectName>
  361. - <SccLocalPath>SAK</SccLocalPath>
  362. - <SccAuxPath>SAK</SccAuxPath>
  363. - <SccProvider>SAK</SccProvider>
  364. + <SccProjectName>
  365. + </SccProjectName>
  366. + <SccLocalPath>
  367. + </SccLocalPath>
  368. + <SccAuxPath>
  369. + </SccAuxPath>
  370. + <SccProvider>
  371. + </SccProvider>
  372. <PublishUrl>publish\</PublishUrl>
  373. <Install>true</Install>
  374. <InstallFrom>Disk</InstallFrom>
  375. @@ -58,11 +62,11 @@
  376. <ItemGroup>
  377. <Reference Include="Microsoft.WindowsAPICodePack, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
  378. <SpecificVersion>False</SpecificVersion>
  379. - <HintPath>.\Microsoft.WindowsAPICodePack.dll</HintPath>
  380. + <HintPath>..\..\..\..\libraries\WindowsAPICodePack\WindowsAPICodePack\Core\bin\Release\Microsoft.WindowsAPICodePack.dll</HintPath>
  381. </Reference>
  382. <Reference Include="Microsoft.WindowsAPICodePack.Shell, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
  383. <SpecificVersion>False</SpecificVersion>
  384. - <HintPath>.\Microsoft.WindowsAPICodePack.Shell.dll</HintPath>
  385. + <HintPath>..\..\..\..\libraries\WindowsAPICodePack\WindowsAPICodePack\Shell\bin\Release\Microsoft.WindowsAPICodePack.Shell.dll</HintPath>
  386. </Reference>
  387. <Reference Include="System" />
  388. <Reference Include="System.Core">
  389. @@ -103,6 +107,7 @@
  390. </Compile>
  391. </ItemGroup>
  392. <ItemGroup>
  393. + <Compile Include="Account.cs" />
  394. <Compile Include="Controls\HyperlinkButton.xaml.cs">
  395. <DependentUpon>HyperlinkButton.xaml</DependentUpon>
  396. </Compile>
  397. diff -urN -xobj -xbin -xmodified-files.diff MiniTwitter/MiniTwitter/Properties/Settings.cs MiniTwitter-ma/MiniTwitter/Properties/Settings.cs
  398. --- MiniTwitter/MiniTwitter/Properties/Settings.cs 2010-01-16 19:32:34.968750000 +0900
  399. +++ MiniTwitter-ma/MiniTwitter/Properties/Settings.cs 2010-01-22 22:33:57.000000000 +0900
  400. @@ -1,4 +1,5 @@
  401. -?using System;
  402. +?/* modified by ksksts. see modified-files.diff */
  403. +using System;
  404. using System.Collections.Generic;
  405. using System.Collections.ObjectModel;
  406. using System.ComponentModel;
  407. @@ -61,15 +62,10 @@
  408. /// </summary>
  409. public WindowState WindowState { get; set; }
  410. - /// <summary>
  411. - /// ?????
  412. - /// </summary>
  413. - public string Username { get; set; }
  414. -
  415. - /// <summary>
  416. - /// ?????
  417. + /// <summary>
  418. + /// ???????????????
  419. /// </summary>
  420. - public string Password { get; set; }
  421. + public int CurrentAccountIndex { get; set; }
  422. /// <summary>
  423. /// ??????????
  424. @@ -279,6 +275,30 @@
  425. [XmlIgnore]
  426. public ObservableCollection<KeywordBinding> KeywordBindings { get; private set; }
  427. + [XmlArray("Accounts")]
  428. + public Account[] AccountsInternal
  429. + {
  430. + get { return Accounts.Count != 0 ? Accounts.ToArray() : null; }
  431. + set { Accounts = new ObservableCollection<Account>(value ?? Enumerable.Empty<Account>()); }
  432. + }
  433. +
  434. + [XmlIgnore]
  435. + public ObservableCollection<Account> Accounts { get; private set; }
  436. +
  437. + [XmlIgnore]
  438. + public Account CurrentAccount
  439. + {
  440. + get
  441. + {
  442. + Account currentAccount = null;
  443. + if (CurrentAccountIndex >= 0 && CurrentAccountIndex < Accounts.Count)
  444. + {
  445. + currentAccount = Accounts[CurrentAccountIndex];
  446. + }
  447. + return currentAccount;
  448. + }
  449. + }
  450. +
  451. [XmlIgnore]
  452. public Regex FavoriteRegex { get; set; }
  453. @@ -321,6 +341,10 @@
  454. {
  455. KeywordBindings = new ObservableCollection<KeywordBinding>();
  456. }
  457. + if (Accounts == null)
  458. + {
  459. + Accounts = new ObservableCollection<Account>();
  460. + }
  461. InitializeKeywordRegex();
  462. }
  463. @@ -344,10 +368,6 @@
  464. throw new Exception();
  465. }
  466. }
  467. - if (!Default.Password.IsNullOrEmpty())
  468. - {
  469. - Default.Password = Encoding.ASCII.GetString(Convert.FromBase64String(Default.Password));
  470. - }
  471. if (Default.RefreshReplyTick > 20)
  472. {
  473. Default.RefreshReplyTick = 10;
  474. @@ -358,6 +378,14 @@
  475. Default.RefreshTick = Math.Min(Default.RefreshTick * 60, 120);
  476. Default.Version = 2;
  477. }
  478. + for (int i = 0; i < Default.Accounts.Count; i++)
  479. + {
  480. + var account = Default.Accounts[i];
  481. + if (!account.Password.IsNullOrEmpty())
  482. + {
  483. + account.Password = Encoding.ASCII.GetString(Convert.FromBase64String(account.Password));
  484. + }
  485. + }
  486. }
  487. catch
  488. {
  489. @@ -381,9 +409,13 @@
  490. {
  491. Directory.CreateDirectory(BaseDirectory);
  492. }
  493. - if (!Default.Password.IsNullOrEmpty())
  494. + for (int i = 0; i < Default.Accounts.Count; i++)
  495. {
  496. - Default.Password = Convert.ToBase64String(Encoding.ASCII.GetBytes(Default.Password));
  497. + var account = Default.Accounts[i];
  498. + if (!account.Password.IsNullOrEmpty())
  499. + {
  500. + account.Password = Convert.ToBase64String(Encoding.ASCII.GetBytes(account.Password));
  501. + }
  502. }
  503. using (var stream = File.Open(Path.Combine(BaseDirectory, @"Preference.xml"), FileMode.Create, FileAccess.Write, FileShare.None))
  504. {
  505. diff -urN -xobj -xbin -xmodified-files.diff MiniTwitter/MiniTwitter/Resources/Common.xaml MiniTwitter-ma/MiniTwitter/Resources/Common.xaml
  506. --- MiniTwitter/MiniTwitter/Resources/Common.xaml 2010-01-16 19:32:34.984375000 +0900
  507. +++ MiniTwitter-ma/MiniTwitter/Resources/Common.xaml 2010-01-22 22:32:27.734375000 +0900
  508. @@ -1,4 +1,5 @@
  509. -?<ResourceDictionary
  510. +?<!-- modified by ksksts. see modified-files.diff -->
  511. +<ResourceDictionary
  512. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  513. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  514. xmlns:System_ComponentModel="clr-namespace:System.ComponentModel;assembly=System"
  515. @@ -50,6 +51,14 @@
  516. </Style.Triggers>
  517. </Style>
  518. + <Style x:Key="TightMenuItemStyle" TargetType="{x:Type MenuItem}">
  519. + <Style.Triggers>
  520. + <DataTrigger Binding="{Binding Source={x:Static MiniTwitter_Properties:Settings.Default}, Path=TimelineStyle}" Value="Tight">
  521. + <Setter Property="IsChecked" Value="True"/>
  522. + </DataTrigger>
  523. + </Style.Triggers>
  524. + </Style>
  525. +
  526. <Style x:Key="CreatedAtCategoryMenuItemStyle" TargetType="{x:Type MenuItem}">
  527. <Style.Triggers>
  528. <DataTrigger Binding="{Binding Source={x:Static MiniTwitter_Properties:Settings.Default}, Path=SortCategory}" Value="CreatedAt">
  529. @@ -90,7 +99,7 @@
  530. </DataTrigger>
  531. </Style.Triggers>
  532. </Style>
  533. -
  534. +
  535. <Style x:Key="TimelineTextStyle" TargetType="{x:Type MiniTwitter_Controls:TextViewer}">
  536. <Style.Triggers>
  537. <DataTrigger Binding="{Binding Path=IsMention}" Value="True">
  538. @@ -102,6 +111,11 @@
  539. </Style.Triggers>
  540. </Style>
  541. + <Style x:Key="TightTimelineTextStyle" TargetType="{x:Type MiniTwitter_Controls:TextViewer}" BasedOn="{StaticResource TimelineTextStyle}">
  542. + <Setter Property="LineHeight" Value="12.0" />
  543. + <Setter Property="LineStackingStrategy" Value="BlockLineHeight" />
  544. + </Style>
  545. +
  546. <ContextMenu x:Key="TextBoxContextMenu">
  547. <MenuItem Header="????(_U)" Command="ApplicationCommands.Undo"/>
  548. <Separator/>
  549. @@ -154,6 +168,7 @@
  550. <MenuItem Header="??(_S)" Command="MiniTwitter_Input:Commands.TimelineStyle" CommandParameter="{x:Static MiniTwitter:TimelineStyle.Standard}" Style="{StaticResource StandardMenuItemStyle}"/>
  551. <MenuItem Header="????(_B)" Command="MiniTwitter_Input:Commands.TimelineStyle" CommandParameter="{x:Static MiniTwitter:TimelineStyle.Balloon}" Style="{StaticResource BalloonMenuItemStyle}"/>
  552. <MenuItem Header="??(_L)" Command="MiniTwitter_Input:Commands.TimelineStyle" CommandParameter="{x:Static MiniTwitter:TimelineStyle.List}" Style="{StaticResource ListMenuItemStyle}"/>
  553. + <MenuItem Header="???(_T)" Command="MiniTwitter_Input:Commands.TimelineStyle" CommandParameter="{x:Static MiniTwitter:TimelineStyle.Tight}" Style="{StaticResource TightMenuItemStyle}"/>
  554. <Separator/>
  555. <MenuItem Header="???????(_I)" IsCheckable="True" IsChecked="{Binding Source={x:Static MiniTwitter_Properties:Settings.Default}, Path=IsIconVisible}"/>
  556. </MenuItem>
  557. diff -urN -xobj -xbin -xmodified-files.diff MiniTwitter/MiniTwitter/Resources/Templates.xaml MiniTwitter-ma/MiniTwitter/Resources/Templates.xaml
  558. --- MiniTwitter/MiniTwitter/Resources/Templates.xaml 2010-01-16 19:32:34.984375000 +0900
  559. +++ MiniTwitter-ma/MiniTwitter/Resources/Templates.xaml 2010-01-22 22:32:27.515625000 +0900
  560. @@ -1,4 +1,5 @@
  561. -?<ResourceDictionary
  562. +?<!-- modified by ksksts. see modified-files.diff -->
  563. +<ResourceDictionary
  564. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  565. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  566. xmlns:MiniTwitter="clr-namespace:MiniTwitter"
  567. @@ -183,7 +184,7 @@
  568. </StackPanel>
  569. </Grid>
  570. </DataTemplate>
  571. -
  572. +
  573. <DataTemplate x:Key="BalloonStatusTemplate" DataType="{x:Type MiniTwitter_Net_Twitter:Status}">
  574. <Grid Margin="7,7,7,7" SnapsToDevicePixels="True">
  575. <Grid.RowDefinitions>
  576. @@ -436,4 +437,181 @@
  577. </Grid>
  578. </DataTemplate>
  579. + <DataTemplate x:Key="TightStatusTemplate" DataType="{x:Type MiniTwitter_Net_Twitter:Status}">
  580. + <Grid Margin="3,3,3,3" SnapsToDevicePixels="True">
  581. + <Grid.ColumnDefinitions>
  582. + <ColumnDefinition Width="Auto"/>
  583. + <ColumnDefinition Width="*"/>
  584. + </Grid.ColumnDefinitions>
  585. + <Image Width="36" Height="36" Margin="0,0,8,0" Grid.Column="0" VerticalAlignment="Top"
  586. + Source="{Binding Path=Sender.ImageUrl}"
  587. + Visibility="{Binding Source={x:Static MiniTwitter_Properties:Settings.Default}, Path=IsIconVisible, Converter={StaticResource BooleanToVisibilityConverter}}">
  588. + <Image.ToolTip>
  589. + <StackPanel MaxWidth="400">
  590. + <TextBlock FontWeight="Bold">
  591. + <TextBlock.Text>
  592. + <MultiBinding StringFormat="{}{0} / {1}">
  593. + <Binding Path="Sender.Name" />
  594. + <Binding Path="Sender.Location" />
  595. + </MultiBinding>
  596. + </TextBlock.Text>
  597. + </TextBlock>
  598. + <TextBlock Text="{Binding Path=Sender.Description}" TextWrapping="Wrap" />
  599. + </StackPanel>
  600. + </Image.ToolTip>
  601. + </Image>
  602. + <StackPanel Grid.Column="1">
  603. + <StackPanel Orientation="Horizontal">
  604. + <MiniTwitter_Controls:HyperlinkButton Text="{Binding Path=Sender.ScreenName}" ToolTip="{Binding Path=Sender.Name}"
  605. + FontWeight="Bold" FontSize="11" HorizontalAlignment="Left" VerticalAlignment="Center"
  606. + Command="MiniTwitter_Input:Commands.MoveToUserPage" CommandParameter="{Binding}"/>
  607. + <Image Width="12" Height="12" Margin="3,0,0,0" Visibility="{Binding Path=Sender.Protected, Converter={StaticResource BooleanToVisibilityConverter}}"
  608. + Style="{DynamicResource ProtectImageStyle}"/>
  609. + <Image Width="12" Height="12" Margin="3,0,0,0" Visibility="{Binding Path=IsNewest, Converter={StaticResource BooleanToVisibilityConverter}}"
  610. + Style="{DynamicResource NewImageStyle}"/>
  611. + </StackPanel>
  612. + <MiniTwitter_Controls:TextViewer Text="{Binding Path=Text}" Style="{StaticResource TightTimelineTextStyle}"/>
  613. + <WrapPanel>
  614. + <MiniTwitter_Controls:HyperlinkButton Text="{Binding Path=RelativeTime}" FontSize="10" Margin="0,0,3,0" VerticalAlignment="Center"
  615. + Command="MiniTwitter_Input:Commands.MoveToStatusPage" CommandParameter="{Binding}">
  616. + <MiniTwitter_Controls:HyperlinkButton.ToolTip>
  617. + <TextBlock Text="{Binding Path=CreatedAt, StringFormat=yyyy/MM/dd HH:mm:ss}"/>
  618. + </MiniTwitter_Controls:HyperlinkButton.ToolTip>
  619. + </MiniTwitter_Controls:HyperlinkButton>
  620. + <TextBlock Margin="0,0,3,0" FontSize="10" VerticalAlignment="Center" Text="{Binding Path=Source, StringFormat=from \{0\}}"/>
  621. + <Button Margin="0,0,3,0" Padding="0" Visibility="{Binding Path=IsAuthor, Converter={StaticResource BooleanToVisibilityConverter}}"
  622. + Command="MiniTwitter_Input:Commands.Delete" CommandParameter="{Binding}" Style="{DynamicResource ImageButtonStyle}">
  623. + <Image Width="14" Height="14" Style="{DynamicResource CrossImageStyle}"/>
  624. + </Button>
  625. + <Button Margin="0,0,3,0" Padding="0" Command="MiniTwitter_Input:Commands.Favorite"
  626. + CommandParameter="{Binding}" Style="{DynamicResource ImageButtonStyle}">
  627. + <Image Width="14" Height="14" Style="{DynamicResource FavoriteImageStyle}"/>
  628. + </Button>
  629. + <Button Margin="0,0,3,0" Padding="0" Command="MiniTwitter_Input:Commands.Reply" ToolTip="Reply"
  630. + CommandParameter="{Binding}" Style="{DynamicResource ImageButtonStyle}">
  631. + <Image Width="14" Height="14" Style="{DynamicResource ArrowReplyImageStyle}"/>
  632. + </Button>
  633. + <Button Margin="0,0,3,0" Padding="0" Command="MiniTwitter_Input:Commands.ReTweet" ToolTip="?????? ReTweet"
  634. + CommandParameter="{Binding}" Style="{DynamicResource ImageButtonStyle}">
  635. + <Image Width="14" Height="14" Style="{DynamicResource ArrowReTweetImageStyle}"/>
  636. + </Button>
  637. + </WrapPanel>
  638. + </StackPanel>
  639. + </Grid>
  640. + </DataTemplate>
  641. +
  642. + <DataTemplate x:Key="TightReTweetTemplate" DataType="{x:Type MiniTwitter_Net_Twitter:Status}">
  643. + <Grid Margin="3,3,3,3" SnapsToDevicePixels="True">
  644. + <Grid.ColumnDefinitions>
  645. + <ColumnDefinition Width="Auto"/>
  646. + <ColumnDefinition Width="*"/>
  647. + </Grid.ColumnDefinitions>
  648. + <Grid Width="36" Height="36" Margin="0,0,8,0" Grid.Column="0" VerticalAlignment="Top"
  649. + Visibility="{Binding Source={x:Static MiniTwitter_Properties:Settings.Default}, Path=IsIconVisible, Converter={StaticResource BooleanToVisibilityConverter}}">
  650. + <Image Width="24" Height="24" VerticalAlignment="Top" HorizontalAlignment="Left" Source="{Binding Path=ReTweetedStatus.Sender.ImageUrl}">
  651. + <Image.ToolTip>
  652. + <StackPanel MaxWidth="400">
  653. + <TextBlock FontWeight="Bold">
  654. + <TextBlock.Text>
  655. + <MultiBinding StringFormat="{}{0} / {1}">
  656. + <Binding Path="ReTweetedStatus.Sender.Name" />
  657. + <Binding Path="ReTweetedStatus.Sender.Location" />
  658. + </MultiBinding>
  659. + </TextBlock.Text>
  660. + </TextBlock>
  661. + <TextBlock Text="{Binding Path=ReTweetedStatus.Sender.Description}" TextWrapping="Wrap" />
  662. + </StackPanel>
  663. + </Image.ToolTip>
  664. + </Image>
  665. + <Image Width="12" Height="12" VerticalAlignment="Bottom" HorizontalAlignment="Right" Source="{Binding Path=Sender.ImageUrl}">
  666. + <Image.ToolTip>
  667. + <StackPanel MaxWidth="400">
  668. + <TextBlock FontWeight="Bold">
  669. + <TextBlock.Text>
  670. + <MultiBinding StringFormat="{}{0} / {1}">
  671. + <Binding Path="Sender.Name" />
  672. + <Binding Path="Sender.Location" />
  673. + </MultiBinding>
  674. + </TextBlock.Text>
  675. + </TextBlock>
  676. + <TextBlock Text="{Binding Path=Sender.Description}" TextWrapping="Wrap" />
  677. + </StackPanel>
  678. + </Image.ToolTip>
  679. + </Image>
  680. + </Grid>
  681. + <StackPanel Grid.Column="1">
  682. + <StackPanel Orientation="Horizontal">
  683. + <MiniTwitter_Controls:HyperlinkButton Text="{Binding Path=Sender.ScreenName}" ToolTip="{Binding Path=Sender.Name}"
  684. + FontWeight="Bold" FontSize="11" HorizontalAlignment="Left" VerticalAlignment="Center"
  685. + Command="MiniTwitter_Input:Commands.MoveToUserPage" CommandParameter="{Binding}"/>
  686. + <Image Width="12" Height="12" Margin="3,0,0,0" Visibility="{Binding Path=Sender.Protected, Converter={StaticResource BooleanToVisibilityConverter}}"
  687. + Style="{DynamicResource ProtectImageStyle}"/>
  688. + <Image Width="12" Height="12" Margin="3,0,0,0" Visibility="{Binding Path=IsNewest, Converter={StaticResource BooleanToVisibilityConverter}}"
  689. + Style="{DynamicResource NewImageStyle}"/>
  690. + </StackPanel>
  691. + <MiniTwitter_Controls:TextViewer Text="{Binding Path=Text}" Style="{StaticResource TightTimelineTextStyle}"/>
  692. + <WrapPanel>
  693. + <MiniTwitter_Controls:HyperlinkButton Text="{Binding Path=RelativeTime}" FontSize="10" Margin="0,0,3,0" VerticalAlignment="Center"
  694. + Command="MiniTwitter_Input:Commands.MoveToStatusPage" CommandParameter="{Binding}">
  695. + <MiniTwitter_Controls:HyperlinkButton.ToolTip>
  696. + <TextBlock Text="{Binding Path=CreatedAt, StringFormat=yyyy/MM/dd HH:mm:ss}"/>
  697. + </MiniTwitter_Controls:HyperlinkButton.ToolTip>
  698. + </MiniTwitter_Controls:HyperlinkButton>
  699. + <TextBlock Margin="0,0,3,0" FontSize="10" VerticalAlignment="Center" Text="{Binding Path=Source, StringFormat=from \{0\}}"/>
  700. + <Button Margin="0,0,3,0" Padding="0" Visibility="{Binding Path=IsAuthor, Converter={StaticResource BooleanToVisibilityConverter}}"
  701. + Command="MiniTwitter_Input:Commands.Delete" CommandParameter="{Binding}" Style="{DynamicResource ImageButtonStyle}">
  702. + <Image Width="14" Height="14" Style="{DynamicResource CrossImageStyle}"/>
  703. + </Button>
  704. + <Button Margin="0,0,3,0" Padding="0" Command="MiniTwitter_Input:Commands.Favorite"
  705. + CommandParameter="{Binding}" Style="{DynamicResource ImageButtonStyle}">
  706. + <Image Width="14" Height="14" Style="{DynamicResource FavoriteImageStyle}"/>
  707. + </Button>
  708. + <Button Margin="0,0,3,0" Padding="0" Command="MiniTwitter_Input:Commands.Reply" ToolTip="Reply"
  709. + CommandParameter="{Binding}" Style="{DynamicResource ImageButtonStyle}">
  710. + <Image Width="14" Height="14" Style="{DynamicResource ArrowReplyImageStyle}"/>
  711. + </Button>
  712. + <Button Margin="0,0,3,0" Padding="0" Command="MiniTwitter_Input:Commands.ReTweet" ToolTip="?????? ReTweet"
  713. + CommandParameter="{Binding}" Style="{DynamicResource ImageButtonStyle}">
  714. + <Image Width="14" Height="14" Style="{DynamicResource ArrowReTweetImageStyle}"/>
  715. + </Button>
  716. + </WrapPanel>
  717. + </StackPanel>
  718. + </Grid>
  719. + </DataTemplate>
  720. +
  721. + <DataTemplate x:Key="TightMessageTemplate" DataType="{x:Type MiniTwitter_Net_Twitter:DirectMessage}">
  722. + <Grid Margin="3,3,3,3" SnapsToDevicePixels="True">
  723. + <Grid.ColumnDefinitions>
  724. + <ColumnDefinition Width="Auto"/>
  725. + <ColumnDefinition Width="*"/>
  726. + </Grid.ColumnDefinitions>
  727. + <Grid Width="36" Height="36" Margin="0,0,8,0" Grid.Column="0" VerticalAlignment="Top"
  728. + Visibility="{Binding Source={x:Static MiniTwitter_Properties:Settings.Default}, Path=IsIconVisible, Converter={StaticResource BooleanToVisibilityConverter}}">
  729. + <Image Width="24" Height="24" VerticalAlignment="Top" HorizontalAlignment="Left" Source="{Binding Path=Sender.ImageUrl}" ToolTip="{Binding Path=Sender.Name}"/>
  730. + <Image Width="12" Height="12" VerticalAlignment="Bottom" HorizontalAlignment="Right" Source="{Binding Path=Recipient.ImageUrl}" ToolTip="{Binding Path=Recipient.Name}"/>
  731. + </Grid>
  732. + <StackPanel Grid.Column="1">
  733. + <StackPanel Orientation="Horizontal">
  734. + <MiniTwitter_Controls:HyperlinkButton Text="{Binding Path=Sender.ScreenName}" ToolTip="{Binding Path=Sender.Name}" FontWeight="Bold" FontSize="11" HorizontalAlignment="Left" VerticalAlignment="Center" Command="MiniTwitter_Input:Commands.MoveToUserPage" CommandParameter="{Binding}"/>
  735. + <Image Width="12" Height="12" Margin="3,0,0,0" Visibility="{Binding Path=Sender.Protected, Converter={StaticResource BooleanToVisibilityConverter}}" Style="{DynamicResource ProtectImageStyle}"/>
  736. + <Image Width="12" Height="12" Margin="3,0,0,0" Visibility="{Binding Path=IsNewest, Converter={StaticResource BooleanToVisibilityConverter}}" Style="{DynamicResource NewImageStyle}"/>
  737. + </StackPanel>
  738. + <MiniTwitter_Controls:TextViewer Text="{Binding Path=Text}" Style="{StaticResource TightTimelineTextStyle}"/>
  739. + <WrapPanel>
  740. + <TextBlock Text="{Binding Path=RelativeTime}" FontSize="10" Margin="0,0,3,0" VerticalAlignment="Center">
  741. + <TextBlock.ToolTip>
  742. + <TextBlock Text="{Binding Path=CreatedAt, StringFormat=yyyy/MM/dd HH:mm:ss}"/>
  743. + </TextBlock.ToolTip>
  744. + </TextBlock>
  745. + <Button Margin="0,0,3,0" Padding="0" Command="MiniTwitter_Input:Commands.Delete" CommandParameter="{Binding}" Style="{DynamicResource ImageButtonStyle}">
  746. + <Image Width="14" Height="14" Style="{DynamicResource CrossImageStyle}"/>
  747. + </Button>
  748. + <Button Margin="0,0,3,0" Padding="0" Command="MiniTwitter_Input:Commands.ReplyMessage" CommandParameter="{Binding}" Style="{DynamicResource ImageButtonStyle}">
  749. + <Image Width="14" Height="14" Style="{DynamicResource ArrowReplyImageStyle}"/>
  750. + </Button>
  751. + </WrapPanel>
  752. + </StackPanel>
  753. + </Grid>
  754. + </DataTemplate>
  755. +
  756. </ResourceDictionary>
  757. \ No newline at end of file
  758. diff -urN -xobj -xbin -xmodified-files.diff MiniTwitter/MiniTwitter/SettingDialog.xaml MiniTwitter-ma/MiniTwitter/SettingDialog.xaml
  759. --- MiniTwitter/MiniTwitter/SettingDialog.xaml 2010-01-16 19:32:35.000000000 +0900
  760. +++ MiniTwitter-ma/MiniTwitter/SettingDialog.xaml 2010-01-22 22:32:26.015625000 +0900
  761. @@ -1,4 +1,5 @@
  762. -?<Window
  763. +?<!-- modified by ksksts. see modified-files.diff -->
  764. +<Window
  765. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  766. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  767. xmlns:MiniTwitter="clr-namespace:MiniTwitter"
  768. @@ -103,11 +104,34 @@
  769. <Button Content="?????" Width="90" IsCancel="True" Click="CancelButton_Click"/>
  770. </StackPanel>
  771. <Canvas Grid.Column="2" Grid.Row="0" Visibility="{Binding Path=IsSelected, ElementName=AccountListBoxItem, Converter={StaticResource BooleanToVisibilityConverter}}">
  772. - <TextBlock Text="?????" TextWrapping="Wrap" Canvas.Left="14" Canvas.Top="17"/>
  773. - <TextBlock Text="?????" TextWrapping="Wrap" Canvas.Left="14" Canvas.Top="45"/>
  774. - <TextBox Width="200" InputMethod.IsInputMethodEnabled="False" Canvas.Left="110" Canvas.Top="14" Text="{Binding Path=Username}"/>
  775. - <PasswordBox x:Name="PasswordBox" Width="200" Canvas.Left="110" Canvas.Top="42"/>
  776. - </Canvas>
  777. + <ListView x:Name="AccountListView" Width="347" Height="162" IsSynchronizedWithCurrentItem="True" SelectedIndex="0"
  778. + VerticalContentAlignment="Center" Canvas.Left="14" Canvas.Top="14" SelectionChanged="AccountListView_SelectionChanged">
  779. + <ListView.View>
  780. + <GridView AllowsColumnReorder="False">
  781. + <GridViewColumn Header="?????" Width="120">
  782. + <GridViewColumn.CellTemplate>
  783. + <DataTemplate>
  784. + <TextBlock Text="{Binding Path=Username}" Margin="4,0,0,0" VerticalAlignment="Center"/>
  785. + </DataTemplate>
  786. + </GridViewColumn.CellTemplate>
  787. + </GridViewColumn>
  788. + <GridViewColumn Header="?????" Width="180">
  789. + <GridViewColumn.CellTemplate>
  790. + <DataTemplate>
  791. + <TextBlock Text="{Binding Path=HiddenPassword}" Margin="4,0,0,0" VerticalAlignment="Center"/>
  792. + </DataTemplate>
  793. + </GridViewColumn.CellTemplate>
  794. + </GridViewColumn>
  795. + </GridView>
  796. + </ListView.View>
  797. + </ListView>
  798. + <TextBlock Text="?????" TextWrapping="Wrap" Canvas.Left="14" Canvas.Top="185"/>
  799. + <TextBlock Text="?????" TextWrapping="Wrap" Canvas.Left="14" Canvas.Top="213"/>
  800. + <TextBox x:Name="EditingUsernameBox" Width="251" InputMethod.IsInputMethodEnabled="False" Canvas.Left="110" Canvas.Top="182"/>
  801. + <PasswordBox x:Name="EditingPasswordBox" Width="251" InputMethod.IsInputMethodEnabled="False" Canvas.Left="110" Canvas.Top="210"/>
  802. + <Button x:Name="AddAccountButton" Content="??" Width="75" Canvas.Left="128" Canvas.Top="238" Click="AddAccountButton_Click" />
  803. + <Button x:Name="UpdateAccountButton" Content="??" Width="75" Canvas.Left="207" Canvas.Top="238" Click="UpdateAccountButton_Click" />
  804. + <Button x:Name="DeleteAccountButton" Content="??" Width="75" Canvas.Left="286" Canvas.Top="238" Click="DeleteAccountButton_Click" /> </Canvas>
  805. <Canvas Grid.Column="2" Grid.Row="0" Visibility="{Binding Path=IsSelected, ElementName=NetworkListBoxItem, Converter={StaticResource BooleanToVisibilityConverter}}">
  806. <CheckBox x:Name="UseProxyCheckBox" Content="????????????" Canvas.Left="14" Canvas.Top="14" IsChecked="{Binding Path=UseProxy}"/>
  807. <CheckBox x:Name="UseIEProxyCheckBox" Content="Internet Explorer ????????" Canvas.Left="14" Canvas.Top="36" IsChecked="{Binding Path=UseIEProxy}" IsEnabled="{Binding Path=IsChecked, ElementName=UseProxyCheckBox}"/>
  808. diff -urN -xobj -xbin -xmodified-files.diff MiniTwitter/MiniTwitter/SettingDialog.xaml.cs MiniTwitter-ma/MiniTwitter/SettingDialog.xaml.cs
  809. --- MiniTwitter/MiniTwitter/SettingDialog.xaml.cs 2010-01-16 19:32:35.015625000 +0900
  810. +++ MiniTwitter-ma/MiniTwitter/SettingDialog.xaml.cs 2010-01-22 22:33:56.953125000 +0900
  811. @@ -1,4 +1,5 @@
  812. -?using System;
  813. +?/* modified by ksksts. see modified-files.diff */
  814. +using System;
  815. using System.Collections.Generic;
  816. using System.Collections.ObjectModel;
  817. using System.Linq;
  818. @@ -35,6 +36,7 @@
  819. private ObservableCollection<MiniTwitter.Input.KeyBinding> keyBindings;
  820. private ObservableCollection<SoundBinding> soundBindings;
  821. private ObservableCollection<KeywordBinding> keywordBindings;
  822. + private ObservableCollection<Account> accounts;
  823. private static readonly PopupLocation[] locations = new[]
  824. {
  825. @@ -61,8 +63,7 @@
  826. {
  827. // ??????????????????
  828. Settings settings = Settings.Default;
  829. - // ???????????????
  830. - PasswordBox.Password = settings.Password;
  831. + // ?????????
  832. ProxyPasswordBox.Password = settings.ProxyPassword;
  833. // ??????????????
  834. var array = Enum.GetValues(typeof(KeyAction));
  835. @@ -85,6 +86,15 @@
  836. keywordBindings = new ObservableCollection<KeywordBinding>(settings.KeywordBindings ?? Enumerable.Empty<KeywordBinding>());
  837. keywordBindings.BeginEdit();
  838. KeywordListView.ItemsSource = keywordBindings;
  839. + // ???????
  840. + accounts = new ObservableCollection<Account>(settings.Accounts ?? Enumerable.Empty<Account>());
  841. + accounts.BeginEdit();
  842. + AccountListView.ItemsSource = accounts;
  843. + // ???????????????
  844. + if (settings.CurrentAccountIndex < AccountListView.Items.Count)
  845. + {
  846. + AccountListView.SelectedIndex = settings.CurrentAccountIndex;
  847. + }
  848. // ??????????
  849. TweetFooterComboBox.ItemsSource = settings.TweetFooterHistory;
  850. BindingGroup.BeginEdit();
  851. @@ -97,7 +107,6 @@
  852. // ?????????????????
  853. Settings settings = Settings.Default;
  854. // ????????
  855. - settings.Password = PasswordBox.Password;
  856. settings.ProxyPassword = ProxyPasswordBox.Password;
  857. // ???????????????
  858. if (KeyMappingComboBox.SelectedValue != null)
  859. @@ -121,11 +130,19 @@
  860. {
  861. settings.KeywordBindings.Add(item);
  862. }
  863. + // ??????????
  864. + settings.Accounts.Clear();
  865. + foreach (var item in accounts)
  866. + {
  867. + settings.Accounts.Add(item);
  868. + }
  869. // ??????????????
  870. if (!settings.TweetFooter.IsNullOrEmpty() && !settings.TweetFooterHistory.Contains(settings.TweetFooter))
  871. {
  872. settings.TweetFooterHistory.Add(settings.TweetFooter);
  873. }
  874. + // ??????????????????
  875. + settings.CurrentAccountIndex = AccountListView.SelectedIndex;
  876. DialogResult = true;
  877. }
  878. @@ -135,9 +152,58 @@
  879. keyBindings.CancelEdit();
  880. soundBindings.CancelEdit();
  881. keywordBindings.CancelEdit();
  882. + accounts.CancelEdit();
  883. DialogResult = false;
  884. }
  885. + private void AccountListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
  886. + {
  887. + var item = (Account)AccountListView.SelectedItem;
  888. + EditingUsernameBox.Text = item != null ? item.Username : "";
  889. + EditingPasswordBox.Password = item != null ? item.Password : "";
  890. + UpdateAccountButton.IsEnabled = item != null;
  891. + DeleteAccountButton.IsEnabled = item != null;
  892. + }
  893. +
  894. + private void AddAccountButton_Click(object sender, RoutedEventArgs e)
  895. + {
  896. + var username = EditingUsernameBox.Text;
  897. + var password = EditingPasswordBox.Password;
  898. + if (username.IsNullOrEmpty() || password.IsNullOrEmpty())
  899. + {
  900. + return;
  901. + }
  902. + var account = new Account { Username = username, Password = password };
  903. + accounts.Add(account);
  904. + }
  905. +
  906. + private void UpdateAccountButton_Click(object sender, RoutedEventArgs e)
  907. +

Large files files are truncated, but you can click here to view the full file