uifw/EikStd/coctlsrc/aknmarkingmode.cpp
branchRCL_3
changeset 25 941195f2d488
parent 23 3d340a0166ff
equal deleted inserted replaced
23:3d340a0166ff 25:941195f2d488
    19 #include <aknitemactionmenu.h>
    19 #include <aknitemactionmenu.h>
    20 #include <eikspane.h>
    20 #include <eikspane.h>
    21 #include <aknnavide.h>
    21 #include <aknnavide.h>
    22 #include <barsread.h>
    22 #include <barsread.h>
    23 #include <AknUtils.h>
    23 #include <AknUtils.h>
    24 
    24 #include <AknTasHook.h>
       
    25 
       
    26 #include "akntrace.h"
    25 #include "aknmarkingmode.h"
    27 #include "aknmarkingmode.h"
    26 
    28 
    27 // ---------------------------------------------------------------------------
    29 // ---------------------------------------------------------------------------
    28 // CAknMarkingMode::NewL
    30 // CAknMarkingMode::NewL
    29 // ---------------------------------------------------------------------------
    31 // ---------------------------------------------------------------------------
    30 //
    32 //
    31 CAknMarkingMode* CAknMarkingMode::NewL(
    33 CAknMarkingMode* CAknMarkingMode::NewL(
    32         CAknItemActionMenu& aItemActionMenu,
    34         CAknItemActionMenu& aItemActionMenu,
    33         CollectionArray& aArray )
    35         CollectionArray& aArray )
    34     {
    36     {
       
    37     _AKNTRACE_FUNC_ENTER;
    35     CAknMarkingMode* self =
    38     CAknMarkingMode* self =
    36         new ( ELeave ) CAknMarkingMode( aItemActionMenu, aArray );
    39         new ( ELeave ) CAknMarkingMode( aItemActionMenu, aArray );
       
    40     _AKNTRACE_FUNC_EXIT;
    37     return self;
    41     return self;
    38     }
    42     }
    39 
    43 
    40 
    44 
    41 // ---------------------------------------------------------------------------
    45 // ---------------------------------------------------------------------------
    42 // CAknMarkingMode::~CAknMarkingMode
    46 // CAknMarkingMode::~CAknMarkingMode
    43 // ---------------------------------------------------------------------------
    47 // ---------------------------------------------------------------------------
    44 //
    48 //
    45 CAknMarkingMode::~CAknMarkingMode()
    49 CAknMarkingMode::~CAknMarkingMode()
    46     {
    50     {
       
    51     _AKNTRACE_FUNC_ENTER;
       
    52     AKNTASHOOK_REMOVE();    
    47     delete iMarkingDecorator;
    53     delete iMarkingDecorator;
       
    54     _AKNTRACE_FUNC_EXIT;
    48     }
    55     }
    49 
    56 
    50 
    57 
    51 // ---------------------------------------------------------------------------
    58 // ---------------------------------------------------------------------------
    52 // CAknMarkingMode::SetCollectionMultipleMarkingState
    59 // CAknMarkingMode::SetCollectionMultipleMarkingState
    53 // ---------------------------------------------------------------------------
    60 // ---------------------------------------------------------------------------
    54 //
    61 //
    55 void CAknMarkingMode::SetCollectionMultipleMarkingState( TBool aActive )
    62 void CAknMarkingMode::SetCollectionMultipleMarkingState( TBool aActive )
    56     {
    63     {
    57     for ( TInt i = 0; i < iCollections.Count(); i++ )
    64     _AKNTRACE_FUNC_ENTER;
    58         {
    65     for ( TInt i = 0; i < iCollections.Count(); i++ )
    59         MAknCollection* collection( iCollections[ i ] );
    66         {
       
    67         MAknCollection* collection( iCollections[i] );
    60         // Assume the command applies to first list with multiple selection
    68         // Assume the command applies to first list with multiple selection
    61         if ( collection->CollectionState() &
    69         if ( collection->CollectionState() &
    62                 MAknCollection::EStateMultipleSelection )
    70                 MAknCollection::EStateMultipleSelection )
    63             {
    71             {
    64             MAknMarkingCollection* markingCollection
    72             MAknMarkingCollection* markingCollection
    70                 }
    78                 }
    71             iItemActionMenu.CollectionChanged( *collection );
    79             iItemActionMenu.CollectionChanged( *collection );
    72             break;
    80             break;
    73             }
    81             }
    74         }
    82         }
       
    83     _AKNTRACE_FUNC_EXIT;
    75     }
    84     }
    76 
    85 
    77 
    86 
    78 // ---------------------------------------------------------------------------
    87 // ---------------------------------------------------------------------------
    79 // CAknMarkingMode::TryExitMarkingMode
    88 // CAknMarkingMode::TryExitMarkingMode
    80 // ---------------------------------------------------------------------------
    89 // ---------------------------------------------------------------------------
    81 //
    90 //
    82 void CAknMarkingMode::TryExitMarkingMode()
    91 void CAknMarkingMode::TryExitMarkingMode()
    83     {
    92     {
    84     for ( TInt i = 0; i < iCollections.Count(); i++ )
    93     _AKNTRACE_FUNC_ENTER;
    85         {
    94     for ( TInt i = 0; i < iCollections.Count(); i++ )
    86         MAknCollection* collection( iCollections[ i ] );
    95         {
       
    96         MAknCollection* collection( iCollections[i] );
    87         MAknMarkingCollection* markingCollection
    97         MAknMarkingCollection* markingCollection
    88             = MarkingCollection( *collection );
    98             = MarkingCollection( *collection );
    89         if ( markingCollection && markingCollection->MarkingState(
    99         if ( markingCollection && markingCollection->MarkingState(
    90                 ) & MAknMarkingCollection::EStateMarkingMode )
   100                 ) & MAknMarkingCollection::EStateMarkingMode )
    91             {
   101             {
    94                 SetCollectionMultipleMarkingState( EFalse );
   104                 SetCollectionMultipleMarkingState( EFalse );
    95                 }
   105                 }
    96             }
   106             }
    97         break;
   107         break;
    98         }
   108         }
       
   109     _AKNTRACE_FUNC_EXIT;
    99     }
   110     }
   100 
   111 
   101 
   112 
   102 // ---------------------------------------------------------------------------
   113 // ---------------------------------------------------------------------------
   103 // CAknMarkingMode::MultipleMarkingActive
   114 // CAknMarkingMode::MultipleMarkingActive
   104 // ---------------------------------------------------------------------------
   115 // ---------------------------------------------------------------------------
   105 //
   116 //
   106 TBool CAknMarkingMode::MultipleMarkingActive() const
   117 TBool CAknMarkingMode::MultipleMarkingActive() const
   107     {
   118     {
       
   119     _AKNTRACE_FUNC_ENTER;
   108     TBool markingActive( EFalse );
   120     TBool markingActive( EFalse );
   109     for ( TInt i = 0; i < iCollections.Count(); i++ )
   121     for ( TInt i = 0; i < iCollections.Count(); i++ )
   110         {
   122         {
   111         MAknCollection* collection( iCollections[ i ] );
   123         MAknCollection* collection( iCollections[i] );
   112         if ( collection->CollectionState() &
   124         if ( collection->CollectionState() &
   113                 MAknCollection::EStateCollectionVisible )
   125                 MAknCollection::EStateCollectionVisible )
   114             {
   126             {
   115             MAknMarkingCollection* markingCollection
   127             MAknMarkingCollection* markingCollection
   116                 = MarkingCollection( *collection );
   128                 = MarkingCollection( *collection );
   120                     & MAknMarkingCollection::EStateMarkingMode;
   132                     & MAknMarkingCollection::EStateMarkingMode;
   121                 }
   133                 }
   122             break;
   134             break;
   123             }
   135             }
   124         }
   136         }
       
   137     _AKNTRACE_FUNC_EXIT;
   125     return markingActive;
   138     return markingActive;
   126     }
   139     }
   127 
   140 
   128 
   141 
   129 // ---------------------------------------------------------------------------
   142 // ---------------------------------------------------------------------------
   130 // CAknMarkingMode::MarkedItems
   143 // CAknMarkingMode::MarkedItems
   131 // ---------------------------------------------------------------------------
   144 // ---------------------------------------------------------------------------
   132 //
   145 //
   133 TBool CAknMarkingMode::MarkedItems() const
   146 TBool CAknMarkingMode::MarkedItems() const
   134     {
   147     {
       
   148     _AKNTRACE_FUNC_ENTER;
   135     TBool markedItems( EFalse );
   149     TBool markedItems( EFalse );
   136     for ( TInt i = 0; i < iCollections.Count(); i++ )
   150     for ( TInt i = 0; i < iCollections.Count(); i++ )
   137         {
   151         {
   138         MAknCollection* collection( iCollections[ i ] );
   152         MAknCollection* collection( iCollections[i] );
   139         if ( collection->CollectionState() &
   153         if ( collection->CollectionState() &
   140                 MAknCollection::EStateCollectionVisible )
   154                 MAknCollection::EStateCollectionVisible )
   141             {
   155             {
   142             MAknMarkingCollection* markingCollection
   156             MAknMarkingCollection* markingCollection
   143                 = MarkingCollection( *collection );
   157                 = MarkingCollection( *collection );
   152                     }
   166                     }
   153                 }
   167                 }
   154             break;
   168             break;
   155             }
   169             }
   156         }
   170         }
       
   171     _AKNTRACE_FUNC_EXIT;
   157     return markedItems;
   172     return markedItems;
   158     }
   173     }
   159 
   174 
   160 // ---------------------------------------------------------------------------
   175 // ---------------------------------------------------------------------------
   161 // CAknMarkingMode::CollectionEmpty
   176 // CAknMarkingMode::CollectionEmpty
   162 // ---------------------------------------------------------------------------
   177 // ---------------------------------------------------------------------------
   163 //
   178 //
   164 TBool CAknMarkingMode::CollectionEmpty() const
   179 TBool CAknMarkingMode::CollectionEmpty() const
   165     {
   180     {
       
   181     _AKNTRACE_FUNC_ENTER;
   166     TBool empty( EFalse );
   182     TBool empty( EFalse );
   167      for ( TInt i = 0; i < iCollections.Count(); i++ )
   183      for ( TInt i = 0; i < iCollections.Count(); i++ )
   168          {
   184          {
   169          MAknCollection* collection( iCollections[ i ] );
   185          MAknCollection* collection( iCollections[i] );
   170          if ( collection->CollectionState() &
   186          if ( collection->CollectionState() &
   171                  MAknCollection::EStateCollectionVisible )
   187                  MAknCollection::EStateCollectionVisible )
   172              {
   188              {
   173              MAknMarkingCollection* markingCollection
   189              MAknMarkingCollection* markingCollection
   174                  = MarkingCollection( *collection );
   190                  = MarkingCollection( *collection );
   183                      }
   199                      }
   184                  }
   200                  }
   185              break;
   201              break;
   186              }
   202              }
   187          }
   203          }
       
   204      _AKNTRACE_FUNC_EXIT;
   188     return empty;    
   205     return empty;    
   189     }
   206     }
   190 
   207 
   191 
   208 
   192 // ---------------------------------------------------------------------------
   209 // ---------------------------------------------------------------------------
   193 // CAknMarkingMode::MarkAllL
   210 // CAknMarkingMode::MarkAllL
   194 // ---------------------------------------------------------------------------
   211 // ---------------------------------------------------------------------------
   195 //
   212 //
   196 void CAknMarkingMode::MarkAllL()
   213 void CAknMarkingMode::MarkAllL()
   197     {
   214     {
       
   215     _AKNTRACE_FUNC_ENTER;
   198     MAknMarkingCollection* collection = ActiveMarkingCollection();
   216     MAknMarkingCollection* collection = ActiveMarkingCollection();
   199     
   217     
   200     if ( collection )
   218     if ( collection )
   201         {
   219         {
   202         collection->MarkAllL();
   220         collection->MarkAllL();
   203         }
   221         }
       
   222     _AKNTRACE_FUNC_EXIT;
   204     }
   223     }
   205 
   224 
   206 
   225 
   207 // ---------------------------------------------------------------------------
   226 // ---------------------------------------------------------------------------
   208 // CAknMarkingMode::UnmarkAll
   227 // CAknMarkingMode::UnmarkAll
   209 // ---------------------------------------------------------------------------
   228 // ---------------------------------------------------------------------------
   210 //
   229 //
   211 void CAknMarkingMode::UnmarkAll()
   230 void CAknMarkingMode::UnmarkAll()
   212     {
   231     {
       
   232     _AKNTRACE_FUNC_ENTER;
   213     MAknMarkingCollection* collection = ActiveMarkingCollection();
   233     MAknMarkingCollection* collection = ActiveMarkingCollection();
   214     
   234     
   215     if ( collection )
   235     if ( collection )
   216         {
   236         {
   217         collection->UnmarkAll();
   237         collection->UnmarkAll();
   218         }
   238         }
       
   239     _AKNTRACE_FUNC_EXIT;
   219     }
   240     }
   220 
   241 
   221 
   242 
   222 // ---------------------------------------------------------------------------
   243 // ---------------------------------------------------------------------------
   223 // CAknMarkingMode::MarkCurrentItemL
   244 // CAknMarkingMode::MarkCurrentItemL
   224 // ---------------------------------------------------------------------------
   245 // ---------------------------------------------------------------------------
   225 //
   246 //
   226 void CAknMarkingMode::MarkCurrentItemL()
   247 void CAknMarkingMode::MarkCurrentItemL()
   227     {
   248     {
       
   249     _AKNTRACE_FUNC_ENTER;
   228     MAknMarkingCollection* collection = ActiveMarkingCollection();
   250     MAknMarkingCollection* collection = ActiveMarkingCollection();
   229     
   251     
   230     // first activate marking mode if needed
   252     // first activate marking mode if needed
   231     if ( !collection )
   253     if ( !collection )
   232         {
   254         {
   237     // then mark the current item
   259     // then mark the current item
   238     if ( collection )
   260     if ( collection )
   239         {
   261         {
   240         collection->MarkCurrentItemL();
   262         collection->MarkCurrentItemL();
   241         }
   263         }
       
   264     _AKNTRACE_FUNC_EXIT;
   242     }
   265     }
   243 
   266 
   244 // ---------------------------------------------------------------------------
   267 // ---------------------------------------------------------------------------
   245 // CAknMarkingMode::CurrentItemMarkable
   268 // CAknMarkingMode::CurrentItemMarkable
   246 // ---------------------------------------------------------------------------
   269 // ---------------------------------------------------------------------------
   247 //
   270 //
   248 TBool CAknMarkingMode::CurrentItemMarkable()
   271 TBool CAknMarkingMode::CurrentItemMarkable()
   249     {
   272     {
       
   273     _AKNTRACE_FUNC_ENTER;
       
   274     _AKNTRACE_FUNC_EXIT;
   250     return MarkingCollection()->CurrentItemMarkable();
   275     return MarkingCollection()->CurrentItemMarkable();
   251     }
   276     }
   252 
   277 
   253 // ---------------------------------------------------------------------------
   278 // ---------------------------------------------------------------------------
   254 // CAknMarkingMode::CAknMarkingMode
   279 // CAknMarkingMode::CAknMarkingMode
   259         CollectionArray& aArray )
   284         CollectionArray& aArray )
   260     : iCollections( aArray ),
   285     : iCollections( aArray ),
   261     iItemActionMenu( aItemActionMenu ),
   286     iItemActionMenu( aItemActionMenu ),
   262     iMarkingDecorator( NULL )
   287     iMarkingDecorator( NULL )
   263     {
   288     {
       
   289     _AKNTRACE_FUNC_ENTER;
       
   290     AKNTASHOOK_ADD( this, "CAknMarkingMode" );
       
   291     _AKNTRACE_FUNC_EXIT;    
   264     }
   292     }
   265 
   293 
   266 
   294 
   267 // ---------------------------------------------------------------------------
   295 // ---------------------------------------------------------------------------
   268 // CAknMarkingMode::MarkingCollection
   296 // CAknMarkingMode::MarkingCollection
   269 // ---------------------------------------------------------------------------
   297 // ---------------------------------------------------------------------------
   270 //
   298 //
   271 MAknMarkingCollection* CAknMarkingMode::MarkingCollection(
   299 MAknMarkingCollection* CAknMarkingMode::MarkingCollection(
   272         MAknCollection& aCollection )
   300         MAknCollection& aCollection )
   273     {
   301     {
       
   302     _AKNTRACE_FUNC_ENTER;
   274     TAny* extension( NULL );
   303     TAny* extension( NULL );
   275     aCollection.CollectionExtension(
   304     aCollection.CollectionExtension(
   276             MAknMarkingCollection::TYPE, extension, NULL );
   305             MAknMarkingCollection::TYPE, extension, NULL );
       
   306     _AKNTRACE_FUNC_EXIT;
   277     return static_cast<MAknMarkingCollection*>( extension );
   307     return static_cast<MAknMarkingCollection*>( extension );
   278     }
   308     }
   279 
   309 
   280 
   310 
   281 // ---------------------------------------------------------------------------
   311 // ---------------------------------------------------------------------------
   282 // CAknMarkingMode::MarkingCollection
   312 // CAknMarkingMode::MarkingCollection
   283 // ---------------------------------------------------------------------------
   313 // ---------------------------------------------------------------------------
   284 //
   314 //
   285 MAknMarkingCollection* CAknMarkingMode::MarkingCollection()
   315 MAknMarkingCollection* CAknMarkingMode::MarkingCollection()
   286     {
   316     {
   287     for ( TInt i = 0; i < iCollections.Count(); i++ )
   317     _AKNTRACE_FUNC_ENTER;
   288         {
   318     for ( TInt i = 0; i < iCollections.Count(); i++ )
   289         MAknCollection* collection( iCollections[ i ] );
   319         {
       
   320         MAknCollection* collection( iCollections[i] );    
   290         if ( collection->CollectionState() &
   321         if ( collection->CollectionState() &
   291                 MAknCollection::EStateCollectionVisible )
   322                 MAknCollection::EStateCollectionVisible )
   292             {
   323             {
       
   324             _AKNTRACE_FUNC_EXIT;
   293             return MarkingCollection( *collection );
   325             return MarkingCollection( *collection );
   294             }
   326             }
   295         }
   327         }
   296 
   328     _AKNTRACE_FUNC_EXIT;
   297     return NULL;
   329     return NULL;
   298     }
   330     }
   299 
   331 
   300 
   332 
   301 // ---------------------------------------------------------------------------
   333 // ---------------------------------------------------------------------------
   302 // CAknMarkingMode::ActiveMarkingCollection
   334 // CAknMarkingMode::ActiveMarkingCollection
   303 // ---------------------------------------------------------------------------
   335 // ---------------------------------------------------------------------------
   304 //
   336 //
   305 MAknMarkingCollection* CAknMarkingMode::ActiveMarkingCollection()
   337 MAknMarkingCollection* CAknMarkingMode::ActiveMarkingCollection()
   306     {
   338     {
   307     for ( TInt i = 0; i < iCollections.Count(); i++ )
   339     _AKNTRACE_FUNC_ENTER;
   308         {
   340     for ( TInt i = 0; i < iCollections.Count(); i++ )
   309         MAknCollection* collection( iCollections[ i ] );
   341         {
       
   342         MAknCollection* collection( iCollections[i] );
   310         
   343         
   311         MAknMarkingCollection* markingCollection = 
   344         MAknMarkingCollection* markingCollection = 
   312                 MarkingCollection( *collection );
   345                 MarkingCollection( *collection );
   313         
   346         
   314         if ( markingCollection && markingCollection->MarkingState() & 
   347         if ( markingCollection && markingCollection->MarkingState() & 
   315                 MAknMarkingCollection::EStateMarkingMode )
   348                 MAknMarkingCollection::EStateMarkingMode )
   316             {
   349             {
       
   350             _AKNTRACE_FUNC_EXIT;
   317             return markingCollection;
   351             return markingCollection;
   318             }
   352             }
   319         }
   353         }
   320 
   354     _AKNTRACE_FUNC_EXIT;
   321     return NULL;
   355     return NULL;
   322     }
   356     }
   323 
   357 
   324 // ---------------------------------------------------------------------------
   358 // ---------------------------------------------------------------------------
   325 // CAknMarkingMode::UpdateMarkingModeNaviPaneL
   359 // CAknMarkingMode::UpdateMarkingModeNaviPaneL
   326 // ---------------------------------------------------------------------------
   360 // ---------------------------------------------------------------------------
   327 //
   361 //
   328 void CAknMarkingMode::UpdateMarkingModeNaviPaneL( TBool aEnable )
   362 void CAknMarkingMode::UpdateMarkingModeNaviPaneL( TBool aEnable )
   329     {
   363     {
       
   364     _AKNTRACE_FUNC_ENTER;
   330     CEikonEnv* eikonEnv = CEikonEnv::Static();
   365     CEikonEnv* eikonEnv = CEikonEnv::Static();
   331         
   366         
   332     if ( eikonEnv && eikonEnv->AppUiFactory() )
   367     if ( eikonEnv && eikonEnv->AppUiFactory() )
   333         {
   368         {
   334         CEikStatusPane* statusPane = eikonEnv->AppUiFactory()->StatusPane();
   369         CEikStatusPane* statusPane = eikonEnv->AppUiFactory()->StatusPane();
   362                     }
   397                     }
   363                 naviPane->DrawDeferred();
   398                 naviPane->DrawDeferred();
   364                 }
   399                 }
   365             }
   400             }
   366         }
   401         }
       
   402     _AKNTRACE_FUNC_EXIT;
   367     }
   403     }
   368 
   404 
   369 // End of File
   405 // End of File