Common/Src/ImagicUtils.cpp
author jkauppin
Fri, 15 Oct 2010 10:18:29 +0900
changeset 3 93fff7023be8
permissions -rw-r--r--
Initial version

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors: Juha Kauppinen, Mika Hokkanen
* 
* Description: Photo Browser
*
*/

#include <aknquerydialog.h> 
#include <avkon.hrh>
#include <BAUTILS.H>
#include <stringloader.h> 
#include <aknnotewrappers.h>
 
/*Imagic RSG file for rss file */
#include <PhotoBrowser.rsg>
#include "ImagicUtils.h"
#include  "Imagic.hrh"

CImagicUtils* CImagicUtils::NewL(RFs & aFs)
{
    
	CImagicUtils* self=new (ELeave) CImagicUtils(aFs);
	CleanupStack::PushL(self);
	self->ConstructL();
	CleanupStack::Pop();
	return self;
}

CImagicUtils::CImagicUtils(RFs& aFs)
    : iFs(aFs)
    {
        
    } 

void CImagicUtils::ConstructL()
    {
    //no implementation required.
    }

CImagicUtils::~CImagicUtils()
    {
    }

void CImagicUtils::DisplayYearAndMonth(TInt aIndex, TDateTime dateTime)
    {
    if(iPopUpNote)
        {
        delete iPopUpNote;
        }
  /*  if(iTextResource)
        {
        //CleanupStack::PopAndDestroy(iTextResource);
        delete iTextResource;
        }*/

    iPopUpNote = CAknInfoPopupNoteController::NewL();
    TMonth month = dateTime.Month();
    TInt year = dateTime.Year();
    //Convert int to buf
    TBuf<10> valToNumBuf;
    valToNumBuf.Num(year);
    
    _LIT(KMonth1, "January ");
    _LIT(KMonth2, "February ");
    _LIT(KMonth3, "March ");
    _LIT(KMonth4, "April ");
    _LIT(KMonth5, "May ");
    _LIT(KMonth6, "June ");
    _LIT(KMonth7, "July ");
    _LIT(KMonth8, "August ");
    _LIT(KMonth9, "September ");
    _LIT(KMonth10, "October ");
    _LIT(KMonth11, "November ");
    _LIT(KMonth12, "December ");
    
    TBuf<512> text;
    
    if(month == EJanuary)  {text.Format(KMonth1);text.Append(valToNumBuf);}
    if(month == EFebruary) {text.Format(KMonth2);text.Append(valToNumBuf);}
    if(month == EMarch)    {text.Format(KMonth3);text.Append(valToNumBuf);}
    if(month == EApril)    {text.Format(KMonth4);text.Append(valToNumBuf);}
    if(month == EMay)      {text.Format(KMonth5);text.Append(valToNumBuf);}
    if(month == EJune)     {text.Format(KMonth6);text.Append(valToNumBuf);}
    if(month == EJuly)     {text.Format(KMonth7);text.Append(valToNumBuf);}
    if(month == EAugust)   {text.Format(KMonth8);text.Append(valToNumBuf);}
    if(month == ESeptember){text.Format(KMonth9);text.Append(valToNumBuf);}
    if(month == EOctober)  {text.Format(KMonth10);text.Append(valToNumBuf);}
    if(month == ENovember) {text.Format(KMonth11);text.Append(valToNumBuf);}
    if(month == EDecember) {text.Format(KMonth12);text.Append(valToNumBuf);}
                        
    iPopUpNote->SetTextL(text);
    iPopUpNote->SetTimeDelayBeforeShow(0);
    iPopUpNote->SetTimePopupInView( 4000 );
    iPopUpNote->SetPositionAndAlignment(TPoint(0,0), /*TGulAlignmentValue*/EHLeftVTop);
    iPopUpNote->ShowInfoPopupNote();
    }

void CImagicUtils::ExecutePopUpNote(TInt aResourceId, TDes& aFilename, TInt aTime)
    {
    if(iPopUpNote)
        {
        delete iPopUpNote;
        }
    if(iTextResource)
        {
        //CleanupStack::PopAndDestroy(iTextResource);
        delete iTextResource;
        }
    
    iPopUpNote = CAknInfoPopupNoteController::NewL();
    //iTextResource = StringLoader::LoadLC( aResourceId );
    iTextResource = StringLoader::LoadL( aResourceId );
    TBuf<512> text;
    
    //text.Format(*textResource);
    TParse parser;
    parser.Set(aFilename, NULL, NULL);
    aFilename = parser.NameAndExt();
    text.Format(*iTextResource, &aFilename);
    
    iPopUpNote->SetTextL(text);
    iPopUpNote->SetTimeDelayBeforeShow(0);
    iPopUpNote->SetTimePopupInView( aTime );
    iPopUpNote->SetPositionAndAlignment(TPoint(0,0), /*TGulAlignmentValue*/EHLeftVTop);
    iPopUpNote->ShowInfoPopupNote();
    }  

void CImagicUtils::ExecutePopUpNote(TInt aResourceId, TInt aTime)
    {
    if(iPopUpNote)
        {
        delete iPopUpNote;
        }
    if(iTextResource)
        {
        //CleanupStack::PopAndDestroy(iTextResource);
        delete iTextResource;
        }
    
    iPopUpNote = CAknInfoPopupNoteController::NewL();
    //iTextResource = StringLoader::LoadLC( aResourceId );
    iTextResource = StringLoader::LoadL( aResourceId );
    TBuf<512> text;
    
    //text.Format(*textResource);
/*    TParse parser;
    parser.Set(aFilename, NULL, NULL);
    aFilename = parser.NameAndExt();*/
    text.Format(*iTextResource);
    
    iPopUpNote->SetTextL(text);
    iPopUpNote->SetTimeDelayBeforeShow(0);
    iPopUpNote->SetTimePopupInView( aTime );
    iPopUpNote->SetPositionAndAlignment(TPoint(0,0), /*TGulAlignmentValue*/EHLeftVTop);
    iPopUpNote->ShowInfoPopupNote();
    }

void CImagicUtils::ExecuteFileScanPopUpNote(TInt aResourceId, TInt aTime)
    {
    if(iFileScanPopUpNote)
        {
        delete iFileScanPopUpNote;
        }
    if(iTextResource)
        {
        //CleanupStack::PopAndDestroy(iTextResource);
        delete iTextResource;
        }
    
    iFileScanPopUpNote = CAknInfoPopupNoteController::NewL();
    //iTextResource = StringLoader::LoadLC( aResourceId );
    iTextResource = StringLoader::LoadL( aResourceId );
    TBuf<512> text;
    
    //text.Format(*textResource);
/*    TParse parser;
    parser.Set(aFilename, NULL, NULL);
    aFilename = parser.NameAndExt();*/
    text.Format(*iTextResource);
    
    iFileScanPopUpNote->SetTextL(text);
    iFileScanPopUpNote->SetTimeDelayBeforeShow(0);
    iFileScanPopUpNote->SetTimePopupInView( aTime );
    iFileScanPopUpNote->SetPositionAndAlignment(TPoint(0,0), /*TGulAlignmentValue*/EHLeftVTop);
    iFileScanPopUpNote->ShowInfoPopupNote();
    }


void CImagicUtils::ExecutePopUpNote(TDes& aFilename, TInt aTime, TBool aAligment)
    {
    if(iPopUpNote)
        {
        delete iPopUpNote;
        }
    
    iPopUpNote = CAknInfoPopupNoteController::NewL();
    
    /*TBuf<512> text;
    
    TParse parser;
    parser.Set(aFilename, NULL, NULL);
    aFilename = parser.NameAndExt();*/
    
    iPopUpNote->SetTextL(aFilename);
    iPopUpNote->SetTimeDelayBeforeShow(0);
    iPopUpNote->SetTimePopupInView(aTime);
    iPopUpNote->SetPriority(EPriorityHigh);
    
    //if(aAligment)
        iPopUpNote->SetPositionAndAlignment(TPoint(0,0), EHLeftVTop);
    /*else
        iPopUpNote->SetPositionAndAlignment(TPoint(0,0), EHRightVCenter);*/
    
    iPopUpNote->ShowInfoPopupNote();
    }  

/* Show text on Display */
void CImagicUtils::ShowText(const TDesC16& aText, CWindowGc& gc, TRect aRect,const CFont*aFont,TRgb aTransparentBlack, TRgb aTransparentWhite) const
    {
    //RDebug::Print(_L("CImagicAppUi::ShowText"));
        
    gc.SetPenStyle(CGraphicsContext::ESolidPen);//ESolidPen, ENullPen
    gc.UseFont(aFont);
    gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
        
    gc.SetBrushColor(aTransparentWhite);
    gc.SetPenColor(aTransparentBlack);
    
    TRect rectText(TPoint(0, 0), TPoint(aRect.Width(),aFont->HeightInPixels()+3));
    gc.DrawText(aText, rectText, rectText.Height() - aFont->DescentInPixels(), CGraphicsContext::ECenter );
    
    }

/* Executing Error Dialog */
void CImagicUtils::ExecuteQueryDialog(TInt /*aError*/,TInt aResourceId)
    {
    //if (aError != KErrNone)
       {
         CAknQueryDialog* dlg;
         dlg = new ( ELeave ) CAknQueryDialog();
         TInt result = dlg->ExecuteLD( aResourceId );
         if(result == KErrNone || result != KErrNone)
             User::Exit(-1);
       }
    }  
    
TInt CImagicUtils::ExecuteQueryDialog(TInt aResourceId)
	{
	 CAknQueryDialog* dlg;
	 dlg = new ( ELeave ) CAknQueryDialog();
	 TInt result = dlg->ExecuteLD( aResourceId );
	 return result;
	}
	
 void CImagicUtils::DisplayWaitDialog(TInt aResourceId, TBool aSingular)
    {
    //show wait dialog untill engine callback cancells it
    if(iWaitDialog)
        {
        delete iWaitDialog;
        }
    iWaitDialog = NULL;
    iWaitDialog = new(ELeave) CAknWaitDialog(NULL, ETrue);
    
    iWaitDialog->SetTextPluralityL(aSingular);
    iWaitDialog->ExecuteLD( aResourceId );
 
    }
 
void CImagicUtils::ProcessFinishedL()
    {
	//iWaitDialog->ProcessFinishedL();
	//iWaitDialog = NULL;
	CancelWaitDialog();
    }

void CImagicUtils::CancelWaitDialog()
    {
    if(iWaitDialog != NULL)
        {
        iWaitDialog->ProcessFinishedL();
        iWaitDialog = NULL;
        }
    }
  
void CImagicUtils::ShowWaitDialog( TInt  aResourceId )
    {
    TInt result = 0;
    //show wait dialog untill engine callback cancells it
    if(iWaitDialog)
        {
        delete iWaitDialog;
        }
    iWaitDialog = NULL;
    iWaitDialog = new(ELeave) CAknWaitDialog(NULL, ETrue);
    iWaitDialog->ExecuteLD( aResourceId );
    
    
    }
void CImagicUtils::DisplayTNInfoNoteStarted()
   {
   ExecuteInternalWaitNote(R_WAIT_NOTE, EFalse);
   }

void CImagicUtils::DisplayTNInfoNoteCompleted()
   {
   ExecuteInternalWaitNote(R_WAIT_NOTE_END, EFalse);
   }

void CImagicUtils::ShowInfoNote(TInt aResourceId)
    {
    HBufC* textResource = StringLoader::LoadLC( aResourceId );
    CAknInformationNote* note = new ( ELeave ) CAknInformationNote(ETrue);
    TBuf<512> text;
    text.Format(*textResource);
    note->ExecuteLD( text );
    CleanupStack::PopAndDestroy(textResource);
    }
    
void CImagicUtils::ShowInfoNote(TInt aResourceId, TDes& aFilename)
    {
    HBufC* textResource = StringLoader::LoadLC( aResourceId );
    CAknInformationNote* note = new ( ELeave ) CAknInformationNote(ETrue);
    TBuf<256+50> text;
    
    TParse parser;
    parser.Set(aFilename, NULL, NULL);
    aFilename = parser.NameAndExt();
    
    text.Format(*textResource, &aFilename);
    note->ExecuteLD( text );
    
    CleanupStack::PopAndDestroy(textResource);
    }

//Modifies given file name to new with adding counting 
//number to the end of the file name
void CImagicUtils::GetNewFileName( TDes&  aFileName )
    {
    TBuf<300> valToNumBuf;
    TInt tempCounter = 0;
    TParse parser;
    TFileName tmpName;
    TBool result = EFalse;
    
    while(1)
        {
        tempCounter++;
        
        /*Converting from Number to Buffer */
        valToNumBuf.Num(tempCounter);
        
        /*Parsing file name. */
        parser.Set(aFileName, NULL, NULL );
        tmpName = parser.DriveAndPath();
        tmpName.Append(parser.Name());
        
        /*Appending */
        tmpName.Append(_L("_"));
        tmpName.Append(valToNumBuf);
        tmpName.Append(_L(".jpg"));
        
        /*Checking the existing of file */
        result = BaflUtils::FileExists(iFs, tmpName);
        if(result)
            {
            /* File exists continue */
            continue;
            }
        else
            {
            /*File does not found then copy the file and comeout of the loop */
             aFileName.Copy(tmpName);
             break;     
            }
        
        }
    }
    
 
void CImagicUtils::GetOriginalFileName( TDes&  aFileName )
    {
  
    TParse parser;
    parser.Set(aFileName, NULL, NULL );
    TFileName tmpFileName = parser.Name();
    //tmpName.Append(_L("_01.jpg"));
    
    
    TFileName tmpPathName = parser.FullName();
    //Delete characters from TN folder after _PAlbTN folder
    TInt ret = tmpPathName.Find(_L("_PAlbTN\\"));
    tmpPathName.Delete(ret, tmpPathName.Length()-ret);
    
    aFileName = tmpPathName;
    aFileName.Append(tmpFileName);
    aFileName.Append(_L(".jpg"));
    }
 


    
 void CImagicUtils::ExecuteInternalWaitNote(TInt aResourceId,TBool aTextPlurality)
 {
   CAknNoteDialog* dlg = new ( ELeave ) CAknNoteDialog(CAknNoteDialog::ENoTone,CAknNoteDialog::ELongTimeout);
   dlg->PrepareLC( aResourceId );
   dlg->SetTextPluralityL(aTextPlurality);
   
   // Show the Dialog
   dlg->RunLD();
 }