From d6b19128a4538abbf0679bbe452f3e7876603012 Mon Sep 17 00:00:00 2001 From: Christian Dresen <c.dresen@fh-muenster.de> Date: Tue, 28 Mar 2017 23:52:47 +0200 Subject: [PATCH] Barcode v1 --- WarpDrinkApp/app/build.gradle | 2 +- .../ms/warpzone/warppay/MainActivity.java | 32 +++++--- .../warppay/data/models/local/Product.java | 12 +++ .../warpzone/warppay/manager/DataManager.java | 1 + .../warpzone/warppay/manager/MainManager.java | 73 +++++++++++++++--- .../warpzone/warppay/manager/UiManager.java | 3 +- .../app/src/main/res/layout/activity_main.xml | 63 ++++++++------- .../app/src/main/res/raw/keystore.bks | Bin 0 -> 1944 bytes 8 files changed, 136 insertions(+), 50 deletions(-) create mode 100644 WarpDrinkApp/app/src/main/res/raw/keystore.bks diff --git a/WarpDrinkApp/app/build.gradle b/WarpDrinkApp/app/build.gradle index 92c0df6..9e8a096 100644 --- a/WarpDrinkApp/app/build.gradle +++ b/WarpDrinkApp/app/build.gradle @@ -5,7 +5,7 @@ android { buildToolsVersion '25.0.0' defaultConfig { - applicationId "ms.itsecteam.warpdrink" + applicationId "ms.warpzone.warppay" minSdkVersion 15 targetSdkVersion 22 versionCode 1 diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java index 3e9cacb..fe8b4a5 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java @@ -37,7 +37,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe private PendingIntent mPendingIntent; private IntentFilter[] mIntentFilters; private String[][] mNFCTechLists; - + private String barcode; public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_main, menu); @@ -50,10 +50,11 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe getWindow().addFlags(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); setContentView(R.layout.activity_main); + this.findViewById(R.id.mainLayout).setOnKeyListener(this); this.manager = MainManager.getInstance(); this.manager.init(this); - + this.barcode = ""; this.findViewById(android.R.id.content).setOnKeyListener(this); this.nfcAdapter = NfcAdapter.getDefaultAdapter(this); @@ -66,6 +67,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe Log.e("TagDispatch", e.toString()); } mNFCTechLists = new String[][] { new String[] { NfcF.class.getName() } }; + } public void onResume() { @@ -132,15 +134,27 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe } @Override - public boolean onKey(View v, int keyCode, KeyEvent event) { - switch (keyCode) { - case KeyEvent.KEYCODE_ENTER: - TextView t = (TextView) this.findViewById(R.id.txtCredit); - t.setText("asdasdasd"); - return true; - } + public boolean onKey(View view, int keyCode, KeyEvent keyEvent) { return false; } + + @Override + public boolean dispatchKeyEvent(KeyEvent event) { + if(this.manager.getCurrentUser() != null) { + if (event.getAction() == KeyEvent.ACTION_UP) { + if (KeyEvent.KEYCODE_ENTER == event.getKeyCode()) { + Toast.makeText(this, this.barcode, Toast.LENGTH_LONG).show(); + this.barcode = ""; + } else { + this.barcode += (char) event.getUnicodeChar(); + } + } + } + return super.dispatchKeyEvent(event); + } + + + /* @Override diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/Product.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/Product.java index c7178c4..a7caf46 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/Product.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/Product.java @@ -22,6 +22,10 @@ public class Product extends Model { @Column(name = "category") private String category; + @Column(name = "barcode") + private String barcode; + + @Column(name = "price") private float price; @@ -81,6 +85,14 @@ public class Product extends Model { this.count = count; } + public String getBarcode() { + return barcode; + } + + public void setBarcode(String barcode) { + this.barcode = barcode; + } + public static List<Product> getAll() { return new Select() .from(Product.class) diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java index edb75c4..037a0e2 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java @@ -76,6 +76,7 @@ public class DataManager { this.currentUser.setCredit(this.currentUser.getCredit() - this.totalAmount); this.currentUser.save(); } + Log.d("USER", String.valueOf(this.currentUser.getCredit())); this.totalAmount = 0.0; } diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java index 6d930da..81ed5bc 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java @@ -1,10 +1,27 @@ package ms.warpzone.warppay.manager; import android.app.AlertDialog; +import android.content.Context; import android.content.DialogInterface; import android.util.Log; import android.widget.Toast; + +import com.squareup.okhttp.OkHttpClient; + +import java.io.IOException; +import java.io.InputStream; +import java.security.Certificate; +import java.security.KeyManagementException; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; import java.util.List; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManagerFactory; + import ms.warpzone.warppay.MainActivity; import ms.warpzone.warppay.R; import ms.warpzone.warppay.data.SQLiteService; @@ -36,27 +53,62 @@ public class MainManager { } private MainManager() { - this.sqLiteService = SQLiteService.getInstance(); - this.uiManager = UiManager.getInstance(); - this.dataManager = DataManager.getInstance(); - this.restService = this.createRestService(); + } private RestService createRestService() { - Retrofit retrofit = new Retrofit.Builder() - //.baseUrl("http://10.0.1.134:8000/api/") - //.baseUrl("https://infra-test.warpzone.ms/api/") - .baseUrl("http://192.168.0.194:8000/api/") - .addConverterFactory(GsonConverterFactory.create()) - .build(); + + Retrofit.Builder builder = new Retrofit.Builder() + .baseUrl("https://infra-test.warpzone/api/") + .addConverterFactory(GsonConverterFactory.create()); + + OkHttpClient okHttp = new OkHttpClient(); + try { + okHttp.setSslSocketFactory(getSSLConfig(this.getMainActivity().getBaseContext()).getSocketFactory()); + } catch (CertificateException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (KeyStoreException e) { + e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (KeyManagementException e) { + e.printStackTrace(); + } + + Retrofit retrofit = builder.client(okHttp).build(); + return retrofit.create(RestService.class); } + private static SSLContext getSSLConfig(Context context) throws CertificateException, IOException, + KeyStoreException, NoSuchAlgorithmException, KeyManagementException { + + // Loading CAs from an InputStream + CertificateFactory cf = null; + String password = "e44r4dv9z1d0vwr9erotafxe66114v31jwhjlvttc8qkoa3nrskcj4ml0pwrh8aw"; + KeyStore keyStore = KeyStore.getInstance("BKS"); + keyStore.load(context.getResources().openRawResource(R.raw.keystore), password.toCharArray()); + + String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm(); + TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm); + tmf.init(keyStore); + + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(null, tmf.getTrustManagers(), null); + + return sslContext; + } public void init(MainActivity mainActivity) { this.mainActivity = mainActivity; + this.sqLiteService = SQLiteService.getInstance(); + this.uiManager = UiManager.getInstance(); + this.dataManager = DataManager.getInstance(); this.uiManager.initUi(this.mainActivity); + this.restService = this.createRestService(); this.refreshData(); } @@ -82,6 +134,7 @@ public class MainManager { this.restService.getAllCategories().enqueue(new Callback<List<RestCategory>>() { @Override public void onResponse(Response<List<RestCategory>> response, Retrofit retrofit) { + Log.d("HALLO",response.message()); List<Category> categoryList = MainManager.getInstance().sqLiteService.refreshCategoryData(response.body()); if (categoryList != null) { MainManager.getInstance().uiManager.showCategoryButtons(); diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java index 37075f2..523aebc 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java @@ -18,6 +18,7 @@ import android.widget.GridLayout; import android.widget.ImageButton; import android.widget.ListView; import android.widget.TextView; +import android.widget.Toast; import java.util.ArrayList; import java.util.List; @@ -198,7 +199,7 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap this.atxvName.dismissDropDown(); DataManager.getInstance().setIs_guest(false); } - return true; + return false; } } return false; diff --git a/WarpDrinkApp/app/src/main/res/layout/activity_main.xml b/WarpDrinkApp/app/src/main/res/layout/activity_main.xml index f0e8939..13e4732 100644 --- a/WarpDrinkApp/app/src/main/res/layout/activity_main.xml +++ b/WarpDrinkApp/app/src/main/res/layout/activity_main.xml @@ -1,54 +1,60 @@ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/mainLayout" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:focusable="true" + android:focusableInTouchMode="true" + android:paddingBottom="@dimen/activity_vertical_margin" + android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" - android:paddingBottom="@dimen/activity_vertical_margin" tools:context="ms.warpzone.warppay.MainActivity"> + tools:context="ms.warpzone.warppay.MainActivity"> <LinearLayout - android:orientation="vertical" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:orientation="vertical"> <LinearLayout - android:orientation="horizontal" android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:orientation="horizontal"> <LinearLayout - android:orientation="vertical" android:layout_width="464dp" - android:layout_height="361dp"> + android:layout_height="361dp" + android:orientation="vertical"> <LinearLayout - android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="50dp" - android:layout_row="0" android:layout_column="1" + android:layout_row="0" + android:orientation="horizontal" android:weightSum="1"> <TextView + android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceMedium" + android:layout_gravity="center_vertical" android:text="@string/name" - android:id="@+id/textView2" - android:layout_gravity="center_vertical" /> + android:textAppearance="?android:attr/textAppearanceMedium" /> <Space android:layout_width="20px" android:layout_height="20px" /> <AutoCompleteTextView + android:id="@+id/atxvName" android:layout_width="254dp" android:layout_height="match_parent" - android:id="@+id/atxvName" - android:imeOptions="actionNext" - android:singleLine="true" + android:layout_column="0" android:layout_columnSpan="1" android:layout_row="0" - android:layout_column="0" /> + android:imeOptions="actionNext" + android:singleLine="true" /> <Space android:layout_width="8dp" @@ -84,14 +90,13 @@ android:layout_row="2" /> <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/gridProducts" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="left" android:columnCount="4" android:orientation="horizontal" - android:id="@+id/gridProducts" - android:rowCount="3"> - </GridLayout> + android:rowCount="3"></GridLayout> <Space android:layout_width="20px" @@ -100,9 +105,9 @@ </LinearLayout> <LinearLayout - android:orientation="vertical" android:layout_width="match_parent" - android:layout_height="363dp"> + android:layout_height="363dp" + android:orientation="vertical"> <LinearLayout @@ -149,11 +154,11 @@ </LinearLayout> <ListView + android:id="@+id/lstOrdered" android:layout_width="wrap_content" android:layout_height="255dp" - android:id="@+id/lstOrdered" - android:layout_row="2" android:layout_column="12" + android:layout_row="2" android:choiceMode="singleChoice" /> <Space @@ -161,11 +166,11 @@ android:layout_height="25px" /> <TextView + android:id="@+id/txtSum" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceMedium" android:text="@string/sum" - android:id="@+id/txtSum" /> + android:textAppearance="?android:attr/textAppearanceMedium" /> <Space android:layout_width="wrap_content" @@ -179,9 +184,9 @@ </LinearLayout> <LinearLayout - android:orientation="horizontal" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:orientation="horizontal"> <Button android:id="@+id/btnCharge" diff --git a/WarpDrinkApp/app/src/main/res/raw/keystore.bks b/WarpDrinkApp/app/src/main/res/raw/keystore.bks new file mode 100644 index 0000000000000000000000000000000000000000..286cca322ee508a348f62d27ce1f0110438fd7d9 GIT binary patch literal 1944 zcmZQzU|?ckU=VrpN%TqU)v%=--iR-<-RpPx*!`Pt7#P^{7#UbI^U{hE85kI&#p*77 z0IFqRV2#i-HLzr0VD2_(Vs1BRV#;5@%*4pV#L2MG<#O?w;Oid@c-c6$+C196^D;7W zvoaV&8FCwNvN4CUun9A{xEk^paDg}+Jj{MU;f8_+{2(4X4~K7QYF=?kY7tC`i-#jT zv8bRbKQGl#+&~nhikXKG>>#~zsDy!>IIp3(fw7UHk%57cp=FdfuMv=IXbI)g)b1um zC1kHMvNA9?G4eAQG%<29H8C<WJTNf%*?)sIZ5>O^5v7G6*+p;k$?}|!+c~Y|{rZzv zz3(opd@JD9Bl+1)Qgihyse8`17k~Y#_k6A37Dnra7W>1O&$Pe%xr*yAYxUpYPQ@)v zJErP%>K)p0?~C5_Dw9i#JgR3unJVO~ab<qL_A<6<_oWRK{kO1}r))EGOO?>#?h|9Z z{PfaWi`wHBrwz)=0;3q-ektazTQy%_cYWJ2scSbcuX&VI<1>Y=u)U+};{U>DX%l`$ z@M*TbSP*ZQpX6?M=T-Fl@4?C5XPL6if900T^7N*xjas;3TIRYSJ~8tn%c5pWhg`4N z{VFYD|Ev=;O^*EDlrQJ=YTc)#$^OUP3JtnAN>!Pd85tNC2N?Jn$O0ozmXAe@MI`!v z0nf95If-%Bm7lH|?dgzN(&}j-50X}9kuVTzz^;G?q(GR3)qt6i@jr5y1Ctjp%o!P6 zR%kn!6+gCcJX;=cFaJrv@z?iiYMdPe_=CUIuvnGtzPfV%QpLzE4=ht&F1w`9b^7wD z5Br{4@y$9jK~>CXlTTR2Yt4hf;cMA-PB83Y7iqh5=5BMv{L`Y`JKss#e3=`m`#e`G zw7c^~PVqNBJ7o=<5aHR&HZR@J&R4PKq|=&^7dy)O?!PHJ-hRu)t6XyX>1|w$Q~%mq zuM~NiqcQdQm-8G)b@}=1ldV}>dp^%@dY?N%T*ai^d}_d?HBkXVvJt*U{yPiAI+OYC z@_x<HFSWnK#B<-j>ig_(8L#gPyKYXL7oKfjz9Q3d$tn@qjeov;Nm^L!RQd1E`w5;l z`tG%hq$_0185y|18AG=uwYUVFT`T%CQM2n*V0N7d%&wKN?0RV8Wm9W$i#KTDX%J6& zc9k)Zf@D`=gsZUUSpyR@<U9-F(%u1tGVX~p4<e+$NBZcdzfoS%U}hE6GxN==KmH*< zYekttOhbNHKiv~^>xi*R#6Oq!JR-UQkNZSpZ4aGm=Ioz)YBKA$IYOV$%zYg4q^vdX zVU1tfb;Aj3A7st?8Q<7&@XuPm;If>P=bPg<OW9^EU6l9xM9-`f++NFk?%8wJCCG{| zPYlXlVwk|)ndOyqJ(zV?g}|;VhJsr<uBDT{KKZ89c4lXUI7^V@>4jev<Bzs(&5?JM z+1(zl`?GMzbe>7Cr!TktF0VGjq9UfFx6k>Q(ER<!Yo>e-IQ>6f;o$FGDk4wr{7e<N ztv}Q9!-ZU}f~cvn^*=hlyj(9h|JDn=xgts0*R9mn``#4AmT`kSehWWKJa2S`%idvC z)vl@A@4n4O$+%b*5X`t{cLI}Mu<TxPMElf&C&%IsPG9FNzT%L~nYKQz&GpCr$-Ys& zwktw1_3+$=*Hzah=v>Z_ey8%KI<M64OsQR-<mtmb`}kYKe3t9ae_|%Q`iQUYf<s&r z4#!<H`_s4CVG7fW&fi=<k+X~XpZF+O@0>GNdf%hP&(l_YeYDKxTGY$?!k;hZm7G1* z?J!a5pUR^d|8LBa5e|>vyZPeVJ6Eom*-ZSwHPd&m)uGCzJdCTAD|a!5)C3v}#a@ie zVrva-*uH3$W7pfGj2b_jWty}8r%rD@F-zHf4M##GclO>p*=8?#)mPo~o}rq0{V*?! zV~l61kc^oZ|Lh~%Zro8n_Ib-89yzb1`^gL!>{jty3edi2oe|biy`uNQ!I`tX0BWk- ARR910 literal 0 HcmV?d00001 -- GitLab