diff -r 45e72b57a2fd -r e3cecb93e76a videocollection/videocollectionview/src/videolistwidget.cpp --- a/videocollection/videocollectionview/src/videolistwidget.cpp Tue Jul 06 14:17:50 2010 +0300 +++ b/videocollection/videocollectionview/src/videolistwidget.cpp Wed Aug 18 09:50:14 2010 +0300 @@ -30,6 +30,7 @@ #include #include #include +#include #include #include "videocollectionviewutils.h" @@ -150,6 +151,7 @@ connect(this, SIGNAL(fileUri(const QString&)), mVideoServices, SLOT(itemSelected(const QString&))); } + setItemPixmapCacheEnabled(true); setModel(mModel); return 0; @@ -200,7 +202,7 @@ // Enable thumbnail background fetching. VideoThumbnailData &thumbnailData = VideoThumbnailData::instance(); thumbnailData.enableBackgroundFetching(true); - thumbnailData.startBackgroundFetching(mModel, 0); + fetchThumbnailsForVisibleItems(); return 0; } @@ -380,13 +382,14 @@ if (variant.isValid()) { - QString text = hbTrId("txt_videos_info_do_you_want_to_delete_1").arg( - variant.toString()); + QString text = HbParameterLengthLimiter( + hbTrId("txt_videos_info_do_you_want_to_delete_1")).arg(variant.toString()); HbMessageBox *messageBox = new HbMessageBox(text, HbMessageBox::MessageTypeQuestion); + messageBox->setStandardButtons(HbMessageBox::Yes | HbMessageBox::No); messageBox->setAttribute(Qt::WA_DeleteOnClose); messageBox->setObjectName(LIST_WIDGET_OBJECT_NAME_DELETE_VIDEO); - messageBox->open(this, SLOT(deleteItemDialogFinished(HbAction *))); + messageBox->open(this, SLOT(deleteItemDialogFinished(int))); } } @@ -394,10 +397,9 @@ // deleteItemDialogFinished // --------------------------------------------------------------------------- // -void VideoListWidget::deleteItemDialogFinished(HbAction *action) +void VideoListWidget::deleteItemDialogFinished(int action) { - HbMessageBox *dlg = static_cast(sender()); - if(action == dlg->actions().at(0)) + if(action == HbMessageBox::Yes) { QModelIndex index = currentIndex(); if(index.isValid()) @@ -543,6 +545,7 @@ mContextMenuActions[EActionDelete]->setVisible(true); mContextMenuActions[EActionPlay]->setVisible(true); mContextMenuActions[EActionDetails]->setVisible(true); + mContextMenuActions[EActionRename]->setVisible(true); } else if(mCurrentLevel == VideoCollectionCommon::ELevelCategory) { @@ -560,6 +563,7 @@ mContextMenuActions[EActionDelete]->setVisible(true); mContextMenuActions[EActionPlay]->setVisible(true); mContextMenuActions[EActionDetails]->setVisible(true); + mContextMenuActions[EActionRename]->setVisible(true); } } @@ -789,9 +793,8 @@ QModelIndex index = currentIndex(); QVariant variant = mModel->data(index, VideoCollectionCommon::KeyTitle); - TMPXItemId itemId = mModel->getMediaIdAtIndex(index); - - if(variant.isValid() && itemId.iId2 == KVcxMvcMediaTypeAlbum) + + if(variant.isValid()) { QString label(hbTrId("txt_videos_title_enter_name")); QString albumName = variant.toString(); @@ -814,26 +817,34 @@ Q_UNUSED(action); HbInputDialog *dialog = static_cast(sender()); - + if(dialog->actions().first() != action) + { + return; + } QModelIndex index = currentIndex(); TMPXItemId itemId = mModel->getMediaIdAtIndex(index); QVariant newNameVariant = dialog->value(); QVariant oldNameVariant = mModel->data(index, VideoCollectionCommon::KeyTitle); - - if(dialog->actions().first() == action && - oldNameVariant.isValid() && newNameVariant.isValid() && itemId.iId2 == KVcxMvcMediaTypeAlbum) + if(!newNameVariant.isValid() || !oldNameVariant.isValid()) + { + // invalid data at index + return; + } + QString newAlbumName = newNameVariant.toString().trimmed(); + QString oldAlbumName = oldNameVariant.toString(); + if(!newAlbumName.length() || newAlbumName == oldAlbumName) { - QString newAlbumName = newNameVariant.toString(); - QString oldAlbumName = oldNameVariant.toString(); - - if(newAlbumName.length() && newAlbumName.trimmed() != oldAlbumName) - { - // Resolve collection true name and rename the album - newAlbumName = mModel->resolveAlbumName(newAlbumName); - mModel->renameAlbum(itemId, newAlbumName); - } + // no new name provided or name has not changed + return; } + if(itemId.iId2 == KVcxMvcMediaTypeAlbum) + { + // for album, we need to make sure name is unique + newAlbumName = mModel->resolveAlbumName(newAlbumName); + } + mModel->renameItem(itemId, newAlbumName); } + // --------------------------------------------------------------------------- // addToCollectionSlot // --------------------------------------------------------------------------- @@ -897,12 +908,14 @@ if (variant.isValid()) { - QString text = hbTrId("txt_videos_info_do_you_want_to_remove_collection").arg( - variant.toString()); + QString text = HbParameterLengthLimiter( + hbTrId("txt_videos_info_do_you_want_to_remove_collection")).arg(variant.toString()); + HbMessageBox *messageBox = new HbMessageBox(text, HbMessageBox::MessageTypeQuestion); + messageBox->setStandardButtons(HbMessageBox::Yes | HbMessageBox::No); messageBox->setAttribute(Qt::WA_DeleteOnClose); - messageBox->setObjectName(LIST_WIDGET_OBJECT_NAME_REMOVE_COLLECTION); - messageBox->open(this, SLOT(removeCollectionDialogFinished(HbAction *))); + messageBox->setObjectName(LIST_WIDGET_OBJECT_NAME_REMOVE_COLLECTION); + messageBox->open(this, SLOT(removeCollectionDialogFinished(int))); } } @@ -910,10 +923,9 @@ // removeCollectionDialogFinished // --------------------------------------------------------------------------- // -void VideoListWidget::removeCollectionDialogFinished(HbAction *action) +void VideoListWidget::removeCollectionDialogFinished(int action) { - HbMessageBox *dlg = static_cast(sender()); - if(action == dlg->actions().at(0)) + if(action == HbMessageBox::Yes) { QModelIndex index = currentIndex(); if(index.isValid()) @@ -1007,13 +1019,53 @@ void VideoListWidget::fetchThumbnailsForVisibleItems() { FUNC_LOG_ADDR(this); + + // No need to do anything if thumbnail fetching is not enabled. + if(!VideoThumbnailData::instance().backgroundFetchingEnabled()) + { + return; + } + const QList itemsVisible = visibleItems(); - + if(itemsVisible.count() > 0) { int row = itemsVisible.value(0)->modelIndex().row(); VideoThumbnailData::instance().startBackgroundFetching(mModel, row); } + else + { + // Nothing visible yet, start from first index. + VideoThumbnailData::instance().startBackgroundFetching(mModel, 0); + } +} + +// --------------------------------------------------------------------------- +// rowsInserted +// --------------------------------------------------------------------------- +// +void VideoListWidget::rowsInserted(const QModelIndex &parent, int start, int end) +{ + FUNC_LOG_ADDR(this); + Q_UNUSED(parent); + Q_UNUSED(start); + Q_UNUSED(end); + fetchThumbnailsForVisibleItems(); + HbListView::rowsInserted(parent, start, end); +} + +// --------------------------------------------------------------------------- +// rowsRemoved +// --------------------------------------------------------------------------- +// +void VideoListWidget::rowsRemoved(const QModelIndex &parent, int start, int end) +{ + FUNC_LOG_ADDR(this); + Q_UNUSED(parent); + Q_UNUSED(start); + Q_UNUSED(end); + fetchThumbnailsForVisibleItems(); + HbListView::rowsRemoved(parent, start, end); } // end of file