Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .idea/copyright/IONOS_HiDrive_Next.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/copyright/profiles_settings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 22 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ buildscript {
classpath "org.jacoco:org.jacoco.core:$jacoco_version"
classpath "org.jacoco:org.jacoco.report:$jacoco_version"
classpath "org.jacoco:org.jacoco.agent:$jacoco_version"
classpath 'com.google.gms:google-services:4.4.2'
classpath "com.google.firebase:firebase-crashlytics-gradle:3.0.2"
}
}

Expand All @@ -43,6 +45,7 @@ apply plugin: 'pmd'
apply from: "$rootProject.projectDir/jacoco.gradle"
apply plugin: 'com.github.spotbugs'
apply plugin: 'io.gitlab.arturbosch.detekt'
apply plugin: 'com.google.firebase.crashlytics'

// needed to make renovate run without shot, as shot requires Android SDK
// https://github.com/pedrovgs/Shot/issues/300
Expand All @@ -51,6 +54,9 @@ if (shotTest) {
}
apply plugin: 'com.google.devtools.ksp'

if (getGradle().getStartParameter().getTaskRequests().toString().contains("Gplay")){
apply plugin: 'com.google.gms.google-services'
}

println "Gradle uses Java ${Jvm.current()}"

Expand Down Expand Up @@ -163,8 +169,11 @@ android {
}

gplay {
applicationId 'com.nextcloud.client'
applicationId "com.ionos.hidrivenext"
dimension "default"
versionCode 15
isDefault = true
resConfigs "en", "de", "es", "fr", "nl", "it"
}

huawei {
Expand Down Expand Up @@ -319,9 +328,9 @@ dependencies {
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.7")

// document scanner not available on FDroid (generic) due to OpenCV binaries
gplayImplementation project(':appscan')
huaweiImplementation project(':appscan')
qaImplementation project(':appscan')
implementation project(':scanbot')

spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.13.0'
spotbugsPlugins 'com.mebigfatguy.fb-contrib:fb-contrib:7.6.9'
Expand All @@ -334,6 +343,10 @@ dependencies {

implementation 'org.conscrypt:conscrypt-android:2.5.3'

implementation "org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.10.2"

implementation "androidx.media3:media3-common:$androidxMediaVersion"
implementation "androidx.media3:media3-session:$androidxMediaVersion"
implementation "androidx.media3:media3-ui:$androidxMediaVersion"
implementation "androidx.media3:media3-session:$androidxMediaVersion"
implementation "androidx.media3:media3-exoplayer:$androidxMediaVersion"
Expand Down Expand Up @@ -370,6 +383,9 @@ dependencies {
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.14'
}

implementation 'io.reactivex.rxjava2:rxjava:2.2.21'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'

// dependencies for local unit tests
testImplementation 'junit:junit:4.13.2'
testImplementation "org.mockito:mockito-core:$mockitoVersion"
Expand Down Expand Up @@ -430,6 +446,10 @@ dependencies {

// splash screen dependency ref: https://developer.android.com/develop/ui/views/launch/splash-screen/migrate
implementation 'androidx.core:core-splashscreen:1.0.1'

implementation(platform("com.google.firebase:firebase-bom:33.7.0"))
implementation "com.google.firebase:firebase-analytics"
implementation "com.google.firebase:firebase-crashlytics"
}

configurations.configureEach {
Expand Down
51 changes: 48 additions & 3 deletions app/src/gplay/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@
android:name="android.permission.REQUEST_INSTALL_PACKAGES"
tools:node="remove"/>

<uses-permission
android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:node="merge"
tools:ignore="ScopedStorage" />

<uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />

<application
Expand All @@ -25,13 +30,13 @@

<meta-data
android:name="firebase_analytics_collection_deactivated"
android:value="true" />
tools:node="remove" />
<meta-data
android:name="google_analytics_adid_collection_enabled"
android:value="false" />
tools:node="remove" />
<meta-data
android:name="google_analytics_ssaid_collection_enabled"
android:value="false" />
tools:node="remove" />

<activity
android:name=".authentication.ModifiedAuthenticatorActivity"
Expand Down Expand Up @@ -65,6 +70,46 @@
</intent-filter>
</service>

<meta-data
android:name="firebase_analytics_collection_enabled"
android:value="false"
tools:node="merge" />

<receiver
android:name="com.nextcloud.client.widget.DashboardWidgetProvider"
android:enabled="false" />

<activity
android:name=".ui.preview.PreviewImageActivity"
android:theme="@style/Theme.ownCloud.PreviewImage"
tools:replace="android:theme" />

<activity
android:theme="@style/Theme.ownCloud.noActionBar.Login"
android:name="com.ionos.authorization_method.AuthorizationMethodActivity"
android:exported="false" />

<activity
android:name="com.ionos.privacy.DataProtectionActivity"
android:exported="false" />

<activity
android:name="com.ionos.privacy.PrivacySettingsActivity"
android:exported="false" />

<activity android:name=".ui.activity.ShareActivity"
tools:remove="android:theme" />

<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data
android:name="com.ionos.startup.IonosInitializer"
android:value="androidx.startup" />
</provider>

</application>

</manifest>
Binary file added app/src/gplay/ic_launcher-playstore.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 14 additions & 4 deletions app/src/gplay/java/com/nextcloud/client/di/VariantModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,15 @@
*
* SPDX-FileCopyrightText: 2023 Álvaro Brey <[email protected]>
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
* SPDX-FileCopyrightText: 2025 STRATO GmbH.
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
package com.nextcloud.client.di

import com.nextcloud.appscan.ScanPageContract
import androidx.activity.result.contract.ActivityResultContract
import com.ionos.scanbot.availability.Availability
import com.ionos.scanbot.di.qualifiers.Scanbot
import com.ionos.scanbot.di.qualifiers.ScanbotLicense
import com.nextcloud.client.documentscan.AppScanOptionalFeature
import dagger.Module
import dagger.Provides
Expand All @@ -17,9 +21,15 @@ import dagger.Reusable
internal class VariantModule {
@Provides
@Reusable
fun scanOptionalFeature(): AppScanOptionalFeature {
fun scanOptionalFeature(
@Scanbot featureAvailability: Availability,
@ScanbotLicense licenseAvailability: Availability
): AppScanOptionalFeature {
return object : AppScanOptionalFeature() {
override fun getScanContract() = ScanPageContract()
override fun getScanContract(): ActivityResultContract<Unit, String?> {
throw UnsupportedOperationException("Document scan is not available")
}
override val isAvailable: Boolean = featureAvailability.available() && licenseAvailability.available()
}
}
}
16 changes: 16 additions & 0 deletions app/src/gplay/res/animator/progress_bar_login_indeterminate.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ IONOS HiDrive Next - Android Client
~
~ SPDX-FileCopyrightText: 2025 STRATO GmbH.
~ SPDX-License-Identifier: GPL-2.0
-->

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2500"
android:interpolator="@android:anim/linear_interpolator"
android:propertyName="rotation"
android:repeatCount="-1"
android:valueFrom="0"
android:valueTo="720"
android:valueType="floatType" />
11 changes: 11 additions & 0 deletions app/src/gplay/res/color-night/drawer_item_shape_color.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ IONOS HiDrive Next - Android Client
~
~ SPDX-FileCopyrightText: 2025 STRATO GmbH.
~ SPDX-License-Identifier: GPL-2.0
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/ionos_drawer_item_background_checked" android:state_checked="true"/>
<item android:color="@color/ionos_drawer_item_background" />
</selector>
11 changes: 11 additions & 0 deletions app/src/gplay/res/color/drawer_item_shape_color.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ IONOS HiDrive Next - Android Client
~
~ SPDX-FileCopyrightText: 2025 STRATO GmbH.
~ SPDX-License-Identifier: GPL-2.0
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/ionos_drawer_item_background_checked" android:state_checked="true"/>
<item android:color="@color/ionos_drawer_item_background" />
</selector>
18 changes: 18 additions & 0 deletions app/src/gplay/res/drawable-night/favorite.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!--
~ IONOS HiDrive Next - Android Client
~
~ SPDX-FileCopyrightText: 2025 STRATO GmbH.
~ SPDX-License-Identifier: GPL-2.0
-->

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
<path
android:fillColor="#FFAA00"
android:pathData="M8.417,0.774L8.418,0.776L10.366,4.91L10.48,5.151L10.743,5.191L15.096,5.853C15.097,5.853 15.097,5.853 15.097,5.853C15.265,5.879 15.416,6.003 15.475,6.189C15.534,6.374 15.485,6.576 15.355,6.708L15.355,6.709L12.198,9.93L12.02,10.111L12.061,10.361L12.81,14.913C12.81,14.913 12.81,14.913 12.81,14.913C12.841,15.107 12.762,15.299 12.612,15.411C12.472,15.516 12.287,15.53 12.128,15.444C12.128,15.444 12.128,15.444 12.127,15.443L8.242,13.304L8.001,13.171L7.76,13.304L3.874,15.443C3.874,15.444 3.874,15.444 3.873,15.444C3.718,15.528 3.531,15.515 3.387,15.409C3.242,15.302 3.16,15.109 3.192,14.913C3.192,14.913 3.192,14.913 3.192,14.913L3.937,10.361L3.978,10.111L3.801,9.93L0.644,6.709L0.643,6.708C0.516,6.579 0.465,6.375 0.524,6.186C0.581,6.005 0.731,5.88 0.902,5.853C0.902,5.853 0.902,5.853 0.902,5.853L5.252,5.191L5.516,5.151L5.629,4.91L7.577,0.777C7.577,0.777 7.577,0.777 7.577,0.777C7.661,0.6 7.826,0.5 7.998,0.5C8.172,0.5 8.337,0.602 8.417,0.774Z"
android:strokeWidth="1"
android:strokeColor="#ffffff" />
</vector>
25 changes: 25 additions & 0 deletions app/src/gplay/res/drawable-night/file_image.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!--
~ IONOS HiDrive Next - Android Client
~
~ SPDX-FileCopyrightText: 2025 STRATO GmbH.
~ SPDX-License-Identifier: GPL-2.0
-->

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="48"
android:viewportHeight="48">
<group>
<clip-path android:pathData="M0,0h48v48h-48z" />
<path
android:fillColor="@color/cornflower"
android:pathData="M19.149,13.49L4,37.999H36L20.851,13.49C20.46,12.858 19.54,12.858 19.149,13.49Z" />
<path
android:fillColor="@color/curious_blue"
android:pathData="M33.152,23.357L24,38H44L34.848,23.357C34.456,22.73 33.544,22.73 33.152,23.357Z" />
<path
android:fillColor="@color/white"
android:pathData="M34,16C31.519,16 29.5,13.981 29.5,11.5C29.5,9.019 31.519,7 34,7C36.481,7 38.5,9.019 38.5,11.5C38.5,13.981 36.481,16 34,16ZM34,8C32.07,8 30.5,9.57 30.5,11.5C30.5,13.43 32.07,15 34,15C35.93,15 37.5,13.43 37.5,11.5C37.5,9.57 35.93,8 34,8Z" />
</group>
</vector>
25 changes: 25 additions & 0 deletions app/src/gplay/res/drawable-night/file_movie.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!--
~ IONOS HiDrive Next - Android Client
~
~ SPDX-FileCopyrightText: 2025 STRATO GmbH.
~ SPDX-License-Identifier: GPL-2.0
-->

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="48"
android:viewportHeight="48">
<group>
<clip-path android:pathData="M0,0h48v48h-48z" />
<path
android:fillColor="@color/curious_blue"
android:pathData="M45,8H3C2.448,8 2,8.448 2,9V39C2,39.552 2.448,40 3,40H45C45.552,40 46,39.552 46,39V9C46,8.448 45.552,8 45,8Z" />
<path
android:fillColor="@color/white"
android:pathData="M24,36C30.627,36 36,30.627 36,24C36,17.373 30.627,12 24,12C17.373,12 12,17.373 12,24C12,30.627 17.373,36 24,36Z" />
<path
android:fillColor="@color/curious_blue"
android:pathData="M28.5,24L21,19.5V28.5L28.5,24Z" />
</group>
</vector>
31 changes: 31 additions & 0 deletions app/src/gplay/res/drawable-night/file_sound.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<!--
~ IONOS HiDrive Next - Android Client
~
~ SPDX-FileCopyrightText: 2025 STRATO GmbH.
~ SPDX-License-Identifier: GPL-2.0
-->

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="48"
android:viewportHeight="48">
<group>
<clip-path android:pathData="M0,0h48v48h-48z" />
<path
android:fillColor="@color/white"
android:pathData="M15.5,11.294V21.983L39,13.689V3L15.5,11.294Z" />
<path
android:fillColor="@color/white"
android:pathData="M38.487,31.102C38.211,31.102 37.987,30.878 37.987,30.602V6.602C37.987,6.326 38.211,6.102 38.487,6.102C38.763,6.102 38.987,6.326 38.987,6.602V30.602C38.987,30.878 38.763,31.102 38.487,31.102Z" />
<path
android:fillColor="@color/white"
android:pathData="M38.239,28.161C39.797,30.306 38.887,33.623 36.206,35.571C33.525,37.519 30.089,37.359 28.531,35.214C26.973,33.069 27.883,29.752 30.564,27.804C33.245,25.856 36.681,26.016 38.239,28.161Z" />
<path
android:fillColor="@color/white"
android:pathData="M15.987,39.102C15.711,39.102 15.487,38.878 15.487,38.602V14.602C15.487,14.326 15.711,14.102 15.987,14.102C16.263,14.102 16.487,14.326 16.487,14.602V38.602C16.487,38.878 16.263,39.102 15.987,39.102Z" />
<path
android:fillColor="@color/white"
android:pathData="M15.739,36.161C17.297,38.306 16.387,41.623 13.706,43.571C11.025,45.519 7.589,45.359 6.031,43.214C4.473,41.069 5.383,37.752 8.064,35.804C10.745,33.856 14.181,34.016 15.739,36.161Z" />
</group>
</vector>
Loading
Loading