bluetoothengine/btnotif/btdevicedialogplugin/src/btmoredevicesdialogwidget.cpp
changeset 42 b72428996822
parent 31 a0ea99b6fa53
child 47 9e2a905b887f
--- a/bluetoothengine/btnotif/btdevicedialogplugin/src/btmoredevicesdialogwidget.cpp	Fri May 28 17:03:06 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/src/btmoredevicesdialogwidget.cpp	Mon Jul 12 18:51:05 2010 +0300
@@ -29,24 +29,28 @@
 
 
 BTMoreDevicesDialogWidget::BTMoreDevicesDialogWidget(const QVariantMap &parameters)
-:HbDialog()
     {
     mDeviceDialogData = 0;
+    mLoader = 0;
+    mContentItemModel = 0;
     constructDialog(parameters);
+/*    try 
+            {
+            //May throws badAlloc on exception
+            constructDialog(parameters);
+            }
+        catch(std::bad_alloc &badAlloc)
+            {
+            //Failure to allocate memory
+            Q_UNUSED(badAlloc);
+          //   = UnknownDeviceDialogError;
+            }*/
     }
 
 BTMoreDevicesDialogWidget::~BTMoreDevicesDialogWidget()
     {
-    if(mLoader)
-        {
-        delete mLoader;
-        mLoader = NULL;
-        }
-    if(mContentItemModel)
-        {
-        delete mContentItemModel;
-        mContentItemModel =NULL;
-        }
+    delete mLoader;
+    delete mContentItemModel;
     }
 
 bool BTMoreDevicesDialogWidget::setDeviceDialogParameters(const QVariantMap &parameters)
@@ -75,11 +79,23 @@
 void BTMoreDevicesDialogWidget::closeDeviceDialog(bool byClient)
     {
     Q_UNUSED(byClient);
-    this->close();
+    // below code is required and written based on the documentation of closeDeviceDialog API
+    mMoreDeviceDialog->close();
+    QVariantMap val;
+    QVariant index(-1);
+    val.insert("selectedindex",index);
+    emit deviceDialogData(val);    
+    //below signal is emitted to make dialog server aware that our dialog is closed
+    emit deviceDialogClosed();
     }
 
 HbPopup* BTMoreDevicesDialogWidget::deviceDialogWidget() const
     {
+    return mMoreDeviceDialog;
+    }
+
+QObject* BTMoreDevicesDialogWidget::signalSender() const
+    {
     return const_cast<BTMoreDevicesDialogWidget*>(this);
     }
 
@@ -91,15 +107,18 @@
     mLoader->load(DOCML_BT_MORE_DEV_DIALOG, &ok);
     if(ok)
         {
-        HbLabel* label = qobject_cast<HbLabel*>(mLoader->findWidget("label"));
+        mMoreDeviceDialog = qobject_cast<HbDialog*>(mLoader->findWidget("lastuseddialog"));
+        mMoreDeviceDialog->setFrameType(HbDialog::Strong);
+        mMoreDeviceDialog->setBackgroundFaded(false);
+/*        HbLabel* label = qobject_cast<HbLabel*>(mLoader->findWidget("label"));
         if(label)
             {
             label->setTextWrapping(Hb::TextWordWrap);
             label->setPlainText("Send to:");
             }
-        this->setHeadingWidget(label);
-        HbPushButton* moreDevices = qobject_cast<HbPushButton*>(mLoader->findWidget("moreDevices"));
-        HbPushButton* cancel = qobject_cast<HbPushButton*>(mLoader->findWidget("cancel"));
+        this->setHeadingWidget(label);*/
+   //     HbPushButton* moreDevices = qobject_cast<HbPushButton*>(mLoader->findWidget("moreDevices"));
+    //    HbPushButton* cancel = qobject_cast<HbPushButton*>(mLoader->findWidget("cancel"));
         
         HbListView* listView = qobject_cast<HbListView*>(mLoader->findWidget("listView"));
         listView->setSelectionMode(HbAbstractItemView::SingleSelection);
@@ -125,23 +144,33 @@
             }*/
         
         connect(listView, SIGNAL(activated(QModelIndex)), this, SLOT(deviceSelected(QModelIndex)));
-        connect(moreDevices, SIGNAL(clicked()), this, SLOT(moreDevicesClicked()));
-        connect(cancel, SIGNAL(clicked()), this, SLOT(cancelClicked()));
+  //      connect(moreDevices, SIGNAL(clicked()), this, SLOT(moreDevicesClicked()));
+   //     connect(cancel, SIGNAL(clicked()), this, SLOT(cancelClicked()));
+        mMoreAction = static_cast<HbAction*>( mLoader->findObject( "moreaction" ) );
+        mMoreAction->disconnect(mMoreDeviceDialog);
         
-        QGraphicsWidget *widget = mLoader->findWidget(QString("container"));
-        this->setContentWidget(widget);
+        mCancelAction = static_cast<HbAction*>( mLoader->findObject( "cancelaction" ) );
+        mCancelAction->disconnect(mMoreDeviceDialog);
+//        QGraphicsWidget *widget = mLoader->findWidget(QString("container"));
+  //      mMoreDeviceDialog->setContentWidget(widget);
+        
+         connect(mMoreAction, SIGNAL(triggered()), this, SLOT(moreDevicesClicked()));
+         connect(mCancelAction, SIGNAL(triggered()), this, SLOT(cancelClicked()));
+               
         }
 
 
-    this->setBackgroundFaded(false);
-    setDismissPolicy(HbPopup::NoDismiss);
-    setTimeout(HbPopup::NoTimeout);
+    mMoreDeviceDialog->setBackgroundFaded(false);
+    mMoreDeviceDialog->setDismissPolicy(HbPopup::NoDismiss);
+    mMoreDeviceDialog->setTimeout(HbPopup::NoTimeout);
+    mMoreDeviceDialog->setAttribute(Qt::WA_DeleteOnClose);
     return true;
     }
 
-void BTMoreDevicesDialogWidget::hideEvent(QHideEvent *event)
+/*void BTMoreDevicesDialogWidget::hideEvent(QHideEvent *event)
     {
-    HbDialog::hideEvent(event);
+    //HbDialog::hideEvent(event);
+    mMoreDeviceDialog->hideEvent(event);
 //    if(mDeviceDialogData == 0)
         {
         QVariantMap val;
@@ -149,14 +178,14 @@
         val.insert("selectedindex",index);
         emit deviceDialogData(val);    
         emit deviceDialogClosed();
-        }    
+        }*/    
  //   
-    }
+   // }
 
-void BTMoreDevicesDialogWidget::showEvent(QShowEvent *event)
+/*void BTMoreDevicesDialogWidget::showEvent(QShowEvent *event)
     {
-    HbDialog::showEvent(event);
-    }
+    //HbDialog::showEvent(event);
+    }*/
 
 void BTMoreDevicesDialogWidget::moreDevicesClicked()
     {
@@ -172,7 +201,12 @@
 void BTMoreDevicesDialogWidget::cancelClicked()
     {
     // TODO
-    this->close();
+    mMoreDeviceDialog->close();
+    QVariantMap val;
+    QVariant index(-1);
+    val.insert("selectedindex",index);
+    emit deviceDialogData(val);    
+    emit deviceDialogClosed();
     }
 
 void BTMoreDevicesDialogWidget::deviceSelected(const QModelIndex& modelIndex)
@@ -181,10 +215,6 @@
     QVariantMap val;
     QVariant index(row);
     val.insert("selectedindex",index);
-    
-
-
-    
     emit deviceDialogData(val);
   //  mDeviceDialogData = 1;//flag is to say that device dialog data is emitted required when we cancel the dialog    
    // this->close();