Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xabber-android
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
xabber-android
Commits
44d5a81c
Commit
44d5a81c
authored
Feb 02, 2015
by
Grigory Fedorov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ChatViewerFragment: focus set to input text.
parent
2c500bfb
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
79 additions
and
23 deletions
+79
-23
ChatViewer.java
app/src/main/java/com/xabber/android/ui/ChatViewer.java
+20
-6
ChatViewerFragment.java
...c/main/java/com/xabber/android/ui/ChatViewerFragment.java
+13
-0
ChatViewerAdapter.java
...java/com/xabber/android/ui/adapter/ChatViewerAdapter.java
+46
-17
No files found.
app/src/main/java/com/xabber/android/ui/ChatViewer.java
View file @
44d5a81c
...
@@ -48,7 +48,8 @@ import java.util.HashSet;
...
@@ -48,7 +48,8 @@ import java.util.HashSet;
* @author alexander.ivanov
* @author alexander.ivanov
*/
*/
public
class
ChatViewer
extends
ManagedActivity
implements
OnChatChangedListener
,
public
class
ChatViewer
extends
ManagedActivity
implements
OnChatChangedListener
,
OnContactChangedListener
,
OnAccountChangedListener
,
ViewPager
.
OnPageChangeListener
{
OnContactChangedListener
,
OnAccountChangedListener
,
ViewPager
.
OnPageChangeListener
,
ChatViewerAdapter
.
FinishUpdateListener
{
/**
/**
* Attention request.
* Attention request.
...
@@ -111,7 +112,8 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
...
@@ -111,7 +112,8 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
setContentView
(
R
.
layout
.
activity_chat_viewer
);
setContentView
(
R
.
layout
.
activity_chat_viewer
);
chatViewerAdapter
=
new
ChatViewerAdapter
(
getFragmentManager
());
chatViewerAdapter
=
new
ChatViewerAdapter
(
getFragmentManager
(),
actionWithAccount
,
actionWithUser
,
this
);
viewPager
=
(
ViewPager
)
findViewById
(
R
.
id
.
pager
);
viewPager
=
(
ViewPager
)
findViewById
(
R
.
id
.
pager
);
viewPager
.
setAdapter
(
chatViewerAdapter
);
viewPager
.
setAdapter
(
chatViewerAdapter
);
...
@@ -136,15 +138,11 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
...
@@ -136,15 +138,11 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
exitOnSend
=
true
;
exitOnSend
=
true
;
}
}
}
}
// selectPage(actionWithAccount, actionWithUser);
}
}
@Override
@Override
protected
void
onSaveInstanceState
(
Bundle
outState
)
{
protected
void
onSaveInstanceState
(
Bundle
outState
)
{
super
.
onSaveInstanceState
(
outState
);
super
.
onSaveInstanceState
(
outState
);
// LogManager.i(this, "onSave: " + actionWithAccount + ":" + actionWithUser);
outState
.
putString
(
SAVED_ACCOUNT
,
actionWithAccount
);
outState
.
putString
(
SAVED_ACCOUNT
,
actionWithAccount
);
outState
.
putString
(
SAVED_USER
,
actionWithUser
);
outState
.
putString
(
SAVED_USER
,
actionWithUser
);
outState
.
putBoolean
(
SAVED_EXIT_ON_SEND
,
exitOnSend
);
outState
.
putBoolean
(
SAVED_EXIT_ON_SEND
,
exitOnSend
);
...
@@ -165,6 +163,8 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
...
@@ -165,6 +163,8 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
if
(
isFinishing
())
if
(
isFinishing
())
return
;
return
;
chatViewerAdapter
.
onChange
();
String
account
=
getAccount
(
intent
);
String
account
=
getAccount
(
intent
);
String
user
=
getUser
(
intent
);
String
user
=
getUser
(
intent
);
if
(
account
==
null
||
user
==
null
)
{
if
(
account
==
null
||
user
==
null
)
{
...
@@ -318,6 +318,10 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
...
@@ -318,6 +318,10 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
private
void
onChatSelected
(
String
account
,
String
user
)
{
private
void
onChatSelected
(
String
account
,
String
user
)
{
LogManager
.
i
(
this
,
"onChatSelected. account: "
+
account
+
"; user: "
+
user
);
LogManager
.
i
(
this
,
"onChatSelected. account: "
+
account
+
"; user: "
+
user
);
actionWithAccount
=
account
;
actionWithUser
=
user
;
MessageManager
.
getInstance
().
setVisibleChat
(
account
,
user
);
MessageManager
.
getInstance
().
setVisibleChat
(
account
,
user
);
MessageArchiveManager
.
getInstance
().
requestHistory
(
MessageArchiveManager
.
getInstance
().
requestHistory
(
...
@@ -345,8 +349,18 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
...
@@ -345,8 +349,18 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
registeredChats
.
remove
(
chat
);
registeredChats
.
remove
(
chat
);
}
}
@Override
public
void
onChatViewAdapterFinishUpdate
()
{
for
(
CurrentUpdatableChat
chat
:
registeredChats
)
{
if
(
chat
.
isEqual
(
actionWithAccount
,
actionWithUser
))
{
chat
.
setInputFocus
();
}
}
}
public
interface
CurrentUpdatableChat
{
public
interface
CurrentUpdatableChat
{
public
void
updateChat
(
final
boolean
incoming
);
public
void
updateChat
(
final
boolean
incoming
);
public
boolean
isEqual
(
String
account
,
String
user
);
public
boolean
isEqual
(
String
account
,
String
user
);
public
void
setInputFocus
();
}
}
}
}
app/src/main/java/com/xabber/android/ui/ChatViewerFragment.java
View file @
44d5a81c
...
@@ -26,6 +26,7 @@ import android.widget.ListView;
...
@@ -26,6 +26,7 @@ import android.widget.ListView;
import
android.widget.TextView
;
import
android.widget.TextView
;
import
com.xabber.android.data.Application
;
import
com.xabber.android.data.Application
;
import
com.xabber.android.data.LogManager
;
import
com.xabber.android.data.NetworkException
;
import
com.xabber.android.data.NetworkException
;
import
com.xabber.android.data.SettingsManager
;
import
com.xabber.android.data.SettingsManager
;
import
com.xabber.android.data.extension.archive.MessageArchiveManager
;
import
com.xabber.android.data.extension.archive.MessageArchiveManager
;
...
@@ -90,17 +91,22 @@ public class ChatViewerFragment extends Fragment implements ChatViewer.CurrentUp
...
@@ -90,17 +91,22 @@ public class ChatViewerFragment extends Fragment implements ChatViewer.CurrentUp
public
void
onCreate
(
Bundle
savedInstanceState
)
{
public
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
super
.
onCreate
(
savedInstanceState
);
avatarInflaterHelper
=
AbstractAvatarInflaterHelper
.
createAbstractContactInflaterHelper
();
avatarInflaterHelper
=
AbstractAvatarInflaterHelper
.
createAbstractContactInflaterHelper
();
Bundle
args
=
getArguments
();
Bundle
args
=
getArguments
();
account
=
args
.
getString
(
ARGUMENT_ACCOUNT
,
null
);
account
=
args
.
getString
(
ARGUMENT_ACCOUNT
,
null
);
user
=
args
.
getString
(
ARGUMENT_USER
,
null
);
user
=
args
.
getString
(
ARGUMENT_USER
,
null
);
LogManager
.
i
(
this
,
"onCreate. user: "
+
user
);
}
}
@Override
@Override
public
View
onCreateView
(
LayoutInflater
inflater
,
ViewGroup
container
,
Bundle
savedInstanceState
)
{
public
View
onCreateView
(
LayoutInflater
inflater
,
ViewGroup
container
,
Bundle
savedInstanceState
)
{
super
.
onCreateView
(
inflater
,
container
,
savedInstanceState
);
super
.
onCreateView
(
inflater
,
container
,
savedInstanceState
);
LogManager
.
i
(
this
,
"onCreateView. user: "
+
user
);
shakeAnimation
=
AnimationUtils
.
loadAnimation
(
getActivity
(),
R
.
anim
.
shake
);
shakeAnimation
=
AnimationUtils
.
loadAnimation
(
getActivity
(),
R
.
anim
.
shake
);
/*
/*
...
@@ -217,6 +223,8 @@ public class ChatViewerFragment extends Fragment implements ChatViewer.CurrentUp
...
@@ -217,6 +223,8 @@ public class ChatViewerFragment extends Fragment implements ChatViewer.CurrentUp
public
void
onResume
()
{
public
void
onResume
()
{
super
.
onResume
();
super
.
onResume
();
LogManager
.
i
(
this
,
"onResume. user: "
+
user
);
((
ChatViewer
)
getActivity
()).
registerChat
(
this
);
((
ChatViewer
)
getActivity
()).
registerChat
(
this
);
registerForContextMenu
(
listView
);
registerForContextMenu
(
listView
);
...
@@ -592,4 +600,9 @@ public class ChatViewerFragment extends Fragment implements ChatViewer.CurrentUp
...
@@ -592,4 +600,9 @@ public class ChatViewerFragment extends Fragment implements ChatViewer.CurrentUp
public
boolean
isEqual
(
String
account
,
String
user
)
{
public
boolean
isEqual
(
String
account
,
String
user
)
{
return
this
.
account
.
equals
(
account
)
&&
this
.
user
.
equals
(
user
);
return
this
.
account
.
equals
(
account
)
&&
this
.
user
.
equals
(
user
);
}
}
@Override
public
void
setInputFocus
()
{
inputView
.
requestFocus
();
}
}
}
app/src/main/java/com/xabber/android/ui/adapter/ChatViewerAdapter.java
View file @
44d5a81c
...
@@ -7,22 +7,45 @@ import android.support.v13.app.FragmentStatePagerAdapter;
...
@@ -7,22 +7,45 @@ 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.LogManager
;
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.xmpp.address.Jid
;
import
com.xabber.xmpp.address.Jid
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Collection
;
public
class
ChatViewerAdapter
extends
FragmentStatePagerAdapter
implements
UpdatableAdapter
{
public
class
ChatViewerAdapter
extends
FragmentStatePagerAdapter
implements
UpdatableAdapter
{
private
ArrayList
<
AbstractChat
>
activeChats
;
/**
* Intent sent while opening chat activity.
*/
private
final
AbstractChat
intent
;
public
ChatViewerAdapter
(
FragmentManager
fragmentManager
)
{
/**
super
(
fragmentManager
);
* Position to insert intent.
*/
private
final
int
intentPosition
;
LogManager
.
i
(
this
,
"ChatViewerAdapter"
)
;
private
ArrayList
<
AbstractChat
>
activeChats
;
private
FinishUpdateListener
finishUpdateListener
;
public
ChatViewerAdapter
(
FragmentManager
fragmentManager
,
String
account
,
String
user
,
FinishUpdateListener
finishUpdateListener
)
{
super
(
fragmentManager
);
this
.
finishUpdateListener
=
finishUpdateListener
;
activeChats
=
new
ArrayList
<>();
intent
=
MessageManager
.
getInstance
().
getOrCreateChat
(
account
,
Jid
.
getBareAddress
(
user
));
Collection
<?
extends
BaseEntity
>
activeChats
=
MessageManager
.
getInstance
().
getActiveChats
();
if
(
activeChats
.
contains
(
intent
))
{
intentPosition
=
-
1
;
}
else
{
intentPosition
=
activeChats
.
size
();
}
onChange
();
onChange
();
}
}
...
@@ -33,8 +56,6 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter implements Upda
...
@@ -33,8 +56,6 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter implements Upda
@Override
@Override
public
Fragment
getItem
(
int
i
)
{
public
Fragment
getItem
(
int
i
)
{
LogManager
.
i
(
this
,
"getItem: "
+
i
);
AbstractChat
abstractChat
=
getChat
(
i
);
AbstractChat
abstractChat
=
getChat
(
i
);
...
@@ -47,37 +68,45 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter implements Upda
...
@@ -47,37 +68,45 @@ public class ChatViewerAdapter extends FragmentStatePagerAdapter implements Upda
@Override
@Override
public
void
onChange
()
{
public
void
onChange
()
{
LogManager
.
i
(
this
,
"onChange: "
);
activeChats
=
new
ArrayList
<>(
MessageManager
.
getInstance
().
getActiveChats
());
activeChats
=
new
ArrayList
<>(
MessageManager
.
getInstance
().
getActiveChats
());
if
(
intentPosition
!=
-
1
)
{
int
index
=
activeChats
.
indexOf
(
intent
);
AbstractChat
chat
;
if
(
index
==
-
1
)
{
chat
=
intent
;
}
else
{
chat
=
activeChats
.
remove
(
index
);
}
activeChats
.
add
(
Math
.
min
(
intentPosition
,
activeChats
.
size
()),
chat
);
}
notifyDataSetChanged
();
notifyDataSetChanged
();
}
}
public
int
getPosition
(
String
account
,
String
user
)
{
public
int
getPosition
(
String
account
,
String
user
)
{
LogManager
.
i
(
this
,
"getPosition: "
+
account
+
" : "
+
user
);
LogManager
.
i
(
this
,
"getPosition: "
+
account
+
" : "
+
user
);
activeChats
=
new
ArrayList
<>(
MessageManager
.
getInstance
().
getActiveChats
());
for
(
int
position
=
0
;
position
<
activeChats
.
size
();
position
++)
{
for
(
int
position
=
0
;
position
<
activeChats
.
size
();
position
++)
{
if
(
activeChats
.
get
(
position
).
equals
(
account
,
user
))
{
if
(
activeChats
.
get
(
position
).
equals
(
account
,
user
))
{
return
position
;
return
position
;
}
}
}
}
LogManager
.
i
(
this
,
"creating new chat: "
+
account
+
" : "
+
user
);
return
-
1
;
AbstractChat
chat
=
MessageManager
.
getInstance
().
getOrCreateChat
(
account
,
Jid
.
getBareAddress
(
user
));
activeChats
.
add
(
chat
);
notifyDataSetChanged
();
return
activeChats
.
indexOf
(
chat
);
}
}
@Override
@Override
public
void
setPrimaryItem
(
ViewGroup
container
,
int
position
,
Object
object
)
{
public
void
setPrimaryItem
(
ViewGroup
container
,
int
position
,
Object
object
)
{
super
.
setPrimaryItem
(
container
,
position
,
object
);
super
.
setPrimaryItem
(
container
,
position
,
object
);
LogManager
.
i
(
this
,
"setPrimaryItem position: "
+
position
);
}
}
@Override
public
void
finishUpdate
(
ViewGroup
container
)
{
super
.
finishUpdate
(
container
);
finishUpdateListener
.
onChatViewAdapterFinishUpdate
();
}
public
interface
FinishUpdateListener
{
public
void
onChatViewAdapterFinishUpdate
();
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment