--- a/vpnui/vpnmanagementui/src/vpnmanagementuilogcontainer.cpp Thu Aug 19 10:54:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,692 +0,0 @@
-/*
-* Copyright (c) 2003-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: The container is responsible of showing log viewer.
-*
-*/
-
-
-
-// INCLUDE FILES
-#include <eikclbd.h>
-#include <AknIconArray.h>
-#include <aknlists.h>
-#include <aknmessagequerydialog.h> //for LOG details message query
-#include <vpnmanagementuirsc.rsg>
-#include "vpnuiloader.h"
-#include "vpnmanagementuilogcontainer.h"
-#include "vpnmanagementuidefs.h"
-#include "vpnmanagementui.hrh"
-#ifdef __SCALABLE_ICONS
-#include <AknsUtils.h>
-#include <vpnmanagementui.mbg>
-#endif //__SCALABLE_ICONS
-
-
-#ifdef __SERIES60_HELP
-#include <csxhelp/vpn.hlp.hrh> // for help context of VPN Management UI
-#endif //__SERIES60_HELP
-
-//CONSTANTS
-const TInt KVpnLogNumberOfIcons = 3;
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::CVpnManagementUiLogContainer(
-// CVpnManagementUiLogView& aParent, CVpnUiLoader& aLoader)
-// Constructor with parent
-// ---------------------------------------------------------
-//
-CVpnManagementUiLogContainer::CVpnManagementUiLogContainer(
- CVpnManagementUiLogView& aParent, CVpnUiLoader& aLoader ) :
- iParent ( aParent ), iLoader ( aLoader )
- {
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::~CVpnManagementUiLogContainer()
-// Destructor
-// ---------------------------------------------------------
-//
-CVpnManagementUiLogContainer::~CVpnManagementUiLogContainer()
- {
- if(iEventViewer)
- {
- delete iEventViewer;
- iEventViewer = NULL;
- }
- if(iLogList)
- {
- delete iLogList;
- iLogList = NULL;
- }
- delete iListBox;
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::ConstructL(
-// const TRect& aRect, TInt& aCurrentPosition, TInt& aTopItem)
-// EPOC two phased constructor
-// ---------------------------------------------------------
-//
-void CVpnManagementUiLogContainer::ConstructL(
- const TRect& aRect, TInt& /*aCurrentPosition*/ )
- {
- CreateWindowL();
- CreateListBoxL();
-
- ShowLogsL();
- SetRect( aRect );
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::SizeChanged()
-// Called by framework when the view size is changed
-// ---------------------------------------------------------
-//
-void CVpnManagementUiLogContainer::SizeChanged()
- {
- iListBox->SetRect(Rect());
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::FocusChanged(TDrawNow aDrawNow)
-// ---------------------------------------------------------
-//
-void CVpnManagementUiLogContainer::FocusChanged(TDrawNow aDrawNow)
- {
- if ( iListBox )
- {
- iListBox->SetFocus( IsFocused(), aDrawNow );
- }
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::HandleResourceChange
-// ---------------------------------------------------------
-//
-void CVpnManagementUiLogContainer::HandleResourceChange( TInt aType )
- {
- CCoeControl::HandleResourceChange(aType);
-
- //Handle change in layout orientation
- if (aType == KEikDynamicLayoutVariantSwitch || aType == KAknsMessageSkinChange )
- {
- iListBox->HandleResourceChange(aType);
- TRect mainPaneRect;
- AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
- SetRect(mainPaneRect);
- DrawNow();
- }
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::HandleListBoxEventL(
-// CEikListBox* /*aListBox*/, TListBoxEvent aEventType)
-// ---------------------------------------------------------
-//
-void CVpnManagementUiLogContainer::HandleListBoxEventL(
- CEikListBox* /*aListBox*/, TListBoxEvent aEventType )
- {
- switch(aEventType)
- {
- case EEventEnterKeyPressed:
- case EEventItemSingleClicked:
- iParent.HandleCommandL(EVpnUiCmdLogDetails);
- break;
- default:
- //Do nothing
- break;
- }
- }
-enum { EListBoxControl, ENumberOfControls };
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::CountComponentControls() const
-// ---------------------------------------------------------
-//
-TInt CVpnManagementUiLogContainer::CountComponentControls() const
- {
- // return number of controls inside this container
- return ENumberOfControls; // return nbr of controls inside this container
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::ComponentControl(TInt aIndex) const
-// ---------------------------------------------------------
-//
-CCoeControl* CVpnManagementUiLogContainer::ComponentControl(TInt aIndex) const
- {
- switch ( aIndex )
- {
- case 0:
- return iListBox;
- default:
- return NULL;
- }
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::HandleControlEventL(
-// CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
-// Cannot be changed to non-leaving function.
-// L-function is required by the class definition, even if empty.
-// ---------------------------------------------------------
-//
-void CVpnManagementUiLogContainer::HandleControlEventL(
- CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
- {
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::OfferKeyEventL(
-// const TKeyEvent& aKeyEvent, TEventCode aType)
-// Handles the key events OK button, arrow keys, delete key.
-// OK button show VPN log details,
-// if list is empty then arrow keys and OK inactive.
-// Delete active only if list not empty.
-// ---------------------------------------------------------
-//
-TKeyResponse CVpnManagementUiLogContainer::OfferKeyEventL(
- const TKeyEvent& aKeyEvent, TEventCode aType)
- {
- TKeyResponse retval = EKeyWasNotConsumed;
- if ( aType==EEventKey )
- {
- if ( (aKeyEvent.iCode == EKeyOK || aKeyEvent.iCode == EKeyEnter) && // select or enter
- iListBox->CurrentItemIndex() > -1) //This is for empty list
- {
- // Selection key pressed.
- LogDetailsL(iListBox->CurrentItemIndex());
-
- retval = EKeyWasConsumed;
- }
-
- else if ( aKeyEvent.iCode == EKeyUpArrow )
- {
- retval = iListBox->OfferKeyEventL( aKeyEvent, aType );
- }
- else if ( aKeyEvent.iCode == EKeyDownArrow )
- {
- TEventProperties eventProperties;
- HBufC* eventText = NULL;
- TInt currentPosition = iListBox->CurrentItemIndex();
- if((iEventViewer != NULL) && (iLogList->Count() > 0))
- {
- iEventViewer->GetEventUsingEventNumber(eventText, iLogList->At(iLogList->Count() - 1).iEventNumber, eventProperties);
- delete eventText;
- }
- UpdateListBoxL(currentPosition);
- retval = iListBox->OfferKeyEventL( aKeyEvent, aType );
- }
- }
- else
- {
- retval = iListBox->OfferKeyEventL( aKeyEvent, aType );
- }
-
-
- return retval;
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::CreateListBoxL()
-// Creates listbox, sets empty listbox text.
-// ---------------------------------------------------------
-//
-void CVpnManagementUiLogContainer::CreateListBoxL()
- {
- iListBox = new( ELeave ) CAknDoubleGraphicStyleListBox;
- iListBox->SetContainerWindowL( *this );
- iListBox->ConstructL( this, EAknListBoxSelectionList );
- iListBox->CreateScrollBarFrameL( ETrue );
- iListBox->ScrollBarFrame()->
- SetScrollBarVisibilityL( CEikScrollBarFrame::EOff,CEikScrollBarFrame::EAuto );
- iListBox->SetListBoxObserver(this);
-
-#ifdef __SCALABLE_ICONS
-
- CArrayPtr< CGulIcon >* icons = new( ELeave ) CAknIconArray( KVpnLogNumberOfIcons );
- CleanupStack::PushL( icons );
-
- MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-
- TFileName fileName = GetIconFilenameL();
-
- icons->AppendL( AknsUtils::CreateGulIconL( skinInstance,
- KAknsIIDQgnPropVpnLogInfo,
- fileName,
- EMbmVpnmanagementuiQgn_prop_vpn_log_info,
- EMbmVpnmanagementuiQgn_prop_vpn_log_info_mask ) );
-
- icons->AppendL( AknsUtils::CreateGulIconL( skinInstance,
- KAknsIIDQgnPropVpnLogWarn,
- fileName,
- EMbmVpnmanagementuiQgn_prop_vpn_log_warn,
- EMbmVpnmanagementuiQgn_prop_vpn_log_warn_mask ) );
-
- icons->AppendL( AknsUtils::CreateGulIconL( skinInstance,
- KAknsIIDQgnPropVpnLogError,
- fileName,
- EMbmVpnmanagementuiQgn_prop_vpn_log_error,
- EMbmVpnmanagementuiQgn_prop_vpn_log_error_mask ) );
-
- iListBox->ItemDrawer()->ColumnData()->SetIconArray( icons );
-
- CleanupStack::Pop(); // icons
-#else
- CAknIconArray* icons = new(ELeave) CAknIconArray(KVpnLogNumberOfIcons);
- icons->ConstructFromResourceL(R_VPN_LOG_ICON_ARRAY);
-
- iListBox->ItemDrawer()->ColumnData()->SetIconArray(icons);
-
-#endif //__SCALABLE_ICONS
-
- EmptyViewTextL();
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::EmptyViewTextL()
-// Reads text from resource to empty log view
-// and put text to the listbox.
-// ---------------------------------------------------------
-//
-void CVpnManagementUiLogContainer::EmptyViewTextL()
- {
- HBufC* stringHolder = StringLoader::LoadLC( R_VPN_LOG_EMPTY );
- iListBox->View()->SetListEmptyTextL( *stringHolder );
- CleanupStack::PopAndDestroy(); // stringHolder
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::RemoveAllFromListBoxL()
-// Removes all from listbox.
-// ---------------------------------------------------------
-//
-void CVpnManagementUiLogContainer::RemoveAllFromListBoxL()
- {
- MDesCArray* itemList = iListBox->Model()->ItemTextArray();
- CDesCArray* itemArray = (CDesCArray*) itemList;
- itemArray->Reset();
- iListBox->HandleItemRemovalL();
- iListItemCount = 0;
- DrawNow();
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::DrawListBoxL(TInt aCurrentPosition, TInt aTopItem)
-// Draws listbox, fetches graphic icons for markable list
-// ---------------------------------------------------------
-//
-void CVpnManagementUiLogContainer::DrawListBoxL(
- TInt aCurrentPosition, TInt aTopItem )
- {
-
- if (aCurrentPosition >= 0)
- {
- iListBox->SetTopItemIndex( aTopItem );
- iListBox->SetCurrentItemIndex( aCurrentPosition );
- }
- ActivateL();
- DrawNow();
-
- }
-
-void CVpnManagementUiLogContainer::ShowLogsL()
- {
- iListItemCount = 0;
-
- //Create CEventViewer object
- delete iEventViewer;
- iEventViewer = NULL;
- TRAPD(error, iEventViewer = CEventViewer::NewL());
- if (error != KErrNone)
- return;
-
- delete iLogList;
- iLogList = NULL;
- iLogList = new (ELeave) CArrayFixFlat<TEventProperties>(3);
-
- CDesCArrayFlat* itemTextArray = static_cast<CDesCArrayFlat*>(iListBox->Model()->ItemTextArray());
-
- itemTextArray->Reset();
- iListBox->Reset();
-
- TEventProperties eventProperties;
- HBufC* eventText = NULL;
-
- //First item
- TBuf<100> itemName;
- TInt ret = iEventViewer->GetMostRecentEvent(eventText, eventProperties);
- if(ret==KErrNone)
- {
- CleanupStack::PushL(eventText);
-
- iLogList->AppendL(eventProperties);
-
- //append index of icon array
- itemName.AppendNum(GetIconArrayIndex(eventProperties.iCategory));
-
- itemName.Append(_L("\t"));
-
- TPtr eventTextDesc(eventText->Des());
- TInt length = eventTextDesc.Length();
- if(length > KMaxLogListLength)
- {
- eventTextDesc.Delete(KMaxLogListLength, length-KMaxLogListLength);
- }
- itemName.Append(eventTextDesc);
- CleanupStack::PopAndDestroy(); //eventText
- itemName.Append(_L("\t"));
-
- //Format time stamp for LOG view
- TBuf<2 * KMaxLengthTextDateString + 3> logEntry;
- TimeLogEntryL(logEntry, eventProperties.iTimeStamp);
-
- itemName.Append(logEntry);
-
- itemTextArray->AppendL(itemName);
- iListBox->HandleItemAdditionL();
- iListItemCount++;
- //Get rest of events
- while (ret==KErrNone)
- {
- TInt currentPosition = iListBox->CurrentItemIndex();
- ret = UpdateListBoxL(currentPosition);
- }
-
- }
-
- }
-
-TInt CVpnManagementUiLogContainer::GetIconArrayIndex(TLogCategory2& aCategory)
- {
- //index of icon array
- if (aCategory == ELogInfo)
- return 0; //index of icon array
- else if (aCategory == ELogWarning)
- return 1; //index of icon array
- else if (aCategory == ELogError)
- return 2; //index of icon array
- else
- return 2;
- }
-
-
-void CVpnManagementUiLogContainer::TimeLogEntryL(TDes& aDes, TTime aTime)
- {
- // Date
- HBufC* dateFormat = StringLoader::LoadLC(R_QTN_DATE_USUAL_WITH_ZERO);
- TBuf<KMaxLengthTextDateString> dateString;
- aTime.FormatL(dateString, *dateFormat);
- AknTextUtils::DisplayTextLanguageSpecificNumberConversion(dateString);
- CleanupStack::PopAndDestroy(); //dateFormat
-
- // Time
- dateFormat = StringLoader::LoadLC(R_QTN_TIME_USUAL_WITH_ZERO);
- TBuf<KMaxLengthTextDateString> timeString;
- aTime.FormatL(timeString, *dateFormat);
- AknTextUtils::DisplayTextLanguageSpecificNumberConversion(timeString);
- CleanupStack::PopAndDestroy(); //dateFormat
-
-// TBuf<KMaxShortDateFormatSpec*2> dateBuffer; // KMaxShortDateFormatSpec is defined in e32std.h
-// TBuf<KMaxTimeFormatSpec*2> timeBuffer; // KMaxTimeFormatSpec is defined in e32std.h
-
- TBuf<2 * KMaxLengthTextDateString + 3> logEntry;
-
- TTime now;
- now.HomeTime();
- if ( (now.YearsFrom( aTime ).Int() > 0) ||
- (aTime.DayNoInYear() < now.DayNoInYear()) )
- {
- logEntry.Append(dateString);
- logEntry.Append(KVpnManagementUiSpaceHyphenSpace);
- }
-
- logEntry.Append(timeString);
- aDes = logEntry;
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::UpdateListBoxL(TInt& aCurrentPosition)
-//
-// ---------------------------------------------------------
-//
-TInt CVpnManagementUiLogContainer::UpdateListBoxL(TInt& /*aCurrentPosition*/)
- {
- MDesCArray* itemList = iListBox->Model()->ItemTextArray();
- CDesCArray* itemArray = ( CDesCArray* )itemList;
-
- TEventProperties eventProperties;
- HBufC* eventText = NULL;
- TBuf<100> itemName;
-
- //next item
- if(iEventViewer != NULL)
- {
- TInt ret = iEventViewer->GetPreviousEvent(eventText, eventProperties);
- if(ret==KErrNone)
- {
- CleanupStack::PushL(eventText);
- iLogList->AppendL(eventProperties);
-
- //append index of icon array
- itemName.AppendNum(GetIconArrayIndex(eventProperties.iCategory));
-
- itemName.Append(_L("\t"));
-
- TPtr eventTextDesc(eventText->Des());
- TInt length = eventTextDesc.Length();
- if(length > KMaxLogListLength)
- eventTextDesc.Delete(KMaxLogListLength, length-KMaxLogListLength);
- itemName.Append(eventTextDesc);
- CleanupStack::PopAndDestroy(); //eventText
- itemName.Append(_L("\t"));
-
- //Format time stamp for LOG view
- TBuf<2 * KMaxLengthTextDateString + 3> logEntry;
- TimeLogEntryL(logEntry, eventProperties.iTimeStamp);
-
- itemName.Append(logEntry);
-
- itemArray->AppendL(itemName);
- iListBox->HandleItemAdditionL();
- iListItemCount++;
- }
-
- iParent.SetMiddleSoftKeyL(ETrue);
- return ret;
-
- }
-
- iParent.SetMiddleSoftKeyL(ETrue);
- return KErrNotFound;
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::LogDetailsL()
-// Creates the log details message query
-// Appends strings from resource and eventviewer to one
-// message body text and displays it.
-// ---------------------------------------------------------
-//
-void CVpnManagementUiLogContainer::LogDetailsL(TInt aIndex)
- {
- TEventProperties eventProperties;
- eventProperties = iLogList->At(aIndex);
-
- HBufC* message = NULL;
- HBufC* eventText = NULL;
- iEventViewer->GetEventUsingEventNumber(eventText, eventProperties.iEventNumber, eventProperties);
- CleanupStack::PushL( eventText );
-
- if(eventProperties.iCategory == ELogInfo)
- {
- // Info:
- message = StringLoader::LoadLC( R_VPN_DETAIL_LOG_ENTRY_INFO );
- }
-
- if(eventProperties.iCategory == ELogWarning)
- {
- // Warning:
- message = StringLoader::LoadLC( R_VPN_DETAIL_LOG_ENTRY_WARNING );
- }
-
- if(eventProperties.iCategory == ELogError)
- {
- // Error:
- message = StringLoader::LoadLC( R_VPN_DETAIL_LOG_ENTRY_ERROR );
- }
-
- __ASSERT_DEBUG(message != NULL, User::Invariant());
-
- HBufC* messageText = HBufC::NewLC(message->Length() + eventText->Length() + 2);
-
- messageText->Des().Append(*message); //Append category
- messageText->Des().Append(KVpnManagementUiSpace);
- messageText->Des().Append(*eventText); //Append log entry message
-
- // Heading is the date and the time of the log entry
- //Format time stamp for LOG view
- TBuf<2 * KMaxLengthTextDateString + 3> logEntry;
- TimeLogEntryL(logEntry, eventProperties.iTimeStamp);
-
- CAknMessageQueryDialog* dlg = CAknMessageQueryDialog::NewL(*messageText);
-
- CleanupStack::PopAndDestroy(3); // message Text, message, eventText
-
- dlg->PrepareLC(R_MESSAGE_QUERY_DETAILS_VIEW);
- dlg->QueryHeading()->SetTextL(logEntry);
- dlg->RunLD();
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::ReadResourceL(HBufC& aText, TInt aResource);
-// Reads text from resource
-// ---------------------------------------------------------
-//
-void CVpnManagementUiLogContainer::ReadResourceL(HBufC& aText, TInt aResource)
- {
- HBufC* text = StringLoader::LoadLC( aResource );
- aText.Des().Append(text->Des());
- CleanupStack::PopAndDestroy(); // text
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::ClearLogL()
-// Asks confirmation from user.
-// Clears VPN log view.
-// Calls eventviewer to clear log.
-// ---------------------------------------------------------
-//
-void CVpnManagementUiLogContainer::ClearLogL()
- {
- // Read query text from resource
- HBufC* temp;
- temp = StringLoader::LoadLC( R_VPN_QUEST_CLEAR_LOG );
-
- // Asks confirmation from user
- CAknQueryDialog* query = CAknQueryDialog::NewL( CAknQueryDialog::EConfirmationTone );
- TInt retval = query->ExecuteLD( R_CONFIRMATION_QUERY, *temp );
- CleanupStack::PopAndDestroy(); // temp
- if ( retval )
- {
- // Clear VPN log listbox
- RemoveAllFromListBoxL();
-
- // Calls eventviewer to clear log.
- iEventViewer->DeleteLogFile();
- }
-
- iParent.SetMiddleSoftKeyL(ETrue);
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::IconArrayResourceId
-// Loads Mark/Unmark icons from resource
-// ---------------------------------------------------------
-//
-TInt CVpnManagementUiLogContainer::IconArrayResourceId() const
- {
- return 0; //TVA
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::CreateIconArrayL
-// Creates Icon Array
-// ---------------------------------------------------------
-//
-CAknIconArray* CVpnManagementUiLogContainer::CreateIconArrayL() const
- {
- CAknIconArray* icons = new (ELeave) CAknIconArray( KGranularity );
- CleanupStack::PushL( icons );
- icons->ConstructFromResourceL( IconArrayResourceId() );
- CleanupStack::Pop(); // icons
- return icons;
- }
-
-TFileName CVpnManagementUiLogContainer::GetIconFilenameL()
- {
- RFs& fsSession = CCoeEnv::Static()->FsSession();
-
- TDriveList driveList;
- User::LeaveIfError(fsSession.DriveList(driveList));
-
- TInt driveNumber;
- TDriveName drive = _L("a:");
-
- TFileName iconName;
-
- for (driveNumber = EDriveA, drive[0] = 'a';
- driveNumber <= EDriveZ;
- driveNumber++, drive[0]++)
- {
- if (!driveList[driveNumber])
- {
- continue;
- }
-
- TParse parse;
- parse.Set(drive, &KVpnLogIcons, NULL);
- iconName.Copy(parse.DriveAndPath());
- iconName.Append(parse.Name());
- iconName.Append(_L(".mif"));
-
- TEntry entry;
- if (fsSession.Entry(iconName, entry) == KErrNone)
- {
- //icon founded
- break;
- }
- }
-
- return iconName;
- }
-
-// ---------------------------------------------------------
-// CVpnManagementUiLogContainer::GetHelpContext
-// This function is called when Help application is launched.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-#ifdef __SERIES60_HELP
-void CVpnManagementUiLogContainer::GetHelpContext(
- TCoeHelpContext& aContext ) const
- {
- aContext.iMajor = KUidVpnManagementUi;
- aContext.iContext = KSET_HLP_VPN_LOG_VIEW;
- }
-#endif //__SERIES60_HELP
-
-// End of File