Ver Fonte

initial material design changes for the action bar

AndyScherzinger há 9 anos atrás
pai
commit
d474239b21
33 ficheiros alterados com 270 adições e 126 exclusões
  1. 1 1
      AndroidManifest.xml
  2. 5 5
      build.gradle
  3. 1 1
      project.properties
  4. BIN
      res/drawable-xxhdpi/ic_action_create_dir.png
  5. BIN
      res/drawable-xxhdpi/ic_action_download.png
  6. BIN
      res/drawable-xxhdpi/ic_action_upload.png
  7. BIN
      res/drawable-xxhdpi/ic_cancel.png
  8. BIN
      res/drawable-xxhdpi/ic_folder_open.png
  9. BIN
      res/drawable-xxhdpi/ic_hide.png
  10. BIN
      res/drawable-xxhdpi/ic_log.png
  11. BIN
      res/drawable-xxhdpi/ic_ok.png
  12. BIN
      res/drawable-xxhdpi/ic_settings.png
  13. BIN
      res/drawable-xxhdpi/ic_view.png
  14. BIN
      res/drawable-xxhdpi/no_network.png
  15. 20 2
      res/layout/account_setup.xml
  16. 60 42
      res/layout/drawer.xml
  17. 16 7
      res/layout/drawer_list_item.xml
  18. 10 1
      res/values/colors.xml
  19. 1 0
      res/values/strings.xml
  20. 11 3
      res/values/styles.xml
  21. 11 1
      src/com/owncloud/android/ui/NavigationDrawerItem.java
  22. 3 7
      src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java
  23. 20 16
      src/com/owncloud/android/ui/activity/FileActivity.java
  24. 9 3
      src/com/owncloud/android/ui/activity/FileDisplayActivity.java
  25. 0 2
      src/com/owncloud/android/ui/activity/FolderPickerActivity.java
  26. 0 3
      src/com/owncloud/android/ui/activity/GenericExplanationActivity.java
  27. 1 3
      src/com/owncloud/android/ui/activity/LogHistoryActivity.java
  28. 0 3
      src/com/owncloud/android/ui/activity/PassCodeActivity.java
  29. 90 16
      src/com/owncloud/android/ui/activity/Preferences.java
  30. 0 1
      src/com/owncloud/android/ui/activity/UploadFilesActivity.java
  31. 0 5
      src/com/owncloud/android/ui/activity/Uploader.java
  32. 8 1
      src/com/owncloud/android/ui/adapter/NavigationDrawerListAdapter.java
  33. 3 3
      src/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java

+ 1 - 1
AndroidManifest.xml

@@ -37,7 +37,7 @@
     
     <uses-sdk
         android:minSdkVersion="14"
-        android:targetSdkVersion="19" />
+        android:targetSdkVersion="22" />
 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
     </uses-permission>

+ 5 - 5
build.gradle

@@ -3,7 +3,7 @@ buildscript {
         mavenCentral()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.0.0'
+        classpath 'com.android.tools.build:gradle:1.2.3'
     }
 }
 
@@ -20,15 +20,15 @@ repositories {
 
 dependencies {
     compile name: 'touch-image-view'
-    compile 'com.android.support:support-v4:19.1.0'
+    compile 'com.android.support:support-v4:22.2.1'
     compile project(':owncloud-android-library')
     compile 'com.jakewharton:disklrucache:2.0.2'
-    compile 'com.android.support:appcompat-v7:19.1.0'
+    compile 'com.android.support:appcompat-v7:22.2.1'
 }
 
 android {
-    compileSdkVersion 19
-    buildToolsVersion "20.0.0"
+    compileSdkVersion 22
+    buildToolsVersion "22.0.1"
     sourceSets {
         main {
             manifest.srcFile 'AndroidManifest.xml'

+ 1 - 1
project.properties

@@ -8,6 +8,6 @@
 # project structure.
 
 # Project target.
-target=android-19
+target=android-22
 android.library.reference.1=owncloud-android-library
 android.library.reference.2=libs/android-support-appcompat-v7-exploded-aar

BIN
res/drawable-xxhdpi/ic_action_create_dir.png


BIN
res/drawable-xxhdpi/ic_action_download.png


BIN
res/drawable-xxhdpi/ic_action_upload.png


BIN
res/drawable-xxhdpi/ic_cancel.png


BIN
res/drawable-xxhdpi/ic_folder_open.png


BIN
res/drawable-xxhdpi/ic_hide.png


BIN
res/drawable-xxhdpi/ic_log.png


BIN
res/drawable-xxhdpi/ic_ok.png


BIN
res/drawable-xxhdpi/ic_settings.png


BIN
res/drawable-xxhdpi/ic_view.png


BIN
res/drawable-xxhdpi/no_network.png


+ 20 - 2
res/layout/account_setup.xml

@@ -40,7 +40,6 @@
             android:layout_height="wrap_content"
             android:layout_marginBottom="10dp"
             android:layout_marginTop="10dp"
-            android:background="@color/login_logo_background_color"
             android:src="@drawable/logo"
             android:contentDescription="@string/app_name"/>
 
@@ -63,6 +62,8 @@
             android:text="@string/auth_expired_basic_auth_toast"
             android:visibility="gone"
             android:layout_marginBottom="10dp"
+            android:textColor="#AAAAAA"
+            android:textColorHint="#AAAAAA"
             android:contentDescription="@string/auth_expired_basic_auth_toast"/>
 
 	    <FrameLayout 
@@ -80,6 +81,8 @@
 				android:inputType="textUri"
 				android:drawablePadding="5dp"
 				android:paddingRight="55dp"
+                android:textColor="#AAAAAA"
+                android:textColorHint="#AAAAAA"
 				android:contentDescription="@string/auth_host_address"
                 >
 				<requestFocus />
@@ -108,6 +111,8 @@
             android:drawableLeft="@android:drawable/stat_notify_sync"
             android:drawablePadding="5dp"
             android:gravity="center_vertical"
+            android:textColor="#AAAAAA"
+            android:textColorHint="#AAAAAA"
             android:text="@string/auth_testing_connection"
             android:contentDescription="@string/auth_testing_connection"/>
 
@@ -119,6 +124,8 @@
             android:onClick="onCheckClick"
             android:text="@string/oauth_check_onoff"
             android:textAppearance="?android:attr/textAppearanceSmall"
+            android:textColor="#AAAAAA"
+            android:textColorHint="#AAAAAA"
             android:contentDescription="@string/oauth_check_onoff"
             />
 
@@ -128,6 +135,8 @@
             android:layout_height="wrap_content"
             android:ems="10"
 			android:enabled="false"
+            android:textColor="#AAAAAA"
+            android:textColorHint="#AAAAAA"
             android:text="@string/oauth2_url_endpoint_auth"
             android:singleLine="true"
             android:inputType="textUri"
@@ -143,6 +152,8 @@
             android:text="@string/oauth2_url_endpoint_access"
             android:singleLine="true"
             android:inputType="textUri"
+            android:textColor="#AAAAAA"
+            android:textColorHint="#AAAAAA"
             android:visibility="gone"/>
 
         <EditText
@@ -152,6 +163,8 @@
             android:ems="10"
             android:hint="@string/auth_username"
             android:inputType="textNoSuggestions"
+            android:textColor="#AAAAAA"
+            android:textColorHint="#AAAAAA"
             android:contentDescription="@string/auth_username"
             />
 
@@ -163,6 +176,8 @@
 		    android:ems="10"
 		    android:hint="@string/auth_password"
 		    android:inputType="textPassword"
+            android:textColor="#AAAAAA"
+            android:textColorHint="#AAAAAA"
 		    android:contentDescription="@string/auth_password"
             />
         
@@ -175,6 +190,8 @@
             android:drawablePadding="5dp"
             android:gravity="center_vertical"
             android:text="@string/auth_unauthorized"
+            android:textColor="#AAAAAA"
+            android:textColorHint="#AAAAAA"
             android:contentDescription="@string/auth_unauthorized"/>
 
         <Button
@@ -196,7 +213,8 @@
             android:paddingBottom="5dp"
             android:paddingTop="5dp"
             android:text="@string/auth_register"
-            android:textColor="#0000FF"
+            android:textColor="#AAAAAA"
+            android:textColorHint="#AAAAAA"
             android:contentDescription="@string/auth_register"/>
 
     </LinearLayout>

+ 60 - 42
res/layout/drawer.xml

@@ -16,51 +16,69 @@
   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/left_drawer"
-    android:layout_width="240dp"
-    android:layout_height="match_parent"
-    android:layout_gravity="start"
-    android:background="@color/background_color"
-    android:baselineAligned="false"
-    android:clickable="true"
-    android:orientation="vertical"
-    android:fitsSystemWindows="true">
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+    <RelativeLayout
+        android:id="@+id/left_drawer"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_gravity="start"
+        android:gravity="center"
+        android:orientation="vertical"
+        android:fitsSystemWindows="true"
+        android:background="@color/background_color"
+        >
 
-    <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
-    <!--<LinearLayout-->
-        <!--android:layout_width="match_parent"-->
-        <!--android:layout_height="wrap_content"-->
-        <!--android:layout_margin="5dp">-->
+        <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
+        <!--<LinearLayout-->
+            <!--android:layout_width="match_parent"-->
+            <!--android:layout_height="wrap_content"-->
+            <!--android:layout_margin="5dp">-->
 
-        <!--<ImageView-->
-            <!--android:id="@+id/drawer_userIcon"-->
-            <!--android:layout_width="40dp"-->
-            <!--android:layout_height="40dp"-->
-            <!--android:src="@drawable/abc_ab_bottom_solid_dark_holo" />-->
+            <!--<ImageView-->
+                <!--android:id="@+id/drawer_userIcon"-->
+                <!--android:layout_width="40dp"-->
+                <!--android:layout_height="40dp"-->
+                <!--android:src="@drawable/abc_ab_bottom_solid_dark_holo" />-->
 
-        <!--<TextView-->
-            <!--android:id="@+id/drawer_username"-->
-            <!--android:layout_width="wrap_content"-->
-            <!--android:layout_height="wrap_content"-->
-            <!--android:layout_gravity="center_vertical"-->
-            <!--android:layout_marginLeft="5dp"-->
-            <!--android:layout_marginStart="5dp"-->
-            <!--android:textAppearance="?android:attr/textAppearanceLarge" />-->
+            <!--<TextView-->
+                <!--android:id="@+id/drawer_username"-->
+                <!--android:layout_width="wrap_content"-->
+                <!--android:layout_height="wrap_content"-->
+                <!--android:layout_gravity="center_vertical"-->
+                <!--android:layout_marginLeft="5dp"-->
+                <!--android:layout_marginStart="5dp"-->
+                <!--android:textAppearance="?android:attr/textAppearanceLarge" />-->
 
-    <!--</LinearLayout>-->
+        <!--</LinearLayout>-->
 
-    <!--<TextView-->
-        <!--android:layout_width="fill_parent"-->
-        <!--android:layout_height="2dip"-->
-        <!--android:background="@color/list_item_lastmod_and_filesize_text" />-->
+        <!--<TextView-->
+            <!--android:layout_width="fill_parent"-->
+            <!--android:layout_height="2dip"-->
+            <!--android:background="@color/list_item_lastmod_and_filesize_text" />-->
 
-    <ListView
-        android:id="@+id/drawer_list"
-        android:layout_width="fill_parent"
-        android:layout_height="match_parent"
-        android:background="@color/background_color"
-        android:choiceMode="singleChoice"
-        />
-</LinearLayout>
+        <ListView
+            android:id="@+id/drawer_list"
+            android:choiceMode="singleChoice"
+            android:layout_width="fill_parent"
+            android:layout_height="match_parent"
+            android:background="@color/background_color"
+            android:divider="#eee"
+            android:dividerHeight="1dp"
+            android:paddingTop="100dp" />
+
+        <TextView
+            android:id="@+id/tv_header"
+            android:layout_width="fill_parent"
+            android:layout_height="100dp"
+            android:layout_alignParentTop="true"
+            android:layout_centerHorizontal="true"
+            android:background="@color/owncloud_blue"
+            android:gravity="bottom"
+            android:orientation="vertical"
+            android:text="@string/app_name"
+            android:textColor="#FFF"
+            android:textStyle="bold"
+            android:padding="10dp"
+            android:textSize="24sp" />
+    </RelativeLayout>
+</merge>

+ 16 - 7
res/layout/drawer_list_item.xml

@@ -24,19 +24,28 @@
     android:layout_alignParentLeft="true"
     android:orientation="horizontal"
     android:background="@color/background_color"
-    android:layout_marginTop="10dp"
-    android:layout_marginBottom="10dp">
+    android:layout_marginTop="16dp"
+    android:layout_marginBottom="16dp"
+    android:minHeight="?android:attr/listPreferredItemHeight">
+
+    <ImageView
+        android:id="@+id/itemIcon"
+        android:layout_width="24sp"
+        android:layout_height="24sp"
+        android:layout_marginLeft="16sp"
+        android:layout_gravity="center_vertical"
+        />
 
     <TextView xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/itemTitle"
         android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:gravity="center_vertical"
+        android:layout_height="wrap_content"
         android:paddingLeft="16dp"
         android:paddingRight="16dp"
-        android:textColor="@color/textColor"
+        android:textColor="@color/drawerMenuTextColor"
         android:text="@string/app_name"
-        android:textAppearance="?android:attr/textAppearanceListItemSmall"
-        android:minHeight="?android:attr/listPreferredItemHeightSmall"/>
+        android:layout_gravity="center_vertical"
+        android:textAppearance="?android:attr/textAppearanceListItem"
+        />
 </LinearLayout>
 

+ 10 - 1
res/values/colors.xml

@@ -24,6 +24,15 @@
     <color name="list_item_lastmod_and_filesize_text">#989898</color>
     <color name="black">#000000</color>
     <color name="textColor">#303030</color>
+    <color name="drawerMenuTextColor">#757575</color>
     <color name="list_divider_background">#fff0f0f0</color>
-    
+    <color name="owncloud_blue">#1D2D44</color>
+    <color name="login_text_color">#AAAAAA</color>
+
+    <!-- Colors -->
+    <color name="color_accent">@color/owncloud_blue_bright</color>
+
+    <!-- standard material color definitions -->
+    <color name="primary">@color/owncloud_blue</color>
+    <color name="primary_dark">#162233</color>
 </resources>

+ 1 - 0
res/values/strings.xml

@@ -28,6 +28,7 @@
     <string name="drawer_item_settings">Settings</string>
     <string name="drawer_item_logs">Logs</string>
 	<string name="drawer_close">Close</string>
+    <string name="drawer_open">Open</string>
     <string name="prefs_category_general">General</string>
     <string name="prefs_category_more">More</string>
     <string name="prefs_accounts">Accounts</string>

+ 11 - 3
res/values/styles.xml

@@ -25,10 +25,18 @@
     	<item name="android:actionBarStyle">@style/Theme.ownCloud.Widget.ActionBar</item>
     	<item name="actionBarStyle">@style/Theme.ownCloud.Widget.ActionBar</item>
     	<item name="android:buttonStyle">@style/Theme.ownCloud.ButtonStyle</item>
+		<item name="colorPrimary">@color/primary</item>
+		<item name="colorPrimaryDark">@color/primary_dark</item>
+		<item name="colorAccent">@color/color_accent</item>
 	</style>
 	
-	<style name="Theme.ownCloud.noActionBar" parent="style/Theme.AppCompat.Light">
-        <item name="android:buttonStyle">@style/Theme.ownCloud.ButtonStyle</item>
+	<style name="Theme.ownCloud.noActionBar" parent="style/Theme.AppCompat.Light.DarkActionBar">
+		<item name="android:buttonStyle">@style/Theme.ownCloud.ButtonStyle</item>
+		<item name="windowNoTitle">true</item>
+		<item name="windowActionBar">false</item>
+		<item name="colorPrimary">@color/primary</item>
+		<item name="colorPrimaryDark">@color/primary_dark</item>
+		<item name="colorAccent">@color/color_accent</item>
     </style>
 
 	<style name="Theme.ownCloud.Fullscreen" parent="style/Theme.AppCompat">
@@ -38,7 +46,7 @@
 	
 	<style name="Theme.ownCloud.Widget.ActionBar"
 		parent="style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
-    	<item name="android:background">@drawable/main_header_bg</item>
+    	<item name="android:background">@color/owncloud_blue</item>
     	<item name="background">@drawable/main_header_bg</item>
     	<item name="android:textColor">#ffffff</item>
     	<item name="android:shadowColor">#222222</item>

+ 11 - 1
src/com/owncloud/android/ui/NavigationDrawerItem.java

@@ -24,6 +24,7 @@ public class NavigationDrawerItem {
 
     private String mTitle;
     private String mContentDescription;
+    private int mIcon;
 
     // Constructors
     public NavigationDrawerItem(){}
@@ -32,9 +33,10 @@ public class NavigationDrawerItem {
         mTitle = title;
     }
 
-    public NavigationDrawerItem(String title, String contentDescription){
+    public NavigationDrawerItem(String title, String contentDescription, int icon){
         mTitle = title;
         mContentDescription = contentDescription;
+        mIcon = icon;
     }
 
     // Getters and Setters
@@ -53,4 +55,12 @@ public class NavigationDrawerItem {
     public void setContentDescription(String contentDescription) {
         this.mContentDescription = contentDescription;
     }
+
+    public int getIcon() {
+        return mIcon;
+    }
+
+    public void setIcon(int icon) {
+        this.mIcon = icon;
+    }
 }

+ 3 - 7
src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java

@@ -22,17 +22,15 @@
 
 package com.owncloud.android.ui.activity;
 
+import android.content.Intent;
+import android.os.Bundle;
+
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileUploader;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.dialog.ConflictsResolveDialog;
 import com.owncloud.android.ui.dialog.ConflictsResolveDialog.Decision;
 import com.owncloud.android.ui.dialog.ConflictsResolveDialog.OnConflictDecisionMadeListener;
-import com.owncloud.android.utils.DisplayUtils;
-
-import android.app.ActionBar;
-import android.content.Intent;
-import android.os.Bundle;
 
 /**
  * Wrapper activity which will be launched if keep-in-sync file will be modified by external
@@ -45,8 +43,6 @@ public class ConflictsResolveActivity extends FileActivity implements OnConflict
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        ActionBar actionBar = getActionBar();
-        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
     }
 
     @Override

+ 20 - 16
src/com/owncloud/android/ui/activity/FileActivity.java

@@ -35,18 +35,18 @@ import android.content.res.Configuration;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
-import android.support.v4.app.ActionBarDrawerToggle;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentTransaction;
 import android.support.v4.view.GravityCompat;
 import android.support.v4.widget.DrawerLayout;
 import android.support.v7.app.ActionBar;
-import android.support.v7.app.ActionBarActivity;
+import android.support.v7.app.ActionBarDrawerToggle;
+import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 import android.widget.AdapterView;
-import android.widget.LinearLayout;
 import android.widget.ListView;
+import android.widget.RelativeLayout;
 import android.widget.Toast;
 
 import com.owncloud.android.BuildConfig;
@@ -76,8 +76,6 @@ import com.owncloud.android.ui.NavigationDrawerItem;
 import com.owncloud.android.ui.adapter.NavigationDrawerListAdapter;
 import com.owncloud.android.ui.dialog.LoadingDialog;
 import com.owncloud.android.ui.dialog.SharePasswordDialogFragment;
-import com.owncloud.android.ui.fragment.FileDetailFragment;
-import com.owncloud.android.ui.fragment.FileFragment;
 import com.owncloud.android.utils.ErrorMessageAdapter;
 
 import java.util.ArrayList;
@@ -87,7 +85,7 @@ import java.util.ArrayList;
  * Activity with common behaviour for activities handling {@link OCFile}s in ownCloud
  * {@link Account}s .
  */
-public class FileActivity extends ActionBarActivity
+public class FileActivity extends AppCompatActivity
         implements OnRemoteOperationListener, ComponentsGetter {
 
     public static final String EXTRA_FILE = "com.owncloud.android.ui.activity.FILE";
@@ -313,7 +311,7 @@ public class FileActivity extends ActionBarActivity
 
         mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
         // Notification Drawer
-        LinearLayout navigationDrawerLayout = (LinearLayout) findViewById(R.id.left_drawer);
+        RelativeLayout navigationDrawerLayout = (RelativeLayout) findViewById(R.id.left_drawer);
         mDrawerList = (ListView) navigationDrawerLayout.findViewById(R.id.drawer_list);
 
         // TODO re-enable when "Accounts" is available in Navigation Drawer
@@ -346,7 +344,8 @@ public class FileActivity extends ActionBarActivity
         // mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[0],
         // mDrawerContentDescriptions[0]));
         // All Files
-        mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[0], mDrawerContentDescriptions[0]));
+        mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[0], mDrawerContentDescriptions[0],
+                R.drawable.ic_folder_open));
 
         // TODO Enable when "On Device" is recovered
         // On Device
@@ -354,11 +353,12 @@ public class FileActivity extends ActionBarActivity
         //        mDrawerContentDescriptions[2]));
 
         // Settings
-        mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[1], mDrawerContentDescriptions[1]));
+        mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[1], mDrawerContentDescriptions[1],
+                R.drawable.ic_settings));
         // Logs
         if (BuildConfig.DEBUG) {
             mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[2],
-                    mDrawerContentDescriptions[2]));
+                    mDrawerContentDescriptions[2],R.drawable.ic_log));
         }
 
         // setting the nav drawer list adapter
@@ -366,12 +366,15 @@ public class FileActivity extends ActionBarActivity
                 mDrawerItems);
         mDrawerList.setAdapter(mNavigationDrawerAdapter);
 
-        mDrawerToggle = new ActionBarDrawerToggle(
-                this,
-                mDrawerLayout,
-                R.drawable.ic_drawer,
-                R.string.app_name,
-                R.string.drawer_close) {
+
+        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,R.string.drawer_open,R.string.drawer_close) {
+
+            //new ActionBarDrawerToggle(
+            //this,
+            //  mDrawerLayout,
+            //  R.drawable.ic_drawer,
+            //  R.string.app_name,
+            //  R.string.drawer_close) {
 
             /** Called when a drawer has settled in a completely closed state. */
             public void onDrawerClosed(View view) {
@@ -395,6 +398,7 @@ public class FileActivity extends ActionBarActivity
 
         // Set the drawer toggle as the DrawerListener
         mDrawerLayout.setDrawerListener(mDrawerToggle);
+
     }
 
     /**

+ 9 - 3
src/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -196,9 +196,15 @@ public class FileDisplayActivity extends HookActivity
                                                                 // according to the official
                                                                 // documentation
 
+        // enable ActionBar app icon to behave as action to toggle nav drawer
+        //getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+        getSupportActionBar().setHomeButtonEnabled(true);
+
         setSupportProgressBarIndeterminateVisibility(mSyncInProgress
         /*|| mRefreshSharesInProgress*/);
         // always AFTER setContentView(...) ; to work around bug in its implementation
+
+        initDrawer();
         
         setBackgroundText();
 
@@ -209,7 +215,6 @@ public class FileDisplayActivity extends HookActivity
     protected void onStart() {
         Log_OC.v(TAG, "onStart() start");
         super.onStart();
-        getSupportActionBar().setIcon(DisplayUtils.getSeasonalIconId());
         Log_OC.v(TAG, "onStart() end");
     }
 
@@ -1028,7 +1033,9 @@ public class FileDisplayActivity extends HookActivity
                         startImagePreview(getFile());
                     } // TODO what about other kind of previews?
                 }
-                
+
+                setSupportProgressBarIndeterminate(false);
+
             } finally {
                 if (intent != null) {
                     removeStickyBroadcast(intent);
@@ -1166,7 +1173,6 @@ public class FileDisplayActivity extends HookActivity
 
     }
 
-
     @Override
     protected ServiceConnection newTransferenceServiceConnection() {
         return new ListServiceConnection();

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

@@ -59,7 +59,6 @@ import com.owncloud.android.syncadapter.FileSyncAdapter;
 import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
 import com.owncloud.android.ui.fragment.FileFragment;
 import com.owncloud.android.ui.fragment.OCFileListFragment;
-import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.ErrorMessageAdapter;
 
 public class FolderPickerActivity extends FileActivity implements FileFragment.ContainerActivity, 
@@ -116,7 +115,6 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
     @Override
     protected void onStart() {
         super.onStart();
-        getSupportActionBar().setIcon(DisplayUtils.getSeasonalIconId());
     }
 
     /**

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

@@ -81,9 +81,6 @@ public class GenericExplanationActivity  extends ActionBarActivity {
         } else {
             listView.setVisibility(View.GONE);
         }
-        
-        ActionBar actionBar = getSupportActionBar();
-        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
     }
     
     public class ExplanationListAdapterView extends ArrayAdapter<String> {

+ 1 - 3
src/com/owncloud/android/ui/activity/LogHistoryActivity.java

@@ -72,9 +72,7 @@ public class LogHistoryActivity extends ActionBarActivity {
 
         setContentView(R.layout.log_send_file);
         setTitle(getText(R.string.actionbar_logger));
-        ActionBar actionBar = getSupportActionBar();
-        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
-        actionBar.setDisplayHomeAsUpEnabled(true);
+        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
         Button deleteHistoryButton = (Button) findViewById(R.id.deleteLogHistoryButton);
         Button sendHistoryButton = (Button) findViewById(R.id.sendLogHistoryButton);
         TextView logTV = (TextView) findViewById(R.id.logTV);

+ 0 - 3
src/com/owncloud/android/ui/activity/PassCodeActivity.java

@@ -128,9 +128,6 @@ public class PassCodeActivity extends ActionBarActivity {
         }
 
         setTextListeners();
-        
-        ActionBar actionBar = getSupportActionBar();
-        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
     }
 
 

+ 90 - 16
src/com/owncloud/android/ui/activity/Preferences.java

@@ -32,8 +32,8 @@ import android.content.ServiceConnection;
 import android.content.SharedPreferences;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.res.Configuration;
 import android.net.Uri;
-import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -44,13 +44,18 @@ import android.preference.Preference.OnPreferenceClickListener;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceCategory;
 import android.preference.PreferenceManager;
-//import android.support.v7.app.ActionBar;
-import android.app.ActionBar;
+import android.support.annotation.LayoutRes;
+import android.support.annotation.Nullable;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatDelegate;
+import android.support.v7.widget.Toolbar;
 import android.view.ContextMenu;
 import android.view.ContextMenu.ContextMenuInfo;
 import android.view.Menu;
+import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.ViewGroup;
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemLongClickListener;
 import android.widget.ListAdapter;
@@ -75,6 +80,9 @@ import com.owncloud.android.utils.DisplayUtils;
 
 /**
  * An Activity that allows the user to change the application's settings.
+ *
+ * It proxies the necessary calls via {@link android.support.v7.app.AppCompatDelegate} to be used
+ * with AppCompat.
  */
 public class Preferences extends PreferenceActivity
         implements AccountManagerCallback<Boolean>, ComponentsGetter {
@@ -87,6 +95,7 @@ public class Preferences extends PreferenceActivity
     private DbHandler mDbHandler;
     private CheckBoxPreference pCode;
     private Preference pAboutApp;
+    private AppCompatDelegate mDelegate;
 
     private PreferenceCategory mAccountsPrefCategory = null;
     private final Handler mHandler = new Handler();
@@ -109,23 +118,15 @@ public class Preferences extends PreferenceActivity
     @SuppressWarnings("deprecation")
     @Override
     public void onCreate(Bundle savedInstanceState) {
+        getDelegate().installViewFactory();
+        getDelegate().onCreate(savedInstanceState);
         super.onCreate(savedInstanceState);
         mDbHandler = new DbHandler(getBaseContext());
         addPreferencesFromResource(R.xml.preferences);
 
-        // Set properties of Action Bar in an ugly workaround to build correctly without
-        // upgrading minSdk
-        // TODO : increase minSdk; scheduled for next realease, don't wont to mix with this US
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
-            ActionBar actionBar = getActionBar();
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
-                actionBar.setIcon(DisplayUtils.getSeasonalIconId());
-            }
-            actionBar.setDisplayHomeAsUpEnabled(true);
-            actionBar.setTitle(R.string.actionbar_settings);
-        } else {
-            setTitle(R.string.actionbar_settings);
-        }
+        ActionBar actionBar = getSupportActionBar();
+        actionBar.setDisplayHomeAsUpEnabled(true);
+        actionBar.setTitle(R.string.actionbar_settings);
 
         // For adding content description tag to a title field in the action bar
         int actionBarTitleId = getResources().getIdentifier("action_bar_title", "id", "android");
@@ -571,6 +572,61 @@ public class Preferences extends PreferenceActivity
         }
     }
 
+    public ActionBar getSupportActionBar() {
+        return getDelegate().getSupportActionBar();
+    }
+
+    public void setSupportActionBar(@Nullable Toolbar toolbar) {
+        getDelegate().setSupportActionBar(toolbar);
+    }
+
+    @Override
+    public MenuInflater getMenuInflater() {
+        return getDelegate().getMenuInflater();
+    }
+
+    @Override
+    public void setContentView(@LayoutRes int layoutResID) {
+        getDelegate().setContentView(layoutResID);
+    }
+    @Override
+    public void setContentView(View view) {
+        getDelegate().setContentView(view);
+    }
+    @Override
+    public void setContentView(View view, ViewGroup.LayoutParams params) {
+        getDelegate().setContentView(view, params);
+    }
+
+    @Override
+    public void addContentView(View view, ViewGroup.LayoutParams params) {
+        getDelegate().addContentView(view, params);
+    }
+
+    @Override
+    protected void onPostResume() {
+        super.onPostResume();
+        getDelegate().onPostResume();
+    }
+
+    @Override
+    protected void onTitleChanged(CharSequence title, int color) {
+        super.onTitleChanged(title, color);
+        getDelegate().setTitle(title);
+    }
+
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        super.onConfigurationChanged(newConfig);
+        getDelegate().onConfigurationChanged(newConfig);
+    }
+
+    @Override
+    protected void onPostCreate(Bundle savedInstanceState) {
+        super.onPostCreate(savedInstanceState);
+        getDelegate().onPostCreate(savedInstanceState);
+    }
+
     @Override
     protected void onDestroy() {
         mDbHandler.close();
@@ -585,6 +641,24 @@ public class Preferences extends PreferenceActivity
         }
 
         super.onDestroy();
+        getDelegate().onDestroy();
+    }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+        getDelegate().onStop();
+    }
+
+    public void invalidateOptionsMenu() {
+        getDelegate().invalidateOptionsMenu();
+    }
+
+    private AppCompatDelegate getDelegate() {
+        if (mDelegate == null) {
+            mDelegate = AppCompatDelegate.create(this, null);
+        }
+        return mDelegate;
     }
 
     /**

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

@@ -117,7 +117,6 @@ public class UploadFilesActivity extends FileActivity implements
             
         // Action bar setup
         ActionBar actionBar = getSupportActionBar();
-        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
         actionBar.setHomeButtonEnabled(true);   // mandatory since Android ICS, according to the
                                                 // official documentation
         actionBar.setDisplayHomeAsUpEnabled(mCurrentDir != null && mCurrentDir.getName() != null);

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

@@ -146,11 +146,6 @@ public class Uploader extends FileActivity
         if (mAccountSelected) {
             setAccount((Account) savedInstanceState.getParcelable(FileActivity.EXTRA_ACCOUNT));
         }
-
-
-        ActionBar actionBar = getSupportActionBar();
-        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
-
     }
 
     @Override

+ 8 - 1
src/com/owncloud/android/ui/adapter/NavigationDrawerListAdapter.java

@@ -28,6 +28,7 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
+import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
@@ -102,12 +103,18 @@ public class NavigationDrawerListAdapter extends BaseAdapter {
                 NavigationDrawerItem navItem = (NavigationDrawerItem) mAll.get(position);
 
                 View view = inflator.inflate(R.layout.drawer_list_item, null);
-                view.setMinimumHeight(40);
+
                 LinearLayout itemLayout = (LinearLayout) view.findViewById(R.id.itemLayout);
                 itemLayout.setContentDescription(navItem.getContentDescription());
+
                 TextView itemText = (TextView) view.findViewById(R.id.itemTitle);
                 itemText.setText(navItem.getTitle());
 
+                if(navItem.getIcon()!=0) {
+                    ImageView itemImage = (ImageView) view.findViewById(R.id.itemIcon);
+                    itemImage.setImageResource(navItem.getIcon());
+                }
+
                 return view;
             }
             // TODO re-enable when "Accounts" is available in Navigation Drawer

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

@@ -28,7 +28,7 @@ import android.os.Bundle;
 import android.support.v4.app.DialogFragment;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentTransaction;
-import android.support.v7.app.ActionBarActivity;
+import android.support.v7.app.AppCompatActivity;
 
 import com.owncloud.android.R;
 import com.owncloud.android.utils.DisplayUtils;
@@ -91,7 +91,7 @@ public class ConflictsResolveDialog extends DialogFragment {
                    .create();
     }
     
-    public void showDialog(ActionBarActivity activity) {
+    public void showDialog(AppCompatActivity activity) {
         Fragment prev = activity.getSupportFragmentManager().findFragmentByTag("dialog");
         FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
         if (prev != null) {
@@ -102,7 +102,7 @@ public class ConflictsResolveDialog extends DialogFragment {
         this.show(ft, "dialog");
     }
 
-    public void dismissDialog(ActionBarActivity activity) {
+    public void dismissDialog(AppCompatActivity activity) {
         Fragment prev = activity.getSupportFragmentManager().findFragmentByTag(getTag());
         if (prev != null) {
             FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();