diff -r 5505e8908944 -r 32e421e6175c internal/gstplayer/src/GSTPlayerappui.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/internal/gstplayer/src/GSTPlayerappui.cpp Wed Mar 24 17:55:38 2010 -0500 @@ -0,0 +1,447 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2 of the License, or (at your option) any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the +* Free Software Foundation, Inc., 59 Temple Place - Suite 330, +* Boston, MA 02111-1307, USA. +* +* Description: +* +*/ +/* +* ============================================================================== +* Name : gstplayerappui.cpp +* Part of : gstplayer +* Interface : +* Description : +* Version : +* + +* ============================================================================== +*/ + +// INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "GSTPlayer.pan" +#include "GSTPlayerAppUi.h" +#include "GSTPlayerAppView.h" +#include "GSTPlayer.hrh" + +#include "GlibEventHandler.h" +#include "gstreamer.h" + +TFileName fileName; + +_LIT( KHelloFileName, "\\private\\A000017F\\Hello.txt" ); +_LIT( KHelloText, "HELLO WORLD!"); + +// ============================ MEMBER FUNCTIONS =============================== + + +// ----------------------------------------------------------------------------- +// CGSTPlayerAppUi::ConstructL() +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CGSTPlayerAppUi::ConstructL() + { + // Initialise app UI with standard value. + BaseConstructL(CAknAppUi::EAknEnableSkin); + // Here the Hello.txt file can be created, if it is not copied automatically. + /* + RFs fsSession; + User::LeaveIfError(fsSession.Connect()); + + RFile file; + + // Create a file to write the text to + if ( file.Replace(fsSession, KHelloFileName, EFileWrite ) != KErrNone ) + { + return; + } + CleanupClosePushL( file ); + + RFileWriteStream outputFileStream( file ); + CleanupClosePushL( outputFileStream ); + outputFileStream << KHelloText; + + CleanupStack::PopAndDestroy(2); // file, outputFileStream + + fsSession.Close(); + */ + + // Create view object + iAppView = CGSTPlayerAppView::NewL(ClientRect() ); + + iGstView = iAppView; + + } +// ----------------------------------------------------------------------------- +// CGSTPlayerAppUi::CGSTPlayerAppUi() +// C++ default constructor can NOT contain any code, that might leave. +// ----------------------------------------------------------------------------- +// +CGSTPlayerAppUi::CGSTPlayerAppUi() + { + // No implementation required + } + +// ----------------------------------------------------------------------------- +// CGSTPlayerAppUi::~CGSTPlayerAppUi() +// Destructor. +// ----------------------------------------------------------------------------- +// +CGSTPlayerAppUi::~CGSTPlayerAppUi() + { + + if (iAppView) + { + delete iAppView; + iAppView = NULL; + } + + } + +// ----------------------------------------------------------------------------- +// CGSTPlayerAppUi::HandleCommandL() +// Takes care of command handling. +// ----------------------------------------------------------------------------- +// +void CGSTPlayerAppUi::HandleCommandL(TInt aCommand) + { + switch (aCommand) + { + case EEikCmdExit: + case EAknSoftkeyExit: + if (pipeline!=NULL && pipeline ->current_state + == GST_STATE_PLAYING) + { + + gst_element_set_state(pipeline, GST_STATE_NULL); + gst_object_unref(GST_OBJECT (pipeline)); + + } + Exit(); + break; + + case EGSTPlayerNewSong: + { + /*TDes& aPath; + TBool aMemoryCardStorageAllowed;*/ + if (pipeline!=NULL && pipeline ->current_state + == GST_STATE_PLAYING) + { + + gst_element_set_state(pipeline, GST_STATE_NULL); + gst_object_unref(GST_OBJECT (pipeline)); + + } + CAknMemorySelectionDialog* memoryDialog = + CAknMemorySelectionDialog::NewL(ECFDDialogTypeSave, + R_MUSICSHOP_MEMORY_SELECTION_DIALOG, EFalse); + CleanupStack::PushL(memoryDialog); + + CAknMemorySelectionDialog::TMemory + mem(CAknMemorySelectionDialog::EPhoneMemory); + TFileName ignore; + //TFileName path; + if (! (memoryDialog->ExecuteL(mem, &fileName, &ignore) )) + { + // User dnt select the memory location. + // retVal = EFalse; + } + else + { + //aPath.Copy( path ); + } + CleanupStack::PopAndDestroy(); // memoryDialog + + + //if user has pressed cancel button, then just return + if (!ShowDirListL(fileName)) + { + return; + } //end if + if (GstreamerNew(fileName) == -1) + { + // Load a string from the resource file and display it + HBufC* textResource = + StringLoader::LoadLC( R_HEWB_COMMAND1_TEXT); + CAknInformationNote* informationNote; + + informationNote = new ( ELeave ) CAknInformationNote; + + // Show the information Note with + // textResource loaded with StringLoader. + informationNote->ExecuteLD( *textResource); + + // Pop HBuf from CleanUpStack and Destroy it. + CleanupStack::PopAndDestroy(textResource); + + } + + } + break; + case EGSTPlayerPlay: + if (pipeline!=NULL && pipeline ->current_state + == GST_STATE_PLAYING) + { + + gst_element_set_state(pipeline, GST_STATE_NULL); + //gst_object_unref (GST_OBJECT (pipeline)); + + } + if (GstreamerNew(fileName) == -1) + { + // Load a string from the resource file and display it + HBufC* textResource = + StringLoader::LoadLC( R_HEWB_COMMAND2_TEXT); + CAknInformationNote* informationNote; + + informationNote = new ( ELeave ) CAknInformationNote; + + // Show the information Note with + // textResource loaded with StringLoader. + informationNote->ExecuteLD( *textResource); + + // Pop HBuf from CleanUpStack and Destroy it. + CleanupStack::PopAndDestroy(textResource); + + } + + break; + case EGSTPlayerStop: + if (pipeline!=NULL) + { + + gst_element_set_state(pipeline, GST_STATE_NULL); + gst_object_unref (GST_OBJECT (pipeline)); + pipeline = NULL; + } + break; + case EGSTRecorderStop: + if (pipeline!=NULL) + { + gst_element_send_event (pipeline, gst_event_new_eos ()); + } + break; + + case EGSTPlayerPause: + if (pipeline!=NULL ) + { + + gst_element_set_state(pipeline, GST_STATE_PAUSED); + //gst_object_unref (GST_OBJECT (pipeline)); + + } + break; + + case EGSTPlayerResume: + if (pipeline!=NULL) + { + + gst_element_set_state(pipeline, GST_STATE_PLAYING); + //gst_object_unref (GST_OBJECT (pipeline)); + + } + break; + + case EGSTPlayerRecordWav: + { + if (pipeline!=NULL && pipeline ->current_state + == GST_STATE_PLAYING) + { + + gst_element_set_state(pipeline, GST_STATE_NULL); + //gst_object_unref (GST_OBJECT (pipeline)); + + } + gst_record_wav(); + } + break; + + case EGSTPlayerRecordRaw: + { + if (pipeline!=NULL && pipeline ->current_state + == GST_STATE_PLAYING) + { + + gst_element_set_state(pipeline, GST_STATE_NULL); + //gst_object_unref (GST_OBJECT (pipeline)); + + } + gst_record_raw(); + } + break; + + case EGSTPlayerRecordAmr: + { + if (pipeline!=NULL && pipeline ->current_state + == GST_STATE_PLAYING) + { + + gst_element_set_state(pipeline, GST_STATE_NULL); + //gst_object_unref (GST_OBJECT (pipeline)); + + } + gst_record_amr(); + } + break; + + case EGSTPlayerRecordG711: + { + if (pipeline!=NULL && pipeline ->current_state + == GST_STATE_PLAYING) + { + + gst_element_set_state(pipeline, GST_STATE_NULL); + //gst_object_unref (GST_OBJECT (pipeline)); + + } + gst_record_g711(); + } + break; + case EGSTPlayerRecordG729: + { + if (pipeline!=NULL && pipeline ->current_state + == GST_STATE_PLAYING) + { + + gst_element_set_state(pipeline, GST_STATE_NULL); + //gst_object_unref (GST_OBJECT (pipeline)); + + } + gst_record_g729(); + } + break; + case EGSTPlayerRecordIlbc: + { + if (pipeline!=NULL && pipeline ->current_state + == GST_STATE_PLAYING) + { + + gst_element_set_state(pipeline, GST_STATE_NULL); + //gst_object_unref (GST_OBJECT (pipeline)); + + } + gst_record_ilbc(); + } + break; + + case EGSTPlayerCurrentVolume: + gst_current_volume(); + break; + case EGSTPlayerMaxVolume: + gst_max_volume(); + break; + case EGSTPlayerVolumeUp: + gst_volume_up(); + break; + case EGSTPlayerVolumeDown: + gst_volume_down(); + break; + case EGSTPlayerLeftBalance: + case EGSTPlayerRightBalance: + gst_balance(); + break; + case EGSTPlayerCurrentGain: + gst_current_gain(); + break; + case EGSTPlayerMaxGain: + gst_max_gain(); + break; + case EGSTPlayerGainUp: + gst_gain_up(); + break; + case EGSTPlayerGainDown: + gst_gain_down(); + break; + case EGSTPlayerSamplesPlayed: + samplesplayed(); + break; + case EGSTPlayerSamplesRecorded: + samplesrecorded(); + break; + case EGSTPlayerSinkPadCaps: + getsinkpadcaps(); + break; + case EGSTPlayerSrcPadCaps: + getsrcpadcaps(); + break; + case EGSTPlayerNegotiatedSinkCaps: + negotiatedsinkcaps(); + break; + case EGSTPlayerNegotiatedSrcCaps: + negotiatedsrccaps(); + break; + default: + Panic(EGSTPlayerUi); + break; + } + } +// ----------------------------------------------------------------------------- +// Called by the framework when the application status pane +// size is changed. Passes the new client rectangle to the +// AppView +// ----------------------------------------------------------------------------- +// +void CGSTPlayerAppUi::HandleStatusPaneSizeChange() + { + iAppView->SetRect(ClientRect() ); + + } + +TBool CGSTPlayerAppUi::ShowDirListL(TFileName &filePath) + { + + _LIT(KDialogTitle, "Select File"); + + TBool ret = CAknFileSelectionDialog::RunDlgLD(filePath, // on return, contains the selected file's name + PathInfo::PhoneMemoryRootPath(), // default root path for browsing + KDialogTitle, // Dialog's title + 0 // Pointer to class implementing + // MAknFileSelectionObserver. OkToExitL is called + // when user has selected an file. + ); + + return ret; + + } + +void ShowNoteL() + { + // Load a string from the resource file and display it + HBufC* textResource = StringLoader::LoadLC( R_HEWB_COMMAND1_TEXT); + CAknInformationNote* informationNote; + + informationNote = new ( ELeave ) CAknInformationNote; + + // Show the information Note with + // textResource loaded with StringLoader. + informationNote->ExecuteLD( *textResource); + + // Pop HBuf from CleanUpStack and Destroy it. + CleanupStack::PopAndDestroy(textResource); + } +// End of File +