12
12
import android .util .Log ;
13
13
import android .util .Patterns ;
14
14
import android .view .View ;
15
+ import android .widget .Button ;
15
16
import android .widget .EditText ;
16
17
import android .widget .Toast ;
17
18
23
24
import com .google .android .gms .common .api .GoogleApiClient ;
24
25
import com .zulip .android .BuildConfig ;
25
26
import com .zulip .android .R ;
27
+ import com .zulip .android .ZulipApp ;
26
28
import com .zulip .android .networking .AsyncDevGetEmails ;
27
29
import com .zulip .android .networking .AsyncGetBackends ;
30
+ import com .zulip .android .networking .AsyncLogin ;
31
+ import com .zulip .android .networking .ZulipAsyncPushTask .AsyncTaskCompleteListener ;
28
32
import com .zulip .android .util .AnimationHelper ;
29
33
import com .zulip .android .util .ZLog ;
30
- import com .zulip .android .ZulipApp ;
31
- import com .zulip .android .networking .ZulipAsyncPushTask .AsyncTaskCompleteListener ;
32
- import com .zulip .android .networking .AsyncLogin ;
33
34
34
35
import org .json .JSONException ;
35
36
import org .json .JSONObject ;
@@ -52,6 +53,12 @@ public class LoginActivity extends AppCompatActivity implements View.OnClickList
52
53
private EditText mUserName ;
53
54
private EditText mPassword ;
54
55
private EditText serverIn ;
56
+ //region state-restoration
57
+ static final String USERNAME = "username" ;
58
+ static final String PASSWORD = "password" ;
59
+ static final String SERVER_IN = "serverIn" ;
60
+ private boolean skipAnimations = false ;
61
+ //endregion
55
62
56
63
private View mGoogleSignInButton ;
57
64
@@ -95,11 +102,19 @@ public void onClick(View view) {
95
102
findViewById (R .id .local_server_button ).setVisibility (View .GONE );
96
103
}
97
104
});
105
+ //restore instance state on orientation change
106
+ if (savedInstanceState != null ){
107
+ skipAnimations = true ;
108
+ serverIn .setText (savedInstanceState .getString (SERVER_IN ));
109
+ ((Button ) findViewById (R .id .server_btn )).performClick ();
110
+ mUserName .setText (savedInstanceState .getString (USERNAME ));
111
+ mPassword .setText (savedInstanceState .getString (PASSWORD ));
112
+ }
98
113
}
99
114
100
115
private void showLoginFields () {
101
- AnimationHelper .showView (findViewById (R .id .serverInput ), 201 );
102
- AnimationHelper .hideView (findViewById (R .id .serverFieldLayout ), 100 );
116
+ AnimationHelper .showView (findViewById (R .id .serverInput ), skipAnimations ? 0 : 201 );
117
+ AnimationHelper .hideView (findViewById (R .id .serverFieldLayout ), skipAnimations ? 0 : 100 );
103
118
}
104
119
105
120
@ Override
@@ -156,6 +171,14 @@ private void checkForError() {
156
171
}
157
172
}
158
173
174
+ @ Override
175
+ public void onSaveInstanceState (Bundle savedInstanceState ){
176
+ Boolean inLogin = mUserName .isShown ();
177
+ savedInstanceState .putString (SERVER_IN ,mServerEditText .getText ().toString ());
178
+ savedInstanceState .putString (USERNAME ,mUserName .getText ().toString ());
179
+ savedInstanceState .putString (PASSWORD ,mPassword .getText ().toString ());
180
+ }
181
+
159
182
private void showBackends (String httpScheme , String serverURL ) {
160
183
Uri serverUri = Uri .parse (serverURL );
161
184
0 commit comments