/*
* Copyright (C) 2014 Tubor Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sgu.findyourfriend.screen;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.Dialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import com.sgu.findyourfriend.R;
import com.sgu.findyourfriend.adapter.MessageAdapter;
import com.sgu.findyourfriend.mgr.Config;
import com.sgu.findyourfriend.mgr.IMessage;
import com.sgu.findyourfriend.mgr.MessageManager;
import com.sgu.findyourfriend.mgr.SettingManager;
import com.sgu.findyourfriend.model.Message;
import com.sgu.findyourfriend.utils.Utility;
public class MessageFragment extends Fragment implements IMessage {
private static String TAG = "MESSAGE FRAGMENT";
private static boolean isRegister; // = false;
private List<Message> messages;
private MessageAdapter adapter;
private TextView text;
private Context context;
private Activity activity;
private ListView smsListView;
private MessageFragment mThis = this;
// private ProgressDialogCustom progress;
public MessageFragment() {
isRegister = false;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// check and notify
if (SettingManager.getInstance().getNoNewMesssage() > 0) {
// broadcast update widget
SettingManager.getInstance().setNoNewMessage(0);
Intent intent = new Intent(Config.UPDATE_MESSAGE_WIDGET_ACTION);
// Send Broadcast to Broadcast receiver with message
context.sendBroadcast(intent);
// send broadcast hide notify
Intent intent2 = new Intent(Config.NOTIFY_UI);
intent2.putExtra(Config.MESSAGE_NOTIFY, Config.HIDE);
context.sendBroadcast(intent2);
}
View rootView = inflater.inflate(R.layout.fragment_message, container,
false);
MessageManager.getInstance().setMessageListener(this);
return rootView;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
context = activity.getApplicationContext();
this.activity = activity;
if (!isRegister) {
activity.registerReceiver(mHandleMessageReceiver, new IntentFilter(
com.sgu.findyourfriend.mgr.Config.UPDATE_UI));
activity.registerReceiver(mHandleMessageReceiver, new IntentFilter(
com.sgu.findyourfriend.mgr.Config.MAIN_ACTION));
isRegister = true;
}
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
text = (TextView) view.findViewById(R.id.text);
text.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
openEditMessageScene(-1);
}
});
smsListView = (ListView) view.findViewById(R.id.listview);
messages = MessageManager.getInstance().getAllMessage();
adapter = new MessageAdapter(context, messages);
smsListView.setAdapter(adapter);
smsListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
final int position, long id) {
final Message msgtemp = adapter.getItem(position);
ArrayList<String> data = new ArrayList<String>();
data.add("Gửi mới");
if (null != msgtemp.getLocation())
data.add("Xem bản đồ");
data.add("Xóa");
final Dialog dialog = new Dialog(getActivity());
Utility.showListDialog(Utility.CONFIRM, dialog,
"Tùy chọn với tin nhắn", data,
new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0,
View arg1, int position, long arg3) {
switch (position) {
case 0:
// reply
int id;
if (msgtemp.isMine()) {
id = msgtemp.getIdReceiver();
} else {
id = msgtemp.getIdSender();
}
Log.i("Message ",
"sender: "
+ adapter.getItem(position)
.getIdSender()
+ ", receiver: "
+ adapter.getItem(position)
.getIdReceiver()
+ ", con: "
+ msgtemp.getMessage()
+ ", # "
+ msgtemp.getIdSender()
+ ", # rc"
+ msgtemp.getIdReceiver());
if (id == 0) {
Utility.showMessage(activity,
"Tạm thời chưa hỗ trợ trực tiếp từ quản trị.");
} else {
openEditMessageScene(id);
}
break;
case 1:
if (null != msgtemp.getLocation()) {
// map view
Intent i = new Intent(context,
MapViewActivity.class);
i.putExtra("latitude",
msgtemp.getLocation().latitude);
i.putExtra("longitude",
msgtemp.getLocation().longitude);
i.putExtra("name",
msgtemp.getSenderName());
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
break;
}
case 2:
// delete message
MessageManager.getInstance().deleteMessage(
msgtemp);
messages.remove(msgtemp);
adapter.notifyDataSetChanged();
smsListView.setSelection(messages.size() - 1);
break;
}
dialog.dismiss();
}
});
}
});
setBottomSMS();
// smsListView.setSelection(messages.size() - 1);
// progress.dismiss();
}
public void setBottomSMS() {
smsListView.setSelection(messages.size() - 1);
}
@Override
public void onResume() {
super.onResume();
// smsListView.setSelection(messages.size() - 1);
}
@Override
public void onDestroy() {
super.onDestroy();
if (isRegister)
getActivity().unregisterReceiver(mHandleMessageReceiver);
}
// public void onDestroyView() {
// super.onDestroyView();
// }
public void addNewMessage(Message msg) {
messages.add(msg);
adapter.notifyDataSetChanged();
smsListView.setSelection(messages.size() - 1);
}
private void openEditMessageScene(int friendId) {
MessageSendFragment fragment = new MessageSendFragment(mThis);
Bundle bundle = new Bundle();
bundle.putInt("friendId", friendId);
fragment.setArguments(bundle);
((BaseContainerFragment) mThis.getParentFragment()).replaceFragment(
fragment, true);
}
// --------------handle message ----------------------------------
// handle message
private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context ctx, Intent intent) {
String action = intent.getAction();
if (action.equals(Config.MAIN_ACTION)) {
if (intent.hasExtra(Config.EDIT_MESSAGE_ACTION)) {
int fID = intent
.getIntExtra(Config.EDIT_MESSAGE_ACTION, -1);
Log.i("MESSAGE", fID + "");
if (fID >= 0) {
openEditMessageScene(fID);
}
}
} else if (action.equals(Config.UPDATE_UI)) {
if (intent.getStringExtra(
(com.sgu.findyourfriend.mgr.Config.UPDATE_TYPE))
.equals(Utility.MESSAGE)) {
adapter.notifyDataSetChanged();
smsListView.setSelection(messages.size() - 1);
}
}
}
};
}