Archived
1
0

- Fresh start

- Added new core project
- Done main layout design
- Done video, channel, playlist and advert cards
This commit is contained in:
Michael Gordeev
2019-11-10 20:05:15 +03:00
parent bf7ebbf21c
commit 893a86517b
99 changed files with 1002 additions and 10582 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ namespace FoxTube.Background
{
public sealed class BackgroundProcessor : IBackgroundTask
{
public async void Run(IBackgroundTaskInstance taskInstance)
public void Run(IBackgroundTaskInstance taskInstance)
{
}
@@ -4,13 +4,9 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FoxTube.Classes
namespace FoxTube.Core
{
public static class Downloads
public sealed class Class1
{
public static void Cancel(string id)
{
}
}
}
+24
View File
@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FoxTube.Core.Controllers
{
public static class StoreInterop
{
public static bool AdsDisabled => false;
public static string GetProPrice()
{
return "$4.99";
}
public static void PurchaseApp()
{
if (!AdsDisabled)
// TODO: Add purchase validation
return;
}
}
}
+144
View File
@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{797951D8-BF28-4659-BDF4-C17A583E64CD}</ProjectGuid>
<OutputType>winmdobj</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>FoxTube.Core</RootNamespace>
<AssemblyName>FoxTube.Core</AssemblyName>
<DefaultLanguage>en-US</DefaultLanguage>
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.18362.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.17134.0</TargetPlatformMinVersion>
<MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<AllowCrossPlatformRetargeting>false</AllowCrossPlatformRetargeting>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<PlatformTarget>x86</PlatformTarget>
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
<PlatformTarget>ARM</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\ARM\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
<PlatformTarget>ARM</PlatformTarget>
<OutputPath>bin\ARM\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM64'">
<PlatformTarget>ARM64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\ARM64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM64'">
<PlatformTarget>ARM64</PlatformTarget>
<OutputPath>bin\ARM64\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<PlatformTarget>x64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<PlatformTarget>x64</PlatformTarget>
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
<ItemGroup>
<Compile Include="Class1.cs" />
<Compile Include="Controllers\StoreInterop.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform">
<Version>6.2.9</Version>
</PackageReference>
</ItemGroup>
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' ">
<VisualStudioVersion>14.0</VisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
+29
View File
@@ -0,0 +1,29 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("FoxTube.Core")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("FoxTube.Core")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: ComVisible(false)]
+22
View File
@@ -9,6 +9,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FoxTube.Background", "FoxTu
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FoxTube.Tests", "FoxTube.Tests\FoxTube.Tests.csproj", "{3D864717-2D87-4E54-BFC0-755FC2FCA2A7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FoxTube.Core", "FoxTube.Core\FoxTube.Core.csproj", "{797951D8-BF28-4659-BDF4-C17A583E64CD}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -91,6 +93,26 @@ Global
{3D864717-2D87-4E54-BFC0-755FC2FCA2A7}.Release|x86.ActiveCfg = Release|x86
{3D864717-2D87-4E54-BFC0-755FC2FCA2A7}.Release|x86.Build.0 = Release|x86
{3D864717-2D87-4E54-BFC0-755FC2FCA2A7}.Release|x86.Deploy.0 = Release|x86
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|ARM.ActiveCfg = Debug|ARM
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|ARM.Build.0 = Debug|ARM
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|ARM64.ActiveCfg = Debug|ARM64
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|ARM64.Build.0 = Debug|ARM64
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|x64.ActiveCfg = Debug|x64
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|x64.Build.0 = Debug|x64
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|x86.ActiveCfg = Debug|x86
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|x86.Build.0 = Debug|x86
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|Any CPU.Build.0 = Release|Any CPU
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|ARM.ActiveCfg = Release|ARM
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|ARM.Build.0 = Release|ARM
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|ARM64.ActiveCfg = Release|ARM64
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|ARM64.Build.0 = Release|ARM64
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|x64.ActiveCfg = Release|x64
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|x64.Build.0 = Release|x64
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|x86.ActiveCfg = Release|x86
{797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
+4 -50
View File
@@ -1,12 +1,5 @@
using FoxTube.Classes;
using FoxTube.Controls;
using FoxTube.Pages;
using Microsoft.AppCenter.Analytics;
using System.Collections.Generic;
using Windows.ApplicationModel.Activation;
using Windows.Globalization;
using Windows.ApplicationModel.Activation;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace FoxTube
{
@@ -15,46 +8,18 @@ namespace FoxTube
public App() =>
InitializeComponent();
/*void Initialize()
{
Settings.LoadData();
switch (Settings.Theme)
{
case 0:
RequestedTheme = ApplicationTheme.Light;
break;
case 1:
RequestedTheme = ApplicationTheme.Dark;
break;
}
ApplicationLanguages.PrimaryLanguageOverride = Settings.Language;
Processes.InitializeApp();
Suspending += (s, e) => Processes.SuspendApp();
UnhandledException += (s, e) => Analytics.TrackEvent("The app crashed", new Dictionary<string, string>()
{
{ "Exception", e.Exception.GetType().ToString() },
{ "Details", e.Message },
{ "StackTrace", e.Exception.StackTrace }
});
}*/
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
if (!e.PrelaunchActivated && Window.Current.Content == null)
Window.Current.Content = new MainPage(e.SplashScreen, e.Arguments);
Window.Current.Content = new MainPage();
Window.Current.Activate();
}
protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args)
protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
{
var deferral = args.TaskInstance.GetDeferral();
base.OnBackgroundActivated(args);
await Methods.ProcessBackgroundToast((args.TaskInstance.TriggerDetails as ToastNotificationActivatedEventArgs).Argument);
deferral.Complete();
}
@@ -63,19 +28,8 @@ namespace FoxTube
base.OnActivated(e);
if (Window.Current.Content == null)
Window.Current.Content = new MainPage(e.SplashScreen, e);
Window.Current.Content = new MainPage();
Window.Current.Activate();
if (e.Kind == ActivationKind.Protocol)
Authenticator.SetResponse((e as ProtocolActivatedEventArgs).Uri);
/*if(e.Kind == ActivationKind.ToastNotification)
{
if (UserManagement.IsAuthorized)
Methods.ProcessToast((e as ToastNotificationActivatedEventArgs).Argument);
else
UserManagement.AuthorizationStateChanged += (arg) => Methods.ProcessToast((e as ToastNotificationActivatedEventArgs).Argument);
}*/
}
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.
-331
View File
@@ -1,331 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<items>
<item time="2019-06-23" version="1.2">
<content>
<en-US>### What's new:
- Fixed video playback problems
- Fixed some cases when playlist cards aren't displayed
- Fixed some cases when the app crashes
- Fixed app crashes on trying to navigate to not existing channel/playlist/video
- Fixed history page refresh button
- You can now report comments as spam
- You can now report videos
- Enchanced background subscriptions check sequence
- Corrected misspells in English localization
</en-US>
<ru-RU>### Что нового:
- Исправлены проблемы с воспроизведением видео
- Исправлены некоторые случаи при которых карточки плейлистов не отображались
- Исправлены некоторые случай при которых приложение вылетало
- Исправлены вылеты приложения при попытке перейти на несуществующий канал/плейлист/видео
- Исправлена кнопка обновления на странице истории просмотров
- Теперь вы можете помечать комментарии как спам
- Теперь вы можете отправлять жалобы на видео
- Улучшена проверка новых видео подписок в фоне
- Исправлены ошибки в английской локализации
</ru-RU>
</content>
</item>
<item time="2019-06-20" version="1.1">
<content>
<en-US>### What's new:
- Added localization contribution system
- Added ability to completely collapse command bars (check settings)
- Added feature that checks your clipboard and suggests you to open YouTube page in the app if there is any (check settings)
- Added additional analytics tools to detect authorization fails
- Added video speed controller (check video settings)
- Test ads are now shown
- Fixed gaps in grids
- Fixed some cases when on maximizing video it pauses/continues
- Fixed missing inbox items due to incompatible date formats
- Fixed inability to unsubscribe from channel
- Fixed minimization of videos with unusual aspect ratios
- Fixed some cases when video continues to play in the background after closing/reloading video page
### NB:
Since Microsoft hasn't fixed ad banners I'm forced to release the test ones. It will help me to optimize mechanics of ads delivery and make you fill more comfortable when the real ones will appear. Feedback is welcomed.
</en-US>
<ru-RU>### Что нового:
- Теперь вы можете помочь нам переводить приложение на новые языки!
- Добавлена возможность полностью скрывать панель команд (см. Настройки)
- Добавлена функция которая сканирует ваш буфер обмена и, если там есть YouTube-ссылка, предлагает открыть соответствующую страницу в приложении (см. Настройки)
- Добавлены дополнительные инструменты аналитики для обнаружения ошибок авторизации
- Добавлен ползунок управления скоростью воспроизведения видео (см. Настройки видео)
- Теперь показываются тестовая реклама
- Исправлены пропуски в сетках
- Исправлены некоторые случаи при которых разворачивание видео останавливало/воспроизодило видео
- Исправлены пропущенные сообщения из-за несовместимых форматов дат системы
- Исправлена невозможность отписаться от канала
- Исправлено сворачивание видео с необычными соотношениями сторон
- Исправлены некоторые случаи при которых видео продолжало воспроизводиться в фоне после закрытия/обновления страницы видео
### NB:
Поскольку Майкрософт все еще не исправили реальные рекламные баннеры, мне необходимо выпустить тестовые. Это поможет мне оптимизировать процесс доставки рекламы и позволит вам чувствовать себя более комфортно когда будут запущены настоящие. Отзывы приветствуются.
</ru-RU>
</content>
</item>
<item time="2019-06-19" version="1.0.1">
<content>
<en-US>### What's new:
- Improved analytics tools for more precise bugs tracking
- Fixed multipying downloads history entries on login/logout
- Added feedback button failed authentication popup
- Duplicated subscriptions are now ignored on login
</en-US>
<ru-RU>### Что нового:
- Улучшены инструменты аналитики для более быстрого поиска багов
- Исправлено дублирование записей истории загрузок при входе/выходе из аккаунта
- Добавлена кнопка отзыва в сообщении об ошибке при входе в аккаунт
- Повторяющиеся подписки теперь игнорируются при входе
</ru-RU>
</content>
</item>
<item time="2019-05-21" version="1.0">
<content>
<en-US>##[Final release]
### What's new:
- In-video advert now doesn't appear on minimized playback
- Fixed small header appearing on channel page
- Fixed home page loading in long active sessions
- Optimization and bugfixes
- Fixed crash when local watch history reaches 87 entries (now its capacity is 200)
- Added backward navigation to video page
- Improved authentication process
- Removed outdated logo from 'About' page and updated Twitter link
- Play/pause toggle on video player mouse click
- Added player hotkeys:
Space - Play/Pause
Arrow right/left - Skip forward/backward
F11 - Toggle full screen
- Activated real ads
- Fixed app crash on video's zero rating
- "Subscribe" button now is hidden on your videos
</en-US>
<ru-RU>##[Релизная версия]
### Что нового:
- Теперь реклама в видео не появляется в компактном режиме
- Исправлено появление меленького заголовка на странице канала
- Исправлено отображение видео на домашней странице при долгой активной сессии
- Оптимизация и исправление ошибок
- Исправлен сбой приложения при достижении локальной историей 87 записей (текущая емкость журнала - 200 записей)
- Добавлена обратная навигация для страниц просмотра
- Улучшен процесс аутентификации
- Удален старый логотип с страницы 'О приложении' и обновлена ссылка на Твиттер
- Пауза/воспроизведение при клике мышью по окну плеера
- Добавлены горячие клавиши:
Пробел - Пауза/Воспроизведение
Стрелка вправо/влево - Перейти вперед на 30 секунд/назад на 10 секунд
F11 - Переключить полноэкранный режим
- Запущена реальная реклама
- Исправлен вылет приложения при нулевом рейтинге видео
- Кнопка "Подписаться" теперь скрыта на странице вашего видео
</ru-RU>
</content>
</item>
<item time="2019-05-20" version="0.6">
<content>
<en-US>##[Final pre-release version]
### What's new:
- Fixed fails when trying to retrieve history, WL or recommended
- Fixed ads appearance
- Fixed ads watermarks on video when it was opened through notification
- Optimized and enchanced video playback
- Fixed special characters appearing in toast notifications
- History page re-design
- Added app history management (doesn't affect web site's history)
- Extended history information for videos (watching progress)
- Continue where you left off feature
- Watch later playlist now acts like regular playlist
- If video is longer than 1 hour ads will be shown every 30 minutes
- Added incognito mode (available in video card context menu)
- Search suggestions now run smoother
- FoxTube pro price is now displayed in menu
- Fixed crashes on opening links which don't contain http(s) prefix
- Fixed backward navigation with minimized video
- Player re-design
- Added quality selector to live streams playback
- Added "Auto" quality option for videos
- Updated design of user's avatar in the top-right corner
####[NB]
This is the final pre-release minor version. That means that until 1.0 release there will be no new features implemented. All subsequent updates will contain only bugfixes
</en-US>
<ru-RU>##[Последняя предварительная версия]
### Что нового:
- Исправлена проблема получения истории, "Посмотреть позже" и рекомендаций
- Исправлен внешний вид рекламы
- Исправлено появление водяных занков рекламы на видео при открытии через уведомления
- Оптимизирован и улучшен просмотр видео
- Исправлено появление особых символов в уведомлениях
- Редизайн страницы истории
- Добавлено управление историей просмотра приложения (не влияет на историю просмотров на сайте)
- Расширенная информация о просмотренном видео (прогресс просмотра)
- Функция продолжения просмотра
- Плейлист "Посмотреть позже" теперь ведет себя как обычный плейлист
- Если видео длится более 1 часа, рекламный баннер будет появляться каждые 30 минут
- Добавлен режим инкогнито (доступен в контекстном меню видео карточки)
- Подсказки при поиске работают плавнее
- Теперь на кнопке отключения рекламы отображается текущая цена
- Исправлены вылеты при попытке открыть ссылку не содержащую http(s) префикс
- Исправлена обратная навигация при уменьшенном видео
- Редизайн плеера
- Добавлено меню выбора качества для прямых эфиров
- Добавлено опция "Авто" в меню выбора качеста видео
- Обновлен дизайн аватара пользователя в верхнем правом углу
####[NB]
Версия 0.6 станет последней пред релизной версией. Это значит, что новые функции не будут добовляться до полного релиза приложения. Все последующие обновления будут содержать лишь исправления
</ru-RU>
</content>
</item>
<item time="2019-04-06" version="0.5">
<content>
<en-US>### What's new:
- App optimization
- Changelog notification now pops up after update at first launch
- Added ability to add videos to playlists on video page
- Added ability to add videos to playlists through card's context menu
- Added ability to download video through card's context menu
- Deleted videos are now also displayed
- Added support of April 2018 Update (Windows 10 build 17134)
- Added adverts (not real. Just for debugging)
- Fixed header titles
- Some items were moved from menu to header
- Added "Share" button to video cards
- Added "Delete video from playlist" button to video cards on playlist page
- Improved channel cover quality
- If available, shows localized titles and descriptions (based on "Search relevance language" parameter set in settings)
- Updated russian localization
</en-US>
<ru-RU>### Что нового:
- Оптимизация приложения
- Добавлено уведомление со списком изменений при первом запуске после обновления
- Добавлена возможность добавлять видео в плейлисты на странице просмотра
- Добавлена возможность добавлять видео в плейлисты через контекстное меню карточки
- Добавлена возможность скачивать видео через контекстное меню карточки
- Удаленные видео теперь также отображаются
- Добавлена поддержка Апрельского Обновления 2018 (Windows 10 сборка 17134)
- Добавлена реклама (не настоящие. Только для отладки)
- Исправлено изменение заголовков
- Некоторые пункты меню перемещены в заголовок
- Добавлена кнопка "Поделиться" к видео карточкам
- Добавлена кнопка "Удалить видео из плейлиста" к видео карточкам на страницах плейлистов
- Улучшено качество обложки канала
- Показывает локализированные заголовки и описания если доступны (основан на параметре "Предпочитаемый язык поиска" установленного в настройках)
- Обновлена русская локализация
</ru-RU>
</content>
</item>
<item time="2019-04-05" version="0.4">
<content>
<en-US>### What's new:
- Improved stability and speed of the app
- Fixed a lot of bugs
- Rebuilt player
- Added animations and acrylic
- Added accout information
- Added history
- Added "Watch later" playlist
- Added "Recommended" and "Subscriptions" tabs on home page
- Added tiny icon near the channel search
- Added ability to delete comments
- Rebuilt videos downloading
- Added transparent title bar
- Added prompts to rate the app and leave feedback (dialogs shows up after 12 and 24 hours of active using)
- Rebuilt cards grid
- Added publish date on the video page
- Stream countdown was rebuilt and moved to the top of video page
- Current playlist focuses on current video
- Text selection color is now red instead of system accent color
- Added toast notifications for livestreams
### Known issues:
- 'History' and 'Watch later' playlists sometimes are missing. Solution: restart the app
- The same problem with 'Recommended' and 'Subscriptions' tabs on home page
- Somewhere there is no russian locale. Will be finished in 1.0 version
- Playlists management will be introduced in the next version but it may miss some playlists
- Even though I've done ads delivering system it's not introduced because of some problems with ads' lookup. I just want to make your ads experience to be the best one. So it won't be implemented until I make sure that they are ready
</en-US>
<ru-RU>### Что нового:
- Улучшена стабильность и скорость приложения
- Исправлена куча багов
- Переработан плеер
- Добавлены анимации и акрил
- Добавлена информация об аккаунте
- Добавлена история
- Добавлен плейлист "Посмотреть позже"
- Добавлены вкладки "Рекоммендованные" и "Подписки" на домашней странице
- Добавлена маленькая иконка канала при прокрутке вниз на странице канала
- Добавлена возможность удалять комментарии
- Переработано скачивание видео
- Добавлен прозрачный заголовок окна
- Добавлены всплывающие уведомления с просьбой оценить приложение и оставить отзыв (появляются после 12 и 24 часов активного использования)
- Переработана сетка карточек
- Добавлена информация о дате публикации видео на странице просмотра
- Обратный отсчет для стримов переработан и перенесен вверх страницы
- Список видео текущего плейлиста сразу перематывается на текущее
- Текст выделяется красным, а не текущим цветом системы
- Добавлены уведомления для прямых эфиров
### Известные проблемы:
- История и плейлист 'Посмотреть позже' иногда могут не отображаться. Решение: перезапустить приложение
- Аналогично и со вкладками 'Рекомендованные' и 'Подписки' на домашней странице
- В некоторых местах отсутствует русская локализация. Будет дополнена в версии 1.0
- Управление плейлистами будет добавлено в следующей версии, но некоторые плейлисты могут отсутствовать
- Хотя я сделал систему доставки рекламы, она не введена из-за некоторых проблем с видом банеров. Я хочу сделать ваш опыт взаимодействия с рекламой в приложении лучше, так что она не будет введена до тех пор, пока я не буду в этом уверен
</ru-RU>
</content>
</item>
<item time="2019-02-02" version="0.3">
<content>
<en-US>### What's new:
- Small fixes
- First public pre-release version
- Some content was cut out due to its incompleteness
</en-US>
<ru-RU>### Что нового:
- Мелкие исправления багов
- Эта версия является первой пред-релизной публичной версией
- Некотроые функции были вырезаны из-за их незавершенности
</ru-RU>
</content>
</item>
<item time="2019-01-05" version="0.2.19012">
<content>
<en-US>### What's new:
- 'Live' button fixed in the player
- Long channel names on crads fixed
- Fixed video description disappearing on window resizing
- Player seek is fixed
- Added video buffering progress indicatior
- Small fixes
### Known issues:
- Recommended and subscriptions pages aren't implemented
- History isn't implemented
- Playlists management isn't implemented
- Ads aren't implemented
</en-US>
<ru-RU>### Что нового:
- Кнопка перехода к прямому эфиру на стримах теперь работает
- Исправлен баг с длинными именами каналов на карточках
- Исправлено исчезание описания видео при изменении размеров окна
- Исправлен ползунок перемотки видео
- Добавлен индикатор буферизации видео
- Мелкие исправления
### Что по-прежнему не работает:
- Страница рекомендованных видео и страница видео с подписок
- История
- Работа с плейлистами
- Нет карточек рекламы
</ru-RU>
</content>
</item>
</items>
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

-226
View File
@@ -1,226 +0,0 @@
using Google.Apis.Oauth2.v2;
using Google.Apis.YouTube.v3;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Windows.Data.Json;
using Windows.Security.Cryptography;
using Windows.Security.Cryptography.Core;
using Windows.Storage.Streams;
using Google.Apis.Auth.OAuth2.Responses;
using Google.Apis.Auth.OAuth2;
namespace FoxTube.Classes
{
public static class Authenticator
{
const string redirectURI = "xfox111.foxtube:/oauth2redirect";
const string authorizationEndpoint = "https://accounts.google.com/o/oauth2/v2/auth";
const string tokenEndpoint = "https://www.googleapis.com/oauth2/v4/token";
readonly static string scopes = Oauth2Service.Scope.UserinfoProfile + " " +
Oauth2Service.Scope.UserinfoEmail + " " +
YouTubeService.Scope.YoutubeForceSsl;
static Uri responseUri = null;
static string state = null;
static string codeVerifier = null;
public static async Task<TokenResponse> Authorize(string clientId)
{
await SendRequest(clientId);
await WaitForResponse();
string code = ProcessResponse(responseUri);
JsonObject response = await ExchangeForTokens(clientId, code);
ClearFields();
return new TokenResponse
{
AccessToken = response.GetNamedString("access_token"),
ExpiresInSeconds = 3600,
IssuedUtc = DateTime.UtcNow,
TokenType = response.GetNamedString("token_type"),
IdToken = response.GetNamedString("id_token"),
RefreshToken = response.GetNamedString("refresh_token"),
Scope = response.GetNamedString("scope")
};
}
public static async Task<TokenResponse> RefreshToken(string clientId, string refreshToken) =>
await RefreshToken(clientId, refreshToken, null);
public static async Task<TokenResponse> RefreshToken(string clientId, string refreshToken, string idToken)
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Host = "www.googleapis.com";
client.DefaultRequestHeaders.Add("Content-Type", "application/x-www-form-urlencoded");
Dictionary<string, string> body = new Dictionary<string, string>
{
{ "client_id", clientId },
{ "refresh_token", refreshToken },
{ "grant_type", "refresh_token" }
};
using(HttpResponseMessage raw = await client.PostAsync("https://www.googleapis.com/oauth2/v4/token", new FormUrlEncodedContent(body)))
{
if (!raw.IsSuccessStatusCode)
return null;
JsonObject response = JsonObject.Parse(await raw.Content.ReadAsStringAsync());
return new TokenResponse
{
AccessToken = response.GetNamedString("access_token"),
IssuedUtc = DateTime.UtcNow,
RefreshToken = refreshToken,
Scope = scopes,
TokenType = "Bearer",
ExpiresInSeconds = int.Parse(response.GetNamedString("expires_in")),
IdToken = idToken
};
}
}
static async Task WaitForResponse()
{
while (responseUri == null)
await Task.Delay(1000);
}
public static void SetResponse(Uri response) =>
responseUri = response;
static async Task SendRequest(string clientId)
{
// Generates state and PKCE values.
state = randomDataBase64url(32);
codeVerifier = randomDataBase64url(32);
string code_challenge = base64urlencodeNoPadding(sha256(codeVerifier));
// Creates the OAuth 2.0 authorization request.
string authorizationRequest = string.Format("{0}?response_type=code&redirect_uri={1}&client_id={2}&state={3}&code_challenge={4}&code_challenge_method={5}&scope={6}",
authorizationEndpoint,
Uri.EscapeDataString(redirectURI),
clientId,
state,
code_challenge,
"S256",
scopes);
// Opens the Authorization URI in the browser.
await Windows.System.Launcher.LaunchUriAsync(new Uri(authorizationRequest));
}
public static string ProcessResponse(Uri response)
{
// Gets URI from navigation parameters.
string queryString = response.Query;
// Parses URI params into a dictionary
// ref: http://stackoverflow.com/a/11957114/72176
Dictionary<string, string> queryStringParams =
queryString.Substring(1).Split('&')
.ToDictionary(c => c.Split('=')[0],
c => Uri.UnescapeDataString(c.Split('=')[1]));
if (!queryStringParams.ContainsKey("code")
|| !queryStringParams.ContainsKey("state")
|| queryStringParams.ContainsKey("error"))
return null;
// Gets the Authorization state
string incoming_state = queryStringParams["state"];
// Compares the receieved state to the expected value, to ensure that
// this app made the request which resulted in authorization
if (incoming_state != state)
return null;
// Returns the Authorization code
return queryStringParams["code"];
}
static async Task<JsonObject> ExchangeForTokens(string clientId, string code)
{
// Builds the Token request
string tokenRequestBody = string.Format("code={0}&redirect_uri={1}&client_id={2}&code_verifier={3}&scope=&grant_type=authorization_code",
code,
Uri.EscapeDataString(redirectURI),
clientId,
codeVerifier
);
StringContent content = new StringContent(tokenRequestBody, Encoding.UTF8, "application/x-www-form-urlencoded");
// Performs the authorization code exchange.
HttpClientHandler handler = new HttpClientHandler();
handler.AllowAutoRedirect = true;
HttpClient client = new HttpClient(handler);
HttpResponseMessage response = await client.PostAsync(tokenEndpoint, content);
string responseString = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
return null;
// Retrieves access token
return JsonObject.Parse(responseString);
}
static void ClearFields()
{
codeVerifier = null;
state = null;
responseUri = null;
}
/// <summary>
/// Returns URI-safe data with a given input length.
/// </summary>
/// <param name="length">Input length (nb. output will be longer)</param>
/// <returns></returns>
static string randomDataBase64url(uint length)
{
IBuffer buffer = CryptographicBuffer.GenerateRandom(length);
return base64urlencodeNoPadding(buffer);
}
/// <summary>
/// Returns the SHA256 hash of the input string.
/// </summary>
/// <param name="inputStirng"></param>
/// <returns></returns>
static IBuffer sha256(string inputStirng)
{
HashAlgorithmProvider sha = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha256);
IBuffer buff = CryptographicBuffer.ConvertStringToBinary(inputStirng, BinaryStringEncoding.Utf8);
return sha.HashData(buff);
}
/// <summary>
/// Base64url no-padding encodes the given input buffer.
/// </summary>
/// <param name="buffer"></param>
/// <returns></returns>
static string base64urlencodeNoPadding(IBuffer buffer)
{
string base64 = CryptographicBuffer.EncodeToBase64String(buffer);
// Converts base64 to base64url.
base64 = base64.Replace("+", "-");
base64 = base64.Replace("/", "_");
// Strips padding.
base64 = base64.Replace("=", "");
return base64;
}
}
}
-39
View File
@@ -1,39 +0,0 @@
using Google.Apis.YouTube.v3.Data;
using System;
using System.Collections;
using System.Linq;
namespace FoxTube
{
public delegate void AuthorizationChangedEventHandler(bool isAuthorized);
public delegate void SubscriptionChangedEventHandler(string action, Subscription subscription);
public delegate void ProVersionStateChangedEventHandler(bool purchased, string price);
public delegate void NavigatingOccured(Type sourcePageType, object parameter);
public delegate void NavigationOccured(IList pivotCollection, int? selectedPivot);
public delegate void SimpleEventHandler();
public enum LoadingScreenState
{
Loading = 0,
Loaded = 1,
Error = 2,
Blocked = 3
}
public interface INavigationPage
{
object Parameter { get; set; }
}
public static class Extensions
{
public static Uri ToUri(this string str) =>
string.IsNullOrWhiteSpace(str) ? null : new Uri(str);
public static bool Belongs<T>(this T obj, params T[] values) =>
values.Contains(obj);
public static string GuardFromNull(this object obj, string str) =>
string.IsNullOrWhiteSpace(str) ? string.Empty : str;
}
}
-89
View File
@@ -1,89 +0,0 @@
using FoxTube.Classes;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.ApplicationModel.Core;
using Windows.UI;
using Windows.UI.Core;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
namespace FoxTube
{
public static class Methods
{
public static void ProcessToast(string argument)
{
string[] args = argument.Split('|');
switch (args[0])
{
case "changelog":
case "inbox":
Navigation.GoToDeveloper(args[1]);
break;
case "video":
Navigation.GoToVideo(args[1]);
break;
case "channel":
Navigation.GoToChannel(args[1]);
break;
case "download":
Navigation.GoToDownloads();
break;
case "clipboard":
switch (args[1])
{
case "video":
Navigation.GoToVideo(args[2]);
break;
case "channel":
Navigation.GoToChannel(args[2]);
break;
case "playlist":
Navigation.GoToPlaylist(args[2]);
break;
}
break;
}
}
public static async Task ProcessBackgroundToast(string argument)
{
try
{
string[] args = argument.Split('|');
switch (args[0])
{
case "dcancel":
Downloads.Cancel(args[1]);
break;
case "later":
await UserManagement.AddItemToWL(args[1]);
break;
}
}
catch { }
}
public static void SetTitleBar()
{
var titleBar = ApplicationView.GetForCurrentView().TitleBar;
titleBar.ButtonBackgroundColor = Colors.Transparent;
titleBar.ButtonHoverBackgroundColor = Colors.IndianRed;
titleBar.ButtonPressedBackgroundColor = Colors.DarkRed;
titleBar.ButtonInactiveBackgroundColor = Colors.Transparent;
titleBar.ButtonInactiveForegroundColor = Colors.Gray;
titleBar.ButtonForegroundColor = Colors.White;
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;
}
}
}
-64
View File
@@ -1,64 +0,0 @@
using FoxTube.Classes;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FoxTube
{
public static class Navigation
{
public static void GoToSubscriptions()
{
}
public static void GoToSettings()
{
}
public static void GoToUploadPage()
{
}
public static void GoToSearch(SearchParameters args)
{
}
public static void GoToChannel(string id)
{
}
public static void GoToHome()
{
}
public static void GoToVideo(string id, string playlistId = null, bool incognito = false)
{
}
public static void GoToDeveloper(string id)
{
}
public static void GoToPlaylist(string id)
{
}
public static void GoToHistory()
{
}
public static void GoToDownloads()
{
}
}
}
-248
View File
@@ -1,248 +0,0 @@
using Microsoft.AppCenter;
using Microsoft.AppCenter.Analytics;
using Microsoft.Services.Store.Engagement;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using Windows.ApplicationModel.Background;
using Windows.ApplicationModel.DataTransfer;
using Windows.ApplicationModel.Resources;
using Windows.Data.Xml.Dom;
using Windows.System;
using Windows.System.Power;
using Windows.UI.Core;
using Windows.UI.Notifications;
using Windows.UI.Popups;
using Windows.UI.Xaml;
namespace FoxTube.Classes
{
public static class Processes
{
static CoreWindowActivationState windowState = CoreWindowActivationState.CodeActivated;
static ResourceLoader resources = ResourceLoader.GetForViewIndependentUse("Inbox");
static Stopwatch sw = new Stopwatch();
public static async void InitializeApp() => await CoreWindow.GetForCurrentThread().Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
CheckVersion();
RegisterToastTask();
if (Settings.DevNotifications || Settings.VideoNotifications)
RegisterTask();
else
UnregisterTask();
AppCenter.Start("45774462-9ea7-438a-96fc-03982666f39e", typeof(Analytics));
AppCenter.SetCountryCode(Settings.Region);
sw.Start();
Window.Current.Activated += (s, e) => windowState = e.WindowActivationState;
// TODO: Initialize other stuff
if (Settings.ProcessClipboard)
{
Clipboard.ContentChanged += ParseClipboard;
ParseClipboard();
}
PromptFeedback();
});
public static void SuspendApp()
{
sw.Stop();
Settings.Uptime += sw.Elapsed;
// TODO: Save other stuff
Analytics.TrackEvent("Session terminated", new Dictionary<string, string>
{
{ "Uptime", sw.Elapsed.ToString() },
{ "Total time", Settings.Uptime.ToString() }
});
}
static async void ParseClipboard(object sender = null, object e = null)
{
if (windowState != CoreWindowActivationState.Deactivated || !Settings.ProcessClipboard)
return;
try
{
string link = await Clipboard.GetContent().GetTextAsync();
if (!link.Contains("youtube") && !link.Contains("youtu.be"))
return;
string type = string.Empty;
string name = string.Empty;
if (YoutubeExplode.YoutubeClient.TryParseChannelId(link, out string id))
{
type = "channel";
name = (await new YoutubeExplode.YoutubeClient().GetChannelAsync(id)).Title;
}
else if (YoutubeExplode.YoutubeClient.TryParsePlaylistId(link, out id))
{
type = "playlist";
name = (await new YoutubeExplode.YoutubeClient().GetPlaylistAsync(id)).Title;
}
else if (YoutubeExplode.YoutubeClient.TryParseUsername(link, out id))
{
id = await new YoutubeExplode.YoutubeClient().GetChannelIdAsync(id);
type = "channel";
name = (await new YoutubeExplode.YoutubeClient().GetChannelAsync(id)).Title;
}
else if (YoutubeExplode.YoutubeClient.TryParseVideoId(link, out id))
{
type = "video";
name = (await new YoutubeExplode.YoutubeClient().GetVideoAsync(id)).Title;
}
if (string.IsNullOrWhiteSpace(id))
return;
XmlDocument toastXml = new XmlDocument();
toastXml.LoadXml($@"<toast launch='clipboard|{type}|{id}'>
<visual>
<binding template='ToastGeneric'>
<text>{resources.GetString("/Toasts/clipboardHead")}</text>
<text>{name}</text>
<text>{resources.GetString($"/Generic/{type}")}</text>
</binding>
</visual>
<actions>
<action content='{resources.GetString("/Toasts/clipboardOpen")}' arguments='clipboard|{type}|{id}'/>
</actions>
</toast>");
ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(toastXml));
}
catch { }
}
static void CheckVersion()
{
if (Settings.GetCurrentVersion() == Settings.Version)
return;
try
{
XmlDocument toast = new XmlDocument();
toast.LoadXml($@"<toast activationType='foreground' launch='changelog|{Settings.GetCurrentVersion()}'>
<visual>
<binding template='ToastGeneric'>
<image placement='hero' src='ms-appx:///Assets/WhatsNewThumb.png'/>
<image placement='appLogoOverride' hint-crop='circle' src='ms-appx:///Assets/NewsAvatar.png'/>
<text>{resources.GetString("/Inbox/changelog")}</text>
<text>{resources.GetString("/Inbox/whatsNew")} {Settings.GetCurrentVersion()}</text>
</binding>
</visual>
</toast>");
ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(toast));
Settings.Version = Settings.GetCurrentVersion();
}
catch { }
}
static async void RegisterToastTask()
{
if (BackgroundTaskRegistration.AllTasks.Any(i => i.Value.Name.Equals("foxtubeToast")))
return;
var backgroundRequest = await BackgroundExecutionManager.RequestAccessAsync();
if (backgroundRequest == BackgroundAccessStatus.DeniedBySystemPolicy ||
backgroundRequest == BackgroundAccessStatus.DeniedByUser ||
backgroundRequest == BackgroundAccessStatus.Unspecified)
return;
BackgroundTaskBuilder builder = new BackgroundTaskBuilder() { Name = "foxtubeToast" };
builder.SetTrigger(new ToastNotificationActionTrigger());
BackgroundTaskRegistration registration = builder.Register();
}
static async void RegisterTask()
{
if (BackgroundTaskRegistration.AllTasks.Any(i => i.Value.Name.Equals("foxtubeBackground")))
return;
var backgroundRequest = await BackgroundExecutionManager.RequestAccessAsync();
if (backgroundRequest == BackgroundAccessStatus.DeniedBySystemPolicy ||
backgroundRequest == BackgroundAccessStatus.DeniedByUser ||
backgroundRequest == BackgroundAccessStatus.Unspecified ||
PowerManager.EnergySaverStatus == EnergySaverStatus.On)
return;
BackgroundTaskBuilder builder = new BackgroundTaskBuilder()
{
Name = "foxtubeBackgound",
IsNetworkRequested = true,
TaskEntryPoint = "FoxTube.Background.BackgroundProcessor"
};
builder.SetTrigger(new TimeTrigger(15, false));
BackgroundTaskRegistration registration = builder.Register();
}
static void UnregisterTask()
{
if (!(BackgroundTaskRegistration.AllTasks.Values.ToList().Find(i => i.Name == "foxtubeBackground") is IBackgroundTaskRegistration task))
return;
task.Unregister(true);
}
static async void PromptFeedback()
{
if (Settings.Uptime.TotalHours >= 12 && Settings.PromptFeedback)
{
Analytics.TrackEvent("Prompting feedback", new Dictionary<string, string>
{
{ "Total uptime", Settings.Uptime.ToString() }
});
MessageDialog dialog = new MessageDialog(resources.GetString("/Dialogs/feedbackMessage"));
dialog.Commands.Add(new UICommand(resources.GetString("/Dialogs/dontAsk"), (command) => Settings.PromptFeedback = false));
dialog.Commands.Add(new UICommand(resources.GetString("/Dialogs/promptLater")));
dialog.Commands.Add(new UICommand(resources.GetString("/Dialogs/sure"), async (command) =>
{
Settings.PromptFeedback = false;
if (StoreServicesFeedbackLauncher.IsSupported())
await StoreServicesFeedbackLauncher.GetDefault().LaunchAsync();
else
await Launcher.LaunchUriAsync("mailto:feedback@xfox111.net".ToUri());
}));
dialog.DefaultCommandIndex = 2;
dialog.CancelCommandIndex = 1;
await dialog.ShowAsync();
}
if (Settings.Uptime.TotalHours >= 24 && Settings.PromptReview)
{
Analytics.TrackEvent("Prompting review", new Dictionary<string, string>
{
{ "Total uptime", Settings.Uptime.ToString() }
});
MessageDialog dialog = new MessageDialog(resources.GetString("/Dialogs/rate"));
dialog.Commands.Add(new UICommand(resources.GetString("/Dialogs/dontAsk"), (command) => Settings.PromptReview = false));
dialog.Commands.Add(new UICommand(resources.GetString("/Dialogs/promptLater")));
dialog.Commands.Add(new UICommand(resources.GetString("/Dialogs/sure"), async (command) =>
{
Settings.PromptReview = false;
await Launcher.LaunchUriAsync("ms-windows-store://review/?ProductId=9NCQQXJTDLFH".ToUri());
}));
dialog.DefaultCommandIndex = 2;
dialog.CancelCommandIndex = 1;
await dialog.ShowAsync();
}
}
}
}
-16
View File
@@ -1,16 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FoxTube.Classes
{
public class SearchParameters
{
public SearchParameters(string query)
{
}
}
}
-48
View File
@@ -1,48 +0,0 @@
using System;
using System.Net;
using Windows.Services.Store;
namespace FoxTube
{
public static class Service
{
public static bool AdsDisabled { get; private set; } = true;
public static event ProVersionStateChangedEventHandler Purchased;
public static NetworkCredential EmailCredential => new NetworkCredential("foxtube.bot@xfox111.net", "JkY39w$.7?bT57O,8k3a");
private static bool TestAds => false; //TODO: Change this bool
public static string AppId => TestAds ? "d25517cb-12d4-4699-8bdc-52040c712cab" : "9ncqqxjtdlfh";
public static string AdUnitId => TestAds ? "test" : "1100037769";
public static async void CheckAddons()
{
try
{
StoreProductQueryResult requset = await StoreContext.GetDefault().GetAssociatedStoreProductsAsync(new[] { "Durable" });
if (requset.Products["9NP1QK556625"].IsInUserCollection)
return;
AdsDisabled = false;
Purchased?.Invoke(false, requset.Products["9NP1QK556625"].Price.FormattedPrice);
}
catch { }
}
public static async void GetPro()
{
try
{
StorePurchaseResult request = await StoreContext.GetDefault().RequestPurchaseAsync("9NP1QK556625");
if (!request.Status.Belongs(StorePurchaseStatus.AlreadyPurchased, StorePurchaseStatus.Succeeded))
return;
Purchased?.Invoke(true, "");
AdsDisabled = true;
}
catch { }
}
}
}
-277
View File
@@ -1,277 +0,0 @@
using Newtonsoft.Json;
using System;
using System.Globalization;
using System.Linq;
using Windows.ApplicationModel;
using Windows.Storage;
using Windows.UI.Xaml.Controls;
namespace FoxTube.Classes
{
public static class Settings
{
public class SettingsContainer
{
public string videoQuality = "remember";
public string rememberedQuality = "1080p";
public bool videoNotifications = true;
public bool devNotifications = true;
public bool checkConnection = true;
public bool autoplay = true;
public double volume = 100;
public string language = GetLanguage();
public string relevanceLanguage = CultureInfo.InstalledUICulture.TwoLetterISOLanguageName;
public string region = CultureInfo.InstalledUICulture.Name.Split('-')[1];
public int safeSearch = 0;
public bool[] hasAccount = new bool[5] { false, false, false, false, false };
public int theme = 2;
public string version = GetCurrentVersion();
public bool mature = false;
public TimeSpan uptime = TimeSpan.FromSeconds(0);
public bool promptReview = true;
public bool promptFeedback = true;
public bool processClipboard = true;
public bool minimizeCommandbar = false;
public int selectedUser = -1;
static string GetLanguage()
{
if ((new[] { "ua", "ru", "by", "kz", "kg", "md", "lv", "ee" }).Contains(CultureInfo.InstalledUICulture.TwoLetterISOLanguageName))
return "ru-RU";
else
return "en-US";
}
}
public static string GetCurrentVersion()
{
PackageVersion ver = Package.Current.Id.Version;
return $"{ver.Major}.{ver.Minor}";
}
public static string VideoQuality
{
get => Container.videoQuality;
set
{
Container.videoQuality = value;
SaveData();
}
}
public static string RememberedQuality
{
get => Container.rememberedQuality;
set
{
Container.rememberedQuality = value;
SaveData();
}
}
public static bool VideoNotifications
{
get => Container.videoNotifications;
set
{
Container.videoNotifications = value;
SaveData();
}
}
public static bool DevNotifications
{
get => Container.devNotifications;
set
{
Container.devNotifications = value;
SaveData();
}
}
public static bool CheckConnection
{
get => Container.checkConnection;
set
{
Container.checkConnection = value;
SaveData();
}
}
public static bool Autoplay
{
get => Container.autoplay;
set
{
Container.autoplay = value;
SaveData();
}
}
public static double Volume
{
get => Container.volume;
set
{
Container.volume = value;
SaveData();
}
}
public static string Language
{
get => Container.language;
set
{
Container.language = value;
SaveData();
}
}
public static string RelevanceLanguage
{
get => Container.relevanceLanguage;
set
{
Container.relevanceLanguage = value;
SaveData();
}
}
public static string Region
{
get => Container.region;
set
{
Container.region = value;
SaveData();
}
}
public static int SafeSearch
{
get => Container.safeSearch;
set
{
Container.safeSearch = value;
SaveData();
}
}
public static int SelectedUser
{
get => Container.selectedUser;
set
{
Container.selectedUser = value;
SaveData();
}
}
public static bool[] HasAccount => Container.hasAccount;
public static void SetAccount(int index, bool isAuthorized)
{
HasAccount[index] = isAuthorized;
SaveData();
}
public static int Theme
{
get => Container.theme;
set
{
Container.theme = value;
SaveData();
}
}
public static string Version
{
get => Container.version;
set
{
Container.version = value;
SaveData();
}
}
public static bool Mature
{
get => Container.mature;
set
{
Container.mature = value;
SaveData();
}
}
public static TimeSpan Uptime
{
get => Container.uptime;
set
{
Container.uptime = value;
SaveData();
}
}
public static bool PromptReview
{
get => Container.promptReview;
set
{
Container.promptReview = value;
SaveData();
}
}
public static bool PromptFeedback
{
get => Container.promptFeedback;
set
{
Container.promptFeedback = value;
SaveData();
}
}
public static bool ProcessClipboard
{
get => Container.processClipboard;
set
{
Container.processClipboard = value;
SaveData();
}
}
public static AppBarClosedDisplayMode AppBarClosedMode
{
get => Container.minimizeCommandbar ? AppBarClosedDisplayMode.Minimal : AppBarClosedDisplayMode.Compact;
set
{
Container.minimizeCommandbar = value == AppBarClosedDisplayMode.Minimal;
SaveData();
}
}
//Settings storage
static readonly ApplicationDataContainer storage = ApplicationData.Current.RoamingSettings;
static SettingsContainer Container = new SettingsContainer();
/// <summary>
/// Loads saved settings from storage
/// </summary>
public static void LoadData()
{
try
{
Container = JsonConvert.DeserializeObject<SettingsContainer>(storage.Values["settings"] as string);
}
catch
{
Container = new SettingsContainer();
SaveData();
}
}
static void SaveData() =>
storage.Values["settings"] = JsonConvert.SerializeObject(Container);
}
}
-328
View File
@@ -1,328 +0,0 @@
using Google.Apis.YouTube.v3.Data;
using YoutubeExplode.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Google.Apis.Oauth2.v2.Data;
using YoutubeExplode;
using System.Net.Http;
using Google.Apis.Auth.OAuth2.Responses;
using Newtonsoft.Json;
using Windows.UI.Xaml;
using Windows.UI.Popups;
namespace FoxTube.Classes
{
public class User
{
public event SubscriptionChangedEventHandler SubscriptionsChanged;
public List<Subscription> Subscriptions { get; } = new List<Subscription>();
public List<YoutubeExplode.Models.Video> WatchLater { get; private set; }
public List<YoutubeExplode.Models.Video> WebHistory { get; private set; }
public List<object> AppHistory { get; }
public Userinfoplus UserInfo { get; private set; }
public TokenResponse Tokens { get; private set; }
public YoutubeClient YoutubeClient { get; }
public string AccountId => Channel.Id;
public Google.Apis.YouTube.v3.Data.Channel Channel { get; private set; }
HttpClient HttpClient { get; }
DispatcherTimer timer = new DispatcherTimer();
public async Task Deauthenticate() =>
await HttpClient.GetAsync($"https://accounts.google.com/o/oauth2/revoke?token={Tokens.AccessToken}");
public User(TokenResponse tokens)
{
Tokens = tokens;
HttpClient = new HttpClient();
HttpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", Tokens.AccessToken);
YoutubeClient = new YoutubeClient(HttpClient);
timer.Interval = TimeSpan.FromSeconds((int)tokens.ExpiresInSeconds);
timer.Tick += Timer_Tick;
timer.Start();
}
async void Timer_Tick(object sender, object e)
{
Tokens = await UserManagement.RefreshToken();
timer.Interval = TimeSpan.FromSeconds((int)Tokens.ExpiresInSeconds);
timer.Start();
}
public async Task Initialize()
{
string responseRaw = await HttpClient.GetStringAsync("https://www.googleapis.com/oauth2/v2/userinfo");
dynamic response = JsonConvert.DeserializeObject(responseRaw);
UserInfo = new Userinfoplus
{
Email = this.GuardFromNull((string)response.email),
FamilyName = this.GuardFromNull((string)response.family_name),
Gender = this.GuardFromNull((string)response.gender),
GivenName = this.GuardFromNull((string)response.given_name),
Hd = this.GuardFromNull((string)response.hd),
Id = this.GuardFromNull((string)response.id),
Link = this.GuardFromNull((string)response.link),
Locale = this.GuardFromNull((string)response.locale),
Name = this.GuardFromNull((string)response.name),
Picture = this.GuardFromNull((string)response.picture),
VerifiedEmail = true //As it said in documentation it's always true because it applies to primary e-mail
};
string nextToken = null;
do
{
string query = $"https://www.googleapis.com/youtube/v3/subscriptions?part=snippet&maxResults=50&mine=true&order=relevance&access_token={Tokens.AccessToken}{(string.IsNullOrWhiteSpace(nextToken) ? "" : "&pageToken=" + nextToken)}";
HttpResponseMessage r = await HttpClient.GetAsync(query);
MessageDialog dialog = new MessageDialog(await r.Content.ReadAsStringAsync(), r.StatusCode.ToString());
await dialog.ShowAsync();
responseRaw = await HttpClient.GetStringAsync(query);
response = JsonConvert.DeserializeObject(responseRaw);
nextToken = response.nextPageToken;
foreach (dynamic item in response.items)
Subscriptions.Add(new Subscription
{
Snippet = new SubscriptionSnippet
{
ChannelId = item.channelId,
ChannelTitle = item.channelTitle,
Description = item.description,
PublishedAt = item.publishedAt,
Title = item.title,
Thumbnails = new ThumbnailDetails
{
Default__ = new Thumbnail
{
Height = item.thumbnails["default"].height,
Width = item.thumbnails["default"].width,
Url = item.thumbnails["default"].url,
},
Medium = new Thumbnail
{
Height = item.thumbnails.medium.height,
Width = item.thumbnails.medium.width,
Url = item.thumbnails.medium.url,
},
High = new Thumbnail
{
Height = item.thumbnails.high.height,
Width = item.thumbnails.high.width,
Url = item.thumbnails.high.url,
}
},
ResourceId = new ResourceId
{
ChannelId = item.resourceId.channelId,
Kind = item.resourceId.kind
}
},
ETag = item.etag,
Id = item.id,
Kind = "youtube#subscription"
});
}
while (!string.IsNullOrWhiteSpace(nextToken));
responseRaw = await HttpClient.GetStringAsync("https://www.googleapis.com/youtube/v3/channels?mine=true&part=contentDetails,snippet,image");
response = JsonConvert.DeserializeObject(responseRaw);
Channel = new Google.Apis.YouTube.v3.Data.Channel
{
Kind = "youtube#channel",
ETag = response.items[0].etag,
Id = response.items[0].id,
ContentDetails = new ChannelContentDetails
{
RelatedPlaylists = new ChannelContentDetails.RelatedPlaylistsData
{
Likes = response.items[0].contentDetails.relatedPlaylists.likes,
Favorites = response.items[0].contentDetails.relatedPlaylists.favorites,
Uploads = response.items[0].contentDetails.relatedPlaylists.uploads,
WatchHistory = "HL",
WatchLater = "WL"
}
},
Snippet = new ChannelSnippet
{
Title = response.items[0].snippet.title,
Description = response.items[0].snippet.description,
CustomUrl = response.items[0].snippet.customUrl,
PublishedAt = response.items[0].snippet.publishedAt,
DefaultLanguage = response.items[0].snippet.defaultLanguage,
Country = response.items[0].snippet.country,
Localized = new ChannelLocalization
{
Description = response.items[0].snippet.localized.description,
Title = response.items[0].snippet.localized.title,
},
Thumbnails = new ThumbnailDetails
{
Default__ = new Thumbnail
{
Height = response.items[0].snippet.thumbnails["default"].height,
Width = response.items[0].snippet.thumbnails["default"].width,
Url = response.items[0].snippet.thumbnails["default"].url,
},
Medium = new Thumbnail
{
Height = response.items[0].snippet.thumbnails.medium.height,
Width = response.items[0].snippet.thumbnails.medium.width,
Url = response.items[0].snippet.thumbnails.medium.url,
},
High = new Thumbnail
{
Height = response.items[0].snippet.thumbnails.high.height,
Width = response.items[0].snippet.thumbnails.high.width,
Url = response.items[0].snippet.thumbnails.high.url,
}
}
},
BrandingSettings = new ChannelBrandingSettings
{
Channel = new ChannelSettings
{
Country = response.items[0].brandingSettings.channel.country,
DefaultLanguage = response.items[0].brandingSettings.channel.defaultLanguage,
DefaultTab = response.items[0].brandingSettings.channel.defaultTab,
Description = response.items[0].brandingSettings.channel.description,
FeaturedChannelsTitle = response.items[0].brandingSettings.channel.featuredChannelsTitle,
FeaturedChannelsUrls = response.items[0].brandingSettings.channel.featuredChannelsUrls,
Keywords = response.items[0].brandingSettings.channel.keywords,
ModerateComments = response.items[0].brandingSettings.channel.moderateComments,
ProfileColor = response.items[0].brandingSettings.channel.profileColor,
ShowBrowseView = response.items[0].brandingSettings.channel.showBrowseView,
ShowRelatedChannels = response.items[0].brandingSettings.channel.showRelatedChannels,
Title = response.items[0].brandingSettings.channel.title,
TrackingAnalyticsAccountId = response.items[0].brandingSettings.channel.trackingAnalyticsAccountId,
UnsubscribedTrailer = response.items[0].brandingSettings.channel.unsubscribedTrailer
},
Image = new ImageSettings
{
BannerImageUrl = response.items[0].brandingSettings.image.bannerImageUrl,
BannerMobileImageUrl = response.items[0].brandingSettings.image.bannerMobileImage.Url,
WatchIconImageUrl = response.items[0].brandingSettings.image.watchIconImageUrl,
TrackingImageUrl = response.items[0].brandingSettings.image.trackingImageUrl,
BannerTabletLowImageUrl = response.items[0].brandingSettings.image.bannerTabletLowImageUrl,
BannerTabletImageUrl = response.items[0].brandingSettings.image.bannerTabletImageUrl,
BannerTabletHdImageUrl = response.items[0].brandingSettings.image.bannerTabletHdImageUrl,
BannerTabletExtraHdImageUrl = response.items[0].brandingSettings.image.bannerTabletExtraHdImageUrl,
BannerMobileLowImageUrl = response.items[0].brandingSettings.image.bannerMobileLowImageUrl,
BannerMobileMediumHdImageUrl = response.items[0].brandingSettings.image.bannerMobileMediumHdImageUrl,
BannerMobileHdImageUrl = response.items[0].brandingSettings.image.bannerMobileHdImageUrl,
BannerMobileExtraHdImageUrl = response.items[0].brandingSettings.image.bannerMobileExtraHdImageUrl,
BannerTvLowImageUrl = response.items[0].brandingSettings.image.bannerTvLowImageUrl,
BannerTvImageUrl = response.items[0].brandingSettings.image.bannerTvImageUrl,
BannerTvMediumImageUrl = response.items[0].brandingSettings.image.bannerTvMediumImageUrl,
BannerTvHighImageUrl = response.items[0].brandingSettings.image.bannerTvHighImageUrl,
BannerExternalUrl = response.items[0].brandingSettings.image.bannerExternalUrl
},
Hints = response.items[0].brandingSettings.hints
}
};
WatchLater = (await YoutubeClient.GetPlaylistAsync("WL")).Videos.ToList();
WebHistory = (await YoutubeClient.GetPlaylistAsync("HL")).Videos.ToList();
}
/// <summary>
/// Subscribes or unsibscribes authorized user from the channel
/// </summary>
/// <param name="id">The ID of channel which has to be added/removed</param>
/// <returns>Returns 'true' if channel is in subscriptions now; 'false' if it's not</returns>
public async Task<bool> ChangeSubscriptionState(string id)
{
if (Subscriptions.Find(i => i.Snippet.ResourceId.ChannelId == id) is Subscription subscription)
{
try
{
HttpResponseMessage response = await HttpClient.DeleteAsync("https://www.googleapis.com/youtube/v3/subscriptions?id=" + subscription.Id);
if (response.StatusCode != System.Net.HttpStatusCode.NoContent)
return true;
}
catch { return true; }
SubscriptionsChanged?.Invoke("remove", subscription);
Subscriptions.Remove(subscription);
return false;
}
else
{
Dictionary<string, string> body = new Dictionary<string, string>
{
{ "snippet", " { \"resourceId\" : { \"channelId\" : " + id + " } }" }
};
HttpResponseMessage response = await HttpClient.PostAsync("https://www.googleapis.com/youtube/v3/subscriptions?part=snippet", new FormUrlEncodedContent(body));
if (!response.IsSuccessStatusCode)
return false;
dynamic raw = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
Subscription sub = new Subscription
{
Snippet = new SubscriptionSnippet
{
ChannelId = raw.channelId,
ChannelTitle = raw.channelTitle,
Description = raw.description,
PublishedAt = raw.publishedAt,
Title = raw.title,
Thumbnails = new ThumbnailDetails
{
Default__ = new Thumbnail
{
Height = raw.thumbnails["default"].height,
Width = raw.thumbnails["default"].width,
Url = raw.thumbnails["default"].url,
},
Medium = new Thumbnail
{
Height = raw.thumbnails.medium.height,
Width = raw.thumbnails.medium.width,
Url = raw.thumbnails.medium.url,
},
High = new Thumbnail
{
Height = raw.thumbnails.high.height,
Width = raw.thumbnails.high.width,
Url = raw.thumbnails.high.url,
}
},
ResourceId = new ResourceId
{
ChannelId = raw.resourceId.channelId,
Kind = raw.resourceId.channelId
}
},
ETag = raw.etag,
Id = raw.id,
Kind = "youtube#subscription"
};
Subscriptions.Add(sub);
SubscriptionsChanged?.Invoke("add", sub);
return true;
}
}
public void Dispose()
{
timer.Stop();
timer.Tick -= Timer_Tick;
}
}
}
-173
View File
@@ -1,173 +0,0 @@
using FoxTube.Classes;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Auth.OAuth2.Flows;
using Google.Apis.Auth.OAuth2.Responses;
using Google.Apis.Oauth2.v2.Data;
using Google.Apis.Services;
using Google.Apis.YouTube.v3;
using Microsoft.AppCenter.Analytics;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Security.Credentials;
using Windows.Storage;
using YoutubeExplode;
namespace FoxTube
{
public static class UserManagement
{
static ApplicationDataContainer storage = ApplicationData.Current.LocalSettings;
public static event AuthorizationChangedEventHandler AuthorizationStateChanged;
public static event SubscriptionChangedEventHandler SubscriptionsChanged;
static string[] Secrets => new string[5]
{
"1096685398208-bktbnoe59bt69nhnrrb5j0tpld58orsv.apps.googleusercontent.com",
"1096685398208-u4a2pgpcn27c2kb3ud2eck1oh2ot68vs.apps.googleusercontent.com",
"1096685398208-a65ebfpqnhl7u3iipfmfe5cif6j07db3.apps.googleusercontent.com",
"1096685398208-in0gco58ckrumgjuo68st55fvb0ntllj.apps.googleusercontent.com",
"1096685398208-7gd029f6tku4sc756v2338g1f0fu4k2k.apps.googleusercontent.com"
};
static YouTubeService NoAuthService { get; } = new YouTubeService(new BaseClientService.Initializer
{
ApiKey = "AIzaSyBgHrCnrlzlVmk0cJKL8RqP9Y8x6XSuk_0",
ApplicationName = "FoxTube"
});
static YoutubeClient NoAuthClient { get; } = new YoutubeClient();
public static YoutubeClient YoutubeClient => Current?.YoutubeClient ?? NoAuthClient;
public static bool IsAuthorized => Current != null;
public static User Current { get; set; }
public static Userinfoplus[] UserInfos { get; private set; } = new Userinfoplus[5];
static string[] tokens = new string[5];
public static async void Initialize()
{
if(storage.Values["users"] != null)
UserInfos = JsonConvert.DeserializeObject<Userinfoplus[]>(storage.Values["users"] as string);
PasswordVault vault = new PasswordVault();
foreach (Userinfoplus info in UserInfos)
{
if (info == null)
continue;
PasswordCredential credential = vault.Retrieve("FoxTube", info.Id);
credential.RetrievePassword();
tokens[UserInfos.ToList().IndexOf(info)] = credential.Password;
}
if(Settings.SelectedUser >= 0)
{
try { Current = new User(await Authenticator.RefreshToken(Secrets[Settings.SelectedUser], tokens[Settings.SelectedUser])); }
catch { Current = new User(await Authenticator.Authorize(Secrets[Settings.SelectedUser])); }
await Current.Initialize();
Current.SubscriptionsChanged += SubscriptionsChanged;
UserInfos[Settings.SelectedUser] = Current.UserInfo;
}
AuthorizationStateChanged?.Invoke(Settings.SelectedUser > -1);
}
public static async Task AddItemToWL(string id)
{
}
public static async void ChangeAccount(Userinfoplus newUser)
{
Current.Dispose();
Current.SubscriptionsChanged -= SubscriptionsChanged;
Current = null;
Settings.SelectedUser = UserInfos.ToList().IndexOf(newUser);
try { Current = new User(await Authenticator.RefreshToken(Secrets[Settings.SelectedUser], tokens[Settings.SelectedUser])); }
catch { Current = new User(await Authenticator.Authorize(Secrets[Settings.SelectedUser])); }
await Current.Initialize();
Current.SubscriptionsChanged += SubscriptionsChanged;
UserInfos[Settings.SelectedUser] = Current.UserInfo;
AuthorizationStateChanged?.Invoke(true);
}
public static async void CreateNew()
{
Analytics.TrackEvent("Initialized authorization sequence");
try
{
for (int k = 0; k < 5; k++)
if (tokens[k] == null)
{
TokenResponse response = await Authenticator.Authorize(Secrets[k]);
tokens[k] = response.RefreshToken;
Current?.Dispose();
if (Current != null)
Current.SubscriptionsChanged -= SubscriptionsChanged;
Current = new User(response);
await Current.Initialize();
Current.SubscriptionsChanged += SubscriptionsChanged;
UserInfos[k] = Current.UserInfo;
storage.Values["users"] = JsonConvert.SerializeObject(UserInfos);
PasswordVault vault = new PasswordVault();
vault.Add(new PasswordCredential("FoxTube", Current.UserInfo.Id, response.RefreshToken));
Settings.SelectedUser = k;
AuthorizationStateChanged?.Invoke(true);
break;
}
}
catch { }
}
public static async void Logout()
{
Current.Dispose();
Current.SubscriptionsChanged -= SubscriptionsChanged;
await Current.Deauthenticate();
PasswordVault vault = new PasswordVault();
vault.Remove(vault.Retrieve("FoxTube", Current.UserInfo.Id));
UserInfos[Settings.SelectedUser] = null;
tokens[Settings.SelectedUser] = null;
storage.Values["users"] = JsonConvert.SerializeObject(UserInfos);
Current = null;
Settings.SelectedUser = -1;
for (int i = 0; i < 5; i++)
if (UserInfos[i] != null)
{
Settings.SelectedUser = i;
break;
}
if (Settings.SelectedUser >= 0)
{
try { Current = new User(await Authenticator.RefreshToken(Secrets[Settings.SelectedUser], tokens[Settings.SelectedUser])); }
catch { Current = new User(await Authenticator.Authorize(Secrets[Settings.SelectedUser])); }
await Current.Initialize();
Current.SubscriptionsChanged += SubscriptionsChanged;
UserInfos[Settings.SelectedUser] = Current.UserInfo;
}
AuthorizationStateChanged?.Invoke(Settings.SelectedUser > -1);
}
public static async Task<TokenResponse> RefreshToken() =>
await Authenticator.RefreshToken(Secrets[Settings.SelectedUser], tokens[Settings.SelectedUser]);
}
}
-19
View File
@@ -1,19 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Controls;
namespace FoxTube
{
public class ViewModel : Page
{
public List<Microsoft.UI.Xaml.Controls.NavigationViewItem> PivotItems { get; } = new List<Microsoft.UI.Xaml.Controls.NavigationViewItem>();
public object Parameter { get; private set; }
public void PivotChanged(int index) { }
}
}
+49 -69
View File
@@ -1,83 +1,63 @@
<StackPanel
<AppBarButton
x:Class="FoxTube.Controls.AccountManager"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Label="Michael 'XFox' Gordeev"
xmlns:ui="using:Microsoft.UI.Xaml.Controls"
xmlns:data="using:Google.Apis.Oauth2.v2.Data"
Orientation="Horizontal">
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
Style="{StaticResource AppBarButtonRevealStyle}">
<ui:NavigationViewItem Width="42" Visibility="Visible" Name="manager" Padding="0" Tapped="Manager_Tapped">
<ui:NavigationViewItem.ContextFlyout>
<Flyout>
<Grid Width="300" Margin="-10">
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition/>
</Grid.RowDefinitions>
<AppBarButton.Icon>
<FontIcon Glyph="&#xE1E2;"/>
</AppBarButton.Icon>
<Image Stretch="UniformToFill" Name="banner" MaxHeight="60" Source="https://yt3.ggpht.com/TckH7MhPH7UcxPnHeEj6R78xe1uOmrlHdUD1Usy7sr36xLDzl86NxAyfmDOIUrxl6kpiBgtKgA=w2276-fcrop64=1,00005a57ffffa5a8-nd-c0xffffffff-rj-k-no"/>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<AppBarButton.Flyout>
<Flyout>
<StackPanel Margin="-12" Width="300">
<Grid Height="60">
<controls:ImageEx Stretch="UniformToFill"
PlaceholderSource="/Assets/DefaultChannelBanner.png"
PlaceholderStretch="UniformToFill"/>
<Grid Padding="10" ColumnSpacing="20">
<Grid.Background>
<SolidColorBrush Color="Black" Opacity=".5"/>
<SolidColorBrush Color="Black" Opacity=".7"/>
</Grid.Background>
<PersonPicture HorizontalAlignment="Left" Margin="5" Height="50" Name="avatar"/>
<StackPanel VerticalAlignment="Center" Grid.Column="1">
<TextBlock Text="Michael Gordeev" FontWeight="Bold" Name="name"/>
<TextBlock Text="michael.xfox@outlook.com" Style="{StaticResource CaptionTextBlockStyle}" Name="email"/>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<PersonPicture Height="40"/>
<StackPanel Grid.Column="1">
<TextBlock Text="Michael 'XFox' Gordeev"/>
<TextBlock Text="michael.xfox@outlook.com"/>
</StackPanel>
<ui:NavigationViewItem Grid.Column="2" Width="42" Icon="BlockContact" Foreground="Red" Tapped="Logout_Tapped"/>
</Grid>
<ui:NavigationViewList Grid.Row="1">
<ui:NavigationViewItem Content="My channel" Icon="Contact" Tapped="MyChannel_Tapped"/>
<ui:NavigationViewItem Content="Upload a video" Icon="Upload" Tapped="Upload_Tapped"/>
<ui:NavigationViewItemSeparator/>
</ui:NavigationViewList>
<ui:NavigationViewList Name="accountsList" ItemClick="AccountsList_ItemClick">
<ui:NavigationViewList.ItemTemplate>
<DataTemplate x:DataType="data:Userinfoplus">
<StackPanel Orientation="Horizontal" Padding="5" Margin="-5,0,0,0">
<PersonPicture Height="20" Margin="-5,0,15,0">
<PersonPicture.ProfilePicture>
<BitmapImage UriSource="{Binding Picture}" DecodePixelHeight="20" DecodePixelWidth="20"/>
</PersonPicture.ProfilePicture>
</PersonPicture>
<StackPanel>
<TextBlock FontSize="14" Text="{Binding Name}"/>
<TextBlock Text="{Binding Email}" FontSize="11" Margin="0,-4,0,0"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ui:NavigationViewList.ItemTemplate>
<ui:NavigationViewList>
</ui:NavigationViewList>
<ui:NavigationViewItem Content="Add account" Icon="Add" Tapped="AddAccount_Tapped"/>
<ui:NavigationViewItemSeparator/>
<ui:NavigationViewItem Name="removeAds" Content="Remove ads (5$)" Icon="Shop" Tapped="RemoveAds_Tapped"/>
<ui:NavigationViewItem Content="Settings" Icon="Setting" Tapped="Settings_Click"/>
</ui:NavigationViewList>
</Grid>
</Flyout>
</ui:NavigationViewItem.ContextFlyout>
<PersonPicture Height="25" Margin="-8,0,0,0" Name="icon"/>
</ui:NavigationViewItem>
<ui:NavigationViewItem Width="42" Name="account" Tapped="Manager_Tapped" Icon="AddFriend">
<ui:NavigationViewItem.ContextFlyout>
<ui:MenuBarItemFlyout>
<MenuFlyoutItem Icon="Add" Text="Add new account" Click="SignIn_Click"/>
<MenuFlyoutItem Icon="Setting" Text="Settings" Click="Settings_Click"/>
</ui:MenuBarItemFlyout>
</ui:NavigationViewItem.ContextFlyout>
</ui:NavigationViewItem>
</StackPanel>
<ui:NavigationViewList>
<ui:NavigationViewItem Icon="Contact" Content="My channel"/>
<ui:NavigationViewItem Icon="Upload" Content="Upload a video"/>
<ui:NavigationViewItem Content="Start a broadcast">
<ui:NavigationViewItem.Icon>
<FontIcon Glyph="&#xE93E;"/>
</ui:NavigationViewItem.Icon>
</ui:NavigationViewItem>
<ui:NavigationViewItem Content="Creator Stuido">
<ui:NavigationViewItem.Icon>
<FontIcon Glyph="&#xE2B1;"/>
</ui:NavigationViewItem.Icon>
</ui:NavigationViewItem>
<ui:NavigationViewItemSeparator/>
<ui:NavigationViewItem Content="Sign out" Foreground="Red">
<ui:NavigationViewItem.Icon>
<FontIcon Glyph="&#xE1E0;"/>
</ui:NavigationViewItem.Icon>
</ui:NavigationViewItem>
</ui:NavigationViewList>
</StackPanel>
</Flyout>
</AppBarButton.Flyout>
</AppBarButton>
+2 -74
View File
@@ -1,11 +1,8 @@
using Google.Apis.Oauth2.v2.Data;
using Microsoft.AppCenter.Analytics;
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.ApplicationModel.Resources;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
@@ -14,86 +11,17 @@ using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Imaging;
using Windows.UI.Xaml.Navigation;
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
namespace FoxTube.Controls
{
public sealed partial class AccountManager : StackPanel
public sealed partial class AccountManager : AppBarButton
{
readonly ResourceLoader resources = ResourceLoader.GetForCurrentView("Main");
public AccountManager()
{
InitializeComponent();
Service.Purchased += (purchased, price) =>
{
removeAds.Visibility = purchased ? Visibility.Collapsed : Visibility.Visible;
removeAds.Content = $"{resources.GetString("/Main/adsFree/Content")} ({price})";
};
}
void SignIn_Click(object sender, RoutedEventArgs e) =>
UserManagement.CreateNew();
void Logout_Click(object sender, RoutedEventArgs e)
{
manager.ContextFlyout.Hide();
UserManagement.Logout();
}
public async void Logged() => await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
account.Visibility = Visibility.Collapsed;
ToolTipService.SetToolTip(manager, $"{UserManagement.Current.UserInfo.Name} ({UserManagement.Current.UserInfo.Email})");
name.Text = UserManagement.Current.UserInfo.Name;
email.Text = UserManagement.Current.UserInfo.Email;
banner.Source = new BitmapImage(UserManagement.Current.Channel.BrandingSettings.Image.BannerMobileLowImageUrl.ToUri());
avatar.ProfilePicture = new BitmapImage(UserManagement.Current.UserInfo.Picture.ToUri()) { DecodePixelHeight = 65, DecodePixelWidth = 65 };
icon.ProfilePicture = new BitmapImage(UserManagement.Current.UserInfo.Picture.ToUri()) { DecodePixelHeight = 25, DecodePixelWidth = 25 };
foreach (Userinfoplus user in UserManagement.UserInfos)
if (user != UserManagement.Current.UserInfo)
accountsList.Items.Add(user);
manager.Visibility = Visibility.Visible;
});
public void Quit()
{
manager.Visibility = Visibility.Collapsed;
account.Visibility = Visibility.Visible;
}
void Manager_Tapped(object sender, TappedRoutedEventArgs e) =>
(sender as Microsoft.UI.Xaml.Controls.NavigationViewItem).ContextFlyout.ShowAt(sender as FrameworkElement);
void Settings_Click(object sender, RoutedEventArgs e) =>
Navigation.GoToSettings();
void Settings_Click(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToSettings();
void RemoveAds_Tapped(object sender, TappedRoutedEventArgs e) =>
Service.GetPro();
void Upload_Tapped(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToUploadPage();
void MyChannel_Tapped(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToChannel(UserManagement.Current.AccountId);
void AccountsList_ItemClick(object sender, ItemClickEventArgs e) =>
UserManagement.ChangeAccount(e.ClickedItem as Userinfoplus);
void AddAccount_Tapped(object sender, TappedRoutedEventArgs e) =>
UserManagement.CreateNew();
void Logout_Tapped(object sender, TappedRoutedEventArgs e) =>
UserManagement.Logout();
}
}
+59
View File
@@ -0,0 +1,59 @@
<UserControl
x:Class="FoxTube.Controls.Cards.AdvertCard"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
xmlns:Windows10version1809="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 7)"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400"
HorizontalAlignment="Stretch"
Margin="3"
SizeChanged="UserControl_SizeChanged">
<controls:DropShadowPanel BlurRadius="10" ShadowOpacity=".5"
OffsetX="2" OffsetY="2"
Color="Black"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch">
<Button Background="{ThemeResource SystemControlBackgroundChromeMediumBrush}" Style="{StaticResource ButtonRevealStyle}" Windows10version1809:CornerRadius="5" Padding="0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" RowSpacing="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="20"/>
<RowDefinition/>
</Grid.RowDefinitions>
<controls:ImageEx PlaceholderStretch="UniformToFill" CornerRadius="5,5,0,0" PlaceholderSource="/Assets/DefaultVideoThumbnail.png"/>
<controls:DropShadowPanel VerticalAlignment="Top" HorizontalAlignment="Left" Margin="5" OffsetX="2" OffsetY="2">
<StackPanel Padding="5,2,5,3" Background="Orange" CornerRadius="5">
<TextBlock Text="Sponsored content" Foreground="Black" FontSize="12"/>
</StackPanel>
</controls:DropShadowPanel>
<controls:DropShadowPanel VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="5,10" OffsetX="2" OffsetY="2">
<StackPanel Padding="5,2,5,3" Background="Yellow" CornerRadius="5">
<TextBlock Text="Call to action" Foreground="Black" FontSize="12"/>
</StackPanel>
</controls:DropShadowPanel>
<Grid Grid.Row="1" ColumnSpacing="10" Margin="10,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<controls:ImageEx CornerRadius="999" BorderThickness="3" BorderBrush="{ThemeResource SystemControlBackgroundChromeMediumBrush}" Background="Red"
Width="50" Height="50" VerticalAlignment="Bottom" Margin="0,-30,0,0" PlaceholderSource="/Assets/Icons/Contact.png" PlaceholderStretch="UniformToFill"/>
<TextBlock Text="██████████" Grid.Column="1"/>
<TextBlock Text="██████████" Grid.Column="2"/>
</Grid>
<TextBlock Margin="10,0" Grid.Row="2" MaxLines="2" TextTrimming="CharacterEllipsis" TextWrapping="WrapWholeWords" Text="██████████"/>
</Grid>
</Button>
</controls:DropShadowPanel>
</UserControl>
+14
View File
@@ -0,0 +1,14 @@
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace FoxTube.Controls.Cards
{
public sealed partial class AdvertCard : UserControl
{
public AdvertCard() =>
InitializeComponent();
void UserControl_SizeChanged(object sender, SizeChangedEventArgs e) =>
Height = .75 * ActualWidth;
}
}
+89
View File
@@ -0,0 +1,89 @@
<UserControl
x:Class="FoxTube.Controls.Cards.ChannelCard"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
xmlns:Windows10version1809="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 7)"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400"
HorizontalAlignment="Stretch"
Margin="3"
SizeChanged="UserControl_SizeChanged">
<controls:DropShadowPanel BlurRadius="10" ShadowOpacity=".5"
OffsetX="2" OffsetY="2"
Color="Black"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch">
<Button Background="{ThemeResource SystemControlBackgroundChromeMediumBrush}" Style="{StaticResource ButtonRevealStyle}" Windows10version1809:CornerRadius="5" Padding="0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" RowSpacing="5">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<controls:ImageEx Stretch="UniformToFill" PlaceholderStretch="UniformToFill" CornerRadius="5,5,0,0" PlaceholderSource="/Assets/DefaultChannelBanner.png"/>
<controls:DropShadowPanel VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="5,10" OffsetX="2" OffsetY="2">
<StackPanel Padding="5,2,5,3" Background="Red" BorderThickness="1" BorderBrush="White" CornerRadius="5" Orientation="Horizontal">
<FontIcon Glyph="&#xEC44;" VerticalAlignment="Center" Foreground="White" FontSize="12" Margin="0,0,5,0"/>
<TextBlock Name="liveContent" Text="LIVE" VerticalAlignment="Center" Foreground="White" FontSize="12" FontWeight="Bold"/>
</StackPanel>
</controls:DropShadowPanel>
<Grid Grid.Row="1" ColumnSpacing="20" VerticalAlignment="Center" Margin="10,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<controls:ImageEx CornerRadius="999" Background="Red"
Width="75" Height="75" PlaceholderSource="/Assets/Icons/Contact.png" PlaceholderStretch="UniformToFill"/>
<StackPanel Grid.Column="1" VerticalAlignment="Center">
<TextBlock Text="██████████" Style="{StaticResource SubtitleTextBlockStyle}"/>
<TextBlock Text="██████ • ██████"/>
<Grid ColumnSpacing="2" Margin="0,5,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="40"/>
</Grid.ColumnDefinitions>
<Button Style="{StaticResource ButtonRevealStyle}" Height="35" Background="Red" Foreground="White" HorizontalAlignment="Stretch" Content="Subscribe"/>
<Button Style="{StaticResource ButtonRevealStyle}" Height="35" Background="Red" Foreground="White" HorizontalAlignment="Stretch" Grid.Column="1">
<FontIcon Glyph="&#xEA8F;"/>
</Button>
</Grid>
</StackPanel>
</Grid>
<TextBlock Margin="10" Grid.Row="2" MaxLines="4" TextTrimming="CharacterEllipsis" TextWrapping="WrapWholeWords" Text="██████████"/>
</Grid>
<Button.ContextFlyout>
<MenuFlyout>
<MenuFlyoutItem Icon="Play" Text="Play" Name="play"/>
<MenuFlyoutItem Text="Play incognito" Name="incognito">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE727;"/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutItem Icon="Contact" Text="View channel" Name="viewChannel" />
<MenuFlyoutSeparator/>
<MenuFlyoutItem Icon="Link" Text="Copy link" Name="getLink"/>
<MenuFlyoutItem Icon="Globe" Text="Open in browser" Name="inBrowser"/>
<MenuFlyoutItem Icon="Share" Text="Share" Name="share"/>
<MenuFlyoutSeparator/>
<MenuFlyoutSubItem Icon="Download" Text="Download" Name="download"/>
<MenuFlyoutSubItem Icon="Add" Text="Add to" Name="addTo">
<MenuFlyoutItem Text="New playlist" Name="newPlaylist" Icon="Add"/>
<ToggleMenuFlyoutItem Text="Watch later" Name="wl" Icon="Clock"/>
<MenuFlyoutSeparator/>
</MenuFlyoutSubItem>
<MenuFlyoutItem Text="Remove from playlist" Icon="Delete" Visibility="Visible" Foreground="Red" Name="delete"/>
</MenuFlyout>
</Button.ContextFlyout>
</Button>
</controls:DropShadowPanel>
</UserControl>
@@ -0,0 +1,14 @@
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace FoxTube.Controls.Cards
{
public sealed partial class ChannelCard : UserControl
{
public ChannelCard() =>
InitializeComponent();
void UserControl_SizeChanged(object sender, SizeChangedEventArgs e) =>
Height = .75 * ActualWidth;
}
}
+69
View File
@@ -0,0 +1,69 @@
<UserControl
x:Class="FoxTube.Controls.Cards.PlaylistCard"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
xmlns:Windows10version1809="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 7)"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400"
HorizontalAlignment="Stretch"
Margin="3"
SizeChanged="UserControl_SizeChanged">
<controls:DropShadowPanel BlurRadius="10" ShadowOpacity=".5"
OffsetX="2" OffsetY="2"
Color="Black"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch">
<Button Background="{ThemeResource SystemControlBackgroundChromeMediumBrush}" Style="{StaticResource ButtonRevealStyle}" Windows10version1809:CornerRadius="5" Padding="0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" RowSpacing="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="20"/>
<RowDefinition/>
</Grid.RowDefinitions>
<controls:ImageEx PlaceholderStretch="UniformToFill" CornerRadius="5,5,0,0" PlaceholderSource="/Assets/DefaultVideoThumbnail.png"/>
<Grid HorizontalAlignment="Right" Width="100">
<Grid.Background>
<AcrylicBrush TintColor="Black" TintOpacity=".5"/>
</Grid.Background>
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
<FontIcon HorizontalAlignment="Center" Foreground="White" Glyph="&#xE90B;" FontSize="30"/>
<TextBlock Foreground="White" Text="██" HorizontalAlignment="Center" FontSize="20"/>
</StackPanel>
</Grid>
<Grid Grid.Row="1" ColumnSpacing="10" Margin="10,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<controls:ImageEx CornerRadius="999" BorderThickness="3" BorderBrush="{ThemeResource SystemControlBackgroundChromeMediumBrush}" Background="Red"
Width="50" Height="50" VerticalAlignment="Bottom" Margin="0,-30,0,0" PlaceholderSource="/Assets/Icons/Contact.png" PlaceholderStretch="UniformToFill"/>
<TextBlock TextTrimming="CharacterEllipsis" Grid.Column="1" Text="██████████"/>
<TextBlock Grid.Column="2" Text="██████████" Foreground="Gray"/>
</Grid>
<TextBlock Margin="10,0" Grid.Row="2" MaxLines="2" TextTrimming="CharacterEllipsis" TextWrapping="WrapWholeWords" Text="██████████"/>
</Grid>
<Button.ContextFlyout>
<MenuFlyout>
<MenuFlyoutItem Icon="List" Text="View playlist"/>
<MenuFlyoutItem Icon="Contact" Text="View channel"/>
<MenuFlyoutSeparator/>
<MenuFlyoutItem Icon="Link" Text="Copy link"/>
<MenuFlyoutItem Icon="Globe" Text="Open in browser"/>
<MenuFlyoutItem Icon="Share" Text="Share"/>
</MenuFlyout>
</Button.ContextFlyout>
</Button>
</controls:DropShadowPanel>
</UserControl>
@@ -0,0 +1,14 @@
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace FoxTube.Controls.Cards
{
public sealed partial class PlaylistCard : UserControl
{
public PlaylistCard() =>
InitializeComponent();
void UserControl_SizeChanged(object sender, SizeChangedEventArgs e) =>
Height = .75 * ActualWidth;
}
}
+96
View File
@@ -0,0 +1,96 @@
<UserControl
x:Class="FoxTube.Controls.Cards.VideoCard"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
xmlns:Windows10version1809="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 7)"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400"
HorizontalAlignment="Stretch"
Margin="3"
SizeChanged="UserControl_SizeChanged">
<controls:DropShadowPanel BlurRadius="10" ShadowOpacity=".5"
OffsetX="2" OffsetY="2"
Color="Black"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch">
<Button Background="{ThemeResource SystemControlBackgroundChromeMediumBrush}" Style="{StaticResource ButtonRevealStyle}" Windows10version1809:CornerRadius="5" Padding="0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" RowSpacing="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="20"/>
<RowDefinition/>
</Grid.RowDefinitions>
<controls:ImageEx PlaceholderStretch="UniformToFill" CornerRadius="5,5,0,0" PlaceholderSource="/Assets/DefaultVideoThumbnail.png"/>
<Grid>
<Grid.Background>
<SolidColorBrush Color="Black" Opacity=".5"/>
</Grid.Background>
<controls:DropShadowPanel VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10" OffsetX="2" OffsetY="2">
<StackPanel Padding="5,2,5,3" Background="{ThemeResource SystemControlBackgroundChromeMediumBrush}" CornerRadius="5">
<TextBlock Text="Watched" Foreground="Gray" FontSize="12"/>
</StackPanel>
</controls:DropShadowPanel>
<ProgressBar VerticalAlignment="Bottom" Margin="59,0,0,0" Foreground="Red" Value="50"/>
</Grid>
<controls:DropShadowPanel VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="5,10" OffsetX="2" OffsetY="2">
<StackPanel Padding="5,2,5,3" Background="{ThemeResource SystemControlBackgroundChromeMediumBrush}" CornerRadius="5">
<TextBlock Text="██████ • ██████" Foreground="Gray" FontSize="12"/>
</StackPanel>
</controls:DropShadowPanel>
<controls:DropShadowPanel VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="5,35" OffsetX="2" OffsetY="2">
<StackPanel Padding="5,2,5,3" Background="Red" BorderThickness="1" BorderBrush="White" CornerRadius="5" Orientation="Horizontal">
<FontIcon Glyph="&#xEC44;" VerticalAlignment="Center" Foreground="White" FontSize="12" Margin="0,0,5,0"/>
<TextBlock Text="LIVE" VerticalAlignment="Center" Foreground="White" FontSize="12" FontWeight="Bold"/>
</StackPanel>
</controls:DropShadowPanel>
<Grid Grid.Row="1" ColumnSpacing="10" Margin="10,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<controls:ImageEx CornerRadius="999" BorderThickness="3" BorderBrush="{ThemeResource SystemControlBackgroundChromeMediumBrush}" Background="Red"
Width="50" Height="50" VerticalAlignment="Bottom" Margin="0,-30,0,0" PlaceholderSource="/Assets/Icons/Contact.png" PlaceholderStretch="UniformToFill"/>
<TextBlock Text="██████████" Grid.Column="1" TextTrimming="CharacterEllipsis"/>
<TextBlock Text="██████████" Grid.Column="2" Foreground="Gray"/>
</Grid>
<TextBlock Margin="10,0" Grid.Row="2" MaxLines="2" TextTrimming="CharacterEllipsis" TextWrapping="WrapWholeWords" Text="██████████"/>
</Grid>
<Button.ContextFlyout>
<MenuFlyout>
<MenuFlyoutItem Icon="Play" Text="Play"/>
<MenuFlyoutItem Text="Play incognito">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE727;"/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutItem Icon="Contact" Text="View channel"/>
<MenuFlyoutSeparator/>
<MenuFlyoutItem Icon="Link" Text="Copy link"/>
<MenuFlyoutItem Icon="Globe" Text="Open in browser"/>
<MenuFlyoutItem Icon="Share" Text="Share"/>
<MenuFlyoutSeparator/>
<MenuFlyoutSubItem Icon="Download" Text="Download"/>
<MenuFlyoutSubItem Icon="Add" Text="Add to">
<MenuFlyoutItem Text="New playlist" Icon="Add"/>
<ToggleMenuFlyoutItem Text="Watch later" Icon="Clock"/>
<MenuFlyoutSeparator/>
</MenuFlyoutSubItem>
<MenuFlyoutItem Text="Remove from playlist" Icon="Delete" Visibility="Visible" Foreground="Red"/>
</MenuFlyout>
</Button.ContextFlyout>
</Button>
</controls:DropShadowPanel>
</UserControl>
+14
View File
@@ -0,0 +1,14 @@
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace FoxTube.Controls.Cards
{
public sealed partial class VideoCard : UserControl
{
public VideoCard() =>
InitializeComponent();
void UserControl_SizeChanged(object sender, SizeChangedEventArgs e) =>
Height = .75 * ActualWidth;
}
}
-220
View File
@@ -1,220 +0,0 @@
<UserControl
x:Class="FoxTube.Controls.ContentFrame"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="blocked">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="block" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetName="block" Storyboard.TargetProperty="Opacity"
From="0" To="1" Duration="0:0:1"/>
<DoubleAnimation Storyboard.TargetName="ring" Storyboard.TargetProperty="Width"
EnableDependentAnimation="True"
From="100" To="200" Duration="0:0:0.5"/>
<DoubleAnimation Storyboard.TargetName="ring" Storyboard.TargetProperty="Height"
EnableDependentAnimation="True"
From="100" To="200" Duration="0:0:0.5"/>
<DoubleAnimation Storyboard.TargetName="ring" Storyboard.TargetProperty="Opacity"
From="1" To="0" Duration="0:0:0.5">
<DoubleAnimation.EasingFunction>
<ExponentialEase EasingMode="EaseIn"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ring" Storyboard.TargetProperty="IsActive">
<DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="False"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetName="content" Storyboard.TargetProperty="Opacity"
Duration="0" To="0"/>
<DoubleAnimation Storyboard.TargetName="loadingScreen" Storyboard.TargetProperty="Opacity"
To="0" Duration="0:0:0.1"/>
</Storyboard>
</VisualState>
<VisualState x:Name="wifiError">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="content" Storyboard.TargetProperty="Opacity"
Duration="0:0:0.1" To="0"/>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="block" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="generalBtns" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="networkBtns" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="icon" Storyboard.TargetProperty="Glyph">
<DiscreteObjectKeyFrame KeyTime="0" Value="&#xEB63;"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetName="ring" Storyboard.TargetProperty="Width"
EnableDependentAnimation="True"
From="100" To="200" Duration="0:0:0.5"/>
<DoubleAnimation Storyboard.TargetName="ring" Storyboard.TargetProperty="Height"
EnableDependentAnimation="True"
From="100" To="200" Duration="0:0:0.5"/>
<DoubleAnimation Storyboard.TargetName="ring" Storyboard.TargetProperty="Opacity"
From="1" To="0" Duration="0:0:0.5">
<DoubleAnimation.EasingFunction>
<ExponentialEase EasingMode="EaseIn"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ring" Storyboard.TargetProperty="IsActive">
<DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="False"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetName="loadingScreen" Storyboard.TargetProperty="Opacity"
From="0" To="1" Duration="0:0:0.5" BeginTime="0:0:0.5">
<DoubleAnimation.EasingFunction>
<ExponentialEase EasingMode="EaseIn"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
</VisualState>
<VisualState x:Name="commonError">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="content" Storyboard.TargetProperty="Opacity"
Duration="0:0:0.1" To="0"/>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="block" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="generalBtns" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="networkBtns" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="icon" Storyboard.TargetProperty="Glyph">
<DiscreteObjectKeyFrame KeyTime="0" Value="&#xF618;"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetName="ring" Storyboard.TargetProperty="Width"
EnableDependentAnimation="True"
From="100" To="200" Duration="0:0:0.5"/>
<DoubleAnimation Storyboard.TargetName="ring" Storyboard.TargetProperty="Height"
EnableDependentAnimation="True"
From="100" To="200" Duration="0:0:0.5"/>
<DoubleAnimation Storyboard.TargetName="ring" Storyboard.TargetProperty="Opacity"
From="1" To="0" Duration="0:0:0.5">
<DoubleAnimation.EasingFunction>
<ExponentialEase EasingMode="EaseIn"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ring" Storyboard.TargetProperty="IsActive">
<DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="False"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetName="loadingScreen" Storyboard.TargetProperty="Opacity"
From="0" To="1" Duration="0:0:0.5" BeginTime="0:0:0.5">
<DoubleAnimation.EasingFunction>
<ExponentialEase EasingMode="EaseIn"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
</VisualState>
<VisualState x:Name="loading">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="block" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetName="loadingScreen" Storyboard.TargetProperty="Opacity"
To="0" Duration="0:0:0.1"/>
<DoubleAnimation Storyboard.TargetName="content" Storyboard.TargetProperty="Opacity"
Duration="0:0:0.2" To="0"/>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ring" Storyboard.TargetProperty="IsActive">
<DiscreteObjectKeyFrame KeyTime="0" Value="True"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetName="ring" Storyboard.TargetProperty="Width"
EnableDependentAnimation="True"
From="0" To="100" Duration="0:0:0.5"/>
<DoubleAnimation Storyboard.TargetName="ring" Storyboard.TargetProperty="Height"
EnableDependentAnimation="True"
From="0" To="100" Duration="0:0:0.5"/>
<DoubleAnimation Storyboard.TargetName="ring" Storyboard.TargetProperty="Opacity"
From="0" To="1" Duration="0:0:0.5">
<DoubleAnimation.EasingFunction>
<ExponentialEase EasingMode="EaseIn"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
</VisualState>
<VisualState x:Name="loaded">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="block" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetName="ring" Storyboard.TargetProperty="Width"
EnableDependentAnimation="True"
From="100" To="200" Duration="0:0:0.5"/>
<DoubleAnimation Storyboard.TargetName="ring" Storyboard.TargetProperty="Height"
EnableDependentAnimation="True"
From="100" To="200" Duration="0:0:0.5"/>
<DoubleAnimation Storyboard.TargetName="ring" Storyboard.TargetProperty="Opacity"
From="1" To="0" Duration="0:0:0.5">
<DoubleAnimation.EasingFunction>
<ExponentialEase EasingMode="EaseIn"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ring" Storyboard.TargetProperty="IsActive">
<DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="False"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetName="content" Storyboard.TargetProperty="Opacity"
From="0" To="1" Duration="0:0:0.2" BeginTime="0:0:0.5"/>
<DoubleAnimation Storyboard.TargetName="loadingScreen" Storyboard.TargetProperty="Opacity"
To="0" Duration="0:0:0.1"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Frame Name="content" Navigating="Content_Navigating" Opacity="0"/>
<ProgressRing Width="100" Height="100" Name="ring" IsActive="True"/>
<FontIcon Glyph="&#xF619;" FontSize="100" Name="block" Visibility="Collapsed"/>
<StackPanel VerticalAlignment="Center" Name="loadingScreen" Opacity="0">
<FontIcon Name="icon" Glyph="&#xF618;" FontSize="100" HorizontalAlignment="Center"/>
<TextBlock Name="title" Text="We are unable to display the page" FontSize="48" HorizontalAlignment="Center" TextWrapping="WrapWholeWords"/>
<TextBlock Name="description" Text="It could be caused by YouTube internal server error or by application's bug. Please, try again later" HorizontalAlignment="Center" TextWrapping="WrapWholeWords"/>
<StackPanel Name="networkBtns">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Button Content="Open network settings" Margin="0,0,5,0" Click="Network_Click"/>
<Button Content="Open troubleshooter" Background="Red" Foreground="White" Click="Troubleshooter_Click"/>
</StackPanel>
<TextBlock Text="OR" FontSize="20" HorizontalAlignment="Center" Margin="5"/>
<Button Content="Refresh page" HorizontalAlignment="Center" Background="Red" Foreground="White" Click="Refresh_Click"/>
</StackPanel>
<StackPanel Name="generalBtns" Orientation="Horizontal" HorizontalAlignment="Center">
<Button Content="Refresh page" Margin="0,0,5,0" Click="Refresh_Click"/>
<Button Name="feedback" Content="Leave feedback" Background="Red" Foreground="White" Click="Feedback_Click"/>
</StackPanel>
<TextBlock Name="error" Foreground="Gray" Text="Exception:" HorizontalAlignment="Center" IsTextSelectionEnabled="True"/>
<TextBlock Name="message" Foreground="Gray" Text="Message:" HorizontalAlignment="Center" IsTextSelectionEnabled="True" TextWrapping="WrapWholeWords"/>
<TextBlock Name="stackTrace" Foreground="Gray" Text="Stack trace:" HorizontalAlignment="Center" IsTextSelectionEnabled="True" TextWrapping="WrapWholeWords"/>
</StackPanel>
</Grid>
</UserControl>
-130
View File
@@ -1,130 +0,0 @@
using Microsoft.Services.Store.Engagement;
using System;
using System.Collections;
using Windows.ApplicationModel.Resources;
using Windows.System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
namespace FoxTube.Controls
{
public sealed partial class ContentFrame : UserControl
{
readonly ResourceLoader resources = ResourceLoader.GetForCurrentView("Loading");
public LoadingScreenState State { get; private set; } = LoadingScreenState.Loaded;
public Type SourcePageType => content.CurrentSourcePageType;
public bool CanGoBack => content.CanGoBack;
public object FrameContent => content.Content;
public event NavigationOccured Navigated;
public ContentFrame()
{
InitializeComponent();
if (!StoreServicesFeedbackLauncher.IsSupported())
feedback.Visibility = Visibility.Collapsed;
}
public void Navigate(Type pageType, object parameter) =>
content.Navigate(pageType, parameter);
/// <summary>
/// Navigates on the same page and deletes last back stack entry
/// </summary>
public void Refresh()
{
content.Navigate(content.CurrentSourcePageType, (content.Content as ViewModel).Parameter);
content.BackStack.RemoveAt(content.BackStack.Count - 1);
}
public void GoBack() =>
content.GoBack();
/// <summary>
/// Clears frame back stack
/// </summary>
public void ClearHistory() =>
content.BackStack.Clear();
/// <summary>
/// Hides loading indicator and show blocked icon
/// </summary>
public void Block()
{
blocked.Storyboard.Begin();
State = LoadingScreenState.Blocked;
}
/// <summary>
/// Shows error screen with common error message
/// </summary>
/// <param name="error">Error name (Exception name also will do)</param>
/// <param name="message">Error description or exception message</param>
/// <param name="stackTrace">Exception's stack trace</param>
public void ShowError(string error = "Unknown", string message = "N/A", string stackTrace = null)
{
title.Text = resources.GetString("/Loading/generalTitle");
description.Text = resources.GetString("/Loading/general");
this.error.Text = $"{resources.GetString("/Loading/error")}: {error}";
this.message.Text = $"{resources.GetString("/Loading/message")}: {message}";
this.stackTrace.Text = $"{resources.GetString("/Loading/stackTrace")}: {stackTrace}";
this.stackTrace.Visibility = string.IsNullOrWhiteSpace(stackTrace) ? Visibility.Collapsed : Visibility.Visible;
commonError.Storyboard.Begin();
State = LoadingScreenState.Error;
}
/// <summary>
/// Shows error screen with network error message
/// </summary>
/// <param name="error">Error name (Exception name also will do)</param>
/// <param name="message">Error description or exception message</param>
/// <param name="stackTrace">Exception's stack trace</param>
public void ShowConnectionError(string error = "Unknown", string message = "N/A", string stackTrace = null)
{
title.Text = resources.GetString("/Loading/generalTitle");
description.Text = resources.GetString("/Loading/general");
this.error.Text = $"{resources.GetString("/Loading/error")}: {error}";
this.message.Text = $"{resources.GetString("/Loading/message")}: {message}";
this.stackTrace.Text = $"{resources.GetString("/Loading/stackTrace")}: {stackTrace}";
this.stackTrace.Visibility = string.IsNullOrWhiteSpace(stackTrace) ? Visibility.Collapsed : Visibility.Visible;
wifiError.Storyboard.Begin();
State = LoadingScreenState.Error;
}
/// <summary>
/// Hides loading UI
/// </summary>
public void Complete(IList pivotCollection = null, int? selectedPivot = null)
{
Navigated?.Invoke(pivotCollection, selectedPivot);
loaded.Storyboard.Begin();
State = LoadingScreenState.Loaded;
}
void Content_Navigating(object sender, NavigatingCancelEventArgs e)
{
loading.Storyboard.Begin();
State = LoadingScreenState.Loading;
}
async void Troubleshooter_Click(object sender, RoutedEventArgs e) =>
await Launcher.LaunchUriAsync("ms-settings:troubleshoot".ToUri());
async void Network_Click(object sender, RoutedEventArgs e) =>
await Launcher.LaunchUriAsync("ms-settings:network".ToUri());
async void Feedback_Click(object sender, RoutedEventArgs e) =>
await StoreServicesFeedbackLauncher.GetDefault().LaunchAsync();
void Refresh_Click(object sender, RoutedEventArgs e) =>
Refresh();
}
}
+18
View File
@@ -0,0 +1,18 @@
<UserControl
x:Class="FoxTube.Controls.ItemGrid"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:FoxTube.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
mc:Ignorable="d"
d:DesignHeight="1080"
d:DesignWidth="1920">
<ScrollViewer>
<controls:StaggeredPanel>
</controls:StaggeredPanel>
</ScrollViewer>
</UserControl>
+27
View File
@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
namespace FoxTube.Controls
{
public sealed partial class ItemGrid : UserControl
{
public ItemGrid()
{
this.InitializeComponent();
}
}
}
-14
View File
@@ -1,14 +0,0 @@
<UserControl
x:Class="FoxTube.Controls.MainFrame"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="using:FoxTube.Controls"
mc:Ignorable="d">
<Grid>
<controls:ContentFrame x:Name="content" Navigated="Content_Navigated"/>
<controls:ContentFrame x:Name="video" Visibility="Collapsed"/>
</Grid>
</UserControl>
-157
View File
@@ -1,157 +0,0 @@
using System;
using Windows.UI.Xaml.Controls;
namespace FoxTube.Controls
{
public sealed partial class MainFrame : UserControl
{
public static MainFrame Current { get; private set; }
public event NavigatingOccured Navigating;
public event NavigationOccured Navigated;
public bool CanGoBack => !VideoMinimized || content.CanGoBack;
public bool IsVideoOpened { get; } = false;
public bool VideoMinimized => video.Width != double.NaN;
public Type SourcePageType => content.SourcePageType;
public MainFrame()
{
InitializeComponent();
Current = this;
}
public void NavigateTo(Type pageType, object parameter = null)
{
if (content.SourcePageType == pageType && parameter == (content.FrameContent as INavigationPage).Parameter)
return;
content.Navigate(pageType, parameter);
if (video.FrameContent != null && !VideoMinimized)
MinimizeVideo();
Navigating?.Invoke(pageType, parameter);
}
public void Refresh()
{
content.Refresh();
Navigating?.Invoke(SourcePageType, (content.Content as ViewModel).Parameter);
}
#region Video control methods
public void OpenVideo(string id, string playlistId = null, bool incognito = false)
{
/*if (VideoMinimized)
MaximizeVideo();
video.Navigate(typeof(VideoPage), (id, playlistId, incognito));
MainPage.Current.UpdateView();*/
}
public void MinimizeVideo(bool player = false)
{
/*if (video.FrameContent == null)
return;
video.Margin = new Thickness(0, 0, 25, 50);
video.HorizontalAlignment = HorizontalAlignment.Right;
video.VerticalAlignment = VerticalAlignment.Bottom;
video.Width = 432;
if (!player)
(video.FrameContent as VideoPage).Minimize();
MainPage.Current.UpdateView();*/
}
public void MaximizeVideo(bool player = false)
{
/*if (video.FrameContent == null)
return;
video.Margin = new Thickness(0);
video.VerticalAlignment = VerticalAlignment.Stretch;
video.HorizontalAlignment = HorizontalAlignment.Stretch;
video.Width = double.NaN;
if (!player)
(video.FrameContent as VideoPage).Maximize();
MainPage.Current.UpdateView();*/
}
public void CloseVideo()
{
/*if (ApplicationView.GetForCurrentView().IsFullScreenMode)
ApplicationView.GetForCurrentView().ExitFullScreenMode();
video.FrameContent = null;
video.ClearHistory();
if (VideoMinimized)
MaximizeVideo();
GC.Collect();
MainPage.Current.UpdateView();*/
}
public void RefreshVideo()
{
/*if (video.FrameContent == null)
return;
if (VideoMinimized)
MaximizeVideo();
video.Refresh();
Methods.MainPage.UpdateView();*/
}
#endregion
public void AuthorizationChanged(bool isAuthorized)
{
//TODO: Uncomment this
/*switch (isAuthorized)
{
case true:
if (content.FrameContent == null)
NavigateTo(typeof(Home));
else if (!content.SourcePageType.Name.Belongs("Downloads", "Settings"))
content.Refresh();
break;
case false:
NavigateTo(typeof(Home));
content.ClearHistory();
video.ClearHistory();
break;
}
RefreshVideo();*/
}
public void BackRequested()
{
if (video.FrameContent != null && !VideoMinimized)
{
if (video.CanGoBack)
video.GoBack();
else if (video.State != LoadingScreenState.Loaded)
CloseVideo();
else
MinimizeVideo();
}
else if (content.CanGoBack)
content.GoBack();
}
void Content_Navigated(System.Collections.IList pivotCollection, int? selectedPivot) =>
Navigated?.Invoke(pivotCollection, selectedPivot);
}
}
+49 -88
View File
@@ -12,7 +12,7 @@
<AssemblyName>FoxTube</AssemblyName>
<DefaultLanguage>en-US</DefaultLanguage>
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.17134.0</TargetPlatformVersion>
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.18362.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.17134.0</TargetPlatformMinVersion>
<MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
<FileAlignment>512</FileAlignment>
@@ -105,34 +105,32 @@
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
</Compile>
<Compile Include="Classes\Authenticator.cs" />
<Compile Include="Classes\Downloads.cs" />
<Compile Include="Classes\Extensions.cs" />
<Compile Include="Classes\Methods.cs" />
<Compile Include="Classes\Navigation.cs" />
<Compile Include="Classes\Processes.cs" />
<Compile Include="Classes\SearchParameters.cs" />
<Compile Include="Classes\Service.cs" />
<Compile Include="Classes\Settings.cs" />
<Compile Include="Classes\User.cs" />
<Compile Include="Classes\UserManagement.cs" />
<Compile Include="Classes\ViewModel.cs" />
<Compile Include="Controls\AccountManager.xaml.cs">
<DependentUpon>AccountManager.xaml</DependentUpon>
</Compile>
<Compile Include="Controls\ContentFrame.xaml.cs">
<DependentUpon>ContentFrame.xaml</DependentUpon>
<Compile Include="Controls\Cards\PlaylistCard.xaml.cs">
<DependentUpon>PlaylistCard.xaml</DependentUpon>
</Compile>
<Compile Include="Controls\MainFrame.xaml.cs">
<DependentUpon>MainFrame.xaml</DependentUpon>
<Compile Include="Controls\Cards\ChannelCard.xaml.cs">
<DependentUpon>ChannelCard.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\Home.xaml.cs">
<DependentUpon>Home.xaml</DependentUpon>
<Compile Include="Controls\Cards\AdvertCard.xaml.cs">
<DependentUpon>AdvertCard.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\MainPage.xaml.cs">
<Compile Include="Controls\Cards\VideoCard.xaml.cs">
<DependentUpon>VideoCard.xaml</DependentUpon>
</Compile>
<Compile Include="Controls\ItemGrid.xaml.cs">
<DependentUpon>ItemGrid.xaml</DependentUpon>
</Compile>
<Compile Include="Helpers\Utils.cs" />
<Compile Include="MainPage.xaml.cs">
<DependentUpon>MainPage.xaml</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Views\Home.xaml.cs">
<DependentUpon>Home.xaml</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<AppxManifest Include="Package.appxmanifest">
@@ -140,23 +138,19 @@
</AppxManifest>
</ItemGroup>
<ItemGroup>
<Content Include="Assets\AnnouncementThumb.png" />
<Content Include="Assets\BadgeLogo.scale-100.png" />
<Content Include="Assets\BadgeLogo.scale-125.png" />
<Content Include="Assets\BadgeLogo.scale-150.png" />
<Content Include="Assets\BadgeLogo.scale-200.png" />
<Content Include="Assets\BadgeLogo.scale-400.png" />
<Content Include="Assets\ChannelCoverTemplate.png" />
<Content Include="Assets\Data\Patchnotes.xml" />
<Content Include="Assets\Icons\Profile.png" />
<Content Include="Assets\Icons\Send.png" />
<Content Include="Assets\DefaultChannelBanner.png" />
<Content Include="Assets\DefaultVideoThumbnail.png" />
<Content Include="Assets\Icons\Contact.png" />
<Content Include="Assets\LargeTile.scale-100.png" />
<Content Include="Assets\LargeTile.scale-125.png" />
<Content Include="Assets\LargeTile.scale-150.png" />
<Content Include="Assets\LargeTile.scale-200.png" />
<Content Include="Assets\LargeTile.scale-400.png" />
<Content Include="Assets\LogoAvatar.png" />
<Content Include="Assets\NewsAvatar.png" />
<Content Include="Assets\SmallTile.scale-100.png" />
<Content Include="Assets\SmallTile.scale-125.png" />
<Content Include="Assets\SmallTile.scale-150.png" />
@@ -188,14 +182,10 @@
<Content Include="Assets\StoreLogo.scale-150.png" />
<Content Include="Assets\StoreLogo.scale-200.png" />
<Content Include="Assets\StoreLogo.scale-400.png" />
<Content Include="Assets\videoPlaceholder.png" />
<Content Include="Assets\videoThumbSample.png" />
<Content Include="Assets\WhatsNewThumb.png" />
<Content Include="Assets\Wide310x150Logo.scale-100.png" />
<Content Include="Assets\Wide310x150Logo.scale-125.png" />
<Content Include="Assets\Wide310x150Logo.scale-150.png" />
<Content Include="Assets\Wide310x150Logo.scale-400.png" />
<None Include="Assets\Data\Package.zip" />
<None Include="FoxTube_StoreKey.pfx" />
<None Include="Package.StoreAssociation.xml" />
<Content Include="Properties\Default.rd.xml" />
@@ -204,15 +194,6 @@
<Content Include="Assets\Square44x44Logo.scale-200.png" />
<Content Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
<Content Include="Assets\Wide310x150Logo.scale-200.png" />
<PRIResource Include="Strings\en-US\Loading.resw" />
<PRIResource Include="Strings\en-US\Generic.resw" />
<PRIResource Include="Strings\en-US\Toasts.resw" />
<PRIResource Include="Strings\en-US\Dialogs.resw" />
<PRIResource Include="Strings\en-US\Inbox.resw" />
<PRIResource Include="Strings\ru-RU\Report.resw" />
<PRIResource Include="Strings\en-US.old\Report.resw" />
<PRIResource Include="Strings\ru-RU\Translate.resw" />
<PRIResource Include="Strings\en-US.old\Translate.resw" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
@@ -223,19 +204,27 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Controls\ContentFrame.xaml">
<Page Include="Controls\Cards\PlaylistCard.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Controls\Cards\ChannelCard.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Controls\Cards\AdvertCard.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Controls\Cards\VideoCard.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Controls\MainFrame.xaml">
<Page Include="Controls\ItemGrid.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\Home.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\MainPage.xaml">
<Page Include="MainPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
@@ -243,10 +232,14 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\Home.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<PackageReference Include="AngleSharp">
<Version>0.12.1</Version>
<Version>0.13.0</Version>
</PackageReference>
<PackageReference Include="Google.Apis">
<Version>1.40.3</Version>
@@ -267,10 +260,10 @@
<Version>10.1811.22001</Version>
</PackageReference>
<PackageReference Include="Microsoft.AppCenter.Analytics">
<Version>2.1.1</Version>
<Version>2.5.0</Version>
</PackageReference>
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform">
<Version>6.2.8</Version>
<Version>6.2.9</Version>
</PackageReference>
<PackageReference Include="Microsoft.Services.Store.Engagement">
<Version>10.1901.28001</Version>
@@ -282,7 +275,7 @@
<Version>5.1.1</Version>
</PackageReference>
<PackageReference Include="Microsoft.UI.Xaml">
<Version>2.0.181011001</Version>
<Version>2.2.190917002</Version>
</PackageReference>
<PackageReference Include="runtime.win10-arm64.runtime.native.System.IO.Compression">
<Version>4.3.2</Version>
@@ -291,50 +284,18 @@
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="YoutubeExplode">
<Version>4.7.8</Version>
<Version>4.7.10</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\ru-RU\VideoPage.resw" />
<PRIResource Include="Strings\en-US.old\VideoPage.resw" />
<PRIResource Include="Strings\ru-RU\Channel.resw" />
<PRIResource Include="Strings\en-US.old\Channel.resw" />
<PRIResource Include="Strings\ru-RU\Chat.resw" />
<PRIResource Include="Strings\en-US.old\Chat.resw" />
<PRIResource Include="Strings\ru-RU\Cards.resw" />
<PRIResource Include="Strings\en-US.old\Cards.resw" />
<PRIResource Include="Strings\ru-RU\Methods.resw" />
<PRIResource Include="Strings\en-US.old\Methods.resw" />
<PRIResource Include="Strings\ru-RU\Search.resw" />
<PRIResource Include="Strings\en-US.old\Search.resw" />
<PRIResource Include="Strings\ru-RU\Playlist.resw" />
<PRIResource Include="Strings\en-US.old\Playlist.resw" />
<PRIResource Include="Strings\ru-RU\Downloads.resw" />
<PRIResource Include="Strings\ru-RU\CommentsPage.resw" />
<PRIResource Include="Strings\en-US.old\Downloads.resw" />
<PRIResource Include="Strings\ru-RU\Home.resw" />
<PRIResource Include="Strings\en-US.old\Home.resw" />
<PRIResource Include="Strings\en-US.old\CommentsPage.resw" />
<PRIResource Include="Strings\ru-RU\LoadingPage.resw" />
<PRIResource Include="Strings\en-US.old\LoadingPage.resw" />
<PRIResource Include="Strings\ru-RU\Inbox.resw" />
<PRIResource Include="Strings\ru-RU\General.resw" />
<PRIResource Include="Strings\ru-RU\About.resw" />
<PRIResource Include="Strings\ru-RU\Settings.resw" />
<PRIResource Include="Strings\en-US.old\Inbox.resw" />
<PRIResource Include="Strings\en-US.old\About.resw" />
<PRIResource Include="Strings\en-US.old\General.resw" />
<PRIResource Include="Strings\en-US.old\Settings.resw" />
<PRIResource Include="Strings\ru-RU\Main.resw">
<SubType>Designer</SubType>
</PRIResource>
<PRIResource Include="Strings\en-US.old\Main.resw" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\FoxTube.Background\FoxTube.Background.csproj">
<Project>{fc9128d7-e3aa-48ed-8641-629794b88b28}</Project>
<Name>FoxTube.Background</Name>
</ProjectReference>
<ProjectReference Include="..\FoxTube.Core\FoxTube.Core.csproj">
<Project>{797951d8-bf28-4659-bdf4-c17a583e64cd}</Project>
<Name>FoxTube.Core</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<SDKReference Include="Microsoft.Advertising.Xaml, Version=10.0">
+16
View File
@@ -0,0 +1,16 @@
using Microsoft.Services.Store.Engagement;
using System;
namespace FoxTube.Helpers
{
public static class Utils
{
public static bool HasFeedbackHub => StoreServicesFeedbackLauncher.IsSupported();
public static async void OpenFeedbackHub()
{
if(HasFeedbackHub)
await StoreServicesFeedbackLauncher.GetDefault().LaunchAsync();
}
}
}
+100
View File
@@ -0,0 +1,100 @@
<Page
x:Class="FoxTube.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:ui="using:Microsoft.UI.Xaml.Controls"
xmlns:controls="using:FoxTube.Controls"
xmlns:toolkit="using:Microsoft.Toolkit.Uwp.UI.Controls">
<Page.Background>
<AcrylicBrush BackgroundSource="HostBackdrop" TintColor="{ThemeResource SystemColorBackgroundColor}" TintOpacity=".5"/>
</Page.Background>
<Grid>
<Border x:Name="AppTitleBar"
VerticalAlignment="Top"
Background="Transparent"
Height="{Binding ElementName=NavigationViewControl, Path=CompactPaneLength}"
Canvas.ZIndex="1">
<TextBlock x:Name="AppTitle"
Text="FoxTube"
VerticalAlignment="Center"
Style="{StaticResource CaptionTextBlockStyle}" />
</Border>
<ui:NavigationView x:Name="NavigationViewControl"
IsTitleBarAutoPaddingEnabled="False"
DisplayModeChanged="NavigationView_DisplayModeChanged"
PaneClosing="NavigationView_PaneClosing"
PaneOpening="NavigationView_PaneOpening">
<ui:NavigationView.AutoSuggestBox>
<AutoSuggestBox QueryIcon="Find" PlaceholderText="Search YouTube..."/>
</ui:NavigationView.AutoSuggestBox>
<ui:NavigationView.PaneFooter>
<ui:NavigationViewList>
<ui:NavigationViewItemSeparator/>
<ui:NavigationViewItem Icon="Shop" Content="Get Pro" x:Name="RemoveAds" Tapped="RemoveAds_Tapped"/>
</ui:NavigationViewList>
</ui:NavigationView.PaneFooter>
<ui:NavigationView.MenuItems>
<ui:NavigationViewItem Icon="Home" Content="Home"/>
<ui:NavigationViewItem Content="Subscriptions">
<ui:NavigationViewItem.Icon>
<FontIcon Glyph="&#xE125;"/>
</ui:NavigationViewItem.Icon>
</ui:NavigationViewItem>
<ui:NavigationViewItemHeader Content="Library"/>
<ui:NavigationViewItem Content="History">
<ui:NavigationViewItem.Icon>
<FontIcon Glyph="&#xE81C;"/>
</ui:NavigationViewItem.Icon>
</ui:NavigationViewItem>
<ui:NavigationViewItem Content="Liked videos">
<ui:NavigationViewItem.Icon>
<FontIcon Glyph="&#xE19F;"/>
</ui:NavigationViewItem.Icon>
</ui:NavigationViewItem>
<ui:NavigationViewItem Icon="Clock" Content="Watch later"/>
<ui:NavigationViewItem Icon="Download" Content="Downloads"/>
<ui:NavigationViewItemHeader Content="Subscriptions"/>
</ui:NavigationView.MenuItems>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Margin="0,40,0,0" Padding="13,0" x:Name="headerGrid">
<TextBlock Style="{StaticResource TitleTextBlockStyle}" Text="Home" VerticalAlignment="Center"/>
<CommandBar HorizontalAlignment="Right" Background="Transparent" DefaultLabelPosition="Right">
<AppBarButton x:Name="LeaveFeedback" Click="LeaveFeedback_Click">
<AppBarButton.Icon>
<FontIcon Glyph="&#xED15;" Margin="0,0,-10,0"/>
</AppBarButton.Icon>
</AppBarButton>
<controls:AccountManager x:Name="AccountsSelector"/>
</CommandBar>
</Grid>
<Frame x:Name="content" Grid.Row="1"/>
<Frame x:Name="video" Grid.Row="1" Visibility="Collapsed"/>
<toolkit:Loading IsLoading="False" x:Name="loading" VerticalContentAlignment="Center" Grid.RowSpan="2">
<toolkit:Loading.Background>
<AcrylicBrush BackgroundSource="HostBackdrop" TintColor="{ThemeResource SystemColorBackgroundColor}" TintOpacity=".5"/>
</toolkit:Loading.Background>
<ProgressRing Height="100" Width="100" IsActive="True"/>
</toolkit:Loading>
</Grid>
</ui:NavigationView>
</Grid>
</Page>
+99
View File
@@ -0,0 +1,99 @@
using FoxTube.Core.Controllers;
using FoxTube.Helpers;
using FoxTube.Views;
using System;
using Windows.ApplicationModel.Core;
using Windows.Foundation.Metadata;
using Windows.UI;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace FoxTube
{
public sealed partial class MainPage : Page
{
static MainPage Current { get; set; }
public MainPage()
{
Current = this;
InitializeComponent();
// TODO: Remove this
content.Navigate(typeof(Home));
Window.Current.SetTitleBar(AppTitleBar);
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;
ApplicationViewTitleBar titleBar = ApplicationView.GetForCurrentView().TitleBar;
titleBar.ButtonBackgroundColor = Colors.Transparent;
titleBar.ButtonHoverForegroundColor = Colors.White;
titleBar.ButtonPressedForegroundColor = Colors.White;
titleBar.ButtonHoverBackgroundColor = Color.FromArgb(50, 255, 255, 255);
titleBar.ButtonPressedBackgroundColor = Color.FromArgb(20, 255, 255, 255);
if (Application.Current.RequestedTheme == ApplicationTheme.Dark)
titleBar.ButtonForegroundColor = Colors.White;
else
titleBar.ForegroundColor = Colors.Black;
LeaveFeedback.Visibility = Utils.HasFeedbackHub ? Visibility.Visible : Visibility.Collapsed;
RemoveAds.Visibility = StoreInterop.AdsDisabled ? Visibility.Collapsed : Visibility.Visible;
if (!StoreInterop.AdsDisabled)
RemoveAds.Content += $" ({StoreInterop.GetProPrice()})";
}
void NavigationView_DisplayModeChanged(Microsoft.UI.Xaml.Controls.NavigationView sender, Microsoft.UI.Xaml.Controls.NavigationViewDisplayModeChangedEventArgs args)
{
Thickness currMargin = AppTitleBar.Margin;
AppTitleBar.Margin = new Thickness(
sender.CompactPaneLength * (sender.DisplayMode == Microsoft.UI.Xaml.Controls.NavigationViewDisplayMode.Minimal ? 2 : 1),
currMargin.Top,
currMargin.Right,
currMargin.Bottom);
UpdateAppTitleMargin(sender);
}
void NavigationView_PaneClosing(Microsoft.UI.Xaml.Controls.NavigationView sender, Microsoft.UI.Xaml.Controls.NavigationViewPaneClosingEventArgs args) =>
UpdateAppTitleMargin(sender);
void NavigationView_PaneOpening(Microsoft.UI.Xaml.Controls.NavigationView sender, object args) =>
UpdateAppTitleMargin(sender);
void UpdateAppTitleMargin(Microsoft.UI.Xaml.Controls.NavigationView sender)
{
const int smallLeftIndent = 4, largeLeftIndent = 12;
if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 7))
{
AppTitle.TranslationTransition = new Vector3Transition();
if (sender.DisplayMode == Microsoft.UI.Xaml.Controls.NavigationViewDisplayMode.Expanded && sender.IsPaneOpen)
AppTitle.Translation = new System.Numerics.Vector3(smallLeftIndent, 0, 0);
else
AppTitle.Translation = new System.Numerics.Vector3(largeLeftIndent, 0, 0);
}
else
{
Thickness currMargin = AppTitle.Margin;
if (sender.DisplayMode == Microsoft.UI.Xaml.Controls.NavigationViewDisplayMode.Expanded && sender.IsPaneOpen)
AppTitle.Margin = new Thickness(smallLeftIndent, currMargin.Top, currMargin.Right, currMargin.Bottom);
else
AppTitle.Margin = new Thickness(largeLeftIndent, currMargin.Top, currMargin.Right, currMargin.Bottom);
}
}
void LeaveFeedback_Click(object sender, RoutedEventArgs e) =>
Utils.OpenFeedbackHub();
void RemoveAds_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e) =>
StoreInterop.PurchaseApp();
public static void Navigate(Type pageType)
{
}
}
}
-21
View File
@@ -1,21 +0,0 @@
<local:ViewModel
x:Class="FoxTube.Pages.Home"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:FoxTube"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:ui="using:Microsoft.UI.Xaml.Controls"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<local:ViewModel.PivotItems>
<ui:NavigationViewItem Content="Recommended"/>
<ui:NavigationViewItem Content="Trending"/>
<ui:NavigationViewItem Content="Subscriptions"/>
</local:ViewModel.PivotItems>
<Grid>
</Grid>
</local:ViewModel>
-275
View File
@@ -1,275 +0,0 @@
<Page
x:Class="FoxTube.Pages.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:ui="using:Microsoft.UI.Xaml.Controls"
xmlns:data="using:Google.Apis.YouTube.v3.Data"
xmlns:controls="using:FoxTube.Controls">
<Page.Background>
<AcrylicBrush BackgroundSource="HostBackdrop" TintColor="{StaticResource SystemColorBackgroundColor}" TintOpacity=".5"/>
</Page.Background>
<Page.Resources>
<AcrylicBrush x:Key="NavigationViewTopPaneBackground" BackgroundSource="HostBackdrop" TintColor="Red" TintOpacity=".7" FallbackColor="Red"/>
</Page.Resources>
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="SplashScreenStates">
<VisualState x:Name="FadeOut">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="splashImage" Storyboard.TargetProperty="Opacity"
From="1" To="0" BeginTime="0:0:0.5" Duration="0:0:0.5">
<DoubleAnimation.EasingFunction>
<QuadraticEase EasingMode="EaseInOut"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="splashRing" Storyboard.TargetProperty="Opacity"
From="1" To="0" Duration="0:0:0.5">
<DoubleAnimation.EasingFunction>
<ExponentialEase EasingMode="EaseIn"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="splashRing" Storyboard.TargetProperty="Width"
From="50" To="180" Duration="0:0:0.5" EnableDependentAnimation="True">
<DoubleAnimation.EasingFunction>
<QuadraticEase EasingMode="EaseIn"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="splashRing" Storyboard.TargetProperty="Height"
From="50" To="100" Duration="0:0:0.5" EnableDependentAnimation="True">
<DoubleAnimation.EasingFunction>
<QuadraticEase EasingMode="EaseIn"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="splashScreen" Storyboard.TargetProperty="Opacity"
From="1" To="0" BeginTime="0:0:1" Duration="0:0:0.5">
<DoubleAnimation.EasingFunction>
<QuadraticEase EasingMode="EaseInOut"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="splashScreen" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:1.5" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="split" Storyboard.TargetProperty="IsPaneOpen">
<DiscreteObjectKeyFrame KeyTime="0:0:1.5" Value="True"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="PaneStates">
<VisualState x:Name="ExpandedMode">
<VisualState.StateTriggers>
<AdaptiveTrigger x:Name="ExpandedThresholdWidth" MinWindowWidth="1008"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="split.DisplayMode" Value="CompactInline"/>
<Setter Target="split.IsPaneOpen" Value="True"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="CompactMode">
<VisualState.StateTriggers>
<AdaptiveTrigger x:Name="CompactThresholdWidth" MinWindowWidth="641"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="split.DisplayMode" Value="CompactOverlay"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="SearchStates">
<VisualState x:Name="SearchExpanded">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1000"/>
</VisualState.StateTriggers>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="search" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="searchBtn" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation EnableDependentAnimation="True"
Storyboard.TargetName="search" Storyboard.TargetProperty="Width"
From="0" To="300" Duration="0:0:1">
<DoubleAnimation.EasingFunction>
<QuadraticEase EasingMode="EaseInOut"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
</VisualState>
<VisualState x:Name="SearchCollapsed">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0"/>
</VisualState.StateTriggers>
<Storyboard>
<DoubleAnimation EnableDependentAnimation="True"
Storyboard.TargetName="search" Storyboard.TargetProperty="Width"
From="300" To="0" Duration="0:0:1">
<DoubleAnimation.EasingFunction>
<QuadraticEase EasingMode="EaseInOut"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="search" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:1" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="searchBtn" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:1" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ui:NavigationView PaneDisplayMode="Top" SelectionChanged="Nav_SelectionChanged" Name="nav" IsSettingsVisible="False"
BackRequested="Nav_BackRequested" IsBackEnabled="{x:Bind content.CanGoBack}">
<ui:NavigationView.AutoSuggestBox>
<AutoSuggestBox x:Name="search" LostFocus="Search_LostFocus" QueryIcon="Find" QuerySubmitted="Search_QuerySubmitted" TextChanged="Search_TextChanged" PlaceholderText="Search" Width="300"/>
</ui:NavigationView.AutoSuggestBox>
<ui:NavigationView.PaneHeader>
<ui:NavigationViewItem Icon="GlobalNavigationButton" Width="42" Name="menu" Tapped="Menu_Tapped"/>
</ui:NavigationView.PaneHeader>
<ui:NavigationView.PaneFooter>
<StackPanel Orientation="Horizontal">
<ui:NavigationViewItem Icon="Find" Width="42" Name="searchBtn" Tapped="SearchBtn_Tapped"/>
<ui:NavigationViewItem Width="42" Name="feedback" Tapped="Feedback_Click">
<ui:NavigationViewItem.Icon>
<FontIcon Glyph="&#xED15;"/>
</ui:NavigationViewItem.Icon>
</ui:NavigationViewItem>
<controls:AccountManager x:Name="accountManager"/>
</StackPanel>
</ui:NavigationView.PaneFooter>
<SplitView OpenPaneLength="300" Name="split" DisplayMode="Overlay" CompactPaneLength="42"
PaneClosing="Split_PaneToggled" PaneOpened="Split_PaneToggled">
<SplitView.PaneBackground>
<AcrylicBrush BackgroundSource="Backdrop" TintColor="{StaticResource SystemColorBackgroundColor}" TintOpacity=".5"/>
</SplitView.PaneBackground>
<SplitView.Pane>
<ScrollViewer>
<StackPanel>
<ui:NavigationViewList>
<ui:NavigationViewList.ItemContainerTransitions>
<TransitionCollection>
<EntranceThemeTransition IsStaggeringEnabled="True"/>
</TransitionCollection>
</ui:NavigationViewList.ItemContainerTransitions>
<ui:NavigationViewItem Icon="Home" Content="Home" Tapped="Home_Tapped"/>
<ui:NavigationViewItem Icon="People" Content="Subscriptions" Name="subscriptions" Tapped="Subscriptions_Tapped" Visibility="Collapsed"/>
<ui:NavigationViewItemHeader Content="My library" Name="libraryHeader" Visibility="Collapsed"/>
<ui:NavigationViewItem Content="History" Name="history" Tapped="History_Tapped" Visibility="Collapsed">
<ui:NavigationViewItem.Icon>
<FontIcon Glyph="&#xE81C;"/>
</ui:NavigationViewItem.Icon>
</ui:NavigationViewItem>
<ui:NavigationViewItem Icon="Like" Content="Liked videos" Name="likedVideos" Tapped="LikedVideos_Tapped" Visibility="Collapsed"/>
<ui:NavigationViewItem Icon="Clock" Content="Watch later" Name="watchLater" Tapped="WatchLater_Tapped" Visibility="Collapsed"/>
<ui:NavigationViewItem Icon="Download" Content="Downloads" Name="downloads" Tapped="Downloads_Tapped"/>
</ui:NavigationViewList>
<ui:NavigationViewList Name="subscriptionsList">
<ui:NavigationViewList.ItemContainerTransitions>
<TransitionCollection>
<EntranceThemeTransition IsStaggeringEnabled="True"/>
</TransitionCollection>
</ui:NavigationViewList.ItemContainerTransitions>
<ui:NavigationViewList.ItemTemplate>
<DataTemplate x:DataType="data:Subscription">
<StackPanel Orientation="Horizontal" Padding="5" Margin="-5,0,0,0">
<PersonPicture Height="20" Margin="-5,0,15,0">
<PersonPicture.ProfilePicture>
<BitmapImage UriSource="{Binding Snippet.Thumbnails.Medium.Url}" DecodePixelHeight="20" DecodePixelWidth="20"/>
</PersonPicture.ProfilePicture>
</PersonPicture>
<TextBlock FontSize="14" Text="{Binding Snippet.Title}"/>
</StackPanel>
</DataTemplate>
</ui:NavigationViewList.ItemTemplate>
<ui:NavigationViewItemHeader Content="Subscriptions" Name="subscriptionsHeader" Visibility="Collapsed"/>
</ui:NavigationViewList>
<ui:NavigationViewList>
<ui:NavigationViewList.ItemContainerTransitions>
<TransitionCollection>
<EntranceThemeTransition IsStaggeringEnabled="True"/>
</TransitionCollection>
</ui:NavigationViewList.ItemContainerTransitions>
<ui:NavigationViewItemHeader Content="Best of YouTube" Name="collectionsHeader"/>
<ui:NavigationViewItem Content="Music" Tapped="Music_Tapped">
<ui:NavigationViewItem.Icon>
<FontIcon Glyph="&#xE189;"/>
</ui:NavigationViewItem.Icon>
</ui:NavigationViewItem>
<ui:NavigationViewItem Content="Sports" Tapped="Sports_Tapped">
<ui:NavigationViewItem.Icon>
<FontIcon Glyph="&#xE95E;"/>
</ui:NavigationViewItem.Icon>
</ui:NavigationViewItem>
<ui:NavigationViewItem Content="Movies" Tapped="Movies_Tapped">
<ui:NavigationViewItem.Icon>
<FontIcon Glyph="&#xE8B2;"/>
</ui:NavigationViewItem.Icon>
</ui:NavigationViewItem>
<ui:NavigationViewItem Content="News" Tapped="News_Tapped">
<ui:NavigationViewItem.Icon>
<FontIcon Glyph="&#xE12A;"/>
</ui:NavigationViewItem.Icon>
</ui:NavigationViewItem>
<ui:NavigationViewItem Content="Live" Tapped="Live_Tapped">
<ui:NavigationViewItem.Icon>
<FontIcon Glyph="&#xE93E;"/>
</ui:NavigationViewItem.Icon>
</ui:NavigationViewItem>
<ui:NavigationViewItem Content="Spotlight" Tapped="Spotlight_Tapped">
<ui:NavigationViewItem.Icon>
<FontIcon Glyph="&#xECAD;"/>
</ui:NavigationViewItem.Icon>
</ui:NavigationViewItem>
<ui:NavigationViewItem Content="360&#xB0; video" Tapped="SphereVideo_Tapped">
<ui:NavigationViewItem.Icon>
<FontIcon Glyph="&#xF131;"/>
</ui:NavigationViewItem.Icon>
</ui:NavigationViewItem>
</ui:NavigationViewList>
</StackPanel>
</ScrollViewer>
</SplitView.Pane>
<SplitView.Content>
<controls:MainFrame x:Name="content" Navigated="Content_Navigated" Navigating="Content_Navigating"/>
</SplitView.Content>
</SplitView>
</ui:NavigationView>
<TextBlock x:Name="appTitle" Text="FoxTube" VerticalAlignment="Top" HorizontalAlignment="Left" Style="{StaticResource CaptionTextBlockStyle}" Margin="12,8"/>
<Grid Background="#282828" x:Name="splashScreen" Visibility="Visible">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="180"/>
</Grid.RowDefinitions>
<Canvas Grid.RowSpan="2">
<Image Source="/Assets/SplashScreen.png" Name="splashImage"/>
</Canvas>
<ProgressRing x:Name="splashRing" HorizontalAlignment="Center" Width="50" Height="50" IsActive="True" Grid.Row="1"/>
</Grid>
</Grid>
</Page>
-265
View File
@@ -1,265 +0,0 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Xml;
using FoxTube.Classes;
using Google.Apis.YouTube.v3.Data;
using Microsoft.Services.Store.Engagement;
using Windows.ApplicationModel.Activation;
using Windows.Graphics.Display;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;
namespace FoxTube.Pages
{
public sealed partial class MainPage : Page
{
public MainPage(SplashScreen splash, object args)
{
InitializeComponent();
SetSplashScreen(splash);
Methods.SetTitleBar();
UserManagement.AuthorizationStateChanged += AuthorizationStateChanged;
UserManagement.SubscriptionsChanged += SubscriptionChanged;
if (StoreServicesFeedbackLauncher.IsSupported())
feedback.Visibility = Visibility.Visible;
UserManagement.Initialize();
Service.CheckAddons();
//TODO: Initialize stuff
}
void SetSplashScreen(SplashScreen splash)
{
double ScaleFactor = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
splashImage.SetValue(Canvas.LeftProperty, splash.ImageLocation.Left);
splashImage.SetValue(Canvas.TopProperty, splash.ImageLocation.Top);
if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
{
splashImage.Height = splash.ImageLocation.Height / ScaleFactor;
splashImage.Width = splash.ImageLocation.Width / ScaleFactor;
}
else
{
splashImage.Height = splash.ImageLocation.Height;
splashImage.Width = splash.ImageLocation.Width;
}
}
void SubscriptionChanged(string action, Subscription subscription)
{
switch (action)
{
case "add":
subscriptionsHeader.Visibility = Visibility.Visible;
if (subscriptionsList.Items.Count < 10)
subscriptionsList.Items.Add(subscription);
break;
case "remove":
if (subscriptionsList.Items.Contains(subscription))
{
subscriptionsList.Items.Remove(subscription);
if (UserManagement.Current.Subscriptions.Count >= 10)
subscriptionsList.Items.Add(UserManagement.Current.Subscriptions[9]);
else if (UserManagement.Current.Subscriptions.Count == 0)
subscriptionsHeader.Visibility = Visibility.Collapsed;
}
break;
}
}
void AuthorizationStateChanged(bool isAuthorized)
{
subscriptionsList.Items.Clear();
if (isAuthorized)
{
accountManager.Logged();
subscriptions.Visibility =
libraryHeader.Visibility =
history.Visibility =
likedVideos.Visibility =
watchLater.Visibility = Visibility.Visible;
if (UserManagement.Current.Subscriptions.Count > 0)
{
subscriptionsHeader.Visibility = Visibility.Visible;
for (int k = 0; k < UserManagement.Current.Subscriptions.Count && k < 10; k++)
subscriptionsList.Items.Add(UserManagement.Current.Subscriptions[k]);
}
}
else
{
accountManager.Quit();
subscriptions.Visibility =
libraryHeader.Visibility =
history.Visibility =
likedVideos.Visibility =
watchLater.Visibility =
subscriptionsHeader.Visibility = Visibility.Collapsed;
}
content.AuthorizationChanged(isAuthorized);
if (splashScreen.Visibility == Visibility.Visible)
FadeOut.Storyboard.Begin();
}
public void UpdateView()
{
nav.IsBackEnabled = content.CanGoBack;
if(content.SourcePageType.Name.Belongs("Subscriptions", "Home", "Settings"))
{
ExpandedThresholdWidth.MinWindowWidth = 1008;
split.IsPaneOpen = split.DisplayMode == SplitViewDisplayMode.CompactInline ? true : false;
}
else
{
ExpandedThresholdWidth.MinWindowWidth = short.MaxValue;
split.IsPaneOpen = false;
}
}
async void Search_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args) => await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
//TODO: Finish search bar
if (search.Text.Length < 3 || args.Reason != AutoSuggestionBoxTextChangeReason.UserInput)
return;
try
{
XmlDocument doc = new XmlDocument();
doc.Load($"http://suggestqueries.google.com/complete/search?ds=yt&client=toolbar&q={search.Text}&hl={Settings.RelevanceLanguage}");
List<string> items = new List<string>();
for (int i = 0; i < doc["toplevel"].ChildNodes.Count && i < 5; i++)
items.Add(doc["toplevel"].ChildNodes[i]["suggestion"].GetAttribute("data"));
search.ItemsSource = items;
}
catch
{
search.ItemsSource = null;
}
});
private void Split_PaneToggled(SplitView sender, object args)
{
subscriptionsHeader.Visibility = split.IsPaneOpen && subscriptionsList.Items.Count > 0 ? Visibility.Visible : Visibility.Collapsed;
libraryHeader.Visibility =
collectionsHeader.Visibility =
libraryHeader.Visibility == Visibility.Collapsed ? Visibility.Visible : Visibility.Collapsed;
}
void Nav_SelectionChanged(Microsoft.UI.Xaml.Controls.NavigationView sender, Microsoft.UI.Xaml.Controls.NavigationViewSelectionChangedEventArgs args)
{
}
#region Simple UI interaction events
void Nav_BackRequested(Microsoft.UI.Xaml.Controls.NavigationView sender, Microsoft.UI.Xaml.Controls.NavigationViewBackRequestedEventArgs args) =>
content.BackRequested();
void Menu_Tapped(object sender, TappedRoutedEventArgs e) =>
split.IsPaneOpen = !split.IsPaneOpen;
async void Feedback_Click(object sender, RoutedEventArgs e) =>
await StoreServicesFeedbackLauncher.GetDefault().LaunchAsync();
void Home_Tapped(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToHome();
void Subscriptions_Tapped(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToSubscriptions();
void History_Tapped(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToHistory();
void LikedVideos_Tapped(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToPlaylist(UserManagement.Current.Channel.ContentDetails.RelatedPlaylists.Likes);
void WatchLater_Tapped(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToPlaylist("WL");
void Downloads_Tapped(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToDownloads();
void Music_Tapped(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToChannel("UC-9-kyTW8ZkZNDHQJ6FgpwQ");
void Sports_Tapped(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToChannel("UCEgdi0XIXXZ-qJOFPf4JSKw");
void Movies_Tapped(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToChannel("UClgRkhTL3_hImCAmdLfDE4g");
void News_Tapped(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToChannel("UCYfdidRxbB8Qhf0Nx7ioOYw");
void Live_Tapped(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToChannel("UC4R8DWoMoI7CAwX8_LjQHig");
void Spotlight_Tapped(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToChannel("UC8iNz9uwDGfomRnnKKbOhOQ");
private void SphereVideo_Tapped(object sender, TappedRoutedEventArgs e) =>
Navigation.GoToChannel("UCzuqhhs6NWbgTzMuM09WKDQ");
#endregion
#region Search bar methods
async void SearchBtn_Tapped(object sender, TappedRoutedEventArgs e)
{
menu.Visibility =
accountManager.Visibility =
feedback.Visibility = Visibility.Collapsed;
nav.IsBackButtonVisible = Microsoft.UI.Xaml.Controls.NavigationViewBackButtonVisible.Collapsed;
SearchExpanded.Storyboard.Begin();
await Task.Delay(1);
search.Focus(FocusState.Pointer);
}
async void Search_LostFocus(object sender, RoutedEventArgs e)
{
if (ActualWidth >= 1000)
return;
SearchCollapsed.Storyboard.Begin();
await Task.Delay(1000);
menu.Visibility =
accountManager.Visibility =
feedback.Visibility = Visibility.Visible;
nav.IsBackButtonVisible = Microsoft.UI.Xaml.Controls.NavigationViewBackButtonVisible.Visible;
}
void Search_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)
{
if (!string.IsNullOrWhiteSpace(search.Text))
Navigation.GoToSearch(new SearchParameters(search.Text));
}
#endregion
private void Content_Navigated(System.Collections.IList pivotCollection, int? selectedPivot)
{
nav.MenuItemsSource = pivotCollection;
if(selectedPivot.HasValue)
nav.SelectedItem = pivotCollection[selectedPivot.Value];
}
private void Content_Navigating(Type sourcePageType, object parameter)
{
nav.MenuItems.Clear();
UpdateView();
}
}
}
-171
View File
@@ -1,171 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="aboutHeader.Text" xml:space="preserve">
<value>About us and this app</value>
</data>
<data name="contacts.Text" xml:space="preserve">
<value>Contacts</value>
</data>
<data name="crMe.Text" xml:space="preserve">
<value>© Michael Gordeev</value>
</data>
<data name="crYt.Text" xml:space="preserve">
<value>© YouTube, LLC</value>
</data>
<data name="developed.Text" xml:space="preserve">
<value>Developed by Michael Gordeev (also known as XFox)</value>
</data>
<data name="feedback.Content" xml:space="preserve">
<value>Leave feedback</value>
</data>
<data name="guides.Content" xml:space="preserve">
<value>YouTube Community Guidelines</value>
</data>
<data name="legal.Text" xml:space="preserve">
<value>Legal stuff</value>
</data>
<data name="msreviewThanks.Text" xml:space="preserve">
<value>for warm welcome and first feedback!</value>
</data>
<data name="myBlog.Text" xml:space="preserve">
<value>My website</value>
</data>
<data name="ourPrivacy.Content" xml:space="preserve">
<value>Our Privacy Policy</value>
</data>
<data name="specialThanks.Text" xml:space="preserve">
<value>Special thanks to:</value>
</data>
<data name="terms.Content" xml:space="preserve">
<value>YouTube Terms of use</value>
</data>
<data name="twitter.Text" xml:space="preserve">
<value>Twitter</value>
</data>
<data name="tyrrrzThanks.Text" xml:space="preserve">
<value>for his awesome library!</value>
</data>
<data name="vk.Text" xml:space="preserve">
<value>Vkontakte</value>
</data>
<data name="ytPrivacy.Content" xml:space="preserve">
<value>YouTube Privacy Policy</value>
</data>
</root>
-201
View File
@@ -1,201 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="channel.Text" xml:space="preserve">
<value>View channel</value>
</data>
<data name="channelShare" xml:space="preserve">
<value>channel</value>
</data>
<data name="getLink.Text" xml:space="preserve">
<value>Copy link</value>
</data>
<data name="goesLive" xml:space="preserve">
<value>Goes live in</value>
</data>
<data name="incognitoPlay.Text" xml:space="preserve">
<value>Play incognito</value>
</data>
<data name="live.Text" xml:space="preserve">
<value>LIVE</value>
</data>
<data name="login.Text" xml:space="preserve">
<value>Log in</value>
</data>
<data name="more.Content" xml:space="preserve">
<value>Show more</value>
</data>
<data name="openWeb.Text" xml:space="preserve">
<value>Open in browser</value>
</data>
<data name="play.Text" xml:space="preserve">
<value>Play</value>
</data>
<data name="playlist.Text" xml:space="preserve">
<value>View playlist</value>
</data>
<data name="playlistShare" xml:space="preserve">
<value>playlist</value>
</data>
<data name="share.Text" xml:space="preserve">
<value>Share</value>
</data>
<data name="subscribe.Content" xml:space="preserve">
<value>Subscribe</value>
</data>
<data name="subscribers" xml:space="preserve">
<value>subscribers</value>
</data>
<data name="tomanage.Text" xml:space="preserve">
<value>to manage your subscriptions</value>
</data>
<data name="unsubscribe" xml:space="preserve">
<value>Subscribed</value>
</data>
<data name="upcoming" xml:space="preserve">
<value>Upcoming</value>
</data>
<data name="videos" xml:space="preserve">
<value>videos</value>
</data>
<data name="videoShare" xml:space="preserve">
<value>video</value>
</data>
<data name="viewers" xml:space="preserve">
<value>viewers</value>
</data>
<data name="views" xml:space="preserve">
<value>views</value>
</data>
<data name="watched.Text" xml:space="preserve">
<value>Watched</value>
</data>
<data name="addTo.Text" xml:space="preserve">
<value>Add to</value>
</data>
<data name="delete.Text" xml:space="preserve">
<value>Delete from playlist</value>
</data>
<data name="downloads.Text" xml:space="preserve">
<value>Downloads</value>
</data>
<data name="sponsored.Text" xml:space="preserve">
<value>Sponsored content</value>
</data>
</root>
-162
View File
@@ -1,162 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="about.Header" xml:space="preserve">
<value>About channel</value>
</data>
<data name="aboutTitle.Text" xml:space="preserve">
<value>About this channel</value>
</data>
<data name="desc.Text" xml:space="preserve">
<value>Description</value>
</data>
<data name="openWeb.Label" xml:space="preserve">
<value>Open in browser</value>
</data>
<data name="playlists.Header" xml:space="preserve">
<value>Playlists</value>
</data>
<data name="playlistTitle.Text" xml:space="preserve">
<value>Playlists</value>
</data>
<data name="refresh.Label" xml:space="preserve">
<value>Refresh</value>
</data>
<data name="regDate.Text" xml:space="preserve">
<value>Registration date:</value>
</data>
<data name="search.PlaceholderText" xml:space="preserve">
<value>Search on channel</value>
</data>
<data name="share.Label" xml:space="preserve">
<value>Share</value>
</data>
<data name="stats.Text" xml:space="preserve">
<value>Statistics</value>
</data>
<data name="videos.Header" xml:space="preserve">
<value>Videos</value>
</data>
<data name="views.Text" xml:space="preserve">
<value>Views:</value>
</data>
<data name="searchHeader" xml:space="preserve">
<value>Search results</value>
</data>
</root>
-141
View File
@@ -1,141 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="box.PlaceholderText" xml:space="preserve">
<value>Send a message</value>
</data>
<data name="failed" xml:space="preserve">
<value>Failed to send your message. It may be caused by turned on chat slow mode. Please, try again later. P.S. Report has been sent to developers</value>
</data>
<data name="moder.Text" xml:space="preserve">
<value>Moderator</value>
</data>
<data name="owner.Text" xml:space="preserve">
<value>Chat owner</value>
</data>
<data name="sponsor.Text" xml:space="preserve">
<value>Sponsor</value>
</data>
<data name="verified.Text" xml:space="preserve">
<value>Verified</value>
</data>
<data name="welcome.Text" xml:space="preserve">
<value>Welcome to the chat room</value>
</data>
</root>
-186
View File
@@ -1,186 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="comments" xml:space="preserve">
<value>comments</value>
</data>
<data name="date.Text" xml:space="preserve">
<value>Date</value>
</data>
<data name="deleteContent" xml:space="preserve">
<value>Are you sure? This action cannot be undone</value>
</data>
<data name="deleteHeader" xml:space="preserve">
<value>Delete comment</value>
</data>
<data name="edit.Text" xml:space="preserve">
<value>Edit</value>
</data>
<data name="edited" xml:space="preserve">
<value>(edited)</value>
</data>
<data name="editorCancel.Content" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="editorDelete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
<value>Delete comment</value>
</data>
<data name="editorSubmit.Content" xml:space="preserve">
<value>Submit</value>
</data>
<data name="failedDelete" xml:space="preserve">
<value>Failed to delete your comment. Please, try again later.</value>
</data>
<data name="failedEdit" xml:space="preserve">
<value>Failed to edit your comment. Please, try again later.</value>
</data>
<data name="failedReply" xml:space="preserve">
<value>Failed to send your reply. Please, try again later.</value>
</data>
<data name="more.Content" xml:space="preserve">
<value>Show more</value>
</data>
<data name="no" xml:space="preserve">
<value>No</value>
</data>
<data name="publish" xml:space="preserve">
<value>Publish date</value>
</data>
<data name="relevance.Text" xml:space="preserve">
<value>Relevance</value>
</data>
<data name="reply.Text" xml:space="preserve">
<value>Reply</value>
</data>
<data name="replyBox.PlaceholderText" xml:space="preserve">
<value>Enter your reply...</value>
</data>
<data name="sortBy.Text" xml:space="preserve">
<value>Sort by: </value>
</data>
<data name="spam.Text" xml:space="preserve">
<value>Report as spam</value>
</data>
<data name="textbox.PlaceholderText" xml:space="preserve">
<value>Add a public comment</value>
</data>
<data name="yes" xml:space="preserve">
<value>Yes</value>
</data>
</root>
-183
View File
@@ -1,183 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="author" xml:space="preserve">
<value>Author</value>
</data>
<data name="cancel.Content" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="cancelling" xml:space="preserve">
<value>Cancelling...</value>
</data>
<data name="cancellingHeader" xml:space="preserve">
<value>Cancelling download</value>
</data>
<data name="downloading.Text" xml:space="preserve">
<value>Downloading...</value>
</data>
<data name="duration" xml:space="preserve">
<value>Duration</value>
</data>
<data name="ext" xml:space="preserve">
<value>Extension</value>
</data>
<data name="failedBody" xml:space="preserve">
<value>Bug report has been sent</value>
</data>
<data name="failedHead" xml:space="preserve">
<value>Error occurred while downloading a video</value>
</data>
<data name="gotoOrign.Text" xml:space="preserve">
<value>Go to original</value>
</data>
<data name="no" xml:space="preserve">
<value>No</value>
</data>
<data name="noItems.Text" xml:space="preserve">
<value>You haven't downloaded anything yet</value>
</data>
<data name="openFile.Text" xml:space="preserve">
<value>Open</value>
</data>
<data name="openFolder.Content" xml:space="preserve">
<value>Open folder</value>
</data>
<data name="prompt" xml:space="preserve">
<value>Are you sure?</value>
</data>
<data name="quality" xml:space="preserve">
<value>Quality</value>
</data>
<data name="refresh.Label" xml:space="preserve">
<value>Refresh</value>
</data>
<data name="toastCanceledHeader" xml:space="preserve">
<value>Download canceled</value>
</data>
<data name="toastCompleteHeader" xml:space="preserve">
<value>Download complete</value>
</data>
<data name="toastStartHeader" xml:space="preserve">
<value>Downloading a video</value>
</data>
<data name="yes" xml:space="preserve">
<value>Yes</value>
</data>
</root>
-228
View File
@@ -1,228 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="autoplay.OffContent" xml:space="preserve">
<value>Play videos automatically</value>
</data>
<data name="autoplay.OnContent" xml:space="preserve">
<value>Play videos automatically</value>
</data>
<data name="color.Text" xml:space="preserve">
<value>Color mode</value>
</data>
<data name="colorDark.Content" xml:space="preserve">
<value>Dark</value>
</data>
<data name="colorDefault.Content" xml:space="preserve">
<value>Default</value>
</data>
<data name="colorLight.Content" xml:space="preserve">
<value>Light</value>
</data>
<data name="colorSystem.Content" xml:space="preserve">
<value>Windows color settings</value>
</data>
<data name="en.Content" xml:space="preserve">
<value>English (United States)</value>
</data>
<data name="interfaceLang.Header" xml:space="preserve">
<value>App interface language</value>
</data>
<data name="metered.OffContent" xml:space="preserve">
<value>Notify when playing on metered connection</value>
</data>
<data name="metered.OnContent" xml:space="preserve">
<value>Notify when playing on metered connection</value>
</data>
<data name="moderate.Content" xml:space="preserve">
<value>Moderate</value>
</data>
<data name="newVideo.OffContent" xml:space="preserve">
<value>Notify when someone of your subscriptions uploaded new video</value>
</data>
<data name="newVideo.OnContent" xml:space="preserve">
<value>Notify when someone of your subscriptions uploaded new video</value>
</data>
<data name="none.Content" xml:space="preserve">
<value>None</value>
</data>
<data name="notifications.Text" xml:space="preserve">
<value>Notifications</value>
</data>
<data name="preferences.Text" xml:space="preserve">
<value>Preferences</value>
</data>
<data name="playback.Text" xml:space="preserve">
<value>Playback</value>
</data>
<data name="quality.Header" xml:space="preserve">
<value>Default video playback quality</value>
</data>
<data name="region.Header" xml:space="preserve">
<value>Region</value>
</data>
<data name="regNsearch.Text" xml:space="preserve">
<value>Region &amp; search</value>
</data>
<data name="remember.Content" xml:space="preserve">
<value>Remember my choice</value>
</data>
<data name="restart.Text" xml:space="preserve">
<value>Reopen the app to apply changes (otherwise some elements may not be displayed correctly)</value>
</data>
<data name="ru.Content" xml:space="preserve">
<value>Russian (Russia)</value>
</data>
<data name="safeSearch.Header" xml:space="preserve">
<value>SafeSearch</value>
</data>
<data name="strict.Content" xml:space="preserve">
<value>Strict</value>
</data>
<data name="closeApp.Content" xml:space="preserve">
<value>Close app</value>
</data>
<data name="devNotifications.OffContent" xml:space="preserve">
<value>Recieve messages from developers</value>
</data>
<data name="devNotifications.OnContent" xml:space="preserve">
<value>Recieve messages from developers</value>
</data>
<data name="relevanceLanguage.Header" xml:space="preserve">
<value>Search relevance language</value>
</data>
<data name="auto.Content" xml:space="preserve">
<value>Auto</value>
</data>
<data name="interface.Text" xml:space="preserve">
<value>Interface</value>
</data>
<data name="minimizedCommandBar.OffContent" xml:space="preserve">
<value>Use compact command bar</value>
</data>
<data name="minimizedCommandBar.OnContent" xml:space="preserve">
<value>Use compact command bar</value>
</data>
<data name="clipboardProcessing.OffContent" xml:space="preserve">
<value>Process YouTube links from your clipboard</value>
</data>
<data name="clipboardProcessing.OnContent" xml:space="preserve">
<value>Process YouTube links from your clipboard</value>
</data>
</root>
-132
View File
@@ -1,132 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="recommended.Header" xml:space="preserve">
<value>Recommended</value>
</data>
<data name="refresh" xml:space="preserve">
<value>Refresh page</value>
</data>
<data name="subs.Header" xml:space="preserve">
<value>Subscriptions</value>
</data>
<data name="trending.Header" xml:space="preserve">
<value>Trending</value>
</data>
</root>
-144
View File
@@ -1,144 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="all.Content" xml:space="preserve">
<value>All</value>
</data>
<data name="changelog" xml:space="preserve">
<value>Changelog</value>
</data>
<data name="changelogs.Content" xml:space="preserve">
<value>Changelogs</value>
</data>
<data name="dev" xml:space="preserve">
<value>Developer's message</value>
</data>
<data name="filter.Header" xml:space="preserve">
<value>Filter</value>
</data>
<data name="messages.Content" xml:space="preserve">
<value>Messages</value>
</data>
<data name="select.Text" xml:space="preserve">
<value>Select item from the list</value>
</data>
<data name="whatsnew" xml:space="preserve">
<value>What's new in v</value>
</data>
</root>
-153
View File
@@ -1,153 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="checkConnection.Text" xml:space="preserve">
<value>Check your internet connection</value>
</data>
<data name="details" xml:space="preserve">
<value>Details</value>
</data>
<data name="err.Text" xml:space="preserve">
<value>We are unable to display the page</value>
</data>
<data name="errDescription.Text" xml:space="preserve">
<value>It could be caused by YouTube internal server error or by application's bug. Please, try again later</value>
</data>
<data name="ex" xml:space="preserve">
<value>Exception</value>
</data>
<data name="feedback.Content" xml:space="preserve">
<value>Report problem</value>
</data>
<data name="openTroubeshooter.Content" xml:space="preserve">
<value>Open troubleshooter</value>
</data>
<data name="openWifi.Content" xml:space="preserve">
<value>Open network settings</value>
</data>
<data name="or.Text" xml:space="preserve">
<value>OR</value>
</data>
<data name="refresh.Content" xml:space="preserve">
<value>Refresh page</value>
</data>
<data name="wifiDesc.Text" xml:space="preserve">
<value>Please, make sure you are connected to the internet and try again.</value>
</data>
</root>
-243
View File
@@ -1,243 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="addLater" xml:space="preserve">
<value>Add to 'Watch later' playlist</value>
</data>
<data name="adsFree.Content" xml:space="preserve">
<value>Remove ads</value>
</data>
<data name="channel" xml:space="preserve">
<value>Channel</value>
</data>
<data name="clipboardHead" xml:space="preserve">
<value>We've found this on your clipboard</value>
</data>
<data name="clipboardOpen" xml:space="preserve">
<value>Open in FoxTube</value>
</data>
<data name="close" xml:space="preserve">
<value>Close the app</value>
</data>
<data name="connectErrContent" xml:space="preserve">
<value>We were unabled to retrieve your account information due to weak internet connection or Google servers' problems. PLease, try again later</value>
</data>
<data name="connectErrHeader" xml:space="preserve">
<value>Failed to connect</value>
</data>
<data name="delay" xml:space="preserve">
<value>Later</value>
</data>
<data name="dontAsk" xml:space="preserve">
<value>Don't ask me anymore</value>
</data>
<data name="downloads.Content" xml:space="preserve">
<value>Downloads</value>
</data>
<data name="feedback.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
<value>Give a feedback</value>
</data>
<data name="feedbackFail" xml:space="preserve">
<value>Oops. Seems like you don't have a Feedback Hub app. But you can stil send your feedback to michael.xfox@outlook.com</value>
</data>
<data name="feedbackMessage" xml:space="preserve">
<value>Have some thoughts to share about the app or any suggestions? Leave feedback!</value>
</data>
<data name="goBack" xml:space="preserve">
<value>Nevermind. Get me back</value>
</data>
<data name="history.Content" xml:space="preserve">
<value>History</value>
</data>
<data name="home.Content" xml:space="preserve">
<value>Home</value>
</data>
<data name="later.Content" xml:space="preserve">
<value>Watch later</value>
</data>
<data name="liked.Content" xml:space="preserve">
<value>Liked videos</value>
</data>
<data name="metered" xml:space="preserve">
<value>You are on metered connection now. Additional charges may apply. Do you want to continue?</value>
</data>
<data name="myChannel.Content" xml:space="preserve">
<value>My channel</value>
</data>
<data name="myChannelContext.Text" xml:space="preserve">
<value>My channel</value>
</data>
<data name="myLibrary.Content" xml:space="preserve">
<value>My library</value>
</data>
<data name="no" xml:space="preserve">
<value>No</value>
</data>
<data name="playlist" xml:space="preserve">
<value>Playlist</value>
</data>
<data name="promptLater" xml:space="preserve">
<value>Maybe later</value>
</data>
<data name="purchaseSuccess" xml:space="preserve">
<value>Thanks for purchasing full version of the app (^∇^) In order to complete changes we need to reopen it. But you can do it later (some elements may be broken)</value>
</data>
<data name="quit" xml:space="preserve">
<value>Quit</value>
</data>
<data name="rate" xml:space="preserve">
<value>Like our app? Review it on Microsoft Store!</value>
</data>
<data name="searchPlaceholder.PlaceholderText" xml:space="preserve">
<value>Search</value>
</data>
<data name="sendEmail" xml:space="preserve">
<value>Send an E-mail</value>
</data>
<data name="settings.Content" xml:space="preserve">
<value>Settings</value>
</data>
<data name="signEx.Text" xml:space="preserve">
<value>Sign in with existing account</value>
</data>
<data name="signIn.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
<value>Add account</value>
</data>
<data name="signNew.Text" xml:space="preserve">
<value>Create new Google account</value>
</data>
<data name="signOut.Content" xml:space="preserve">
<value>Log out</value>
</data>
<data name="subscriptions.Content" xml:space="preserve">
<value>Subscriptions</value>
</data>
<data name="sure" xml:space="preserve">
<value>Sure!</value>
</data>
<data name="tryAgain" xml:space="preserve">
<value>Try again</value>
</data>
<data name="video" xml:space="preserve">
<value>Video</value>
</data>
<data name="yes" xml:space="preserve">
<value>Yes</value>
</data>
</root>
-162
View File
@@ -1,162 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="days" xml:space="preserve">
<value>days ago</value>
</data>
<data name="hrs" xml:space="preserve">
<value>hours ago</value>
</data>
<data name="minutes" xml:space="preserve">
<value>minutes ago</value>
</data>
<data name="months" xml:space="preserve">
<value>months ago</value>
</data>
<data name="now" xml:space="preserve">
<value>Just now</value>
</data>
<data name="oneDay" xml:space="preserve">
<value>1 day ago</value>
</data>
<data name="oneHr" xml:space="preserve">
<value>1 hour ago</value>
</data>
<data name="oneMinute" xml:space="preserve">
<value>1 minute ago</value>
</data>
<data name="oneMonth" xml:space="preserve">
<value>1 month ago</value>
</data>
<data name="oneWeek" xml:space="preserve">
<value>1 week ago</value>
</data>
<data name="oneYear" xml:space="preserve">
<value>1 year ago</value>
</data>
<data name="sharing" xml:space="preserve">
<value>Sharing a</value>
</data>
<data name="weeks" xml:space="preserve">
<value>weeks ago</value>
</data>
<data name="years" xml:space="preserve">
<value>years ago</value>
</data>
</root>
-168
View File
@@ -1,168 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="addTo.Label" xml:space="preserve">
<value>Add to</value>
</data>
<data name="appHistory.Header" xml:space="preserve">
<value>Application</value>
</data>
<data name="clear.Content" xml:space="preserve">
<value> Clear history</value>
</data>
<data name="historyClear.Body" xml:space="preserve">
<value>Are you sure? This action cannot be undone</value>
</data>
<data name="historyClear.Header" xml:space="preserve">
<value>Delete app history</value>
</data>
<data name="hlBody.Text" xml:space="preserve">
<value>Unfortunately, for now we are unable to manage your youtube history. If you want to see your web history go to Website tab. If you want to delete some items, please go to website</value>
</data>
<data name="hlHeader.Text" xml:space="preserve">
<value>Missing some stuff?</value>
</data>
<data name="no" xml:space="preserve">
<value>No</value>
</data>
<data name="openWeb.Label" xml:space="preserve">
<value>Open in browser</value>
</data>
<data name="refresh.Label" xml:space="preserve">
<value>Refresh</value>
</data>
<data name="share.Label" xml:space="preserve">
<value>Share</value>
</data>
<data name="videos" xml:space="preserve">
<value>videos</value>
</data>
<data name="webHistory.Header" xml:space="preserve">
<value>Website</value>
</data>
<data name="wlBody.Text" xml:space="preserve">
<value>Unfortunately, for now we are unable to delete videos from 'Watch later' playlist. If you want to do that you have to visit YouTube web page</value>
</data>
<data name="wlHeader.Text" xml:space="preserve">
<value>Don't know how to delete video from 'Watch later' playlist?</value>
</data>
<data name="yes" xml:space="preserve">
<value>Yes</value>
</data>
</root>
-150
View File
@@ -1,150 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="comment.Header" xml:space="preserve">
<value>Additional information (optional)</value>
</data>
<data name="err" xml:space="preserve">
<value>We are unable to send your report right now. Please, try again later</value>
</data>
<data name="reason.Header" xml:space="preserve">
<value>Reason</value>
</data>
<data name="reason.PlaceholderText" xml:space="preserve">
<value>Select a reason...</value>
</data>
<data name="report.CloseButtonText" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="report.PrimaryButtonText" xml:space="preserve">
<value>Report</value>
</data>
<data name="report.Title" xml:space="preserve">
<value>Report a video</value>
</data>
<data name="secondaryReason.PlaceholderText" xml:space="preserve">
<value>Select a category...</value>
</data>
<data name="submittedBody" xml:space="preserve">
<value>Thanks for making YouTube community better</value>
</data>
<data name="submittedHeader" xml:space="preserve">
<value>Your report has been sent</value>
</data>
</root>
-231
View File
@@ -1,231 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="all.Content" xml:space="preserve">
<value>All</value>
</data>
<data name="any.Content" xml:space="preserve">
<value>Any</value>
</data>
<data name="anytime.Content" xml:space="preserve">
<value>Anytime</value>
</data>
<data name="apply.Content" xml:space="preserve">
<value>Apply</value>
</data>
<data name="category" xml:space="preserve">
<value>Collection from</value>
</data>
<data name="cc.Text" xml:space="preserve">
<value>Creative Commons</value>
</data>
<data name="channel.Content" xml:space="preserve">
<value>Channel</value>
</data>
<data name="duration.Header" xml:space="preserve">
<value>Duration</value>
</data>
<data name="features.Content" xml:space="preserve">
<value>Features</value>
</data>
<data name="featuresHeader.Header" xml:space="preserve">
<value>Features</value>
</data>
<data name="filters.Content" xml:space="preserve">
<value>Show filters </value>
</data>
<data name="found" xml:space="preserve">
<value>Found</value>
</data>
<data name="header" xml:space="preserve">
<value>Search results for:</value>
</data>
<data name="hideFilters" xml:space="preserve">
<value>Hide filters </value>
</data>
<data name="items" xml:space="preserve">
<value>item(s)</value>
</data>
<data name="lasthr.Content" xml:space="preserve">
<value>Last hour</value>
</data>
<data name="live.Text" xml:space="preserve">
<value>Live</value>
</data>
<data name="long.Content" xml:space="preserve">
<value>Long (&gt; 20 minutes)</value>
</data>
<data name="medium.Content" xml:space="preserve">
<value>Medium</value>
</data>
<data name="month.Content" xml:space="preserve">
<value>This month</value>
</data>
<data name="openWeb.Label" xml:space="preserve">
<value>Open in browser</value>
</data>
<data name="order.Header" xml:space="preserve">
<value>Sort by</value>
</data>
<data name="playlist.Content" xml:space="preserve">
<value>Playlist</value>
</data>
<data name="rating.Content" xml:space="preserve">
<value>Rating</value>
</data>
<data name="refresh.Label" xml:space="preserve">
<value>Refresh</value>
</data>
<data name="relevance.Content" xml:space="preserve">
<value>Relevance</value>
</data>
<data name="short.Content" xml:space="preserve">
<value>Short (&lt; 4 minutes)</value>
</data>
<data name="subs.Text" xml:space="preserve">
<value>Subtitles/CC</value>
</data>
<data name="title.Content" xml:space="preserve">
<value>Title</value>
</data>
<data name="today.Content" xml:space="preserve">
<value>Today</value>
</data>
<data name="type.Header" xml:space="preserve">
<value>Type</value>
</data>
<data name="update.Content" xml:space="preserve">
<value>Upload date</value>
</data>
<data name="updateHeader.Header" xml:space="preserve">
<value>Upload date</value>
</data>
<data name="video.Content" xml:space="preserve">
<value>Video</value>
</data>
<data name="views.Content" xml:space="preserve">
<value>View count</value>
</data>
<data name="week.Content" xml:space="preserve">
<value>This week</value>
</data>
<data name="year.Content" xml:space="preserve">
<value>This year</value>
</data>
</root>
-132
View File
@@ -1,132 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="about.Header" xml:space="preserve">
<value>About us</value>
</data>
<data name="general.Header" xml:space="preserve">
<value>General</value>
</data>
<data name="helpTranslate.Header" xml:space="preserve">
<value>Help us translate this app</value>
</data>
<data name="inbox.Header" xml:space="preserve">
<value>Inbox</value>
</data>
</root>
-220
View File
@@ -1,220 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="body" xml:space="preserve">
<value>Thanks for your contribution into my application. It's very important to me. It will take some time to process your package, correct mistakes and prepare it for integration. I will send you an e-mail when it's done.
Cheers,
XFox
This is an automatic message. Please, don't respond it. Nah, ok, only if you want to :)</value>
</data>
<data name="certHeader.Text" xml:space="preserve">
<value>Package certification result</value>
</data>
<data name="choose.Content" xml:space="preserve">
<value>Choose another file</value>
</data>
<data name="description.Text" xml:space="preserve">
<value>You can help us make this app even better by contributing to its development by translating this app</value>
</data>
<data name="export.Content" xml:space="preserve">
<value>Export to PC (.zip)</value>
</data>
<data name="exportPicker" xml:space="preserve">
<value>Export</value>
</data>
<data name="failed" xml:space="preserve">
<value>Failed</value>
</data>
<data name="failedRead" xml:space="preserve">
<value>Failed to read file. File's structure is corrupted</value>
</data>
<data name="failedSend.Body" xml:space="preserve">
<value>We were unable to send your submission due to connection problems or internal server error. Please, try again later.</value>
</data>
<data name="failedSend.Header" xml:space="preserve">
<value>Failed to send your package</value>
</data>
<data name="file" xml:space="preserve">
<value>File</value>
</data>
<data name="guide0.Text" xml:space="preserve">
<value>It's quite simple:</value>
</data>
<data name="guide1.Header" xml:space="preserve">
<value>1. Choose language you you want to translate on</value>
</data>
<data name="guide1.PlaceholderText" xml:space="preserve">
<value>Choose language...</value>
</data>
<data name="guide2.Text" xml:space="preserve">
<value>2. Save language pack file to your PC</value>
</data>
<data name="guide3.Text" xml:space="preserve">
<value>3. Open archive's files with any text editor you want (Notepad, Wordpad, Notepad++, VS Code, etc.)</value>
</data>
<data name="guide4.Text" xml:space="preserve">
<value>4. Edit file by translating nececcary words and sentences</value>
</data>
<data name="guide5.Text" xml:space="preserve">
<value>5. Upload final package to our servers</value>
</data>
<data name="header.Text" xml:space="preserve">
<value>Help us translate this app</value>
</data>
<data name="info.Text" xml:space="preserve">
<value>It takes about 2-3 weeks to process new language pack and include it to the next update
Thank you for your help 😉
Cheers,</value>
</data>
<data name="inprogress" xml:space="preserve">
<value>In progress...</value>
</data>
<data name="langpackScheme" xml:space="preserve">
<value>Language pack scheme</value>
</data>
<data name="log.Content" xml:space="preserve">
<value>View log</value>
</data>
<data name="notfound" xml:space="preserve">
<value>not found</value>
</data>
<data name="passed" xml:space="preserve">
<value>Passed</value>
</data>
<data name="subject" xml:space="preserve">
<value>FoxTube language pack contribution</value>
</data>
<data name="submit.Content" xml:space="preserve">
<value>Upload</value>
</data>
<data name="success.Text" xml:space="preserve">
<value>Your language pack has been sent!</value>
</data>
<data name="successSub.Text" xml:space="preserve">
<value>Thank you! It's very imortant for us. You help us making the app better</value>
</data>
<data name="upload.Content" xml:space="preserve">
<value>Choose file to upload</value>
</data>
<data name="username" xml:space="preserve">
<value>FoxTube auto reply</value>
</data>
</root>
-315
View File
@@ -1,315 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="addTo.Label" xml:space="preserve">
<value>Add to</value>
</data>
<data name="always" xml:space="preserve">
<value>Don't ask me again</value>
</data>
<data name="audio" xml:space="preserve">
<value>Audio track</value>
</data>
<data name="audioOnly" xml:space="preserve">
<value>Audio only</value>
</data>
<data name="back.Text" xml:space="preserve">
<value>Go back for 10 seconds</value>
</data>
<data name="cancel" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="cast.Text" xml:space="preserve">
<value>Cast to device</value>
</data>
<data name="chat" xml:space="preserve">
<value>Chat</value>
</data>
<data name="close.Text" xml:space="preserve">
<value>Close video</value>
</data>
<data name="comments.Header" xml:space="preserve">
<value>Comments</value>
</data>
<data name="countdown.Text" xml:space="preserve">
<value>Stream starts in:</value>
</data>
<data name="desc" xml:space="preserve">
<value>Description</value>
</data>
<data name="download.Label" xml:space="preserve">
<value>Download video</value>
</data>
<data name="end" xml:space="preserve">
<value>Ends at:</value>
</data>
<data name="exitminiview.Text" xml:space="preserve">
<value>Exit compact view mode</value>
</data>
<data name="fullscreen.Text" xml:space="preserve">
<value>Full screen</value>
</data>
<data name="fwd.Text" xml:space="preserve">
<value>Skip forward for 30 seconds</value>
</data>
<data name="generatedCaption" xml:space="preserve">
<value>Auto-generated</value>
</data>
<data name="goLive.Text" xml:space="preserve">
<value>Go to live broadcast</value>
</data>
<data name="matureText" xml:space="preserve">
<value>This content may be not appropriate for children under 18</value>
</data>
<data name="maximize.Text" xml:space="preserve">
<value>Maximize</value>
</data>
<data name="minimize.Text" xml:space="preserve">
<value>Minimize</value>
</data>
<data name="miniview.Text" xml:space="preserve">
<value>Compact view mode</value>
</data>
<data name="mute.Text" xml:space="preserve">
<value>Mute</value>
</data>
<data name="next.Text" xml:space="preserve">
<value>Next video</value>
</data>
<data name="no" xml:space="preserve">
<value>No</value>
</data>
<data name="openWeb.Label" xml:space="preserve">
<value>Open in browser</value>
</data>
<data name="play.Text" xml:space="preserve">
<value>Play / Pause</value>
</data>
<data name="playlist.Header" xml:space="preserve">
<value>Playlist</value>
</data>
<data name="quality.Text" xml:space="preserve">
<value>Video quality</value>
</data>
<data name="qualitySelector.Header" xml:space="preserve">
<value>Quality</value>
</data>
<data name="refresh.Label" xml:space="preserve">
<value>Refresh page</value>
</data>
<data name="related.Header" xml:space="preserve">
<value>Suggestons</value>
</data>
<data name="schedule.Text" xml:space="preserve">
<value>Stream schedule:</value>
</data>
<data name="share.Label" xml:space="preserve">
<value>Share</value>
</data>
<data name="signin" xml:space="preserve">
<value>Sign in</value>
</data>
<data name="signRequired" xml:space="preserve">
<value>Please, sign into your account</value>
</data>
<data name="start" xml:space="preserve">
<value>Starts at:</value>
</data>
<data name="streamElapsed.Text" xml:space="preserve">
<value>Elapsed time since stream start</value>
</data>
<data name="subs.Text" xml:space="preserve">
<value>Captions</value>
</data>
<data name="subsSelector.Header" xml:space="preserve">
<value>Language</value>
</data>
<data name="subsSelector.PlaceholderText" xml:space="preserve">
<value>No captions are available</value>
</data>
<data name="subsSwitch.OffContent" xml:space="preserve">
<value>Captions</value>
</data>
<data name="subsSwitch.OnContent" xml:space="preserve">
<value>Captions</value>
</data>
<data name="upcomingHeader.Text" xml:space="preserve">
<value>Stream hasn't started yet</value>
</data>
<data name="volume.Text" xml:space="preserve">
<value>Volume</value>
</data>
<data name="wantContinue" xml:space="preserve">
<value>Do you want to continue</value>
</data>
<data name="yes" xml:space="preserve">
<value>Yes</value>
</data>
<data name="publishedAt" xml:space="preserve">
<value>Published at</value>
</data>
<data name="dialog.CloseButtonText" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="dialog.PrimaryButtonText" xml:space="preserve">
<value>Create and add</value>
</data>
<data name="dialog.Title" xml:space="preserve">
<value>New playlist</value>
</data>
<data name="direct.Content" xml:space="preserve">
<value>Direct link</value>
</data>
<data name="newPlaylist.Text" xml:space="preserve">
<value>New playlist</value>
</data>
<data name="newPlaylistName.PlaceholderText" xml:space="preserve">
<value>Enter playlist name</value>
</data>
<data name="privacy.Header" xml:space="preserve">
<value>Availability</value>
</data>
<data name="private.Content" xml:space="preserve">
<value>Private</value>
</data>
<data name="public.Content" xml:space="preserve">
<value>Public</value>
</data>
<data name="wl.Text" xml:space="preserve">
<value>Watch later</value>
</data>
<data name="live.Text" xml:space="preserve">
<value>🔴 LIVE</value>
</data>
<data name="continue" xml:space="preserve">
<value>Continue from</value>
</data>
<data name="auto" xml:space="preserve">
<value>Auto</value>
</data>
<data name="playbackSpeed.Header" xml:space="preserve">
<value>Playback speed</value>
</data>
<data name="report.Label" xml:space="preserve">
<value>Report this video</value>
</data>
<data name="inCat" xml:space="preserve">
<value>in</value>
</data>
</root>
-135
View File
@@ -1,135 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="dontAsk" xml:space="preserve">
<value>Don't ask me anymore</value>
</data>
<data name="feedbackMessage" xml:space="preserve">
<value>Have some thoughts to share about the app or any suggestions? Leave feedback!</value>
</data>
<data name="promptLater" xml:space="preserve">
<value>Maybe later</value>
</data>
<data name="rate" xml:space="preserve">
<value>Like our app? Review it on Microsoft Store!</value>
</data>
<data name="sure" xml:space="preserve">
<value>Sure!</value>
</data>
</root>
-129
View File
@@ -1,129 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="channel" xml:space="preserve">
<value>Channel</value>
</data>
<data name="playlist" xml:space="preserve">
<value>Playlist</value>
</data>
<data name="video" xml:space="preserve">
<value>Video</value>
</data>
</root>
-126
View File
@@ -1,126 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="changelog" xml:space="preserve">
<value>Changelog</value>
</data>
<data name="whatsNew" xml:space="preserve">
<value>What's new in version</value>
</data>
</root>
-150
View File
@@ -1,150 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="error" xml:space="preserve">
<value>Error</value>
</data>
<data name="feedback.Content" xml:space="preserve">
<value>Leave feedback</value>
</data>
<data name="general" xml:space="preserve">
<value>It could be caused by YouTube internal server error or by application's bug. Please, try again later</value>
</data>
<data name="generalTitle" xml:space="preserve">
<value>We are unable to display the page</value>
</data>
<data name="message" xml:space="preserve">
<value>Message</value>
</data>
<data name="network.Content" xml:space="preserve">
<value>Open network settings</value>
</data>
<data name="or.Text" xml:space="preserve">
<value>OR</value>
</data>
<data name="refresh.Content" xml:space="preserve">
<value>Refresh page</value>
</data>
<data name="stackTrace" xml:space="preserve">
<value>Stack trace</value>
</data>
<data name="troubleshooter.Content" xml:space="preserve">
<value>Open troubleshooter</value>
</data>
</root>
-126
View File
@@ -1,126 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="clipboardHead" xml:space="preserve">
<value>We've found this on your clipboard</value>
</data>
<data name="clipboardOpen" xml:space="preserve">
<value>Open in FoxTube</value>
</data>
</root>
-171
View File
@@ -1,171 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="aboutHeader.Text" xml:space="preserve">
<value>О нас и приложении</value>
</data>
<data name="contacts.Text" xml:space="preserve">
<value>Контакты</value>
</data>
<data name="crMe.Text" xml:space="preserve">
<value>© Михаил Гордеев</value>
</data>
<data name="crYt.Text" xml:space="preserve">
<value>© YouTube, LLC</value>
</data>
<data name="developed.Text" xml:space="preserve">
<value>Разработано Михаилом Гордеевым (также известным как XFox)</value>
</data>
<data name="feedback.Content" xml:space="preserve">
<value>Оставить отзыв</value>
</data>
<data name="guides.Content" xml:space="preserve">
<value>Принципы сообщества YouTube</value>
</data>
<data name="legal.Text" xml:space="preserve">
<value>Юридический материал</value>
</data>
<data name="msreviewThanks.Text" xml:space="preserve">
<value>за теплый прием и первый отзыв!</value>
</data>
<data name="myBlog.Text" xml:space="preserve">
<value>Мой веб-сайт</value>
</data>
<data name="ourPrivacy.Content" xml:space="preserve">
<value>Наша политика конфиденциальности</value>
</data>
<data name="specialThanks.Text" xml:space="preserve">
<value>Отдельная благодарность:</value>
</data>
<data name="terms.Content" xml:space="preserve">
<value>Правила использования YouTube</value>
</data>
<data name="twitter.Text" xml:space="preserve">
<value>Твиттер</value>
</data>
<data name="tyrrrzThanks.Text" xml:space="preserve">
<value>за его очень крутую библиотеку!</value>
</data>
<data name="vk.Text" xml:space="preserve">
<value>ВКонтакте</value>
</data>
<data name="ytPrivacy.Content" xml:space="preserve">
<value>Политика конфиденциальности YouYube</value>
</data>
</root>
-201
View File
@@ -1,201 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="channel.Text" xml:space="preserve">
<value>Посмотреть канал</value>
</data>
<data name="channelShare" xml:space="preserve">
<value>каналом</value>
</data>
<data name="getLink.Text" xml:space="preserve">
<value>Скопировать ссылку</value>
</data>
<data name="goesLive" xml:space="preserve">
<value>Начало через</value>
</data>
<data name="incognitoPlay.Text" xml:space="preserve">
<value>Открыть в режиме инкогнито</value>
</data>
<data name="live.Text" xml:space="preserve">
<value>Прямой эфир</value>
</data>
<data name="login.Text" xml:space="preserve">
<value>Войдите</value>
</data>
<data name="more.Content" xml:space="preserve">
<value>Показать еще</value>
</data>
<data name="openWeb.Text" xml:space="preserve">
<value>Открыть в браузере</value>
</data>
<data name="play.Text" xml:space="preserve">
<value>Открыть</value>
</data>
<data name="playlist.Text" xml:space="preserve">
<value>Посмотреть плейлист</value>
</data>
<data name="playlistShare" xml:space="preserve">
<value>плейлистом</value>
</data>
<data name="share.Text" xml:space="preserve">
<value>Поделиться</value>
</data>
<data name="subscribe.Content" xml:space="preserve">
<value>Подписаться</value>
</data>
<data name="subscribers" xml:space="preserve">
<value>подписчиков</value>
</data>
<data name="tomanage.Text" xml:space="preserve">
<value>чтобы управлять подписками</value>
</data>
<data name="unsubscribe" xml:space="preserve">
<value>Вы подписаны</value>
</data>
<data name="upcoming" xml:space="preserve">
<value>Запланирован</value>
</data>
<data name="videos" xml:space="preserve">
<value>видео</value>
</data>
<data name="videoShare" xml:space="preserve">
<value>видео</value>
</data>
<data name="viewers" xml:space="preserve">
<value>зрителей</value>
</data>
<data name="views" xml:space="preserve">
<value>просмотров</value>
</data>
<data name="watched.Text" xml:space="preserve">
<value>Просмотрено</value>
</data>
<data name="addTo.Text" xml:space="preserve">
<value>Добавить в</value>
</data>
<data name="delete.Text" xml:space="preserve">
<value>Удалить из плейлиста</value>
</data>
<data name="downloads.Text" xml:space="preserve">
<value>Загрузки</value>
</data>
<data name="sponsored.Text" xml:space="preserve">
<value>Реклама</value>
</data>
</root>
-162
View File
@@ -1,162 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="about.Header" xml:space="preserve">
<value>О канале</value>
</data>
<data name="aboutTitle.Text" xml:space="preserve">
<value>Об этом канале</value>
</data>
<data name="desc.Text" xml:space="preserve">
<value>Описание</value>
</data>
<data name="openWeb.Label" xml:space="preserve">
<value>Открыть в браузере</value>
</data>
<data name="playlists.Header" xml:space="preserve">
<value>Плейлисты</value>
</data>
<data name="playlistTitle.Text" xml:space="preserve">
<value>Плейлисты</value>
</data>
<data name="refresh.Label" xml:space="preserve">
<value>Обновить</value>
</data>
<data name="regDate.Text" xml:space="preserve">
<value>Дата регистрации:</value>
</data>
<data name="search.PlaceholderText" xml:space="preserve">
<value>Искать на канале</value>
</data>
<data name="share.Label" xml:space="preserve">
<value>Поделиться</value>
</data>
<data name="stats.Text" xml:space="preserve">
<value>Статистика</value>
</data>
<data name="videos.Header" xml:space="preserve">
<value>Видео</value>
</data>
<data name="views.Text" xml:space="preserve">
<value>Просмотры: </value>
</data>
<data name="searchHeader" xml:space="preserve">
<value>Результаты поиска</value>
</data>
</root>
-141
View File
@@ -1,141 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="box.PlaceholderText" xml:space="preserve">
<value>Отправить сообщение</value>
</data>
<data name="failed" xml:space="preserve">
<value>Не удалось отправить ваше сообщение. Это могло произойти из-за включенного в этом чате замедленного режима. Пожалуйста, попробуйте позже. P.S. Отчет об ошибке был отправлен разработчикам</value>
</data>
<data name="moder.Text" xml:space="preserve">
<value>Модератор</value>
</data>
<data name="owner.Text" xml:space="preserve">
<value>Владелец чата</value>
</data>
<data name="sponsor.Text" xml:space="preserve">
<value>Спонсор</value>
</data>
<data name="verified.Text" xml:space="preserve">
<value>Подтвержден</value>
</data>
<data name="welcome.Text" xml:space="preserve">
<value>Добро пожаловать в чат!</value>
</data>
</root>
-186
View File
@@ -1,186 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="comments" xml:space="preserve">
<value>комментариев</value>
</data>
<data name="date.Text" xml:space="preserve">
<value>Дате</value>
</data>
<data name="deleteContent" xml:space="preserve">
<value>Вы уверены? Это действие нельзя отменить</value>
</data>
<data name="deleteHeader" xml:space="preserve">
<value>Удалить комментарий</value>
</data>
<data name="edit.Text" xml:space="preserve">
<value>Редактировать</value>
</data>
<data name="edited" xml:space="preserve">
<value>(изменен)</value>
</data>
<data name="editorCancel.Content" xml:space="preserve">
<value>Отмена</value>
</data>
<data name="editorDelete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
<value>Удалить комментарий</value>
</data>
<data name="editorSubmit.Content" xml:space="preserve">
<value>Отправить</value>
</data>
<data name="failedDelete" xml:space="preserve">
<value>Не удалось удалить комментарий. Пожалуйста, попробуйте позже</value>
</data>
<data name="failedEdit" xml:space="preserve">
<value>Не удалось изменить комментарий. Пожалуйста, попробуйте позже</value>
</data>
<data name="failedReply" xml:space="preserve">
<value>Не удалось отправить ответ. Пожалуйста, попробуйте позже</value>
</data>
<data name="more.Content" xml:space="preserve">
<value>Показать еще</value>
</data>
<data name="no" xml:space="preserve">
<value>Нет</value>
</data>
<data name="publish" xml:space="preserve">
<value>Дате публикации</value>
</data>
<data name="relevance.Text" xml:space="preserve">
<value>Популярности</value>
</data>
<data name="reply.Text" xml:space="preserve">
<value>Ответить</value>
</data>
<data name="replyBox.PlaceholderText" xml:space="preserve">
<value>Введите свой ответ...</value>
</data>
<data name="sortBy.Text" xml:space="preserve">
<value>Сортировать по:</value>
</data>
<data name="spam.Text" xml:space="preserve">
<value>Отметить как спам</value>
</data>
<data name="textbox.PlaceholderText" xml:space="preserve">
<value>Оставить комментарий</value>
</data>
<data name="yes" xml:space="preserve">
<value>Да</value>
</data>
</root>
-183
View File
@@ -1,183 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="author" xml:space="preserve">
<value>Автор</value>
</data>
<data name="cancel.Content" xml:space="preserve">
<value>Отмена</value>
</data>
<data name="cancelling" xml:space="preserve">
<value>Отмена...</value>
</data>
<data name="cancellingHeader" xml:space="preserve">
<value>Отмена загрузки</value>
</data>
<data name="downloading.Text" xml:space="preserve">
<value>Загрузка...</value>
</data>
<data name="duration" xml:space="preserve">
<value>Длительность</value>
</data>
<data name="ext" xml:space="preserve">
<value>Расширение</value>
</data>
<data name="failedBody" xml:space="preserve">
<value>Отчет об ошибке был отправлен</value>
</data>
<data name="failedHead" xml:space="preserve">
<value>При загрузке видео произошла ошибка</value>
</data>
<data name="gotoOrign.Text" xml:space="preserve">
<value>Открыть оригинал</value>
</data>
<data name="no" xml:space="preserve">
<value>Нет</value>
</data>
<data name="noItems.Text" xml:space="preserve">
<value>Вы еще ничего не скачивали</value>
</data>
<data name="openFile.Text" xml:space="preserve">
<value>Открыть</value>
</data>
<data name="openFolder.Content" xml:space="preserve">
<value>Открыть папку</value>
</data>
<data name="prompt" xml:space="preserve">
<value>Вы уверены?</value>
</data>
<data name="quality" xml:space="preserve">
<value>Качество</value>
</data>
<data name="refresh.Label" xml:space="preserve">
<value>Обновить</value>
</data>
<data name="toastCanceledHeader" xml:space="preserve">
<value>Загрузка отменена</value>
</data>
<data name="toastCompleteHeader" xml:space="preserve">
<value>Загрузка завершена</value>
</data>
<data name="toastStartHeader" xml:space="preserve">
<value>Загрузка видео</value>
</data>
<data name="yes" xml:space="preserve">
<value>Да</value>
</data>
</root>
-228
View File
@@ -1,228 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="autoplay.OffContent" xml:space="preserve">
<value>Воспроизводить видео автоматически</value>
</data>
<data name="autoplay.OnContent" xml:space="preserve">
<value>Воспроизводить видео автоматически</value>
</data>
<data name="color.Text" xml:space="preserve">
<value>Тема</value>
</data>
<data name="colorDark.Content" xml:space="preserve">
<value>Темная</value>
</data>
<data name="colorDefault.Content" xml:space="preserve">
<value>Системная</value>
</data>
<data name="colorLight.Content" xml:space="preserve">
<value>Светлая</value>
</data>
<data name="colorSystem.Content" xml:space="preserve">
<value>Цветовые настройки Windows</value>
</data>
<data name="en.Content" xml:space="preserve">
<value>Английский (США)</value>
</data>
<data name="interfaceLang.Header" xml:space="preserve">
<value>Язык интерфейса</value>
</data>
<data name="metered.OffContent" xml:space="preserve">
<value>Уведомлять об ограниченном соединении перед воспроизведением</value>
</data>
<data name="metered.OnContent" xml:space="preserve">
<value>Уведомлять об ограниченном соединении перед воспроизведением</value>
</data>
<data name="moderate.Content" xml:space="preserve">
<value>Выборочный</value>
</data>
<data name="newVideo.OffContent" xml:space="preserve">
<value>Уведомлять если кто-то из ваших подписок загрузил новое видео</value>
</data>
<data name="newVideo.OnContent" xml:space="preserve">
<value>Уведомлять если кто-то из ваших подписок загрузил новое видео</value>
</data>
<data name="none.Content" xml:space="preserve">
<value>Отключен</value>
</data>
<data name="notifications.Text" xml:space="preserve">
<value>Уведомления</value>
</data>
<data name="preferences.Text" xml:space="preserve">
<value>Настройки</value>
</data>
<data name="playback.Text" xml:space="preserve">
<value>Воспроизведение</value>
</data>
<data name="quality.Header" xml:space="preserve">
<value>Качество видео по умолчанию</value>
</data>
<data name="region.Header" xml:space="preserve">
<value>Регион</value>
</data>
<data name="regNsearch.Text" xml:space="preserve">
<value>Регион и поиск</value>
</data>
<data name="remember.Content" xml:space="preserve">
<value>Запомнить мой выбор</value>
</data>
<data name="restart.Text" xml:space="preserve">
<value>Перезапустите приложение, чтобы применить настройки (в противном случае некоторые элементы могут неправильно отображаться)</value>
</data>
<data name="ru.Content" xml:space="preserve">
<value>Русский (Россия)</value>
</data>
<data name="safeSearch.Header" xml:space="preserve">
<value>Безопасный поиск</value>
</data>
<data name="strict.Content" xml:space="preserve">
<value>Строгий</value>
</data>
<data name="closeApp.Content" xml:space="preserve">
<value>Закрыть приложение</value>
</data>
<data name="devNotifications.OffContent" xml:space="preserve">
<value>Получать уведомления от разработчиков</value>
</data>
<data name="devNotifications.OnContent" xml:space="preserve">
<value>Получать уведомления от разработчиков</value>
</data>
<data name="relevanceLanguage.Header" xml:space="preserve">
<value>Предпочитаемый язык поиска</value>
</data>
<data name="auto.Content" xml:space="preserve">
<value>Авто</value>
</data>
<data name="interface.Text" xml:space="preserve">
<value>Интерфейс</value>
</data>
<data name="minimizedCommandBar.OffContent" xml:space="preserve">
<value>Использовать компактную панель команд</value>
</data>
<data name="minimizedCommandBar.OnContent" xml:space="preserve">
<value>Использовать компактную панель команд</value>
</data>
<data name="clipboardProcessing.OffContent" xml:space="preserve">
<value>Обрабатывать ссылки YouTube из буфера обмена</value>
</data>
<data name="clipboardProcessing.OnContent" xml:space="preserve">
<value>Обрабатывать ссылки YouTube из буфера обмена</value>
</data>
</root>
-132
View File
@@ -1,132 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="recommended.Header" xml:space="preserve">
<value>Рекомендуемое</value>
</data>
<data name="refresh" xml:space="preserve">
<value>Обновить страницу</value>
</data>
<data name="subs.Header" xml:space="preserve">
<value>Подписки</value>
</data>
<data name="trending.Header" xml:space="preserve">
<value>Популярное</value>
</data>
</root>
-144
View File
@@ -1,144 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="all.Content" xml:space="preserve">
<value>Все</value>
</data>
<data name="changelog" xml:space="preserve">
<value>Список изменений</value>
</data>
<data name="changelogs.Content" xml:space="preserve">
<value>"Что нового?"</value>
</data>
<data name="dev" xml:space="preserve">
<value>Сообщение от разработчиков</value>
</data>
<data name="filter.Header" xml:space="preserve">
<value>Фильтр</value>
</data>
<data name="messages.Content" xml:space="preserve">
<value>Сообщения</value>
</data>
<data name="select.Text" xml:space="preserve">
<value>Выберите сообщение из списка</value>
</data>
<data name="whatsnew" xml:space="preserve">
<value>Что нового в версии </value>
</data>
</root>
-153
View File
@@ -1,153 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="checkConnection.Text" xml:space="preserve">
<value>Проверте интернет-соединение</value>
</data>
<data name="details" xml:space="preserve">
<value>Сообщение</value>
</data>
<data name="err.Text" xml:space="preserve">
<value>Мы не можем отобразить страницу</value>
</data>
<data name="errDescription.Text" xml:space="preserve">
<value>Это может происходить из-за проблем на серверах YouTube или из-за ошибок приложения. Пожалуйста, попробуйте позже</value>
</data>
<data name="ex" xml:space="preserve">
<value>Ошибка</value>
</data>
<data name="feedback.Content" xml:space="preserve">
<value>Сообщить об ошибке</value>
</data>
<data name="openTroubeshooter.Content" xml:space="preserve">
<value>Устранение неполадок</value>
</data>
<data name="openWifi.Content" xml:space="preserve">
<value>Открыть настройки сети</value>
</data>
<data name="or.Text" xml:space="preserve">
<value>ИЛИ</value>
</data>
<data name="refresh.Content" xml:space="preserve">
<value>Обновить страницу</value>
</data>
<data name="wifiDesc.Text" xml:space="preserve">
<value>Пожалуйста, убедитесь, что вы подключены к Интернету и попробуйте обновить страницу</value>
</data>
</root>
-240
View File
@@ -1,240 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="addLater" xml:space="preserve">
<value>Добавить в плейлист 'Посмотреть позже'</value>
</data>
<data name="adsFree.Content" xml:space="preserve">
<value>Убрать рекламу</value>
</data>
<data name="channel" xml:space="preserve">
<value>Канал</value>
</data>
<data name="clipboardOpen" xml:space="preserve">
<value>Открыть в FoxTube</value>
</data>
<data name="close" xml:space="preserve">
<value>Закрыть приложение</value>
</data>
<data name="connectErrContent" xml:space="preserve">
<value>Нам не удалось подключиться к серверу из-за плохого соединения или проблем на стороне YouTube. Пожалуйста, попробуйте позже</value>
</data>
<data name="connectErrHeader" xml:space="preserve">
<value>Не удалось подключиться</value>
</data>
<data name="delay" xml:space="preserve">
<value>Позже</value>
</data>
<data name="dontAsk" xml:space="preserve">
<value>Больше не спрашивайте меня</value>
</data>
<data name="downloads.Content" xml:space="preserve">
<value>Загрузки</value>
</data>
<data name="feedback.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
<value>Оставить отзыв</value>
</data>
<data name="feedbackFail" xml:space="preserve">
<value>Ой. Похоже, у вас нет приложения "Центр отзывов". Но вы все еще можете отправить свой отзыв по почте</value>
</data>
<data name="feedbackMessage" xml:space="preserve">
<value>Есть мысли или идеи по поводу нашего приложения? Оставьте отзыв!</value>
</data>
<data name="goBack" xml:space="preserve">
<value>Не важно. Я передумал</value>
</data>
<data name="history.Content" xml:space="preserve">
<value>История</value>
</data>
<data name="home.Content" xml:space="preserve">
<value>Главная</value>
</data>
<data name="later.Content" xml:space="preserve">
<value>Посмотреть позже</value>
</data>
<data name="liked.Content" xml:space="preserve">
<value>Понравившиеся</value>
</data>
<data name="metered" xml:space="preserve">
<value>Передача данных в этой сети ограничена. Может взиматься дополнительная плата. Вы хотите продолжить?</value>
</data>
<data name="myChannel.Content" xml:space="preserve">
<value>Мой канал</value>
</data>
<data name="myChannelContext.Text" xml:space="preserve">
<value>Мой канал</value>
</data>
<data name="myLibrary.Content" xml:space="preserve">
<value>Библиотека</value>
</data>
<data name="no" xml:space="preserve">
<value>Нет</value>
</data>
<data name="playlist" xml:space="preserve">
<value>Плейлист</value>
</data>
<data name="promptLater" xml:space="preserve">
<value>Может, позже</value>
</data>
<data name="purchaseSuccess" xml:space="preserve">
<value>Спасибо за покупку полной версии приложения (^∇^) Для завершения настройки нам необходимо перезапустить приложение. Но вы можете сделать это позже (некоторые элементы могут неправильно отображаться)</value>
</data>
<data name="quit" xml:space="preserve">
<value>Выйти</value>
</data>
<data name="rate" xml:space="preserve">
<value>Нравится наше приложение? Напишите отзыв в магазине Майкрософт!</value>
</data>
<data name="searchPlaceholder.PlaceholderText" xml:space="preserve">
<value>Поиск</value>
</data>
<data name="sendEmail" xml:space="preserve">
<value>Отправить письмо</value>
</data>
<data name="settings.Content" xml:space="preserve">
<value>Настройки</value>
</data>
<data name="signEx.Text" xml:space="preserve">
<value>Войти с помощью существующего аккаунта Google</value>
</data>
<data name="signIn.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
<value>Войти в аккаунт</value>
</data>
<data name="signNew.Text" xml:space="preserve">
<value>Создать новый аккаунт Google</value>
</data>
<data name="signOut.Content" xml:space="preserve">
<value>Выйти</value>
</data>
<data name="subscriptions.Content" xml:space="preserve">
<value>Подписки</value>
</data>
<data name="sure" xml:space="preserve">
<value>Конечно!</value>
</data>
<data name="tryAgain" xml:space="preserve">
<value>Попробовать снова</value>
</data>
<data name="video" xml:space="preserve">
<value>Видео</value>
</data>
<data name="yes" xml:space="preserve">
<value>Да</value>
</data>
</root>
-162
View File
@@ -1,162 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="days" xml:space="preserve">
<value>дней назад</value>
</data>
<data name="hrs" xml:space="preserve">
<value>часов назад</value>
</data>
<data name="minutes" xml:space="preserve">
<value>минут назад</value>
</data>
<data name="months" xml:space="preserve">
<value>месяцев назад</value>
</data>
<data name="now" xml:space="preserve">
<value>Только что</value>
</data>
<data name="oneDay" xml:space="preserve">
<value>1 день назад</value>
</data>
<data name="oneHr" xml:space="preserve">
<value>1 час назад</value>
</data>
<data name="oneMinute" xml:space="preserve">
<value>1 минуту назад</value>
</data>
<data name="oneMonth" xml:space="preserve">
<value>1 месяц назад</value>
</data>
<data name="oneWeek" xml:space="preserve">
<value>1 неделю назад</value>
</data>
<data name="oneYear" xml:space="preserve">
<value>1 год назад</value>
</data>
<data name="sharing" xml:space="preserve">
<value>Поделиться</value>
</data>
<data name="weeks" xml:space="preserve">
<value>недель назад</value>
</data>
<data name="years" xml:space="preserve">
<value>лет назад</value>
</data>
</root>
-168
View File
@@ -1,168 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="addTo.Label" xml:space="preserve">
<value>Добавить в</value>
</data>
<data name="appHistory.Header" xml:space="preserve">
<value>Приложение</value>
</data>
<data name="clear.Content" xml:space="preserve">
<value> Очистить историю</value>
</data>
<data name="historyClear.Body" xml:space="preserve">
<value>Вы уверены? Это действие невозможно отменить</value>
</data>
<data name="historyClear.Header" xml:space="preserve">
<value>Очистить историю просмотра?</value>
</data>
<data name="hlBody.Text" xml:space="preserve">
<value>К сожалению, пока мы не можем управлять историей просмотров. Если вам нужна история просмотров сайта, перейдите на вкладку "Сайт". Если вы хотите что-то удалить из истории, пожалуйста перейдите на веб-версию сайта</value>
</data>
<data name="hlHeader.Text" xml:space="preserve">
<value>Не можете что-то найти?</value>
</data>
<data name="no" xml:space="preserve">
<value>Нет</value>
</data>
<data name="openWeb.Label" xml:space="preserve">
<value>Открыть в браузере</value>
</data>
<data name="refresh.Label" xml:space="preserve">
<value>Обновить</value>
</data>
<data name="share.Label" xml:space="preserve">
<value>Поделиться</value>
</data>
<data name="videos" xml:space="preserve">
<value>видео</value>
</data>
<data name="webHistory.Header" xml:space="preserve">
<value>Сайт</value>
</data>
<data name="wlBody.Text" xml:space="preserve">
<value>К сожалению, пока мы не можем удалять видео из этого плейлиста. Если вы хотите сделать это, вам придется перейти на веб-версию сайта</value>
</data>
<data name="wlHeader.Text" xml:space="preserve">
<value>Не знаете как удалить видео из "Посмотреть позже"?</value>
</data>
<data name="yes" xml:space="preserve">
<value>Да</value>
</data>
</root>
-150
View File
@@ -1,150 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="comment.Header" xml:space="preserve">
<value>Дополнительная информация (необязательно)</value>
</data>
<data name="err" xml:space="preserve">
<value>Нам не удалось отправить жалобу прямо сейчас. Пожалуйста, попробуйте позже</value>
</data>
<data name="reason.Header" xml:space="preserve">
<value>Причина</value>
</data>
<data name="reason.PlaceholderText" xml:space="preserve">
<value>Выберите причину...</value>
</data>
<data name="report.CloseButtonText" xml:space="preserve">
<value>Отмена</value>
</data>
<data name="report.PrimaryButtonText" xml:space="preserve">
<value>Пожаловаться</value>
</data>
<data name="report.Title" xml:space="preserve">
<value>Пожаловаться на видео</value>
</data>
<data name="secondaryReason.PlaceholderText" xml:space="preserve">
<value>Выберите категорию...</value>
</data>
<data name="submittedBody" xml:space="preserve">
<value>Спасибо что помогаете делать сообщество YouTube лучше</value>
</data>
<data name="submittedHeader" xml:space="preserve">
<value>Ваша жалоба отправлена</value>
</data>
</root>
-231
View File
@@ -1,231 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="all.Content" xml:space="preserve">
<value>Все</value>
</data>
<data name="any.Content" xml:space="preserve">
<value>Любая</value>
</data>
<data name="anytime.Content" xml:space="preserve">
<value>Любое</value>
</data>
<data name="apply.Content" xml:space="preserve">
<value>Применить</value>
</data>
<data name="category" xml:space="preserve">
<value>Коллекция категории</value>
</data>
<data name="cc.Text" xml:space="preserve">
<value>Лицензия Creative Commons</value>
</data>
<data name="channel.Content" xml:space="preserve">
<value>Канал</value>
</data>
<data name="duration.Header" xml:space="preserve">
<value>Длительность</value>
</data>
<data name="features.Content" xml:space="preserve">
<value>Особенности</value>
</data>
<data name="featuresHeader.Header" xml:space="preserve">
<value>Особенности</value>
</data>
<data name="filters.Content" xml:space="preserve">
<value>Показать фильтры </value>
</data>
<data name="found" xml:space="preserve">
<value>Найдено</value>
</data>
<data name="header" xml:space="preserve">
<value>Результаты поиска по запросу</value>
</data>
<data name="hideFilters" xml:space="preserve">
<value>Скрыть фильтры </value>
</data>
<data name="items" xml:space="preserve">
<value>результатов</value>
</data>
<data name="lasthr.Content" xml:space="preserve">
<value>За последний час</value>
</data>
<data name="live.Text" xml:space="preserve">
<value>Прямой эфир</value>
</data>
<data name="long.Content" xml:space="preserve">
<value>Большая (&gt; 20 минут)</value>
</data>
<data name="medium.Content" xml:space="preserve">
<value>Средняя</value>
</data>
<data name="month.Content" xml:space="preserve">
<value>За этот месяц</value>
</data>
<data name="openWeb.Label" xml:space="preserve">
<value>Открыть в браузере</value>
</data>
<data name="order.Header" xml:space="preserve">
<value>Сортировать по</value>
</data>
<data name="playlist.Content" xml:space="preserve">
<value>Плейлист</value>
</data>
<data name="rating.Content" xml:space="preserve">
<value>Рейтингу</value>
</data>
<data name="refresh.Label" xml:space="preserve">
<value>Обновить</value>
</data>
<data name="relevance.Content" xml:space="preserve">
<value>Популярности</value>
</data>
<data name="short.Content" xml:space="preserve">
<value>Короткая (&lt; 4 минут)</value>
</data>
<data name="subs.Text" xml:space="preserve">
<value>Субтитры</value>
</data>
<data name="title.Content" xml:space="preserve">
<value>Названию</value>
</data>
<data name="today.Content" xml:space="preserve">
<value>Сегодня</value>
</data>
<data name="type.Header" xml:space="preserve">
<value>Тип</value>
</data>
<data name="update.Content" xml:space="preserve">
<value>Дате публикации</value>
</data>
<data name="updateHeader.Header" xml:space="preserve">
<value>Дата публикации</value>
</data>
<data name="video.Content" xml:space="preserve">
<value>Видео</value>
</data>
<data name="views.Content" xml:space="preserve">
<value>Количеству просмотров</value>
</data>
<data name="week.Content" xml:space="preserve">
<value>За эту неделю</value>
</data>
<data name="year.Content" xml:space="preserve">
<value>За этот год</value>
</data>
</root>
-132
View File
@@ -1,132 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="about.Header" xml:space="preserve">
<value>О нас</value>
</data>
<data name="general.Header" xml:space="preserve">
<value>Общие</value>
</data>
<data name="helpTranslate.Header" xml:space="preserve">
<value>Помогите перевести приложение</value>
</data>
<data name="inbox.Header" xml:space="preserve">
<value>Сообщения</value>
</data>
</root>
-220
View File
@@ -1,220 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="body" xml:space="preserve">
<value>Спасибо за ваш вклад в развитие моего приложения. Это очень важно для меня. Обработка пакета, исправление технических ошибок и подготовка пакета к интеграции займет некоторое время. Я пришлю вам письмо, когда локализация будет готова.
Всего лучшего,
XFox
Это автоматический ответ. Пожалуйста, не отвечайте на это письмо. Ладно, только если очень хочется)</value>
</data>
<data name="certHeader.Text" xml:space="preserve">
<value>Результат сертификации пакета</value>
</data>
<data name="choose.Content" xml:space="preserve">
<value>Выбрать другой файл</value>
</data>
<data name="description.Text" xml:space="preserve">
<value>Вы можете помочь нам сделать приложение еще лучше, помогая перевести его на новые языки</value>
</data>
<data name="export.Content" xml:space="preserve">
<value>Экспортировать на ПК (.zip)</value>
</data>
<data name="exportPicker" xml:space="preserve">
<value>Сохранить</value>
</data>
<data name="failed" xml:space="preserve">
<value>Провал</value>
</data>
<data name="failedRead" xml:space="preserve">
<value>Ошибка чтения файла. Структура данных повреждена</value>
</data>
<data name="failedSend.Body" xml:space="preserve">
<value>Не удалось отправить ваш пакет из-за проблем с соединением или внутренней ошибкой сервера. Пожалуйста, попробуйте позже</value>
</data>
<data name="failedSend.Header" xml:space="preserve">
<value>Ошибка при отправке пакета</value>
</data>
<data name="file" xml:space="preserve">
<value>Файл</value>
</data>
<data name="guide0.Text" xml:space="preserve">
<value>Это достаточно просто:</value>
</data>
<data name="guide1.Header" xml:space="preserve">
<value>1. Выберите язык на который вы хотите перевести</value>
</data>
<data name="guide1.PlaceholderText" xml:space="preserve">
<value>Выберите язык...</value>
</data>
<data name="guide2.Text" xml:space="preserve">
<value>2. Сохраните языковой пакет на свой ПК</value>
</data>
<data name="guide3.Text" xml:space="preserve">
<value>3. Откройте файлы в архиве любым текстовым редактором на ваш выбор (Блокнот, Wordpad, Notepad++, VS Code, и т.д.)</value>
</data>
<data name="guide4.Text" xml:space="preserve">
<value>4. Переведите необходимые слова и предложения</value>
</data>
<data name="guide5.Text" xml:space="preserve">
<value>5. Загрузите финальный пакет на наши сервера</value>
</data>
<data name="header.Text" xml:space="preserve">
<value>Помогите нам перевести это приложение</value>
</data>
<data name="info.Text" xml:space="preserve">
<value>Обработка пакета займет 2-3 недели. Новая локализация будет доступна в ближайших обновлениях
Спасибо за вашу помощь 😉
С наилучшими пожеланиями,</value>
</data>
<data name="inprogress" xml:space="preserve">
<value>В процессе...</value>
</data>
<data name="langpackScheme" xml:space="preserve">
<value>Схема языкового пакета</value>
</data>
<data name="log.Content" xml:space="preserve">
<value>Посмотреть лог</value>
</data>
<data name="notfound" xml:space="preserve">
<value>не найден</value>
</data>
<data name="passed" xml:space="preserve">
<value>Пройдена</value>
</data>
<data name="subject" xml:space="preserve">
<value>Помощь в локализации приложения FoxTube</value>
</data>
<data name="submit.Content" xml:space="preserve">
<value>Загрузить</value>
</data>
<data name="success.Text" xml:space="preserve">
<value>Ваш языковой пакт отправлен!</value>
</data>
<data name="successSub.Text" xml:space="preserve">
<value>Спасибо! Это очень важно для нас. Вы помогаете сделать приложение лучше!</value>
</data>
<data name="upload.Content" xml:space="preserve">
<value>Выберите файл для отправки</value>
</data>
<data name="username" xml:space="preserve">
<value>Автоответчик FoxTube</value>
</data>
</root>
-315
View File
@@ -1,315 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="addTo.Label" xml:space="preserve">
<value>Добавить в</value>
</data>
<data name="always" xml:space="preserve">
<value>Больше не спрашивать</value>
</data>
<data name="audio" xml:space="preserve">
<value>Аудио дорожка</value>
</data>
<data name="audioOnly" xml:space="preserve">
<value>Аудио дорожка</value>
</data>
<data name="back.Text" xml:space="preserve">
<value>Назад на 10 секунд</value>
</data>
<data name="cancel" xml:space="preserve">
<value>Отмена</value>
</data>
<data name="cast.Text" xml:space="preserve">
<value>Отправить на устройство</value>
</data>
<data name="chat" xml:space="preserve">
<value>Чат</value>
</data>
<data name="close.Text" xml:space="preserve">
<value>Закрыть видео</value>
</data>
<data name="comments.Header" xml:space="preserve">
<value>Комментарии</value>
</data>
<data name="countdown.Text" xml:space="preserve">
<value>Стрим начнется через:</value>
</data>
<data name="desc" xml:space="preserve">
<value>Описание</value>
</data>
<data name="download.Label" xml:space="preserve">
<value>Скачать видео</value>
</data>
<data name="end" xml:space="preserve">
<value>Конец:</value>
</data>
<data name="exitminiview.Text" xml:space="preserve">
<value>Развернуть</value>
</data>
<data name="fullscreen.Text" xml:space="preserve">
<value>Полный экран</value>
</data>
<data name="fwd.Text" xml:space="preserve">
<value>Вперед на 30 секунд</value>
</data>
<data name="generatedCaption" xml:space="preserve">
<value>Авто-перевод</value>
</data>
<data name="goLive.Text" xml:space="preserve">
<value>Перейти к прямому эфиру</value>
</data>
<data name="matureText" xml:space="preserve">
<value>Этот контент может быть неподходящим для лиц младше 18 лет</value>
</data>
<data name="maximize.Text" xml:space="preserve">
<value>Развернуть</value>
</data>
<data name="minimize.Text" xml:space="preserve">
<value>Свернуть</value>
</data>
<data name="miniview.Text" xml:space="preserve">
<value>Картинка в картинке</value>
</data>
<data name="mute.Text" xml:space="preserve">
<value>Выключить звук</value>
</data>
<data name="next.Text" xml:space="preserve">
<value>Следующее видео</value>
</data>
<data name="no" xml:space="preserve">
<value>Нет</value>
</data>
<data name="openWeb.Label" xml:space="preserve">
<value>Открыть в браузере</value>
</data>
<data name="play.Text" xml:space="preserve">
<value>Воспроизвести / Пауза</value>
</data>
<data name="playlist.Header" xml:space="preserve">
<value>Плейлист</value>
</data>
<data name="quality.Text" xml:space="preserve">
<value>Качество видео</value>
</data>
<data name="qualitySelector.Header" xml:space="preserve">
<value>Качество</value>
</data>
<data name="refresh.Label" xml:space="preserve">
<value>Обновить страницу</value>
</data>
<data name="related.Header" xml:space="preserve">
<value>Похожее</value>
</data>
<data name="schedule.Text" xml:space="preserve">
<value>Расписание эфира</value>
</data>
<data name="share.Label" xml:space="preserve">
<value>Поделиться</value>
</data>
<data name="signin" xml:space="preserve">
<value>Войти</value>
</data>
<data name="signRequired" xml:space="preserve">
<value>Пожалуйста, войдите в аккаунт</value>
</data>
<data name="start" xml:space="preserve">
<value>Начало:</value>
</data>
<data name="streamElapsed.Text" xml:space="preserve">
<value>Время, прошедшее с начала стрима</value>
</data>
<data name="subs.Text" xml:space="preserve">
<value>Субтитры</value>
</data>
<data name="subsSelector.Header" xml:space="preserve">
<value>Язык субтитров</value>
</data>
<data name="subsSelector.PlaceholderText" xml:space="preserve">
<value>Нет доступных субтитров</value>
</data>
<data name="subsSwitch.OffContent" xml:space="preserve">
<value>Субтитры</value>
</data>
<data name="subsSwitch.OnContent" xml:space="preserve">
<value>Субтитры</value>
</data>
<data name="upcomingHeader.Text" xml:space="preserve">
<value>Прямой эфир еще не начался</value>
</data>
<data name="volume.Text" xml:space="preserve">
<value>Громкость</value>
</data>
<data name="wantContinue" xml:space="preserve">
<value>Хотите продолжить?</value>
</data>
<data name="yes" xml:space="preserve">
<value>Да</value>
</data>
<data name="publishedAt" xml:space="preserve">
<value>Опубликовано</value>
</data>
<data name="dialog.CloseButtonText" xml:space="preserve">
<value>Отмена</value>
</data>
<data name="dialog.PrimaryButtonText" xml:space="preserve">
<value>Создать и добавить</value>
</data>
<data name="dialog.Title" xml:space="preserve">
<value>Новый плейлист</value>
</data>
<data name="direct.Content" xml:space="preserve">
<value>Прямая ссылка</value>
</data>
<data name="newPlaylist.Text" xml:space="preserve">
<value>Новый плейлист</value>
</data>
<data name="newPlaylistName.PlaceholderText" xml:space="preserve">
<value>Введите название плейлиста</value>
</data>
<data name="privacy.Header" xml:space="preserve">
<value>Доступность</value>
</data>
<data name="private.Content" xml:space="preserve">
<value>Закрытый</value>
</data>
<data name="public.Content" xml:space="preserve">
<value>Публичный</value>
</data>
<data name="wl.Text" xml:space="preserve">
<value>Посмотреть позже</value>
</data>
<data name="live.Text" xml:space="preserve">
<value>🔴 ПРЯМОЙ ЭФИР</value>
</data>
<data name="continue" xml:space="preserve">
<value>Продолжить с</value>
</data>
<data name="auto" xml:space="preserve">
<value>Авто</value>
</data>
<data name="playbackSpeed.Header" xml:space="preserve">
<value>Скорость видео</value>
</data>
<data name="report.Label" xml:space="preserve">
<value>Пожаловаться на видео</value>
</data>
<data name="inCat" xml:space="preserve">
<value>в категории</value>
</data>
</root>
+4 -45
View File
@@ -1,55 +1,14 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ui="using:Microsoft.UI.Xaml.Controls">
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Color x:Key="SystemAccentColor">Red</Color>
<Style TargetType="Button" BasedOn="{StaticResource ButtonRevealStyle}">
<Setter Property="FontSize" Value="14"/>
</Style>
<Style x:Key="NavigationViewHeaderButton" TargetType="Button" BasedOn="{StaticResource ButtonRevealStyle}">
<Style x:Key="HeaderButton" TargetType="Button" BasedOn="{StaticResource ButtonRevealStyle}">
<Setter Property="FontFamily" Value="Segoe MDL2 Assets"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Height" Value="41"/>
<Setter Property="Width" Value="60"/>
<Setter Property="FontSize" Value="15"/>
<Setter Property="Height" Value="32"/>
<Setter Property="Width" Value="32"/>
</Style>
<Style TargetType="ListViewItem" BasedOn="{StaticResource ListViewItemRevealStyle}"/>
<Style TargetType="TextBlock">
<Setter Property="SelectionHighlightColor" Value="Red"/>
<Setter Property="FontSize" Value="14"/>
</Style>
<Style TargetType="TextBox">
<Setter Property="SelectionHighlightColor" Value="Red"/>
<Setter Property="FontSize" Value="14"/>
</Style>
<Style TargetType="ComboBox">
<Setter Property="Margin" Value="0,5,0,0"/>
<Setter Property="FontSize" Value="14"/>
</Style>
<Style TargetType="ToggleSwitch">
<Setter Property="FontSize" Value="14"/>
</Style>
<Style TargetType="RadioButton">
<Setter Property="FontSize" Value="14"/>
</Style>
<Style TargetType="Run">
<Setter Property="FontSize" Value="{StaticResource Size}"/>
</Style>
<Style TargetType="HyperlinkButton">
<Setter Property="FontSize" Value="14"/>
</Style>
<Style TargetType="AutoSuggestBox">
<Setter Property="FontSize" Value="14"/>
</Style>
<Style TargetType="ui:NavigationViewItem">
<Setter Property="FontSize" Value="14"/>
</Style>
<Style TargetType="ui:NavigationViewItemHeader">
<Setter Property="FontSize" Value="14"/>
</Style>
<Duration x:Key="CardOpacityDuration">0:0:0.3</Duration>
</ResourceDictionary>
+41
View File
@@ -0,0 +1,41 @@
<Page
NavigationCacheMode="Enabled"
x:Class="FoxTube.Views.Home"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
xmlns:cards="using:FoxTube.Controls.Cards"
mc:Ignorable="d">
<Pivot>
<PivotItem Header="Recommended">
<controls:StaggeredPanel DesiredColumnWidth="350">
<controls:StaggeredPanel.ChildrenTransitions>
<TransitionCollection>
<ReorderThemeTransition/>
</TransitionCollection>
</controls:StaggeredPanel.ChildrenTransitions>
<cards:VideoCard/>
<cards:PlaylistCard/>
<cards:ChannelCard/>
<cards:AdvertCard/>
<cards:VideoCard/>
<cards:PlaylistCard/>
<cards:ChannelCard/>
<cards:AdvertCard/>
<cards:VideoCard/>
<cards:PlaylistCard/>
<cards:ChannelCard/>
<cards:AdvertCard/>
</controls:StaggeredPanel>
</PivotItem>
<PivotItem Header="Trending">
</PivotItem>
<PivotItem Header="Subscriptions">
</PivotItem>
</Pivot>
</Page>
@@ -15,12 +15,12 @@ using Windows.UI.Xaml.Navigation;
// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238
namespace FoxTube.Pages
namespace FoxTube.Views
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class Home : ViewModel
public sealed partial class Home : Page
{
public Home()
{