diff --git a/app/actions/navigation.jsx b/app/actions/navigation.jsx
index 3b0997c..c9046a7 100644
--- a/app/actions/navigation.jsx
+++ b/app/actions/navigation.jsx
@@ -72,3 +72,10 @@ export function refreshNavigation(callback){
callback
}
}
+
+export function noteAdded(callback){
+ return {
+ type: types.NOTE_ADDED,
+ callback
+ }
+}
diff --git a/app/constants/navigation.jsx b/app/constants/navigation.jsx
index e8ec53f..2db6a0b 100644
--- a/app/constants/navigation.jsx
+++ b/app/constants/navigation.jsx
@@ -7,6 +7,7 @@ export const MENU_TYPE = 'MENU_TYPE'
export const ADD_MENU_ITEM = 'ADD_MENU_ITEM'
export const UPDATE_MENU_ITEM = 'UPDATE_MENU_ITEM'
export const REMOVE_MENU_ITEM = 'REMOVE_MENU_ITEM'
+export const MAX_MENU_ITEMS = 10
// Notebook item manipulation
export const NOTEBOOK_TYPE = 'NOTEBOOK_TYPE'
@@ -14,3 +15,4 @@ export const ADD_NOTEBOOK = 'ADD_NOTEBOOK'
export const REMOVE_NOTEBOOK = 'REMOVE_NOTEBOOK'
export const SORT_NOTEBOOKS = 'SORT_NOTEBOOKS'
export const UPDATE_NOTEBOOK = 'UPDATE_NOTEBOOK'
+export const NOTE_ADDED = 'NOTE_ADDED'
diff --git a/app/reducers/navigation.jsx b/app/reducers/navigation.jsx
index f30bd4c..6d381ba 100644
--- a/app/reducers/navigation.jsx
+++ b/app/reducers/navigation.jsx
@@ -6,8 +6,10 @@ import {
ADD_NOTEBOOK,
REMOVE_NOTEBOOK,
UPDATE_NOTEBOOK,
+ NOTE_ADDED,
SORT_NOTEBOOKS,
NOTEBOOK_TYPE,
+ MAX_MENU_ITEMS,
MENU_TYPE,
REFRESH
} from '../constants/navigation'
@@ -65,9 +67,9 @@ function getInitialState(){
'icon': ,
'glob': '*.qvnotebook/*.qvnote',
'filter': (notes) => {
- // Get the 10 most recent notes
+ // Get the most recent notes
notes.sort(utils.compareNotes())
- return notes.slice(0, 10)
+ return notes.slice(0, MAX_MENU_ITEMS)
}
},
{
@@ -130,6 +132,107 @@ function getInitialState(){
}
+export default function navigation(state = initialState, action){
+ switch (action.type) {
+ case UPDATE_SELECTION:
+
+ var selectionDetails = findIndex(state, action.selection)
+
+ return Object.assign({}, state, {
+ selection: action.selection,
+ selectionType: selectionDetails.type,
+ selectionIndex: selectionDetails.index,
+ callback: action.callback || emptyFunc
+ })
+ case ADD_MENU_ITEM:
+ state.menuItems.push(action.item)
+ return Object.assign({}, state, {
+ menuItems: state.menuItems,
+ callback: action.callback || emptyFunc
+ })
+ case REMOVE_MENU_ITEM:
+ state.menuItems.splice(action.index, 1)
+ return Object.assign({}, state, {
+ menuItems: state.menuItems,
+ callback: action.callback || emptyFunc
+ })
+ case ADD_NOTEBOOK:
+ state.notebooks.splice(0, 0, action.notebook)
+ return Object.assign({}, state, {
+ notebooks: state.notebooks,
+ callback: action.callback || emptyFunc
+ })
+ case REMOVE_NOTEBOOK:
+ state.notebooks.splice(action.index, 1)
+ return Object.assign({}, state, {
+ notebooks: state.notebooks,
+ callback: action.callback || emptyFunc
+ })
+ case UPDATE_MENU_ITEM:
+ state.menuItems[action.index] = action.item
+ return Object.assign({}, state, {
+ menuItems: state.menuItems,
+ callback: action.callback || emptyFunc
+ })
+ case UPDATE_NOTEBOOK:
+ state.notebooks[action.index] = action.notebook
+ return Object.assign({}, state, {
+ notebooks: state.notebooks,
+ callback: action.callback || emptyFunc
+ })
+
+ case SORT_NOTEBOOKS:
+ state.notebooks.sort(action.sortFunc)
+ return Object.assign({}, state, {
+ notebooks: state.notebooks,
+ callback: action.callback || emptyFunc
+ })
+
+ case REFRESH:
+
+ var menuItems = refreshMenuItems(state)
+ var newNotebooks = refreshNotebooks()
+
+ return Object.assign({}, state, {
+ notebooks: newNotebooks,
+ menuItems: menuItems,
+ callback: action.callback || emptyFunc
+ })
+ case NOTE_ADDED:
+ var notebookIndex = state.selectionIndex
+
+ if(state.selectionType == MENU_TYPE){
+ var menuItem = state.menuItems[notebookIndex]
+ menuItem.notes += 1
+ }
+ else if(state.selectionType == NOTEBOOK_TYPE){
+ var notebook = state.notebooks[notebookIndex]
+ notebook.notes += 1
+ }
+
+ for(var i=0; i