зеркало из https://github.com/mozilla/pjs.git
Bug 317829, r=beng. Support annotation-based queries.
Original committer: brettw%gmail.com Original revision: 1.17 Original date: 2006/01/25 01:36:46
This commit is contained in:
Родитель
69bd4882e5
Коммит
805f277101
|
@ -142,6 +142,8 @@ static void SetOptionsKeyUint32(const nsCString& aValue,
|
|||
#define QUERYKEY_DOMAIN_IS_HOST "domainIsHost"
|
||||
#define QUERYKEY_DOMAIN "domain"
|
||||
#define QUERYKEY_FOLDERS "folders"
|
||||
#define QUERYKEY_NOTANNOTATION "!annotation"
|
||||
#define QUERYKEY_ANNOTATION "annotation"
|
||||
#define QUERYKEY_URI "uri"
|
||||
#define QUERYKEY_URIISPREFIX "uriIsPrefix"
|
||||
#define QUERYKEY_SEPARATOR "OR"
|
||||
|
@ -326,6 +328,24 @@ nsNavHistory::QueriesToQueryString(nsINavHistoryQuery **aQueries,
|
|||
aQueryString.Append(escaped);
|
||||
}
|
||||
|
||||
// annotation
|
||||
query->GetHasAnnotation(&hasIt);
|
||||
if (hasIt) {
|
||||
AppendAmpersandIfNonempty(aQueryString);
|
||||
PRBool annotationIsNot;
|
||||
query->GetAnnotationIsNot(&annotationIsNot);
|
||||
if (annotationIsNot)
|
||||
aQueryString.AppendLiteral(QUERYKEY_NOTANNOTATION "=");
|
||||
else
|
||||
aQueryString.AppendLiteral(QUERYKEY_ANNOTATION "=");
|
||||
nsCAutoString annot;
|
||||
query->GetAnnotation(annot);
|
||||
nsCAutoString escaped;
|
||||
PRBool success = NS_Escape(annot, escaped, url_XAlphas);
|
||||
NS_ENSURE_TRUE(success, NS_ERROR_OUT_OF_MEMORY);
|
||||
aQueryString.Append(escaped);
|
||||
}
|
||||
|
||||
// folders
|
||||
PRInt64 *folders = nsnull;
|
||||
PRUint32 folderCount = 0;
|
||||
|
@ -526,6 +546,20 @@ nsNavHistory::TokensToQueries(const nsTArray<QueryKeyValuePair>& aTokens,
|
|||
} else if (kvp.key.EqualsLiteral(QUERYKEY_URIISPREFIX)) {
|
||||
SetQueryKeyBool(kvp.value, query, &nsINavHistoryQuery::SetUriIsPrefix);
|
||||
|
||||
// not annotation
|
||||
} else if (kvp.key.EqualsLiteral(QUERYKEY_NOTANNOTATION)) {
|
||||
nsCAutoString unescaped(kvp.value);
|
||||
NS_UnescapeURL(unescaped); // modifies input
|
||||
query->SetAnnotationIsNot(PR_TRUE);
|
||||
query->SetAnnotation(unescaped);
|
||||
|
||||
// annotation
|
||||
} else if (kvp.key.EqualsLiteral(QUERYKEY_ANNOTATION)) {
|
||||
nsCAutoString unescaped(kvp.value);
|
||||
NS_UnescapeURL(unescaped); // modifies input
|
||||
query->SetAnnotationIsNot(PR_FALSE);
|
||||
query->SetAnnotation(unescaped);
|
||||
|
||||
// new query component
|
||||
} else if (kvp.key.EqualsLiteral(QUERYKEY_SEPARATOR)) {
|
||||
|
||||
|
@ -636,7 +670,7 @@ nsNavHistoryQuery::nsNavHistoryQuery()
|
|||
: mBeginTime(0), mBeginTimeReference(TIME_RELATIVE_EPOCH),
|
||||
mEndTime(0), mEndTimeReference(TIME_RELATIVE_EPOCH),
|
||||
mOnlyBookmarked(PR_FALSE), mDomainIsHost(PR_FALSE),
|
||||
mUriIsPrefix(PR_FALSE)
|
||||
mUriIsPrefix(PR_FALSE), mAnnotationIsNot(PR_FALSE)
|
||||
{
|
||||
// differentiate not set (IsVoid) from empty string (local files)
|
||||
mDomain.SetIsVoid(PR_TRUE);
|
||||
|
@ -797,6 +831,35 @@ NS_IMETHODIMP nsNavHistoryQuery::GetHasUri(PRBool* aHasUri)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
/* attribute boolean annotationIsNot; */
|
||||
NS_IMETHODIMP nsNavHistoryQuery::GetAnnotationIsNot(PRBool* aIsNot)
|
||||
{
|
||||
*aIsNot = mAnnotationIsNot;
|
||||
return NS_OK;
|
||||
}
|
||||
NS_IMETHODIMP nsNavHistoryQuery::SetAnnotationIsNot(PRBool aIsNot)
|
||||
{
|
||||
mAnnotationIsNot = aIsNot;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* attribute AUTF8String annotation; */
|
||||
NS_IMETHODIMP nsNavHistoryQuery::GetAnnotation(nsACString& aAnnotation)
|
||||
{
|
||||
aAnnotation = mAnnotation;
|
||||
return NS_OK;
|
||||
}
|
||||
NS_IMETHODIMP nsNavHistoryQuery::SetAnnotation(const nsACString& aAnnotation)
|
||||
{
|
||||
mAnnotation = aAnnotation;
|
||||
return NS_OK;
|
||||
}
|
||||
NS_IMETHODIMP nsNavHistoryQuery::GetHasAnnotation(PRBool* aHasIt)
|
||||
{
|
||||
*aHasIt = ! mAnnotation.IsEmpty();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsNavHistoryQuery::GetFolders(PRUint32 *aCount,
|
||||
PRInt64 **aFolders)
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче