package com.example.qingyangdemo.fragment; import java.util.List; import java.util.Stack; import com.example.qingyangdemo.DownLoadActivity; import com.example.qingyangdemo.MainActivity; import com.example.qingyangdemo.R; import com.example.qingyangdemo.UploadActivity; import com.example.qingyangdemo.MainActivity.onKeyDownListener; import com.example.qingyangdemo.adapter.FileAdapter; import com.example.qingyangdemo.base.AppException; import com.example.qingyangdemo.base.AppManager; import com.example.qingyangdemo.base.BaseFragment; import com.example.qingyangdemo.bean.PcFile; import com.example.qingyangdemo.common.UIHelper; import com.example.qingyangdemo.common.UpLoadManager; import com.example.qingyangdemo.common.UpdateManager; import com.example.qingyangdemo.net.SocketClient; import com.example.qingyangdemo.ui.CustomDialog; import com.example.qingyangdemo.ui.LocalFileDialog; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ImageButton; import android.widget.ListView; import android.widget.TextView; /** * 中间的布局 * * @author 赵庆洋 * */ public class CenterFragment extends BaseFragment implements OnClickListener, onKeyDownListener { public static final String DISK_PATH = "disk_path"; private ListView listView; private ImageButton returnBtn, upBtn; private TextView titleView; private FileAdapter fileAdapter; private List<PcFile> fileList; private String diskPath; private MainActivity activity; // path的堆栈 private static Stack<String> pathStack; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diskPath = getArguments().getString(DISK_PATH); activity = (MainActivity) getActivity(); addPath(diskPath); } /** * 添加路径到堆栈 * * @param path */ public void addPath(String path) { if (pathStack == null) { pathStack = new Stack<String>(); } pathStack.add(path); } /** * 获取堆栈最上层的路径 * * @return */ public String getLastPath() { return pathStack.lastElement(); } /** * 移除堆栈最上层路径 */ public void removeLastPath() { pathStack.remove(getLastPath()); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.center_fragment, container, false); listView = (ListView) rootView.findViewById(R.id.center_drawer); fileAdapter = new FileAdapter(getActivity()); listView.setAdapter(fileAdapter); listView.setOnItemClickListener(new DrawerItemClickListener()); returnBtn = (ImageButton) rootView.findViewById(R.id.center_return_btn); upBtn = (ImageButton) rootView.findViewById(R.id.center_up_btn); returnBtn.setOnClickListener(this); upBtn.setOnClickListener(this); titleView = (TextView) rootView.findViewById(R.id.center_title); titleView.setText(diskPath); searchViewData(diskPath); return rootView; } /** * 查询调用方法 */ public void searchData(String path) { searchViewData(path); titleView.setText(path); } /** * 查询view的数据 */ public void searchViewData(final String path) { activity.putAsyncTask(new AsyncTask<Void, Void, Boolean>() { @Override protected Boolean doInBackground(Void... params) { try { fileList = SocketClient.getFileInfo(getMyApplication(), path); } catch (AppException e) { return false; } return true; } @Override protected void onPostExecute(Boolean result) { super.onPostExecute(result); if (result) { fileAdapter.setList(fileList); fileAdapter.setSelectedPosition(-1); fileAdapter.notifyDataSetChanged(); } else { UIHelper.ToastMessage(activity, R.string.msg_search_error); } } }); } private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { fileAdapter.setSelectedPosition(position); selectItem(position); } } private void selectItem(int position) { String filePath = fileAdapter.getList().get(position).getFilePath(); String fileName = fileAdapter.getList().get(position).getFileName(); if (fileAdapter.getList().get(position).isDirectory()) { searchData(filePath); addPath(filePath); } else if (fileAdapter.getList().get(position).isFile()) { Bundle args = new Bundle(); args.putString(DownLoadActivity.FILE_NAME, fileName); args.putString(DownLoadActivity.FILE_PATH, filePath); Intent intent = new Intent(getActivity(), DownLoadActivity.class); intent.putExtras(args); getActivity().startActivity(intent); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.center_return_btn: if (getLastPath().equals(diskPath)) { return; } removeLastPath(); searchData(getLastPath()); break; case R.id.center_up_btn: Intent intent = new Intent(activity, LocalFileDialog.class); intent.putExtra(UploadActivity.SAVE_PATH, getLastPath()); activity.startActivity(intent); break; } } @Override public void fragmentKeyDown(int keyCode, KeyEvent event) { if (getLastPath().equals(diskPath)) { final CustomDialog outdialog = new CustomDialog(activity, activity.getCurrentFocus()); outdialog.setTitle("提示"); outdialog.setMessage("确定退出?"); outdialog.setPositiveButton("确定", new OnClickListener() { @Override public void onClick(View v) { outdialog.dismiss(); AppManager.getAppManager().AppExit(activity); } }); outdialog.setNegativeButton("取消", new OnClickListener() { @Override public void onClick(View v) { outdialog.dismiss(); } }); outdialog.show(); return; } removeLastPath(); searchData(getLastPath()); } }