зеркало из https://github.com/mozilla/pjs.git
Bug 365866. Expose appropriate tree table state, name and actions for cells that are checkboxes and cyclers. Patch by david.bolter@utoronto.ca. r=aaronlev, r=surkov, r=bienvenu, sr=mscott
This commit is contained in:
Родитель
c2c355cdc9
Коммит
3aa794ee3c
|
@ -547,7 +547,14 @@ NS_IMETHODIMP nsXULTreeitemAccessible::Shutdown()
|
||||||
NS_IMETHODIMP nsXULTreeitemAccessible::GetName(nsAString& aName)
|
NS_IMETHODIMP nsXULTreeitemAccessible::GetName(nsAString& aName)
|
||||||
{
|
{
|
||||||
NS_ENSURE_TRUE(mTree && mTreeView, NS_ERROR_FAILURE);
|
NS_ENSURE_TRUE(mTree && mTreeView, NS_ERROR_FAILURE);
|
||||||
return mTreeView->GetCellText(mRow, mColumn, aName);
|
mTreeView->GetCellText(mRow, mColumn, aName);
|
||||||
|
|
||||||
|
// if still no name try cell value
|
||||||
|
if (aName.IsEmpty()) {
|
||||||
|
mTreeView->GetCellValue(mRow, mColumn, aName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP nsXULTreeitemAccessible::GetUniqueID(void **aUniqueID)
|
NS_IMETHODIMP nsXULTreeitemAccessible::GetUniqueID(void **aUniqueID)
|
||||||
|
@ -614,7 +621,7 @@ NS_IMETHODIMP nsXULTreeitemAccessible::GetState(PRUint32 *_retval)
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
// "activate" action is available for all treeitems
|
// "activate" (xor "cycle") action is available for all treeitems
|
||||||
// "expand/collapse" action is avaible for treeitem which is container
|
// "expand/collapse" action is avaible for treeitem which is container
|
||||||
NS_IMETHODIMP nsXULTreeitemAccessible::GetNumActions(PRUint8 *_retval)
|
NS_IMETHODIMP nsXULTreeitemAccessible::GetNumActions(PRUint8 *_retval)
|
||||||
{
|
{
|
||||||
|
@ -632,10 +639,17 @@ NS_IMETHODIMP nsXULTreeitemAccessible::GetNumActions(PRUint8 *_retval)
|
||||||
// Return the name of our actions
|
// Return the name of our actions
|
||||||
NS_IMETHODIMP nsXULTreeitemAccessible::GetActionName(PRUint8 index, nsAString& _retval)
|
NS_IMETHODIMP nsXULTreeitemAccessible::GetActionName(PRUint8 index, nsAString& _retval)
|
||||||
{
|
{
|
||||||
NS_ENSURE_TRUE(mTree && mTreeView, NS_ERROR_FAILURE);
|
NS_ENSURE_TRUE(mColumn && mTree && mTreeView, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
if (index == eAction_Click) {
|
if (index == eAction_Click) {
|
||||||
nsAccessible::GetTranslatedString(NS_LITERAL_STRING("activate"), _retval);
|
PRBool isCycler;
|
||||||
|
mColumn->GetCycler(&isCycler);
|
||||||
|
if (isCycler) {
|
||||||
|
nsAccessible::GetTranslatedString(NS_LITERAL_STRING("cycle"), _retval);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
nsAccessible::GetTranslatedString(NS_LITERAL_STRING("activate"), _retval);
|
||||||
|
}
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
else if (index == eAction_Expand) {
|
else if (index == eAction_Expand) {
|
||||||
|
@ -754,16 +768,24 @@ NS_IMETHODIMP nsXULTreeitemAccessible::GetPreviousSibling(nsIAccessible **aPrevi
|
||||||
|
|
||||||
NS_IMETHODIMP nsXULTreeitemAccessible::DoAction(PRUint8 index)
|
NS_IMETHODIMP nsXULTreeitemAccessible::DoAction(PRUint8 index)
|
||||||
{
|
{
|
||||||
NS_ENSURE_TRUE(mTree && mTreeView, NS_ERROR_FAILURE);
|
NS_ENSURE_TRUE(mColumn && mTree && mTreeView, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
if (index == eAction_Click) {
|
if (index == eAction_Click) {
|
||||||
nsCOMPtr<nsITreeSelection> selection;
|
nsresult rv = NS_OK;
|
||||||
mTreeView->GetSelection(getter_AddRefs(selection));
|
PRBool isCycler;
|
||||||
if (selection) {
|
mColumn->GetCycler(&isCycler);
|
||||||
nsresult rv = selection->Select(mRow);
|
if (isCycler) {
|
||||||
mTree->EnsureRowIsVisible(mRow);
|
rv = mTreeView->CycleCell(mRow, mColumn);
|
||||||
return rv;
|
}
|
||||||
|
else {
|
||||||
|
nsCOMPtr<nsITreeSelection> selection;
|
||||||
|
mTreeView->GetSelection(getter_AddRefs(selection));
|
||||||
|
if (selection) {
|
||||||
|
rv = selection->Select(mRow);
|
||||||
|
mTree->EnsureRowIsVisible(mRow);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return rv;
|
||||||
}
|
}
|
||||||
else if (index == eAction_Expand) {
|
else if (index == eAction_Expand) {
|
||||||
PRBool isContainer;
|
PRBool isContainer;
|
||||||
|
|
|
@ -10,3 +10,4 @@ click = Click
|
||||||
collapse= Collapse
|
collapse= Collapse
|
||||||
expand = Expand
|
expand = Expand
|
||||||
activate= Activate
|
activate= Activate
|
||||||
|
cycle = Cycle
|
||||||
|
|
|
@ -10,3 +10,4 @@ click = Click
|
||||||
collapse= Collapse
|
collapse= Collapse
|
||||||
expand = Expand
|
expand = Expand
|
||||||
activate= Activate
|
activate= Activate
|
||||||
|
cycle = Cycle
|
||||||
|
|
|
@ -10,3 +10,4 @@ click = Click
|
||||||
collapse= Collapse
|
collapse= Collapse
|
||||||
expand = Expand
|
expand = Expand
|
||||||
activate= Activate
|
activate= Activate
|
||||||
|
cycle = Cycle
|
||||||
|
|
|
@ -120,6 +120,15 @@ errorGettingDB=Unable to open the summary file for %S. Perhaps there was an erro
|
||||||
defaultServerTag=(Default)
|
defaultServerTag=(Default)
|
||||||
useDefaultServer=Use default server
|
useDefaultServer=Use default server
|
||||||
|
|
||||||
|
# Used in message database list view to provide a text value for graphic based cells.
|
||||||
|
messageRead=Read
|
||||||
|
messageUnread=Unread
|
||||||
|
messageHasFlag=Starred
|
||||||
|
messageHasNoFlag=Not Starred
|
||||||
|
messageHasAttachment=Has Attachment
|
||||||
|
messageHasNoAttachment=No Attachment
|
||||||
|
|
||||||
|
|
||||||
# Used in the SMTP Account Settings panel when a server value has no properties
|
# Used in the SMTP Account Settings panel when a server value has no properties
|
||||||
smtpServerList-NotSpecified=<not specified>
|
smtpServerList-NotSpecified=<not specified>
|
||||||
smtpServer-SecureConnection-Type-0=None
|
smtpServer-SecureConnection-Type-0=None
|
||||||
|
|
|
@ -1526,7 +1526,45 @@ nsMsgDBView::GetProgressMode(PRInt32 aRow, nsITreeColumn* aCol, PRInt32* _retval
|
||||||
|
|
||||||
NS_IMETHODIMP nsMsgDBView::GetCellValue(PRInt32 aRow, nsITreeColumn* aCol, nsAString& aValue)
|
NS_IMETHODIMP nsMsgDBView::GetCellValue(PRInt32 aRow, nsITreeColumn* aCol, nsAString& aValue)
|
||||||
{
|
{
|
||||||
return NS_OK;
|
nsCOMPtr <nsIMsgDBHdr> msgHdr;
|
||||||
|
nsresult rv = GetMsgHdrForViewIndex(aRow, getter_AddRefs(msgHdr));
|
||||||
|
|
||||||
|
if (NS_FAILED(rv) || !msgHdr)
|
||||||
|
{
|
||||||
|
ClearHdrCache();
|
||||||
|
return NS_MSG_INVALID_DBVIEW_INDEX;
|
||||||
|
}
|
||||||
|
|
||||||
|
const PRUnichar* colID;
|
||||||
|
aCol->GetIdConst(&colID);
|
||||||
|
|
||||||
|
PRUint32 flags;
|
||||||
|
msgHdr->GetFlags(&flags);
|
||||||
|
|
||||||
|
// provide a string "value" for cells that do not normally have text.
|
||||||
|
switch (colID[0])
|
||||||
|
{
|
||||||
|
case 'a': // attachment column
|
||||||
|
aValue.Assign(GetString ((flags & MSG_FLAG_ATTACHMENT) ?
|
||||||
|
NS_LITERAL_STRING("messageHasAttachment").get()
|
||||||
|
: NS_LITERAL_STRING("messageHasNoAttachment").get()));
|
||||||
|
break;
|
||||||
|
case 'f': // flagged (starred) column
|
||||||
|
aValue.Assign(GetString ((flags & MSG_FLAG_MARKED) ?
|
||||||
|
NS_LITERAL_STRING("messageHasFlag").get()
|
||||||
|
: NS_LITERAL_STRING("messageHasNoFlag").get()));
|
||||||
|
break;
|
||||||
|
case 'u': // read/unread column
|
||||||
|
aValue.Assign(GetString ((flags & MSG_FLAG_READ) ?
|
||||||
|
NS_LITERAL_STRING("messageRead").get()
|
||||||
|
: NS_LITERAL_STRING("messageUnread").get()));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
aValue.Assign(colID);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
//add a custom column handler
|
//add a custom column handler
|
||||||
|
|
Загрузка…
Ссылка в новой задаче