From 9f9274acf527eba1f72d9a5df5e86d456900611f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?mustafa=20ic=CC=A7men?= Date: Sun, 1 Oct 2017 23:51:59 +0300 Subject: [PATCH] login and register --- .idea/misc.xml | 2 +- .../android/activity/LoginActivity.java | 96 +++++++++- .../android/activity/RegisterActivity.java | 107 ++++++++++- .../android/activity/SplashActivity.java | 5 +- .../recycler/PizzaRecyclerAdapter.java | 131 +------------- .../pizzalink/android/api/ApiEndPoints.java | 5 +- .../pizzalink/android/api/ApiInterface.java | 21 +++ .../android/fragment/order/PizzaFragment.java | 11 +- .../android/view/PizzalinkButton.java | 3 +- .../android/view/PizzalinkEditText.java | 17 +- .../android/view/PizzalinkToolbar.java | 12 +- app/src/main/res/drawable/ic_back.xml | 4 + app/src/main/res/drawable/pizzalink_logo.png | Bin 21414 -> 7269 bytes app/src/main/res/layout/activity_login.xml | 75 +++++++- app/src/main/res/layout/activity_register.xml | 23 ++- app/src/main/res/layout/activity_splash.xml | 4 +- .../res/layout/layout_pizzalink_button.xml | 12 +- .../res/layout/layout_pizzalink_toolbar.xml | 9 + app/src/main/res/layout/row_pizza.xml | 169 +----------------- app/src/main/res/values/attrs.xml | 1 + app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/strings.xml | 21 ++- app/src/main/res/values/styles.xml | 11 ++ 23 files changed, 411 insertions(+), 329 deletions(-) create mode 100644 app/src/main/res/drawable/ic_back.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index cca2cda..7158618 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -37,7 +37,7 @@ - + diff --git a/app/src/main/java/ch/pizzalink/android/activity/LoginActivity.java b/app/src/main/java/ch/pizzalink/android/activity/LoginActivity.java index 4bc1e4a..db549f1 100644 --- a/app/src/main/java/ch/pizzalink/android/activity/LoginActivity.java +++ b/app/src/main/java/ch/pizzalink/android/activity/LoginActivity.java @@ -1,17 +1,111 @@ package ch.pizzalink.android.activity; -import android.support.v7.app.AppCompatActivity; +import android.content.Intent; +import android.graphics.Color; import android.os.Bundle; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.style.ForegroundColorSpan; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; +import butterknife.BindString; +import butterknife.BindView; import butterknife.ButterKnife; +import butterknife.OnClick; import ch.pizzalink.android.R; +import ch.pizzalink.android.api.ApiErrorUtils; +import ch.pizzalink.android.api.ApiService; +import ch.pizzalink.android.helper.DialogHelper; +import ch.pizzalink.android.helper.SharedPrefsHelper; +import ch.pizzalink.android.model.responseModel.LoginCustomerResponseModel; +import ch.pizzalink.android.view.PizzalinkButton; +import ch.pizzalink.android.view.PizzalinkEditText; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; public class LoginActivity extends BaseActivity { + @BindView(R.id.emailPizzalinkEditText) PizzalinkEditText emailPizzalinkEditText; + @BindView(R.id.passwordPizzalinkEditText) PizzalinkEditText passwordPizzalinkEditText; + @BindView(R.id.loginButton) Button loginButton; + @BindView(R.id.registerTextView) TextView registerTextView; + + @BindString(R.string.not_have_an_accaount) String notHaveAnAccountText; + @BindString(R.string.register_text) String registerText; + @BindString(R.string.alert_fill_all_fields) String fillAllFieldsText; + @BindString(R.string.alert_valid_email) String validEmailText; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); ButterKnife.bind(this); + initViews(); + } + + @OnClick({R.id.loginButton, R.id.registerTextView}) + protected void onClick(View view){ + switch (view.getId()){ + case R.id.loginButton: + if(checkFields()) + login(); + break; + case R.id.registerTextView: + startActivity(new Intent(LoginActivity.this, RegisterActivity.class)); + break; + } + } + + private void initViews(){ + initRegisterTextView(); + emailPizzalinkEditText.getEditText().setText("aytaccici@gmail.com"); + passwordPizzalinkEditText.getEditText().setText("3522625"); + } + + private void initRegisterTextView(){ + Spannable wordtoSpan = new SpannableString(notHaveAnAccountText + " " + registerText); + wordtoSpan.setSpan(new ForegroundColorSpan(Color.RED), 16, wordtoSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + registerTextView.setText(wordtoSpan); + } + + private boolean checkFields(){ + + if(emailPizzalinkEditText.isEmpty() || passwordPizzalinkEditText.isEmpty()){ + DialogHelper.showAlertDialog(this, fillAllFieldsText); + return false; + } + + if(!emailPizzalinkEditText.isEmail()){ + DialogHelper.showAlertDialog(this, validEmailText); + return false; + } + + return true; + } + + private void login(){ + Call call = ApiService.apiInterface.login( + emailPizzalinkEditText.getText(), passwordPizzalinkEditText.getText()); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if(response.isSuccessful()){ + SharedPrefsHelper.saveUser(response.body().getData()); + SharedPrefsHelper.saveCustomerToken(response.body().getData().getToken()); + SharedPrefsHelper.setCustomerLoggedIn(true); + startActivity(new Intent(LoginActivity.this, MainActivity.class)); + } + else + ApiErrorUtils.parseError(response); + } + + @Override + public void onFailure(Call call, Throwable t) { + DialogHelper.showFailedDialog(); + } + }); } } diff --git a/app/src/main/java/ch/pizzalink/android/activity/RegisterActivity.java b/app/src/main/java/ch/pizzalink/android/activity/RegisterActivity.java index d265c5b..3225662 100644 --- a/app/src/main/java/ch/pizzalink/android/activity/RegisterActivity.java +++ b/app/src/main/java/ch/pizzalink/android/activity/RegisterActivity.java @@ -1,17 +1,122 @@ package ch.pizzalink.android.activity; -import android.support.v7.app.AppCompatActivity; +import android.content.Intent; import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import java.util.List; + +import butterknife.BindString; +import butterknife.BindView; +import butterknife.BindViews; import butterknife.ButterKnife; +import butterknife.OnClick; import ch.pizzalink.android.R; +import ch.pizzalink.android.api.ApiErrorUtils; +import ch.pizzalink.android.api.ApiService; +import ch.pizzalink.android.helper.DialogHelper; +import ch.pizzalink.android.helper.SharedPrefsHelper; +import ch.pizzalink.android.model.responseModel.LoginCustomerResponseModel; +import ch.pizzalink.android.view.PizzalinkButton; +import ch.pizzalink.android.view.PizzalinkEditText; +import ch.pizzalink.android.view.PizzalinkToolbar; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; public class RegisterActivity extends BaseActivity { + @BindView(R.id.registerToolbar) PizzalinkToolbar registerToolbar; + @BindView(R.id.registerButton) Button registerButton; + @BindViews({ R.id.firstnamePizzalinkEditText, R.id.lasstnamePizzalinkEditText, + R.id.telephonePizzalinkEditText, R.id.emailPizzalinkEditText, + R.id.passwordPizzalinkEditText, R.id.passwordAgainPizzalinkEditText, + R.id.address1PizzalinkEditText, R.id.address2PizzalinkEditText, + R.id.cityPizzalinkEditText, R.id.postcodePizzalinkEditText, + R.id.zonePizzalinkEditText, R.id.countryPizzalinkEditText}) + List pizzalinkEditTextList; + + @BindString(R.string.alert_fill_all_fields) String fillAllFieldsText; + @BindString(R.string.alert_valid_email) String validEmailText; + @BindString(R.string.alert_passwords_not_matched) String passwordsNotMatchedText; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); ButterKnife.bind(this); + initViews(); + } + + @OnClick(R.id.registerButton) + protected void onClick(){ + if(checkFields()) + registerUser(); + } + + private void initViews(){ + registerToolbar.setBackIconClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + onBackPressed(); + } + }); + } + + private boolean checkFields(){ + + for(PizzalinkEditText pizzalinkEditText : pizzalinkEditTextList){ + if(pizzalinkEditText.isEmpty()){ + DialogHelper.showAlertDialog(this, fillAllFieldsText); + return false; + } + } + + if(!pizzalinkEditTextList.get(3).isEmail()){ + DialogHelper.showAlertDialog(this, validEmailText); + return false; + } + + if(pizzalinkEditTextList + .get(4) + .getText() + .toLowerCase() + .equals( + pizzalinkEditTextList + .get(5) + .getText() + .toLowerCase())){ + DialogHelper.showAlertDialog(this, passwordsNotMatchedText); + return false; + } + + return true; + } + + private void registerUser(){ + Call call = ApiService.apiInterface.register( + pizzalinkEditTextList.get(0).getText(), pizzalinkEditTextList.get(1).getText(),pizzalinkEditTextList.get(2).getText(), + pizzalinkEditTextList.get(3).getText(),pizzalinkEditTextList.get(4).getText(),pizzalinkEditTextList.get(5).getText(), + pizzalinkEditTextList.get(6).getText(),pizzalinkEditTextList.get(7).getText(),pizzalinkEditTextList.get(8).getText(), + pizzalinkEditTextList.get(9).getText(),pizzalinkEditTextList.get(10).getText(),pizzalinkEditTextList.get(11).getText()); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if(response.isSuccessful()){ + SharedPrefsHelper.saveUser(response.body().getData()); + SharedPrefsHelper.saveCustomerToken(response.body().getData().getToken()); + SharedPrefsHelper.setCustomerLoggedIn(true); + startActivity(new Intent(RegisterActivity.this, MainActivity.class)); + } + else + ApiErrorUtils.parseError(response); + } + + @Override + public void onFailure(Call call, Throwable t) { + DialogHelper.showFailedDialog(); + } + }); } } diff --git a/app/src/main/java/ch/pizzalink/android/activity/SplashActivity.java b/app/src/main/java/ch/pizzalink/android/activity/SplashActivity.java index 30a3eef..b313009 100644 --- a/app/src/main/java/ch/pizzalink/android/activity/SplashActivity.java +++ b/app/src/main/java/ch/pizzalink/android/activity/SplashActivity.java @@ -34,7 +34,7 @@ public class SplashActivity extends BaseActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); ButterKnife.bind(this); - DisplayHelper.changeStatusColor(); + //DisplayHelper.changeStatusColor(); if(NetworkHelper.isNetworkAvailable()) getCategoryList(); else @@ -80,8 +80,7 @@ public class SplashActivity extends BaseActivity { handler.postDelayed(new Runnable() { @Override public void run() { - //startActivity(new Intent(SplashActivity.this, cls)); - startActivity(new Intent(SplashActivity.this, RegisterActivity.class)); + startActivity(new Intent(SplashActivity.this, cls)); finish(); } }, 1000); diff --git a/app/src/main/java/ch/pizzalink/android/adapter/recycler/PizzaRecyclerAdapter.java b/app/src/main/java/ch/pizzalink/android/adapter/recycler/PizzaRecyclerAdapter.java index 6d3c77f..6673168 100644 --- a/app/src/main/java/ch/pizzalink/android/adapter/recycler/PizzaRecyclerAdapter.java +++ b/app/src/main/java/ch/pizzalink/android/adapter/recycler/PizzaRecyclerAdapter.java @@ -42,90 +42,24 @@ public class PizzaRecyclerAdapter extends RecyclerView.Adapter pizzaList = new ArrayList<>(); private RecyclerItemClickListener recyclerItemClickListener; - private CheckBoxChangedListener checkBoxChangedListener; public static class PizzaViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.pizzaNameTextView) TextView pizzaNameTextView; @BindView(R.id.pizzaImageView) ImageView pizzaImageView; @BindView(R.id.pizzaIngredientsTextView) TextView pizzaIngredientsTextView; - @BindView(R.id.pizzaBottomLayout) LinearLayout pizzaBottomLayout; - @BindView(R.id.expandBottomLayoutImageView) ImageView expandBottomLayoutImageView; - @BindView(R.id.collapseBottomLayoutImageView) ImageView collapseBottomLayoutImageView; - @BindViews({ R.id.pizzaSize1CheckBox, R.id.pizzaSize2CheckBox, R.id.pizzaSize3CheckBox }) - List pizzaSizeCheckBoxList; - - @BindView(R.id.pizzaSize1Layout) LinearLayout pizzaSize1Layout; - @BindView(R.id.pizzaSize1NameTextView) TextView pizzaSize1NameTextView; - @BindView(R.id.pizzaSize1CheckBox) AppCompatCheckBox pizzaSize1CheckBox; - @BindView(R.id.pizzaSize1LengthTextView) TextView pizzaSize1LengthTextView; - - @BindView(R.id.pizzaSize2Layout) LinearLayout pizzaSize2Layout; - @BindView(R.id.pizzaSize2NameTextView) TextView pizzaSize2NameTextView; - @BindView(R.id.pizzaSize2CheckBox) AppCompatCheckBox pizzaSize2CheckBox; - @BindView(R.id.pizzaSize2LengthTextView) TextView pizzaSize2LengthTextView; - - @BindView(R.id.pizzaSize3Layout) LinearLayout pizzaSize3Layout; - @BindView(R.id.pizzaSize3NameTextView) TextView pizzaSize3NameTextView; - @BindView(R.id.pizzaSize3CheckBox) AppCompatCheckBox pizzaSize3CheckBox; - @BindView(R.id.pizzaSize3LengthTextView) TextView pizzaSize3LengthTextView; - - @BindView(R.id.increasePizzaCountTextView) ImageView increasePizzaCountTextView; - @BindView(R.id.pizzaCountTextView) TextView pizzaCountTextView; - @BindView(R.id.deccreasePizzaCountTextView) ImageView deccreasePizzaCountTextView; - - @BindView(R.id.pizzaPriceTextView) TextView pizzaPriceTextView; - @BindView(R.id.addPizzaToCartButton) Button addPizzaToCartButton; - - - public PizzaViewHolder(final View view, - final RecyclerItemClickListener recyclerItemClickListener, - final CheckBoxChangedListener checkBoxChangedListener) { + public PizzaViewHolder(final View view, final RecyclerItemClickListener recyclerItemClickListener) { super(view); ButterKnife.bind(this, view); - view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(recyclerItemClickListener != null) - recyclerItemClickListener.onItemClick(pizzaBottomLayout, getAdapterPosition()); + recyclerItemClickListener.onItemClick(view, getAdapterPosition()); } }); - increasePizzaCountTextView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if(recyclerItemClickListener != null) - recyclerItemClickListener.onItemClick(increasePizzaCountTextView, getAdapterPosition()); - } - }); - - deccreasePizzaCountTextView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if(recyclerItemClickListener != null) - recyclerItemClickListener.onItemClick(deccreasePizzaCountTextView, getAdapterPosition()); - } - }); - - addPizzaToCartButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if(recyclerItemClickListener != null) - recyclerItemClickListener.onItemClick(addPizzaToCartButton, getAdapterPosition()); - } - }); - - for(final AppCompatCheckBox appCompatCheckBox : pizzaSizeCheckBoxList){ - appCompatCheckBox.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if(checkBoxChangedListener != null) - checkBoxChangedListener.onCheckedChanged(appCompatCheckBox, getAdapterPosition()); - } - }); - } } } @@ -145,11 +79,9 @@ public class PizzaRecyclerAdapter extends RecyclerView.Adapter pizzaList, - RecyclerItemClickListener recyclerItemClickListener, - CheckBoxChangedListener checkBoxChangedListener){ + RecyclerItemClickListener recyclerItemClickListener){ this.pizzaList = pizzaList; this.recyclerItemClickListener = recyclerItemClickListener; - this.checkBoxChangedListener = checkBoxChangedListener; } @Override @@ -162,8 +94,8 @@ public class PizzaRecyclerAdapter extends RecyclerView.Adapter getAllCategories(); + @FormUrlEncoded + @POST(ApiEndPoints.API_REGISTER) + Call register(@Field("firstname") String firstname, + @Field("lastname") String lastname, + @Field("telephone") String telephone, + @Field("email") String email, + @Field("passsword") String passsword, + @Field("passsword1") String passswordRetype, + @Field("address_1") String addressLine1, + @Field("address_2") String addressLine2, + @Field("city") String passswocityrd, + @Field("postcode") String postcode, + @Field("country_id") String country_id, + @Field("zone_id") String zone_id); + + @FormUrlEncoded + @POST(ApiEndPoints.API_LOGIN) + Call login(@Field("email") String email, @Field("password") String password); + + /* @GET(ApiEndPoints.API_GET_ALL_CATEGORIES) Call getAllCategories(); diff --git a/app/src/main/java/ch/pizzalink/android/fragment/order/PizzaFragment.java b/app/src/main/java/ch/pizzalink/android/fragment/order/PizzaFragment.java index 80193b8..1e5cb05 100644 --- a/app/src/main/java/ch/pizzalink/android/fragment/order/PizzaFragment.java +++ b/app/src/main/java/ch/pizzalink/android/fragment/order/PizzaFragment.java @@ -66,14 +66,11 @@ public class PizzaFragment extends OrderBaseFragment { private void initRecyclerView(){ - /* - GridLayoutManager layoutManager = new GridLayoutManager(BaseActivity.currentActivity, 2); - pizzaRecyclerView.addItemDecoration(new GridSpacesItemDecoration(DisplayHelper.dpToPx(12))); - */ RecyclerItemClickListener recyclerItemClickListener = new RecyclerItemClickListener() { @Override public void onItemClick(View view, int position) { + /* switch (view.getId()){ case R.id.increasePizzaCountTextView: pizzaList.get(position).setCount(pizzaList.get(position).getCount() + 1); @@ -96,6 +93,7 @@ public class PizzaFragment extends OrderBaseFragment { pizzaRecyclerView.scrollToPosition(position); break; } + */ } }; @@ -106,8 +104,9 @@ public class PizzaFragment extends OrderBaseFragment { } }; - pizzaRecyclerAdapter = new PizzaRecyclerAdapter(pizzaList, recyclerItemClickListener, checkBoxChangedListener); - LinearLayoutManager layoutManager = new LinearLayoutManager(BaseActivity.currentActivity); + pizzaRecyclerAdapter = new PizzaRecyclerAdapter(pizzaList, recyclerItemClickListener); + GridLayoutManager layoutManager = new GridLayoutManager(BaseActivity.currentActivity, 2); + pizzaRecyclerView.addItemDecoration(new GridSpacesItemDecoration(DisplayHelper.dpToPx(12))); pizzaRecyclerView.setLayoutManager(layoutManager); pizzaRecyclerView.setAdapter(pizzaRecyclerAdapter); } diff --git a/app/src/main/java/ch/pizzalink/android/view/PizzalinkButton.java b/app/src/main/java/ch/pizzalink/android/view/PizzalinkButton.java index b7aaaaf..0ddaf5a 100644 --- a/app/src/main/java/ch/pizzalink/android/view/PizzalinkButton.java +++ b/app/src/main/java/ch/pizzalink/android/view/PizzalinkButton.java @@ -6,6 +6,7 @@ import android.support.v4.content.ContextCompat; import android.util.AttributeSet; import android.view.View; import android.widget.Button; +import android.widget.LinearLayout; import android.widget.RelativeLayout; import ch.pizzalink.android.R; @@ -14,7 +15,7 @@ import ch.pizzalink.android.R; * Created by cimenmus on 28/09/2017. */ -public class PizzalinkButton extends RelativeLayout { +public class PizzalinkButton extends LinearLayout { private View rootView; private boolean isEnabled; diff --git a/app/src/main/java/ch/pizzalink/android/view/PizzalinkEditText.java b/app/src/main/java/ch/pizzalink/android/view/PizzalinkEditText.java index 823ecbf..0552e95 100644 --- a/app/src/main/java/ch/pizzalink/android/view/PizzalinkEditText.java +++ b/app/src/main/java/ch/pizzalink/android/view/PizzalinkEditText.java @@ -15,6 +15,7 @@ import android.widget.TextView; import ch.pizzalink.android.R; import ch.pizzalink.android.activity.BaseActivity; +import ch.pizzalink.android.helper.PasswordHelper; /** * Created by cimenmus on 28/09/2017. @@ -98,23 +99,33 @@ public class PizzalinkEditText extends LinearLayout implements View.OnClickListe } private void hideShowPassword(){ - if(isPasswordHidden) editText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); else editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); - isPasswordHidden = !isPasswordHidden; editText.setTypeface(typeFace); } private void focusEditText(){ - editText.requestFocus(); InputMethodManager inputMethodManager=(InputMethodManager)BaseActivity.currentActivity.getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); } + public boolean isEmpty(){ + return editText.getText().toString().isEmpty(); + } + + public boolean isEmail(){ + return PasswordHelper.EMAIL_ADDRESS_PATTERN.matcher(editText.getText()).matches(); + } + + public String getText(){ + return editText.getText().toString(); + } + + public TextView getHintTextView() { return hintTextView; } diff --git a/app/src/main/java/ch/pizzalink/android/view/PizzalinkToolbar.java b/app/src/main/java/ch/pizzalink/android/view/PizzalinkToolbar.java index 8d3fb3f..d916942 100644 --- a/app/src/main/java/ch/pizzalink/android/view/PizzalinkToolbar.java +++ b/app/src/main/java/ch/pizzalink/android/view/PizzalinkToolbar.java @@ -21,8 +21,8 @@ public class PizzalinkToolbar extends Toolbar { private View rootView; private TextView toolbarTitleTextView; - private ImageView hamburgerIcon; - private boolean showHamburgerIcon; + private ImageView hamburgerIcon, backIcon; + private boolean showHamburgerIcon, showBackIcon; private String title; private int toolbarBackgroundColor, titleTextColor; @@ -44,6 +44,7 @@ public class PizzalinkToolbar extends Toolbar { TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.PizzalinkToolbar, 0, 0); try { showHamburgerIcon = a.getBoolean(R.styleable.PizzalinkToolbar_showHamburgerMenuIcon, false); + showBackIcon = a.getBoolean(R.styleable.PizzalinkToolbar_showBackIcon, false); title = a.getString(R.styleable.PizzalinkToolbar_title); /* toolbarBackgroundColor = a.getColor(R.styleable.PizzalinkToolbar_toolbarBackgroundColor, @@ -66,8 +67,11 @@ public class PizzalinkToolbar extends Toolbar { //this.setBackgroundResource(toolbarBackgroundColor); //toolbarTitleTextView.setTextColor(titleTextColor); hamburgerIcon = (ImageView) rootView.findViewById(R.id.hamburgerIcon); + backIcon = (ImageView) rootView.findViewById(R.id.backIcon); if(showHamburgerIcon) hamburgerIcon.setVisibility(VISIBLE); + if(showBackIcon) + backIcon.setVisibility(VISIBLE); if(title != null) { toolbarTitleTextView.setText(title); toolbarTitleTextView.setVisibility(VISIBLE); @@ -91,6 +95,10 @@ public class PizzalinkToolbar extends Toolbar { hamburgerIcon.setVisibility(GONE); } + public void setBackIconClickListener(OnClickListener onClickListener){ + backIcon.setOnClickListener(onClickListener); + } + public ImageView getHamburgerIcon() { return hamburgerIcon; } diff --git a/app/src/main/res/drawable/ic_back.xml b/app/src/main/res/drawable/ic_back.xml new file mode 100644 index 0000000..f2ec6b9 --- /dev/null +++ b/app/src/main/res/drawable/ic_back.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/drawable/pizzalink_logo.png b/app/src/main/res/drawable/pizzalink_logo.png index b995f6d1da13205531ed232b4179e4f01ab3fac3..d4d796d5de885d293ed3b41229236fc0faf3829d 100644 GIT binary patch literal 7269 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 diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index c59e4a7..2788890 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -7,8 +7,81 @@ android:layout_height="match_parent" android:orientation="vertical" android:background="@color/white" - tools:context="ch.pizzalink.android.activity.LoginActivity"> + tools:context="ch.pizzalink.android.activity.LoginActivity" + android:focusable="true" + android:focusableInTouchMode="true"> + + + + + + + + + + + + + + + + + + +