31 #include <hblistwidget.h> |
31 #include <hblistwidget.h> |
32 #include <hblistwidgetitem.h> |
32 #include <hblistwidgetitem.h> |
33 #include <QtDebug> |
33 #include <QtDebug> |
34 #include <hbcheckbox.h> |
34 #include <hbcheckbox.h> |
35 #include <hbaction.h> |
35 #include <hbaction.h> |
|
36 #include <hbstyleoption_p.h> |
|
37 |
|
38 HbSelectionDialogMarkWidget::HbSelectionDialogMarkWidget(QGraphicsItem *parent):HbWidget(parent),mBackgroundItem(0){ |
|
39 chkMark = new HbCheckBox(this); |
|
40 chkMark->setText("Mark All"); |
|
41 lbCounter = new HbTextItem(this); |
|
42 HbStyle::setItemName(chkMark,"checkbox"); |
|
43 HbStyle::setItemName(lbCounter,"counter"); |
|
44 createPrimitives(); |
|
45 } |
|
46 |
|
47 void HbSelectionDialogMarkWidget::createPrimitives() |
|
48 { |
|
49 if ( !mBackgroundItem ) { |
|
50 mBackgroundItem = style( )->createPrimitive( HbStyle::P_TumbleView_background , this ); |
|
51 style()->setItemName( mBackgroundItem , "background" ); |
|
52 } |
|
53 } |
|
54 |
|
55 void HbSelectionDialogMarkWidget::updatePrimitives() |
|
56 { |
|
57 HbStyleOption option; |
|
58 initStyleOption( &option ); |
|
59 |
|
60 if ( mBackgroundItem ) { |
|
61 style( )->updatePrimitive( mBackgroundItem , HbStyle::P_TumbleView_background , &option ); |
|
62 } |
|
63 } |
|
64 |
|
65 /*! |
|
66 \reimp |
|
67 */ |
|
68 QVariant HbSelectionDialogMarkWidget::itemChange( GraphicsItemChange change, const QVariant &value ) |
|
69 { |
|
70 switch ( change ) { |
|
71 case ItemVisibleHasChanged: { |
|
72 updatePrimitives( ); |
|
73 } |
|
74 break; |
|
75 |
|
76 case ItemSceneHasChanged: { |
|
77 updatePrimitives(); |
|
78 } |
|
79 break; |
|
80 default: |
|
81 break; |
|
82 } |
|
83 return HbWidget::itemChange( change, value ); |
|
84 } |
|
85 /*! |
|
86 Returns the pointer for \a primitive passed. |
|
87 Will return NULL if \a primitive passed is invalid |
|
88 */ |
|
89 QGraphicsItem* HbSelectionDialogMarkWidget::primitive(HbStyle::Primitive primitive) const |
|
90 { |
|
91 switch (primitive) { |
|
92 case HbStyle::P_TumbleView_background: |
|
93 return mBackgroundItem; |
|
94 default: |
|
95 return 0; |
|
96 } |
|
97 } |
|
98 |
|
99 HbSelectionDialogMarkWidget::~HbSelectionDialogMarkWidget() |
|
100 { |
|
101 } |
36 |
102 |
37 HbSelectionDialogContentWidget::HbSelectionDialogContentWidget(HbSelectionDialogPrivate *priv):HbWidget(), |
103 HbSelectionDialogContentWidget::HbSelectionDialogContentWidget(HbSelectionDialogPrivate *priv):HbWidget(), |
38 mListView(0),d(priv),chkMark(0),lbCounter(0),markWidgetShown(false) |
104 mListView(0),d(priv),markWidget(0) |
39 { |
105 { |
40 |
106 |
41 } |
107 } |
|
108 |
42 void HbSelectionDialogContentWidget::_q_listWidgetItemSelected(HbListWidgetItem *item) |
109 void HbSelectionDialogContentWidget::_q_listWidgetItemSelected(HbListWidgetItem *item) |
43 { |
110 { |
44 Q_UNUSED(item) |
111 Q_UNUSED(item) |
45 } |
112 } |
46 |
113 |
76 |
143 |
77 void HbSelectionDialogContentWidget::updateCounter() |
144 void HbSelectionDialogContentWidget::updateCounter() |
78 { |
145 { |
79 if(!mListView) return; |
146 if(!mListView) return; |
80 if(mListView->selectionMode()!= HbAbstractItemView::MultiSelection) return; |
147 if(mListView->selectionMode()!= HbAbstractItemView::MultiSelection) return; |
81 if(chkMark && lbCounter){ |
148 if(markWidget){ |
82 int totalItems = totalItemCount(); |
149 int totalItems = totalItemCount(); |
83 int selectedItems = selectedItemCount(); |
150 int selectedItems = selectedItemCount(); |
84 |
151 markWidget->updatePrimitives(); |
85 lbCounter->setText(QString(QString::number(selectedItems) + "/" + QString::number(totalItems))); |
152 markWidget->lbCounter->setText(QString(QString::number(selectedItems) + "/" + QString::number(totalItems))); |
86 //update checked state of "MarkAll" checkbox |
153 //update checked state of "MarkAll" checkbox |
87 if (totalItems > 0 && (selectedItems == totalItems)){ |
154 if (totalItems > 0 && (selectedItems == totalItems)){ |
88 chkMark->blockSignals(true); //should not call _q_checkboxclicked() |
155 markWidget->chkMark->blockSignals(true); //should not call _q_checkboxclicked() |
89 chkMark->setChecked(true); |
156 markWidget->chkMark->setChecked(true); |
90 chkMark->blockSignals(false); |
157 markWidget->chkMark->blockSignals(false); |
91 } |
158 } |
92 else{ |
159 else{ |
93 chkMark->blockSignals(true); //should not call _q_checkboxclicked() |
160 markWidget->chkMark->blockSignals(true); //should not call _q_checkboxclicked() |
94 chkMark->setChecked(false); |
161 markWidget->chkMark->setChecked(false); |
95 chkMark->blockSignals(false); |
162 markWidget->chkMark->blockSignals(false); |
96 } |
163 } |
97 } |
164 } |
98 } |
165 } |
99 |
166 |
100 void HbSelectionDialogContentWidget::_q_checkboxclicked(int value) |
167 void HbSelectionDialogContentWidget::_q_checkboxclicked(int value) |
123 } |
190 } |
124 |
191 |
125 void HbSelectionDialogContentWidget::showMarkWidget(bool bShow) |
192 void HbSelectionDialogContentWidget::showMarkWidget(bool bShow) |
126 { |
193 { |
127 if(bShow){ |
194 if(bShow){ |
128 if(!markWidgetShown){ |
195 if(!markWidget){ |
129 chkMark = new HbCheckBox(this); |
196 markWidget = new HbSelectionDialogMarkWidget(this); |
130 chkMark->setText("Mark All"); |
197 HbStyle::setItemName(markWidget,"markwidget"); |
131 lbCounter = new HbTextItem(this); |
198 setProperty("multiSelection",true); |
132 HbStyle::setItemName(chkMark,"checkbox"); |
199 connect(markWidget->chkMark,SIGNAL(stateChanged ( int )),this,SLOT(_q_checkboxclicked(int))); |
133 HbStyle::setItemName(lbCounter,"counter"); |
|
134 setProperty("multiSelection",true); |
|
135 connect(chkMark,SIGNAL(stateChanged ( int )),this,SLOT(_q_checkboxclicked(int))); |
|
136 updateCounter(); |
200 updateCounter(); |
137 markWidgetShown = true; |
|
138 } |
201 } |
139 } |
202 } |
140 else{ |
203 else{ |
141 delete chkMark;chkMark=0; |
204 delete markWidget; markWidget = 0; |
142 delete lbCounter;lbCounter=0; |
205 HbStyle::setItemName(markWidget,""); |
143 HbStyle::setItemName(chkMark,""); |
206 setProperty("multiSelection",false); |
144 HbStyle::setItemName(lbCounter,""); |
|
145 setProperty("multiSelection",false); |
|
146 markWidgetShown = false; |
|
147 } |
207 } |
148 } |
208 } |
149 |
209 |
150 void HbSelectionDialogContentWidget::connectSlots() |
210 void HbSelectionDialogContentWidget::connectSlots() |
151 { |
211 { |
207 bOwnItems = false; |
268 bOwnItems = false; |
208 mSelectionMode = HbAbstractItemView::SingleSelection; |
269 mSelectionMode = HbAbstractItemView::SingleSelection; |
209 HbSelectionDialogContentWidget* contentWidget = new HbSelectionDialogContentWidget(this); |
270 HbSelectionDialogContentWidget* contentWidget = new HbSelectionDialogContentWidget(this); |
210 q->setContentWidget(contentWidget); |
271 q->setContentWidget(contentWidget); |
211 |
272 |
212 HbAction *action1=new HbAction(hbTrId("txt_common_button_ok"),q); |
|
213 q->addAction(action1); |
|
214 q->connect(action1,SIGNAL(triggered()),q,SLOT(accept())); |
|
215 |
|
216 HbAction *action2=new HbAction(hbTrId("txt_common_button_cancel"),q); |
|
217 q->addAction(action2); |
|
218 q->connect(action2,SIGNAL(triggered()),q,SLOT(reject())); |
|
219 |
|
220 |
|
221 q->setDismissPolicy(HbPopup::NoDismiss); |
273 q->setDismissPolicy(HbPopup::NoDismiss); |
222 q->setTimeout(HbPopup::NoTimeout); |
274 q->setTimeout(HbPopup::NoTimeout); |
223 q->setModal(true); |
275 q->setModal(true); |
|
276 showActions(mSelectionMode); |
|
277 } |
|
278 |
|
279 void HbSelectionDialogPrivate::showActions(HbAbstractItemView::SelectionMode selectionMode) |
|
280 { |
|
281 Q_Q(HbSelectionDialog); |
|
282 if(selectionMode == HbAbstractItemView::SingleSelection){ |
|
283 delete action1;action1=0;delete action2;action2=0; |
|
284 action1=new HbAction(hbTrId("txt_common_button_cancel"),q); |
|
285 q->addAction(action1); |
|
286 q->connect(action1,SIGNAL(triggered()),q,SLOT(reject())); |
|
287 } |
|
288 else{ |
|
289 delete action1;action1=0;delete action2;action2=0; |
|
290 action1=new HbAction(hbTrId("txt_common_button_ok"),q); |
|
291 q->addAction(action1); |
|
292 q->connect(action1,SIGNAL(triggered()),q,SLOT(accept())); |
|
293 action2=new HbAction(hbTrId("txt_common_button_cancel"),q); |
|
294 q->addAction(action2); |
|
295 q->connect(action2,SIGNAL(triggered()),q,SLOT(reject())); |
|
296 } |
224 } |
297 } |
225 |
298 |
226 void HbSelectionDialogPrivate::setSelectionMode(HbAbstractItemView::SelectionMode mode) |
299 void HbSelectionDialogPrivate::setSelectionMode(HbAbstractItemView::SelectionMode mode) |
227 { |
300 { |
228 Q_Q(HbSelectionDialog); |
301 Q_Q(HbSelectionDialog); |