--- /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 <avkon.hrh>
+#include <aknnotewrappers.h>
+#include <stringloader.h>
+#include <GSTPlayer.rsg>
+#include <CAknMemorySelectionDialog.h>
+#include <f32file.h>
+#include <s32file.h>
+#include <PathInfo.h>
+#include <gst/gst.h>
+
+#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
+