messagingapp/smartmessaging/ringbc/src/ringbc_p.cpp
changeset 27 e4592d119491
parent 23 238255e8b033
child 47 5b14749788d7
equal deleted inserted replaced
25:84d9eb65b26f 27:e4592d119491
    78 // @see ringbc_p.h
    78 // @see ringbc_p.h
    79 // ----------------------------------------------------------------------------
    79 // ----------------------------------------------------------------------------
    80 void RingBcPrivate::saveTone(const QString &path)
    80 void RingBcPrivate::saveTone(const QString &path)
    81     {
    81     {
    82     QDEBUG_WRITE("RingBcPrivate::saveTone : Enter")
    82     QDEBUG_WRITE("RingBcPrivate::saveTone : Enter")
    83     
    83 
    84     int error(KErrNone);
    84     int error(KErrNone);
    85     HBufC* fileName = S60QConversions::qStringToS60Desc(path);
    85 
    86     TRAP(error, error = saveToneL(*fileName));
    86     TRAP(error, saveToneL(path));
    87     if(error)
    87     if (error)
    88         {
    88         {
    89         QDEBUG_WRITE_FORMAT("RingBcPrivate::saveTone Error code =",error)
    89         QDEBUG_WRITE_FORMAT("RingBcPrivate::saveTone Error code =",error)
    90         
    90         
    91         if(error == KErrCorrupt)
    91         if(error == KErrCorrupt)
    92             {
    92             {
   107     else
   107     else
   108         {
   108         {
   109         HbMessageBox::information("Saved succesfully");
   109         HbMessageBox::information("Saved succesfully");
   110         QDEBUG_WRITE("RingBcPrivate::saveTone : Ringing tone saved successfully")
   110         QDEBUG_WRITE("RingBcPrivate::saveTone : Ringing tone saved successfully")
   111         }
   111         }
   112         
   112 
   113     delete fileName;
       
   114     
       
   115     QDEBUG_WRITE("RingBcPrivate::saveTone : Exit")
   113     QDEBUG_WRITE("RingBcPrivate::saveTone : Exit")
   116     }
   114     }
   117     
   115 
   118 // ----------------------------------------------------------------------------
   116 // ----------------------------------------------------------------------------
   119 // RingBcPrivate::saveToneL
   117 // RingBcPrivate::saveToneL
   120 // @see ringbc_p.h
   118 // @see ringbc_p.h
   121 // ----------------------------------------------------------------------------
   119 // ----------------------------------------------------------------------------
   122 int  RingBcPrivate::saveToneL(const TDesC& aFileName)
   120 void RingBcPrivate::saveToneL(const QString& path)
   123     {
   121     {
   124     QDEBUG_WRITE("RingBcPrivate::saveToneL : Enter")
   122     QDEBUG_WRITE("RingBcPrivate::saveToneL : Enter")
   125     
   123 
       
   124     QStringList pathList = path.split(".");
       
   125     QString extension = QString(".") + pathList.at(pathList.count() - 1);
       
   126 
       
   127     RFs fsSession;
       
   128     User::LeaveIfError(fsSession.Connect());
       
   129 
       
   130     CleanupClosePushL(fsSession);
       
   131 
       
   132     HBufC* fileName = S60QConversions::qStringToS60Desc(path);
       
   133 
       
   134     RFile file;
       
   135     User::LeaveIfError(file.Open(fsSession, fileName->Des(),
       
   136             EFileShareReadersOnly));
       
   137 
       
   138     CleanupClosePushL(file);
       
   139     TInt size;
       
   140     User::LeaveIfError(file.Size(size));
       
   141     
       
   142     HBufC8* dataBuf = HBufC8::NewLC(size);
       
   143     TPtr8 data(dataBuf->Des());
       
   144     User::LeaveIfError(file.Read(data, size));
       
   145     CleanupStack::PopAndDestroy(&file);
       
   146 
       
   147     TBool valid = mConverter->IsRingToneMimeTypeL(data);
       
   148 
       
   149     if (valid)
       
   150         {
       
   151         HBufC* title = mConverter->TitleLC(data);
       
   152         TFileName path = PathInfo::PhoneMemoryRootPath();
       
   153         path.Append(PathInfo::SimpleSoundsPath());
       
   154         path.Append(*title);
       
   155         HBufC* fileExtension = S60QConversions::qStringToS60Desc(extension);
       
   156         path.Append(fileExtension->Des());
       
   157 
       
   158         CFileMan* fileMan = CFileMan::NewL(fsSession);
       
   159         CleanupStack::PushL(fileMan);
       
   160         if(fileMan)
       
   161             {
       
   162             TInt err = fileMan->Copy(fileName->Des(), path, CFileMan::ECopy | CFileMan::EOverWrite);
       
   163             User::LeaveIfError(err);
       
   164             }
       
   165         CleanupStack::PopAndDestroy(2); // title,fileMan        
       
   166         }
       
   167 
       
   168     CleanupStack::PopAndDestroy(); // dataBuf
       
   169     CleanupStack::PopAndDestroy(); //fsSession
       
   170 
       
   171 
       
   172     QDEBUG_WRITE("RingBcPrivate::saveToneL : Exit")
       
   173     }
       
   174 
       
   175 // ----------------------------------------------------------------------------
       
   176 // RingBcPrivate::toneTitle
       
   177 // @see ringbc_p.h
       
   178 // ----------------------------------------------------------------------------
       
   179 QString RingBcPrivate::toneTitle(const QString &path)
       
   180     {
       
   181     QDEBUG_WRITE("RingBcPrivate::toneTitle : Enter")
       
   182 
       
   183     QString title;
       
   184     QStringList pathList = path.split(".");
       
   185     QString extension = pathList.at(pathList.count() - 1);
       
   186 
       
   187     HBufC* fileName = S60QConversions::qStringToS60Desc(path);
       
   188     TRAP_IGNORE( title = titleL(*fileName));
       
   189     
       
   190     title.append(QChar('.'));
       
   191     title.append(extension);
       
   192     
       
   193     QDEBUG_WRITE("RingBcPrivate::toneTitle : Exit")
       
   194     return title;
       
   195     }
       
   196 
       
   197 // ----------------------------------------------------------------------------
       
   198 // RingBcPrivate::titleL
       
   199 // @see ringbc_p.h
       
   200 // ----------------------------------------------------------------------------
       
   201 QString RingBcPrivate::titleL(const TDesC& aFileName)
       
   202     {
       
   203     QDEBUG_WRITE("RingBcPrivate::titleL : Enter")
       
   204 
       
   205     QString title; // initialize to null string
   126     RFs fsSession;
   206     RFs fsSession;
   127     TInt error = fsSession.Connect();
   207     TInt error = fsSession.Connect();
   128     if( error == KErrNone)
   208     if (error == KErrNone)
   129         {
   209         {
   130         CleanupClosePushL(fsSession);
   210         CleanupClosePushL(fsSession);
   131 
   211 
   132         RFile file;
   212         RFile file;
   133         error = file.Open(fsSession,aFileName, EFileRead);
   213         error = file.Open(fsSession, aFileName, EFileRead);
   134 
   214 
   135         if(error == KErrNone)
   215         if (error == KErrNone)
   136             {
   216             {
   137             CleanupClosePushL(file);
   217             CleanupClosePushL(file);
   138             TInt size;
   218             TInt size;
   139             User::LeaveIfError(file.Size(size));
   219             User::LeaveIfError(file.Size(size));
   140             if (size)
   220             if (size)
   141                 {
   221                 {
   142                 HBufC8* dataBuf = HBufC8::NewLC(size);
   222                 HBufC8* dataBuf = HBufC8::NewLC(size);
   143                 TPtr8 data(dataBuf->Des());
   223                 TPtr8 data(dataBuf->Des());
   144                 User::LeaveIfError(file.Read(data, size));             
   224                 User::LeaveIfError(file.Read(data, size));
   145              
   225 
   146                 TBool valid = mConverter->IsRingToneMimeTypeL(data);
   226                 TBool valid = mConverter->IsRingToneMimeTypeL(data);
   147                 if(valid)
   227                 if (valid)
   148                     {
   228                     {
   149                     HBufC* title = mConverter->TitleLC(data);
   229                     HBufC* toneTitle = mConverter->TitleLC(data);
   150                     TFileName path = PathInfo::PhoneMemoryRootPath();
   230                     title = S60QConversions::s60DescToQString(*toneTitle);
   151                     path.Append( PathInfo::SimpleSoundsPath() );
   231                     CleanupStack::PopAndDestroy(); //title
   152                     path.Append(*title);
       
   153                     path.Append(KRingingToneFileExtension);
       
   154 
       
   155                     CFileMan* fileMan = CFileMan::NewL(fsSession);
       
   156                     CleanupStack::PushL( fileMan );
       
   157                     error = fileMan->Copy( file, path );
       
   158                     CleanupStack::PopAndDestroy(2); // title,fileMan        
       
   159                     }
   232                     }
   160                 else 
   233                 CleanupStack::PopAndDestroy(); //dataBuf
   161                     {
   234                 }
   162                     error = KErrCorrupt;
       
   163                     }
       
   164                 CleanupStack::PopAndDestroy(); // dataBuf      
       
   165                 }   
       
   166             CleanupStack::PopAndDestroy(); //file
   235             CleanupStack::PopAndDestroy(); //file
   167             }
   236             }
   168         CleanupStack::PopAndDestroy(); //fsSession
   237         CleanupStack::PopAndDestroy(); //fsSession
   169         }
   238         }
   170     
   239     QDEBUG_WRITE("RingBcPrivate::titleL : Exit")
   171     QDEBUG_WRITE("RingBcPrivate::saveToneL : Exit")
   240     return title;
   172     return error;
   241     }
   173     }
   242 
   174 
       
   175 // ----------------------------------------------------------------------------
       
   176 // RingBcPrivate::toneTitle
       
   177 // @see ringbc_p.h
       
   178 // ----------------------------------------------------------------------------
       
   179  QString RingBcPrivate::toneTitle(const QString &path)
       
   180      {
       
   181      QDEBUG_WRITE("RingBcPrivate::toneTitle : Enter")
       
   182      
       
   183      QString title; 
       
   184      HBufC* fileName = S60QConversions::qStringToS60Desc(path);
       
   185      TRAP_IGNORE( title = titleL(*fileName));
       
   186      
       
   187      QDEBUG_WRITE("RingBcPrivate::toneTitle : Exit")
       
   188      return title;         
       
   189      }
       
   190 
       
   191  // ----------------------------------------------------------------------------
       
   192  // RingBcPrivate::titleL
       
   193  // @see ringbc_p.h
       
   194  // ----------------------------------------------------------------------------
       
   195  QString RingBcPrivate::titleL(const TDesC& aFileName)
       
   196      {
       
   197      QDEBUG_WRITE("RingBcPrivate::titleL : Enter")
       
   198      
       
   199      QString title; // initialize to null string
       
   200      RFs fsSession;
       
   201      TInt error = fsSession.Connect();
       
   202      if( error == KErrNone)
       
   203          {
       
   204          CleanupClosePushL(fsSession);
       
   205 
       
   206          RFile file;
       
   207          error = file.Open(fsSession,aFileName, EFileRead);
       
   208         
       
   209          if(error == KErrNone)
       
   210              {
       
   211              CleanupClosePushL(file);
       
   212              TInt size;
       
   213              User::LeaveIfError(file.Size(size));
       
   214              if (size)
       
   215                  {
       
   216                  HBufC8* dataBuf = HBufC8::NewLC(size);
       
   217                  TPtr8 data(dataBuf->Des());
       
   218                  User::LeaveIfError(file.Read(data, size));             
       
   219 
       
   220                  TBool valid = mConverter->IsRingToneMimeTypeL(data);
       
   221                  if(valid)
       
   222                      {
       
   223                      HBufC* toneTitle = mConverter->TitleLC(data);
       
   224                      title = S60QConversions::s60DescToQString(*toneTitle);
       
   225                      CleanupStack::PopAndDestroy(); //title
       
   226                      }
       
   227                  CleanupStack::PopAndDestroy(); //dataBuf
       
   228                  }
       
   229              CleanupStack::PopAndDestroy(); //file
       
   230              }
       
   231          CleanupStack::PopAndDestroy(); //fsSession
       
   232          }
       
   233      QDEBUG_WRITE("RingBcPrivate::titleL : Exit")
       
   234      return title;           
       
   235      }
       
   236  
       
   237 //  End of File  
   243 //  End of File