iOS zxing scanner, iOS localization
@@ -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"
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
12
android/app/src/main/res/drawable/launch_background.xml
Normal 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>
|
||||||
@@ -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.
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
|
|||||||
@@ -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">
|
||||||
После запуска приложения вы окажетесь на странице регистрации магазина.
|
После запуска приложения вы окажетесь на странице регистрации магазина.
|
||||||
|
|
||||||
|
|||||||
@@ -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">
|
||||||
Після запуску програми ви опинитеся на сторінці реєстрації магазина.
|
Після запуску програми ви опинитеся на сторінці реєстрації магазина.
|
||||||
|
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)";
|
||||||
|
|||||||
BIN
ios/Runner.xcodeproj/project.xcworkspace/xcuserdata/kifio.xcuserdatad/UserInterfaceState.xcuserstate
generated
Normal 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>
|
||||||
@@ -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"
|
||||||
|
|||||||
@@ -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]) {
|
||||||
|
|||||||
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 564 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
23
ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
vendored
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
vendored
Normal file
|
After Width: | Height: | Size: 68 B |
BIN
ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 68 B |
BIN
ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 68 B |
@@ -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"
|
|
||||||
|
|||||||
@@ -1,28 +1,11 @@
|
|||||||
//
|
|
||||||
// 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
|
||||||
case en
|
case en
|
||||||
}
|
}
|
||||||
|
|
||||||
enum ButtonState {
|
enum ButtonState {
|
||||||
@@ -32,25 +15,29 @@ extension ZBarSymbolSet: Sequence {
|
|||||||
var icon: UIImage {
|
var icon: UIImage {
|
||||||
|
|
||||||
switch self {
|
switch self {
|
||||||
case .card: return UIImage(named: "card")!
|
case .card: return UIImage(named: "card")!
|
||||||
case .phone: return UIImage(named: "phone")!
|
case .phone: return UIImage(named: "phone")!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var searchType: String {
|
var searchType: String {
|
||||||
switch self {
|
switch self {
|
||||||
case .card: return "card"
|
case .card: return "card"
|
||||||
case .phone: return "phone"
|
case .phone: return "phone"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
}
|
}
|
||||||
@@ -167,8 +123,8 @@ extension ZBarSymbolSet: Sequence {
|
|||||||
func buttonTouch(){
|
func buttonTouch(){
|
||||||
|
|
||||||
switch self.buttonState {
|
switch self.buttonState {
|
||||||
case .card: self.buttonState = .phone
|
case .card: self.buttonState = .phone
|
||||||
case .phone: self.buttonState = .card
|
case .phone: self.buttonState = .card
|
||||||
}
|
}
|
||||||
settingButton.setImage(self.buttonState.icon, for: .normal)
|
settingButton.setImage(self.buttonState.icon, for: .normal)
|
||||||
textField.placeholder = self.getInputHint()
|
textField.placeholder = self.getInputHint()
|
||||||
@@ -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()
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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())
|
||||||
));
|
));
|
||||||
|
|
||||||
menuItemList.add(new PopupMenuItem(
|
if (Theme.of(context).platform != TargetPlatform.iOS) {
|
||||||
value: 2,
|
menuItemList.add(new PopupMenuItem(
|
||||||
child: getMenuItem(exit_png, StringsLocalization.exit())
|
value: 2,
|
||||||
));
|
child: getMenuItem(exit_png, StringsLocalization.exit())
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
return <Widget>[
|
return <Widget>[
|
||||||
new PopupMenuButton<int>(
|
new PopupMenuButton<int>(
|
||||||
@@ -87,7 +89,7 @@ abstract class BaseState<T extends StatefulWidget> extends State<T> {
|
|||||||
void onOptionsItemClick(int index) {
|
void onOptionsItemClick(int index) {
|
||||||
switch (index) {
|
switch (index) {
|
||||||
case 0: {
|
case 0: {
|
||||||
pushRoute(context, new SettingsScreen(helper, app, false));
|
pushRoute(context, new SettingsScreen(helper, app, false));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 1: {
|
case 1: {
|
||||||
|
|||||||
@@ -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()
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||