vpnengine/dmadipsecvpn/src/dmadeventlog.cpp
changeset 0 33413c0669b9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vpnengine/dmadipsecvpn/src/dmadeventlog.cpp	Thu Dec 17 09:14:51 2009 +0200
@@ -0,0 +1,217 @@
+/*
+* Copyright (c) 2000 - 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: Implementation of TDmAdEventLog.
+*
+*/
+
+
+#include <utf.h>
+#include <barsread.h>
+#include "vpnlogger.h"
+
+//#include <vpnmanagementui.rsg>
+//#include <avkon.rsg>
+
+#include "dmadeventlog.h"
+
+// "dd/mm/yyyy0"
+const TInt KDmAdMaxLengthTextDateString = 11;               
+
+void TDmAdEventLog::DeleteLogL(void)
+    {
+    TRACE("TDmAdEventLog::DeleteLogL");
+    
+    CEventViewer* eventViewer = CEventViewer::NewL();
+    CleanupStack::PushL(eventViewer);
+    User::LeaveIfError(eventViewer->DeleteLogFile());
+    CleanupStack::PopAndDestroy(); //eventViewer
+    }
+
+void TDmAdEventLog::EventLogL(CBufBase& aEventLog)
+    {
+    
+    TRACE("TDmAdEventLog::EventLogL");
+/*
+   _LIT(KResourceFileVpnLog, "\\resource\\vpnmanagementui.rsc");
+   _LIT(KResourceFileAvkon, "\\resource\\avkon.rsc");
+*/
+
+    CEventViewer* eventViewer = 0;
+    TRAPD(err, eventViewer = CEventViewer::NewL());
+    if (err == KErrNotFound)
+        {
+        return;
+        }
+    User::LeaveIfError(err);
+    CleanupStack::PushL(eventViewer);
+
+   RFs fs;
+   CleanupClosePushL(fs);
+   User::LeaveIfError(fs.Connect());
+
+   RResourceFile resourceFileVpnLog;
+   CleanupClosePushL(resourceFileVpnLog);
+
+   RResourceFile resourceFileAvkon;
+   CleanupClosePushL(resourceFileAvkon);
+
+   //OpenResourceFileL(fs, resourceFileVpnLog, KResourceFileVpnLog);
+   //OpenResourceFileL(fs, resourceFileAvkon, KResourceFileAvkon);
+   
+    TEventProperties eventProperties;
+    HBufC* eventText = NULL;
+      
+    TInt ret = eventViewer->GetMostRecentEvent(eventText, eventProperties);
+    while (ret == KErrNone)
+        {
+        CleanupStack::PushL(eventText);
+
+        TBuf<2 * KDmAdMaxLengthTextDateString + 3> timeBuf;
+        FormatTimeL(resourceFileAvkon, timeBuf, eventProperties.iTimeStamp);
+        
+        HBufC* categoryText = CategoryTextLC(resourceFileVpnLog, eventProperties.iCategory);
+        
+        _LIT(KDmAdCr, "\n");
+        _LIT(KDmAdSpace, " ");
+        HBufC* messageText = HBufC::NewLC(timeBuf.Length() +
+                                          KDmAdCr().Length() +
+                                          categoryText->Length() +
+                                          KDmAdSpace().Length() +
+                                          eventText->Length() +
+                                          KDmAdCr().Length());
+        messageText->Des().Copy(timeBuf);
+        messageText->Des().Append(KDmAdCr);
+        messageText->Des().Append(*categoryText);
+        messageText->Des().Append(KDmAdSpace); 
+        messageText->Des().Append(*eventText);
+        messageText->Des().Append(KDmAdCr);
+
+        HBufC8* messageText8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L(*messageText);
+        CleanupStack::PushL(messageText8);
+        aEventLog.InsertL(aEventLog.Size(), *messageText8);
+                
+        CleanupStack::PopAndDestroy(4); // messageText8, messageText, categoryText, eventText
+
+        ret = eventViewer->GetPreviousEvent(eventText, eventProperties);
+        }
+    CleanupStack::PopAndDestroy(4); //resourceFileAvkon, resourceFileVpnLog, fs, eventViewer
+    }
+
+void TDmAdEventLog::FormatTimeL(RResourceFile& aResourceFile, TDes& aDateTimeText, TTime aTime)
+    {
+    TRACE("TDmAdEventLog::FormatTimeL");
+    
+    (void)aResourceFile;
+   _LIT(KDmAdDateFromat, "%D%M%Y%/0%1%/1%2%/2%3%/3");
+   _LIT(KDmAdTimeFromat, "%-B%:0%J%:1%T%:3%+B");
+
+     // Date
+   HBufC* dateFormat = KDmAdDateFromat().AllocLC();
+    //HBufC* dateFormat = ReadResourceLC(aResourceFile, R_QTN_DATE_USUAL_WITH_ZERO);
+    //HBufC* dateFormat = StringLoader::LoadLC(R_QTN_DATE_USUAL_WITH_ZERO);
+    TBuf<KDmAdMaxLengthTextDateString> dateString;
+    aTime.FormatL(dateString, *dateFormat);
+    CleanupStack::PopAndDestroy(); //dateFormat
+
+    // Time
+    dateFormat = KDmAdTimeFromat().AllocLC();
+    //dateFormat = ReadResourceLC(aResourceFile, R_QTN_TIME_USUAL_WITH_ZERO);
+    //dateFormat = StringLoader::LoadLC(R_QTN_TIME_USUAL_WITH_ZERO);
+    TBuf<KDmAdMaxLengthTextDateString> timeString;
+    aTime.FormatL(timeString, *dateFormat);
+    CleanupStack::PopAndDestroy(); //dateFormat
+      
+    TBuf<2 * KDmAdMaxLengthTextDateString + 3> timeBuf;
+
+    /*
+    TTime now;
+    now.HomeTime();
+    if ( (now.YearsFrom(aTime).Int() > 0) ||
+        (aTime.DayNoInYear() < now.DayNoInYear()))
+        {
+        timeBuf.Append(dateString);
+        _LIT(KDmAdSpaceHyphenSpace, " - ");
+        timeBuf.Append(KDmAdSpaceHyphenSpace);
+        }
+    */
+
+    timeBuf.Append(dateString);
+    _LIT(KDmAdSpaceHyphenSpace, " - ");
+    timeBuf.Append(KDmAdSpaceHyphenSpace);
+        
+    timeBuf.Append(timeString);
+    aDateTimeText = timeBuf;
+    }
+
+HBufC* TDmAdEventLog::CategoryTextLC(RResourceFile& aResourceFile, TLogCategory2 aCategory)
+    {
+    (void)aResourceFile;
+    HBufC* categoryText = NULL;
+    _LIT(KDmAdInfo, "Information:");
+    _LIT(KDmAdWarning, "Warning:");
+    _LIT(KDmAdError, "Error:");
+    
+    if (aCategory == ELogInfo)
+        {
+        categoryText = KDmAdInfo().AllocLC();
+        //categoryText = ReadResourceLC(aResourceFile, R_VPN_DETAIL_LOG_ENTRY_INFO);
+        //categoryText = StringLoader::LoadLC(R_VPN_DETAIL_LOG_ENTRY_INFO);
+        }
+    else if (aCategory == ELogWarning)
+        {
+        categoryText = KDmAdWarning().AllocLC();
+        //categoryText = ReadResourceLC(aResourceFile, R_VPN_DETAIL_LOG_ENTRY_WARNING);
+        //categoryText = StringLoader::LoadLC(R_VPN_DETAIL_LOG_ENTRY_WARNING);
+        }
+    else // ELogError (or ELogDebug)
+        {
+        categoryText = KDmAdError().AllocLC();
+        //categoryText = ReadResourceLC(aResourceFile, R_VPN_DETAIL_LOG_ENTRY_ERROR);
+        //categoryText = StringLoader::LoadLC(R_VPN_DETAIL_LOG_ENTRY_ERROR);
+        }
+    return categoryText;
+    }
+    
+void TDmAdEventLog::OpenResourceFileL(RFs& aFs, RResourceFile& aResourceFile, const TDesC& aFilename)
+   {
+   TRACE("TDmAdEventLog::OpenResourceFileL");
+   
+   TFileName resourceFileName;
+   TFileName dllName;
+
+   Dll::FileName(dllName);
+   TBuf<2> drive = dllName.Left(2); // always z: for ... ?
+   
+   resourceFileName.Copy(drive);
+   resourceFileName.Append(aFilename);
+   
+   aResourceFile.OpenL(aFs, resourceFileName);
+   aResourceFile.ConfirmSignatureL();
+   }
+
+HBufC* TDmAdEventLog::ReadResourceLC(RResourceFile& aResourceFile, TInt aMsgId)
+   {
+   HBufC8* resourceBuf = aResourceFile.AllocReadLC(aMsgId);
+
+   TResourceReader resourceReader;
+   resourceReader.SetBuffer(resourceBuf);
+
+   HBufC* textDataBuf = HBufC::NewL(resourceBuf->Length());
+   resourceReader.Read((void*)textDataBuf->Ptr(), resourceBuf->Length());
+   textDataBuf->Des().SetLength(resourceBuf->Length()/2);
+   
+   CleanupStack::PopAndDestroy(); // resourceBuf
+   CleanupStack::PushL(textDataBuf);
+   return textDataBuf;
+   }