Commit cfeed485 authored by Grigory Fedorov's avatar Grigory Fedorov

ChatViewerAdapter, ChatScroller: refactoring, unused core removed.

parent 1fdaade5
...@@ -6,13 +6,11 @@ import android.app.FragmentManager; ...@@ -6,13 +6,11 @@ import android.app.FragmentManager;
import android.support.v13.app.FragmentStatePagerAdapter; import android.support.v13.app.FragmentStatePagerAdapter;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.xabber.android.data.LogManager;
import com.xabber.android.data.entity.BaseEntity; import com.xabber.android.data.entity.BaseEntity;
import com.xabber.android.data.message.AbstractChat; import com.xabber.android.data.message.AbstractChat;
import com.xabber.android.data.message.MessageManager; import com.xabber.android.data.message.MessageManager;
import com.xabber.android.ui.ChatViewerFragment; import com.xabber.android.ui.ChatViewerFragment;
import com.xabber.android.ui.RecentChatFragment; import com.xabber.android.ui.RecentChatFragment;
import com.xabber.android.ui.helper.ChatScroller;
import com.xabber.xmpp.address.Jid; import com.xabber.xmpp.address.Jid;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -30,15 +28,10 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter { ...@@ -30,15 +28,10 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter {
*/ */
private final AbstractChat intent; private final AbstractChat intent;
private ArrayList<AbstractChat> activeChats; private ArrayList<AbstractChat> activeChats;
private FinishUpdateListener finishUpdateListener;
private RecentChatFragment.RecentChatFragmentInteractionListener recentChatFragmentInteractionListener;
private Fragment currentFragment; private Fragment currentFragment;
public ChatViewerAdapter(FragmentManager fragmentManager, BaseEntity chat, ChatScroller chatScroller) { public ChatViewerAdapter(FragmentManager fragmentManager, BaseEntity chat) {
super(fragmentManager); super(fragmentManager);
finishUpdateListener = chatScroller;
recentChatFragmentInteractionListener = chatScroller;
activeChats = new ArrayList<>(MessageManager.getInstance().getActiveChats()); activeChats = new ArrayList<>(MessageManager.getInstance().getActiveChats());
intent = MessageManager.getInstance().getOrCreateChat(chat.getAccount(), Jid.getBareAddress(chat.getUser())); intent = MessageManager.getInstance().getOrCreateChat(chat.getAccount(), Jid.getBareAddress(chat.getUser()));
...@@ -46,10 +39,8 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter { ...@@ -46,10 +39,8 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter {
updateChats(); updateChats();
} }
public ChatViewerAdapter(FragmentManager fragmentManager, ChatScroller chatScroller) { public ChatViewerAdapter(FragmentManager fragmentManager) {
super(fragmentManager); super(fragmentManager);
finishUpdateListener = chatScroller;
recentChatFragmentInteractionListener = chatScroller;
activeChats = new ArrayList<>(MessageManager.getInstance().getActiveChats()); activeChats = new ArrayList<>(MessageManager.getInstance().getActiveChats());
intent = null; intent = null;
...@@ -80,8 +71,6 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter { ...@@ -80,8 +71,6 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter {
} }
public boolean updateChats() { public boolean updateChats() {
LogManager.i(this, "updateChats");
ArrayList<AbstractChat> newChats = new ArrayList<>(MessageManager.getInstance().getActiveChats()); ArrayList<AbstractChat> newChats = new ArrayList<>(MessageManager.getInstance().getActiveChats());
if (intent != null && !newChats.contains(intent)) { if (intent != null && !newChats.contains(intent)) {
...@@ -102,15 +91,12 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter { ...@@ -102,15 +91,12 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter {
activeChats = newChats; activeChats = newChats;
LogManager.i(this, "activeChats size " + activeChats.size());
notifyDataSetChanged(); notifyDataSetChanged();
return true; return true;
} }
public void clear() { public void clear() {
LogManager.i(this, "clear");
activeChats.clear(); activeChats.clear();
notifyDataSetChanged(); notifyDataSetChanged();
} }
...@@ -170,13 +156,6 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter { ...@@ -170,13 +156,6 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter {
return realPosition - 1; return realPosition - 1;
} }
@Override
public void finishUpdate(ViewGroup container) {
super.finishUpdate(container);
finishUpdateListener.onChatViewAdapterFinishUpdate();
}
public ArrayList<AbstractChat> getActiveChats() { public ArrayList<AbstractChat> getActiveChats() {
return activeChats; return activeChats;
} }
...@@ -196,13 +175,4 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter { ...@@ -196,13 +175,4 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter {
currentFragment = (Fragment) object; currentFragment = (Fragment) object;
} }
public Fragment getCurrentFragment() {
return currentFragment;
}
public interface FinishUpdateListener {
void onChatViewAdapterFinishUpdate();
}
} }
\ No newline at end of file
...@@ -33,7 +33,6 @@ public class ChatScroller implements ...@@ -33,7 +33,6 @@ public class ChatScroller implements
OnContactChangedListener, OnContactChangedListener,
OnAccountChangedListener, OnAccountChangedListener,
ViewPager.OnPageChangeListener, ViewPager.OnPageChangeListener,
ChatViewerAdapter.FinishUpdateListener,
RecentChatFragment.RecentChatFragmentInteractionListener, RecentChatFragment.RecentChatFragmentInteractionListener,
ChatViewerFragment.ChatViewerFragmentListener { ChatViewerFragment.ChatViewerFragmentListener {
...@@ -45,8 +44,6 @@ public class ChatScroller implements ...@@ -45,8 +44,6 @@ public class ChatScroller implements
Collection<ChatViewerFragment> registeredChats = new HashSet<>(); Collection<ChatViewerFragment> registeredChats = new HashSet<>();
Collection<RecentChatFragment> recentChatFragments = new HashSet<>(); Collection<RecentChatFragment> recentChatFragments = new HashSet<>();
ChatScrollerListener listener; ChatScrollerListener listener;
private String extraText = null;
public ChatScroller(Activity activity) { public ChatScroller(Activity activity) {
chatManager = ChatManager.getInstance(); chatManager = ChatManager.getInstance();
this.activity = activity; this.activity = activity;
...@@ -75,9 +72,9 @@ public class ChatScroller implements ...@@ -75,9 +72,9 @@ public class ChatScroller implements
public void initChats() { public void initChats() {
if (chatManager.getInitialChat() != null) { if (chatManager.getInitialChat() != null) {
chatViewerAdapter = new ChatViewerAdapter(activity.getFragmentManager(), chatManager.getInitialChat(), this); chatViewerAdapter = new ChatViewerAdapter(activity.getFragmentManager(), chatManager.getInitialChat());
} else { } else {
chatViewerAdapter = new ChatViewerAdapter(activity.getFragmentManager(), this); chatViewerAdapter = new ChatViewerAdapter(activity.getFragmentManager());
} }
viewPager.setAdapter(chatViewerAdapter); viewPager.setAdapter(chatViewerAdapter);
...@@ -100,6 +97,10 @@ public class ChatScroller implements ...@@ -100,6 +97,10 @@ public class ChatScroller implements
selectPage(); selectPage();
} }
public boolean isInitialized() {
return chatViewerAdapter != null;
}
private void selectPage() { private void selectPage() {
if (chatManager.getSelectedChat() == null) { if (chatManager.getSelectedChat() == null) {
selectRecentChatsPage(); selectRecentChatsPage();
...@@ -249,6 +250,10 @@ public class ChatScroller implements ...@@ -249,6 +250,10 @@ public class ChatScroller implements
return chatViewerAdapter.getActiveChats(); return chatViewerAdapter.getActiveChats();
} }
/**
* ChatViewerFragmentListener
*/
@Override @Override
public void onCloseChat(BaseEntity chat) { public void onCloseChat(BaseEntity chat) {
update(); update();
...@@ -269,42 +274,8 @@ public class ChatScroller implements ...@@ -269,42 +274,8 @@ public class ChatScroller implements
registeredChats.remove(chat); registeredChats.remove(chat);
} }
/**
* FinishUpdateListener
*/
@Override
public void onChatViewAdapterFinishUpdate() {
insertExtraText();
}
private void insertExtraText() {
if (extraText == null) {
return;
}
boolean isExtraTextInserted = false;
for (ChatViewerFragment chat : registeredChats) {
if (chat.isEqual(ChatManager.getInstance().getSelectedChat())) {
chat.setInputText(extraText);
isExtraTextInserted = true;
}
}
if (isExtraTextInserted) {
extraText = null;
}
}
public boolean isInitialized() {
return chatViewerAdapter != null;
}
public interface ChatScrollerListener { public interface ChatScrollerListener {
void onStatusBarNeedPaint(String account); void onStatusBarNeedPaint(String account);
void onClose(BaseEntity chat); void onClose(BaseEntity chat);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment