UI adjustment, add json proxy
This commit is contained in:
parent
134affddaa
commit
6b28ade15a
@ -80,6 +80,8 @@
|
||||
<Compile Include="Renderers\SegmentedControlRenderer.cs" />
|
||||
<Compile Include="Effects\LongPressEffectImplement.cs" />
|
||||
<Compile Include="Renderers\OptionEntryRenderer.cs" />
|
||||
<Compile Include="Renderers\AppShellSection\AppAppearanceTracker.cs" />
|
||||
<Compile Include="Renderers\BlurryPanelRenderer.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<InterfaceDefinition Include="Resources\LaunchScreen.storyboard" />
|
||||
|
@ -85,6 +85,7 @@ namespace Pixiview.iOS.Renderers
|
||||
}
|
||||
if (Element is AdaptedPage page)
|
||||
{
|
||||
AppShell.Current?.SetStatusBarHeight(UIApplication.SharedApplication.StatusBarFrame.Height);
|
||||
page.OnOrientationChanged((Orientation)lastOrientation);
|
||||
}
|
||||
}
|
||||
|
@ -16,28 +16,10 @@ namespace Pixiview.iOS.Renderers
|
||||
|
||||
protected override IShellSectionRenderer CreateShellSectionRenderer(ShellSection shellSection)
|
||||
{
|
||||
var renderer = new AppShellSectionRenderer(this);
|
||||
var renderer = base.CreateShellSectionRenderer(shellSection); // new AppShellSectionRenderer(this);
|
||||
if (renderer is ShellSectionRenderer sr && Element is AppShell shell)
|
||||
{
|
||||
shell.SetNavigationBarHeight(
|
||||
sr.NavigationBar.Frame.Height,
|
||||
UIApplication.SharedApplication.StatusBarFrame.Height);
|
||||
}
|
||||
return renderer;
|
||||
}
|
||||
|
||||
[SuppressMessage("Code Notifications", "XI0002:Notifies you from using newer Apple APIs when targeting an older OS version", Justification = "<Pending>")]
|
||||
protected override IShellItemRenderer CreateShellItemRenderer(ShellItem item)
|
||||
{
|
||||
var renderer = base.CreateShellItemRenderer(item);
|
||||
if (UIDevice.CurrentDevice.CheckSystemVersion(13, 0))
|
||||
{
|
||||
if (renderer.ViewController is UITabBarController controller)
|
||||
{
|
||||
var tabBar = controller.TabBar;
|
||||
tabBar.TintColor = UIColor.LabelColor;
|
||||
tabBar.UnselectedItemTintColor = UIColor.SecondaryLabelColor;
|
||||
}
|
||||
shell.SetNavigationBarHeight(sr.NavigationBar.Frame.Height);
|
||||
}
|
||||
return renderer;
|
||||
}
|
||||
@ -52,6 +34,11 @@ namespace Pixiview.iOS.Renderers
|
||||
return new AppShellTabBarAppearanceTracker();
|
||||
}
|
||||
|
||||
protected override IShellNavBarAppearanceTracker CreateNavBarAppearanceTracker()
|
||||
{
|
||||
return new AppShellNavBarAppearanceTracker();
|
||||
}
|
||||
|
||||
protected override void UpdateBackgroundColor()
|
||||
{
|
||||
NativeView.BackgroundColor = Color.Transparent.ToUIColor();
|
||||
@ -76,73 +63,6 @@ namespace Pixiview.iOS.Renderers
|
||||
}
|
||||
}
|
||||
|
||||
public class AppShellTabBarAppearanceTracker : IShellTabBarAppearanceTracker
|
||||
{
|
||||
UIColor _defaultBarTint;
|
||||
UIColor _defaultTint;
|
||||
UIColor _defaultUnselectedTint;
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
}
|
||||
|
||||
public void ResetAppearance(UITabBarController controller)
|
||||
{
|
||||
if (_defaultTint == null)
|
||||
return;
|
||||
|
||||
var tabBar = controller.TabBar;
|
||||
tabBar.BarTintColor = _defaultBarTint;
|
||||
tabBar.TintColor = _defaultTint;
|
||||
tabBar.UnselectedItemTintColor = _defaultUnselectedTint;
|
||||
}
|
||||
|
||||
[SuppressMessage("Code Notifications", "XI0002:Notifies you from using newer Apple APIs when targeting an older OS version", Justification = "<Pending>")]
|
||||
public void SetAppearance(UITabBarController controller, ShellAppearance appearance)
|
||||
{
|
||||
IShellAppearanceElement appearanceElement = appearance;
|
||||
//var backgroundColor = appearanceElement.EffectiveTabBarBackgroundColor;
|
||||
var unselectedColor = appearanceElement.EffectiveTabBarUnselectedColor;
|
||||
var tintColor = appearanceElement.EffectiveTabBarForegroundColor; // appearanceElement.EffectiveTabBarTitleColor;
|
||||
|
||||
var tabBar = controller.TabBar;
|
||||
//bool operatingSystemSupportsUnselectedTint = Forms.IsiOS10OrNewer;
|
||||
|
||||
if (_defaultTint == null)
|
||||
{
|
||||
_defaultBarTint = tabBar.BarTintColor;
|
||||
_defaultTint = tabBar.TintColor;
|
||||
|
||||
//if (operatingSystemSupportsUnselectedTint)
|
||||
{
|
||||
_defaultUnselectedTint = tabBar.UnselectedItemTintColor;
|
||||
}
|
||||
}
|
||||
|
||||
//if (!backgroundColor.IsDefault)
|
||||
// tabBar.BarTintColor = backgroundColor.ToUIColor();
|
||||
|
||||
if (!tintColor.IsDefault)
|
||||
tabBar.TintColor = tintColor.ToUIColor();
|
||||
//if (operatingSystemSupportsUnselectedTint)
|
||||
{
|
||||
if (UIDevice.CurrentDevice.CheckSystemVersion(13, 0))
|
||||
{
|
||||
//tabBar.UnselectedItemTintColor = UIColor.TertiaryLabelColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!unselectedColor.IsDefault)
|
||||
tabBar.UnselectedItemTintColor = unselectedColor.ToUIColor();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateLayout(UITabBarController controller)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public class AppShellSectionRenderer : ShellSectionRenderer
|
||||
{
|
||||
public AppShellSectionRenderer(IShellContext context) : base(context)
|
||||
|
86
Pixiview.iOS/Renderers/BlurryPanelRenderer.cs
Normal file
86
Pixiview.iOS/Renderers/BlurryPanelRenderer.cs
Normal file
@ -0,0 +1,86 @@
|
||||
using CoreAnimation;
|
||||
using Pixiview.iOS.Renderers;
|
||||
using Pixiview.UI;
|
||||
using UIKit;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Platform.iOS;
|
||||
|
||||
[assembly: ExportRenderer(typeof(BlurryPanel), typeof(BlurryPanelRenderer))]
|
||||
namespace Pixiview.iOS.Renderers
|
||||
{
|
||||
public class BlurryPanelRenderer : ViewRenderer<BlurryPanel, UIVisualEffectView>
|
||||
{
|
||||
private UIVisualEffectView nativeControl;
|
||||
private CALayer bottom;
|
||||
|
||||
protected override void OnElementChanged(ElementChangedEventArgs<BlurryPanel> e)
|
||||
{
|
||||
base.OnElementChanged(e);
|
||||
|
||||
if (e.OldElement != null)
|
||||
{
|
||||
if (bottom != null)
|
||||
{
|
||||
if (bottom.SuperLayer != null)
|
||||
{
|
||||
bottom.RemoveFromSuperLayer();
|
||||
}
|
||||
bottom.Dispose();
|
||||
bottom = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (e.NewElement != null)
|
||||
{
|
||||
if (Control == null)
|
||||
{
|
||||
var blur = UIBlurEffect.FromStyle(UIBlurEffectStyle.SystemMaterial);
|
||||
nativeControl = new UIVisualEffectView(blur)
|
||||
{
|
||||
Frame = Frame
|
||||
};
|
||||
SetNativeControl(nativeControl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void LayoutSubviews()
|
||||
{
|
||||
base.LayoutSubviews();
|
||||
|
||||
if (nativeControl != null)
|
||||
{
|
||||
if (bottom == null)
|
||||
{
|
||||
bottom = new CALayer
|
||||
{
|
||||
BackgroundColor = UIColor.White.CGColor,
|
||||
ShadowColor = UIColor.Black.CGColor,
|
||||
ShadowOpacity = 1.0f
|
||||
};
|
||||
}
|
||||
if (bottom.SuperLayer == null)
|
||||
{
|
||||
nativeControl.Layer.InsertSublayer(bottom, 0);
|
||||
}
|
||||
bottom.Frame = new CoreGraphics.CGRect(0, Frame.Height - 5, Frame.Width, 5);
|
||||
nativeControl.Frame = Frame;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (bottom != null)
|
||||
{
|
||||
if (bottom.SuperLayer != null)
|
||||
{
|
||||
bottom.RemoveFromSuperLayer();
|
||||
}
|
||||
bottom.Dispose();
|
||||
bottom = null;
|
||||
}
|
||||
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using Pixiview.iOS.Renderers;
|
||||
using Pixiview.iOS.Renderers;
|
||||
using Pixiview.UI;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Platform.iOS;
|
||||
|
@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
@ -9,9 +9,11 @@ namespace Pixiview
|
||||
public static new AppShell Current => Shell.Current as AppShell;
|
||||
|
||||
public static Thickness NavigationBarOffset { get; private set; }
|
||||
public static Thickness HalfNavigationBarOffset { get; private set; }
|
||||
public static Thickness TotalBarOffset { get; private set; }
|
||||
|
||||
public event EventHandler<BarHeightEventArgs> NavigationBarHeightChanged;
|
||||
public event EventHandler<BarHeightEventArgs> StatusBarHeightChanged;
|
||||
|
||||
public AppShell()
|
||||
{
|
||||
@ -20,15 +22,24 @@ namespace Pixiview
|
||||
App.DebugPrint($"folder: {Stores.PersonalFolder}");
|
||||
}
|
||||
|
||||
public void SetNavigationBarHeight(double height, double statusHeight)
|
||||
public void SetNavigationBarHeight(double height)
|
||||
{
|
||||
NavigationBarOffset = new Thickness(0, height, 0, 0);
|
||||
TotalBarOffset = new Thickness(0, height + statusHeight, 0, 0);
|
||||
HalfNavigationBarOffset = new Thickness(0, height / 2, 0, 0);
|
||||
|
||||
NavigationBarHeightChanged?.Invoke(this, new BarHeightEventArgs
|
||||
{
|
||||
NavigationBarHeight = height,
|
||||
StatusBarHeight = statusHeight
|
||||
NavigationBarHeight = height
|
||||
});
|
||||
}
|
||||
|
||||
public void SetStatusBarHeight(double height)
|
||||
{
|
||||
TotalBarOffset = new Thickness(0, NavigationBarOffset.Top + height, 0, 0);
|
||||
|
||||
StatusBarHeightChanged?.Invoke(this, new BarHeightEventArgs
|
||||
{
|
||||
StatusBarHeight = height
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -55,6 +55,7 @@ namespace Pixiview.Illust
|
||||
public IllustCollection IllustCollection { get; set; }
|
||||
|
||||
protected virtual bool IsFavoriteVisible => true;
|
||||
protected virtual bool IsLazyload => false;
|
||||
protected DateTime lastUpdated;
|
||||
|
||||
private T illustData;
|
||||
@ -87,9 +88,20 @@ namespace Pixiview.Illust
|
||||
|
||||
if (lastUpdated != LastUpdated)
|
||||
{
|
||||
StartLoad();
|
||||
if (IsLazyload)
|
||||
{
|
||||
Device.StartTimer(TimeSpan.FromMilliseconds(200), () =>
|
||||
{
|
||||
StartLoad();
|
||||
return false;
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
StartLoad();
|
||||
}
|
||||
}
|
||||
else if (IsFavoriteVisible)
|
||||
else if (IsFavoriteVisible && IllustCollection != null)
|
||||
{
|
||||
var favorites = Stores.Favorites;
|
||||
foreach (var item in IllustCollection)
|
||||
@ -120,13 +132,19 @@ namespace Pixiview.Illust
|
||||
{
|
||||
base.OnSizeAllocated(width, height);
|
||||
int columns;
|
||||
if (isPhone)
|
||||
if (width > height)
|
||||
{
|
||||
columns = width > height ? 4 : 2;
|
||||
PanelTopMargin = StyleDefinition.IsFullscreenDevice ?
|
||||
AppShell.HalfNavigationBarOffset :
|
||||
StyleDefinition.TopOffset16;
|
||||
columns = isPhone ? 4 : 6;
|
||||
}
|
||||
else
|
||||
{
|
||||
columns = width > height ? 6 : 4;
|
||||
PanelTopMargin = StyleDefinition.IsFullscreenDevice ?
|
||||
AppShell.NavigationBarOffset :
|
||||
StyleDefinition.TopOffset32;
|
||||
columns = isPhone ? 2 : 4;
|
||||
}
|
||||
if (Columns != columns)
|
||||
{
|
||||
|
@ -5,21 +5,24 @@
|
||||
xmlns:u="clr-namespace:Pixiview.UI"
|
||||
xmlns:r="clr-namespace:Pixiview.Resources"
|
||||
x:Class="Pixiview.Illust.RankingPage"
|
||||
BackgroundColor="{DynamicResource WindowColor}">
|
||||
BackgroundColor="{DynamicResource WindowColor}"
|
||||
Shell.NavBarHasShadow="False">
|
||||
<ContentPage.ToolbarItems>
|
||||
<ToolbarItem Order="Primary" Clicked="Refresh_Clicked"
|
||||
IconImageSource="{DynamicResource FontIconRefresh}"/>
|
||||
</ContentPage.ToolbarItems>
|
||||
<Grid Padding="{Binding PageTopMargin}">
|
||||
<Grid>
|
||||
<ScrollView HorizontalOptions="Fill" HorizontalScrollBarVisibility="Never">
|
||||
<u:FlowLayout ItemsSource="{Binding Illusts}"
|
||||
HorizontalOptions="Fill" Column="{Binding Columns}"
|
||||
Margin="16, 10, 16, 16" RowSpacing="16" ColumnSpacing="16"
|
||||
Margin="16, 62, 16, 16" RowSpacing="16" ColumnSpacing="16"
|
||||
ItemTemplate="{StaticResource cardView}"/>
|
||||
</ScrollView>
|
||||
<SearchBar Placeholder="{r:Text Search}" VerticalOptions="Start"
|
||||
Margin="0, -46, 0, 0" HeightRequest="50"
|
||||
BackgroundColor="{DynamicResource WindowColor}"
|
||||
<u:BlurryPanel VerticalOptions="Start" HeightRequest="50" Margin="{Binding PanelTopMargin}"/>
|
||||
<SearchBar Placeholder="{r:Text Search}" HeightRequest="50"
|
||||
VerticalOptions="Start"
|
||||
Margin="{Binding PageTopMargin}"
|
||||
BackgroundColor="Transparent"
|
||||
CancelButtonColor="{DynamicResource TintColor}"
|
||||
Text="{Binding Keywords, Mode=TwoWay}"
|
||||
SearchButtonPressed="SearchBar_SearchButtonPressed"
|
||||
|
@ -26,28 +26,7 @@ namespace Pixiview.Illust
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public override void OnOrientationChanged(Orientation orientation)
|
||||
{
|
||||
switch (orientation)
|
||||
{
|
||||
case Orientation.Portrait:
|
||||
PageTopMargin = new Thickness(0, AppShell.TotalBarOffset.Top + 50, 0, 0);
|
||||
break;
|
||||
case Orientation.PortraitUpsideDown:
|
||||
//PageTopMargin = isPhone ?
|
||||
// new Thickness(0, AppShell.NavigationBarOffset.Top + 50, 0, 0) :
|
||||
// new Thickness(0, AppShell.TotalBarOffset.Top + 50, 0, 0);
|
||||
//break;
|
||||
case Orientation.Unknown:
|
||||
case Orientation.LandscapeLeft:
|
||||
case Orientation.LandscapeRight:
|
||||
default:
|
||||
PageTopMargin = isPhone ?
|
||||
new Thickness(0, AppShell.NavigationBarOffset.Top + 50, 0, 0) :
|
||||
new Thickness(0, AppShell.TotalBarOffset.Top + 50, 0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
protected override bool IsLazyload => true;
|
||||
|
||||
protected override IEnumerable<IllustItem> DoGetIllustList(IllustData data, ICommand command)
|
||||
{
|
||||
|
@ -11,14 +11,15 @@
|
||||
<ToolbarItem Order="Primary" Clicked="Refresh_Clicked"
|
||||
IconImageSource="{DynamicResource FontIconRefresh}"/>
|
||||
</ContentPage.ToolbarItems>
|
||||
<Grid Padding="{Binding PageTopMargin}">
|
||||
<Grid>
|
||||
<ScrollView HorizontalOptions="Fill" HorizontalScrollBarVisibility="Never">
|
||||
|
||||
<u:FlowLayout ItemsSource="{Binding Illusts}"
|
||||
HorizontalOptions="Fill" Column="{Binding Columns}"
|
||||
Margin="16, 6, 16, 16" RowSpacing="16" ColumnSpacing="16"
|
||||
Margin="16" RowSpacing="16" ColumnSpacing="16"
|
||||
ItemTemplate="{StaticResource cardView}"/>
|
||||
</ScrollView>
|
||||
<Grid Margin="0, -40, 0, 0" VerticalOptions="Start" HeightRequest="40">
|
||||
<!--<Grid Margin="0, -40, 0, 0" VerticalOptions="Start" HeightRequest="40">
|
||||
<u:SegmentedControl VerticalOptions="Center" HorizontalOptions="Center"
|
||||
HeightRequest="30"
|
||||
BackgroundColor="{DynamicResource WindowColor}"
|
||||
@ -30,7 +31,7 @@
|
||||
<u:SegmentedControlOption Text="{r:Text ByUser}"/>
|
||||
</u:SegmentedControl.Children>
|
||||
</u:SegmentedControl>
|
||||
</Grid>
|
||||
</Grid>-->
|
||||
<Frame HasShadow="False" Margin="0" Padding="20" CornerRadius="8"
|
||||
IsVisible="{Binding IsLoading}"
|
||||
HorizontalOptions="Center" VerticalOptions="Center"
|
||||
|
@ -3,7 +3,6 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
using Pixiview.UI;
|
||||
using Pixiview.Utils;
|
||||
using Xamarin.Forms;
|
||||
|
||||
@ -32,29 +31,6 @@ namespace Pixiview.Illust
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public override void OnOrientationChanged(Orientation orientation)
|
||||
{
|
||||
switch (orientation)
|
||||
{
|
||||
case Orientation.Portrait:
|
||||
PageTopMargin = new Thickness(0, AppShell.TotalBarOffset.Top + 40, 0, 0);
|
||||
break;
|
||||
case Orientation.PortraitUpsideDown:
|
||||
//PageTopMargin = isPhone ?
|
||||
// new Thickness(0, AppShell.NavigationBarOffset.Top + 40, 0, 0) :
|
||||
// new Thickness(0, AppShell.TotalBarOffset.Top + 40, 0, 0);
|
||||
//break;
|
||||
case Orientation.Unknown:
|
||||
case Orientation.LandscapeLeft:
|
||||
case Orientation.LandscapeRight:
|
||||
default:
|
||||
PageTopMargin = isPhone ?
|
||||
new Thickness(0, AppShell.NavigationBarOffset.Top + 40, 0, 0) :
|
||||
new Thickness(0, AppShell.TotalBarOffset.Top + 40, 0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected override IEnumerable<IllustItem> DoGetIllustList(IllustData data, ICommand command)
|
||||
{
|
||||
if (SegmentIndex == 1)
|
||||
|
@ -90,6 +90,7 @@
|
||||
<Compile Include="$(MSBuildThisFileDirectory)UI\Theme\DarkTheme.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)UI\Theme\LightTheme.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)UI\Theme\ThemeBase.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)UI\BlurryPanel.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="$(MSBuildThisFileDirectory)Illust\" />
|
||||
|
@ -10,12 +10,19 @@ namespace Pixiview.UI
|
||||
{
|
||||
public static readonly BindableProperty PageTopMarginProperty = BindableProperty.Create(
|
||||
nameof(PageTopMargin), typeof(Thickness), typeof(AdaptedPage));
|
||||
public static readonly BindableProperty PanelTopMarginProperty = BindableProperty.Create(
|
||||
nameof(PanelTopMargin), typeof(Thickness), typeof(AdaptedPage));
|
||||
|
||||
public Thickness PageTopMargin
|
||||
{
|
||||
get => (Thickness)GetValue(PageTopMarginProperty);
|
||||
protected set => SetValue(PageTopMarginProperty, value);
|
||||
}
|
||||
public Thickness PanelTopMargin
|
||||
{
|
||||
get => (Thickness)GetValue(PanelTopMarginProperty);
|
||||
protected set => SetValue(PanelTopMarginProperty, value);
|
||||
}
|
||||
public Orientation CurrentOrientation { get; private set; }
|
||||
|
||||
public event EventHandler Load;
|
||||
@ -48,13 +55,18 @@ namespace Pixiview.UI
|
||||
PageTopMargin = AppShell.TotalBarOffset;
|
||||
break;
|
||||
case Orientation.PortraitUpsideDown:
|
||||
//PageTopMargin = isPhone ? AppShell.NavigationBarOffset : AppShell.TotalBarOffset;
|
||||
//break;
|
||||
case Orientation.Unknown:
|
||||
case Orientation.LandscapeLeft:
|
||||
case Orientation.LandscapeRight:
|
||||
default:
|
||||
PageTopMargin = isPhone ? AppShell.NavigationBarOffset : AppShell.TotalBarOffset;
|
||||
if (StyleDefinition.IsFullscreenDevice)
|
||||
{
|
||||
PageTopMargin = AppShell.NavigationBarOffset;
|
||||
}
|
||||
else
|
||||
{
|
||||
PageTopMargin = isPhone ? StyleDefinition.TopOffset32 : AppShell.TotalBarOffset;
|
||||
}
|
||||
break;
|
||||
}
|
||||
OrientationChanged?.Invoke(this, new OrientationEventArgs { CurrentOrientation = orientation });
|
||||
|
8
Pixiview/UI/BlurryPanel.cs
Normal file
8
Pixiview/UI/BlurryPanel.cs
Normal file
@ -0,0 +1,8 @@
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace Pixiview.UI
|
||||
{
|
||||
public class BlurryPanel : ContentView
|
||||
{
|
||||
}
|
||||
}
|
@ -9,6 +9,8 @@ namespace Pixiview.UI
|
||||
public const double FontSizeTitle = 18.0;
|
||||
|
||||
public static readonly Thickness ScreenBottomPadding;
|
||||
public static readonly Thickness TopOffset16 = new Thickness(0, 16, 0, 0);
|
||||
public static readonly Thickness TopOffset32 = new Thickness(0, 32, 0, 0);
|
||||
public static readonly Color ColorLightShadow = Color.FromRgba(0, 0, 0, 0x20);
|
||||
public static readonly Color ColorDeepShadow = Color.FromRgba(0, 0, 0, 0x50);
|
||||
public static readonly Color ColorRedBackground = Color.FromRgb(0xfd, 0x43, 0x63);
|
||||
|
@ -29,7 +29,7 @@ namespace Pixiview.UI.Theme
|
||||
{
|
||||
Add(StatusBarStyle, StatusBarStyles.WhiteText);
|
||||
Add(WindowColor, Color.Black);
|
||||
Add(TintColor, Color.FromRgb(0x00, 0x96, 0xfa));
|
||||
Add(TintColor, Color.FromRgb(0x94, 0x95, 0x9a));
|
||||
Add(TextColor, Color.White);
|
||||
Add(SubTextColor, Color.LightGray);
|
||||
Add(CardBackgroundColor, Color.FromRgb(0x33, 0x33, 0x33));
|
||||
|
@ -29,7 +29,7 @@ namespace Pixiview.UI.Theme
|
||||
{
|
||||
Add(StatusBarStyle, StatusBarStyles.DarkText);
|
||||
Add(WindowColor, Color.White);
|
||||
Add(TintColor, Color.FromRgb(0x00, 0x96, 0xfa)); // 0x7f, 0x99, 0xc6
|
||||
Add(TintColor, Color.FromRgb(0x87, 0x87, 0x8b)); // 0x7f, 0x99, 0xc6
|
||||
Add(TextColor, Color.Black);
|
||||
Add(SubTextColor, Color.DimGray);
|
||||
Add(CardBackgroundColor, Color.FromRgb(0xf0, 0xf3, 0xf3));
|
||||
|
@ -118,10 +118,10 @@ namespace Pixiview.Utils
|
||||
{
|
||||
headers.Referrer = new Uri(referer);
|
||||
}
|
||||
headers.Add("user-agent", Configs.UserAgent);
|
||||
headers.Add("accept", Configs.AcceptJson);
|
||||
headers.Add("cookie", Configs.Cookie);
|
||||
headers.Add("x-user-id", Configs.UserId);
|
||||
headers.Add("User-Agent", Configs.UserAgent);
|
||||
headers.Add("Accept", Configs.AcceptJson);
|
||||
headers.Add("Cookie", Configs.Cookie);
|
||||
headers.Add("X-User-Id", Configs.UserId);
|
||||
});
|
||||
if (response == null)
|
||||
{
|
||||
@ -393,8 +393,8 @@ namespace Pixiview.Utils
|
||||
var response = Download(url, headers =>
|
||||
{
|
||||
headers.Referrer = new Uri(Configs.Referer);
|
||||
headers.Add("user-agent", Configs.UserAgent);
|
||||
headers.Add("accept", Configs.AcceptImage);
|
||||
headers.Add("User-Agent", Configs.UserAgent);
|
||||
headers.Add("Accept", Configs.AcceptImage);
|
||||
});
|
||||
if (response == null)
|
||||
{
|
||||
@ -444,7 +444,8 @@ namespace Pixiview.Utils
|
||||
var proxy = Configs.Proxy;
|
||||
var handler = new HttpClientHandler
|
||||
{
|
||||
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
|
||||
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
|
||||
UseCookies = false
|
||||
};
|
||||
if (proxy != null)
|
||||
{
|
||||
@ -460,13 +461,14 @@ namespace Pixiview.Utils
|
||||
{
|
||||
using (var request = new HttpRequestMessage(HttpMethod.Get, uri.PathAndQuery)
|
||||
{
|
||||
Version = new Version(2, 0),
|
||||
Version = new Version(2, 0)
|
||||
})
|
||||
{
|
||||
var headers = request.Headers;
|
||||
headerAction(headers);
|
||||
headers.Add("accept-language", Configs.AcceptLanguage);
|
||||
headers.Add("accept-encoding", Configs.AcceptEncoding);
|
||||
headers.Add("x-reverse", "yes");
|
||||
headers.Add("Accept-Language", Configs.AcceptLanguage);
|
||||
//headers.Add("Accept-Encoding", Configs.AcceptEncoding);
|
||||
return client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result;
|
||||
}
|
||||
});
|
||||
@ -479,34 +481,48 @@ namespace Pixiview.Utils
|
||||
public const string HostKey = "host";
|
||||
public const string PortKey = "port";
|
||||
|
||||
public static WebProxy Proxy;
|
||||
|
||||
public const int MaxThreads = 3;
|
||||
public const string Referer = "https://www.pixiv.net/";
|
||||
public const string UrlIllustList = "https://www.pixiv.net/ajax/top/illust?mode=all&lang=zh";
|
||||
public const string UrlIllust = "https://www.pixiv.net/artworks/{0}";
|
||||
|
||||
public static WebProxy Proxy;
|
||||
private static string Prefix => Proxy == null ?
|
||||
"https://hk.tsanie.us/reverse/" :
|
||||
"https://www.pixiv.net/";
|
||||
|
||||
public const string SuffixPreload = " id=\"meta-preload-data\" content='";
|
||||
public const int SuffixPreloadLength = 33; // SuffixPreload.Length
|
||||
public const string UrlIllustUserAll = "https://www.pixiv.net/ajax/user/{0}/profile/all?lang=zh";
|
||||
public const string UrlIllustUserArtworks = "https://www.pixiv.net/ajax/user/{0}/profile/illusts?{1}work_category=illustManga&is_first_page={2}&lang=zh";
|
||||
public const string UrlIllustUser = "https://www.pixiv.net/users/{0}/artworks";
|
||||
public const string UrlIllustPage = "https://www.pixiv.net/ajax/illust/{0}/pages?lang=zh";
|
||||
public static string UrlIllustList => Prefix + "ajax/top/illust?mode=all&lang=zh";
|
||||
public static string UrlIllust = Prefix + "artworks/{0}";
|
||||
public static string UrlIllustUserAll = Prefix + "ajax/user/{0}/profile/all?lang=zh";
|
||||
public static string UrlIllustUserArtworks = Prefix + "ajax/user/{0}/profile/illusts?{1}work_category=illustManga&is_first_page={2}&lang=zh";
|
||||
public static string UrlIllustUser = Prefix + "users/{0}/artworks";
|
||||
public static string UrlIllustPage = Prefix + "ajax/illust/{0}/pages?lang=zh";
|
||||
public const string UserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36";
|
||||
public const string AcceptImage = "image/png,image/svg+xml,image/*;q=0.8,video/*;q=0.8,*/*;q=0.5";
|
||||
public const string AcceptJson = "application/json";
|
||||
public const string AcceptEncoding = "gzip, deflate";
|
||||
//public const string AcceptEncoding = "gzip, deflate";
|
||||
public const string AcceptLanguage = "zh-cn";
|
||||
|
||||
public const string UserId = "2603358";
|
||||
//public const string UserId = "2603358";
|
||||
//public const string Cookie =
|
||||
// "PHPSESSID=2603358_VHyGPeRaz7LpeoFkRsHvjXIpApCMb56a; " +
|
||||
// "a_type=0; b_type=1; c_type=31; d_type=2; " +
|
||||
// "p_ab_id=2; p_ab_id_2=6; p_ab_d_id=1155161977; " +
|
||||
// "privacy_policy_agreement=2; " +
|
||||
// "login_ever=yes; " +
|
||||
// "__cfduid=d9fa2d4d1ddd30db85ebb519f9855d2561587806747; " +
|
||||
// "first_visit_datetime_pc=2019-10-29+22%3A05%3A30; " +
|
||||
// "yuid_b=NgcXQWQ";
|
||||
public const string UserId = "53887721";
|
||||
public const string Cookie =
|
||||
"PHPSESSID=2603358_VHyGPeRaz7LpeoFkRsHvjXIpApCMb56a; " +
|
||||
"a_type=0; b_type=1; c_type=31; d_type=2; " +
|
||||
"p_ab_id=2; p_ab_id_2=6; p_ab_d_id=1155161977; " +
|
||||
"PHPSESSID=5sn8n049j5c18l0tlj91qrjhesgddhjv; " +
|
||||
"a_type=0; b_type=1; c_type=29; d_type=2; " +
|
||||
"p_ab_d_id=1021624041; p_ab_id=2; p_ab_id_2=0; " +
|
||||
"privacy_policy_agreement=2; " +
|
||||
"login_ever=yes; " +
|
||||
"__cfduid=d9fa2d4d1ddd30db85ebb519f9855d2561587806747; " +
|
||||
"first_visit_datetime_pc=2019-10-29+22%3A05%3A30; " +
|
||||
"yuid_b=NgcXQWQ";
|
||||
"__cfduid=d84153bf70ae67315a8bc297299d39eb61588856027; " +
|
||||
"first_visit_datetime_pc=2020-05-07+21%3A53%3A47; " +
|
||||
"yuid_b=MYkIJXc";
|
||||
|
||||
public static string GetThumbnailUrl(string url)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user