analysis: full official-app reverse artifacts (jadx sources, ghidra libcxsdk decomp, authoritative protocol conclusions) + docs
This commit is contained in:
@@ -0,0 +1,411 @@
|
||||
package cn.com.magnity.magnitycx;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.content.FileProvider;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.Button;
|
||||
import android.widget.GridView;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ListAdapter;
|
||||
import android.widget.Toast;
|
||||
import cn.com.magnity.magnitycx.MediaActivity;
|
||||
import cn.com.magnity.magnitycx.QueryDialogFragment;
|
||||
import cn.com.magnity.magnitycx.sdk.DelegateMediaStatusChanged;
|
||||
import cn.com.magnity.magnitycx.sdk.GlobalFunc;
|
||||
import cn.com.magnity.magnitycx.sdk.MagParameter;
|
||||
import cn.com.magnity.magnitycx.sdk.SharedPreferencesManager;
|
||||
import com.baidu.mobstat.StatService;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class FragmentMedia extends Fragment implements MediaActivity.DelegateBackPressed, QueryDialogFragment.DelegateQueryResult, AbsListView.OnScrollListener {
|
||||
private static final int MODE_NORMAL = 0;
|
||||
private static final int MODE_SELECTION = 1;
|
||||
private Button btnDelete_;
|
||||
private Button btnSelectAll_;
|
||||
private Button btnSocialShare_;
|
||||
private ArrayList<String> fileNames_;
|
||||
private int firstVisiblePos_;
|
||||
private GridView gridView_;
|
||||
private int index_;
|
||||
private Map mapSelStatus_;
|
||||
private MediaGridViewAdapter mediaGridViewAdapter_;
|
||||
private MediaItemClickListener mediaItemClickListener_;
|
||||
private MediaItemLongClickListener mediaItemLongClickListener_;
|
||||
private MediaMenuClickListener mediaMenuClickListener_;
|
||||
private ViewGroup menu_;
|
||||
private int mode_ = 0;
|
||||
private int visibleItemCount_;
|
||||
|
||||
@Override // android.support.v4.app.Fragment
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setRetainInstance(true);
|
||||
this.fileNames_ = new ArrayList<>();
|
||||
this.mediaMenuClickListener_ = new MediaMenuClickListener();
|
||||
this.mediaItemClickListener_ = new MediaItemClickListener();
|
||||
this.mediaItemLongClickListener_ = new MediaItemLongClickListener();
|
||||
this.mapSelStatus_ = new HashMap();
|
||||
}
|
||||
|
||||
@Override // android.support.v4.app.Fragment
|
||||
@Nullable
|
||||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
View rootView = inflater.inflate(R.layout.fragment_media, (ViewGroup) null);
|
||||
initViews(rootView);
|
||||
return rootView;
|
||||
}
|
||||
|
||||
private void initViews(View rootView) {
|
||||
this.menu_ = (ViewGroup) rootView.findViewById(R.id.id_media_menu);
|
||||
if (this.mode_ == 0) {
|
||||
this.menu_.setVisibility(8);
|
||||
} else if (this.mode_ == 1) {
|
||||
this.menu_.setVisibility(0);
|
||||
}
|
||||
this.btnSocialShare_ = (Button) rootView.findViewById(R.id.id_btn_social_share);
|
||||
this.btnSocialShare_.setOnClickListener(this.mediaMenuClickListener_);
|
||||
this.btnDelete_ = (Button) rootView.findViewById(R.id.id_btn_delete);
|
||||
this.btnDelete_.setOnClickListener(this.mediaMenuClickListener_);
|
||||
this.btnSelectAll_ = (Button) rootView.findViewById(R.id.id_btn_select_all);
|
||||
this.btnSelectAll_.setOnClickListener(this.mediaMenuClickListener_);
|
||||
this.gridView_ = (GridView) rootView.findViewById(R.id.id_photowall);
|
||||
this.gridView_.setOnScrollListener(this);
|
||||
this.gridView_.setOnItemClickListener(this.mediaItemClickListener_);
|
||||
this.gridView_.setOnItemLongClickListener(this.mediaItemLongClickListener_);
|
||||
setAdapter();
|
||||
}
|
||||
|
||||
private void setAdapter() {
|
||||
updateFileList();
|
||||
this.mediaGridViewAdapter_ = new MediaGridViewAdapter(getActivity(), this.gridView_, this.fileNames_, this.mapSelStatus_);
|
||||
this.mediaGridViewAdapter_.setMode(this.mode_);
|
||||
this.gridView_.setAdapter((ListAdapter) this.mediaGridViewAdapter_);
|
||||
}
|
||||
|
||||
private void updateFileList() {
|
||||
GlobalFunc globalFunc = MagApplication.globalFunc;
|
||||
GlobalFunc.updateFileList(this.fileNames_);
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public void updateGridView() {
|
||||
this.mediaGridViewAdapter_.notifyDataSetChanged();
|
||||
this.gridView_.setSelection(this.index_);
|
||||
this.gridView_.invalidateViews();
|
||||
}
|
||||
|
||||
@Override // android.support.v4.app.Fragment
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
updateFileList();
|
||||
updateGridView();
|
||||
StatService.onPageStart(getActivity(), "媒体");
|
||||
if (this.mode_ == 0) {
|
||||
getActivity().setTitle(String.format(getResources().getString(R.string.mediaTitle), Integer.valueOf(this.fileNames_.size())));
|
||||
} else {
|
||||
getActivity().setTitle(String.format(getResources().getString(R.string.mediaSelectedNum), Integer.valueOf(getSelectedItemCount())));
|
||||
}
|
||||
int num = MagApplication.magParameter.onceTipMediaLongClick;
|
||||
int num2 = num - 1;
|
||||
if (num != 0) {
|
||||
MagApplication.magParameter.onceTipMediaLongClick = num2;
|
||||
SharedPreferencesManager.putIntWithCommit(MagParameter.KEY_ONCETIPMEDIALONGCLICK, num2);
|
||||
Toast.makeText(getContext(), R.string.onceTipMediaLongClick, 1).show();
|
||||
}
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public int getSelectedItemCount() {
|
||||
int num = 0;
|
||||
for (Object value : this.mapSelStatus_.values()) {
|
||||
if (((Boolean) value).booleanValue()) {
|
||||
num++;
|
||||
}
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
@Override // android.support.v4.app.Fragment
|
||||
public void onPause() {
|
||||
this.index_ = this.gridView_.getFirstVisiblePosition();
|
||||
StatService.onPageEnd(getActivity(), "媒体");
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
@Override // android.support.v4.app.Fragment
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
this.mediaGridViewAdapter_.cancelAllTasks();
|
||||
}
|
||||
|
||||
@Override // android.widget.AbsListView.OnScrollListener
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) {
|
||||
}
|
||||
|
||||
@Override // android.widget.AbsListView.OnScrollListener
|
||||
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
|
||||
this.firstVisiblePos_ = firstVisibleItem;
|
||||
this.visibleItemCount_ = visibleItemCount;
|
||||
if (this.visibleItemCount_ > 0) {
|
||||
this.mediaGridViewAdapter_.loadBitmap(this.firstVisiblePos_, this.visibleItemCount_);
|
||||
}
|
||||
}
|
||||
|
||||
@Override // cn.com.magnity.magnitycx.MediaActivity.DelegateBackPressed
|
||||
public boolean onActivityBackPressed() {
|
||||
if (this.mode_ == 0) {
|
||||
return true;
|
||||
}
|
||||
this.mode_ = 0;
|
||||
unselectAllFiles();
|
||||
this.mediaGridViewAdapter_.cancelAllTasks();
|
||||
this.menu_.setVisibility(8);
|
||||
if (!this.mapSelStatus_.isEmpty()) {
|
||||
this.mapSelStatus_.clear();
|
||||
}
|
||||
if (getActivity() instanceof DelegateMediaStatusChanged) {
|
||||
((DelegateMediaStatusChanged) getActivity()).onModeChanged(1, 0, this.fileNames_.size());
|
||||
}
|
||||
this.mediaGridViewAdapter_.setMode(0);
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override // android.support.v4.app.Fragment
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
getActivity().setTitle(Integer.toString(this.fileNames_.size()) + getResources().getString(R.string.mediaTitle));
|
||||
updateGridView();
|
||||
}
|
||||
|
||||
@Override // cn.com.magnity.magnitycx.QueryDialogFragment.DelegateQueryResult
|
||||
public void onQueryResult(int result) {
|
||||
if (result == 1) {
|
||||
deleteSelectedFiles();
|
||||
updateButtons();
|
||||
}
|
||||
}
|
||||
|
||||
private void deleteSelectedFiles() {
|
||||
Iterator iter = this.mapSelStatus_.entrySet().iterator();
|
||||
while (iter.hasNext()) {
|
||||
Map.Entry entry = (Map.Entry) iter.next();
|
||||
boolean val = ((Boolean) entry.getValue()).booleanValue();
|
||||
if (val) {
|
||||
String pathName = MagApplication.magParameter.mediaDir + File.separator + ((String) entry.getKey());
|
||||
File file = new File(pathName);
|
||||
if (file != null && file.isFile()) {
|
||||
if (file.delete()) {
|
||||
iter.remove();
|
||||
}
|
||||
File file2 = new File(pathName.replace(".jpg", ".ddt"));
|
||||
if (file2 != null && file2.isFile()) {
|
||||
file2.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
updateFileList();
|
||||
updateGridView();
|
||||
if (this.fileNames_.isEmpty()) {
|
||||
onActivityBackPressed();
|
||||
} else if (getActivity() instanceof DelegateMediaStatusChanged) {
|
||||
((DelegateMediaStatusChanged) getActivity()).onSelChanged(0, this.fileNames_.size());
|
||||
}
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public void socialShare() {
|
||||
Intent intent;
|
||||
boolean hasVideo = false;
|
||||
ArrayList<Uri> lst = new ArrayList<>();
|
||||
for (Map.Entry entry : this.mapSelStatus_.entrySet()) {
|
||||
boolean val = ((Boolean) entry.getValue()).booleanValue();
|
||||
if (val) {
|
||||
String pathName = MagApplication.magParameter.mediaDir + File.separator + ((String) entry.getKey());
|
||||
File f = new File(pathName);
|
||||
if (f != null && f.isFile()) {
|
||||
GlobalFunc globalFunc = MagApplication.globalFunc;
|
||||
int type = GlobalFunc.guessMediaTypeBySuffix(pathName);
|
||||
if (type == 0) {
|
||||
lst.add(FileProvider.getUriForFile(getContext(), "cn.com.magnity.magnitycx.fileprovider", f));
|
||||
} else if (type == 1) {
|
||||
lst.add(FileProvider.getUriForFile(getContext(), "cn.com.magnity.magnitycx.fileprovider", f));
|
||||
hasVideo = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (lst.size() > 1) {
|
||||
intent = new Intent("android.intent.action.SEND_MULTIPLE");
|
||||
intent.putParcelableArrayListExtra("android.intent.extra.STREAM", lst);
|
||||
} else if (lst.size() == 1) {
|
||||
intent = new Intent("android.intent.action.SEND");
|
||||
intent.putExtra("android.intent.extra.STREAM", lst.get(0));
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
intent.setType(hasVideo ? "video/*" : "image/*");
|
||||
intent.addFlags(1);
|
||||
startActivity(Intent.createChooser(intent, getResources().getString(R.string.mediaSocialShare)));
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public void selectAllFiles() {
|
||||
Iterator<String> it = this.fileNames_.iterator();
|
||||
while (it.hasNext()) {
|
||||
String name = it.next();
|
||||
this.mapSelStatus_.put(name, true);
|
||||
}
|
||||
if (getActivity() instanceof DelegateMediaStatusChanged) {
|
||||
int num = this.fileNames_.size();
|
||||
((DelegateMediaStatusChanged) getActivity()).onSelChanged(num, num);
|
||||
}
|
||||
updateGridView();
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public void unselectAllFiles() {
|
||||
Iterator<String> it = this.fileNames_.iterator();
|
||||
while (it.hasNext()) {
|
||||
String name = it.next();
|
||||
this.mapSelStatus_.put(name, false);
|
||||
}
|
||||
if (getActivity() instanceof DelegateMediaStatusChanged) {
|
||||
((DelegateMediaStatusChanged) getActivity()).onSelChanged(0, this.fileNames_.size());
|
||||
}
|
||||
updateGridView();
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public boolean isAllItemSelected() {
|
||||
return this.fileNames_.size() == this.mapSelStatus_.size() && !this.mapSelStatus_.containsValue(false);
|
||||
}
|
||||
|
||||
private boolean isNoItemSelected() {
|
||||
return !this.mapSelStatus_.containsValue(true);
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public void updateButtons() {
|
||||
if (isNoItemSelected()) {
|
||||
this.btnSocialShare_.setEnabled(false);
|
||||
this.btnDelete_.setEnabled(false);
|
||||
this.btnSelectAll_.setText(R.string.mediaSelectAll);
|
||||
Drawable drawable = getResources().getDrawable(R.drawable.button_unselect_all_select);
|
||||
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
|
||||
this.btnSelectAll_.setCompoundDrawables(null, drawable, null, null);
|
||||
return;
|
||||
}
|
||||
this.btnSocialShare_.setEnabled(true);
|
||||
this.btnDelete_.setEnabled(true);
|
||||
if (isAllItemSelected()) {
|
||||
this.btnSelectAll_.setText(R.string.mediaUnselectAll);
|
||||
Drawable drawable2 = getResources().getDrawable(R.drawable.button_select_all_select);
|
||||
drawable2.setBounds(0, 0, drawable2.getMinimumWidth(), drawable2.getMinimumHeight());
|
||||
this.btnSelectAll_.setCompoundDrawables(null, drawable2, null, null);
|
||||
return;
|
||||
}
|
||||
this.btnSelectAll_.setText(R.string.mediaSelectAll);
|
||||
Drawable drawable3 = getResources().getDrawable(R.drawable.button_unselect_all_select);
|
||||
drawable3.setBounds(0, 0, drawable3.getMinimumWidth(), drawable3.getMinimumHeight());
|
||||
this.btnSelectAll_.setCompoundDrawables(null, drawable3, null, null);
|
||||
}
|
||||
|
||||
private class MediaMenuClickListener implements View.OnClickListener {
|
||||
private MediaMenuClickListener() {
|
||||
}
|
||||
|
||||
@Override // android.view.View.OnClickListener
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.id_btn_social_share /* 2131624072 */:
|
||||
FragmentMedia.this.socialShare();
|
||||
break;
|
||||
case R.id.id_btn_delete /* 2131624143 */:
|
||||
QueryDialogFragment dlg = QueryDialogFragment.newInstance(R.layout.dialog_fragment_query_delete_media);
|
||||
if (dlg != null) {
|
||||
dlg.show(FragmentMedia.this.getActivity().getSupportFragmentManager(), "deleteMedia");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case R.id.id_btn_select_all /* 2131624144 */:
|
||||
if (FragmentMedia.this.isAllItemSelected()) {
|
||||
FragmentMedia.this.unselectAllFiles();
|
||||
} else {
|
||||
FragmentMedia.this.selectAllFiles();
|
||||
}
|
||||
FragmentMedia.this.updateButtons();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class MediaItemClickListener implements AdapterView.OnItemClickListener {
|
||||
private MediaItemClickListener() {
|
||||
}
|
||||
|
||||
@Override // android.widget.AdapterView.OnItemClickListener
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
if (FragmentMedia.this.mode_ != 0) {
|
||||
String name = (String) FragmentMedia.this.fileNames_.get(position);
|
||||
ImageView v = (ImageView) view.findViewById(R.id.id_photo_selected);
|
||||
ImageView vimg = (ImageView) view.findViewById(R.id.id_wallphoto);
|
||||
Object val = FragmentMedia.this.mapSelStatus_.get(name);
|
||||
if (val == null || !((Boolean) val).booleanValue()) {
|
||||
v.setImageResource(R.mipmap.media_selected);
|
||||
vimg.setAlpha(0.6f);
|
||||
FragmentMedia.this.mapSelStatus_.put(name, true);
|
||||
} else {
|
||||
v.setImageResource(R.mipmap.media_unselected);
|
||||
vimg.setAlpha(1.0f);
|
||||
FragmentMedia.this.mapSelStatus_.put(name, false);
|
||||
}
|
||||
if (FragmentMedia.this.getActivity() instanceof DelegateMediaStatusChanged) {
|
||||
((DelegateMediaStatusChanged) FragmentMedia.this.getActivity()).onSelChanged(FragmentMedia.this.getSelectedItemCount(), FragmentMedia.this.fileNames_.size());
|
||||
}
|
||||
FragmentMedia.this.updateButtons();
|
||||
return;
|
||||
}
|
||||
Intent intent = new Intent(FragmentMedia.this.getActivity(), (Class<?>) MediaSingleActivity.class);
|
||||
intent.putExtra(MediaSingleActivity.MEDIAWINDOWFLAG, 1);
|
||||
intent.putExtra(MediaSingleActivity.MEDIAINDEX, position);
|
||||
intent.putStringArrayListExtra(MediaSingleActivity.MEDIANAMELIST, FragmentMedia.this.fileNames_);
|
||||
FragmentMedia.this.startActivityForResult(intent, 0);
|
||||
}
|
||||
}
|
||||
|
||||
private class MediaItemLongClickListener implements AdapterView.OnItemLongClickListener {
|
||||
private MediaItemLongClickListener() {
|
||||
}
|
||||
|
||||
@Override // android.widget.AdapterView.OnItemLongClickListener
|
||||
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
if (FragmentMedia.this.mode_ != 1) {
|
||||
String name = (String) FragmentMedia.this.fileNames_.get(position);
|
||||
FragmentMedia.this.mapSelStatus_.put(name, true);
|
||||
FragmentMedia.this.updateButtons();
|
||||
FragmentMedia.this.menu_.setVisibility(0);
|
||||
FragmentMedia.this.mode_ = 1;
|
||||
if (FragmentMedia.this.getActivity() instanceof DelegateMediaStatusChanged) {
|
||||
((DelegateMediaStatusChanged) FragmentMedia.this.getActivity()).onModeChanged(0, 1, FragmentMedia.this.fileNames_.size());
|
||||
}
|
||||
FragmentMedia.this.mediaGridViewAdapter_.setMode(1);
|
||||
FragmentMedia.this.updateGridView();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user