qtinternetradio/irqsystemeventhandler/src/irqsystemeventhandler_p.cpp
changeset 3 ee64f059b8e1
child 5 0930554dc389
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtinternetradio/irqsystemeventhandler/src/irqsystemeventhandler_p.cpp	Fri May 14 15:43:29 2010 +0300
@@ -0,0 +1,174 @@
+/*
+* Copyright (c) 2009 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:  Contains logic for watching certain disk's space
+*
+*/
+
+#include "irqsystemeventhandler.h"
+#include "irqsystemeventhandler_p.h"
+#include "irdiskspaceobserver.h"
+#include "iralarmobserver.h"
+
+#ifdef USER_DEFINED_DISKSPACE 
+#include <QFile>
+#include <QTextStream>
+#include <QStringList> 
+#endif
+
+
+IRQSystemEventHandlerPrivate::IRQSystemEventHandlerPrivate(IRQSystemEventHandler *aSystemEventHandler) : q_ptr(aSystemEventHandler),
+                              mAlarmOn(false),mDefaultLevel(3*1024*1024),mAlarmObserver(NULL), mDiskSpaceObserver(NULL)
+{ 
+}
+
+IRQSystemEventHandlerPrivate::~IRQSystemEventHandlerPrivate()
+{
+    cancel();
+    delete mDiskSpaceObserver;
+    delete mAlarmObserver;   
+}
+
+bool IRQSystemEventHandlerPrivate::init()
+{ 
+#ifdef USER_DEFINED_DISKSPACE
+    getDiskSpaceCriticalLevel(mDefaultLevel);
+#endif  
+    
+    TRAPD(err, initializeL());      
+    if( KErrNone == err )
+    {
+        return true;
+    }
+    else
+    {
+        mDiskSpaceObserver = NULL;
+        mAlarmObserver = NULL;
+    }
+    
+    
+    return false;
+}
+
+qint64 IRQSystemEventHandlerPrivate::diskCriticalLevel() const
+{
+    if(NULL != mDiskSpaceObserver)
+    {
+        return (qint64)(mDiskSpaceObserver->CriticalLevel());
+    }
+    else
+    {
+        return -1;
+    }
+}
+
+
+void IRQSystemEventHandlerPrivate::initializeL()
+{
+    mAlarmObserver = CIRAlarmObserver::NewLC(this);    
+    mDiskSpaceObserver = CIRDiskSpaceObserver::NewL(this);
+    CleanupStack::Pop(mAlarmObserver);
+}
+
+void IRQSystemEventHandlerPrivate::cancel()
+{
+    if( mAlarmObserver )
+    {
+        mAlarmObserver->Cancel();
+    }
+    
+    if( mDiskSpaceObserver )
+    {
+        mDiskSpaceObserver->Cancel();
+    }
+}
+
+void IRQSystemEventHandlerPrivate::start()
+{
+    if( mAlarmObserver )
+    {
+        mAlarmObserver->Start();        
+    }
+    
+    if( mDiskSpaceObserver )
+    {
+        mDiskSpaceObserver->Start((TInt64)mDefaultLevel);            
+    }    
+}
+
+bool IRQSystemEventHandlerPrivate::isBelowCriticalLevel(const qint64 aCriticalLevel)
+{
+    if( 0 == aCriticalLevel )
+    {
+        return mDiskSpaceObserver->IsBelowCriticalLevel((TInt64)mDefaultLevel );
+    }
+    
+    return mDiskSpaceObserver->IsBelowCriticalLevel((TInt64)aCriticalLevel );
+}
+
+#ifdef USER_DEFINED_DISKSPACE
+void IRQSystemEventHandlerPrivate::getDiskSpaceCriticalLevel(qint64 & aLevel)
+{
+    QFile file("C:\\data\\QTIRConfigure.txt");
+    if(file.open(QIODevice::ReadOnly)) 
+    {
+        QTextStream stream( &file );
+        QString line;
+        QStringList parameter;
+        while (!stream.atEnd())
+        {
+            line = stream.readLine();
+            parameter = line.split("=");
+            if (parameter.count() == 2)
+            {
+                if (parameter.first() == "diskSpaceCriticalLevel")
+                {
+                    QString level = parameter.last();
+                    aLevel = level.toLongLong();
+                    break;
+                }
+            }
+        }
+    }
+    
+    file.close();
+}
+#endif
+
+void IRQSystemEventHandlerPrivate::alarmStarted()
+{
+    if( !mAlarmOn )
+    {
+        emit q_ptr->alarmStarted();
+        mAlarmOn = true;
+    }
+}
+
+void IRQSystemEventHandlerPrivate::alarmStopped()
+{
+    if( mAlarmOn )
+    {
+        emit q_ptr->alarmStopped();
+        mAlarmOn = false;
+    }
+}
+
+void IRQSystemEventHandlerPrivate::notifyLowDiskSpace(qint64 aCriticalLevel)
+{
+    emit q_ptr->diskSpaceLowNotification(aCriticalLevel);
+}
+ 
+
+
+
+