mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-27 20:25:44 +00:00
Bug 329854 r=joe.hughes Add a excludeReadOnlyFolders to query options for
use when filing.
This commit is contained in:
parent
59a75b9f67
commit
42c99db36e
@ -831,6 +831,16 @@ interface nsINavHistoryQueryOptions : nsISupports
|
|||||||
*/
|
*/
|
||||||
attribute boolean excludeQueries;
|
attribute boolean excludeQueries;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set to true to exclude read-only folders from the query results. This is
|
||||||
|
* designed for cases where you want to give the user the option of filing
|
||||||
|
* something into a list of folders. It only affects cases where the actual
|
||||||
|
* folder result node would appear in its parent folder and filters it out.
|
||||||
|
* It doesn't affect the query at all, and doesn't affect more complex
|
||||||
|
* queries (such as "folders with annotation X").
|
||||||
|
*/
|
||||||
|
attribute boolean excludeReadOnlyFolders;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When set, allows items with "place:" URIs to appear as containers,
|
* When set, allows items with "place:" URIs to appear as containers,
|
||||||
* with the container's contents filled in from the stored query.
|
* with the container's contents filled in from the stored query.
|
||||||
|
@ -1644,6 +1644,15 @@ nsNavBookmarks::QueryFolderChildren(PRInt64 aFolderId,
|
|||||||
nsCOMPtr<nsNavHistoryResultNode> node;
|
nsCOMPtr<nsNavHistoryResultNode> node;
|
||||||
if (isFolder) {
|
if (isFolder) {
|
||||||
PRInt64 folder = mDBGetChildren->AsInt64(kGetChildrenIndex_FolderChild);
|
PRInt64 folder = mDBGetChildren->AsInt64(kGetChildrenIndex_FolderChild);
|
||||||
|
|
||||||
|
if (options->ExcludeReadOnlyFolders()) {
|
||||||
|
// see if it's read only and skip it
|
||||||
|
PRBool readOnly = PR_FALSE;
|
||||||
|
GetFolderReadonly(folder, &readOnly);
|
||||||
|
if (readOnly)
|
||||||
|
continue; // skip
|
||||||
|
}
|
||||||
|
|
||||||
rv = ResultNodeForFolder(folder, aOptions, getter_AddRefs(node));
|
rv = ResultNodeForFolder(folder, aOptions, getter_AddRefs(node));
|
||||||
if (NS_FAILED(rv))
|
if (NS_FAILED(rv))
|
||||||
continue;
|
continue;
|
||||||
|
@ -152,6 +152,7 @@ static void SetOptionsKeyUint32(const nsCString& aValue,
|
|||||||
#define QUERYKEY_RESULT_TYPE "type"
|
#define QUERYKEY_RESULT_TYPE "type"
|
||||||
#define QUERYKEY_EXCLUDE_ITEMS "excludeItems"
|
#define QUERYKEY_EXCLUDE_ITEMS "excludeItems"
|
||||||
#define QUERYKEY_EXCLUDE_QUERIES "excludeQueries"
|
#define QUERYKEY_EXCLUDE_QUERIES "excludeQueries"
|
||||||
|
#define QUERYKEY_EXCLUDE_READ_ONLY_FOLDERS "excludeReadOnlyFolders"
|
||||||
#define QUERYKEY_EXPAND_QUERIES "expandQueries"
|
#define QUERYKEY_EXPAND_QUERIES "expandQueries"
|
||||||
#define QUERYKEY_FORCE_ORIGINAL_TITLE "originalTitle"
|
#define QUERYKEY_FORCE_ORIGINAL_TITLE "originalTitle"
|
||||||
#define QUERYKEY_INCLUDE_HIDDEN "includeHidden"
|
#define QUERYKEY_INCLUDE_HIDDEN "includeHidden"
|
||||||
@ -416,6 +417,12 @@ nsNavHistory::QueriesToQueryString(nsINavHistoryQuery **aQueries,
|
|||||||
aQueryString += NS_LITERAL_CSTRING(QUERYKEY_EXCLUDE_QUERIES "=1");
|
aQueryString += NS_LITERAL_CSTRING(QUERYKEY_EXCLUDE_QUERIES "=1");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// exclude read only folders
|
||||||
|
if (options->ExcludeReadOnlyFolders()) {
|
||||||
|
AppendAmpersandIfNonempty(aQueryString);
|
||||||
|
aQueryString += NS_LITERAL_CSTRING(QUERYKEY_EXCLUDE_READ_ONLY_FOLDERS "=1");
|
||||||
|
}
|
||||||
|
|
||||||
// expand queries
|
// expand queries
|
||||||
if (options->ExpandQueries()) {
|
if (options->ExpandQueries()) {
|
||||||
AppendAmpersandIfNonempty(aQueryString);
|
AppendAmpersandIfNonempty(aQueryString);
|
||||||
@ -627,6 +634,11 @@ nsNavHistory::TokensToQueries(const nsTArray<QueryKeyValuePair>& aTokens,
|
|||||||
SetOptionsKeyBool(kvp.value, aOptions,
|
SetOptionsKeyBool(kvp.value, aOptions,
|
||||||
&nsINavHistoryQueryOptions::SetExcludeQueries);
|
&nsINavHistoryQueryOptions::SetExcludeQueries);
|
||||||
|
|
||||||
|
// exclude read only folders
|
||||||
|
} else if (kvp.key.EqualsLiteral(QUERYKEY_EXCLUDE_READ_ONLY_FOLDERS)) {
|
||||||
|
SetOptionsKeyBool(kvp.value, aOptions,
|
||||||
|
&nsINavHistoryQueryOptions::SetExcludeReadOnlyFolders);
|
||||||
|
|
||||||
// expand queries
|
// expand queries
|
||||||
} else if (kvp.key.EqualsLiteral(QUERYKEY_EXPAND_QUERIES)) {
|
} else if (kvp.key.EqualsLiteral(QUERYKEY_EXPAND_QUERIES)) {
|
||||||
SetOptionsKeyBool(kvp.value, aOptions,
|
SetOptionsKeyBool(kvp.value, aOptions,
|
||||||
@ -1058,6 +1070,20 @@ nsNavHistoryQueryOptions::SetExcludeQueries(PRBool aExclude)
|
|||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// excludeReadOnlyFolders
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsNavHistoryQueryOptions::GetExcludeReadOnlyFolders(PRBool* aExclude)
|
||||||
|
{
|
||||||
|
*aExclude = mExcludeReadOnlyFolders;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsNavHistoryQueryOptions::SetExcludeReadOnlyFolders(PRBool aExclude)
|
||||||
|
{
|
||||||
|
mExcludeReadOnlyFolders = aExclude;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
// expandQueries
|
// expandQueries
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsNavHistoryQueryOptions::GetExpandQueries(PRBool* aExpand)
|
nsNavHistoryQueryOptions::GetExpandQueries(PRBool* aExpand)
|
||||||
|
@ -117,6 +117,7 @@ public:
|
|||||||
mGroupCount(0), mGroupings(nsnull),
|
mGroupCount(0), mGroupings(nsnull),
|
||||||
mExcludeItems(PR_FALSE),
|
mExcludeItems(PR_FALSE),
|
||||||
mExcludeQueries(PR_FALSE),
|
mExcludeQueries(PR_FALSE),
|
||||||
|
mExcludeReadOnlyFolders(PR_FALSE),
|
||||||
mExpandQueries(PR_FALSE),
|
mExpandQueries(PR_FALSE),
|
||||||
mForceOriginalTitle(PR_FALSE),
|
mForceOriginalTitle(PR_FALSE),
|
||||||
mIncludeHidden(PR_FALSE),
|
mIncludeHidden(PR_FALSE),
|
||||||
@ -139,6 +140,7 @@ public:
|
|||||||
}
|
}
|
||||||
PRBool ExcludeItems() const { return mExcludeItems; }
|
PRBool ExcludeItems() const { return mExcludeItems; }
|
||||||
PRBool ExcludeQueries() const { return mExcludeQueries; }
|
PRBool ExcludeQueries() const { return mExcludeQueries; }
|
||||||
|
PRBool ExcludeReadOnlyFolders() const { return mExcludeReadOnlyFolders; }
|
||||||
PRBool ExpandQueries() const { return mExpandQueries; }
|
PRBool ExpandQueries() const { return mExpandQueries; }
|
||||||
PRBool ForceOriginalTitle() const { return mForceOriginalTitle; }
|
PRBool ForceOriginalTitle() const { return mForceOriginalTitle; }
|
||||||
PRBool IncludeHidden() const { return mIncludeHidden; }
|
PRBool IncludeHidden() const { return mIncludeHidden; }
|
||||||
@ -163,6 +165,7 @@ private:
|
|||||||
PRUint32 *mGroupings;
|
PRUint32 *mGroupings;
|
||||||
PRBool mExcludeItems;
|
PRBool mExcludeItems;
|
||||||
PRBool mExcludeQueries;
|
PRBool mExcludeQueries;
|
||||||
|
PRBool mExcludeReadOnlyFolders;
|
||||||
PRBool mExpandQueries;
|
PRBool mExpandQueries;
|
||||||
PRBool mForceOriginalTitle;
|
PRBool mForceOriginalTitle;
|
||||||
PRBool mIncludeHidden;
|
PRBool mIncludeHidden;
|
||||||
|
@ -2637,7 +2637,8 @@ nsNavHistoryFolderResultNode::StartIncrementalUpdate()
|
|||||||
{
|
{
|
||||||
// if any items are excluded, we can not do incremental updates since the
|
// if any items are excluded, we can not do incremental updates since the
|
||||||
// indices from the bookmark service will not be valid
|
// indices from the bookmark service will not be valid
|
||||||
if (! mOptions->ExcludeItems() && ! mOptions->ExcludeQueries()) {
|
if (! mOptions->ExcludeItems() && ! mOptions->ExcludeQueries() &&
|
||||||
|
! mOptions->ExcludeReadOnlyFolders()) {
|
||||||
|
|
||||||
// easy case: we are visible, always do incremental update
|
// easy case: we are visible, always do incremental update
|
||||||
if (mExpanded || AreChildrenVisible())
|
if (mExpanded || AreChildrenVisible())
|
||||||
|
Loading…
Reference in New Issue
Block a user