From a3d0a3fa71db329ab858af4bd61940f5a607644f Mon Sep 17 00:00:00 2001 From: Tim Date: Mon, 10 Sep 2018 17:17:08 +0100 Subject: [PATCH] add files --- OpenLP2.iml | 19 + app/app.iml | 139 +++++++ app/build.gradle | 42 +++ app/libs/classes.jar | Bin 0 -> 92315 bytes app/proguard-rules.pro | 17 + app/src/main/AndroidManifest.xml | 35 ++ .../main/java/org/openlp/android2/OpenLP.java | 302 +++++++++++++++ .../android2/activities/SettingsActivity.java | 219 +++++++++++ .../java/org/openlp/android2/api/Api.java | 125 ++++++ .../openlp/android2/common/JsonHelpers.java | 58 +++ .../android2/common/NavigationOptions.java | 28 ++ .../openlp/android2/common/OpenLPDialog.java | 124 ++++++ .../android2/common/OpenLPFragment.java | 138 +++++++ .../android2/common/OpenLPURLBuilder.java | 86 +++++ .../android2/common/RequestQueueService.java | 99 +++++ .../openlp/android2/common/StateHolder.java | 22 ++ .../android2/dialogs/AlertDisplayDialog.java | 105 ++++++ .../android2/dialogs/BlankDisplayDialog.java | 159 ++++++++ .../dialogs/SearchSelectionDialog.java | 135 +++++++ .../android2/fragments/AboutFragment.java | 70 ++++ .../android2/fragments/HomeFragment.java | 58 +++ .../android2/fragments/LiveListFragment.java | 189 ++++++++++ .../android2/fragments/LiveWebFragment.java | 33 ++ .../fragments/NavigationDrawerFragment.java | 344 +++++++++++++++++ .../android2/fragments/SearchFragment.java | 357 ++++++++++++++++++ .../fragments/ServiceListFragment.java | 201 ++++++++++ .../android2/fragments/StageWebFragment.java | 34 ++ .../android2/fragments/WebFragment.java | 78 ++++ .../res/drawable-hdpi/drawer_shadow.9.png | Bin 0 -> 161 bytes .../res/drawable-hdpi/ic_add_alert_white.png | Bin 0 -> 470 bytes .../main/res/drawable-hdpi/ic_apps_white.png | Bin 0 -> 98 bytes .../res/drawable-hdpi/ic_arrow_back_white.png | Bin 0 -> 189 bytes .../drawable-hdpi/ic_arrow_forward_white.png | Bin 0 -> 207 bytes app/src/main/res/drawable-hdpi/ic_drawer.png | Bin 0 -> 2829 bytes app/src/main/res/drawable-hdpi/ic_edit.png | Bin 0 -> 493 bytes .../main/res/drawable-hdpi/ic_home_black.png | Bin 0 -> 303 bytes app/src/main/res/drawable-hdpi/ic_image.png | Bin 0 -> 629 bytes .../main/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9086 bytes .../main/res/drawable-hdpi/ic_list_black.png | Bin 0 -> 111 bytes .../res/drawable-hdpi/ic_live_tv_black.png | Bin 0 -> 403 bytes .../res/drawable-hdpi/ic_local_movies.png | Bin 0 -> 232 bytes .../main/res/drawable-hdpi/ic_menu_white.png | Bin 0 -> 114 bytes .../res/drawable-hdpi/ic_my_library_books.png | Bin 0 -> 433 bytes .../res/drawable-hdpi/ic_my_library_music.png | Bin 0 -> 561 bytes .../drawable-hdpi/ic_ondemand_video_black.png | Bin 0 -> 363 bytes .../res/drawable-hdpi/ic_refresh_white.png | Bin 0 -> 734 bytes .../res/drawable-hdpi/ic_search_black.png | Bin 0 -> 684 bytes .../res/drawable-hdpi/ic_search_white.png | Bin 0 -> 728 bytes .../ic_settings_display_white.png | Bin 0 -> 396 bytes .../res/drawable-hdpi/ic_video_collection.png | Bin 0 -> 518 bytes .../res/drawable-hdpi/ic_view_list_black.png | Bin 0 -> 161 bytes .../drawable-hdpi/openlp_splash_screen.png | Bin 0 -> 63024 bytes .../res/drawable-mdpi/drawer_shadow.9.png | Bin 0 -> 142 bytes .../res/drawable-mdpi/ic_add_alert_white.png | Bin 0 -> 355 bytes .../main/res/drawable-mdpi/ic_apps_white.png | Bin 0 -> 93 bytes .../res/drawable-mdpi/ic_arrow_back_white.png | Bin 0 -> 127 bytes .../drawable-mdpi/ic_arrow_forward_white.png | Bin 0 -> 131 bytes app/src/main/res/drawable-mdpi/ic_drawer.png | Bin 0 -> 2820 bytes app/src/main/res/drawable-mdpi/ic_edit.png | Bin 0 -> 379 bytes .../main/res/drawable-mdpi/ic_home_black.png | Bin 0 -> 239 bytes app/src/main/res/drawable-mdpi/ic_image.png | Bin 0 -> 397 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5425 bytes .../main/res/drawable-mdpi/ic_list_black.png | Bin 0 -> 101 bytes .../res/drawable-mdpi/ic_live_tv_black.png | Bin 0 -> 302 bytes .../res/drawable-mdpi/ic_local_movies.png | Bin 0 -> 210 bytes .../main/res/drawable-mdpi/ic_menu_white.png | Bin 0 -> 84 bytes .../res/drawable-mdpi/ic_my_library_books.png | Bin 0 -> 338 bytes .../res/drawable-mdpi/ic_my_library_music.png | Bin 0 -> 422 bytes .../drawable-mdpi/ic_ondemand_video_black.png | Bin 0 -> 265 bytes .../res/drawable-mdpi/ic_refresh_white.png | Bin 0 -> 509 bytes .../res/drawable-mdpi/ic_search_black.png | Bin 0 -> 464 bytes .../res/drawable-mdpi/ic_search_white.png | Bin 0 -> 465 bytes .../ic_settings_display_white.png | Bin 0 -> 276 bytes .../res/drawable-mdpi/ic_video_collection.png | Bin 0 -> 395 bytes .../res/drawable-mdpi/ic_view_list_black.png | Bin 0 -> 116 bytes .../res/drawable-xhdpi/drawer_shadow.9.png | Bin 0 -> 174 bytes .../res/drawable-xhdpi/ic_add_alert_white.png | Bin 0 -> 613 bytes .../main/res/drawable-xhdpi/ic_apps_white.png | Bin 0 -> 97 bytes .../drawable-xhdpi/ic_arrow_back_white.png | Bin 0 -> 176 bytes .../drawable-xhdpi/ic_arrow_forward_white.png | Bin 0 -> 190 bytes app/src/main/res/drawable-xhdpi/ic_drawer.png | Bin 0 -> 2836 bytes app/src/main/res/drawable-xhdpi/ic_edit.png | Bin 0 -> 639 bytes .../main/res/drawable-xhdpi/ic_home_black.png | Bin 0 -> 356 bytes app/src/main/res/drawable-xhdpi/ic_image.png | Bin 0 -> 808 bytes .../main/res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14577 bytes .../main/res/drawable-xhdpi/ic_list_black.png | Bin 0 -> 117 bytes .../res/drawable-xhdpi/ic_live_tv_black.png | Bin 0 -> 510 bytes .../res/drawable-xhdpi/ic_local_movies.png | Bin 0 -> 286 bytes .../main/res/drawable-xhdpi/ic_menu_white.png | Bin 0 -> 92 bytes .../drawable-xhdpi/ic_my_library_books.png | Bin 0 -> 527 bytes .../drawable-xhdpi/ic_my_library_music.png | Bin 0 -> 707 bytes .../ic_ondemand_video_black.png | Bin 0 -> 457 bytes .../res/drawable-xhdpi/ic_refresh_white.png | Bin 0 -> 967 bytes .../res/drawable-xhdpi/ic_search_black.png | Bin 0 -> 868 bytes .../res/drawable-xhdpi/ic_search_white.png | Bin 0 -> 915 bytes .../ic_settings_display_white.png | Bin 0 -> 495 bytes .../drawable-xhdpi/ic_video_collection.png | Bin 0 -> 633 bytes .../res/drawable-xhdpi/ic_view_list_black.png | Bin 0 -> 117 bytes .../res/drawable-xxhdpi/drawer_shadow.9.png | Bin 0 -> 208 bytes .../drawable-xxhdpi/ic_add_alert_white.png | Bin 0 -> 885 bytes .../res/drawable-xxhdpi/ic_apps_white.png | Bin 0 -> 115 bytes .../drawable-xxhdpi/ic_arrow_back_white.png | Bin 0 -> 297 bytes .../ic_arrow_forward_white.png | Bin 0 -> 322 bytes .../main/res/drawable-xxhdpi/ic_drawer.png | Bin 0 -> 202 bytes app/src/main/res/drawable-xxhdpi/ic_edit.png | Bin 0 -> 846 bytes .../res/drawable-xxhdpi/ic_home_black.png | Bin 0 -> 485 bytes app/src/main/res/drawable-xxhdpi/ic_image.png | Bin 0 -> 1191 bytes .../main/res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 26606 bytes .../res/drawable-xxhdpi/ic_list_black.png | Bin 0 -> 128 bytes .../res/drawable-xxhdpi/ic_live_tv_black.png | Bin 0 -> 708 bytes .../res/drawable-xxhdpi/ic_local_movies.png | Bin 0 -> 374 bytes .../res/drawable-xxhdpi/ic_local_play.png | Bin 0 -> 1790 bytes .../res/drawable-xxhdpi/ic_menu_white.png | Bin 0 -> 108 bytes .../drawable-xxhdpi/ic_my_library_books.png | Bin 0 -> 768 bytes .../drawable-xxhdpi/ic_my_library_music.png | Bin 0 -> 1042 bytes .../ic_ondemand_video_black.png | Bin 0 -> 647 bytes .../res/drawable-xxhdpi/ic_refresh_white.png | Bin 0 -> 1459 bytes .../res/drawable-xxhdpi/ic_search_black.png | Bin 0 -> 1307 bytes .../res/drawable-xxhdpi/ic_search_white.png | Bin 0 -> 1393 bytes .../ic_settings_display_white.png | Bin 0 -> 729 bytes .../drawable-xxhdpi/ic_video_collection.png | Bin 0 -> 972 bytes .../drawable-xxhdpi/ic_view_list_black.png | Bin 0 -> 130 bytes app/src/main/res/drawable/custom_border.xml | 11 + app/src/main/res/drawable/search_list.xml | 11 + .../layout-xlarge/fragment_livelist_list.xml | 52 +++ app/src/main/res/layout/activity_main.xml | 79 ++++ app/src/main/res/layout/activity_open_lp.xml | 31 ++ .../main/res/layout/alert_display_dialog.xml | 25 ++ .../main/res/layout/blank_display_dialog.xml | 60 +++ app/src/main/res/layout/fragment_about.xml | 9 + app/src/main/res/layout/fragment_empty.xml | 6 + app/src/main/res/layout/fragment_home.xml | 22 ++ .../main/res/layout/fragment_item_list.xml | 12 + .../res/layout/fragment_livelist_list.xml | 43 +++ app/src/main/res/layout/fragment_main.xml | 13 + .../res/layout/fragment_navigation_drawer.xml | 5 + .../fragment_navigation_drawer_list.xml | 50 +++ app/src/main/res/layout/fragment_search.xml | 77 ++++ .../main/res/layout/fragment_service_list.xml | 48 +++ .../res/layout/fragment_servicelist_list.xml | 19 + app/src/main/res/layout/fragment_web.xml | 11 + .../main/res/layout/search_action_dialog.xml | 40 ++ app/src/main/res/layout/search_result.xml | 11 + app/src/main/res/layout/search_result_row.xml | 18 + .../main/res/layout/spinner_dropdown_item.xml | 11 + app/src/main/res/layout/spinner_list_item.xml | 11 + app/src/main/res/menu/global.xml | 5 + app/src/main/res/menu/menu_.xml | 6 + app/src/main/res/menu/open_l.xml | 27 ++ app/src/main/res/values-af/strings.xml | 54 +++ app/src/main/res/values-bg/strings.xml | 25 ++ app/src/main/res/values-cs/strings.xml | 55 +++ app/src/main/res/values-da/strings.xml | 55 +++ app/src/main/res/values-de/strings.xml | 55 +++ app/src/main/res/values-el/strings.xml | 25 ++ app/src/main/res/values-en-rGB/strings.xml | 55 +++ app/src/main/res/values-en-rZA/strings.xml | 55 +++ app/src/main/res/values-es/strings.xml | 55 +++ app/src/main/res/values-et/strings.xml | 52 +++ app/src/main/res/values-fi/strings.xml | 55 +++ app/src/main/res/values-fr/strings.xml | 55 +++ app/src/main/res/values-hu/strings.xml | 55 +++ app/src/main/res/values-id/strings.xml | 55 +++ app/src/main/res/values-it/strings.xml | 55 +++ app/src/main/res/values-ja/strings.xml | 39 ++ app/src/main/res/values-ko/strings.xml | 15 + app/src/main/res/values-large/refs.xml | 11 + app/src/main/res/values-lt/strings.xml | 55 +++ app/src/main/res/values-lv/strings.xml | 55 +++ app/src/main/res/values-mk/strings.xml | 5 + app/src/main/res/values-ml/strings.xml | 4 + app/src/main/res/values-nb/strings.xml | 55 +++ app/src/main/res/values-nl/strings.xml | 55 +++ app/src/main/res/values-nn/strings.xml | 12 + app/src/main/res/values-pap/strings.xml | 18 + app/src/main/res/values-pl/strings.xml | 55 +++ app/src/main/res/values-pt-rBR/strings.xml | 55 +++ app/src/main/res/values-ro/strings.xml | 55 +++ app/src/main/res/values-ru/strings.xml | 42 +++ app/src/main/res/values-sk/strings.xml | 55 +++ app/src/main/res/values-sl/strings.xml | 13 + app/src/main/res/values-sq/strings.xml | 2 + app/src/main/res/values-sv/strings.xml | 55 +++ app/src/main/res/values-sw600dp/refs.xml | 10 + app/src/main/res/values-tlh/strings.xml | 2 + app/src/main/res/values-tr/strings.xml | 5 + app/src/main/res/values-uk/strings.xml | 55 +++ app/src/main/res/values-vi/strings.xml | 2 + app/src/main/res/values-w820dp/dimens.xml | 6 + app/src/main/res/values-zh-rTW/strings.xml | 55 +++ .../main/res/values/backgroundTimeouts.xml | 22 ++ app/src/main/res/values/defaultValues.xml | 12 + app/src/main/res/values/dimens.xml | 9 + .../res/values/httpClientTimeoutValues.xml | 16 + app/src/main/res/values/keyStrings.xml | 11 + app/src/main/res/values/refs.xml | 23 ++ app/src/main/res/values/strings.xml | 61 +++ app/src/main/res/values/styles.xml | 8 + app/src/main/res/values/textSize.xml | 22 ++ app/src/main/res/xml/pref_general.xml | 17 + app/src/main/res/xml/pref_headers.xml | 14 + app/src/main/res/xml/pref_notification.xml | 53 +++ build.gradle | 19 + fixssl.iml | 19 + gradle.properties | 18 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 49896 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 164 ++++++++ gradlew.bat | 90 +++++ settings.gradle | 1 + 210 files changed, 6066 insertions(+) create mode 100644 OpenLP2.iml create mode 100644 app/app.iml create mode 100644 app/build.gradle create mode 100644 app/libs/classes.jar create mode 100644 app/proguard-rules.pro create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/org/openlp/android2/OpenLP.java create mode 100644 app/src/main/java/org/openlp/android2/activities/SettingsActivity.java create mode 100644 app/src/main/java/org/openlp/android2/api/Api.java create mode 100644 app/src/main/java/org/openlp/android2/common/JsonHelpers.java create mode 100644 app/src/main/java/org/openlp/android2/common/NavigationOptions.java create mode 100644 app/src/main/java/org/openlp/android2/common/OpenLPDialog.java create mode 100644 app/src/main/java/org/openlp/android2/common/OpenLPFragment.java create mode 100644 app/src/main/java/org/openlp/android2/common/OpenLPURLBuilder.java create mode 100644 app/src/main/java/org/openlp/android2/common/RequestQueueService.java create mode 100644 app/src/main/java/org/openlp/android2/common/StateHolder.java create mode 100644 app/src/main/java/org/openlp/android2/dialogs/AlertDisplayDialog.java create mode 100644 app/src/main/java/org/openlp/android2/dialogs/BlankDisplayDialog.java create mode 100644 app/src/main/java/org/openlp/android2/dialogs/SearchSelectionDialog.java create mode 100644 app/src/main/java/org/openlp/android2/fragments/AboutFragment.java create mode 100644 app/src/main/java/org/openlp/android2/fragments/HomeFragment.java create mode 100644 app/src/main/java/org/openlp/android2/fragments/LiveListFragment.java create mode 100644 app/src/main/java/org/openlp/android2/fragments/LiveWebFragment.java create mode 100644 app/src/main/java/org/openlp/android2/fragments/NavigationDrawerFragment.java create mode 100644 app/src/main/java/org/openlp/android2/fragments/SearchFragment.java create mode 100644 app/src/main/java/org/openlp/android2/fragments/ServiceListFragment.java create mode 100644 app/src/main/java/org/openlp/android2/fragments/StageWebFragment.java create mode 100644 app/src/main/java/org/openlp/android2/fragments/WebFragment.java create mode 100644 app/src/main/res/drawable-hdpi/drawer_shadow.9.png create mode 100644 app/src/main/res/drawable-hdpi/ic_add_alert_white.png create mode 100644 app/src/main/res/drawable-hdpi/ic_apps_white.png create mode 100644 app/src/main/res/drawable-hdpi/ic_arrow_back_white.png create mode 100644 app/src/main/res/drawable-hdpi/ic_arrow_forward_white.png create mode 100644 app/src/main/res/drawable-hdpi/ic_drawer.png create mode 100644 app/src/main/res/drawable-hdpi/ic_edit.png create mode 100644 app/src/main/res/drawable-hdpi/ic_home_black.png create mode 100644 app/src/main/res/drawable-hdpi/ic_image.png create mode 100755 app/src/main/res/drawable-hdpi/ic_launcher.png create mode 100644 app/src/main/res/drawable-hdpi/ic_list_black.png create mode 100644 app/src/main/res/drawable-hdpi/ic_live_tv_black.png create mode 100644 app/src/main/res/drawable-hdpi/ic_local_movies.png create mode 100644 app/src/main/res/drawable-hdpi/ic_menu_white.png create mode 100644 app/src/main/res/drawable-hdpi/ic_my_library_books.png create mode 100644 app/src/main/res/drawable-hdpi/ic_my_library_music.png create mode 100644 app/src/main/res/drawable-hdpi/ic_ondemand_video_black.png create mode 100644 app/src/main/res/drawable-hdpi/ic_refresh_white.png create mode 100644 app/src/main/res/drawable-hdpi/ic_search_black.png create mode 100644 app/src/main/res/drawable-hdpi/ic_search_white.png create mode 100644 app/src/main/res/drawable-hdpi/ic_settings_display_white.png create mode 100644 app/src/main/res/drawable-hdpi/ic_video_collection.png create mode 100644 app/src/main/res/drawable-hdpi/ic_view_list_black.png create mode 100644 app/src/main/res/drawable-hdpi/openlp_splash_screen.png create mode 100644 app/src/main/res/drawable-mdpi/drawer_shadow.9.png create mode 100644 app/src/main/res/drawable-mdpi/ic_add_alert_white.png create mode 100644 app/src/main/res/drawable-mdpi/ic_apps_white.png create mode 100644 app/src/main/res/drawable-mdpi/ic_arrow_back_white.png create mode 100644 app/src/main/res/drawable-mdpi/ic_arrow_forward_white.png create mode 100644 app/src/main/res/drawable-mdpi/ic_drawer.png create mode 100644 app/src/main/res/drawable-mdpi/ic_edit.png create mode 100644 app/src/main/res/drawable-mdpi/ic_home_black.png create mode 100644 app/src/main/res/drawable-mdpi/ic_image.png create mode 100755 app/src/main/res/drawable-mdpi/ic_launcher.png create mode 100644 app/src/main/res/drawable-mdpi/ic_list_black.png create mode 100644 app/src/main/res/drawable-mdpi/ic_live_tv_black.png create mode 100644 app/src/main/res/drawable-mdpi/ic_local_movies.png create mode 100644 app/src/main/res/drawable-mdpi/ic_menu_white.png create mode 100644 app/src/main/res/drawable-mdpi/ic_my_library_books.png create mode 100644 app/src/main/res/drawable-mdpi/ic_my_library_music.png create mode 100644 app/src/main/res/drawable-mdpi/ic_ondemand_video_black.png create mode 100644 app/src/main/res/drawable-mdpi/ic_refresh_white.png create mode 100644 app/src/main/res/drawable-mdpi/ic_search_black.png create mode 100644 app/src/main/res/drawable-mdpi/ic_search_white.png create mode 100644 app/src/main/res/drawable-mdpi/ic_settings_display_white.png create mode 100644 app/src/main/res/drawable-mdpi/ic_video_collection.png create mode 100644 app/src/main/res/drawable-mdpi/ic_view_list_black.png create mode 100644 app/src/main/res/drawable-xhdpi/drawer_shadow.9.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_add_alert_white.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_apps_white.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_arrow_back_white.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_arrow_forward_white.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_drawer.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_edit.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_home_black.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_image.png create mode 100755 app/src/main/res/drawable-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_list_black.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_live_tv_black.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_local_movies.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_menu_white.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_my_library_books.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_my_library_music.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_ondemand_video_black.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_refresh_white.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_search_black.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_search_white.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_settings_display_white.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_video_collection.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_view_list_black.png create mode 100644 app/src/main/res/drawable-xxhdpi/drawer_shadow.9.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_add_alert_white.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_apps_white.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_arrow_back_white.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_arrow_forward_white.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_drawer.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_edit.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_home_black.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_image.png create mode 100755 app/src/main/res/drawable-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_list_black.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_live_tv_black.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_local_movies.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_local_play.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_menu_white.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_my_library_books.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_my_library_music.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_ondemand_video_black.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_refresh_white.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_search_black.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_search_white.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_settings_display_white.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_video_collection.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_view_list_black.png create mode 100644 app/src/main/res/drawable/custom_border.xml create mode 100644 app/src/main/res/drawable/search_list.xml create mode 100644 app/src/main/res/layout-xlarge/fragment_livelist_list.xml create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/activity_open_lp.xml create mode 100644 app/src/main/res/layout/alert_display_dialog.xml create mode 100644 app/src/main/res/layout/blank_display_dialog.xml create mode 100644 app/src/main/res/layout/fragment_about.xml create mode 100644 app/src/main/res/layout/fragment_empty.xml create mode 100644 app/src/main/res/layout/fragment_home.xml create mode 100644 app/src/main/res/layout/fragment_item_list.xml create mode 100644 app/src/main/res/layout/fragment_livelist_list.xml create mode 100644 app/src/main/res/layout/fragment_main.xml create mode 100644 app/src/main/res/layout/fragment_navigation_drawer.xml create mode 100644 app/src/main/res/layout/fragment_navigation_drawer_list.xml create mode 100644 app/src/main/res/layout/fragment_search.xml create mode 100644 app/src/main/res/layout/fragment_service_list.xml create mode 100644 app/src/main/res/layout/fragment_servicelist_list.xml create mode 100644 app/src/main/res/layout/fragment_web.xml create mode 100644 app/src/main/res/layout/search_action_dialog.xml create mode 100644 app/src/main/res/layout/search_result.xml create mode 100644 app/src/main/res/layout/search_result_row.xml create mode 100644 app/src/main/res/layout/spinner_dropdown_item.xml create mode 100644 app/src/main/res/layout/spinner_list_item.xml create mode 100644 app/src/main/res/menu/global.xml create mode 100644 app/src/main/res/menu/menu_.xml create mode 100644 app/src/main/res/menu/open_l.xml create mode 100644 app/src/main/res/values-af/strings.xml create mode 100644 app/src/main/res/values-bg/strings.xml create mode 100644 app/src/main/res/values-cs/strings.xml create mode 100644 app/src/main/res/values-da/strings.xml create mode 100644 app/src/main/res/values-de/strings.xml create mode 100644 app/src/main/res/values-el/strings.xml create mode 100644 app/src/main/res/values-en-rGB/strings.xml create mode 100644 app/src/main/res/values-en-rZA/strings.xml create mode 100644 app/src/main/res/values-es/strings.xml create mode 100644 app/src/main/res/values-et/strings.xml create mode 100644 app/src/main/res/values-fi/strings.xml create mode 100644 app/src/main/res/values-fr/strings.xml create mode 100644 app/src/main/res/values-hu/strings.xml create mode 100644 app/src/main/res/values-id/strings.xml create mode 100644 app/src/main/res/values-it/strings.xml create mode 100644 app/src/main/res/values-ja/strings.xml create mode 100644 app/src/main/res/values-ko/strings.xml create mode 100644 app/src/main/res/values-large/refs.xml create mode 100644 app/src/main/res/values-lt/strings.xml create mode 100644 app/src/main/res/values-lv/strings.xml create mode 100644 app/src/main/res/values-mk/strings.xml create mode 100644 app/src/main/res/values-ml/strings.xml create mode 100644 app/src/main/res/values-nb/strings.xml create mode 100644 app/src/main/res/values-nl/strings.xml create mode 100644 app/src/main/res/values-nn/strings.xml create mode 100644 app/src/main/res/values-pap/strings.xml create mode 100644 app/src/main/res/values-pl/strings.xml create mode 100644 app/src/main/res/values-pt-rBR/strings.xml create mode 100644 app/src/main/res/values-ro/strings.xml create mode 100644 app/src/main/res/values-ru/strings.xml create mode 100644 app/src/main/res/values-sk/strings.xml create mode 100644 app/src/main/res/values-sl/strings.xml create mode 100644 app/src/main/res/values-sq/strings.xml create mode 100644 app/src/main/res/values-sv/strings.xml create mode 100644 app/src/main/res/values-sw600dp/refs.xml create mode 100644 app/src/main/res/values-tlh/strings.xml create mode 100644 app/src/main/res/values-tr/strings.xml create mode 100644 app/src/main/res/values-uk/strings.xml create mode 100644 app/src/main/res/values-vi/strings.xml create mode 100644 app/src/main/res/values-w820dp/dimens.xml create mode 100644 app/src/main/res/values-zh-rTW/strings.xml create mode 100644 app/src/main/res/values/backgroundTimeouts.xml create mode 100644 app/src/main/res/values/defaultValues.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/httpClientTimeoutValues.xml create mode 100644 app/src/main/res/values/keyStrings.xml create mode 100644 app/src/main/res/values/refs.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/main/res/values/textSize.xml create mode 100644 app/src/main/res/xml/pref_general.xml create mode 100644 app/src/main/res/xml/pref_headers.xml create mode 100644 app/src/main/res/xml/pref_notification.xml create mode 100644 build.gradle create mode 100644 fixssl.iml create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/OpenLP2.iml b/OpenLP2.iml new file mode 100644 index 0000000..ebb3cb4 --- /dev/null +++ b/OpenLP2.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/app.iml b/app/app.iml new file mode 100644 index 0000000..2d7a8c7 --- /dev/null +++ b/app/app.iml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..9618dc9 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,42 @@ +apply plugin: 'com.android.application' +project.archivesBaseName = 'OpenLP' +android { + compileSdkVersion 25 + buildToolsVersion "25" + + defaultConfig { + applicationId "org.openlp.android2" + minSdkVersion 16 + targetSdkVersion 25 + versionCode 6 + versionName "2.0" + vectorDrawables.useSupportLibrary = true + } + android { + lintOptions { + ignore 'MissingTranslation' + } + } + buildTypes { + debug { + debuggable true + } + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + testOptions { + unitTests.returnDefaultValues = true + } + + dependencies { + compile fileTree(include: ['*.jar'], dir: 'libs') + compile 'com.android.support:appcompat-v7:25.0.0' + compile 'com.android.support:support-v4:25.0.0' + compile 'com.android.support:design:25.0.0' + } +} +dependencies { + compile files('libs/classes.jar') +} \ No newline at end of file diff --git a/app/libs/classes.jar b/app/libs/classes.jar new file mode 100644 index 0000000000000000000000000000000000000000..791fe0b4d7bb1ddde1d852352dc2f421d86e5bf5 GIT binary patch literal 92315 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

fSD%TO}sgzJxY0FzE|4 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�~3lB(4i*Ae=fNG_*>lMXOY~8 zKLokrQ|~80{BHqbLVr^M-uAQpCqi~Ez|glfld%0Q=IZw^lb5X|Dgoe6f#>H0Koko^3&{Li)K!*oy&$}T?vbHyV1?|OmI{=d+97@c2LqcPWZKm;eG7FgZ~=)uS%M~%l_9IWcTeV z53pK(WN`l94!&O$@pnSM)**UvZzRor|E~%CV}Y~Zsr_1H26*zYp=HEG0snJfaU zwMT~0|4H5RJMyphtM5A&c0~V*{6Gqd-|>IFdVAl=O(lO6|1Sse4?VblXZv>&zupqO zziF{X`9G3)c-;JY%iw z*&jvy_ptWgN&Omtbl)1>aX(7xKYLTZgw6hr{cGI7ee5>DN3kCWX!;%d*V8lddxAF= wdldW6UFC;+^Vfr%`#VRC(hq|EpJO + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/org/openlp/android2/OpenLP.java b/app/src/main/java/org/openlp/android2/OpenLP.java new file mode 100644 index 0000000..e09a0cb --- /dev/null +++ b/app/src/main/java/org/openlp/android2/OpenLP.java @@ -0,0 +1,302 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2; + +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.res.Configuration; +import android.preference.PreferenceManager; +import android.support.v7.app.ActionBarActivity; +import android.app.ActionBar; +import android.app.FragmentManager; +import android.os.Bundle; +import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.support.v4.widget.DrawerLayout; +import android.view.WindowManager; + +import org.openlp.android2.activities.SettingsActivity; +import org.openlp.android2.common.NavigationOptions; +import org.openlp.android2.common.OpenLPURLBuilder; +import org.openlp.android2.common.StateHolder; +import org.openlp.android2.dialogs.AlertDisplayDialog; +import org.openlp.android2.dialogs.BlankDisplayDialog; +import org.openlp.android2.fragments.AboutFragment; +import org.openlp.android2.fragments.HomeFragment; +import org.openlp.android2.fragments.LiveListFragment; +import org.openlp.android2.fragments.LiveWebFragment; +import org.openlp.android2.fragments.NavigationDrawerFragment; +import org.openlp.android2.fragments.SearchFragment; +import org.openlp.android2.fragments.ServiceListFragment; +import org.openlp.android2.fragments.StageWebFragment; + + +public class OpenLP extends ActionBarActivity + implements NavigationDrawerFragment.NavigationDrawerCallbacks { + + /** + * Fragment managing the behaviors, interactions and presentation of the navigation drawer. + */ + private NavigationDrawerFragment mNavigationDrawerFragment; + + /** + * Used to store the last screen title. For use in {@link #restoreActionBar()}. + */ + private final String LOG_TAG = OpenLP.class.getName(); + private CharSequence mTitle; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + OpenLPURLBuilder.getInstance().setContext(this); + StateHolder.getInstance().setContext(this); + + doPreferenceCheck(); + + mNavigationDrawerFragment = (NavigationDrawerFragment) + getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); + mTitle = getTitle(); + + // Set up the drawer. + mNavigationDrawerFragment.setUp( + R.id.navigation_drawer, + (DrawerLayout) findViewById(R.id.drawer_layout)); + + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + + /** + * Check the preferences have been set at startup and if not redirect them to be set. + * + */ + protected void doPreferenceCheck() { + SharedPreferences sharedPrefs = PreferenceManager + .getDefaultSharedPreferences(this); + if (sharedPrefs.getString(getString(R.string.key_host), "NONE").equals("NONE") + || sharedPrefs.getString(getString(R.string.key_host), null).equals(null)) { + Log.d(LOG_TAG, + "URL preference not set. Starting preference activity..."); + Intent preferenceIntent = new Intent(this, SettingsActivity.class); + startActivity(preferenceIntent); + } + } + + /** + * Handle configuration change. + * + * @param newConfig The new Config. + */ + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + } + + /** + * Handle the selection of the Navigation Menu + * + * @param position Which item has been selected. + */ + @Override + public void onNavigationDrawerItemSelected(int position) { + // update the main content by replacing fragments + FragmentManager fragmentManager = getFragmentManager(); + switch (position) { + case NavigationOptions.Home: + singleTab(); + fragmentManager.beginTransaction() + .replace(R.id.container, HomeFragment.newInstance()) + .commit(); + mTitle = getString(R.string.home); + toggerContainer(R.id.next_button, View.GONE); + toggerContainer(R.id.prev_button, View.GONE); + break; + case NavigationOptions.ServiceList: + singleTab(); + fragmentManager.beginTransaction() + .replace(R.id.container, ServiceListFragment.newInstance(), "servicelist") + .commit(); + mTitle = getString(R.string.service_list); + toggerContainer(R.id.next_button, View.VISIBLE); + toggerContainer(R.id.prev_button, View.VISIBLE); + break; + case NavigationOptions.LiveList: + duelTab(); + fragmentManager.beginTransaction() + .replace(R.id.container_left, ServiceListFragment.newInstance(), "servicelist") + .commit(); + fragmentManager.beginTransaction() + .replace(R.id.container_right, LiveListFragment.newInstance(), "livelist") + .commit(); + mTitle = getString(R.string.live_list); + toggerContainer(R.id.next_button, View.VISIBLE); + toggerContainer(R.id.prev_button, View.VISIBLE); + break; + case NavigationOptions.StageView: + singleTab(); + fragmentManager.beginTransaction() + .replace(R.id.container, StageWebFragment.newInstance()) + .commit(); + mTitle = getString(R.string.stage_view); + toggerContainer(R.id.next_button, View.GONE); + toggerContainer(R.id.prev_button, View.GONE); + break; + case NavigationOptions.LiveView: + singleTab(); + fragmentManager.beginTransaction() + .replace(R.id.container, LiveWebFragment.newInstance()) + .commit(); + mTitle = getString(R.string.live_view); + toggerContainer(R.id.next_button, View.GONE); + toggerContainer(R.id.prev_button, View.GONE); + break; + case NavigationOptions.Search: + singleTab(); + fragmentManager.beginTransaction() + .replace(R.id.container, SearchFragment.newInstance()) + .commit(); + mTitle = getString(R.string.action_search); + toggerContainer(R.id.next_button, View.GONE); + toggerContainer(R.id.prev_button, View.GONE); + break; + default: + singleTab(); + fragmentManager.beginTransaction() + .replace(R.id.container, HomeFragment.newInstance()) + .commit(); + mTitle = getString(R.string.home); + toggerContainer(R.id.next_button, View.GONE); + toggerContainer(R.id.prev_button, View.GONE); + break; + } + } + + /** + * Set Display to allow for Duel Columns + */ + protected void duelTab(){ + toggerContainer(R.id.container, View.GONE); + toggerContainer(R.id.container_right, View.VISIBLE); + toggerContainer(R.id.container_left, View.VISIBLE); + } + + /** + * Set Display to allow for Single Columns + */ + protected void singleTab(){ + toggerContainer(R.id.container_right, View.GONE); + toggerContainer(R.id.container_left, View.GONE); + toggerContainer(R.id.container, View.VISIBLE); + } + + /** + * + * @param container The container id to be accesses + * @param direction What visibility to use on the container + */ + protected void toggerContainer(int container, int direction){ + View cTainer = this.findViewById(container); + if (cTainer != null) { + cTainer.setVisibility(direction); + } + } + + public void restoreActionBar() { + try { + ActionBar actionBar = getActionBar(); + //actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); + actionBar.setDisplayShowTitleEnabled(true); + actionBar.setTitle(mTitle); + } catch (Exception e) { + //noop + } + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + if (!mNavigationDrawerFragment.isDrawerOpen()) { + // Only show items in the action bar relevant to this screen + // if the drawer is not showing. Otherwise, let the drawer + // decide what to show in the action bar. + getMenuInflater().inflate(R.menu.open_l, menu); + restoreActionBar(); + return true; + } + return super.onCreateOptionsMenu(menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + Intent intent; + switch (item.getItemId()) { + case R.id.action_preferences: + intent = new Intent(this, SettingsActivity.class); + startActivity(intent); + return true; + case R.id.action_refresh: + if (this.mTitle.equals(getString(R.string.service_list))) { + refreshServiceFragment(R.id.container); + } else if (this.mTitle.equals(getString(R.string.live_list)) ) { + refreshServiceFragment(R.id.container_left); + refreshLiveFragment(R.id.container_right); + } + return true; + case R.id.action_blank: + new BlankDisplayDialog().show(getFragmentManager(), "BlankDialog"); + return true; + case R.id.action_alert: + new AlertDisplayDialog().show(getFragmentManager(), "AlertDialog"); + return true; + case R.id.action_about: + getFragmentManager().beginTransaction().replace(R.id.container, + new AboutFragment()).commit(); + default: + return super.onOptionsItemSelected(item); + } + } + public void refreshLiveFragment(int container){ + LiveListFragment fragment = (LiveListFragment) + getFragmentManager().findFragmentById(container); + if (fragment != null) { + fragment.refreshDisplay(); + } + } + public void refreshServiceFragment(int container){ + ServiceListFragment fragment = (ServiceListFragment) + getFragmentManager().findFragmentById(container); + if (fragment != null) { + fragment.refreshDisplay(); + } + } + + public void next(View view) { + ServiceListFragment serviceListFragment = (ServiceListFragment) getFragmentManager().findFragmentByTag("servicelist"); + serviceListFragment.next(); + } + + public void previous(View view) { + ServiceListFragment serviceListFragment = (ServiceListFragment) getFragmentManager().findFragmentByTag("servicelist"); + serviceListFragment.previous(); + } +} diff --git a/app/src/main/java/org/openlp/android2/activities/SettingsActivity.java b/app/src/main/java/org/openlp/android2/activities/SettingsActivity.java new file mode 100644 index 0000000..427c03d --- /dev/null +++ b/app/src/main/java/org/openlp/android2/activities/SettingsActivity.java @@ -0,0 +1,219 @@ +package org.openlp.android2.activities; + +import android.annotation.TargetApi; +import android.content.Context; +import android.content.res.Configuration; +import android.os.Build; +import android.os.Bundle; +import android.preference.ListPreference; +import android.preference.Preference; +import android.preference.PreferenceActivity; +import android.preference.PreferenceCategory; +import android.preference.PreferenceFragment; +import android.preference.PreferenceManager; + +import org.openlp.android2.R; + +import java.util.List; + +/** + * A {@link PreferenceActivity} that presents a set of application settings. On + * handset devices, settings are presented as a single list. On tablets, + * settings are split by category, with category headers shown to the left of + * the list of settings. + *

+ * See + * Android Design: Settings for design guidelines and the Settings + * API Guide for more information on developing a Settings UI. + */ +public class SettingsActivity extends PreferenceActivity { + /** + * Determines whether to always show the simplified settings UI, where + * settings are presented in a single list. When false, settings are shown + * as a master/detail two-pane view on tablets. When true, a single pane is + * shown on tablets. + */ + private static final boolean ALWAYS_SIMPLE_PREFS = false; + + + @Override + protected void onPostCreate(Bundle savedInstanceState) { + super.onPostCreate(savedInstanceState); + + setupSimplePreferencesScreen(); + } + + /** + * Shows the simplified settings UI if the device configuration if the + * device configuration dictates that a simplified, single-pane UI should be + * shown. + */ + private void setupSimplePreferencesScreen() { + if (!isSimplePreferences(this)) { + return; + } + + // In the simplified UI, fragments are not used at all and we instead + // use the older PreferenceActivity APIs. + + // Add 'general' preferences. + addPreferencesFromResource(R.xml.pref_general); + + // Add 'notifications' preferences, and a corresponding header. + PreferenceCategory fakeHeader = new PreferenceCategory(this); + fakeHeader.setTitle(R.string.connection_configuration); + getPreferenceScreen().addPreference(fakeHeader); + addPreferencesFromResource(R.xml.pref_notification); + + // Bind the summaries of EditText/List/Dialog/Ringtone preferences to + // their values. When their values change, their summaries are updated + // to reflect the new value, per the Android Design guidelines. + bindPreferenceSummaryToValue(findPreference("key_text_size")); + bindPreferenceSummaryToValue(findPreference("key_connection_timeout")); + bindPreferenceSummaryToValue(findPreference("key_host")); + bindPreferenceSummaryToValue(findPreference("key_port")); + bindPreferenceSummaryToValue(findPreference("key_userid")); + bindPreferenceSummaryToValue(findPreference("key_password")); + + } + + /** + * {@inheritDoc} + */ + @Override + public boolean onIsMultiPane() { + return isXLargeTablet(this) && !isSimplePreferences(this); + } + + /** + * Helper method to determine if the device has an extra-large screen. For + * example, 10" tablets are extra-large. + */ + private static boolean isXLargeTablet(Context context) { + return (context.getResources().getConfiguration().screenLayout + & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE; + } + + /** + * Determines whether the simplified settings UI should be shown. This is + * true if this is forced via {@link #ALWAYS_SIMPLE_PREFS}, or the device + * doesn't have newer APIs like {@link PreferenceFragment}, or the device + * doesn't have an extra-large screen. In these cases, a single-pane + * "simplified" settings UI should be shown. + */ + private static boolean isSimplePreferences(Context context) { + return ALWAYS_SIMPLE_PREFS + || Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB + || !isXLargeTablet(context); + } + + /** + * {@inheritDoc} + */ + @Override + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void onBuildHeaders(List

target) { + if (!isSimplePreferences(this)) { + loadHeadersFromResource(R.xml.pref_headers, target); + } + } + + @Override + protected boolean isValidFragment (String fragmentName) { + return true; + } + + /** + * A preference value change listener that updates the preference's summary + * to reflect its new value. + */ + private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object value) { + String stringValue = value.toString(); + + if (preference instanceof ListPreference) { + // For list preferences, look up the correct display value in + // the preference's 'entries' list. + ListPreference listPreference = (ListPreference) preference; + int index = listPreference.findIndexOfValue(stringValue); + + // Set the summary to reflect the new value. + preference.setSummary( + index >= 0 + ? listPreference.getEntries()[index] + : null); + + } else { + // For all other preferences, set the summary to the value's + // simple string representation. + preference.setSummary(stringValue); + } + return true; + } + }; + + /** + * Binds a preference's summary to its value. More specifically, when the + * preference's value is changed, its summary (line of text below the + * preference title) is updated to reflect the value. The summary is also + * immediately updated upon calling this method. The exact display format is + * dependent on the type of preference. + * + * @see #sBindPreferenceSummaryToValueListener + */ + private static void bindPreferenceSummaryToValue(Preference preference) { + // Set the listener to watch for value changes. + preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener); + + // Trigger the listener immediately with the preference's current value. + sBindPreferenceSummaryToValueListener.onPreferenceChange(preference, + PreferenceManager + .getDefaultSharedPreferences(preference.getContext()) + .getString(preference.getKey(), "")); + } + + /** + * This fragment shows general preferences only. It is used when the + * activity is showing a two-pane settings UI. + */ + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public static class GeneralPreferenceFragment extends PreferenceFragment { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.pref_general); + + // Bind the summaries of EditText/List/Dialog/Ringtone preferences + // to their values. When their values change, their summaries are + // updated to reflect the new value, per the Android Design + // guidelines. + bindPreferenceSummaryToValue(findPreference("key_text_size")); + } + + } + + /** + * This fragment shows notification preferences only. It is used when the + * activity is showing a two-pane settings UI. + */ + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public static class NotificationPreferenceFragment extends PreferenceFragment { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.pref_notification); + + // Bind the summaries of EditText/List/Dialog/Ringtone preferences + // to their values. When their values change, their summaries are + // updated to reflect the new value, per the Android Design + // guidelines. + bindPreferenceSummaryToValue(findPreference("key_connection_timeout")); + bindPreferenceSummaryToValue(findPreference("key_host")); + bindPreferenceSummaryToValue(findPreference("key_port")); + bindPreferenceSummaryToValue(findPreference("key_userid")); + bindPreferenceSummaryToValue(findPreference("key_password")); + } + } +} diff --git a/app/src/main/java/org/openlp/android2/api/Api.java b/app/src/main/java/org/openlp/android2/api/Api.java new file mode 100644 index 0000000..1dc9fd1 --- /dev/null +++ b/app/src/main/java/org/openlp/android2/api/Api.java @@ -0,0 +1,125 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.api; + +/** + *

Routes:

+ *

+ *

+ *

+ * ``/``
+ * Go to the web interface.
+ *
+ * ``/files/{filename}``
+ *
+ * ``/api/poll``
+ * {"results": {"type": "controller"}}
+ * Or, if there were no results, False::
+ * {"results": False}
+ *
+ * ``/api/display/{hide|show}``
+ * Blank or unblank the screen.
+ *
+ * ``/api/alert``
+ * {"request": {"text": ""}}
+ * ``/api/controller/{live|preview}/{action}``
+ * ``next``
+ * Load the next slide.
+ *
+ * ``previous``
+ * Load the previous slide.
+ *
+ * ``set``
+ * Set a specific slide. Requires an id return in a JSON-encoded dict like
+ * this::
+ *
+ * {"request": {"id": 1}}
+ *
+ * ``first``
+ * Load the first slide.
+ *
+ * ``last``
+ * Load the last slide.
+ *
+ * ``text``
+ * Fetches the text of the current song. The output is a JSON-encoded
+ * dict which looks like this::
+ *
+ * {"result": {"slides": ["...", "..."]}}
+ *
+ * ``/api/service/{action}``
+ * Perform ``{action}`` on the service manager (e.g. go live). Data is
+ * passed as a json-encoded ``data`` parameter. Valid actions are:
+ *
+ * ``next``
+ * Load the next item in the service.
+ *
+ * ``previous``
+ *
+ * ``set``
+ * Set a specific item in the service. Requires an id returned in a
+ * JSON-encoded dict like this::
+ *
+ * {"request": {"id": 1}}
+ *
+ * ``list``
+ * Request a list of items in the service. Returns a list of items in the
+ * current service in a JSON-encoded dict like this::
+ *
+ * {"results": {"items": [{...}, {...}]}}
+ * """
+ * 
+ */ + +public interface Api { + + public final String LIVE_BASE = "/api/controller/live/"; + public final String LIVE_NEXT = "/api/controller/live/next"; + public final String LIVE_PREVIOUS = "/api/controller/live/previous"; + public final String LIVE_TEXT = "/api/controller/live/text"; + public final String LIVE_SET = "/api/controller/live/set?data="; + public final String STAGE_VIEW = "/stage"; + public final String LIVE_VIEW = "/main"; + + public final String SERVICE_LIST = "/api/service/list"; + public final String SERVICE_SET = "/api/service/set?data="; + + public final String DISPLAY_SHOW = "/api/display/show"; + public final String DISPLAY_BLANK = "/api/display/blank"; + public final String DISPLAY_THEME = "/api/display/theme"; + public final String DISPLAY_DESKTOP = "/api/display/desktop"; + public final String POLL_STATUS = "/api/poll"; + + public final String ALERT = "/api/alert?data="; + + public final String SEARCHABLE_PLUGINS = "/api/plugin/search"; + /** + * This is a special string that uses the String.format() method. See + * {@link String#format(String, Object...)} + */ + public final String SEARCH_PLUGIN_FORMATTED = "/api/%s/search?data="; + /** + * Match intent extra key with regex since multiple plugins can be inserted + */ + public final String SEARCH_PLUGIN_ADD = "/api/%s/add?data="; + /** + * Match intent extra key with regex since multiple plugins can be inserted + */ + public final String SEARCH_PLUGIN_LIVE = "/api/%s/live?data="; +} diff --git a/app/src/main/java/org/openlp/android2/common/JsonHelpers.java b/app/src/main/java/org/openlp/android2/common/JsonHelpers.java new file mode 100644 index 0000000..bcc6a2f --- /dev/null +++ b/app/src/main/java/org/openlp/android2/common/JsonHelpers.java @@ -0,0 +1,58 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.common; + +import android.util.Log; + +import org.json.JSONException; +import org.json.JSONObject; +import org.json.JSONStringer; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + +public class JsonHelpers { + + private static String LOG_TAG = JsonHelpers.class.getName(); + + public static String createRequestJSON(String key, String value) throws JSONHandlerException { + try { + String responseJSON; + JSONObject jo = new JSONObject(); + jo.put(key, value); + responseJSON = new JSONStringer().object().key("request").value(jo) + .endObject().toString(); + responseJSON = URLEncoder.encode(responseJSON, "UTF-8"); + Log.d(LOG_TAG, String.format("createRequestJSON: %s : %s : %s", key, value, responseJSON)); + return responseJSON; + } catch (JSONException e) { + throw new JSONHandlerException(e); + } catch (UnsupportedEncodingException e) { + throw new JSONHandlerException(e); + } + } + + public static class JSONHandlerException extends Exception { + private static final long serialVersionUID = -6772307308404816615L; + + public JSONHandlerException(Throwable throwable) { + super(throwable); + } + } +} diff --git a/app/src/main/java/org/openlp/android2/common/NavigationOptions.java b/app/src/main/java/org/openlp/android2/common/NavigationOptions.java new file mode 100644 index 0000000..cd8b159 --- /dev/null +++ b/app/src/main/java/org/openlp/android2/common/NavigationOptions.java @@ -0,0 +1,28 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.common; + +public class NavigationOptions{ + public final static int Home = 0; + public final static int ServiceList = 1; + public final static int LiveList = 2; + public final static int StageView = 3; + public final static int LiveView = 4; + public final static int Search = 5; +} diff --git a/app/src/main/java/org/openlp/android2/common/OpenLPDialog.java b/app/src/main/java/org/openlp/android2/common/OpenLPDialog.java new file mode 100644 index 0000000..a19b8cd --- /dev/null +++ b/app/src/main/java/org/openlp/android2/common/OpenLPDialog.java @@ -0,0 +1,124 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.common; + +import android.app.DialogFragment; +import android.content.Context; +import android.util.Log; +import android.widget.Toast; + +import com.android.volley.AuthFailureError; +import com.android.volley.ClientError; +import com.android.volley.DefaultRetryPolicy; +import com.android.volley.NetworkError; +import com.android.volley.NoConnectionError; +import com.android.volley.ParseError; +import com.android.volley.Request; +import com.android.volley.Response; +import com.android.volley.ServerError; +import com.android.volley.TimeoutError; +import com.android.volley.VolleyError; +import com.android.volley.toolbox.StringRequest; + +import org.openlp.android2.R; +import org.openlp.android2.api.Api; + +import java.util.HashMap; +import java.util.Map; + + +abstract public class OpenLPDialog extends DialogFragment { + + private final String LOG_TAG = OpenLPDialog.class.getName(); + + protected Context context; + private String urlcalled; + + protected void populateDisplay(String responseString) { + } + + protected void processUpdate(String responseString) { + } + + protected void errorDisplay(String responseString) { + } + + protected void triggerTextRequest(final String urlbase) { + String url = RequestQueueService.getInstance(this.context).getUrl(urlbase); + urlcalled = urlbase; + + StringRequest request = new StringRequest( + Request.Method.GET, + url, + listener, + errorListener) { + + @Override + public Map getHeaders() throws AuthFailureError { + return createBasicAuthHeader("user", "passwd"); + } + }; + //Set a retry policy in case of SocketTimeout & ConnectionTimeout Exceptions. + // Volley does retry for you if you have specified the policy. + request.setRetryPolicy(new DefaultRetryPolicy( + RequestQueueService.getInstance(this.context).getConnectionTimeout(), + DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); + request.setTag("OpenLP"); + RequestQueueService.getInstance(this.context).addToRequestQueue(request); + } + + Map createBasicAuthHeader(String username, String password) { + Map headers = new HashMap(); + headers.put("Authorization", RequestQueueService.getInstance(context).getBasicAuth()); + + return headers; + } + + Response.Listener listener = new Response.Listener() { + @Override + public void onResponse(String response) { + if (urlcalled.equals(Api.POLL_STATUS)) { + populateDisplay(response); + } else { + processUpdate(response); + } + } + }; + + Response.ErrorListener errorListener = new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + Log.d(LOG_TAG, String.format("Call response error = %s", error.toString())); + if (error instanceof NetworkError) { + } else if (error instanceof ClientError) { + } else if (error instanceof ServerError) { + } else if (error instanceof AuthFailureError) { + Toast.makeText(context, R.string.httpreturn_unauthorised, + Toast.LENGTH_LONG).show(); + } else if (error instanceof ParseError) { + } else if (error instanceof NoConnectionError) { + } else if (error instanceof TimeoutError) { + } + Toast.makeText(context, R.string.unable, + Toast.LENGTH_LONG).show(); + errorDisplay(error.toString()); + + } + }; +} diff --git a/app/src/main/java/org/openlp/android2/common/OpenLPFragment.java b/app/src/main/java/org/openlp/android2/common/OpenLPFragment.java new file mode 100644 index 0000000..9fd3578 --- /dev/null +++ b/app/src/main/java/org/openlp/android2/common/OpenLPFragment.java @@ -0,0 +1,138 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.common; + + +import android.app.ListFragment; +import android.content.Context; +import android.util.Log; +import android.view.View; + +import android.widget.ListView; +import android.widget.Toast; + +import com.android.volley.AuthFailureError; +import com.android.volley.ClientError; +import com.android.volley.DefaultRetryPolicy; +import com.android.volley.NetworkError; +import com.android.volley.NoConnectionError; +import com.android.volley.ParseError; +import com.android.volley.Request; +import com.android.volley.Response; +import com.android.volley.ServerError; +import com.android.volley.TimeoutError; +import com.android.volley.VolleyError; +import com.android.volley.toolbox.StringRequest; +import org.openlp.android2.R; +import org.openlp.android2.api.Api; + +import java.util.HashMap; +import java.util.Map; + +abstract public class OpenLPFragment extends ListFragment{ + + private String LOG_TAG = OpenLPFragment.class.getName(); + public Context context; + protected String urlcalled; + protected String updateUrl; + + abstract public void itemClicked(int position); + + @Override + public void onListItemClick(ListView l, View v, int position, long id) { + super.onListItemClick(l, v, position, id); + itemClicked(position); + } + + protected void refreshDisplay(){} + protected void populateDisplay(String responseString, boolean inError) {} + protected void processUpdate(String responseString, boolean inError) {} + + protected void triggerTextRequest(final String urlbase) { + String url = RequestQueueService.getInstance(this.context).getUrl(urlbase); + updateUrl = urlbase; + + StringRequest request = new StringRequest( + Request.Method.GET, + url, + listener, + errorListener) { + + @Override + public Map getHeaders() throws AuthFailureError { + return createBasicAuthHeader("user", "passwd"); + } + }; + //Set a retry policy in case of SocketTimeout & ConnectionTimeout Exceptions. + // Volley does retry for you if you have specified the policy. + request.setRetryPolicy(new DefaultRetryPolicy( + RequestQueueService.getInstance(this.context).getConnectionTimeout(), + DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); + request.setTag("OpenLP"); + RequestQueueService.getInstance(this.context).addToRequestQueue(request); + } + + Map createBasicAuthHeader(String username, String password) { + Map headers = new HashMap(); + headers.put("Authorization", RequestQueueService.getInstance(context).getBasicAuth()); + + return headers; + } + + Response.Listener listener = new Response.Listener() { + @Override + public void onResponse(String response) { + if (urlcalled.equals(updateUrl)) { + populateDisplay(response, true); + } else { + processUpdate(response, true); + } + } + }; + + Response.ErrorListener errorListener = new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + Log.d(LOG_TAG, String.format("Call response error = %s", error.toString())); + if (error instanceof NetworkError) { + } else if (error instanceof ClientError) { + } else if (error instanceof ServerError) { + } else if (error instanceof AuthFailureError) { + Toast.makeText(context, R.string.httpreturn_unauthorised, + Toast.LENGTH_LONG).show(); + } else if (error instanceof ParseError) { + } else if (error instanceof NoConnectionError) { + } else if (error instanceof TimeoutError) { + } + Toast.makeText(context, R.string.unable, + Toast.LENGTH_LONG).show(); + + } + }; + + public void next() { + Log.d(LOG_TAG, "Going to next slide"); + triggerTextRequest(Api.LIVE_NEXT); + } + + public void previous() { + Log.d(LOG_TAG, "Going to previous slide"); + triggerTextRequest(Api.LIVE_PREVIOUS); + } +} diff --git a/app/src/main/java/org/openlp/android2/common/OpenLPURLBuilder.java b/app/src/main/java/org/openlp/android2/common/OpenLPURLBuilder.java new file mode 100644 index 0000000..8e9867e --- /dev/null +++ b/app/src/main/java/org/openlp/android2/common/OpenLPURLBuilder.java @@ -0,0 +1,86 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.common; + +import android.content.Context; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; +import android.util.Base64; +import android.util.Log; + +import org.openlp.android2.R; + +public class OpenLPURLBuilder { + private final String LOG_TAG = OpenLPURLBuilder.class.getName(); + private Context context; + + private static OpenLPURLBuilder ourInstance = new OpenLPURLBuilder(); + + public static OpenLPURLBuilder getInstance() { + return ourInstance; + } + + private OpenLPURLBuilder() { + } + + public void setContext(Context context) { + this.context = context; + } + + public int getConnectionTimeout() { + + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + + int connectionTimeout = context.getResources().getInteger( + R.integer.connectionTimeoutDefaultValue); + + if (sharedPrefs.getBoolean(context.getString(R.string.key_enable_custom_timeout), false)) { + Log.d(LOG_TAG, "Overriding Connection and Socket timeouts"); + + connectionTimeout = Integer.parseInt(sharedPrefs.getString(context.getString(R.string.key_connection_timeout), + String.valueOf(context.getResources().getInteger(R.integer.connectionTimeoutDefaultValue)) + )); + } + return connectionTimeout; + } + + public String getBasicAuth(){ + + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + String userid = sharedPrefs.getString(context.getString(R.string.key_userid), "openlp"); + String password = sharedPrefs.getString(context.getString(R.string.key_password), "password"); + + Log.d(LOG_TAG, "Credentials set to " + userid + " : " + password); + + String credentials = userid + ":" + password; + return "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.DEFAULT); + } + + public String getBaseUrl(){ + + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + + String host = sharedPrefs.getString(context.getString(R.string.key_host), + context.getString(R.string.host_default_value)); + String port = sharedPrefs.getString(context.getString(R.string.key_port), "4316"); + + return String.format("http://%s:%s", host, port); + + } +} diff --git a/app/src/main/java/org/openlp/android2/common/RequestQueueService.java b/app/src/main/java/org/openlp/android2/common/RequestQueueService.java new file mode 100644 index 0000000..8285389 --- /dev/null +++ b/app/src/main/java/org/openlp/android2/common/RequestQueueService.java @@ -0,0 +1,99 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.common; + +import android.content.Context; +import android.graphics.Bitmap; +import android.util.Base64; +import android.util.LruCache; + +import com.android.volley.AuthFailureError; +import com.android.volley.Request; +import com.android.volley.RequestQueue; +import com.android.volley.toolbox.HurlStack; +import com.android.volley.toolbox.ImageLoader; +import com.android.volley.toolbox.Volley; + +import java.util.HashMap; +import java.util.Map; + +public class RequestQueueService { + + private static RequestQueueService mInstance; + private RequestQueue mRequestQueue; + private ImageLoader mImageLoader; + private static Context mCtx; + + private RequestQueueService(Context context) { + mCtx = context; + mRequestQueue = getRequestQueue(); + + mImageLoader = new ImageLoader(mRequestQueue, + new ImageLoader.ImageCache() { + private final LruCache cache = new LruCache(20); + + @Override + public Bitmap getBitmap(String url) { + return cache.get(url); + } + + @Override + public void putBitmap(String url, Bitmap bitmap) { + cache.put(url, bitmap); + } + }); + } + + public static synchronized RequestQueueService getInstance(Context context) { + if (mInstance == null) { + mInstance = new RequestQueueService(context); + } + return mInstance; + } + + public RequestQueue getRequestQueue() { + if (mRequestQueue == null) { + // getApplicationContext() is key, it keeps you from leaking the + // Activity or BroadcastReceiver if someone passes one in. + mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext()); + } + return mRequestQueue; + } + + public String getUrl(String url){ + return String.format("%s%s", OpenLPURLBuilder.getInstance().getBaseUrl(), url ); + } + + public String getBasicAuth(){ + return OpenLPURLBuilder.getInstance().getBasicAuth(); + } + + public int getConnectionTimeout(){ + return OpenLPURLBuilder.getInstance().getConnectionTimeout(); + } + + public void addToRequestQueue(Request req) { + getRequestQueue().add(req); + } + + public ImageLoader getImageLoader() { + return mImageLoader; + } +} + diff --git a/app/src/main/java/org/openlp/android2/common/StateHolder.java b/app/src/main/java/org/openlp/android2/common/StateHolder.java new file mode 100644 index 0000000..ab26175 --- /dev/null +++ b/app/src/main/java/org/openlp/android2/common/StateHolder.java @@ -0,0 +1,22 @@ +package org.openlp.android2.common; + +import android.content.Context; + +/** + * Created by tim on 14/08/16. + */ +public class StateHolder { + private static StateHolder ourInstance = new StateHolder(); + private static Context context; + + public static StateHolder getInstance() { + return ourInstance; + } + + private StateHolder() { + } + + public void setContext(Context context) { + this.context = context; + } +} diff --git a/app/src/main/java/org/openlp/android2/dialogs/AlertDisplayDialog.java b/app/src/main/java/org/openlp/android2/dialogs/AlertDisplayDialog.java new file mode 100644 index 0000000..52f824e --- /dev/null +++ b/app/src/main/java/org/openlp/android2/dialogs/AlertDisplayDialog.java @@ -0,0 +1,105 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.dialogs; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.DialogInterface; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; +import org.openlp.android2.R; +import org.openlp.android2.api.Api; +import org.openlp.android2.common.JsonHelpers; +import org.openlp.android2.common.OpenLPDialog; + +public class AlertDisplayDialog extends OpenLPDialog { + private final String LOG_TAG = AlertDisplayDialog.class.getName(); + public AlertDialog dialog; + + /** + * The system calls this only when creating the layout in a dialog. + */ + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + // The only reason you might override this method when using onCreateView() is + // to modify any dialog characteristics. For example, the dialog includes a + // title by default, but your custom layout might not need it. So here you can + // remove the dialog title, but you must call the superclass to get the Dialog. + + context = getActivity(); + + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + // Get the layout inflater + LayoutInflater inflater = getActivity().getLayoutInflater(); + + // Inflate and set the layout for the dialog + // Pass null as the parent view because its going in the dialog layout + View view = inflater.inflate(R.layout.alert_display_dialog, null); + builder.setView(view); + + builder.setPositiveButton(R.string.cancel, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + AlertDisplayDialog.this.getDialog().cancel(); + } + }); + builder.setNegativeButton(R.string.process, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog1, int id) { + EditText text = (EditText) dialog.findViewById(R.id.alertText); + requestAlert(text.getText().toString()); + } + }); + dialog = builder.create(); + dialog.setOnShowListener(new DialogInterface.OnShowListener() { + @Override + public void onShow(DialogInterface dialogI) { + Button btnNegative = dialog.getButton(Dialog.BUTTON_NEGATIVE); + btnNegative.setTextSize(20); + Button btnPositive = dialog.getButton(Dialog.BUTTON_POSITIVE); + btnPositive.setTextSize(20); + } + }); + return dialog; + } + + @Override + public void onResume() { + super.onResume(); + Log.d(LOG_TAG, "Resuming..."); + } + + public void processUpdate(String response) { + Toast.makeText(context, "Alert Requested", Toast.LENGTH_SHORT).show(); + } + + public void requestAlert(String text) { + try { + String request = JsonHelpers.createRequestJSON("text", text); + triggerTextRequest(String.format("%s%s", Api.ALERT, request)); + Log.d(LOG_TAG, String.format("Setting list data. apiBase(%s), text(%s)", Api.ALERT, text)); + } catch (JsonHelpers.JSONHandlerException e) { + e.printStackTrace(); + Toast.makeText(context, "Request Failed", Toast.LENGTH_SHORT).show(); + } + } +} diff --git a/app/src/main/java/org/openlp/android2/dialogs/BlankDisplayDialog.java b/app/src/main/java/org/openlp/android2/dialogs/BlankDisplayDialog.java new file mode 100644 index 0000000..93fca1b --- /dev/null +++ b/app/src/main/java/org/openlp/android2/dialogs/BlankDisplayDialog.java @@ -0,0 +1,159 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.dialogs; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.DialogInterface; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; +import android.widget.RadioButton; + +import org.json.JSONException; +import org.json.JSONObject; +import org.openlp.android2.R; +import org.openlp.android2.api.Api; + +import org.openlp.android2.common.OpenLPDialog; + +public class BlankDisplayDialog extends OpenLPDialog { + private final String LOG_TAG = BlankDisplayDialog.class.getName(); + + public AlertDialog dialog; + RadioButton desktop; + RadioButton screen; + RadioButton theme; + RadioButton reset; + + /** + * The system calls this only when creating the layout in a dialog. + */ + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + // The only reason you might override this method when using onCreateView() is + // to modify any dialog characteristics. For example, the dialog includes a + // title by default, but your custom layout might not need it. So here you can + // remove the dialog title, but you must call the superclass to get the Dialog. + + context = getActivity(); + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + // Get the layout inflater + LayoutInflater inflater = getActivity().getLayoutInflater(); + + // Inflate and set the layout for the dialog + // Pass null as the parent view because its going in the dialog layout + View view = inflater.inflate(R.layout.blank_display_dialog, null); + builder.setView(view); + + reset = (RadioButton) view.findViewById(R.id.buttonReset); + reset.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + triggerTextRequest(Api.DISPLAY_SHOW); + } + }); + screen = (RadioButton) view.findViewById(R.id.buttonScreen); + screen.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + triggerTextRequest(Api.DISPLAY_BLANK); + } + }); + theme = (RadioButton) view.findViewById(R.id.buttonTheme); + theme.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + triggerTextRequest(Api.DISPLAY_THEME); + } + }); + desktop = (RadioButton) view.findViewById(R.id.buttonDesktop); + desktop.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + triggerTextRequest(Api.DISPLAY_DESKTOP); + } + }); + builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + BlankDisplayDialog.this.getDialog().cancel(); + } + }); + dialog = builder.create(); + dialog.setOnShowListener(new DialogInterface.OnShowListener() { + @Override + public void onShow(DialogInterface dialogI) { + Button btnNegative = dialog.getButton(Dialog.BUTTON_NEGATIVE); + btnNegative.setTextSize(20); + } + }); + return dialog; + } + + @Override + public void onResume() { + super.onResume(); + Log.d(LOG_TAG, "Resuming..."); + triggerTextRequest(Api.POLL_STATUS); + Log.d(LOG_TAG, "Resumed..."); + } + + public void processUpdate(String response) { + triggerTextRequest(Api.POLL_STATUS); + } + + public void populateDisplay(String json) { + Log.d(LOG_TAG, "populateDisplay : " + json ); + reset_display(); + try { + JSONObject item = new JSONObject(json).getJSONObject("results"); + if (item.getString("theme").equals("true")){ + theme.setChecked(true); + } else { + if (item.getString("blank").equals("true")){ + screen.setChecked(true); + } else{ + if (item.getString("display").equals("true")){ + desktop.setChecked(true); + } else{ + reset.setChecked(true); + } + } + } + } catch (JSONException e) { + Log.e(LOG_TAG, "Exception with Json = " + json); + e.printStackTrace(); + } + } + + public void errorDisplay(String responseString) { + Log.d(LOG_TAG, String.format("URL Error text %s", responseString)); + reset_display(); + } + + private void reset_display(){ + screen.setChecked(false); + theme.setChecked(false); + desktop.setChecked(false); + reset.setChecked(false); + } +} diff --git a/app/src/main/java/org/openlp/android2/dialogs/SearchSelectionDialog.java b/app/src/main/java/org/openlp/android2/dialogs/SearchSelectionDialog.java new file mode 100644 index 0000000..35d71fe --- /dev/null +++ b/app/src/main/java/org/openlp/android2/dialogs/SearchSelectionDialog.java @@ -0,0 +1,135 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2015 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.dialogs; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.DialogInterface; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.Button; +import android.widget.RadioButton; +import android.widget.Toast; +import org.openlp.android2.R; +import org.openlp.android2.api.Api; +import org.openlp.android2.common.JsonHelpers; +import org.openlp.android2.common.OpenLPDialog; + +public class SearchSelectionDialog extends OpenLPDialog { + private final String LOG_TAG = SearchSelectionDialog.class.getName(); + public AlertDialog dialog; + private String key; + private String plugin; + private String text; + private RadioButton sendLive; + private RadioButton addToService; + + /** + * The system calls this only when creating the layout in a dialog. + */ + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + // The only reason you might override this method when using onCreateView() is + // to modify any dialog characteristics. For example, the dialog includes a + // title by default, but your custom layout might not need it. So here you can + // remove the dialog title, but you must call the superclass to get the Dialog. + + key = getArguments().getString("key"); + plugin = getArguments().getString("plugin"); + text = getArguments().getString("text"); + + Log.d(LOG_TAG, String.format("onCreateDialog %s : %s : %s", key, plugin, text)); + + context = getActivity(); + + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + // Get the layout inflater + LayoutInflater inflater = getActivity().getLayoutInflater(); + + // Inflate and set the layout for the dialog + // Pass null as the parent view because its going in the dialog layout + View view = inflater.inflate(R.layout.search_action_dialog, null); + builder.setView(view); + + sendLive = (RadioButton) view.findViewById(R.id.buttonLive); + sendLive.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + createLive(); + SearchSelectionDialog.this.getDialog().cancel(); + } + }); + + addToService = (RadioButton) view.findViewById(R.id.buttonService); + addToService.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + createService(); + SearchSelectionDialog.this.getDialog().cancel(); + } + }); + + builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + SearchSelectionDialog.this.getDialog().cancel(); + } + }); + dialog = builder.create(); + dialog.setOnShowListener(new DialogInterface.OnShowListener() { + @Override + public void onShow(DialogInterface dialogI) { + Button btnNegative = dialog.getButton(Dialog.BUTTON_NEGATIVE); + btnNegative.setTextSize(20); + } + }); + return dialog; + } + + @Override + public void onResume() { + super.onResume(); + Log.d(LOG_TAG, "Resuming..."); + } + + public void createLive() { + try { + String request = JsonHelpers.createRequestJSON("id", text); + String url = String.format(Api.SEARCH_PLUGIN_LIVE, plugin.toLowerCase()); + triggerTextRequest(String.format("%s%s", url, request)); + Log.d(LOG_TAG, String.format("Setting list data. apiBase(%s), text(%s)", Api.SEARCH_PLUGIN_LIVE, request)); + } catch (JsonHelpers.JSONHandlerException e) { + e.printStackTrace(); + Toast.makeText(context, "Request Failed", Toast.LENGTH_SHORT).show(); + } + } + + public void createService() { + try { + String request = JsonHelpers.createRequestJSON("id", text); + String url = String.format(Api.SEARCH_PLUGIN_ADD, plugin.toLowerCase()); + triggerTextRequest(String.format("%s%s", url, request)); + Log.d(LOG_TAG, String.format("Setting list data. apiBase(%s), text(%s)", Api.SEARCH_PLUGIN_ADD, text)); + } catch (JsonHelpers.JSONHandlerException e) { + e.printStackTrace(); + Toast.makeText(context, "Request Failed", Toast.LENGTH_SHORT).show(); + } + } +} diff --git a/app/src/main/java/org/openlp/android2/fragments/AboutFragment.java b/app/src/main/java/org/openlp/android2/fragments/AboutFragment.java new file mode 100644 index 0000000..06c674a --- /dev/null +++ b/app/src/main/java/org/openlp/android2/fragments/AboutFragment.java @@ -0,0 +1,70 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.fragments; + +import android.app.Fragment; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; +import org.openlp.android2.R; + +import java.text.SimpleDateFormat; +import java.util.Date; + +public class AboutFragment extends Fragment { + + public AboutFragment() { + // Empty constructor required for fragment subclasses + } + + public static AboutFragment newInstance() { + return new AboutFragment(); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fragment_about, container, false); + + String date = new SimpleDateFormat("yyyy").format(new Date()); + + StringBuilder html = new StringBuilder(); + html.append(getString(R.string.about_display_1)); + html.append("\n"); + html.append(getString(R.string.about_display_2)); + html.append(" http://www.openlp.org"); + html.append("\n\n\n"); + html.append(getString(R.string.about_display_4)); + html.append(" © 2004-").append(date).append(" Raoul Snyman\n"); + html.append(getString(R.string.about_display_5)); + html.append(" © 2004-").append(date); + html.append("\nTim Bentley, Tomas Groth, Johan Mynhardt"); + html.append("\n\n\n"); + html.append(getString(R.string.about_display_6)); + html.append("\n"); + html.append(getString(R.string.about_display_7)); + html.append("\n"); + html.append(getString(R.string.about_display_8)); + + ((TextView) view.findViewById(R.id.about_text)).setText(html); + + return view; + } +} \ No newline at end of file diff --git a/app/src/main/java/org/openlp/android2/fragments/HomeFragment.java b/app/src/main/java/org/openlp/android2/fragments/HomeFragment.java new file mode 100644 index 0000000..cc51a62 --- /dev/null +++ b/app/src/main/java/org/openlp/android2/fragments/HomeFragment.java @@ -0,0 +1,58 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.fragments; + +import android.app.Fragment; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import org.openlp.android2.R; + + +public class HomeFragment extends Fragment { + private View displayView; + + public HomeFragment() { + // Empty constructor required for fragment subclasses + } + + public static HomeFragment newInstance() { + return new HomeFragment(); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { + displayView = inflater.inflate(R.layout.fragment_home, container, false); + displayIcon(); + return displayView; + } + + @Override + public void onResume() { + super.onResume(); + displayIcon(); + } + + private void displayIcon(){ + int imageId = getResources().getIdentifier("openlp_splash_screen","drawable", getActivity().getPackageName()); + ((ImageView) displayView.findViewById(R.id.home_image)).setImageResource(imageId); + } +} diff --git a/app/src/main/java/org/openlp/android2/fragments/LiveListFragment.java b/app/src/main/java/org/openlp/android2/fragments/LiveListFragment.java new file mode 100644 index 0000000..48403c8 --- /dev/null +++ b/app/src/main/java/org/openlp/android2/fragments/LiveListFragment.java @@ -0,0 +1,189 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.fragments; + +import android.content.Context; +import android.graphics.Color; +import android.graphics.Typeface; +import android.os.Bundle; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; +import android.text.Html; +import android.util.Log; +import android.util.TypedValue; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ListAdapter; +import android.widget.SimpleAdapter; +import android.widget.TextView; +import android.widget.Toast; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.openlp.android2.R; +import org.openlp.android2.api.Api; +import org.openlp.android2.common.JsonHelpers; +import org.openlp.android2.common.OpenLPFragment; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class LiveListFragment extends OpenLPFragment { + + private int selected = 0; + + private String LOG_TAG = LiveListFragment.class.getName(); + + public static LiveListFragment newInstance() { + return new LiveListFragment(); + } + + /** + * Mandatory empty constructor for the fragment manager to instantiate the + * fragment (e.g. upon screen orientation changes). + */ + public LiveListFragment() { + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + context = getActivity(); + urlcalled = Api.LIVE_TEXT; + return super.onCreateView(inflater, container, savedInstanceState); + } + + @Override + public void populateDisplay(String json, boolean notInError) { + Log.i(LOG_TAG, "populate_display - entry"); + List> aList = new ArrayList>(); + selected = 0; + + if (notInError) { + + try { + JSONArray items = new JSONObject(json).getJSONObject("results").getJSONArray("slides"); + for (int i = 0; i < items.length(); ++i) { + JSONObject item = items.getJSONObject(i); + + HashMap hm = new HashMap(); + hm.put("tag", item.getString("tag")); + if (item.getString("selected").equals("true")) { + selected = i; + } + hm.put("liveListNormal", Html.fromHtml(item.getString("html")).toString()); + aList.add(hm); + } + } catch (JSONException e) { + Log.e(LOG_TAG,json); + e.printStackTrace(); + } + } + + // Keys used in Hashmap + String[] from = {"line", "tag", "liveListNormal", "liveListSelected"}; + + // Ids of views in live_list_fragment + int[] to = {R.id.line, R.id.tag, R.id.liveListNormal, R.id.liveListSelected}; + + SharedPreferences prefs = context.getSharedPreferences( + context.getString(R.string.key_shared_preferences), + Context.MODE_PRIVATE); + + final int size = Integer.parseInt(prefs.getString( + context.getString(R.string.key_text_size), + String.valueOf(context.getResources().getInteger( + R.integer.textSizeDefaultValue)))); + + // Instantiating an adapter to store each items + ListAdapter adapter = new SimpleAdapter(getActivity().getBaseContext(), aList, + R.layout.fragment_livelist, from, to) { + public View getView(int position, View convertView, ViewGroup parent) { + View view = super.getView(position, convertView, parent); + // TextView line = (TextView) view.findViewById(R.id.line); + TextView text1 = (TextView) view.findViewById(R.id.tag); + if (text1 != null) { + text1.setTextSize(TypedValue.COMPLEX_UNIT_SP, size); + } + TextView text2 = (TextView) view.findViewById(R.id.liveListNormal); + if (text2 != null) { + text2.setTextSize(TypedValue.COMPLEX_UNIT_SP, size); + if (selected == position) { + text2.setTypeface(null, Typeface.BOLD_ITALIC); + // line.setBackgroundColor(0xffffff); + } else { + text2.setTypeface(null, Typeface.NORMAL); + // line.setBackgroundColor(0xffffff); + } + } + return view; + + } + }; + setListAdapter(adapter); + + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + Boolean autoscroll = + sharedPrefs.getBoolean(context.getString(R.string.key_auto_scroll), false); + + if (autoscroll){ + getListView().setSelection(selected - 1); + } + Log.i(LOG_TAG, "populate_display - exit"); + } + + @Override + public void refreshDisplay() { + Log.d(LOG_TAG, "Resuming..."); + triggerTextRequest(Api.LIVE_TEXT); + } + + @Override + public void onResume() { + super.onResume(); + Log.d(LOG_TAG, "Resuming..."); + triggerTextRequest(Api.LIVE_TEXT); + Log.d(LOG_TAG, "Resumed..."); + } + + public void processUpdate(String response, boolean inError) { + triggerTextRequest(Api.LIVE_TEXT); + + } + + public void itemClicked(int position) { + try { + String request = JsonHelpers.createRequestJSON("id", Integer.toString(position)); + triggerTextRequest(String.format("%s%s", Api.LIVE_SET, request)); + Log.d(LOG_TAG, String.format("Setting list data. apiBase(%s), position(%s)", + Api.LIVE_SET, position)); + } catch (JsonHelpers.JSONHandlerException e) { + e.printStackTrace(); + Toast.makeText(getActivity().getBaseContext(), "Request Failed", Toast.LENGTH_SHORT).show(); + } + } + +} diff --git a/app/src/main/java/org/openlp/android2/fragments/LiveWebFragment.java b/app/src/main/java/org/openlp/android2/fragments/LiveWebFragment.java new file mode 100644 index 0000000..53ced25 --- /dev/null +++ b/app/src/main/java/org/openlp/android2/fragments/LiveWebFragment.java @@ -0,0 +1,33 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.fragments; + +import org.openlp.android2.api.Api; + +public class LiveWebFragment extends WebFragment { + public LiveWebFragment() { + super(); + curURL = Api.LIVE_VIEW; + } + + public static LiveWebFragment newInstance() { + return new LiveWebFragment(); + } +} + diff --git a/app/src/main/java/org/openlp/android2/fragments/NavigationDrawerFragment.java b/app/src/main/java/org/openlp/android2/fragments/NavigationDrawerFragment.java new file mode 100644 index 0000000..f6039bc --- /dev/null +++ b/app/src/main/java/org/openlp/android2/fragments/NavigationDrawerFragment.java @@ -0,0 +1,344 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.fragments; + +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Build; +import android.support.v7.app.ActionBarActivity; +import android.app.Activity; +import android.support.v7.app.ActionBar; +import android.support.v4.app.Fragment; +import android.support.v4.app.ActionBarDrawerToggle; +import android.support.v4.view.GravityCompat; +import android.support.v4.widget.DrawerLayout; +import android.content.SharedPreferences; +import android.content.res.Configuration; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ListAdapter; +import android.widget.ListView; +import android.widget.SimpleAdapter; + +import org.openlp.android2.R; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * Fragment used for managing interactions for and presentation of a navigation drawer. + * See the + * design guidelines for a complete explanation of the behaviors implemented here. + */ +public class NavigationDrawerFragment extends Fragment { + + /** + * Remember the position of the selected item. + */ + private static final String STATE_SELECTED_POSITION = "selected_navigation_drawer_position"; + + /** + * Per the design guidelines, you should show the drawer on launch until the user manually + * expands it. This shared preference tracks this. + */ + private static final String PREF_USER_LEARNED_DRAWER = "navigation_drawer_learned"; + + /** + * A pointer to the current callbacks instance (the Activity). + */ + private NavigationDrawerCallbacks mCallbacks; + + /** + * Helper component that ties the action bar to the navigation drawer. + */ + private ActionBarDrawerToggle mDrawerToggle; + + private DrawerLayout mDrawerLayout; + private ListView mDrawerListView; + private View mFragmentContainerView; + + private int mCurrentSelectedPosition = 0; + private boolean mFromSavedInstanceState; + private boolean mUserLearnedDrawer; + + public NavigationDrawerFragment() { + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Read in the flag indicating whether or not the user has demonstrated awareness of the + // drawer. See PREF_USER_LEARNED_DRAWER for details. + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity()); + mUserLearnedDrawer = sp.getBoolean(PREF_USER_LEARNED_DRAWER, false); + + if (savedInstanceState != null) { + mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION); + mFromSavedInstanceState = true; + } + + // Select either the default item (0) or the last selected item. + selectItem(mCurrentSelectedPosition); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + // Indicate that this fragment would like to influence the set of actions in the action bar. + setHasOptionsMenu(true); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + mDrawerListView = (ListView) inflater.inflate( + R.layout.fragment_navigation_drawer, container, false); + mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + selectItem(position); + } + }); + + List> aList = new ArrayList>(); + HashMap hm = new HashMap(); + hm.put("title", getString(R.string.home)); + hm.put("icon", Integer.toString(R.drawable.ic_home_black)); + aList.add(hm); + + HashMap hm1 = new HashMap(); + hm1.put("title", getString(R.string.service_list)); + hm1.put("icon", Integer.toString(R.drawable.ic_view_list_black)); + aList.add(hm1); + + HashMap hm2 = new HashMap(); + hm2.put("title", getString(R.string.live_list)); + hm2.put("icon", Integer.toString(R.drawable.ic_list_black)); + aList.add(hm2); + + HashMap hm3 = new HashMap(); + hm3.put("title", getString(R.string.stage_view)); + hm3.put("icon", Integer.toString(R.drawable.ic_live_tv_black)); + aList.add(hm3); + + HashMap hm4 = new HashMap(); + hm4.put("title", getString(R.string.live_view)); + hm4.put("icon", Integer.toString(R.drawable.ic_ondemand_video_black)); + aList.add(hm4); + + HashMap hm5 = new HashMap(); + hm5.put("title", getString(R.string.action_search)); + hm5.put("icon", Integer.toString(R.drawable.ic_search_black)); + aList.add(hm5); + + // Keys used in Hashmap + String[] from = {"icon", "title"}; + + // Ids of views in service_list_fragment + int[] to = {R.id.drawer_icon, R.id.drawer_text}; + + ListAdapter adapter = new SimpleAdapter(getActivity().getBaseContext(), aList, + R.layout.fragment_navigation_drawer_list, from, to); + + mDrawerListView.setAdapter(adapter); + mDrawerListView.setItemChecked(mCurrentSelectedPosition, true); + return mDrawerListView; + } + + public boolean isDrawerOpen() { + return mDrawerLayout != null && mDrawerLayout.isDrawerOpen(mFragmentContainerView); + } + + /** + * Users of this fragment must call this method to set up the navigation drawer interactions. + * + * @param fragmentId The android:id of this fragment in its activity's layout. + * @param drawerLayout The DrawerLayout containing this fragment's UI. + */ + public void setUp(int fragmentId, DrawerLayout drawerLayout) { + mFragmentContainerView = getActivity().findViewById(fragmentId); + mDrawerLayout = drawerLayout; + + // set a custom shadow that overlays the main content when the drawer opens + mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); + // set up the drawer's list view with items and click listener + + ActionBar actionBar = getActionBar(); + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setHomeButtonEnabled(true); + // OpenLP Blue + actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#4d7bd8"))); + getActionBar().setDisplayHomeAsUpEnabled(true); // also required + if (Build.VERSION.SDK_INT >= 18) { + getActionBar().setHomeAsUpIndicator( + getResources().getDrawable(R.drawable.ic_menu_white)); + } + + // ActionBarDrawerToggle ties together the the proper interactions + // between the navigation drawer and the action bar app icon. + mDrawerToggle = new ActionBarDrawerToggle( + getActivity(), /* host Activity */ + mDrawerLayout, /* DrawerLayout object */ + R.drawable.ic_menu_white, /* nav drawer image to replace 'Up' caret */ + R.string.navigation_drawer_open, /* "open drawer" description for accessibility */ + R.string.navigation_drawer_close /* "close drawer" description for accessibility */ + ) { + @Override + public void onDrawerClosed(View drawerView) { + super.onDrawerClosed(drawerView); + if (!isAdded()) { + return; + } + + getActivity().supportInvalidateOptionsMenu(); // calls onPrepareOptionsMenu() + } + + @Override + public void onDrawerOpened(View drawerView) { + super.onDrawerOpened(drawerView); + if (!isAdded()) { + return; + } + + if (!mUserLearnedDrawer) { + // The user manually opened the drawer; store this flag to prevent auto-showing + // the navigation drawer automatically in the future. + mUserLearnedDrawer = true; + SharedPreferences sp = PreferenceManager + .getDefaultSharedPreferences(getActivity()); + sp.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply(); + } + + getActivity().supportInvalidateOptionsMenu(); // calls onPrepareOptionsMenu() + } + }; + + // If the user hasn't 'learned' about the drawer, open it to introduce them to the drawer, + // per the navigation drawer design guidelines. + if (!mUserLearnedDrawer && !mFromSavedInstanceState) { + mDrawerLayout.openDrawer(mFragmentContainerView); + } + + // Defer code dependent on restoration of previous instance state. + mDrawerLayout.post(new Runnable() { + @Override + public void run() { + mDrawerToggle.syncState(); + } + }); + + mDrawerLayout.setDrawerListener(mDrawerToggle); + } + + private void selectItem(int position) { + mCurrentSelectedPosition = position; + if (mDrawerListView != null) { + mDrawerListView.setItemChecked(position, true); + } + if (mDrawerLayout != null) { + mDrawerLayout.closeDrawer(mFragmentContainerView); + } + if (mCallbacks != null) { + mCallbacks.onNavigationDrawerItemSelected(position); + } + } + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + try { + mCallbacks = (NavigationDrawerCallbacks) activity; + } catch (ClassCastException e) { + throw new ClassCastException("Activity must implement NavigationDrawerCallbacks."); + } + } + + @Override + public void onDetach() { + super.onDetach(); + mCallbacks = null; + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putInt(STATE_SELECTED_POSITION, mCurrentSelectedPosition); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + // Forward the new configuration the drawer toggle component. + mDrawerToggle.onConfigurationChanged(newConfig); + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + // If the drawer is open, show the global app actions in the action bar. See also + // showGlobalContextActionBar, which controls the top-left area of the action bar. + if (mDrawerLayout != null && isDrawerOpen()) { + inflater.inflate(R.menu.global, menu); + showGlobalContextActionBar(); + } + super.onCreateOptionsMenu(menu, inflater); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (mDrawerToggle.onOptionsItemSelected(item)) { + return true; + } + + return super.onOptionsItemSelected(item); + } + + /** + * Per the navigation drawer design guidelines, updates the action bar to show the global app + * 'context', rather than just what's in the current screen. + */ + private void showGlobalContextActionBar() { + ActionBar actionBar = getActionBar(); + actionBar.setDisplayShowTitleEnabled(true); + actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); + actionBar.setTitle(R.string.app_name); + } + + private ActionBar getActionBar() { + return ((ActionBarActivity) getActivity()).getSupportActionBar(); + } + + /** + * Callbacks interface that all activities using this fragment must implement. + */ + public static interface NavigationDrawerCallbacks { + /** + * Called when an item in the navigation drawer is selected. + */ + void onNavigationDrawerItemSelected(int position); + } +} diff --git a/app/src/main/java/org/openlp/android2/fragments/SearchFragment.java b/app/src/main/java/org/openlp/android2/fragments/SearchFragment.java new file mode 100644 index 0000000..f652d57 --- /dev/null +++ b/app/src/main/java/org/openlp/android2/fragments/SearchFragment.java @@ -0,0 +1,357 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.fragments; + +import android.app.DialogFragment; +import android.app.Fragment; +import android.content.Context; +import android.os.Bundle; +import android.util.Log; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.EditText; +import android.widget.ListView; +import android.widget.Spinner; +import android.widget.TextView; +import android.widget.Toast; + +import com.android.volley.AuthFailureError; +import com.android.volley.ClientError; +import com.android.volley.DefaultRetryPolicy; +import com.android.volley.NetworkError; +import com.android.volley.NoConnectionError; +import com.android.volley.ParseError; +import com.android.volley.Request; +import com.android.volley.Response; +import com.android.volley.ServerError; +import com.android.volley.TimeoutError; +import com.android.volley.VolleyError; +import com.android.volley.toolbox.StringRequest; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.openlp.android2.R; +import org.openlp.android2.api.Api; +import org.openlp.android2.common.JsonHelpers; + +import org.openlp.android2.common.RequestQueueService; +import org.openlp.android2.dialogs.SearchSelectionDialog; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + + */ +public class SearchFragment extends Fragment { + + private final String LOG_TAG = SearchFragment.class.getName(); + private Spinner spinner; + public Context context; + protected String calledURL; + protected String updateUrl; + protected String searchedPlugin; + protected Map pluginMap = new HashMap(); + + public SearchFragment() { + Log.d(LOG_TAG, "Constructor"); + } + + public static SearchFragment newInstance() { + SearchFragment fragment = new SearchFragment(); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + context = getActivity(); + updateUrl = Api.SEARCHABLE_PLUGINS; + View view = inflater.inflate(R.layout.fragment_search, container, false); + spinner = (Spinner) view.findViewById(R.id.search_spinner); + triggerTextRequest(Api.SEARCHABLE_PLUGINS); + + // Add search listener to text field + final EditText editText = (EditText) view.findViewById(R.id.search_text); + editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView tv, int actionId, KeyEvent event) { + if (actionId == EditorInfo.IME_ACTION_SEARCH) { + // Now close the keyboard as finished with + View view = getActivity().getCurrentFocus(); + if (view != null) { + InputMethodManager imm = + (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + searchedPlugin = pluginMap.get(spinner.getSelectedItem().toString()); + requestSearch(tv.getText().toString()); + return true; + } + return false; + } + }); + spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + /** + * Called when a new item is selected (in the Spinner) + */ + public void onItemSelected(AdapterView parent, View view, + int pos, long id) { + editText.setText(""); + } + public void onNothingSelected(AdapterView parent) { + // Do nothing, just another required interface callback + } + + }); + return view; + } + + @Override + public void onDetach() { + super.onDetach(); + } + + private void populatePluginList(String response, Boolean notInError) { + Log.i(LOG_TAG, "populatePluginList - entry"); + List categories = new ArrayList(); + pluginMap.clear(); + + if (notInError) { + try { + JSONArray items = new JSONObject(response).getJSONObject("results").getJSONArray("items"); + for (int i = 0; i < items.length(); ++i) { + JSONArray item = items.getJSONArray(i); + categories.add(item.get(1).toString()); + pluginMap.put(item.get(1).toString(), item.get(0).toString()); + } + } catch (JSONException e) { + Log.e(LOG_TAG, response); + e.printStackTrace(); + } + ArrayAdapter LTRadapter = new ArrayAdapter(getActivity(), + R.layout.spinner_list_item, categories); + LTRadapter.setDropDownViewResource(R.layout.spinner_dropdown_item); + spinner.setAdapter(LTRadapter); + Log.i(LOG_TAG, "populatePluginList - exit"); + } + } + + protected void triggerTextRequest(String urlbase) { + Log.d(LOG_TAG, "Trigger Request for url " + urlbase); + String url = RequestQueueService.getInstance(this.context).getUrl(urlbase); + calledURL = urlbase; + + StringRequest request = new StringRequest( + Request.Method.GET, + url, + listener, + errorListener) { + + @Override + public Map getHeaders() throws AuthFailureError { + return createBasicAuthHeader("user", "passwd"); + } + }; + //Set a retry policy in case of SocketTimeout & ConnectionTimeout Exceptions. + // Volley does retry for you if you have specified the policy. + request.setRetryPolicy(new DefaultRetryPolicy( + RequestQueueService.getInstance(this.context).getConnectionTimeout(), + DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); + request.setTag("OpenLP"); + RequestQueueService.getInstance(this.context).addToRequestQueue(request); + } + + Map createBasicAuthHeader(String username, String password) { + Map headers = new HashMap(); + headers.put("Authorization", RequestQueueService.getInstance(context).getBasicAuth()); + + return headers; + } + + Response.Listener listener = new Response.Listener() { + @Override + public void onResponse(String response) { + if (calledURL.equals(updateUrl)) { + populatePluginList(response, true); + } else { + populateListDisplay(response, true); + } + } + }; + + Response.ErrorListener errorListener = new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + Log.d(LOG_TAG, String.format("Call response error = %s", error.toString())); + if (error instanceof NetworkError) { + } else if (error instanceof ClientError) { + } else if (error instanceof ServerError) { + } else if (error instanceof AuthFailureError) { + Toast.makeText(context, R.string.httpreturn_unauthorised, + Toast.LENGTH_LONG).show(); + } else if (error instanceof ParseError) { + } else if (error instanceof NoConnectionError) { + } else if (error instanceof TimeoutError) { + } + Toast.makeText(context, R.string.unable, + Toast.LENGTH_LONG).show(); + + } + }; + + public void requestSearch(String text) { + updateUrl = Api.SEARCH_PLUGIN_FORMATTED; + try { + String request = JsonHelpers.createRequestJSON("text", text); + String url = String.format(Api.SEARCH_PLUGIN_FORMATTED, searchedPlugin); + triggerTextRequest(String.format("%s%s", url, request)); + Log.d(LOG_TAG, String.format("Search request. apiBase(%s), text(%s)", searchedPlugin, text)); + } catch (JsonHelpers.JSONHandlerException e) { + e.printStackTrace(); + Toast.makeText(context, "Search Request Failed", Toast.LENGTH_SHORT).show(); + } + } + + public void populateListDisplay(String json, boolean notInError) { + Log.i(LOG_TAG, "populateListDisplay - entry"); + ListView list = (ListView) getActivity().findViewById(R.id.searchListView); + final ArrayList listitems = new ArrayList(); + if (notInError) { + try { + JSONArray items = new JSONObject(json).getJSONObject("results").getJSONArray("items"); + Log.d(LOG_TAG,items.toString()); + for (int i = 0; i < items.length(); ++i) { + JSONArray item = items.getJSONArray(i); + listitems.add(item); + } + } catch (JSONException e) { + Log.e(LOG_TAG, json); + e.printStackTrace(); + } + } + + final StableArrayAdapter adapter = new StableArrayAdapter(context, + android.R.layout.simple_list_item_1, + listitems); + + + list.setAdapter(adapter); + list.setOnItemClickListener(new AdapterView.OnItemClickListener() { + + @Override + public void onItemClick(AdapterView parent, final View view, + int position, long id) { + final JSONArray item = (JSONArray) parent.getItemAtPosition(position); + //Toast.makeText(context, "Item Pressed " + String.valueOf(position) + item, + // Toast.LENGTH_SHORT).show(); + String it = ""; + try { + Log.i(LOG_TAG, "list.setOnItemClickListener" + item); + it = item.get(0).toString(); + } catch (JSONException e) { + e.printStackTrace(); + } + Bundle args = new Bundle(); + args.putString("plugin", searchedPlugin); + args.putString("text", it); + args.putString("key", Long.toString(id)); + DialogFragment SSDFragment = new SearchSelectionDialog(); + SSDFragment.setArguments(args); + SSDFragment.show(getFragmentManager(), "TAG"); + + } + }); + Log.i(LOG_TAG, "populateListDisplay - exit"); + } + + public class StableArrayAdapter extends ArrayAdapter { + + HashMap mIdMap = new HashMap(); + + public StableArrayAdapter(Context context, + int textViewResourceId, + List objects) { + super(context, textViewResourceId, objects); + + for (int i = 0; i < objects.size(); ++i) { + JSONArray item = objects.get(i); + try { + mIdMap.put(item.get(1).toString(), i); + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + // Get the data item for this position + //User user = getItem(position); + String item = null; + try { + item = getItem(position).get(1).toString(); + } catch (JSONException e) { + e.printStackTrace(); + } + // Check if an existing view is being reused, otherwise inflate the view + if (convertView == null) { + convertView = LayoutInflater.from(getContext()).inflate(R.layout.search_result_row, + parent, false); + } + // Lookup view for data population + TextView tvItem = (TextView) convertView.findViewById(R.id.searchListRow); + // Populate the data into the template view using the data object + tvItem.setText(item); + // Return the completed view to render on screen + return convertView; + } + + @Override + public long getItemId(int position) { + String item = null; + try { + item = getItem(position).get(1).toString(); + } catch (JSONException e) { + e.printStackTrace(); + } + return mIdMap.get(item); + } + + @Override + public boolean hasStableIds() { + return true; + } + + } + +} diff --git a/app/src/main/java/org/openlp/android2/fragments/ServiceListFragment.java b/app/src/main/java/org/openlp/android2/fragments/ServiceListFragment.java new file mode 100644 index 0000000..1be47b0 --- /dev/null +++ b/app/src/main/java/org/openlp/android2/fragments/ServiceListFragment.java @@ -0,0 +1,201 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.fragments; + +import android.app.Activity; +import android.content.Context; +import android.content.SharedPreferences; +import android.graphics.Color; +import android.graphics.Typeface; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.util.Log; +import android.util.TypedValue; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.*; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.openlp.android2.OpenLP; +import org.openlp.android2.R; + +import org.openlp.android2.api.Api; +import org.openlp.android2.common.JsonHelpers; +import org.openlp.android2.common.OpenLPFragment; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + + +public class ServiceListFragment extends OpenLPFragment { + + private final String LOG_TAG = ServiceListFragment.class.getName(); + private int selected = 0; + + public ServiceListFragment() { + } + + public static ServiceListFragment newInstance() { + ServiceListFragment fragment = new ServiceListFragment(); + return fragment; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + context = getActivity(); + urlcalled = Api.SERVICE_LIST; + return super.onCreateView(inflater, container, savedInstanceState); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + } + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + } + + @Override + public void onDetach() { + super.onDetach(); + } + + @Override + public void refreshDisplay() { + Log.d(LOG_TAG, "Resuming..."); + triggerTextRequest(Api.SERVICE_LIST); + } + + @Override + public void onResume() { + super.onResume(); + Log.d(LOG_TAG, "Resuming..."); + triggerTextRequest(Api.SERVICE_LIST); + Log.d(LOG_TAG, "Resumed..."); + } + + public void processUpdate(String response, boolean inError) { + triggerTextRequest(Api.SERVICE_LIST); + ((OpenLP) getActivity()).refreshLiveFragment(R.id.container_right); + } + + @Override + public void populateDisplay(String json, boolean notInError) { + Log.i(LOG_TAG, "populate_display - entry"); + List> aList = new ArrayList>(); + + if (notInError) { + try { + JSONArray items = new JSONObject(json).getJSONObject("results").getJSONArray("items"); + + for (int i = 0; i < items.length(); ++i) { + JSONObject item = items.getJSONObject(i); + + HashMap hm = new HashMap(); + if (item.getString("plugin").equals("songs")) { + hm.put("icon", Integer.toString(R.drawable.ic_my_library_music)); + } else if (item.getString("plugin").equals("bibles")) { + hm.put("icon", Integer.toString(R.drawable.ic_my_library_books)); + } else if (item.getString("plugin").equals("media")) { + hm.put("icon", Integer.toString(R.drawable.ic_local_movies)); + } else if (item.getString("plugin").equals("presentations")) { + hm.put("icon", Integer.toString(R.drawable.ic_video_collection)); + } else if (item.getString("plugin").equals("images")) { + hm.put("icon", Integer.toString(R.drawable.ic_image)); + } else { + hm.put("icon", Integer.toString(R.drawable.ic_edit)); + } + if (item.getString("selected").equals("true")) { + selected = i; + } + hm.put("title", item.getString("title")); + aList.add(hm); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } + + // Keys used in Hashmap + String[] from = {"line","icon", "title"}; + + // Ids of views in service_list_fragment + int[] to = {R.id.servicelistLine, R.id.icon, R.id.serviceListText}; + + SharedPreferences prefs = context.getSharedPreferences( + context.getString(R.string.key_shared_preferences), + Context.MODE_PRIVATE); + + final int size = Integer.parseInt(prefs.getString( + context.getString(R.string.key_text_size), + String.valueOf(context.getResources().getInteger( + R.integer.textSizeDefaultValue)))); + + // Instantiating an adapter to store each items + ListAdapter adapter = new SimpleAdapter(getActivity().getBaseContext(), aList, + R.layout.fragment_service_list, from, to) { + + public View getView(int position, View convertView, ViewGroup parent) { + + View view = super.getView(position, convertView, parent); + + TextView line = (TextView) view.findViewById(R.id.servicelistLine); + TextView text1 = (TextView) view.findViewById(R.id.serviceListText); + text1.setTextSize(TypedValue.COMPLEX_UNIT_SP, size); + if (selected == position) { + text1.setTextColor(Color.parseColor("#000000")); + text1.setTypeface(null, Typeface.BOLD_ITALIC); + line.setBackgroundColor(0xffffff); + } else{ + text1.setTypeface(null, Typeface.NORMAL); + line.setBackgroundColor(0xffffff); + } + return view; + } + }; + + setListAdapter(adapter); + + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + Boolean autoscroll = + sharedPrefs.getBoolean(context.getString(R.string.key_auto_scroll), false); + + if (autoscroll){ + getListView().setSelection(selected - 1); + } + Log.i(LOG_TAG, "populate_display - exit"); + } + + public void itemClicked(int position) { + try { + String request = JsonHelpers.createRequestJSON("id", Integer.toString(position)); + triggerTextRequest(String.format("%s%s", Api.SERVICE_SET, request)); + Log.d(LOG_TAG, String.format("Setting list data. apiBase(%s), position(%s)", + Api.SERVICE_SET, position)); + } catch (JsonHelpers.JSONHandlerException e) { + e.printStackTrace(); + Toast.makeText(context, "Request Failed", Toast.LENGTH_SHORT).show(); + } + } +} diff --git a/app/src/main/java/org/openlp/android2/fragments/StageWebFragment.java b/app/src/main/java/org/openlp/android2/fragments/StageWebFragment.java new file mode 100644 index 0000000..64a0ef9 --- /dev/null +++ b/app/src/main/java/org/openlp/android2/fragments/StageWebFragment.java @@ -0,0 +1,34 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.fragments; + +import org.openlp.android2.api.Api; + +public class StageWebFragment extends WebFragment { + + public StageWebFragment(){ + super(); + curURL = Api.STAGE_VIEW; + } + + + public static StageWebFragment newInstance() { + return new StageWebFragment(); + } +} diff --git a/app/src/main/java/org/openlp/android2/fragments/WebFragment.java b/app/src/main/java/org/openlp/android2/fragments/WebFragment.java new file mode 100644 index 0000000..20400d9 --- /dev/null +++ b/app/src/main/java/org/openlp/android2/fragments/WebFragment.java @@ -0,0 +1,78 @@ +/****************************************************************************** + * OpenLP - Open Source Lyrics Projection * + * --------------------------------------------------------------------------- * + * Copyright (c) 2011-2016 OpenLP Android Developers * + * --------------------------------------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the Free * + * Software Foundation; version 2 of the License. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * + * more details. * + * * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., 59 * + * Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *******************************************************************************/ +package org.openlp.android2.fragments; + +import android.app.Fragment; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.webkit.WebView; +import android.webkit.WebViewClient; +import org.openlp.android2.R; +import org.openlp.android2.common.OpenLPURLBuilder; + +public class WebFragment extends Fragment { + + protected String curURL; + private WebView webview; + + public WebFragment(){ + super(); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { + + View view = inflater.inflate(R.layout.fragment_web, container, false); + + if (curURL != null) { + webview = (WebView) view.findViewById(R.id.webPage); + webview.getSettings().setJavaScriptEnabled(true); + webview.getSettings().setBuiltInZoomControls(true); + webview.getSettings().setLoadWithOverviewMode(true); + webview.getSettings().setUseWideViewPort(true); + webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); + webview.setScrollbarFadingEnabled(true); + webview.setWebViewClient(new webClient()); + webview.loadUrl(String.format("%s%s", OpenLPURLBuilder.getInstance().getBaseUrl(), curURL)); + } + return view; + } + + @Override + public void onDestroyView() { + if (webview != null) { + webview.destroy(); + } + super.onDestroyView(); + } + + public class webClient extends WebViewClient { + @Override + public boolean shouldOverrideUrlLoading(WebView view, String url) { + return false; + } + } +} diff --git a/app/src/main/res/drawable-hdpi/drawer_shadow.9.png b/app/src/main/res/drawable-hdpi/drawer_shadow.9.png new file mode 100644 index 0000000000000000000000000000000000000000..236bff558af07faa3921ba35e2515edf62d04bb9 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^JV0#3!3HEVSgovp6icy_X9x!n)NrJ90QsB+9+AZi z4BVX{%xHe{^je^xv!{z=h{y5dAOHW`Gf#YA@1xt%!;wf}xDZ8r06~O;3O<1dmQq3~6#5XQw8^5`w9qb^<`pDL5+#f% zLHEIhJ2!5eY(~Fshs%(E=geHe`~B@NpT(TZc zEgevo!FjO_uA>232Q?5Z%Rv=Y&^I~gRu$Bff@VP#1VtHWPaU)^1AS2keUgF7>Y%SO z&@XjRRR;QtnK$Olemjr@4VeQ)nDb(b%;|%)|3ePsKn~SsCtZTy@ua)wD?<&7Q7)F6*2UngEx+9ZUcK literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_arrow_back_white.png b/app/src/main/res/drawable-hdpi/ic_arrow_back_white.png new file mode 100644 index 0000000000000000000000000000000000000000..de7a9d2ef76bde4a689ab1823408db74b06f2c14 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUt7Ec$)kcwMxXE<^-CPzd^tY0e}C})|B2v>Q-G=&7FefE%TDtT)2*-A(w1>b{Ct$L#@d?7 zDe_mh>^z+>^fZ3U&Qtyw&1M;k7oLsVY-0ZY`JaWp*9{yhTA!E~b|jmeac%Q^(c*V- j-jqbSub=K~fy`8z!`sQvCZ(!25ybO!^>bP0l+XkKvJOaW literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_arrow_forward_white.png b/app/src/main/res/drawable-hdpi/ic_arrow_forward_white.png new file mode 100644 index 0000000000000000000000000000000000000000..3d589293fa78aa8a08f9e127d6f85760fce16b88 GIT binary patch literal 207 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 fTfgBkiO*~+jBK004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00HeuL_t(&-tF4GFGEon$MJ6s72-ee9}sNJMlq0hTbf81 z#A_@VCG5l`1_@yxW%ROll9mV}MuTFqp!LpDl%DoJr`nS%d7duk+>_Ju$+^FK+B6M} z;jbz|K?+ikg8T^zGRz*gycgm1K#WmJ%?k&NCv_!T)D?Lvj%gw;+o7NX4%DzsPzLIA zzyYYGUj_;}OK?aAs&WRZmVqjqfy(q?RFHxcq#y+;NI?oxkb?dP=#F+0eggHd$)JBg zvxI>qmi+;WFrI1+aOwuMpJVKrE?!dY1ReHCvIp(ZKsd|T3!Pl0^-t}SWD7bc#4Fud zc4>mhuPfF`vI9NP#to39h0Bc5Ff)cZmPxV$4RMfa#c3t^W9*Dx;~dK**?<;VOzTDI zN$cIy#%-2)R!J(cc(#7O?Hbcx?cSU>#v(~l&<*W8W?Y?Q1AsZ!J?4v(Wcn5MJ>$w7 z&FmWImlGjLBhQ{IRS~5;bN&2wXetW_6131M;E0nX0qroAWAwss0Q@0I-k@_rhMSmQ z36kUm`aB8?Q-U+e3-o;y7N$ItBzww=SAl%bA^nn{UXRXJPs%_i&Oj$J(5f@giVQT* zu@lZA3(^cVapZv0%#-vfi&M`iF;nOY66Gi(G?+gF1NwIz1t~~D3i??e?Bt!g>TNs8 P00000NkvXXu0mjfW*r5c literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_launcher.png b/app/src/main/res/drawable-hdpi/ic_launcher.png new file mode 100755 index 0000000000000000000000000000000000000000..23d8940494863819bd06cfd541b99fec776f013e GIT binary patch literal 9086 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_local_movies.png b/app/src/main/res/drawable-hdpi/ic_local_movies.png new file mode 100644 index 0000000000000000000000000000000000000000..d368c9566d38e12686b4256591c9a41c9220669b GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhaw6p}rHd>I(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g$s z6io1RaSX}0_x7qGAA;vld`A z4cMyt!(S%Cfj8G#Sta^>09BQfn{zW-RAPn2XIdtR1n@BI({@?1ZR&;|pdk#N Lu6{1-oD!M<_Shd1 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_my_library_books.png b/app/src/main/res/drawable-hdpi/ic_my_library_books.png new file mode 100644 index 0000000000000000000000000000000000000000..0d4aa306708df3d0f84028adfcf8926005f0a2ea GIT binary patch literal 433 zcmV;i0Z#sjP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00AjUL_t(&-tF1XX#znM$MNr;R&7D7U@?aTO${L>m;%H@ zkbq@`5ON4PCpE+(+<-(|&=&l2nOq~d;EeNBc7Lyd_nG0%`@wE9;<73cNTBM1Y7FR+ zkw)sgVa^xtY{Eb-#$*N;GUJYgKd44-!U6cD!`2t{#Ixbp40-hh{cvpv%IWxm*3m|J zU#)2Pf}HhR7swuz9MRqh6c6MIS_)JG(21VCKmt`5q&*~%K*}004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00F50U2zDj}J3F-@UgM>)$Bi|{ zM0@}(3^CzZjIAJvK7c*}jbK7#8y)~F3p>$ZuoaNa&hAWRgJpITxo)yjB7M z3FzN~(p>UPkAbFNk0vEjqkrQBO#4M1$r%Vp8<(zngwlpMu*w6o>Y#H&9Dp^>)Ildk z-*HhLlrsv-se@8RL32_VRaVl-SDgv_1LKYaG`W<6G*`cx+o3>vXlH|#Vx@NUwT=$^yp8O&>|I%(!WhTu8>)?5mUYl= z+_J10H_*HOFGmB-`O^M+hr3~>(m3X^4Bb}7*uet;35a)S%@cnwn+r49*5Kv8DC;d+xYI&wIw5%S`8 zW!1QWO!ll$Aagw{be8GwS&@c(sY3!1kpA@pliG4qGt8Tm00000NkvXXu0mjfW5Vr8 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_ondemand_video_black.png b/app/src/main/res/drawable-hdpi/ic_ondemand_video_black.png new file mode 100644 index 0000000000000000000000000000000000000000..604868f296e9134d39d80f059e21215b38c49956 GIT binary patch literal 363 zcmV-x0hIoUP)gA>>;ny9+j!&d z2s<~&E`;^MsZSoc{qS;6mAI zvSg2`LoH~Jc`aB7yO{{ng0*2<&>qu*2S5DPjfK5)!a_ZmV+Ft-dt!qru*Y85X9l1U z)~SwZC38$GSz=nLG}bPQX(e-PPb=ADzy#QJWGrFba2ntucMx8_5_XI??xCcXk|r%WxUuyG>c+N1i)G5B5Ed;7i;}!RQ&Rp^J^<;odYyitYYPAX002ov JPDHLkV1mxGo&^8^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_refresh_white.png b/app/src/main/res/drawable-hdpi/ic_refresh_white.png new file mode 100644 index 0000000000000000000000000000000000000000..1692d8a242162dc878d42fb1b112e918cc25c3ac GIT binary patch literal 734 zcmV<40wMj0P)}R?1pi{*}C8ro5mjO-_Ru*)DiiH)#7^4tLdZA<=>SdMkpq|I%AXn6pz$;0s3PKrYm?8_gA;c@ZhG~!mn)t?F z$qgNN4O1ga+~BX|f)yk&k~GK?-DDvb#PDjBCA!H<_NZhGqgR%Ql7sAV3M0iTSs_YJ zvc~|%OAhJatMnt8@AV$4Pk2pqH zrN<;jNTtUlMo6Vc93!mKV-TZWrAHq|M5RX$##I#o*D*R}iwMSB`9>KZFt*DURd{Wb zPi)1Qpj`HNj&VyqaS!9ZTyPR2MXh{b9chdMazO=2j0bW?8T}X|ER-8A;dMxkIDywW zxnddLF~(Rg2W(;jBhDhZqaCl0)X5U-7{TkX{9pku@%qFDS)h^6cs-&_{!mK-uW^p3 zK(sNA*C&?CKX#F3riZLn9;~6CnI>pbad4E`Qru>b~1{qINMZw)bIiqPg$vdg9V)BJ2t*?ntA${sOADm3Ngxg zD)c{4!Ev53O*Yd!;W*{`zgWT^F4D^zJ~P22UwF-ZF0h-W3IqayKw!@L0j`rmsrdc? QM*si-07*qoM6N<$f&f-ZIRF3v literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_search_black.png b/app/src/main/res/drawable-hdpi/ic_search_black.png new file mode 100644 index 0000000000000000000000000000000000000000..3ae490ef9be0c727cdea0ff907723362d0ccf021 GIT binary patch literal 684 zcmV;d0#p5oP)u)P;0e zzc7B_qFO`{h4JmKoWoR{mmZD6{LcD0JY?p5NBJL#L?V%BqRbR)9C1a+6;;-lq(mb% z(8UV3xPQ(q%XIRDKJXp);C!W>C-902F6P`ZO~9in@B`;H+vIsP?>NSJPn9B%qCm9H zFDjHMQcsF{ij|zSrmYXUK0U)c zY=k?NX~U4dcZP{)M5Q({(}jLm@#zQGfsqyUDrboA4W}Zzh>0fk&FaU`pvd0PfPu2Q zchdL?xDfen3`~iI75vSL`~(Kp#KIE(dPRN}14m+E5r3^Be~5uAv9KP08IixlKqwZb z@Rt(#@HzZKS&_fSK-K;ovO8sE{Pl_aItC`i!WsO{iTpSQN@C%;|4q$rk?+AkqxzN& z;AcpE%W{}l7E4da5?_upkzK+_Cr->4;#*M3kC^$U7LO3ms7h^Ms9pbk9IMi(%7nbf z)F+&pd9vIu#{y2x7{&s&acWK(Bp@nah%=m;Ez+3FQ^o1wf?0ZLB}0lVt@JS`?j8Ai z)?tsLuH-!j6fl-&+q1-$`d4V*zEZ$6cQMO^jFF}eCuWZV=GxedQD@`tL3g?mdF;`_ zA~*L`xnW7&$_GzV2^#2Tf>jQ=B;=Yy))}XV9NJssN(Kt-18zk+dXf)UDAjLvsN|p{t6$05L%?Ktw?Z^gaZCQV^>Zx>oT5B!UZD>LPSm z|L~VCszm}4VSKu%ZO@sc>73z9GKG1U!+E|uoS*N^M5!=g!h{LqKXj94ff8p_aHw!f ziFtB#wL|6=o7_=9cWf}!N|_gY;@|neKr3V(v542)QzX`0ojyKemomN0(|N`@_Bkcf ztl6p6`NkqSGQ^1xCqtekuIebI<#is{EY>;WMC*)uR$b$Z z(g)oNPHrpSfn4QL-e6kR;0(D@Nb>GoKwwK4j`B+2oi$`B^GkO6(b* zLPzpSF^b0NX%vSUqI4L~4#ky}qMuz4Iy=7(y6gF2Q~ohxkTt4*QK_=7cV&)SqNEg^ z3^T_TC*0t0%L&`eGUC2MdD=21&+2^~xs(oqsFZHE(qX9Np|QG^_S>&?P@~inD!G)> z|AW$(_ABiNO30vw6u_#jj0000< KMNUMnLSTZewp6SD literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_settings_display_white.png b/app/src/main/res/drawable-hdpi/ic_settings_display_white.png new file mode 100644 index 0000000000000000000000000000000000000000..6e2f3e70b41ea4057444e9abc7f4913aee6b98a3 GIT binary patch literal 396 zcmV;70dxL|P)Dc% zwsnC5H@sB=64JI5C}kerN4nBAL5Y1PDDWzm$}50`lL2}LAzciloP5wd2Z4J zP*Qau>#uB}9Q#8(QjY!4ekvUE3*(TkRKu;K$F8P(S&w(92Q*{{HGmohjF|dgSO*zD zC>D5>_GLrPI>r}P!FP-fk|qCF!8!YCVTpBf1x>K7RZznQ%RY#|UvaJtIk%ldpEbuU qI8d?!b6O%nLH6Sy2RX<=)yy|FrkrW!FaFQ~0000004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00DkUL_t(&-tE~zO2a@D#_@kvsr3lO3pD6LX+48@1O;7+ z3n_xfkRqbuT35Q)Lo|YD@dkPYt(&-Qp{etx^Cm+wvkv5!`QGqmCdnCLjU<91sJWmP z$Lx`jI(qYjG56dsu>-B~Or|g)@9gj?2ersmH~??-_?3cAIae&30T)ux3!93doSqc) z^XkP#>W4!N3M!qtPI%cDhfiXdoPM5hYE zB06=DG&&C;S#(}NlIXmFOr!G%GKj1%RfGWH6ECc0iDS}4yrJw;rMbHVC zQc%i>btTR#+vUF&iqh>whbJ~vIJsi(y_dRQAP{kvHBB*wtKQAb=F%1P{DQR`TXC7}=Gx?#4g{dVhem2uLM4oSN#^=s`ve$N(Ec02RyGz-H9Mg5Y#6VLcl_`d?}WbkzL Kb6Mw<&;$VaG&|h@ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/openlp_splash_screen.png b/app/src/main/res/drawable-hdpi/openlp_splash_screen.png new file mode 100644 index 0000000000000000000000000000000000000000..d413fdd5b27bbe635cbfd325009c10b178d4359a GIT binary patch literal 63024 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/drawer_shadow.9.png b/app/src/main/res/drawable-mdpi/drawer_shadow.9.png new file mode 100644 index 0000000000000000000000000000000000000000..ffe3a28d77c72094021013c6442560803b3d344c GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^96+qZ!3HFgEN0vWQY^(zo*^7SP{WbZ0pxQQctjR6 zFmQK*Fr)d&(`$i(2A(dCAr_~TfBgS%&&>BhUX5L;x$y=|hic;t)=0q~!&M0(2Uj#r iT+R^X@#lD(V-Z7IzK5^$I;KqE#=gJLCWEG#^SmAA0)7y&`OfDlO3N(7aFosAZvpp9T*;RS3K!68M6 z_*pF(Lc+c`c|pPb{^i2_idSr6SP`={@O)BdhD5pq`L4)19|y2VuWu^$zy@LK)V1FAG=)1Rl#^5{T`eYy;*!!DDf01G^k*8`PUV4gQ5y)qXAlz2qiJrjE108KS5 zP^F8e4ofh}Qq{Uspf zE7-d|&?4;29$4dptdtc!AR$_KJeRDF|H%Ic_yL(YO;1pM*m3{>002ovPDHLkV1lYy BkZk|} literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_apps_white.png b/app/src/main/res/drawable-mdpi/ic_apps_white.png new file mode 100644 index 0000000000000000000000000000000000000000..95e1f49cbabeb6cf78da5d59d71d46e11e193968 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZA`BpB)|k7xlYrjj7PUo>r|a7g@Ud<^AYvNh)M_*TCZGTS literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_arrow_forward_white.png b/app/src/main/res/drawable-mdpi/ic_arrow_forward_white.png new file mode 100644 index 0000000000000000000000000000000000000000..8e09de178cdb45de4bb7eb6c71a7e33e12d29842 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzFHaZ8kcwN$2@#R8phwnvj4YSI*BADX@D2z0-2M=;>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000lNkl)HFiry~4#d$|ph7GRd^8UISO5Sz W zd+NLY?2{E${O;^{tQF8WC-Ow(yrKywEgY21D{G&x5ZqJKlJG2)iFsRGoZwiq2=cf$URo!}Gi#t-jyA5l9qoiS>k zzr*`Q5&ztE0u`o)m&dd5oO{mbV8`C@$&BHduEN~?H-4HpoLJ7_Wyd$+lVQWO>x@Zp z%xnJ0{NAMeytZN9cgCuF>@R-CJg_pE&(82uhT+t0h8f!#EatOu{QNaNlJVFc#>L;y VrKz=kojwUa*oC)#{gQu&X%Q~loCIET=VpRYD literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_image.png b/app/src/main/res/drawable-mdpi/ic_image.png new file mode 100644 index 0000000000000000000000000000000000000000..56cba791718ed34d03658d5a66302ca02f124e26 GIT binary patch literal 397 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 bG}`|K>-7F%T`|`#00000NkvXXu0mjfN=dW> literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_list_black.png b/app/src/main/res/drawable-mdpi/ic_list_black.png new file mode 100644 index 0000000000000000000000000000000000000000..ceb9fc20fb436cbc3acdc3883b2580bb3add43ef GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}t9Zwg>kP61Pmleer7+72!zwbA3 zyzsr#c+!{4V(%HM-v9gXsez$Pp+T1834_GH_jMC~L?77#)W_iI>gTe~DWM4f9?Bq^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_live_tv_black.png b/app/src/main/res/drawable-mdpi/ic_live_tv_black.png new file mode 100644 index 0000000000000000000000000000000000000000..0827fb9fd3ee63ce4c7e160c54242bb45c834af8 GIT binary patch literal 302 zcmV+}0nz@6P)Nkl(?(Xeq4_v=syJl>6cE3WL)0AC(s~3nQP4e5K zHM#Z~x3T_&YdV$hjkr7-ns`MgAL%mxw#K5Zv5EQeyyN==Tw={;PGsMQm#`)3)F@`x|te!yH&Le7?$QJdocM`XKp0{<0ORQ@%gE$|{w{ zv>;88Nu~e3vFdUG2G(e;V<*qv+*tNBo_VIdg9r!HraRUA-xyMM_A{vL>}UG*%#QIw dJm+DC@`I`cilNtDivxYd;OXk;vd$@?2>@E|dR+hj literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_my_library_music.png b/app/src/main/res/drawable-mdpi/ic_my_library_music.png new file mode 100644 index 0000000000000000000000000000000000000000..5af747ad79128fb08ddf743fe6b8cb9e3fff6aab GIT binary patch literal 422 zcmV;X0a^ZuP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00ACJL_t(o!|m8jO2a@D!0~^UR;Aa-1%zx==sswRHwi{> zpi(HkNNAh2ltNv&@Brc^L}|cXT#c5&6}?T*X*_g9zvHxO5LBj0Ce?3}jr1mJ=~>%F}Lv1HPIDIutH}GnSP%=PX76bOzE2do5Sxr5pN~{ zLLTUGBo59aH>&x~fa42@2aJGS-fKJd3)tm-4ZtSvYXRHly#VmP68;DH2D){HA@G-= QBLDyZ07*qoM6N<$g4_(G-2eap literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_ondemand_video_black.png b/app/src/main/res/drawable-mdpi/ic_ondemand_video_black.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9aa2a93d1b8e40b6fc7ca82f130089072069dc GIT binary patch literal 265 zcmV+k0rvihP)wLZuC{M@;+>+hB*x53!t>8)ElQ?~zZRXo=JdHBipT2OW&JCb7OF6XH~0LL2|T zW<$)MpwfLpu4A3qb3zF!7jq&*Du+OOZ3n8o3KmH4Dua-bFG4!d;EcHe>V1px2Op1~ P00000NkvXXu0mjfzQAVt literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_refresh_white.png b/app/src/main/res/drawable-mdpi/ic_refresh_white.png new file mode 100644 index 0000000000000000000000000000000000000000..1989184b14751617cf6e19e833810f91563f7522 GIT binary patch literal 509 zcmV(sT0)b>h9b-n(poNi8 zG-zQY6b*JU4l5e0V&oJJDj3%k4Q4T3VPt|orM3o^7Z9?FUlo?v_>EjL`pcT=Gl;SRnlaz&CFzDJ}KfN37%TVq`A$WX`kh6{M= z!6=v6#0WbcEP)qmm|Br0Z<*XWN7ITU>j{~Prc+$enwQKUMGw$gnG_yC$`NCG*{ z;&A9} zBR>#FFVw<+y*-{8S8UK=fkm2Za{c>?(6_M5;U|5JT4so77h#`Pw6By&Q{mob*6{Y- zetnrN6?=;(JoW7E`{Y?cv<_a*^w*PCL5Y$sxIi+SaZVl4jtI2I6Oz)Sep;~(3D)6+JKh*G<(-599TWq^Iv|SU_$!VO zYo90%5o?bq4iIZM{)!!<*pI(rFZKf1jre%AGp|tiAN>M}3sYaXitAD8CL_;(V?AVEarj0ldk$~bl6y3&Eqek6=6UA+aBGp8+4bCOt0yJyz3VGY| z^>9EE59hXLP{{L0Lqkciz%eblTs;71sDpKM$pE;wf;`qWNA#EmA z3}Zav^tfQ1X+{`jh7B(9+LToU=QvL+>I0VO;G8NRYdGH+S07Zk#aU4-eqf#$*8o)L zVD1%%1x$}ceS&42s$y`AxljOCm_x;&g;`eso0uELpo^JS0JE4E#URIwD1Z{?O)C5yhj~>DnwSj*u!U(V21l4n1#pdNCjP>$mkQ{TM zA}DjpU_DNl!r50btZ+|1chvL?-kyr0${{zr@Wwl@G-*)PA2jglN`V8sx>8^tZ&xX> zhqt2?sN-!b1?qU2QeYP^Qwr?hWJ-f=e#?{&8JUKL{zpFn4bJ?-H56sJ00000NkvXX Hu0mjfDd@)s literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_settings_display_white.png b/app/src/main/res/drawable-mdpi/ic_settings_display_white.png new file mode 100644 index 0000000000000000000000000000000000000000..4b06e6566068e4e9063daa59b8e57b1839802975 GIT binary patch literal 276 zcmV+v0qg#WP)XCAy=D*F)||iPtu5^EUMX zT0X%CxN)arCs*I5J_k;jkTV|o^}}mL`!*Ua9>9c0z3&gm7mo^LVkBZ!q}SUk;53&3 aD)0kgEbk8lBeJdl0000roHjUl`}ezo7j>tATWSf5M)Yiw}B) zKPpdQ%9n1wv^BH->}B)ZgEJGiTkatZim9Y`I~ujg!I0B(RgwBv6v! z(_$m0C$6bH0j{Y6C;C?TIm};swqs4+rl&?{`~|rXD?-#@b}Qln$&-C0+-Ex zfB40s#KxqMvV>Ws|30@}x-5g9Hj~xT!#6j3EI-fAQ{Q0HAU5IZ-l9Z*hp_Lg44!wz lnO0q^Ic~ejI;I26d6}v`2q|h22WQ%mvv4FO#tGqj#U5v literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_view_list_black.png b/app/src/main/res/drawable-mdpi/ic_view_list_black.png new file mode 100644 index 0000000000000000000000000000000000000000..c15537a863e3899c6d598ae417d9c48ef43a6b60 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K;wWo_?NCjhZLt~%;mz03OiDHIH zEen{-n*S*)+_>?dC6PI?*^PHm*_uGUww#21DHlr#T{pMxi9pp1ujJP)*z)dN1JD=- MPgg&ebxsLQ01p!&umAu6 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/drawer_shadow.9.png b/app/src/main/res/drawable-xhdpi/drawer_shadow.9.png new file mode 100644 index 0000000000000000000000000000000000000000..fabe9d96563785c7d6b008bb3d8da25e816c343c GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^{6Or)!3HEd1bTh|DVAa<&kznEsNqQI0P;BtJR*x3 z7`Qt@n9=;?>9s(?08bak5Rc<;uP@|nU=UzFz%6x@#ly{E6Z5RU$2Hhw*i>Gs`(~~C zr~2_>(e4Ka`gpa)&de}Ks*u{@U5E@m-v9X3<$3NT3r3p*`<7|@n1Ecw;OXk;vd$@? F2>^8yH@N@+ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_add_alert_white.png b/app/src/main/res/drawable-xhdpi/ic_add_alert_white.png new file mode 100644 index 0000000000000000000000000000000000000000..34d898b9a468aa2a95bd1c54d75ce4ea87209a74 GIT binary patch literal 613 zcmV-r0-F7aP)I$1f3uo35XI4i!`ec1;I{41RHHqt09I>m4JmoL?kNs0)mA|P(Or~AUIJ} z1S^SXY_=C)*ccPgW(<>gY{Rm5-MIIhy*HfaU(axU)h$_;Wo^#b!3+yzWPIcb6-qJ_ z`Yng~!umdQC?>!V%QUyd-gp2{Xw~Cb0D}~?DraXLfDv4sj012ES7+k@jN@w50OElC zTx1?s@0ey^sDKLR`9LSlGsX6>0R7xxnT_<5>r}!3l&R6+fBME)?*V&A>87Xb?j_(D zKj^jwM|uSqXB8j);Y=?8lN9)BjhZ%K48Ike)&v}972jnX)dCE%h(zDnr2#1O5~-eP z049)ZR2neA5|TCOmj&ELx~r0a0e;bG&EIy~3KcoP1rP_olpLV00$7j&8~_ynRAm4& zYJf{JfY)k(ISIfPeyagiDEkLgK@9*y{sE^{0Vn(eCRG6w{sEU&0n`2gH&p@G`~&W| z4()QSyA=t*00uCC0Su5k*8F|$m_9)MB{qNo3}65Q7{CAq$eR`(Kp+FS*T-8ldqd(A z(8qJMOG$hI60!3=5aiDnCdi*JO!(LNa{wU|tq=ZzuaX@GpKr{n{ zzi0pkFu)=i?tKj(@QHT44T$m`Z~Df*BafCZDwc@}xXn978G? slO^gN{IBPb;*+Urx>z91yFHPeA^)n}hxkW#OF()(UHx3vIVCg!052sPQ~&?~ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_arrow_back_white.png b/app/src/main/res/drawable-xhdpi/ic_arrow_back_white.png new file mode 100644 index 0000000000000000000000000000000000000000..d3bf0660b6fd4426954990a2348607a316f01def GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=<(@8%Ar-gY-aN?JU?AdhP$b2_ z%4@Dzf`6c+eq5`|9myZ8ds-_tiU5^1^hITV-Sgzf+g-C{>hDjI*)M0_DXt&4r{d$I zqut{F`+w+(%jP%e^9cNBsbT3&U{RJh$l+$tB-oSCvR(O%s^^#U7msty{0KDZfPuB% X>x3_r=QeBs@)$f_{an^LB{Ts5I?h2D literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_arrow_forward_white.png b/app/src/main/res/drawable-xhdpi/ic_arrow_forward_white.png new file mode 100644 index 0000000000000000000000000000000000000000..0152b5a521fa249b9eef23c8fe393775f5ff7ab7 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=t)4E9Ar-gY-n8awH4t&V=ySp{ zb8=zU`#DK1B1+qiosZ?t`+ttDa)BlzP;p6!*U8_ma{ITPzIe>P{o_ZaD;u5nMzRRH z2slCsJDG=%j(^=HV|&0_i9_J8;0OPNJs-<^;(N^RRXpxBzxU%ln}qZJ7a4+&>SSzP gJ1pgZrdFI`Tks%JWOK%&&p;l7r>mdKI;Vst0BH$FwEzGB literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_drawer.png b/app/src/main/res/drawable-xhdpi/ic_drawer.png new file mode 100644 index 0000000000000000000000000000000000000000..a5fa74def4b40d7eb6826da05bd5e12b836cb999 GIT binary patch literal 2836 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 m06>TUe1Q%C00004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00H+&L_t(|+U?t|PQ*YIhT(55k}E)CP-sFzg1}dgjebUb9PtwsCb#EgFIKTl8aDW3G z;DEmXIKmj4c*GT^c&iW4VDhy;#{pjI0<7jo5-b3I=0_3ufVTVy0vphkFD7sSefdHH z6A;Q55qN+-+=z|~5UihpAi?$;SQ7T}Uf&d2-DX|Kl?SZjDS>d04I6+4$JoVPG~pF% z766OXhXlecw)uc%W<22#*KEM|#5lqPGxiw$ohK)p;F5hKYfqCAdh^Qwx-X6}A&_4J z(7!zU3Bml~0pS7JO%UV{4UpYs+XPl_8&Eu77eL6@1W@wz0Hk~^04-k!K+M+wQ1kNvR%;cv54CSW)Oy$P|jOE7y%;m=c4CcoGOyrEk)IAQlJ7slIluu9aDW3G;DG-P Z_ymJI>_HjUNHhQd002ovPDHLkV1jrk0aE|~ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_home_black.png b/app/src/main/res/drawable-xhdpi/ic_home_black.png new file mode 100644 index 0000000000000000000000000000000000000000..04e2b26ff139fe6c17fdfd5ae816dfe8b94c32ec GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%&M7z^Lu%;uuoF_~zh7UMEG7wu}8u ze$iqVcxO1aUzmAM?7Zp>NAm>6EUQ`Ct*wSx>5qK>6$=Oo3Qm;g)G0o&@&xPba3#K6 z%^S&y&BmS5-@bSqnrJIp9eMMi%d*6LGb28kmp9tyGS|O5b6}s$oE^sD?xs9P9R!Z_ z75`B8Z(s2HaaOv+jvdD3_xj(@iQ5wQ?NL}~*gq)I8fJEYcY)~s9ia=R@)j^>s50MS zi2B(b%@}o%$-H0e=-I`tg`YD5@7P3%U~s1aWuF3ND}l0d=Ka%-V{k(oZvXyV8UMT3 y0~izy3@`p?t4o+3U}gbI(3)EF2VS{N990fib~ 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 b9(4SFa@bTapBd{&00000NkvXXu0mjf;qrz% literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_list_black.png b/app/src/main/res/drawable-xhdpi/ic_list_black.png new file mode 100644 index 0000000000000000000000000000000000000000..e1f03b45ab535e1d3ef9dbd719fb8e997832325b GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeK3?y%aJ*@^(YymzYu0R?HmZtAK52P4Ng8YIR z9G=}s19D_NT^vIy7?T$$OR)Zt|M9>1AbV7iLc$gM#s4H(88)!*cbqUwT^^*{)78&q Iol`;+03FL8S^xk5 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_live_tv_black.png b/app/src/main/res/drawable-xhdpi/ic_live_tv_black.png new file mode 100644 index 0000000000000000000000000000000000000000..67fc4e65c899e27caa4eb9b385a58adec8cd4c12 GIT binary patch literal 510 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%&M7zlYI1xpodk3_uD-wT|3byN&*{hXU+(uD!doT_ z)V$I@xNe`2%&TlSrysX}Idh$iR-6(a&tWeoxa8l;HNTubtk!2~|23=JNn_8xv>NXT zzm&Po&zNt{vig_PkN;oUue{kQ(7Kn~dfJ!D8RBa?7R5XJzOVcHzU5%_edRSAlee>+ zZP-xBTdQK4_(ja)TUdkcq;Am%Jt}!|nHTFgJsg;XCNxZ9h_8Ih%dzfE#Y-NJCT97{ zXFy8#{a!}L7p^-PzbL(7s1j^r*vsME5Z9vUpnr&Ofp{Xvg>D0u7p@XaNYV$6Nftb4 ze&4dLrp)e<{vM|!h6z_^Go*ZtV~E@<>=5>zWx`c!MilOBAU6*vEA0@L&oJQ!$T2J` z3XK2cZQib7kXG^5KEUHS|Jbs+!@?Hz6_)PIUm~Kf{6AK_!+iy}e9+;TSEqG#ZWQT# m=r2C}=KR}qqnSQxpSkmx7VmrzRo@PbR|Zd4KbLh*2~7Z^uG;ee literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_local_movies.png b/app/src/main/res/drawable-xhdpi/ic_local_movies.png new file mode 100644 index 0000000000000000000000000000000000000000..25f3f5d5ab970a96b64a8cdb6b2cc722d1e6c220 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%xcg6p}rHd>I(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g$s z6rASi;uunK>+N+%t^*1@EDpiHp6C& zl{xwM-H~VYN+4%l*v-CaZ@^qlCy>1R+s1cx3Sj211`bA`$O~q$ss;QV0zh5^R>=#S l*%wvB-{l6Y1giRQe~)jVh)c*%$tOS_gQu&X%Q~loCIDlXPoDq) literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_menu_white.png b/app/src/main/res/drawable-xhdpi/ic_menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..238cfd66b4898d94602df3b9939f2937b5f94b34 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>`VBp6OsFEs^HOeH~n!3+##lh0ZJd7_>!jv*C{ n$qJ$${{R0kKXb{>s!t3I&*G(X-_5)J6Qs@4)z4*}Q$iB}y>uFl literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_my_library_books.png b/app/src/main/res/drawable-xhdpi/ic_my_library_books.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba5a0eb1505e868f20f0e03e96a04a7a386c43d GIT binary patch literal 527 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%xcg6p}rHd>I(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g&? zz`)q<>EaktaqI0JLq8@*kz*h8I|40RAF`zIC-`i;R6L*Q;j6iFE_B$-=ycfFa*2nc%X1}}g zH&Y^Ub?=(B6RSMqOO~!|)5=L(u=edHM5cl=x7@Gi>qbH#y9?FGX87A34Q8-Vyw4VMjza%x-jeG8EyF#VVT~}TAvgPjD`|tK^v)Hdw zR|oIs$c(d?J}WcIe_jNGwIRs(H|hR+{(a+byyCuHz?ymWvgH@{ykt24c^~J2&wKJi zTKAm$oyO4rdEZC7fEPhCk5%2h;`C=NM@={rNbf(>2h2siMQa#Xm(_##p00i_>zopr E0QCsaQ2+n{ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_my_library_music.png b/app/src/main/res/drawable-xhdpi/ic_my_library_music.png new file mode 100644 index 0000000000000000000000000000000000000000..e812dd73630291d9e1906a9ee57c7b0578cf77ad GIT binary patch literal 707 zcmV;!0zCbRP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00KKnL_t(|+U?xWP8vZR!13=A6@3J?f%pW5gsU;(WRH}z zFVF-{Oq9g*HIx*k$kB_oO`G=C9<=G*i|M89fnZ3=E3h2gp86;5D!4Q3Z%2Q_379PN z+4;?HW@k5eFL1kLP=Epypa2Dk01CADiBB-$m(LGgv3yfAyjT<291Wf)dZGi`)EL<5 zfjK@W+9$V&k+^! z%rH%k3damxTFjlW!>_;Zdh~ctp1K==D>i9Ge11vUjSz}%zB6OsB)R5K0^qabb{2a5 z-_Ugu@X_^o;M{dU|6wd8vgrlPk5y|Sy?~;{S|Wh5#abeOr!0=FlcSPeK$hK+b@uGt zter#_ddB9h-*53G?P>JoErji;XHL=v$gs~F9!13dJL-0SGyKHXs9Q|qZ;KCk%LmTs z0}B)>Q?U^HUUGoR6i;_06d(*3iniA`2XsXN9dp2$DB#o_&=O3f0c~@@Mff0zl_uY8 zWT6^gMVkL5YR4%KV89xO2?tWZ0guBuD9%#iPg$l)i6wiN=Qk$K4yUxk!D9;0nOFe| zP=Ersm(R=%uU&X2y>#Ss literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_ondemand_video_black.png b/app/src/main/res/drawable-xhdpi/ic_ondemand_video_black.png new file mode 100644 index 0000000000000000000000000000000000000000..8bb06ea0f01984805f8cb5c10fd5a0266918ce77 GIT binary patch literal 457 zcmV;)0XF`LP)~rAtr>uBy%9jS-U^^wZv@b-&kuOb574c*1L)RU0d(ta08#^hmjDD{#{tg) z$X)XO&8+};NFyu26;hAd=J^$e;QYtSYu46fYVrIV_FxmCX!#`{$AjijdZyt1MC$Azf957h>3-t3^RKU9_d^!eEr!Ikee|V#8uo zB-PXcagY>r5oi=j5EdwHm3A>)o13%M6gJwvNrd#g?>T4ZywCH_z3_ZKlIMAz=Xsvz zd7dNO!jtqc#7V}u%mNEsW{i^z(ajUwq>|97TB%YIXrP0O6iIIJ7P-vPO|?qE^}Nd> zMUYE8MJ~gvR|Gu77)z2n+|Ddvhp16R+{kg3AXiB9En#nymIbOfLP2tc=Lma8*65}n zxj_R{1RWwROJrGs+#pNPFg3D7mLX^Ya$9h>JOA+J(I|=HRB{CF6E-;K~lxkTa zLy=^U`v_{26*3e}_IMrBBvrCN7bTEAPGjnm1-dASY_XQ04T_8|N+ers!!)MI=%i$_ z#coXd6%n08AX^;7)T&76Bof);IHt`?7S3X7QnE0OsZq(oB}^4c7XHLkp=9A4rbZ)udzg;N1$r<|QLPwI z&n%`FHnD(d zlnS{+2SFp$$Prd^hM?!=5_OCdbeOappo}jG`i)AtMGIjAvPO!J2-_z2I7-+6X<4A0 zeS{rR99YLi!iK0-MAY*+VH2!XJb08`e&!xUz(#%{Y>_RB4|~XEo?cd|1k}>Y-{i7O zaU#Ws|}!6-dEfx=QHw|VlU04lm{uA*~>Kf43bv-DCc7enc!1)u!Y-L zLnYTy&mBBWI|mr2kbRVCd61$P*Iv=`;xYcfm1(wX`Ee^>XL$g*c*07zI8RR?8GRYkCOf$*} p4w7XnH^}om&+|Ob^E}Uye*phd*siKI(OCch002ovPDHLkV1hNcx5WSe literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_search_black.png b/app/src/main/res/drawable-xhdpi/ic_search_black.png new file mode 100644 index 0000000000000000000000000000000000000000..21be572990b53d8e0e518c620a3257f19bd1864b GIT binary patch literal 868 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_add_alert_white.png b/app/src/main/res/drawable-xxhdpi/ic_add_alert_white.png new file mode 100644 index 0000000000000000000000000000000000000000..5ae57c4ce62c6bdd1e5b3d3a1239daefac33d96b GIT binary patch literal 885 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q1xWh(YZ)^zFxz;#IEGX(zP*0l`%S9I@sI2K z+HNJNx=fH@bIgr0;a)4|loAjkGIK#-;FU*l@Ag*YC(OR)=+Z58Ccvpk@u6NuB1d4t z1^v^m9ch_Q7Wsw*B^jSPv%A$gbB_D*k8|GJ%>Vw}zGCe;&nZD(noFk?$>{QIKA`{P zz*gG?`p2?%kICoqw(3wYdL2e zVntS5vzz;o$=21Q{}}fdDaGF7++Wlb_sZ#Ch;I4P*1)2&;BxMy3HSQ=SIkwf=+AZf zJ+r)W&NhpNcj>eCTlm%+xz;N)r%EJFjf#GlIZK*&K+cc{5{@ z8A=U2XI6zglD&1A@5*tuuQ|Ojvl@?CEVw7SV}jp;ur!PHYMGwW0n_{~&)Y3j_H~$B zbFlKeN=W*=|yg3gS z%AfqjGV7SPuw3K2#XZxzp6p>vjW`+{fB6mf3)elSuQ*q<>h9UgPafRg$CIRhePyNeqLoRAv*yWvew2%nH zgnx~9>OaH8kfg!PfKv@!qG}5ol-Pip

>rQ&_JYEnl)Qf5%0J6Ai~(PRuxNKhdzi zeo;gP!#-PH5L1a+E_u=HEC!`%vns^4%@fnYuhdG^}EFXk+JrOXH*CO3oZ4RNi`1JiySg4^ZNKT9x^-4 zR_hd8F+0}jS9A0u7B7iqK3h-ONPb>u5jORC(3|OBIO>B}#mdKI;Vst0O{X?8UO$Q literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_apps_white.png b/app/src/main/res/drawable-xxhdpi/ic_apps_white.png new file mode 100644 index 0000000000000000000000000000000000000000..5bf8616b9a0369a7a66a02c3ad528df3be63c9e9 GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^6F`^|NHCnYy)O!+m`Z~Df*BafCZDwc@^n01978G? z-(E5lWKdvey>S1)Ki%90%MTUG#;462WOp#{S($QiwQ6^q?$P&*>!n+#H?7i70-5IN L>gTe~DWM4fxHTh% literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_arrow_back_white.png b/app/src/main/res/drawable-xxhdpi/ic_arrow_back_white.png new file mode 100644 index 0000000000000000000000000000000000000000..65c39a054b36484084eaff69792bb83518255fab GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoA3R+gLn>~)y>piHkb^+OMF*}8 z3bP0l+XkKluUMp literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_arrow_forward_white.png b/app/src/main/res/drawable-xxhdpi/ic_arrow_forward_white.png new file mode 100644 index 0000000000000000000000000000000000000000..0a0ddcb2858bdaed3b6008dc291dffa02801e399 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>VC3|4aSW-r_4dx$m4_Te8ZJ6; zU0`C_efgTm=1ts+w!UmL8+LeveV+VKW(Vt@>c{H)T-z9dn!#X!pkj;RIo-1v%B9o( zdp_o9<=>!J@AuiZ>FkusPw(x!|I5#BIm2#ov@%D=p^r=Eq0sZa^c YhU9E6i`~41bhUHx3vIVCg!0NN~jga7~l literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_drawer.png b/app/src/main/res/drawable-xxhdpi/ic_drawer.png new file mode 100644 index 0000000000000000000000000000000000000000..9c4685d6e046ce6c450c19426dce627a88718bfc GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?3oVGw3ym^DWND5#L^ z5#-Cjkf+YTP`sXjk!=$LL!~YQgWnqlM%L3n1JW26goK+9UQq_B4e)ev49U3n_PU`U zg8>io#t-TVJM=pEGT)onF!&ZOd;8}O149hcq!N%?hK6(oZAK7-f#HS|n9?%@Qw{w* cAUc7wfPvd9>y+w~O{pNhr>mdKI;Vst074Kf@&Et; literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_edit.png b/app/src/main/res/drawable-xxhdpi/ic_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..1361eedcdae97ba425432beb5f864c9b73b908a2 GIT binary patch literal 846 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q1xWh(YZ(J6g=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&_}|`tWO>_%)r1c48n{Iv*t(u zRUGqlaSW-r_4clPmzbjf>jz(v9+u6bA%F7Jb28>0$d;(!OXlSXGZ1PH-P6c+y6sic zhPo5y%C7H!8UD4x{Dl@oqZCMUk=mJOfF)ygw2Un_fDWGj4J zY%6$NVk@q=)K*M!nOhO!GQ*~SiVc_274;WWr7|XQeCP2}a;odT+2Ln>#!+lh@y_ds zleP)$eX+6oW#_$6CaV*(?ORvrU+lMXs6T#a`#Bf;)eLui&hB%0pUohvFFMa9U9{of z{hfO{?0RFl71u41a}ocD!{SZ`AJs;)3UMgBIK5VoEn%aUfFIIx*-LT~!)7mEL$>zB>TRVq-BpQo_M%SO>7oh(^Y%6*RD5G(dUTVSqf1?$qeoquqfcF&V}iOc$0T)rjw$Ng9Mjao)T&7AV;SI;2)4HE?}&VVL^pBfHkI$GjnZ$HiAD z^s5JW%GobiWE1C*T3OS;^|^v!>a&f^qR%%nO?|$R(e%MahOG}SGP{1ViEel2zS8E- zex<{m`AS#1+zQF_Isw-6EElxd7(3`z9&4QSsfTInQ%TmW)5cs^rltEUaLoJL;85|6 zsp;WOc8-p8{ss9SHa{H_Y;HOf*z9y@u$k#F!KTt-flZ{t1{+I<12&Ql7i>N{Jg~Xw z@WE!I18ap+qt}NcjG_-anY0cIGlz7jGp!KeuW$2JfG4pd0`RoPWXLk>WIkV=eOmeC SslW`uz~JfX=d#Wzp$P!)6-Ju? literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_home_black.png b/app/src/main/res/drawable-xxhdpi/ic_home_black.png new file mode 100644 index 0000000000000000000000000000000000000000..d66401cc7ee5247323db1d0e5fda5a4abc986449 GIT binary patch literal 485 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q1xWh(YZ)^zFs|`*aSW+od~3)ejt(0xBY_Z3`g?>#w;r?yH3Mn@>gyZoOhh0;t4|kLXOqVG4!-_PpVOP z-aGBek=(OPwwe~g{Qe>@@_e25clsfI>{4yS*i@w#W^D{rz1-|>AY{nKWX$hsQ2NUm_Zew|kB`R>yWO+Byd{gCa6 z;F1F8&o6>^e6IYWdFQ9iFOepjX+a#HBD@q&Bx|-R^e=@AEIgHL-)h%y*J{%LSL7E^ z=>}8DJ^Px3_)tn7z0fVQjpUXO@geCym4Z)}Y literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_image.png b/app/src/main/res/drawable-xxhdpi/ic_image.png new file mode 100644 index 0000000000000000000000000000000000000000..cb187a96d46259395a7d25f574929bac97d70908 GIT binary patch literal 1191 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q1xWh(YZ(J6g=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&_}|`tWO>_%)r1c48n{Iv*t)J zFtEsbx;TbZ+M0PA&#H467t730tYOjl93kw^kzy&ow zsl^^5Eh-v09s-}*pP1EfB>rnS640P4;Bg~RE8va7flbZV0}>vt|N3U`&F^vVW6nk2 zd@R}f{o9IO(lS>TCZP!pEGi0&oE{ERAOgxi`)AGB4QIu?-Yl8QyXN%C z#WiP*-6WPwzqn=gI?ta|UZ%PqCSF8N~p`&`6`-QZ+zE_V*8qeo6?ozhcDR!=Emu};>3u3Vc zH8-8)TOpFTFlS*3`xfIgp6ZuW-u`*{TUPOp zyyIh$8EI`w{Xuz_j*Tmim@=tM%wG_Bs+cvuY44xuNvF+AJ}h|`b#L+s^8oSd_v`;o zP%_qB^)Ph#R~z+-@e8uOx$gP)S>{zX=gVCGa;LL~srS;s*{Y}O9;mnL9{*9~X&SRt znc8ni-$^zM6J-|YQo zQeyqRNhkO(1k4So@R*o&cK)5G0mo{qyp-e}-mgmhbY-wR>OrP%zHsu%psnql*N z$A&dh?}}HnHBLSumyu|?M*Q)1@!J2g^(H&=`8`v3w``G8JIli=r@x{tUi!^_o6elZ ztkA2*pmp9!3>B{hiPj4aYBaLFZK&#vE6iB7@=`jx$ti~thrfSv zD`(mtUA>|ruHe=-_TEARtp)3U9M5(Ae%@lwaqVv|hl*_;p1&-eap`{Wvs4!K@XpQq z@=U8Tmg*l5-=bx^<E$1=zn16ff>Oh6NYqFr3 k5tI*2kTR$It39midEO>H{(gNCu>4@~boFyt=akR{0Kjq!U;qFB literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_launcher.png b/app/src/main/res/drawable-xxhdpi/ic_launcher.png new file mode 100755 index 0000000000000000000000000000000000000000..ccf99109e5dd29c1371273410572f14c1536717e GIT binary patch literal 26606 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 z

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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_local_movies.png b/app/src/main/res/drawable-xxhdpi/ic_local_movies.png new file mode 100644 index 0000000000000000000000000000000000000000..002c7b4b596fcf353d99e9d9c0a7c5cee2f62f4d GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q1xWh(YZ(J6g=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&_}|`tWO>_%)r1c48n{Iv*t(u z1>bqPIEGZ*dVAfFk3m4h#gXsrpDj{CjtA$jb)E6<>7<-(JRAZF4h;;9Oe`lr1elk@ zzM?NL%BKDed;2|3xIBoV&tw}sAFLWC{6%m=1S>=vRR6|R&lq7Q0fj^uJ=QQm4F;>2 z5E1$r*@!L%l`v!tEFNoCRYIHuvBZ@@Xf?71rV@UQ8*s-mNJ8DuF`+d3=v=jeu>882 QK%X;sy85}Sb4q9e0Pe(8Jpcdz literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_local_play.png b/app/src/main/res/drawable-xxhdpi/ic_local_play.png new file mode 100644 index 0000000000000000000000000000000000000000..a866277251ff1701e71ed23d6178bebb64d50561 GIT binary patch literal 1790 zcmZ{ldpy$%AIE=_yGbr{i%8NiB7Xh&Db1txYxs1UL!}^g(ZTvjsv-<25ZKE}fD9>;R6qqO z;SR{@TmD0Prj(pX=&BNg!cZ+MQ$1c+Z)@UySHrQ35Ul1nyQ~Gr+0Msf-RkP`uvCpw zzH;sM2*knire}p`u^BNhb^EG+;mV}65pCd{IBk_uTX?2>iTl20XDBSn+?FaaGY9&7 z>+l$0#>ND1&Wlne)amNlJpkn zLfX2^pls^;)b(wmW$b*|sdCLqPa>X(41uyV*^+i^xV1Jr^#tJo0T1(|<%9 z`^Ucc8GiDHDe$BjL!y#*Js#K>+fzsrDZ3j>Wf~e$Q3pHrqEzl(>9zpm2az`bdao+; z)3y7rBgmE;+P+YD{e*c-mxwpqVMt*{6U#zYbxM2rg3@`3dng-|B@ub}-F!V@6#F0wblCHu9wx&YvlL)Jsq4MX?^h=0Re)vaOE)|mX?cqer){v_?ejdRVFz=b1ja5`JE$u}EmroJUm}Bt z^^*@~pVtoLwPwD!m3;VZU51QqQ5Ga`w97;cW0l;@*sLpCitgWV44ZrAtm;6^73wn7 z)+?&Bd}&$lXzzT~*ygM*dgZ3cbsxd`QP?wUd5bF6nkfy!SEC?Tz{hU@Zb zyx?x7QvQ+O>21T9O|8poj%c3qg~A* zyY=X09<$D?#hV`Gmy{^z1K}0qpt()6^)9fE~GuO5aP`K^DpjWFwUeP4_a-Cnls$dLzS| z$j2PMP+&mIXR7X0p|;PWk$#POy|tHJuM2kwAvipJJP$!urjk$0geExo59X8SGTm_9 z229Q)=ul>E=R<4&H}J_?m0nBuGjpuK7EkwUw0bfo2Fl4?2J2psH*MBb=>&K^CUo zo8=UQ2ixW&C`c?;JWkK-_JO0_1-#QwaRM*ih4LDf5ZI$EdQrATDayE0VCuKahHF5 OH^9Ty2i@cxn(;sRcqTyr literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_menu_white.png b/app/src/main/res/drawable-xxhdpi/ic_menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..59aca7ceb1c7dde8652f4932b4714ed30d8db224 GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL0wmRZ7KH&RV^0^ykch)?uWS@#U|?Z!T>5$r zp9@P`ndpa!-3$pK>^-vmPyhX7nV_9}#qEL{kZ4Gk%Kx(^b literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_my_library_books.png b/app/src/main/res/drawable-xxhdpi/ic_my_library_books.png new file mode 100644 index 0000000000000000000000000000000000000000..cec53f52b69d643ff1e98edf68c0da6c827f9311 GIT binary patch literal 768 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q1xWh(YZ(J6g=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&_}|`tWO>_%)r1c48n{Iv*t(u zRaAJoIEGZ*dVAM4PdHGd?cw!v{*1X##O6#&WDnVRgF!%q`-#{QCYcB($4up=&yPnq z-E_ROkx}8D2h-Zy3W}~9BOBE@f5e?X_&&Tp=j`I*XZIFoS7ycfM7|Q@P?_Ms#0erK z8(C)6P7|(uXO(NF5s|z!sl4W3haz*8O#IVNQB8?kPfE*$?K3+rv*E1gKe5*zde1Vf zjZUAuzC>?#&dYl_`@gAHPt9KSGV&?o{-1OBR~(MpvHU~rzR#-u-KIDBcLuyIw&uUU zXYRyw_em+=f>OEGyKiik&6HaqTX8uuUEB78+Y8=eZQB4rsTCglTg0SROq9z|HMy|q z@}GG7{k=dJh8$d8KIzJ{lIgXju3UR z%Fh?dp1aK4>%`o9iJ8}#S#~MAR12Gx5C4^9nQ7@h_O=%^=O1GFYI%0!nf%Y%D(5BF ze|png_rXTxf^prmTN?Y+?`22t{!;XANqOa|$OX@;4&}WIe9X)$&%7ohxk}{eRp!+E z_FvogbMA4SEmoefA!_Hsq$7gusoLRu3hkkdJy0)zoSRm)?EkLEO-r-SW`ug{ma_J) znOC%6p~X`N=E75rO7n|T8Lgf<%=?sT_sTNdY=LkbN65awn&`4;8UhFS<{r)4a@xJO z{La$-JG7(TcBLQn-Ift};l!WIpLh04ZPh!L83*+}IDi74{b3Bd93{Q~{S#m^W?=Ai L^>bP0l+XkKiUTj! literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_my_library_music.png b/app/src/main/res/drawable-xxhdpi/ic_my_library_music.png new file mode 100644 index 0000000000000000000000000000000000000000..35cf46f4d73a74fc9843abd3889d1bdf62975d1f GIT binary patch literal 1042 zcmV+t1nv8YP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00W9iL_t(|+U?yzr>TI#oMa(=>ap7iadT-Ge}EJ zKmrm_h`wxA|L^&7cMKmrnwfCMBUML+@)kbndvAOQ(T5m1o{ z(iO#D%#vn-6*kFolvAAL5*Pe^`Z4$aixqq0@ZT({z5!8kSsG7c##`W91$mi!af0z2A$28c!MB*n<4Nr<5^OPfDDiphm zTxR`rgsqYur>o#&dl(B}s}Uv1?E+`dv>)%*|6VN01gSiy>jvI1?$3J-Mzh+@G7odq zMYRmGZ2#QzH$k~K53o&|Gz)xU6R4qy7TRgIRQE)J59DtG{qRD7BOn0@NI?Gw(6-YK z+vb5XP6K7k11&iXv}hh^-f5sY^FT>d}Ihi0K)W(d_XC zS`v;o(7bTGfn2`NWd&$8=%1?L|2FUHeJ*Q2Yupl$ccJ*)>z<>407giJd!glTHC}Lr zRCsr^NP+i?WAxBQoH}Q|sw83;NJ~r+kbndvAOQ(TKmt+(B%t!;H+PSf;0SS<3jhEB M07*qoM6N<$f~!Ep4FCWD literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_ondemand_video_black.png b/app/src/main/res/drawable-xxhdpi/ic_ondemand_video_black.png new file mode 100644 index 0000000000000000000000000000000000000000..8962da3714e5ec7c16293c88472b65f90ecd9328 GIT binary patch literal 647 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q1xWh(YZ)^zF!_19IEGX(zP+zZ6{bTw^ zE*Ejbm#fMbH9H^w#>8^4X~mR#ZGL{TGFj^v=ifQp+wW#_bL;N&cDzd`Wm}}2V9GUG7E+eH zZRTciAI;Ev-p?|OKU^t{etX+^SxAjC+nJpCK|f_3@*IL~0}fBP!N;0E{e~gy`<5G$ ztncUC=x8eUUDFbM-D}6Y1{NU?g~nxnSwR$w&gjI^ycgU&|Nl&KW7NF+n>?7d>P&J-oVbhq*IoSudw^X1Ne-10Sx$9dF}&bAzwwh2 z=M-^In8aP(pdYvYWHCN<71DsH%ZgsIl=*K|Do6!X^gqzh+D8|K>dv1ptvot!dAQF4 z&iqdv+$Bet85$qG()s!QPekZ~JyuLluL^3c?{lauWjVEabIpSHf7ws1Rt|`hZT$3# zV@mjP<^_fE5T-j^wcmG##rqf#8o5?qHeZl`mk}hQKEZ+MDr<=H0 zeK){npTO<~6*VelULSurPK z%*EANmGcbKqkC38-kCI+RjMH1qImA1>USFpoXad9&UtP6Z^``PGudn<5s{zP)<7%) i+XN!g;K1@9!=(E=udjP`&>EP)7(8A5T-G@yGywo(izajc literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_refresh_white.png b/app/src/main/res/drawable-xxhdpi/ic_refresh_white.png new file mode 100644 index 0000000000000000000000000000000000000000..c0e74dd5181e214035a9c9cdb13759156aab7b38 GIT binary patch literal 1459 zcmV;k1x)&hP)#n8B3Lb(FkENq#3-{(w|Lp;AH^1hI@|8TVE@W;&H-Uq zZv%}wn{^adhSO2zh7<{SfmG@0T3V@M+tJRAEnRDd=6X)v^9&iz{hsGsf4}ER_kF!2 zV~jDz7-Nhv#u#IaF~%5Uj8`n=dbaT}zu^szah7q)lo{tN$Jod7JjfQhnXi_iU$X&S zY+wgRsm%EOND^LSnLdFc4oVu` z{DY*NVx>Mt5ho>!Z!tkVCfUaTTUo;jmXISumbonDYI^xTPxB^a>hVu{^bv|gP?Fe4 ziCP_JJ3Zu71@r0SDMqN(IO`}9Ny*_(W~jv&gRD|rXs4Gwl&M9T7)lCvP@=js+()Mx z#OE1cil!(Te3fyknc#jFs7YMLZknJZa2X?1vzO&+5x&OTG)Unwmp6&`0h`rQZZ`Rop>+MAy2rRcc_!XqKgsY>>w+T=;U?kqOkZSaUP>ho^b&u zse?k|M&j(CP2N$YE((V%hlut9S$Rj1Iw>6PBHCMY$UBPEO`$M{6GZudE94zT8lX_P zn`oQm9Yq?VP&iDKz4DF%4N@4~Oq2h1;M!B2Np*KW-(;DtSYmmXLq^6u0B@hCD4I z|JaY)c6macmXUAdn8vL~UeHeq$v3XSZIYZkpr4kKZ*0PCpFE(S7L#ujaT`#}(ND|C zH+JE+Ri=U=+}6lca1gf@G8LS{ZHY_;Be>;cDj3BrBU8aBZW);hMsUl?RB#HnB{CHp z#BGI41w**4k*Q!8ZrfxkDBw0AQ^7{uUYDuh8r-IsDN*75O0XA(t*$MH>w%p zaLlEQK}o~2Bi-h zC{v4Ze!*(mR0lHL%ri_~{iOZXDE@&g7r#5DC7Bg* N002ovPDHLkV1nLBsl5OI literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_search_black.png b/app/src/main/res/drawable-xxhdpi/ic_search_black.png new file mode 100644 index 0000000000000000000000000000000000000000..a5e7a9c66630ad54949be011d73686eba13a9174 GIT binary patch literal 1307 zcmV+$1?2jPP)s)&jpA(MIR4!=ZwG4ZnhLFt)TmGhShQ6yZc%tJ124q|r5qcrFPF#kc4t^J@-EJNHb| zotaz{^ZEV<_q{W7U28~=RkU-4F8UZ?kl~SD(N7;;oMA65yu(|mlGPmNJ{}6mqeurW zRPxqX#wnhnG4_N!OPS!Nuz@?MjBe9LmI*1tdLEz%>Z6qjX9>Td2)n^zCX5=6FoYtm z#9^vQKNfNi#nc}(ka8P&iDK+IZKPI)gD8OxkV;v;M+sFROUh(9j}q)GSyCi3hF_0I zH^e$NFQ6AHNQeq!AwMj-bHKF_m&m<01;| z5QZ%Y+_^mV5QTQUz#VN7Mr8sw_7a#LskDPgIB1)U_kh8TIG=&Gq*&d?S zj+_a8%3uBfcXUmDp3gql#OgR-WHOJ{Za&!Vi zDtYSMx!xmA|8wqW15{wf>T$fs0&>)h8ONQ|Pd#y)@0^H^V#a;sTNg>VhJ5SAh?&ki z+(HtzA>W3XfeEXe4_J;Q%yM4PN(^uh{oN$xu6x0;;0*HZ7)j|wz7;T`3;DK#r0hbz zUBQGtxA$CJZ3o=8}|pN;UFrh)|OUWWX!4 zkJw90=%0K^Pk!cO85DPp`=EH)_Nvh_?yE)~6ZRtCdPvGWA3vzUlxSd9hR$xXYPmphe z%qC8Ac!PZFrvgLr$kC6)=>l@pi788wvqs|5jGTRhF}IPUhfE_5wLC(OZeUIua(00@ zTtd!1!<;OA$k|?^_7!s0O$LKnku#4kh|-rRpieRCCURC{Gf~;f5OQ_}vldfA&OF*< zf4IaTA7a>H6xch4z{P^BJuLoaPM*X^7RN!~ql@9@p5$y9AlVcCO>0@aUn6)F_})=5d!!cF{yV zbySa3M?FpKqLX`QO#PgmBg%3XjcfZcE=wMbYu{nseiVBi_tSht>v)D@>`&HE!)4^? zTg+>q2gTGK<^xcJ(tJeK9HN9G?llLf002M%eS>{0;yQ}3t2FR;O8*hTT8b!wdRfCi zDWtDSg)FVyLS=N5&&lv_nkYvE@ChdvKx3?*|Ffv917y&G=Zy00000@CEqi^@gs^ RLQVhx002ovPDHLkV1k|`TW0_O literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_search_white.png b/app/src/main/res/drawable-xxhdpi/ic_search_white.png new file mode 100644 index 0000000000000000000000000000000000000000..4cce1d96fceee7443c3a9c491b1c9b2bbcf63080 GIT binary patch literal 1393 zcmV-%1&;cOP)MhOGprVp7WgPd0(H`_xXIJAP9mW2!bF8f*=Tj zAP53)P|GV6I7~l7Tw#<+Ci#oY4AIYFI#|J@$|9z-l8?AZgiFLA2Ux*$Wd%$5gsV)| zAM~zXq4rjO@r)eRlhY=OL%`oLK#40^(Sj^9q(+|9$hXpn4WrA`WXAjj%KNfO< zxco+g(v5eyNt~|JqO_udT_juNgxxrccl8M|@bQ<<=uaqLdXPrQv?#Cs|uRuf_Oru@S+hOui`nNh%QkeqzO zJJ=mj4EP$mRq_qLVl&JP#ei9iVDpRo!cy#(DJCq(?nU{8Pq6u1G2$pT2jvf@a}~2u z9#@Qbk}=G#P$^%q5}SjH8GYC^%NKlvSwy{J#sVVD_Q@Aq#H?Ql;5*FD$q&pS!fcHa zz&gw(c|<p`vVfM0oKmoI}N(kpMYnKl=jM;uAgdWWLYg4ui}gnG;_$p?&LR;z?ihuIDJfJw}%ln|;hn~)Ef#H>mQp&GLZ z`GCJLt5rg%!|bMfz-7$lD92(v~dgeJ@e{=0f#X=poGwa zS+9IR2WA6G2p2GGlMh&dS;QPAfVtQ-%LmjFVYXHYU_E9Lv*iZ{F*~UQ@I7W{*?dEBUGf># zoTIoAmg^qT% zN)hoL>v&8>Fqie5BBB%nR4Fa!qf`;+>7kV->ZzleYU-$`iB@{Jz|?$8mC}J6U+`dc z%Wvf9<-yt^-_cF{A}(UHL%!oJt`Vm{d5s#5W3yepqk#e9a)t%^7d6;zm+z=%H{+Ds z7(1!de<)^~{Kq0rQBEgm&>bjlo6>+c8KfM}@tW>}%T}cUIacut_v1(2phEwH+g7Co zFL977Ox0yRW|1t|iCdS_gG!p&$2lf(i5OrXO;oBVx^e4L+VBW3(@q~J7~~Q+m|%jN zTw;*p^wLH%vsEIxaqCo;u>-eGWf?ng+oCLEJ8oN)Wo*Z7v$BkBxD}LTY{RXfEMqHf z9m+Dc;?|)oqYJl9$}+le+oUX`6Ss}ZGPdBhQCY?o+}f38Y{so!S;l7E+LUD!aBEYR zQNS&)ETaRryt0fAT=L2`Hc?Do0h_SNE4YP?nB*1Q#zyXzS8ylVxl>-j-Du~wyaE&2 zxFxT^hCF!%K@bE%5ClOG1VIo4K@bE%kaqt7Ln!qi{w)PxUQs8v@pqj(7m7h^i#c|{Bc}fD(+JYZh!&Dv=b0{`(G)AO~|7m{gDSjgD z{asPng0gczPw~Y3I4F@`@Gf`8Oc=0rGl^V$mQ&VktMoa`q;5^Am7aeOt5}O%S=v+^ z^_?+lf%n~4n{0G0Se0Md?0=X+x4^wNT8hQQbGp^_g)`Z2EqwR(X~Qg$D|?&5q%wFn zoHYrM-f-CD0%t;c<^sOIzbzMC-v8PpVAZh>Kcz+%ArFN{mZ~b{2@XuGiUED>3M{8S zGPF2w&J&sF;Fzx%!0+GXu|OeILBMg{3hMxa6%wTjCRIB*Fmb8?b#Q*^dA=vHQ@=($ z<3iN?n~McB_FvQPW0Bf&ja`rR)cUW};+dXapXDdO`KA0`p=Lnc+WrQIn?KF696p|K zxGeG~Iz&>#tD@w_^6e|M0vtFUKL3di5!6^9vcRxzN#`nN5mmdn^-JReRTne}HHN*2 z4`J0<5V9aL$W^p~$&0PZaaYAF2gaq$y@#1QSU!o(*7z*;xqZw3v%k9^mCZZu-g}w- z!;cNGUiUT2^y{BV(P*;ktn5>ND%EyiR|Zr}N;N2-D7;owpzF zI5;V~1QHzJFe!2Vujf|$ZvV^wmeXv_9&t36No8<1_nKUo(k@@2lI! z=W{#KLUupvF_Si7mrs4e0k#fASVE%%$Uc{#@SML(BLBP0eda7+l4bC8^>bP0l+XkK D1}QWF literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_video_collection.png b/app/src/main/res/drawable-xxhdpi/ic_video_collection.png new file mode 100644 index 0000000000000000000000000000000000000000..275c64fc62d23ddb83c8babba4f5db7b42dd4907 GIT binary patch literal 972 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q1xWh(YZ(J6g=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&_}|`tWO>_%)r1c48n{Iv*t)J zFfhA#x;TbZ+eP-@A4y*P35qiQZI;{Dy%O7Los z-O)(_x^I*17_VM>->kIy*aZ!@(B8$9`&LMuUm@sex-3$sD=X%37R%Ki%PP~aO02hz z34OeWzbK^l`=K+Qrq85Z#joyIA0r#`c>iRxFx__V>fo!NZe&TUns)xyagVKYz9p%x zdb-uZBtUon*{q|hp6;kx7h?MM+3_Xw9%gHOkn3KxVAGn%!KD>Ns~1?>9FEm|wkWKw zD|Ag*oM_5|Fuw+$E2rEImA8Icq2Ro=h#_T_*#4wrS%u*fnxoD%#9Vn4dd5@t99L0D zx8Q`;Q8itbtB-~{3SLQK5^>d)JF2wuXrQCu)g%Uy(6wJgyVr!>5}nczrOE8&w6;Xl z+huKu_KV6W`@XWzOezj=^nbQ-7GL_ehPEpWZQmN$t~BtyVf?z1@$GHqS4l42=`HhY z7bMp#V7+p9<8j0No%5$u_-vkK4l+|6r?;zrCw*UAp?-Ueh@OCrjCH z-&=evTBO3gU{UV{SHX313SV9Zr2ZG!V0Q6xyqmPH&Z5SfPujW^`8LQ~?X+RYj1X0D zg(ou*W6Gx~|Cz2@F8iP5=B;b`noDX`)u9HqCSkTK;&TiXp4m?4Uf}$O)Bnee^t;77 z8LbXEGjf@Ct#`6^XJl&7Ez#SS@z}lh`i`!9M{O@=3BT)_9pTE&DrHjd5%-x@<){dw ikOCY5?On0!596Bu8!IfVD_;RK8H1;*pUXO@geCw(OrU81 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_view_list_black.png b/app/src/main/res/drawable-xxhdpi/ic_view_list_black.png new file mode 100644 index 0000000000000000000000000000000000000000..90591cc54546d1544f82b18b2553b8ca88aa3003 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^6F``e8A#skDEJMe*aCb)T!AzYEKT2e9!N2k1o;Is zI6S+N2IOdYx;TbZFeWQV_cR55`2WBD+5dnK=^R|WT)oTY1TMTd#aN`pE%=;<1S`Wt W?U-{~0#qdZ;xT-G@yGywpAd?rW$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/custom_border.xml b/app/src/main/res/drawable/custom_border.xml new file mode 100644 index 0000000..f613773 --- /dev/null +++ b/app/src/main/res/drawable/custom_border.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/search_list.xml b/app/src/main/res/drawable/search_list.xml new file mode 100644 index 0000000..c75b725 --- /dev/null +++ b/app/src/main/res/drawable/search_list.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-xlarge/fragment_livelist_list.xml b/app/src/main/res/layout-xlarge/fragment_livelist_list.xml new file mode 100644 index 0000000..7ffcd85 --- /dev/null +++ b/app/src/main/res/layout-xlarge/fragment_livelist_list.xml @@ -0,0 +1,52 @@ + + + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..f0eff4c --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_open_lp.xml b/app/src/main/res/layout/activity_open_lp.xml new file mode 100644 index 0000000..075dbc4 --- /dev/null +++ b/app/src/main/res/layout/activity_open_lp.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/alert_display_dialog.xml b/app/src/main/res/layout/alert_display_dialog.xml new file mode 100644 index 0000000..1221fbc --- /dev/null +++ b/app/src/main/res/layout/alert_display_dialog.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/blank_display_dialog.xml b/app/src/main/res/layout/blank_display_dialog.xml new file mode 100644 index 0000000..a7f7397 --- /dev/null +++ b/app/src/main/res/layout/blank_display_dialog.xml @@ -0,0 +1,60 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml new file mode 100644 index 0000000..ce62439 --- /dev/null +++ b/app/src/main/res/layout/fragment_about.xml @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_empty.xml b/app/src/main/res/layout/fragment_empty.xml new file mode 100644 index 0000000..5b483d2 --- /dev/null +++ b/app/src/main/res/layout/fragment_empty.xml @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml new file mode 100644 index 0000000..974c838 --- /dev/null +++ b/app/src/main/res/layout/fragment_home.xml @@ -0,0 +1,22 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_item_list.xml b/app/src/main/res/layout/fragment_item_list.xml new file mode 100644 index 0000000..dc2e589 --- /dev/null +++ b/app/src/main/res/layout/fragment_item_list.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/app/src/main/res/layout/fragment_livelist_list.xml b/app/src/main/res/layout/fragment_livelist_list.xml new file mode 100644 index 0000000..9f13d27 --- /dev/null +++ b/app/src/main/res/layout/fragment_livelist_list.xml @@ -0,0 +1,43 @@ + + + + + + + diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml new file mode 100644 index 0000000..cb95de8 --- /dev/null +++ b/app/src/main/res/layout/fragment_main.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/src/main/res/layout/fragment_navigation_drawer.xml b/app/src/main/res/layout/fragment_navigation_drawer.xml new file mode 100644 index 0000000..c05742d --- /dev/null +++ b/app/src/main/res/layout/fragment_navigation_drawer.xml @@ -0,0 +1,5 @@ + diff --git a/app/src/main/res/layout/fragment_navigation_drawer_list.xml b/app/src/main/res/layout/fragment_navigation_drawer_list.xml new file mode 100644 index 0000000..50ff6f5 --- /dev/null +++ b/app/src/main/res/layout/fragment_navigation_drawer_list.xml @@ -0,0 +1,50 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/fragment_search.xml new file mode 100644 index 0000000..fe7c04e --- /dev/null +++ b/app/src/main/res/layout/fragment_search.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_service_list.xml b/app/src/main/res/layout/fragment_service_list.xml new file mode 100644 index 0000000..56d6025 --- /dev/null +++ b/app/src/main/res/layout/fragment_service_list.xml @@ -0,0 +1,48 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_servicelist_list.xml b/app/src/main/res/layout/fragment_servicelist_list.xml new file mode 100644 index 0000000..6cbee56 --- /dev/null +++ b/app/src/main/res/layout/fragment_servicelist_list.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/layout/fragment_web.xml b/app/src/main/res/layout/fragment_web.xml new file mode 100644 index 0000000..44b7c6f --- /dev/null +++ b/app/src/main/res/layout/fragment_web.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/search_action_dialog.xml b/app/src/main/res/layout/search_action_dialog.xml new file mode 100644 index 0000000..b210efb --- /dev/null +++ b/app/src/main/res/layout/search_action_dialog.xml @@ -0,0 +1,40 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/search_result.xml b/app/src/main/res/layout/search_result.xml new file mode 100644 index 0000000..684cb15 --- /dev/null +++ b/app/src/main/res/layout/search_result.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/search_result_row.xml b/app/src/main/res/layout/search_result_row.xml new file mode 100644 index 0000000..e378e2a --- /dev/null +++ b/app/src/main/res/layout/search_result_row.xml @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/spinner_dropdown_item.xml b/app/src/main/res/layout/spinner_dropdown_item.xml new file mode 100644 index 0000000..42fcee9 --- /dev/null +++ b/app/src/main/res/layout/spinner_dropdown_item.xml @@ -0,0 +1,11 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/spinner_list_item.xml b/app/src/main/res/layout/spinner_list_item.xml new file mode 100644 index 0000000..d76b839 --- /dev/null +++ b/app/src/main/res/layout/spinner_list_item.xml @@ -0,0 +1,11 @@ + + \ No newline at end of file diff --git a/app/src/main/res/menu/global.xml b/app/src/main/res/menu/global.xml new file mode 100644 index 0000000..326a6a7 --- /dev/null +++ b/app/src/main/res/menu/global.xml @@ -0,0 +1,5 @@ +

+ + diff --git a/app/src/main/res/menu/menu_.xml b/app/src/main/res/menu/menu_.xml new file mode 100644 index 0000000..0ec6df8 --- /dev/null +++ b/app/src/main/res/menu/menu_.xml @@ -0,0 +1,6 @@ + + + diff --git a/app/src/main/res/menu/open_l.xml b/app/src/main/res/menu/open_l.xml new file mode 100644 index 0000000..5314e4a --- /dev/null +++ b/app/src/main/res/menu/open_l.xml @@ -0,0 +1,27 @@ + + + + + + + diff --git a/app/src/main/res/values-af/strings.xml b/app/src/main/res/values-af/strings.xml new file mode 100644 index 0000000..ee41299 --- /dev/null +++ b/app/src/main/res/values-af/strings.xml @@ -0,0 +1,54 @@ + + + OpenLP is \'n gratis kerk skyfievertoning sagteware + Besoek die OpenLP webwerf vir meer inligting + Kopiereg + Gedeeltelike kopiereg + Lisensie + Hierdie program is gratis; jy kan dit herversprei of verander volgens die GNU Algemene Publieke Lisensie se voorwaardes, wat gepubliseer is deur die Free Software Foundation; weergawe 2 van die lisensie. + Hierdie program word versprei met die hoop dat dit nuttig sal wees, maar SONDER ENIGE WAARBORG; selfs sonder \'n geimpliseerde waarborg dat dit TOEPASLIK IS VIR \'N SPESIFIEKE DOEL + Instellings + Aangaande + Waarskuwing + Terug + Voorkeure + Verfris + Soek + OpenLP + Kanselleer + Konfigureer Netwerk + Wagwoord + Bediener Inligting + Konneksie Tyd-uitloop + Kies \'n waarde (millisekondes) + Gebruikernaame + Stel pasgemaakte tyd afsnypunt + Kies die verlangde skerm + Vertoon Werkvlak agtergrond + Laat die gekose item toe om na die middel van die lys te beweeg + Vertoon lewendige skerm + Vertoon Verstelling + Vertoon slegs Swart skerm + Vertoon slegs Tema + Bekragtig Aangepasde Tyd-uitlope + Voer Afkondiging teks in + Laat skerms toe op outomatiese te sentreer + Tuis + Ongemagtigde Toegang, voer asb \'n geldige gebruikernaam en wagwoord in. + Lewendige Vertoonlys + Lewendige Kykskerm + Maak navigeer vouer oop + Sluit navigeer vouer + Volgende + Geen + Poort + Vorige + Voer uit + Orde van diens + Verhoog skerm + Kies die grootte van die vertoning-teks + Verander die Diens teks grootte + Instellings + Gasheer naam of IP + Kan nie die versoek uitvoer nie - gaan jou netwerk verstellings na + diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml new file mode 100644 index 0000000..b7eb7e6 --- /dev/null +++ b/app/src/main/res/values-bg/strings.xml @@ -0,0 +1,25 @@ + + + Копирайт + Копирайт за отделни части + Лиценз + Настройки + Относно + Сигнал + Предпочитания + Обнови + Търсене + OpenLP + Откажи + Времето за изчакване на свързването + Избери стойност (в милисекунди) + Активирай клиентски срокове + Начало + След. + Нищо + Порт + назад + Промени размера на текста за Службата + Настройки + Hostname или IP + diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml new file mode 100644 index 0000000..5a23b84 --- /dev/null +++ b/app/src/main/res/values-cs/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP je volně dostupná křesťanská prezentační aplikace + Pro více informací navštivte OpenLP stránky + Autorská práva + Částečná autorská práva + Licence + Tento program je svobodný software; můžete jej šířit a modifikovat podle ustanovení GNU General Public License, vydávané Free Software Foundation; a to podle verze 2 této licence + Tento program je šířen v naději, že bude užitečný, avšak BEZ JAKÉKOLI ZÁRUKY; neposkytují se ani odvozené záruky PRODEJNOSTI anebo VHODNOSTI PRO URČITÝ ÚČEL + Nastavení + O aplikaci + Upozornění + Zpět + Změnit zobrazení + Nastavení + Obnovit + Hledat + OpenLP + Zrušit + Nastavení sítě + Heslo + Podrobnosti serveru + Časový limit spojení + Vybrat hodnotu (milisekundy) + Uživatelské jméno + Nastavit uživatelský časový limit + Vybrat požadované zobrazení + Zobrazit pozadí plochy + Povolit vybrané položce rolovat na střed seznamu + Zobrazit naživo + Nastavení zobrazení + Zobrazit jen černou + Zobrazit jen motiv + Zapnout uživatelský časový limit + Vložit text upozornění + Povolit automatické centrování obrazovky + Domů + Neoprávněný přístup, zadejte prosím správné uživatelské jméno a heslo + Seznam naživo + Zobrazení naživo + Otevřít navigační panel + Zavřít navigační panel + Další + Žádný + Port + Předchozí + Zpracovat + Seznam služby + Zobrazení na pódiu + Vybrat velikost zobrazeného textu + Změnit velikost textu služby + Nastavení + Jméno počítače nebo IP + Není možné vykonat požadavek - prověřte nastavení sítě + diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml new file mode 100644 index 0000000..ab1e067 --- /dev/null +++ b/app/src/main/res/values-da/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP er et frit og gratis præsentationsprogram til kirker. + Besøg OpenLP\'s hjemmside for at lære mere + Ophavsret + Delvis ophavsret + Licens + Dette program er fri software; du kan redistribuere det og/eller ændre det under vilkårene angivet i GNU General Public License, som er udgivet af Free Software Foundation; udgave 2 af licensen. + Dette program er udgivet i håbet om at det må være brugbart, men UDEN NOGEN GARANTI; endda uden den underforståede garanti om SALGBARHED eller BRUGBARHED TIL ET BESTEMT FORMÅL. + Indstillinger + Om + Meddelelse + Tilbage + Skift skærm + Indstillinger + Opdatér + Søg + OpenLP + Annullér + Konfigurér netværk + Adgangskode + Serverdetaljer + Timeout for forbindelse + Vælg en værdi (millisekunder) + Brugernavn + Sæt brugerdefineret timeout + Vælg den ønskede skærm + Vis skrivebordsbaggrund + Tillad centrering af det valgte element + Vis fremvisningsskærm + Visningsindstillinger + Vis kun sort + Vis kun temabaggrund + Aktiver brugerdefinerede timeouts + Indtast meddelelsestekst + Tiilad autocentrering + Hjem + Adgang ikke godkendt. Indtast gyldigt brugernavn og adgangskode + Fremvisningsliste + Præsentationsvisning + Åbn navigationsskuffe + Luk navigationsskuffe + Næste + Ingen + Port + Forrige + Proces + Programoversigt + Scenevisning + Vælg tekststørrelse til visning + Ændr programmets tekststørrelse + Indstillinger + Værtsnavn eller IP + Kunne ikke udføre forespørsel - tjek netværksindstillingerne + diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml new file mode 100644 index 0000000..81177c1 --- /dev/null +++ b/app/src/main/res/values-de/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP ist eine freie Präsentationssoftware für Kirchen und Gemeinden. + Weitere Informationen sind auf der OpenLP Webseite zu finden. + Urheberrecht + Anteiliges Urheberrecht + Lizenz + Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License Version 2, herausgegeben von der Free Software Foundation, weitergeben und/oder modifizieren. + Dieses Programms wird in der Hoffnung zur Verfügung gestellt, dass es Ihnen von Nutzen sein wird, aber OHNE JEDE GEWÄHRLEISTUNG; auch ohne einer implizite Gewährleistung von MARKTREIFE oder der EIGNUNG FÜR EINEN BESTIMMTEN ZWECK + Einstellungen + Über + Hinweis + Zurück + Anzeige umschalten + Einstellungen + Aktualisieren + Suche + OpenLP + Abbruch + Netzwerk einrichten + Passwort + Server-Einstellungen + Verbindungzeit überschritten + Wähle einen Wert (in Millisekunden) + Benutzername + Setze benutzerdefiniertes Zeitlimit + Wähle die erforderlichen Ansicht + Bildschirmhintergrund anzeigen + Ausgewähltes Item mittig in Liste + Live-Ansicht anzeigen + Anzeigeeinstellung + Abdunkeln + Nur Design anzeigen + Aktiviere eigene Time-outs + Hinweis eingeben + Anzeigen automatisch zentrieren + Start + Zugriff nicht erlaubt, bitte einen gültigen Benutzernamen und das korrekte Passwort eingeben + Live Liste + Echtzeit-Anzeige + Navigationsleiste anzeigen + Navigationsleiste verbergen + Vorwärts + Nichts + Port + Zurück + Verarbeite + Ablaufliste + Bühnenansicht + Textgröße in der Ansicht auswählen + Textgröße des Ablaufs ändern + Einstellungen + Hostname oder IP + Anfrage konnte nicht verarbeitet werden - bitte die Netzwerkeinstellungen überprüfen + diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml new file mode 100644 index 0000000..58156f3 --- /dev/null +++ b/app/src/main/res/values-el/strings.xml @@ -0,0 +1,25 @@ + + + Πνευματικά δικαιώματα + Τμηματικά πνευματικά δικαιώματα + Άδεια + Ρυθμίσεις + Σχετικά + Ειδοποίηση + Πίσω + Προτιμήσεις + Ανανέωση + Αναζήτηση + OpenLP + Ακύρωση + Λήξη Σύνδεσης + Επιλέξτε μια τιμή (milliseconds) + Επιλέξτε τον απαιτούμενο τύπο κενής σελίδας + Ενεργοποίηση + Αρχική Σελίδα + Κανένα + Θύρα + Αλλάξτε το μέγεθος κειμένου της Λειτουργίας + Ρυθμίσεις + Hostname ή διεύθυνση IP + diff --git a/app/src/main/res/values-en-rGB/strings.xml b/app/src/main/res/values-en-rGB/strings.xml new file mode 100644 index 0000000..4781d34 --- /dev/null +++ b/app/src/main/res/values-en-rGB/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP is free church presentation software + To find out more visit the OpenLP website + Copyright + Portions copyright + License + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE + Settings + About + Alert + Back + Toggle Display + Preferences + Refresh + Search + OpenLP + Cancel + Configure Network + Password + Server Details + Connection Timeout + Select a value (milliseconds) + Username + Set Custom Timeout + Select the required display + Display Desktop background + Allow the selected item to scroll to the centre of the list + Show Live display + Display Setting + Display Black only + Display Theme only + Enable Custom Timeouts + Enter Alert Text + Allow displays to auto center + Home + Unauthorised Access, please enter valid username and password + Live List + Live View + Open navigation drawer + Close navigation drawer + Next + None + Port + Previous + Process + Service List + Stage View + Select display text size + Change the Service text size + Settings + Hostname or IP + Unable to process request - check network settings + diff --git a/app/src/main/res/values-en-rZA/strings.xml b/app/src/main/res/values-en-rZA/strings.xml new file mode 100644 index 0000000..aec71ad --- /dev/null +++ b/app/src/main/res/values-en-rZA/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP is free church presentation software + To find out more visit the OpenLP website + Copyright + Portions copyright + License + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE + Settings + About + Alert + Back + Toggle Display + Preferences + Refresh + Search + OpenLP + Cancel + Configure Network + Password + Server Details + Connection Timeout + Select a value (milliseconds) + Username + Set Custom Timeout + Select the required display + Display Desktop background + Allow the selected item to scroll to the centre of the list + Show Live display + Display Setting + Display Black only + Display Theme only + Enable Custom Timeouts + Enter Alert Text + Allow displays to auto centre + Home + Unauthorised Access, please enter valid username and password + Live List + Live View + Open navigation drawer + Close navigation drawer + Next + None + Port + Previous + Process + Service List + Stage View + Select display text size + Change the Service text size + Settings + Hostname or IP + Unable to process request - check network settings + diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml new file mode 100644 index 0000000..375bb89 --- /dev/null +++ b/app/src/main/res/values-es/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP es un software de proyección gratuito para iglesias. + Para más información sobre OpenLP visite el sitio web. + Copyright + Partes copyright + Licencia + Este es un programa gratuito; usted puede distribuirlo y/o modificarlo bajo los términos de GNU General Public License según la publicación de Free Software Foundation; versión 2 de la Licencia. + Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA, incluso sin la garantía implícita de COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. + Preferencias + Acerca de + Alerta + Atrás + Alternar Pantalla + Preferencias + Actualizar + Buscar + OpenLP + Cancelar + Configurar Red + Clave + Detalles de Servidor + Tiempo de espera de conexión + Seleccione un valor (en milisegundos) + Usuario + Tiempo de espera personalizado + Seleccionar la pantalla requerida + Mostrar Fondo del Escritorio + Permitir que el elemento actual se desplace hacia el centro de la lista + Mostrar pantalla En Vivo + Preferencias de pantalla + Mostrar Negro solamente + Mostrar Tema solamente + Permitir tiempos de espera personalizados + Ingrese Texto de Alerta + Permitir auto centrado de pantalla + Inicio + Acceso No Autorizado, ingrese usuario y clave válidos + Lista En Vivo + Vista En Vivo + Abrir cajón de navegación + Cerrar cajón de navegación + Siguiente + Ninguno + Puerto + Anterior + Procesar + Lista de Servicio + Vista de Escenario + Seleccione tamaño del texto + Cambia el tamaño de texto del Servicio + Preferencias + Nombre de host o IP + No se pudo procesar la solicitud - revise la configuración de red + diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml new file mode 100644 index 0000000..f884ac0 --- /dev/null +++ b/app/src/main/res/values-et/strings.xml @@ -0,0 +1,52 @@ + + + OpenLP on vaba kiriku esitlustarkvara + Rohkem saab teada OpenLP veebilehelt + Autoriõigused + Osalised autoriõigused + Litsents + Sätted + Rakendusest + Teade + Tagasi + Kuva vahetus + Eelistused + Värskenda + Otsi + OpenLP + Loobu + Seadista võrk + Parool + Serveri andmed + Ühenduse aegumine + Vali kestus (millisekundid) + Kasutajanimi + Päringu aegumine + Vali nõutud kuva + Töölaua tausta näitamine + Laivi kuva + Kuvasätted + Kuva musta + Kuva ainult teemat + Kohandatud aegumisegade kasutamine + Hoiatuse tekst + Kuvad võivad automaatselt paigutuda keskele + Kodu + Lubamatu ligipääs, palun sisesta õiged kasutajanimi ja parool. + Ekraanil + Ekraan + Ava navisahtel + Sulge navisahtel + Järgmine + Puudub + Port + Eelmine + Töötlemine + Teenistuste loend + Lavavaade + Teksti suurus + Vaikimisi teenistuse teksti suuruse muutmine + Sätted + Hostinimi või IP + Päringu töötlemine on võimatu - kontrolli võrgusätteid + diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml new file mode 100644 index 0000000..8f049ce --- /dev/null +++ b/app/src/main/res/values-fi/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP on vapaalevitteinen seurakuntien esitysohjelmisto. + Lisätietoja löytyy OpenLP verkkosivulta + Tekijäinoikeudet + Osien tekijäinoikeudet + Lisenssi + Tämä ohjelma on vapaa, voit jakaa ja / tai muuttaa sitä ehtojen mukaisesti GNU General Public Licensen julkaissut Free Software Foundation, version 2 lisenssillä. + Tätä ohjelmaa levitetään siinä toivossa, että se olisi hyödyllinen, mutta ilman mitään takuuta; ilman edes hiljaista takuuta kaupallisesti hyväksyttävästä laadusta tai soveltuvuudesta tiettyyn tarkoitukseen. + Asetukset + Tietoja + Huomioviesti + Takaisin + Näytä tai piilota näyttö + Asetukset + Päivitä + Etsi + OpenLP + Peruuta + Verkon asetukset + Salasana + Palvelimen asetukset + Yhteyden aikakatkaisu + Valitse arvo (millisekuntia) + Käyttäjätunnus + Säädä mukautettu aikakatkaisu + Valitse vaadittu näyttölaite + Näytä työpöydän tausta + Salli valittavan nimikkeen vierittäminen luettelon keskimmäiseksi + Näytä Esitys näyttö + Näytön asetukset + Näytä vain pimennys + Näytä vain teema + Salli mukautetut viiveet + Kirjoita huomioviesti tähän + Salli näyttöjen automaattinen keskitys + Koti + Ei pääsyä, ole hyvä ja anna kelvollinen käyttäjätunnus ja salasana + Lista + Esitysnäkymä + Avaa navigointi + Sulje navigointi + Seuraava + Ei mitään + Portti + Edellinen + Prosessoi + Palveluluettelo + Lavanäyttö + Valitse näyttötekstin koko + Vaihda palvelun tekstikokoa + Asetukset + Koneen nimi tai IP + Pyyntöä ei voi käsitellä - tarkista verkkoasetukset + diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml new file mode 100644 index 0000000..9fcc28b --- /dev/null +++ b/app/src/main/res/values-fr/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP est un logiciel de projection libre + Pour en savoir plus visitez le site web d\'OpenLP + Copyright + Copyright partiel + Licence + Ce programme est un logiciel libre; vous pouvez le redistribuer et/ou le modifier au titre des clauses de la Licence Publique Générale GNU, telle que publiée par la Free Software Foundation; version 2 de la Licence. + Ce programme est distribué dans l\'espoir qu\'il sera utile, mais SANS AUCUNE GARANTIE ; sans même une garantie implicite de COMMERCIABILITÉ ou DE CONFORMITÉ À UNE UTILISATION PARTICULIÈRE. + Paramètres + A propos de + Alerte + Arrière + Afficher/Masquer + Préférences + Rafraîchir + Recherche + OpenLP + Annuler + Configuration du réseau + Mot de passe + Détails du serveur + Délai de connexion + Sélectionnez une valeur (millisecondes) + Nom d\'utilisateur + Définir un délai personnalisé + Sélectionner l\'affichage souhaité + Afficher le fond du bureau + Permettre à l\'élément sélectionné de défiler au centre de la liste + Afficher le direct + Paramètres d\'affichage + Afficher un écran noir + Afficher uniquement le thème + Activer le délai personnalisé + Entrer le message d\'alerte + Permettre les affichages au centre + Accueil + Accès refusé, veuillez entrer un nom d\'utilisateur et un mot de passe valide + Liste du direct + Vue du direct + Ouvrir le tiroir de navigation + Fermer le tiroir de navigation + Suivant + Rien + Port + Précédent + Processus + Liste du service + Prompteur + Sélectionner la taille du texte + Modifier la taille du texte du service + Paramètres + Nom d\'hôte ou IP + Impossible d\'effectuer la demande - vérifiez les paramètres réseau + diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml new file mode 100644 index 0000000..eeeb58c --- /dev/null +++ b/app/src/main/res/values-hu/strings.xml @@ -0,0 +1,55 @@ + + + Az OpenLP egy templomi/gyülekezeti vetítő szoftver. + További információk az OpenLP-ről a weboldalon + Szerzői jog + Részleges szerzői jog + Licenc + Ez egy szabad szoftver; terjeszthető illetve módosítható a GNU Általános Közreadási Feltételek dokumentumában leírtak szerint - 2. verzió -, melyet a Szabad Szoftver Alapítvány ad ki + Ez a program abban a reményben kerül közreadásra, hogy hasznos lesz, de minden egyéb GARANCIA NÉLKÜL, az eladhatóságra vagy valamely célra való alkalmazhatóságra való származtatott garanciát is beleértve + Beállítások + Névjegy + Riasztás + Vissza + Megjelenítés átváltása + Beállítások + Frissítés + Keresés + OpenLP + Mégsem + Hálózat beállítása + Jelszó + Szerver részletek + Kapcsolódási időtúllépés + Érték választása (milliszekundum) + Felhasználói név + Egyéni időtúllépés beállítása + Kívánt megjelenés kiválasztása + Asztal hátterének megjelenítése + Görgetés a lista közepére a kijelölt elemhez + Élő adás megjelenítése + Megjelenítési beállítás + Elsötétített képernyő megjelenítése + Téma megjelenítése + Egyéni időtúllépés engedélyezése + Riasztási üzenet megadása + Megjelenés automatikus középre igazítása + Kezdőlap + Engedély nélküli hozzáférés, érvényes a felhasználói név és a jelszó? + Élő lista + Élő nézet + Menü megnyitása + Menü bezárása + Következő + Nincs + Portszám + Előző + Folyamatban + Sorrend + Színpadi nézet + Betűméret választása + Sorrend betűméretének módosítása + Beállítások + Gépnév vagy IP-cím + A kérés feldolgozhatatlan ‒ a hálózati beállítások ellenőrzése javasolt + diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml new file mode 100644 index 0000000..bc17607 --- /dev/null +++ b/app/src/main/res/values-id/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP adalah perangkat lunak presentasi gratis untuk gereja + Untuk mengetahui lebih lanjut, kunjungi situs OpenLP + Hak Cipta + Bagian hak cipta + Lisensi + Program ini adalah perangkat lunak gratis; Anda dapat menyebarluaskannya dan / atau memodifikasinya di bawah ketentuan GNU General Public License sebagaimana diterbitkan oleh Free Software Foundation; versi 2 dari Lisensi tersebut. + Program ini disebarluaskan dengan harapan bahwa akan berguna, tetapi TANPA JAMINAN APAPUN; bahkan tanpa jaminan yang termasuk pada PERDAGANGAN atau KECOCOKAN UNTUK SUATU TUJUAN TERTENTU. + Setelan + Tentang + Peringatan + Kembali + Ganti Tampilan + Pilihan + Segarkan-ulang + Penelusuran + OpenLP + Batal + Mengkonfigurasi Jaringan + Kata sandi + Rincian Server + Batas-Waktu Sambungan + Pilih sebuah nilai (milidetik) + Nama Pengguna + Setel Batas-waktu Kustom + Pilih tampilan yang dibutuhkan + Tampilkan latar Desktop + Izinkan butir terpilih untuk digulir ke tengah daftar + Tampilkan tampilan Tayang + Setelan Tampilan + Tampilkan Layar Hitam saja + Tampilkan Tema saja + Aktifkan Batas-Waktu Kustom + Masukkan Teks Peringatan + Izinkan semua tampilan diposisikan ke tengah secara otomatis + Beranda + Akses Tidak sah, silakan masukkan nama pengguna dan kata sandi yang valid + Daftar Tayang + Tinjauan Tayang + Buka penarik navigasi + Tutup penarik navigasi + Selanjutnya + Tidak sama sekali + Port + Sebelumnya + Proses + Daftar Layanan + Tinjuan Bertahap + Pilih tampilan ukuran teks + Ubah ukuran teks Layanan + Setelan + Nama Host atau IP + Tidak dapat memproses permintaan - periksa setelan jaringan + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml new file mode 100644 index 0000000..6322f06 --- /dev/null +++ b/app/src/main/res/values-it/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP è un software libero di presentazione per le Chiese + Per saperne di più visita il sito Web OpenLP + Copyright + Porzioni di copyright + Licenza + Questo è un software libero; può essere redistribuito e/o modificato nei termini della GNU General Public License come pubblicato dalla Free Software Foundation; vesione 2 della licenza + Questo programma è distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA, senza neppure l\'implicita garanzia della COMMERCIABILITA\' o IDONEITA\' PER UN PARTICOLARE SCOPO + Impostazioni + Informazioni + Avviso + Indietro + Attiva/disattiva visualizzazione + Preferenze + Aggiorna + Ricerca + OpenLP + Annulla + Configura Rete + Password + Dettagli Server + Timeout Connessione + Seleziona un valore (millisecondi) + Nome Utente + Imposta Timeout personalizzato + Selezionare il monitor desiderato + Visualizza sfondo Desktop + Consentire l\'elemento selezionato di scorrere al centro dell\'elenco + Visualizzazione Live Show + Impostazione Visualizzazione + Solo Schermo Nero + Visualizza solo il Tema + Abilitare i timeout personalizzati + Inserisci il testo Avviso + Consenti la visualizzazione al centro automaticamente + Inizio + Accesso non consentito, prego inserire un nome utente e password valida + Elenco LIVE + Visualizza LIVE + Apri sezione navigazione + Chiudi sezione navigazione + Successivo + Nessuno + Porta + Precedente + Elabora + Elenco Servizio + Visualizza Palco + Selezionare la dimensione testo di visualizzazione + Modificare le dimensioni del testo di servizio + Impostazioni + Hostname o IP + Impossibile elaborare la richiesta - controllare le impostazioni di rete + diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml new file mode 100644 index 0000000..0492d4e --- /dev/null +++ b/app/src/main/res/values-ja/strings.xml @@ -0,0 +1,39 @@ + + + OpenLPは無償の教会プレゼンテーション用ソフトです。 + 詳しくはOpenLPウェブサイトをご覧ください。 + 著作権 + 追加の著作権 + ライセンス + このプログラムはフリーソフトウェアです。あなたはこれを、フリーソフトウェア財団によって発行された GNU 一般公衆利用許諾契約書バージョン2の定める条件の下で再頒布または改変することができます。 + このプログラムは有用であることを願って頒布されますが、*全くの無保証* です。商業可能性の保証や特定の目的への適合性は、言外に示されたものも含め全く存在しません。 + 設定 + 情報 + 警告 + 戻る + 設定 + 再読込 + 検索 + OpenLP + キャンセル + ネットワーク設定 + パスワード + サーバの詳細 + 接続タイムアウト + 値を選択 (ミリ秒) + ユーザ名 + 任意のタイムアウト時間を設定する + 任意のタイムアウトを有効にする + 警告文を入力 + ホーム + 認証が必要です。ユーザ名とパスワードを入力してください。 + ライブ一覧 + + 無し + ポート + + 文字の大きさを選択 + 礼拝テキストの大きさを変更します + 設定 + ホスト名またはIPアドレス + diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml new file mode 100644 index 0000000..75b4d4f --- /dev/null +++ b/app/src/main/res/values-ko/strings.xml @@ -0,0 +1,15 @@ + + + 라이선스 + 설정 + 정보 + 알림 + 뒤로 + 새로 고침 + 검색 + 취소 + 처음 + 다음 + 포트 + 설정 + diff --git a/app/src/main/res/values-large/refs.xml b/app/src/main/res/values-large/refs.xml new file mode 100644 index 0000000..04ab57e --- /dev/null +++ b/app/src/main/res/values-large/refs.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml new file mode 100644 index 0000000..6ec47d6 --- /dev/null +++ b/app/src/main/res/values-lt/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP yra, bažnyčioms skirta, nemokama pristatymų programinė įranga + Norėdami sužinoti daugiau, aplankykite OpenLP svetainę + Autorių Teisės + Autorių Teisių dalys + Licencija + Ši programa yra nemokama programinė įranga; jūs galite ją platinti ir/arba modifikuoti remdamiesi Free Software Foundation paskelbtomis GNU Bendrosios Viešosios Licencijos sąlygomis; licencijos 2 versija. + Ši programa platinama, tikintis, kad ji bus naudinga, tačiau BE JOKIŲ GARANTIJŲ; netgi be numanomos PARDAVIMO ar TINKAMUMO TAM TIKRAM TIKSLUI GARANTIJOS + Nustatymus + Apie + Įspėjimas + Grįžti + Perjungti Ekraną + Nuostatos + Įkelti iš naujo + Paieška + OpenLP + Atšaukti + Konfigūruoti Tinklą + Slaptažodis + Išsamiau apie Serverį + Sujungimo Laiko Limitas + Pasirinkite reikšmę (milisekundėmis) + Vartotojo vardas + Nustatyti Pasirinktiną Laukimo Laiką + Pasirinkite reikiamą ekraną + Rodyti Darbalaukio foną + Leisti slinkti pasirinktą elementą į sąrašo centrą + Rodyti Gyvai ekraną + Ekrano Nustatymas + Rodyti tik Juodą + Rodyti tik Temą + Įjungti Pasirinktinius Laiko Limitus + Įveskite Įspėjimo Tekstą + Leisti automatiškai centruoti ekranus + Pradžia + Neleistina Prieiga, prašome įvesti teisingą vartotojo vardą bei slaptažodį + Sąrašas Gyvai + Gyvas Rodinys + Atidaryti naršymo stalčių + Uždaryti naršymo stalčių + Kitas + Joks + Prievadas + Ankstesnis + Vykdyti + Pamaldų Programos Sąrašas + Scenos Rodinys + Pasirinkite rodomo teksto dydį + Keisti Pamaldų programos teksto dydį + Nustatymus + Kompiuterio vardas arba IP + Negalima apdoroti užklausos - patikrinkite tinklo nustatymus + diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml new file mode 100644 index 0000000..5c2f28e --- /dev/null +++ b/app/src/main/res/values-lv/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP ir bezmaksas prezentāciju programma baznīcām + Lai uzzinātu vairāk, apmeklējiet mājaslapu + Autortiesības + Daļu autortiesības + Licence + Šī ir bezmaksas programma. Jūs varat to izplatīt vai mainīt pēc GNU publiskās licences noteikumiem, kas publicēti Free Software Foundation, 2. versijas licencē. + Šī programma ir izplatīta ar cerību, ka tā būs noderīga, bet be jebkādām garantijām par tās noderīgumu mērķim vai ienesīgumu. + Iestatījumi + Par + Ziņojums + Atgriezties + Pārslēgt displeju + Iestatījumi + Atsvaidzināt + Meklēt + OpenLP + Atcelt + Tīkla konfigurācija + Parole + Servera iestatījumi + Savienojuma noildze + Izvēlieties vērtību (milisekundes) + Lietotājvārds + Izvēlieties vēlamo noildzi + Izvēlieties nepieciešamo displeju + Parādīt fona attēlu + Atļaut šim elementa pārvietoties uz saraksta centru + Parādīt displeju + Ekrāna iestatījumi + Attēlot melnu ekrānu + Attēlot tēmas attēlu + Iespējot pielāgotās noildzes + Ievadiet ziņojuma tekstu + Atļaut ekrānam iecentrēties automatiski. + Sākums + Pieeja liegta! Lūdzu ievadiet pareizu lietotājvārdu un paroli. + Saraksts demonstrēšanai + Attēls ekrānā + Atvērt navigācijas slaidni + Aizvērt navigācijas slaidni + Nākamais + Nekas + Ports + Iepriekšējais + Process + Saraksts + Skatuves ekrāns + Izvēlieties teksta lielumu + Izvēlieties dievkalpojuma teksta lielumu + Iestatījumi + Vārds vai IP adrese + Nav iespējams apstrādāt pieprasījumu - pārbaudiet tīkla iestatījumus. + diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml new file mode 100644 index 0000000..dd45d13 --- /dev/null +++ b/app/src/main/res/values-mk/strings.xml @@ -0,0 +1,5 @@ + + + Лиценца + Предупредување + diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml new file mode 100644 index 0000000..5ada11b --- /dev/null +++ b/app/src/main/res/values-ml/strings.xml @@ -0,0 +1,4 @@ + + + ജാഗ്രത + diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml new file mode 100644 index 0000000..bc8c43c --- /dev/null +++ b/app/src/main/res/values-nb/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP er en gratis presentasjonsprogramvare for menigheter + For videre opplysninger besøk OpenLP sin hjemmeside + Copyright + Andel av opphavsrett + Lisens + Dette programmet er gratis programvare; du kan redistribuere det og/eller endre det under betingelsene i GNU General Public License versjon 2, publisert av Free Software Foundation + Dette programmet er distribuert i det håp at det vil være nyttig, men UTEN NOEN FORM FOR GARANTI; heller ingen underforståtte garanti om SALGBARHET eller ANVENDELIGHET FOR ET SPESIELT FORMÅL. + Innstillinger + Om + Melding + Tilbake + Skifte skjermvisning + Innstillinger + Oppdater + Søk + OpenLP + Avbryt + Konfigurer nettverk + Passord + Serverditaljer + Tidsavbrudd for tilkobling + Velg en verdi (millisekund) + Brukernavn + Angi egendefinert tidsavbrudd + Velg ønsket visning + Vis skrivebordsbakgrunn + Tillat valgt punkt å rulle til midt på listen + Vis aktivt bilde + Skjerminnstilling + Vis sort skjerm + Vis tema + Aktiver egendefinerte tidsavbrudd + Skriv meldingstekst + Tillat automatisk sentrering av skjermene + Hjem + Ikke godkjent tilgang, vennligst skriv gyldig brukernavn og passord + Framvisningsliste + Skjermvisning + Åpne navigasjonsmenyen + Lukke navigasjonsmenyen + Neste + Ingen + Port + Forrige + Behandle + Møteprogramliste + Scenevisning + Velg tekststørrelse i skjerm + Endre tekststørrelsen i møteprogrammet + Innstillinger + Vertsnavn eller IP + Kan ikke behandle forespørselen - sjekk nettverksinnstillingene + diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml new file mode 100644 index 0000000..af5c18d --- /dev/null +++ b/app/src/main/res/values-nl/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP is gratis presentatiesoftware voor kerken + Lees meer over OpenLP op de website + Copyright + Onderdelen copyright + Licentie + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE + Instellingen + Over + Waarschuwing + Terug + Scherm leegmaken + Voorkeuren + Vernieuwen + Zoek + OpenLP + Annuleer + Netwerk instellen + Wachtwoord + Serverdetails + Verbindingstimeout + Selecteer een waarde (milliseconden) + Gebruikersnaam + Aangepaste timeout instellen + Selecteer het verplichte scherm + Toon Desktop achtergrond + Toegang geven aan geselecteerde items om naar het midden van de lijst te scrollen + Toon live scherm + Beeldscherminstellingen + Toon alleen zwart + Toon alleen thema + Aangepaste timeouts toestaan + Voer waarschuwingstekst in + Schermen toegang geven tot auto center + Startpagina + Geen toegang, voer juiste gebruikersnaam en wachtwoord in + Live lijst + Live kijken + Open navigatiemenu + Sluit navigatiemenu + Volgende + Niet + Poort + Vorige + Verwerken + Liturgie lijst + Podiumweergave + Selecteer schermtekstgrootte + Verander lettergrootte liturgie + Instellingen + Hostname of IP adres + Kon aanvraag niet behandelen - controleer netwerkinstellingen + diff --git a/app/src/main/res/values-nn/strings.xml b/app/src/main/res/values-nn/strings.xml new file mode 100644 index 0000000..cadb6f2 --- /dev/null +++ b/app/src/main/res/values-nn/strings.xml @@ -0,0 +1,12 @@ + + + Innstillingar. + Varsling + OpenLP + Tidsavbrot for tilkopling + Oppgje ein verdi i millisekund + Neste + Port + Førre + Innstillingar. + diff --git a/app/src/main/res/values-pap/strings.xml b/app/src/main/res/values-pap/strings.xml new file mode 100644 index 0000000..48880b4 --- /dev/null +++ b/app/src/main/res/values-pap/strings.xml @@ -0,0 +1,18 @@ + + + Derecho di outor + Lisensia + Konfigurashon + Informashon + Aviso + Preferensia + Buska + OpenLP + Permití Timeout adaptá + Sigiente + Niun + Port + Bai bèk + Konfigurashon + Hostname òf IP + diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml new file mode 100644 index 0000000..c240f96 --- /dev/null +++ b/app/src/main/res/values-pl/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP jest wolnym programem do obsługi kościelnego projektora + Dowiedz się więcej na stronie OpenLP + Prawa autorskie + Cząstkowe prawa autorskie + Licencja + Ten program jest wolnym oprogramowaniem; możesz go rozprzestrzeniać lub modyfikować zgodnie z zasadami Powszechnej Licencji Publicznej GNU, wydanej przez Fundację Wolnego Oprogramowania; zgodnie z 2 wersją tej Licencji + Ten program jest rozpowszechniany w nadziei, że będzie pożyteczny, ale BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej gwarancji PRZYDATNOŚCI HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ + Ustawienia + O programie + Komunikat + Wróć + Przełącz Ekran + Preferencje + Odśwież + Szukaj + OpenLP + Anuluj + Konfiguruj sieć + Hasło + Szczegóły serwera + Limit czasowy połączenia + Wybierz wartość (milisekundy) + Nazwa użytkownika + Ustaw inny limit czasowy + Wybierz wyświetlacz + Wyświetl tło ekranu + Pozwól wybranemu elementowi przewinąć do środka listy + Pokaż Ekran + Ustawienia wyświetlania + Wyświetl czarny ekran + Wyświetl tylko motyw + Niestandardowy limit czasu + Wpisz tekst komunikatu + Pozwól na autowyśrodkowanie + Home + Nieuprawniony dostęp, proszę wprowadź nazwę użytkownika oraz hasło. + Plan nabożeństwa + Ekran + Otwórz zakładkę nawigacji + Zamknij zakładkę nawigacji + Następny + Nic + Port + Poprzedni + Wyświetl + Plan Nabożeństwa + Scena + Wybierz rozmiar wyświetlanego tekstu + Zmień rozmiar czcionki w Planie Nabożeństwa + Ustawienia + Nazwa hosta lub IP + Nie można wykonać żądania - sprawdź ustawienia sieciowe + diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml new file mode 100644 index 0000000..ce397dc --- /dev/null +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -0,0 +1,55 @@ + + + O OpenLP é um software livre para exibições em igrejas + Para saber mais visite o site do OpenLP + Direitos Autorais + Partes copyright + Licença + Este programa é um software livre; você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU como publicada pela Fundação do Software Livre; na versão 2 da Licença. + Este programa é distribuido na esperança que será útil, mas SEM NENHUMA GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO PARA UM DETERMINADO FIM. Veja abaixo para maiores detalhes. + Configurações + Sobre + Alertar + Voltar + Alternar Monitor + Preferências + Atualizar + Busca + OpenLP + Cancelar + Configurar Rede + Senha + Detalhes do Servidor + Tempo limite de conexão + Selecione um valor (em milissegundos) + Usuário + Ativar Timeout Personalizado + Selecione o monitor requerido + Exibir Plano de Fundo da Área de Trabalho + Permitir ao item selecionado se deslocar ao centro da lista + Mostrar Visualização Ao Vivo + Configurações de Exibição + Exibir Tela Preta + Exibir Tema + Habilitar Timeouts personalizados + Digitar Texto de Alerta + Auto-centralizar slides na tela + Home + Acesso não autorizado, por favor, digite usuário e senha válidos + Lista Ao Vivo + Ao vivo + Abrir painel de navegação + Fechar painel de navegação + Próximo + Nenhum + Porta + Anterior + Processo + Lista de Serviço + Visualização de Palco + Selecionar tamanho do monitor de exibição + Alterar o tamanho do texto de culto + Configurações + Hostname ou IP + Não é possível processar o pedido - verifique as configurações de rede + diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml new file mode 100644 index 0000000..fdb4389 --- /dev/null +++ b/app/src/main/res/values-ro/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP este un program gratuit de prezentare pentru biserică + Pentru a afla mai multe vizitați pagina web OpenLP + Drepturi de autor + Drepturi de autor pentru bucăți + Licența + Acest program este gratuit; puteți să îl redistribuiți și/sau să îl modificați în termenii GNU General Public License cum au fost publicați de Free Software Foundation; versiunea 2 a Liceței + Acest program este distribuit în speranța că va fi folositor, dar FĂRĂ NICI O GARANȚIE; nici măcar a garanției implicite de COMERCIALIZARE sau POTRIVIRE PENTRU UN ANUMIT SCOP + Setări + Despre + Anunț + Înapoi + Schimbă Ecranul + Preferințe + Reîncărcare + Căutare + OpenLP + Anulare + Configurează Rețeaua + Parola + Detalii Server + Conexiunea a expirat + Selectați o valoare (milisecunde) + Nume utilizator + Stabiliți timp personalizat de expirare + Selectați ecranul necesar + Afișați fundalul spațiului de lucru + Permite elementului selectat să se deplaseze în mijlocul listei + Afișați ecranul \"În direct\" + Setare de Afișare + Afișați numai negru + Afișați numai tema + Activează timp de expirare personalizat + Introduceți textul Anunțului + Permite ecranelor să se auto-centreze + Acasă + Acces neautorizat, vă rog introduceți numele de utilizator și parola corecte. + Lista În direct + Vizualizare În direct + Deschide bara de navigare + Închide bara de navigare + Următor + nimic + Port + Anterior + Proces + Lista de Serviciu + Vizualizare pentru Scenă + Selectați mărimea textului afișat + Schimbați mărimea textului Serviciului + Setări + Hostname sau IP + Nu se poate procesa cererea - verificați setările de rețea + diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml new file mode 100644 index 0000000..44c5123 --- /dev/null +++ b/app/src/main/res/values-ru/strings.xml @@ -0,0 +1,42 @@ + + + OpenLP является бесплатным церковным программным обеспечением для презентаций + Чтобы узнать больше, посетите веб-сайт OpenLP + Авторские права + Portions copyright + Лицензия + Эта программа является свободным программным обеспечением; Вы можете распространять и / или изменять его в соответствии с условиями GNU General Public License, опубликованной Фондом свободного программного обеспечения, версия 2 Лицензии + Эта программа распространяется в надежде, что она будет полезной, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ + Параметры + О програме + Оповещение + Черный + Переключите экран + Настройки + Обновить + Поиск + OpenLP + Отмена + Настроить сеть + Пароль + Параметры сервера + Время ожидания соединения + Выберите значение (в миллисекундах) + Установить пользовательский тайм-аут + Включить пользовательские тайм-ауты + Введите текст оповещения + Домой + Вид прямого эфира + Следующий + Ничего + Порт + Предыдущий + Выполнение + Список служения + Вид сцены + Выберите размер текста + Изменить размер текста Служения + Параметры + Имя хоста или IP + Невозможно выполнить запрос - проверьте настройки сети + diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml new file mode 100644 index 0000000..ebf8106 --- /dev/null +++ b/app/src/main/res/values-sk/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP je voľne dostupná kresťanská prezentačná aplikácia. + Pre viac informácií navštívte OpenLP web + Autorské práva + Čiastočné autorské práva + Licencia + Tento program je slobodný software; môžete ho šířiť a modifikovať podľa ustanovení GNU General Public License, vydávanej Free Software Foundation; a to podľa verze 2 tejto licencie + Tento program je šírený v nádeji, že bude užitočný, avšak BEZ AKÉJKOĽVEK ZÁRUKY; neposkytujú sa ani odvodené záruky PREDAJNOSTI alebo VHODNOSTI PRE URČITÝ ÚČEL + Nastavenia + O aplikácii + Upozornenie + Naspäť + Zmeniť zobrazenie + Nastavenia + Obnoviť + Hľadať + OpenLP + Zrušiť + Nastavenie sieťe + Heslo + Podrobnosti servera + Časový limit spojenia + Vybrať hodnotu (milisekundy) + Používateľské meno + Nastaviť užívateľský časový limiť + Vybrať požadované zobrazenie + Zobraziť pozadie plochy + Povoliť vybratej položke rolovať na stred zoznamu + Zobraziť naživo + Nastavenie zobrazenia + Zobraziť len čiernu + Zobraziť len motív + Zapnúť užívateľský časový limit + Zadať text upozornenia + Povoliť automatické centrovanie obrazovky + Domov + Nepovolený prístup, prosím zadajte správne používateľské meno a heslo + Zoznam naživo + Zobrazenie naživo + Otvoriť navigačný panel + Zatvoriť navigačný panel + Nasledujúci + Žiadny + Port + Predchádzajúci + Spracovať + Správca Služby + Pódiové zobrazenie + Vybrať veľkosť zobrazeného textu + Zmeniť veľkosť textu služby + Nastavenia + Názov počítača alebo IP + Nie je možné vykonať požiadavku - skontrolujte nastavenie siete + diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml new file mode 100644 index 0000000..305c725 --- /dev/null +++ b/app/src/main/res/values-sl/strings.xml @@ -0,0 +1,13 @@ + + + Licenca + Nastavitve + Opozorilo + Osveži + Išči + OpenLP + Prekliči + Port + Nastavitve + Hostname ali IP + diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml new file mode 100644 index 0000000..c757504 --- /dev/null +++ b/app/src/main/res/values-sq/strings.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml new file mode 100644 index 0000000..fb4afca --- /dev/null +++ b/app/src/main/res/values-sv/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP är fri mjukvara för kyrkpresentation + För mer information, besök OpenLP:s webbplats + Copyright + Del-copyright + Licens + Det här programmet är fri mjukvara; du får sprida den vidare och/eller ändra i den under villkoren i GNU General Public License så som publicerade av Free Software Foundation; version 2 av licensen. + Det här programmet ges ut i hopp om att det kan vara användbart, men UTAN NÅGON GARANTI; inte ens någon underförstådd garanti vid köp eller lämplighet för ett särskilt ändamål. + Inställningar + Om + Meddelande + Tillbaka + Växla visning + Alternativ + Uppdatera + Sök + OpenLP + Avbryt + Konfigurera nätverk + Lösenord + Serverinställningar + Anslutningstimeout + Välj ett värde (millisekunder) + Användarnamn + Ställ in egen timeout + Välj bildläge + Visa skrivbordsbakgrund + Tillåt den valda posten att automatiskt scrolla till mitten på listan + Visa live-bild + Bildinställningar + Visa endast svart skärm + Visa endast tema + Aktivera egna timeouter + Ange meddelandetext + Tillåt skärmar att centrera automatiskt + Hem + Anslutning nekad, kontrollera användarnamn och lösenord + Live-lista + Live-bild + Öppna navigeringsmeny + Stäng navigeringsmeny + Nästa + Inga + Port + Föregående + Visa + Körschema + Scenbild + Välj bildens textstorlek + Ändra körschemats textstorlek + Inställningar + Värdnamn eller IP-adress + Kunde inte hantera förfrågan - kontrollera nätverksinställningarna + diff --git a/app/src/main/res/values-sw600dp/refs.xml b/app/src/main/res/values-sw600dp/refs.xml new file mode 100644 index 0000000..2ec568f --- /dev/null +++ b/app/src/main/res/values-sw600dp/refs.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values-tlh/strings.xml b/app/src/main/res/values-tlh/strings.xml new file mode 100644 index 0000000..c757504 --- /dev/null +++ b/app/src/main/res/values-tlh/strings.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml new file mode 100644 index 0000000..061b1d8 --- /dev/null +++ b/app/src/main/res/values-tr/strings.xml @@ -0,0 +1,5 @@ + + + Uyarı + OpenLP + diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml new file mode 100644 index 0000000..d67b03a --- /dev/null +++ b/app/src/main/res/values-uk/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP це безкоштовна програма для презентацій в церкві + Щоб дізнатися більше, відвідайте веб-сайт OpenLP + Авторське право: + Часткове авторське право + Ліцензія + Ця програма є вільним програмним забезпеченням; ви можете розповсюджувати та/або змінювати його відповідно до умов GNU General Public License, виданої Фондом вільного програмного забезпечення, версія 2 Ліцензії + Ця програма поширюється в надії, що вона буде корисною, але БЕЗ БУДЬ-ЯКИХ ГАРАНТІЙ; навіть без гарантій КОМЕРЦІЙНОЇ ЦІННОСТІ чи ПРИДАТНОСТІ ДЛЯ КОНКРЕТНИХ ЦІЛЕЙ + Налаштування + Про + Сповіщення + Назад + Переключити Дисплей + Уподобання + Оновити + Пошук + OpenLP + Скасувати + Налаштування Мережі + Пароль + Деталі Сервера + Час очікування з\'єднання + Виберіть значення (в мілісекундах) + Ім\'я користувача: + Втановити інший Час Очікування + Виберіть потрібний дисплей + Обрати фон для робочого столу дисплея + Дозволити вибраний елемент, щоб перейти до центру списку + Показати основний дисплей + Налаштування Дисплею + Тільки Чорний дисплей + Тільки Тема дисплею + Обрати інший Час Очікування + Введіть Текст Сповіщення + Дозволити дисплей в центрі + Дім + Несанкціонований доступ будь ласка, введіть правильне ім\'я користувача та пароль + Список Перегляду + Режим Живого Перегляду + Відкрити вікно навігації + Закрити вікно навігації + Наступний + Ні + Порт + Попередній + Процес + Список Служб + Поставити Прегляд + Виберіть розмір тексту для дисплею + Змінити розмір шрифту для служби + Налаштування + Ім\'я хосту або IP + Не вдається обробити запит - перевірте налаштування мережі + diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml new file mode 100644 index 0000000..c757504 --- /dev/null +++ b/app/src/main/res/values-vi/strings.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml new file mode 100644 index 0000000..63fc816 --- /dev/null +++ b/app/src/main/res/values-w820dp/dimens.xml @@ -0,0 +1,6 @@ + + + 64dp + diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml new file mode 100644 index 0000000..fe6df6a --- /dev/null +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -0,0 +1,55 @@ + + + OpenLP是免費的教會簡報軟體 + 要了解詳情,請參閱 OpenLP 網站 + 版權 + 程序版權 + 許可協議 + 這個程序是自由軟體,你可以遵照自由軟體基金會出版的 GNU通用公共許可證條款第2版來修改和重新發佈這個軟體 + 這個程式是在期望它是可行的情況下發布, 但是沒有任何擔保,甚至沒有暗示的適用性或針對於特定用途的保障。 + 設定 + 關於 + 警告 + 退後 + 切換顯示 + 偏好設定 + 重新整理 + 搜尋 + OpenLP + 取消 + 設定網路 + 密碼 + 聚會細節 + 連接逾時 + 選擇數值(毫秒) + 帳號 + 自訂逾時 + 選擇需要的顯示畫面 + 顯示桌面背景 + 允許所選擇的項目捲動到清單的中間 + 顯示現場Live + 顯示設定 + 僅顯示黑幕 + 僅顯示主題 + 開啟自訂逾時 + 輸入警報文字 + 允許自動置中顯示 + 首頁 + 未經授權的連結,請輸入有效的帳號和密碼 + 現場Live清單 + Live 顯示 + 打開隱藏式側選單 + 關閉隱藏式側選單 + 下一個 + + 連接埠 + 前一個 + 程序 + 聚會清單 + 舞台查看 + 選擇顯示字體尺存 + 更改聚會文字大小 + 設定 + 主機名或IP + 無法處理請求 - 請檢查網路設定 + diff --git a/app/src/main/res/values/backgroundTimeouts.xml b/app/src/main/res/values/backgroundTimeouts.xml new file mode 100644 index 0000000..90af49f --- /dev/null +++ b/app/src/main/res/values/backgroundTimeouts.xml @@ -0,0 +1,22 @@ + + + @string/none + 1 + 2 + 5 + 10 + 15 + 20 + 30 + + + 0 + 1000 + 2000 + 5000 + 10000 + 15000 + 20000 + 30000 + + diff --git a/app/src/main/res/values/defaultValues.xml b/app/src/main/res/values/defaultValues.xml new file mode 100644 index 0000000..98d878b --- /dev/null +++ b/app/src/main/res/values/defaultValues.xml @@ -0,0 +1,12 @@ + + + 192.168.0.1 + 4316 + userid + password + + + 3000 + 14 + + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..074e7a0 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,9 @@ + + + 16dp + 16dp + + + 240dp + diff --git a/app/src/main/res/values/httpClientTimeoutValues.xml b/app/src/main/res/values/httpClientTimeoutValues.xml new file mode 100644 index 0000000..048503a --- /dev/null +++ b/app/src/main/res/values/httpClientTimeoutValues.xml @@ -0,0 +1,16 @@ + + + 3000 + 4000 + 5000 + 8000 + 10000 + + + 3000 + 4000 + 5000 + 8000 + 10000 + + \ No newline at end of file diff --git a/app/src/main/res/values/keyStrings.xml b/app/src/main/res/values/keyStrings.xml new file mode 100644 index 0000000..9afc890 --- /dev/null +++ b/app/src/main/res/values/keyStrings.xml @@ -0,0 +1,11 @@ + + key_auto_scroll + key_enable_custom_timeout + key_connection_timeout + key_text_size + key_host + key_port + key_userid + key_password + key_shared_preferences + diff --git a/app/src/main/res/values/refs.xml b/app/src/main/res/values/refs.xml new file mode 100644 index 0000000..6fcf429 --- /dev/null +++ b/app/src/main/res/values/refs.xml @@ -0,0 +1,23 @@ + + + + + @layout/fragment_servicelist_list + @layout/fragment_livelist_list + + + @layout/fragment_item_list + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..b17bd88 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,61 @@ + + + OpenLP is free church presentation software + To find out more visit the OpenLP website + Copyright + Portions copyright + License + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE + Settings + About + Alert + Back + Toggle Display + Preferences + Refresh + Search + OpenLP + Cancel + Configure Network + Password + Server Details + Connection Timeout + Select a value (milliseconds) + Username + Set Custom Timeout + Select the required display + Display Desktop background + Allow the selected item to scroll to the centre of the list + Live display + Display Setting + Display Black only + Display Theme only + Enable Custom Timeouts + Enter Alert Text + Allow displays to auto center + Home + Unauthorised Access, please enter valid username and password + Live List + Live View + Open navigation drawer + Close navigation drawer + Next + None + Port + Previous + Process + Search Text + Select Plugin + Service List + Search Results + Send Live + Add to Service + Showing Results for \'%s\' + Stage View + Select display text size + Change the Service text size + Settings + Hostname or IP + Unable to process request - check network settings + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..766ab99 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/app/src/main/res/values/textSize.xml b/app/src/main/res/values/textSize.xml new file mode 100644 index 0000000..94b52ac --- /dev/null +++ b/app/src/main/res/values/textSize.xml @@ -0,0 +1,22 @@ + + + 6 + 8 + 10 + 12 + 14 + 16 + 18 + 20 + + + 6 + 8 + 10 + 12 + 14 + 16 + 18 + 20 + + \ No newline at end of file diff --git a/app/src/main/res/xml/pref_general.xml b/app/src/main/res/xml/pref_general.xml new file mode 100644 index 0000000..5c84e5e --- /dev/null +++ b/app/src/main/res/xml/pref_general.xml @@ -0,0 +1,17 @@ + + + + + + + diff --git a/app/src/main/res/xml/pref_headers.xml b/app/src/main/res/xml/pref_headers.xml new file mode 100644 index 0000000..d0c4461 --- /dev/null +++ b/app/src/main/res/xml/pref_headers.xml @@ -0,0 +1,14 @@ + + + + +
+ +
+ + + diff --git a/app/src/main/res/xml/pref_notification.xml b/app/src/main/res/xml/pref_notification.xml new file mode 100644 index 0000000..33606e5 --- /dev/null +++ b/app/src/main/res/xml/pref_notification.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..ef7ae5a --- /dev/null +++ b/build.gradle @@ -0,0 +1,19 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.2.2' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + jcenter() + } +} diff --git a/fixssl.iml b/fixssl.iml new file mode 100644 index 0000000..9b1c62e --- /dev/null +++ b/fixssl.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..1d3591c --- /dev/null +++ b/gradle.properties @@ -0,0 +1,18 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..8c0fb64a8698b08ecc4158d828ca593c4928e9dd GIT binary patch literal 49896 zcmagFb986H(k`5d^NVfUwr$(C?M#x1ZQHiZiEVpg+jrjgoQrerx!>1o_ul)D>ebz~ zs=Mmxr&>W81QY-S1PKWQ%N-;H^tS;2*XwVA`dej1RRn1z<;3VgfE4~kaG`A%QSPsR z#ovnZe+tS9%1MfeDyz`RirvdjPRK~p(#^q2(^5@O&NM19EHdvN-A&StN>0g6QA^VN z0Gx%Gq#PD$QMRFzmK+utjS^Y1F0e8&u&^=w5K<;4Rz|i3A=o|IKLY+g`iK6vfr9?+ z-`>gmU&i?FGSL5&F?TXFu`&Js6h;15QFkXp2M1H9|Eq~bpov-GU(uz%mH0n55wUl- zv#~ccAz`F5wlQ>e_KlJS3@{)B?^v*EQM=IxLa&76^y51a((wq|2-`qON>+4dLc{Oo z51}}o^Zen(oAjxDK7b++9_Yg`67p$bPo3~BCpGM7uAWmvIhWc5Gi+gQZ|Pwa-Gll@<1xmcPy z|NZmu6m)g5Ftu~BG&Xdxclw7Cij{xbBMBn-LMII#Slp`AElb&2^Hw+w>(3crLH!;I zN+Vk$D+wP1#^!MDCiad@vM>H#6+`Ct#~6VHL4lzmy;lSdk>`z6)=>Wh15Q2)dQtGqvn0vJU@+(B5{MUc*qs4!T+V=q=wy)<6$~ z!G>e_4dN@lGeF_$q9`Ju6Ncb*x?O7=l{anm7Eahuj_6lA{*#Gv*TaJclevPVbbVYu z(NY?5q+xxbO6%g1xF0r@Ix8fJ~u)VRUp`S%&rN$&e!Od`~s+64J z5*)*WSi*i{k%JjMSIN#X;jC{HG$-^iX+5f5BGOIHWAl*%15Z#!xntpk($-EGKCzKa zT7{siZ9;4TICsWQ$pu&wKZQTCvpI$Xvzwxoi+XkkpeE&&kFb!B?h2hi%^YlXt|-@5 zHJ~%AN!g_^tmn1?HSm^|gCE#!GRtK2(L{9pL#hp0xh zME}|DB>(5)`iE7CM)&_+S}-Bslc#@B5W4_+k4Cp$l>iVyg$KP>CN?SVGZ(&02>iZK zB<^HP$g$Lq*L$BWd?2(F?-MUbNWTJVQdW7$#8a|k_30#vHAD1Z{c#p;bETk0VnU5A zBgLe2HFJ3032$G<`m*OB!KM$*sdM20jm)It5OSru@tXpK5LT>#8)N!*skNu1$TpIw zufjjdp#lyH5bZ%|Iuo|iu9vG1HrIVWLH>278xo>aVBkPN3V$~!=KnlXQ4eDqS7%E% zQ!z^$Q$b^6Q)g#cLpwur(|<0gWHo6A6jc;n`t(V9T;LzTAU{IAu*uEQ%Ort1k+Kn+f_N`9|bxYC+~Z1 zCC1UCWv*Orx$_@ydv9mIe(liLfOr7mhbV@tKw{6)q^1DH1nmvZ0cj215R<~&I<4S| zgnr;9Cdjqpz#o8i0CQjtl`}{c*P)aSdH|abxGdrR)-3z+02-eX(k*B)Uqv6~^nh** z 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..e7b4def --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +include ':app'