Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ChatFragment extends Fragment implements Constants {
- public final static int STATUS_START = 100;
- public final static String PARAM_TASK = "task";
- public final static String PARAM_STATUS = "status";
- final String LOG_TAG = "myLogs";
- public static final int RESULT_OK = -1;
- private ProgressDialog pDialog;
- Menu MainMenu;
- View mListViewHeader;
- RelativeLayout mLoadingScreen, mErrorScreen;
- LinearLayout mContentScreen, mContainerImg, mChatListViewHeaderContainer;
- ImageView mSendMessage, mAddImg, mDeleteImg, mPreviewImg;
- EditText mMessageText;
- ListView listView;
- BroadcastReceiver br;
- private ArrayList<ChatItem> chatList;
- private ChatListAdapter chatAdapter;
- String withProfile = "", messageText = "", messageImg = "";
- int chatId = 0, msgId = 0, messagesCount = 0, position = 0;
- long profileId = 0;
- private String selectedChatImg = "";
- private Uri selectedImage;
- int arrayLength = 0;
- Boolean loadingMore = false;
- Boolean viewMore = false;
- private Boolean loading = false;
- private Boolean restore = false;
- private Boolean preload = false;
- public ChatFragment() {
- // Required empty public constructor
- }
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setRetainInstance(true);
- setHasOptionsMenu(true);
- initpDialog();
- Intent i = getActivity().getIntent();
- position = i.getIntExtra("position", 0);
- chatId = i.getIntExtra("chatId", 0);
- profileId = i.getLongExtra("profileId", 0);
- withProfile = i.getStringExtra("withProfile");
- chatList = new ArrayList<ChatItem>();
- chatAdapter = new ChatListAdapter(getActivity(), chatList);
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View rootView = inflater.inflate(R.layout.fragment_chat, container, false);
- if (savedInstanceState != null) {
- restore = savedInstanceState.getBoolean("restore");
- loading = savedInstanceState.getBoolean("loading");
- preload = savedInstanceState.getBoolean("preload");
- } else {
- App.getInstance().setCurrentChatId(chatId);
- restore = false;
- loading = false;
- preload = false;
- }
- br = new BroadcastReceiver() {
- public void onReceive(Context context, Intent intent) {
- int task = intent.getIntExtra(PARAM_TASK, 0);
- int status = intent.getIntExtra(PARAM_STATUS, 0);
- Log.d(LOG_TAG, "onReceive: task = " + task + ", status = " + status);
- getNextMessages();
- }
- };
- IntentFilter intFilt = new IntentFilter(BROADCAST_ACTION);
- getActivity().registerReceiver(br, intFilt);
- if (loading) {
- showpDialog();
- }
- mLoadingScreen = (RelativeLayout) rootView.findViewById(R.id.loadingScreen);
- mErrorScreen = (RelativeLayout) rootView.findViewById(R.id.errorScreen);
- mContentScreen = (LinearLayout) rootView.findViewById(R.id.contentScreen);
- mSendMessage = (ImageView) rootView.findViewById(R.id.sendMessage);
- mMessageText = (EditText) rootView.findViewById(R.id.messageText);
- mSendMessage.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- newMessage();
- }
- });
- listView = (ListView) rootView.findViewById(R.id.listView);
- mListViewHeader = getActivity().getLayoutInflater().inflate(R.layout.chat_listview_header, null);
- mChatListViewHeaderContainer = (LinearLayout) mListViewHeader.findViewById(R.id.chatListViewHeaderContainer);
- listView.addHeaderView(mListViewHeader);
- mListViewHeader.setVisibility(View.GONE);
- listView.setAdapter(chatAdapter);
- listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- if (position == 0 && mListViewHeader.getVisibility() == View.VISIBLE) {
- getPreviousMessages();
- }
- }
- });
- mAddImg = (ImageView) rootView.findViewById(R.id.addImg);
- mDeleteImg = (ImageView) rootView.findViewById(R.id.deleteImg);
- mPreviewImg = (ImageView) rootView.findViewById(R.id.previewImg);
- mContainerImg = (LinearLayout) rootView.findViewById(R.id.container_img);
- mContainerImg.setVisibility(View.GONE);
- mDeleteImg.setOnClickListener(new View.OnClickListener(){
- @Override
- public void onClick(View v) {
- selectedImage = null;
- selectedChatImg = "";
- mContainerImg.setVisibility(View.GONE);
- }
- });
- mAddImg.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
- startActivityForResult(Intent.createChooser(intent, getText(R.string.label_select_img)), SELECT_POST_IMG);
- }
- });
- if (selectedImage != null) {
- mPreviewImg.setImageURI(selectedImage);
- mContainerImg.setVisibility(View.VISIBLE);
- }
- if (!restore) {
- if (App.getInstance().isConnected()) {
- showLoadingScreen();
- getChat();
- } else {
- showErrorScreen();
- }
- } else {
- if (App.getInstance().isConnected()) {
- if (!preload) {
- showContentScreen();
- } else {
- showLoadingScreen();
- }
- } else {
- showErrorScreen();
- }
- }
- // Inflate the layout for this fragment
- return rootView;
- }
- public void onDestroyView() {
- super.onDestroyView();
- getActivity().unregisterReceiver(br);
- hidepDialog();
- }
- protected void initpDialog() {
- pDialog = new ProgressDialog(getActivity());
- pDialog.setMessage(getString(R.string.msg_loading));
- pDialog.setCancelable(false);
- }
- protected void showpDialog() {
- if (!pDialog.isShowing()) pDialog.show();
- }
- protected void hidepDialog() {
- if (pDialog.isShowing()) pDialog.dismiss();
- }
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putBoolean("restore", true);
- outState.putBoolean("loading", loading);
- outState.putBoolean("preload", preload);
- }
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == SELECT_POST_IMG && resultCode == RESULT_OK && null != data) {
- selectedImage = data.getData();
- String[] filePathColumn = {MediaStore.Images.Media.DATA};
- Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null);
- cursor.moveToFirst();
- // String selectedPhoto contains the path of selected Image
- int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
- selectedChatImg = cursor.getString(columnIndex);
- cursor.close();
- mPreviewImg.setImageURI(selectedImage);
- mContainerImg.setVisibility(View.VISIBLE);
- }
- }
- private void scrollListViewToBottom() {
- listView.post(new Runnable() {
- @Override
- public void run() {
- // Select the last row so it will scroll into view...
- listView.setSelection(chatAdapter.getCount() - 1);
- }
- });
- }
- public void getChat() {
- preload = true;
- CustomRequest jsonReq = new CustomRequest(Request.Method.POST, METHOD_CHAT_GET, null,
- new Response.Listener<JSONObject>() {
- @Override
- public void onResponse(JSONObject response) {
- try {
- // Toast.makeText(getActivity(), response.toString(), Toast.LENGTH_LONG).show();
- if (!response.getBoolean("error")) {
- msgId = response.getInt("msgId");
- chatId = response.getInt("chatId");
- messagesCount = response.getInt("messagesCount");
- if (messagesCount > 20) {
- mListViewHeader.setVisibility(View.VISIBLE);
- }
- if (response.has("messages")) {
- JSONArray messagesArray = response.getJSONArray("messages");
- arrayLength = messagesArray.length();
- if (arrayLength > 0) {
- for (int i = messagesArray.length() - 1; i > -1; i--) {
- JSONObject msgObj = (JSONObject) messagesArray.get(i);
- ChatItem item = new ChatItem(msgObj);
- chatList.add(item);
- }
- }
- }
- }
- } catch (JSONException e) {
- e.printStackTrace();
- } finally {
- showContentScreen();
- chatAdapter.notifyDataSetChanged();
- scrollListViewToBottom();
- }
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- preload = false;
- Toast.makeText(getActivity(), getString(R.string.error_data_loading), Toast.LENGTH_SHORT).show();
- }
- }) {
- @Override
- protected Map<String, String> getParams() {
- Map<String, String> params = new HashMap<String, String>();
- params.put("accountId", Long.toString(App.getInstance().getId()));
- params.put("accessToken", App.getInstance().getAccessToken());
- params.put("profileId", Long.toString(profileId));
- params.put("chatId", Integer.toString(chatId));
- params.put("msgId", Integer.toString(msgId));
- return params;
- }
- };
- App.getInstance().addToRequestQueue(jsonReq);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement