TizenRefApp-7605 Implement proper finish of the recorder in different exceptional... 51/96851/2
authorNataliia Kamyshna <n.kamyshna@samsung.com>
Thu, 10 Nov 2016 11:13:21 +0000 (13:13 +0200)
committerAleksandr Sapozhnik <a.sapozhnik@samsung.com>
Fri, 11 Nov 2016 07:51:58 +0000 (23:51 -0800)
Change-Id: I4fee1284a67bf06df9d325632d3bc2a09393aecf
Signed-off-by: Nataliia Kamyshna <n.kamyshna@samsung.com>
lib-common/src/Common/Player.cpp
lib-common/src/Common/Recorder.cpp
memo-app/inc/Input/RecordField.h
memo-app/res/input/edje/record-field-layout.edc
memo-app/src/Input/InputView.cpp
memo-app/src/Input/RecordField.cpp

index da834b52c8473fc5712fcff6548b0983d92922ce..5b47c3f6ab4ebbff1af51127c977b76408e41f71 100644 (file)
@@ -31,6 +31,9 @@ Player::Player(const char *path)
 
 Player::~Player()
 {
+       player_unset_completed_cb(m_Player);
+       player_unset_interrupted_cb(m_Player);
+       player_unprepare(m_Player);
        player_destroy(m_Player);
 }
 
index 6ebd7b496e122f03ff3c8e763dc38314c075f489..7f167e5b288b1e3eccdcb1bade71ed3f986f2811 100644 (file)
@@ -35,6 +35,13 @@ Recorder::Recorder(const char *path)
 
 Recorder::~Recorder()
 {
+       if (getState() != RECORDER_STATE_READY) {
+               recorder_cancel(m_Recorder);
+       }
+       recorder_unset_recording_status_cb(m_Recorder);
+       recorder_unset_recording_limit_reached_cb(m_Recorder);
+       recorder_unset_interrupted_cb(m_Recorder);
+       recorder_unprepare(m_Recorder);
        recorder_destroy(m_Recorder);
 }
 
index 94d3f363ceb62f48a438f299c136cfb43449204c..ad2d07752d3df7ac70d95d9f2ec0a30cf74b841b 100644 (file)
@@ -80,6 +80,11 @@ namespace Input
                 */
                void pause();
 
+               /**
+                * @brief Save record if need.
+                */
+               void save();
+
        private:
                virtual Evas_Object *onCreate(Evas_Object *parent) override;
                virtual void onCreated() override;
index cc83cac5bd64c81960a42ad5bd0f94827d1210a9..829eff6e93666c47b563f962a6c0a99372e671c2 100644 (file)
@@ -217,7 +217,7 @@ collections {
                                        image.normal: RECORD_BTN_CLOSE;
                                        color: 77 77 77 255;
                                }
-                               desc { "hiden";
+                               desc { "hidden";
                                        inherit: "default";
                                        visible: 0;
                                }
@@ -327,7 +327,7 @@ collections {
                        program {
                                signal: SIGNAL_CLOSE_BTN_HIDE;
                                source: "*";
-                               action: STATE_SET "hiden" 0.0;
+                               action: STATE_SET "hidden" 0.0;
                                target: PART_CLOSE_BTN;
                        }
                }
@@ -395,7 +395,6 @@ collections {
                }
                programs {
                        program {
-                               name: "record";
                                signal: SIGNAL_BTN_RESUME;
                                source: "*";
                                script {
@@ -404,7 +403,6 @@ collections {
                                }
                        }
                        program {
-                               name: "pause";
                                signal: SIGNAL_BTN_PAUSE;
                                source: "*";
                                script {
@@ -419,10 +417,8 @@ collections {
                                script {
                                        if (get_int(is_paused) == 1) {
                                                emit(BTN_PAUSE_CLICKED, "");
-                                               run_program(PROGRAM:"record");
                                        } else  {
                                                emit(BTN_RESUME_CLICKED, "");
-                                               run_program(PROGRAM:"pause");
                                        }
                                }
                        }
index 4d158054228fde250234808fa6bafe9c1f532f22..75d0505c1ee73ae94d6c8b5f0004ed29e2caefd7 100644 (file)
@@ -240,6 +240,9 @@ Evas_Object *InputView::createRecordField(Evas_Object *parent, RecordField::Mode
 
 void InputView::onDonePressed(Evas_Object *button, void *eventInfo)
 {
+       if (m_RecordField) {
+               m_RecordField->save();
+       }
        m_Memo.setContent(m_InputBox->getContent());
        getMemo().setTime(getCurrentTime());
 
index b77f5ec489c0cb05a63220fed09d15d482782fe0..2cc583690358a0d143db3e88eba983ab0f79b325 100644 (file)
@@ -56,7 +56,6 @@ RecordField::RecordField(std::string path, Mode mode)
 RecordField::~RecordField()
 {
        if (m_Recorder) {
-               m_Recorder->save();
                delete m_Recorder;
        }
        if (m_PlayTimer) {
@@ -90,18 +89,24 @@ void RecordField::pause()
                case ModeRecorder:
                        if (m_Recorder->getState() == RECORDER_STATE_RECORDING) {
                                pauseRecorder();
-                               elm_object_signal_emit(m_RecordBtn, SIGNAL_BTN_RESUME, "*");
                        }
                        break;
                case ModePlayer:
                        if (m_Player->getState() == PLAYER_STATE_PLAYING) {
                                pausePlayer();
-                               elm_object_signal_emit(m_PlayBtn, SIGNAL_BTN_RESUME, "*");
                        }
                        break;
        }
 }
 
+void RecordField::save()
+{
+       if (m_Mode == ModeRecorder && (m_Recorder->getState() == RECORDER_STATE_RECORDING
+                       || m_Recorder->getState() == RECORDER_STATE_PAUSED)) {
+               m_Recorder->save();
+       }
+}
+
 Evas_Object *RecordField::onCreate(Evas_Object *parent)
 {
        Evas_Object *layout = elm_layout_add(parent);
@@ -213,12 +218,14 @@ void RecordField::pauseRecorder()
 {
        m_Recorder->pause();
        elm_object_signal_emit(getEvasObject(), SIGNAL_ICON_PAUSE, "*");
+       elm_object_signal_emit(m_RecordBtn, SIGNAL_BTN_RESUME, "*");
 }
 
 void RecordField::pausePlayer()
 {
        ecore_timer_freeze(m_PlayTimer);
        m_Player->pause();
+       elm_object_signal_emit(m_PlayBtn, SIGNAL_BTN_RESUME, "*");
 }
 
 void RecordField::onRecording(unsigned long long elapsedTime, unsigned long long fileSize)
@@ -242,6 +249,7 @@ void RecordField::onRecordPressed()
        m_Recorder->start();
        elm_object_signal_emit(getEvasObject(), SIGNAL_ICON_REC, "*");
        elm_object_signal_emit(getEvasObject(), SIGNAL_BTN_STOP_SHOW, "*");
+       elm_object_signal_emit(m_RecordBtn, SIGNAL_BTN_PAUSE, "*");
 }
 
 void RecordField::onRecordPausePressed()
@@ -263,6 +271,7 @@ void RecordField::onPlayPressed()
        m_Player->start();
        elm_object_signal_emit(getEvasObject(), SIGNAL_RECORD_TIME_HIDE, "*");
        elm_object_signal_emit(getEvasObject(), SIGNAL_PROGRESS_BAR_SHOW, "*");
+       elm_object_signal_emit(m_PlayBtn, SIGNAL_BTN_PAUSE, "*");
        elm_progressbar_value_set(m_ProgressBar, 0.0);
        ecore_timer_thaw(m_PlayTimer);
 }