浏览代码

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

Hasemi 7 年之前
父节点
当前提交
a89173de90

+ 1 - 1
app/src/common/java/kr/co/zumo/app/lifeplus/network/api/LifeplusAPIService.java

@@ -80,7 +80,7 @@ public class LifeplusAPIService extends RetrofitService implements LifeplusAPI {
   }
 
   private LifeplusAPI api() {
-    return retrofit(getApiUrl(), LifeplusAPI.class, 2000);
+    return retrofit(getApiUrl(), LifeplusAPI.class, 5000);
   }
 
   /**

+ 52 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/supervisor/FragmentJumpBackChanger.java

@@ -0,0 +1,52 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.supervisor;
+
+import android.support.annotation.IdRes;
+import android.support.v4.app.FragmentManager;
+
+import java.util.List;
+
+import kr.co.zumo.app.lifeplus.view.screen.factory.FragmentFactory;
+
+/**
+ * 화면 전환을 관리하는 클래스
+ * - fragment back stack 중 skip 대상 id 는 pop 하고 전환한다.
+ * - 예> 회원 가입/회원 탈퇴 등 절차를 여러 단계로 진행하다가 뒤로 이동할 때는 절차 시작 전의 스크린으로 돌아가야한다.
+ * <pre>
+ * - Fragment 전환
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2018. 11. 01.]   [최초 작성]
+ * @since 2018. 11. 01.
+ */
+public class FragmentJumpBackChanger extends FragmentBackStackChanger {
+
+  private List<String> skipBackIds;
+
+  public FragmentJumpBackChanger(FragmentManager fragmentManager, @IdRes int containerId, FragmentFactory fragmentFactory, List<String> ids) {
+    super(fragmentManager, containerId, fragmentFactory);
+    this.skipBackIds = ids;
+  }
+
+  /**
+   * 스크린 전환을 이전으로 진행 효과를 주면서 실행
+   * - back stack 에서 지정한 id 를 탐색하여 이동
+   *
+   * @param id ScreenID.LOGIN
+   */
+  public void changeToBack(@ScreenID.FragmentID int id) {
+
+    FragmentManager fragmentManager = this.fragmentManager;
+
+    /**
+     * id 까지 이동 됨.
+     */
+    fragmentManager.popBackStack(String.valueOf(id), 0);
+
+  }
+
+}

+ 31 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/command/FragmentJumpBackCommand.java

@@ -0,0 +1,31 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.view.command;
+
+import kr.co.zumo.app.lifeplus.helper.ScreenChangerHelper;
+import kr.co.zumo.app.lifeplus.supervisor.FragmentJumpBackChanger;
+import kr.co.zumo.app.lifeplus.supervisor.ScreenChanger;
+import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
+import kr.co.zumo.app.lifeplus.view.screen.factory.FragmentFactory;
+
+/**
+ * FragmentSkipBackCommand
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2018. 10. 23.]   [최초 작성]
+ * @since 2018. 10. 23.
+ */
+public class FragmentJumpBackCommand extends FragmentChangeCommand {
+
+  public FragmentJumpBackCommand(@ScreenID.FragmentID int fragmentId, @ScreenID.Direction int direction) {
+    super(fragmentId, direction);
+  }
+
+  protected ScreenChanger getScreenChanger(FragmentFactory factory, ScreenChangerHelper helper) {
+    return new FragmentJumpBackChanger(helper.getAppCompatActivity().getSupportFragmentManager(), helper.getContainerId(), factory, helper.getSkipBackIds());
+  }
+}

+ 10 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/Presenter.java

@@ -21,6 +21,7 @@ import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.IEventListener;
 import kr.co.zumo.app.lifeplus.view.IView;
 import kr.co.zumo.app.lifeplus.view.command.Command;
+import kr.co.zumo.app.lifeplus.view.command.FragmentJumpBackCommand;
 import kr.co.zumo.app.lifeplus.view.command.FragmentSkipBackCommand;
 import kr.co.zumo.app.lifeplus.view.command.HomeCommand;
 import kr.co.zumo.app.lifeplus.view.dialog.ConfirmDialog;
@@ -201,6 +202,15 @@ public abstract class Presenter<M extends Model, V extends IView> implements ILi
     onCommand(new FragmentSkipBackCommand(id, ScreenID.DIRECTION_BACK));
   }
 
+  /**
+   * 지정 아이디 까지 건너뜀.
+   *
+   * @param id
+   */
+  protected void jump(@ScreenID.FragmentID int id) {
+    onCommand(new FragmentJumpBackCommand(id, ScreenID.DIRECTION_BACK));
+  }
+
   protected void home() {
     onCommand(new HomeCommand(ScreenID.MAIN, ScreenID.DIRECTION_BACK));
   }

+ 6 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/bucketlist/AddMyBucketListFragment.java

@@ -190,7 +190,12 @@ public class AddMyBucketListFragment extends FragmentBase<AddMyBucketListPresent
   @Override
   public void setContentsText(String str) {
     editTextMyBucketTitle.setText(str);
-    editTextMyBucketTitle.setSelection(str.length());
+    int max = getResources().getInteger(R.integer.bucket_subject_max_length);
+    int len = str.length();
+    if (len > max) {
+      len = max;
+    }
+    editTextMyBucketTitle.setSelection(len);
   }
 
   @Override

+ 82 - 31
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/bucketlist/BucketListModelHelper.java

@@ -26,7 +26,7 @@ import kr.co.zumo.app.lifeplus.model.module.IAPIModuleListener;
  * @history 민효동   [2018. 11. 14.]   [최초 작성]
  * @since 2018. 11. 14.
  */
-public class BucketListModelHelper implements Disposable {
+public class BucketListModelHelper {
   private static BucketListModelHelper ourInstance = new BucketListModelHelper();
   private Disposable disposable;
 
@@ -39,6 +39,11 @@ public class BucketListModelHelper implements Disposable {
 
   private ArrayList<BucketWithTagBean> bucketList;
 
+  /**
+   * 버킷 카운트
+   *
+   * @return
+   */
   public int getCountOfBucket() {
     if (null != bucketList) {
       return bucketList.size();
@@ -48,21 +53,49 @@ public class BucketListModelHelper implements Disposable {
     }
   }
 
+  /**
+   * 버킷 리스트
+   *
+   * @return
+   */
   public ArrayList<BucketWithTagBean> getBucketList() {
     return bucketList;
   }
 
-  public void setBucketList(ArrayList<BucketWithTagBean> bucketList) {
-    this.bucketList = bucketList;
-  }
-
+  /**
+   * 버킷 추가
+   *
+   * @param bean
+   */
   public void addBucket(BucketWithTagBean bean) {
     if (null == bucketList) {
       bucketList = new ArrayList<>();
     }
-    bucketList.add(bean);
+    bucketList.add(0, bean);
+  }
+
+  /**
+   * 버킷 번호로 제거
+   *
+   * @param bucketNumber
+   */
+  public void removeBucketByNumber(String bucketNumber) {
+    int len = bucketList.size();
+    for (int i = 0; i < len; ++i) {
+      BucketWithTagBean bean = bucketList.get(i);
+      if (bean.getBucketNumber().equals(bucketNumber)) {
+        bucketList.remove(i);
+        break;
+      }
+    }
   }
 
+  /**
+   * 버킷 제거
+   *
+   * @param index
+   * @return
+   */
   public BucketWithTagBean removeBucketAt(int index) {
     if (null == bucketList) {
       bucketList = new ArrayList<>();
@@ -75,6 +108,12 @@ public class BucketListModelHelper implements Disposable {
     return bucketList.remove(index);
   }
 
+  /**
+   * 버킷 가져옴
+   *
+   * @param index
+   * @return
+   */
   public BucketWithTagBean getBucketAt(int index) {
     if (null == bucketList) {
       bucketList = new ArrayList<>();
@@ -87,10 +126,14 @@ public class BucketListModelHelper implements Disposable {
     return bucketList.get(index);
   }
 
-  public Disposable refresh(IAPIModuleListener<BucketListResultBean> listener) {
-    return refresh(new BucketListRequestBean(SuperModel.getInstance().getUserId(), 1, 1000, ""), listener);
-  }
-
+  /**
+   * 버킷 리스트를 로드한다.
+   * - 이미 로드된 상태라면 기존 것을 가져간다.
+   *
+   * @param requestBean
+   * @param listener
+   * @return
+   */
   public Disposable loadMyBucketList(BucketListRequestBean requestBean, IAPIModuleListener<BucketListResultBean> listener) {
 
     Log.e("APP# BucketListModelHelper | loadMyBucketList", "|");
@@ -105,12 +148,31 @@ public class BucketListModelHelper implements Disposable {
     else {
       Log.e("APP# BucketListModelHelper | loadMyBucketList", "|" + requestBean.toPrettyJson());
       stopLoading();
-      refresh(requestBean, listener);
+      return refresh(requestBean, listener);
     }
 
-    return this;
+    return null;
   }
 
+  /**
+   * 버킷 리스트를 갱신한다.
+   * - 리스트를 참조하는 모든 객체에 적용된다.
+   *
+   * @param listener
+   * @return
+   */
+  public Disposable refresh(IAPIModuleListener<BucketListResultBean> listener) {
+    return refresh(new BucketListRequestBean(SuperModel.getInstance().getUserId(), 1, 1000, ""), listener);
+  }
+
+  /**
+   * 버킷 리스트를 갱신한다.
+   * - 리스트를 참조하는 모든 객체에 적용된다.
+   *
+   * @param requestBean
+   * @param listener
+   * @return
+   */
   public Disposable refresh(BucketListRequestBean requestBean, IAPIModuleListener<BucketListResultBean> listener) {
     disposable = new APIBucketListModule().call(requestBean, new IAPIModuleListener<BucketListResultBean>() {
       @Override
@@ -140,7 +202,7 @@ public class BucketListModelHelper implements Disposable {
       }
     });
 
-    return this;
+    return disposable;
   }
 
   private void stopLoading() {
@@ -150,27 +212,16 @@ public class BucketListModelHelper implements Disposable {
     }
   }
 
+  /**
+   * dispose
+   */
   public void dispose() {
     stopLoading();
+    bucketList = null;
   }
 
-  @Override
-  public boolean isDisposed() {
-    if (null != disposable) {
-      return disposable.isDisposed();
-    }
-    return true;
-  }
-
-  public void removeBucketByNumber(String bucketNumber) {
-    int len = bucketList.size();
-    for (int i = 0; i < len; ++i) {
-      BucketWithTagBean bean = bucketList.get(i);
-      if (bean.getBucketNumber().equals(bucketNumber)) {
-        bucketList.remove(i);
-        break;
-      }
-    }
-  }
+  /***********************************
+   * Disposable
+   ***********************************/
 }
 

+ 8 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/bucketlist/MyBucketListEditPresenter.java

@@ -50,7 +50,14 @@ public class MyBucketListEditPresenter extends AddMyBucketListPresenter {
         break;
       case Event.DELETE:
         // 삭제 완료
-        back(ScreenID.MY_BUCKET_LIST);
+
+        if (BucketListModelHelper.getInstance().getCountOfBucket() == 0) {
+          jump(ScreenID.MY_MAIN);
+        }
+        else {
+          back(ScreenID.MY_BUCKET_LIST);
+        }
+
         break;
       default:
         super.onResult(event);

+ 1 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/bucketlist/MyBucketListViewHolder.java

@@ -48,11 +48,10 @@ public class MyBucketListViewHolder extends RecyclerView.ViewHolder {
       //버킷리스트 달성 완료 체크 유무
       imageViewBucketCheck.setVisibility(View.VISIBLE);
       layoutCardView.setBackgroundColor(itemView.getResources().getColor(R.color.CE5E5E5));
-
     }
     else {
       imageViewBucketCheck.setVisibility(View.GONE);
-      layoutCardView.setBackgroundColor(itemView.getResources().getColor(R.color.CFFFFFF));
+      layoutCardView.setBackground(itemView.getResources().getDrawable(R.drawable.faq_text_border));
     }
 
     ArrayList<TagBean> tags = bean.getTagList();

+ 1 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/main/MyMainModel.java

@@ -48,6 +48,7 @@ public class MyMainModel extends Model {
   @Override
   protected void destroyInternal() {
     stopLoading();
+    BucketListModelHelper.getInstance().dispose();
   }
 
   @Override

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

@@ -22,7 +22,7 @@
     android:layout_marginEnd="20dp"
     android:background="@null"
     android:hint="@string/make_my_bucket_list"
-    android:maxLength="15"
+    android:maxLength="@integer/bucket_subject_max_length"
     android:imeOptions="normal"
     android:lineSpacingExtra="11sp"
     android:maxLines="2"

+ 4 - 0
app/src/main/res/values/integer.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+  <item type="integer" name="bucket_subject_max_length">15</item>
+</resources>

+ 0 - 1
app/src/main/res/values/strings.xml

@@ -650,5 +650,4 @@
   <string name="outside">실외</string>
 
   <string name="tag_title">연관태그 추천 콘텐츠 %s개</string>
-
 </resources>