logsui/logsapp/src/logscomponentrepository.cpp
changeset 0 4a5361db8937
child 6 41c0a814d878
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logsapp/src/logscomponentrepository.cpp	Tue May 04 12:39:37 2010 +0300
@@ -0,0 +1,261 @@
+/*
+* 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:
+*
+*/
+//USER
+#include "logscomponentrepository.h"
+#include "logsrecentcallsview.h"
+#include "logsmatchesview.h"
+#include "logsdetailsview.h"
+#include "logslogger.h"
+#include "logsmodel.h"
+#include "logsabstractviewmanager.h"
+#include "logspageindicator.h"
+
+//SYSTEM
+#include <QObject>
+#include <dialpad.h>
+#include <dialpadkeyhandler.h>
+#include <hbtoolbar.h>
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+LogsComponentRepository::LogsComponentRepository(LogsAbstractViewManager& viewManager)
+    : HbDocumentLoader(),
+      mViewManager(viewManager),
+      mRecentCallsView(0),
+      mDetailsView(0),
+      mMatchesView(0),
+      mDialpad(0),
+      mDialpadKeyHandler(0)
+{
+    bool resourceControl = true;
+    mModel = new LogsModel(LogsModel::LogsRecentModel, resourceControl);
+}
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+LogsComponentRepository::~LogsComponentRepository()
+{
+    LOGS_QDEBUG( "logs [UI] -> LogsComponentRepository::~LogsComponentRepository()" );
+
+    mRecentViewComponents.clear();
+    mDetailsViewComponents.clear();
+    mMatchesViewComponents.clear();
+    delete mDialpadKeyHandler;
+    delete mDialpad;
+    delete mModel;
+    
+    LOGS_QDEBUG( "logs [UI] <- LogsComponentRepository::~LogsComponentRepository()" );
+}
+
+
+// -----------------------------------------------------------------------------
+// HbDocumentLoader will not add HbToolBar into the object list (at least on w02),
+// since toolbar has a parent (view), so let's do it ourselves
+// -----------------------------------------------------------------------------
+//
+void LogsComponentRepository::addToolbarToObjectList( QObjectList& list )
+{
+    LOGS_QDEBUG( "logs [UI] -> LogsComponentRepository::addToolbarToObjectList()" );
+    HbToolBar* toolbar = qobject_cast<HbToolBar*>( findWidget( logsToolbarId ) );            
+    if ( toolbar && !list.contains(toolbar) ) {
+        LOGS_QDEBUG( "logs [UI] adding toolbar to object list" );
+        list.append(toolbar);
+    }
+    LOGS_QDEBUG( "logs [UI] <- LogsComponentRepository::addToolbarToObjectList()" );
+}
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+LogsRecentCallsView* LogsComponentRepository::recentCallsView()
+{
+    LOGS_QDEBUG( "logs [UI] -> LogsComponentRepository::recentCallsView()" );
+    setObjectTreeToView( LogsRecentViewId );
+    
+    if ( !mRecentCallsView ) {
+        bool ok = false;
+        mRecentViewComponents = load( logsRecentCallsViewFile, &ok );
+        if ( ok ) {
+            mRecentCallsView = qobject_cast<LogsRecentCallsView*>
+                ( findWidget(logsRecentCallsViewId) );
+            
+            addToolbarToObjectList(mRecentViewComponents);
+        } else {
+            LOGS_QCRITICAL( "logs [UI] XML loading failed..." );
+        }         
+    }
+     
+    LOGS_QDEBUG( "logs [UI] <- LogsComponentRepository::recentCallsView()" );
+    return mRecentCallsView;
+}
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+LogsDetailsView* LogsComponentRepository::detailsView()
+{
+    LOGS_QDEBUG( "logs [UI] -> LogsComponentRepository::detailsView()" );   
+    setObjectTreeToView( LogsDetailsViewId );
+    
+    if ( !mDetailsView ) {
+        bool ok = false;
+        mDetailsViewComponents = load( logsDetailsViewFile, &ok );
+        if ( ok ) {
+            mDetailsView = qobject_cast<LogsDetailsView*>
+                ( findWidget(logsDetailsViewId) );
+            
+            addToolbarToObjectList(mDetailsViewComponents);
+        } else {
+            LOGS_QCRITICAL( "logs [UI] XML loading failed..." );
+        }         
+    }
+    LOGS_QDEBUG( "logs [UI] -> LogsComponentRepository::detailsView()" );
+    return mDetailsView;
+}
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+LogsMatchesView* LogsComponentRepository::matchesView()
+{
+    LOGS_QDEBUG( "logs [UI] -> LogsComponentRepository::matchedCallsView()" );
+    setObjectTreeToView( LogsMatchesViewId );
+
+    if ( !mMatchesView ) {
+        bool ok = false;
+        mMatchesViewComponents = load( logsMatchedCallsViewFile, &ok );
+        if ( ok ) {
+            mMatchesView = qobject_cast<LogsMatchesView*>
+                ( findWidget(logsMatchesViewId) );
+
+            addToolbarToObjectList(mMatchesViewComponents);
+        } else {
+            LOGS_QCRITICAL( "logs [UI] XML loading failed..." );
+        }         
+    }
+     
+    LOGS_QDEBUG( "logs [UI] <- LogsComponentRepository::matchedCallsView()" );
+    return mMatchesView;
+}
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+Dialpad* LogsComponentRepository::dialpad()
+{
+    if ( !mDialpad ) {
+        mDialpad = new Dialpad(mViewManager.mainWindow());
+        mDialpadKeyHandler = 
+            new DialpadKeyHandler(mDialpad, mViewManager.mainWindow());
+    }
+    return mDialpad;
+}
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+LogsModel*  LogsComponentRepository::model() const
+{
+    return mModel;
+}
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+void  LogsComponentRepository::setObjectTreeToView( LogsAppViewId viewId )
+{
+    reset();
+    if ( viewId == LogsRecentViewId ) {
+        setObjectTree( mRecentViewComponents );
+    } else if ( viewId == LogsDetailsViewId ) {
+        setObjectTree( mDetailsViewComponents );
+    } else if ( viewId == LogsMatchesViewId ) {
+        setObjectTree( mMatchesViewComponents );        
+    }
+}
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+QObject* LogsComponentRepository::createObject(const QString& type, 
+                                               const QString &name)
+{
+    LOGS_QDEBUG(  "logs [UI] -> LogsComponentRepository::createObject()" );
+
+    QObject* object = 0;
+
+    if (name == logsRecentCallsViewId) {
+        LOGS_QDEBUG(  "logs [UI]    creating recent calls view" );
+        object = new LogsRecentCallsView(*this, mViewManager);           
+    } else if (name == logsDetailsViewId) {
+        LOGS_QDEBUG(  "logs [UI]    creating details view" );
+        object = new LogsDetailsView(*this, mViewManager); 
+    } else if (name == logsMatchesViewId) {
+        LOGS_QDEBUG(  "logs [UI]    creating matches view" );
+        object = new LogsMatchesView(*this, mViewManager); 
+    } else if (name == logsPageIndicatorId) {
+        LOGS_QDEBUG(  "logs [UI]    creating LogsPageIndicator" );
+        object = new LogsPageIndicator;
+    } else {
+        object = HbDocumentLoader::createObject( type, name );
+    }
+    
+    if (object)
+        object->setObjectName(name);
+
+    LOGS_QDEBUG(  "logs [UI] <- LogsComponentRepository::createObject()" );
+    return object;  
+}
+
+
+// -----------------------------------------------------------------------------
+// LogsComponentRepository::loadSection
+// -----------------------------------------------------------------------------
+//
+bool LogsComponentRepository::loadSection(  LogsAppViewId viewId, 
+        const QString& sectionName )
+    {
+    LOGS_QDEBUG( "logs [UI] -> LogsComponentRepository::loadSection()" )    
+    bool ok( false );
+  
+    QString fileName;
+    if ( viewId == LogsRecentViewId ) {
+        fileName = logsRecentCallsViewFile;
+    } else if ( viewId == LogsMatchesViewId ) {
+        fileName = logsMatchedCallsViewFile;
+    } else if ( viewId == LogsDetailsViewId ) {
+        fileName = logsDetailsViewFile;
+    }
+    
+    if ( fileName.length() > 0 ) {
+        load( fileName, sectionName, &ok );
+    }
+    
+    LOGS_QDEBUG_2( "logs [UI] -> LogsComponentRepository::loadSection(): ", ok )    
+    return ok;
+    }
+