浏览代码

Fix project structure and prepare for branding

Mario Danic 8 年之前
父节点
当前提交
16f1243da6
共有 100 个文件被更改,包括 390 次插入76 次删除
  1. 64 74
      build.gradle
  2. 326 0
      src/custom/java/MainApp.java
  3. 0 0
      src/main/AndroidManifest.xml
  4. 0 0
      src/main/java/com/afollestad/sectionedrecyclerview/SectionedRecyclerViewAdapter.java
  5. 0 2
      src/main/java/com/owncloud/android/MainApp.java
  6. 0 0
      src/main/java/com/owncloud/android/authentication/AccountAuthenticator.java
  7. 0 0
      src/main/java/com/owncloud/android/authentication/AccountAuthenticatorActivity.java
  8. 0 0
      src/main/java/com/owncloud/android/authentication/AccountAuthenticatorService.java
  9. 0 0
      src/main/java/com/owncloud/android/authentication/AccountUtils.java
  10. 0 0
      src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java
  11. 0 0
      src/main/java/com/owncloud/android/authentication/AuthenticatorAsyncTask.java
  12. 0 0
      src/main/java/com/owncloud/android/authentication/LoginUrlInfo.java
  13. 0 0
      src/main/java/com/owncloud/android/authentication/OAuth2Constants.java
  14. 0 0
      src/main/java/com/owncloud/android/authentication/PassCodeManager.java
  15. 0 0
      src/main/java/com/owncloud/android/authentication/SsoWebViewClient.java
  16. 0 0
      src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java
  17. 0 0
      src/main/java/com/owncloud/android/datamodel/MediaFolder.java
  18. 0 0
      src/main/java/com/owncloud/android/datamodel/MediaProvider.java
  19. 0 0
      src/main/java/com/owncloud/android/datamodel/OCFile.java
  20. 0 0
      src/main/java/com/owncloud/android/datamodel/SyncedFolder.java
  21. 0 0
      src/main/java/com/owncloud/android/datamodel/SyncedFolderDisplayItem.java
  22. 0 0
      src/main/java/com/owncloud/android/datamodel/SyncedFolderProvider.java
  23. 0 0
      src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java
  24. 0 0
      src/main/java/com/owncloud/android/datamodel/UploadsStorageManager.java
  25. 0 0
      src/main/java/com/owncloud/android/datastorage/DataStorageProvider.java
  26. 0 0
      src/main/java/com/owncloud/android/datastorage/StoragePoint.java
  27. 0 0
      src/main/java/com/owncloud/android/datastorage/UniqueStorageList.java
  28. 0 0
      src/main/java/com/owncloud/android/datastorage/providers/AbstractCommandLineStoragePoint.java
  29. 0 0
      src/main/java/com/owncloud/android/datastorage/providers/AbstractStoragePointProvider.java
  30. 0 0
      src/main/java/com/owncloud/android/datastorage/providers/EnvironmentStoragePointProvider.java
  31. 0 0
      src/main/java/com/owncloud/android/datastorage/providers/HardcodedStoragePointProvider.java
  32. 0 0
      src/main/java/com/owncloud/android/datastorage/providers/IStoragePointProvider.java
  33. 0 0
      src/main/java/com/owncloud/android/datastorage/providers/MountCommandStoragePointProvider.java
  34. 0 0
      src/main/java/com/owncloud/android/datastorage/providers/SystemDefaultStoragePointProvider.java
  35. 0 0
      src/main/java/com/owncloud/android/datastorage/providers/VDCStoragePointProvider.java
  36. 0 0
      src/main/java/com/owncloud/android/db/OCUpload.java
  37. 0 0
      src/main/java/com/owncloud/android/db/PreferenceManager.java
  38. 0 0
      src/main/java/com/owncloud/android/db/ProviderMeta.java
  39. 0 0
      src/main/java/com/owncloud/android/db/UploadResult.java
  40. 0 0
      src/main/java/com/owncloud/android/features/FeatureList.java
  41. 0 0
      src/main/java/com/owncloud/android/files/BootupBroadcastReceiver.java
  42. 0 0
      src/main/java/com/owncloud/android/files/FileMenuFilter.java
  43. 0 0
      src/main/java/com/owncloud/android/files/InstantUploadBroadcastReceiver.java
  44. 0 0
      src/main/java/com/owncloud/android/files/services/ConnectivityActionReceiver.java
  45. 0 0
      src/main/java/com/owncloud/android/files/services/FileDownloader.java
  46. 0 0
      src/main/java/com/owncloud/android/files/services/FileUploader.java
  47. 0 0
      src/main/java/com/owncloud/android/files/services/IndexedForest.java
  48. 0 0
      src/main/java/com/owncloud/android/media/MediaControlView.java
  49. 0 0
      src/main/java/com/owncloud/android/media/MediaService.java
  50. 0 0
      src/main/java/com/owncloud/android/media/MediaServiceBinder.java
  51. 0 0
      src/main/java/com/owncloud/android/operations/CheckCurrentCredentialsOperation.java
  52. 0 0
      src/main/java/com/owncloud/android/operations/CopyFileOperation.java
  53. 0 0
      src/main/java/com/owncloud/android/operations/CreateFolderOperation.java
  54. 0 0
      src/main/java/com/owncloud/android/operations/CreateShareViaLinkOperation.java
  55. 0 0
      src/main/java/com/owncloud/android/operations/CreateShareWithShareeOperation.java
  56. 0 0
      src/main/java/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java
  57. 0 0
      src/main/java/com/owncloud/android/operations/DownloadFileOperation.java
  58. 0 0
      src/main/java/com/owncloud/android/operations/GetCapabilitiesOperarion.java
  59. 0 0
      src/main/java/com/owncloud/android/operations/GetServerInfoOperation.java
  60. 0 0
      src/main/java/com/owncloud/android/operations/GetSharesForFileOperation.java
  61. 0 0
      src/main/java/com/owncloud/android/operations/GetUserProfileOperation.java
  62. 0 0
      src/main/java/com/owncloud/android/operations/MoveFileOperation.java
  63. 0 0
      src/main/java/com/owncloud/android/operations/OAuth2GetAccessToken.java
  64. 0 0
      src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java
  65. 0 0
      src/main/java/com/owncloud/android/operations/RemoveFileOperation.java
  66. 0 0
      src/main/java/com/owncloud/android/operations/RenameFileOperation.java
  67. 0 0
      src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java
  68. 0 0
      src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java
  69. 0 0
      src/main/java/com/owncloud/android/operations/UnshareOperation.java
  70. 0 0
      src/main/java/com/owncloud/android/operations/UpdateOCVersionOperation.java
  71. 0 0
      src/main/java/com/owncloud/android/operations/UpdateSharePermissionsOperation.java
  72. 0 0
      src/main/java/com/owncloud/android/operations/UpdateShareViaLinkOperation.java
  73. 0 0
      src/main/java/com/owncloud/android/operations/UploadFileOperation.java
  74. 0 0
      src/main/java/com/owncloud/android/operations/common/SyncOperation.java
  75. 0 0
      src/main/java/com/owncloud/android/providers/FileContentProvider.java
  76. 0 0
      src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java
  77. 0 0
      src/main/java/com/owncloud/android/services/OperationsService.java
  78. 0 0
      src/main/java/com/owncloud/android/services/SyncFolderHandler.java
  79. 0 0
      src/main/java/com/owncloud/android/services/SyncedFolderJobService.java
  80. 0 0
      src/main/java/com/owncloud/android/services/observer/FileObserverService.java
  81. 0 0
      src/main/java/com/owncloud/android/services/observer/FolderObserver.java
  82. 0 0
      src/main/java/com/owncloud/android/services/observer/SyncedFolderObserver.java
  83. 0 0
      src/main/java/com/owncloud/android/services/observer/SyncedFolderObserverService.java
  84. 0 0
      src/main/java/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java
  85. 0 0
      src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java
  86. 0 0
      src/main/java/com/owncloud/android/syncadapter/FileSyncService.java
  87. 0 0
      src/main/java/com/owncloud/android/ui/CheckBoxPreferenceWithLongTitle.java
  88. 0 0
      src/main/java/com/owncloud/android/ui/CustomPopup.java
  89. 0 0
      src/main/java/com/owncloud/android/ui/ExtendedListView.java
  90. 0 0
      src/main/java/com/owncloud/android/ui/NavigationDrawerItem.java
  91. 0 0
      src/main/java/com/owncloud/android/ui/PreferenceWithLongSummary.java
  92. 0 0
      src/main/java/com/owncloud/android/ui/RadioButtonPreference.java
  93. 0 0
      src/main/java/com/owncloud/android/ui/SquareImageView.java
  94. 0 0
      src/main/java/com/owncloud/android/ui/SquareLinearLayout.java
  95. 0 0
      src/main/java/com/owncloud/android/ui/TextDrawable.java
  96. 0 0
      src/main/java/com/owncloud/android/ui/activity/BaseActivity.java
  97. 0 0
      src/main/java/com/owncloud/android/ui/activity/ComponentsGetter.java
  98. 0 0
      src/main/java/com/owncloud/android/ui/activity/ConflictsResolveActivity.java
  99. 0 0
      src/main/java/com/owncloud/android/ui/activity/CopyToClipboardActivity.java
  100. 0 0
      src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java

+ 64 - 74
build.gradle

@@ -37,51 +37,6 @@ repositories {
     }
 }
 
-dependencies {
-    /// dependencies for app building
-    compile name: 'touch-image-view'
-
-    compile 'com.github.nextcloud:android-library:1.0.11'
-    compile "com.android.support:support-v4:${supportLibraryVersion}"
-    compile "com.android.support:design:${supportLibraryVersion}"
-    compile 'com.jakewharton:disklrucache:2.0.2'
-    compile "com.android.support:appcompat-v7:${supportLibraryVersion}"
-    compile 'com.getbase:floatingactionbutton:1.10.1'
-    compile 'com.google.code.findbugs:annotations:2.0.1'
-
-
-    /// dependencies for local unit tests
-    testCompile 'junit:junit:4.12'
-    testCompile 'org.mockito:mockito-core:1.10.19'
-
-    /// dependencies for instrumented tests
-    // JUnit4 Rules
-    androidTestCompile 'com.android.support.test:rules:0.5'
-
-    // Android JUnit Runner
-    androidTestCompile 'com.android.support.test:runner:0.5'
-
-    // Android Annotation Support
-    androidTestCompile "com.android.support:support-annotations:${supportLibraryVersion}"
-
-    // Espresso core
-    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
-
-    // UIAutomator - for cross-app UI tests, and to grant screen is turned on in Espresso tests
-    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
-    // fix conflict in dependencies; see http://g.co/androidstudio/app-test-app-conflict for details
-    androidTestCompile "com.android.support:support-annotations:${supportLibraryVersion}"
-
-
-}
-
-tasks.withType(Test) {
-    /// increased logging for tests
-    testLogging {
-        events "passed", "skipped", "failed"
-    }
-}
-
 android {
     lintOptions {
         abortOnError true
@@ -100,40 +55,29 @@ android {
         testInstrumentationRunnerArgument "TEST_PASSWORD", "\"$System.env.OCTEST_APP_PASSWORD\""
         testInstrumentationRunnerArgument "TEST_SERVER_URL", "\"$System.env.OCTEST_SERVER_BASE_URL\""
 
-        applicationId "com.nextcloud.client"
-    }
-
-    // adapt structure from Eclipse to Gradle/Android Studio expectations;
-    // see http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Configuring-the-Structure
-    sourceSets {
-        main {
-            manifest.srcFile 'AndroidManifest.xml'
-            java.srcDirs = ['src']
-            resources.srcDirs = ['src']
-            aidl.srcDirs = ['src']
-            renderscript.srcDirs = ['src']
-            res.srcDirs = ['res']
-            assets.srcDirs = ['assets']
-        }
 
+        productFlavors{
+            generic {
+                applicationId 'com.nextcloud.client'
+            }
 
-        // move whole local unit tests structure as a whole from src/test/* to test/*
-        test.setRoot('test')
+            custom {
+                // structure is:
+                // domain tld
+                // domain name
+                // .client
+                applicationId 'com.custom.client'
+            }
+        }
 
-        // move whole instrumented tests structure as a whole from src/androidTest/* to androidTest/*
-        androidTest.setRoot('androidTest')
+        configurations {
+            customCompile
+        }
+    }
 
+    // adapt structure from Eclipse to Gradle/Android Studio expectations;
+    // see http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Configuring-the-Structure
 
-        // Move the build types to build-types/<type>
-        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
-        // This moves them out of them default location under src/<type>/... which would
-        // conflict with src/ being used by the main source set.
-        // Adding new build types or product flavors should be accompanied
-        // by a similar customization.
-        debug.setRoot('build-types/debug')
-        release.setRoot('build-types/release')
-    }
-	
     dexOptions {
         // Skip pre-dexing when running on Travis CI or when disabled via -Dpre-dex=false.
         preDexLibraries = preDexEnabled && !travisBuild
@@ -203,3 +147,49 @@ android {
     check.dependsOn 'checkstyle', 'findbugs', 'pmd', 'lint'
 
 }
+
+dependencies {
+    /// dependencies for app building
+    compile name: 'touch-image-view'
+
+    compile 'com.github.nextcloud:android-library:1.0.11'
+    compile "com.android.support:support-v4:${supportLibraryVersion}"
+    compile "com.android.support:design:${supportLibraryVersion}"
+    compile 'com.jakewharton:disklrucache:2.0.2'
+    compile "com.android.support:appcompat-v7:${supportLibraryVersion}"
+    compile 'com.getbase:floatingactionbutton:1.10.1'
+    compile 'com.google.code.findbugs:annotations:2.0.1'
+
+    customCompile 'com.google.android.gms:play-services-analytics:10.2.0'
+
+    /// dependencies for local unit tests
+    testCompile 'junit:junit:4.12'
+    testCompile 'org.mockito:mockito-core:1.10.19'
+
+    /// dependencies for instrumented tests
+    // JUnit4 Rules
+    androidTestCompile 'com.android.support.test:rules:0.5'
+
+    // Android JUnit Runner
+    androidTestCompile 'com.android.support.test:runner:0.5'
+
+    // Android Annotation Support
+    androidTestCompile "com.android.support:support-annotations:${supportLibraryVersion}"
+
+    // Espresso core
+    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
+
+    // UIAutomator - for cross-app UI tests, and to grant screen is turned on in Espresso tests
+    //androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
+    // fix conflict in dependencies; see http://g.co/androidstudio/app-test-app-conflict for details
+    //androidTestCompile "com.android.support:support-annotations:${supportLibraryVersion}"
+
+}
+
+tasks.withType(Test) {
+    /// increased logging for tests
+    testLogging {
+        events "passed", "skipped", "failed"
+    }
+}
+

+ 326 - 0
src/custom/java/MainApp.java

@@ -0,0 +1,326 @@
+/**
+ *   ownCloud Android client application
+ *
+ *   @author masensio
+ *   @author David A. Velasco
+ *   @author Mario Danic
+ *   Copyright (C) 2015 ownCloud Inc.
+ *   Copyright (C) 2017 Mario Danic
+ *   Copyright (C) 2017 Nextcloud GmbH
+ *
+ *   This program is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License version 2,
+ *   as published by the Free Software Foundation.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *   All changes by Mario Danic are under AGPL3+
+ *
+ *   This program is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU Affero General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   at your option) any later version.
+ *
+ *   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.
+ *
+ *   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/>.
+ */
+
+import android.app.Activity;
+import android.app.Application;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.content.SharedPreferences;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.IBinder;
+import android.preference.PreferenceManager;
+import android.text.TextUtils;
+
+import com.google.android.gms.analytics.GoogleAnalytics;
+import com.google.android.gms.analytics.HitBuilders;
+import com.google.android.gms.analytics.Tracker;
+import com.owncloud.android.BuildConfig;
+import com.owncloud.android.R;
+import com.owncloud.android.authentication.PassCodeManager;
+import com.owncloud.android.datamodel.ThumbnailsCacheManager;
+import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
+import com.owncloud.android.lib.common.OwnCloudClientManagerFactory.Policy;
+import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.services.observer.SyncedFolderObserverService;
+import com.owncloud.android.ui.activity.Preferences;
+import com.owncloud.android.ui.activity.WhatsNewActivity;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+
+/**
+ * Main Application of the project
+ * 
+ * Contains methods to build the "static" strings. These strings were before constants in different
+ * classes
+ */
+public class MainApp extends Application {
+
+    private static final String TAG = MainApp.class.getSimpleName();
+
+    private static final String AUTH_ON = "on";
+
+    @SuppressWarnings("unused")
+    private static final String POLICY_SINGLE_SESSION_PER_ACCOUNT = "single session per account";
+    @SuppressWarnings("unused")
+    private static final String POLICY_ALWAYS_NEW_CLIENT = "always new client";
+
+    private static Context mContext;
+
+    private static String storagePath;
+
+    private static boolean mOnlyOnDevice = false;
+
+    private static SyncedFolderObserverService mObserverService;
+
+    @SuppressWarnings("unused")
+    private boolean mBound;
+
+    private Tracker mTracker;
+
+    @SuppressFBWarnings("ST")    public void onCreate(){
+        super.onCreate();
+        MainApp.mContext = getApplicationContext();
+
+        SharedPreferences appPrefs =
+                PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+        MainApp.storagePath = appPrefs.getString(Preferences.PreferenceKeys.STORAGE_PATH, Environment.
+                              getExternalStorageDirectory().getAbsolutePath());
+
+        boolean isSamlAuth = AUTH_ON.equals(getString(R.string.auth_method_saml_web_sso));
+
+        OwnCloudClientManagerFactory.setUserAgent(getUserAgent());
+        if (isSamlAuth) {
+            OwnCloudClientManagerFactory.setDefaultPolicy(Policy.SINGLE_SESSION_PER_ACCOUNT);
+        } else {
+            OwnCloudClientManagerFactory.setDefaultPolicy(Policy.ALWAYS_NEW_CLIENT);
+        }
+
+        // initialise thumbnails cache on background thread
+        new ThumbnailsCacheManager.InitDiskCacheTask().execute();
+        
+        if (BuildConfig.DEBUG) {
+
+            String dataFolder = getDataFolder();
+
+            // Set folder for store logs
+            Log_OC.setLogDataFolder(dataFolder);
+
+            Log_OC.startLogging(MainApp.storagePath);
+            Log_OC.d("Debug", "start logging");
+        }
+
+        Log_OC.d("SyncedFolderObserverService", "Start service SyncedFolderObserverService");
+        Intent i = new Intent(this, SyncedFolderObserverService.class);
+        startService(i);
+        bindService(i, syncedFolderObserverServiceConnection, Context.BIND_AUTO_CREATE);
+
+        boolean analyticsEnabled = false;
+        String analyticsId;
+
+        if (!TextUtils.isEmpty(analyticsId = getAppContext().getResources().getString(R.string.analytics_tracking_id))) {
+            analyticsEnabled = true;
+            mTracker = getDefaultTracker(analyticsId);
+        }
+
+        // register global protection with pass code
+        final boolean finalAnalyticsEnabled = analyticsEnabled;
+        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
+
+            @Override
+            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
+                Log_OC.d(activity.getClass().getSimpleName(),  "onCreate(Bundle) starting" );
+                WhatsNewActivity.runIfNeeded(activity);
+                PassCodeManager.getPassCodeManager().onActivityCreated(activity);
+            }
+
+            @Override
+            public void onActivityStarted(Activity activity) {
+                Log_OC.d(activity.getClass().getSimpleName(),  "onStart() starting" );
+                PassCodeManager.getPassCodeManager().onActivityStarted(activity);
+                if (finalAnalyticsEnabled) {
+                    mTracker.setScreenName(activity.getClass().getSimpleName());
+                    mTracker.send(new HitBuilders.ScreenViewBuilder().build());
+                }
+            }
+
+            @Override
+            public void onActivityResumed(Activity activity) {
+                Log_OC.d(activity.getClass().getSimpleName(), "onResume() starting" );
+            }
+
+            @Override
+            public void onActivityPaused(Activity activity) {
+                Log_OC.d(activity.getClass().getSimpleName(), "onPause() ending");
+            }
+
+            @Override
+            public void onActivityStopped(Activity activity) {
+                Log_OC.d(activity.getClass().getSimpleName(), "onStop() ending" );
+                PassCodeManager.getPassCodeManager().onActivityStopped(activity);
+                if (finalAnalyticsEnabled) {
+                    mTracker.setScreenName(activity.getClass().getSimpleName());
+                    mTracker.send(new HitBuilders.ScreenViewBuilder().build());
+                }
+            }
+
+            @Override
+            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
+                Log_OC.d(activity.getClass().getSimpleName(), "onSaveInstanceState(Bundle) starting" );
+            }
+
+            @Override
+            public void onActivityDestroyed(Activity activity) {
+                Log_OC.d(activity.getClass().getSimpleName(), "onDestroy() ending" );
+            }
+        });
+    }
+
+    synchronized public Tracker getDefaultTracker(String analyticsID) {
+        if (mTracker == null) {
+            GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
+            // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
+            //mTracker = analytics.newTracker(R.xml.global_tracker);
+            mTracker = analytics.newTracker(analyticsID);
+        }
+        return mTracker;
+    }
+
+
+    public static Context getAppContext() {
+        return MainApp.mContext;
+    }
+
+    public static String getStoragePath(){
+        return MainApp.storagePath;
+    }
+
+    public static void setStoragePath(String path){
+        MainApp.storagePath = path;
+    }
+
+    // Methods to obtain Strings referring app_name 
+    //   From AccountAuthenticator 
+    //   public static final String ACCOUNT_TYPE = "owncloud";    
+    public static String getAccountType() {
+        return getAppContext().getResources().getString(R.string.account_type);
+    }
+
+    // Non gradle build systems do not provide BuildConfig.VERSION_CODE
+    // so we must fallback to this method :(
+    public static int getVersionCode() {
+        try {
+            String thisPackageName = getAppContext().getPackageName();
+            return getAppContext().getPackageManager().getPackageInfo(thisPackageName, 0).versionCode;
+        } catch (PackageManager.NameNotFoundException e) {
+            return 0;
+        }
+    }
+
+    //  From AccountAuthenticator 
+    //  public static final String AUTHORITY = "org.owncloud";
+    public static String getAuthority() {
+        return getAppContext().getResources().getString(R.string.authority);
+    }
+    
+    //  From AccountAuthenticator
+    //  public static final String AUTH_TOKEN_TYPE = "org.owncloud";
+    public static String getAuthTokenType() {
+        return getAppContext().getResources().getString(R.string.authority);
+    }
+    
+    //  From ProviderMeta 
+    //  public static final String DB_FILE = "owncloud.db";
+    public static String getDBFile() {
+        return getAppContext().getResources().getString(R.string.db_file);
+    }
+    
+    //  From ProviderMeta
+    //  private final String mDatabaseName = "ownCloud";
+    public static String getDBName() {
+        return getAppContext().getResources().getString(R.string.db_name);
+    }
+     
+    /**
+     * name of data_folder, e.g., "owncloud"
+     */
+    public static String getDataFolder() {
+        return getAppContext().getResources().getString(R.string.data_folder);
+    }
+    
+    // log_name
+    public static String getLogName() {
+        return getAppContext().getResources().getString(R.string.log_name);
+    }
+
+    public static void showOnlyFilesOnDevice(boolean state){
+        mOnlyOnDevice = state;
+    }
+
+    public static boolean isOnlyOnDevice(){
+        return mOnlyOnDevice;
+    }
+
+    public static SyncedFolderObserverService getSyncedFolderObserverService() {
+        return mObserverService;
+    }
+
+    // user agent
+    public static String getUserAgent() {
+        String appString = getAppContext().getResources().getString(R.string.user_agent);
+        String packageName = getAppContext().getPackageName();
+        String version = "";
+
+        PackageInfo pInfo = null;
+        try {
+            pInfo = getAppContext().getPackageManager().getPackageInfo(packageName, 0);
+            if (pInfo != null) {
+                version = pInfo.versionName;
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            Log_OC.e(TAG, "Trying to get packageName", e.getCause());
+        }
+
+        // Mozilla/5.0 (Android) ownCloud-android/1.7.0
+        String userAgent = String.format(appString, version);
+
+        return userAgent;
+    }
+
+    /** Defines callbacks for service binding, passed to bindService() */
+    private ServiceConnection syncedFolderObserverServiceConnection = new ServiceConnection() {
+
+        @Override
+        public void onServiceConnected(ComponentName className, IBinder service) {
+            SyncedFolderObserverService.SyncedFolderObserverBinder binder = (SyncedFolderObserverService.SyncedFolderObserverBinder) service;
+            mObserverService = binder.getService();
+            mBound = true;
+        }
+
+        @Override
+        public void onServiceDisconnected(ComponentName arg0) {
+            mBound = false;
+        }
+    };
+
+}

+ 0 - 0
AndroidManifest.xml → src/main/AndroidManifest.xml


+ 0 - 0
src/com/afollestad/sectionedrecyclerview/SectionedRecyclerViewAdapter.java → src/main/java/com/afollestad/sectionedrecyclerview/SectionedRecyclerViewAdapter.java


+ 0 - 2
src/com/owncloud/android/MainApp.java → src/main/java/com/owncloud/android/MainApp.java

@@ -45,8 +45,6 @@ import com.owncloud.android.ui.activity.WhatsNewActivity;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
 
 /**
  * Main Application of the project

+ 0 - 0
src/com/owncloud/android/authentication/AccountAuthenticator.java → src/main/java/com/owncloud/android/authentication/AccountAuthenticator.java


+ 0 - 0
src/com/owncloud/android/authentication/AccountAuthenticatorActivity.java → src/main/java/com/owncloud/android/authentication/AccountAuthenticatorActivity.java


+ 0 - 0
src/com/owncloud/android/authentication/AccountAuthenticatorService.java → src/main/java/com/owncloud/android/authentication/AccountAuthenticatorService.java


+ 0 - 0
src/com/owncloud/android/authentication/AccountUtils.java → src/main/java/com/owncloud/android/authentication/AccountUtils.java


+ 0 - 0
src/com/owncloud/android/authentication/AuthenticatorActivity.java → src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java


+ 0 - 0
src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java → src/main/java/com/owncloud/android/authentication/AuthenticatorAsyncTask.java


+ 0 - 0
src/com/owncloud/android/authentication/LoginUrlInfo.java → src/main/java/com/owncloud/android/authentication/LoginUrlInfo.java


+ 0 - 0
src/com/owncloud/android/authentication/OAuth2Constants.java → src/main/java/com/owncloud/android/authentication/OAuth2Constants.java


+ 0 - 0
src/com/owncloud/android/authentication/PassCodeManager.java → src/main/java/com/owncloud/android/authentication/PassCodeManager.java


+ 0 - 0
src/com/owncloud/android/authentication/SsoWebViewClient.java → src/main/java/com/owncloud/android/authentication/SsoWebViewClient.java


+ 0 - 0
src/com/owncloud/android/datamodel/FileDataStorageManager.java → src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java


+ 0 - 0
src/com/owncloud/android/datamodel/MediaFolder.java → src/main/java/com/owncloud/android/datamodel/MediaFolder.java


+ 0 - 0
src/com/owncloud/android/datamodel/MediaProvider.java → src/main/java/com/owncloud/android/datamodel/MediaProvider.java


+ 0 - 0
src/com/owncloud/android/datamodel/OCFile.java → src/main/java/com/owncloud/android/datamodel/OCFile.java


+ 0 - 0
src/com/owncloud/android/datamodel/SyncedFolder.java → src/main/java/com/owncloud/android/datamodel/SyncedFolder.java


+ 0 - 0
src/com/owncloud/android/datamodel/SyncedFolderDisplayItem.java → src/main/java/com/owncloud/android/datamodel/SyncedFolderDisplayItem.java


+ 0 - 0
src/com/owncloud/android/datamodel/SyncedFolderProvider.java → src/main/java/com/owncloud/android/datamodel/SyncedFolderProvider.java


+ 0 - 0
src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java → src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java


+ 0 - 0
src/com/owncloud/android/datamodel/UploadsStorageManager.java → src/main/java/com/owncloud/android/datamodel/UploadsStorageManager.java


+ 0 - 0
src/com/owncloud/android/datastorage/DataStorageProvider.java → src/main/java/com/owncloud/android/datastorage/DataStorageProvider.java


+ 0 - 0
src/com/owncloud/android/datastorage/StoragePoint.java → src/main/java/com/owncloud/android/datastorage/StoragePoint.java


+ 0 - 0
src/com/owncloud/android/datastorage/UniqueStorageList.java → src/main/java/com/owncloud/android/datastorage/UniqueStorageList.java


+ 0 - 0
src/com/owncloud/android/datastorage/providers/AbstractCommandLineStoragePoint.java → src/main/java/com/owncloud/android/datastorage/providers/AbstractCommandLineStoragePoint.java


+ 0 - 0
src/com/owncloud/android/datastorage/providers/AbstractStoragePointProvider.java → src/main/java/com/owncloud/android/datastorage/providers/AbstractStoragePointProvider.java


+ 0 - 0
src/com/owncloud/android/datastorage/providers/EnvironmentStoragePointProvider.java → src/main/java/com/owncloud/android/datastorage/providers/EnvironmentStoragePointProvider.java


+ 0 - 0
src/com/owncloud/android/datastorage/providers/HardcodedStoragePointProvider.java → src/main/java/com/owncloud/android/datastorage/providers/HardcodedStoragePointProvider.java


+ 0 - 0
src/com/owncloud/android/datastorage/providers/IStoragePointProvider.java → src/main/java/com/owncloud/android/datastorage/providers/IStoragePointProvider.java


+ 0 - 0
src/com/owncloud/android/datastorage/providers/MountCommandStoragePointProvider.java → src/main/java/com/owncloud/android/datastorage/providers/MountCommandStoragePointProvider.java


+ 0 - 0
src/com/owncloud/android/datastorage/providers/SystemDefaultStoragePointProvider.java → src/main/java/com/owncloud/android/datastorage/providers/SystemDefaultStoragePointProvider.java


+ 0 - 0
src/com/owncloud/android/datastorage/providers/VDCStoragePointProvider.java → src/main/java/com/owncloud/android/datastorage/providers/VDCStoragePointProvider.java


+ 0 - 0
src/com/owncloud/android/db/OCUpload.java → src/main/java/com/owncloud/android/db/OCUpload.java


+ 0 - 0
src/com/owncloud/android/db/PreferenceManager.java → src/main/java/com/owncloud/android/db/PreferenceManager.java


+ 0 - 0
src/com/owncloud/android/db/ProviderMeta.java → src/main/java/com/owncloud/android/db/ProviderMeta.java


+ 0 - 0
src/com/owncloud/android/db/UploadResult.java → src/main/java/com/owncloud/android/db/UploadResult.java


+ 0 - 0
src/com/owncloud/android/features/FeatureList.java → src/main/java/com/owncloud/android/features/FeatureList.java


+ 0 - 0
src/com/owncloud/android/files/BootupBroadcastReceiver.java → src/main/java/com/owncloud/android/files/BootupBroadcastReceiver.java


+ 0 - 0
src/com/owncloud/android/files/FileMenuFilter.java → src/main/java/com/owncloud/android/files/FileMenuFilter.java


+ 0 - 0
src/com/owncloud/android/files/InstantUploadBroadcastReceiver.java → src/main/java/com/owncloud/android/files/InstantUploadBroadcastReceiver.java


+ 0 - 0
src/com/owncloud/android/files/services/ConnectivityActionReceiver.java → src/main/java/com/owncloud/android/files/services/ConnectivityActionReceiver.java


+ 0 - 0
src/com/owncloud/android/files/services/FileDownloader.java → src/main/java/com/owncloud/android/files/services/FileDownloader.java


+ 0 - 0
src/com/owncloud/android/files/services/FileUploader.java → src/main/java/com/owncloud/android/files/services/FileUploader.java


+ 0 - 0
src/com/owncloud/android/files/services/IndexedForest.java → src/main/java/com/owncloud/android/files/services/IndexedForest.java


+ 0 - 0
src/com/owncloud/android/media/MediaControlView.java → src/main/java/com/owncloud/android/media/MediaControlView.java


+ 0 - 0
src/com/owncloud/android/media/MediaService.java → src/main/java/com/owncloud/android/media/MediaService.java


+ 0 - 0
src/com/owncloud/android/media/MediaServiceBinder.java → src/main/java/com/owncloud/android/media/MediaServiceBinder.java


+ 0 - 0
src/com/owncloud/android/operations/CheckCurrentCredentialsOperation.java → src/main/java/com/owncloud/android/operations/CheckCurrentCredentialsOperation.java


+ 0 - 0
src/com/owncloud/android/operations/CopyFileOperation.java → src/main/java/com/owncloud/android/operations/CopyFileOperation.java


+ 0 - 0
src/com/owncloud/android/operations/CreateFolderOperation.java → src/main/java/com/owncloud/android/operations/CreateFolderOperation.java


+ 0 - 0
src/com/owncloud/android/operations/CreateShareViaLinkOperation.java → src/main/java/com/owncloud/android/operations/CreateShareViaLinkOperation.java


+ 0 - 0
src/com/owncloud/android/operations/CreateShareWithShareeOperation.java → src/main/java/com/owncloud/android/operations/CreateShareWithShareeOperation.java


+ 0 - 0
src/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java → src/main/java/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java


+ 0 - 0
src/com/owncloud/android/operations/DownloadFileOperation.java → src/main/java/com/owncloud/android/operations/DownloadFileOperation.java


+ 0 - 0
src/com/owncloud/android/operations/GetCapabilitiesOperarion.java → src/main/java/com/owncloud/android/operations/GetCapabilitiesOperarion.java


+ 0 - 0
src/com/owncloud/android/operations/GetServerInfoOperation.java → src/main/java/com/owncloud/android/operations/GetServerInfoOperation.java


+ 0 - 0
src/com/owncloud/android/operations/GetSharesForFileOperation.java → src/main/java/com/owncloud/android/operations/GetSharesForFileOperation.java


+ 0 - 0
src/com/owncloud/android/operations/GetUserProfileOperation.java → src/main/java/com/owncloud/android/operations/GetUserProfileOperation.java


+ 0 - 0
src/com/owncloud/android/operations/MoveFileOperation.java → src/main/java/com/owncloud/android/operations/MoveFileOperation.java


+ 0 - 0
src/com/owncloud/android/operations/OAuth2GetAccessToken.java → src/main/java/com/owncloud/android/operations/OAuth2GetAccessToken.java


+ 0 - 0
src/com/owncloud/android/operations/RefreshFolderOperation.java → src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java


+ 0 - 0
src/com/owncloud/android/operations/RemoveFileOperation.java → src/main/java/com/owncloud/android/operations/RemoveFileOperation.java


+ 0 - 0
src/com/owncloud/android/operations/RenameFileOperation.java → src/main/java/com/owncloud/android/operations/RenameFileOperation.java


+ 0 - 0
src/com/owncloud/android/operations/SynchronizeFileOperation.java → src/main/java/com/owncloud/android/operations/SynchronizeFileOperation.java


+ 0 - 0
src/com/owncloud/android/operations/SynchronizeFolderOperation.java → src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java


+ 0 - 0
src/com/owncloud/android/operations/UnshareOperation.java → src/main/java/com/owncloud/android/operations/UnshareOperation.java


+ 0 - 0
src/com/owncloud/android/operations/UpdateOCVersionOperation.java → src/main/java/com/owncloud/android/operations/UpdateOCVersionOperation.java


+ 0 - 0
src/com/owncloud/android/operations/UpdateSharePermissionsOperation.java → src/main/java/com/owncloud/android/operations/UpdateSharePermissionsOperation.java


+ 0 - 0
src/com/owncloud/android/operations/UpdateShareViaLinkOperation.java → src/main/java/com/owncloud/android/operations/UpdateShareViaLinkOperation.java


+ 0 - 0
src/com/owncloud/android/operations/UploadFileOperation.java → src/main/java/com/owncloud/android/operations/UploadFileOperation.java


+ 0 - 0
src/com/owncloud/android/operations/common/SyncOperation.java → src/main/java/com/owncloud/android/operations/common/SyncOperation.java


+ 0 - 0
src/com/owncloud/android/providers/FileContentProvider.java → src/main/java/com/owncloud/android/providers/FileContentProvider.java


+ 0 - 0
src/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java → src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java


+ 0 - 0
src/com/owncloud/android/services/OperationsService.java → src/main/java/com/owncloud/android/services/OperationsService.java


+ 0 - 0
src/com/owncloud/android/services/SyncFolderHandler.java → src/main/java/com/owncloud/android/services/SyncFolderHandler.java


+ 0 - 0
src/com/owncloud/android/services/SyncedFolderJobService.java → src/main/java/com/owncloud/android/services/SyncedFolderJobService.java


+ 0 - 0
src/com/owncloud/android/services/observer/FileObserverService.java → src/main/java/com/owncloud/android/services/observer/FileObserverService.java


+ 0 - 0
src/com/owncloud/android/services/observer/FolderObserver.java → src/main/java/com/owncloud/android/services/observer/FolderObserver.java


+ 0 - 0
src/com/owncloud/android/services/observer/SyncedFolderObserver.java → src/main/java/com/owncloud/android/services/observer/SyncedFolderObserver.java


+ 0 - 0
src/com/owncloud/android/services/observer/SyncedFolderObserverService.java → src/main/java/com/owncloud/android/services/observer/SyncedFolderObserverService.java


+ 0 - 0
src/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java → src/main/java/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java


+ 0 - 0
src/com/owncloud/android/syncadapter/FileSyncAdapter.java → src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java


+ 0 - 0
src/com/owncloud/android/syncadapter/FileSyncService.java → src/main/java/com/owncloud/android/syncadapter/FileSyncService.java


+ 0 - 0
src/com/owncloud/android/ui/CheckBoxPreferenceWithLongTitle.java → src/main/java/com/owncloud/android/ui/CheckBoxPreferenceWithLongTitle.java


+ 0 - 0
src/com/owncloud/android/ui/CustomPopup.java → src/main/java/com/owncloud/android/ui/CustomPopup.java


+ 0 - 0
src/com/owncloud/android/ui/ExtendedListView.java → src/main/java/com/owncloud/android/ui/ExtendedListView.java


+ 0 - 0
src/com/owncloud/android/ui/NavigationDrawerItem.java → src/main/java/com/owncloud/android/ui/NavigationDrawerItem.java


+ 0 - 0
src/com/owncloud/android/ui/PreferenceWithLongSummary.java → src/main/java/com/owncloud/android/ui/PreferenceWithLongSummary.java


+ 0 - 0
src/com/owncloud/android/ui/RadioButtonPreference.java → src/main/java/com/owncloud/android/ui/RadioButtonPreference.java


+ 0 - 0
src/com/owncloud/android/ui/SquareImageView.java → src/main/java/com/owncloud/android/ui/SquareImageView.java


+ 0 - 0
src/com/owncloud/android/ui/SquareLinearLayout.java → src/main/java/com/owncloud/android/ui/SquareLinearLayout.java


+ 0 - 0
src/com/owncloud/android/ui/TextDrawable.java → src/main/java/com/owncloud/android/ui/TextDrawable.java


+ 0 - 0
src/com/owncloud/android/ui/activity/BaseActivity.java → src/main/java/com/owncloud/android/ui/activity/BaseActivity.java


+ 0 - 0
src/com/owncloud/android/ui/activity/ComponentsGetter.java → src/main/java/com/owncloud/android/ui/activity/ComponentsGetter.java


+ 0 - 0
src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java → src/main/java/com/owncloud/android/ui/activity/ConflictsResolveActivity.java


+ 0 - 0
src/com/owncloud/android/ui/activity/CopyToClipboardActivity.java → src/main/java/com/owncloud/android/ui/activity/CopyToClipboardActivity.java


+ 0 - 0
src/com/owncloud/android/ui/activity/DrawerActivity.java → src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java


部分文件因为文件数量过多而无法显示