diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..4ad7ed3 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +language: android +jdk: oraclejdk8 +android: + components: + - tools # to get the new `repository-11.xml` + - tools # see https://github.com/travis-ci/travis-ci/issues/6040#issuecomment-219367943) + - platform-tools + - build-tools-25.0.2 + - android-25 + - extra-android-m2repository + - extra-google-m2repository +before_script: cd outlay +script: +- ./gradlew assembleDebug + diff --git a/outlay/app/google-services.json b/outlay/app/google-services.json new file mode 100644 index 0000000..e8e20a5 --- /dev/null +++ b/outlay/app/google-services.json @@ -0,0 +1,55 @@ +{ + "project_info": { + "project_number": "493988397268", + "firebase_url": "https://outlay-c8db8.firebaseio.com", + "project_id": "outlay-c8db8", + "storage_bucket": "outlay-c8db8.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:493988397268:android:95649c21a8bc6266", + "android_client_info": { + "package_name": "app.outlay" + } + }, + "oauth_client": [ + { + "client_id": "493988397268-1thsbh8c2rtbbc38hd9opj2d4ggpff7s.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "app.outlay", + "certificate_hash": "90e14b32ea082f18eccd422a24e9b40b7cb18a03" + } + }, + { + "client_id": "493988397268-d8h6qppkcq2r87coobac4pl7rigsd5j3.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyDjc1HdmPnYw74rY4tQyZLzQTvXPwsdXRM" + } + ], + "services": { + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 2, + "other_platform_oauth_client": [ + { + "client_id": "493988397268-d8h6qppkcq2r87coobac4pl7rigsd5j3.apps.googleusercontent.com", + "client_type": 3 + } + ] + }, + "ads_service": { + "status": 2 + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/outlay/app/src/main/AndroidManifest.xml b/outlay/app/src/main/AndroidManifest.xml index a8ea1c7..f4da483 100644 --- a/outlay/app/src/main/AndroidManifest.xml +++ b/outlay/app/src/main/AndroidManifest.xml @@ -13,7 +13,7 @@ android:theme="@style/Theme.Material.Custom"> + android:screenOrientation="portrait" /> defaultCategories() { @Provides @Singleton Gson providerGson() { - Gson gson = new GsonBuilder().create(); - return gson; + return new GsonBuilder().create(); } private static Category category(String title, String icon, int color, int order) { diff --git a/outlay/app/src/main/java/app/outlay/executor/JobExecutor.java b/outlay/app/src/main/java/app/outlay/executor/JobExecutor.java index 1cf77b6..77e91de 100644 --- a/outlay/app/src/main/java/app/outlay/executor/JobExecutor.java +++ b/outlay/app/src/main/java/app/outlay/executor/JobExecutor.java @@ -1,6 +1,8 @@ package app.outlay.executor; +import android.support.annotation.NonNull; + import app.outlay.core.executor.ThreadExecutor; import java.util.concurrent.BlockingQueue; @@ -39,7 +41,7 @@ public JobExecutor() { } @Override - public void execute(Runnable runnable) { + public void execute(@NonNull Runnable runnable) { if (runnable == null) { throw new IllegalArgumentException("Runnable to execute cannot be null"); } @@ -51,7 +53,7 @@ private static class JobThreadFactory implements ThreadFactory { private int counter = 0; @Override - public Thread newThread(Runnable runnable) { + public Thread newThread(@NonNull Runnable runnable) { return new Thread(runnable, THREAD_NAME + counter++); } } diff --git a/outlay/app/src/main/java/app/outlay/firebase/ExpenseFirebaseSource.java b/outlay/app/src/main/java/app/outlay/firebase/ExpenseFirebaseSource.java index 63bb8d8..cd2abf3 100644 --- a/outlay/app/src/main/java/app/outlay/firebase/ExpenseFirebaseSource.java +++ b/outlay/app/src/main/java/app/outlay/firebase/ExpenseFirebaseSource.java @@ -133,7 +133,7 @@ public void onCancelled(DatabaseError databaseError) { } return categoryMap; }).switchMap(categoryMap -> - listObservable.flatMap(expenses -> Observable.from(expenses)) + listObservable.flatMap(Observable::from) .map(expense -> { String currentCatId = expense.getCategory().getId(); return expense.setCategory(categoryMap.get(currentCatId)); diff --git a/outlay/app/src/main/java/app/outlay/firebase/FirebaseAuthRxWrapper.java b/outlay/app/src/main/java/app/outlay/firebase/FirebaseAuthRxWrapper.java index bab412b..9996f0a 100644 --- a/outlay/app/src/main/java/app/outlay/firebase/FirebaseAuthRxWrapper.java +++ b/outlay/app/src/main/java/app/outlay/firebase/FirebaseAuthRxWrapper.java @@ -41,67 +41,44 @@ public Observable getUserToken(FirebaseUser firebaseUser) { }); } + private void addListener(Task task, rx.Subscriber subscriber) { + task.addOnCompleteListener(resultTask -> { + if (task.isSuccessful()) { + AuthResult authResult = task.getResult(); + subscriber.onNext(authResult); + subscriber.onCompleted(); + } else { + Exception e = task.getException(); + subscriber.onError(e); + } + }); + } + public Observable signUp(String email, String password) { return Observable.create(subscriber -> { Task task = firebaseAuth.createUserWithEmailAndPassword(email, password); - task.addOnCompleteListener(resultTask -> { - if (task.isSuccessful()) { - AuthResult authResult = task.getResult(); - subscriber.onNext(authResult); - subscriber.onCompleted(); - } else { - Exception e = task.getException(); - subscriber.onError(e); - } - }); + addListener(task, subscriber); }); } public Observable signIn(String email, String password) { return Observable.create(subscriber -> { Task task = firebaseAuth.signInWithEmailAndPassword(email, password); - task.addOnCompleteListener(resultTask -> { - if (task.isSuccessful()) { - AuthResult authResult = task.getResult(); - subscriber.onNext(authResult); - subscriber.onCompleted(); - } else { - Exception e = task.getException(); - subscriber.onError(e); - } - }); + addListener(task, subscriber); }); } public Observable signInAnonymously() { return Observable.create(subscriber -> { Task task = firebaseAuth.signInAnonymously(); - task.addOnCompleteListener(resultTask -> { - if (task.isSuccessful()) { - AuthResult authResult = task.getResult(); - subscriber.onNext(authResult); - subscriber.onCompleted(); - } else { - Exception e = task.getException(); - subscriber.onError(e); - } - }); + addListener(task, subscriber); }); } public Observable linkAccount(AuthCredential credentials) { return Observable.create(subscriber -> { Task task = firebaseAuth.getCurrentUser().linkWithCredential(credentials); - task.addOnCompleteListener(resultTask -> { - if (task.isSuccessful()) { - AuthResult authResult = task.getResult(); - subscriber.onNext(authResult); - subscriber.onCompleted(); - } else { - Exception e = task.getException(); - subscriber.onError(e); - } - }); + addListener(task, subscriber); }); } diff --git a/outlay/app/src/main/java/app/outlay/firebase/FirebaseAuthService.java b/outlay/app/src/main/java/app/outlay/firebase/FirebaseAuthService.java index fadb0bf..656401f 100644 --- a/outlay/app/src/main/java/app/outlay/firebase/FirebaseAuthService.java +++ b/outlay/app/src/main/java/app/outlay/firebase/FirebaseAuthService.java @@ -1,6 +1,7 @@ package app.outlay.firebase; import com.google.firebase.auth.AuthCredential; +import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.EmailAuthProvider; import app.outlay.domain.model.Credentials; import app.outlay.domain.model.User; @@ -26,30 +27,30 @@ public FirebaseAuthService(FirebaseAuthRxWrapper firebaseWrapper) { @Override public Observable signIn(Credentials credentials) { return firebaseWrapper.signIn(credentials.getEmail(), credentials.getPassword()) - .map(authResult -> authResult.getUser()) - .map(firebaseUser -> UserAdapter.fromFirebaseUser(firebaseUser)); + .map(AuthResult::getUser) + .map(UserAdapter::fromFirebaseUser); } @Override public Observable signUp(Credentials credentials) { return firebaseWrapper.signUp(credentials.getEmail(), credentials.getPassword()) - .map(authResult -> authResult.getUser()) - .map(firebaseUser -> UserAdapter.fromFirebaseUser(firebaseUser)); + .map(AuthResult::getUser) + .map(UserAdapter::fromFirebaseUser); } @Override public Observable linkCredentials(Credentials credentials) { AuthCredential emailCredentials = EmailAuthProvider.getCredential(credentials.getEmail(), credentials.getPassword()); return firebaseWrapper.linkAccount(emailCredentials) - .map(authResult -> authResult.getUser()) - .map(firebaseUser -> UserAdapter.fromFirebaseUser(firebaseUser)); + .map(AuthResult::getUser) + .map(UserAdapter::fromFirebaseUser); } @Override public Observable signInAnonymously() { return firebaseWrapper.signInAnonymously() - .map(authResult -> authResult.getUser()) - .map(firebaseUser -> UserAdapter.fromFirebaseUser(firebaseUser)); + .map(AuthResult::getUser) + .map(UserAdapter::fromFirebaseUser); } @Override diff --git a/outlay/app/src/main/java/app/outlay/mvp/presenter/AnalysisPresenter.java b/outlay/app/src/main/java/app/outlay/mvp/presenter/AnalysisPresenter.java index 551e4cf..06d41aa 100644 --- a/outlay/app/src/main/java/app/outlay/mvp/presenter/AnalysisPresenter.java +++ b/outlay/app/src/main/java/app/outlay/mvp/presenter/AnalysisPresenter.java @@ -35,7 +35,9 @@ public void getCategories() { @Override public void onNext(List categories) { super.onNext(categories); - getView().setCategories(categories); + if (getView()!=null){ + getView().setCategories(categories); + } } }); } @@ -47,7 +49,7 @@ public void getExpenses(Date startDate, Date endDate, Category category) { @Override public void onNext(Report report) { super.onNext(report); - if (isViewAttached()) { + if (isViewAttached() && getView()!=null) { getView().showAnalysis(report); } } diff --git a/outlay/app/src/main/java/app/outlay/mvp/presenter/CategoriesPresenter.java b/outlay/app/src/main/java/app/outlay/mvp/presenter/CategoriesPresenter.java index cec746f..d84ab10 100644 --- a/outlay/app/src/main/java/app/outlay/mvp/presenter/CategoriesPresenter.java +++ b/outlay/app/src/main/java/app/outlay/mvp/presenter/CategoriesPresenter.java @@ -31,7 +31,9 @@ public void getCategories() { getCategoriesUseCase.execute(new DefaultSubscriber>() { @Override public void onNext(List categories) { - getView().showCategories(categories); + if (getView()!=null){ + getView().showCategories(categories); + } } }); } diff --git a/outlay/app/src/main/java/app/outlay/mvp/presenter/CategoryDetailsPresenter.java b/outlay/app/src/main/java/app/outlay/mvp/presenter/CategoryDetailsPresenter.java index cabacd4..948db98 100644 --- a/outlay/app/src/main/java/app/outlay/mvp/presenter/CategoryDetailsPresenter.java +++ b/outlay/app/src/main/java/app/outlay/mvp/presenter/CategoryDetailsPresenter.java @@ -33,7 +33,9 @@ public void getCategory(String id) { getCategoryUseCase.execute(id, new DefaultSubscriber() { @Override public void onNext(Category category) { - getView().showCategory(category); + if (getView()!=null){ + getView().showCategory(category); + } } }); } @@ -42,7 +44,9 @@ public void updateCategory(Category category) { updateCategoryUseCase.execute(category, new DefaultSubscriber() { @Override public void onCompleted() { - getView().finish(); + if (getView()!=null){ + getView().finish(); + } } }); @@ -52,7 +56,9 @@ public void deleteCategory(Category category) { deleteCategoryUseCase.execute(category, new DefaultSubscriber() { @Override public void onCompleted() { - getView().finish(); + if (getView()!=null){ + getView().finish(); + } } }); } diff --git a/outlay/app/src/main/java/app/outlay/mvp/presenter/EnterExpensePresenter.java b/outlay/app/src/main/java/app/outlay/mvp/presenter/EnterExpensePresenter.java index 65337cb..3801cb5 100644 --- a/outlay/app/src/main/java/app/outlay/mvp/presenter/EnterExpensePresenter.java +++ b/outlay/app/src/main/java/app/outlay/mvp/presenter/EnterExpensePresenter.java @@ -42,7 +42,9 @@ public void getCategories() { getCategoriesUseCase.execute(new DefaultSubscriber>() { @Override public void onNext(List categories) { - getView().showCategories(categories); + if (getView()!=null){ + getView().showCategories(categories); + } } }); } @@ -52,7 +54,9 @@ public void createExpense(Expense expense) { createExpenseUseCase.execute(expense, new DefaultSubscriber() { @Override public void onNext(Expense expense) { - getView().alertExpenseSuccess(expense); + if (getView()!=null){ + getView().alertExpenseSuccess(expense); + } } }); diff --git a/outlay/app/src/main/java/app/outlay/mvp/presenter/ExpenseDetailsPresenter.java b/outlay/app/src/main/java/app/outlay/mvp/presenter/ExpenseDetailsPresenter.java index 8b5929b..d4a534a 100644 --- a/outlay/app/src/main/java/app/outlay/mvp/presenter/ExpenseDetailsPresenter.java +++ b/outlay/app/src/main/java/app/outlay/mvp/presenter/ExpenseDetailsPresenter.java @@ -41,7 +41,9 @@ public void findExpense(String expenseId, Date date) { getExpenseUseCase.execute(new GetExpenseUseCase.Input(expenseId, date), new DefaultSubscriber() { @Override public void onNext(Expense expense) { - getView().showExpense(expense); + if (getView()!=null){ + getView().showExpense(expense); + } } }); @@ -52,7 +54,9 @@ public void getCategories() { @Override public void onNext(List categories) { super.onNext(categories); - getView().showCategories(categories); + if (getView()!=null){ + getView().showCategories(categories); + } } }); } diff --git a/outlay/app/src/main/java/app/outlay/mvp/presenter/ExpensesListPresenter.java b/outlay/app/src/main/java/app/outlay/mvp/presenter/ExpensesListPresenter.java index 1369072..0885ce4 100644 --- a/outlay/app/src/main/java/app/outlay/mvp/presenter/ExpensesListPresenter.java +++ b/outlay/app/src/main/java/app/outlay/mvp/presenter/ExpensesListPresenter.java @@ -28,7 +28,9 @@ public void findExpenses(Date dateFrom, Date dateTo, String categoryId) { loadReportUseCase.execute(input, new DefaultSubscriber() { @Override public void onNext(Report report) { - getView().showReport(report); + if (getView()!=null){ + getView().showReport(report); + } } }); } diff --git a/outlay/app/src/main/java/app/outlay/mvp/presenter/LoginViewPresenter.java b/outlay/app/src/main/java/app/outlay/mvp/presenter/LoginViewPresenter.java index a25206c..91e45d8 100644 --- a/outlay/app/src/main/java/app/outlay/mvp/presenter/LoginViewPresenter.java +++ b/outlay/app/src/main/java/app/outlay/mvp/presenter/LoginViewPresenter.java @@ -48,7 +48,9 @@ public void signInGuest() { } private void signIn(Credentials credentials) { - getView().setProgress(true); + if (getView()!=null){ + getView().setProgress(true); + } userSignInUseCase.execute(credentials, new DefaultSubscriber() { @Override @@ -66,7 +68,9 @@ public void onError(Throwable e) { } public void signUp(String email, String password) { - getView().setProgress(true); + if (getView()!=null){ + getView().setProgress(true); + } Credentials credentials = new Credentials(email, password); @@ -89,7 +93,9 @@ public void linkAccount(String email, String password) { linkAccountUseCase.execute(new Credentials(email, password), new DefaultSubscriber() { @Override public void onNext(User user) { - getView().onSuccess(user); + if (getView()!=null){ + getView().onSuccess(user); + } } }); } @@ -102,12 +108,16 @@ public void trySignIn() { user.setEmail(firebaseUser.getEmail()); user.setAnonymous(firebaseUser.isAnonymous()); user.setUserName(firebaseUser.getDisplayName()); - getView().onSuccess(user); + if (getView()!=null){ + getView().onSuccess(user); + } } } private void onAuthSuccess(User user) { - getView().onSuccess(user); + if (getView()!=null){ + getView().onSuccess(user); + } } public void resetPassword(String email) { @@ -116,13 +126,17 @@ public void resetPassword(String email) { resetPasswordUseCase.execute(user, new DefaultSubscriber() { @Override public void onCompleted() { - getView().info("Email with was sent"); + if (getView()!=null){ + getView().info("Email with was sent"); + } } @Override public void onError(Throwable e) { super.onError(e); - getView().error(new Exception("Problem while resetting your password")); + if (getView()!=null){ + getView().error(new Exception("Problem while resetting your password")); + } } }); } diff --git a/outlay/app/src/main/java/app/outlay/mvp/presenter/ReportPresenter.java b/outlay/app/src/main/java/app/outlay/mvp/presenter/ReportPresenter.java index 0e34332..cf85c80 100644 --- a/outlay/app/src/main/java/app/outlay/mvp/presenter/ReportPresenter.java +++ b/outlay/app/src/main/java/app/outlay/mvp/presenter/ReportPresenter.java @@ -49,7 +49,9 @@ public void getExpenses(Date date, int period) { @Override public void onNext(Report report) { super.onNext(report); - getView().showReport(report); + if (getView()!=null){ + getView().showReport(report); + } } }); } diff --git a/outlay/app/src/main/java/app/outlay/view/activity/SingleFragmentActivity.java b/outlay/app/src/main/java/app/outlay/view/activity/SingleFragmentActivity.java index 708275c..f10ec29 100644 --- a/outlay/app/src/main/java/app/outlay/view/activity/SingleFragmentActivity.java +++ b/outlay/app/src/main/java/app/outlay/view/activity/SingleFragmentActivity.java @@ -10,6 +10,8 @@ public class SingleFragmentActivity extends ParentActivity { + private static final String FRAGMENT_PARAM = "fragment"; + public static void start(Context context, Class fragmentClass, Bundle bundle) { Intent intent = new Intent(context, SingleFragmentActivity.class); if (bundle != null) { @@ -23,8 +25,6 @@ public static void start(Context context, Class fragmentClass) { start(context, fragmentClass, null); } - public final static String FRAGMENT_PARAM = "fragment"; - @Override protected void onCreate(Bundle bundle) { diff --git a/outlay/app/src/main/java/app/outlay/view/adapter/CategoriesDraggableGridAdapter.java b/outlay/app/src/main/java/app/outlay/view/adapter/CategoriesDraggableGridAdapter.java index 0934a9b..55c2339 100644 --- a/outlay/app/src/main/java/app/outlay/view/adapter/CategoriesDraggableGridAdapter.java +++ b/outlay/app/src/main/java/app/outlay/view/adapter/CategoriesDraggableGridAdapter.java @@ -70,8 +70,7 @@ public boolean onItemMove(int fromPosition, int toPosition) { public CategoryDraggableViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { final LayoutInflater inflater = LayoutInflater.from(parent.getContext()); final View v = inflater.inflate(app.outlay.R.layout.item_category, parent, false); - final CategoryDraggableViewHolder viewHolder = new CategoryDraggableViewHolder(v); - return viewHolder; + return new CategoryDraggableViewHolder(v); } public List getItems() { diff --git a/outlay/app/src/main/java/app/outlay/view/adapter/CategoriesGridAdapter.java b/outlay/app/src/main/java/app/outlay/view/adapter/CategoriesGridAdapter.java index 97cad6b..cbe3e95 100644 --- a/outlay/app/src/main/java/app/outlay/view/adapter/CategoriesGridAdapter.java +++ b/outlay/app/src/main/java/app/outlay/view/adapter/CategoriesGridAdapter.java @@ -73,12 +73,10 @@ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType GridLayoutManager.LayoutParams params = (GridLayoutManager.LayoutParams) numpadView.getLayoutParams(); params.height = parent.getMeasuredHeight() - (context.getResources().getDimensionPixelSize(app.outlay.R.dimen.category_item_height) * 2); - final NumpadViewHolder viewHolder = new NumpadViewHolder(numpadView); - return viewHolder; + return new NumpadViewHolder(numpadView); default: final View catView = inflater.inflate(app.outlay.R.layout.item_category, parent, false); - final CategoryViewHolder categoryViewHolder = new CategoryViewHolder(catView); - return categoryViewHolder; + return new CategoryViewHolder(catView); } } diff --git a/outlay/app/src/main/java/app/outlay/view/adapter/GridExpensesAdapter.java b/outlay/app/src/main/java/app/outlay/view/adapter/GridExpensesAdapter.java index 74a23f4..cee5b3b 100644 --- a/outlay/app/src/main/java/app/outlay/view/adapter/GridExpensesAdapter.java +++ b/outlay/app/src/main/java/app/outlay/view/adapter/GridExpensesAdapter.java @@ -25,8 +25,7 @@ public class GridExpensesAdapter extends ExpenseAdapter= android.os.Build.VERSION_CODES.N) { + aboutText.setText(Html.fromHtml(getString(R.string.text_about), Html.FROM_HTML_MODE_LEGACY)); + } else { + aboutText.setText(Html.fromHtml(getString(app.outlay.R.string.text_about))); + } + aboutText.setMovementMethod(LinkMovementMethod.getInstance()); } } diff --git a/outlay/app/src/main/java/app/outlay/view/fragment/AnalysisFragment.java b/outlay/app/src/main/java/app/outlay/view/fragment/AnalysisFragment.java index e0faeef..ee18306 100644 --- a/outlay/app/src/main/java/app/outlay/view/fragment/AnalysisFragment.java +++ b/outlay/app/src/main/java/app/outlay/view/fragment/AnalysisFragment.java @@ -2,6 +2,7 @@ import android.graphics.drawable.Drawable; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.support.v7.widget.Toolbar; @@ -53,7 +54,6 @@ */ public class AnalysisFragment extends BaseMvpFragment implements AnalysisView { - private static final int REF_TIMESTAMP = 1451660400; @Bind(app.outlay.R.id.categoryTitle) MaterialAutoCompleteTextView categoryTitle; @@ -83,6 +83,7 @@ public class AnalysisFragment extends BaseMvpFragment * This is a good place to clear all changes on the View that was done in - * {@link #onSelectedChanged(RecyclerView.ViewHolder, int)}, - * {@link #onChildDraw(Canvas, RecyclerView, RecyclerView.ViewHolder, float, float, int, + * {@link SimpleItemTouchHelperCallback#onSelectedChanged(RecyclerView.ViewHolder, int)}, + * {@link SimpleItemTouchHelperCallback#onChildDraw(Canvas, RecyclerView, RecyclerView.ViewHolder, float, float, int, * boolean)} or - * {@link #onChildDrawOver(Canvas, RecyclerView, RecyclerView.ViewHolder, float, float, int, boolean)}. + * {@link SimpleItemTouchHelperCallback#onChildDrawOver(Canvas, RecyclerView, RecyclerView.ViewHolder, float, float, int, boolean)}. * * @param recyclerView The RecyclerView which is controlled by the ItemTouchHelper. * @param viewHolder The View that was interacted by the user. diff --git a/outlay/app/src/main/java/app/outlay/view/helper/itemtouch/SimpleItemTouchHelperCallback.java b/outlay/app/src/main/java/app/outlay/view/helper/itemtouch/SimpleItemTouchHelperCallback.java index caa9844..f36b3ba 100755 --- a/outlay/app/src/main/java/app/outlay/view/helper/itemtouch/SimpleItemTouchHelperCallback.java +++ b/outlay/app/src/main/java/app/outlay/view/helper/itemtouch/SimpleItemTouchHelperCallback.java @@ -17,7 +17,7 @@ */ public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callback { - public static final float ALPHA_FULL = 1.0f; + private static final float ALPHA_FULL = 1.0f; private final ItemTouchHelperAdapter mAdapter; diff --git a/outlay/app/src/main/res/layout/activity_login.xml b/outlay/app/src/main/res/layout/activity_login.xml index 431182a..7b45435 100644 --- a/outlay/app/src/main/res/layout/activity_login.xml +++ b/outlay/app/src/main/res/layout/activity_login.xml @@ -28,7 +28,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" - android:text="Loading" /> + android:text="@string/label_loading" /> diff --git a/outlay/app/src/main/res/layout/fragment_analysis.xml b/outlay/app/src/main/res/layout/fragment_analysis.xml index e0f1809..f978466 100644 --- a/outlay/app/src/main/res/layout/fragment_analysis.xml +++ b/outlay/app/src/main/res/layout/fragment_analysis.xml @@ -49,16 +49,15 @@ android:id="@+id/startDateInput" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_below="@+id/categoryTitle" android:layout_weight="1"> @@ -67,16 +66,15 @@ android:id="@+id/endDateInput" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_below="@+id/categoryTitle" android:layout_weight="1"> diff --git a/outlay/app/src/main/res/layout/fragment_expense_details.xml b/outlay/app/src/main/res/layout/fragment_expense_details.xml index 803fa9b..57ebf7f 100644 --- a/outlay/app/src/main/res/layout/fragment_expense_details.xml +++ b/outlay/app/src/main/res/layout/fragment_expense_details.xml @@ -68,7 +68,7 @@ android:id="@+id/date" android:layout_width="match_parent" android:layout_height="match_parent" - android:editable="false" + android:inputType="none" android:hint="@string/label_date" android:textColor="@color/text_primary" /> diff --git a/outlay/app/src/main/res/layout/fragment_main.xml b/outlay/app/src/main/res/layout/fragment_main.xml index 1496d8c..b67cbcb 100644 --- a/outlay/app/src/main/res/layout/fragment_main.xml +++ b/outlay/app/src/main/res/layout/fragment_main.xml @@ -40,7 +40,7 @@ android:focusableInTouchMode="false" android:fontFamily="sans-serif-light" android:gravity="center" - android:hint="0.0" + android:hint="@string/hint_amount" android:lines="1" android:textColor="@color/text_primary" android:textColorHint="@color/text_disabled" @@ -106,7 +106,7 @@ android:layout_marginBottom="@dimen/spacing_very_big" android:paddingLeft="@dimen/spacing_default" android:paddingRight="@dimen/spacing_default" - android:text="Go to categories" + android:text="@string/label_go_to_categories" android:theme="@style/MyOverlayTheme" android:visibility="gone" /> diff --git a/outlay/app/src/main/res/layout/recycler_list_expense.xml b/outlay/app/src/main/res/layout/recycler_list_expense.xml index e74b9a7..e9b3168 100644 --- a/outlay/app/src/main/res/layout/recycler_list_expense.xml +++ b/outlay/app/src/main/res/layout/recycler_list_expense.xml @@ -1,6 +1,5 @@ + android:hint="@string/hint_email"> + android:maxLines="1" /> @@ -59,7 +59,7 @@ android:layout_height="wrap_content" android:layout_below="@+id/signInInputEmail" android:layout_marginTop="@dimen/spacing_default" - android:hint="Password"> + android:hint="@string/hint_password"> + android:maxLines="1" /> @@ -82,7 +82,7 @@ android:fontFamily="sans-serif-light" android:gravity="center_vertical" android:padding="@dimen/spacing_small" - android:text="Forget Password?" + android:text="@string/label_forget_password" android:textColor="@color/text_primary" android:visibility="invisible" /> @@ -94,7 +94,7 @@ android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_marginTop="@dimen/spacing_default" - android:text="Login" + android:text="@string/label_login" android:theme="@style/MyOverlayTheme" />