Browse Source

Merge branch 'master' into develop

David A. Velasco 11 năm trước cách đây
mục cha
commit
ba8ee979d0
25 tập tin đã thay đổi với 79 bổ sung57 xóa
  1. 2 2
      AndroidManifest.xml
  2. 1 1
      oc_jb_workaround/AndroidManifest.xml
  3. BIN
      oc_jb_workaround/res/drawable-xhdpi/main_app_icon.png
  4. BIN
      oc_jb_workaround/res/drawable-xhdpi/workaround_app_icon.png
  5. BIN
      res/drawable-hdpi/winter_holidays_icon.png
  6. BIN
      res/drawable-ldpi/winter_holidays_icon.png
  7. BIN
      res/drawable-mdpi/winter_holidays_icon.png
  8. 1 1
      res/values/strings.xml
  9. 3 2
      src/com/owncloud/android/files/managers/OCNotificationManager.java
  10. 4 3
      src/com/owncloud/android/files/services/FileDownloader.java
  11. 8 4
      src/com/owncloud/android/files/services/FileUploader.java
  12. 1 1
      src/com/owncloud/android/operations/ChunkedUploadFileOperation.java
  13. 5 4
      src/com/owncloud/android/syncadapter/FileSyncAdapter.java
  14. 5 4
      src/com/owncloud/android/ui/activity/AccountSelectActivity.java
  15. 5 1
      src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java
  16. 8 17
      src/com/owncloud/android/ui/activity/FileDisplayActivity.java
  17. 5 0
      src/com/owncloud/android/ui/activity/GenericExplanationActivity.java
  18. 2 0
      src/com/owncloud/android/ui/activity/LogHistoryActivity.java
  19. 4 1
      src/com/owncloud/android/ui/activity/PinCodeActivity.java
  20. 2 8
      src/com/owncloud/android/ui/activity/Preferences.java
  21. 2 0
      src/com/owncloud/android/ui/activity/UploadFilesActivity.java
  22. 2 1
      src/com/owncloud/android/ui/dialog/ChangelogDialog.java
  23. 7 6
      src/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java
  24. 2 0
      src/com/owncloud/android/ui/preview/PreviewImageActivity.java
  25. 10 1
      src/com/owncloud/android/utils/DisplayUtils.java

+ 2 - 2
AndroidManifest.xml

@@ -18,8 +18,8 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
  -->
  -->
 <manifest package="com.owncloud.android"
 <manifest package="com.owncloud.android"
-    android:versionCode="105001"
-    android:versionName="1.5.1" xmlns:android="http://schemas.android.com/apk/res/android">
+    android:versionCode="105002"
+    android:versionName="1.5.2" xmlns:android="http://schemas.android.com/apk/res/android">
 
 
     <uses-permission android:name="android.permission.GET_ACCOUNTS" />
     <uses-permission android:name="android.permission.GET_ACCOUNTS" />
     <uses-permission android:name="android.permission.USE_CREDENTIALS" />
     <uses-permission android:name="android.permission.USE_CREDENTIALS" />

+ 1 - 1
oc_jb_workaround/AndroidManifest.xml

@@ -2,7 +2,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.owncloud.android.workaround.accounts"
     package="com.owncloud.android.workaround.accounts"
     android:versionCode="0100010"
     android:versionCode="0100010"
-    android:versionName="1.0.10" >
+    android:versionName="1.0.11" >
 
 
     <uses-sdk
     <uses-sdk
         android:minSdkVersion="16"
         android:minSdkVersion="16"

BIN
oc_jb_workaround/res/drawable-xhdpi/main_app_icon.png


BIN
oc_jb_workaround/res/drawable-xhdpi/workaround_app_icon.png


BIN
res/drawable-hdpi/winter_holidays_icon.png


BIN
res/drawable-ldpi/winter_holidays_icon.png


BIN
res/drawable-mdpi/winter_holidays_icon.png


+ 1 - 1
res/values/strings.xml

@@ -34,7 +34,7 @@
 	<string name="recommend_text">"I want to invite you to use %1$s on your smartphone!\nDownload here: %2$s"</string>  
 	<string name="recommend_text">"I want to invite you to use %1$s on your smartphone!\nDownload here: %2$s"</string>  
 
 
     <string name="auth_check_server">Check Server</string>
     <string name="auth_check_server">Check Server</string>
-    <string name="auth_host_url">Server address</string>
+    <string name="auth_host_url">Server address https://…</string>
     <string name="auth_username">Username</string>
     <string name="auth_username">Username</string>
     <string name="auth_password">Password</string>
     <string name="auth_password">Password</string>
     <string name="auth_register">New to %1$s?</string>
     <string name="auth_register">New to %1$s?</string>

+ 3 - 2
src/com/owncloud/android/files/managers/OCNotificationManager.java

@@ -22,6 +22,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Map;
 
 
 import com.owncloud.android.R;
 import com.owncloud.android.R;
+import com.owncloud.android.utils.DisplayUtils;
 
 
 import android.app.Notification;
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.NotificationManager;
@@ -101,7 +102,7 @@ public class OCNotificationManager {
         
         
         switch (type) {
         switch (type) {
             case NOTIFICATION_SIMPLE:
             case NOTIFICATION_SIMPLE:
-                notification = new Notification(R.drawable.icon, data.getText(), System.currentTimeMillis());
+                notification = new Notification(DisplayUtils.getSeasonalIconId(), data.getText(), System.currentTimeMillis());
                 break;
                 break;
             case NOTIFICATION_PROGRESS:
             case NOTIFICATION_PROGRESS:
                 notification = new Notification();
                 notification = new Notification();
@@ -139,7 +140,7 @@ public class OCNotificationManager {
                                                               false);
                                                               false);
                 return true;
                 return true;
             case NOTIFICATION_SIMPLE:
             case NOTIFICATION_SIMPLE:
-                pair.mNotificaiton = new Notification(R.drawable.icon,
+                pair.mNotificaiton = new Notification(DisplayUtils.getSeasonalIconId(),
                                                       data.getText(), System.currentTimeMillis());
                                                       data.getText(), System.currentTimeMillis());
                 mNM.notify(notification_id, pair.mNotificaiton);
                 mNM.notify(notification_id, pair.mNotificaiton);
                 return true;
                 return true;

+ 4 - 3
src/com/owncloud/android/files/services/FileDownloader.java

@@ -43,6 +43,7 @@ import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.preview.PreviewImageActivity;
 import com.owncloud.android.ui.preview.PreviewImageActivity;
 import com.owncloud.android.ui.preview.PreviewImageFragment;
 import com.owncloud.android.ui.preview.PreviewImageFragment;
+import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.Log_OC;
 import com.owncloud.android.utils.Log_OC;
 
 
 import android.accounts.Account;
 import android.accounts.Account;
@@ -409,12 +410,12 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis
     private void notifyDownloadStart(DownloadFileOperation download) {
     private void notifyDownloadStart(DownloadFileOperation download) {
         /// create status notification with a progress bar
         /// create status notification with a progress bar
         mLastPercent = 0;
         mLastPercent = 0;
-        mNotification = new Notification(R.drawable.icon, getString(R.string.downloader_download_in_progress_ticker), System.currentTimeMillis());
+        mNotification = new Notification(DisplayUtils.getSeasonalIconId(), getString(R.string.downloader_download_in_progress_ticker), System.currentTimeMillis());
         mNotification.flags |= Notification.FLAG_ONGOING_EVENT;
         mNotification.flags |= Notification.FLAG_ONGOING_EVENT;
         mNotification.contentView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.progressbar_layout);
         mNotification.contentView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.progressbar_layout);
         mNotification.contentView.setProgressBar(R.id.status_progress, 100, 0, download.getSize() < 0);
         mNotification.contentView.setProgressBar(R.id.status_progress, 100, 0, download.getSize() < 0);
         mNotification.contentView.setTextViewText(R.id.status_text, String.format(getString(R.string.downloader_download_in_progress_content), 0, new File(download.getSavePath()).getName()));
         mNotification.contentView.setTextViewText(R.id.status_text, String.format(getString(R.string.downloader_download_in_progress_content), 0, new File(download.getSavePath()).getName()));
-        mNotification.contentView.setImageViewResource(R.id.status_icon, R.drawable.icon);
+        mNotification.contentView.setImageViewResource(R.id.status_icon, DisplayUtils.getSeasonalIconId());
         
         
         /// includes a pending intent in the notification showing the details view of the file
         /// includes a pending intent in the notification showing the details view of the file
         Intent showDetailsIntent = null;
         Intent showDetailsIntent = null;
@@ -468,7 +469,7 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis
         if (!downloadResult.isCancelled()) {
         if (!downloadResult.isCancelled()) {
             int tickerId = (downloadResult.isSuccess()) ? R.string.downloader_download_succeeded_ticker : R.string.downloader_download_failed_ticker;
             int tickerId = (downloadResult.isSuccess()) ? R.string.downloader_download_succeeded_ticker : R.string.downloader_download_failed_ticker;
             int contentId = (downloadResult.isSuccess()) ? R.string.downloader_download_succeeded_content : R.string.downloader_download_failed_content;
             int contentId = (downloadResult.isSuccess()) ? R.string.downloader_download_succeeded_content : R.string.downloader_download_failed_content;
-            Notification finalNotification = new Notification(R.drawable.icon, getString(tickerId), System.currentTimeMillis());
+            Notification finalNotification = new Notification(DisplayUtils.getSeasonalIconId(), getString(tickerId), System.currentTimeMillis());
             finalNotification.flags |= Notification.FLAG_AUTO_CANCEL;
             finalNotification.flags |= Notification.FLAG_AUTO_CANCEL;
             boolean needsToUpdateCredentials = (downloadResult.getCode() == ResultCode.UNAUTHORIZED ||
             boolean needsToUpdateCredentials = (downloadResult.getCode() == ResultCode.UNAUTHORIZED ||
                                                 // (downloadResult.isTemporalRedirection() && downloadResult.isIdPRedirection()
                                                 // (downloadResult.isTemporalRedirection() && downloadResult.isIdPRedirection()

+ 8 - 4
src/com/owncloud/android/files/services/FileUploader.java

@@ -48,6 +48,7 @@ import com.owncloud.android.oc_framework.operations.RemoteOperationResult.Result
 import com.owncloud.android.oc_framework.utils.OwnCloudVersion;
 import com.owncloud.android.oc_framework.utils.OwnCloudVersion;
 import com.owncloud.android.oc_framework.network.webdav.OnDatatransferProgressListener;
 import com.owncloud.android.oc_framework.network.webdav.OnDatatransferProgressListener;
 import com.owncloud.android.oc_framework.accounts.OwnCloudAccount;
 import com.owncloud.android.oc_framework.accounts.OwnCloudAccount;
+import com.owncloud.android.oc_framework.network.webdav.ChunkFromFileChannelRequestEntity;
 import com.owncloud.android.oc_framework.network.webdav.OwnCloudClientFactory;
 import com.owncloud.android.oc_framework.network.webdav.OwnCloudClientFactory;
 import com.owncloud.android.oc_framework.network.webdav.WebdavClient;
 import com.owncloud.android.oc_framework.network.webdav.WebdavClient;
 import com.owncloud.android.oc_framework.network.webdav.WebdavEntry;
 import com.owncloud.android.oc_framework.network.webdav.WebdavEntry;
@@ -58,6 +59,7 @@ import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.activity.InstantUploadActivity;
 import com.owncloud.android.ui.activity.InstantUploadActivity;
 import com.owncloud.android.ui.preview.PreviewImageActivity;
 import com.owncloud.android.ui.preview.PreviewImageActivity;
 import com.owncloud.android.ui.preview.PreviewImageFragment;
 import com.owncloud.android.ui.preview.PreviewImageFragment;
+import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.Log_OC;
 import com.owncloud.android.utils.Log_OC;
 
 
 import android.accounts.Account;
 import android.accounts.Account;
@@ -265,7 +267,9 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
         try {
         try {
             for (int i = 0; i < files.length; i++) {
             for (int i = 0; i < files.length; i++) {
                 uploadKey = buildRemoteName(account, files[i].getRemotePath());
                 uploadKey = buildRemoteName(account, files[i].getRemotePath());
-                if (chunked) {
+                if (chunked
+                        && (new File(files[i].getStoragePath())).length() > ChunkedUploadFileOperation.CHUNK_SIZE)  // added to work around bug in servers 5.x 
+                {
                     newUpload = new ChunkedUploadFileOperation(account, files[i], isInstant, forceOverwrite,
                     newUpload = new ChunkedUploadFileOperation(account, files[i], isInstant, forceOverwrite,
                             localAction);
                             localAction);
                 } else {
                 } else {
@@ -714,7 +718,7 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
     private void notifyUploadStart(UploadFileOperation upload) {
     private void notifyUploadStart(UploadFileOperation upload) {
         // / create status notification with a progress bar
         // / create status notification with a progress bar
         mLastPercent = 0;
         mLastPercent = 0;
-        mNotification = new Notification(R.drawable.icon, getString(R.string.uploader_upload_in_progress_ticker),
+        mNotification = new Notification(DisplayUtils.getSeasonalIconId(), getString(R.string.uploader_upload_in_progress_ticker),
                 System.currentTimeMillis());
                 System.currentTimeMillis());
         mNotification.flags |= Notification.FLAG_ONGOING_EVENT;
         mNotification.flags |= Notification.FLAG_ONGOING_EVENT;
         mDefaultNotificationContentView = mNotification.contentView;
         mDefaultNotificationContentView = mNotification.contentView;
@@ -723,7 +727,7 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
         mNotification.contentView.setProgressBar(R.id.status_progress, 100, 0, false);
         mNotification.contentView.setProgressBar(R.id.status_progress, 100, 0, false);
         mNotification.contentView.setTextViewText(R.id.status_text,
         mNotification.contentView.setTextViewText(R.id.status_text,
                 String.format(getString(R.string.uploader_upload_in_progress_content), 0, upload.getFileName()));
                 String.format(getString(R.string.uploader_upload_in_progress_content), 0, upload.getFileName()));
-        mNotification.contentView.setImageViewResource(R.id.status_icon, R.drawable.icon);
+        mNotification.contentView.setImageViewResource(R.id.status_icon, DisplayUtils.getSeasonalIconId());
         
         
         /// includes a pending intent in the notification showing the details view of the file
         /// includes a pending intent in the notification showing the details view of the file
         Intent showDetailsIntent = new Intent(this, FileDisplayActivity.class);
         Intent showDetailsIntent = new Intent(this, FileDisplayActivity.class);
@@ -810,7 +814,7 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
 
 
             // / fail -> explicit failure notification
             // / fail -> explicit failure notification
             mNotificationManager.cancel(R.string.uploader_upload_in_progress_ticker);
             mNotificationManager.cancel(R.string.uploader_upload_in_progress_ticker);
-            Notification finalNotification = new Notification(R.drawable.icon,
+            Notification finalNotification = new Notification(DisplayUtils.getSeasonalIconId(),
                     getString(R.string.uploader_upload_failed_ticker), System.currentTimeMillis());
                     getString(R.string.uploader_upload_failed_ticker), System.currentTimeMillis());
             finalNotification.flags |= Notification.FLAG_AUTO_CANCEL;
             finalNotification.flags |= Notification.FLAG_AUTO_CANCEL;
             String content = null;
             String content = null;

+ 1 - 1
src/com/owncloud/android/operations/ChunkedUploadFileOperation.java

@@ -40,7 +40,7 @@ import android.accounts.Account;
 
 
 public class ChunkedUploadFileOperation extends UploadFileOperation {
 public class ChunkedUploadFileOperation extends UploadFileOperation {
     
     
-    private static final long CHUNK_SIZE = 1024000;
+    public static final long CHUNK_SIZE = 1024000;
     private static final String OC_CHUNKED_HEADER = "OC-Chunked";
     private static final String OC_CHUNKED_HEADER = "OC-Chunked";
     private static final String TAG = ChunkedUploadFileOperation.class.getSimpleName();
     private static final String TAG = ChunkedUploadFileOperation.class.getSimpleName();
 
 

+ 5 - 4
src/com/owncloud/android/syncadapter/FileSyncAdapter.java

@@ -36,6 +36,7 @@ import com.owncloud.android.operations.SynchronizeFolderOperation;
 import com.owncloud.android.operations.UpdateOCVersionOperation;
 import com.owncloud.android.operations.UpdateOCVersionOperation;
 import com.owncloud.android.oc_framework.operations.RemoteOperationResult.ResultCode;
 import com.owncloud.android.oc_framework.operations.RemoteOperationResult.ResultCode;
 import com.owncloud.android.ui.activity.ErrorsWhileCopyingHandlerActivity;
 import com.owncloud.android.ui.activity.ErrorsWhileCopyingHandlerActivity;
+import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.Log_OC;
 import com.owncloud.android.utils.Log_OC;
 
 
 
 
@@ -368,7 +369,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
      * Notifies the user about a failed synchronization through the status notification bar 
      * Notifies the user about a failed synchronization through the status notification bar 
      */
      */
     private void notifyFailedSynchronization() {
     private void notifyFailedSynchronization() {
-        Notification notification = new Notification(R.drawable.icon, getContext().getString(R.string.sync_fail_ticker), System.currentTimeMillis());
+        Notification notification = new Notification(DisplayUtils.getSeasonalIconId(), getContext().getString(R.string.sync_fail_ticker), System.currentTimeMillis());
         notification.flags |= Notification.FLAG_AUTO_CANCEL;
         notification.flags |= Notification.FLAG_AUTO_CANCEL;
         boolean needsToUpdateCredentials = (mLastFailedResult != null && 
         boolean needsToUpdateCredentials = (mLastFailedResult != null && 
                                              (  mLastFailedResult.getCode() == ResultCode.UNAUTHORIZED ||
                                              (  mLastFailedResult.getCode() == ResultCode.UNAUTHORIZED ||
@@ -410,7 +411,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
      */
      */
     private void notifyFailsInFavourites() {
     private void notifyFailsInFavourites() {
         if (mFailedResultsCounter > 0) {
         if (mFailedResultsCounter > 0) {
-            Notification notification = new Notification(R.drawable.icon, getContext().getString(R.string.sync_fail_in_favourites_ticker), System.currentTimeMillis());
+            Notification notification = new Notification(DisplayUtils.getSeasonalIconId(), getContext().getString(R.string.sync_fail_in_favourites_ticker), System.currentTimeMillis());
             notification.flags |= Notification.FLAG_AUTO_CANCEL;
             notification.flags |= Notification.FLAG_AUTO_CANCEL;
             // TODO put something smart in the contentIntent below
             // TODO put something smart in the contentIntent below
             notification.contentIntent = PendingIntent.getActivity(getContext().getApplicationContext(), (int)System.currentTimeMillis(), new Intent(), 0);
             notification.contentIntent = PendingIntent.getActivity(getContext().getApplicationContext(), (int)System.currentTimeMillis(), new Intent(), 0);
@@ -421,7 +422,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
             ((NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE)).notify(R.string.sync_fail_in_favourites_ticker, notification);
             ((NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE)).notify(R.string.sync_fail_in_favourites_ticker, notification);
             
             
         } else {
         } else {
-            Notification notification = new Notification(R.drawable.icon, getContext().getString(R.string.sync_conflicts_in_favourites_ticker), System.currentTimeMillis());
+            Notification notification = new Notification(DisplayUtils.getSeasonalIconId(), getContext().getString(R.string.sync_conflicts_in_favourites_ticker), System.currentTimeMillis());
             notification.flags |= Notification.FLAG_AUTO_CANCEL;
             notification.flags |= Notification.FLAG_AUTO_CANCEL;
             // TODO put something smart in the contentIntent below
             // TODO put something smart in the contentIntent below
             notification.contentIntent = PendingIntent.getActivity(getContext().getApplicationContext(), (int)System.currentTimeMillis(), new Intent(), 0);
             notification.contentIntent = PendingIntent.getActivity(getContext().getApplicationContext(), (int)System.currentTimeMillis(), new Intent(), 0);
@@ -443,7 +444,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
      * We won't consider a synchronization as failed when foreign files can not be copied to the ownCloud local directory.
      * We won't consider a synchronization as failed when foreign files can not be copied to the ownCloud local directory.
      */
      */
     private void notifyForgottenLocalFiles() {
     private void notifyForgottenLocalFiles() {
-        Notification notification = new Notification(R.drawable.icon, getContext().getString(R.string.sync_foreign_files_forgotten_ticker), System.currentTimeMillis());
+        Notification notification = new Notification(DisplayUtils.getSeasonalIconId(), getContext().getString(R.string.sync_foreign_files_forgotten_ticker), System.currentTimeMillis());
         notification.flags |= Notification.FLAG_AUTO_CANCEL;
         notification.flags |= Notification.FLAG_AUTO_CANCEL;
 
 
         /// includes a pending intent in the notification showing a more detailed explanation
         /// includes a pending intent in the notification showing a more detailed explanation

+ 5 - 4
src/com/owncloud/android/ui/activity/AccountSelectActivity.java

@@ -27,7 +27,6 @@ import android.accounts.Account;
 import android.accounts.AccountManager;
 import android.accounts.AccountManager;
 import android.accounts.AccountManagerCallback;
 import android.accounts.AccountManagerCallback;
 import android.accounts.AccountManagerFuture;
 import android.accounts.AccountManagerFuture;
-import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Context;
 import android.content.Intent;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Bundle;
@@ -50,6 +49,7 @@ import com.actionbarsherlock.view.MenuItem;
 import com.owncloud.android.authentication.AuthenticatorActivity;
 import com.owncloud.android.authentication.AuthenticatorActivity;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.oc_framework.accounts.OwnCloudAccount;
 import com.owncloud.android.oc_framework.accounts.OwnCloudAccount;
+import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.Log_OC;
 import com.owncloud.android.utils.Log_OC;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.R;
@@ -75,9 +75,10 @@ public class AccountSelectActivity extends SherlockListActivity implements
             mPreviousAccount = AccountUtils.getCurrentOwnCloudAccount(this);
             mPreviousAccount = AccountUtils.getCurrentOwnCloudAccount(this);
         }
         }
         
         
-        ActionBar action_bar = getSupportActionBar();
-        action_bar.setDisplayShowTitleEnabled(true);
-        action_bar.setDisplayHomeAsUpEnabled(false);
+        ActionBar actionBar = getSupportActionBar();
+        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
+        actionBar.setDisplayShowTitleEnabled(true);
+        actionBar.setDisplayHomeAsUpEnabled(false);
     }
     }
 
 
     @Override
     @Override

+ 5 - 1
src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java

@@ -18,12 +18,14 @@
 
 
 package com.owncloud.android.ui.activity;
 package com.owncloud.android.ui.activity;
 
 
+import com.actionbarsherlock.app.ActionBar;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileUploader;
 import com.owncloud.android.files.services.FileUploader;
 import com.owncloud.android.ui.dialog.ConflictsResolveDialog;
 import com.owncloud.android.ui.dialog.ConflictsResolveDialog;
 import com.owncloud.android.ui.dialog.ConflictsResolveDialog.Decision;
 import com.owncloud.android.ui.dialog.ConflictsResolveDialog.Decision;
 import com.owncloud.android.ui.dialog.ConflictsResolveDialog.OnConflictDecisionMadeListener;
 import com.owncloud.android.ui.dialog.ConflictsResolveDialog.OnConflictDecisionMadeListener;
+import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.Log_OC;
 import com.owncloud.android.utils.Log_OC;
 
 
 import android.content.Intent;
 import android.content.Intent;
@@ -43,10 +45,12 @@ public class ConflictsResolveActivity extends FileActivity implements OnConflict
     @Override
     @Override
     protected void onCreate(Bundle savedInstanceState) {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         super.onCreate(savedInstanceState);
+        ActionBar actionBar = getSupportActionBar();
+        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
     }
     }
 
 
     @Override
     @Override
-    public void ConflictDecisionMade(Decision decision) {
+    public void conflictDecisionMade(Decision decision) {
         Intent i = new Intent(getApplicationContext(), FileUploader.class);
         Intent i = new Intent(getApplicationContext(), FileUploader.class);
         
         
         switch (decision) {
         switch (decision) {

+ 8 - 17
src/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -88,6 +88,7 @@ import com.owncloud.android.ui.fragment.OCFileListFragment;
 import com.owncloud.android.ui.preview.PreviewImageActivity;
 import com.owncloud.android.ui.preview.PreviewImageActivity;
 import com.owncloud.android.ui.preview.PreviewMediaFragment;
 import com.owncloud.android.ui.preview.PreviewMediaFragment;
 import com.owncloud.android.ui.preview.PreviewVideoActivity;
 import com.owncloud.android.ui.preview.PreviewVideoActivity;
+import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.Log_OC;
 import com.owncloud.android.utils.Log_OC;
 
 
 
 
@@ -192,13 +193,16 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
         // Action bar setup
         // Action bar setup
         mDirectories = new CustomArrayAdapter<String>(this, R.layout.sherlock_spinner_dropdown_item);
         mDirectories = new CustomArrayAdapter<String>(this, R.layout.sherlock_spinner_dropdown_item);
         getSupportActionBar().setHomeButtonEnabled(true);       // mandatory since Android ICS, according to the official documentation
         getSupportActionBar().setHomeButtonEnabled(true);       // mandatory since Android ICS, according to the official documentation
-        setSupportProgressBarIndeterminateVisibility(mSyncInProgress);    // always AFTER setContentView(...) ; to work around bug in its implementation        
-        
-        
+        setSupportProgressBarIndeterminateVisibility(mSyncInProgress);    // always AFTER setContentView(...) ; to work around bug in its implementation
         
         
         Log_OC.d(TAG, "onCreate() end");
         Log_OC.d(TAG, "onCreate() end");
     }
     }
-
+    
+    @Override
+    protected void onStart() {
+        super.onStart();
+        getSupportActionBar().setIcon(DisplayUtils.getSeasonalIconId());
+    }
 
 
     @Override
     @Override
     protected void onDestroy() {
     protected void onDestroy() {
@@ -1151,19 +1155,6 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
     }
     }
 
 
 
 
-//    private void updateDisplayHomeAtSync(){
-//        ActionBar actionBar = getSupportActionBar();
-//        OCFile currentDir = getCurrentDir();
-//        if (currentDir.getParentId() != DataStorageManager.ROOT_PARENT_ID) {
-//            actionBar.setHomeButtonEnabled(!mSyncInProgress);
-//            actionBar.setDisplayHomeAsUpEnabled(!mSyncInProgress);
-//        }
-//        else {
-//            actionBar.setHomeButtonEnabled(true);
-//            actionBar.setDisplayHomeAsUpEnabled(false);
-//        }
-//    }
-//    
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */

+ 5 - 0
src/com/owncloud/android/ui/activity/GenericExplanationActivity.java

@@ -30,8 +30,10 @@ import android.widget.ListAdapter;
 import android.widget.ListView;
 import android.widget.ListView;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
+import com.actionbarsherlock.app.ActionBar;
 import com.actionbarsherlock.app.SherlockFragmentActivity;
 import com.actionbarsherlock.app.SherlockFragmentActivity;
 import com.owncloud.android.R;
 import com.owncloud.android.R;
+import com.owncloud.android.utils.DisplayUtils;
 
 
 
 
 /**
 /**
@@ -74,6 +76,9 @@ public class GenericExplanationActivity  extends SherlockFragmentActivity {
         } else {
         } else {
             listView.setVisibility(View.GONE);
             listView.setVisibility(View.GONE);
         }
         }
+        
+        ActionBar actionBar = getSupportActionBar();
+        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
     }
     }
     
     
     public class ExplanationListAdapterView extends ArrayAdapter<String> {
     public class ExplanationListAdapterView extends ArrayAdapter<String> {

+ 2 - 0
src/com/owncloud/android/ui/activity/LogHistoryActivity.java

@@ -34,6 +34,7 @@ import com.actionbarsherlock.app.SherlockPreferenceActivity;
 import com.actionbarsherlock.view.MenuItem;
 import com.actionbarsherlock.view.MenuItem;
 import com.owncloud.android.R;
 import com.owncloud.android.R;
 import com.owncloud.android.ui.adapter.LogListAdapter;
 import com.owncloud.android.ui.adapter.LogListAdapter;
+import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.FileStorageUtils;
 import com.owncloud.android.utils.FileStorageUtils;
 
 
 
 
@@ -50,6 +51,7 @@ public class LogHistoryActivity extends SherlockPreferenceActivity implements On
         setContentView(R.layout.log_send_file);
         setContentView(R.layout.log_send_file);
         setTitle("Log History");
         setTitle("Log History");
         ActionBar actionBar = getSherlock().getActionBar();
         ActionBar actionBar = getSherlock().getActionBar();
+        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
         actionBar.setDisplayHomeAsUpEnabled(true);
         actionBar.setDisplayHomeAsUpEnabled(true);
         ListView listView = (ListView) findViewById(android.R.id.list);
         ListView listView = (ListView) findViewById(android.R.id.list);
         Button deleteHistoryButton = (Button) findViewById(R.id.deleteLogHistoryButton);
         Button deleteHistoryButton = (Button) findViewById(R.id.deleteLogHistoryButton);

+ 4 - 1
src/com/owncloud/android/ui/activity/PinCodeActivity.java

@@ -18,8 +18,10 @@ package com.owncloud.android.ui.activity;
 
 
 import java.util.Arrays;
 import java.util.Arrays;
 
 
+import com.actionbarsherlock.app.ActionBar;
 import com.actionbarsherlock.app.SherlockFragmentActivity;
 import com.actionbarsherlock.app.SherlockFragmentActivity;
 import com.owncloud.android.R;
 import com.owncloud.android.R;
+import com.owncloud.android.utils.DisplayUtils;
 
 
 import android.app.AlertDialog;
 import android.app.AlertDialog;
 import android.content.DialogInterface;
 import android.content.DialogInterface;
@@ -121,7 +123,8 @@ public class PinCodeActivity extends SherlockFragmentActivity {
         }
         }
         setTextListeners();
         setTextListeners();
         
         
-        
+        ActionBar actionBar = getSupportActionBar();
+        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
     }
     }
     
     
 
 

+ 2 - 8
src/com/owncloud/android/ui/activity/Preferences.java

@@ -17,8 +17,6 @@
  */
  */
 package com.owncloud.android.ui.activity;
 package com.owncloud.android.ui.activity;
 
 
-import java.util.Vector;
-
 import android.content.Intent;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageInfo;
@@ -38,8 +36,8 @@ import com.actionbarsherlock.view.Menu;
 import com.actionbarsherlock.view.MenuItem;
 import com.actionbarsherlock.view.MenuItem;
 import com.owncloud.android.R;
 import com.owncloud.android.R;
 import com.owncloud.android.db.DbHandler;
 import com.owncloud.android.db.DbHandler;
+import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.Log_OC;
 import com.owncloud.android.utils.Log_OC;
-import com.owncloud.android.utils.OwnCloudSession;
 
 
 
 
 /**
 /**
@@ -51,15 +49,11 @@ import com.owncloud.android.utils.OwnCloudSession;
 public class Preferences extends SherlockPreferenceActivity {
 public class Preferences extends SherlockPreferenceActivity {
     
     
     private static final String TAG = "OwnCloudPreferences";
     private static final String TAG = "OwnCloudPreferences";
-    private final int mNewSession = 47;
-    private final int mEditSession = 48;
     private DbHandler mDbHandler;
     private DbHandler mDbHandler;
-    private Vector<OwnCloudSession> mSessions;
     private CheckBoxPreference pCode;
     private CheckBoxPreference pCode;
     //private CheckBoxPreference pLogging;
     //private CheckBoxPreference pLogging;
     //private Preference pLoggingHistory;
     //private Preference pLoggingHistory;
     private Preference pAboutApp;
     private Preference pAboutApp;
-    private int mSelectedMenuItem;
 
 
 
 
     @SuppressWarnings("deprecation")
     @SuppressWarnings("deprecation")
@@ -67,10 +61,10 @@ public class Preferences extends SherlockPreferenceActivity {
     public void onCreate(Bundle savedInstanceState) {
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         super.onCreate(savedInstanceState);
         mDbHandler = new DbHandler(getBaseContext());
         mDbHandler = new DbHandler(getBaseContext());
-        mSessions = new Vector<OwnCloudSession>();
         addPreferencesFromResource(R.xml.preferences);
         addPreferencesFromResource(R.xml.preferences);
         //populateAccountList();
         //populateAccountList();
         ActionBar actionBar = getSherlock().getActionBar();
         ActionBar actionBar = getSherlock().getActionBar();
+        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
         actionBar.setDisplayHomeAsUpEnabled(true);
         actionBar.setDisplayHomeAsUpEnabled(true);
         
         
         Preference p = findPreference("manage_account");
         Preference p = findPreference("manage_account");

+ 2 - 0
src/com/owncloud/android/ui/activity/UploadFilesActivity.java

@@ -40,6 +40,7 @@ import com.owncloud.android.ui.dialog.IndeterminateProgressDialog;
 import com.owncloud.android.ui.fragment.ConfirmationDialogFragment;
 import com.owncloud.android.ui.fragment.ConfirmationDialogFragment;
 import com.owncloud.android.ui.fragment.LocalFileListFragment;
 import com.owncloud.android.ui.fragment.LocalFileListFragment;
 import com.owncloud.android.ui.fragment.ConfirmationDialogFragment.ConfirmationDialogFragmentListener;
 import com.owncloud.android.ui.fragment.ConfirmationDialogFragment.ConfirmationDialogFragmentListener;
+import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.FileStorageUtils;
 import com.owncloud.android.utils.FileStorageUtils;
 import com.owncloud.android.utils.Log_OC;
 import com.owncloud.android.utils.Log_OC;
 
 
@@ -111,6 +112,7 @@ public class UploadFilesActivity extends FileActivity implements
             
             
         // Action bar setup
         // Action bar setup
         ActionBar actionBar = getSupportActionBar();
         ActionBar actionBar = getSupportActionBar();
+        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
         actionBar.setHomeButtonEnabled(true);   // mandatory since Android ICS, according to the official documentation
         actionBar.setHomeButtonEnabled(true);   // mandatory since Android ICS, according to the official documentation
         actionBar.setDisplayHomeAsUpEnabled(mCurrentDir != null && mCurrentDir.getName() != null);
         actionBar.setDisplayHomeAsUpEnabled(mCurrentDir != null && mCurrentDir.getName() != null);
         actionBar.setDisplayShowTitleEnabled(false);
         actionBar.setDisplayShowTitleEnabled(false);

+ 2 - 1
src/com/owncloud/android/ui/dialog/ChangelogDialog.java

@@ -25,6 +25,7 @@ import android.webkit.WebView;
 
 
 import com.actionbarsherlock.app.SherlockDialogFragment;
 import com.actionbarsherlock.app.SherlockDialogFragment;
 import com.owncloud.android.R;
 import com.owncloud.android.R;
+import com.owncloud.android.utils.DisplayUtils;
 
 
 
 
 /**
 /**
@@ -63,7 +64,7 @@ public class ChangelogDialog extends SherlockDialogFragment {
         AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
         AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
         
         
         Dialog dialog = builder.setView(webview)
         Dialog dialog = builder.setView(webview)
-                                .setIcon(R.drawable.icon)
+                                .setIcon(DisplayUtils.getSeasonalIconId())
                                 //.setTitle(R.string.whats_new)
                                 //.setTitle(R.string.whats_new)
                                 .setPositiveButton(R.string.common_ok,
                                 .setPositiveButton(R.string.common_ok,
                                         new DialogInterface.OnClickListener() {
                                         new DialogInterface.OnClickListener() {

+ 7 - 6
src/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java

@@ -28,6 +28,7 @@ import android.support.v4.app.FragmentTransaction;
 import com.actionbarsherlock.app.SherlockDialogFragment;
 import com.actionbarsherlock.app.SherlockDialogFragment;
 import com.actionbarsherlock.app.SherlockFragmentActivity;
 import com.actionbarsherlock.app.SherlockFragmentActivity;
 import com.owncloud.android.R;
 import com.owncloud.android.R;
+import com.owncloud.android.utils.DisplayUtils;
 
 
 
 
 /**
 /**
@@ -59,7 +60,7 @@ public class ConflictsResolveDialog extends SherlockDialogFragment {
     public Dialog onCreateDialog(Bundle savedInstanceState) {
     public Dialog onCreateDialog(Bundle savedInstanceState) {
         String remotepath = getArguments().getString("remotepath");
         String remotepath = getArguments().getString("remotepath");
         return new AlertDialog.Builder(getSherlockActivity())
         return new AlertDialog.Builder(getSherlockActivity())
-                   .setIcon(R.drawable.icon)
+                   .setIcon(DisplayUtils.getSeasonalIconId())
                    .setTitle(R.string.conflict_title)
                    .setTitle(R.string.conflict_title)
                    .setMessage(String.format(getString(R.string.conflict_message), remotepath))
                    .setMessage(String.format(getString(R.string.conflict_message), remotepath))
                    .setPositiveButton(R.string.conflict_overwrite,
                    .setPositiveButton(R.string.conflict_overwrite,
@@ -68,7 +69,7 @@ public class ConflictsResolveDialog extends SherlockDialogFragment {
                            @Override
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                            public void onClick(DialogInterface dialog, int which) {
                                if (mListener != null)
                                if (mListener != null)
-                                   mListener.ConflictDecisionMade(Decision.OVERWRITE);
+                                   mListener.conflictDecisionMade(Decision.OVERWRITE);
                            }
                            }
                        })
                        })
                    .setNeutralButton(R.string.conflict_keep_both,
                    .setNeutralButton(R.string.conflict_keep_both,
@@ -76,7 +77,7 @@ public class ConflictsResolveDialog extends SherlockDialogFragment {
                             @Override
                             @Override
                             public void onClick(DialogInterface dialog, int which) {
                             public void onClick(DialogInterface dialog, int which) {
                                 if (mListener != null)
                                 if (mListener != null)
-                                    mListener.ConflictDecisionMade(Decision.KEEP_BOTH);
+                                    mListener.conflictDecisionMade(Decision.KEEP_BOTH);
                             }
                             }
                         })
                         })
                    .setNegativeButton(R.string.conflict_dont_upload,
                    .setNegativeButton(R.string.conflict_dont_upload,
@@ -84,7 +85,7 @@ public class ConflictsResolveDialog extends SherlockDialogFragment {
                            @Override
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                            public void onClick(DialogInterface dialog, int which) {
                                if (mListener != null)
                                if (mListener != null)
-                                   mListener.ConflictDecisionMade(Decision.CANCEL);
+                                   mListener.conflictDecisionMade(Decision.CANCEL);
                            }
                            }
                    })
                    })
                    .create();
                    .create();
@@ -112,10 +113,10 @@ public class ConflictsResolveDialog extends SherlockDialogFragment {
     
     
     @Override
     @Override
     public void onCancel(DialogInterface dialog) {
     public void onCancel(DialogInterface dialog) {
-        mListener.ConflictDecisionMade(Decision.CANCEL);
+        mListener.conflictDecisionMade(Decision.CANCEL);
     }
     }
     
     
     public interface OnConflictDecisionMadeListener {
     public interface OnConflictDecisionMadeListener {
-        public void ConflictDecisionMade(Decision decision);
+        public void conflictDecisionMade(Decision decision);
     }
     }
 }
 }

+ 2 - 0
src/com/owncloud/android/ui/preview/PreviewImageActivity.java

@@ -47,6 +47,7 @@ import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.dialog.LoadingDialog;
 import com.owncloud.android.ui.dialog.LoadingDialog;
 import com.owncloud.android.ui.fragment.FileFragment;
 import com.owncloud.android.ui.fragment.FileFragment;
+import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.Log_OC;
 import com.owncloud.android.utils.Log_OC;
 
 
 
 
@@ -90,6 +91,7 @@ public class PreviewImageActivity extends FileActivity implements FileFragment.C
         setContentView(R.layout.preview_image_activity);
         setContentView(R.layout.preview_image_activity);
         
         
         ActionBar actionBar = getSupportActionBar();
         ActionBar actionBar = getSupportActionBar();
+        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
         actionBar.setDisplayHomeAsUpEnabled(true);
         actionBar.setDisplayHomeAsUpEnabled(true);
         actionBar.hide();
         actionBar.hide();
         
         

+ 10 - 1
src/com/owncloud/android/utils/DisplayUtils.java

@@ -19,13 +19,13 @@
 package com.owncloud.android.utils;
 package com.owncloud.android.utils;
 
 
 import java.util.Arrays;
 import java.util.Arrays;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.Set;
 
 
 import com.owncloud.android.R;
 import com.owncloud.android.R;
-import com.owncloud.android.R.drawable;
 
 
 /**
 /**
  * A helper class for some string operations.
  * A helper class for some string operations.
@@ -190,4 +190,13 @@ public class DisplayUtils {
         Date date = new Date(milliseconds);
         Date date = new Date(milliseconds);
         return date.toLocaleString();
         return date.toLocaleString();
     }
     }
+    
+    
+    public static int getSeasonalIconId() {
+        if (Calendar.getInstance().get(Calendar.DAY_OF_YEAR) >= 354) {
+            return R.drawable.winter_holidays_icon;
+        } else {
+            return R.drawable.icon;
+        }
+    }
 }
 }