Skip to content

Commit

Permalink
Bookmarks
Browse files Browse the repository at this point in the history
  • Loading branch information
libgenapps committed May 2, 2018
1 parent 961a101 commit 466a3e5
Show file tree
Hide file tree
Showing 25 changed files with 1,183 additions and 11 deletions.
1 change: 1 addition & 0 deletions LibgenDesktop.Setup/AppFiles.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ static AppFiles()
AddFile(@"Languages\Russian.lng");
AddFile(@"Languages\Romanian.lng");
AddFile(@"Languages\Ukrainian.lng");
AddFile(@"Languages\Spanish.lng");
AddFile(@"Mirrors\mirrors.config");
AddFile(@"Mirrors\libgen_io_nonfiction.xslt");
AddFile(@"Mirrors\libgen_io_fiction.xslt");
Expand Down
4 changes: 2 additions & 2 deletions LibgenDesktop.Setup/Constants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
{
internal static class Constants
{
public const string CURRENT_VERSION = "1.0.3";
public const string TITLE_VERSION = "1.0.3";
public const string CURRENT_VERSION = "1.1.0";
public const string TITLE_VERSION = "1.1.0";
public const string PRODUCT_TITLE_FORMAT = "Libgen Desktop " + TITLE_VERSION + " ({0}-bit)";
public const string SHORTCUT_TITLE_FORMAT = "Libgen Desktop ({0}-bit)";
public const string PRODUCT_COMPANY = "Libgen Apps";
Expand Down
6 changes: 3 additions & 3 deletions LibgenDesktop/Common/Constants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ namespace LibgenDesktop.Common
{
internal static class Constants
{
public const string CURRENT_VERSION = "1.0.3";
public const string CURRENT_GITHUB_RELEASE_NAME = "1.0.3";
public static readonly DateTime CURRENT_GITHUB_RELEASE_DATE = new DateTime(2018, 4, 7);
public const string CURRENT_VERSION = "1.1.0";
public const string CURRENT_GITHUB_RELEASE_NAME = "1.1.0";
public static readonly DateTime CURRENT_GITHUB_RELEASE_DATE = new DateTime(2018, 5, 2);
public const string CURRENT_DATABASE_VERSION = "1.0";

public const string APP_SETTINGS_FILE_NAME = "libgen.config";
Expand Down
7 changes: 7 additions & 0 deletions LibgenDesktop/LibgenDesktop.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,8 @@
<Compile Include="Models\Utils\NetworkUtils.cs" />
<Compile Include="Models\Utils\StringExtensions.cs" />
<Compile Include="Models\Utils\UrlGenerator.cs" />
<Compile Include="ViewModels\Bookmarks\BookmarkViewModelList.cs" />
<Compile Include="ViewModels\Bookmarks\BookmarkViewModel.cs" />
<Compile Include="ViewModels\ContainerViewModel.cs" />
<Compile Include="ViewModels\DetailsItems\DetailsItemViewModel.cs" />
<Compile Include="ViewModels\DetailsItems\FictionDetailsItemViewModel.cs" />
Expand Down Expand Up @@ -267,6 +269,7 @@
<Compile Include="ViewModels\Tabs\SearchTabViewModel.cs" />
<Compile Include="ViewModels\Windows\SettingsWindowViewModel.cs" />
<Compile Include="ViewModels\Tabs\TabViewModel.cs" />
<Compile Include="Views\Controls\HorizontalScrollViewer.cs" />
<Compile Include="Views\Utils\IconExtension.cs" />
<Compile Include="Views\Windows\ApplicationUpdateWindow.xaml.cs">
<DependentUpon>ApplicationUpdateWindow.xaml</DependentUpon>
Expand Down Expand Up @@ -698,6 +701,10 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<TargetPath>Languages\Ukrainian.lng</TargetPath>
</ContentWithTargetPath>
<ContentWithTargetPath Include="Resources\Languages\Spanish.lng">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<TargetPath>Languages\Spanish.lng</TargetPath>
</ContentWithTargetPath>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
Expand Down
2 changes: 1 addition & 1 deletion LibgenDesktop/Models/Localization/LocalizationStorage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ private void LoadLanguages(string languageDirectoryPath, string selectedLanguage
}
Languages.Add(CreateLanguage(translation, translations, defaultTranslation));
}
Languages = Languages.OrderBy(language => language.LocalizedName).ToList();
Languages = Languages.OrderBy(language => language.Name).ToList();
Language selectedLanguage = Languages.FirstOrDefault(language => language.Name.CompareOrdinalIgnoreCase(selectedLanguageName));
if (selectedLanguage != null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ public MainWindowLocalizator(List<Translation> prioritizedTranslationList, Langu
{
WindowTitle = Format(translation => translation?.WindowTitle);
ToolbarDownloadManagerTooltip = Format(translation => translation?.DownloadManagerTooltip);
ToolbarBookmarksTooltip = Format(translation => translation?.BookmarksTooltip);
ToolbarNoBookmarks = Format(translation => translation?.NoBookmarks);
ToolbarUpdate = Format(translation => translation?.Update);
ToolbarImport = Format(translation => translation?.Import);
ToolbarSynchronize = Format(translation => translation?.Synchronize);
Expand All @@ -20,6 +22,8 @@ public MainWindowLocalizator(List<Translation> prioritizedTranslationList, Langu

public string WindowTitle { get; }
public string ToolbarDownloadManagerTooltip { get; }
public string ToolbarBookmarksTooltip { get; }
public string ToolbarNoBookmarks { get; }
public string ToolbarUpdate { get; }
public string ToolbarImport { get; }
public string ToolbarSynchronize { get; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,17 @@ public SearchResultsTabLocalizator(List<Translation> prioritizedTranslationList,
SearchInProgress = Format(translation => translation?.SearchInProgress);
Interrupt = Format(translation => translation?.Interrupt);
Interrupting = Format(translation => translation?.Interrupting);
AddToBookmarksTooltip = Format(translation => translation?.AddToBookmarksTooltip);
RemoveFromBookmarksTooltip = Format(translation => translation?.RemoveFromBookmarksTooltip);
ExportButtonTooltip = Format(translation => translation?.ExportButtonTooltip);
}

public string SearchPlaceHolder { get; }
public string SearchInProgress { get; }
public string Interrupt { get; }
public string Interrupting { get; }
public string AddToBookmarksTooltip { get; }
public string RemoveFromBookmarksTooltip { get; }
public string ExportButtonTooltip { get; }

private string Format(Func<Translation.SearchResultsTabsTranslation, string> field, object templateArguments = null)
Expand Down
4 changes: 4 additions & 0 deletions LibgenDesktop/Models/Localization/Translation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ internal class FormattingInfo
internal class MainMenuTranslation
{
public string DownloadManagerTooltip { get; set; }
public string BookmarksTooltip { get; set; }
public string NoBookmarks { get; set; }
public string Update { get; set; }
public string Import { get; set; }
public string Synchronize { get; set; }
Expand Down Expand Up @@ -90,6 +92,8 @@ internal class SearchResultsTabsTranslation
public string SearchInProgress { get; set; }
public string Interrupt { get; set; }
public string Interrupting { get; set; }
public string AddToBookmarksTooltip { get; set; }
public string RemoveFromBookmarksTooltip { get; set; }
public string ExportButtonTooltip { get; set; }
}

Expand Down
40 changes: 40 additions & 0 deletions LibgenDesktop/Models/MainModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ public MainModel()
public Updater.UpdateCheckResult LastApplicationUpdateCheckResult { get; set; }

public event EventHandler ApplicationUpdateCheckCompleted;
public event EventHandler BookmarksChanged;

public Task<List<NonFictionBook>> SearchNonFictionAsync(string searchQuery, IProgress<SearchProgress> progressHandler,
CancellationToken cancellationToken)
Expand Down Expand Up @@ -548,6 +549,45 @@ public Task<DatabaseStats> GetDatabaseStatsAsync()
return result;
}

public bool HasBookmark(LibgenObjectType libgenObjectType, string searchQuery)
{
if (String.IsNullOrWhiteSpace(searchQuery))
{
return false;
}
searchQuery = searchQuery.Trim();
return AppSettings.Bookmarks.Bookmarks.Any(bookmark => bookmark.Type == libgenObjectType && bookmark.Query == searchQuery);
}

public void AddBookmark(LibgenObjectType libgenObjectType, string name, string searchQuery)
{
AppSettings.Bookmarks.Bookmarks.Add(new AppSettings.BookmarkSettings.Bookmark
{
Name = name,
Query = searchQuery,
Type = libgenObjectType
});
SaveSettings();
BookmarksChanged?.Invoke(this, EventArgs.Empty);
}

public void DeleteBookmark(LibgenObjectType libgenObjectType, string searchQuery)
{
if (String.IsNullOrWhiteSpace(searchQuery))
{
return;
}
searchQuery = searchQuery.Trim();
AppSettings.BookmarkSettings.Bookmark bookmark =
AppSettings.Bookmarks.Bookmarks.FirstOrDefault(bookmarkItem => bookmarkItem.Type == libgenObjectType && bookmarkItem.Query == searchQuery);
if (bookmark != null)
{
AppSettings.Bookmarks.Bookmarks.Remove(bookmark);
SaveSettings();
BookmarksChanged?.Invoke(this, EventArgs.Empty);
}
}

public void SaveSettings()
{
SettingsStorage.SaveSettings(AppSettings, Environment.AppSettingsFilePath);
Expand Down
55 changes: 55 additions & 0 deletions LibgenDesktop/Models/Settings/AppSettings.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
using LibgenDesktop.Infrastructure;
using LibgenDesktop.Models.Entities;
using static LibgenDesktop.Common.Constants;

namespace LibgenDesktop.Models.Settings
Expand Down Expand Up @@ -296,6 +298,29 @@ public static LastUpdateSettings Default
public string IgnoreReleaseName { get; set; }
}

internal class BookmarkSettings
{
internal class Bookmark
{
public string Name { get; set; }
public string Query { get; set; }
public LibgenObjectType Type { get; set; }
}

public static BookmarkSettings Default
{
get
{
return new BookmarkSettings
{
Bookmarks = new List<Bookmark>()
};
}
}

public List<Bookmark> Bookmarks { get; set; }
}

internal class GeneralSettings
{
internal enum UpdateCheckInterval
Expand Down Expand Up @@ -474,6 +499,7 @@ public static AppSettings Default
SciMag = SciMagSettings.Default,
DownloadManagerTab = DownloadManagerTabSettings.Default,
LastUpdate = LastUpdateSettings.Default,
Bookmarks = BookmarkSettings.Default,
General = GeneralSettings.Default,
Network = NetworkSettings.Default,
Download = DownloadSettings.Default,
Expand All @@ -492,6 +518,7 @@ public static AppSettings Default
public SciMagSettings SciMag { get; set; }
public DownloadManagerTabSettings DownloadManagerTab { get; set; }
public LastUpdateSettings LastUpdate { get; set; }
public BookmarkSettings Bookmarks { get; set; }
public GeneralSettings General { get; set; }
public NetworkSettings Network { get; set; }
public DownloadSettings Download { get; set; }
Expand All @@ -515,6 +542,7 @@ public static AppSettings ValidateAndCorrect(AppSettings appSettings)
appSettings.ValidateAndCorrectSciMagSettings();
appSettings.ValidateAndCorrectDownloadManagerTabSettings();
appSettings.ValidateAndCorrectLastUpdateSettings();
appSettings.ValidateAndCorrectBookmarkSettings();
appSettings.ValidateAndCorrectGeneralSettings();
appSettings.ValidateAndCorrectNetworkSettings();
appSettings.ValidateAndCorrectDownloadSettings();
Expand Down Expand Up @@ -804,6 +832,33 @@ private void ValidateAndCorrectLastUpdateSettings()
}
}

private void ValidateAndCorrectBookmarkSettings()
{
if (Bookmarks == null)
{
Bookmarks = BookmarkSettings.Default;
}
else
{
if (Bookmarks.Bookmarks == null)
{
Bookmarks = BookmarkSettings.Default;
}
else
{
for (int bookmarkIndex = Bookmarks.Bookmarks.Count - 1; bookmarkIndex >= 0; bookmarkIndex--)
{
BookmarkSettings.Bookmark bookmark = Bookmarks.Bookmarks[bookmarkIndex];
if (String.IsNullOrEmpty(bookmark.Name) || String.IsNullOrEmpty(bookmark.Query) ||
!Enum.IsDefined(typeof(LibgenObjectType), bookmark.Type))
{
Bookmarks.Bookmarks.RemoveAt(bookmarkIndex);
}
}
}
}
}

private void ValidateAndCorrectGeneralSettings()
{
if (General == null)
Expand Down
4 changes: 4 additions & 0 deletions LibgenDesktop/Resources/Languages/English.lng
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
"MainMenu":
{
"DownloadManagerTooltip": "Download Manager",
"BookmarksTooltip": "Bookmarks",
"NoBookmarks": "No bookmarks",
"Update": "Update...",
"Import": "Import...",
"Synchronize": "Synchronization...",
Expand Down Expand Up @@ -78,6 +80,8 @@
"SearchInProgress": "Search in progress...",
"Interrupt": "INTERRUPT",
"Interrupting": "INTERRUPTING...",
"AddToBookmarksTooltip": "Add to bookmarks",
"RemoveFromBookmarksTooltip": "Remove from bookmarks",
"ExportButtonTooltip": "Export search results to a file"
},
"NonFictionSearchResultsTab":
Expand Down
4 changes: 4 additions & 0 deletions LibgenDesktop/Resources/Languages/Russian.lng
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
"MainMenu":
{
"DownloadManagerTooltip": "Менеджер загрузок",
"BookmarksTooltip": "Закладки",
"NoBookmarks": "Нет закладок",
"Update": "Обновление...",
"Import": "Импорт...",
"Synchronize": "Синхронизация...",
Expand Down Expand Up @@ -78,6 +80,8 @@
"SearchInProgress": "Идет поиск...",
"Interrupt": "ПРЕРВАТЬ",
"Interrupting": "ПРЕРЫВАЕТСЯ...",
"AddToBookmarksTooltip": "Добавить в закладки",
"RemoveFromBookmarksTooltip": "Удалить из закладок",
"ExportButtonTooltip": "Экспорт результатов поиска в файл"
},
"NonFictionSearchResultsTab":
Expand Down
Loading

0 comments on commit 466a3e5

Please sign in to comment.