436 // Create screen control and anchor layout |
439 // Create screen control and anchor layout |
437 iMailListControl = CFreestyleEmailUiMailListControl::NewL( iEnv, this ); |
440 iMailListControl = CFreestyleEmailUiMailListControl::NewL( iEnv, this ); |
438 iScreenAnchorLayout = CAlfAnchorLayout::AddNewL( *iMailListControl ); |
441 iScreenAnchorLayout = CAlfAnchorLayout::AddNewL( *iMailListControl ); |
439 iScreenAnchorLayout->SetFlags(EAlfVisualFlagAutomaticLocaleMirroringEnabled); |
442 iScreenAnchorLayout->SetFlags(EAlfVisualFlagAutomaticLocaleMirroringEnabled); |
440 |
443 |
441 //<cmail> |
|
442 iTouchManager = CEUiEmailListTouchManager::NewL(*this); |
444 iTouchManager = CEUiEmailListTouchManager::NewL(*this); |
443 //</cmail> |
|
444 |
445 |
445 // Create control bar control and append to control group and anchor layout |
446 // Create control bar control and append to control group and anchor layout |
446 iControlBarControl = CFsControlBar::NewL( iEnv ); |
447 iControlBarControl = CFsControlBar::NewL( iEnv ); |
447 iControlBarControl->AddObserverL( *this ); |
448 iControlBarControl->AddObserverL( *this ); |
448 //<cmail> |
|
449 iControlBarControl->AddObserverL( *iTouchManager ); |
449 iControlBarControl->AddObserverL( *iTouchManager ); |
450 //</cmail> |
|
451 |
450 |
452 CreateControlBarLayoutL(); |
451 CreateControlBarLayoutL(); |
453 SetMailListLayoutAnchors(); |
452 SetMailListLayoutAnchors(); |
454 |
453 |
455 iControlBarControl->SetSelectorTransitionTimeL( KControlBarTransitionTime ); |
454 iControlBarControl->SetSelectorTransitionTimeL( KControlBarTransitionTime ); |
501 iNewEmailText = StringLoader::LoadL( R_COMMAND_AREA_NEW_EMAIL ); |
497 iNewEmailText = StringLoader::LoadL( R_COMMAND_AREA_NEW_EMAIL ); |
502 |
498 |
503 // Set menu, mark and background icons |
499 // Set menu, mark and background icons |
504 iMailTreeListVisualizer->SetMarkIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMarkIcon ) ); |
500 iMailTreeListVisualizer->SetMarkIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMarkIcon ) ); |
505 iMailTreeListVisualizer->SetMenuIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMenuIcon ) ); |
501 iMailTreeListVisualizer->SetMenuIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMenuIcon ) ); |
506 //<cmail> s60 skin support |
|
507 //iMailTreeListVisualizer->SetBackgroundTextureL( iAppUi.FsTextureManager()->TextureByIndex( EBackgroundTextureMailList ) ); |
|
508 //</cmail> |
|
509 iMailList->AddObserverL( *this ); |
502 iMailList->AddObserverL( *this ); |
510 //<cmail> |
|
511 iMailList->AddObserverL( *iTouchManager ); |
503 iMailList->AddObserverL( *iTouchManager ); |
512 //</cmail> |
|
513 // Initializing the default stylus long tap popup menu |
504 // Initializing the default stylus long tap popup menu |
514 if( !iStylusPopUpMenu ) |
505 if( !iStylusPopUpMenu ) |
515 { |
506 { |
516 TPoint point( 0, 0 ); |
507 TPoint point( 0, 0 ); |
517 iStylusPopUpMenu = CAknStylusPopUpMenu::NewL( this , point ); |
508 iStylusPopUpMenu = CAknStylusPopUpMenu::NewL( this , point ); |
1719 if ( iMailFolder ) |
1712 if ( iMailFolder ) |
1720 { |
1713 { |
1721 currentFolderType = iMailFolder->GetFolderType(); |
1714 currentFolderType = iMailFolder->GetFolderType(); |
1722 } |
1715 } |
1723 |
1716 |
|
1717 if ( aResourceId == R_FSEMAILUI_MAILLIST_MARKING_MODE_MENUPANE ) |
|
1718 { |
|
1719 if (!CountMarkedItemsL()) |
|
1720 { |
|
1721 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeDelete, ETrue ); |
|
1722 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeUnread, ETrue ); |
|
1723 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeRead, ETrue ); |
|
1724 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeMove, ETrue ); |
|
1725 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeFollowUp, ETrue ); |
|
1726 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeMarkAll, EFalse ); |
|
1727 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeUnmarkAll, ETrue ); |
|
1728 } |
|
1729 else |
|
1730 { |
|
1731 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeDelete, EFalse ); |
|
1732 if ( AreAllMarkedItemsUnreadL() ) |
|
1733 { |
|
1734 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeUnread, ETrue ); |
|
1735 } |
|
1736 else |
|
1737 { |
|
1738 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeUnread, EFalse ); |
|
1739 } |
|
1740 if ( AreAllMarkedItemsReadL() ) |
|
1741 { |
|
1742 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeRead, ETrue ); |
|
1743 } |
|
1744 else |
|
1745 { |
|
1746 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeRead, EFalse ); |
|
1747 } |
|
1748 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeMove, !supportsMoving ); |
|
1749 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeFollowUp, !supportsFlag ); |
|
1750 if ( AreAllItemsMarked() ) |
|
1751 { |
|
1752 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeMarkAll, ETrue ); |
|
1753 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeUnmarkAll, EFalse ); |
|
1754 } |
|
1755 else if ( AreAllItemsUnmarked() ) |
|
1756 { |
|
1757 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeMarkAll, EFalse ); |
|
1758 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeUnmarkAll, ETrue ); |
|
1759 } |
|
1760 else |
|
1761 { |
|
1762 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeMarkAll, EFalse ); |
|
1763 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeUnmarkAll, EFalse ); |
|
1764 } |
|
1765 } |
|
1766 } |
|
1767 |
1724 // MAIN MENU *************************************************************************** |
1768 // MAIN MENU *************************************************************************** |
1725 if ( aResourceId == R_FSEMAILUI_MAILLIST_MENUPANE ) |
1769 if ( aResourceId == R_FSEMAILUI_MAILLIST_MENUPANE ) |
1726 { |
1770 { |
1727 // Sync/cancel sync |
1771 // Sync/cancel sync |
1728 CFSMailBox* activeMailbox = iAppUi.GetActiveMailbox(); |
1772 CFSMailBox* activeMailbox = iAppUi.GetActiveMailbox(); |
1780 // Hide all the normal email message specific actions |
1824 // Hide all the normal email message specific actions |
1781 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReply, ETrue ); |
1825 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReply, ETrue ); |
1782 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, ETrue ); |
1826 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, ETrue ); |
1783 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsForward, ETrue ); |
1827 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsForward, ETrue ); |
1784 aMenuPane->SetItemDimmed( EFsEmailUiCmdMailActions, ETrue); |
1828 aMenuPane->SetItemDimmed( EFsEmailUiCmdMailActions, ETrue); |
1785 |
|
1786 TInt markedCount = CountMarkedItemsL(); |
|
1787 // Hide mark/unmark all when not applicable |
|
1788 if ( markedCount == EmailsInModelL() ) // Hide mark all |
|
1789 { |
|
1790 aMenuPane->SetItemDimmed( EFsEmailUiCmdSubMenuMark, ETrue ); |
|
1791 } |
|
1792 if ( markedCount == 0 ) // Hide unmark all |
|
1793 { |
|
1794 aMenuPane->SetItemDimmed( EFsEmailUiCmdSubMenuUnmark, ETrue ); |
|
1795 } |
|
1796 |
|
1797 } |
1829 } |
1798 else |
1830 else |
1799 { |
1831 { |
1800 CFSMailMessage* targetMessage = NULL; |
1832 CFSMailMessage* targetMessage = NULL; |
1801 if ( targetEntries.Count() == 1 ) |
1833 if ( targetEntries.Count() == 1 ) |
1823 // Reply all is hidden also when the single target message has multiple recipients |
1855 // Reply all is hidden also when the single target message has multiple recipients |
1824 else if ( !targetMessage || numRecipients <= 1 ) |
1856 else if ( !targetMessage || numRecipients <= 1 ) |
1825 { |
1857 { |
1826 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, ETrue ); |
1858 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, ETrue ); |
1827 } |
1859 } |
1828 |
|
1829 aMenuPane->SetItemDimmed( EFsEmailUiCmdSubMenuUnmark, ETrue); |
|
1830 } |
1860 } |
1831 |
1861 |
1832 // EMPTY LIST, MOST OPTIONS ARE HIDDEN |
1862 // EMPTY LIST, MOST OPTIONS ARE HIDDEN |
1833 if ( !iModel->Count() || !iMailFolder ) |
1863 if ( !iModel->Count() || !iMailFolder ) |
1834 { |
1864 { |
1835 aMenuPane->SetItemDimmed( EFsEmailUiCmdMailActions, ETrue ); |
1865 aMenuPane->SetItemDimmed( EFsEmailUiCmdMailActions, ETrue ); |
1836 aMenuPane->SetItemDimmed( EFsEmailUiCmdSubMenuMark, ETrue ); |
|
1837 aMenuPane->SetItemDimmed( EFsEmailUiCmdSubMenuUnmark, ETrue ); |
|
1838 aMenuPane->SetItemDimmed( EFsEmailUiCmdSearch, ETrue ); |
1866 aMenuPane->SetItemDimmed( EFsEmailUiCmdSearch, ETrue ); |
|
1867 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingMode, ETrue ); |
1839 } |
1868 } |
1840 |
1869 |
1841 // FOLDER SPECIFIC COMMAND HIDING |
1870 // FOLDER SPECIFIC COMMAND HIDING |
1842 // "Clear deleted folder" command is available only in Deleted folder |
1871 // "Clear deleted folder" command is available only in Deleted folder |
1843 if ( currentFolderType != EFSDeleted || !iModel->Count() ) |
1872 if ( currentFolderType != EFSDeleted || !iModel->Count() ) |
1902 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsFlag, ETrue ); |
1931 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsFlag, ETrue ); |
1903 } |
1932 } |
1904 } |
1933 } |
1905 // ACTIONS SUBMENU ********************************************************************* |
1934 // ACTIONS SUBMENU ********************************************************************* |
1906 |
1935 |
1907 |
|
1908 // MARK SUBMENU ************************************************************************ |
|
1909 // Mark submenu show only when focus is visible |
|
1910 if ( aResourceId == R_FSEMAILUI_MAILLIST_SUBMENU_MARK) |
|
1911 { |
|
1912 // Checks if a device has a keyboard or not. |
|
1913 if( !iLastFocus ) |
|
1914 { |
|
1915 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkMark, ETrue ); |
|
1916 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkMarkAll, ETrue ); |
|
1917 } |
|
1918 else |
|
1919 { |
|
1920 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkSubAll, ETrue ); |
|
1921 } |
|
1922 } |
|
1923 |
|
1924 // MARK SUBMENU ************************************************************************ |
|
1925 |
|
1926 |
|
1927 // UNMARK SUBMENU ************************************************************************ |
|
1928 // Unmark submenu show only when focus is not visible |
|
1929 if ( aResourceId == R_FSEMAILUI_MAILLIST_SUBMENU_UNMARK) |
|
1930 { |
|
1931 // Nothing to do yet |
|
1932 } |
|
1933 // UNMARK SUBMENU ************************************************************************ |
|
1934 |
|
1935 |
|
1936 CleanupStack::PopAndDestroy( &targetEntries ); |
1936 CleanupStack::PopAndDestroy( &targetEntries ); |
1937 |
1937 |
1938 // Add shortcut hints |
1938 // Add shortcut hints |
1939 iAppUi.ShortcutBinding().AppendShortcutHintsL( *aMenuPane, |
1939 iAppUi.ShortcutBinding().AppendShortcutHintsL( *aMenuPane, |
1940 CFSEmailUiShortcutBinding::EContextMailList ); |
1940 CFSEmailUiShortcutBinding::EContextMailList ); |
1989 CleanupClosePushL( markedEntries ); |
1989 CleanupClosePushL( markedEntries ); |
1990 iMailList->GetMarkedItemsL( markedEntries ); |
1990 iMailList->GetMarkedItemsL( markedEntries ); |
1991 TInt count = markedEntries.Count(); |
1991 TInt count = markedEntries.Count(); |
1992 CleanupStack::PopAndDestroy( &markedEntries ); |
1992 CleanupStack::PopAndDestroy( &markedEntries ); |
1993 return count; |
1993 return count; |
|
1994 } |
|
1995 |
|
1996 // --------------------------------------------------------------------------- |
|
1997 // |
|
1998 // |
|
1999 // --------------------------------------------------------------------------- |
|
2000 // |
|
2001 TBool CFSEmailUiMailListVisualiser::AreAllItemsMarked() |
|
2002 { |
|
2003 FUNC_LOG; |
|
2004 |
|
2005 TBool ret(ETrue); |
|
2006 |
|
2007 if ( iTreeItemArray.Count() ) |
|
2008 { |
|
2009 for ( TInt i=0;i<iTreeItemArray.Count(); i++ ) |
|
2010 { |
|
2011 if ( !iMailList->IsNode(iTreeItemArray[i].iListItemId ) && |
|
2012 !iMailList->IsMarked( iTreeItemArray[i].iListItemId )) |
|
2013 { |
|
2014 ret = EFalse; |
|
2015 break; |
|
2016 } |
|
2017 } |
|
2018 } |
|
2019 return ret; |
|
2020 } |
|
2021 |
|
2022 // --------------------------------------------------------------------------- |
|
2023 // |
|
2024 // |
|
2025 // --------------------------------------------------------------------------- |
|
2026 // |
|
2027 TBool CFSEmailUiMailListVisualiser::AreAllItemsUnmarked() |
|
2028 { |
|
2029 FUNC_LOG; |
|
2030 |
|
2031 TBool ret(ETrue); |
|
2032 |
|
2033 if ( iTreeItemArray.Count() ) |
|
2034 { |
|
2035 for ( TInt i=0;i<iTreeItemArray.Count(); i++ ) |
|
2036 { |
|
2037 if ( !iMailList->IsNode(iTreeItemArray[i].iListItemId ) && |
|
2038 iMailList->IsMarked( iTreeItemArray[i].iListItemId )) |
|
2039 { |
|
2040 ret = EFalse; |
|
2041 break; |
|
2042 } |
|
2043 } |
|
2044 } |
|
2045 return ret; |
|
2046 } |
|
2047 |
|
2048 // --------------------------------------------------------------------------- |
|
2049 // |
|
2050 // |
|
2051 // --------------------------------------------------------------------------- |
|
2052 // |
|
2053 TBool CFSEmailUiMailListVisualiser::AreAllMarkedItemsReadL() |
|
2054 { |
|
2055 FUNC_LOG; |
|
2056 |
|
2057 TBool ret(ETrue); |
|
2058 |
|
2059 if ( iTreeItemArray.Count() ) |
|
2060 { |
|
2061 for ( TInt i=0;i<iTreeItemArray.Count(); i++ ) |
|
2062 { |
|
2063 if ( !iMailList->IsNode(iTreeItemArray[i].iListItemId ) && |
|
2064 iMailList->IsMarked( iTreeItemArray[i].iListItemId )) |
|
2065 { |
|
2066 CFSEmailUiMailListModelItem* item = |
|
2067 static_cast<CFSEmailUiMailListModelItem*>( Model()->Item(i) ); |
|
2068 CFSMailMessage* confirmedMsgPtr(0); |
|
2069 confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL(iAppUi.GetActiveMailboxId(), |
|
2070 iMailFolder->GetFolderId(), item->MessagePtr().GetMessageId(), EFSMsgDataEnvelope ); |
|
2071 TBool isReadMessage = confirmedMsgPtr->IsFlagSet( EFSMsgFlag_Read ); |
|
2072 delete confirmedMsgPtr; |
|
2073 if ( !isReadMessage ) |
|
2074 { |
|
2075 ret = EFalse; |
|
2076 break; |
|
2077 } |
|
2078 } |
|
2079 } |
|
2080 } |
|
2081 return ret; |
|
2082 } |
|
2083 |
|
2084 // --------------------------------------------------------------------------- |
|
2085 // |
|
2086 // |
|
2087 // --------------------------------------------------------------------------- |
|
2088 // |
|
2089 TBool CFSEmailUiMailListVisualiser::AreAllMarkedItemsUnreadL() |
|
2090 { |
|
2091 FUNC_LOG; |
|
2092 |
|
2093 TBool ret(ETrue); |
|
2094 |
|
2095 if ( iTreeItemArray.Count() ) |
|
2096 { |
|
2097 for ( TInt i=0;i<iTreeItemArray.Count(); i++ ) |
|
2098 { |
|
2099 if ( !iMailList->IsNode(iTreeItemArray[i].iListItemId ) && |
|
2100 iMailList->IsMarked( iTreeItemArray[i].iListItemId )) |
|
2101 { |
|
2102 CFSEmailUiMailListModelItem* item = |
|
2103 static_cast<CFSEmailUiMailListModelItem*>( Model()->Item(i) ); |
|
2104 CFSMailMessage* confirmedMsgPtr(0); |
|
2105 confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL(iAppUi.GetActiveMailboxId(), |
|
2106 iMailFolder->GetFolderId(), item->MessagePtr().GetMessageId(), EFSMsgDataEnvelope ); |
|
2107 TBool isReadMessage = confirmedMsgPtr->IsFlagSet( EFSMsgFlag_Read ); |
|
2108 delete confirmedMsgPtr; |
|
2109 if ( isReadMessage ) |
|
2110 { |
|
2111 ret = EFalse; |
|
2112 break; |
|
2113 } |
|
2114 } |
|
2115 } |
|
2116 } |
|
2117 return ret; |
1994 } |
2118 } |
1995 |
2119 |
1996 // --------------------------------------------------------------------------- |
2120 // --------------------------------------------------------------------------- |
1997 // |
2121 // |
1998 // |
2122 // |
2045 // --------------------------------------------------------------------------- |
2169 // --------------------------------------------------------------------------- |
2046 // |
2170 // |
2047 // |
2171 // |
2048 // --------------------------------------------------------------------------- |
2172 // --------------------------------------------------------------------------- |
2049 // |
2173 // |
|
2174 void CFSEmailUiMailListVisualiser::ExitMarkingModeL() |
|
2175 { |
|
2176 FUNC_LOG; |
|
2177 iMarkingMode = EFalse; |
|
2178 UnmarkAllItemsL(); |
|
2179 // Change softkeys back to normal |
|
2180 SetViewSoftkeysL( R_FREESTYLE_EMAUIL_UI_SK_OPTIONS_BACK ); |
|
2181 // Change options menu back to normal |
|
2182 CEikMenuBar* menu = iAppUi.CurrentActiveView()->MenuBar(); |
|
2183 menu->StopDisplayingMenuBar(); |
|
2184 menu->SetMenuTitleResourceId(R_FSEMAILUI_MAILLIST_MENUBAR); |
|
2185 // Change background back to normal |
|
2186 DisplayMarkingModeBgL( EFalse ); |
|
2187 // Display drop down menu buttons |
|
2188 iNewEmailButton->ShowButtonL(); |
|
2189 iFolderListButton->ShowButtonL(); |
|
2190 iSortButton->ShowButtonL(); |
|
2191 iNewEmailButton->SetDimmed( EFalse ); |
|
2192 iFolderListButton->SetDimmed( EFalse ); |
|
2193 iSortButton->SetDimmed( EFalse ); |
|
2194 // Hide marking mode text on the place of drop down menus |
|
2195 RemoveMarkingModeTitleTextL(); |
|
2196 } |
|
2197 |
|
2198 // --------------------------------------------------------------------------- |
|
2199 // |
|
2200 // |
|
2201 // --------------------------------------------------------------------------- |
|
2202 // |
|
2203 void CFSEmailUiMailListVisualiser::EnterMarkingModeL() |
|
2204 { |
|
2205 FUNC_LOG; |
|
2206 iMarkingMode = ETrue; |
|
2207 iListMarkItemsState = ETrue; // shift-scrolling does marking after one item is marked |
|
2208 HandleCommandL( EFsEmailUiCmdActionsExpandAll ); |
|
2209 // Change softkeys for marking mode |
|
2210 SetViewSoftkeysL( R_FREESTYLE_EMAUIL_UI_SK_OPTIONS_CANCEL ); |
|
2211 // Change options menu for marking mode |
|
2212 CEikMenuBar* menu = iAppUi.CurrentActiveView()->MenuBar(); |
|
2213 menu->StopDisplayingMenuBar(); |
|
2214 menu->SetMenuTitleResourceId(R_FSEMAILUI_MAILLIST_MENUBAR_MARKING_MODE); |
|
2215 // Change background to marking mode |
|
2216 DisplayMarkingModeBgL( ETrue ); |
|
2217 // Hide drop down menu buttons |
|
2218 if( Layout_Meta_Data::IsLandscapeOrientation() ) |
|
2219 { |
|
2220 iNewEmailButton->SetDimmed(); |
|
2221 iFolderListButton->SetDimmed(); |
|
2222 iSortButton->SetDimmed(); |
|
2223 } |
|
2224 else |
|
2225 { |
|
2226 iNewEmailButton->HideButton(); |
|
2227 iFolderListButton->HideButton(); |
|
2228 iSortButton->HideButton(); |
|
2229 } |
|
2230 // Display marking mode text on the place of drop down menus |
|
2231 DisplayMarkingModeTitleTextL(); |
|
2232 } |
|
2233 |
|
2234 // --------------------------------------------------------------------------- |
|
2235 // |
|
2236 // |
|
2237 // --------------------------------------------------------------------------- |
|
2238 // |
|
2239 void CFSEmailUiMailListVisualiser::RefreshMarkingModeL() |
|
2240 { |
|
2241 FUNC_LOG; |
|
2242 if ( iMarkingMode ) |
|
2243 { |
|
2244 // Hide drop down menu buttons |
|
2245 if( !Layout_Meta_Data::IsLandscapeOrientation() ) |
|
2246 { |
|
2247 iNewEmailButton->ShowButtonL(); |
|
2248 iNewEmailButton->HideButton(); |
|
2249 iFolderListButton->ShowButtonL(); |
|
2250 iFolderListButton->HideButton(); |
|
2251 iSortButton->ShowButtonL(); |
|
2252 iSortButton->HideButton(); |
|
2253 } |
|
2254 else |
|
2255 { |
|
2256 iNewEmailButton->ShowButtonL(); |
|
2257 iNewEmailButton->SetDimmed(); |
|
2258 iFolderListButton->ShowButtonL(); |
|
2259 iFolderListButton->SetDimmed(); |
|
2260 iSortButton->ShowButtonL(); |
|
2261 iSortButton->SetDimmed(); |
|
2262 } |
|
2263 |
|
2264 RemoveMarkingModeTitleTextL(); |
|
2265 DisplayMarkingModeTitleTextL(); |
|
2266 } |
|
2267 } |
|
2268 |
|
2269 // --------------------------------------------------------------------------- |
|
2270 // |
|
2271 // |
|
2272 // --------------------------------------------------------------------------- |
|
2273 // |
|
2274 void CFSEmailUiMailListVisualiser::DisplayMarkingModeTitleTextL() |
|
2275 { |
|
2276 FUNC_LOG; |
|
2277 if (!iMarkingModeTextVisual) |
|
2278 { |
|
2279 const TRect sortButtonRect( iAppUi.LayoutHandler()->GetControlBarSortButtonRect() ); |
|
2280 const TRect newMailButtonRect( iAppUi.LayoutHandler()->GetControlBarNewEmailButtonRect() ); |
|
2281 |
|
2282 iMarkingModeTextRect = TRect( newMailButtonRect.iTl, sortButtonRect.iBr ); |
|
2283 iMarkingModeTextParentLayout = CAlfDeckLayout::AddNewL( *iMailListControl ); |
|
2284 iMarkingModeTextParentLayout->SetFlags( EAlfVisualFlagManualLayout ); |
|
2285 iMarkingModeTextParentLayout->SetRect( iMarkingModeTextRect ); |
|
2286 |
|
2287 iMarkingModeTextContentLayout = CAlfAnchorLayout::AddNewL( *iMailListControl, iMarkingModeTextParentLayout ); |
|
2288 |
|
2289 iMarkingModeTextVisual = CAlfTextVisual::AddNewL( *iMailListControl, iMarkingModeTextContentLayout ); |
|
2290 iMarkingModeTextVisual->SetWrapping( CAlfTextVisual::ELineWrapTruncate ); |
|
2291 if ( AknLayoutUtils::LayoutMirrored() ) |
|
2292 { |
|
2293 iMarkingModeTextVisual->SetAlign( EAlfAlignHRight, EAlfAlignVCenter ); |
|
2294 } |
|
2295 else |
|
2296 { |
|
2297 iMarkingModeTextVisual->SetAlign( EAlfAlignHLeft, EAlfAlignVCenter ); |
|
2298 } |
|
2299 iMarkingModeTextVisual->SetStyle( EAlfTextStyleTitle ); |
|
2300 TRgb color = iAppUi.LayoutHandler()->ListNodeTextColor(); |
|
2301 iMarkingModeTextVisual->SetColor ( color ); |
|
2302 if( !Layout_Meta_Data::IsLandscapeOrientation() ) |
|
2303 { |
|
2304 HBufC* msg = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_MARKINGMODE ); |
|
2305 iMarkingModeTextVisual->SetTextL( *msg ); |
|
2306 CleanupStack::PopAndDestroy( msg ); |
|
2307 } |
|
2308 else |
|
2309 { |
|
2310 iMarkingModeTextVisual->SetTextL( KNullDesC ); |
|
2311 } |
|
2312 } |
|
2313 } |
|
2314 |
|
2315 // --------------------------------------------------------------------------- |
|
2316 // |
|
2317 // |
|
2318 // --------------------------------------------------------------------------- |
|
2319 // |
|
2320 void CFSEmailUiMailListVisualiser::RemoveMarkingModeTitleTextL() |
|
2321 { |
|
2322 FUNC_LOG; |
|
2323 if (iMarkingModeTextVisual) |
|
2324 { |
|
2325 iMarkingModeTextVisual->SetTextL( KNullDesC ); |
|
2326 iMarkingModeTextVisual->RemoveAndDestroyAllD(); |
|
2327 iMarkingModeTextVisual = NULL; |
|
2328 iMarkingModeTextContentLayout->RemoveAndDestroyAllD(); |
|
2329 iMarkingModeTextContentLayout = NULL; |
|
2330 iMarkingModeTextParentLayout->RemoveAndDestroyAllD(); |
|
2331 iMarkingModeTextParentLayout = NULL; |
|
2332 } |
|
2333 } |
|
2334 |
|
2335 // --------------------------------------------------------------------------- |
|
2336 // |
|
2337 // |
|
2338 // --------------------------------------------------------------------------- |
|
2339 // |
|
2340 void CFSEmailUiMailListVisualiser::DisplayMarkingModeBgL( TBool aDisplay ) |
|
2341 { |
|
2342 FUNC_LOG; |
|
2343 if (aDisplay) |
|
2344 { |
|
2345 CAlfBrush* brush = iAppUi.FsTextureManager()->NewMailListMarkingModeBgBrushLC(); |
|
2346 iMailTreeListVisualizer->SetBackgroundBrushL( brush ); |
|
2347 CleanupStack::Pop( brush ); |
|
2348 } |
|
2349 else |
|
2350 { |
|
2351 iMailTreeListVisualizer->ClearBackground(); |
|
2352 } |
|
2353 } |
|
2354 |
|
2355 // --------------------------------------------------------------------------- |
|
2356 // |
|
2357 // |
|
2358 // --------------------------------------------------------------------------- |
|
2359 // |
2050 void CFSEmailUiMailListVisualiser::RefreshL( TFSMailMsgId* aFocusToMessage ) |
2360 void CFSEmailUiMailListVisualiser::RefreshL( TFSMailMsgId* aFocusToMessage ) |
2051 { |
2361 { |
2052 FUNC_LOG; |
2362 FUNC_LOG; |
2053 iMailList->RemoveAllL(); |
2363 iMailList->RemoveAllL(); |
2054 iTreeItemArray.Reset(); |
2364 iTreeItemArray.Reset(); |
3654 // <cmail> Prevent Download Manager opening with attachments |
3997 // <cmail> Prevent Download Manager opening with attachments |
3655 // case EFsEmailUiCmdDownloadManager: |
3998 // case EFsEmailUiCmdDownloadManager: |
3656 // iAppUi.EnterFsEmailViewL( DownloadManagerViewId ); |
3999 // iAppUi.EnterFsEmailViewL( DownloadManagerViewId ); |
3657 // break; |
4000 // break; |
3658 // </cmail> |
4001 // </cmail> |
3659 case EFsEmailUiCmdMarkMark: |
4002 case EFsEmailUiCmdMarkingModeFromPopUp: |
3660 { |
4003 { |
3661 iListMarkItemsState = ETrue; // shift-scrolling does marking after one item is marked |
4004 EnterMarkingModeL(); |
3662 iMailList->MarkItemL( iMailList->FocusedItem(), ETrue ); |
4005 // Mark current item first |
3663 } |
4006 TInt focusedItem = iMailList->FocusedItem(); |
3664 break; |
4007 if ( focusedItem > 0 && iFocusedControl == EMailListComponent ) |
3665 case EFsEmailUiCmdMarkMarkAll: |
4008 { |
3666 { |
4009 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
3667 MarkAllItemsL(); |
4010 if ( item && item->ModelItemType() == ETypeMailItem ) |
3668 } |
4011 { |
3669 break; |
4012 iMailList->MarkItemL( iMailList->FocusedItem(), ETrue ); |
3670 case EFsEmailUiCmdMarkUnmark: |
4013 } |
3671 { |
4014 else if ( item && item->ModelItemType() == ETypeSeparator ) |
3672 iListMarkItemsState = EFalse; // shift-scrolling does unmarking after one item is unmarked |
4015 { |
3673 iMailList->MarkItemL( iMailList->FocusedItem(), EFalse ); |
4016 TInt index = HighlightedIndex(); |
3674 } |
4017 MarkItemsUnderSeparatorL( ETrue, index ); |
3675 break; |
4018 } |
3676 case EFsEmailUiCmdMarkUnmarkAll: |
4019 } |
3677 { |
4020 } |
3678 UnmarkAllItemsL(); |
4021 break; |
3679 } |
4022 case EFsEmailUiCmdMarkingMode: |
3680 break; |
4023 { |
3681 |
4024 EnterMarkingModeL(); |
3682 case EFsEmailUiCmdMarkSubAll: |
4025 } |
3683 { |
4026 break; |
3684 MarkAllItemsL(); |
4027 case EFsEmailUiCmdMarkingModeDelete: |
3685 } |
4028 { |
3686 break; |
4029 DeleteMessagesL(); |
3687 case EFsEmailUiCmdUnmarkSubAll: |
4030 } |
3688 { |
4031 break; |
3689 UnmarkAllItemsL(); |
4032 case EFsEmailUiCmdMarkingModeUnread: |
3690 } |
4033 { |
3691 break; |
4034 ChangeReadStatusOfMarkedL( EFalse ); |
|
4035 ExitMarkingModeL(); |
|
4036 } |
|
4037 break; |
|
4038 case EFsEmailUiCmdMarkingModeRead: |
|
4039 { |
|
4040 ChangeReadStatusOfMarkedL( ETrue ); |
|
4041 ExitMarkingModeL(); |
|
4042 } |
|
4043 break; |
|
4044 case EFsEmailUiCmdMarkingModeFollowUp: |
|
4045 { |
|
4046 SetMessageFollowupFlagL(); |
|
4047 } |
|
4048 break; |
|
4049 case EFsEmailUiCmdMarkingModeMarkAll: |
|
4050 { |
|
4051 MarkAllItemsL(); |
|
4052 } |
|
4053 break; |
|
4054 case EFsEmailUiCmdMarkingModeUnmarkAll: |
|
4055 { |
|
4056 UnmarkAllItemsL(); |
|
4057 } |
|
4058 break; |
3692 case EFsEmailUiCmdReadEmail: |
4059 case EFsEmailUiCmdReadEmail: |
3693 { |
4060 { |
3694 iAppUi.StartReadingEmailsL(); |
4061 iAppUi.StartReadingEmailsL(); |
3695 } |
4062 } |
3696 break; |
4063 break; |
4510 if ( iFocusedControl == EMailListComponent ) |
4859 if ( iFocusedControl == EMailListComponent ) |
4511 { |
4860 { |
4512 TInt modelCount( modelCount = iModel->Count() ); |
4861 TInt modelCount( modelCount = iModel->Count() ); |
4513 if ( modelCount ) // Safety check |
4862 if ( modelCount ) // Safety check |
4514 { |
4863 { |
4515 CFSEmailUiMailListModelItem* item = |
4864 if (iMarkingMode) |
4516 dynamic_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) ); |
|
4517 // MAIL ITEM; OPEN MAIL |
|
4518 if ( item && item->ModelItemType() == ETypeMailItem ) |
|
4519 { |
4865 { |
4520 CFSMailMessage* messagePtr = &item->MessagePtr(); |
4866 //Do not open mail or expand/collapse separator in marking mode |
4521 if ( messagePtr ) |
4867 DoHandleListItemOpenL(); |
|
4868 } |
|
4869 else |
|
4870 { |
|
4871 CFSEmailUiMailListModelItem* item = |
|
4872 dynamic_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) ); |
|
4873 // MAIL ITEM; OPEN MAIL |
|
4874 if ( item && item->ModelItemType() == ETypeMailItem ) |
4522 { |
4875 { |
4523 TIMESTAMP( "Open email selected from message list" ); |
4876 CFSMailMessage* messagePtr = &item->MessagePtr(); |
4524 OpenHighlightedMailL(); |
4877 if ( messagePtr ) |
|
4878 { |
|
4879 TIMESTAMP( "Open email selected from message list" ); |
|
4880 OpenHighlightedMailL(); |
|
4881 return EKeyWasConsumed; |
|
4882 } |
|
4883 } |
|
4884 // SEPARAOR ITEM; COLLAPSE / EXPAND NODE |
|
4885 else if ( item && item->ModelItemType() == ETypeSeparator ) |
|
4886 { |
|
4887 ExpandOrCollapseL(); |
4525 return EKeyWasConsumed; |
4888 return EKeyWasConsumed; |
4526 } |
4889 } |
4527 } |
|
4528 // SEPARAOR ITEM; COLLAPSE / EXPAND NODE |
|
4529 else if ( item && item->ModelItemType() == ETypeSeparator ) |
|
4530 { |
|
4531 if ( iMailList->IsExpanded( iMailList->FocusedItem()) ) |
|
4532 { |
|
4533 ExpandOrCollapseL(); |
|
4534 } |
|
4535 else |
|
4536 { |
|
4537 ExpandOrCollapseL(); |
|
4538 } |
|
4539 return EKeyWasConsumed; |
|
4540 } |
4890 } |
4541 } |
4891 } |
4542 } |
4892 } |
4543 else |
4893 else |
4544 { |
4894 { |
4725 FUNC_LOG; |
5075 FUNC_LOG; |
4726 if ( 0 < iModel->Count() ) // Safety check |
5076 if ( 0 < iModel->Count() ) // Safety check |
4727 { |
5077 { |
4728 CFSEmailUiMailListModelItem* item = |
5078 CFSEmailUiMailListModelItem* item = |
4729 dynamic_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) ); |
5079 dynamic_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) ); |
4730 // MAIL ITEM; OPEN MAIL |
5080 if ( iMarkingMode ) |
4731 if ( item && item->ModelItemType() == ETypeMailItem ) |
5081 { |
4732 { |
5082 // In marking mode. Mark/unmark it instead of opening it. |
4733 CFSMailMessage* messagePtr = &item->MessagePtr(); |
5083 if ( item && item->ModelItemType() == ETypeMailItem ) |
4734 if ( messagePtr ) |
5084 { |
4735 { |
5085 if (iMailList->IsMarked( iMailList->FocusedItem() )) |
4736 TIMESTAMP( "Open email selected from message list" ); |
5086 { |
4737 OpenHighlightedMailL(); |
5087 iMailList->MarkItemL( iMailList->FocusedItem(), EFalse ); |
4738 } |
5088 } |
4739 |
5089 else |
4740 // Give feedback to user (vibration) |
5090 { |
4741 iTouchFeedBack->InstantFeedback(ETouchFeedbackBasic); |
5091 iMailList->MarkItemL( iMailList->FocusedItem(), ETrue ); |
4742 } |
5092 } |
4743 // SEPARATOR ITEM; COLLAPSE / EXPAND NODE |
5093 } |
4744 else if ( item && item->ModelItemType() == ETypeSeparator ) |
5094 else if ( item && item->ModelItemType() == ETypeSeparator ) |
4745 { |
5095 { |
4746 ExpandOrCollapseL(); |
5096 TInt index = HighlightedIndex(); |
4747 SetMskL(); |
5097 if ( AreAllItemsMarkedUnderSeparatorL( index ) ) |
4748 } |
5098 { |
|
5099 MarkItemsUnderSeparatorL( EFalse, index ); |
|
5100 } |
|
5101 else |
|
5102 { |
|
5103 MarkItemsUnderSeparatorL( ETrue, index ); |
|
5104 } |
|
5105 } |
|
5106 } |
|
5107 else |
|
5108 { |
|
5109 |
|
5110 // MAIL ITEM; OPEN MAIL |
|
5111 if ( item && item->ModelItemType() == ETypeMailItem ) |
|
5112 { |
|
5113 CFSMailMessage* messagePtr = &item->MessagePtr(); |
|
5114 if ( messagePtr ) |
|
5115 { |
|
5116 TIMESTAMP( "Open email selected from message list" ); |
|
5117 OpenHighlightedMailL(); |
|
5118 } |
|
5119 |
|
5120 // Give feedback to user (vibration) |
|
5121 iTouchFeedBack->InstantFeedback(ETouchFeedbackBasic); |
|
5122 } |
|
5123 // SEPARATOR ITEM; COLLAPSE / EXPAND NODE |
|
5124 else if ( item && item->ModelItemType() == ETypeSeparator ) |
|
5125 { |
|
5126 ExpandOrCollapseL(); |
|
5127 SetMskL(); |
|
5128 } |
|
5129 } |
4749 } |
5130 } |
4750 } |
5131 } |
4751 |
5132 |
4752 // --------------------------------------------------------------------------- |
5133 // --------------------------------------------------------------------------- |
4753 // CFSEmailUiMailListVisualiser::DoHandleControlBarOpenL |
5134 // CFSEmailUiMailListVisualiser::DoHandleControlBarOpenL |
5748 FUNC_LOG; |
6162 FUNC_LOG; |
5749 |
6163 |
5750 if ( aItemData && aItemVis && aMsgPtr ) |
6164 if ( aItemData && aItemVis && aMsgPtr ) |
5751 { |
6165 { |
5752 CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( aMsgPtr, *iAppUi.FsTextureManager() ); |
6166 CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( aMsgPtr, *iAppUi.FsTextureManager() ); |
5753 |
|
5754 aItemData->SetIcon( *itemTexture ); |
6167 aItemData->SetIcon( *itemTexture ); |
5755 |
6168 TInt variety( Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0 ); |
5756 // Set font according the read status |
6169 CAlfTextStyle& textStyle = |
5757 if ( aMsgPtr->IsFlagSet( EFSMsgFlag_Read ) ) |
6170 iAppUi.LayoutHandler()->FSTextStyleFromLayoutL( |
5758 { |
6171 AknLayoutScalable_Apps::list_single_dyc_row_text_pane_t1( variety ) ); |
5759 CAlfTextStyle* textStyle = iAppUi.LayoutHandler()->FSTextStyleFromIdL( EFSFontTypeSmall ); |
6172 const TBool isNotRead( !aMsgPtr->IsFlagSet( EFSMsgFlag_Read ) ); |
5760 aItemVis->SetTextStyleId ( textStyle->Id() ); |
6173 textStyle.SetBold( isNotRead ); |
5761 aItemVis->SetTextBold( EFalse ); |
6174 aItemVis->SetTextBold( isNotRead ); |
5762 } |
6175 aItemVis->SetTextStyleId ( textStyle.Id() ); |
5763 else |
|
5764 { |
|
5765 CAlfTextStyle* textStyle = iAppUi.LayoutHandler()->FSTextStyleFromIdL( EFSFontTypeSmallBold ); |
|
5766 aItemVis->SetTextStyleId ( textStyle->Id() ); |
|
5767 aItemVis->SetTextBold( ETrue ); |
|
5768 } |
|
5769 |
|
5770 // Set follow up flag icon |
6176 // Set follow up flag icon |
5771 if ( aMsgPtr->IsFlagSet( EFSMsgFlag_FollowUp ) ) |
6177 if ( aMsgPtr->IsFlagSet( EFSMsgFlag_FollowUp ) ) |
5772 { |
6178 { |
5773 aItemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagList ) ); |
6179 aItemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagList ) ); |
5774 aItemVis->SetFlagIconVisible( ETrue ); |
6180 aItemVis->SetFlagIconVisible( ETrue ); |
5791 // --------------------------------------------------------------------------- |
6197 // --------------------------------------------------------------------------- |
5792 // |
6198 // |
5793 void CFSEmailUiMailListVisualiser::RemoveMsgItemsFromListIfFoundL( const RArray<TFSMailMsgId>& aEntryIds ) |
6199 void CFSEmailUiMailListVisualiser::RemoveMsgItemsFromListIfFoundL( const RArray<TFSMailMsgId>& aEntryIds ) |
5794 { |
6200 { |
5795 FUNC_LOG; |
6201 FUNC_LOG; |
5796 for ( TInt i=0 ; i<aEntryIds.Count() ; ++i ) |
6202 |
|
6203 TBool itemFound = EFalse; |
|
6204 for ( TInt i=0 ; i<aEntryIds.Count() ; ++i ) |
5797 { |
6205 { |
5798 const TFSMailMsgId& entryId = aEntryIds[i]; |
6206 const TFSMailMsgId& entryId = aEntryIds[i]; |
5799 if ( !entryId.IsNullId() ) |
6207 if ( !entryId.IsNullId() ) |
5800 { |
6208 { |
5801 TInt idx = ItemIndexFromMessageId( entryId ); |
6209 TInt idx = ItemIndexFromMessageId( entryId ); |
5802 if ( idx >= 0 ) |
6210 if ( idx >= 0 ) |
5803 { |
6211 { |
5804 iMailList->RemoveL( iTreeItemArray[idx].iListItemId ); // remove from list |
6212 iMailList->RemoveL( iTreeItemArray[idx].iListItemId ); // remove from list |
5805 iTreeItemArray.Remove( idx ); // remove from internal array. |
6213 iTreeItemArray.Remove( idx ); // remove from internal array. |
5806 iModel->RemoveAndDestroy( idx ); // Remove from model |
6214 iModel->RemoveAndDestroy( idx ); // Remove from model |
|
6215 itemFound = ETrue; |
5807 } |
6216 } |
5808 } |
6217 } |
5809 } |
6218 } |
5810 if ( aEntryIds.Count() > 0 ) |
6219 |
5811 { |
6220 if ( !itemFound ) |
5812 if ( iMailListUpdater ) |
6221 { |
5813 { |
6222 return; // no items to be removed |
5814 if ( iMailListUpdater->IsActive() ) |
6223 } |
5815 { |
6224 |
5816 iMailListUpdater->Stop(); |
|
5817 } |
|
5818 iMailListUpdater->StartL(); |
|
5819 } |
|
5820 } |
|
5821 if ( iNodesInUse ) |
6225 if ( iNodesInUse ) |
5822 { |
6226 { |
5823 RemoveUnnecessaryNodesL(); |
6227 RemoveUnnecessaryNodesL(); |
5824 } |
6228 } |
5825 |
6229 |