notes/notesui/notesviews/src/notesnoteview.cpp
changeset 45 b6db4fd4947b
parent 23 fd30d51f876b
child 55 2c54b51f39c4
--- a/notes/notesui/notesviews/src/notesnoteview.cpp	Mon May 03 12:30:32 2010 +0300
+++ b/notes/notesui/notesviews/src/notesnoteview.cpp	Mon Jun 28 15:22:02 2010 +0530
@@ -26,6 +26,8 @@
 #include <HbGroupBox>
 #include <HbListViewItem>
 #include <HbInstance>
+#include <HbNotificationDialog>
+#include <HbLabel>
 
 // User includes
 #include "notesnoteview.h"
@@ -53,7 +55,8 @@
 NotesNoteView::NotesNoteView(QGraphicsWidget *parent)
 :HbView(parent),
  mSelectedItem(0),
- mDeleteAction(0)
+ mDeleteAction(0),
+ mIsLongTop(false)
  {
 	// Nothing yet.
  }
@@ -97,8 +100,9 @@
 	subModel->setSourceModel(mProxyModel);
 
 	// Get the list object from the document and update the model.
-	mListView = static_cast<HbListView *>
-	(mDocLoader->findWidget("noteListView"));
+	mListView = static_cast<HbListView *> (
+			mDocLoader->findWidget("noteListView"));
+	
 	// Update the list view model.
 	mListView->setModel(subModel);
 	// Setup the operations that can be done with a list view.
@@ -111,6 +115,10 @@
 			this,
 			SLOT(handleItemLongPressed(HbAbstractViewItem *, const QPointF &)));
 
+	// Get the empty list label.
+	mEmptyListLabel = static_cast<HbLabel *> (
+			mDocLoader->findWidget("emptyListLabel"));
+
 	// Get the toolbar/menu actions.
 	mAddNoteAction = static_cast<HbAction *> (
 			mDocLoader->findObject("newNoteAction"));
@@ -126,8 +134,7 @@
 
 	mViewCollectionAction = static_cast<HbAction *> (
 			mDocLoader->findObject("displayCollectionsAction"));
-	mViewCollectionAction->setCheckable(true);
-	mViewCollectionAction->setChecked(true);
+	
 	connect(
 			mViewCollectionAction, SIGNAL(changed()),
 			this, SLOT(handleActionStateChanged()));
@@ -142,11 +149,31 @@
 			window, SIGNAL(orientationChanged(Qt::Orientation)),
 			this, SLOT(handleOrientationChanged(Qt::Orientation)));
 
+
+	connect(
+			mAgendaUtil, SIGNAL(entryAdded(ulong)),
+			this,SLOT(updateView(ulong)));
+	connect(
+			mAgendaUtil, SIGNAL(entryDeleted(ulong)),
+			this,SLOT(updateView(ulong)));
+	connect(
+			mAgendaUtil, SIGNAL(entryUpdated(ulong)),
+			this, SLOT(updateView(ulong)));
+	
+
 	// Set the graphics size for the icons.
 	HbListViewItem *prototype = mListView->listItemPrototype();
 	prototype->setGraphicsSize(HbListViewItem::SmallIcon);
 }
 
+/*
+	Updates the note view either to show notes or emptyListLabel.
+ */
+void NotesNoteView::updateNoteView()
+{
+	updateView();
+}
+
 /*!
 	Opens the note editor to create a new note.
  */
@@ -170,34 +197,36 @@
  */
 void NotesNoteView::handleItemReleased(const QModelIndex &index)
 {
-	// Sanity check.
-	if (!index.isValid()) {
-		return;
-	}
+	if(!mIsLongTop) {
+		// Sanity check.
+		if (!index.isValid()) {
+			return;
+		}
 
-	// First get the id of the note and get the corresponding information from
-	// agendautil.
-	ulong noteId = index.data(NotesNamespace::IdRole).value<qulonglong>();
+		// First get the id of the note and get the corresponding information from
+		// agendautil.
+		ulong noteId = index.data(NotesNamespace::IdRole).value<qulonglong>();
 
-	if (0 >= noteId) {
-		// Something wrong.
-		return;
-	}
+		if (0 >= noteId) {
+			// Something wrong.
+			return;
+		}
 
-	// Get the entry details.
-	AgendaEntry entry = mAgendaUtil->fetchById(noteId);
+		// Get the entry details.
+		AgendaEntry entry = mAgendaUtil->fetchById(noteId);
 
-	if (entry.isNull()) {
-		// Entry invalid.
-		return;
+		if (entry.isNull()) {
+			// Entry invalid.
+			return;
+		}
+
+		// Now launch the editor with the obtained info.
+		mNotesEditor = new NotesEditor(mAgendaUtil, this);
+		connect(
+				mNotesEditor, SIGNAL(editingCompleted(bool)),
+				this, SLOT(handleEditingCompleted(bool)));
+		mNotesEditor->edit(entry);
 	}
-
-	// Now launch the editor with the obtained info.
-	mNotesEditor = new NotesEditor(mAgendaUtil, this);
-	connect(
-			mNotesEditor, SIGNAL(editingCompleted(bool)),
-			this, SLOT(handleEditingCompleted(bool)));
-	mNotesEditor->edit(entry);
 }
 
 /*!
@@ -212,6 +241,7 @@
 		HbAbstractViewItem *item, const QPointF &coords)
 {
 	mSelectedItem = item;
+	mIsLongTop = true;
 
 	ulong noteId = item->modelIndex().data(
 			NotesNamespace::IdRole).value<qulonglong>();
@@ -219,48 +249,32 @@
 
 	// Display a context specific menu.
 	HbMenu *contextMenu = new HbMenu();
+	connect(
+			contextMenu,SIGNAL(aboutToClose()),
+			this, SLOT(handleMenuClosed()));
 
 	// Add actions to the context menu.
 	mOpenAction =
 			contextMenu->addAction(hbTrId("txt_common_menu_open"));
-	connect(
-			mOpenAction, SIGNAL(triggered()),
-			this, SLOT(openNote()));
 
 	mDeleteAction =
 			contextMenu->addAction(hbTrId("txt_common_menu_delete"));
-	connect(
-			mDeleteAction, SIGNAL(triggered()),
-			this, SLOT(deleteNote()));
 
 	if (AgendaEntry::TypeNote == entry.type()) {
 		if (entry.favourite()) {
-			mMakeFavouriteAction =
-					contextMenu->addAction(
+			mMakeFavouriteAction = contextMenu->addAction(
 							hbTrId("txt_notes_menu_remove_from_favorites"));
-
-			connect(
-					mMakeFavouriteAction, SIGNAL(triggered()),
-					this, SLOT(markNoteAsFavourite()));
-
 		} else {
-			mMakeFavouriteAction =
-					contextMenu->addAction(
+			mMakeFavouriteAction = contextMenu->addAction(
 							hbTrId("txt_notes_menu_mark_as_favorite"));
-
-			connect(
-					mMakeFavouriteAction, SIGNAL(triggered()),
-					this, SLOT(markNoteAsFavourite()));
 		}
 		mMarkTodoAction = contextMenu->addAction(
 				hbTrId("txt_notes_menu_make_it_as_todo_note"));
-		connect(
-				mMarkTodoAction, SIGNAL(triggered()),
-				this, SLOT(markNoteAsTodo()));
 	}
 
 	// Show the menu.
-	contextMenu->exec(coords);
+	contextMenu->open(this, SLOT(selectedMenuAction(HbAction*)));
+	contextMenu->setPreferredPos(coords);
 }
 
 /*!
@@ -357,6 +371,13 @@
 	// Delete the old entry.
 	mAgendaUtil->deleteEntry(entry.id());
 
+	// Show the soft notification.
+	HbNotificationDialog *notificationDialog = new HbNotificationDialog();
+	notificationDialog->setTimeout(
+			HbNotificationDialog::ConfirmationNoteTimeout);
+	notificationDialog->setTitle(
+			hbTrId("txt_notes_dpopinfo_note_moved_to_todos"));
+	notificationDialog->show();
 }
 
 /*!
@@ -437,5 +458,47 @@
 	// Launch the notes editor with the obtained info.
 	mNotesEditor->edit(entry);
 }
+
+/*!
+	Slot to handle context menu actions.
+ */
+void NotesNoteView::selectedMenuAction(HbAction *action)
+{
+	if (action == mOpenAction) {
+		openNote();
+	} else if (action == mDeleteAction) {
+		deleteNote();
+	} else if (action == mMakeFavouriteAction) {
+		markNoteAsFavourite();
+	} else if (action == mMarkTodoAction) {
+		markNoteAsTodo();
+	}
+}
+
+/*!
+	Slot to handle the context menu closed.
+ */
+void NotesNoteView::handleMenuClosed()
+{
+	mIsLongTop = false;
+}
+
+/*!
+	Handles the visibility of empty list label.
+ */
+void NotesNoteView::updateView(ulong id)
+{
+	Q_UNUSED(id)
+
+	// Get the numbers of notes.
+	if (0 >= mListView->model()->rowCount()) {
+		mEmptyListLabel->show();
+		mListView->hide();
+	} else {
+		mEmptyListLabel->hide();
+		mListView->show();
+	}
+}
+
 // End of file	--Don't remove this.