locationpickerservice/src/locationpickerappwindow.cpp
branchRCL_3
changeset 17 1fc85118c3ae
equal deleted inserted replaced
16:8173571d354e 17:1fc85118c3ae
       
     1 /*
       
     2 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: LocationPickerAppWindow implementation
       
    15 *
       
    16 */
       
    17 
       
    18 #include "locationpickerappwindow.h"
       
    19 
       
    20 #include "qlocationpickeritem.h"
       
    21 
       
    22 #include "locationpickersearchview.h"
       
    23 #include "locationpickerview.h"
       
    24 #include "locationpickerservice.h"
       
    25 #include "locationpickerdatamanager.h"
       
    26 #include "locationpickerdocumentloader.h"
       
    27 #include "locationpickercontent.h"
       
    28 
       
    29 // ----------------------------------------------------------------------------
       
    30 // LocationPickerAppWindow::LocationPickerAppWindow()
       
    31 // ----------------------------------------------------------------------------
       
    32 LocationPickerAppWindow::LocationPickerAppWindow( QWidget *parent, Hb::WindowFlags windowFlags )
       
    33 	:HbMainWindow(parent, windowFlags),
       
    34 	mLocationPickerSearchView(NULL),
       
    35     mLocationPickerDocumentLoader(NULL),
       
    36 	mLocationPickerView(NULL),
       
    37 	mLocationPickerContent(NULL),
       
    38     mService(NULL)
       
    39 {
       
    40     // create the service object;
       
    41     mService = new LocationPickerService(this);
       
    42     mLocationPickerContent = new LocationPickerContent();
       
    43     
       
    44     //create document loader object
       
    45     mLocationPickerDocumentLoader = new LocationPickerDocumentLoader();
       
    46     bool ok = false;
       
    47     //load the Locationpicker view
       
    48     mLocationPickerDocumentLoader->load(":/locationpickerview.docml", &ok);
       
    49     Q_ASSERT_X(ok, "locationpickerservice", "invalid DocML file");
       
    50     //find graphics location picker potrait view
       
    51     QGraphicsWidget *locationPickerWidget = mLocationPickerDocumentLoader->findWidget("LocationPickerView");
       
    52     Q_ASSERT_X((locationPickerWidget != 0), "locationpickerservice", "invalid DocML file");
       
    53     mLocationPickerView = qobject_cast<LocationPickerView*>(locationPickerWidget);
       
    54     bool populated = mLocationPickerContent->populateModel();
       
    55     connectSlots();
       
    56     if(!populated)
       
    57     {
       
    58         mLocationPickerView->disableTabs();
       
    59         addView(mLocationPickerView);
       
    60         setCurrentView(mLocationPickerView);
       
    61     }
       
    62     else
       
    63     {    
       
    64     //initialize potrait widgets and connect to respective signals 
       
    65     mLocationPickerView->init( this->orientation(), mLocationPickerContent->getStandardModel());
       
    66     addView( mLocationPickerView );
       
    67     setCurrentView(mLocationPickerView);
       
    68     //connect to orientationChanged signal
       
    69      connect(this, SIGNAL(orientationChanged(Qt::Orientation)),this, SLOT(changeOrientation(Qt::Orientation)));
       
    70     connect(this, SIGNAL(aboutToChangeOrientation()),this, SLOT(closeDetailsDialog()));
       
    71      
       
    72     }
       
    73 }
       
    74 
       
    75 // ----------------------------------------------------------------------------
       
    76 // LocationPickerAppWindow::~LocationPickerAppWindow()
       
    77 // ----------------------------------------------------------------------------
       
    78 LocationPickerAppWindow::~LocationPickerAppWindow()
       
    79 {
       
    80     delete mService;
       
    81     delete mLocationPickerSearchView;
       
    82     delete mLocationPickerDocumentLoader;
       
    83     delete mLocationPickerView;
       
    84     delete mLocationPickerContent;
       
    85 }
       
    86 
       
    87 // ----------------------------------------------------------------------------
       
    88 // LocationPickerAppWindow::itemSelected()
       
    89 // ----------------------------------------------------------------------------
       
    90 void LocationPickerAppWindow::itemSelected( quint32 aLmid )
       
    91 {
       
    92     QLocationPickerItem item;
       
    93     LocationPickerDataManager::getInstance()->getLocationItem(aLmid, item);
       
    94     // complete the request
       
    95     mService->complete(item);
       
    96 }
       
    97 
       
    98 void LocationPickerAppWindow::serviceComplete()
       
    99 {
       
   100     // Other views request complete with a valid location picker item
       
   101     QLocationPickerItem item;
       
   102     item.mIsValid = false;
       
   103     mService->complete(item);
       
   104 }
       
   105 // ----------------------------------------------------------------------------
       
   106 // LocationPickerAppWindow::activateSearchView()
       
   107 // ----------------------------------------------------------------------------
       
   108 void LocationPickerAppWindow::activateSearchView()
       
   109 {   
       
   110     //load the LocationPickerSearchView
       
   111     bool ok = false;
       
   112     if(!mLocationPickerSearchView)
       
   113     {
       
   114         mLocationPickerDocumentLoader->load(":/locationpickersearchview.docml", &ok);
       
   115         Q_ASSERT_X(ok, "locationpickerService", "invalid DocML file");
       
   116         //find the LocationPickerSearchView
       
   117         QGraphicsWidget *locationPickerSearchWidget = mLocationPickerDocumentLoader->findWidget("LocationPickerSearchView");
       
   118         Q_ASSERT_X((locationPickerSearchWidget != 0), "locationpickerService", "invalid DocML file");
       
   119         mLocationPickerSearchView = qobject_cast<LocationPickerSearchView*>(locationPickerSearchWidget);
       
   120         Q_ASSERT_X((mLocationPickerSearchView != 0), "mLocationPickerSearchView", 
       
   121             "qobject cast failure");
       
   122         //initialize the action items and connect to slots
       
   123         mLocationPickerSearchView->init(mLocationPickerContent->getStandardModel());
       
   124         connect(mLocationPickerSearchView,SIGNAL(switchView()),this,SLOT(activateLocationPickerView()));
       
   125         connect(mLocationPickerSearchView,SIGNAL(selectItem( quint32 )),this,SLOT(itemSelected( quint32 )));
       
   126         addView(mLocationPickerSearchView);
       
   127     }
       
   128     //set LocationPickerSearchview as current view
       
   129     setCurrentView(mLocationPickerSearchView);
       
   130    
       
   131 }
       
   132 
       
   133 
       
   134 // ----------------------------------------------------------------------------
       
   135 // LocationPickerAppWindow::activateLocationPickerView()
       
   136 // ----------------------------------------------------------------------------
       
   137 void LocationPickerAppWindow::activateLocationPickerView()
       
   138 { 
       
   139     mLocationPickerView->setViewType( ELocationPickerContent );
       
   140     //check the orientation and load view accordingly 
       
   141     if(this->orientation() == Qt::Horizontal)
       
   142     {
       
   143         mLocationPickerView->manageHgWidget();
       
   144     }
       
   145     else
       
   146     { 
       
   147         mLocationPickerView->manageListView();
       
   148     }
       
   149     setCurrentView(mLocationPickerView);
       
   150 }
       
   151 
       
   152 // ----------------------------------------------------------------------------
       
   153 // LocationPickerAppWindow::changeOrientation()
       
   154 // ----------------------------------------------------------------------------
       
   155 void LocationPickerAppWindow::changeOrientation( Qt::Orientation )
       
   156 {   
       
   157     //check the orientation and load view accordingly 
       
   158     if(mLocationPickerView->getViewType()== ELocationPickerCollectionContent || 
       
   159             mLocationPickerView->getViewType()== ELocationPickerContent )
       
   160     {
       
   161         if(this->orientation() == Qt::Vertical)
       
   162        {
       
   163             mLocationPickerView->manageListView();
       
   164       
       
   165        }
       
   166        
       
   167    else if(this->orientation() == Qt::Horizontal)
       
   168        {
       
   169            mLocationPickerView->manageHgWidget();
       
   170        }
       
   171     }
       
   172 }
       
   173 
       
   174 // ----------------------------------------------------------------------------
       
   175 // LocationPickerAppWindow::closeDetailsDialog()
       
   176 // ----------------------------------------------------------------------------
       
   177 void LocationPickerAppWindow::closeDetailsDialog()
       
   178 {
       
   179     mLocationPickerView->closeDetailsDialog();
       
   180 }
       
   181 
       
   182 // ----------------------------------------------------------------------------
       
   183 // LocationPickerAppWindow::connectSlots()
       
   184 // ----------------------------------------------------------------------------
       
   185 void LocationPickerAppWindow::connectSlots()
       
   186 {
       
   187     connect(mLocationPickerView,SIGNAL(switchToSearchView()),this,SLOT(activateSearchView()));
       
   188     connect(mLocationPickerView,SIGNAL(selectItem( quint32 )),this,SLOT(itemSelected( quint32 )));
       
   189     connect(mLocationPickerView,SIGNAL(completeService()),this,SLOT(serviceComplete()));
       
   190 }
       
   191 
       
   192 Q_IMPLEMENT_USER_METATYPE(QLocationPickerItem)