Commit af482643 authored by Marcus Sales's avatar Marcus Sales

Completa boilerplate android-mvp

* Pacotes de banco de dados e operações de rede adicionados
* SchedulerProvider adicionado
* Adicionado método de sessão finalizado na BaseActivity e de tratamento de erro no BasePresenter
* Remove calligraphy
parent 14c6540a
apply plugin: 'com.android.application'
apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'me.tatarka.retrolambda'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
......@@ -38,9 +37,6 @@ dependencies {
compile "br.com.evologica:curio-java:$rootProject.curioJavaVersion"
// font
compile "uk.co.chrisjenx:calligraphy:$rootProject.calligraphyVersion"
// // network
// compile "com.amitshekhar.android:rx2-android-networking:$rootProject.rx2AndroidNetworking"
// compile "com.google.code.gson:gson:$rootProject.gsonVersion"
......
......@@ -8,7 +8,6 @@ import br.com.evologica.mvp.data.DataManager;
import br.com.evologica.mvp.di.component.ApplicationComponent;
import br.com.evologica.mvp.di.component.DaggerApplicationComponent;
import br.com.evologica.mvp.di.module.ApplicationModule;
import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
/**
* Created by marcussales on 01/03/2017.
......@@ -17,10 +16,7 @@ import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
public class MvpApp extends Application {
@Inject
DataManager mDataManager;
@Inject
CalligraphyConfig mCalligraphyConfig;
DataManager dataManager;
private ApplicationComponent mApplicationComponent;
......@@ -28,14 +24,10 @@ public class MvpApp extends Application {
public void onCreate() {
super.onCreate();
//AppDataManager.initInstance(this);
mApplicationComponent = DaggerApplicationComponent.builder()
.applicationModule(new ApplicationModule(this)).build();
mApplicationComponent.inject(this);
CalligraphyConfig.initDefault(mCalligraphyConfig);
}
public ApplicationComponent getComponent() {
......
......@@ -5,7 +5,8 @@ import android.content.Context;
import javax.inject.Inject;
import javax.inject.Singleton;
import br.com.evologica.curio.Service;
import br.com.evologica.mvp.data.db.DbHelper;
import br.com.evologica.mvp.data.network.ApiHelper;
import br.com.evologica.mvp.data.prefs.PreferencesHelper;
import br.com.evologica.mvp.di.ApplicationContext;
......@@ -18,37 +19,25 @@ public class AppDataManager implements DataManager {
private static final String TAG = "AppDataManager";
private final Context mContext;
private final PreferencesHelper mPreferencesHelper;
private final Service mService;
private final Context context;
private final ApiHelper apiHelper;
private final DbHelper dbHelper;
private final PreferencesHelper preferencesHelper;
@Inject
public AppDataManager(@ApplicationContext Context ctx,
PreferencesHelper preferencesHelper,
Service service) {
mContext = ctx;
mPreferencesHelper = preferencesHelper;
mService = service;
ApiHelper apiHelper,
DbHelper dbHelper,
PreferencesHelper preferencesHelper) {
this.context = ctx;
this.apiHelper = apiHelper;
this.dbHelper = dbHelper;
this.preferencesHelper = preferencesHelper;
}
@Override
public Service getService() {
return mService;
public void closeSession() {
apiHelper.closeSession();
}
@Override
public void setLoggedIn() {
mPreferencesHelper.setLoggedIn();
}
@Override
public void setLoggedOut() {
mPreferencesHelper.setLoggedOut();
}
@Override
public boolean isLogged() {
return mPreferencesHelper.isLogged();
}
}
package br.com.evologica.mvp.data;
import br.com.evologica.curio.Service;
import br.com.evologica.mvp.data.db.DbHelper;
import br.com.evologica.mvp.data.network.ApiHelper;
import br.com.evologica.mvp.data.prefs.PreferencesHelper;
/**
* Created by marcussales on 01/03/2017.
*/
public interface DataManager extends PreferencesHelper {
Service getService();
public interface DataManager extends ApiHelper, DbHelper, PreferencesHelper {
}
package br.com.evologica.mvp.data.db;
import android.content.Context;
import javax.inject.Inject;
import br.com.evologica.mvp.di.ApplicationContext;
import br.com.evologica.mvp.di.DatabaseInfo;
/**
* Created by marcussales on 30/10/2017.
*/
public class AppDbHelper implements DbHelper {
private final Context context;
@Inject
public AppDbHelper(@ApplicationContext Context context,
@DatabaseInfo String dbName) {
this.context = context;
}
}
package br.com.evologica.mvp.data.db;
/**
* Created by marcussales on 30/10/2017.
*/
public interface DbHelper {
}
package br.com.evologica.mvp.data.network;
/**
* Created by marcussales on 30/10/2017.
*/
public interface ApiHelper {
void closeSession();
}
package br.com.evologica.mvp.data.network;
import javax.inject.Inject;
import br.com.evologica.curio.Service;
/**
* Created by marcussales on 30/10/2017.
*/
public class AppApiHelper implements ApiHelper {
private final Service curioService;
@Inject
public AppApiHelper(Service curioService) {
this.curioService = curioService;
}
@Override
public void closeSession() {
}
}
......@@ -16,8 +16,6 @@ import br.com.evologica.mvp.di.PreferenceInfo;
@Singleton
public class AppPreferencesHelper implements PreferencesHelper {
private static final String PREF_KEY_USER_LOGGED_IN = "PREF_KEY_USER_LOGGED_IN";
private final SharedPreferences mPrefs;
@Inject
......@@ -25,19 +23,4 @@ public class AppPreferencesHelper implements PreferencesHelper {
@PreferenceInfo String prefFileName) {
mPrefs = context.getSharedPreferences(prefFileName, Context.MODE_PRIVATE);
}
@Override
public void setLoggedIn() {
mPrefs.edit().putBoolean(PREF_KEY_USER_LOGGED_IN,true).apply();
}
@Override
public void setLoggedOut() {
mPrefs.edit().putBoolean(PREF_KEY_USER_LOGGED_IN,false).apply();
}
@Override
public boolean isLogged() {
return mPrefs.getBoolean(PREF_KEY_USER_LOGGED_IN,false);
}
}
......@@ -6,7 +6,4 @@ package br.com.evologica.mvp.data.prefs;
public interface PreferencesHelper {
void setLoggedIn();
void setLoggedOut();
boolean isLogged();
}
......@@ -14,6 +14,8 @@ import br.com.evologica.mvp.ui.main.MainPresenter;
import br.com.evologica.mvp.ui.splash.SplashMvpPresenter;
import br.com.evologica.mvp.ui.splash.SplashMvpView;
import br.com.evologica.mvp.ui.splash.SplashPresenter;
import br.com.evologica.mvp.utils.rx.AppSchedulerProvider;
import br.com.evologica.mvp.utils.rx.SchedulerProvider;
import dagger.Module;
import dagger.Provides;
import io.reactivex.disposables.CompositeDisposable;
......@@ -37,6 +39,11 @@ public class ActivityModule {
return mActivity;
}
@Provides
SchedulerProvider provideSchedulerProvider() {
return new AppSchedulerProvider();
}
@Provides
Activity provideActivity(){
return mActivity;
......
......@@ -5,18 +5,23 @@ import android.content.Context;
import javax.inject.Singleton;
import br.com.evologica.curio.CurioConfig;
import br.com.evologica.curio.Service;
import br.com.evologica.mvp.R;
import br.com.evologica.mvp.BuildConfig;
import br.com.evologica.mvp.data.AppDataManager;
import br.com.evologica.mvp.data.DataManager;
import br.com.evologica.mvp.data.db.AppDbHelper;
import br.com.evologica.mvp.data.db.DbHelper;
import br.com.evologica.mvp.data.network.ApiHelper;
import br.com.evologica.mvp.data.network.AppApiHelper;
import br.com.evologica.mvp.data.prefs.AppPreferencesHelper;
import br.com.evologica.mvp.data.prefs.PreferencesHelper;
import br.com.evologica.mvp.di.ApplicationContext;
import br.com.evologica.mvp.di.DatabaseInfo;
import br.com.evologica.mvp.di.PreferenceInfo;
import br.com.evologica.mvp.utils.AppConstants;
import dagger.Module;
import dagger.Provides;
import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
/**
* Created by marcussales on 02/03/2017.
......@@ -48,6 +53,18 @@ public class ApplicationModule {
return appDataManager;
}
@Provides
@Singleton
ApiHelper provideApiHelper(AppApiHelper appApiHelper) {
return appApiHelper;
}
@Provides
@Singleton
DbHelper provideDbHelper(AppDbHelper appDbHelper) {
return appDbHelper;
}
@Provides
@Singleton
PreferencesHelper providePreferencesHelper(AppPreferencesHelper appPreferencesHelper){
......@@ -61,18 +78,21 @@ public class ApplicationModule {
}
@Provides
@Singleton
CalligraphyConfig provideCalligraphyDefaultConfig() {
return new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/source-sans-pro/SourceSansPro-Regular.ttf")
.setFontAttrId(R.attr.fontPath)
.build();
@DatabaseInfo
String provideDatabaseName() {
return AppConstants.DB_NAME;
}
@Provides
@Singleton
Service provideCurioService() {
return new Service("CentralBonus", "192.168.0.34", "6161", "72");
if(BuildConfig.BUILD_TYPE.equals("release")) {
CurioConfig config = new CurioConfig("192.168.0.34", "6161", "72");
return new Service("CentralBonus", config);
}else {
CurioConfig config = new CurioConfig("192.168.0.34", "6161", "72");
return new Service("CentralBonus", config);
}
}
}
package br.com.evologica.mvp.ui.base;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
......@@ -17,30 +17,23 @@ import br.com.evologica.mvp.di.component.ActivityComponent;
import br.com.evologica.mvp.di.component.DaggerActivityComponent;
import br.com.evologica.mvp.di.module.ActivityModule;
import br.com.evologica.mvp.utils.CommonUtils;
import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper;
public class BaseActivity extends AppCompatActivity implements MvpView, BaseFragment.Callback {
private ActivityComponent mActivityComponent;
private ProgressDialog mProgressDialog;
private ActivityComponent activityComponent;
private ProgressDialog progressDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivityComponent = DaggerActivityComponent.builder()
activityComponent = DaggerActivityComponent.builder()
.activityModule(new ActivityModule(this))
.applicationComponent(((MvpApp) getApplication()).getComponent())
.build();
}
public ActivityComponent getActivityComponent() {
return mActivityComponent;
}
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
return activityComponent;
}
@Override
......@@ -56,13 +49,13 @@ public class BaseActivity extends AppCompatActivity implements MvpView, BaseFrag
@Override
public void showLoading() {
hideLoading();
mProgressDialog = CommonUtils.showLoadingDialog(this);
progressDialog = CommonUtils.showLoadingDialog(this);
}
@Override
public void hideLoading() {
if (mProgressDialog != null && mProgressDialog.isShowing()) {
mProgressDialog.cancel();
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.cancel();
}
}
......@@ -72,15 +65,6 @@ public class BaseActivity extends AppCompatActivity implements MvpView, BaseFrag
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void onError(String message) {
if (message != null) {
......@@ -90,6 +74,27 @@ public class BaseActivity extends AppCompatActivity implements MvpView, BaseFrag
}
}
@Override
public void sessionFinished() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
AlertDialog sessionExpiredDialog = builder.setMessage("Sua sessão expirou. Por favor, entre " +
"novamente.")
.setPositiveButton("OK",
(dialog, which) -> {
/*Intent intent = new Intent(BaseActivity.this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
dialog.dismiss();
finish();*/
}
)
.setCancelable(false)
.create();
sessionExpiredDialog.show();
}
private void showSnackBar(String message) {
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content),
message, Snackbar.LENGTH_SHORT);
......
package br.com.evologica.mvp.ui.base;
import android.content.Context;
import android.support.annotation.StringRes;
import android.support.v4.app.Fragment;
......@@ -9,6 +10,8 @@ import android.support.v4.app.Fragment;
public class BaseFragment extends Fragment implements MvpView {
private BaseActivity baseActivity;
@Override
public void showLoading() {
......@@ -29,6 +32,25 @@ public class BaseFragment extends Fragment implements MvpView {
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if(context instanceof BaseActivity){
BaseActivity activity = (BaseActivity) context;
this.baseActivity = activity;
activity.onFragmentAttached();
}
}
public BaseActivity getBaseActivity() {
return baseActivity;
}
@Override
public void sessionFinished() {
baseActivity.sessionFinished();
}
public interface Callback {
void onFragmentAttached();
......
package br.com.evologica.mvp.ui.base;
import java.net.ConnectException;
import java.net.NoRouteToHostException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import javax.inject.Inject;
import br.com.evologica.curio.exception.UCImplNotFoundException;
import br.com.evologica.curio.exception.UCSessionNotFoundException;
import br.com.evologica.mvp.data.DataManager;
import br.com.evologica.mvp.utils.rx.SchedulerProvider;
import io.reactivex.disposables.CompositeDisposable;
public class BasePresenter<V extends MvpView> implements MvpPresenter<V> {
private V mMvpView;
private V mvpView;
private final DataManager mDataManager;
private final CompositeDisposable mCompositeDisposable;
private final DataManager dataManager;
private final CompositeDisposable compositeDisposable;
private final SchedulerProvider schedulerProvider;
@Inject
public BasePresenter(DataManager mDataManager, CompositeDisposable mCompositeDisposable) {
this.mDataManager = mDataManager;
this.mCompositeDisposable = mCompositeDisposable;
public BasePresenter(DataManager mDataManager, CompositeDisposable mCompositeDisposable, SchedulerProvider schedulerProvider) {
this.dataManager = mDataManager;
this.compositeDisposable = mCompositeDisposable;
this.schedulerProvider = schedulerProvider;
}
public V getMvpView() {
return mMvpView;
return mvpView;
}
@Override
public void onAttach(V mvpView) {
mMvpView = mvpView;
this.mvpView = mvpView;
}
@Override
public void onDetach() {
mCompositeDisposable.dispose();
mMvpView = null;
mvpView = null;
compositeDisposable.clear();
}
@Override
public void handleError(Throwable err) {
if(err instanceof UCImplNotFoundException) {
if (isViewAttached())
getMvpView().onError("Não é possível realizar essa operação nesta versão do serviço");
} else if(err instanceof UCSessionNotFoundException){
getDataManager().closeSession();
if(isViewAttached())
getMvpView().sessionFinished();
}else if(err instanceof UnknownHostException ||
err instanceof ConnectException ||
err instanceof SocketTimeoutException ||
err instanceof NoRouteToHostException) {
if (isViewAttached()) {
//getMvpView().onError(R.string.connect_exception_message);
}
} else {
if(isViewAttached()) {
getMvpView().onError(err.getMessage());
}
}
}
public boolean isViewAttached() {
return mMvpView != null;
return mvpView != null;
}
public DataManager getDataManager() {
return mDataManager;
return dataManager;
}
public CompositeDisposable getCompositeDisposable() {
return mCompositeDisposable;
return compositeDisposable;
}
public SchedulerProvider getSchedulerProvider() {
return schedulerProvider;
}
}
......@@ -8,4 +8,6 @@ public interface MvpPresenter<V extends MvpView> {
void onAttach(V mvpView);
void onDetach();
void handleError(Throwable err);
}
......@@ -10,4 +10,6 @@ public interface MvpView {
void onError(@StringRes int resId);
void onError(String message);
void sessionFinished();
}
......@@ -21,16 +21,16 @@ import butterknife.OnClick;
public class LoginActivity extends BaseActivity implements LoginMvpView {
private static final String TAG = "LoginActivity";
private static final String TAG = LoginActivity.class.getSimpleName();
@Inject
LoginMvpPresenter<LoginMvpView> mPresenter;
LoginMvpPresenter<LoginMvpView> presenter;
@BindView(R.id.et_email)
EditText mEmailEditText;
EditText emailEditText;
@BindView(R.id.et_password)
EditText mPasswordEditText;
EditText passwordEditText;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
......@@ -41,13 +41,13 @@ public class LoginActivity extends BaseActivity implements LoginMvpView {
ButterKnife.bind(this);
mPresenter.onAttach(LoginActivity.this);
presenter.onAttach(LoginActivity.this);
}
@OnClick(R.id.btn_login)
void onLogin(View v) {
mPresenter.onLogin(mEmailEditText.getText().toString(),
mPasswordEditText.getText().toString());
presenter.onLogin(emailEditText.getText().toString(),
passwordEditText.getText().toString());
}
@Override
......@@ -59,7 +59,7 @@ public class LoginActivity extends BaseActivity implements LoginMvpView {
@Override
protected void onDestroy() {
mPresenter.onDetach();
presenter.onDetach();
super.onDestroy();
}
......
......@@ -4,9 +4,8 @@ import javax.inject.Inject;
import br.com.evologica.mvp.data.DataManager;
import br.com.evologica.mvp.ui.base.BasePresenter;
import io.reactivex.android.schedulers.AndroidSchedulers;
import br.com.evologica.mvp.utils.rx.SchedulerProvider;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
/**
* Created by marcussales on 01/03/2017.
......@@ -17,13 +16,13 @@ public class LoginPresenter<V extends LoginMvpView> extends BasePresenter<V> imp
private static final String TAG = "LoginPresenter";
@Inject
public LoginPresenter(DataManager dataManager, CompositeDisposable compositeDisposable) {
super(dataManager, compositeDisposable);
public LoginPresenter(DataManager dataManager, CompositeDisposable compositeDisposable, SchedulerProvider schedulerProvider) {
super(dataManager, compositeDisposable, schedulerProvider);
}
@Override
public void onLogin(String email, String password) {
getMvpView().showLoading();
/*getMvpView().showLoading();
getCompositeDisposable().add(
getDataManager().getService().openSession(email, password)
.subscribeOn(Schedulers.io())
......@@ -41,6 +40,6 @@ public class LoginPresenter<V extends LoginMvpView> extends BasePresenter<V> imp
}
)
);
);*/
}
}
......@@ -21,11 +21,13 @@ import butterknife.OnClick;
public class MainActivity extends BaseActivity implements MainMvpView {
private static final String TAG = MainActivity.class.getSimpleName();
@Inject
MainMvpPresenter<MainMvpView> mPresenter;
MainMvpPresenter<MainMvpView> presenter;
@BindView(R.id.logout_button)
Button mLogoutButton;
Button logoutButton;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
......@@ -36,13 +38,13 @@ public class MainActivity extends BaseActivity implements MainMvpView {
ButterKnife.bind(this);
mPresenter.onAttach(MainActivity.this);
presenter.onAttach(MainActivity.this);
}
@OnClick(R.id.logout_button)
void onLogout(View v) {
mPresenter.onLogout();
presenter.onLogout();
}
@Override
......@@ -54,7 +56,7 @@ public class MainActivity extends BaseActivity implements MainMvpView {
@Override
protected void onDestroy() {
mPresenter.onDetach();
presenter.onDetach();
super.onDestroy();
}
......
......@@ -2,26 +2,22 @@ package br.com.evologica.mvp.ui.main;
import javax.inject.Inject;
import br.com.evologica.curio.CurioRequest;
import br.com.evologica.curio.UseCase;
import br.com.evologica.mvp.data.DataManager;
import br.com.evologica.mvp.ui.base.BasePresenter;
import io.reactivex.android.schedulers.AndroidSchedulers;
import br.com.evologica.mvp.utils.rx.SchedulerProvider;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
public class MainPresenter<V extends MainMvpView> extends BasePresenter<V> implements MainMvpPresenter<V> {
@Inject
public MainPresenter(DataManager dataManager, CompositeDisposable compositeDisposable) {
super(dataManager, compositeDisposable);
public MainPresenter(DataManager dataManager, CompositeDisposable compositeDisposable, SchedulerProvider schedulerProvider) {
super(dataManager, compositeDisposable, schedulerProvider);
}
@Override
public void onAttach(V mvpView) {
super.onAttach(mvpView);
getMvpView().showLoading();
/* getMvpView().showLoading();
getCompositeDisposable().add(
getDataManager().getService().openUseCase("3034", "ConsultarEventos")
.subscribeOn(Schedulers.io())
......@@ -52,12 +48,12 @@ public class MainPresenter<V extends MainMvpView> extends BasePresenter<V> imple
}
)
);
);*/
}
@Override
public void onLogout() {
getMvpView().showLoading();
getCompositeDisposable().add(
//getMvpView().showLoading();
/*getCompositeDisposable().add(
getDataManager().getService().closeSession()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
......@@ -73,7 +69,7 @@ public class MainPresenter<V extends MainMvpView> extends BasePresenter<V> imple
},
getMvpView()::hideLoading
)
);
);*/
}
}
......@@ -14,8 +14,10 @@ import butterknife.ButterKnife;
public class SplashActivity extends BaseActivity implements SplashMvpView {
private static final String TAG = SplashActivity.class.getSimpleName();
@Inject
SplashMvpPresenter<SplashMvpView> mPresenter;
SplashMvpPresenter<SplashMvpView> presenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
......@@ -23,7 +25,7 @@ public class SplashActivity extends BaseActivity implements SplashMvpView {
setContentView(R.layout.activity_splash);
getActivityComponent().inject(this);
ButterKnife.bind(this);
mPresenter.onAttach(SplashActivity.this);
presenter.onAttach(SplashActivity.this);
}
@Override
......@@ -42,7 +44,7 @@ public class SplashActivity extends BaseActivity implements SplashMvpView {
@Override
protected void onDestroy() {
mPresenter.onDetach();
presenter.onDetach();
super.onDestroy();
}
......
......@@ -4,23 +4,24 @@ import javax.inject.Inject;
import br.com.evologica.mvp.data.DataManager;
import br.com.evologica.mvp.ui.base.BasePresenter;
import br.com.evologica.mvp.utils.rx.SchedulerProvider;
import io.reactivex.disposables.CompositeDisposable;
public class SplashPresenter<V extends SplashMvpView> extends BasePresenter<V> implements SplashMvpPresenter<V> {
@Inject
public SplashPresenter(DataManager dataManager, CompositeDisposable compositeDisposable) {
super(dataManager, compositeDisposable);
public SplashPresenter(DataManager dataManager, CompositeDisposable compositeDisposable, SchedulerProvider schedulerProvider) {
super(dataManager, compositeDisposable, schedulerProvider);
}
@Override
public void onAttach(V mvpView) {
super.onAttach(mvpView);
if (!getDataManager().isLogged()){
/* if (!getDataManager().isLogged()){
getMvpView().openLoginActivity();
}else{
getMvpView().openMainActivity();
}
}*/
}
}
......@@ -7,6 +7,7 @@ package br.com.evologica.mvp.utils;
public final class AppConstants {
public static final String PREF_NAME = "pref";
public static final String DB_NAME = "db_name";
private AppConstants(){
......
package br.com.evologica.mvp.utils.rx;
import io.reactivex.Scheduler;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
/**
* Created by marcussales on 30/10/2017.
*/
public class AppSchedulerProvider implements SchedulerProvider {
@Override
public Scheduler computation() {
return Schedulers.computation();
}
@Override
public Scheduler io() {
return Schedulers.io();
}
@Override
public Scheduler ui() {
return AndroidSchedulers.mainThread();
}
}
package br.com.evologica.mvp.utils.rx;
import io.reactivex.Scheduler;
/**
* Created by marcussales on 30/10/2017.
*/
public interface SchedulerProvider {
Scheduler computation();
Scheduler io();
Scheduler ui();
}
......@@ -31,7 +31,6 @@
app:cardElevation="16dp">
<TextView
style="@style/TextStyle.Heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|top"
......
......@@ -28,7 +28,6 @@
<item name="android:textSize">16sp</item>
<item name="android:typeface">sans</item>
<item name="drawerArrowStyle">@style/MaterialDrawer.DrawerArrowStyle</item>
<item name="android:textAppearance">@style/TextAppearance.Text.Regular</item>
</style>
<style name="AppThemeFullScreen" parent="AppTheme">
......@@ -42,22 +41,6 @@
<item name="color">@color/white</item>
</style>
<style name="TextAppearance.Text.Regular" parent="android:TextAppearance">
<item name="fontPath">fonts/source-sans-pro/SourceSansPro-Regular.ttf</item>
</style>
<style name="TextAppearance.Text.Bold" parent="android:TextAppearance">
<item name="fontPath">fonts/source-sans-pro/SourceSansPro-Bold.ttf</item>
</style>
<style name="TextAppearance.Text.Light" parent="android:TextAppearance">
<item name="fontPath">fonts/source-sans-pro/SourceSansPro-Light.ttf</item>
</style>
<style name="TextAppearance.Text.Italic" parent="android:TextAppearance">
<item name="fontPath">fonts/source-sans-pro/SourceSansPro-Italic.ttf</item>
</style>
<style name="TextStyle">
<item name="android:layout_marginTop">2dp</item>
<item name="android:layout_marginBottom">2dp</item>
......@@ -66,26 +49,6 @@
<item name="android:textColor">@color/teal_dark</item>
</style>
<style name="TextStyle.Title" parent="TextStyle">
<item name="android:textAppearance">@style/TextAppearance.Text.Regular</item>
</style>
<style name="TextStyle.Title.Sub" parent="TextStyle.Title">
<item name="android:textAppearance">@style/TextAppearance.Text.Light</item>
<item name="android:textSize">14sp</item>
</style>
<style name="TextStyle.Heading" parent="TextStyle">
<item name="android:textSize">16sp</item>
<item name="android:textAppearance">@style/TextAppearance.Text.Bold</item>
</style>
<style name="TextStyle.Comment" parent="TextStyle">
<item name="android:textSize">16sp</item>
<item name="android:textAppearance">@style/TextAppearance.Text.Italic</item>
</style>
<style name="TextStyle.Edit" parent="TextStyle">
<item name="colorControlActivated">@color/teal</item>
</style>
......@@ -96,11 +59,6 @@
<item name="android:minHeight">?attr/actionBarSize</item>
</style>
<style name="Toolbar.TitleText" parent="TextStyle.Heading">
<item name="android:textColor">@color/dark_gray</item>
<item name="android:textSize">22sp</item>
</style>
<style name="Button" parent="Widget.AppCompat.Button">
<item name="android:textColor">@color/black_effective</item>
<item name="android:layout_height">48dp</item>
......
......@@ -3,10 +3,10 @@
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0'
classpath 'me.tatarka:gradle-retrolambda:3.2.0'
classpath 'com.android.tools.build:gradle:3.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
......@@ -17,6 +17,7 @@ buildscript {
allprojects {
repositories {
jcenter()
google()
maven {
url 'http://nexus.conexops.com.br/repository/maven-releases/'
}
......@@ -31,14 +32,14 @@ task clean(type: Delete) {
ext {
// Sdk and tools
minSdkVersion = 18
targetSdkVersion = 25
compileSdkVersion = 25
buildToolsVersion = '25.0.2'
targetSdkVersion = 26
compileSdkVersion = 26
buildToolsVersion = '26.0.2'
curioJavaVersion = '0.4.2'
curioJavaVersion = '0.8.0-rc9'
// App dependencies
supportLibraryVersion = '25.2.0'
supportLibraryVersion = '27.0.0'
//gsonVersion = '2.8.0'
calligraphyVersion = '2.2.0'
......
#Fri Mar 03 00:48:29 BRT 2017
#Mon Oct 30 10:57:36 BRST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
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