ui/views/detailsview/src/glxdetailsview.cpp
changeset 55 fb37077c270f
parent 49 f291796e213d
child 61 743eb0b9959e
--- a/ui/views/detailsview/src/glxdetailsview.cpp	Tue Jul 06 14:16:16 2010 +0300
+++ b/ui/views/detailsview/src/glxdetailsview.cpp	Wed Aug 18 09:48:53 2010 +0300
@@ -34,7 +34,7 @@
 #include <hbdocumentloader.h>
 #include <hbdataformmodelitem.h>
 #include <hbdataformviewitem.h>
-
+#include <hbparameterlengthlimiter.h>
 //--------------------------------------------------------------------------------------------------------------------------------------------
 #include "glxviewids.h"
 #include "glxicondefs.h" //Contains the icon names/Ids
@@ -44,8 +44,9 @@
 #include "glxfavmediamodel.h"
 #include "glxdocloaderdefs.h"
 #include <glxcommandhandlers.hrh>
-#include "glxdetailsdescriptionedit.h"
-#include "glxdetailsnamelabel.h"
+#include  "glxlocalisationstrings.h"
+#include "glxdetailstextedit.h"
+#include "glxdetailsicon.h"
 
 
 #include "glxviewdocloader.h"
@@ -61,7 +62,8 @@
 #endif
 
 //SIZE OF THE IMAGE , LAYOUTS TEAM NEED TO GIVER THE SIZE IN UNITS
-#define GLX_IMAGE_SIZE 215 
+#define GLX_IMAGE_WIDTH 333
+#define GLX_IMAGE_HEIGHT 215 
 const int KBytesInKB = 1024;
 const int KBytesInMB = 1024 * 1024;
 const int KBytesInGB = 1024 * 1024 * 1024;
@@ -69,29 +71,39 @@
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //GlxDetailsView
 //--------------------------------------------------------------------------------------------------------------------------------------------
-GlxDetailsView::GlxDetailsView(HbMainWindow *window) :
-GlxView(GLX_DETAILSVIEW_ID), mDetailsIcon(NULL), mFavIcon(NULL), mModel(
-        NULL), mFavModel(NULL), mWindow(window),
-        mSelIndex(0),mDocLoader(NULL),mImageName(NULL),mDescriptions(NULL),mDateLabel(NULL),mSizeLabel(NULL),mTimeLabel(NULL)
-   {
+GlxDetailsView::GlxDetailsView(HbMainWindow *window) 
+    : GlxView( GLX_DETAILSVIEW_ID ),
+      mDetailsIcon( NULL ),
+      mFavIcon( NULL ), 
+      mModel( NULL ), 
+      mFavModel( NULL ),
+      mWindow( window ),
+      mSelIndex( 0 ),
+      mDocLoader( NULL ),
+      mImageName( NULL ),
+      mDescriptions( NULL ),
+      mDateLabel( NULL ),
+      mSizeLabel( NULL ),
+      mTimeLabel( NULL )
+{
     GLX_LOG_INFO("GlxDetailsView::GlxDetailsView");
     OstTraceFunctionEntry0( GLXDETAILSVIEW_GLXDETAILSVIEW_ENTRY );
     setContentFullScreen(true);//for smooth transtion between grid to full screen and vice versa
     OstTraceFunctionExit0( GLXDETAILSVIEW_GLXDETAILSVIEW_EXIT );
-   }
+}
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //~GlxDetailsView
 //--------------------------------------------------------------------------------------------------------------------------------------------
 GlxDetailsView::~GlxDetailsView()
-    {
+{
     OstTrace0( TRACE_IMPORTANT, GLXDETAILSVIEW_GLXDETAILSVIEW, "GlxDetailsView::~GlxDetailsView" );
     
     delete mDocLoader;
     mDocLoader = NULL;
     
     cleanUp();
-    }
+}
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //activate
@@ -100,7 +112,9 @@
     {
     OstTraceFunctionEntry0( GLXDETAILSVIEW_ACTIVATE_ENTRY );
     //create and set the Favourite Model
-    setFavModel();
+    if(getSubState() != IMAGEVIEWER_DETAIL_S) {
+       setFavModel();
+    }
     
     //fill the data
     FillDetails();
@@ -120,34 +134,33 @@
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //initializeView
 //--------------------------------------------------------------------------------------------------------------------------------------------
-void GlxDetailsView::initializeView(QAbstractItemModel *model)
-    {
+void GlxDetailsView::initializeView( QAbstractItemModel *model, GlxView *preView)
+{
+    Q_UNUSED( preView )
     OstTraceFunctionEntry0( GLXDETAILSVIEW_INITIALIZEVIEW_ENTRY );
     bool loaded = false;
-    
+
     if(!mDocLoader)
         {
          mDocLoader = new GlxDetailsViewDocLoader();
         }
-    
+
     //Load the docml
     mDocLoader->load(GLX_DETAILSVIEW_DOCMLPATH, &loaded);     
-    
+
     HbView *mView = static_cast<HbView*> (mDocLoader->findWidget(
             GLX_DETAILSVIEW_VIEW));
     
-    HbWidget *mwidget = static_cast<HbWidget*> (mDocLoader->findWidget(
-            "MainWidget"));
-
     mDetailsIcon = static_cast<HbLabel*> (mDocLoader->findWidget(
             GLX_DETAILSVIEW_IMAGE));
-    mFavIcon = static_cast<HbPushButton*> (mDocLoader->findWidget(
+    mFavIcon = static_cast<GlxDetailsIcon*> (mDocLoader->findWidget(
             GLX_DETAILSVIEW_FAVICON));
 
-    mDescriptions = static_cast<GlxDetailsDescriptionEdit*> (mDocLoader->findWidget(
+
+    mDescriptions = static_cast<GlxDetailsTextEdit*> (mDocLoader->findWidget(
             GLX_DETAILSVIEW_DESCRPTIONTEXT));
     
-    mImageName = static_cast<GlxDetailsNameLabel*> (mDocLoader->findWidget(
+    mImageName = static_cast<GlxDetailsTextEdit*> (mDocLoader->findWidget(
             GLX_DETAILSVIEW_IMGNAME));
     
     mDateLabel = static_cast<HbLabel*> (mDocLoader->findWidget(
@@ -159,25 +172,24 @@
     mSizeLabel = static_cast<HbLabel*> (mDocLoader->findWidget(
             GLX_DETAILSVIEW_SIZETEXT));
 
-    //set the frame graphics to the background of the fav icon
-    HbFrameItem* frame = new HbFrameItem(this);
-    frame->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
-    frame->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans");
-    frame->graphicsItem()->setOpacity(0.2);
-    mFavIcon->setBackgroundItem(frame->graphicsItem(), -1);
-    mFavIcon->setBackground(HbIcon("qtg_fr_multimedia_trans"));
-    mFavIcon->setIcon(HbIcon(GLXICON_REMOVE_FAV));
-    
-    setWidget(mView);
-
+    mFavIconEnabled  =  HbIcon(GLXICON_ADD_TO_FAV);
+    mFavIconDisabled =  HbIcon(GLXICON_REMOVE_FAV);   
+        
     //Set the Model
     mModel = model;  
-
+   if(getSubState() == IMAGEVIEWER_DETAIL_S) {
+       mFavIcon->hide();
+    }
+    else
+    {
+       mFavIcon->setItemIcon(HbIcon(GLXICON_REMOVE_FAV));
+     }	
+	 
+	setWidget(mView);
+	
     //Set the Layout Correspondingly.
     updateLayout(mWindow->orientation());
 
-    //Shows the Image 
-    showImage();
     OstTraceFunctionExit0( GLXDETAILSVIEW_INITIALIZEVIEW_EXIT );
     }
 
@@ -211,14 +223,15 @@
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::cleanUp()
     {
+    qDebug("GlxDetailsView::cleanUp Enter");
+	//clear the connections
+    clearConnections();   
+    
     clearCurrentModel();
 
-    //clear the connections
-    clearConnections();   
-
     delete mFavModel;
     mFavModel = NULL;
-
+       
     delete mFavIcon;
     mFavIcon = NULL;
 
@@ -251,80 +264,80 @@
             mModel->index(0, 0), GlxFocusIndexRole).value<int> (), 0),
             GlxUriRole)).value<QString> ();
 
-    if (mFavModel == NULL)
-        {
+    if (mFavModel == NULL) {
         modelParm.setCollection(KGlxCollectionPluginFavoritesAlbumId);
         modelParm.setContextMode(GlxContextFavorite);
         modelParm.setPath(imagePath);
         mFavModel = new GlxFavMediaModel(modelParm);
-        }
+    }
 }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //initializeNewModel
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::initializeNewModel()
-    {
+{
     OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_INITIALIZENEWMODEL, "GlxDetailsView::initializeNewModel" );
-
-    if (mModel)
-        {
-    connect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this,
-            SLOT(rowsRemoved(QModelIndex,int,int)));
-        }
+    
+    if (mModel) {
+        connect( mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int)));
+        connect( mModel, SIGNAL( updateDetailsView() ), this, SLOT( FillDetails() ));
+        connect( mModel, SIGNAL( destroyed() ), this, SLOT( modelDestroyed() ) );
     }
+}
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //clearCurrentModel
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::clearCurrentModel()
-    {
+{
     OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_CLEARCURRENTMODEL, "GlxDetailsView::clearCurrentModel" );
 
-    if (mModel)
-        {
-        disconnect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this,
-                SLOT(rowsRemoved(QModelIndex,int,int)));
+    if (mModel) {
+        disconnect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int)));
+        disconnect(mModel, SIGNAL( updateDetailsView() ), this, SLOT( FillDetails() ));
+        disconnect( mModel, SIGNAL( destroyed() ), this, SLOT( modelDestroyed() ) );
         mModel = NULL;
-        }
     }
+}
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //setConnections
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::setConnections()
-    {
+{
     connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this,
             SLOT(updateLayout(Qt::Orientation)));
-    connect(mFavIcon, SIGNAL(clicked()), this, SLOT(updateFavourites()));
+    
+    if(getSubState() != IMAGEVIEWER_DETAIL_S) {    
+    connect(mFavIcon, SIGNAL(updateFavourites()), this, SLOT(updateFavourites()));
     
     connect(mDescriptions, SIGNAL(labelPressed()), this,
             SLOT(UpdateDescription()));
     
-    connect(mModel, SIGNAL( updateDetailsView() ), this, SLOT( FillDetails() ));
-    
     connect(mFavModel, SIGNAL( dataChanged(QModelIndex,QModelIndex) ),
-               this, SLOT( dataChanged(QModelIndex,QModelIndex) ));    
+                   this, SLOT( dataChanged(QModelIndex,QModelIndex) ));
     }
+}
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //clearConnections
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::clearConnections()
-    {
+{
+    
+    qDebug("GlxDetailsView:: clearConnections");
     disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this,
             SLOT(updateLayout(Qt::Orientation)));
-    
-    disconnect(mFavIcon, SIGNAL(clicked()), this, SLOT(updateFavourites()));
-    
+           
+    if(mModel && getSubState() != IMAGEVIEWER_DETAIL_S) {
+    disconnect(mFavIcon, SIGNAL(updateFavourites()), this, SLOT(updateFavourites()));
     disconnect(mDescriptions, SIGNAL(labelPressed()), this,
             SLOT(UpdateDescription()));
-    
-    disconnect(mModel, SIGNAL( updateDetailsView() ), this, SLOT( FillDetails() ));
-    
     disconnect(mFavModel, SIGNAL( dataChanged(QModelIndex,QModelIndex) ),
-                this, SLOT( dataChanged(QModelIndex,QModelIndex) ));
+                    this, SLOT( dataChanged(QModelIndex,QModelIndex) ));
     }
+}
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //getAnimationItem
@@ -363,11 +376,11 @@
     //Load the Sections
     mDocLoader->load(GLX_DETAILSVIEW_DOCMLPATH, section, &loaded);
 
-    //This is just to over come the bug in docloader,once that is fixed we can remove the 
+    showImage();
+	//This is just to over come the bug in docloader,once that is fixed we can remove the 
     //below lines of code
-     setImageName();
-     setDate();
-
+    FillDetails();
+    
     GLX_LOG_INFO1("GlxDetailsView::updateLayout =%d\n",loaded);
     }
 
@@ -393,6 +406,11 @@
         }
     }
 
+void GlxDetailsView::modelDestroyed()
+{
+    mModel = NULL;
+}
+
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //FillData
 //--------------------------------------------------------------------------------------------------------------------------------------------
@@ -421,7 +439,7 @@
 //showImage
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::showImage()
-    {
+ {
     OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SHOWIMAGE, "GlxDetailsView::showImage" );
 
     QVariant variant = mModel->data(mModel->index(0, 0), GlxFocusIndexRole);
@@ -431,17 +449,12 @@
         }
 
     variant = mModel->data(mModel->index(mSelIndex, 0), GlxFsImageRole);
+    
     if (variant.isValid() && variant.canConvert<HbIcon> ())
         {
-        QIcon itemIcon = variant.value<HbIcon> ().qicon();
-        QPixmap itemPixmap = itemIcon.pixmap(GLX_IMAGE_SIZE, GLX_IMAGE_SIZE);
-        QSize sz(GLX_IMAGE_SIZE, GLX_IMAGE_SIZE);
-        itemPixmap = itemPixmap.scaled(sz, Qt::IgnoreAspectRatio);
-
-        HbIcon tmp = HbIcon(QIcon(itemPixmap));
-        mDetailsIcon->setIcon(tmp);
+         mDetailsIcon->setIcon(variant.value<HbIcon> ());
         }
-    }
+   }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
 //setImageName
@@ -449,15 +462,12 @@
 void GlxDetailsView::setImageName()
     {
     OstTraceFunctionEntry0( GLXDETAILSVIEW_SETIMAGENAME_ENTRY );
-    QString temp = "<u>";
     QString imagePath = (mModel->data(mModel->index(mModel->data(
             mModel->index(0, 0), GlxFocusIndexRole).value<int> (), 0),
             GlxUriRole)).value<QString> ();
     QString imageName = imagePath.section('\\', -1);
     
-    temp.append(imageName);
-    temp.append("</u>");
-    mImageName->setItemText(temp);    
+    mImageName->setItemText(imageName);    
     OstTraceFunctionExit0( GLXDETAILSVIEW_SETIMAGENAME_EXIT );
     }
 
@@ -466,10 +476,15 @@
 //--------------------------------------------------------------------------------------------------------------------------------------------
 void GlxDetailsView::setDesc()
     {
+    
+    //This is a hack , Initialize to some characters and then set the text
+    //as of know if the description text is Null , we cant see the Description edit box
+    //The issue has been informed to Application designer team.
+    mDescriptions->setItemText("a");
     QString description = (mModel->data(mModel->index(mModel->data(
             mModel->index(0, 0), GlxFocusIndexRole).value<int> (), 0),
             GlxDescRole)).value<QString> ();
-    mDescriptions->setItemText(description);
+     mDescriptions->setItemText(description);       
     }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
@@ -484,12 +499,12 @@
     QDate date = (mModel->data(mModel->index(mModel->data(
             mModel->index(0, 0), GlxFocusIndexRole).value<int> (), 0),
             GlxDateRole)).value<QDate> ();
-    
-    datestring = QString("Date: ");
+        
     if (date.isNull() == FALSE)
         {
         OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETDATE, "GlxDetailsView::setDate is not NULL" );
-        datestring.append(date.toString(dateFormat));
+        QString dateStringValue = date.toString(dateFormat);
+        datestring = hbTrId(GLX_DETAILS_DATE).arg(dateStringValue);
         }
 
     mDateLabel->setPlainText(datestring);
@@ -507,13 +522,14 @@
     QTime timevalue = (mModel->data(mModel->index(mModel->data(mModel->index(
             0, 0), GlxFocusIndexRole).value<int> (), 0), GlxTimeRole)).value<
             QTime> ();
-    timestring = QString("Time: ");
+        
     if (timevalue.isNull() == FALSE)
         {
         OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETDATE, "GlxDetailsView::setTime is not NULL" );
-        timestring.append(timevalue.toString(timeFormat));
+        QString timeStringValue = timevalue.toString(timeFormat);
+        timestring = hbTrId(GLX_DETAILS_TIME).arg(timeStringValue);
         }
-    mTimeLabel->setPlainText(timestring);
+     mTimeLabel->setPlainText(timestring);
     }
 
 //--------------------------------------------------------------------------------------------------------------------------------------------
@@ -524,12 +540,10 @@
     int size = 0;
     size = (mModel->data(mModel->index(mModel->data(mModel->index(0, 0),
             GlxFocusIndexRole).value<int> (), 0), GlxSizeRole)).value<int> ();
-    QString sizelabel;
-    QString sizestring;
-    sizelabel = QString("Size  : ");
-    sizestring = sizeinStrings(size);
-    sizelabel.append(sizestring);
-    mSizeLabel->setPlainText(sizelabel);
+    
+    QString sizeString;
+    sizeString = sizeinStrings(size);
+    mSizeLabel->setPlainText(sizeString);
     
    }
 
@@ -545,11 +559,11 @@
         {
         if (variant.value<bool> ())
             {
-            mFavIcon->setIcon(HbIcon(GLXICON_ADD_TO_FAV));
+            mFavIcon->setItemIcon(mFavIconEnabled);
             }
         else
             {
-            mFavIcon->setIcon(HbIcon(GLXICON_REMOVE_FAV));
+            mFavIcon->setItemIcon(mFavIconDisabled);
             }
         }
     }
@@ -592,25 +606,38 @@
     if (size >= KBytesInGB)
         {
         int gbSize = size / KBytesInGB; // Size in GB
-        sizeString.setNum(gbSize);
-        sizeString.append("GB");
+        sizeString = HbParameterLengthLimiter(GLX_DETAILS_SIZE_GB, gbSize);         
         }
     else if (size >= KBytesInMB)
         {
         int mbSize = size / KBytesInMB; // Size in MB
-        sizeString.setNum(mbSize);
-        sizeString.append("MB");
+        sizeString = HbParameterLengthLimiter(GLX_DETAILS_SIZE_MB, mbSize);         
         }
     else if (size >= KBytesInKB)
         {
-        TInt kBsize = size / KBytesInKB; // bytes to kB
-        sizeString.setNum(kBsize);
-        sizeString.append("KB");
+        int kbSize = size / KBytesInKB; // Size in KB
+        sizeString = HbParameterLengthLimiter(GLX_DETAILS_SIZE_KB, kbSize);
         }
     else
         {
-        sizeString.setNum(size);
-        sizeString.append("Bytes");
+         sizeString = HbParameterLengthLimiter(GLX_DETAILS_SIZE_BYTES, size);
         }
     return sizeString;
     }
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//getSubState
+//--------------------------------------------------------------------------------------------------------------------------------------------
+int GlxDetailsView::getSubState()
+  {
+    int substate = NO_DETAIL_S;
+
+    if (mModel) {
+      QVariant variant = mModel->data(mModel->index(0, 0), GlxSubStateRole);
+
+      if (variant.isValid() && variant.canConvert<int> ()) {
+           substate = variant.value<int> ();
+      }
+    } 
+    return substate;
+ }