/* * The MIT License (MIT) * * Copyright (c) 2014-2015 Umeng, Inc * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package com.umeng.comm.ui.dialogs; import android.annotation.SuppressLint; import android.content.ClipData; import android.content.Context; import android.graphics.Color; import android.os.Build; import android.view.View; import com.umeng.comm.core.beans.CommConfig; import com.umeng.comm.core.beans.CommUser; import com.umeng.comm.core.beans.CommUser.Permisson; import com.umeng.comm.core.beans.CommUser.SubPermission; import com.umeng.comm.core.beans.FeedItem; import com.umeng.comm.core.utils.ResFinder; import com.umeng.comm.core.utils.ResFinder.ResType; import com.umeng.comm.core.utils.ToastMsg; import com.umeng.comm.ui.mvpview.MvpFeedDetailActivityView; import com.umeng.comm.ui.presenter.impl.FeedDetailActivityPresenter; /** * Feed详情页的举报、删除、拷贝Dialog */ public class FeedActionDialog extends ActionDialog { FeedDetailActivityPresenter mPresenter; public FeedActionDialog(Context context) { super(context); mPresenter = new FeedDetailActivityPresenter(); mPresenter.attach(context); } public void attachView(MvpFeedDetailActivityView view) { mPresenter.setActivityView(view); } public void setFeedId(String feedId) { mFeedItem = new FeedItem(); mFeedItem.id = feedId; this.setFeedItem(mFeedItem); } @Override protected void initViewClickListeners() { super.initViewClickListeners(); // 自己不能举报自己 if( mFeedItem == null || CommConfig.getConfig().loginedUser.id.equals(mFeedItem.creator.id) ) { mReportView.setVisibility(View.GONE); } mCopyView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { copyToClipboard(); FeedActionDialog.this.dismiss(); } }); mDeleteView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FeedActionDialog.this.dismiss(); mPresenter.showDeleteConfirmDialog(); } }); changeBackground(); } /** * * 在显示 or 隐藏 某些View时,需要改变他们的背景</br> */ private void changeBackground(){ if ( mReportView.getVisibility() == View.GONE ) { mDeleteView.setBackgroundResource(ResFinder.getResourceId(ResType.DRAWABLE, "umeng_comm_more_radius_top")); mCopyView.setBackgroundResource(ResFinder.getResourceId(ResType.DRAWABLE, "umeng_comm_more_radius_bottom")); } else { mDeleteView.setBackgroundResource(ResFinder.getResourceId(ResType.DRAWABLE, "umeng_comm_more_radius_none")); } if ( mDeleteView.getVisibility() == View.GONE ) { mReportView.setBackgroundResource(ResFinder.getResourceId(ResType.DRAWABLE, "umeng_comm_more_radius_top")); mCopyView.setBackgroundResource(ResFinder.getResourceId(ResType.DRAWABLE, "umeng_comm_more_radius_bottom")); } } @Override public void onAttachedToWindow() { super.onAttachedToWindow(); if (!isDeleteable()) { mDeleteView.setVisibility(View.GONE); mReportView.setVisibility(View.VISIBLE); } else { mDeleteView.setBackgroundColor(Color.WHITE); } } public void setFeedItem(FeedItem feedItem) { mFeedItem = feedItem; mPresenter.setFeedItem(feedItem); // 自己不能举报自己.[注意:考虑来自于推送的情况] if( mFeedItem.creator != null && CommConfig.getConfig().loginedUser.id.equals(mFeedItem.creator.id) ) { mReportView.setVisibility(View.GONE); } else { mReportView.setVisibility(View.VISIBLE); } changeBackground(); } @SuppressWarnings("deprecation") @SuppressLint("NewApi") private void copyToClipboard() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ClipData data = ClipData.newPlainText("feed_text", mFeedItem.text); android.content.ClipboardManager mClipboard = (android.content.ClipboardManager) getContext() .getSystemService(Context.CLIPBOARD_SERVICE); mClipboard.setPrimaryClip(data); } else { android.text.ClipboardManager mClipboard = (android.text.ClipboardManager) getContext() .getSystemService(Context.CLIPBOARD_SERVICE); mClipboard.setText(mFeedItem.text); } } /** * 是否可删除该feed。可删除的条件是自己的feed、管理员有删除内容的权限</br> * * @return */ private boolean isDeleteable() { CommUser loginedUser = CommConfig.getConfig().loginedUser; boolean deleteable = mFeedItem != null && loginedUser.id.equals(mFeedItem.creator.id); // 自己的feed情况 boolean hasDeletePermission = loginedUser.permisson == Permisson.ADMIN // 管理员删除内容权限 && loginedUser.subPermissions.contains(SubPermission.DELETE_CONTENT); return deleteable || hasDeletePermission; } @Override protected void report() { String loginedUid = CommConfig.getConfig().loginedUser.id; if (mFeedItem.creator.id.equals(loginedUid)) { ToastMsg.showShortMsgByResName("umeng_comm_do_not_spam_yourself_content"); return; } mPresenter.showReportConfirmDialog(); } }