diff --git a/WarpDrinkApp/app/build.gradle b/WarpDrinkApp/app/build.gradle index 92c0df6bf3ef0f9197f374706fbbd3b5f17c7da3..9e8a0962ccfc2216c544b5708eca031054979e1a 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 3e9cacb63f0cf5001504f4c4685d0ca44fef9176..fe8b4a5a885a6874d9f2918a9f01bdad41ec4f52 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 c7178c42a6a35c452a6671dddf3b8204c24c4682..a7caf4629ce9e5b9b04b7d1886e1c73ab29b3cd4 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 edb75c48596088efab03b68e2d69cfde79156d66..037a0e29489079bc9fe49a918bf3170afe99bf44 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 6d930da66cfba07af7ac651d0399253f66dc7bc8..81ed5bc6561214dbcc261766fdf27f748c69f340 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 37075f2b9d1ea0581c67d671b8059c62d6d02ff8..523aebc6531e4bb6e9f1d0f90d8bc6eff1662eac 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 f0e8939b5d7cdcd6fc8ebf2ca11db986c8f4df92..13e473268b895faf7e3303e249f4dc5346514d4d 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 Binary files /dev/null and b/WarpDrinkApp/app/src/main/res/raw/keystore.bks differ