├── GithubMVP ├── settings.gradle ├── variables.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── app │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ ├── drawable-hdpi │ │ │ │ │ ├── cat1.png │ │ │ │ │ ├── cat2.png │ │ │ │ │ └── cat3.png │ │ │ │ ├── drawable-mdpi │ │ │ │ │ ├── cat1.png │ │ │ │ │ ├── cat2.png │ │ │ │ │ └── cat3.png │ │ │ │ ├── drawable-xhdpi │ │ │ │ │ ├── cat1.png │ │ │ │ │ ├── cat2.png │ │ │ │ │ └── cat3.png │ │ │ │ ├── drawable-xxhdpi │ │ │ │ │ ├── cat1.png │ │ │ │ │ ├── cat2.png │ │ │ │ │ └── cat3.png │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── values │ │ │ │ │ ├── ids.xml │ │ │ │ │ ├── colors.xml │ │ │ │ │ ├── dimens.xml │ │ │ │ │ ├── view_ids.xml │ │ │ │ │ ├── styles.xml │ │ │ │ │ └── strings.xml │ │ │ │ ├── values-v21 │ │ │ │ │ └── styles.xml │ │ │ │ ├── values-w820dp │ │ │ │ │ └── dimens.xml │ │ │ │ └── layout │ │ │ │ │ ├── toolbar.xml │ │ │ │ │ └── repository_item.xml │ │ │ └── java │ │ │ │ └── ru │ │ │ │ └── itis │ │ │ │ └── lectures │ │ │ │ └── githubmvp │ │ │ │ ├── view │ │ │ │ ├── LoadingView.java │ │ │ │ ├── LogInView.java │ │ │ │ ├── WalkthroughView.java │ │ │ │ └── RepositoriesView.java │ │ │ │ ├── api │ │ │ │ ├── ApiProvider.java │ │ │ │ ├── GithubService.java │ │ │ │ ├── TokenInterceptor.java │ │ │ │ └── ApiFactory.java │ │ │ │ ├── utils │ │ │ │ ├── TextUtils.java │ │ │ │ └── Views.java │ │ │ │ ├── content │ │ │ │ ├── CommitResponse.java │ │ │ │ ├── GsonHolder.java │ │ │ │ ├── auth │ │ │ │ │ └── Authorization.java │ │ │ │ ├── Benefit.java │ │ │ │ └── Commit.java │ │ │ │ ├── repository │ │ │ │ ├── RepositoriesRepository.java │ │ │ │ └── impl │ │ │ │ │ └── RepositoriesRepositoryImpl.java │ │ │ │ ├── widget │ │ │ │ └── WalkthroughAdapter.java │ │ │ │ ├── AppDelegate.java │ │ │ │ └── database │ │ │ │ └── SQLiteProvider.java │ │ ├── test │ │ │ └── java │ │ │ │ └── ru │ │ │ │ └── itis │ │ │ │ └── lectures │ │ │ │ └── githubmvp │ │ │ │ ├── api │ │ │ │ ├── TokenInterceptorTest.java │ │ │ │ ├── ApiProviderTest.java │ │ │ │ └── DefaultApiProviderTest.java │ │ │ │ ├── testutils │ │ │ │ ├── TestProviderImpl.java │ │ │ │ └── TestGithubService.java │ │ │ │ ├── utils │ │ │ │ └── TextUtilsTest.java │ │ │ │ └── content │ │ │ │ └── auth │ │ │ │ └── AuthorizationTest.java │ │ └── androidTest │ │ │ └── java │ │ │ └── ru │ │ │ └── itis │ │ │ └── lectures │ │ │ └── githubmvp │ │ │ ├── testutils │ │ │ ├── IntegrationProviderImpl.java │ │ │ └── IntegrationGithubService.java │ │ │ └── ApplicationTest.java │ ├── .gitignore │ └── proguard-rules.pro ├── versions.gradle ├── .gitignore ├── build.gradle └── gradle.properties ├── PopularMovies ├── settings.gradle ├── app │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ ├── values-v21 │ │ │ │ │ └── styles.xml │ │ │ │ ├── values │ │ │ │ │ ├── ids.xml │ │ │ │ │ ├── integers.xml │ │ │ │ │ ├── colors.xml │ │ │ │ │ ├── dimens.xml │ │ │ │ │ ├── styles.xml │ │ │ │ │ └── strings.xml │ │ │ │ ├── values-land │ │ │ │ │ ├── dimens.xml │ │ │ │ │ └── integers.xml │ │ │ │ ├── values-sw600dp-land │ │ │ │ │ ├── dimens.xml │ │ │ │ │ └── integers.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── values-sw600dp │ │ │ │ │ ├── integers.xml │ │ │ │ │ └── dimens.xml │ │ │ │ ├── values-w820dp │ │ │ │ │ └── dimens.xml │ │ │ │ ├── menu │ │ │ │ │ └── menu_movies.xml │ │ │ │ ├── layout │ │ │ │ │ ├── activity_settings.xml │ │ │ │ │ ├── image_item.xml │ │ │ │ │ └── toolbar.xml │ │ │ │ └── xml │ │ │ │ │ └── settings.xml │ │ │ └── java │ │ │ │ └── arturvasilov │ │ │ │ └── udacity │ │ │ │ └── nanodegree │ │ │ │ └── popularmovies │ │ │ │ ├── view │ │ │ │ ├── LoadingView.java │ │ │ │ ├── MoviesView.java │ │ │ │ └── MovieView.java │ │ │ │ ├── api │ │ │ │ ├── MovieService.java │ │ │ │ └── ApiKeyInterceptor.java │ │ │ │ ├── model │ │ │ │ └── MoviesResponse.java │ │ │ │ ├── fragment │ │ │ │ └── SettingsFragment.java │ │ │ │ └── utils │ │ │ │ └── Images.java │ │ ├── test │ │ │ └── java │ │ │ │ └── arturvasilov │ │ │ │ └── udacity │ │ │ │ └── nanodegree │ │ │ │ └── popularmovies │ │ │ │ └── ExampleUnitTest.java │ │ └── androidTest │ │ │ └── java │ │ │ └── arturvasilov │ │ │ └── udacity │ │ │ └── nanodegree │ │ │ └── popularmovies │ │ │ └── ApplicationTest.java │ ├── .gitignore │ └── proguard-rules.pro ├── .gitignore ├── build.gradle └── gradle.properties ├── StackExchangeClient ├── settings.gradle ├── app │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ ├── transition │ │ │ │ │ ├── profile_transition_enter.xml │ │ │ │ │ └── profile_transition_exit.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_icon.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_icon.png │ │ │ │ ├── values-sw600dp │ │ │ │ │ ├── integers.xml │ │ │ │ │ └── dimens.xml │ │ │ │ ├── drawable-hdpi │ │ │ │ │ ├── ic_exit.png │ │ │ │ │ ├── ic_tags.png │ │ │ │ │ ├── so_logo.png │ │ │ │ │ ├── ic_answers.png │ │ │ │ │ ├── ic_clear.png │ │ │ │ │ ├── ic_person.png │ │ │ │ │ ├── ic_views.png │ │ │ │ │ ├── ic_accepted.png │ │ │ │ │ ├── ic_answered.png │ │ │ │ │ ├── ic_favorite.png │ │ │ │ │ ├── page_1_logo.png │ │ │ │ │ ├── page_3_logo.png │ │ │ │ │ ├── splash_icon.png │ │ │ │ │ ├── ic_answers_count.png │ │ │ │ │ ├── ic_not_favourite.png │ │ │ │ │ ├── ic_refresh_white.png │ │ │ │ │ ├── btn_white_disable.9.png │ │ │ │ │ ├── btn_white_normal.9.png │ │ │ │ │ └── btn_white_pressed.9.png │ │ │ │ ├── drawable-mdpi │ │ │ │ │ ├── ic_exit.png │ │ │ │ │ ├── ic_tags.png │ │ │ │ │ ├── so_logo.png │ │ │ │ │ ├── ic_answers.png │ │ │ │ │ ├── ic_clear.png │ │ │ │ │ ├── ic_person.png │ │ │ │ │ ├── ic_views.png │ │ │ │ │ ├── ic_accepted.png │ │ │ │ │ ├── ic_answered.png │ │ │ │ │ ├── ic_favorite.png │ │ │ │ │ ├── page_1_logo.png │ │ │ │ │ ├── page_3_logo.png │ │ │ │ │ ├── splash_icon.png │ │ │ │ │ ├── ic_answers_count.png │ │ │ │ │ ├── ic_not_favourite.png │ │ │ │ │ └── ic_refresh_white.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_icon.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_icon.png │ │ │ │ ├── drawable-xhdpi │ │ │ │ │ ├── ic_clear.png │ │ │ │ │ ├── ic_exit.png │ │ │ │ │ ├── ic_person.png │ │ │ │ │ ├── ic_tags.png │ │ │ │ │ ├── ic_views.png │ │ │ │ │ ├── so_logo.png │ │ │ │ │ ├── ic_accepted.png │ │ │ │ │ ├── ic_answered.png │ │ │ │ │ ├── ic_answers.png │ │ │ │ │ ├── ic_favorite.png │ │ │ │ │ ├── page_1_logo.png │ │ │ │ │ ├── page_3_logo.png │ │ │ │ │ ├── splash_icon.png │ │ │ │ │ ├── ic_answers_count.png │ │ │ │ │ ├── ic_not_favourite.png │ │ │ │ │ ├── ic_refresh_white.png │ │ │ │ │ ├── btn_white_disable.9.png │ │ │ │ │ ├── btn_white_normal.9.png │ │ │ │ │ └── btn_white_pressed.9.png │ │ │ │ ├── drawable-xxhdpi │ │ │ │ │ ├── ic_clear.png │ │ │ │ │ ├── ic_exit.png │ │ │ │ │ ├── ic_tags.png │ │ │ │ │ ├── ic_views.png │ │ │ │ │ ├── so_logo.png │ │ │ │ │ ├── ic_answers.png │ │ │ │ │ ├── ic_person.png │ │ │ │ │ ├── ic_accepted.png │ │ │ │ │ ├── ic_answered.png │ │ │ │ │ ├── ic_favorite.png │ │ │ │ │ ├── page_1_logo.png │ │ │ │ │ ├── page_3_logo.png │ │ │ │ │ ├── splash_icon.png │ │ │ │ │ ├── btn_white_normal.9.png │ │ │ │ │ ├── ic_answers_count.png │ │ │ │ │ ├── ic_not_favourite.png │ │ │ │ │ ├── ic_refresh_white.png │ │ │ │ │ ├── btn_white_disable.9.png │ │ │ │ │ └── btn_white_pressed.9.png │ │ │ │ ├── drawable-land-hdpi │ │ │ │ │ ├── so_logo.png │ │ │ │ │ ├── page_1_logo.png │ │ │ │ │ └── page_3_logo.png │ │ │ │ ├── drawable-land-mdpi │ │ │ │ │ ├── so_logo.png │ │ │ │ │ ├── page_1_logo.png │ │ │ │ │ └── page_3_logo.png │ │ │ │ ├── drawable-land-xhdpi │ │ │ │ │ ├── so_logo.png │ │ │ │ │ ├── page_1_logo.png │ │ │ │ │ └── page_3_logo.png │ │ │ │ ├── drawable-land-xxhdpi │ │ │ │ │ ├── so_logo.png │ │ │ │ │ ├── page_1_logo.png │ │ │ │ │ └── page_3_logo.png │ │ │ │ ├── drawable │ │ │ │ │ ├── animation_circle.xml │ │ │ │ │ ├── notification_read.xml │ │ │ │ │ ├── notification_not_read.xml │ │ │ │ │ ├── search_cursor_drawable.xml │ │ │ │ │ ├── page_1_background.xml │ │ │ │ │ ├── page_3_background.xml │ │ │ │ │ ├── page_2_background.xml │ │ │ │ │ └── btn_white.xml │ │ │ │ ├── values │ │ │ │ │ ├── integers.xml │ │ │ │ │ ├── ids.xml │ │ │ │ │ ├── colors.xml │ │ │ │ │ ├── general_dimens.xml │ │ │ │ │ └── dimens.xml │ │ │ │ ├── values-sw768dp-land │ │ │ │ │ └── dimens.xml │ │ │ │ ├── values-sw800dp-land │ │ │ │ │ └── dimens.xml │ │ │ │ ├── transition-v19 │ │ │ │ │ ├── profile_transition_enter.xml │ │ │ │ │ └── profile_transition_exit.xml │ │ │ │ ├── values-v21 │ │ │ │ │ └── styles.xml │ │ │ │ ├── values-sw600dp-land │ │ │ │ │ └── dimens.xml │ │ │ │ ├── values-sw768dp │ │ │ │ │ └── dimens.xml │ │ │ │ ├── values-sw800dp │ │ │ │ │ └── dimens.xml │ │ │ │ ├── values-land │ │ │ │ │ └── dimens.xml │ │ │ │ ├── layout │ │ │ │ │ ├── empty.xml │ │ │ │ │ ├── fr_questions_list.xml │ │ │ │ │ ├── ac_question.xml │ │ │ │ │ ├── ac_my_answers.xml │ │ │ │ │ ├── toolbar.xml │ │ │ │ │ ├── fr_loading.xml │ │ │ │ │ └── badge_item.xml │ │ │ │ ├── xml │ │ │ │ │ └── widget_info.xml │ │ │ │ └── menu │ │ │ │ │ └── drawer_menu.xml │ │ │ └── java │ │ │ │ └── ru │ │ │ │ └── arturvasilov │ │ │ │ └── stackexchangeclient │ │ │ │ ├── view │ │ │ │ ├── EmptyListView.java │ │ │ │ ├── LoadingView.java │ │ │ │ ├── ErrorView.java │ │ │ │ ├── AuthView.java │ │ │ │ ├── WalkthroughView.java │ │ │ │ ├── QuestionView.java │ │ │ │ ├── QuestionsListView.java │ │ │ │ ├── AnswersListView.java │ │ │ │ ├── MainView.java │ │ │ │ ├── TagsView.java │ │ │ │ └── ProfileView.java │ │ │ │ ├── api │ │ │ │ ├── ApiConstants.java │ │ │ │ ├── service │ │ │ │ │ ├── NotificationService.java │ │ │ │ │ ├── TagsService.java │ │ │ │ │ ├── ApplicationService.java │ │ │ │ │ ├── AnswerService.java │ │ │ │ │ ├── UserInfoService.java │ │ │ │ │ └── QuestionService.java │ │ │ │ ├── SiteInterceptor.java │ │ │ │ ├── ErrorsHandler.java │ │ │ │ └── ApiKeyInterceptor.java │ │ │ │ ├── rx │ │ │ │ ├── StubAction.java │ │ │ │ └── RxSchedulers.java │ │ │ │ ├── app │ │ │ │ ├── GsonHolder.java │ │ │ │ └── analytics │ │ │ │ │ └── EventKeys.java │ │ │ │ ├── service │ │ │ │ ├── NotificationsWidgetProvider.java │ │ │ │ └── StackDroidFCMInstanceIdService.java │ │ │ │ ├── model │ │ │ │ ├── response │ │ │ │ │ ├── ServerError.java │ │ │ │ │ ├── TagResponse.java │ │ │ │ │ ├── UserResponse.java │ │ │ │ │ ├── BadgeResponse.java │ │ │ │ │ ├── AnswerResponse.java │ │ │ │ │ ├── UserTagResponse.java │ │ │ │ │ ├── QuestionResponse.java │ │ │ │ │ └── NotificationResponse.java │ │ │ │ └── content │ │ │ │ │ ├── Badge.java │ │ │ │ │ ├── Notification.java │ │ │ │ │ └── UserTag.java │ │ │ │ ├── utils │ │ │ │ ├── HtmlCompat.java │ │ │ │ ├── Views.java │ │ │ │ └── TextUtils.java │ │ │ │ ├── dialog │ │ │ │ ├── UnexpectedErrorDialog.java │ │ │ │ └── NetworkErrorDialog.java │ │ │ │ ├── data │ │ │ │ └── keyvalue │ │ │ │ │ └── KeyValueStorage.java │ │ │ │ └── adapter │ │ │ │ └── MainScreenAdapter.java │ │ ├── test │ │ │ └── java │ │ │ │ └── ru │ │ │ │ └── arturvasilov │ │ │ │ └── stackexchangeclient │ │ │ │ ├── app │ │ │ │ └── GsonHolderTest.java │ │ │ │ ├── testutils │ │ │ │ └── service │ │ │ │ │ ├── NotificationServiceMock.java │ │ │ │ │ ├── TagsServiceMock.java │ │ │ │ │ ├── ApplicationServiceMock.java │ │ │ │ │ ├── AnswerServiceMock.java │ │ │ │ │ └── UserInfoServiceMock.java │ │ │ │ └── rx │ │ │ │ ├── RxSchedulersTest.java │ │ │ │ └── StubActionTest.java │ │ └── androidTest │ │ │ └── java │ │ │ └── ru │ │ │ └── arturvasilov │ │ │ └── stackexchangeclient │ │ │ ├── ApplicationTest.java │ │ │ └── MainScreenTest.java │ ├── debug.keystore │ ├── fabric.properties │ ├── .gitignore │ └── jacoco.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── .gitignore └── gradle.properties ├── PopularMoviesDataBinding ├── settings.gradle ├── app │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ ├── values-v21 │ │ │ │ │ └── styles.xml │ │ │ │ ├── values-land │ │ │ │ │ ├── dimens.xml │ │ │ │ │ └── integers.xml │ │ │ │ ├── values-sw600dp-land │ │ │ │ │ ├── dimens.xml │ │ │ │ │ └── integers.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── values │ │ │ │ │ ├── ids.xml │ │ │ │ │ ├── integers.xml │ │ │ │ │ ├── attrs.xml │ │ │ │ │ ├── colors.xml │ │ │ │ │ ├── dimens.xml │ │ │ │ │ └── styles.xml │ │ │ │ ├── values-sw600dp │ │ │ │ │ ├── integers.xml │ │ │ │ │ └── dimens.xml │ │ │ │ ├── values-w820dp │ │ │ │ │ └── dimens.xml │ │ │ │ ├── menu │ │ │ │ │ └── menu_movies.xml │ │ │ │ ├── layout │ │ │ │ │ ├── activity_settings.xml │ │ │ │ │ ├── image_item.xml │ │ │ │ │ ├── toolbar.xml │ │ │ │ │ └── trailer_item.xml │ │ │ │ └── xml │ │ │ │ │ └── settings.xml │ │ │ └── java │ │ │ │ └── arturvasilov │ │ │ │ └── udacity │ │ │ │ └── nanodegree │ │ │ │ └── popularmoviesdatabinding │ │ │ │ ├── router │ │ │ │ ├── MoviesRouter.java │ │ │ │ └── impl │ │ │ │ │ └── HomeButtonRouter.java │ │ │ │ ├── databinding │ │ │ │ └── adapters │ │ │ │ │ ├── CustomAdapters.java │ │ │ │ │ ├── SupportAdapters.java │ │ │ │ │ └── ImageViewAdapters.java │ │ │ │ ├── model │ │ │ │ ├── content │ │ │ │ │ ├── Video.java │ │ │ │ │ └── Review.java │ │ │ │ └── response │ │ │ │ │ ├── VideosResponse.java │ │ │ │ │ ├── ReviewsResponse.java │ │ │ │ │ └── MoviesResponse.java │ │ │ │ ├── api │ │ │ │ ├── RepositoryProvider.java │ │ │ │ ├── ApiKeyInterceptor.java │ │ │ │ ├── MovieService.java │ │ │ │ └── MoviesRepository.java │ │ │ │ ├── utils │ │ │ │ ├── Videos.java │ │ │ │ └── TextUtils.java │ │ │ │ ├── fragment │ │ │ │ └── SettingsFragment.java │ │ │ │ ├── rx │ │ │ │ ├── CursorObservable.java │ │ │ │ └── CursorListMapper.java │ │ │ │ └── sqlite │ │ │ │ └── Table.java │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── arturvasilov │ │ │ │ └── udacity │ │ │ │ └── nanodegree │ │ │ │ └── popularmoviesdatabinding │ │ │ │ └── ApplicationTest.java │ │ └── test │ │ │ └── java │ │ │ └── arturvasilov │ │ │ └── udacity │ │ │ └── nanodegree │ │ │ └── popularmoviesdatabinding │ │ │ └── testutils │ │ │ ├── MockLifecycleHandler.java │ │ │ └── RxUtils.java │ ├── .gitignore │ └── proguard-rules.pro ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── versions.gradle ├── .gitignore ├── build.gradle └── gradle.properties ├── images ├── mvvm.png └── architecture.png └── .gitignore /GithubMVP/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /PopularMovies/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /StackExchangeClient/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /images/mvvm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/images/mvvm.png -------------------------------------------------------------------------------- /images/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/images/architecture.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/transition/profile_transition_enter.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/transition/profile_transition_exit.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /StackExchangeClient/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/debug.keystore -------------------------------------------------------------------------------- /GithubMVP/variables.gradle: -------------------------------------------------------------------------------- 1 | ext { 2 | clientId = '"a3fdd48caf571dec959d"' 3 | clientSecret = '"b67880aacbbc441fb5d61dd134c24b9539264e15"' 4 | } -------------------------------------------------------------------------------- /GithubMVP/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/drawable-hdpi/cat1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/drawable-hdpi/cat1.png -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/drawable-hdpi/cat2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/drawable-hdpi/cat2.png -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/drawable-hdpi/cat3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/drawable-hdpi/cat3.png -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/drawable-mdpi/cat1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/drawable-mdpi/cat1.png -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/drawable-mdpi/cat2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/drawable-mdpi/cat2.png -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/drawable-mdpi/cat3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/drawable-mdpi/cat3.png -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/drawable-xhdpi/cat1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/drawable-xhdpi/cat1.png -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/drawable-xhdpi/cat2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/drawable-xhdpi/cat2.png -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/drawable-xhdpi/cat3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/drawable-xhdpi/cat3.png -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/drawable-xxhdpi/cat1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/drawable-xxhdpi/cat1.png -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/drawable-xxhdpi/cat2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/drawable-xxhdpi/cat2.png -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/drawable-xxhdpi/cat3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/drawable-xxhdpi/cat3.png -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/values-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 140dp 4 | -------------------------------------------------------------------------------- /StackExchangeClient/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/GithubMVP/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/values-sw600dp-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 240dp 4 | -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/PopularMovies/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/PopularMovies/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/PopularMovies/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/PopularMovies/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/values-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 200dp 4 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/PopularMoviesDataBinding/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/mipmap-hdpi/ic_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/mipmap-hdpi/ic_icon.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/mipmap-mdpi/ic_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/mipmap-mdpi/ic_icon.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/values-sw600dp/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 3 4 | -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/PopularMovies/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/ic_exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/ic_exit.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/ic_tags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/ic_tags.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/so_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/so_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/ic_exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/ic_exit.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/ic_tags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/ic_tags.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/so_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/so_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/mipmap-xhdpi/ic_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/mipmap-xhdpi/ic_icon.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/mipmap-xxhdpi/ic_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/mipmap-xxhdpi/ic_icon.png -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/values-sw600dp-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 240dp 4 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/ic_answers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/ic_answers.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/ic_clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/ic_clear.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/ic_person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/ic_person.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/ic_views.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/ic_views.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/ic_answers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/ic_answers.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/ic_clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/ic_clear.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/ic_person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/ic_person.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/ic_views.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/ic_views.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_clear.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_exit.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_person.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_tags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_tags.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_views.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_views.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/so_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/so_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_clear.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_exit.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_tags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_tags.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_views.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_views.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/so_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/so_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/ic_accepted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/ic_accepted.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/ic_answered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/ic_answered.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/ic_favorite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/ic_favorite.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/page_1_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/page_1_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/page_3_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/page_3_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/splash_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/splash_icon.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-land-hdpi/so_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-land-hdpi/so_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-land-mdpi/so_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-land-mdpi/so_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/ic_accepted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/ic_accepted.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/ic_answered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/ic_answered.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/ic_favorite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/ic_favorite.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/page_1_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/page_1_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/page_3_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/page_3_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/splash_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/splash_icon.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_accepted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_accepted.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_answered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_answered.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_answers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_answers.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_favorite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_favorite.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/page_1_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/page_1_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/page_3_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/page_3_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/splash_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/splash_icon.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_answers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_answers.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_person.png -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/PopularMoviesDataBinding/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/PopularMoviesDataBinding/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/PopularMoviesDataBinding/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-land-xhdpi/so_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-land-xhdpi/so_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-land-xxhdpi/so_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-land-xxhdpi/so_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_accepted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_accepted.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_answered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_answered.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_favorite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_favorite.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/page_1_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/page_1_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/page_3_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/page_3_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/splash_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/splash_icon.png -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/PopularMoviesDataBinding/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/PopularMoviesDataBinding/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/ic_answers_count.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/ic_answers_count.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/ic_not_favourite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/ic_not_favourite.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/ic_refresh_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/ic_refresh_white.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-land-hdpi/page_1_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-land-hdpi/page_1_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-land-hdpi/page_3_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-land-hdpi/page_3_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-land-mdpi/page_1_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-land-mdpi/page_1_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-land-mdpi/page_3_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-land-mdpi/page_3_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-land-xhdpi/page_1_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-land-xhdpi/page_1_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-land-xhdpi/page_3_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-land-xhdpi/page_3_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/ic_answers_count.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/ic_answers_count.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/ic_not_favourite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/ic_not_favourite.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-mdpi/ic_refresh_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-mdpi/ic_refresh_white.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_answers_count.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_answers_count.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_not_favourite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_not_favourite.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_refresh_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/ic_refresh_white.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/btn_white_disable.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/btn_white_disable.9.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/btn_white_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/btn_white_normal.9.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-hdpi/btn_white_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-hdpi/btn_white_pressed.9.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-land-xxhdpi/page_1_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-land-xxhdpi/page_1_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-land-xxhdpi/page_3_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-land-xxhdpi/page_3_logo.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/btn_white_disable.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/btn_white_disable.9.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/btn_white_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/btn_white_normal.9.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xhdpi/btn_white_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xhdpi/btn_white_pressed.9.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/btn_white_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/btn_white_normal.9.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_answers_count.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_answers_count.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_not_favourite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_not_favourite.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_refresh_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/ic_refresh_white.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/btn_white_disable.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/btn_white_disable.9.png -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable-xxhdpi/btn_white_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArturVasilov/AndroidArchitecture/HEAD/StackExchangeClient/app/src/main/res/drawable-xxhdpi/btn_white_pressed.9.png -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 2 4 | 2 5 | -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/values-land/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 3 4 | 1 5 | -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/values-sw600dp/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 3 4 | 3 5 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 2 4 | 2 5 | -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/values-sw600dp-land/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 4 | 1.5 5 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/values-land/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 3 4 | 1 5 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/values-sw600dp/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 3 4 | 3 5 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/values-sw600dp-land/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 4 | 1.5 5 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable/animation_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable/notification_read.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable/notification_not_read.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 2 4 | 200 5 | 90 6 | -------------------------------------------------------------------------------- /GithubMVP/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Sep 19 15:31:54 MSK 2016 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip 7 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/values-sw768dp-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 180dp 4 | 96dp 5 | 128dp 6 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/values-sw800dp-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 220dp 4 | 96dp 5 | 144dp 6 | -------------------------------------------------------------------------------- /StackExchangeClient/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Sep 05 00:12:15 MSK 2016 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip 7 | -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Dec 28 10:00:20 PST 2015 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip 7 | -------------------------------------------------------------------------------- /StackExchangeClient/app/fabric.properties: -------------------------------------------------------------------------------- 1 | #Contains API Secret used to validate your application. Commit to internal source control; avoid making secret public. 2 | #Sun Jul 24 10:17:10 MSK 2016 3 | # suppress inspection "UnusedProperty" 4 | apiSecret=2059ed56af229151e1ea4ed3dc6d11c98bc26811786c20f538023a4dcfc34b7d 5 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable/search_cursor_drawable.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/transition-v19/profile_transition_enter.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /GithubMVP/app/src/main/java/ru/itis/lectures/githubmvp/view/LoadingView.java: -------------------------------------------------------------------------------- 1 | package ru.itis.lectures.githubmvp.view; 2 | 3 | /** 4 | * @author Artur Vasilov 5 | */ 6 | public interface LoadingView { 7 | 8 | void showLoading(); 9 | 10 | void hideLoading(); 11 | 12 | void showError(); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | #bcbcbc 7 | 8 | -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/values-sw600dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 400dp 4 | 28sp 5 | 16sp 6 | 22sp 7 | -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | #bcbcbc 7 | 8 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/java/ru/arturvasilov/stackexchangeclient/view/EmptyListView.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.view; 2 | 3 | /** 4 | * @author Artur Vasilov 5 | */ 6 | public interface EmptyListView { 7 | 8 | void showEmptyListView(); 9 | 10 | void hideEmptyListView(); 11 | } 12 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/java/ru/arturvasilov/stackexchangeclient/view/LoadingView.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.view; 2 | 3 | /** 4 | * @author Artur Vasilov 5 | */ 6 | public interface LoadingView { 7 | 8 | void showLoadingIndicator(); 9 | 10 | void hideLoadingIndicator(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/values-sw600dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 400dp 4 | 28sp 5 | 16sp 6 | 22sp 7 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | #bcbcbc 7 | 8 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/java/ru/arturvasilov/stackexchangeclient/api/ApiConstants.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.api; 2 | 3 | /** 4 | * @author Artur Vasilov 5 | */ 6 | public interface ApiConstants { 7 | 8 | String TAG_ALL = "tag_all"; 9 | String TAG_MY_QUESTIONS = "tag_my_questions"; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /GithubMVP/app/src/main/java/ru/itis/lectures/githubmvp/view/LogInView.java: -------------------------------------------------------------------------------- 1 | package ru.itis.lectures.githubmvp.view; 2 | 3 | /** 4 | * @author Artur Vasilov 5 | */ 6 | public interface LogInView extends LoadingView { 7 | 8 | void openRepositoriesScreen(); 9 | 10 | void showLoginError(); 11 | 12 | void showPasswordError(); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/values-sw600dp-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 144dp 4 | 80dp 5 | 56dp 6 | 112dp 7 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/values-sw768dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 120dp 4 | 104dp 5 | 64dp 6 | 7 | 300dp 8 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/values-sw800dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 144dp 4 | 104dp 5 | 80dp 6 | 7 | 320dp 8 | -------------------------------------------------------------------------------- /PopularMovies/app/src/main/java/arturvasilov/udacity/nanodegree/popularmovies/view/LoadingView.java: -------------------------------------------------------------------------------- 1 | package arturvasilov.udacity.nanodegree.popularmovies.view; 2 | 3 | /** 4 | * @author Artur Vasilov 5 | */ 6 | public interface LoadingView { 7 | 8 | void showLoading(); 9 | 10 | void hideLoading(); 11 | 12 | void showError(); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /GithubMVP/app/src/main/java/ru/itis/lectures/githubmvp/view/WalkthroughView.java: -------------------------------------------------------------------------------- 1 | package ru.itis.lectures.githubmvp.view; 2 | 3 | /** 4 | * @author Artur Vasilov 5 | */ 6 | public interface WalkthroughView { 7 | 8 | void showBenefit(int index, boolean isLastBenefit); 9 | 10 | void finishWalkthrough(); 11 | 12 | void startLogInActivity(); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable/page_1_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable/page_3_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/java/ru/arturvasilov/stackexchangeclient/rx/StubAction.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.rx; 2 | 3 | import rx.functions.Action1; 4 | 5 | /** 6 | * @author Artur Vasilov 7 | */ 8 | public class StubAction implements Action1 { 9 | 10 | @Override 11 | public void call(T t) { 12 | // Do nothing 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /GithubMVP/app/src/main/java/ru/itis/lectures/githubmvp/api/ApiProvider.java: -------------------------------------------------------------------------------- 1 | package ru.itis.lectures.githubmvp.api; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | /** 6 | * @author Artur Vasilov 7 | */ 8 | public interface ApiProvider { 9 | 10 | @NonNull 11 | GithubService provideGithubService(); 12 | 13 | @NonNull 14 | String provideToken(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | > 2 | 3 | 9 | 10 | -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable/page_2_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 10 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/transition-v19/profile_transition_exit.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/java/ru/arturvasilov/stackexchangeclient/view/ErrorView.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.view; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | /** 6 | * @author Artur Vasilov 7 | */ 8 | public interface ErrorView { 9 | 10 | void showNetworkError(); 11 | 12 | void showUnexpectedError(); 13 | 14 | void showErrorMessage(@NonNull String message); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/java/ru/arturvasilov/stackexchangeclient/view/AuthView.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.view; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | /** 6 | * @author Artur Vasilov 7 | */ 8 | public interface AuthView { 9 | 10 | void showAuth(@NonNull String url); 11 | 12 | void showWalkthrough(); 13 | 14 | void showMainScreen(); 15 | 16 | void close(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /GithubMVP/app/src/main/java/ru/itis/lectures/githubmvp/utils/TextUtils.java: -------------------------------------------------------------------------------- 1 | package ru.itis.lectures.githubmvp.utils; 2 | 3 | import android.support.annotation.Nullable; 4 | 5 | /** 6 | * @author Artur Vasilov 7 | */ 8 | public final class TextUtils { 9 | 10 | private TextUtils() { 11 | } 12 | 13 | public static boolean isEmpty(@Nullable CharSequence text) { 14 | return text == null || text.length() == 0; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/values-sw600dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 104dp 4 | 96dp 5 | 72dp 6 | 48dp 7 | 8 | 560dp 9 | 440dp 10 | -------------------------------------------------------------------------------- /PopularMovies/app/src/test/java/arturvasilov/udacity/nanodegree/popularmovies/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package arturvasilov.udacity.nanodegree.popularmovies; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * To work on unit tests, switch the Test Artifact in the Build Variants view. 9 | */ 10 | public class ExampleUnitTest { 11 | @Test 12 | public void addition_isCorrect() throws Exception { 13 | assertEquals(4, 2 + 2); 14 | } 15 | } -------------------------------------------------------------------------------- /GithubMVP/app/src/main/java/ru/itis/lectures/githubmvp/content/CommitResponse.java: -------------------------------------------------------------------------------- 1 | package ru.itis.lectures.githubmvp.content; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import com.google.gson.annotations.SerializedName; 6 | 7 | /** 8 | * @author Artur Vasilov 9 | */ 10 | public class CommitResponse { 11 | 12 | @SerializedName("commit") 13 | private Commit mCommit; 14 | 15 | @NonNull 16 | public Commit getCommit() { 17 | return mCommit; 18 | } 19 | } -------------------------------------------------------------------------------- /PopularMovies/app/src/main/java/arturvasilov/udacity/nanodegree/popularmovies/view/MoviesView.java: -------------------------------------------------------------------------------- 1 | package arturvasilov.udacity.nanodegree.popularmovies.view; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import java.util.List; 6 | 7 | import arturvasilov.udacity.nanodegree.popularmovies.model.Movie; 8 | 9 | /** 10 | * @author Artur Vasilov 11 | */ 12 | public interface MoviesView extends LoadingView { 13 | 14 | void showMovies(@NonNull List movies); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/values-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 88dp 5 | 64dp 6 | 120dp 7 | 80dp 8 | 32dp 9 | 10 | 64dp 11 | 12 | -------------------------------------------------------------------------------- /PopularMovies/app/src/androidTest/java/arturvasilov/udacity/nanodegree/popularmovies/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package arturvasilov.udacity.nanodegree.popularmovies; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /GithubMVP/app/src/main/java/ru/itis/lectures/githubmvp/view/RepositoriesView.java: -------------------------------------------------------------------------------- 1 | package ru.itis.lectures.githubmvp.view; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import java.util.List; 6 | 7 | import ru.itis.lectures.githubmvp.content.Repository; 8 | 9 | /** 10 | * @author Artur Vasilov 11 | */ 12 | public interface RepositoriesView extends LoadingView { 13 | 14 | void showRepositories(@NonNull List repositories); 15 | 16 | void showCommits(@NonNull Repository repository); 17 | } 18 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/java/ru/arturvasilov/stackexchangeclient/view/WalkthroughView.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.view; 2 | 3 | import android.support.annotation.StringRes; 4 | 5 | /** 6 | * @author Artur Vasilov 7 | */ 8 | public interface WalkthroughView { 9 | 10 | void showBenefit(int index); 11 | 12 | void setActionButtonText(@StringRes int textResId); 13 | 14 | void showLoadingSplash(); 15 | 16 | void showError(); 17 | 18 | void finishWalkthrough(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/layout/empty.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /GithubMVP/versions.gradle: -------------------------------------------------------------------------------- 1 | ext { 2 | supportVersion = '24.2.1' 3 | okhttpVersion = '3.4.1' 4 | retrofitVersion = '2.1.0' 5 | rxjavaVersion = '1.1.10' 6 | rxandroidVersion = '1.2.1' 7 | 8 | sqliteVersion = '0.1.7' 9 | 10 | materialDialogsVersion = '0.9.0.2' 11 | robotoTextViewVersion = '2.4.0' 12 | 13 | junitVersion = '4.12' 14 | powerMockVersion = '1.6.2' 15 | robolectricVersion = '3.1.2' 16 | mockitoVersion = '1.10.19' 17 | espressoVersion = '2.2' 18 | testRunnerVersion = '0.5' 19 | } -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/menu/menu_movies.xml: -------------------------------------------------------------------------------- 1 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/menu/menu_movies.xml: -------------------------------------------------------------------------------- 1 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/xml/widget_info.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/androidTest/java/arturvasilov/udacity/nanodegree/popularmoviesdatabinding/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package arturvasilov.udacity.nanodegree.popularmoviesdatabinding; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /PopularMovies/app/src/main/java/arturvasilov/udacity/nanodegree/popularmovies/api/MovieService.java: -------------------------------------------------------------------------------- 1 | package arturvasilov.udacity.nanodegree.popularmovies.api; 2 | 3 | import arturvasilov.udacity.nanodegree.popularmovies.model.MoviesResponse; 4 | import retrofit2.http.GET; 5 | import rx.Observable; 6 | 7 | /** 8 | * @author Artur Vasilov 9 | */ 10 | public interface MovieService { 11 | 12 | @GET("popular/") 13 | Observable popularMovies(); 14 | 15 | @GET("top_rated/") 16 | Observable topRatedMovies(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/layout/activity_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/test/java/ru/arturvasilov/stackexchangeclient/app/GsonHolderTest.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.app; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.junit.runners.JUnit4; 6 | 7 | import static junit.framework.TestCase.assertNotNull; 8 | 9 | /** 10 | * @author Artur Vasilov 11 | */ 12 | @RunWith(JUnit4.class) 13 | public class GsonHolderTest { 14 | 15 | @Test 16 | public void testGsonNotNull() throws Exception { 17 | assertNotNull(GsonHolder.getGson()); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /GithubMVP/app/src/main/java/ru/itis/lectures/githubmvp/repository/RepositoriesRepository.java: -------------------------------------------------------------------------------- 1 | package ru.itis.lectures.githubmvp.repository; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import java.util.List; 6 | 7 | import ru.itis.lectures.githubmvp.content.Repository; 8 | import rx.Observable; 9 | 10 | /** 11 | * @author Artur Vasilov 12 | */ 13 | public interface RepositoriesRepository { 14 | 15 | @NonNull 16 | Observable> cachedRepositories(); 17 | 18 | void saveRepositories(@NonNull List repositories); 19 | } 20 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/layout/activity_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /GithubMVP/app/src/main/java/ru/itis/lectures/githubmvp/content/GsonHolder.java: -------------------------------------------------------------------------------- 1 | package ru.itis.lectures.githubmvp.content; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import com.google.gson.Gson; 6 | 7 | /** 8 | * @author Artur Vasilov 9 | */ 10 | public final class GsonHolder { 11 | 12 | private GsonHolder() { 13 | } 14 | 15 | @NonNull 16 | public static Gson getGson() { 17 | return Holder.GSON; 18 | } 19 | 20 | public static final class Holder { 21 | private static final Gson GSON = new Gson(); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/xml/settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/versions.gradle: -------------------------------------------------------------------------------- 1 | ext { 2 | supportVersion = '24.2.1' 3 | okhttpVersion = '3.4.1' 4 | retrofitVersion = '2.1.0' 5 | rxandroidVersion = '1.2.1' 6 | rxjavaVersion = '1.1.10' 7 | rxLoaderVersion = '0.1.3' 8 | picassoVersion = '2.5.2' 9 | picassoDownloaderVersion = '1.0.2' 10 | materialDialogsVersion = '0.9.0.2' 11 | 12 | junitVersion = '4.12' 13 | mockitoVersion = '1.10.19' 14 | powerMockVersion = '1.6.5' 15 | robolectricVersion = '3.1.2' 16 | 17 | runnerVersion = '0.5' 18 | espressoVersion = '2.2.2' 19 | } -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/layout/image_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/xml/settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/res/layout/image_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/java/ru/arturvasilov/stackexchangeclient/view/QuestionView.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.view; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import java.util.List; 6 | 7 | import ru.arturvasilov.stackexchangeclient.model.content.Answer; 8 | import ru.arturvasilov.stackexchangeclient.model.content.Question; 9 | 10 | /** 11 | * @author Artur Vasilov 12 | */ 13 | public interface QuestionView { 14 | 15 | void showQuestion(@NonNull Question question); 16 | 17 | void showAnswers(@NonNull List answers); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/java/ru/arturvasilov/stackexchangeclient/app/GsonHolder.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.app; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import com.google.gson.Gson; 6 | 7 | /** 8 | * @author Artur Vasilov 9 | */ 10 | public final class GsonHolder { 11 | 12 | private GsonHolder() { 13 | } 14 | 15 | @NonNull 16 | public static Gson getGson() { 17 | return Holder.GSON; 18 | } 19 | 20 | public static final class Holder { 21 | private static final Gson GSON = new Gson(); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/java/ru/arturvasilov/stackexchangeclient/view/QuestionsListView.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.view; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import java.util.List; 6 | 7 | import ru.arturvasilov.stackexchangeclient.model.content.Question; 8 | 9 | /** 10 | * @author Artur Vasilov 11 | */ 12 | public interface QuestionsListView extends EmptyListView { 13 | 14 | void showQuestions(@NonNull List questions); 15 | 16 | void addQuestions(@NonNull List questions); 17 | 18 | void hideRefresh(); 19 | } 20 | -------------------------------------------------------------------------------- /PopularMovies/app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 16sp 6 | 180dp 7 | 16dp 8 | 16dp 9 | 22sp 10 | 14sp 11 | 18sp 12 | 13 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/java/ru/arturvasilov/stackexchangeclient/api/service/NotificationService.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.api.service; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import retrofit2.http.GET; 6 | import ru.arturvasilov.stackexchangeclient.model.response.NotificationResponse; 7 | import rx.Observable; 8 | 9 | /** 10 | * @author Artur Vasilov 11 | */ 12 | public interface NotificationService { 13 | 14 | @NonNull 15 | @GET("/me/notifications?pagesize=50&filter=!9X8frFZkZ") 16 | Observable notifications(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # generated files 12 | bin/** 13 | gen/** 14 | out/** 15 | gen-external-apklibs/** 16 | 17 | # Local configuration file (sdk path, etc) 18 | local.properties 19 | 20 | # IntellijJ IDEA 21 | *.iml 22 | *.ipr 23 | *.iws 24 | .idea/** 25 | classes/** 26 | target/** 27 | 28 | # Mac OS 29 | .DS_Store 30 | 31 | # Gradle 32 | gradle-app.setting 33 | .gradletasknamecache 34 | .gradle/** 35 | build/** 36 | 37 | # Proguard 38 | proguard/** 39 | 40 | # Trash 41 | trash/** 42 | 43 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/java/arturvasilov/udacity/nanodegree/popularmoviesdatabinding/router/MoviesRouter.java: -------------------------------------------------------------------------------- 1 | package arturvasilov.udacity.nanodegree.popularmoviesdatabinding.router; 2 | 3 | import android.support.annotation.NonNull; 4 | import android.widget.ImageView; 5 | 6 | import arturvasilov.udacity.nanodegree.popularmoviesdatabinding.model.content.Movie; 7 | 8 | /** 9 | * @author Artur Vasilov 10 | */ 11 | public interface MoviesRouter { 12 | 13 | void navigateToMovieScreen(@NonNull ImageView imageView, @NonNull Movie movie); 14 | 15 | void navigateToSettingsActivity(); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/java/ru/arturvasilov/stackexchangeclient/api/service/TagsService.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.api.service; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import retrofit2.http.GET; 6 | import retrofit2.http.Query; 7 | import ru.arturvasilov.stackexchangeclient.model.response.TagResponse; 8 | import rx.Observable; 9 | 10 | /** 11 | * @author Artur Vasilov 12 | */ 13 | public interface TagsService { 14 | 15 | @GET("tags?order=desc&sort=popular&pagesize=50") 16 | Observable searchTags(@NonNull @Query("inname") String search); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /GithubMVP/.gitignore: -------------------------------------------------------------------------------- 1 | # built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # generated files 12 | bin/** 13 | gen/** 14 | out/** 15 | gen-external-apklibs/** 16 | 17 | # Local configuration file (sdk path, etc) 18 | local.properties 19 | 20 | # IntellijJ IDEA 21 | *.iml 22 | *.ipr 23 | *.iws 24 | .idea/** 25 | classes/** 26 | target/** 27 | 28 | # Mac OS 29 | .DS_Store 30 | 31 | # Gradle 32 | gradle-app.setting 33 | .gradletasknamecache 34 | .gradle/** 35 | build/** 36 | 37 | # Proguard 38 | proguard/** 39 | 40 | # Trash 41 | trash/** 42 | 43 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/java/ru/arturvasilov/stackexchangeclient/service/NotificationsWidgetProvider.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.service; 2 | 3 | import android.appwidget.AppWidgetManager; 4 | import android.appwidget.AppWidgetProvider; 5 | import android.content.Context; 6 | 7 | /** 8 | * @author Artur Vasilov 9 | */ 10 | public class NotificationsWidgetProvider extends AppWidgetProvider { 11 | 12 | @Override 13 | public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 14 | UpdateWidgetService.start(context, appWidgetIds); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /GithubMVP/app/.gitignore: -------------------------------------------------------------------------------- 1 | # built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # generated files 12 | bin/** 13 | gen/** 14 | out/** 15 | gen-external-apklibs/** 16 | 17 | # Local configuration file (sdk path, etc) 18 | local.properties 19 | 20 | # IntellijJ IDEA 21 | *.iml 22 | *.ipr 23 | *.iws 24 | .idea/** 25 | classes/** 26 | target/** 27 | 28 | # Mac OS 29 | .DS_Store 30 | 31 | # Gradle 32 | gradle-app.setting 33 | .gradletasknamecache 34 | .gradle/** 35 | build/** 36 | 37 | # Proguard 38 | proguard/** 39 | 40 | # Trash 41 | trash/** 42 | 43 | -------------------------------------------------------------------------------- /PopularMovies/.gitignore: -------------------------------------------------------------------------------- 1 | # built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # generated files 12 | bin/** 13 | gen/** 14 | out/** 15 | gen-external-apklibs/** 16 | 17 | # Local configuration file (sdk path, etc) 18 | local.properties 19 | 20 | # IntellijJ IDEA 21 | *.iml 22 | *.ipr 23 | *.iws 24 | .idea/** 25 | classes/** 26 | target/** 27 | 28 | # Mac OS 29 | .DS_Store 30 | 31 | # Gradle 32 | gradle-app.setting 33 | .gradletasknamecache 34 | .gradle/** 35 | build/** 36 | 37 | # Proguard 38 | proguard/** 39 | 40 | # Trash 41 | trash/** 42 | 43 | -------------------------------------------------------------------------------- /PopularMovies/app/.gitignore: -------------------------------------------------------------------------------- 1 | # built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # generated files 12 | bin/** 13 | gen/** 14 | out/** 15 | gen-external-apklibs/** 16 | 17 | # Local configuration file (sdk path, etc) 18 | local.properties 19 | 20 | # IntellijJ IDEA 21 | *.iml 22 | *.ipr 23 | *.iws 24 | .idea/** 25 | classes/** 26 | target/** 27 | 28 | # Mac OS 29 | .DS_Store 30 | 31 | # Gradle 32 | gradle-app.setting 33 | .gradletasknamecache 34 | .gradle/** 35 | build/** 36 | 37 | # Proguard 38 | proguard/** 39 | 40 | # Trash 41 | trash/** 42 | 43 | -------------------------------------------------------------------------------- /StackExchangeClient/.gitignore: -------------------------------------------------------------------------------- 1 | # built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # generated files 12 | bin/** 13 | gen/** 14 | out/** 15 | gen-external-apklibs/** 16 | 17 | # Local configuration file (sdk path, etc) 18 | local.properties 19 | 20 | # IntellijJ IDEA 21 | *.iml 22 | *.ipr 23 | *.iws 24 | .idea/** 25 | classes/** 26 | target/** 27 | 28 | # Mac OS 29 | .DS_Store 30 | 31 | # Gradle 32 | gradle-app.setting 33 | .gradletasknamecache 34 | .gradle/** 35 | build/** 36 | 37 | # Proguard 38 | proguard/** 39 | 40 | # Trash 41 | trash/** 42 | 43 | -------------------------------------------------------------------------------- /GithubMVP/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | jcenter() 4 | } 5 | dependencies { 6 | classpath 'com.android.tools.build:gradle:2.2.0' 7 | classpath 'me.tatarka:gradle-retrolambda:3.3.0-beta4' 8 | classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2' 9 | 10 | configurations.classpath.exclude group: 'com.android.tools.external.lombok' 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | jcenter() 17 | maven { url "https://jitpack.io" } 18 | } 19 | } 20 | 21 | task clean(type: Delete) { 22 | delete rootProject.buildDir 23 | } 24 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/.gitignore: -------------------------------------------------------------------------------- 1 | # built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # generated files 12 | bin/** 13 | gen/** 14 | out/** 15 | gen-external-apklibs/** 16 | 17 | # Local configuration file (sdk path, etc) 18 | local.properties 19 | 20 | # IntellijJ IDEA 21 | *.iml 22 | *.ipr 23 | *.iws 24 | .idea/** 25 | classes/** 26 | target/** 27 | 28 | # Mac OS 29 | .DS_Store 30 | 31 | # Gradle 32 | gradle-app.setting 33 | .gradletasknamecache 34 | .gradle/** 35 | build/** 36 | 37 | # Proguard 38 | proguard/** 39 | 40 | # Trash 41 | trash/** 42 | 43 | -------------------------------------------------------------------------------- /StackExchangeClient/app/.gitignore: -------------------------------------------------------------------------------- 1 | # built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # generated files 12 | bin/** 13 | gen/** 14 | out/** 15 | gen-external-apklibs/** 16 | 17 | # Local configuration file (sdk path, etc) 18 | local.properties 19 | 20 | # IntellijJ IDEA 21 | *.iml 22 | *.ipr 23 | *.iws 24 | .idea/** 25 | classes/** 26 | target/** 27 | 28 | # Mac OS 29 | .DS_Store 30 | 31 | # Gradle 32 | gradle-app.setting 33 | .gradletasknamecache 34 | .gradle/** 35 | build/** 36 | 37 | # Proguard 38 | proguard/** 39 | 40 | # Trash 41 | trash/** 42 | 43 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/java/ru/arturvasilov/stackexchangeclient/api/service/ApplicationService.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.api.service; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import retrofit2.http.GET; 6 | import retrofit2.http.Path; 7 | import ru.arturvasilov.stackexchangeclient.model.response.ApiError; 8 | import rx.Observable; 9 | 10 | /** 11 | * @author Artur Vasilov 12 | */ 13 | public interface ApplicationService { 14 | 15 | @NonNull 16 | @GET("/apps/{accessTokens}/de-authenticate") 17 | Observable logout(@NonNull @Path("accessTokens") String token); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/.gitignore: -------------------------------------------------------------------------------- 1 | # built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # generated files 12 | bin/** 13 | gen/** 14 | out/** 15 | gen-external-apklibs/** 16 | 17 | # Local configuration file (sdk path, etc) 18 | local.properties 19 | 20 | # IntellijJ IDEA 21 | *.iml 22 | *.ipr 23 | *.iws 24 | .idea/** 25 | classes/** 26 | target/** 27 | 28 | # Mac OS 29 | .DS_Store 30 | 31 | # Gradle 32 | gradle-app.setting 33 | .gradletasknamecache 34 | .gradle/** 35 | build/** 36 | 37 | # Proguard 38 | proguard/** 39 | 40 | # Trash 41 | trash/** 42 | 43 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/java/ru/arturvasilov/stackexchangeclient/view/AnswersListView.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.view; 2 | 3 | import android.support.annotation.NonNull; 4 | import android.support.annotation.StringRes; 5 | 6 | import java.util.List; 7 | 8 | import ru.arturvasilov.stackexchangeclient.model.content.Answer; 9 | 10 | /** 11 | * @author Artur Vasilov 12 | */ 13 | public interface AnswersListView extends EmptyListView { 14 | 15 | void showAnswers(@NonNull List answers); 16 | 17 | void setEmptyText(@StringRes int textResId); 18 | 19 | void browseUrl(@NonNull String url); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | jcenter() 4 | } 5 | dependencies { 6 | classpath 'com.android.tools.build:gradle:2.2.0' 7 | classpath 'me.tatarka:gradle-retrolambda:3.3.0-beta4' 8 | classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2' 9 | } 10 | 11 | configurations.classpath.exclude group: 'com.android.tools.external.lombok' 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | jcenter() 17 | maven { url "https://jitpack.io" } 18 | } 19 | } 20 | 21 | task clean(type: Delete) { 22 | delete rootProject.buildDir 23 | } 24 | 25 | -------------------------------------------------------------------------------- /GithubMVP/app/src/main/java/ru/itis/lectures/githubmvp/content/auth/Authorization.java: -------------------------------------------------------------------------------- 1 | package ru.itis.lectures.githubmvp.content.auth; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | public class Authorization { 6 | 7 | @SerializedName("id") 8 | private int mId; 9 | 10 | @SerializedName("token") 11 | private String mToken; 12 | 13 | public int getId() { 14 | return mId; 15 | } 16 | 17 | public void setId(int id) { 18 | mId = id; 19 | } 20 | 21 | public String getToken() { 22 | return mToken; 23 | } 24 | 25 | public void setToken(String token) { 26 | mToken = token; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/java/arturvasilov/udacity/nanodegree/popularmoviesdatabinding/router/impl/HomeButtonRouter.java: -------------------------------------------------------------------------------- 1 | package arturvasilov.udacity.nanodegree.popularmoviesdatabinding.router.impl; 2 | 3 | import android.support.annotation.NonNull; 4 | import android.support.v7.app.AppCompatActivity; 5 | 6 | /** 7 | * @author Artur Vasilov 8 | */ 9 | public class HomeButtonRouter { 10 | 11 | private final AppCompatActivity mActivity; 12 | 13 | public HomeButtonRouter(@NonNull AppCompatActivity activity) { 14 | mActivity = activity; 15 | } 16 | 17 | public void onHomeButtonClicked() { 18 | mActivity.onBackPressed(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/main/res/drawable/btn_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 8 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 16dp 3 | 8dp 4 | 32dp 5 | 16dp 6 | 32dp 7 | 18sp 8 | 8dp 9 | 16sp 10 | 18sp 11 | 14sp 12 | 16sp 13 | 14 | -------------------------------------------------------------------------------- /PopularMovies/app/src/main/java/arturvasilov/udacity/nanodegree/popularmovies/model/MoviesResponse.java: -------------------------------------------------------------------------------- 1 | package arturvasilov.udacity.nanodegree.popularmovies.model; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import com.google.gson.annotations.SerializedName; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | /** 11 | * @author Artur Vasilov 12 | */ 13 | public class MoviesResponse { 14 | 15 | @SerializedName("results") 16 | private List mMovies; 17 | 18 | @NonNull 19 | public List getMovies() { 20 | if (mMovies == null) { 21 | return new ArrayList<>(); 22 | } 23 | return mMovies; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/java/arturvasilov/udacity/nanodegree/popularmoviesdatabinding/databinding/adapters/CustomAdapters.java: -------------------------------------------------------------------------------- 1 | package arturvasilov.udacity.nanodegree.popularmoviesdatabinding.databinding.adapters; 2 | 3 | import android.databinding.BindingAdapter; 4 | import android.support.annotation.NonNull; 5 | 6 | import arturvasilov.udacity.nanodegree.popularmoviesdatabinding.widget.RefreshingDialogView; 7 | 8 | /** 9 | * @author Artur Vasilov 10 | */ 11 | public class CustomAdapters { 12 | 13 | @BindingAdapter("app:refreshing") 14 | public static void setRefreshing(@NonNull RefreshingDialogView view, boolean refreshing) { 15 | view.setRefreshing(refreshing); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/java/arturvasilov/udacity/nanodegree/popularmoviesdatabinding/model/content/Video.java: -------------------------------------------------------------------------------- 1 | package arturvasilov.udacity.nanodegree.popularmoviesdatabinding.model.content; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import com.google.gson.annotations.SerializedName; 6 | 7 | /** 8 | * @author Artur Vasilov 9 | */ 10 | public class Video { 11 | 12 | @SerializedName("key") 13 | private String mKey; 14 | 15 | @SerializedName("name") 16 | private String mName; 17 | 18 | @NonNull 19 | public String getKey() { 20 | return mKey; 21 | } 22 | 23 | @NonNull 24 | public String getName() { 25 | return mName; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/test/java/ru/arturvasilov/stackexchangeclient/testutils/service/NotificationServiceMock.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.testutils.service; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import ru.arturvasilov.stackexchangeclient.api.service.NotificationService; 6 | import ru.arturvasilov.stackexchangeclient.model.response.NotificationResponse; 7 | import rx.Observable; 8 | 9 | /** 10 | * @author Artur Vasilov 11 | */ 12 | public class NotificationServiceMock implements NotificationService { 13 | 14 | @NonNull 15 | @Override 16 | public Observable notifications() { 17 | return Observable.empty(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /StackExchangeClient/app/src/test/java/ru/arturvasilov/stackexchangeclient/testutils/service/TagsServiceMock.java: -------------------------------------------------------------------------------- 1 | package ru.arturvasilov.stackexchangeclient.testutils.service; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import retrofit2.http.Query; 6 | import ru.arturvasilov.stackexchangeclient.api.service.TagsService; 7 | import ru.arturvasilov.stackexchangeclient.model.response.TagResponse; 8 | import rx.Observable; 9 | 10 | /** 11 | * @author Artur Vasilov 12 | */ 13 | public class TagsServiceMock implements TagsService { 14 | 15 | @Override 16 | public Observable searchTags(@NonNull @Query("inname") String search) { 17 | return Observable.empty(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /GithubMVP/app/src/test/java/ru/itis/lectures/githubmvp/api/TokenInterceptorTest.java: -------------------------------------------------------------------------------- 1 | package ru.itis.lectures.githubmvp.api; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.junit.runners.JUnit4; 6 | 7 | import okhttp3.Interceptor; 8 | 9 | import static org.junit.Assert.assertNotNull; 10 | 11 | /** 12 | * @author Artur Vasilov 13 | */ 14 | @RunWith(JUnit4.class) 15 | public class TokenInterceptorTest { 16 | 17 | private static final String TEST_TOKEN = "test_token"; 18 | 19 | @Test 20 | public void testConstructor() throws Exception { 21 | Interceptor interceptor = TokenInterceptor.getInstance(TEST_TOKEN); 22 | assertNotNull(interceptor); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/java/arturvasilov/udacity/nanodegree/popularmoviesdatabinding/api/RepositoryProvider.java: -------------------------------------------------------------------------------- 1 | package arturvasilov.udacity.nanodegree.popularmoviesdatabinding.api; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | /** 6 | * @author Artur Vasilov 7 | */ 8 | public final class RepositoryProvider { 9 | 10 | private static MoviesRepository sRepository; 11 | 12 | private RepositoryProvider() { 13 | } 14 | 15 | @NonNull 16 | public static MoviesRepository getRepository() { 17 | return sRepository; 18 | } 19 | 20 | public static void setRepository(@NonNull MoviesRepository repository) { 21 | sRepository = repository; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /GithubMVP/app/src/main/res/values/view_ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /PopularMovies/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:2.1.2' 9 | classpath 'me.tatarka:gradle-retrolambda:3.2.5' 10 | 11 | // NOTE: Do not place your application dependencies here; they belong 12 | // in the individual module build.gradle files 13 | } 14 | } 15 | 16 | allprojects { 17 | repositories { 18 | jcenter() 19 | maven { url "https://jitpack.io" } 20 | } 21 | } 22 | 23 | task clean(type: Delete) { 24 | delete rootProject.buildDir 25 | } 26 | -------------------------------------------------------------------------------- /PopularMoviesDataBinding/app/src/main/java/arturvasilov/udacity/nanodegree/popularmoviesdatabinding/model/response/VideosResponse.java: -------------------------------------------------------------------------------- 1 | package arturvasilov.udacity.nanodegree.popularmoviesdatabinding.model.response; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import com.google.gson.annotations.SerializedName; 6 | 7 | import java.util.List; 8 | 9 | import arturvasilov.udacity.nanodegree.popularmoviesdatabinding.model.content.Video; 10 | 11 | /** 12 | * @author Artur Vasilov 13 | */ 14 | public class VideosResponse { 15 | 16 | @SerializedName("results") 17 | private List