diff -r 9b022b1f357c -r e0aa398e6810 tsdevicedialog/tsdevicedialogplugin/src/tsdevicedialogcontainer.cpp --- a/tsdevicedialog/tsdevicedialogplugin/src/tsdevicedialogcontainer.cpp Tue Jul 06 14:37:10 2010 +0300 +++ b/tsdevicedialog/tsdevicedialogplugin/src/tsdevicedialogcontainer.cpp Wed Aug 18 10:05:49 2010 +0300 @@ -11,18 +11,17 @@ * * Contributors: * -* Description: +* Description: * */ -#include "tsdevicedialogcontainer.h" #include - #include #include - +#include #include +#include "tsdevicedialogcontainer.h" #include "tstasksgrid.h" #include "tstasksgriditem.h" @@ -30,48 +29,77 @@ const char KDocmlPath[] = ":/resource/layout.docml"; } -TsDeviceDialogContainer::TsDeviceDialogContainer(QAbstractListModel *model, QObject *parent) : QObject(parent), mVisibilityPublisher(TsProperty::KTsPath) +TsDeviceDialogContainer::TsDeviceDialogContainer(QAbstractListModel *model, + QObject *parent) +: + QObject(parent), + mVisibilityPublisher(TsProperty::KTsPath) { bool ok(true); mLoader.load(KDocmlPath, &ok); Q_ASSERT(ok); - HbDialog *dialog = qobject_cast(mLoader.findWidget("tsdevicedialog")); - TsTasksGrid *grid = qobject_cast(mLoader.findWidget("taskgrid")); + HbDialog *dialog = + qobject_cast(mLoader.findWidget("tsdevicedialog")); + TsTasksGrid *grid = + qobject_cast(mLoader.findWidget("taskgrid")); Q_ASSERT(dialog); Q_ASSERT(grid); - changeOrientation(dialog->mainWindow()->orientation()); + grid->setModel(model); - grid->setModel(model); + changeOrientation(dialog->mainWindow()->orientation()); + switchViewOnModelChange(); // needed because of Qt::QueuedConnection used below // @todo: check if we actually need queued connections qRegisterMetaType("QModelIndex"); // connect the grid and model - disconnect(grid, SIGNAL(activated(QModelIndex)), model, SLOT(openApplication(QModelIndex))); - disconnect(grid, SIGNAL(activated(QModelIndex)), dialog, SLOT(close())); - disconnect(grid, SIGNAL(deleteButtonClicked(QModelIndex)), model, SLOT(closeApplication(QModelIndex))); + connect(grid, + SIGNAL(activated(QModelIndex)), + model, + SLOT(openApplication(QModelIndex))); + connect(grid, + SIGNAL(activated(QModelIndex)), + dialog, + SLOT(close())); + connect(grid, + SIGNAL(deleteButtonClicked(QModelIndex)), + model, SLOT(closeApplication(QModelIndex)), + Qt::QueuedConnection); - connect(grid, SIGNAL(activated(QModelIndex)), model, SLOT(openApplication(QModelIndex))); - connect(grid, SIGNAL(activated(QModelIndex)), dialog, SLOT(close())); - connect(grid, SIGNAL(deleteButtonClicked(QModelIndex)), model, SLOT(closeApplication(QModelIndex)), Qt::QueuedConnection); + connect(dialog->mainWindow(), + SIGNAL(orientationChanged(Qt::Orientation)), + this, + SLOT(changeOrientation(Qt::Orientation))); + connect(dialog, + SIGNAL(aboutToClose()), + this, + SIGNAL(deviceDialogClosed())); - connect(dialog->mainWindow(), SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(changeOrientation(Qt::Orientation))); - connect(dialog, SIGNAL(aboutToClose()), this, SIGNAL(deviceDialogClosed())); - - connect(this, SIGNAL(deviceDialogClosed()), this, SLOT(notifyDialogClosed())); - mVisibilityPublisher.setValue(TsProperty::KVisibilityPath, true); + // note: connect to more signals when partial model updates are implemented + connect(model, + SIGNAL(modelReset()), + this, + SLOT(switchViewOnModelChange())); + + connect(this, + SIGNAL(deviceDialogClosed()), + this, + SLOT(notifyDialogClosed())); + mVisibilityPublisher.setValue(TsProperty::KVisibilityPath, + static_cast(true)); mVisibilityPublisher.sync(); } -TsDeviceDialogContainer::~TsDeviceDialogContainer() -{ +TsDeviceDialogContainer::~TsDeviceDialogContainer() +{ delete deviceDialogWidget(); } -bool TsDeviceDialogContainer::setDeviceDialogParameters(const QVariantMap ¶meters) +bool TsDeviceDialogContainer::setDeviceDialogParameters( + const QVariantMap ¶meters) { Q_UNUSED(parameters); return false; @@ -91,7 +119,8 @@ HbPopup *TsDeviceDialogContainer::deviceDialogWidget() const { - HbDialog *widget = qobject_cast(mLoader.findWidget("tsdevicedialog")); + HbDialog *widget = + qobject_cast(mLoader.findWidget("tsdevicedialog")); Q_ASSERT(widget); return widget; } @@ -114,6 +143,25 @@ void TsDeviceDialogContainer::notifyDialogClosed() { - mVisibilityPublisher.setValue(TsProperty::KVisibilityPath, false); + mVisibilityPublisher.setValue(TsProperty::KVisibilityPath, + static_cast(false)); mVisibilityPublisher.sync(); } + +void TsDeviceDialogContainer::switchViewOnModelChange() +{ + TsTasksGrid *grid = + qobject_cast(mLoader.findWidget("taskgrid")); + HbLabel *noItemsLabel = + qobject_cast(mLoader.findWidget("noitemslabel")); + Q_ASSERT(grid); + Q_ASSERT(noItemsLabel); + + if (grid->model()->rowCount()) { + noItemsLabel->hide(); + grid->show(); + } else { + noItemsLabel->show(); + grid->hide(); + } +}