Browse Source

Merge master

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 year ago
parent
commit
891a63f580

+ 1 - 1
.github/workflows/assembleFlavors.yml

@@ -19,7 +19,7 @@ jobs:
             matrix:
                 flavor: [ Generic, Gplay, Huawei ]
         steps:
-            -   uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v3
+            -   uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3
             -   name: set up JDK 17
                 uses: actions/setup-java@0ab4596768b603586c0de567f2430c30f5b0d2b0 # v3
                 with:

+ 1 - 1
.github/workflows/check.yml

@@ -19,7 +19,7 @@ jobs:
             matrix:
                 task: [ detekt, spotlessKotlinCheck ]
         steps:
-            -   uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v3
+            -   uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3
             -   name: Set up JDK 17
                 uses: actions/setup-java@0ab4596768b603586c0de567f2430c30f5b0d2b0 # v3
                 with:

+ 2 - 2
.github/workflows/codeql.yml

@@ -32,7 +32,7 @@ jobs:
         with:
           swap-size-gb: 10
       - name: Initialize CodeQL
-        uses: github/codeql-action/init@0116bc2df50751f9724a2e35ef1f24d22f90e4e1 # v2.22.3
+        uses: github/codeql-action/init@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2.22.4
         with:
           languages: ${{ matrix.language }}
       - name: Set up JDK 17
@@ -46,4 +46,4 @@ jobs:
           echo "org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError" > "$HOME/.gradle/gradle.properties"
           ./gradlew assembleDebug
       - name: Perform CodeQL Analysis
-        uses: github/codeql-action/analyze@0116bc2df50751f9724a2e35ef1f24d22f90e4e1 # v2.22.3
+        uses: github/codeql-action/analyze@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2.22.4

+ 3 - 3
.github/workflows/command-rebase.yml

@@ -23,7 +23,7 @@ jobs:
 
     steps:
       - name: Add reaction on start
-        uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.2
+        uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0
         with:
           token: ${{ secrets.COMMAND_BOT_PAT }}
           repository: ${{ github.event.repository.full_name }}
@@ -31,7 +31,7 @@ jobs:
           reaction-type: "+1"
 
       - name: Checkout the latest code
-        uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
         with:
           fetch-depth: 0
           token: ${{ secrets.COMMAND_BOT_PAT }}
@@ -42,7 +42,7 @@ jobs:
           GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
 
       - name: Add reaction on failure
-        uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.2
+        uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0
         if: failure()
         with:
           token: ${{ secrets.COMMAND_BOT_PAT }}

+ 1 - 1
.github/workflows/detectWrongSettings.yml

@@ -16,7 +16,7 @@ jobs:
         runs-on: ubuntu-22.04
 
         steps:
-            -   uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v3
+            -   uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3
             -   name: Set up JDK 17
                 uses: actions/setup-java@0ab4596768b603586c0de567f2430c30f5b0d2b0 # v3
                 with:

+ 1 - 1
.github/workflows/qa.yml

@@ -19,7 +19,7 @@ jobs:
             -   name: Check if secrets are available
                 run: echo "::set-output name=ok::${{ secrets.KS_PASS != '' }}"
                 id: check-secrets
-            -   uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v3
+            -   uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3
                 if: ${{ steps.check-secrets.outputs.ok == 'true' }}
             -   name: set up JDK 17
                 uses: actions/setup-java@0ab4596768b603586c0de567f2430c30f5b0d2b0 # v3

+ 2 - 2
.github/workflows/scorecard.yml

@@ -29,7 +29,7 @@ jobs:
           persist-credentials: false
 
       - name: "Run analysis"
-        uses: ossf/scorecard-action@483ef80eb98fb506c348f7d62e28055e49fe2398 # v2.3.0
+        uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1
         with:
           results_file: results.sarif
           results_format: sarif
@@ -37,6 +37,6 @@ jobs:
 
       # Upload the results to GitHub's code scanning dashboard.
       - name: "Upload to code-scanning"
-        uses: github/codeql-action/upload-sarif@0116bc2df50751f9724a2e35ef1f24d22f90e4e1 # v2.22.3
+        uses: github/codeql-action/upload-sarif@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2.22.4
         with:
           sarif_file: results.sarif

+ 1 - 1
.github/workflows/screenShotTest.yml

@@ -22,7 +22,7 @@ jobs:
                 color: [ blue ]
                 api-level: [ 27 ]
         steps:
-            -   uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v3
+            -   uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3
 
             -   name: Gradle cache
                 uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3

+ 1 - 1
.github/workflows/unit-tests.yml

@@ -18,7 +18,7 @@ jobs:
     test:
         runs-on: ubuntu-latest
         steps:
-            -   uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
+            -   uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
             -   name: Set up JDK 17
                 uses: actions/setup-java@0ab4596768b603586c0de567f2430c30f5b0d2b0 # v3.13.0
                 with:

+ 22 - 1
CHANGELOG.md

@@ -1,9 +1,30 @@
-## 3.24.1 (February 21, 2022)
+## 3.26.0 (September 16, 2023)
+
+- image editing
+- image details, with map
+- show other Nextcloud apps
+
+Minimum: NC 16 Server, Android 6.0 Marshmallow
+
+For a full list, please see https://github.com/nextcloud/android/milestone/84
+
+## 3.25.0 (June 13, 2023)
+
+- show Groupfolder
+- Tag in file listing
+
+Minimum: NC 16 Server, Android 6.0 Marshmallow
+
+For a full list, please see https://github.com/nextcloud/android/milestone/81
+
+## 3.24.1 (February 21, 2023)
 
 - Fix crash in previous version when connecting to old server versions
 
 Minimum: NC 16 Server, Android 6.0 Marshmallow
 
+For a full list, please see https://github.com/nextcloud/android/milestone/80
+
 ## 3.24.0 (February 13, 2023)
 
 - Several performance optimizations by @starypatyk

BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepBoth.png


BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepExisting.png


BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepNew.png


BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_screenshotTextFiles.png


+ 19 - 19
app/src/main/java/com/nextcloud/client/jobs/FilesExportWork.kt

@@ -29,7 +29,6 @@ import android.content.ContentResolver
 import android.content.Context
 import android.content.Intent
 import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
-import android.graphics.BitmapFactory
 import androidx.core.app.NotificationCompat
 import androidx.work.Worker
 import androidx.work.WorkerParameters
@@ -69,9 +68,7 @@ class FilesExportWork(
 
         val successfulExports = exportFiles(fileIDs)
 
-        // show notification
         showSuccessNotification(successfulExports)
-
         return Result.success()
     }
 
@@ -105,7 +102,13 @@ class FilesExportWork(
 
     @Throws(IllegalStateException::class)
     private fun exportFile(ocFile: OCFile) {
-        FileExportUtils().exportFile(ocFile.fileName, ocFile.mimeType, contentResolver, ocFile, null)
+        FileExportUtils().exportFile(
+            ocFile.fileName,
+            ocFile.mimeType,
+            contentResolver,
+            ocFile,
+            null
+        )
     }
 
     private fun downloadFile(ocFile: OCFile) {
@@ -119,19 +122,16 @@ class FilesExportWork(
     }
 
     private fun showErrorNotification(successfulExports: Int) {
-        if (successfulExports == 0) {
-            showNotification(
-                appContext.resources.getQuantityString(R.plurals.export_failed, successfulExports, successfulExports)
-            )
+        val message = if (successfulExports == 0) {
+            appContext.resources.getQuantityString(R.plurals.export_failed, successfulExports, successfulExports)
         } else {
-            showNotification(
-                appContext.resources.getQuantityString(
-                    R.plurals.export_partially_failed,
-                    successfulExports,
-                    successfulExports
-                )
+            appContext.resources.getQuantityString(
+                R.plurals.export_partially_failed,
+                successfulExports,
+                successfulExports
             )
         }
+        showNotification(message)
     }
 
     private fun showSuccessNotification(successfulExports: Int) {
@@ -152,9 +152,7 @@ class FilesExportWork(
             NotificationUtils.NOTIFICATION_CHANNEL_DOWNLOAD
         )
             .setSmallIcon(R.drawable.notification_icon)
-            .setLargeIcon(BitmapFactory.decodeResource(appContext.resources, R.drawable.notification_icon))
-            .setSubText(user.accountName)
-            .setContentText(message)
+            .setContentTitle(message)
             .setAutoCancel(true)
 
         viewThemeUtils.androidx.themeNotificationCompatBuilder(appContext, notificationBuilder)
@@ -166,7 +164,8 @@ class FilesExportWork(
             appContext,
             notificationId,
             actionIntent,
-            PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE
+            PendingIntent.FLAG_CANCEL_CURRENT or
+                PendingIntent.FLAG_IMMUTABLE
         )
         notificationBuilder.addAction(
             NotificationCompat.Action(
@@ -176,7 +175,8 @@ class FilesExportWork(
             )
         )
 
-        val notificationManager = appContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
+        val notificationManager = appContext
+            .getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
         notificationManager.notify(notificationId, notificationBuilder.build())
     }
 

+ 16 - 14
app/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.kt

@@ -32,10 +32,10 @@ import android.os.Bundle
 import android.text.Editable
 import android.text.TextWatcher
 import android.view.View
-import android.widget.Button
 import androidx.appcompat.app.AlertDialog
 import androidx.fragment.app.DialogFragment
 import androidx.recyclerview.widget.GridLayoutManager
+import com.google.android.material.button.MaterialButton
 import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import com.nextcloud.android.lib.resources.directediting.DirectEditingCreateFileRemoteOperation
 import com.nextcloud.android.lib.resources.directediting.DirectEditingObtainListOfTemplatesRemoteOperation
@@ -90,7 +90,7 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
     private var adapter: TemplateAdapter? = null
     private var parentFolder: OCFile? = null
     private var title: String? = null
-    private var positiveButton: Button? = null
+    private var positiveButton: MaterialButton? = null
     private var creator: Creator? = null
 
     enum class Type {
@@ -103,17 +103,18 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
     override fun onStart() {
         super.onStart()
         val alertDialog = dialog as AlertDialog
-        val button = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE)
 
-        viewThemeUtils.platform.colorTextButtons(
-            button,
-            alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL)
-        )
-        button.setOnClickListener(this)
-        button.isEnabled = false
-        button.isClickable = false
+        val positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as MaterialButton
+        viewThemeUtils.material.colorMaterialButtonPrimaryTonal(positiveButton)
+
+        val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as MaterialButton
+        viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(negativeButton)
 
-        positiveButton = button
+        positiveButton.setOnClickListener(this)
+        positiveButton.isEnabled = false
+        positiveButton.isClickable = false
+
+        this.positiveButton = positiveButton
         checkEnablingCreateButton()
     }
 
@@ -128,6 +129,7 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
 
         parentFolder = arguments.getParcelable(ARG_PARENT_FOLDER)
         creator = arguments.getParcelable(ARG_CREATOR)
+
         title = arguments.getString(ARG_HEADLINE, getString(R.string.select_template))
         title = when (savedInstanceState) {
             null -> arguments.getString(ARG_HEADLINE)
@@ -175,7 +177,7 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
         val builder = MaterialAlertDialogBuilder(activity)
         builder.setView(view)
             .setPositiveButton(R.string.create, null)
-            .setNeutralButton(R.string.common_cancel, null)
+            .setNegativeButton(R.string.common_cancel, null)
             .setTitle(title)
 
         viewThemeUtils.dialog.colorMaterialAlertDialogBackground(binding.list.context, builder)
@@ -208,8 +210,8 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
     }
 
     fun setTemplateList(templateList: TemplateList?) {
-        adapter!!.setTemplateList(templateList)
-        adapter!!.notifyDataSetChanged()
+        adapter?.setTemplateList(templateList)
+        adapter?.notifyDataSetChanged()
     }
 
     override fun onClick(template: Template) {

+ 9 - 5
app/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java

@@ -29,6 +29,7 @@ import android.view.View;
 import android.widget.Button;
 import android.widget.Toast;
 
+import com.google.android.material.button.MaterialButton;
 import com.google.android.material.dialog.MaterialAlertDialogBuilder;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.di.Injectable;
@@ -70,7 +71,7 @@ public class ConflictsResolveDialog extends DialogFragment implements Injectable
     public OnConflictDecisionMadeListener listener;
     private User user;
     private final List<ThumbnailsCacheManager.ThumbnailGenerationTask> asyncTasks = new ArrayList<>();
-    private Button positiveButton;
+    private MaterialButton positiveButton;
     @Inject ViewThemeUtils viewThemeUtils;
     @Inject SyncedFolderProvider syncedFolderProvider;
 
@@ -119,9 +120,11 @@ public class ConflictsResolveDialog extends DialogFragment implements Injectable
             return;
         }
 
-        positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
-        viewThemeUtils.platform.colorTextButtons(positiveButton,
-                                                 alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL));
+        positiveButton = (MaterialButton) alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
+        MaterialButton negativeButton = (MaterialButton) alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
+
+        viewThemeUtils.material.colorMaterialButtonPrimaryTonal(positiveButton);
+        viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(negativeButton);
         positiveButton.setEnabled(false);
     }
 
@@ -175,7 +178,7 @@ public class ConflictsResolveDialog extends DialogFragment implements Injectable
 
                 }
             })
-            .setNeutralButton(R.string.common_cancel, (dialog, which) -> {
+            .setNegativeButton(R.string.common_cancel, (dialog, which) -> {
                 if (listener != null) {
                     listener.conflictDecisionMade(Decision.CANCEL);
                 }
@@ -275,4 +278,5 @@ public class ConflictsResolveDialog extends DialogFragment implements Injectable
 
         asyncTasks.clear();
     }
+
 }