Skip to content

Commit

Permalink
Merge pull request #3 from AlaricGilbert/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
AlaricGilbert authored Jan 31, 2019
2 parents 68d7605 + 84e26eb commit e9092ed
Show file tree
Hide file tree
Showing 10 changed files with 327 additions and 80 deletions.
18 changes: 18 additions & 0 deletions BiliCommenter/App.config
Original file line number Diff line number Diff line change
@@ -1,6 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="BiliCommenter.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<userSettings>
<BiliCommenter.Properties.Settings>
<setting name="IsSaveAccessKey" serializeAs="String">
<value>False</value>
</setting>
<setting name="IsInheritTasks" serializeAs="String">
<value>True</value>
</setting>
<setting name="AccessKey" serializeAs="String">
<value />
</setting>
</BiliCommenter.Properties.Settings>
</userSettings>
</configuration>
19 changes: 14 additions & 5 deletions BiliCommenter/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,13 @@
<mahCtrls:MetroWindow.RightWindowCommands>
<mahCtrls:WindowCommands ShowLastSeparator="False">
<Button
FontFamily="Segoe UI Symbol"
Content="&#xe13d;"
Click="ChangeLogStatusFlyouts"/>
<Button
FontFamily="Segoe UI Symbol"
Content="&#xe115;"
Click="ChangeFlyouts"/>
Click="ChangeSettingFlyout"/>
</mahCtrls:WindowCommands>
</mahCtrls:MetroWindow.RightWindowCommands>

Expand Down Expand Up @@ -103,7 +107,7 @@
</Grid.RowDefinitions>
<Label Content="Task List:" Grid.Row="0"/>
<Separator Grid.Row="1"/>
<ListBox Name="TaskListBox" Grid.Column="5" Grid.Row="2" SelectedIndex="0"/>
<ListBox Name="TaskListBox" Grid.Column="5" Grid.Row="2" SelectedIndex="0" SelectionChanged="TasksListBox_SelectionChanged"/>
</Grid>
</Grid>

Expand Down Expand Up @@ -134,7 +138,7 @@
<MenuItem Command="ApplicationCommands.Paste" Style="{DynamicResource MetroMenuItem}" />
</ContextMenu>
</TextBox.ContextMenu>

</TextBox>
<PasswordBox
Name="PasswordBox"
Expand All @@ -160,9 +164,7 @@
Click="ChangeLoginFlyout"/>
</StackPanel>
<Label Margin="10 10 10 10" Name="ResultLabel" Foreground="Red" ></Label>

</StackPanel>

</mahCtrls:Flyout>
<mahCtrls:Flyout Name="LoggedFlyout" Header="Account" Position="Right" Width="200" Theme="Accent">
<StackPanel Orientation="Vertical">
Expand All @@ -174,6 +176,13 @@
<Button Content="Logout" Margin="20 10 20 10" Style="{DynamicResource AccentedSquareButtonStyle}" Click="LogoutButton_Click"/>
</StackPanel>
</mahCtrls:Flyout>
<mahCtrls:Flyout Name="SettingsFlyout" Header="Settings" Position="Right" Width="200" Theme="Accent">
<StackPanel Orientation="Vertical">
<mahCtrls:ToggleSwitch Margin="30 10 10 10" Name="IsSaveAccessKey" OnLabel="保存登陆状态" OffLabel="不保存登陆状态" Style="{StaticResource MahApps.Metro.Styles.ToggleSwitch.Win10}"/>
<mahCtrls:ToggleSwitch Margin="30 10 10 10" Name="IsInheritTasks" OnLabel="继承任务状态" OffLabel="不继承任务状态" Style="{StaticResource MahApps.Metro.Styles.ToggleSwitch.Win10}"/>
<Button Margin="10 10 10 10" Content="SAVE" Click="UpdateSettings"/>
</StackPanel>
</mahCtrls:Flyout>
<mahCtrls:Flyout Name="EmojiFlyout"
Position="Bottom"
Height="400"
Expand Down
129 changes: 102 additions & 27 deletions BiliCommenter/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
using BiliCommenter.API;
using BiliCommenter.Core;
using BiliCommenter.Models;
using BiliCommenter.Properties;
using MahApps.Metro.Controls;
using MahApps.Metro.Controls.Dialogs;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
Expand All @@ -23,8 +25,8 @@ public partial class MainWindow : MetroWindow
{
public List<CommentTask> TaskList = new List<CommentTask>();
public Dictionary<string, CommentTask> TaskPair = new Dictionary<string, CommentTask>();
private UserInfoModel.UserInfo UserInfo { get; set; }
private List<BangumiInfo> Bangumis { get; set; }
private bool ListBoxChangedByAnother = false;
public BitmapImage CreateBI(string url)
{
BitmapImage bi = new BitmapImage();
Expand All @@ -36,7 +38,7 @@ public BitmapImage CreateBI(string url)
public MainWindow()
{
InitializeComponent();
InitializeControls();
Initialize();
}
public async Task FreshUserInfo()
{
Expand All @@ -45,14 +47,16 @@ public async Task FreshUserInfo()
Avator.Source = CreateBI(Account.UserInfo.face);
UsernameLabel.Content = Account.UserInfo.name;
}
public void InitializeControls()
public void Initialize()
{
//Inherit tasks.
if (Settings.Default.IsInheritTasks)
ReadTasks();

#region Read log-in informations
Thread freshThread = new Thread(async () =>
{
if (!File.Exists("bili.ack"))
File.Create("bili.ack").Close();
string access_key = File.ReadAllText("bili.ack");
string access_key = Settings.Default.AccessKey;
if (access_key != "")
{
Account.AccessKey = access_key;
Expand All @@ -62,7 +66,11 @@ public void InitializeControls()
else
this.Invoke(() => LoginFlyout.IsOpen = true);
});
freshThread.Start();
if (Settings.Default.IsSaveAccessKey)
freshThread.Start();
#endregion

#region Get bangumi informations.
Thread bangumiThread = new Thread(async () =>
{
Bangumis = await Bangumi.GetBangumiInfosAsync();
Expand All @@ -74,6 +82,9 @@ public void InitializeControls()
this.Invoke(() => BangumiListBox.ItemsSource = titles);
});
bangumiThread.Start();
#endregion

#region Get bilibili emojis.
Thread emojiThread = new Thread(async () =>
{

Expand Down Expand Up @@ -125,23 +136,26 @@ public void InitializeControls()
});
}
});
emojiThread.Start();
}
private void ChangeLoginFlyout(object sender, RoutedEventArgs e)
{
LoginFlyout.IsOpen = !LoginFlyout.IsOpen;
#if !DEBUG
emojiThread.Start(); // do not load the emojis in the debug mode.
#endif
#endregion
}
private void ChangeLoggedFlyout(object sender, RoutedEventArgs e)
{
LoggedFlyout.IsOpen = !LoggedFlyout.IsOpen;
}
private void ChangeFlyouts(object sender, RoutedEventArgs e)
private void ChangeLoginFlyout(object sender, RoutedEventArgs e) => LoginFlyout.IsOpen = !LoginFlyout.IsOpen;
private void ChangeLoggedFlyout(object sender, RoutedEventArgs e) => LoggedFlyout.IsOpen = !LoggedFlyout.IsOpen;
private void ChangeLogStatusFlyouts(object sender, RoutedEventArgs e)
{
if (Account.OnlineStatus)
ChangeLoggedFlyout(sender,e);
else
ChangeLoginFlyout(sender,e);
}
private void ChangeSettingFlyout(object sender, RoutedEventArgs e)
{
IsSaveAccessKey.IsChecked = Settings.Default.IsSaveAccessKey;
IsInheritTasks.IsChecked = Settings.Default.IsInheritTasks;
SettingsFlyout.IsOpen = !SettingsFlyout.IsOpen;
}
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
LeftAvatar.Source = CreateBI(@"pack://application:,,,/avatar/ic_22.png");
Expand All @@ -165,7 +179,8 @@ private void LoginButton_Click(object sender, RoutedEventArgs e)
Thread loginThread = new Thread(async () =>
{
await Auth.LoginV3(username, password);
File.WriteAllText("bili.ack", Account.AccessKey);
if (Settings.Default.IsSaveAccessKey)
Settings.Default.AccessKey = Account.AccessKey;
await this.Invoke(async () => {
await FreshUserInfo();
LoginFlyout.IsOpen = false;
Expand All @@ -184,12 +199,12 @@ private void LogoutButton_Click(object sender, RoutedEventArgs e)
Account.CookieString = "";
Account.UserInfo = null;
Account.OnlineStatus = false;
UserInfo = null;
ChangeLoggedFlyout(sender, e);
ChangeLoginFlyout(sender, e);
}
private void BangumiListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{

var curr = Bangumis[BangumiListBox.SelectedIndex];
BitmapImage bi = new BitmapImage();
bi.BeginInit();
Expand All @@ -202,11 +217,32 @@ private void BangumiListBox_SelectionChanged(object sender, SelectionChangedEven
BangumiTime.Content = $"更新时间:{curr.UpdateTime.ToLongTimeString()}";
if (TaskPair.ContainsKey(curr.Title))
{
TaskListBox.SelectedItem = curr.Title;
MessageTextBox.Text = TaskPair[curr.Title].Message;
}
else
MessageTextBox.Text = "";
if (ListBoxChangedByAnother)
ListBoxChangedByAnother = false;
else
{
if (TaskPair.ContainsKey(curr.Title))
{
ListBoxChangedByAnother = true;
TaskListBox.SelectedIndex = TaskPair[curr.Title].TaskId;
}
}

}
private void TasksListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var currTask = TaskList[TaskListBox.SelectedIndex];
MessageTextBox.Text = currTask.Message;
if (ListBoxChangedByAnother)
ListBoxChangedByAnother = false;
else
{
ListBoxChangedByAnother = true;
BangumiListBox.SelectedIndex = currTask.BangumiListId;
}
}
private void MessageTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
Expand Down Expand Up @@ -239,6 +275,7 @@ private void EmojiButton_Click(object sender, RoutedEventArgs e)
}
private void AddOrUpdate(object sender, RoutedEventArgs e)
{
ReadTasks();
if(TaskPair.ContainsKey(BangumiListBox.SelectedItem as string))
{
TaskPair[BangumiListBox.SelectedItem as string].Message = MessageTextBox.Text;
Expand All @@ -250,19 +287,27 @@ private void AddOrUpdate(object sender, RoutedEventArgs e)
BangumiListBox.SelectedIndex,
TaskList.Count,
Bangumis[BangumiListBox.SelectedIndex],
MessageTextBox.Text, new Action<CommentTask>((tsk) =>
{
TaskList.Remove(tsk);
TaskPair.Remove(tsk.BangumiInfo.Title);
this.Invoke(() => TaskListBox.Items.Remove(tsk.BangumiInfo.Title));
}));
MessageTextBox.Text,
new CommentTask.CommentTaskFinishedCallback((taskid) => {
this.Invoke(() =>
{
var title = TaskList[taskid].BangumiInfo.Title;
TaskList.RemoveAt(taskid);
TaskPair.Remove(title);
TaskListBox.Items.Remove(title);
});
})
);
TaskList.Add(task);
TaskPair.Add(BangumiListBox.SelectedItem as string, task);
TaskListBox.Items.Add(task.BangumiInfo.Title);
task.Start();
}
SaveCurrentTasks();
}
private void Remove(object sender, RoutedEventArgs e)
{
ReadTasks();
if (TaskListBox.Items.Count == 0)
return;
var title = TaskListBox.SelectedItem as string;
Expand All @@ -271,6 +316,36 @@ private void Remove(object sender, RoutedEventArgs e)
TaskList.Remove(tsk);
TaskPair.Remove(tsk.BangumiInfo.Title);
TaskListBox.Items.Remove(tsk.BangumiInfo.Title);
SaveCurrentTasks();
}
private void SaveCurrentTasks()
{
var json = JsonConvert.SerializeObject(TaskList);
File.WriteAllText("tasks.json", json);
}
private void ReadTasks()
{
foreach (var task in TaskList)
task.Dispose();
TaskPair.Clear();
TaskListBox.Items.Clear();
if (File.Exists("tasks.json"))
TaskList = JsonConvert.DeserializeObject<List<CommentTask>>(File.ReadAllText("tasks.json"));
if (TaskList == null)
TaskList = new List<CommentTask>();
foreach (var task in TaskList)
{
task.TaskId = TaskListBox.Items.Count;
TaskListBox.Items.Add(task.BangumiInfo.Title);
TaskPair.Add(task.BangumiInfo.Title, task);
task.Start();
}
}
private void UpdateSettings(object sender, RoutedEventArgs e)
{
Settings.Default.IsSaveAccessKey = IsSaveAccessKey.IsChecked == true;
Settings.Default.IsInheritTasks = IsInheritTasks.IsChecked == true;
Settings.Default.Save();
}
}
}
4 changes: 2 additions & 2 deletions BiliCommenter/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,5 @@
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.1.0.2")]
[assembly: AssemblyFileVersion("0.1.0.2")]
[assembly: AssemblyVersion("0.2.0.0")]
[assembly: AssemblyFileVersion("0.2.0.0")]
Loading

0 comments on commit e9092ed

Please sign in to comment.