Migration to ActionBarSherlock 4.0.1 / Custom Adapter to override text
authorLennart Rosam <lennart@familie-rosam.de>
Tue, 10 Apr 2012 02:40:53 +0000 (04:40 +0200)
committerLennart Rosam <lennart@familie-rosam.de>
Tue, 10 Apr 2012 02:40:53 +0000 (04:40 +0200)
colors in the ListNavigation Dropdown spinner

actionbarsherlock
project.properties
res/values/styles.xml
src/eu/alefzero/owncloud/ui/FragmentListView.java
src/eu/alefzero/owncloud/ui/activity/FileDisplayActivity.java
src/eu/alefzero/owncloud/ui/fragment/FileList.java

index 989a0ff..8fcee10 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 989a0ffa90e1d7f665d9efc70e532d6c407ac5f2
+Subproject commit 8fcee10a340d54fb4acdbddcdc1746ad3f377eca
index 66f56ed..d476196 100644 (file)
@@ -8,5 +8,5 @@
 # project structure.
 
 # Project target.
-target=android-13
+target=android-14
 android.library.reference.1=actionbarsherlock/library
index 1d44455..307cdee 100644 (file)
@@ -3,16 +3,18 @@
        <style name="Animations" />
 
        <!-- Default ownCloud app style -->
-       <style name="Theme.ownCloud" parent="style/Theme.Sherlock.Light">
-       <item name="abBackground">@drawable/main_header_bg</item>
-       <item name="abTitleTextStyle">@style/ocActionBarTextStyle</item>
+       <style name="Theme.ownCloud" parent="style/Theme.Sherlock.Light.DarkActionBar">
+       <item name="android:actionBarStyle">@style/Theme.ownCloud.Widget.ActionBar</item>
+       <item name="actionBarStyle">@style/Theme.ownCloud.Widget.ActionBar</item>
        </style>
 
-       <style name="ocActionBarTextStyle">
+       <style name="Theme.ownCloud.Widget.ActionBar" parent="style/Widget.Sherlock.Light.ActionBar.Solid.Inverse">
        <item name="android:textColor">#ffffff</item>
+       <item name="android:background">@drawable/main_header_bg</item>
        </style>
-           
-           
+       
+       
+       
        <!-- PopDownMenu -->
        <style name="Animations.PopDownMenu" />
        
index 7965f72..a8d0dcd 100644 (file)
@@ -1,7 +1,8 @@
 package eu.alefzero.owncloud.ui;
 
+import com.actionbarsherlock.app.SherlockFragment;
+
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -10,7 +11,7 @@ import android.widget.ListAdapter;
 import android.widget.ListView;
 import android.widget.AdapterView.OnItemClickListener;
 
-public class FragmentListView extends Fragment implements OnItemClickListener {
+public class FragmentListView extends SherlockFragment implements OnItemClickListener {
   ListView mList;
   
   @Override
index f726fd9..6c3f2a8 100644 (file)
@@ -21,21 +21,27 @@ package eu.alefzero.owncloud.ui.activity;
 import android.accounts.Account;\r
 import android.accounts.AccountManager;\r
 import android.app.AlertDialog;\r
-import android.app.Dialog;\r
 import android.app.AlertDialog.Builder;\r
+import android.app.Dialog;\r
 import android.content.DialogInterface;\r
 import android.content.DialogInterface.OnCancelListener;\r
 import android.content.DialogInterface.OnClickListener;\r
 import android.content.Intent;\r
 import android.net.Uri;\r
 import android.os.Bundle;\r
-import android.support.v4.app.ActionBar;\r
-import android.support.v4.app.ActionBar.OnNavigationListener;\r
-import android.support.v4.view.Menu;\r
-import android.support.v4.view.MenuItem;\r
-import android.view.MenuInflater;\r
+import android.view.View;\r
+import android.view.ViewGroup;\r
 import android.widget.ArrayAdapter;\r
 import android.widget.EditText;\r
+import android.widget.TextView;\r
+\r
+import com.actionbarsherlock.app.ActionBar;\r
+import com.actionbarsherlock.app.ActionBar.OnNavigationListener;\r
+import com.actionbarsherlock.app.SherlockFragmentActivity;\r
+import com.actionbarsherlock.view.Menu;\r
+import com.actionbarsherlock.view.MenuInflater;\r
+import com.actionbarsherlock.view.MenuItem;\r
+\r
 import eu.alefzero.owncloud.R;\r
 import eu.alefzero.owncloud.authenticator.AccountAuthenticator;\r
 import eu.alefzero.owncloud.authenticator.AuthUtils;\r
@@ -45,177 +51,218 @@ import eu.alefzero.webdav.WebdavClient;
 \r
 /**\r
  * Displays, what files the user has available in his ownCloud.\r
+ * \r
  * @author Bartek Przybylski\r
- *\r
+ * \r
  */\r
 \r
-public class FileDisplayActivity extends android.support.v4.app.FragmentActivity implements OnNavigationListener {\r
-  private ArrayAdapter<String> mDirectories;\r
\r
-  private static final int DIALOG_CHOOSE_ACCOUNT = 0;\r
-  \r
-  public void pushPath(String path) {\r
-    mDirectories.insert(path, 0);\r
-  }\r
-  \r
-  public boolean popPath() {\r
-    mDirectories.remove(mDirectories.getItem(0));\r
-    return !mDirectories.isEmpty();\r
-  }\r
-  \r
-  @Override\r
-  protected Dialog onCreateDialog(int id, Bundle args) {\r
-    final AlertDialog.Builder builder = new Builder(this);\r
-    final EditText dirName = new EditText(getBaseContext());\r
-    final Account a = AuthUtils.getCurrentOwnCloudAccount(this);\r
-    builder.setView(dirName);\r
-    builder.setTitle(R.string.uploader_info_dirname);\r
-    \r
-    builder.setPositiveButton(R.string.common_ok, new OnClickListener() {\r
-      public void onClick(DialogInterface dialog, int which) {\r
-        String s = dirName.getText().toString();\r
-        if (s.trim().isEmpty()) {\r
-          dialog.cancel();\r
-          return;\r
-        }\r
-        \r
-        String path = "";\r
-        for (int i = mDirectories.getCount()-2; i >= 0; --i) {\r
-          path += "/" + mDirectories.getItem(i);\r
+public class FileDisplayActivity extends SherlockFragmentActivity implements\r
+               OnNavigationListener {\r
+       private ArrayAdapter<String> mDirectories;\r
+\r
+       private static final int DIALOG_CHOOSE_ACCOUNT = 0;\r
+\r
+       public void pushPath(String path) {\r
+               mDirectories.insert(path, 0);\r
+       }\r
+\r
+       public boolean popPath() {\r
+               mDirectories.remove(mDirectories.getItem(0));\r
+               return !mDirectories.isEmpty();\r
+       }\r
+\r
+       @Override\r
+       protected Dialog onCreateDialog(int id, Bundle args) {\r
+               final AlertDialog.Builder builder = new Builder(this);\r
+               final EditText dirName = new EditText(getBaseContext());\r
+               final Account a = AuthUtils.getCurrentOwnCloudAccount(this);\r
+               builder.setView(dirName);\r
+               builder.setTitle(R.string.uploader_info_dirname);\r
+\r
+               builder.setPositiveButton(R.string.common_ok, new OnClickListener() {\r
+                       public void onClick(DialogInterface dialog, int which) {\r
+                               String s = dirName.getText().toString();\r
+                               if (s.trim().isEmpty()) {\r
+                                       dialog.cancel();\r
+                                       return;\r
+                               }\r
+\r
+                               String path = "";\r
+                               for (int i = mDirectories.getCount() - 2; i >= 0; --i) {\r
+                                       path += "/" + mDirectories.getItem(i);\r
+                               }\r
+                               OCFile parent = new OCFile(getContentResolver(), a, path + "/");\r
+                               path += "/" + s + "/";\r
+                               Thread thread = new Thread(new DirectoryCreator(path, a));\r
+                               thread.start();\r
+                               OCFile.createNewFile(getContentResolver(), a, path, 0, 0, 0,\r
+                                               "DIR", parent.getFileId()).save();\r
+\r
+                               dialog.dismiss();\r
+                       }\r
+               });\r
+               builder.setNegativeButton(R.string.common_cancel,\r
+                               new OnClickListener() {\r
+                                       public void onClick(DialogInterface dialog, int which) {\r
+                                               dialog.cancel();\r
+                                       }\r
+                               });\r
+               return builder.create();\r
+       }\r
+\r
+       @Override\r
+       public void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+               mDirectories = new CustomArrayAdapter<String>(this,\r
+                               R.layout.sherlock_spinner_dropdown_item);\r
+               mDirectories.add("/");\r
+               setContentView(R.layout.files);\r
+               ActionBar action_bar = getSupportActionBar();\r
+               action_bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);\r
+               action_bar.setDisplayShowTitleEnabled(false);\r
+               action_bar.setListNavigationCallbacks(mDirectories, this);\r
+               action_bar.setDisplayHomeAsUpEnabled(true);\r
+       }\r
+\r
+       @Override\r
+       public boolean onOptionsItemSelected(MenuItem item) {\r
+               switch (item.getItemId()) {\r
+               case R.id.settingsItem: {\r
+                       Intent i = new Intent(this, Preferences.class);\r
+                       startActivity(i);\r
+                       break;\r
+               }\r
+               case R.id.createDirectoryItem: {\r
+                       showDialog(0);\r
+                       break;\r
+               }\r
+               }\r
+               return true;\r
+       }\r
+\r
+       @Override\r
+       protected Dialog onCreateDialog(int id) {\r
+               switch (id) {\r
+               case DIALOG_CHOOSE_ACCOUNT:\r
+                       return createChooseAccountDialog();\r
+               default:\r
+                       throw new IllegalArgumentException("Unknown dialog id: " + id);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public boolean onCreateOptionsMenu(Menu menu) {\r
+               MenuInflater inflater = getSherlock().getMenuInflater();\r
+               inflater.inflate(R.menu.menu, menu);\r
+               return true;\r
+       }\r
+\r
+       private Dialog createChooseAccountDialog() {\r
+               final AccountManager accMan = AccountManager.get(this);\r
+               CharSequence[] items = new CharSequence[accMan\r
+                               .getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE).length];\r
+               int i = 0;\r
+               for (Account a : accMan\r
+                               .getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)) {\r
+                       items[i++] = a.name;\r
+               }\r
+\r
+               AlertDialog.Builder builder = new AlertDialog.Builder(this);\r
+               builder.setTitle(R.string.common_choose_account);\r
+               builder.setCancelable(true);\r
+               builder.setItems(items, new DialogInterface.OnClickListener() {\r
+                       public void onClick(DialogInterface dialog, int item) {\r
+                               // mAccount =\r
+                               // accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[item];\r
+                               dialog.dismiss();\r
+                       }\r
+               });\r
+               builder.setOnCancelListener(new OnCancelListener() {\r
+                       public void onCancel(DialogInterface dialog) {\r
+                               FileDisplayActivity.this.finish();\r
+                       }\r
+               });\r
+               AlertDialog alert = builder.create();\r
+               return alert;\r
+       }\r
+\r
+       @Override\r
+       public boolean onNavigationItemSelected(int itemPosition, long itemId) {\r
+               int i = itemPosition;\r
+               while (i-- != 0) {\r
+                       onBackPressed();\r
+               }\r
+               return true;\r
+       }\r
+\r
+       @Override\r
+       public void onBackPressed() {\r
+               popPath();\r
+               if (mDirectories.getCount() == 0) {\r
+                       super.onBackPressed();\r
+                       return;\r
+               }\r
+               ((FileList) getSupportFragmentManager().findFragmentById(R.id.fileList))\r
+                               .onBackPressed();\r
+       }\r
+\r
+       private class DirectoryCreator implements Runnable {\r
+               private String mTargetPath;\r
+               private Account mAccount;\r
+               private AccountManager mAm;\r
+\r
+               public DirectoryCreator(String targetPath, Account account) {\r
+                       mTargetPath = targetPath;\r
+                       mAccount = account;\r
+                       mAm = (AccountManager) getSystemService(ACCOUNT_SERVICE);\r
+               }\r
+\r
+               @Override\r
+               public void run() {\r
+                       WebdavClient wdc = new WebdavClient(Uri.parse(mAm.getUserData(\r
+                                       mAccount, AccountAuthenticator.KEY_OC_URL)));\r
+\r
+                       String username = mAccount.name.substring(0,\r
+                                       mAccount.name.lastIndexOf('@'));\r
+                       String password = mAm.getPassword(mAccount);\r
+\r
+                       wdc.setCredentials(username, password);\r
+                       wdc.allowUnsignedCertificates();\r
+                       wdc.createDirectory(mTargetPath);\r
+               }\r
+\r
+       }\r
+\r
+       // Custom array adapter to override text colors\r
+       private class CustomArrayAdapter<T> extends ArrayAdapter<T> {\r
+               \r
+               public CustomArrayAdapter(FileDisplayActivity ctx,\r
+                               int view) {\r
+                       super(ctx, view);\r
+               }\r
+\r
+               public View getView(int position, View convertView,\r
+                ViewGroup parent) {\r
+            View v = super.getView(position, convertView, parent);\r
+\r
+            ((TextView) v).setTextColor(\r
+                    getResources()\r
+                    .getColorStateList(android.R.color.white));\r
+            return v;\r
         }\r
-        OCFile parent = new OCFile(getContentResolver(), a, path+"/");\r
-        path += "/" + s + "/";\r
-        Thread thread = new Thread(new DirectoryCreator(path, a));\r
-        thread.start();\r
-        OCFile.createNewFile(getContentResolver(), a, path, 0, 0, 0, "DIR", parent.getFileId()).save();\r
-        \r
-        dialog.dismiss();\r
-      }\r
-    });\r
-    builder.setNegativeButton(R.string.common_cancel, new OnClickListener() {\r
-      public void onClick(DialogInterface dialog, int which) {\r
-        dialog.cancel();\r
-      }\r
-    });\r
-    return builder.create();\r
-  }\r
-  \r
-  @Override\r
-  public void onCreate(Bundle savedInstanceState) {\r
-    super.onCreate(savedInstanceState);\r
-    mDirectories = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item);\r
-    mDirectories.add("/");\r
-    setContentView(R.layout.files);\r
-    ActionBar action_bar = getSupportActionBar();\r
-    action_bar.setNavigationMode(android.support.v4.app.ActionBar.NAVIGATION_MODE_LIST);\r
-    action_bar.setDisplayShowTitleEnabled(false);\r
-    action_bar.setListNavigationCallbacks(mDirectories, this);\r
-  }\r
-\r
-  @Override\r
-  public boolean onOptionsItemSelected(MenuItem item) {\r
-    switch (item.getItemId()) {\r
-      case R.id.settingsItem :\r
-      {\r
-        Intent i = new Intent(this, Preferences.class);\r
-        startActivity(i);\r
-        break;\r
-      }\r
-      case R.id.createDirectoryItem:\r
-      {\r
-        showDialog(0);\r
-        break;\r
-      }\r
-    }\r
-    return true;\r
-  }\r
-\r
-  @Override\r
-  protected Dialog onCreateDialog(int id) {\r
-    switch (id) {\r
-      case DIALOG_CHOOSE_ACCOUNT:\r
-        return createChooseAccountDialog();\r
-      default:\r
-        throw new IllegalArgumentException("Unknown dialog id: " + id);\r
-    }\r
-  }\r
-  \r
-  @Override\r
-  public boolean onCreateOptionsMenu(Menu menu) {\r
-    MenuInflater inflater = getMenuInflater();\r
-    inflater.inflate(R.menu.menu, menu);\r
-    return true;\r
-  }\r
-\r
-  private Dialog createChooseAccountDialog() {\r
-    final AccountManager accMan = AccountManager.get(this);\r
-    CharSequence[] items = new CharSequence[accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE).length];\r
-    int i = 0;\r
-    for (Account a : accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)) {\r
-      items[i++] = a.name;\r
-    }\r
-    \r
-    AlertDialog.Builder builder = new AlertDialog.Builder(this);\r
-    builder.setTitle(R.string.common_choose_account);\r
-    builder.setCancelable(true);\r
-    builder.setItems(items, new DialogInterface.OnClickListener() {\r
-        public void onClick(DialogInterface dialog, int item) {\r
-            //mAccount = accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[item];\r
-            dialog.dismiss();\r
+               \r
+               public View getDropDownView(int position, View convertView,\r
+                ViewGroup parent) {\r
+            View v = super.getDropDownView(position, convertView,\r
+                    parent);\r
+\r
+            ((TextView) v).setTextColor(getResources().getColorStateList(\r
+                            android.R.color.white));\r
+\r
+            return v;\r
         }\r
-    });\r
-    builder.setOnCancelListener(new OnCancelListener() {\r
-      public void onCancel(DialogInterface dialog) {\r
-        FileDisplayActivity.this.finish();\r
-      }\r
-    });\r
-    AlertDialog alert = builder.create();\r
-    return alert;\r
-  }\r
-\r
-  @Override\r
-  public boolean onNavigationItemSelected(int itemPosition, long itemId) {\r
-    int i = itemPosition;\r
-    while (i-- != 0) {\r
-      onBackPressed();\r
-    }\r
-    return true;\r
-  }\r
-  \r
-  @Override\r
-  public void onBackPressed() {\r
-    popPath();\r
-    if (mDirectories.getCount() == 0)\r
-    {\r
-      super.onBackPressed();\r
-      return;\r
-    }\r
-    ((FileList)getSupportFragmentManager().findFragmentById(R.id.fileList)).onBackPressed();\r
-  }\r
-  \r
-  private class DirectoryCreator implements Runnable {\r
-    private String mTargetPath;\r
-    private Account mAccount;\r
-    private AccountManager mAm;\r
-    \r
-    public DirectoryCreator(String targetPath, Account account) {\r
-      mTargetPath = targetPath;\r
-      mAccount = account;\r
-      mAm = (AccountManager) getSystemService(ACCOUNT_SERVICE);\r
-    }\r
-    \r
-    @Override\r
-    public void run() {\r
-      WebdavClient wdc = new WebdavClient(Uri.parse(mAm.getUserData(mAccount,\r
-          AccountAuthenticator.KEY_OC_URL)));\r
-      \r
-      String username = mAccount.name.substring(0, mAccount.name.lastIndexOf('@'));\r
-      String password = mAm.getPassword(mAccount);\r
-      \r
-      wdc.setCredentials(username, password);\r
-      wdc.allowUnsignedCertificates();\r
-      wdc.createDirectory(mTargetPath);\r
-    }\r
-    \r
-  }\r
+\r
+\r
+               \r
+       }\r
 }
\ No newline at end of file
index bb60093..341d1d4 100644 (file)
@@ -82,7 +82,7 @@ public class FileList extends FragmentListView {
     i.putExtra("FULL_PATH", file.getPath());\r
     i.putExtra("FILE_ID", id_);\r
     i.putExtra("ACCOUNT", mAccount);\r
-    FileDetail fd = (FileDetail) getSupportFragmentManager().findFragmentById(R.id.fileDetail);\r
+    FileDetail fd = (FileDetail) getFragmentManager().findFragmentById(R.id.fileDetail);\r
     if (fd != null) {\r
       fd.setStuff(i);\r
     } else {\r