added language and fiat views

This commit is contained in:
loj 2019-04-29 21:02:39 +02:00
parent eb254ccc2d
commit 6104324a71
16 changed files with 956 additions and 0 deletions

View File

@ -113,6 +113,17 @@
EEBEBBA02208D75600A6BD18 /* MemoVCDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEBEBB9F2208D66600A6BD18 /* MemoVCDelegate.swift */; };
EEBEBBA12208D75A00A6BD18 /* MemoVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEBEBB9C2208D60100A6BD18 /* MemoVC.swift */; };
EEBEBBA22208D76200A6BD18 /* Memo.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EEBEBB9A2208D4FD00A6BD18 /* Memo.storyboard */; };
EECB178A2275A7CB002964A4 /* Language.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EECB17892275A7B4002964A4 /* Language.storyboard */; };
EECB178D2275A836002964A4 /* LanguageVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECB178C2275A836002964A4 /* LanguageVC.swift */; };
EECB178F2275AA4D002964A4 /* Fiat.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EECB178E2275AA4D002964A4 /* Fiat.storyboard */; };
EECB17922275ACB3002964A4 /* FiatVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECB17912275ACB3002964A4 /* FiatVC.swift */; };
EECB17942275E5D4002964A4 /* FiatIndexTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECB17932275E5D4002964A4 /* FiatIndexTableViewCell.swift */; };
EECB17962275E601002964A4 /* FiatCurrencyTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECB17952275E601002964A4 /* FiatCurrencyTableViewCell.swift */; };
EECB17982275E7B5002964A4 /* FiatVCDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECB17972275E7B5002964A4 /* FiatVCDelegate.swift */; };
EECB179A2275E894002964A4 /* FiatVCViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECB17992275E894002964A4 /* FiatVCViewModel.swift */; };
EECB179C22760EAB002964A4 /* Currencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECB179B22760EAB002964A4 /* Currencies.swift */; };
EECB179E22777ADE002964A4 /* PropertyStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECB179D22777ADE002964A4 /* PropertyStore.swift */; };
EECB17A022777D6A002964A4 /* Languages.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECB179F22777D6A002964A4 /* Languages.swift */; };
EEE15B0A2270DA23008231B6 /* QRC.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EEE15B092270D93B008231B6 /* QRC.storyboard */; };
EEE15B0D2270E736008231B6 /* QrcVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEE15B0C2270E736008231B6 /* QrcVC.swift */; };
EEE15B0F2270E89F008231B6 /* QrcVCDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEE15B0E2270E89F008231B6 /* QrcVCDelegate.swift */; };
@ -242,6 +253,17 @@
EEBEBB9C2208D60100A6BD18 /* MemoVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemoVC.swift; sourceTree = "<group>"; };
EEBEBB9D2208D64C00A6BD18 /* AmountVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AmountVC.swift; sourceTree = "<group>"; };
EEBEBB9F2208D66600A6BD18 /* MemoVCDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemoVCDelegate.swift; sourceTree = "<group>"; };
EECB17892275A7B4002964A4 /* Language.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Language.storyboard; sourceTree = "<group>"; };
EECB178C2275A836002964A4 /* LanguageVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LanguageVC.swift; sourceTree = "<group>"; };
EECB178E2275AA4D002964A4 /* Fiat.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Fiat.storyboard; sourceTree = "<group>"; };
EECB17912275ACB3002964A4 /* FiatVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FiatVC.swift; sourceTree = "<group>"; };
EECB17932275E5D4002964A4 /* FiatIndexTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FiatIndexTableViewCell.swift; sourceTree = "<group>"; };
EECB17952275E601002964A4 /* FiatCurrencyTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FiatCurrencyTableViewCell.swift; sourceTree = "<group>"; };
EECB17972275E7B5002964A4 /* FiatVCDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FiatVCDelegate.swift; sourceTree = "<group>"; };
EECB17992275E894002964A4 /* FiatVCViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FiatVCViewModel.swift; sourceTree = "<group>"; };
EECB179B22760EAB002964A4 /* Currencies.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Currencies.swift; sourceTree = "<group>"; };
EECB179D22777ADE002964A4 /* PropertyStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PropertyStore.swift; sourceTree = "<group>"; };
EECB179F22777D6A002964A4 /* Languages.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Languages.swift; sourceTree = "<group>"; };
EEE15B092270D93B008231B6 /* QRC.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = QRC.storyboard; sourceTree = "<group>"; };
EEE15B0C2270E736008231B6 /* QrcVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QrcVC.swift; sourceTree = "<group>"; };
EEE15B0E2270E89F008231B6 /* QrcVCDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QrcVCDelegate.swift; sourceTree = "<group>"; };
@ -292,6 +314,7 @@
EE07A46721E279A8006031C8 /* InfoPlist.strings */,
EE07A45621E26E88006031C8 /* IocContainer.swift */,
EE07A45421E24FDD006031C8 /* Localization.swift */,
EECB179D22777ADE002964A4 /* PropertyStore.swift */,
);
path = Infrastructure;
sourceTree = "<group>";
@ -462,7 +485,9 @@
children = (
EE4AFAAA2266519E00997CE3 /* Address.storyboard */,
EEBEBB802206F80300A6BD18 /* Amount.storyboard */,
EECB178E2275AA4D002964A4 /* Fiat.storyboard */,
EE76B84121D7EC3F0093571F /* Home.storyboard */,
EECB17892275A7B4002964A4 /* Language.storyboard */,
EE57700621CFCC5600433CAB /* LaunchScreen.storyboard */,
EE57700121CFCC5500433CAB /* Main.storyboard */,
EEBEBB9A2208D4FD00A6BD18 /* Memo.storyboard */,
@ -501,7 +526,9 @@
children = (
EE4AFAAB2266528700997CE3 /* Address */,
EEBEBB822206FB3200A6BD18 /* Amount */,
EECB17902275AC78002964A4 /* Fiat */,
EE377ED021F47D5200138385 /* Home */,
EECB178B2275A814002964A4 /* Language */,
EE07A44E21E217E0006031C8 /* Main */,
EEBEBB9B2208D5E700A6BD18 /* Memo */,
EE377EC321E8F44C00138385 /* Passphrase */,
@ -531,6 +558,8 @@
children = (
EE57702821D0011400433CAB /* Colors.swift */,
EE377EC121E7DFD200138385 /* Constants.swift */,
EECB179B22760EAB002964A4 /* Currencies.swift */,
EECB179F22777D6A002964A4 /* Languages.swift */,
);
path = Definitions;
sourceTree = "<group>";
@ -638,6 +667,26 @@
path = Memo;
sourceTree = "<group>";
};
EECB178B2275A814002964A4 /* Language */ = {
isa = PBXGroup;
children = (
EECB178C2275A836002964A4 /* LanguageVC.swift */,
);
path = Language;
sourceTree = "<group>";
};
EECB17902275AC78002964A4 /* Fiat */ = {
isa = PBXGroup;
children = (
EECB17952275E601002964A4 /* FiatCurrencyTableViewCell.swift */,
EECB17932275E5D4002964A4 /* FiatIndexTableViewCell.swift */,
EECB17912275ACB3002964A4 /* FiatVC.swift */,
EECB17972275E7B5002964A4 /* FiatVCDelegate.swift */,
EECB17992275E894002964A4 /* FiatVCViewModel.swift */,
);
path = Fiat;
sourceTree = "<group>";
};
EEE15B0B2270E541008231B6 /* QRC */ = {
isa = PBXGroup;
children = (
@ -768,9 +817,11 @@
EE76B85A21D8D1930093571F /* OFL.txt in Resources */,
EEBEBBA22208D76200A6BD18 /* Memo.storyboard in Resources */,
EE76B84221D7EC3F0093571F /* Home.storyboard in Resources */,
EECB178A2275A7CB002964A4 /* Language.storyboard in Resources */,
EE57700821CFCC5600433CAB /* LaunchScreen.storyboard in Resources */,
EEE15B0A2270DA23008231B6 /* QRC.storyboard in Resources */,
EEBEBB812206F81F00A6BD18 /* Amount.storyboard in Resources */,
EECB178F2275AA4D002964A4 /* Fiat.storyboard in Resources */,
EE76B85E21D8D1930093571F /* SourceSansPro-ExtraLightItalic.ttf in Resources */,
EE57700521CFCC5600433CAB /* Assets.xcassets in Resources */,
EE57700321CFCC5500433CAB /* Main.storyboard in Resources */,
@ -795,6 +846,7 @@
EE377EE221F4F18700138385 /* TrxDirection.swift in Sources */,
EE07A46A21E29B6F006031C8 /* AppCoordinator.swift in Sources */,
EE07A45221E23E92006031C8 /* MainVCDelegate.swift in Sources */,
EECB17922275ACB3002964A4 /* FiatVC.swift in Sources */,
EE377EC521E8F47100138385 /* PassphraseVC.swift in Sources */,
EEBEBB952207425500A6BD18 /* SendCoordinator.swift in Sources */,
EE1876A1221612AE004853A7 /* ReviewVCViewModel.swift in Sources */,
@ -811,8 +863,11 @@
EE57702B21D0230C00433CAB /* ZWProgressBar.swift in Sources */,
EECB17A022777D6A002964A4 /* Languages.swift in Sources */,
EE377EED21F7B02600138385 /* TrxMemoTableViewCell.swift in Sources */,
EECB17942275E5D4002964A4 /* FiatIndexTableViewCell.swift in Sources */,
EE57702921D0011400433CAB /* Colors.swift in Sources */,
EE377EE621F4F1C400138385 /* TrxHistoryObservable.swift in Sources */,
EECB179A2275E894002964A4 /* FiatVCViewModel.swift in Sources */,
EECB179E22777ADE002964A4 /* PropertyStore.swift in Sources */,
EEBEBBA02208D75600A6BD18 /* MemoVCDelegate.swift in Sources */,
EE377EE421F4F1A100138385 /* TrxDetails.swift in Sources */,
EE377ECB21E8F71700138385 /* PassphraseEntryMode.swift in Sources */,
@ -829,6 +884,7 @@
EEBEBB7B2200DFC000A6BD18 /* ScanVC.swift in Sources */,
EEE15B1D227231F0008231B6 /* SettingsVCViewModel.swift in Sources */,
EE1876A9221EE0B2004853A7 /* Payment.swift in Sources */,
EECB178D2275A836002964A4 /* LanguageVC.swift in Sources */,
EEE15B1522722C77008231B6 /* SettingsCoordinator.swift in Sources */,
EE576FFE21CFCC5500433CAB /* AppDelegate.swift in Sources */,
EE94A74C22135B7200882BB1 /* TrxDetailsVCDelegate.swift in Sources */,
@ -857,6 +913,7 @@
EE377EF121FDEE3F00138385 /* ZEC.swift in Sources */,
EEBEBB972207477100A6BD18 /* SendCoordinator.Delegate.swift in Sources */,
EE377ED221F47E1400138385 /* HomeVC.swift in Sources */,
EECB17982275E7B5002964A4 /* FiatVCDelegate.swift in Sources */,
EEE15B222273B6C5008231B6 /* SettingsTwoLabelsTableViewCell.swift in Sources */,
EE377ED621F4835F00138385 /* HomeVCDelegate.swift in Sources */,
EE377EBE21E68C0B00138385 /* PinVCDelegate.swift in Sources */,
@ -866,6 +923,7 @@
EEBEBB7721FF91B700A6BD18 /* RecipientAddressDelegate.swift in Sources */,
EEE15B112270E903008231B6 /* QrcVCViewModel.swift in Sources */,
EE4AFAAD226652E500997CE3 /* AddressVC.swift in Sources */,
EECB17962275E601002964A4 /* FiatCurrencyTableViewCell.swift in Sources */,
EEBEBBA12208D75A00A6BD18 /* MemoVC.swift in Sources */,
EE07A45021E23E43006031C8 /* MainVC.swift in Sources */,
EEE15B192272305C008231B6 /* SettingsVC.swift in Sources */,

View File

@ -0,0 +1,127 @@
//
// PropertyStore.swift
// ZWallet
//
// Created by loj on 29.04.19.
// Copyright © 2019 XMR Systems LLC. All rights reserved.
//
import Foundation
public protocol PropertyStoreProtocol {
func wipeAll()
var onboardingIsFinished: Bool { get set }
var language: String { get set }
var currency: String { get set }
var nodeAddress: String { get set }
var lastFiatUpdate: Date? { get set }
var lastFiatFactor: Double? { get set }
var feeInAtomicUnits: UInt64 { get set }
}
public class PropertyStore: PropertyStoreProtocol {
private let TagOnboardingIsFinished = "OnboardingIsFinished"
private let TagLanguage = "Language"
private let TagCurrency = "Currency"
private let TagNodeAddress = "NodeAddress"
private let TagLastFiatUpdate = "FiatUpdate"
private let TagLastFiatFactor = "FiatFactor"
private let TagFeeInAtomicUnits = "FeeInAtomicUnits"
private let defaultStore = UserDefaults.standard
public init() {
}
public func wipeAll() {
}
public var onboardingIsFinished: Bool {
get {
if let onboardingFinished = self.defaultStore.object(forKey: TagOnboardingIsFinished) as? Bool {
return onboardingFinished
}
return false
}
set {
self.defaultStore.set(newValue, forKey: TagOnboardingIsFinished)
}
}
public var language: String {
get {
if let language = self.defaultStore.object(forKey: TagLanguage) as? String {
return language
}
return Localization.initialLanguage()
}
set {
self.defaultStore.set(newValue, forKey: TagLanguage)
}
}
public var currency: String {
get {
if let currency = self.defaultStore.object(forKey: TagCurrency) as? String {
return currency
}
return Constants.defaultCurrency
}
set {
self.defaultStore.set(newValue, forKey: TagCurrency)
}
}
public var nodeAddress: String {
get {
if let nodeAddress = self.defaultStore.object(forKey: TagNodeAddress) as? String {
return nodeAddress
}
return Constants.defaultNodeAddress
}
set {
self.defaultStore.set(newValue, forKey: TagNodeAddress)
}
}
public var lastFiatUpdate: Date? {
get {
if let fiatUpdate = self.defaultStore.object(forKey: TagLastFiatUpdate) as? Date? {
return fiatUpdate
}
return nil
}
set {
self.defaultStore.set(newValue, forKey: TagLastFiatUpdate)
}
}
public var lastFiatFactor: Double? {
get {
if let fiatFactor = self.defaultStore.object(forKey: TagLastFiatFactor) as? Double? {
return fiatFactor
}
return nil
}
set {
self.defaultStore.set(newValue, forKey: TagLastFiatFactor)
}
}
public var feeInAtomicUnits: UInt64 {
get {
if let fee = self.defaultStore.object(forKey: TagFeeInAtomicUnits) as? UInt64 {
return fee
}
return 0
}
set {
self.defaultStore.set(newValue, forKey: TagFeeInAtomicUnits)
}
}
}

View File

@ -152,3 +152,7 @@
"settings.displayPassphrase" = "Passwort anzeigen";
"fiat.title" = "Währung wählen";
"general.search" = "Suchen";

View File

@ -152,3 +152,7 @@
"settings.displayPassphrase" = "Display Passphrase";
"fiat.title" = "Select Currency";
"general.search" = "Search";

View File

@ -0,0 +1,145 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14490.49"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<customFonts key="customFonts">
<array key="SourceSansPro-Bold.ttf">
<string>SourceSansPro-Bold</string>
</array>
<array key="SourceSansPro-Regular.ttf">
<string>SourceSansPro-Regular</string>
</array>
</customFonts>
<scenes>
<!--!!Fiat-->
<scene sceneID="BVC-Ua-pHo">
<objects>
<tableViewController storyboardIdentifier="Fiat" title="!!Fiat" id="3kL-n4-JwT" customClass="FiatVC" customModule="ZWallet" customModuleProvider="target" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="none" rowHeight="55" estimatedRowHeight="-1" sectionHeaderHeight="18" sectionFooterHeight="18" id="mXm-SR-Pcu">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<searchBar key="tableHeaderView" contentMode="redraw" searchBarStyle="minimal" placeholder="!!Search" id="AUu-dA-6Da">
<rect key="frame" x="0.0" y="0.0" width="414" height="56"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" smartDashesType="no" smartInsertDeleteType="no" smartQuotesType="no"/>
</searchBar>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="FiatIndexCell" id="rhZ-K8-mRq" userLabel="FiatIndexCell" customClass="FiatIndexTableViewCell" customModule="ZWallet" customModuleProvider="target">
<rect key="frame" x="0.0" y="111.5" width="414" height="55"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="rhZ-K8-mRq" id="Bea-hJ-yx7">
<rect key="frame" x="0.0" y="0.0" width="414" height="55"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="!!A" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CkO-4a-ScX">
<rect key="frame" x="24" y="24" width="366" height="31"/>
<fontDescription key="fontDescription" name="SourceSansPro-Bold" family="Source Sans Pro" pointSize="24"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="CkO-4a-ScX" firstAttribute="centerY" secondItem="Bea-hJ-yx7" secondAttribute="centerY" constant="12" id="YFh-Cr-RUI"/>
<constraint firstAttribute="trailing" secondItem="CkO-4a-ScX" secondAttribute="trailing" constant="24" id="jwB-KW-JzI"/>
<constraint firstItem="CkO-4a-ScX" firstAttribute="leading" secondItem="Bea-hJ-yx7" secondAttribute="leading" constant="24" id="s1A-as-6go"/>
</constraints>
</tableViewCellContentView>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<connections>
<outlet property="indexLabel" destination="CkO-4a-ScX" id="Yug-NN-Eqv"/>
</connections>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="FiatCurrencyCell" id="zfR-r3-fJ3" userLabel="FiatCurrencyCell" customClass="FiatCurrencyTableViewCell" customModule="ZWallet" customModuleProvider="target">
<rect key="frame" x="0.0" y="166.5" width="414" height="55"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="zfR-r3-fJ3" id="uED-33-qTF">
<rect key="frame" x="0.0" y="0.0" width="414" height="55"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="!!CHF" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="I2k-bc-yN7">
<rect key="frame" x="24" y="16" width="50" height="23"/>
<constraints>
<constraint firstAttribute="width" constant="50" id="4hG-ct-G5l"/>
</constraints>
<fontDescription key="fontDescription" name="SourceSansPro-Regular" family="Source Sans Pro" pointSize="18"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="RadioSelected" highlighted="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hlI-2C-BhY">
<rect key="frame" x="370" y="17" width="20" height="20"/>
<color key="tintColor" red="0.2784313725" green="0.54901960780000003" blue="0.93333333330000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" constant="20" id="9rT-mI-gfs"/>
<constraint firstAttribute="height" constant="20" id="TKZ-LW-rdR"/>
</constraints>
</imageView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xwT-bQ-iFQ">
<rect key="frame" x="24" y="54" width="366" height="1"/>
<color key="backgroundColor" red="0.91764705882352937" green="0.91764705882352937" blue="0.91764705882352937" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="QhN-ko-j1n"/>
</constraints>
</view>
<label opaque="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="!!Swiss Franc" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QeC-uA-kJs">
<rect key="frame" x="124" y="16" width="238" height="23"/>
<fontDescription key="fontDescription" name="SourceSansPro-Regular" family="Source Sans Pro" pointSize="18"/>
<color key="textColor" red="0.50980392156862742" green="0.50980392156862742" blue="0.50980392156862742" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="xwT-bQ-iFQ" firstAttribute="leading" secondItem="uED-33-qTF" secondAttribute="leading" constant="24" id="5eT-sr-fvg"/>
<constraint firstItem="QeC-uA-kJs" firstAttribute="leading" secondItem="I2k-bc-yN7" secondAttribute="leading" constant="100" id="G2K-qn-YOb"/>
<constraint firstItem="I2k-bc-yN7" firstAttribute="leading" secondItem="uED-33-qTF" secondAttribute="leading" constant="24" id="GJy-IE-8eu"/>
<constraint firstItem="I2k-bc-yN7" firstAttribute="top" secondItem="uED-33-qTF" secondAttribute="top" constant="16" id="INK-GV-dcO"/>
<constraint firstItem="hlI-2C-BhY" firstAttribute="top" secondItem="uED-33-qTF" secondAttribute="top" constant="17" id="Jad-ne-MJS"/>
<constraint firstAttribute="trailing" secondItem="xwT-bQ-iFQ" secondAttribute="trailing" constant="24" id="VK5-BD-Z85"/>
<constraint firstAttribute="bottom" secondItem="xwT-bQ-iFQ" secondAttribute="bottom" id="ZRs-r7-xTN"/>
<constraint firstAttribute="trailing" secondItem="hlI-2C-BhY" secondAttribute="trailing" constant="24" id="fGz-KS-bUC"/>
<constraint firstItem="QeC-uA-kJs" firstAttribute="top" secondItem="uED-33-qTF" secondAttribute="top" constant="16" id="tL1-nW-9uN"/>
<constraint firstItem="hlI-2C-BhY" firstAttribute="leading" secondItem="QeC-uA-kJs" secondAttribute="trailing" constant="8" id="vQ3-sP-XsR"/>
</constraints>
</tableViewCellContentView>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<connections>
<outlet property="currencyNameLabel" destination="QeC-uA-kJs" id="pUM-6F-CjE"/>
<outlet property="currenyIdLabel" destination="I2k-bc-yN7" id="XPg-m5-3rF"/>
<outlet property="radioImageView" destination="hlI-2C-BhY" id="2RP-1V-0ao"/>
</connections>
</tableViewCell>
</prototypes>
<sections/>
<connections>
<outlet property="dataSource" destination="3kL-n4-JwT" id="abQ-jL-aMC"/>
<outlet property="delegate" destination="3kL-n4-JwT" id="m0d-Uf-9Km"/>
</connections>
</tableView>
<navigationItem key="navigationItem" title="!!Fiat" largeTitleDisplayMode="always" id="Dge-KJ-Zam">
<barButtonItem key="leftBarButtonItem" title="Item" image="ArrowBack" id="K6K-1f-aoz" userLabel="BackButton">
<color key="tintColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<connections>
<action selector="backButtonTouched" destination="3kL-n4-JwT" id="RQK-nX-tvF"/>
</connections>
</barButtonItem>
</navigationItem>
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
<connections>
<outlet property="searchBar" destination="AUu-dA-6Da" id="SAv-sw-Nqo"/>
</connections>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="7cG-nS-xgr" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="105.79710144927537" y="151.33928571428569"/>
</scene>
</scenes>
<resources>
<image name="ArrowBack" width="24" height="24"/>
<image name="RadioSelected" width="20" height="20"/>
</resources>
</document>

View File

@ -0,0 +1,185 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14490.49"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<customFonts key="customFonts">
<array key="SourceSansPro-Bold.ttf">
<string>SourceSansPro-Bold</string>
</array>
<array key="SourceSansPro-Regular.ttf">
<string>SourceSansPro-Regular</string>
</array>
</customFonts>
<scenes>
<!--LanguageVC-->
<scene sceneID="5TK-63-Amy">
<objects>
<viewController storyboardIdentifier="Language" id="M2V-hB-lEq" customClass="LanguageVC" customModule="ZWallet" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="MfU-s3-T92">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="BD7-Xi-ojG" userLabel="BackButton">
<rect key="frame" x="14" y="48" width="44" height="44"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="8S4-IY-aNc"/>
<constraint firstAttribute="width" constant="44" id="onO-tg-fYE"/>
</constraints>
<state key="normal" image="ArrowBack"/>
</button>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" rowHeight="48" estimatedRowHeight="-1" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="q79-B3-nPW">
<rect key="frame" x="0.0" y="171" width="414" height="725"/>
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
<prototypes>
<tableViewCell contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="SettingsTwoLabelsCell" id="9ur-6u-FUh" userLabel="TwoLabelsCell" customClass="SettingsTwoLabelsTableViewCell" customModule="ZWallet">
<rect key="frame" x="0.0" y="55.5" width="414" height="48"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="9ur-6u-FUh" id="Up4-bQ-WE9">
<rect key="frame" x="0.0" y="0.0" width="414" height="47.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="!!Left" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0r1-0w-aZe" userLabel="LeftLabel">
<rect key="frame" x="24" y="13.5" width="218" height="21"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="180" id="iY2-O9-Eeb"/>
</constraints>
<fontDescription key="fontDescription" name="SourceSansPro-Regular" family="Source Sans Pro" pointSize="16"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="!!Right" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="v31-CV-Ig6" userLabel="RightLabel">
<rect key="frame" x="258" y="13.5" width="100" height="21"/>
<constraints>
<constraint firstAttribute="width" constant="100" id="9we-NL-ajp"/>
</constraints>
<fontDescription key="fontDescription" name="SourceSansPro-Regular" family="Source Sans Pro" pointSize="16"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" alpha="0.40000000596046448" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="DisclosureIndicator" translatesAutoresizingMaskIntoConstraints="NO" id="2CD-U8-Oyl">
<rect key="frame" x="382" y="17.5" width="8" height="13"/>
<viewLayoutGuide key="safeArea" id="BVq-JV-ZhK"/>
</imageView>
</subviews>
<constraints>
<constraint firstItem="0r1-0w-aZe" firstAttribute="leading" secondItem="Up4-bQ-WE9" secondAttribute="leading" constant="24" id="1y0-sF-kUS"/>
<constraint firstItem="2CD-U8-Oyl" firstAttribute="centerY" secondItem="Up4-bQ-WE9" secondAttribute="centerY" id="9jv-xq-dEx"/>
<constraint firstItem="2CD-U8-Oyl" firstAttribute="leading" secondItem="v31-CV-Ig6" secondAttribute="trailing" constant="24" id="B3k-KX-ZIW"/>
<constraint firstItem="0r1-0w-aZe" firstAttribute="centerY" secondItem="Up4-bQ-WE9" secondAttribute="centerY" id="Jjf-dt-IOM"/>
<constraint firstAttribute="trailing" secondItem="2CD-U8-Oyl" secondAttribute="trailing" constant="24" id="gut-Ik-XLC"/>
<constraint firstItem="v31-CV-Ig6" firstAttribute="leading" secondItem="0r1-0w-aZe" secondAttribute="trailing" constant="16" id="sBR-dh-0SH"/>
<constraint firstItem="v31-CV-Ig6" firstAttribute="centerY" secondItem="Up4-bQ-WE9" secondAttribute="centerY" id="uqe-An-Edr"/>
</constraints>
</tableViewCellContentView>
<connections>
<outlet property="leftLabel" destination="0r1-0w-aZe" id="gi3-KJ-5NP"/>
<outlet property="rightLabel" destination="v31-CV-Ig6" id="4SW-bQ-UGT"/>
</connections>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="SettingsOneLabelCell" id="tr9-Wr-iEY" userLabel="OneLabelCell" customClass="SettingsOneLabelTableViewCell" customModule="ZWallet">
<rect key="frame" x="0.0" y="103.5" width="414" height="48"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="tr9-Wr-iEY" id="1ih-QA-kGw">
<rect key="frame" x="0.0" y="0.0" width="414" height="47.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="!!Left" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sNp-76-3jx" userLabel="LeftLabel">
<rect key="frame" x="24" y="13.5" width="334" height="21"/>
<fontDescription key="fontDescription" name="SourceSansPro-Regular" family="Source Sans Pro" pointSize="16"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" alpha="0.40000000596046448" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="DisclosureIndicator" translatesAutoresizingMaskIntoConstraints="NO" id="3rv-zo-Amg">
<rect key="frame" x="382" y="17.5" width="8" height="13"/>
<viewLayoutGuide key="safeArea" id="Gal-Ru-udU"/>
</imageView>
</subviews>
<constraints>
<constraint firstItem="3rv-zo-Amg" firstAttribute="leading" secondItem="sNp-76-3jx" secondAttribute="trailing" constant="24" id="7M7-gR-wA9"/>
<constraint firstItem="sNp-76-3jx" firstAttribute="leading" secondItem="1ih-QA-kGw" secondAttribute="leading" constant="24" id="BrG-Fe-SPd"/>
<constraint firstItem="sNp-76-3jx" firstAttribute="centerY" secondItem="1ih-QA-kGw" secondAttribute="centerY" id="D7H-tw-NoN"/>
<constraint firstItem="3rv-zo-Amg" firstAttribute="centerY" secondItem="1ih-QA-kGw" secondAttribute="centerY" id="DdC-FE-89S"/>
<constraint firstAttribute="trailing" secondItem="3rv-zo-Amg" secondAttribute="trailing" constant="24" id="mdW-Va-22b"/>
</constraints>
</tableViewCellContentView>
<connections>
<outlet property="leftLabel" destination="sNp-76-3jx" id="Tn9-xC-9Hj"/>
</connections>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="SettingsSwitchCell" id="9oX-To-Kbp" userLabel="SwitchCell" customClass="SettingsSwitchTableViewCell" customModule="ZWallet">
<rect key="frame" x="0.0" y="151.5" width="414" height="48"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="9oX-To-Kbp" id="Kas-rg-D0T">
<rect key="frame" x="0.0" y="0.0" width="414" height="47.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="!!Right" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2vT-ca-43g" userLabel="LeftLabel">
<rect key="frame" x="24" y="13.5" width="297" height="21"/>
<fontDescription key="fontDescription" name="SourceSansPro-Regular" family="Source Sans Pro" pointSize="16"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="7wh-YI-lVe">
<rect key="frame" x="341" y="8.5" width="51" height="31"/>
<color key="onTintColor" red="0.2404455543" green="0.49460166690000001" blue="0.8346244693" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<connections>
<action selector="switchChanged" destination="9oX-To-Kbp" eventType="valueChanged" id="gLB-Jg-Aue"/>
</connections>
</switch>
</subviews>
<constraints>
<constraint firstItem="7wh-YI-lVe" firstAttribute="leading" secondItem="2vT-ca-43g" secondAttribute="trailing" constant="20" id="Ay5-ba-Ic3"/>
<constraint firstAttribute="trailing" secondItem="7wh-YI-lVe" secondAttribute="trailing" constant="24" id="Eff-HJ-ImQ"/>
<constraint firstItem="2vT-ca-43g" firstAttribute="centerY" secondItem="Kas-rg-D0T" secondAttribute="centerY" id="LxI-wP-U9A"/>
<constraint firstItem="7wh-YI-lVe" firstAttribute="centerY" secondItem="Kas-rg-D0T" secondAttribute="centerY" id="pgv-PD-4wf"/>
<constraint firstItem="2vT-ca-43g" firstAttribute="leading" secondItem="Kas-rg-D0T" secondAttribute="leading" constant="24" id="tLC-6t-VsT"/>
</constraints>
</tableViewCellContentView>
<connections>
<outlet property="leftLabel" destination="2vT-ca-43g" id="5U3-5h-MN1"/>
<outlet property="switchSwitch" destination="7wh-YI-lVe" id="Cxy-lU-c8A"/>
</connections>
</tableViewCell>
</prototypes>
</tableView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="!!Language" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r9g-U1-6GC">
<rect key="frame" x="24" y="116" width="366" height="43"/>
<constraints>
<constraint firstAttribute="height" constant="43" id="TKL-j1-J2Y"/>
</constraints>
<fontDescription key="fontDescription" name="SourceSansPro-Bold" family="Source Sans Pro" pointSize="34"/>
<color key="textColor" red="0.2901675105" green="0.29021433000000002" blue="0.29015725850000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="q79-B3-nPW" secondAttribute="bottom" id="6Ej-R7-6AN"/>
<constraint firstItem="q79-B3-nPW" firstAttribute="leading" secondItem="Vyu-5m-YUx" secondAttribute="leading" id="CPe-kP-tOU"/>
<constraint firstItem="BD7-Xi-ojG" firstAttribute="leading" secondItem="Vyu-5m-YUx" secondAttribute="leading" constant="14" id="KeI-Mb-OeO"/>
<constraint firstItem="q79-B3-nPW" firstAttribute="trailing" secondItem="Vyu-5m-YUx" secondAttribute="trailing" id="T8M-M4-Pzt"/>
<constraint firstItem="r9g-U1-6GC" firstAttribute="leading" secondItem="Vyu-5m-YUx" secondAttribute="leading" constant="24" id="WOg-Dr-Ycf"/>
<constraint firstItem="BD7-Xi-ojG" firstAttribute="top" secondItem="Vyu-5m-YUx" secondAttribute="top" constant="4" id="XOf-4Y-77E"/>
<constraint firstItem="q79-B3-nPW" firstAttribute="top" secondItem="r9g-U1-6GC" secondAttribute="bottom" constant="12" id="hfM-KR-3FO"/>
<constraint firstItem="Vyu-5m-YUx" firstAttribute="trailing" secondItem="r9g-U1-6GC" secondAttribute="trailing" constant="24" id="unm-EG-rDc"/>
<constraint firstItem="r9g-U1-6GC" firstAttribute="top" secondItem="BD7-Xi-ojG" secondAttribute="bottom" constant="24" id="vxQ-UA-Si2"/>
</constraints>
<viewLayoutGuide key="safeArea" id="Vyu-5m-YUx"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="fNu-aZ-Pmz" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="133.33333333333334" y="-179.46428571428569"/>
</scene>
</scenes>
<resources>
<image name="ArrowBack" width="24" height="24"/>
<image name="DisclosureIndicator" width="8" height="13"/>
</resources>
</document>

View File

@ -0,0 +1,16 @@
//
// FiatCurrencyTableViewCell.swift
// ZWallet
//
// Created by loj on 28.04.19.
// Copyright © 2019 XMR Systems LLC. All rights reserved.
//
import UIKit
class FiatCurrencyTableViewCell: UITableViewCell {
@IBOutlet weak var currenyIdLabel: UILabel!
@IBOutlet weak var currencyNameLabel: UILabel!
@IBOutlet weak var radioImageView: UIImageView!
}

View File

@ -0,0 +1,14 @@
//
// FiatIndexTableViewCell.swift
// ZWallet
//
// Created by loj on 28.04.19.
// Copyright © 2019 XMR Systems LLC. All rights reserved.
//
import UIKit
class FiatIndexTableViewCell: UITableViewCell {
@IBOutlet weak var indexLabel: UILabel!
}

View File

@ -0,0 +1,110 @@
//
// FiatVC.swift
// ZWallet
//
// Created by loj on 28.04.19.
// Copyright © 2019 XMR Systems LLC. All rights reserved.
//
import UIKit
class FiatVC: UITableViewController {
@IBOutlet weak var backButton: UIButton!
@IBOutlet weak var searchBar: UISearchBar!
public weak var delegate: FiatVCDelegate?
public weak var localizer: Localizable?
public var viewModel: FiatVCViewModel?
private var currencies: [String:[String]] {
get {
return self.viewModel?.currencies ?? [String:[String]]()
}
}
@IBAction func backButtonTouched() {
self.delegate?.fiatVCDelegateBackTouched(sender: self)
}
override func viewDidLoad() {
super.viewDidLoad()
self.setup()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.update()
}
private func setup() {
self.navigationController?.navigationBar.isHidden = false
self.navigationController?.navigationBar.prefersLargeTitles = true
self.navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
self.navigationController?.navigationBar.isTranslucent = true
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem
}
private func update() {
self.title = self.localizer?.localized("fiat.title")
self.searchBar.placeholder = self.localizer?.localized("general.search")
}
private lazy var sectionTitles: [String] = {
return self.currencies
.keys
.sorted { $0 < $1 }
}()
public func value(atRow row: Int, inSection section: Int) -> String? {
let key = self.sectionTitles[section]
guard let values = self.currencies[key] else { return nil }
let value = values[row]
return value
}
private enum CellIdentifiers: String {
case indexCell = "FiatIndexCell"
case currencyCell = "FiatCurrencyCell"
}
}
extension FiatVC {
override func numberOfSections(in tableView: UITableView) -> Int {
return self.currencies.count
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let key = self.sectionTitles[section]
let values = currencies[key] ?? [String]()
return values.count + 1
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == 0 {
return self.getCell(forIndex: self.sectionTitles[indexPath.section])
}
return self.getCell(forCurrency: self.value(atRow: indexPath.row - 1, inSection: indexPath.section) ?? "?")
}
private func getCell(forIndex index: String) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCell(withIdentifier: CellIdentifiers.indexCell.rawValue) as! FiatIndexTableViewCell
cell.indexLabel.text = index
return cell
}
private func getCell(forCurrency currency: String) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCell(withIdentifier: CellIdentifiers.currencyCell.rawValue) as! FiatCurrencyTableViewCell
cell.currenyIdLabel.text = currency
cell.currencyNameLabel.text = self.localizer?.localized(currency)
return cell
}
}

View File

@ -0,0 +1,15 @@
//
// FiatVCDelegate.swift
// ZWallet
//
// Created by loj on 28.04.19.
// Copyright © 2019 XMR Systems LLC. All rights reserved.
//
import Foundation
internal protocol FiatVCDelegate: class {
func fiatVCDelegateBackTouched(sender: FiatVC)
func fiatVCDelegateCellTouched(sender: FiatVC)
}

View File

@ -0,0 +1,18 @@
//
// FiatVCViewModel.swift
// ZWallet
//
// Created by loj on 28.04.19.
// Copyright © 2019 XMR Systems LLC. All rights reserved.
//
import Foundation
internal struct FiatVCViewModel {
let currencies: [String:[String]]
init(currencies: [String:[String]]) {
self.currencies = currencies
}
}

View File

@ -0,0 +1,18 @@
//
// LanguageVCViewController.swift
// ZWallet
//
// Created by loj on 28.04.19.
// Copyright © 2019 XMR Systems LLC. All rights reserved.
//
import UIKit
class LanguageVC: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}

View File

@ -0,0 +1,17 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "RadioSelected.pdf"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
},
"properties" : {
"template-rendering-intent" : "template",
"preserves-vector-representation" : true,
"auto-scaling" : "auto"
}
}

View File

@ -0,0 +1,110 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 5.000000 5.000000 cm
10.000000 5.000000 m
10.000000 2.238576 7.761424 0.000000 5.000000 0.000000 c
2.238576 0.000000 0.000000 2.238576 0.000000 5.000000 c
0.000000 7.761424 2.238576 10.000000 5.000000 10.000000 c
7.761424 10.000000 10.000000 7.761424 10.000000 5.000000 c
h
0.278431 0.549020 0.933333 scn
f
n
Q
q
20.000000 10.000000 m
20.000000 4.477153 15.522847 0.000000 10.000000 0.000000 c
4.477152 0.000000 0.000000 4.477153 0.000000 10.000000 c
0.000000 15.522848 4.477152 20.000000 10.000000 20.000000 c
15.522847 20.000000 20.000000 15.522848 20.000000 10.000000 c
h
W*
n
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
18.500000 10.000000 m
18.500000 5.305579 14.694421 1.500000 10.000000 1.500000 c
10.000000 -1.500000 l
16.351274 -1.500000 21.500000 3.648726 21.500000 10.000000 c
18.500000 10.000000 l
h
10.000000 1.500000 m
5.305580 1.500000 1.500000 5.305579 1.500000 10.000000 c
-1.500000 10.000000 l
-1.500000 3.648726 3.648725 -1.500000 10.000000 -1.500000 c
10.000000 1.500000 l
h
1.500000 10.000000 m
1.500000 14.694420 5.305580 18.500000 10.000000 18.500000 c
10.000000 21.500000 l
3.648725 21.500000 -1.500000 16.351274 -1.500000 10.000000 c
1.500000 10.000000 l
h
10.000000 18.500000 m
14.694421 18.500000 18.500000 14.694420 18.500000 10.000000 c
21.500000 10.000000 l
21.500000 16.351274 16.351274 21.500000 10.000000 21.500000 c
10.000000 18.500000 l
h
0.278431 0.549020 0.933333 scn
f
n
Q
Q
endstream
endobj
3 0 obj
1496
endobj
4 0 obj
<< /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
/Type /Page
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000001586 00000 n
0000001609 00000 n
0000001766 00000 n
0000001840 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
1899
%%EOF

View File

@ -0,0 +1,17 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "RadioUnselected.pdf"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
},
"properties" : {
"template-rendering-intent" : "template",
"preserves-vector-representation" : true,
"auto-scaling" : "auto"
}
}

View File

@ -0,0 +1,98 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
20.000000 10.000000 m
20.000000 4.477153 15.522847 0.000000 10.000000 0.000000 c
4.477152 0.000000 0.000000 4.477153 0.000000 10.000000 c
0.000000 15.522848 4.477152 20.000000 10.000000 20.000000 c
15.522847 20.000000 20.000000 15.522848 20.000000 10.000000 c
h
W*
n
q
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
18.500000 10.000000 m
18.500000 5.305579 14.694421 1.500000 10.000000 1.500000 c
10.000000 -1.500000 l
16.351274 -1.500000 21.500000 3.648726 21.500000 10.000000 c
18.500000 10.000000 l
h
10.000000 1.500000 m
5.305580 1.500000 1.500000 5.305579 1.500000 10.000000 c
-1.500000 10.000000 l
-1.500000 3.648726 3.648725 -1.500000 10.000000 -1.500000 c
10.000000 1.500000 l
h
1.500000 10.000000 m
1.500000 14.694420 5.305580 18.500000 10.000000 18.500000 c
10.000000 21.500000 l
3.648725 21.500000 -1.500000 16.351274 -1.500000 10.000000 c
1.500000 10.000000 l
h
10.000000 18.500000 m
14.694421 18.500000 18.500000 14.694420 18.500000 10.000000 c
21.500000 10.000000 l
21.500000 16.351274 16.351274 21.500000 10.000000 21.500000 c
10.000000 18.500000 l
h
0.741176 0.741176 0.741176 scn
f
n
Q
Q
endstream
endobj
3 0 obj
1146
endobj
4 0 obj
<< /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
/Type /Page
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000001236 00000 n
0000001259 00000 n
0000001416 00000 n
0000001490 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
1549
%%EOF