Преглед изворни кода

[이벤트][Common] 이벤트 앨범 접근 허용 팝업 구현

Hasemi пре 6 година
родитељ
комит
ed0c4e303d

+ 63 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/dialog/AlbumPermissionDialog.java

@@ -0,0 +1,63 @@
+package kr.co.zumo.app.lifeplus.view.dialog;
+
+import android.app.Dialog;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.view.View;
+
+import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.view.Event;
+
+/**
+ * AlbumPermissionDialog
+ * <pre>
+ * </pre>
+ *
+ * @author 하세미
+ * @version 1.0
+ * @history 하세미   [2019-02-01]   [최초 작성]
+ * @since 2019-02-01
+ */
+public class AlbumPermissionDialog extends  DialogBase<ICustomDialogListener<AlbumPermissionDialog>>  {
+
+  @NonNull
+  @Override
+  public Dialog onCreateDialog(Bundle savedInstanceState) {
+    android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(getActivity());
+    View view = getActivity().getLayoutInflater().inflate(R.layout.album_permission_dialog, null); // TODO: 디자인 시안 안나옴 추후 적용예정
+    setupView(view);
+
+    builder.setView(view);
+    Dialog dialog = builder.create();
+    dialog.setCancelable(false);
+    dialog.setCanceledOnTouchOutside(false);
+    this.setCancelable(false);
+
+    // alert 의 기본 흰 배경 제거
+    dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
+
+    return dialog;
+  }
+
+  private void setupView(View view) {
+
+    //설정이동
+    view.findViewById(R.id.text_view_go_setting).setOnClickListener(view1 -> {
+      getCustomListener().onDialogResult(AlbumPermissionDialog.this, new Event.Builder(Event.SETTING).build());
+    });
+
+
+    //취소클릭
+    view.findViewById(R.id.text_view_cancel).setOnClickListener(view1 -> {
+      getCustomListener().onDialogCanceled(AlbumPermissionDialog.this);
+    });
+
+  }
+
+
+  @Override
+  protected void onActivityCreatedInternal() {
+
+  }
+
+}

+ 2 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/dialog/DialogID.java

@@ -40,12 +40,13 @@ public class DialogID {
   public static final int COIN_SAVING = 18;
   public static final int SEARCH_FILTER = 19;
   public static final int SEARCH_FILTER_DETAIL = 20;
+  public static final int ALBUM_PERMISSION = 21;
 
 
   @Retention(RetentionPolicy.SOURCE)
   @IntDef({NONE, ALERT, PIN_CONFIRM, WEB, ADD_REGISTRATION, CONFIRM, PROMOTION, SHARE, COIN_INFORMATION, CATEGORY_FILTER, PIN_UNLOCK
     , MAIN_SECOND_FILTER, POLICY, APP_REVIEW, LOADING, MORE_INFO, PROMOTION_FULL_SCREEN, EVENT_NOTICE, COIN_SAVING, SEARCH_FILTER
-    , SEARCH_FILTER_DETAIL})
+    , SEARCH_FILTER_DETAIL, ALBUM_PERMISSION})
   public @interface ID {}
 
 }

+ 4 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/dialog/factory/BasicDialogFactory.java

@@ -4,6 +4,7 @@
 package kr.co.zumo.app.lifeplus.view.dialog.factory;
 
 import kr.co.zumo.app.lifeplus.view.dialog.AddRegistrationDialog;
+import kr.co.zumo.app.lifeplus.view.dialog.AlbumPermissionDialog;
 import kr.co.zumo.app.lifeplus.view.dialog.AlertDialog;
 import kr.co.zumo.app.lifeplus.view.dialog.AppReviewDialog;
 import kr.co.zumo.app.lifeplus.view.dialog.CategoryFilterDialog;
@@ -98,6 +99,9 @@ public class BasicDialogFactory implements IDialogFactory {
       case DialogID.SEARCH_FILTER_DETAIL:
         dialog = new SearchFilterDetailDialog();
         break;
+      case DialogID.ALBUM_PERMISSION:
+        dialog = new AlbumPermissionDialog();
+        break;
       default:
         throw new Error("Unsupported dialog.");
     }

+ 4 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/EventQuestionFragment.java

@@ -116,7 +116,10 @@ public class EventQuestionFragment extends FragmentBase<EventQuestionPresenter>
   @Override
   public void goSettingPermission() {
     Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
-      .setData(Uri.parse("package:" + getContext().getPackageName()));
+      .setData(Uri.parse("package:" + getContext().getPackageName()))
+      .addCategory(Intent.CATEGORY_DEFAULT)
+      .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+    
     startActivity(intent);
   }
 

+ 37 - 21
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/EventQuestionPresenter.java

@@ -1,16 +1,14 @@
 package kr.co.zumo.app.lifeplus.view.screen.event;
 
-import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.bean.api.EventDetailBean;
 import kr.co.zumo.app.lifeplus.helper.NavigationBar;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
-import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 import kr.co.zumo.app.lifeplus.view.DoubleChecker;
 import kr.co.zumo.app.lifeplus.view.Event;
-import kr.co.zumo.app.lifeplus.view.dialog.ConfirmDialog;
+import kr.co.zumo.app.lifeplus.view.dialog.AlbumPermissionDialog;
 import kr.co.zumo.app.lifeplus.view.dialog.DialogBuilder;
 import kr.co.zumo.app.lifeplus.view.dialog.DialogID;
-import kr.co.zumo.app.lifeplus.view.dialog.ICustomConfirmListener;
+import kr.co.zumo.app.lifeplus.view.dialog.ICustomDialogListener;
 import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 
 /**
@@ -97,7 +95,7 @@ public class EventQuestionPresenter extends Presenter<EventQuestionModel, IEvent
         view.uploadAlbumImage();
         break;
       case Event.DIALOG: //권한 설정 완전 거부시 다이얼로그 임시
-        showPermissionCheckDialog();
+        showPermissionDialog();
         break;
       default:
         break;
@@ -118,29 +116,47 @@ public class EventQuestionPresenter extends Presenter<EventQuestionModel, IEvent
     onBackPressed();
   }
 
-  private void showPermissionCheckDialog() {
-    new DialogBuilder<ConfirmDialog, ICustomConfirmListener>(getFragmentManager(), DialogID.CONFIRM)
-      .listener(new ICustomConfirmListener<ConfirmDialog>() {
-        @Override
-        public void onPositiveResult(ConfirmDialog dialog, Event event) {
-          view.goSettingPermission();
-        }
+//  private void showPermissionCheckDialog() {
+//    new DialogBuilder<ConfirmDialog, ICustomConfirmListener>(getFragmentManager(), DialogID.CONFIRM)
+//      .listener(new ICustomConfirmListener<ConfirmDialog>() {
+//        @Override
+//        public void onPositiveResult(ConfirmDialog dialog, Event event) {
+//          view.goSettingPermission();
+//        }
+//
+//        @Override
+//        public void onNegativeResult(ConfirmDialog dialog, Event event) {
+//          dialog.dispose();
+//        }
+//
+//        @Override
+//        public void onDialogCanceled(ConfirmDialog dialog) {
+//          dialog.dispose();
+//        }
+//      })
+//      .attribute(dialog -> {
+//        dialog.setText(ResourceUtil.getString(R.string.album_permission_alert_contents));
+//        dialog.setPositiveButtonLabelId(R.string.album_permission_alert_positive);
+//        dialog.setNegativeButtonLabelId(R.string.album_permission_alert_negative);
+//      })
+//      .show();
+//  }
+
+  private void showPermissionDialog(){
+
+    new DialogBuilder<AlbumPermissionDialog, ICustomDialogListener>(getFragmentManager(), DialogID.ALBUM_PERMISSION)
+      .listener(new ICustomDialogListener<AlbumPermissionDialog>() {
 
         @Override
-        public void onNegativeResult(ConfirmDialog dialog, Event event) {
-          dialog.dispose();
+        public void onDialogResult(AlbumPermissionDialog dialog, Event event) {
+          view.goSettingPermission();
         }
 
         @Override
-        public void onDialogCanceled(ConfirmDialog dialog) {
-          dialog.dispose();
+        public void onDialogCanceled(AlbumPermissionDialog dialog) {
+            dialog.dispose();
         }
       })
-      .attribute(dialog -> {
-        dialog.setText(ResourceUtil.getString(R.string.album_permission_alert_contents));
-        dialog.setPositiveButtonLabelId(R.string.album_permission_alert_positive);
-        dialog.setNegativeButtonLabelId(R.string.album_permission_alert_negative);
-      })
       .show();
   }
 }

+ 86 - 0
app/src/main/res/layout/album_permission_dialog.xml

@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout
+  xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
+  xmlns:tools="http://schemas.android.com/tools"
+  android:layout_width="wrap_content"
+  android:layout_height="wrap_content"
+  tools:background="@color/C000000">
+
+  <android.support.constraint.ConstraintLayout
+    android:layout_width="287dp"
+    android:layout_height="221dp"
+    android:background="@drawable/rectangle_radius_4"
+    app:layout_constraintBottom_toBottomOf="parent"
+    app:layout_constraintEnd_toEndOf="parent"
+    app:layout_constraintStart_toStartOf="parent"
+    app:layout_constraintTop_toTopOf="parent">
+
+    <TextView
+      android:id="@+id/text_view_title"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_marginTop="35dp"
+      android:lineSpacingExtra="7sp"
+      android:text="@string/album_permission_alert_title"
+      android:textColor="@color/C000000"
+      android:textSize="18sp"
+      android:textStyle="bold"
+      app:layout_constraintEnd_toEndOf="parent"
+      app:layout_constraintStart_toStartOf="parent"
+      app:layout_constraintTop_toTopOf="parent"
+      />
+
+    <TextView
+      android:id="@+id/text_view_dialog_message"
+      android:layout_width="wrap_content"
+      android:layout_height="45dp"
+      android:layout_marginTop="20dp"
+      android:lineSpacingExtra="6sp"
+      android:text="@string/album_permission_alert_contents"
+      android:textAlignment="center"
+      android:textColor="@color/C000000"
+      android:textSize="14sp"
+      app:layout_constraintEnd_toEndOf="parent"
+      app:layout_constraintStart_toStartOf="parent"
+      app:layout_constraintTop_toBottomOf="@+id/text_view_title"
+      />
+
+    <TextView
+      android:id="@+id/text_view_cancel"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_marginStart="26dp"
+      android:layout_marginBottom="22dp"
+      android:gravity="center_horizontal"
+      android:lineSpacingExtra="6sp"
+      android:padding="10dp"
+      android:text="@string/album_permission_alert_negative"
+      android:textColor="@color/C000000"
+      android:textSize="14sp"
+      android:textStyle="bold"
+      app:layout_constraintBottom_toBottomOf="parent"
+      app:layout_constraintStart_toStartOf="parent"
+
+      />
+
+    <TextView
+      android:id="@+id/text_view_go_setting"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_marginEnd="24dp"
+      android:layout_marginBottom="22dp"
+      android:gravity="center_horizontal"
+      android:lineSpacingExtra="6sp"
+      android:padding="10dp"
+      android:text="@string/album_permission_alert_positive"
+      android:textColor="@color/C000000"
+      android:textSize="14sp"
+      android:textStyle="bold"
+      app:layout_constraintBottom_toBottomOf="parent"
+      app:layout_constraintEnd_toEndOf="parent"
+      />
+
+
+  </android.support.constraint.ConstraintLayout>
+</android.support.constraint.ConstraintLayout>

+ 3 - 3
app/src/main/res/values/strings.xml

@@ -22,9 +22,9 @@
 
   <!--앨범접근권한 허용 알럿-->
   <string name="album_permission_alert_title">앨범 접근 허용</string>
-  <string name="album_permission_alert_contents">앨범 사진을 사용하려면 앨범 접근 권한을 허용해야 합니다.</string>
-  <string name="album_permission_alert_negative">허용안함</string>
-  <string name="album_permission_alert_positive">허용</string>
+  <string name="album_permission_alert_contents">앨범 사진을 사용을 위해서 설정이 필요합니다.\n위치 설정을 변경하시겠어요?</string>
+  <string name="album_permission_alert_negative">취소</string>
+  <string name="album_permission_alert_positive">설정으로 이동</string>
   <!--페이스북-->
   <!--<string name="facebook_app_id">252658048750865</string>--> <!--test id-->
   <string name="facebook_app_id">1010954478934932</string>  <!-- zumo -->