提交 1dc4394b 编写于 作者: A amitshekhariitbhu

Add Login Screen

上级 0962a910
......@@ -17,6 +17,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mindorks.framework.mvvm">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".MvvmApp"
android:allowBackup="true"
......@@ -33,6 +35,11 @@
</intent-filter>
</activity>
<activity
android:name=".ui.login.LoginActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name=".ui.main.MainActivity"
android:launchMode="singleTop"
......
......@@ -23,9 +23,9 @@ import com.google.gson.GsonBuilder;
import com.google.gson.internal.$Gson$Types;
import com.google.gson.reflect.TypeToken;
import com.mindorks.framework.mvvm.data.db.DbHelper;
import com.mindorks.framework.mvvm.data.db.entity.Option;
import com.mindorks.framework.mvvm.data.db.entity.Question;
import com.mindorks.framework.mvvm.data.db.entity.User;
import com.mindorks.framework.mvvm.data.db.model.Option;
import com.mindorks.framework.mvvm.data.db.model.Question;
import com.mindorks.framework.mvvm.data.db.model.User;
import com.mindorks.framework.mvvm.data.network.ApiHeader;
import com.mindorks.framework.mvvm.data.network.ApiHelper;
import com.mindorks.framework.mvvm.data.network.model.BlogResponse;
......
......@@ -22,9 +22,9 @@ import android.arch.persistence.room.RoomDatabase;
import com.mindorks.framework.mvvm.data.db.dao.OptionDao;
import com.mindorks.framework.mvvm.data.db.dao.QuestionDao;
import com.mindorks.framework.mvvm.data.db.dao.UserDao;
import com.mindorks.framework.mvvm.data.db.entity.Option;
import com.mindorks.framework.mvvm.data.db.entity.Question;
import com.mindorks.framework.mvvm.data.db.entity.User;
import com.mindorks.framework.mvvm.data.db.model.Option;
import com.mindorks.framework.mvvm.data.db.model.Question;
import com.mindorks.framework.mvvm.data.db.model.User;
/**
* Created by amitshekhar on 07/07/17.
......
......@@ -16,9 +16,9 @@
package com.mindorks.framework.mvvm.data.db;
import com.mindorks.framework.mvvm.data.db.entity.Option;
import com.mindorks.framework.mvvm.data.db.entity.Question;
import com.mindorks.framework.mvvm.data.db.entity.User;
import com.mindorks.framework.mvvm.data.db.model.Option;
import com.mindorks.framework.mvvm.data.db.model.Question;
import com.mindorks.framework.mvvm.data.db.model.User;
import java.util.List;
import java.util.concurrent.Callable;
......
......@@ -16,9 +16,9 @@
package com.mindorks.framework.mvvm.data.db;
import com.mindorks.framework.mvvm.data.db.entity.Option;
import com.mindorks.framework.mvvm.data.db.entity.Question;
import com.mindorks.framework.mvvm.data.db.entity.User;
import com.mindorks.framework.mvvm.data.db.model.Option;
import com.mindorks.framework.mvvm.data.db.model.Question;
import com.mindorks.framework.mvvm.data.db.model.User;
import java.util.List;
......
......@@ -21,7 +21,7 @@ import android.arch.persistence.room.Insert;
import android.arch.persistence.room.OnConflictStrategy;
import android.arch.persistence.room.Query;
import com.mindorks.framework.mvvm.data.db.entity.Option;
import com.mindorks.framework.mvvm.data.db.model.Option;
import java.util.List;
......
......@@ -21,7 +21,7 @@ import android.arch.persistence.room.Insert;
import android.arch.persistence.room.OnConflictStrategy;
import android.arch.persistence.room.Query;
import com.mindorks.framework.mvvm.data.db.entity.Question;
import com.mindorks.framework.mvvm.data.db.model.Question;
import java.util.List;
......
......@@ -22,7 +22,7 @@ import android.arch.persistence.room.Insert;
import android.arch.persistence.room.OnConflictStrategy;
import android.arch.persistence.room.Query;
import com.mindorks.framework.mvvm.data.db.entity.User;
import com.mindorks.framework.mvvm.data.db.model.User;
import java.util.List;
......
......@@ -14,7 +14,7 @@
* limitations under the License
*/
package com.mindorks.framework.mvvm.data.db.entity;
package com.mindorks.framework.mvvm.data.db.model;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
......
......@@ -14,7 +14,7 @@
* limitations under the License
*/
package com.mindorks.framework.mvvm.data.db.entity;
package com.mindorks.framework.mvvm.data.db.model;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
......
......@@ -14,7 +14,7 @@
* limitations under the License
*/
package com.mindorks.framework.mvvm.data.db.entity;
package com.mindorks.framework.mvvm.data.db.model;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
......
......@@ -18,6 +18,7 @@ package com.mindorks.framework.mvvm.di.component;
import com.mindorks.framework.mvvm.di.PerActivity;
import com.mindorks.framework.mvvm.di.module.ActivityModule;
import com.mindorks.framework.mvvm.ui.login.LoginActivity;
import com.mindorks.framework.mvvm.ui.main.MainActivity;
import com.mindorks.framework.mvvm.ui.splash.SplashActivity;
......@@ -32,6 +33,8 @@ public interface ActivityComponent {
void inject(SplashActivity activity);
void inject(LoginActivity activity);
void inject(MainActivity activity);
}
......@@ -22,6 +22,7 @@ import android.support.v7.app.AppCompatActivity;
import com.mindorks.framework.mvvm.data.DataManager;
import com.mindorks.framework.mvvm.di.ActivityContext;
import com.mindorks.framework.mvvm.di.PerActivity;
import com.mindorks.framework.mvvm.ui.login.LoginViewModel;
import com.mindorks.framework.mvvm.ui.main.MainViewModel;
import com.mindorks.framework.mvvm.ui.splash.SplashViewModel;
import com.mindorks.framework.mvvm.utils.rx.AppSchedulerProvider;
......@@ -64,14 +65,6 @@ public class ActivityModule {
return new AppSchedulerProvider();
}
@Provides
@PerActivity
MainViewModel provideMainViewModel(DataManager dataManager,
SchedulerProvider schedulerProvider,
CompositeDisposable compositeDisposable) {
return new MainViewModel(dataManager, schedulerProvider, compositeDisposable);
}
@Provides
@PerActivity
SplashViewModel provideSplashViewModel(DataManager dataManager,
......@@ -79,4 +72,20 @@ public class ActivityModule {
CompositeDisposable compositeDisposable) {
return new SplashViewModel(dataManager, schedulerProvider, compositeDisposable);
}
@Provides
@PerActivity
LoginViewModel provideLoginViewModel(DataManager dataManager,
SchedulerProvider schedulerProvider,
CompositeDisposable compositeDisposable) {
return new LoginViewModel(dataManager, schedulerProvider, compositeDisposable);
}
@Provides
@PerActivity
MainViewModel provideMainViewModel(DataManager dataManager,
SchedulerProvider schedulerProvider,
CompositeDisposable compositeDisposable) {
return new MainViewModel(dataManager, schedulerProvider, compositeDisposable);
}
}
/*
* Copyright (C) 2017 MINDORKS NEXTGEN PRIVATE LIMITED
*
* 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
*
* https://mindorks.com/license/apache-v2
*
* 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.mindorks.framework.mvvm.ui.login;
import android.content.Context;
import android.content.Intent;
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import com.mindorks.framework.mvvm.R;
import com.mindorks.framework.mvvm.databinding.ActivityLoginBinding;
import com.mindorks.framework.mvvm.ui.base.BaseActivity;
import javax.inject.Inject;
import butterknife.ButterKnife;
/**
* Created by amitshekhar on 08/07/17.
*/
public class LoginActivity extends BaseActivity implements LoginCallback {
@Inject
LoginViewModel mLoginViewModel;
public static Intent getStartIntent(Context context) {
Intent intent = new Intent(context, LoginActivity.class);
return intent;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityLoginBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_login);
getActivityComponent().inject(this);
setUnBinder(ButterKnife.bind(this));
binding.setViewmodel(mLoginViewModel);
mLoginViewModel.setCallback(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
mLoginViewModel.onDestroy();
}
}
/*
* Copyright (C) 2017 MINDORKS NEXTGEN PRIVATE LIMITED
*
* 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
*
* https://mindorks.com/license/apache-v2
*
* 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.mindorks.framework.mvvm.ui.login;
/**
* Created by amitshekhar on 08/07/17.
*/
public interface LoginCallback {
}
/*
* Copyright (C) 2017 MINDORKS NEXTGEN PRIVATE LIMITED
*
* 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
*
* https://mindorks.com/license/apache-v2
*
* 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.mindorks.framework.mvvm.ui.login;
import com.mindorks.framework.mvvm.data.DataManager;
import com.mindorks.framework.mvvm.ui.base.BaseViewModel;
import com.mindorks.framework.mvvm.utils.rx.SchedulerProvider;
import io.reactivex.disposables.CompositeDisposable;
/**
* Created by amitshekhar on 08/07/17.
*/
public class LoginViewModel extends BaseViewModel<LoginCallback> {
public LoginViewModel(DataManager dataManager,
SchedulerProvider schedulerProvider,
CompositeDisposable compositeDisposable) {
super(dataManager, schedulerProvider, compositeDisposable);
}
}
......@@ -32,7 +32,7 @@ import butterknife.ButterKnife;
public class MainActivity extends BaseActivity {
@Inject
MainViewModel mainViewModel;
MainViewModel mMainViewModel;
public static Intent getStartIntent(Context context) {
Intent intent = new Intent(context, MainActivity.class);
......@@ -43,18 +43,25 @@ public class MainActivity extends BaseActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding mainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
getActivityComponent().inject(this);
setUnBinder(ButterKnife.bind(this));
mainBinding.setViewmodel(mainViewModel);
binding.setViewmodel(mMainViewModel);
}
@Override
protected void onDestroy() {
super.onDestroy();
mMainViewModel.onDestroy();
}
@Override
protected void onResume() {
mainViewModel.setText("Amit Shekhar");
mMainViewModel.setText("Amit Shekhar");
super.onResume();
}
}
......@@ -24,6 +24,7 @@ import android.os.Bundle;
import com.mindorks.framework.mvvm.R;
import com.mindorks.framework.mvvm.databinding.ActivitySplashBinding;
import com.mindorks.framework.mvvm.ui.base.BaseActivity;
import com.mindorks.framework.mvvm.ui.login.LoginActivity;
import com.mindorks.framework.mvvm.ui.main.MainActivity;
import javax.inject.Inject;
......@@ -69,9 +70,17 @@ public class SplashActivity extends BaseActivity implements SplashCallback {
}
@Override
public void onSeedingComplete() {
public void openLoginActivity() {
Intent intent = LoginActivity.getStartIntent(SplashActivity.this);
startActivity(intent);
finish();
}
@Override
public void openMainActivity() {
Intent intent = MainActivity.getStartIntent(SplashActivity.this);
startActivity(intent);
finish();
}
}
......@@ -22,6 +22,8 @@ package com.mindorks.framework.mvvm.ui.splash;
public interface SplashCallback {
void onSeedingComplete();
void openLoginActivity();
void openMainActivity();
}
......@@ -52,14 +52,23 @@ public class SplashViewModel extends BaseViewModel<SplashCallback> {
.subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
getCallback().onSeedingComplete();
decideNextActivity();
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
getCallback().onSeedingComplete();
decideNextActivity();
}
}));
}
private void decideNextActivity() {
if (getDataManager().getCurrentUserLoggedInMode()
== DataManager.LoggedInMode.LOGGED_IN_MODE_LOGGED_OUT.getType()) {
getCallback().openLoginActivity();
} else {
getCallback().openMainActivity();
}
}
}
<?xml version="1.0" encoding="utf-8"?><!--
~ Copyright (C) 2017 MINDORKS NEXTGEN PRIVATE LIMITED
~
~ 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
~
~ https://mindorks.com/license/apache-v2
~
~ 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
-->
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.mindorks.framework.mvvm.ui.login.LoginActivity">
<data>
<import type="android.view.View" />
<variable
name="view"
type="com.mindorks.framework.mvvm.ui.login.LoginActivity" />
<variable
name="viewmodel"
type="com.mindorks.framework.mvvm.ui.login.LoginViewModel" />
</data>
<RelativeLayout
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_design">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="80dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="80dp"
app:cardCornerRadius="7dp"
app:cardElevation="22dp">
<TextView
style="@style/TextStyle.Heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|top"
android:layout_marginTop="60dp"
android:text="@string/login_dummy"
android:textAllCaps="true"
android:textSize="20sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="20dp"
android:orientation="vertical">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="@color/gray"
app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout">
<android.support.design.widget.TextInputEditText
android:id="@+id/et_email"
style="@style/TextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:background="@drawable/input_border_bottom"
android:cursorVisible="true"
android:gravity="center|left|bottom"
android:hint="@string/email"
android:inputType="textEmailAddress"
android:maxLength="50"
android:paddingBottom="10dp"
android:textColor="@color/black_effective"
android:textSize="18sp" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password"
android:textColorHint="@color/gray"
app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout"
app:passwordToggleEnabled="true">
<android.support.design.widget.TextInputEditText
android:id="@+id/et_password"
style="@style/TextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="30dp"
android:background="@drawable/input_border_bottom"
android:cursorVisible="true"
android:gravity="center|left|bottom"
android:inputType="textPassword"
android:maxLength="50"
android:paddingBottom="10dp"
android:textColor="@color/black_effective"
android:textSize="18sp" />
</android.support.design.widget.TextInputLayout>
<Button
android:id="@+id/btn_server_login"
style="@style/Button.Primary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="15dp"
android:padding="10dp"
android:text="@string/login"
android:textSize="18dp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center"
android:layout_marginBottom="40dp"
android:orientation="horizontal">
<ImageButton
android:id="@+id/ib_google_login"
android:layout_width="40dp"
android:layout_height="40dp"
android:background="@color/transparent"
android:scaleType="centerCrop"
app:srcCompat="@drawable/ic_google_plus" />
<ImageButton
android:id="@+id/ib_fb_login"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginLeft="24dp"
android:background="@color/transparent"
android:scaleType="centerCrop"
app:srcCompat="@drawable/ic_facebook" />
</LinearLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
</layout>
\ No newline at end of file
......@@ -17,7 +17,7 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.mindorks.framework.mvvm.ui.main.MainActivity">
tools:context="com.mindorks.framework.mvvm.ui.splash.SplashActivity">
<data>
......@@ -49,5 +49,4 @@
android:src="@mipmap/ic_launcher" />
</RelativeLayout>
</layout>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册