iOS zxing scanner, iOS localization

This commit is contained in:
Ivan Murashov
2018-02-09 23:13:47 +03:00
parent 6068b7e3b2
commit 90bf053c7e
45 changed files with 348 additions and 314 deletions

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dinect.checker" package="com.dinect.checker"
android:versionCode="3" android:versionCode="5"
android:versionName="1.1.5"> android:versionName="1.1.7">
<uses-sdk <uses-sdk
android:minSdkVersion="16" android:minSdkVersion="16"

View File

@@ -138,7 +138,7 @@ public class MainActivity extends FlutterActivity {
} }
} }
setLocale((String) mScannerArgs.get("locale")); setLocale((String) mScannerArgs.get("localeCode"));
startActivityForResult(cameraIntent, START_SCANNER_REQUEST_CODE); startActivityForResult(cameraIntent, START_SCANNER_REQUEST_CODE);
} }

View File

@@ -0,0 +1,14 @@
package com.kifio.checker.checker;
import android.os.Bundle;
import io.flutter.app.FlutterActivity;
import io.flutter.plugins.GeneratedPluginRegistrant;
public class MainActivity extends FlutterActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);
}
}

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

View File

@@ -65,6 +65,10 @@
<string name="nominative_euro">Euro</string> <string name="nominative_euro">Euro</string>
<string name="singular_euro">Euro</string> <string name="singular_euro">Euro</string>
<string name="plural_euro">Euro</string> <string name="plural_euro">Euro</string>
<string name="user_card_not_found">User with card number %@ not found</string>
<string name="user_phone_not_found">User with phone number %@ not found</string>
<string name="error">Error</string>
<string name="dismiss">Dismiss</string>
<string name="registration_guide"> <string name="registration_guide">
Store log in screen is the first thing you will see after starting the application. Store log in screen is the first thing you will see after starting the application.

View File

@@ -54,6 +54,10 @@
<string name="nominative_euro">Euro</string> <string name="nominative_euro">Euro</string>
<string name="singular_euro">Euro</string> <string name="singular_euro">Euro</string>
<string name="plural_euro">Euro</string> <string name="plural_euro">Euro</string>
<string name="user_card_not_found">User with card number %@ not found</string>
<string name="user_phone_not_found">User with phone number %@ not found</string>
<string name="error">Error</string>
<string name="dismiss">Dismiss</string>
<string name="registration_guide"> <string name="registration_guide">
Store log in screen is the first thing you will see after starting the application. Store log in screen is the first thing you will see after starting the application.

View File

@@ -47,7 +47,7 @@
<string name="settings">Настройки</string> <string name="settings">Настройки</string>
<string name="help">Справка</string> <string name="help">Справка</string>
<string name="exit">Закрыть приложение</string> <string name="exit">Закрыть приложение</string>
<string name="logout">Выйти из аккаунта</string> <string name="logout">Отозвать токен</string>
<string name="currency">Валюта</string> <string name="currency">Валюта</string>
<string name="locale">Язык</string> <string name="locale">Язык</string>
<string name="nominative_ruble">Рубль</string> <string name="nominative_ruble">Рубль</string>
@@ -65,7 +65,10 @@
<string name="nominative_euro">Евро</string> <string name="nominative_euro">Евро</string>
<string name="singular_euro">Евро</string> <string name="singular_euro">Евро</string>
<string name="plural_euro">Евро</string> <string name="plural_euro">Евро</string>
<string name="user_card_not_found">Пользователь с номером карты %@ не найден</string>
<string name="user_phone_not_found">Пользователь с номером телефона %@ не найден</string>
<string name="error">Ошибка</string>
<string name="dismiss">Скрыть</string>
<string name="registration_guide"> <string name="registration_guide">
После запуска приложения вы окажетесь на странице регистрации магазина. После запуска приложения вы окажетесь на странице регистрации магазина.

View File

@@ -64,6 +64,10 @@
<string name="nominative_euro">Євро</string> <string name="nominative_euro">Євро</string>
<string name="singular_euro">Євро</string> <string name="singular_euro">Євро</string>
<string name="plural_euro">Євро</string> <string name="plural_euro">Євро</string>
<string name="user_card_not_found">User with card number %@ not found</string>
<string name="user_phone_not_found">User with phone number %@ not found</string>
<string name="error">Error</string>
<string name="dismiss">Dismiss</string>
<string name="registration_guide"> <string name="registration_guide">
Після запуску програми ви опинитеся на сторінці реєстрації магазина. Після запуску програми ви опинитеся на сторінці реєстрації магазина.

Binary file not shown.

View File

@@ -1,6 +1,6 @@
# Uncomment this line to define a global platform for your project # Uncomment this line to define a global platform for your project
# platform :ios, '9.0' # platform :ios, '9.0'
pod 'ZXingObjC', '~> 3.2.1' pod 'ZXingObjC', '~> 3.2.2'
if ENV['FLUTTER_FRAMEWORK_DIR'] == nil if ENV['FLUTTER_FRAMEWORK_DIR'] == nil
abort('Please set FLUTTER_FRAMEWORK_DIR to the directory containing Flutter.framework') abort('Please set FLUTTER_FRAMEWORK_DIR to the directory containing Flutter.framework')

View File

@@ -19,7 +19,7 @@ DEPENDENCIES:
- image_picker (from `/Users/kifio/.pub-cache/hosted/pub.dartlang.org/image_picker-0.1.5/ios`) - image_picker (from `/Users/kifio/.pub-cache/hosted/pub.dartlang.org/image_picker-0.1.5/ios`)
- path_provider (from `/Users/kifio/.pub-cache/hosted/pub.dartlang.org/path_provider-0.2.2/ios`) - path_provider (from `/Users/kifio/.pub-cache/hosted/pub.dartlang.org/path_provider-0.2.2/ios`)
- sqflite (from `/Users/kifio/.pub-cache/hosted/pub.dartlang.org/sqflite-0.6.2+2/ios`) - sqflite (from `/Users/kifio/.pub-cache/hosted/pub.dartlang.org/sqflite-0.6.2+2/ios`)
- ZXingObjC (~> 3.2.1) - ZXingObjC (~> 3.2.2)
EXTERNAL SOURCES: EXTERNAL SOURCES:
Flutter: Flutter:
@@ -39,6 +39,6 @@ SPEC CHECKSUMS:
sqflite: edb0e4df7640c26fea6a107c21ed1542219e761a sqflite: edb0e4df7640c26fea6a107c21ed1542219e761a
ZXingObjC: 2c95a0dc52daac69b23ec78fad8fa2fec05f8981 ZXingObjC: 2c95a0dc52daac69b23ec78fad8fa2fec05f8981
PODFILE CHECKSUM: 6ff82960897df72ab1735b87f4a4feb0f254f399 PODFILE CHECKSUM: 9f4cf0c4c102f6176b37e2c4c913e0544612cec5
COCOAPODS: 1.4.0 COCOAPODS: 1.4.0

View File

@@ -21,21 +21,15 @@
ACE861361F9F745B006FEF38 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBA9BB311F1792570053B6EA /* AVFoundation.framework */; }; ACE861361F9F745B006FEF38 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBA9BB311F1792570053B6EA /* AVFoundation.framework */; };
ACE861371F9F745B006FEF38 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; ACE861371F9F745B006FEF38 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
ACE861381F9F745B006FEF38 /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; ACE861381F9F745B006FEF38 /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
ACE861391F9F745B006FEF38 /* libzbar.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ACE103AB1F8FCC6000D17794 /* libzbar.a */; };
ACE8613A1F9F745B006FEF38 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 28B464359F9DDCC3EF756D7D /* libPods-Runner.a */; }; ACE8613A1F9F745B006FEF38 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 28B464359F9DDCC3EF756D7D /* libPods-Runner.a */; };
ACE8613B1F9F745B006FEF38 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AC45BF661F9E3F97009713E2 /* libPods-Runner.a */; }; ACE8613B1F9F745B006FEF38 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AC45BF661F9E3F97009713E2 /* libPods-Runner.a */; };
ACE8613C1F9F745B006FEF38 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AC45BF661F9E3F97009713E2 /* libPods-Runner.a */; };
ACE8613E1F9F745B006FEF38 /* app.flx in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB71CF902C7004384FC /* app.flx */; }; ACE8613E1F9F745B006FEF38 /* app.flx in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB71CF902C7004384FC /* app.flx */; };
ACE8613F1F9F745B006FEF38 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; ACE8613F1F9F745B006FEF38 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
ACE861401F9F745B006FEF38 /* Generated.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB31CF90195004384FC /* Generated.xcconfig */; };
ACE861411F9F745B006FEF38 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; ACE861411F9F745B006FEF38 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
ACE861421F9F745B006FEF38 /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; };
ACE861431F9F745B006FEF38 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; ACE861431F9F745B006FEF38 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
ACE861441F9F745B006FEF38 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; ACE861441F9F745B006FEF38 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
ACE861461F9F745B006FEF38 /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; ACE861461F9F745B006FEF38 /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
ACE861471F9F745B006FEF38 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; ACE861471F9F745B006FEF38 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
AFFEFA1AD31BC8D9EA04CFCB /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AC45BF661F9E3F97009713E2 /* libPods-Runner.a */; };
BAE7FF4D875B996672385844 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AC45BF661F9E3F97009713E2 /* libPods-Runner.a */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */ /* Begin PBXCopyFilesBuildPhase section */
@@ -64,10 +58,10 @@
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
28B464359F9DDCC3EF756D7D /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 28B464359F9DDCC3EF756D7D /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; };
32DA147B1FBC3DCE008F0388 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; }; 32DA147B1FBC3DCE008F0388 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; }; 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; };
@@ -85,27 +79,6 @@
AC45BF661F9E3F97009713E2 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; }; AC45BF661F9E3F97009713E2 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
AC45BF911F9E408E009713E2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = /Users/ntrlab/semyon/apps/checker/ios/Runner/Info.plist; sourceTree = "<absolute>"; }; AC45BF911F9E408E009713E2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = /Users/ntrlab/semyon/apps/checker/ios/Runner/Info.plist; sourceTree = "<absolute>"; };
AC73A4241F9F7F920026EBA4 /* Dinect.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Dinect.plist; path = /Users/ntrlab/semyon/apps/checker/ios/Runner/Dinect.plist; sourceTree = "<absolute>"; }; AC73A4241F9F7F920026EBA4 /* Dinect.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Dinect.plist; path = /Users/ntrlab/semyon/apps/checker/ios/Runner/Dinect.plist; sourceTree = "<absolute>"; };
ACE103AB1F8FCC6000D17794 /* libzbar.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzbar.a; path = ZBarSDK/libzbar.a; sourceTree = "<group>"; };
ACE103AD1F8FCC6F00D17794 /* zbar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = zbar.h; path = ZBarSDK/Headers/zbar.h; sourceTree = "<group>"; };
ACE103AE1F8FCC6F00D17794 /* ZBarCaptureReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ZBarCaptureReader.h; path = ZBarSDK/Headers/ZBarCaptureReader.h; sourceTree = "<group>"; };
ACE103AF1F8FCC6F00D17794 /* ZBarReaderViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ZBarReaderViewController.h; path = ZBarSDK/Headers/ZBarReaderViewController.h; sourceTree = "<group>"; };
ACE103B01F8FCC6F00D17794 /* ZBarImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ZBarImage.h; path = ZBarSDK/Headers/ZBarImage.h; sourceTree = "<group>"; };
ACE103B11F8FCC7000D17794 /* ZBarCameraSimulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ZBarCameraSimulator.h; path = ZBarSDK/Headers/ZBarCameraSimulator.h; sourceTree = "<group>"; };
ACE103B21F8FCC7000D17794 /* ZBarReaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ZBarReaderView.h; path = ZBarSDK/Headers/ZBarReaderView.h; sourceTree = "<group>"; };
ACE103B31F8FCC7000D17794 /* ZBarSDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ZBarSDK.h; path = ZBarSDK/Headers/ZBarSDK.h; sourceTree = "<group>"; };
ACE103B41F8FCC7000D17794 /* ZBarHelpController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ZBarHelpController.h; path = ZBarSDK/Headers/ZBarHelpController.h; sourceTree = "<group>"; };
ACE103B51F8FCC7000D17794 /* ZBarImageScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ZBarImageScanner.h; path = ZBarSDK/Headers/ZBarImageScanner.h; sourceTree = "<group>"; };
ACE103B61F8FCC7100D17794 /* ZBarReaderController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ZBarReaderController.h; path = ZBarSDK/Headers/ZBarReaderController.h; sourceTree = "<group>"; };
ACE103B71F8FCC7100D17794 /* ZBarSymbol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ZBarSymbol.h; path = ZBarSDK/Headers/ZBarSymbol.h; sourceTree = "<group>"; };
ACE103BE1F8FCD1400D17794 /* Window.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Window.h; path = ZBarSDK/Headers/zbar/Window.h; sourceTree = "<group>"; };
ACE103BF1F8FCD1500D17794 /* Decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Decoder.h; path = ZBarSDK/Headers/zbar/Decoder.h; sourceTree = "<group>"; };
ACE103C01F8FCD1500D17794 /* Processor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Processor.h; path = ZBarSDK/Headers/zbar/Processor.h; sourceTree = "<group>"; };
ACE103C11F8FCD1500D17794 /* Exception.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Exception.h; path = ZBarSDK/Headers/zbar/Exception.h; sourceTree = "<group>"; };
ACE103C21F8FCD1500D17794 /* Symbol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Symbol.h; path = ZBarSDK/Headers/zbar/Symbol.h; sourceTree = "<group>"; };
ACE103C31F8FCD1500D17794 /* Image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Image.h; path = ZBarSDK/Headers/zbar/Image.h; sourceTree = "<group>"; };
ACE103C41F8FCD1500D17794 /* Video.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Video.h; path = ZBarSDK/Headers/zbar/Video.h; sourceTree = "<group>"; };
ACE103C51F8FCD1500D17794 /* ImageScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ImageScanner.h; path = ZBarSDK/Headers/zbar/ImageScanner.h; sourceTree = "<group>"; };
ACE103C61F8FCD1500D17794 /* Scanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Scanner.h; path = ZBarSDK/Headers/zbar/Scanner.h; sourceTree = "<group>"; };
ACE861531F9F745B006FEF38 /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; ACE861531F9F745B006FEF38 /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
BBA9BAFD1F176DD10053B6EA /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; }; BBA9BAFD1F176DD10053B6EA /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
BBA9BAFE1F176DD10053B6EA /* ScannerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScannerViewController.swift; sourceTree = "<group>"; }; BBA9BAFE1F176DD10053B6EA /* ScannerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScannerViewController.swift; sourceTree = "<group>"; };
@@ -132,12 +105,8 @@
ACE861361F9F745B006FEF38 /* AVFoundation.framework in Frameworks */, ACE861361F9F745B006FEF38 /* AVFoundation.framework in Frameworks */,
ACE861371F9F745B006FEF38 /* Flutter.framework in Frameworks */, ACE861371F9F745B006FEF38 /* Flutter.framework in Frameworks */,
ACE861381F9F745B006FEF38 /* App.framework in Frameworks */, ACE861381F9F745B006FEF38 /* App.framework in Frameworks */,
ACE861391F9F745B006FEF38 /* libzbar.a in Frameworks */,
ACE8613A1F9F745B006FEF38 /* libPods-Runner.a in Frameworks */, ACE8613A1F9F745B006FEF38 /* libPods-Runner.a in Frameworks */,
ACE8613B1F9F745B006FEF38 /* libPods-Runner.a in Frameworks */, ACE8613B1F9F745B006FEF38 /* libPods-Runner.a in Frameworks */,
ACE8613C1F9F745B006FEF38 /* libPods-Runner.a in Frameworks */,
BAE7FF4D875B996672385844 /* libPods-Runner.a in Frameworks */,
AFFEFA1AD31BC8D9EA04CFCB /* libPods-Runner.a in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -169,7 +138,6 @@
97C146E51CF9000F007C117D = { 97C146E51CF9000F007C117D = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
ACE103BB1F8FCCA500D17794 /* ZBarSDK */,
9740EEB11CF90186004384FC /* Flutter */, 9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */, 97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */, 97C146EF1CF9000F007C117D /* Products */,
@@ -214,50 +182,6 @@
name = "Supporting Files"; name = "Supporting Files";
sourceTree = "<group>"; sourceTree = "<group>";
}; };
ACE103BB1F8FCCA500D17794 /* ZBarSDK */ = {
isa = PBXGroup;
children = (
ACE103AB1F8FCC6000D17794 /* libzbar.a */,
ACE103BC1F8FCCD000D17794 /* Headers */,
);
name = ZBarSDK;
sourceTree = "<group>";
};
ACE103BC1F8FCCD000D17794 /* Headers */ = {
isa = PBXGroup;
children = (
ACE103BD1F8FCCF300D17794 /* zbar */,
ACE103AD1F8FCC6F00D17794 /* zbar.h */,
ACE103AE1F8FCC6F00D17794 /* ZBarCaptureReader.h */,
ACE103AF1F8FCC6F00D17794 /* ZBarReaderViewController.h */,
ACE103B31F8FCC7000D17794 /* ZBarSDK.h */,
ACE103B71F8FCC7100D17794 /* ZBarSymbol.h */,
ACE103B11F8FCC7000D17794 /* ZBarCameraSimulator.h */,
ACE103B41F8FCC7000D17794 /* ZBarHelpController.h */,
ACE103B01F8FCC6F00D17794 /* ZBarImage.h */,
ACE103B51F8FCC7000D17794 /* ZBarImageScanner.h */,
ACE103B61F8FCC7100D17794 /* ZBarReaderController.h */,
ACE103B21F8FCC7000D17794 /* ZBarReaderView.h */,
);
name = Headers;
sourceTree = "<group>";
};
ACE103BD1F8FCCF300D17794 /* zbar */ = {
isa = PBXGroup;
children = (
ACE103BF1F8FCD1500D17794 /* Decoder.h */,
ACE103C11F8FCD1500D17794 /* Exception.h */,
ACE103C31F8FCD1500D17794 /* Image.h */,
ACE103C51F8FCD1500D17794 /* ImageScanner.h */,
ACE103C01F8FCD1500D17794 /* Processor.h */,
ACE103C61F8FCD1500D17794 /* Scanner.h */,
ACE103C21F8FCD1500D17794 /* Symbol.h */,
ACE103C41F8FCD1500D17794 /* Video.h */,
ACE103BE1F8FCD1400D17794 /* Window.h */,
);
name = zbar;
sourceTree = "<group>";
};
BBA9BB001F1786510053B6EA /* Frameworks */ = { BBA9BB001F1786510053B6EA /* Frameworks */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -308,7 +232,7 @@
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastSwiftUpdateCheck = 0900; LastSwiftUpdateCheck = 0900;
LastUpgradeCheck = 0830; LastUpgradeCheck = 0920;
ORGANIZATIONNAME = "The Chromium Authors"; ORGANIZATIONNAME = "The Chromium Authors";
TargetAttributes = { TargetAttributes = {
ACE861271F9F745B006FEF38 = { ACE861271F9F745B006FEF38 = {
@@ -348,9 +272,7 @@
2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */, 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */,
ACE8613E1F9F745B006FEF38 /* app.flx in Resources */, ACE8613E1F9F745B006FEF38 /* app.flx in Resources */,
ACE8613F1F9F745B006FEF38 /* LaunchScreen.storyboard in Resources */, ACE8613F1F9F745B006FEF38 /* LaunchScreen.storyboard in Resources */,
ACE861401F9F745B006FEF38 /* Generated.xcconfig in Resources */,
ACE861411F9F745B006FEF38 /* AppFrameworkInfo.plist in Resources */, ACE861411F9F745B006FEF38 /* AppFrameworkInfo.plist in Resources */,
ACE861421F9F745B006FEF38 /* Debug.xcconfig in Resources */,
ACE861431F9F745B006FEF38 /* Assets.xcassets in Resources */, ACE861431F9F745B006FEF38 /* Assets.xcassets in Resources */,
ACE861441F9F745B006FEF38 /* Main.storyboard in Resources */, ACE861441F9F745B006FEF38 /* Main.storyboard in Resources */,
); );
@@ -484,14 +406,20 @@
CLANG_CXX_LIBRARY = "libc++"; CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@@ -532,14 +460,20 @@
CLANG_CXX_LIBRARY = "libc++"; CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@@ -559,6 +493,7 @@
IPHONEOS_DEPLOYMENT_TARGET = 8.0; IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos; SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES; VALIDATE_PRODUCT = YES;
}; };
@@ -569,12 +504,6 @@
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = { buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ARCHS = (
"$(ARCHS_STANDARD)",
arm7s,
armv7,
arm64,
);
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
@@ -593,7 +522,6 @@
LIBRARY_SEARCH_PATHS = ( LIBRARY_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
"$(PROJECT_DIR)/ZBarSDK",
); );
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.dinect.checker.autoclub.app; PRODUCT_BUNDLE_IDENTIFIER = com.dinect.checker.autoclub.app;
@@ -613,12 +541,6 @@
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = { buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ARCHS = (
"$(ARCHS_STANDARD)",
arm7s,
armv7,
arm64,
);
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
@@ -637,7 +559,6 @@
LIBRARY_SEARCH_PATHS = ( LIBRARY_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
"$(PROJECT_DIR)/ZBarSDK",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.dinect.checker.autoclub.app; PRODUCT_BUNDLE_IDENTIFIER = com.dinect.checker.autoclub.app;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildLocationStyle</key>
<string>UseTargetSettings</string>
</dict>
</plist>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "0900" LastUpgradeVersion = "0920"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"

View File

@@ -1,8 +1,6 @@
#include "AppDelegate.h" #include "AppDelegate.h"
#include "GeneratedPluginRegistrant.h" #include "GeneratedPluginRegistrant.h"
#import "Autobonus-Swift.h" #import "Autobonus-Swift.h"
#import "ZBarSDK.h"
@implementation AppDelegate @implementation AppDelegate
@@ -90,14 +88,9 @@
} else if ([@"getCurrency" isEqualToString:call.method]) { } else if ([@"getCurrency" isEqualToString:call.method]) {
result(buildSettings[@"currency"]); result(buildSettings[@"currency"]);
} else if ([@"startScanner" isEqualToString:call.method]) { } else if ([@"startScanner" isEqualToString:call.method]) {
NSString *locale = call.arguments[@"locale"]; ScannerViewController *modalViewController = [[ScannerViewController alloc] initWithStrings:call.arguments];
NSLog(@"locale is %@", locale);
ScannerViewController *modalViewController = [[ScannerViewController alloc] initWithLocale:locale];
modalViewController.platformChannel = weekPlatformChannel; modalViewController.platformChannel = weekPlatformChannel;
[controller presentViewController:modalViewController animated:YES completion:nil]; [controller presentViewController:modalViewController animated:YES completion:nil];
// [weekPlatformChannel invokeMethod:(@"findUserAndPurchase") arguments: @[@"79039441628", @"phone"]];
} else if ([@"isOnline" isEqualToString:call.method]) { } else if ([@"isOnline" isEqualToString:call.method]) {
result(@YES); result(@YES);
} else if ([@"getSupportPhone" isEqualToString:call.method]) { } else if ([@"getSupportPhone" isEqualToString:call.method]) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "LaunchImage.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

View File

@@ -2,5 +2,4 @@
// Use this file to import your target's public headers that you would like to expose to Swift. // Use this file to import your target's public headers that you would like to expose to Swift.
// //
#import "ZBarSDK.h" #import "ZXingObjC/ZXingObjC.h"
#import "ZBarImageScanner.h"

View File

@@ -1,24 +1,7 @@
//
// ScannerViewController.swift
// Runner
//
// Created by Ivan Murashov on 13/07/2017.
// Copyright © 2017 The Chromium Authors. All rights reserved.
//
import UIKit import UIKit
import Flutter import Flutter
extension ZBarSymbolSet: Sequence { @objc class ScannerViewController: UIViewController, ZXCaptureDelegate, UITextFieldDelegate {
//public typealias Element = ZBarSymbol
//public typealias Iterator = NSFastEnumerationIterator
public func makeIterator() -> NSFastEnumerationIterator {
return NSFastEnumerationIterator(self)
}
}
@objc class ScannerViewController: UIViewController, ZBarReaderDelegate, UITextFieldDelegate {
enum AppLocale { enum AppLocale {
case ru case ru
@@ -45,12 +28,16 @@ extension ZBarSymbolSet: Sequence {
} }
} }
var appLocale: AppLocale // @IBOutlet weak var decodedLabel: UILabel!
private var captureSizeTransform: CGAffineTransform?
var buttonState: ButtonState = .card var buttonState: ButtonState = .card
var platformChannel: FlutterMethodChannel? var platformChannel: FlutterMethodChannel?
let readerViewController = ZBarReaderViewController()
// Квадрат для наведения на цель (надеюсь)
let scanRectView = UIView()
//Вьюшка для верхнего меню //Вьюшка для верхнего меню
let topView = UIView() let topView = UIView()
@@ -61,105 +48,74 @@ extension ZBarSymbolSet: Sequence {
//Кнопка настроек //Кнопка настроек
var settingButton: UIButton! var settingButton: UIButton!
var strings = [String:String]()
required init?(coder aDecoder: NSCoder) { required init?(coder aDecoder: NSCoder) {
self.appLocale = .en
super.init(coder: aDecoder) super.init(coder: aDecoder)
} }
init(locale: String) { init(strings: [String: String]) {
switch locale {
case "ru": self.appLocale = .ru; break
default: self.appLocale = .en
}
super.init(nibName: nil, bundle: nil) super.init(nibName: nil, bundle: nil)
} strings.forEach { (k,v) in self.strings[k] = v }
func getCardHint() -> String {
switch self.appLocale {
case .ru: return "Ввести номер карты"
default: return "Enter the barcode"
}
}
func getPhoneHint() -> String {
switch self.appLocale {
case .ru: return "Телефон 79XXXXXXXXX"
default: return "Phone 79XXXXXXXXX"
}
} }
func getInputHint() -> String { func getInputHint() -> String {
switch self.buttonState { switch self.buttonState {
case .card: return self.getCardHint() case .card: return strings["enter_manual"]!
case .phone: return self.getPhoneHint() case .phone: return strings["enter_phone"]!
}
}
func getErrorTitle() -> String {
switch self.appLocale {
case .ru: return "Ошибка"
default: return "Error"
}
}
func getCardErrorText() -> String {
switch self.appLocale {
case .ru: return "Пользователь с номером карты %@ не найден"
default: return "User with card number %@ not found"
}
}
func getPhoneErrorText() -> String {
switch self.appLocale {
case .ru: return "Пользователь с номером телефона %@ не найден"
default: return "User with phone number %@ not found"
} }
} }
func getErrorText() -> String { func getErrorText() -> String {
switch self.buttonState { switch self.buttonState {
case .card: return self.getCardErrorText() case .card: return strings["user_card_not_found"]!
case .phone: return self.getPhoneErrorText() case .phone: return strings["user_phone_not_found"]!
} }
} }
func getDismissText() -> String { let capture: ZXCapture = ZXCapture()
switch self.appLocale {
case .ru: return "Скрыть"
default: return "Dismiss"
}
}
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
capture.camera = capture.back()
readerViewController.readerDelegate = self capture.focusMode = .continuousAutoFocus
readerViewController.readerView.zoom = 1.0 view.layer.addSublayer((capture.layer)!)
readerViewController.showsZBarControls = false view.addSubview(scanRectView)
settingButton = UIButton(type: .system) settingButton = UIButton(type: .system)
settingButton.addTarget(self, action: #selector(ScannerViewController.buttonTouch), for: .touchUpInside) settingButton.addTarget(self, action: #selector(ScannerViewController.buttonTouch), for: .touchUpInside)
self.addChildViewController(readerViewController)
self.view.addSubview(readerViewController.view)
readerViewController.didMove(toParentViewController: self)
readerViewController.view.addSubview(topView)
topView.addSubview(textField) topView.addSubview(textField)
topView.addSubview(settingButton) topView.addSubview(settingButton)
view.addSubview(topView)
view.bringSubview(toFront: topView)
textField.delegate = self textField.delegate = self
//textField.keyboardType = .numberPad
//Looks for single or multiple taps.
let tap = UITapGestureRecognizer(target: self, action: #selector(ScannerViewController.hideKeyboard)) let tap = UITapGestureRecognizer(target: self, action: #selector(ScannerViewController.hideKeyboard))
readerViewController.view.addGestureRecognizer(tap) view.addGestureRecognizer(tap)
settingButton.setImage(self.buttonState.icon, for: .normal) settingButton.setImage(self.buttonState.icon, for: .normal)
textField.placeholder = self.getInputHint() textField.placeholder = self.getInputHint()
} }
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
topView.backgroundColor = UIColor.white
textField.borderStyle = .roundedRect
capture.delegate = self
applyOrientation()
}
override func viewWillLayoutSubviews() {
scanRectView.frame = view.bounds
topView.frame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: 56)
settingButton.frame = CGRect(x: 8, y: 26, width: 20, height: 20)
textField.frame = CGRect(x: settingButton.frame.maxX + 8, y: 21,
width: view.frame.size.width - settingButton.frame.maxX - 16, height: 30)
}
func hideKeyboard() { func hideKeyboard() {
view.endEditing(false) view.endEditing(false)
} }
@@ -198,53 +154,155 @@ extension ZBarSymbolSet: Sequence {
func showErrorAlert(_ str: String) { func showErrorAlert(_ str: String) {
let alertController = UIAlertController( let alertController = UIAlertController(
title: self.getErrorTitle(), title: strings["error"]!,
message: String(format: self.getErrorText(), str), message: String(format: self.getErrorText(), str),
preferredStyle: UIAlertControllerStyle.alert preferredStyle: UIAlertControllerStyle.alert
) )
alertController.addAction(UIAlertAction(title: self.getDismissText(), style: UIAlertActionStyle.default,handler: nil)) alertController.addAction(UIAlertAction(title: strings["dismiss"]!, style: UIAlertActionStyle.default,handler: nil))
// if let appDelegate = UIApplication.shared.delegate as? FlutterAppDelegate {
// appDelegate.window.rootViewController?.present(alertController, animated: true, completion: nil)
// }
self.present(alertController, animated: true, completion: nil) self.present(alertController, animated: true, completion: nil)
} }
override func viewWillAppear(_ animated: Bool) {
topView.backgroundColor = UIColor.white
textField.borderStyle = .roundedRect
super.viewWillAppear(animated)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
}
override func viewWillLayoutSubviews() {
readerViewController.view.frame = view.bounds
topView.frame = CGRect(x: 0, y: 0, width: readerViewController.view.frame.size.width, height: 40)
textField.frame = CGRect(x: settingButton.frame.maxX + 8 + 20 + 5, y: 5, width: readerViewController.view.frame.size.width - 50, height: 30)
settingButton.frame = CGRect(x: 8, y: 10, width: 20, height: 20)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
guard let symbols = info[ZBarReaderControllerResults] as? ZBarSymbolSet else { return }
for symbol in symbols {
if let symbol = symbol as? ZBarSymbol, let data = symbol.data {
sendResult(data)
}
}
}
override func didReceiveMemoryWarning() { override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning() super.didReceiveMemoryWarning()
} }
deinit {
capture.layer.removeFromSuperlayer()
}
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
coordinator.animate(alongsideTransition: {(_ context: UIViewControllerTransitionCoordinatorContext) -> Void in
}, completion: {(_ context: UIViewControllerTransitionCoordinatorContext) -> Void in
self.applyOrientation()
})
}
func applyOrientation() {
print("APPLY ORIENTATION")
let orientation: UIInterfaceOrientation = UIApplication.shared.statusBarOrientation
var scanRectRotation: Float
var captureRotation: Float
switch orientation {
case .portrait:
captureRotation = 0
scanRectRotation = 90
case .landscapeLeft:
captureRotation = 90
scanRectRotation = 180
case .landscapeRight:
captureRotation = 270
scanRectRotation = 0
case .portraitUpsideDown:
captureRotation = 180
scanRectRotation = 270
default:
captureRotation = 0
scanRectRotation = 90
}
applyRectOfInterest(orientation)
let transform = CGAffineTransform(rotationAngle: CGFloat(captureRotation / 180 * .pi))
capture.transform = transform
capture.rotation = CGFloat(scanRectRotation)
capture.layer.frame = view.frame
}
func applyRectOfInterest(_ orientation: UIInterfaceOrientation) {
var scaleVideo: CGFloat
var scaleVideoX: CGFloat
var scaleVideoY: CGFloat
var videoSizeX: CGFloat
var videoSizeY: CGFloat
var transformedVideoRect: CGRect = scanRectView.frame
videoSizeX = 720
videoSizeY = 1280
if UIInterfaceOrientationIsPortrait(orientation) {
scaleVideoX = view.frame.size.width / videoSizeX
scaleVideoY = view.frame.size.height / videoSizeY
scaleVideo = max(scaleVideoX, scaleVideoY)
if scaleVideoX > scaleVideoY {
transformedVideoRect.origin.y += (scaleVideo * videoSizeY - view.frame.size.height) / 2
}
else {
transformedVideoRect.origin.x += (scaleVideo * videoSizeX - view.frame.size.width) / 2
}
}
else {
scaleVideoX = view.frame.size.width / videoSizeY
scaleVideoY = view.frame.size.height / videoSizeX
scaleVideo = max(scaleVideoX, scaleVideoY)
if scaleVideoX > scaleVideoY {
transformedVideoRect.origin.y += (scaleVideo * videoSizeX - view.frame.size.height) / 2
}
else {
transformedVideoRect.origin.x += (scaleVideo * videoSizeY - view.frame.size.width) / 2
}
}
captureSizeTransform = CGAffineTransform(scaleX: 1 / scaleVideo, y: 1 / scaleVideo)
capture.scanRect = transformedVideoRect.applying(captureSizeTransform!)
}
// MARK: - Private Methods
func barcodeFormat(toString format: ZXBarcodeFormat) -> String {
switch format {
case kBarcodeFormatAztec:
return "Aztec"
case kBarcodeFormatCodabar:
return "CODABAR"
case kBarcodeFormatCode39:
return "Code 39"
case kBarcodeFormatCode93:
return "Code 93"
case kBarcodeFormatCode128:
return "Code 128"
case kBarcodeFormatDataMatrix:
return "Data Matrix"
case kBarcodeFormatEan8:
return "EAN-8"
case kBarcodeFormatEan13:
return "EAN-13"
case kBarcodeFormatITF:
return "ITF"
case kBarcodeFormatPDF417:
return "PDF417"
case kBarcodeFormatQRCode:
return "QR Code"
case kBarcodeFormatRSS14:
return "RSS 14"
case kBarcodeFormatRSSExpanded:
return "RSS Expanded"
case kBarcodeFormatUPCA:
return "UPCA"
case kBarcodeFormatUPCE:
return "UPCE"
case kBarcodeFormatUPCEANExtension:
return "UPC/EAN extension"
default:
return "Unknown"
}
}
// MARK: - ZXCaptureDelegate Methods
func captureResult(_ capture: ZXCapture, result: ZXResult) {
let inverse: CGAffineTransform = captureSizeTransform!.inverted()
var points = [AnyHashable]()
var location = ""
for resultPoint in result.resultPoints {
let p = resultPoint as! ZXResultPoint
let cgPoint = CGPoint(x: CGFloat(p.x), y: CGFloat(p.y))
var transformedPoint: CGPoint = cgPoint.applying(inverse)
transformedPoint = scanRectView.convert(transformedPoint, to: scanRectView.window)
let windowPointValue = NSValue(cgPoint: transformedPoint)
location = "\(location) (\(transformedPoint.x), \(transformedPoint.y))"
points.append(windowPointValue)
}
// We got a result. Display information about the result onscreen.
let formatString: String = barcodeFormat(toString: result.barcodeFormat)
sendResult(result.text)
print(result.text)
self.capture.stop()
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(2 * Double(NSEC_PER_SEC)) / Double(NSEC_PER_SEC), execute: {() -> Void in
self.capture.start()
})
}
} }

View File

@@ -69,10 +69,12 @@ abstract class BaseState<T extends StatefulWidget> extends State<T> {
child: getMenuItem(help_png, StringsLocalization.help()) child: getMenuItem(help_png, StringsLocalization.help())
)); ));
if (Theme.of(context).platform != TargetPlatform.iOS) {
menuItemList.add(new PopupMenuItem( menuItemList.add(new PopupMenuItem(
value: 2, value: 2,
child: getMenuItem(exit_png, StringsLocalization.exit()) child: getMenuItem(exit_png, StringsLocalization.exit())
)); ));
}
return <Widget>[ return <Widget>[
new PopupMenuButton<int>( new PopupMenuButton<int>(

View File

@@ -45,7 +45,7 @@ logout(BuildContext context, SqliteHelper helper) async {
helper.clear().then((result) { helper.clear().then((result) {
// helper.close().then((_) { // helper.close().then((_) {
// Navigator.of(context).pop(); // Navigator.of(context).pop();
Navigator.of(context).pop(); // Navigator.of(context).pop();
pushRouteReplacement(context, new SplashScreen()); // Запускаем регистрацию pushRouteReplacement(context, new SplashScreen()); // Запускаем регистрацию
// }); // });
}); });
@@ -165,7 +165,7 @@ startScanner(BuildContext context, String app, SqliteHelper helper) async {
'token': token, 'token': token,
'url': await platform.invokeMethod('getEndpoint'), 'url': await platform.invokeMethod('getEndpoint'),
'appToken': await platform.invokeMethod('getAppToken'), 'appToken': await platform.invokeMethod('getAppToken'),
'locale': StringsLocalization.localeCode, 'localeCode': StringsLocalization.localeCode,
'color': Resources.getPrimaryColor(app).value.toString() 'color': Resources.getPrimaryColor(app).value.toString()
}); });

View File

@@ -1,16 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:checker/screens/splash.dart'; import 'package:checker/screens/splash.dart';
import 'package:checker/consts.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
const platform = const MethodChannel('com.dinect.checker/instance_id'); const platform = const MethodChannel('com.dinect.checker/instance_id');
/// Точка входа в приложение.
///
/// some changes
void main() { void main() {
platform.invokeMethod('getAppTitle').then((title) { platform.invokeMethod('getAppTitle').then((title) {
runApp(new Checker(appName: title)); runApp(new Checker(appName: title));
@@ -22,7 +15,6 @@ class Checker extends StatelessWidget {
final String appName; final String appName;
@override Widget build (BuildContext context) { @override Widget build (BuildContext context) {
print('app name = ${appName}');
return new MaterialApp( return new MaterialApp(
title: appName, title: appName,
home: new SplashScreen() home: new SplashScreen()

View File

@@ -37,7 +37,7 @@ getDeleteTokenRequest(String token) async {
getLoyaltyRequest(String endpoint, String token) async { getLoyaltyRequest(String endpoint, String token) async {
var headers = { var headers = {
'DM-Authorization': 'dmapptoken ${await getToken()}', 'DM-Authorization': 'dmapptoken ${await getToken()}',
'Authorization': 'dmtoken ${token}', 'Authorization': 'dmtoken $token',
'Accept-Language': StringsLocalization.localeCode 'Accept-Language': StringsLocalization.localeCode
}; };
@@ -48,7 +48,7 @@ getPurchaseRequest(String endpoint, Map body, String token) async {
var headers = { var headers = {
'DM-Authorization': 'dmapptoken ${await getToken()}', 'DM-Authorization': 'dmapptoken ${await getToken()}',
'Authorization': 'dmtoken ${token}', 'Authorization': 'dmtoken $token',
'Accept-Language': StringsLocalization.localeCode 'Accept-Language': StringsLocalization.localeCode
}; };
@@ -59,7 +59,7 @@ getCouponsRequest(String endpoint, String token) async {
var headers = { var headers = {
'DM-Authorization': 'dmapptoken ${await getToken()}', 'DM-Authorization': 'dmapptoken ${await getToken()}',
'Authorization': 'dmtoken ${token}', 'Authorization': 'dmtoken $token',
'Accept-Language': StringsLocalization.localeCode 'Accept-Language': StringsLocalization.localeCode
}; };
@@ -72,7 +72,7 @@ getUserByCard(String card, String token) async {
var headers = { var headers = {
'DM-Authorization': 'dmapptoken ${await getToken()}', 'DM-Authorization': 'dmapptoken ${await getToken()}',
'Authorization': 'dmtoken ${token}', 'Authorization': 'dmtoken $token',
'Accept-Language': StringsLocalization.localeCode 'Accept-Language': StringsLocalization.localeCode
}; };
@@ -87,7 +87,7 @@ getUserByPhone(String phone, String token) async {
var headers = { var headers = {
'DM-Authorization': 'dmapptoken ${await getToken()}', 'DM-Authorization': 'dmapptoken ${await getToken()}',
'Authorization': 'dmtoken ${token}', 'Authorization': 'dmtoken $token',
'Accept-Language': StringsLocalization.localeCode 'Accept-Language': StringsLocalization.localeCode
}; };

View File

@@ -274,7 +274,7 @@ class PurchaseScreenState<T> extends BaseState<PurchaseScreen> {
if (fractionalPart.length > 2) { if (fractionalPart.length > 2) {
fractionalPart = fractionalPart.substring(0, 2); fractionalPart = fractionalPart.substring(0, 2);
} }
return '${integerPart}.${fractionalPart}'; return '$integerPart.$fractionalPart';
} catch (exception) { } catch (exception) {
print(exception); print(exception);
} }

View File

@@ -50,7 +50,7 @@ class SettingsState extends BaseState<SettingsScreen> {
menuItems[2].title = StringsLocalization.logout(); menuItems[2].title = StringsLocalization.logout();
menuItems[0].selectedValue = info['currency'].toString(); menuItems[0].selectedValue = info['currency'].toString();
menuItems[1].selectedValue = menuItems[1].selectedValue =
info['locale'] == null ? StringsLocalization.locale() : info['locale']; info['locale'] == null ? StringsLocalization.localeCode : info['locale'];
menuItems[2].selectedValue = menuItems[2].selectedValue =
info['token'] == null ? '' : getTokenSuffix(info['token']); info['token'] == null ? '' : getTokenSuffix(info['token']);
}); });
@@ -83,6 +83,7 @@ class SettingsState extends BaseState<SettingsScreen> {
List<Widget> widgets = new List(); List<Widget> widgets = new List();
for (int i = 0; i < menuItems.length; i++) { for (int i = 0; i < menuItems.length; i++) {
if (menuItems[i].selectedValue.toString() != '') { if (menuItems[i].selectedValue.toString() != '') {
print('title : ${menuItems[i].title}');
widgets.add( widgets.add(
getSettingsItem(() => onPressed(menuItems.indexOf(menuItems[i])), getSettingsItem(() => onPressed(menuItems.indexOf(menuItems[i])),
menuItems[i].title, menuItems[i].title,
@@ -97,6 +98,7 @@ class SettingsState extends BaseState<SettingsScreen> {
case 0 : case 0 :
return getCurrencyTitle(int.parse(menuItems[position].selectedValue)); return getCurrencyTitle(int.parse(menuItems[position].selectedValue));
case 1 : case 1 :
print('val : ${menuItems[position].selectedValue}');
return getLocaleTitle(menuItems[position].selectedValue); return getLocaleTitle(menuItems[position].selectedValue);
default : default :
return null; return null;

View File

@@ -52,9 +52,6 @@ class _SplashScreenState extends BaseState<SplashScreen> {
helper.getSettings(false).then((settings) { helper.getSettings(false).then((settings) {
if (settings == null) { if (settings == null) {
createSettingsTable(locale); createSettingsTable(locale);
StringsLocalization.load(locale).then((locale) {
print(locale);
});
} else { } else {
initLocale(locale, () { initLocale(locale, () {
showNext(); showNext();

View File

@@ -8,17 +8,15 @@ class StringsLocalization {
static String localeCode; static String localeCode;
static Map<String, String> strings = new Map<String, String>(); static Map<String, String> strings = new Map<String, String>();
static Future load(String locale) async { static Future load(String l) async {
localeCode = locale; localeCode = l;
var document = xml.parse(await loadStrings(l));
var document = xml.parse(await loadStrings(locale));
strings.clear(); strings.clear();
document.findAllElements('string').forEach((node) { document.findAllElements('string').forEach((node) {
print("${node.attributes} : ${node.text.toString()}");
strings[node.attributes[0].value] = node.text.toString(); strings[node.attributes[0].value] = node.text.toString();
}); });
return strings; return strings;
} }
static Future<String> loadStrings(String locale) async { static Future<String> loadStrings(String locale) async {