Эх сурвалжийг харах

add redirect info to external link

Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
tobiasKaminsky 6 жил өмнө
parent
commit
07683a5f03

+ 3 - 3
build.gradle

@@ -211,9 +211,9 @@ dependencies {
     // dependencies for app building
     implementation 'com.android.support:multidex:1.0.3'
 //    implementation project('nextcloud-android-library')
-    genericImplementation "com.github.nextcloud:android-library:master-SNAPSHOT"
-    gplayImplementation "com.github.nextcloud:android-library:master-SNAPSHOT"
-    versionDevImplementation 'com.github.nextcloud:android-library:master-SNAPSHOT' // use always latest master
+    genericImplementation "com.github.nextcloud:android-library:externalLinkEmbedding-SNAPSHOT"
+    gplayImplementation "com.github.nextcloud:android-library:externalLinkEmbedding-SNAPSHOT"
+    versionDevImplementation 'com.github.nextcloud:android-library:externalLinkEmbedding-SNAPSHOT' // use always latest master
     implementation "com.android.support:support-v4:${supportLibraryVersion}"
     implementation "com.android.support:design:${supportLibraryVersion}"
     implementation 'com.jakewharton:disklrucache:2.0.2'

+ 11 - 13
src/main/java/com/owncloud/android/datamodel/ExternalLinksProvider.java

@@ -1,19 +1,19 @@
-/**
+/*
  * Nextcloud Android client application
- * <p>
+ * 
  * Copyright (C) 2017 Tobias Kaminsky
  * Copyright (C) 2017 Nextcloud.
- * <p>
+ * 
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
  * License as published by the Free Software Foundation; either
  * version 3 of the License, or any later version.
- * <p>
+ * 
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- * <p>
+ * 
  * You should have received a copy of the GNU Affero General Public
  * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
@@ -128,6 +128,7 @@ public class ExternalLinksProvider {
         cv.put(ProviderMeta.ProviderTableMeta.EXTERNAL_LINKS_TYPE, externalLink.type.toString());
         cv.put(ProviderMeta.ProviderTableMeta.EXTERNAL_LINKS_NAME, externalLink.name);
         cv.put(ProviderMeta.ProviderTableMeta.EXTERNAL_LINKS_URL, externalLink.url);
+        cv.put(ProviderMeta.ProviderTableMeta.EXTERNAL_LINKS_REDIRECT, externalLink.redirect);
         return cv;
     }
 
@@ -161,16 +162,13 @@ public class ExternalLinksProvider {
                     type = ExternalLinkType.UNKNOWN;
                     break;
             }
-            String name = cursor.getString(cursor.getColumnIndex(
-                    ProviderMeta.ProviderTableMeta.EXTERNAL_LINKS_NAME));
-            String url = cursor.getString(cursor.getColumnIndex(
-                    ProviderMeta.ProviderTableMeta.EXTERNAL_LINKS_URL));
+            String name = cursor.getString(cursor.getColumnIndex(ProviderMeta.ProviderTableMeta.EXTERNAL_LINKS_NAME));
+            String url = cursor.getString(cursor.getColumnIndex(ProviderMeta.ProviderTableMeta.EXTERNAL_LINKS_URL));
+            boolean redirect = cursor.getInt(
+                    cursor.getColumnIndex(ProviderMeta.ProviderTableMeta.EXTERNAL_LINKS_REDIRECT)) == 1;
 
-            externalLink = new ExternalLink(id, iconUrl, language, type, name, url);
+            externalLink = new ExternalLink(id, iconUrl, language, type, name, url, redirect);
         }
         return externalLink;
     }
-
-
-
 }

+ 2 - 1
src/main/java/com/owncloud/android/db/ProviderMeta.java

@@ -32,7 +32,7 @@ import com.owncloud.android.MainApp;
 public class ProviderMeta {
 
     public static final String DB_NAME = "filelist";
-    public static final int DB_VERSION = 33;
+    public static final int DB_VERSION = 34;
 
     private ProviderMeta() {
     }
@@ -211,6 +211,7 @@ public class ProviderMeta {
         public static final String EXTERNAL_LINKS_TYPE = "type";
         public static final String EXTERNAL_LINKS_NAME = "name";
         public static final String EXTERNAL_LINKS_URL = "url";
+        public static final String EXTERNAL_LINKS_REDIRECT = "redirect";
 
         // Columns of arbitrary data table
         public static final String ARBITRARY_DATA_CLOUD_ID = "cloud_id";

+ 20 - 1
src/main/java/com/owncloud/android/providers/FileContentProvider.java

@@ -862,7 +862,8 @@ public class FileContentProvider extends ContentProvider {
                 + ProviderTableMeta.EXTERNAL_LINKS_LANGUAGE + " TEXT, "     // language
                 + ProviderTableMeta.EXTERNAL_LINKS_TYPE + " INTEGER, "      // type
                 + ProviderTableMeta.EXTERNAL_LINKS_NAME + " TEXT, "         // name
-                + ProviderTableMeta.EXTERNAL_LINKS_URL + " TEXT );"          // url
+                + ProviderTableMeta.EXTERNAL_LINKS_URL + " TEXT, "          // url
+                + ProviderTableMeta.EXTERNAL_LINKS_REDIRECT + " INTEGER );" // redirect
         );
     }
 
@@ -1722,6 +1723,24 @@ public class FileContentProvider extends ContentProvider {
             if (!upgraded) {
                 Log_OC.i(SQL, String.format(Locale.ENGLISH, UPGRADE_VERSION_MSG, oldVersion, newVersion));
             }
+
+            if (oldVersion < 34 && newVersion >= 34) {
+                Log_OC.i(SQL, "Entering in the #34 add redirect to external links");
+                db.beginTransaction();
+                try {
+                    db.execSQL(ALTER_TABLE + ProviderTableMeta.EXTERNAL_LINKS_TABLE_NAME +
+                            ADD_COLUMN + ProviderTableMeta.EXTERNAL_LINKS_REDIRECT + " INTEGER "); // boolean
+
+                    upgraded = true;
+                    db.setTransactionSuccessful();
+                } finally {
+                    db.endTransaction();
+                }
+            }
+
+            if (!upgraded) {
+                Log_OC.i(SQL, String.format(Locale.ENGLISH, UPGRADE_VERSION_MSG, oldVersion, newVersion));
+            }
         }
 
         @Override

+ 11 - 7
src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java

@@ -34,6 +34,7 @@ import android.graphics.PorterDuff;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.LayerDrawable;
+import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
@@ -519,13 +520,16 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
     private void externalLinkClicked(MenuItem menuItem){
         for (ExternalLink link : externalLinksProvider.getExternalLink(ExternalLinkType.LINK)) {
             if (menuItem.getTitle().toString().equalsIgnoreCase(link.name)) {
-                Intent externalWebViewIntent = new Intent(getApplicationContext(),
-                        ExternalSiteWebView.class);
-                externalWebViewIntent.putExtra(ExternalSiteWebView.EXTRA_TITLE, link.name);
-                externalWebViewIntent.putExtra(ExternalSiteWebView.EXTRA_URL, link.url);
-                externalWebViewIntent.putExtra(ExternalSiteWebView.EXTRA_SHOW_SIDEBAR, true);
-                externalWebViewIntent.putExtra(ExternalSiteWebView.EXTRA_MENU_ITEM_ID, menuItem.getItemId());
-                startActivity(externalWebViewIntent);
+                if (link.redirect) {
+                    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(link.url)));
+                } else {
+                    Intent externalWebViewIntent = new Intent(getApplicationContext(), ExternalSiteWebView.class);
+                    externalWebViewIntent.putExtra(ExternalSiteWebView.EXTRA_TITLE, link.name);
+                    externalWebViewIntent.putExtra(ExternalSiteWebView.EXTRA_URL, link.url);
+                    externalWebViewIntent.putExtra(ExternalSiteWebView.EXTRA_SHOW_SIDEBAR, true);
+                    externalWebViewIntent.putExtra(ExternalSiteWebView.EXTRA_MENU_ITEM_ID, menuItem.getItemId());
+                    startActivity(externalWebViewIntent);
+                }
             }
         }
     }