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) |
|