Added accesibility descriptions as a mean to add automatic tests un UI.
android:layout_weight="1"\r
android:layout_gravity="center"\r
android:background="@color/login_logo_background_color"\r
- android:src="@drawable/logo" \r
+ android:src="@drawable/logo"\r
+ android:contentDescription="@string/app_name"\r
/>\r
\r
<ScrollView\r
android:layout_marginBottom="10dp"\r
android:onClick="onRefreshClick"\r
android:text="@string/auth_check_server"\r
- android:visibility="gone" />\r
+ android:visibility="gone"\r
+ android:contentDescription="@string/auth_check_server"/>\r
<TextView\r
android:id="@+id/instructions_message"\r
android:layout_width="wrap_content"\r
android:layout_gravity="fill_horizontal"\r
android:text="@string/auth_expired_basic_auth_toast" \r
android:visibility="gone"\r
- android:layout_marginBottom="10dp"/>\r
+ android:layout_marginBottom="10dp"\r
+ android:contentDescription="@string/auth_expired_basic_auth_toast"/>\r
<FrameLayout \r
android:id="@+id/hostUrlFrame"\r
android:layout_width="match_parent"\r
android:inputType="textUri"\r
android:drawablePadding="5dp"\r
android:paddingRight="55dp"\r
+ android:contentDescription="@string/auth_host_address"\r
>\r
<requestFocus />\r
</EditText>\r
android:onClick="onRefreshClick"\r
android:visibility="gone"\r
android:background="@android:color/transparent"\r
+ android:contentDescription="@string/auth_refresh_button"\r
/>\r
</FrameLayout>\r
\r
android:drawableLeft="@android:drawable/stat_notify_sync"\r
android:drawablePadding="5dp"\r
android:gravity="center_vertical"\r
- android:text="@string/auth_testing_connection" />\r
+ android:text="@string/auth_testing_connection"\r
+ android:contentDescription="@string/auth_testing_connection"/>\r
\r
<CheckBox\r
android:id="@+id/oauth_onOff_check"\r
android:onClick="onCheckClick"\r
android:text="@string/oauth_check_onoff"\r
android:textAppearance="?android:attr/textAppearanceSmall"\r
+ android:contentDescription="@string/oauth_check_onoff"\r
/>\r
\r
<EditText\r
android:text="@string/oauth2_url_endpoint_auth"\r
android:singleLine="true"\r
android:inputType="textUri"\r
- android:visibility="gone" >\r
+ android:visibility="gone">\r
</EditText> \r
\r
<EditText\r
android:text="@string/oauth2_url_endpoint_access"\r
android:singleLine="true"\r
android:inputType="textUri"\r
- android:visibility="gone" >\r
+ android:visibility="gone">\r
<requestFocus />\r
</EditText> \r
\r
android:layout_height="wrap_content"\r
android:ems="10"\r
android:hint="@string/auth_username"\r
- android:inputType="textNoSuggestions" />\r
+ android:inputType="textNoSuggestions"\r
+ android:contentDescription="@string/auth_username"/>\r
\r
<EditText\r
android:id="@+id/account_password"\r
android:hint="@string/auth_password"\r
android:inputType="textPassword"\r
android:drawablePadding="5dp"\r
+ android:contentDescription="@string/auth_password"\r
/>\r
\r
<TextView\r
android:text="@string/auth_unauthorized"\r
android:drawableLeft="@android:drawable/stat_notify_sync"\r
android:drawablePadding="5dip"\r
+ android:contentDescription="@string/auth_unauthorized"\r
/>\r
\r
</LinearLayout>\r
android:layout_gravity="center_horizontal"\r
android:enabled="false"\r
android:onClick="onOkClick"\r
- android:text="@string/setup_btn_connect" />\r
+ android:text="@string/setup_btn_connect"\r
+ android:contentDescription="@string/setup_btn_connect"/>\r
\r
<Button\r
android:id="@+id/welcome_link"\r
android:paddingBottom="5dp"\r
android:paddingTop="5dp"\r
android:text="@string/auth_register"\r
- android:textColor="#0000FF"/>\r
+ android:textColor="#0000FF"\r
+ android:contentDescription="@string/auth_register"/>\r
</LinearLayout>\r
\r
</RelativeLayout>\r
android:layout_marginBottom="10dp"\r
android:layout_marginTop="10dp"\r
android:background="@color/login_logo_background_color"\r
- android:src="@drawable/logo" />\r
+ android:src="@drawable/logo"\r
+ android:contentDescription="@string/app_name"/>\r
\r
<Button\r
android:id="@+id/centeredRefreshButton"\r
android:layout_marginBottom="10dp"\r
android:onClick="onRefreshClick"\r
android:text="@string/auth_check_server"\r
- android:visibility="gone" />\r
+ android:visibility="gone"\r
+ android:contentDescription="@string/auth_check_server"/>\r
\r
<TextView\r
android:id="@+id/instructions_message"\r
android:layout_gravity="fill_horizontal"\r
android:text="@string/auth_expired_basic_auth_toast"\r
android:visibility="gone"\r
- android:layout_marginBottom="10dp" />\r
+ android:layout_marginBottom="10dp"\r
+ android:contentDescription="@string/auth_expired_basic_auth_toast"/>\r
\r
<FrameLayout \r
android:id="@+id/hostUrlFrame"\r
android:inputType="textUri"\r
android:drawablePadding="5dp"\r
android:paddingRight="55dp"\r
+ android:contentDescription="@string/auth_host_address"\r
>\r
<requestFocus />\r
</EditText>\r
android:onClick="onRefreshClick"\r
android:visibility="gone"\r
android:background="@android:color/transparent"\r
+ android:contentDescription="@string/auth_refresh_button"\r
/>\r
</FrameLayout>\r
\r
android:drawableLeft="@android:drawable/stat_notify_sync"\r
android:drawablePadding="5dp"\r
android:gravity="center_vertical"\r
- android:text="@string/auth_testing_connection" />\r
+ android:text="@string/auth_testing_connection"\r
+ android:contentDescription="@string/auth_testing_connection"/>\r
\r
<CheckBox\r
android:id="@+id/oauth_onOff_check"\r
android:onClick="onCheckClick"\r
android:text="@string/oauth_check_onoff"\r
android:textAppearance="?android:attr/textAppearanceSmall"\r
+ android:contentDescription="@string/oauth_check_onoff"\r
/>\r
\r
<EditText\r
android:text="@string/oauth2_url_endpoint_auth"\r
android:singleLine="true"\r
android:inputType="textUri"\r
- android:visibility="gone" >\r
+ android:visibility="gone">\r
</EditText>\r
\r
<EditText\r
android:text="@string/oauth2_url_endpoint_access"\r
android:singleLine="true"\r
android:inputType="textUri"\r
- android:visibility="gone" />\r
+ android:visibility="gone"/>\r
\r
<EditText\r
android:id="@+id/account_username"\r
android:layout_height="wrap_content"\r
android:ems="10"\r
android:hint="@string/auth_username"\r
- android:inputType="textNoSuggestions" \r
+ android:inputType="textNoSuggestions"\r
+ android:contentDescription="@string/auth_username"\r
/>\r
\r
<EditText\r
android:drawablePadding="5dp"\r
android:ems="10"\r
android:hint="@string/auth_password"\r
- android:inputType="textPassword" \r
+ android:inputType="textPassword"\r
+ android:contentDescription="@string/auth_password"\r
/>\r
\r
<TextView\r
android:drawableLeft="@android:drawable/stat_notify_sync"\r
android:drawablePadding="5dp"\r
android:gravity="center_vertical"\r
- android:text="@string/auth_unauthorized" />\r
+ android:text="@string/auth_unauthorized"\r
+ android:contentDescription="@string/auth_unauthorized"/>\r
\r
<Button\r
android:id="@+id/buttonOK"\r
android:layout_gravity="center_horizontal"\r
android:enabled="false"\r
android:onClick="onOkClick"\r
- android:text="@string/setup_btn_connect" />\r
+ android:text="@string/setup_btn_connect"\r
+ android:contentDescription="@string/setup_btn_connect"/>\r
\r
<Button\r
android:id="@+id/welcome_link"\r
android:paddingBottom="5dp"\r
android:paddingTop="5dp"\r
android:text="@string/auth_register"\r
- android:textColor="#0000FF"/>\r
+ android:textColor="#0000FF"\r
+ android:contentDescription="@string/auth_register"/>\r
\r
</LinearLayout>\r
\r
android:icon="@drawable/ic_action_upload"
android:orderInCategory="2"
android:showAsAction="always"
- android:title="@string/actionbar_upload"/>
+ android:title="@string/actionbar_upload"
+ android:contentDescription="@string/actionbar_upload"/>
<item
android:id="@+id/action_create_dir"
android:icon="@drawable/ic_action_create_dir"
android:orderInCategory="2"
android:showAsAction="always"
- android:title="@string/actionbar_mkdir"/>
+ android:title="@string/actionbar_mkdir"
+ android:contentDescription="@string/actionbar_mkdir"/>
<item
android:id="@+id/action_sync_account"
android:icon="@drawable/ic_action_refresh"
android:orderInCategory="2"
android:showAsAction="never"
- android:title="@string/actionbar_sync"/>
+ android:title="@string/actionbar_sync"
+ android:contentDescription="@string/actionbar_sync"/>
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_action_settings"
android:orderInCategory="2"
android:showAsAction="never"
- android:title="@string/actionbar_settings"/>
+ android:title="@string/actionbar_settings"
+ android:contentDescription="@string/actionbar_settings"/>
<item
android:id="@+id/action_logger"
android:icon="@drawable/ic_action_settings"
android:orderInCategory="2"
android:showAsAction="never"
- android:title="@string/actionbar_logger"/>
+ android:title="@string/actionbar_logger"
+ android:contentDescription="@string/actionbar_logger"/>
<item
android:id="@+id/action_sort"
android:icon="@android:drawable/ic_menu_sort_alphabetically"
android:orderInCategory="2"
android:showAsAction="never"
- android:title="@string/actionbar_sort"/>
+ android:title="@string/actionbar_sort"
+ android:contentDescription="@string/actionbar_sort"/>
<!-- <item android:id="@+id/search" android:title="@string/actionbar_search" android:icon="@drawable/ic_action_search"></item> -->
<string name="auth_no_net_conn_title">No network connection</string>
<string name="auth_nossl_plain_ok_title">Secure connection unavailable.</string>
<string name="auth_connection_established">Connection established</string>
- <string name="auth_testing_connection">Testing connection…</string>
+ <string name="auth_testing_connection">Testing connection</string>
<string name="auth_not_configured_title">Malformed server configuration</string>
<string name="auth_account_not_new">An account for the same user and server already exists in the device</string>
<string name="auth_account_not_the_same">The entered user does not match the user of this account</string>
<string name="subject_token">%1$s shared \"%2$s\" with you</string>
+ <string name="auth_refresh_button">Refresh connection</string>
+ <string name="auth_host_address">Server address</string>
+
</resources>
* TODO
*/
private void updateNavigationElementsInActionBar(OCFile chosenFile) {
- ActionBar actionBar = getSupportActionBar();
+ ActionBar actionBar = getSupportActionBar();
+
+ // For adding content description tag to a title field in the action bar
+ int actionBarTitleId = getResources().getIdentifier("action_bar_title", "id", "android");
+
if (chosenFile == null || mDualPane) {
// only list of files - set for browsing through folders
OCFile currentDir = getCurrentDir();
actionBar.setDisplayShowTitleEnabled(!noRoot);
if (!noRoot) {
actionBar.setTitle(getString(R.string.default_display_name_for_root_folder));
+ getWindow().getDecorView().findViewById(actionBarTitleId).setContentDescription(getString(R.string.default_display_name_for_root_folder));
}
actionBar.setNavigationMode(!noRoot ? ActionBar.NAVIGATION_MODE_STANDARD : ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(mDirectories, this); // assuming mDirectories is updated
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle(chosenFile.getFileName());
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
+ getWindow().getDecorView().findViewById(actionBarTitleId).setContentDescription(chosenFile.getFileName());
}
}
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");
+ getWindow().getDecorView().findViewById(actionBarTitleId).setContentDescription(getString(R.string.actionbar_settings));
+
// Load the accounts category for adding the list of accounts
mAccountsPrefCategory = (PreferenceCategory) findPreference("accounts_category");
import android.widget.AbsListView;\r
import android.widget.BaseAdapter;\r
import android.widget.ImageView;\r
+import android.widget.LinearLayout;\r
import android.widget.ListAdapter;\r
import android.widget.TextView;\r
\r
// Read sorting order, default to sort by name ascending\r
FileStorageUtils.mSortOrder = mAppPreferences.getInt("sortOrder", 0);\r
FileStorageUtils.mSortAscending = mAppPreferences.getBoolean("sortAscending", true);\r
-\r
\r
// initialise thumbnails cache on background thread\r
new ThumbnailsCacheManager.InitDiskCacheTask().execute();\r
if (file != null){\r
\r
ImageView fileIcon = (ImageView) view.findViewById(R.id.thumbnail);\r
+\r
fileIcon.setTag(file.getFileId());\r
TextView fileName;\r
- String name;\r
+ String name = file.getFileName();\r
+\r
+ LinearLayout linearLayout = (LinearLayout) view.findViewById(R.id.ListItemLayout);\r
+ linearLayout.setContentDescription("LinearLayout-" + name);\r
\r
switch (viewType){\r
case LIST_ITEM:\r
fileIcon.setImageResource(DisplayUtils.getFileTypeIconId(file.getMimetype(),\r
file.getFileName()));\r
}\r
+\r
} else {\r
// Folder\r
if (checkIfFileIsSharedWithMe(file)) {\r