Browse Source

general menu/account list switch implemented (open: populate account list)

Andy Scherzinger 9 years ago
parent
commit
f41e567b90

BIN
res/drawable-hdpi/ic_account_plus.png


BIN
res/drawable-mdpi/ic_account_plus.png


BIN
res/drawable-xhdpi/ic_account_plus.png


BIN
res/drawable-xxhdpi/ic_account_plus.png


+ 29 - 2
res/menu/drawer_menu.xml

@@ -17,20 +17,47 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 -->
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <group android:checkableBehavior="single">
+    <!--
+      standard menu
+      all items in this group MUST have orderInCategory="0" set
+    -->
+    <group android:id="@+id/drawer_menu_standard" android:checkableBehavior="single">
         <item
+            android:orderInCategory="0"
             android:id="@+id/nav_all_files"
             android:icon="@drawable/ic_folder_open"
             android:title="@string/drawer_item_all_files"/>
         <item
+            android:orderInCategory="0"
             android:id="@+id/nav_uploads"
             android:icon="@drawable/ic_uploads"
             android:title="Uploads"/>
     </group>
 
-    <!-- add an id to the group to get a separator line -->
+    <!--
+      account list placeholder
+      all items in this group MUST have orderInCategory="2" set
+      all accounts are dynamically added with orderInCategory="1" set
+    -->
+    <group android:id="@+id/drawer_menu_accounts">
+        <item
+            android:orderInCategory="2"
+            android:id="@+id/drawer_menu_account_add"
+            android:icon="@drawable/ic_account_plus"
+            android:title="@string/prefs_add_account"/>
+        <item
+            android:orderInCategory="2"
+            android:id="@+id/drawer_menu_account_manage"
+            android:icon="@drawable/ic_settings"
+            android:title="@string/drawer_manage_accounts"/>
+    </group>
+
+    <!--
+      all items in this group MUST have orderInCategory="3" set
+    -->
     <group>
         <item
+            android:orderInCategory="3"
             android:id="@+id/nav_settings"
             android:icon="@drawable/ic_settings"
             android:title="@string/actionbar_settings"/>

+ 1 - 0
res/values-v21/styles.xml

@@ -27,6 +27,7 @@
         <item name="android:alertDialogTheme">@style/Theme.ownCloud.Dialog</item>
         <item name="alertDialogTheme">@style/ownCloud.AlertDialog</item>
         <item name="searchViewStyle">@style/ownCloud.SearchView</item>
+        <item name="android:listDivider">@color/transparent</item>
     </style>
 
     <style name="Theme.ownCloud.Toolbar.Drawer">

+ 5 - 0
res/values/styles.xml

@@ -44,8 +44,13 @@
 		<item name="alertDialogTheme">@style/ownCloud.AlertDialog</item>
 		<item name="android:windowBackground">@color/background_color</item>
 		<item name="searchViewStyle">@style/ownCloud.SearchView</item>
+		<item name="android:listDivider">@color/transparent</item>
     </style>
 
+	<!-- separate style for Drawer activities needed for v21+ theming -->
+	<style name="Theme.ownCloud.Toolbar.Drawer">
+	</style>
+
 	<style name="Theme.ownCloud.noActionBar.Login" parent="Theme.ownCloud.Toolbar">
 		<item name="colorAccent">@color/white</item>
 	</style>

+ 4 - 2
src/com/owncloud/android/ui/TextDrawable.java

@@ -5,7 +5,7 @@ import android.graphics.Color;
 import android.graphics.ColorFilter;
 import android.graphics.Paint;
 import android.graphics.PixelFormat;
-import android.graphics.Rect;
+import android.graphics.RectF;
 import android.graphics.drawable.Drawable;
 
 /**
@@ -35,7 +35,9 @@ public class TextDrawable extends Drawable {
 
     @Override
     public void draw(Canvas canvas) {
-        canvas.drawRect(0,-20,20,40,bg);
+        RectF rf = new RectF(0,24,24,0);
+        canvas.drawRoundRect(rf,24,24,bg);
+        //canvas.drawRect(0,-20,20,40,bg);
         canvas.drawText(text, 4, 6, paint);
     }
 

+ 23 - 3
src/com/owncloud/android/ui/activity/DrawerActivity.java

@@ -1,5 +1,6 @@
 package com.owncloud.android.ui.activity;
 
+import android.accounts.AccountManager;
 import android.content.Intent;
 import android.content.res.Configuration;
 import android.os.Bundle;
@@ -7,13 +8,17 @@ import android.support.design.widget.NavigationView;
 import android.support.v4.view.GravityCompat;
 import android.support.v4.widget.DrawerLayout;
 import android.support.v7.app.ActionBarDrawerToggle;
+import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
+import android.widget.Toast;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.OCFile;
+import com.owncloud.android.ui.TextDrawable;
 
 /**
  * Base class to handle setup of the drawer implementation.
@@ -22,6 +27,7 @@ public abstract class DrawerActivity extends ToolbarActivity {
     // Navigation Drawer
     private DrawerLayout mDrawerLayout;
     private ActionBarDrawerToggle mDrawerToggle;
+    private NavigationView mNavigationView;
     private ImageView mAccountChooserToggle;
 
     private boolean mIsAccountChooserActive;
@@ -32,9 +38,9 @@ public abstract class DrawerActivity extends ToolbarActivity {
     protected void setupDrawer() {
         mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
 
-        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
-        if (navigationView != null) {
-            setupDrawerContent(navigationView);
+        mNavigationView = (NavigationView) findViewById(R.id.nav_view);
+        if (mNavigationView != null) {
+            setupDrawerContent(mNavigationView);
             mAccountChooserToggle = (ImageView) findNavigationViewChildById(R.id.drawer_account_chooser_toogle);
             mAccountChooserToggle.setImageResource(R.drawable.ic_down);
             mIsAccountChooserActive = false;
@@ -137,11 +143,20 @@ public abstract class DrawerActivity extends ToolbarActivity {
                                         Preferences.class);
                                 startActivity(settingsIntent);
                                 break;
+                            case R.id.drawer_menu_account_add:
+                                AccountManager am = AccountManager.get(getApplicationContext());
+                                am.addAccount(MainApp.getAccountType(), null, null, null, DrawerActivity.this,
+                                        null, null);
+                            case R.id.drawer_menu_account_manage:
+                                Toast.makeText(getApplicationContext(),"Not implemented yet",Toast.LENGTH_SHORT);
                         }
 
                         return true;
                     }
                 });
+
+        // hide accounts
+        mNavigationView.getMenu().setGroupVisible(R.id.drawer_menu_accounts, false);
     }
 
     /**
@@ -236,9 +251,14 @@ public abstract class DrawerActivity extends ToolbarActivity {
         if (mIsAccountChooserActive) {
             // TODO close accounts list and display drawer menu again
             mAccountChooserToggle.setImageResource(R.drawable.ic_down);
+            mNavigationView.getMenu().setGroupVisible(R.id.drawer_menu_accounts, false);
+            mNavigationView.getMenu().setGroupVisible(R.id.drawer_menu_standard, true);
+
         } else {
             // TODO show accounts list
             mAccountChooserToggle.setImageResource(R.drawable.ic_up);
+            mNavigationView.getMenu().setGroupVisible(R.id.drawer_menu_accounts, true);
+            mNavigationView.getMenu().setGroupVisible(R.id.drawer_menu_standard, false);
         }
 
         mIsAccountChooserActive = !mIsAccountChooserActive;