mirror of
https://github.com/bitwarden/mobile.git
synced 2025-01-02 18:07:56 +01:00
About and credit page implementation. Adjusted block screen and launch screen logo margins up some. Added decryption message to extension loading.
This commit is contained in:
parent
8ad2786bb0
commit
b8c6e77fca
@ -271,6 +271,7 @@
|
|||||||
<Compile Include="Controls\ExtendedEntryRenderer.cs" />
|
<Compile Include="Controls\ExtendedEntryRenderer.cs" />
|
||||||
<Compile Include="MainApplication.cs" />
|
<Compile Include="MainApplication.cs" />
|
||||||
<Compile Include="Resources\Resource.Designer.cs" />
|
<Compile Include="Resources\Resource.Designer.cs" />
|
||||||
|
<Compile Include="Services\AppInfoService.cs" />
|
||||||
<Compile Include="Services\ClipboardService.cs" />
|
<Compile Include="Services\ClipboardService.cs" />
|
||||||
<Compile Include="Services\KeyStoreStorageService.cs" />
|
<Compile Include="Services\KeyStoreStorageService.cs" />
|
||||||
<Compile Include="MainActivity.cs" />
|
<Compile Include="MainActivity.cs" />
|
||||||
|
@ -124,6 +124,7 @@ namespace Bit.Android
|
|||||||
.RegisterType<IPasswordGenerationService, PasswordGenerationService>(new ContainerControlledLifetimeManager())
|
.RegisterType<IPasswordGenerationService, PasswordGenerationService>(new ContainerControlledLifetimeManager())
|
||||||
.RegisterType<IReflectionService, ReflectionService>(new ContainerControlledLifetimeManager())
|
.RegisterType<IReflectionService, ReflectionService>(new ContainerControlledLifetimeManager())
|
||||||
.RegisterType<ILockService, LockService>(new ContainerControlledLifetimeManager())
|
.RegisterType<ILockService, LockService>(new ContainerControlledLifetimeManager())
|
||||||
|
.RegisterType<IAppInfoService, AppInfoService>(new ContainerControlledLifetimeManager())
|
||||||
// Repositories
|
// Repositories
|
||||||
.RegisterType<IFolderRepository, FolderRepository>(new ContainerControlledLifetimeManager())
|
.RegisterType<IFolderRepository, FolderRepository>(new ContainerControlledLifetimeManager())
|
||||||
.RegisterType<IFolderApiRepository, FolderApiRepository>(new ContainerControlledLifetimeManager())
|
.RegisterType<IFolderApiRepository, FolderApiRepository>(new ContainerControlledLifetimeManager())
|
||||||
|
14
src/Android/Services/AppInfoService.cs
Normal file
14
src/Android/Services/AppInfoService.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
using Bit.App.Abstractions;
|
||||||
|
using AndrodApp = Android.App.Application;
|
||||||
|
|
||||||
|
namespace Bit.Android.Services
|
||||||
|
{
|
||||||
|
public class AppInfoService : IAppInfoService
|
||||||
|
{
|
||||||
|
public string Version => AndrodApp.Context.ApplicationContext.PackageManager
|
||||||
|
.GetPackageInfo(AndrodApp.Context.PackageName, 0).VersionName;
|
||||||
|
|
||||||
|
public string Build => AndrodApp.Context.ApplicationContext.PackageManager
|
||||||
|
.GetPackageInfo(AndrodApp.Context.PackageName, 0).VersionCode.ToString();
|
||||||
|
}
|
||||||
|
}
|
8
src/App/Abstractions/Services/IAppInfoService.cs
Normal file
8
src/App/Abstractions/Services/IAppInfoService.cs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
namespace Bit.App.Abstractions
|
||||||
|
{
|
||||||
|
public interface IAppInfoService
|
||||||
|
{
|
||||||
|
string Build { get; }
|
||||||
|
string Version { get; }
|
||||||
|
}
|
||||||
|
}
|
@ -37,6 +37,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Abstractions\Repositories\IAccountsApiRepository.cs" />
|
<Compile Include="Abstractions\Repositories\IAccountsApiRepository.cs" />
|
||||||
<Compile Include="Abstractions\Repositories\IDeviceApiRepository.cs" />
|
<Compile Include="Abstractions\Repositories\IDeviceApiRepository.cs" />
|
||||||
|
<Compile Include="Abstractions\Services\IAppInfoService.cs" />
|
||||||
<Compile Include="Abstractions\Services\IAppIdService.cs" />
|
<Compile Include="Abstractions\Services\IAppIdService.cs" />
|
||||||
<Compile Include="Abstractions\Services\IAuthService.cs" />
|
<Compile Include="Abstractions\Services\IAuthService.cs" />
|
||||||
<Compile Include="Abstractions\Services\IClipboardService.cs" />
|
<Compile Include="Abstractions\Services\IClipboardService.cs" />
|
||||||
@ -113,6 +114,7 @@
|
|||||||
<Compile Include="Pages\LoginTwoFactorPage.cs" />
|
<Compile Include="Pages\LoginTwoFactorPage.cs" />
|
||||||
<Compile Include="Pages\PasswordHintPage.cs" />
|
<Compile Include="Pages\PasswordHintPage.cs" />
|
||||||
<Compile Include="Pages\RegisterPage.cs" />
|
<Compile Include="Pages\RegisterPage.cs" />
|
||||||
|
<Compile Include="Pages\Settings\SettingsCreditsPage.cs" />
|
||||||
<Compile Include="Pages\Settings\SettingsHelpPage.cs" />
|
<Compile Include="Pages\Settings\SettingsHelpPage.cs" />
|
||||||
<Compile Include="Pages\Settings\SettingsPinPage.cs" />
|
<Compile Include="Pages\Settings\SettingsPinPage.cs" />
|
||||||
<Compile Include="Pages\Lock\LockPinPage.cs" />
|
<Compile Include="Pages\Lock\LockPinPage.cs" />
|
||||||
|
@ -1,24 +1,56 @@
|
|||||||
using System;
|
using System;
|
||||||
using Bit.App.Controls;
|
using Bit.App.Controls;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
|
using Bit.App.Abstractions;
|
||||||
|
using XLabs.Ioc;
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
namespace Bit.App.Pages
|
||||||
{
|
{
|
||||||
public class SettingsAboutPage : ExtendedContentPage
|
public class SettingsAboutPage : ExtendedContentPage
|
||||||
{
|
{
|
||||||
|
private readonly IAppInfoService _appInfoService;
|
||||||
|
|
||||||
public SettingsAboutPage()
|
public SettingsAboutPage()
|
||||||
{
|
{
|
||||||
|
_appInfoService = Resolver.Resolve<IAppInfoService>();
|
||||||
Init();
|
Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Init()
|
public void Init()
|
||||||
{
|
{
|
||||||
// TODO: version, credits, etc
|
var logo = new Image
|
||||||
|
{
|
||||||
|
Source = "logo",
|
||||||
|
HorizontalOptions = LayoutOptions.Center
|
||||||
|
};
|
||||||
|
|
||||||
var stackLayout = new StackLayout { };
|
var versionLabel = new Label
|
||||||
|
{
|
||||||
|
Text = $@"Version {_appInfoService.Version}
|
||||||
|
© 8bit Solutions LLC 2015-{DateTime.Now.Year}",
|
||||||
|
HorizontalTextAlignment = TextAlignment.Center
|
||||||
|
};
|
||||||
|
|
||||||
|
var creditsButton = new Button
|
||||||
|
{
|
||||||
|
Text = "Credits",
|
||||||
|
Style = (Style)Application.Current.Resources["btn-primaryAccent"],
|
||||||
|
Margin = new Thickness(15, 0, 15, 25),
|
||||||
|
Command = new Command(async () => await Navigation.PushAsync(new SettingsCreditsPage())),
|
||||||
|
HorizontalOptions = LayoutOptions.Center
|
||||||
|
};
|
||||||
|
|
||||||
|
var stackLayout = new StackLayout
|
||||||
|
{
|
||||||
|
Children = { logo, versionLabel, creditsButton },
|
||||||
|
VerticalOptions = LayoutOptions.Center,
|
||||||
|
Spacing = 20,
|
||||||
|
Margin = new Thickness(0, 0, 0, 40)
|
||||||
|
};
|
||||||
|
|
||||||
Title = "About bitwarden";
|
Title = "About bitwarden";
|
||||||
Content = stackLayout;
|
Content = new ScrollView { Content = stackLayout };
|
||||||
|
NavigationPage.SetBackButtonTitle(this, "About");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
63
src/App/Pages/Settings/SettingsCreditsPage.cs
Normal file
63
src/App/Pages/Settings/SettingsCreditsPage.cs
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
using System;
|
||||||
|
using Bit.App.Controls;
|
||||||
|
using Xamarin.Forms;
|
||||||
|
|
||||||
|
namespace Bit.App.Pages
|
||||||
|
{
|
||||||
|
public class SettingsCreditsPage : ExtendedContentPage
|
||||||
|
{
|
||||||
|
public SettingsCreditsPage()
|
||||||
|
{
|
||||||
|
Init();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Init()
|
||||||
|
{
|
||||||
|
var table = new ExtendedTableView
|
||||||
|
{
|
||||||
|
EnableScrolling = true,
|
||||||
|
Intent = TableIntent.Menu,
|
||||||
|
HasUnevenRows = true,
|
||||||
|
EnableSelection = false,
|
||||||
|
Root = new TableRoot
|
||||||
|
{
|
||||||
|
new TableSection("Icons")
|
||||||
|
{
|
||||||
|
new CustomViewCell(@"Icon 1 - John Smith
|
||||||
|
Icon 2 - Jane Doe")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if(Device.OS == TargetPlatform.iOS)
|
||||||
|
{
|
||||||
|
table.RowHeight = -1;
|
||||||
|
table.EstimatedRowHeight = 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
Title = "Thank You";
|
||||||
|
Content = table;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CustomViewCell : ViewCell
|
||||||
|
{
|
||||||
|
public CustomViewCell(string text)
|
||||||
|
{
|
||||||
|
var label = new Label
|
||||||
|
{
|
||||||
|
LineBreakMode = LineBreakMode.WordWrap,
|
||||||
|
Text = text,
|
||||||
|
FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Label))
|
||||||
|
};
|
||||||
|
|
||||||
|
var layout = new StackLayout
|
||||||
|
{
|
||||||
|
Children = { label },
|
||||||
|
Padding = new Thickness(15, 20)
|
||||||
|
};
|
||||||
|
|
||||||
|
View = layout;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -37,6 +37,10 @@ namespace Bit.iOS.Extension
|
|||||||
View.BackgroundColor = new UIColor(red: 0.94f, green: 0.94f, blue: 0.96f, alpha: 1.0f);
|
View.BackgroundColor = new UIColor(red: 0.94f, green: 0.94f, blue: 0.96f, alpha: 1.0f);
|
||||||
_context.ExtContext = ExtensionContext;
|
_context.ExtContext = ExtensionContext;
|
||||||
|
|
||||||
|
var descriptor = UIFontDescriptor.PreferredBody;
|
||||||
|
DecryptingLabel.Font = UIFont.FromDescriptor(descriptor, descriptor.PointSize);
|
||||||
|
DecryptingLabel.TextColor = new UIColor(red: 0.47f, green: 0.47f, blue: 0.47f, alpha: 1.0f);
|
||||||
|
|
||||||
if(!Resolver.IsSet)
|
if(!Resolver.IsSet)
|
||||||
{
|
{
|
||||||
SetIoc();
|
SetIoc();
|
||||||
|
24
src/iOS.Extension/LoadingViewController.designer.cs
generated
24
src/iOS.Extension/LoadingViewController.designer.cs
generated
@ -11,11 +11,19 @@ using UIKit;
|
|||||||
|
|
||||||
namespace Bit.iOS.Extension
|
namespace Bit.iOS.Extension
|
||||||
{
|
{
|
||||||
[Register ("LoadingViewController")]
|
[Register ("LoadingViewController")]
|
||||||
partial class LoadingViewController
|
partial class LoadingViewController
|
||||||
{
|
{
|
||||||
void ReleaseDesignerOutlets ()
|
[Outlet]
|
||||||
{
|
[GeneratedCode ("iOS Designer", "1.0")]
|
||||||
}
|
UIKit.UILabel DecryptingLabel { get; set; }
|
||||||
}
|
|
||||||
}
|
void ReleaseDesignerOutlets ()
|
||||||
|
{
|
||||||
|
if (DecryptingLabel != null) {
|
||||||
|
DecryptingLabel.Dispose ();
|
||||||
|
DecryptingLabel = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -18,13 +18,23 @@
|
|||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" id="1713" translatesAutoresizingMaskIntoConstraints="NO" image="logo.png">
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" id="1713" translatesAutoresizingMaskIntoConstraints="NO" image="logo.png">
|
||||||
<rect key="frame" x="159" y="278" width="282" height="44"/>
|
<rect key="frame" x="159" y="223" width="282" height="44"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Decrypting data..." lineBreakMode="tailTruncation" minimumFontSize="10" id="10537" translatesAutoresizingMaskIntoConstraints="NO" textAlignment="center">
|
||||||
|
<rect key="frame" x="15" y="287" width="570" height="20.5"/>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint id="1763" firstItem="1713" firstAttribute="centerY" secondItem="44" secondAttribute="centerY"/>
|
<constraint id="1763" firstItem="1713" firstAttribute="centerY" secondItem="44" secondAttribute="centerY" constant="-55"/>
|
||||||
<constraint id="1764" firstItem="1713" firstAttribute="centerX" secondItem="44" secondAttribute="centerX"/>
|
<constraint id="1764" firstItem="1713" firstAttribute="centerX" secondItem="44" secondAttribute="centerX"/>
|
||||||
|
<constraint id="10538" firstItem="10537" firstAttribute="top" secondItem="1713" secondAttribute="bottom" constant="20"/>
|
||||||
|
<constraint id="10539" firstItem="10537" firstAttribute="leading" secondItem="44" secondAttribute="leading" constant="15"/>
|
||||||
|
<constraint id="10540" firstItem="44" firstAttribute="trailing" secondItem="10537" secondAttribute="trailing" constant="15"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
<connections>
|
<connections>
|
||||||
@ -33,6 +43,7 @@
|
|||||||
<segue id="8924" destination="6815" kind="presentation" identifier="lockPinSegue"/>
|
<segue id="8924" destination="6815" kind="presentation" identifier="lockPinSegue"/>
|
||||||
<segue id="9874" destination="6855" kind="presentation" identifier="lockPasswordSegue"/>
|
<segue id="9874" destination="6855" kind="presentation" identifier="lockPasswordSegue"/>
|
||||||
<segue id="10498" destination="1845" kind="presentation" identifier="newSiteSegue" modalPresentationStyle="" modalTransitionStyle=""/>
|
<segue id="10498" destination="1845" kind="presentation" identifier="newSiteSegue" modalPresentationStyle="" modalTransitionStyle=""/>
|
||||||
|
<outlet property="DecryptingLabel" destination="10537" id="name-outlet-10537"/>
|
||||||
</connections>
|
</connections>
|
||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="45" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="45" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
|
@ -121,7 +121,7 @@ namespace Bit.iOS
|
|||||||
|
|
||||||
var imageView = new UIImageView(new UIImage("logo.png"))
|
var imageView = new UIImageView(new UIImage("logo.png"))
|
||||||
{
|
{
|
||||||
Center = view.Center
|
Center = new CoreGraphics.CGPoint(view.Center.X, view.Center.Y - 40)
|
||||||
};
|
};
|
||||||
|
|
||||||
view.AddSubview(backgroundView);
|
view.AddSubview(backgroundView);
|
||||||
@ -130,6 +130,7 @@ namespace Bit.iOS
|
|||||||
UIApplication.SharedApplication.KeyWindow.AddSubview(view);
|
UIApplication.SharedApplication.KeyWindow.AddSubview(view);
|
||||||
UIApplication.SharedApplication.KeyWindow.BringSubviewToFront(view);
|
UIApplication.SharedApplication.KeyWindow.BringSubviewToFront(view);
|
||||||
UIApplication.SharedApplication.KeyWindow.EndEditing(true);
|
UIApplication.SharedApplication.KeyWindow.EndEditing(true);
|
||||||
|
UIApplication.SharedApplication.SetStatusBarHidden(true, false);
|
||||||
|
|
||||||
// Log the date/time we last backgrounded
|
// Log the date/time we last backgrounded
|
||||||
|
|
||||||
@ -163,6 +164,7 @@ namespace Bit.iOS
|
|||||||
if(view != null)
|
if(view != null)
|
||||||
{
|
{
|
||||||
view.RemoveFromSuperview();
|
view.RemoveFromSuperview();
|
||||||
|
UIApplication.SharedApplication.SetStatusBarHidden(false, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -240,6 +242,7 @@ namespace Bit.iOS
|
|||||||
.RegisterType<IPasswordGenerationService, PasswordGenerationService>(new ContainerControlledLifetimeManager())
|
.RegisterType<IPasswordGenerationService, PasswordGenerationService>(new ContainerControlledLifetimeManager())
|
||||||
.RegisterType<IReflectionService, ReflectionService>(new ContainerControlledLifetimeManager())
|
.RegisterType<IReflectionService, ReflectionService>(new ContainerControlledLifetimeManager())
|
||||||
.RegisterType<ILockService, LockService>(new ContainerControlledLifetimeManager())
|
.RegisterType<ILockService, LockService>(new ContainerControlledLifetimeManager())
|
||||||
|
.RegisterType<IAppInfoService, AppInfoService>(new ContainerControlledLifetimeManager())
|
||||||
// Repositories
|
// Repositories
|
||||||
.RegisterType<IFolderRepository, FolderRepository>(new ContainerControlledLifetimeManager())
|
.RegisterType<IFolderRepository, FolderRepository>(new ContainerControlledLifetimeManager())
|
||||||
.RegisterType<IFolderApiRepository, FolderApiRepository>(new ContainerControlledLifetimeManager())
|
.RegisterType<IFolderApiRepository, FolderApiRepository>(new ContainerControlledLifetimeManager())
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>com.8bit.bitwarden</string>
|
<string>com.8bit.bitwarden</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1.0</string>
|
<string>1</string>
|
||||||
<key>CFBundleIconFiles</key>
|
<key>CFBundleIconFiles</key>
|
||||||
<array>
|
<array>
|
||||||
<string>Icon-72@2x.png</string>
|
<string>Icon-72@2x.png</string>
|
||||||
|
@ -12,16 +12,16 @@
|
|||||||
<viewControllerLayoutGuide type="bottom" id="3"/>
|
<viewControllerLayoutGuide type="bottom" id="3"/>
|
||||||
</layoutGuides>
|
</layoutGuides>
|
||||||
<view key="view" contentMode="scaleToFill" id="6">
|
<view key="view" contentMode="scaleToFill" id="6">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<color key="backgroundColor" customColorSpace="calibratedWhite" colorSpace="calibratedRGB" red="0.92549019607843142" green="0.94117647058823528" blue="0.96078431372549022" alpha="1"/>
|
<color key="backgroundColor" customColorSpace="calibratedWhite" colorSpace="calibratedRGB" red="0.92549019607843142" green="0.94117647058823528" blue="0.96078431372549022" alpha="1"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" id="16" translatesAutoresizingMaskIntoConstraints="NO" image="logo.png" misplaced="YES">
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" id="16" translatesAutoresizingMaskIntoConstraints="NO" image="logo.png">
|
||||||
<rect key="frame" x="159" y="278" width="282" height="44"/>
|
<rect key="frame" x="159" y="238" width="282" height="44"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint id="19" firstItem="16" firstAttribute="centerY" secondItem="6" secondAttribute="centerY"/>
|
<constraint id="19" firstItem="16" firstAttribute="centerY" secondItem="6" secondAttribute="centerY" constant="-40"/>
|
||||||
<constraint id="20" firstItem="6" firstAttribute="centerX" secondItem="16" secondAttribute="centerX"/>
|
<constraint id="20" firstItem="6" firstAttribute="centerX" secondItem="16" secondAttribute="centerX"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
@ -34,7 +34,6 @@
|
|||||||
</scenes>
|
</scenes>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="bg.png" width="400" height="400"/>
|
<image name="bg.png" width="400" height="400"/>
|
||||||
<image name="Default-568h.png" width="320" height="568"/>
|
|
||||||
<image name="Default-Portrait.png" width="768" height="1004"/>
|
<image name="Default-Portrait.png" width="768" height="1004"/>
|
||||||
<image name="Default.png" width="320" height="480"/>
|
<image name="Default.png" width="320" height="480"/>
|
||||||
<image name="fa-cogs.png" width="22" height="22"/>
|
<image name="fa-cogs.png" width="22" height="22"/>
|
||||||
@ -65,8 +64,14 @@
|
|||||||
<image name="more_selected.png" width="28" height="28"/>
|
<image name="more_selected.png" width="28" height="28"/>
|
||||||
<image name="plus.png" width="18" height="18"/>
|
<image name="plus.png" width="18" height="18"/>
|
||||||
<image name="star.png" width="22" height="22"/>
|
<image name="star.png" width="22" height="22"/>
|
||||||
|
<image name="cloudup.png" width="44" height="44"/>
|
||||||
|
<image name="envelope.png" width="18" height="18"/>
|
||||||
|
<image name="globe.png" width="44" height="44"/>
|
||||||
|
<image name="lightbulb-o.png" width="18" height="18"/>
|
||||||
|
<image name="lock.png" width="18" height="18"/>
|
||||||
|
<image name="refresh.png" width="44" height="44"/>
|
||||||
|
<image name="upload.png" width="44" height="44"/>
|
||||||
|
<image name="user.png" width="18" height="18"/>
|
||||||
|
<image name="wrench.png" width="22" height="22"/>
|
||||||
</resources>
|
</resources>
|
||||||
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
|
||||||
<simulatedScreenMetrics key="destination" type="retina47"/>
|
|
||||||
</simulatedMetricsContainer>
|
|
||||||
</document>
|
</document>
|
12
src/iOS/Services/AppInfoService.cs
Normal file
12
src/iOS/Services/AppInfoService.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
using System;
|
||||||
|
using Bit.App.Abstractions;
|
||||||
|
using Foundation;
|
||||||
|
|
||||||
|
namespace Bit.iOS.Services
|
||||||
|
{
|
||||||
|
public class AppInfoService : IAppInfoService
|
||||||
|
{
|
||||||
|
public string Build => NSBundle.MainBundle.InfoDictionary["CFBundleVersion"].ToString();
|
||||||
|
public string Version => NSBundle.MainBundle.InfoDictionary["CFBundleShortVersionString"].ToString();
|
||||||
|
}
|
||||||
|
}
|
@ -113,6 +113,7 @@
|
|||||||
<Compile Include="Controls\ExtendedPickerRenderer.cs" />
|
<Compile Include="Controls\ExtendedPickerRenderer.cs" />
|
||||||
<Compile Include="Controls\ExtendedEntryRenderer.cs" />
|
<Compile Include="Controls\ExtendedEntryRenderer.cs" />
|
||||||
<Compile Include="Controls\ExtendedTabbedPageRenderer.cs" />
|
<Compile Include="Controls\ExtendedTabbedPageRenderer.cs" />
|
||||||
|
<Compile Include="Services\AppInfoService.cs" />
|
||||||
<Compile Include="Services\ClipboardService.cs" />
|
<Compile Include="Services\ClipboardService.cs" />
|
||||||
<Compile Include="Main.cs" />
|
<Compile Include="Main.cs" />
|
||||||
<Compile Include="AppDelegate.cs" />
|
<Compile Include="AppDelegate.cs" />
|
||||||
|
Loading…
Reference in New Issue
Block a user