00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef CPOSLMMULTIDBSEARCH_H
00024 #define CPOSLMMULTIDBSEARCH_H
00025
00026 #include <e32base.h>
00027 #include <badesca.h>
00028 #include <epos_cposlandmarksearch.h>
00029 #include <epos_cposlmcategorymanager.h>
00030
00031 class CPosLmSearchCriteria;
00032 class CPosLmDisplayData;
00033 class CPosLmMultiDbSearchOperation;
00034 class CPosLmMultiDbSortPref;
00035 class CPosLmMultiDbSearchItem;
00036
00099 class CPosLmMultiDbSearch : public CBase
00100 {
00101 public:
00102
00106 struct TSearchError
00107 {
00108 TUint iDatabaseIndex;
00111 TInt iErrorCode;
00113 };
00114
00115 public:
00116
00126 IMPORT_C static CPosLmMultiDbSearch* NewL( const CDesCArray& aDatabaseList );
00127
00131 IMPORT_C virtual ~CPosLmMultiDbSearch();
00132
00133 public:
00134
00163 IMPORT_C void SetDatabasesToSearchL( const CDesCArray& aDatabaseList );
00164
00171 IMPORT_C CDesCArray* DatabasesToSearchL();
00172
00189 IMPORT_C void SetMaxNumOfMatches( TInt aMaxNumOfMatches = KPosLmMaxNumOfMatchesUnlimited );
00190
00221 IMPORT_C CPosLmOperation* StartLandmarkSearchL(
00222 const CPosLmSearchCriteria& aCriteria,
00223 TBool aSearchOnlyPreviousMatches = EFalse );
00224
00263 IMPORT_C CPosLmOperation* StartLandmarkSearchL(
00264 const CPosLmSearchCriteria& aCriteria,
00265 const TPosLmSortPref& aSortPref,
00266 TBool aSearchOnlyPreviousMatches = EFalse );
00267
00297 IMPORT_C CPosLmOperation* StartCategorySearchL(
00298 const CPosLmSearchCriteria& aCriteria,
00299 CPosLmCategoryManager::TCategorySortPref aSortPref,
00300 TBool aSearchOnlyPreviousMatches = EFalse );
00301
00309 IMPORT_C TUint NumOfSearchErrors() const;
00310
00323 IMPORT_C void GetSearchError(
00324 TUint aErrorIndex,
00325 TSearchError& aSearchError ) const;
00326
00335 IMPORT_C TUint TotalNumOfMatches() const;
00336
00352 IMPORT_C TUint NumOfMatches( TUint aDatabaseIndex ) const;
00353
00360 IMPORT_C TUint NumOfDatabasesToSearch() const;
00361
00376 IMPORT_C TPtrC DatabaseUriPtr( TUint aDatabaseIndex ) const;
00377
00411 IMPORT_C CPosLmItemIterator* MatchIteratorL( TUint aDatabaseIndex );
00412
00443 IMPORT_C void SetDisplayData( CPosLmDisplayData& aData );
00444
00452 IMPORT_C void UnsetDisplayData();
00453
00464 IMPORT_C TInt MaxNumOfMatches() const;
00465
00466
00467
00468
00469
00470
00471
00472
00473 TBool ToBeSearched( TUint aDatabaseIndex ) const;
00474
00475
00476
00477
00478
00479
00480
00481 CPosLandmarkDatabase* DatabaseL( TUint aDatabaseIndex );
00482
00483
00484
00485
00486
00487
00488
00489
00490 CPosLandmarkSearch* SearcherL( TUint aDatabaseIndex );
00491
00492
00493
00494
00495
00496
00497
00498
00499 void SearchStarted( TUint aDatabaseIndex );
00500
00501
00502
00503
00504
00505
00506
00507
00508
00509 void SearchExecutedL(
00510 TUint aDatabaseIndex,
00511 const CPosLmMultiDbSortPref& aSortPref );
00512
00513
00514
00515
00516
00517
00518
00519 void AddSearchError( TUint aDatabaseIndex, TInt aErrorCode );
00520
00521
00522
00523
00524
00525 void HandleSearchOperationCompleted();
00526
00527 private:
00528
00532 CPosLmMultiDbSearch();
00533
00537 void ConstructL(const CDesCArray& aDatabaseList);
00538
00539 void CloseDbsNotToSearch(const CDesCArray& aDatabaseList);
00540
00541 CPosLmOperation* StartSearchL(
00542 const CPosLmSearchCriteria& aCriteria,
00543 CPosLmMultiDbSortPref* aSortPref,
00544 TBool aSearchOnlyPreviousMatches );
00545
00546 private:
00547
00548 TInt iMaxNumOfMatches;
00549 TInt iNewMaxNumOfMatches;
00550
00551 CPosLmMultiDbSearchOperation* iMultiSearchOperation;
00552
00553 RPointerArray<CPosLmMultiDbSearchItem> iSearchItems;
00554
00555 RArray<TSearchError> iSearchErrors;
00556 TUint iNoOfSearchErrors;
00557
00558 CPosLmDisplayData* iClientDisplayData;
00559
00560 };
00561
00562
00563 #endif
00564