Skip to content

Commit

Permalink
Merge pull request #331 from geirkairam/feature-307-hiddentasks
Browse files Browse the repository at this point in the history
Issue #307
  • Loading branch information
benrhughes committed Feb 18, 2017
2 parents 4602a8b + 49bc214 commit 5c9b207
Show file tree
Hide file tree
Showing 6 changed files with 124 additions and 62 deletions.
5 changes: 5 additions & 0 deletions Client/Controls/MainWindow.xaml
Expand Up @@ -65,6 +65,7 @@
<RoutedUICommand x:Key="ApplyFilterPreset7" Text="Apply Preset Filter 7" />
<RoutedUICommand x:Key="ApplyFilterPreset8" Text="Apply Preset Filter 8" />
<RoutedUICommand x:Key="ApplyFilterPreset9" Text="Apply Preset Filter 9" />
<RoutedUICommand x:Key="ApplyShowHiddenTasks" Text="Show hidden tasks" />
<!-- Help menu commands -->
<RoutedUICommand x:Key="HelpAbout" Text="About" />
<RoutedUICommand x:Key="ViewLog" Text="View Log" />
Expand Down Expand Up @@ -142,6 +143,7 @@
<CommandBinding Command="{StaticResource SortByFileOrder}" CanExecute="WhenTasksLoadedCanExecute" Executed="SortByFileOrderExecuted"/>
<!-- Filter menu commands -->
<CommandBinding Command="{StaticResource DefineFilters}" CanExecute="AlwaysCanExecute" Executed="DefineFiltersExecuted"/>
<CommandBinding Command="{StaticResource ApplyShowHiddenTasks}" CanExecute="AlwaysCanExecute" Executed="ApplyShowHiddenTasksExecuted"/>
<CommandBinding Command="{StaticResource RemoveFilter}" CanExecute="AlwaysCanExecute" Executed="RemoveFilterExecuted"/>
<CommandBinding Command="{StaticResource ApplyFilterPreset1}" CanExecute="AlwaysCanExecute" Executed="ApplyFilterPreset1Executed"/>
<CommandBinding Command="{StaticResource ApplyFilterPreset2}" CanExecute="AlwaysCanExecute" Executed="ApplyFilterPreset2Executed"/>
Expand Down Expand Up @@ -247,6 +249,8 @@
<MenuItem Header="Pro_ject" IsCheckable="True" Command="{StaticResource SortByProject}" InputGestureText="Ctrl+7" Tag="Project"/>
</MenuItem>
<MenuItem Header="Filter" Name="filterMenu">
<MenuItem Header="Show hidden tasks" Command="{StaticResource ApplyShowHiddenTasks}" InputGestureText="Ctrl+H" IsCheckable="True" Tag="HiddenTasks" FontWeight="Normal" />
<Separator/>
<MenuItem Header="Define _Filters" Command="{StaticResource DefineFilters}" InputGestureText="F" IsCheckable="False" FontWeight="Normal" />
<Separator/>
<MenuItem Header="_Remove Filter" Command="{StaticResource RemoveFilter}" InputGestureText="0" IsCheckable="False" Tag="Preset0" FontWeight="Normal" />
Expand Down Expand Up @@ -318,6 +322,7 @@
<KeyBinding Command="{StaticResource RemovePriority}" Key="Left" Modifiers="Alt"/>
<KeyBinding Command="{StaticResource RemovePriority}" Key="Right" Modifiers="Alt"/>
<!-- Filter menu commands -->
<KeyBinding Command="{StaticResource ApplyShowHiddenTasks}" Key="H" Modifiers="Control"/>
<KeyBinding Command="{StaticResource DefineFilters}" Key="F"/>
<KeyBinding Command="{StaticResource RemoveFilter}" Key="NumPad0"/>
<KeyBinding Command="{StaticResource RemoveFilter}" Key="D0"/>
Expand Down
28 changes: 25 additions & 3 deletions Client/Controls/MainWindow.xaml.cs
Expand Up @@ -371,6 +371,22 @@ public void SetSelectedMenuItem(MenuItem menu, string selectedMenuItemTag)
}
}

public void SetSelectionOfMenuItem(string selectedMenuItemTag, bool isChecked)
{
foreach (var item in filterMenu.Items)
{
if (item is MenuItem)
{
MenuItem menuItem = (MenuItem)item;
if (selectedMenuItemTag.Equals(menuItem.Tag))
{
menuItem.IsChecked = isChecked;
break;
}
}
}
}

private void SortByFileOrderExecuted(object sender, RoutedEventArgs e)
{
ViewModel.SortList(SortType.None);
Expand Down Expand Up @@ -480,11 +496,17 @@ private void ApplyFilterPreset9Executed(object sender, RoutedEventArgs e)
SetSelectedMenuItem(filterMenu, "Preset9");
}

#endregion
private void ApplyShowHiddenTasksExecuted(object sender, RoutedEventArgs e)
{
ViewModel.ApplyShowHiddenTasks();
SetSelectionOfMenuItem("HiddenTasks", User.Default.ShowHidenTasks);
}

#endregion

#region help menu
#region help menu

private void HelpAboutExecuted(object sender, RoutedEventArgs e)
private void HelpAboutExecuted(object sender, RoutedEventArgs e)
{
ViewModel.ShowHelpDialog();
}
Expand Down
135 changes: 76 additions & 59 deletions Client/MainWindowViewModel.cs
Expand Up @@ -323,6 +323,7 @@ public void LoadTasks(string filePath)
User.Default.Save();
EnableFileChangeObserver();
UpdateDisplayedTasks();
_window.SetSelectionOfMenuItem("HiddenTasks", User.Default.ShowHidenTasks);
}
catch (Exception ex)
{
Expand Down Expand Up @@ -577,73 +578,78 @@ public static IEnumerable<Task> FilterList(IEnumerable<Task> tasks)
var filters = User.Default.FilterText;
var comparer = User.Default.FilterCaseSensitive ? StringComparison.InvariantCulture : StringComparison.InvariantCultureIgnoreCase;

if (String.IsNullOrEmpty(filters))
return tasks;

var filteredTasks = new List<Task>();

foreach (var task in tasks)
{
bool include = true;
foreach (var filter in filters.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
if (!User.Default.ShowHidenTasks)
include = !task.Raw.Contains("h:1");

if (include)
{
if (filter.Equals("due:today", StringComparison.OrdinalIgnoreCase)
&& task.DueDate == DateTime.Now.ToString("yyyy-MM-dd"))
continue;
else if (filter.Equals("due:future", StringComparison.OrdinalIgnoreCase)
&& task.DueDate.IsDateGreaterThan(DateTime.Now))
continue;
else if (filter.Equals("due:past", StringComparison.OrdinalIgnoreCase)
&& task.DueDate.IsDateLessThan(DateTime.Now))
continue;
else if (filter.Equals("due:active", StringComparison.OrdinalIgnoreCase)
&& !task.DueDate.IsNullOrEmpty()
&& !task.DueDate.IsDateGreaterThan(DateTime.Now))
continue;
else if (filter.Equals("-due:today", StringComparison.OrdinalIgnoreCase)
&& task.DueDate == DateTime.Now.ToString("yyyy-MM-dd"))
{
include = false;
continue;
}
else if (filter.Equals("-due:future", StringComparison.OrdinalIgnoreCase)
&& task.DueDate.IsDateGreaterThan(DateTime.Now))
{
include = false;
continue;
}
else if (filter.Equals("-due:past", StringComparison.OrdinalIgnoreCase)
&& task.DueDate.IsDateLessThan(DateTime.Now))
{
include = false;
continue;
}
else if (filter.Equals("-due:active", StringComparison.OrdinalIgnoreCase)
&& !task.DueDate.IsNullOrEmpty()
&& !task.DueDate.IsDateGreaterThan(DateTime.Now))
{
include = false;
continue;
}
else if (filter.Equals("-DONE", StringComparison.Ordinal) && task.Completed)
foreach (
var filter in
filters.Split(new string[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries))
{
include = false;
continue;
}
else if (filter.Equals("DONE", StringComparison.Ordinal) && !task.Completed)
{
include = false;
continue;
}
if (filter.Equals("due:today", StringComparison.OrdinalIgnoreCase)
&& task.DueDate == DateTime.Now.ToString("yyyy-MM-dd"))
continue;
else if (filter.Equals("due:future", StringComparison.OrdinalIgnoreCase)
&& task.DueDate.IsDateGreaterThan(DateTime.Now))
continue;
else if (filter.Equals("due:past", StringComparison.OrdinalIgnoreCase)
&& task.DueDate.IsDateLessThan(DateTime.Now))
continue;
else if (filter.Equals("due:active", StringComparison.OrdinalIgnoreCase)
&& !task.DueDate.IsNullOrEmpty()
&& !task.DueDate.IsDateGreaterThan(DateTime.Now))
continue;
else if (filter.Equals("-due:today", StringComparison.OrdinalIgnoreCase)
&& task.DueDate == DateTime.Now.ToString("yyyy-MM-dd"))
{
include = false;
continue;
}
else if (filter.Equals("-due:future", StringComparison.OrdinalIgnoreCase)
&& task.DueDate.IsDateGreaterThan(DateTime.Now))
{
include = false;
continue;
}
else if (filter.Equals("-due:past", StringComparison.OrdinalIgnoreCase)
&& task.DueDate.IsDateLessThan(DateTime.Now))
{
include = false;
continue;
}
else if (filter.Equals("-due:active", StringComparison.OrdinalIgnoreCase)
&& !task.DueDate.IsNullOrEmpty()
&& !task.DueDate.IsDateGreaterThan(DateTime.Now))
{
include = false;
continue;
}
else if (filter.Equals("-DONE", StringComparison.Ordinal) && task.Completed)
{
include = false;
continue;
}
else if (filter.Equals("DONE", StringComparison.Ordinal) && !task.Completed)
{
include = false;
continue;
}

if (filter.Substring(0, 1) == "-")
{
if (task.Raw.Contains(filter.Substring(1), comparer))
if (filter.Substring(0, 1) == "-")
{
if (task.Raw.Contains(filter.Substring(1), comparer))
include = false;
}
else if (!task.Raw.Contains(filter, comparer))
{
include = false;
}
else if (!task.Raw.Contains(filter, comparer))
{
include = false;
}
}
}

Expand Down Expand Up @@ -703,7 +709,18 @@ public void ApplyFilterPreset9()
ApplyFilterPreset(9);
}

private void ApplyFilterPreset(int filterPresetNumber)
public void ApplyShowHiddenTasks()
{
User.Default.ShowHidenTasks = !User.Default.ShowHidenTasks;

GetSelectedTasks();
UpdateDisplayedTasks();
SetSelectedTasks();

User.Default.Save();
}

private void ApplyFilterPreset(int filterPresetNumber)
{
switch (filterPresetNumber)
{
Expand Down
12 changes: 12 additions & 0 deletions Client/User.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Client/User.settings
Expand Up @@ -116,5 +116,8 @@
<Setting Name="DisplayStatusBar" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="ShowHidenTasks" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
</Settings>
</SettingsFile>
3 changes: 3 additions & 0 deletions Client/app.config
Expand Up @@ -121,6 +121,9 @@
<setting name="DisplayStatusBar" serializeAs="String">
<value>True</value>
</setting>
<setting name="ShowHidenTasks" serializeAs="String">
<value>False</value>
</setting>
</Client.User>
</userSettings>
</configuration>

0 comments on commit 5c9b207

Please sign in to comment.