notes/notesui/notesviewmanager/src/notesviewmanager.cpp
changeset 45 b6db4fd4947b
parent 23 fd30d51f876b
child 55 2c54b51f39c4
--- a/notes/notesui/notesviewmanager/src/notesviewmanager.cpp	Mon May 03 12:30:32 2010 +0300
+++ b/notes/notesui/notesviewmanager/src/notesviewmanager.cpp	Mon Jun 28 15:22:02 2010 +0530
@@ -24,6 +24,8 @@
 #include <HbListView>
 #include <HbMessageBox>
 #include <HbAction>
+#include <hbapplication> // hbapplication
+#include <hbactivitymanager> // hbactivitymanager
 
 // User includes
 #include "notesviewmanager.h"
@@ -59,8 +61,40 @@
 
 	mAgendaUtil = mAppControllerIf.agendaUtil();
 
-	// Load the main view at the start up.
-	loadNotesMainView();
+	// Check the Application Startup reason from Activity Manager
+	int activityReason = qobject_cast<HbApplication*>(qApp)->activateReason();
+
+	if (Hb::ActivationReasonActivity == activityReason) // Check if application is started 
+	    // from an application
+	    {
+        // Application is started from an activity
+		// extract activity data
+        QVariant data = qobject_cast<HbApplication*>(qApp)->activateData();
+        // Restore state from activity data
+        QByteArray serializedModel = data.toByteArray();
+        QDataStream stream(&serializedModel, QIODevice::ReadOnly);
+        int viewId;
+        stream >> viewId; // read stream into an int
+
+        if (NotesNamespace::NotesMainViewId == viewId) // Check if viewId is main view
+            {
+            // Load MainView
+            loadNotesMainView();
+            }
+        else if (NotesNamespace::NotesCollectionViewId == viewId) // Check if the viewId is collective view
+            {
+            //no implementation yet, UI Specs not available
+            }
+	    }
+	else // application started by either service framework or normally
+	    {
+        // Load the main view at the start up.
+        loadNotesMainView();
+	    }
+
+	connect(
+			mAgendaUtil, SIGNAL(instanceViewCreationCompleted(int)),
+			this,SLOT(handleInstanceViewCreationCompleted(int)));
 
 	// Delay loading of other views till main view is loaded.
 	connect(
@@ -90,27 +124,59 @@
 			window->removeView(window->currentView());
 			window->addView(mMainView);
 			window->setCurrentView(mMainView);
+			mMainView->captureScreenShot(false);
 			break;
 
 		case NotesNamespace::NotesCollectionViewId:
+		    if (mMainView)
+		        {
+                if (mMainView == window->currentView())
+                    {
+                    mMainView->captureScreenShot(true);
+                    }
+		        }
 			window->removeView(window->currentView());
 			window->addView(mCollectionView);
 			window->setCurrentView(mCollectionView);
 			break;
 
 		case NotesNamespace::NotesTodoViewId:
+		    if (mMainView)
+		        {
+                if (mMainView == window->currentView())
+                    {
+                    mMainView->captureScreenShot(true);
+                    }
+		        }
+
 			window->removeView(window->currentView());
 			window->addView(mTodoView);
 			window->setCurrentView(mTodoView);
 			break;
 
 		case NotesNamespace::NotesFavoritesViewId:
+	         if (mMainView)
+	             {
+                 if (mMainView == window->currentView())
+                     {
+	                 mMainView->captureScreenShot(true);
+	                 }
+	             }
+
 			window->removeView(window->currentView());
 			window->addView(mFavoriteView);
 			window->setCurrentView(mFavoriteView);
 			break;
 
 		case NotesNamespace::NotesNoteViewId:
+	         if (mMainView)
+	             {
+	             if (mMainView == window->currentView())
+	                 {
+	                 mMainView->captureScreenShot(true);
+	                 }
+	             }
+
 			window->removeView(window->currentView());
 			window->addView(mNoteView);
 			window->setCurrentView(mNoteView);
@@ -249,21 +315,12 @@
 }
 
 /*!
-	 Delete the entry.
- */
-void NotesViewManager::deleteEntryFromView(ulong entryId)
-{
-	if (showDeleteConfirmationQuery(entryId)) {
-		// Delete the given note.
-		mAgendaUtil->deleteEntry(entryId);
-	}
-}
-
-/*!
 	Loads other views from the docml file.
  */
 void NotesViewManager::loadOtherViews()
 {
+	mMainView->setupAfterViewReady();
+
 	// Load the collection view.
 	loadNotesCollectionView();
 	// Load the to-do view.
@@ -280,38 +337,77 @@
 			this, SLOT(loadOtherViews()));
 }
 
-/* !
-	Show the delete confirmation query.
+/*!
+	 Delete the entry.
  */
-bool NotesViewManager::showDeleteConfirmationQuery(ulong noteId)
+void NotesViewManager::deleteEntryFromView(ulong entryId)
 {
-	bool retValue(false);
-
-	HbMessageBox confirmationQuery(HbMessageBox::MessageTypeQuestion);
-	confirmationQuery.setDismissPolicy(HbDialog::NoDismiss);
-	confirmationQuery.setTimeout(HbDialog::NoTimeout);
-	confirmationQuery.setIconVisible(true);
+	mEntryId = entryId;
+	HbMessageBox *confirmationQuery = new HbMessageBox(
+			HbMessageBox::MessageTypeQuestion);
+	confirmationQuery->setDismissPolicy(HbDialog::NoDismiss);
+	confirmationQuery->setTimeout(HbDialog::NoTimeout);
+	confirmationQuery->setIconVisible(true);
 
 	QString displayText;
 	QString x;
-	AgendaEntry entry = mAgendaUtil->fetchById(noteId);
+	AgendaEntry entry = mAgendaUtil->fetchById(entryId);
 	if (AgendaEntry::TypeTodo == entry.type()) {
 		displayText += hbTrId("txt_notes_info_delete_todo_note");
 	} else {
 		displayText += hbTrId("txt_notes_info_delete_note");
 	}
 
-	confirmationQuery.setText(displayText);
+	confirmationQuery->setText(displayText);
+
+	// Remove the default actions.
+	QList<QAction *> defaultActions = confirmationQuery->actions();
+	for (int index=0;index<defaultActions.count();index++) {
+		confirmationQuery->removeAction(defaultActions[index]);
+	}
+	defaultActions.clear();
+
+	// Add delete and cancel actions
+	mDeleteAction = new HbAction(hbTrId("txt_notes_button_dialog_delete"));
+	mCancelAction = new HbAction(hbTrId("txt_common_button_cancel"));
+
+	confirmationQuery->addAction(mDeleteAction);
+	confirmationQuery->addAction(mCancelAction);
+
+	confirmationQuery->open(this, SLOT(selectedAction(HbAction*)));
+}
 
-	confirmationQuery.setPrimaryAction(new HbAction(
-	    hbTrId("txt_notes_button_dialog_delete"), &confirmationQuery));
-	confirmationQuery.setSecondaryAction(new HbAction(
-	    hbTrId("txt_common_button_cancel"), &confirmationQuery));
-	HbAction *selected = confirmationQuery.exec();
-	if (selected == confirmationQuery.primaryAction()) {
-		retValue = true;
+/*!
+	Slot to handle the delete action
+ */
+void NotesViewManager::selectedAction(HbAction *action)
+{
+	if (action == mDeleteAction) {
+		// Delete the given note.
+		mAgendaUtil->deleteEntry(mEntryId);
 	}
+}
 
-	return retValue;
+/*!
+	Slot to handle instance view creation complete.
+ */
+void NotesViewManager::handleInstanceViewCreationCompleted(int status)
+{
+	Q_UNUSED(status)
+
+	// Update the title for main view.
+	mMainView->updateTitle();
+
+	// Populate collections view.
+	mCollectionView->populateListView();
+
+	// Update the title for to-do view.
+	mTodoView->updateTitle();
+	
+	// Update the plain notes view.
+	mNoteView->updateNoteView();
+	
+	// Update the favorites view.
+	mFavoriteView->updateFavoriteView();
 }
 // End of file	--Don't remove this.