homescreenapp/hsutils/src/xqaiwgetimageclient.cpp
changeset 35 f9ce957a272c
child 36 cdae8c6c3876
equal deleted inserted replaced
5:c743ef5928ba 35:f9ce957a272c
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Moc impl for image fetcher api.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include "xqaiwgetimageclient.h"
       
    20 
       
    21 #include "hsimagegridwidget.h"
       
    22 #include "hbinstance.h"
       
    23 #include <QDir>
       
    24 #include <hbaction.h>
       
    25 #include <QFileInfoList>
       
    26 #include <QFileInfo>
       
    27 
       
    28 
       
    29 
       
    30 
       
    31 #ifdef COVERAGE_MEASUREMENT
       
    32 #pragma CTC SKIP
       
    33 #endif //COVERAGE_MEASUREMENT
       
    34 
       
    35 
       
    36 // ---------------------------------------------------------------------------
       
    37 // ---------------------------------------------------------------------------
       
    38 //
       
    39 XQAIWGetImageClient::XQAIWGetImageClient():
       
    40     mImageGrid(0)
       
    41 {
       
    42     mImageGrid = new HsImageGridWidget(QStringList(),0);
       
    43     mBackAction = new HbAction(Hb::BackAction, this);
       
    44 
       
    45 }
       
    46 
       
    47 // ---------------------------------------------------------------------------
       
    48 // ---------------------------------------------------------------------------
       
    49 //
       
    50 XQAIWGetImageClient::~XQAIWGetImageClient()
       
    51 {
       
    52     if(mImageGrid)
       
    53         delete mImageGrid;
       
    54 }
       
    55 
       
    56 // ---------------------------------------------------------------------------
       
    57 // ---------------------------------------------------------------------------
       
    58 //
       
    59 void XQAIWGetImageClient::fetch( QVariantMap filter, XQAIWMultimediaFlags flag)
       
    60 {
       
    61     Q_UNUSED(filter)
       
    62     Q_UNUSED(flag)
       
    63 
       
    64     QStringList imageDirNames;
       
    65     QStringList imageDirs;
       
    66 
       
    67 #ifdef Q_OS_SYMBIAN
       
    68     imageDirNames << "data/images/kqtihswallpapers/" << "images/kqtihswallpapers/";
       
    69 #else
       
    70     imageDirNames << "resource/kqtihswallpapers/";
       
    71 #endif
       
    72 
       
    73     foreach(QString imageDirName, imageDirNames)
       
    74     {
       
    75         //Check image dirs from root of different drives
       
    76         QFileInfoList drives = QDir::drives();
       
    77         for(int i=0; i < drives.count(); i++)
       
    78         {
       
    79             QFileInfo drive = drives.at(i);
       
    80             QString driveLetter = drive.absolutePath();
       
    81             QString path = QDir::toNativeSeparators(driveLetter + imageDirName);
       
    82             if(QDir(path).exists())
       
    83             {
       
    84                 imageDirs << path;
       
    85             }
       
    86         }
       
    87 
       
    88         //Check image dir relative to current dir
       
    89         QString isRelativeToCurrent = QDir::toNativeSeparators(QDir(imageDirName).absolutePath() + QDir::separator());
       
    90         if(QDir(imageDirName).exists() && !imageDirs.contains(isRelativeToCurrent))
       
    91         {
       
    92             imageDirs << imageDirName;
       
    93         }
       
    94     }
       
    95 
       
    96     QStringList filters;
       
    97     filters << "*.png";
       
    98     filters << "*.jpg";
       
    99 
       
   100     QStringList images;
       
   101 
       
   102     foreach(QString imageDir, imageDirs)
       
   103     {
       
   104         findImages(QDir(imageDir).absolutePath(), filters, images);
       
   105     }
       
   106 
       
   107     HbMainWindow *window = HbInstance::instance()->allMainWindows().at(0);
       
   108     window->addSoftKeyAction(Hb::SecondarySoftKey, mBackAction);
       
   109 
       
   110     mImageGrid->setContent(images);
       
   111 
       
   112     connect(mImageGrid,SIGNAL(imageSelected(const QString&)),this,SLOT(imageSelected(const QString&)));
       
   113 
       
   114     HbInstance::instance()->allMainWindows().at(0)->addView(mImageGrid);
       
   115     HbInstance::instance()->allMainWindows().at(0)->setCurrentView(mImageGrid,false);
       
   116 
       
   117     connect(mBackAction,SIGNAL(triggered()),this,SLOT(imageSelectionCancelled()));
       
   118 }
       
   119 
       
   120 // ---------------------------------------------------------------------------
       
   121 // ---------------------------------------------------------------------------
       
   122 //
       
   123 void XQAIWGetImageClient::imageSelected(const QString& val)
       
   124 {
       
   125     Q_UNUSED(val)
       
   126     mImageGrid->disconnect(this);
       
   127     QStringList list;
       
   128 
       
   129     list << val;
       
   130 
       
   131     HbMainWindow *window = HbInstance::instance()->allMainWindows().at(0);
       
   132     window->removeView(mImageGrid);
       
   133     window->removeSoftKeyAction(Hb::SecondarySoftKey, mBackAction);
       
   134 
       
   135     emit fetchComplete(list);
       
   136     QStringList images;
       
   137     mImageGrid->setContent(images);
       
   138 }
       
   139 
       
   140 // ---------------------------------------------------------------------------
       
   141 // ---------------------------------------------------------------------------
       
   142 //
       
   143 void XQAIWGetImageClient::requestCompleted(const QVariant& val)
       
   144 {
       
   145     Q_UNUSED(val)
       
   146 }
       
   147 
       
   148 void XQAIWGetImageClient::imageSelectionCancelled()
       
   149 {
       
   150     mImageGrid->disconnect(this);
       
   151 
       
   152     HbMainWindow *window = HbInstance::instance()->allMainWindows().at(0);
       
   153     window->removeView(mImageGrid);
       
   154     window->removeSoftKeyAction(Hb::SecondarySoftKey, mBackAction);
       
   155 
       
   156     emit fetchFailed(-1);//KErrNotFound
       
   157     QStringList images;
       
   158     mImageGrid->setContent(images);
       
   159 
       
   160 }
       
   161 
       
   162 // ---------------------------------------------------------------------------
       
   163 // ---------------------------------------------------------------------------
       
   164 //
       
   165 void XQAIWGetImageClient::findImages(const QString &aDir, const QStringList &aFilters, QStringList &aFoundImages)
       
   166 {
       
   167     QStringList foundFiles;
       
   168 
       
   169     //Add image files from dir
       
   170     QDir searchDir = QDir(aDir);
       
   171     searchDir.setNameFilters(aFilters);
       
   172     searchDir.setFilter(QDir::Files);
       
   173     QStringList files = searchDir.entryList();
       
   174     foreach(QString file, files)
       
   175     {
       
   176         aFoundImages << searchDir.absoluteFilePath(file);
       
   177     }
       
   178 
       
   179     //Go through sub directories
       
   180     searchDir.setFilter(QDir::AllDirs | QDir::NoDotAndDotDot);
       
   181     QStringList subdirs = searchDir.entryList();
       
   182     foreach(QString subdir, subdirs)
       
   183     {
       
   184         //Recursive call
       
   185         findImages(QString(searchDir.absolutePath() + QDir::separator() + subdir),
       
   186                            aFilters,
       
   187                            aFoundImages);
       
   188     }
       
   189 }
       
   190 #ifdef COVERAGE_MEASUREMENT
       
   191 #pragma CTC ENDSKIP
       
   192 #endif //COVERAGE_MEASUREMENT