├── .java-version ├── docs ├── package-list ├── script.js ├── index.html ├── allclasses-noframe.html ├── zendesk │ └── belvedere │ │ └── package-frame.html ├── allclasses-frame.html ├── deprecated-list.html └── constant-values.html ├── belvedere ├── consumer-proguard.pro ├── src │ ├── main │ │ ├── res │ │ │ ├── values-land │ │ │ │ └── belvedere_imagestream_styles.xml │ │ │ ├── values-w640dp │ │ │ │ └── belvedere_imagestream_styles.xml │ │ │ ├── values-v28 │ │ │ │ └── belvedere_imagestream_styles.xml │ │ │ ├── layout │ │ │ │ ├── belvedere_dialog.xml │ │ │ │ ├── belvedere_stream_list_item.xml │ │ │ │ ├── belvedere_dialog_row.xml │ │ │ │ ├── belvedere_floating_action_menu.xml │ │ │ │ ├── belvedere_floating_action_menu_item.xml │ │ │ │ ├── belvedere_stream_list_item_square_static.xml │ │ │ │ ├── belvedere_bottom_sheet.xml │ │ │ │ ├── belvedere_image_stream.xml │ │ │ │ └── belvedere_stream_list_item_genric_file.xml │ │ │ ├── drawable │ │ │ │ ├── belvedere_round_corner_background.xml │ │ │ │ ├── belvedere_toolbar_shadow.xml │ │ │ │ ├── belvedere_fam_icon_add.xml │ │ │ │ ├── belvedere_ic_check_bg.xml │ │ │ │ ├── belvedere_fam_icon_send.xml │ │ │ │ ├── belvedere_ic_close.xml │ │ │ │ ├── belvedere_ic_file.xml │ │ │ │ ├── belvedere_ic_check_circle.xml │ │ │ │ ├── belvedere_ic_image.xml │ │ │ │ ├── belvedere_fam_icon_close.xml │ │ │ │ ├── belvedere_ic_collections.xml │ │ │ │ ├── belvedere_fam_icon_add_file.xml │ │ │ │ ├── belvedere_ic_camera_black.xml │ │ │ │ └── belvedere_ic_camera.xml │ │ │ ├── anim │ │ │ │ ├── belvedere_hide_menu_item.xml │ │ │ │ └── belvedere_show_menu_item.xml │ │ │ ├── values-zh-rCN │ │ │ │ └── strings.xml │ │ │ ├── values-zh-rTW │ │ │ │ └── strings.xml │ │ │ ├── values-ko │ │ │ │ └── strings.xml │ │ │ ├── values-ja │ │ │ │ └── strings.xml │ │ │ ├── values-iw │ │ │ │ └── strings.xml │ │ │ ├── values-th │ │ │ │ └── strings.xml │ │ │ ├── values-ar │ │ │ │ └── strings.xml │ │ │ ├── values-vi │ │ │ │ └── strings.xml │ │ │ ├── values-en-rGB │ │ │ │ └── strings.xml │ │ │ ├── values-in │ │ │ │ └── strings.xml │ │ │ ├── values-nb │ │ │ │ └── strings.xml │ │ │ ├── values-sv │ │ │ │ └── strings.xml │ │ │ ├── values-da │ │ │ │ └── strings.xml │ │ │ ├── values-hi │ │ │ │ └── strings.xml │ │ │ ├── values-ms │ │ │ │ └── strings.xml │ │ │ ├── values-pl │ │ │ │ └── strings.xml │ │ │ ├── values-cs │ │ │ │ └── strings.xml │ │ │ ├── values │ │ │ │ ├── strings.xml │ │ │ │ ├── belvedere_imagestream_styles.xml │ │ │ │ └── styles_deprecated.xml │ │ │ ├── values-ro │ │ │ │ └── strings.xml │ │ │ ├── values-fi │ │ │ │ └── strings.xml │ │ │ ├── values-it │ │ │ │ └── strings.xml │ │ │ ├── values-pt │ │ │ │ └── strings.xml │ │ │ ├── values-de │ │ │ │ └── strings.xml │ │ │ ├── values-nl │ │ │ │ └── strings.xml │ │ │ ├── values-pt-rBR │ │ │ │ └── strings.xml │ │ │ ├── values-tr │ │ │ │ └── strings.xml │ │ │ ├── values-hu │ │ │ │ └── strings.xml │ │ │ ├── values-ru │ │ │ │ └── strings.xml │ │ │ ├── values-es │ │ │ │ └── strings.xml │ │ │ ├── values-el │ │ │ │ └── strings.xml │ │ │ ├── values-bg │ │ │ │ └── strings.xml │ │ │ ├── values-fr │ │ │ │ └── strings.xml │ │ │ ├── values-fil │ │ │ │ └── strings.xml │ │ │ └── values-fr-rCA │ │ │ │ └── strings.xml │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── zendesk │ │ │ └── belvedere │ │ │ ├── ImageStreamMvp.java │ │ │ ├── ImageStreamService.java │ │ │ ├── ImageStreamCursorProvider.java │ │ │ ├── ImageStreamAdapter.java │ │ │ └── ImageStreamModel.java │ └── test │ │ └── java │ │ └── zendesk │ │ └── belvedere │ │ ├── TestHelper.kt │ │ └── ImageStreamCursorProviderTests.kt ├── build.gradle └── extra │ └── javadoc │ └── android-sdk │ └── reference │ └── package-list ├── settings.gradle ├── .github ├── PULL_REQUEST_TEMPLATE └── workflows │ ├── build_project.yml │ └── deploy-documentation.yml ├── media └── belvedere_stream_demo.gif ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── licenses └── android-sdk-license ├── belvedere-sample ├── src │ └── main │ │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ └── styles.xml │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ ├── values-h720dp │ │ │ └── dimens.xml │ │ ├── drawable │ │ │ ├── ic_send_black_24dp.xml │ │ │ └── ic_attach_file_black_24dp.xml │ │ └── layout │ │ │ ├── chat_activity.xml │ │ │ └── activity_main.xml │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── belvedere │ │ │ └── Global.java │ │ └── AndroidManifest.xml ├── proguard-rules.pro └── build.gradle ├── scripts ├── gradle │ ├── build-belvedere.gradle │ ├── build-belvedere-core.gradle │ ├── zendesk-repos.gradle │ ├── gradle-commons.gradle │ └── zendesk-deploy.gradle └── build.sh ├── belvedere-core ├── src │ └── main │ │ ├── res │ │ └── xml │ │ │ └── belvedere_attachment_storage_v2.xml │ │ ├── java │ │ └── zendesk │ │ │ └── belvedere │ │ │ ├── package-info.java │ │ │ ├── BitmapUtils.java │ │ │ ├── Callback.java │ │ │ ├── IntentRegistry.java │ │ │ ├── PermissionUtil.java │ │ │ ├── BelvedereFileProvider.java │ │ │ ├── L.java │ │ │ └── ResolveUriTask.java │ │ └── AndroidManifest.xml ├── build.gradle └── extra │ └── javadoc │ └── android-sdk │ └── reference │ └── package-list ├── CONTRIBUTING.md ├── .gitignore ├── gradle.properties ├── .travis.yml ├── gradlew.bat ├── MobileSDKBelvedere.yml └── gradlew /.java-version: -------------------------------------------------------------------------------- 1 | 1.8 2 | -------------------------------------------------------------------------------- /docs/package-list: -------------------------------------------------------------------------------- 1 | zendesk.belvedere 2 | -------------------------------------------------------------------------------- /belvedere/consumer-proguard.pro: -------------------------------------------------------------------------------- 1 | # Picasso 2 | -dontwarn com.squareup.picasso.** -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':belvedere-sample', ':belvedere-core', ':belvedere' 2 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE: -------------------------------------------------------------------------------- 1 | ### Changes 2 | 3 | ### References 4 | - None 5 | 6 | ### Risks 7 | - None 8 | -------------------------------------------------------------------------------- /media/belvedere_stream_demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zendesk/belvedere/master/media/belvedere_stream_demo.gif -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zendesk/belvedere/master/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /licenses/android-sdk-license: -------------------------------------------------------------------------------- 1 | 2 | d56f5187479451eabf01fb78af6dfcb131a6481e 3 | 24333f8a63b6825ea9c5514f83c2829b004d1fee 4 | -------------------------------------------------------------------------------- /belvedere-sample/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Belvedere Sample 3 | 4 | -------------------------------------------------------------------------------- /scripts/gradle/build-belvedere.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'belvedere' 2 | rootProject.projectDir = new File(settingsDir, "./../../") 3 | include ':belvedere' -------------------------------------------------------------------------------- /scripts/gradle/build-belvedere-core.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'belvedere' 2 | rootProject.projectDir = new File(settingsDir, "./../../") 3 | include ':belvedere-core' -------------------------------------------------------------------------------- /belvedere-sample/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zendesk/belvedere/master/belvedere-sample/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /belvedere-sample/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zendesk/belvedere/master/belvedere-sample/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /belvedere-sample/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zendesk/belvedere/master/belvedere-sample/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /belvedere-sample/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zendesk/belvedere/master/belvedere-sample/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /belvedere-sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zendesk/belvedere/master/belvedere-sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /belvedere/src/main/res/values-land/belvedere_imagestream_styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 200dp 4 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-w640dp/belvedere_imagestream_styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 3 4 | -------------------------------------------------------------------------------- /belvedere-core/src/main/res/xml/belvedere_attachment_storage_v2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /belvedere-sample/src/main/res/values-h720dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 456dp 3 | 4 4 | 5 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Pull requests are welcome. There is a pull request template which will mention the owners of the repository. When your contribution has been given a :+1:, one of the repository owners will merge your contribution. -------------------------------------------------------------------------------- /belvedere/src/main/res/values-v28/belvedere_imagestream_styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1dp 5 | -------------------------------------------------------------------------------- /belvedere/src/main/res/layout/belvedere_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Aug 12 12:18:18 CEST 2020 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 7 | -------------------------------------------------------------------------------- /belvedere/src/main/res/drawable/belvedere_round_corner_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /belvedere/src/main/res/drawable/belvedere_toolbar_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /belvedere/src/main/res/drawable/belvedere_fam_icon_add.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /belvedere-sample/src/main/res/drawable/ic_send_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /belvedere/src/main/res/drawable/belvedere_ic_check_bg.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /scripts/gradle/zendesk-repos.gradle: -------------------------------------------------------------------------------- 1 | 2 | apply from: 'scripts/gradle/gradle-commons.gradle' 3 | 4 | allprojects { 5 | repositories { 6 | 7 | maven { 8 | url 'https://zendesk.jfrog.io/zendesk/oss-snapshots-local' 9 | } 10 | 11 | maven { 12 | url 'https://zendesk.jfrog.io/zendesk/oss-releases-local' 13 | } 14 | 15 | google() 16 | 17 | jcenter() 18 | 19 | } 20 | } -------------------------------------------------------------------------------- /belvedere/src/main/res/drawable/belvedere_fam_icon_send.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /belvedere/src/main/res/drawable/belvedere_ic_close.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /belvedere/src/main/res/drawable/belvedere_ic_file.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /belvedere/src/main/res/drawable/belvedere_ic_check_circle.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /belvedere/src/main/res/drawable/belvedere_ic_image.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /belvedere-sample/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | #80303F9F 8 | #727272 9 | 10 | #FF0000 11 | #FF5722 12 | 13 | 14 | -------------------------------------------------------------------------------- /belvedere/src/main/res/drawable/belvedere_fam_icon_close.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /belvedere/src/main/res/drawable/belvedere_ic_collections.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /belvedere/src/main/res/anim/belvedere_hide_menu_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 16 | -------------------------------------------------------------------------------- /belvedere/src/main/res/drawable/belvedere_fam_icon_add_file.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /belvedere/src/main/res/anim/belvedere_show_menu_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | 15 | # Gradle files 16 | .gradle/ 17 | build/ 18 | /*/build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Intellij project files 27 | *.iml 28 | *.ipr 29 | *.iws 30 | .idea/ 31 | 32 | # Gradle build files 33 | .gradle/ 34 | build/ 35 | 36 | # OSX specific 37 | .DS_Store 38 | 39 | # Log Files 40 | *.log 41 | -------------------------------------------------------------------------------- /belvedere-sample/src/main/java/com/example/belvedere/Global.java: -------------------------------------------------------------------------------- 1 | package com.example.belvedere; 2 | 3 | import android.app.Application; 4 | 5 | import zendesk.belvedere.Belvedere; 6 | 7 | public class Global extends Application { 8 | 9 | @Override 10 | public void onCreate() { 11 | super.onCreate(); 12 | initImageLoader(); 13 | } 14 | 15 | private void initImageLoader(){ 16 | Belvedere belvedere = new Belvedere.Builder(this) 17 | .debug(true) 18 | .build(); 19 | Belvedere.setSingletonInstance(belvedere); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /belvedere/src/test/java/zendesk/belvedere/TestHelper.kt: -------------------------------------------------------------------------------- 1 | package zendesk.belvedere 2 | 3 | import android.content.Intent 4 | import android.net.Uri 5 | import org.mockito.Mockito 6 | import java.util.* 7 | 8 | interface TestHelper { 9 | 10 | fun mediaIntent(target: Int, intent: Intent? = null): MediaIntent { 11 | return MediaIntent(1, intent, "", true, target) 12 | } 13 | 14 | fun mediaResult(uri: Uri = Mockito.mock(Uri::class.java), name: String = UUID.randomUUID().toString(), size: Long = 1): MediaResult { 15 | return MediaResult(null, uri, uri, name, "", size, 1, 1) 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /belvedere/src/main/res/drawable/belvedere_ic_camera_black.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /belvedere-sample/src/main/res/drawable/ic_attach_file_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /belvedere/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /belvedere/src/main/res/layout/belvedere_stream_list_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /belvedere/src/main/res/layout/belvedere_dialog_row.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 17 | 18 | -------------------------------------------------------------------------------- /belvedere-core/src/main/java/zendesk/belvedere/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | *

3 | * An media picker library for Android. 4 | *

5 | *
 6 |  *            |ZZzzz
 7 |  *            |
 8 |  *            |
 9 |  *            |ZZzzz      /^\            |ZZzzz
10 |  *            |          |~~~|           |
11 |  *            |        |^^^^^^^|        / \
12 |  *           /^\       |[]+    |       |~~~|
13 |  *        |^^^^^^^|    |    +[]|       |   |
14 |  *        |    +[]|/\/\/\/\^/\/\/\/\/|^^^^^^^|
15 |  *        |+[]+   |~~~~~~~~~~~~~~~~~~|    +[]|
16 |  *        |       |  []   /^\   []   |+[]+   |
17 |  *        |   +[]+|  []  || ||  []   |   +[]+|
18 |  *        |[]+    |      || ||       |[]+    |
19 |  *        |_______|------------------|_______|
20 |  * 
21 | */ 22 | package zendesk.belvedere; -------------------------------------------------------------------------------- /belvedere/src/main/res/drawable/belvedere_ic_camera.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /belvedere-sample/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/schlan/Library/Android/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -ignorewarnings 19 | -keep class * { 20 | public private *; 21 | } 22 | -------------------------------------------------------------------------------- /belvedere/src/main/res/layout/belvedere_floating_action_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 18 | 19 | -------------------------------------------------------------------------------- /belvedere/src/main/res/layout/belvedere_floating_action_menu_item.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | android.useAndroidX=true -------------------------------------------------------------------------------- /docs/script.js: -------------------------------------------------------------------------------- 1 | function show(type) 2 | { 3 | count = 0; 4 | for (var key in methods) { 5 | var row = document.getElementById(key); 6 | if ((methods[key] & type) != 0) { 7 | row.style.display = ''; 8 | row.className = (count++ % 2) ? rowColor : altColor; 9 | } 10 | else 11 | row.style.display = 'none'; 12 | } 13 | updateTabs(type); 14 | } 15 | 16 | function updateTabs(type) 17 | { 18 | for (var value in tabs) { 19 | var sNode = document.getElementById(tabs[value][0]); 20 | var spanNode = sNode.firstChild; 21 | if (value == type) { 22 | sNode.className = activeTableTab; 23 | spanNode.innerHTML = tabs[value][1]; 24 | } 25 | else { 26 | sNode.className = tableTab; 27 | spanNode.innerHTML = "" + tabs[value][1] + ""; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /belvedere-sample/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 15 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /belvedere-core/src/main/java/zendesk/belvedere/BitmapUtils.java: -------------------------------------------------------------------------------- 1 | package zendesk.belvedere; 2 | 3 | import android.graphics.Bitmap; 4 | import android.graphics.BitmapFactory; 5 | import android.util.Pair; 6 | 7 | import androidx.annotation.NonNull; 8 | 9 | import java.io.File; 10 | 11 | /** 12 | * Utility methods for {@link Bitmap} 13 | */ 14 | @SuppressWarnings("WeakerAccess") 15 | public class BitmapUtils { 16 | 17 | /** 18 | * Gets the dimension of an image file. 19 | * 20 | * @param file The image file 21 | * @return The width and the height of an image file. 22 | */ 23 | @SuppressWarnings("WeakerAccess") 24 | public static Pair getImageDimensions(@NonNull File file) { 25 | final BitmapFactory.Options options = new BitmapFactory.Options(); 26 | options.inJustDecodeBounds = true; 27 | BitmapFactory.decodeFile(file.getAbsolutePath(), options); // I/O on the main thread but only takes ~0.5ms 28 | return Pair.create(options.outWidth, options.outHeight); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /.github/workflows/build_project.yml: -------------------------------------------------------------------------------- 1 | name: "Build Belvedere" 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | pull_request: 8 | branches: 9 | - master 10 | 11 | jobs: 12 | build: 13 | name: "Build" 14 | runs-on: ubuntu-latest 15 | timeout-minutes: 40 16 | env: 17 | ARTIFACTORY_RELEASE_USERNAME: ${{ secrets.ARTIFACTORY_RELEASE_USERNAME }} 18 | ARTIFACTORY_RELEASE_API_KEY: ${{ secrets.ARTIFACTORY_RELEASE_API_KEY }} 19 | 20 | steps: 21 | - name: "Checkout" 22 | uses: zendesk/checkout@v2.3.4 23 | 24 | - name: "Gradle cache" 25 | uses: zendesk/cache@v2.1.6 26 | with: 27 | path: ~/.gradle/caches 28 | key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle*') }} 29 | restore-keys: | 30 | ${{ runner.os }}-gradle-caches- 31 | 32 | - name: "Set up JDK 1.8" 33 | uses: zendesk/setup-java@v2 34 | with: 35 | distribution: 'zulu' 36 | java-version: 8 37 | 38 | - name: "Build Project" 39 | run: ./scripts/build.sh 40 | -------------------------------------------------------------------------------- /.github/workflows/deploy-documentation.yml: -------------------------------------------------------------------------------- 1 | name: Deploy documentation 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | paths: 8 | - 'docs/**' 9 | 10 | permissions: 11 | contents: read 12 | pages: write 13 | id-token: write 14 | 15 | jobs: 16 | deploy-documentation: 17 | name: Deploy documentation to GitHub Pages 18 | environment: 19 | name: github-pages 20 | url: ${{ steps.deploy-documentation.outputs.page_url }} 21 | runs-on: ubuntu-latest 22 | steps: 23 | - name: Checkout 24 | uses: actions/checkout@v4 25 | 26 | - name: Configure GitHub Pages 27 | uses: actions/configure-pages@v5 28 | 29 | - name: Archive documentation 30 | run: tar --directory docs -cvf docs.tar . 31 | 32 | - name: Upload documentation 33 | uses: actions/upload-artifact@v4 34 | with: 35 | name: github-pages 36 | path: docs.tar 37 | retention-days: 1 38 | 39 | - name: Deploy documentation 40 | id: deploy-documentation 41 | uses: actions/deploy-pages@v4 42 | -------------------------------------------------------------------------------- /belvedere/src/main/res/layout/belvedere_stream_list_item_square_static.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 20 | 21 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 相机 4 | 图库 5 | 折叠浮动操作菜单 6 | 展开浮动操作菜单 7 | 从图库中导入文件 8 | 从 Google Photos 导入图像 9 | 文件过大 10 | 照片库 11 | 未知 12 | 已拒绝权限 13 | 从相机导入图像 14 | 选择文件 %s 15 | 选择图像 %s 16 | 取消选择文件 %s 17 | 取消选择图像 %s 18 | 关闭图像选取器 19 | 要发送附件,您需要在设置中允许权限 20 | 设置 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 相機 4 | 圖庫 5 | 摺疊浮動執行功能表 6 | 展開浮動執行功能表 7 | 從圖庫匯入檔案 8 | 從 Google Photos 匯入影像 9 | 檔案過大 10 | 相片媒體櫃 11 | 未知 12 | 權限被拒 13 | 從相機匯入影像 14 | 選取檔案 %s 15 | 選取影像 %s 16 | 取消選取檔案 %s 17 | 取消選取影像 %s 18 | 關閉影像選擇器 19 | 設定值 20 | 若要傳送附件,您需要在設定值中允許權限 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 카메라 4 | 갤러리 5 | 부동 작업 메뉴 축소 6 | 부동 작업 메뉴 확대 7 | 갤러리에서 파일 가져오기 8 | Google 포토에서 이미지 가져오기 9 | 파일이 너무 큽니다. 10 | 사진 라이브러리 11 | 알 수 없음 12 | 권한이 거부되었습니다. 13 | 카메라에서 이미지 가져오기 14 | %s 파일 선택 15 | %s 이미지 선택 16 | %s 파일 선택 취소 17 | %s 이미지 선택 취소 18 | 이미지 선택기 닫기 19 | 설정 20 | 첨부 파일을 보내려면 설정에서 권한을 허용해야 합니다. 21 | -------------------------------------------------------------------------------- /belvedere-core/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 30 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | カメラ 4 | ギャラリー 5 | 「アクション」フローティングメニューを閉じる 6 | 「アクション」フローティングメニューを開く 7 | ギャラリーからファイルをインポートします 8 | Googleフォトから画像をインポートします 9 | ファイルが大きすぎます 10 | 写真ライブラリ 11 | 不明 12 | 権限がありません 13 | カメラから画像をインポートします 14 | ファイル%sを選択します 15 | 画像%sを選択します 16 | ファイル%sの選択を解除します 17 | 画像%sの選択を解除します 18 | 画像ピッカーを閉じます 19 | 添付ファイルを送信するには、設定で権限を許可する必要があります 20 | 設定 21 | -------------------------------------------------------------------------------- /belvedere-core/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | ext { 3 | artifactId = 'belvedere-core' 4 | javadocTitle = "Belvedere Core - ${rootProject.ext.versionName}" 5 | packaging = 'aar' 6 | belvedereFileProviderAuthoritySuffix = ".belvedere2.attachments" 7 | } 8 | 9 | apply plugin: 'com.android.library' 10 | apply from: '../scripts/gradle/zendesk-deploy.gradle' 11 | 12 | android { 13 | compileSdkVersion rootProject.ext.compileSdkVersion 14 | defaultConfig { 15 | minSdkVersion rootProject.ext.minSdkVersionCore 16 | targetSdkVersion rootProject.ext.targetSdkVersion 17 | versionCode 1 18 | versionName rootProject.ext.versionName 19 | 20 | // Replace ${belvedereFileProviderAuthoritySuffix} with the content of project.ext.belvedereFileProviderAuthoritySuffix 21 | // in the AndroidManifest 22 | manifestPlaceholders = [belvedereFileProviderAuthoritySuffix:project.ext.belvedereFileProviderAuthoritySuffix] 23 | // Add project.ext.belvedereFileProviderAuthoritySuffix as a string resource to the SDK 24 | resValue "string", "belvedere_sdk_fpa_suffix_v2", project.ext.belvedereFileProviderAuthoritySuffix 25 | } 26 | 27 | lintOptions { 28 | abortOnError false 29 | } 30 | } 31 | 32 | dependencies { 33 | implementation "androidx.annotation:annotation:$annotationVersion" 34 | implementation "androidx.core:core:$androidxCoreVersion" 35 | implementation "androidx.fragment:fragment:$fragmentVersion" 36 | } 37 | -------------------------------------------------------------------------------- /belvedere-sample/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion rootProject.ext.compileSdkVersion 5 | 6 | defaultConfig { 7 | minSdkVersion rootProject.ext.minSdkVersionUi 8 | targetSdkVersion rootProject.ext.targetSdkVersion 9 | applicationId "com.example.belvedere" 10 | versionCode 1 11 | versionName rootProject.ext.versionName 12 | } 13 | 14 | buildTypes { 15 | 16 | debug { 17 | minifyEnabled false 18 | } 19 | 20 | travis { 21 | initWith debug 22 | matchingFallbacks = ['debug'] 23 | 24 | minifyEnabled true 25 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 26 | } 27 | } 28 | } 29 | 30 | dependencies { 31 | implementation "androidx.annotation:annotation:$annotationVersion" 32 | implementation "androidx.core:core:$androidxCoreVersion" 33 | implementation "androidx.fragment:fragment:$fragmentVersion" 34 | implementation "com.google.android.material:material:$materialVersion" 35 | implementation "androidx.gridlayout:gridlayout:$gridLayoutVersion" 36 | 37 | implementation "com.squareup.picasso:picasso:$picassoVersion" 38 | 39 | if (useLocalDependency()) { 40 | api project(':belvedere') 41 | } else { 42 | api group: 'com.zendesk.belvedere2', name: 'belvedere', version: rootProject.ext.versionName, changing: true 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /belvedere-sample/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 256dp 5 | 158dp 6 | 7 | 48dp 8 | 64dp 9 | 10 | 11 | 16dp 12 | 13 | 14 | 15 | 4dp 16 | 4dp 17 | 4dp 18 | 16dp 19 | 2dp 20 | 2dp 21 | 8dp 22 | 23 | 24 | 16dp 25 | 16dp 26 | 16dp 27 | 16dp 28 | 29 | 30 | 8dp 31 | 32 | 2 33 | 34 | -------------------------------------------------------------------------------- /scripts/gradle/gradle-commons.gradle: -------------------------------------------------------------------------------- 1 | 2 | ext { 3 | 4 | /** 5 | * Looks for the specified configuration key in this order: 6 | * 7 | *
    8 | *
  1. system environment
  2. 9 | *
  3. project properties
  4. 10 | *
11 | * 12 | * If it isn't found, then the empty string is returned. This stops the gradlew from failing until 13 | * it actually needs those values. 14 | * 15 | * @param keyName The key to look for 16 | * @return The value or the empty string if not found 17 | */ 18 | getConfigurationParameter = { keyName -> 19 | return System.getenv(keyName) ?: 20 | rootProject.hasProperty(keyName) ? rootProject.properties[keyName] : '' 21 | } 22 | 23 | /** 24 | * Checks if we're building on CI, false otherwise 25 | * 26 | *

27 | * Test mode is based on the existence of an environmental variable called CI. This is set 28 | * by the CI environment, not us. 29 | *

30 | * 31 | * @return true if we're building on CI, false otherwise 32 | */ 33 | buildingOnCi = { 34 | "$System.env.CI" != "null" 35 | } 36 | 37 | isReleaseBuild = { 38 | return rootProject.ext.versionName.contains("SNAPSHOT") == false 39 | } 40 | 41 | useLocalDependency = { 42 | if("$System.env.LOCAL_BUILD" != "null") { 43 | return System.env.LOCAL_BUILD.toBoolean() 44 | } 45 | 46 | return rootProject.ext.buildSettings.localBuild 47 | } 48 | } -------------------------------------------------------------------------------- /belvedere/src/main/res/values-iw/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | מצלמה 4 | גלריה 5 | כווץ תפריט פעולות צף 6 | הרחב תפריט פעולות צף 7 | יבא קובץ מהגלריה 8 | יבא תמונה מ-Google Photos 9 | הקובץ גדול מדי 10 | ספריית תמונות 11 | לא ידוע 12 | אין הרשאה 13 | יבא תמונה מהמצלמה 14 | בחר את הקובץ %s 15 | בחר את התמונה %s 16 | בטל את הבחירה בקובץ %s 17 | בטל את הבחירה בתמונה %s 18 | סגור את בוחר התמונות 19 | הגדרות 20 | כדי לשלוח קבצים מצורפים עליך לאפשר הרשאות בהגדרות שלך 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-th/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | กล้อง 4 | แกลเลอรี 5 | ยุบเมนูการดำเนินการแบบลอย 6 | ขยายเมนูการดำเนินการแบบลอย 7 | อิมพอร์ตไฟล์จากแกลเลอรี 8 | อิมพอร์ตภาพจาก Google Photos 9 | ไฟล์ใหญ่เกินไป 10 | คลังภาพ 11 | ไม่ทราบ 12 | สิทธิ์การอนุญาตถูกปฏิเสธ 13 | อิมพอร์ตภาพจากกล้อง 14 | เลือกไฟล์ %s 15 | เลือกภาพ %s 16 | ยกเลิกเลือกไฟล์ %s 17 | ยกเลิกเลือกภาพ %s 18 | ปิดตัวเลือกภาพ 19 | การตั้งค่า 20 | หากต้องการส่งไฟล์แนบ คุณจําเป็นต้องอนุญาตสิทธิ์ในการตั้งค่าของคุณ 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-ar/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | الكاميرا 4 | المعرض 5 | طيّ قائمة إجراءات عائمة 6 | توسيع قائمة إجراءات عائمة 7 | استيراد ملف من المعرض 8 | استيراد صورة من صور Google 9 | الملف أكبر مما ينبغي 10 | مكتبة الصور 11 | غير معروف 12 | رُفِضت الأذونات 13 | استيراد صورة من الكاميرا 14 | تحديد الملف %s 15 | تحديد الصورة %s 16 | إلغاء تحديد الملف %s 17 | إلغاء تحديد الصورة %s 18 | إغلاق منتقي الصورة 19 | لإرسال المرفقات، سيكون عليك السماح بالأذونات في الإعدادات لديك 20 | إعدادات 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-vi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Camera 4 | Thư viện 5 | Thu gọn menu thao tác động 6 | Mở rộng menu thao tác động 7 | Nhập tập tin từ thư viện ảnh 8 | Nhập ảnh từ Google Photos 9 | Tập tin quá lớn 10 | Thư viện ảnh 11 | Không xác định 12 | Đã từ chối các quyền 13 | Nhập ảnh từ camera 14 | Chọn tập tin %s 15 | Chọn ảnh %s 16 | Bỏ chọn tập tin %s 17 | Bỏ chọn ảnh %s 18 | Đóng trình chọn ảnh 19 | Cài đặt 20 | Để gửi tập tin đính kèm, bạn phải cho phép quyền trong cài đặt của bạn. 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-en-rGB/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Camera 4 | Gallery 5 | Collapse Floating Action Menu 6 | Expand Floating Action Menu 7 | Import file from gallery 8 | Import image from Google Photos 9 | File too large 10 | Photo library 11 | Unknown 12 | Permissions denied 13 | Import image from camera 14 | Select file %s 15 | Select image %s 16 | Unselect file %s 17 | Unselect image %s 18 | Close image picker 19 | To send attachments you need to allow permissions in your settings 20 | Settings 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-in/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Kamera 4 | Galeri 5 | Tutup Menu Tindakan Layang 6 | Buka Menu Tindakan Layang 7 | Impor file dari galeri 8 | Impor gambar dari Google Photos 9 | File terlalu besar 10 | Perpustakaan foto 11 | Tidak Dikenal 12 | Izin ditolak 13 | Impor gambar dari kamera 14 | Pilih file %s 15 | Pilih gambar %s 16 | Urung pilih file %s 17 | Urung pilih gambar %s 18 | Tutup pemilih gambar 19 | Untuk mengirim lampiran, Anda perlu mengizinkan izin di pengaturan Anda 20 | Pengaturan 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-nb/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Kamera 4 | Galleri 5 | Skjul flytende handlingsmeny 6 | Vis flytende handlingsmeny 7 | Importer fil fra galleriet 8 | Importer bilde fra Google Foto 9 | Filen er for stor 10 | Bildebibliotek 11 | Ukjent 12 | Har ikke tillatelse 13 | Importer bilde fra kamera 14 | Merk filen %s 15 | Merk bildet %s 16 | Opphev merking av filen %s 17 | Opphev merking av bildet %s 18 | Lukk bildevelger 19 | Innstillinger 20 | Hvis du vil sende vedlegg, må du tillate dette i innstillingene dine 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-sv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Kamera 4 | Galleri 5 | Dölj flytande åtgärdsmeny 6 | Visa flytande åtgärdsmeny 7 | Importera fil från galleriet 8 | Importera fil från Google Photos 9 | Filen är för stor 10 | Bildbibliotek 11 | Okänd 12 | Behörighet nekades 13 | Importera bild från kameran 14 | Markera filen %s 15 | Markera bilden %s 16 | Avmarkera filen %s 17 | Avmarkera bilden %s 18 | Stäng bildväljaren 19 | Om du vill skicka bilagor måste du tillåta behörigheter i dina inställningar 20 | Inställningar 21 | -------------------------------------------------------------------------------- /belvedere-core/src/main/java/zendesk/belvedere/Callback.java: -------------------------------------------------------------------------------- 1 | package zendesk.belvedere; 2 | 3 | import android.app.Activity; 4 | import android.os.Handler; 5 | import android.os.Looper; 6 | 7 | import androidx.fragment.app.Fragment; 8 | 9 | /** 10 | * Simple Callback used to deliver results asynchronously. 11 | * 12 | *

13 | * As always, keep a strong reference to the callback 14 | * in your {@link Activity}/{@link Fragment}. Don't forget 15 | * to call {@link #cancel()} and revoke the reference to this callback 16 | * when your {@link Activity}/{@link Fragment} gets destroyed. 17 | *

18 | * 19 | * @param The result type. 20 | */ 21 | public abstract class Callback { 22 | 23 | private boolean canceled = false; 24 | 25 | public Callback(){ 26 | // Intentionally empty 27 | } 28 | 29 | /** 30 | * Cancel this callback. {@link #success(Object)} won't be called. 31 | */ 32 | public void cancel(){ 33 | this.canceled = true; 34 | } 35 | 36 | void internalSuccess(final E result){ 37 | if(!canceled){ 38 | new Handler(Looper.getMainLooper()).post(new Runnable() { 39 | @Override 40 | public void run() { 41 | Callback.this.success(result); 42 | } 43 | }); 44 | } 45 | } 46 | 47 | /** 48 | * Method used to deliver results. 49 | *

50 | * Will be invoked on the main thread. 51 | *

52 | * 53 | * @param result The result. 54 | */ 55 | public abstract void success(E result); 56 | } 57 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-da/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Kamera 4 | Galleri 5 | Skjul flydende handlingsmenu 6 | Vis flydende handlingsmenu 7 | Importér fil fra galleri 8 | Importér billede fra Google Photos 9 | Filen er for stor 10 | Fotobibliotek 11 | Ukendt 12 | Tilladelser nægtet 13 | Importér billede fra kamera 14 | Vælg filen %s 15 | Vælg billedet %s 16 | Fravælg filen %s 17 | Fravælg billedet %s 18 | Luk billedvælger 19 | Hvis du vil sende vedhæftede filer, skal du acceptere tilladelser i dine indstillinger 20 | Indstillinger 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-hi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | कैमरा 4 | गैलरी 5 | फ़्लोटिंग क्रियाएं संक्षिप्त करें मेनू 6 | फ़्लोटिंग क्रियाएं विस्तारित करें मेनू 7 | गैलरी से फ़ाइल आयात करें 8 | छवि को Google फ़ोटो से आयात करें 9 | फ़ाइल बहुत बड़ी है 10 | फ़ोटो लाइब्रेरी 11 | अज्ञात 12 | अनुमतियां अस्वीकृत 13 | कैमरा से छवि आयात करें 14 | फ़ाइल %s चुनें 15 | छवि %s चुनें 16 | फ़ाइल %s का चयन रद्द करेंं 17 | छवि %s का चयन रद्द करेंं 18 | छवि पिकर बंद करें 19 | अटैचमेंट भेजने के लिए आपको अपनी सेटिंग में अनुमतियों की अनुमति देनी होगी 20 | सेटिंग्स 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-ms/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Kamera 4 | Galeri 5 | Kuncupkan Menu Tindakan Terapung 6 | Kembangkan Menu Tindakan Terapung 7 | Import fail daripada galeri 8 | Import imej daripada Google Photos 9 | Fail terlalu besar 10 | Perpustakaan foto 11 | Tak Diketahui 12 | Keizinan dinafikan 13 | Import imej daripada kamera 14 | Pilih fail %s 15 | Pilih imej %s 16 | Nyahpilih fail %s 17 | Nyahpilih imej %s 18 | Tutup pemungut imej 19 | Untuk menghantar lampiran, anda perlu membenarkan keizinan dalam tetapan anda 20 | Tetapan 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Aparat 4 | Galeria 5 | Zwiń przestawne menu czynności 6 | Rozwiń przestawne menu czynności 7 | Importuj plik z galerii 8 | Importuj obraz ze Zdjęć Google 9 | Zbyt duży plik 10 | Biblioteka zdjęć 11 | Nieznany 12 | Odmowa uprawnień 13 | Importuj obraz z aparatu 14 | Zaznacz plik %s 15 | Zaznacz obraz %s 16 | Wyczyść zaznaczenie pliku %s 17 | Wyczyść zaznaczenie obrazu %s 18 | Zamknij wybór obrazów 19 | Aby wysyłać załączniki, musisz przyznać im uprawnienia w ustawieniach 20 | Ustawienia 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Fotoaparát 4 | Galerie 5 | Sbalit plovoucí nabídku akcí 6 | Rozbalit plovoucí nabídku akcí 7 | Importovat soubor z galerie 8 | Importovat obrázek z Fotky Google 9 | Soubor je příliš velký 10 | Knihovna fotek 11 | Neznámá 12 | Oprávnění odepřena 13 | Importovat obrázek z fotoaparátu 14 | Vybrat soubor %s 15 | Vybrat obrázek %s 16 | Zrušit výběr souboru %s 17 | Zrušit výběr obrázku %s 18 | Zavřít výběr obrázků 19 | Nastavení 20 | Chcete-li odesílat přílohy, musíte v nastavení povolit oprávnění 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Camera 4 | Gallery 5 | Collapse Floating Action Menu 6 | Expand Floating Action Menu 7 | Import file from gallery 8 | Import image from Google Photos 9 | File too large 10 | Photo library 11 | Unknown 12 | Permissions denied 13 | Import image from camera 14 | Select file %s 15 | Select image %s 16 | Unselect file %s 17 | Unselect image %s 18 | Close image picker 19 | Settings 20 | To send attachments you need to allow permissions in your settings 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-ro/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Cameră 4 | Galerie 5 | Restrângere meniu de acțiuni mobil 6 | Extindere meniu de acțiuni mobil 7 | Import fișier din galerie 8 | Import imagine din Google Photos 9 | Fișier prea mare 10 | Bibliotecă fotografii 11 | Necunoscut 12 | Permisiuni refuzate 13 | Import imagine din cameră 14 | Selectare fișier %s 15 | Selectare imagine %s 16 | Deselectare fișier %s 17 | Deselectare imagine %s 18 | Închidere selector imagini 19 | Setări 20 | Pentru a trimite fișiere atașate, trebuie să acordați permisiuni în setări 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-fi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Kamera 4 | Galleria 5 | Sulje irrallinen toimintovalikko 6 | Laajenna irrallinen toimintovalikko 7 | Tuo tiedosto galleriasta 8 | Tuo kuva Google Photos -sovelluksesta 9 | Tiedosto on liian suuri 10 | Valokuvakirjasto 11 | Tuntematon 12 | Käyttöoikeudet estetty 13 | Tuo kuva kamerasta 14 | Valitse tiedosto %s 15 | Valitse kuva %s 16 | Poista valinta tiedostosta %s 17 | Poista valinta kuvasta %s 18 | Sulje kuvan valintatyökalu 19 | Myönnä oikeudet asetuksista, jotta voit lähettää liitetiedostoja 20 | Asetukset 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/layout/belvedere_bottom_sheet.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 24 | 25 | 33 | 34 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Fotocamera 4 | Raccolta 5 | Comprimi menu di azioni mobile 6 | Espandi menu di azioni mobile 7 | Importa file da raccolta 8 | Importa immagine da Google Foto 9 | File troppo grande 10 | Libreria foto 11 | Sconosciuto 12 | Autorizzazioni negate 13 | Importa immagine da fotocamera 14 | Seleziona file %s 15 | Seleziona immagine %s 16 | Deseleziona file %s 17 | Deseleziona immagine %s 18 | Chiudi strumento di selezione immagini 19 | Impostazioni 20 | Per inviare allegati devi concedere le autorizzazioni nelle impostazioni 21 | -------------------------------------------------------------------------------- /belvedere-core/src/main/java/zendesk/belvedere/IntentRegistry.java: -------------------------------------------------------------------------------- 1 | package zendesk.belvedere; 2 | 3 | import android.util.SparseArray; 4 | 5 | class IntentRegistry { 6 | 7 | private final static int START_REQUEST_CODE = 1600; 8 | private final static int END_REQUEST_CODE = 1650; 9 | 10 | private SparseArray pendingIntents; 11 | 12 | IntentRegistry() { 13 | this.pendingIntents = new SparseArray<>(); 14 | } 15 | 16 | int reserveSlot() { 17 | final int requestCode; 18 | synchronized (this) { 19 | requestCode = getRequestCode(); 20 | pendingIntents.put(requestCode, MediaResult.empty()); 21 | } 22 | return requestCode; 23 | } 24 | 25 | void freeSlot(int requestCode) { 26 | synchronized (this) { 27 | pendingIntents.remove(requestCode); 28 | } 29 | } 30 | 31 | void updateRequestCode(int requestCode, MediaResult belvedereResult) { 32 | synchronized (this) { 33 | pendingIntents.put(requestCode, belvedereResult); 34 | } 35 | } 36 | 37 | MediaResult getForRequestCode(int requestCode) { 38 | synchronized (this) { 39 | return pendingIntents.get(requestCode); 40 | } 41 | } 42 | 43 | private int getRequestCode() { 44 | for(int i = START_REQUEST_CODE; i < END_REQUEST_CODE; i++) { 45 | if(pendingIntents.get(i) == null) { 46 | return i; 47 | } 48 | } 49 | 50 | L.d(Belvedere.LOG_TAG, "No slot free. Clearing registry."); 51 | pendingIntents.clear(); 52 | return getRequestCode(); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-pt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Câmera 4 | Galeria 5 | Recolher menu de ação flutuante 6 | Expandir menu de ação flutuante 7 | Importar arquivo da galeria 8 | Importar imagem do Google Fotos 9 | Arquivo muito grande 10 | Biblioteca de fotos 11 | Desconhecido 12 | Permissões negadas 13 | Importar imagem da câmera 14 | Selecionar arquivo %s 15 | Selecionar imagem %s 16 | Cancelar seleção do arquivo %s 17 | Cancelar seleção da imagem %s 18 | Fechar seletor de imagens 19 | Configurações 20 | Para enviar anexos, você precisa conceder permissões nas suas configurações 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Kamera 4 | Galerie 5 | Unverankertes Aktionsmenü reduzieren 6 | Unverankertes Aktionsmenü erweitern 7 | Datei aus Galerie importieren 8 | Bild aus Google Photos importieren 9 | Datei ist zu groß 10 | Fotobibliothek 11 | Unbekannt 12 | Berechtigungen abgelehnt 13 | Bild aus Kamera importieren 14 | Datei %s auswählen 15 | Bild %s auswählen 16 | Auswahl von Datei %s aufheben 17 | Auswahl von Bild %s aufheben 18 | Bildauswahl schließen 19 | Einstellungen 20 | Zum Senden von Anhängen müssen Sie in Ihren Einstellungen Berechtigungen zulassen 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-nl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Camera 4 | Galerie 5 | Zwevend actiemenu samenvouwen 6 | Zwevend actiemenu uitvouwen 7 | Bestand importeren vanuit galerie 8 | Afbeelding importeren vanuit Google Foto\'s 9 | Bestand te groot 10 | Fotoverzameling 11 | Onbekend 12 | Machtigingen geweigerd 13 | Afbeelding importeren vanaf camera 14 | Selecteer bestand %s 15 | Selecteer afbeelding %s 16 | Deselecteer bestand %s 17 | Deselecteer afbeelding %s 18 | Afbeeldingenkiezer sluiten 19 | Instellingen 20 | Als u bijlagen wilt verzenden, moet u machtigingen toestaan in uw instellingen 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-pt-rBR/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Câmera 4 | Galeria 5 | Recolher menu de ação flutuante 6 | Expandir menu de ação flutuante 7 | Importar arquivo da galeria 8 | Importar imagem do Google Fotos 9 | Arquivo muito grande 10 | Biblioteca de fotos 11 | Desconhecido 12 | Permissões negadas 13 | Importar imagem da câmera 14 | Selecionar arquivo %s 15 | Selecionar imagem %s 16 | Cancelar seleção do arquivo %s 17 | Cancelar seleção da imagem %s 18 | Fechar seletor de imagens 19 | Para enviar anexos, você precisa conceder permissões nas suas configurações 20 | Configurações 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-tr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Fotoğraf makinesi 4 | Galeri 5 | Hareketli Eylem Menüsünü Daralt 6 | Hareketli Eylem Menüsünü Genişlet 7 | Galeriden içe dosya aktarın 8 | Google Fotoğraflar\'dan içe resim aktarın 9 | Dosya çok büyük 10 | Fotoğraf kitaplığı 11 | Bilinmiyor 12 | İzinler reddedildi 13 | Fotoğraf makinesinden içe resim aktarın 14 | %s adlı dosyayı seçin 15 | %s adlı resmi seçin 16 | %s adlı dosyanın seçimini kaldırın 17 | %s adlı resmin seçimini kaldırın 18 | Resim seçiciyi kapatın 19 | Ekleri göndermek için ayarlarınızda izinlere izin vermeniz gerekir 20 | Ayarlar 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-hu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Kamera 4 | Galéria 5 | A lebegő műveleti menü összecsukása 6 | A lebegő műveleti menü kibontása 7 | Fájl importálása a galériából 8 | Kép importálása a Google Fotókból 9 | Túl nagy a fájl 10 | Fotóalbum 11 | Ismeretlen 12 | Engedélyek megtagadva 13 | Kép importálása a kamerából 14 | %s nevű fájl kiválasztása 15 | %s nevű kép kiválasztása 16 | %s nevű fájl kiválasztásának megszüntetése 17 | %s nevű kép kiválasztásának megszüntetése 18 | A képválasztó bezárása 19 | Beállítások 20 | Mellékletek küldéséhez engedélyeket kell engedélyeznie a beállításokban 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Камера 4 | Галерея 5 | Свернуть плавающее меню действий 6 | Развернуть плавающее меню действий 7 | Импортировать файл из галереи 8 | Импортировать изображение из Google Photos 9 | Слишком большой файл 10 | Библиотека фото 11 | Неизвестно 12 | В доступе отказано 13 | Импортировать изображение из камеры 14 | Выбрать файл %s 15 | Выбрать изображение %s 16 | Отменить выбор файла %s 17 | Отменить выбор изображения %s 18 | Закрыть окно выбора изображения 19 | Для отправки прикрепленных файлов необходимо предоставить разрешения в настройках 20 | Настройки 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Cámara 4 | Galería 5 | Contraer el menú de acciones flotante 6 | Ampliar el menú de acciones flotante 7 | Importar archivo de la galería 8 | Importar imagen de Google Fotos 9 | El archivo es muy grande 10 | Biblioteca de fotos 11 | Desconocido 12 | Permisos denegados 13 | Importar imagen de la cámara 14 | Seleccionar el archivo %s 15 | Seleccionar la imagen %s 16 | Deseleccionar el archivo %s 17 | Deseleccionar la imagen %s 18 | Cerrar el selector de imagen 19 | Configuración 20 | Para enviar archivos adjuntos es necesario permitir permisos en la configuración 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-el/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Κάμερα 4 | Συλλογή εικόνων 5 | Σύμπτυξη κινούμενου μενού ενεργειών 6 | Επέκταση κινούμενου μενού ενεργειών 7 | Εισαγωγή αρχείου από τη συλλογή εικόνων 8 | Εισαγωγή εικόνας από τις Φωτογραφίες Google 9 | Το αρχείο είναι πολύ μεγάλο 10 | Βιβλιοθήκη φωτογραφιών 11 | Άγνωστος 12 | Δεν έχει δοθεί άδεια 13 | Εισαγωγή εικόνας από την κάμερα 14 | Επιλογή αρχείου %s 15 | Επιλογή εικόνας %s 16 | Κατάργηση επιλογής αρχείου %s 17 | Κατάργηση επιλογής εικόνας%s 18 | Κλείσιμο εργαλείου επιλογής εικόνας 19 | Για να στείλετε συνημμένα, πρέπει να επιτρέψετε δικαιώματα στις ρυθμίσεις σας 20 | Ρυθμίσεις 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-bg/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Камера 4 | Галерия 5 | Свиване на плаващото меню „Действие“ 6 | Разгъване на плаващото меню „Действие“ 7 | Импортиране на файл от галерията 8 | Импортиране на снимки от Google Снимки 9 | Файлът е твърде голям 10 | Библиотека със снимки 11 | Непознат тип файл 12 | Отказани разрешения 13 | Импорт на изображение от камерата 14 | Избиране на файл %s 15 | Избиране на изображение %s 16 | Премахване на избора на файл %s 17 | Премахване на избора на изображение %s 18 | Затваряне на избирача на изображения 19 | Настройки 20 | За да изпращате прикачени файлове, трябва да активирате разрешенията в настройките си 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Appareil photo 4 | Galerie 5 | Réduire le menu Actions flottant 6 | Développer le menu Actions flottant 7 | Importer le fichier à partir de la galerie 8 | Importer l’image à partir de Google Photos 9 | Fichier trop volumineux 10 | Bibliothèque de photos 11 | Inconnu 12 | Permissions refusées 13 | Importer l’image à partir de l’appareil photo 14 | Sélectionner le fichier %s 15 | Sélectionner l’image %s 16 | Désélectionner le fichier %s 17 | Désélectionner l’image %s 18 | Fermer le sélecteur d’image 19 | Paramètres 20 | Pour envoyer des pièces jointes, vous devez autoriser les permissions dans vos paramètres. 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-fil/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Camera 4 | Gallery 5 | I-collapse ang Floating na Menu ng Pagkilos 6 | I-expand ang Floating na Menu ng Pagkilos 7 | Mag-import ng file mula sa gallery 8 | Mag-import ng larawan mula sa Google Photos 9 | Masyadong malaki ang file 10 | Library ng larawan 11 | Hindi kilala 12 | Tinanggihan ang mga pahintulot 13 | Mag-import ng larawan mula sa camera 14 | Piliin ang file na %s 15 | Piliin ang larawan na %s 16 | I-unselect ang file na %s 17 | I-unselect ang larawan na %s 18 | Isara ang picker ng larawan 19 | Mga Setting 20 | Para magpadala ng mga kalakip, kailangan mong payagan ang mga pahintulot sa iyong mga setting 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values-fr-rCA/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Appareil photo 4 | Galerie 5 | Réduire le menu Actions flottant 6 | Développer le menu Actions flottant 7 | Importer le fichier à partir de la galerie 8 | Importer l’image à partir de Google Photos 9 | Fichier trop volumineux 10 | Bibliothèque de photos 11 | Inconnu 12 | Permissions refusées 13 | Importer l’image à partir de l’appareil photo 14 | Sélectionner le fichier %s 15 | Sélectionner l’image %s 16 | Désélectionner le fichier %s 17 | Désélectionner l’image %s 18 | Fermer le sélecteur d’image 19 | Pour envoyer des pièces jointes, vous devez autoriser les permissions dans vos paramètres. 20 | Paramètres 21 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values/belvedere_imagestream_styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 350dp 6 | 4dp 7 | 4dp 8 | 2dp 9 | 220dp 10 | 8dp 11 | 0dp 12 | 12dp 13 | 8dp 14 | 15 | 16 | #fff5f5f5 17 | #ffffffff 18 | #89000000 19 | #ffffffff 20 | #17494D 21 | #FFFFFF 22 | #00A656 23 | 24 | 25 | 150 26 | 45 27 | 50 28 | 2 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /belvedere/src/main/java/zendesk/belvedere/ImageStreamMvp.java: -------------------------------------------------------------------------------- 1 | package zendesk.belvedere; 2 | 3 | import android.view.View.OnClickListener; 4 | 5 | import java.util.List; 6 | 7 | interface ImageStreamMvp { 8 | 9 | interface Model { 10 | 11 | List getLatestImages(); 12 | 13 | boolean hasCameraIntent(); 14 | 15 | boolean hasDocumentIntent(); 16 | 17 | boolean hasGooglePhotosIntent(); 18 | 19 | MediaIntent getCameraIntent(); 20 | 21 | MediaIntent getDocumentIntent(); 22 | 23 | MediaIntent getGooglePhotosIntent(); 24 | 25 | List getSelectedMediaResults(); 26 | 27 | List addToSelectedItems(MediaResult mediaResult); 28 | 29 | List removeFromSelectedItems(MediaResult mediaResult); 30 | 31 | long getMaxFileSize(); 32 | 33 | boolean showFullScreenOnly(); 34 | 35 | } 36 | 37 | interface View { 38 | 39 | void initViews(boolean fullScreenOnly); 40 | 41 | void showImageStream(List images, List selectedImages, boolean fullScreenOnly, boolean showCamera, ImageStreamAdapter.Listener listener); 42 | 43 | void showDocumentMenuItem(OnClickListener onClickListener); 44 | 45 | void showGooglePhotosMenuItem(OnClickListener onClickListener); 46 | 47 | void openMediaIntent(MediaIntent mediaIntent, ImageStream imageStream); 48 | 49 | void showToast(int textId); 50 | 51 | void updateToolbarTitle(int selectedImages); 52 | 53 | boolean shouldShowFullScreen(); 54 | 55 | void updateFloatingActionButton(int selectedImages); 56 | } 57 | 58 | interface Presenter { 59 | 60 | void init(); 61 | 62 | void onImageStreamScrolled(int height, int scrollArea, float scrollPosition); 63 | 64 | void dismiss(); 65 | 66 | void sendSelectedImages(); 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: android 2 | dist: trusty 3 | jdk: 4 | - oraclejdk8 5 | before_cache: 6 | - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock 7 | cache: 8 | directories: 9 | - "$HOME/.gradle/caches/" 10 | - "$HOME/.gradle/wrapper/" 11 | android: 12 | components: 13 | - tools 14 | - android-30 15 | - platform-tools 16 | - extra-android-m2repository 17 | licenses: 18 | - android-sdk-license-[0-9a-f]{8} 19 | - android-sdk-preview-license-[0-9a-f]{8} 20 | branches: 21 | only: 22 | - master 23 | env: 24 | global: 25 | # zdOssRepoUsername 26 | - secure: IP1UCgXVbhtDbryYe/AeLbELh3s7oCnGJ9sruJbUCl8ua2tPmLl8s5c0ydpLq1f4FElDeHLXkTn7yUOVwELZd0+CPpjxv0g4SGPh2AnvPEeI/LV3bN14RTg3HqJCtXeDuskY9ApNKxgQ36tCbW+yETjPwSh9ZgND7RTgph3q7T8uqQQ6X8dafVNkL6+CiVyoG3H7fHK0+1EO1/9mZN05YRZzfc1jgbp0Riefl4Gahfy0cFWaPtgo06wx8nKLOGx1UgK2h4IDulDtOM+e/c2JyPn8Z/OrB7qIEcgPzdNi2jN5VDc9+tIiR2AxuLmzRIMl+/CgvuWj93An4MNexGpuaAmZdKsB/MCemRjs6lnNmhz/UYIJ5wcdugmYdMciR5b4LKkkZZG3hzDHTc6ooeCzEtUKGdmMohbYYtDJT1UIpw6W4qQYB9yV5Y8GUJTIk68xTY30c3+ITgWHEf9g++NJV4frbvUWr9zMJ4PXWd7SxhaXGw1rGtUvb8lMB9ssnbxDq+HFsIt9GBOAvXoXAUAeIaRes2D3f+wtWA3k2h5DTJqU9LIHaBtU3oGbeqKMOaCoxwh64MBlD/f+hmaV3kB6Z1QUhYXdWJ+A7ybrl+0QzcfHCJ2Dsj+4fWvIAJ/U9JTfY1ANUy8fFTlegdTwHpOETkqtZH+3yohKfbnuUCSpE0E= 27 | # zdOssRepoPassword 28 | - secure: aUPxQ445lKEHCAAW1HvahabocpwoeH9esFE89agku8DhbrOGnTPswmwaVJu4uPLQEWSpbkwhhBEUgq1aEWdARgd7ovnhG9molGfHocL2yyUOQxLfQq/ZO5aBLN32JtpIR3O92Z3XDAHfqdF3ZEkSOfACoOPiUQPmhIpSg85dVt9TIMVwxVrZ25z6LiEXQw7ePMrN3iYUCtHbPEk7AmrxrR1B62eKf698CfVsO4Ny40mPL2l5kTaVxVVkL1a6q4EDeTCPcgFVsu7TnW1TcS6b0Rdb9UMq/FjmvAby/QW2URhChl6pPTxdFEoJrICyOLP5bk7sDQIqljlUpjrlWAD5VW1Qj1qbyv3QzPHv8l7hAvOaxZtnEQTxOfx6fsZQ/E1ljPCReW/43rrdhDbsChZdg8dZxrc4SAeIH4dspQzZs2ksIV1x4uHRxTeOftdnEt2A8xueyFPey2uNkENtW/Ra/En5cC0hcieFSd8GiCJuFpSl0oln+BhQoh8Hy1RaIM7QDNOfKO1PgtqKgK+FAnVftYHlUbr6IrLlPc2ZeeiLafCY1no/B34RkN2XG0rH2MwRo71UYfASVfD4TpFYjxBAR8lH2u8AxpBVV0E93X6eaPQ7tgV+jOLDW9dw8ecHtwu0POmGOQvjNhxxBtwIF9g7QuQi62yYEfYUYsjY0oZzycQ= 29 | script: 30 | - "./scripts/build.sh" 31 | -------------------------------------------------------------------------------- /belvedere/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | ext { 3 | artifactId = 'belvedere' 4 | javadocTitle = "Belvedere - ${rootProject.ext.versionName}" 5 | packaging = 'aar' 6 | } 7 | 8 | apply plugin: 'com.android.library' 9 | apply plugin: 'kotlin-android' 10 | apply from: '../scripts/gradle/zendesk-deploy.gradle' 11 | apply from: '../scripts/gradle/gradle-commons.gradle' 12 | 13 | android { 14 | compileSdkVersion rootProject.ext.compileSdkVersion 15 | 16 | defaultConfig { 17 | minSdkVersion rootProject.ext.minSdkVersionUi 18 | targetSdkVersion rootProject.ext.targetSdkVersion 19 | versionCode 1 20 | versionName rootProject.ext.versionName 21 | consumerProguardFiles 'consumer-proguard.pro' 22 | 23 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 24 | } 25 | 26 | lintOptions { 27 | abortOnError false 28 | } 29 | 30 | testOptions { 31 | unitTests.returnDefaultValues = true 32 | } 33 | } 34 | 35 | dependencies { 36 | if (useLocalDependency()) { 37 | api project(':belvedere-core') 38 | } else { 39 | api group: 'com.zendesk.belvedere2', name: 'belvedere-core', version: rootProject.ext.versionName, changing: true 40 | } 41 | 42 | implementation "androidx.annotation:annotation:$annotationVersion" 43 | implementation "androidx.core:core:$androidxCoreVersion" 44 | implementation "androidx.fragment:fragment:$fragmentVersion" 45 | implementation "com.google.android.material:material:$materialVersion" 46 | 47 | implementation "com.squareup.picasso:picasso:$picassoVersion" 48 | 49 | // Unit tests 50 | testImplementation group: 'junit', name: 'junit', version: '4.12' 51 | testImplementation group: 'org.mockito', name: 'mockito-core', version: '2.19.1' 52 | testImplementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: rootProject.ext.kotlinVersion 53 | testImplementation group: 'com.google.truth', name: 'truth', version: '0.39' 54 | } 55 | -------------------------------------------------------------------------------- /belvedere/src/main/res/values/styles_deprecated.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 13 | 14 | 22 | 23 | 32 | 33 | 44 | 45 | 9 | 10 | #ffefefef 11 | 12 | 15 | 16 | 29 | 30 | 39 | 40 | 43 | 44 | 48 | 49 |