src/NPRBrowserContainer.cpp
author tahirm@symbian.org
Fri, 24 Jul 2009 08:46:02 +0100
changeset 0 0049171ecffb
permissions -rw-r--r--
initial release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     1
/*
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     2
 ===============================================================================
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     3
 Name	: NPRBrowserConatiner.cpp
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     4
 Author	: Symsource
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     5
 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     6
 Copyright (c) 2009 Symbian Foundation Ltd
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     7
 This component and the accompanying materials are made available
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     8
 under the terms of the License "Eclipse Public License v1.0"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     9
 which accompanies this distribution, and is available
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    10
 at the URL "http://www.eclipse.org/legal/epl-v10.html".
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    11
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    12
 Initial Contributors:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    13
 - Symsource
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    14
 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    15
 Contributors:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    16
 - Symsource
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    17
 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    18
 Description :  Container for Nokia browser control to show NPR's Story 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    19
 ================================================================================
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    20
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    21
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    22
#include <avkon.hrh>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    23
#include <aknwaitdialog.h>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    24
#include <BrCtlInterface.h>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    25
#include <aknmessagequerydialog.h>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    26
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    27
#include "NPRBrowserContainer.h"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    28
#include "npr.hrh"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    29
#include "NPRAppUi.h"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    30
#include "NPRAppEngine.h"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    31
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    32
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    33
_LIT(KStoryHtmlFile, "file:///c:\\data\\npr\\story.html");
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    34
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    35
void CBrowserContainer::ConstructL(const TRect& aRect)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    36
    {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    37
    CreateWindowL();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    38
    SetRect(aRect);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    39
   
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    40
    iCommandBase = TBrCtlDefs::ECommandIdBase;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    41
    iBrowserCaps = TBrCtlDefs::ECapabilityDisplayScrollBar | TBrCtlDefs::ECapabilityLoadHttpFw |
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    42
						TBrCtlDefs::ECapabilityGraphicalHistory | TBrCtlDefs::ECapabilityGraphicalPage;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    43
    
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    44
    iBrowser = CreateBrowserControlL(this, Rect(), iBrowserCaps, iCommandBase, NULL, NULL, NULL, NULL, NULL);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    45
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    46
    TRAP_IGNORE(iBrowser->SetBrowserSettingL(TBrCtlDefs::ESettingsAutoLoadImages,1));
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    47
    iBrowser->AddLoadEventObserverL(this);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    48
    iBrowser->ActivateL();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    49
    }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    50
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    51
CBrowserContainer::~CBrowserContainer()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    52
    {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    53
    if (iBrowser)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    54
    	iBrowser->RemoveLoadEventObserver(this);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    55
    delete iBrowser;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    56
    }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    57
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    58
void CBrowserContainer::SizeChanged()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    59
    {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    60
    if(iBrowser)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    61
        {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    62
        iBrowser->SetRect(Rect());
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    63
        }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    64
    }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    65
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    66
TInt CBrowserContainer::CountComponentControls() const
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    67
    {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    68
    if(iBrowser)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    69
        return 1;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    70
    return 0;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    71
    }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    72
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    73
CCoeControl* CBrowserContainer::ComponentControl(TInt aIndex) const
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    74
    {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    75
    switch(aIndex)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    76
        {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    77
        case 0:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    78
            return iBrowser; // Could be NULL
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    79
        default:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    80
            return NULL;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    81
        }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    82
    }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    83
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    84
void CBrowserContainer::Draw(const TRect& /*aRect*/) const
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    85
    {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    86
	CWindowGc& gc=SystemGc(); // graphics context we draw to
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    87
	gc.Clear();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    88
    }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    89
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    90
void CBrowserContainer::HandleControlEventL(CCoeControl* /*aControl*/, TCoeEvent /*aEventType*/)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    91
    {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    92
    }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    93
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    94
TKeyResponse CBrowserContainer::HandleKeyEventL(const TKeyEvent& /*aKeyEvent*/, TEventCode /*aType*/)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    95
    {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    96
    return EKeyWasNotConsumed;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    97
    }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    98
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    99
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   100
void CBrowserContainer::HandleResourceChange(TInt aType)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   101
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   102
	CCoeControl::HandleResourceChange(aType);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   103
	SetRect(CEikonEnv::Static()->EikAppUi()->ClientRect());
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   104
   } 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   105
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   106
void CBrowserContainer::ProcessCommandL(TInt aCommandId)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   107
    {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   108
    switch(aCommandId)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   109
        {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   110
        case ELoadPage:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   111
        	if (iBrowser!=NULL)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   112
        		iBrowser->LoadUrlL(KStoryHtmlFile());  
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   113
            break;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   114
        default:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   115
            if (aCommandId >= iCommandBase && aCommandId < iCommandBase + TBrCtlDefs::ECommandIdWMLBase && iBrowser)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   116
                {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   117
                iBrowser->HandleCommandL(aCommandId);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   118
                }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   119
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   120
            if (aCommandId >= iCommandBase + TBrCtlDefs::ECommandIdWMLBase && aCommandId < iCommandBase + TBrCtlDefs::ECommandIdRange && iBrowser)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   121
                {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   122
                iBrowser->HandleCommandL(aCommandId);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   123
                }              
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   124
            break;      
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   125
        }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   126
    }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   127
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   128
TKeyResponse CBrowserContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   129
    {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   130
    if(iBrowser)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   131
        {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   132
        return iBrowser->OfferKeyEventL(aKeyEvent, aType);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   133
        }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   134
    return EKeyWasConsumed;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   135
    }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   136
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   137
void CBrowserContainer::DynInitMenuPaneL(TInt /*aResourceId*/, CEikMenuPane* /*aMenuPane*/)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   138
    {
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   139
    }
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   140
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   141
void CBrowserContainer::HandleBrowserLoadEventL(TBrCtlDefs::TBrCtlLoadEvent aLoadEvent, TUint /*aSize*/, TUint16 /*aTransactionId*/)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   142
	{	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   143
	if(aLoadEvent == TBrCtlDefs::EEventLoadFinished)
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   144
		{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   145
		iBrowser->DrawNow();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   146
		}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   147
	}
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   148
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   149
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   150
void CBrowserContainer::Listen()
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   151
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   152
	static_cast<CNPRAppUi*>(CEikonEnv::Static()->EikAppUi())->Engine().SendNPRCommandL(EPlayNewsStream, KNullDesC());
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
   153
	}