From ef7d903144226bbc48e52bf3f08010f370a8a6ad Mon Sep 17 00:00:00 2001 From: Ivan Murashov Date: Tue, 12 Sep 2017 14:07:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=BC=D0=B5=D0=BD=D1=8E,=20=D0=BF=D0=BE=20=D0=BB?= =?UTF-8?q?=D0=BE=D0=BA=D0=B0=D0=BB=D0=B8,=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=95=D0=B2=D1=80=D0=BE=20?= =?UTF-8?q?=D0=B8=20=D0=A2=D0=B5=D0=BD=D0=B3=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/src/main/AndroidManifest.xml | 2 +- .../checker/AbstractScannerActivity.java | 20 +++- .../src/main/res/drawable-xxxhdpi/help.png | Bin 0 -> 3632 bytes .../res/drawable-xxxhdpi/help_outline.png | Bin 1766 -> 0 bytes .../res/drawable-xxxhdpi/ic_more_vert.png | Bin 0 -> 1661 bytes .../src/main/res/drawable-xxxhdpi/logout.png | Bin 1300 -> 1213 bytes .../main/res/drawable-xxxhdpi/settings.png | Bin 0 -> 2373 bytes android/app/src/main/res/menu/menu.xml | 31 ++++-- .../app/src/main/res/values-ru/strings.xml | 3 +- .../app/src/main/res/values-ua/strings.xml | 3 +- android/app/src/main/res/values/strings.xml | 3 +- android/app/src/main/res/values/styles.xml | 4 +- android/build.gradle | 2 +- lib/base/base_state.dart | 2 +- lib/common.dart | 100 +++++++++++------- lib/screens/settings.dart | 23 +++- 16 files changed, 130 insertions(+), 63 deletions(-) create mode 100644 android/app/src/main/res/drawable-xxxhdpi/help.png delete mode 100644 android/app/src/main/res/drawable-xxxhdpi/help_outline.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/ic_more_vert.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/settings.png diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index c3da8b2..590fc55 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -31,7 +31,7 @@ android:hardwareAccelerated="true" android:launchMode="singleTop" android:screenOrientation="portrait" - android:theme="@android:style/Theme.Black.NoTitleBar" + android:theme="@android:style/Theme.Light.NoTitleBar" android:windowSoftInputMode="adjustResize"> diff --git a/android/app/src/main/java/com/dinect/checker/AbstractScannerActivity.java b/android/app/src/main/java/com/dinect/checker/AbstractScannerActivity.java index 6e2a1ff..9356c71 100644 --- a/android/app/src/main/java/com/dinect/checker/AbstractScannerActivity.java +++ b/android/app/src/main/java/com/dinect/checker/AbstractScannerActivity.java @@ -27,7 +27,6 @@ import android.os.Handler; import android.support.annotation.NonNull; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.util.Log; import android.util.Pair; import android.view.LayoutInflater; @@ -38,6 +37,7 @@ import android.view.Window; import android.widget.FrameLayout; import android.widget.Toast; import android.widget.TextView; +import android.support.v7.widget.Toolbar; import com.dinect.checker.net.ApiClient; @@ -45,6 +45,8 @@ import java.util.Queue; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.atomic.AtomicInteger; +import static android.app.Activity.RESULT_OK; + /** * Created by anonymous @@ -297,9 +299,23 @@ public abstract class AbstractScannerActivity extends AppCompatActivity { return true; } + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + menu.findItem(R.id.settings).setIcon(getResources().getDrawable(R.drawable.settings)); + menu.findItem(R.id.faq).setIcon(getResources().getDrawable(R.drawable.help)); + menu.findItem(R.id.logout).setIcon(getResources().getDrawable(R.drawable.logout)); + return super.onPrepareOptionsMenu(menu); + } + @Override public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == R.id.logout) { + if (item.getItemId() == R.id.settings) { + final Intent intent = new Intent(); + intent.putExtra("item", "settings"); + setResult(RESULT_OK, intent); + finish(); + return true; + } else if (item.getItemId() == R.id.logout) { logoutDialog = LogoutDialogFragment.newInstance(mColor); logoutDialog.show(getFragmentManager(), "logout"); return true; diff --git a/android/app/src/main/res/drawable-xxxhdpi/help.png b/android/app/src/main/res/drawable-xxxhdpi/help.png new file mode 100644 index 0000000000000000000000000000000000000000..5d7029a5a6647403b1e30b0542b651e605d3d062 GIT binary patch literal 3632 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 Q>a75V_eQU(wd{<)0hjLmi~s-t literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/logout.png b/android/app/src/main/res/drawable-xxxhdpi/logout.png index 83b23bb6bb28288ea7e97d39d07fb80ee2b8d074..2f7918159c05fb5d3383ba390255d40cd78d78e3 100644 GIT binary patch literal 1213 zcmV;u1Va0XP)hA1R=*_Hb)}5Yyd%EkLoqp#0c0FCsuionFsp={N z{!|?>s_GO60Vp>D0w4fo2bATR0R*7zfU-O@fB=*oP?l!~5P-4+%JR&B%?@CCwsD|Y zu%`>w9=9-~0EU(8l&QP{-dZ34aJ_)$?~}g2(2HQ=45(BpTXyc<_mj0a3!vD`O>EX{ z+c3T>``*t<>yQY*WowJxpN-4L;$%|cLAuTY7Z3X07fI@r2tai%_z@Q0CJ`LqYraX6 z31R@X`d{NMv>pT4I>2U%tG3b|+2TZbV)U8hVljYfJ@^&CR}zsN#r{(Ey>pWK$^py< zGcfp6B9f!nCuQF|AgQkyz@vKb#sVdYNRDFPlzs0bNqxlts`a1+be>6DUN-wt!fVM* zY?|1&*ikIn=Mnd7%f45T)F%l58zr#3)r=e(8yiRf4;qaf#U=YHs{Uo)6L~5M4uz}r zfB+&05P&5Ag|W;4p33he*jD=I-Bkk|(}d6$0Ad-C zK~Sw$+uj=9eht9USjA`19pxH8X!^{|%*Ttx;Tr&sXh6t4fY9`N^YfpSTILUHao9Bk z0%$wlHsU6L&s{5>#{luxdv8A3)$|svGy5F1D-ThuRTOEf)adJ~Y#gV;7XR zqr&nCKxkOn;RKMjqr&nCKxkOn;RKMjqr&p~1pv3L>*6SXoorov!2)L_l=Bj649-uDdtXcHE6xCJU%#=v&bF@)<#~X^h7jBw;1Ejl z2$TNi7p*#TvFW&i;wJD@Dj3?Kky2bATR0R*7z bfU^9*Hie*$BIC5x00000NkvXXu0mjf9$`9c literal 1300 zcmV+v1?&2WP)<5DFwZf_=3f!fmZHB_1dH8a<^yeql$?m{6Va2A4CYv4 z=Cj&4=AeiOG~z>nR%q9;&&=Ce;gDPe$RN7O%+Q*ub`He>`BF8St}~9)rcQKTDgy+< zI6|*W#`gQnptvLR?E*Dqyv{vler8#`i0n8UlIphF!mbQZLTA*n<`P-;21Eq*?QLd~ zZDz(ksvEmo23itpzj1>Qk=3%}cDR!m_kfwR#(dd8uwFoc8soMJwXa09UTV?ZwfQbG z_8BwZN`2NTfDBNMiRfWqanO*JQXs>48C&p(nKA!Dn+nJP1;^rcU|nWo7}*^Bo?j7- z2;LSV@|lS4RT~HW0AK)jVRwKck-p6gmx#o`?=mxPmGdSdpNQzbem_kmXX}AYi9v~~ zwsjdI5<8+HD6#cer!A2`W#-lYP)6t&twT-uLqyk0K68UUN6fs@BNUCJ)?oh&L%{vm zfJfXN6f9Ll9uU!cBD$8?{ZAsotNU*QLdU*q&?OWH1}}CP=o^VmBVL0Gp*mdP&(STE zDZz9NWhyY;L$QEi=Cua)W%eNK%6W@z$_2r4Hl~TgnS!$5ZI*ro5rH8L8BEh03NURV zZz2K<9*TR+9GOxOL%&SC#{9m@fI;9I`>ATs6aXZ7;h>GMN8nS$z2*K%Pb=59?BF&L|sFf zs)(ptC{q>@bqQtaBBEZQOj<-#4aL>BJaxXzP`X*{r1ellR0Snc@KcqGQ4|r)vUnxF zk+z7a7D}wdq8LmfQr9HhpeZ7%g%S%$<3kpKNz}452{$?;o-87&g_1LfW-y7AOS6ze zu861>3gV;Kc(Z(O4|%96C@##dwTxL32dr8=@%1|V0hiDVe+@|UF{V`{S!%^o!+<$#$#y|n`>G<$@SbHJ?o zw8$@1HuPdsaCGpxz33#^7}j}-W_Oz6r8AJiu%t0U8UaTxmq`0aL@yG*-iTFJHA~3n ziioN`S`VtGC^-9m>7j_I36z$<&FP_ts2YkAi0Y?t&NH68h^PumCXzLrEHw}ZW%44T zS}3t1!XhA^eVVk0s1{1<2TLXm8DC|Y0z!)~q>-I_LexTuRaRC3@s80XMMSkwLII{G zu~ZMt(u;_ypm+<%jR6CR|Hr^mMX6Ekr56!ZLs9Ljkkq^0u!0000< KMNUMnLSTXkYETIP diff --git a/android/app/src/main/res/drawable-xxxhdpi/settings.png b/android/app/src/main/res/drawable-xxxhdpi/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..1e19365d61f0a0e948320f870109338749f2b274 GIT binary patch literal 2373 zcmV-L3A*-)P)49P41Iq{oJg8i?FcAXb}xWtNnZDvhMty$B^9PB3FzwT zTJ6-WJ^@I3Pho9*Y;9|6>zLH&NdT)#0`k56t;9}If`79ROj?ysUq1_4M%lx(#l4p7bOt+aEo1PGopCfeGwi_lZbUnb^;DDIu zx}1^h@QX8FJ~ROb4jibdU*Av!qh$_w1&sY5-aYcd^N(-cx^;3fLpzU@-lb{uBLMFS z>yTjkziFi1+L~_q>tga#zPe_p+m>kIkl5NWbo$zXkNxjzRw^$q9yQ^R$c$kT2FN8Xlz#tu z&)9+i9tP;melZEyl{NGm{k98Dz^Qbx^R(w;P%D;qy9$%m7IdXGa1Sh4_Fn*0-K%{} zTs~zQ`j#NN0})WPN>?-J(I5&}Y8wJylQmM0`Ss5?0S5;M&pmf+ya&LgewD3o`D3rF zuFG8B(C~^MKYbHW=q=w4<~#f-IcsEz?l9BI@A&c87XcmJX$z6%qO@9VpQ9L>#qgxiQ3vBKn-HD^n% zx%p`kzl4Ix%v!OxzZ2lB2N@PQ@5CN|8&S!01tHJL8Z1!nP z0CC!zO*dU9GKqboxjWnzOC7x%rtOb_XWFRhBQ6E~H6%7zFndUf63Cb%_SiR5PeDH$}y`^SqQ% zz<82tczZ6DdNHUyp$Kr5KE|9#_4VHc=3B$PjnZDzNJcrg%*Lo-l^+T@Av+-YeyO?X zwyTLML4)tM3r)c6ykObxte*^O3^Q%dWs+{H8~Ih}DQ^d{`+gAgDw~F`2W>pJolF9T z!@MUrlSqlCZeblS94V)uvAdfi=rv**y2wrtPkfmKj033k)VQ#KGxEYP0NZ7csd@5j2K6?P9eQAvmPfV%&6~Vp)vKTjd)Ge7F4N zXd2V-+NSvjIRyKJr`Ytti*pW3S%^Db+c<;1nlqC3c^WZKz*ic&oIl8PcX!uLB7M_lJt3E${hA>6qkO@#m-Dt1_ub;% zej_MBUf#Bpf@Qm>8$CA}Nicc=h+rGDFyY(`#w`&{xT0CKw9j>*v&U}JfM10zTUj{LeL)(&G7v>7s(xeTgVQKdQS~D?9|S~@imG23`iTFO zsQQ_w--t<;FZPr^z(hZj@jF{${!%uR`jcc6rNC9)T96d4mJx^|AZD@@0g8Z_BM`HC rH3Ad?F-IU~^=bqt0%DFp% - + - + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/values-ru/strings.xml b/android/app/src/main/res/values-ru/strings.xml index d203e90..dae7ebe 100644 --- a/android/app/src/main/res/values-ru/strings.xml +++ b/android/app/src/main/res/values-ru/strings.xml @@ -2,8 +2,9 @@ AutoBonus Сканер карты Сканировать - FAQ + Справка Выход + Настройки Подтверждение Вы действительно хотите выйти и ввести другой номер магазина? Да diff --git a/android/app/src/main/res/values-ua/strings.xml b/android/app/src/main/res/values-ua/strings.xml index bd673a5..abd3168 100644 --- a/android/app/src/main/res/values-ua/strings.xml +++ b/android/app/src/main/res/values-ua/strings.xml @@ -2,8 +2,9 @@ AutoBonus Сканер карти Сканувати - FAQ + Допомога Вихід + Налаштування Підтвердження Ви дійсно хочете вийти і ввести інший номер магазину? Так diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index bc190eb..99d4eca 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -2,8 +2,9 @@ AutoBonus Card Scanner Scan - FAQ + Help Logout + Settings Сonfirmation Do you really want to log out and enter a different store number? Yes diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index e36e3aa..e491f12 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -1,6 +1,8 @@ - diff --git a/android/build.gradle b/android/build.gradle index f5004b9..ebe4957 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -4,7 +4,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:2.2.3' + classpath 'com.android.tools.build:gradle:2.3.3' } } diff --git a/lib/base/base_state.dart b/lib/base/base_state.dart index 38f18bd..7e793de 100644 --- a/lib/base/base_state.dart +++ b/lib/base/base_state.dart @@ -77,7 +77,7 @@ abstract class BaseState extends State { void onOptionsItemClick(int index) { switch (index) { case 0: { - pushRoute(context, new SettingsScreen(helper, app)); + pushRoute(context, new SettingsScreen(helper, app, false)); break; } case 1: { diff --git a/lib/common.dart b/lib/common.dart index 8379716..e199db1 100644 --- a/lib/common.dart +++ b/lib/common.dart @@ -1,6 +1,6 @@ import 'package:checker/screens/faq.dart'; import 'package:checker/screens/purchase.dart'; -import 'package:checker/screens/registration.dart'; +import 'package:checker/screens/settings.dart'; import 'package:checker/screens/splash.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -65,7 +65,9 @@ forceLogout(String token , BuildContext context) async { helper.open().then((_) { helper.clear().then((_) { helper.close().then((_) { - Navigator.of(context).pop(); + while (Navigator.of(context).canPop()) { + Navigator.of(context).pop(); + } pushRouteReplacement(context, new SplashScreen()); }); }); @@ -78,50 +80,68 @@ forceLogout(String token , BuildContext context) async { /// Запуск спецефичной для каждой платформы части приложения - сканера. /// Может производиться с нескольких экранов (splash, finish_registration). startScanner(BuildContext context, String app, SqliteHelper helper) async { - - String token = await helper.getToken(); - helper.close(); - // Канал ловит вызовы методов из "нативной" части приложения. - // Могут быть вызваны либо logout либо faq, либо purchase. - if (token != null) { - platform.setMethodCallHandler((MethodCall call) async { - - if (call.method == 'logout') { - forceLogout(token, context); - } else if (call.method == 'faq') { - faq(context, true); - } else { - String userString = call.arguments[0]; - String card = call.arguments[1]; - var route = new MaterialPageRoute(builder: (BuildContext context) => new PurchaseScreen(userString, card)); - Navigator.of(context).pushReplacement(route); - } + if (helper == null) { + helper = new SqliteHelper(); + helper.open().then((_) { + startScanner(context, app, helper); }); + } else { + String token = await helper.getToken(); + helper.close(); + // Канал ловит вызовы методов из "нативной" части приложения. + // Могут быть вызваны либо logout либо faq, либо purchase. + if (token != null) { + platform.setMethodCallHandler((MethodCall call) async { + if (call.method == 'logout') { + forceLogout(token, context); + } else if (call.method == 'faq') { + faq(context, true); + } else if(call.method == 'settings') { + helper = new SqliteHelper(); + helper.open().then((_) { + pushRoute(context, new SettingsScreen(helper, app, true)); + }); + } else { + String userString = call.arguments[0]; + String card = call.arguments[1]; + var route = new MaterialPageRoute( + builder: (BuildContext context) => + new PurchaseScreen( + userString, card)); + while (Navigator.of(context).canPop()) { + Navigator.of(context).pop(); + } + Navigator.of(context).pushReplacement(route); + } + }); - await platform.invokeMethod('startScanner', { - 'token' : token, - 'url': url, - 'appToken': appToken, - 'color': Resources.getPrimaryColor(app).value - }); + await platform.invokeMethod('startScanner', { + 'token': token, + 'url': url, + 'appToken': appToken, + 'color': Resources + .getPrimaryColor(app) + .value + }); + } } } // Запуск диалога с двумя кнопками showYesNoDialog(BuildContext context, String title, String content, VoidCallback positiveCallback) { - showDialog(context: context, child: new AlertDialog( - title: new Text(title), - content: new Text(content), - actions: [ - new FlatButton( - child: new Text(StringsLocalization.no()), - onPressed: () { - Navigator.of(context).pop(); - } - ), - new FlatButton( - child: new Text(StringsLocalization.yes()), - onPressed: positiveCallback)])); + showDialog(context: context, child: new AlertDialog( + title: new Text(title), + content: new Text(content), + actions: [ + new FlatButton( + child: new Text(StringsLocalization.no()), + onPressed: () { + Navigator.of(context).pop(); + } + ), + new FlatButton( + child: new Text(StringsLocalization.yes()), + onPressed: positiveCallback)])); } getCurrencyTitle(int code) { @@ -130,7 +150,7 @@ getCurrencyTitle(int code) { case 840: return StringsLocalization.nominativeDollar(); case 980: return StringsLocalization.nominativeHryvna(); case 978: return StringsLocalization.nominativeEuro(); - case 398: return StringsLocalization.nominativeEuro(); + case 398: return StringsLocalization.nominativeTenge(); } } diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index c78d38c..2e49bc0 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:checker/base/base_screen.dart'; import 'package:checker/base/base_state.dart'; import 'package:checker/common.dart'; @@ -9,9 +11,11 @@ import 'package:flutter/material.dart'; class SettingsScreen extends BaseScreen { - SettingsScreen(helper, app) : super(helper, app); + final bool returnToScanner; - @override State createState() => new SettingsState(helper, app); + SettingsScreen(helper, app, this.returnToScanner) : super(helper, app); + + @override State createState() => new SettingsState(helper, app, returnToScanner); } class MenuItem { @@ -26,9 +30,12 @@ class SettingsState extends BaseState { List menuItems = [new MenuItem(StringsLocalization.currency(), '')]; - SettingsState(SqliteHelper helper, String app) { + bool returnToScanner; + + SettingsState(SqliteHelper helper, String app, bool returnToScanner) { this.helper = helper; this.app = app; + this.returnToScanner = returnToScanner; } @override Widget build(BuildContext ctx) { @@ -41,7 +48,7 @@ class SettingsState extends BaseState { } } }); - return getMainWidget(); + return new WillPopScope(onWillPop: onWillPop, child: getMainWidget()); } @override @@ -104,4 +111,12 @@ class SettingsState extends BaseState { String getTitle() { return StringsLocalization.settings(); } + + onWillPop() { + if(returnToScanner) { + return startScanner(context, app, helper); + } else { + return true; + } + } } \ No newline at end of file