Browse Source

Merge branch 'develop' of https://github.com/swict/LifePlusAndroid into develop

Hasemi 7 years ago
parent
commit
f9e10ba6da

+ 22 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/manager/ActionBarManager.java

@@ -64,6 +64,7 @@ public class ActionBarManager {
   private ImageView buttonSetting;
   private ImageView buttonClose;
   private TextView textButton;
+  private View viewUnderline;
 
   private Builder builder;
 
@@ -115,6 +116,7 @@ public class ActionBarManager {
     buttonSetting = view.findViewById(R.id.button_setting);
     buttonClose = view.findViewById(R.id.button_close);
     textButton = view.findViewById(R.id.text_sub);
+    viewUnderline = view.findViewById(R.id.view_underline);
 
     setClickListener(buttonBack);
     setClickListener(buttonSearch);
@@ -349,6 +351,10 @@ public class ActionBarManager {
     setViewVisible(buttonArrow, isVisible, View.GONE);
   }
 
+  private void setUnderlineVisible(boolean isVisible) {
+    setViewVisible(viewUnderline, isVisible, View.GONE);
+  }
+
   /**
    * 메뉴 버튼 보이기
    *
@@ -400,6 +406,7 @@ public class ActionBarManager {
       setNotificationVisible(false);
       setCloseVisible(false);
       setTextButtonVisible(false);
+      setUnderlineVisible(false);
     }
 
     if (builder.isScrollable != newBuilder.isScrollable) {
@@ -498,6 +505,10 @@ public class ActionBarManager {
       mapClickListener(textButton, newBuilder.textButtonListener);
     }
 
+    if (builder.isVisibleUnderline != newBuilder.isVisibleUnderline) {
+      setUnderlineVisible(newBuilder.isVisibleUnderline);
+    }
+
     builder = newBuilder;
 
     setContentsLayout(builder.isHidden, builder.isScrollable, builder.isTransparentBackground);
@@ -582,6 +593,7 @@ public class ActionBarManager {
     private boolean isVisibleSetting = false;
     private boolean isVisibleClose = false;
     private boolean isVisibleTextButton = false;
+    private boolean isVisibleUnderline = false;
     private int text = R.string.empty_string;
 
     private int selectedCategoryIndex = -1;
@@ -773,6 +785,16 @@ public class ActionBarManager {
       return this;
     }
 
+    /**
+     * 회색 밑 줄
+     *
+     * @return
+     */
+    public Builder unlderline() {
+      isVisibleUnderline = true;
+      return this;
+    }
+
     private void set() {
       ourInstance.set(this);
     }

+ 19 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/manager/NavigationBar.java

@@ -41,6 +41,7 @@ public class NavigationBar {
   private ImageView buttonSetting;
   private ImageView buttonClose;
   private TextView textButton;
+  private View viewUnderline;
 
   private boolean isArrowOpened = false;
 
@@ -70,6 +71,7 @@ public class NavigationBar {
     buttonSetting = view.findViewById(R.id.button_setting);
     buttonClose = view.findViewById(R.id.button_close);
     textButton = view.findViewById(R.id.text_sub);
+    viewUnderline = view.findViewById(R.id.view_underline);
 
     setClickListener(buttonBack);
     setClickListener(buttonSearch);
@@ -167,6 +169,10 @@ public class NavigationBar {
     setViewVisible(buttonArrow, isVisible, View.GONE);
   }
 
+  private void setUnderlineVisible(boolean isVisible) {
+    setViewVisible(viewUnderline, isVisible, View.GONE);
+  }
+
   /**
    * 메뉴 버튼 보이기
    *
@@ -243,6 +249,8 @@ public class NavigationBar {
         newBuilder.arrowListener.onClick(NavigationBar.this);
       });
     }
+
+    setUnderlineVisible(newBuilder.isVisibleUnderline);
   }
 
   private void setWhiteUi(boolean isWhite) {
@@ -323,6 +331,7 @@ public class NavigationBar {
     private boolean isVisibleSetting = false;
     private boolean isVisibleClose = false;
     private boolean isVisibleTextButton = false;
+    private boolean isVisibleUnderline;
     private int text = R.string.empty_string;
 
     private INavigationBarListener backListener = null;
@@ -491,6 +500,16 @@ public class NavigationBar {
       return this;
     }
 
+    /**
+     * 회색 밑 줄
+     *
+     * @return
+     */
+    public Builder unlderline() {
+      isVisibleUnderline = true;
+      return this;
+    }
+
     public NavigationBar build() {
       NavigationBar navigationBar = new NavigationBar(context);
       navigationBar.set(this);

+ 42 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/model/LifeplusPreferences.java

@@ -27,6 +27,9 @@ public class LifeplusPreferences {
   public final static String ENCRYPTED_PIN = "encrypted_pin";
   public final static String TOKEN = "token";
   public final static String AUTO_UNLOCK = "auto_unlock";
+  public final static String PUSH_ENABLED = "push_enabled";
+  public final static String PUSH_MARKETING_ENABLED = "push_marketing_enabled";
+  public final static String LOCATION_SERVICE_ENABLED = "location_service_enabled";
 
 
   /**
@@ -157,4 +160,43 @@ public class LifeplusPreferences {
   public boolean isAutoUnlock() {
     return preferences.get(AUTO_UNLOCK, true);
   }
+
+  /**
+   * 푸시 알림 사용 여부
+   *
+   * @param isEnabled
+   */
+  public void setPushEnabled(boolean isEnabled) {
+    preferences.put(PUSH_ENABLED, isEnabled);
+  }
+
+  public boolean isPushEnabeld() {
+    return preferences.get(PUSH_ENABLED, false);
+  }
+
+  /**
+   * 푸시 마케팅 알림 사용 여부
+   *
+   * @param isEnabled
+   */
+  public void setPushMarketingEnabled(boolean isEnabled) {
+    preferences.put(PUSH_MARKETING_ENABLED, isEnabled);
+  }
+
+  public boolean isPushMarketingEnabeld() {
+    return preferences.get(PUSH_MARKETING_ENABLED, false);
+  }
+
+  /**
+   * 위치 서비스 사용 여부
+   *
+   * @param isEnabled
+   */
+  public void setLocationServiceEnabled(boolean isEnabled) {
+    preferences.put(LOCATION_SERVICE_ENABLED, isEnabled);
+  }
+
+  public boolean isLocationServiceEnabled() {
+    return preferences.get(LOCATION_SERVICE_ENABLED, false);
+  }
 }

+ 2 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/faq/FAQWriteFragment.java

@@ -66,6 +66,7 @@ public class FAQWriteFragment extends FragmentBase<FAQWritePresenter> implements
       설정의 알림 수신 과 연동 시킨다.
       off 일 경우에만 해당 레이아웃을 표시한다.
        */
+      presenter.onViewPushChecked(switchPushOnOff.isChecked());
     });
 
     viewRegistration.setOnClickListener(view -> {
@@ -91,6 +92,7 @@ public class FAQWriteFragment extends FragmentBase<FAQWritePresenter> implements
   protected void defineActionBar() {
     ActionBarManager.getInstance().begin()
       .back(actionBar -> presenter.onClickBack(actionBar))
+      .unlderline()
       .show();
   }
 

+ 15 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/faq/FAQWriteModel.java

@@ -7,6 +7,7 @@ import io.reactivex.disposables.Disposable;
 import kr.co.zumo.app.lifeplus.bean.api.LifeplusAPIBean;
 import kr.co.zumo.app.lifeplus.bean.api.QuestionRequestBean;
 import kr.co.zumo.app.lifeplus.model.Model;
+import kr.co.zumo.app.lifeplus.model.SuperModel;
 import kr.co.zumo.app.lifeplus.model.module.APIQuestionRegisterModule;
 import kr.co.zumo.app.lifeplus.model.module.IAPIModuleListener;
 import kr.co.zumo.app.lifeplus.model.verify.Verifier;
@@ -192,4 +193,18 @@ public class FAQWriteModel extends Model {
     return result;
   }
 
+
+  /**
+   * 푸쉬 알림 설정
+   *
+   * @return
+   */
+  public boolean isPushEnabled() {
+    return SuperModel.getInstance().getPreferences().isPushEnabeld();
+  }
+
+  public void setPushEnabled(boolean isEnabled) {
+    SuperModel.getInstance().getPreferences().setPushEnabled(isEnabled);
+  }
+
 }

+ 28 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/faq/FAQWritePresenter.java

@@ -101,6 +101,14 @@ public class FAQWritePresenter extends Presenter<FAQWriteModel, IFAQWriteView> {
 
     setDeviceInfo();
     updateCurrentLength();
+
+    if (model.isPushEnabled()) {
+      view.setNoticeVisible(false);
+    }
+    else {
+      view.setNoticeVisible(true);
+      view.setNoticeChecked(false);
+    }
   }
 
   private void setDeviceInfo() {
@@ -109,10 +117,20 @@ public class FAQWritePresenter extends Presenter<FAQWriteModel, IFAQWriteView> {
     model.setDeviceInfo(info);
   }
 
+  /**
+   * 카테고리 선택
+   *
+   * @param index
+   */
   public void onViewCategoryChecked(int index) {
     model.setCategory(index);
   }
 
+  /**
+   * 문의 글 입력
+   *
+   * @param charSequence
+   */
   public void onViewInputContents(CharSequence charSequence) {
     // 유효성 검사
     String str = charSequence.toString();
@@ -123,6 +141,16 @@ public class FAQWritePresenter extends Presenter<FAQWriteModel, IFAQWriteView> {
     updateCurrentLength();
   }
 
+  /**
+   * 푸쉬 동의 선택
+   *
+   * @param checked
+   */
+  public void onViewPushChecked(boolean checked) {
+    model.setPushEnabled(checked);
+    // todo 푸쉬 관련 api 연동 필요 할 수 있음.
+  }
+
   private void updateCurrentLength() {
     // 글자 수 갱신
     view.setTypeLength(String.valueOf(model.getContents().length()));

+ 14 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/faq/MyFAQFragment.java

@@ -61,11 +61,20 @@ public class MyFAQFragment extends FragmentBase<MyFAQPresenter> implements IMyFa
 
   @Override
   protected void defineActionBar() {
-    ActionBarManager.getInstance().begin().title(R.string.my_faq)
+    defineActionBar(false);
+  }
+
+  private void defineActionBar(boolean hasUnderline) {
+    ActionBarManager.Builder builder = ActionBarManager.getInstance().begin().title(R.string.my_faq)
       .menu(actionBar -> presenter.onClickMenu(actionBar))
       .search(actionBar -> presenter.onClickSearch(actionBar))
-      .back(actionBar -> presenter.onClickBack(actionBar))
-      .show();
+      .back(actionBar -> presenter.onClickBack(actionBar));
+
+    if (hasUnderline) {
+      builder.unlderline();
+    }
+
+    builder.show();
   }
 
   @Override
@@ -108,6 +117,8 @@ public class MyFAQFragment extends FragmentBase<MyFAQPresenter> implements IMyFa
       myFAQList.setAdapter(adapter);
     }
     else {
+      defineActionBar(true);
+
       viewNoQuestion.setVisibility(View.VISIBLE);
       myFAQList.setVisibility(View.GONE);
     }

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/MainContentsWeatherView.java

@@ -69,7 +69,7 @@ public class MainContentsWeatherView extends MainContentsView /*implements ViewT
 
 //    itemView.getViewTreeObserver().addOnGlobalLayoutListener(this);
 
-    initWeatherY = ResourceUtil.getDimension(R.dimen.main_contents_weather_marget_top); //weather.getY();
+    initWeatherY = ResourceUtil.getDimension(R.dimen.main_contents_weather_margin_top); //weather.getY();
     initY = 0; //itemView.getY(); //getScreenY(itemView);
     Log.i("APP# MainContentsWeatherView | init", "|" + " initY: " + initY + " initWeatherY: " + initWeatherY + ", this: " + this);
   }

+ 43 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/setting/SettingModel.java

@@ -134,6 +134,9 @@ public class SettingModel extends Model {
       @Override
       public void onApiSuccess(SettingResultBean resultBean) {
         settingBean = resultBean.getData();
+        setPushEnabled(settingBean.isAllowPush());
+        setPushMarketingEnabled(settingBean.isAllowPushMarketing());
+        setLocationServiceEnabled(settingBean.isAllowLocationService());
 
         onResult(new Event.Builder(Event.RESULT).integer(Event.SETTING_LOAD).build());
       }
@@ -204,7 +207,47 @@ public class SettingModel extends Model {
   public boolean isAutoUnlock() {
     return SuperModel.getInstance().getPreferences().isAutoUnlock();
   }
+
   public void setAutoUnlock(boolean isEnabled) {
     SuperModel.getInstance().getPreferences().setAutoUnlock(isEnabled);
   }
+
+  /**
+   * 푸쉬 알림 설정
+   *
+   * @return
+   */
+  public boolean isPushEnabled() {
+    return SuperModel.getInstance().getPreferences().isPushEnabeld();
+  }
+
+  public void setPushEnabled(boolean isEnabled) {
+    SuperModel.getInstance().getPreferences().setPushEnabled(isEnabled);
+  }
+
+  /**
+   * 푸쉬 마케팅 알림 설정
+   *
+   * @return
+   */
+  public boolean isPushMarketingEnabled() {
+    return SuperModel.getInstance().getPreferences().isPushMarketingEnabeld();
+  }
+
+  public void setPushMarketingEnabled(boolean isEnabled) {
+    SuperModel.getInstance().getPreferences().setPushMarketingEnabled(isEnabled);
+  }
+
+  /**
+   * 위치 서비스 설정
+   *
+   * @return
+   */
+  public boolean isLocationServiceEnabled() {
+    return SuperModel.getInstance().getPreferences().isLocationServiceEnabled();
+  }
+
+  public void setLocationServiceEnabled(boolean isEnabled) {
+    SuperModel.getInstance().getPreferences().setLocationServiceEnabled(isEnabled);
+  }
 }

+ 3 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/setting/SettingPresenter.java

@@ -126,15 +126,15 @@ public class SettingPresenter extends Presenter<SettingModel, ISettingView> {
           // push / 위치 설정
           if (str.equals(SettingViewHolder.SWITCH_PUSH)) {
             // 푸쉬
-
+            model.setPushEnabled(bool);
           }
           else if (str.equals(SettingViewHolder.SWITCH_MARKETING)) {
             // 마케팅
-
+            model.setPushMarketingEnabled(bool);
           }
           else if (str.equals(SettingViewHolder.SWITCH_LOCATION)) {
             // 위치
-
+            model.setLocationServiceEnabled(bool);
           }
         }
         break;

+ 7 - 0
app/src/main/res/layout/action_bar.xml

@@ -189,6 +189,13 @@
       android:layout_height="wrap_content"
       android:orientation="vertical"
       app:layout_constraintGuide_end="7dp"/>
+
+    <View
+      android:id="@+id/view_underline"
+      android:layout_width="match_parent"
+      android:layout_height="1dp"
+      android:background="@color/CE5E5E5"
+      app:layout_constraintBottom_toBottomOf="parent"/>
   </android.support.constraint.ConstraintLayout>
 
 </RelativeLayout>

+ 1 - 1
app/src/main/res/layout/fragment_my_faq_write.xml

@@ -110,7 +110,7 @@
         android:inputType="textMultiLine"
         android:lineSpacingExtra="6sp"
         android:maxLength="2000"
-        android:minHeight="214dp"
+        android:minHeight="100dp"
         android:padding="13dp"
         android:textSize="14sp"
         />

+ 1 - 1
app/src/main/res/layout/main_contents_weather.xml

@@ -7,7 +7,7 @@
   android:layout_height="274dp"
   android:background="@color/CFFFFFF"
   android:orientation="vertical"
-  android:paddingTop="@dimen/main_contents_weather_marget_top">
+  android:paddingTop="@dimen/main_contents_weather_margin_top">
 
   <LinearLayout
     android:id="@+id/layout_container_weather"

+ 2 - 2
app/src/main/res/values/dimens.xml

@@ -3,8 +3,8 @@
   <dimen name="activity_horizontal_margin">16dp</dimen>
   <dimen name="activity_vertical_margin">16dp</dimen>
   <dimen name="fab_margin">22dp</dimen>
-  <dimen name="action_bar_height">58dp</dimen>
-  <dimen name="main_contents_weather_marget_top">96dp</dimen>  <!--38dp + 58dp-->
+  <dimen name="action_bar_height">52dp</dimen>
+  <dimen name="main_contents_weather_margin_top">90dp</dimen>  <!--38dp + 52dp-->
   <dimen name="main_contents_start_gap">57dp</dimen>
   <dimen name="main_contents_image_width">285dp</dimen>
   <dimen name="main_contents_image_height">328dp</dimen>