File: notetable.h

package info (click to toggle)
nixnote2 2.0~beta11-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 9,448 kB
  • ctags: 7,058
  • sloc: cpp: 68,338; java: 1,096; sh: 834; makefile: 27
file content (200 lines) | stat: -rw-r--r-- 13,240 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
/*********************************************************************************
NixNote - An open-source client for the Evernote service.
Copyright (C) 2013 Randy Baumgarte

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program 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 General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
***********************************************************************************/




/**************************************************************************************/
/* This class is used to read & write note related information to the database        */
/**************************************************************************************/
#ifndef NOTETABLE_H
#define NOTETABLE_H

#include <iostream>
#include <string>
#include <stdio.h>

#include <QSqlTableModel>
#include <QtSql>
#include <QString>
#include "sql/databaseconnection.h"

#include <qt5qevercloud/QEverCloud.h>
using namespace qevercloud;


#define NOTE_GUID                    5000
#define NOTE_TITLE                   5001
#define NOTE_CONTENT                 5002
#define NOTE_UPDATE_SEQUENCE_NUMBER  5003
#define NOTE_ISDIRTY                 5004
#define NOTE_CONTENT_HASH            5005
#define NOTE_CONTENT_LENGTH          5006
#define NOTE_CREATED_DATE            5007
#define NOTE_UPDATED_DATE            5008
#define NOTE_DELETED_DATE            5009
#define NOTE_ACTIVE                  5010
#define NOTE_NOTEBOOK_LID            5011
#define NOTE_TAG_LID                 5012

#define NOTE_ATTRIBUTE_SUBJECT_DATE            5014
#define NOTE_ATTRIBUTE_LATITUDE                5015
#define NOTE_ATTRIBUTE_LONGITUDE               5016
#define NOTE_ATTRIBUTE_ALTITUDE                5017
#define NOTE_ATTRIBUTE_AUTHOR                  5018
#define NOTE_ATTRIBUTE_SOURCE                  5019
#define NOTE_ATTRIBUTE_SOURCE_URL              5020
#define NOTE_ATTRIBUTE_SOURCE_APPLICATION      5021

#define NOTE_HAS_ENCRYPT                       5022
#define NOTE_HAS_TODO_COMPLETED                5023
#define NOTE_HAS_TODO_UNCOMPLETED              5024
#define NOTE_HAS_IMAGE                         5025
#define NOTE_HAS_AUDIO                         5026
#define NOTE_HAS_INK                           5026
#define NOTE_HAS_PDF                           5027
#define NOTE_HAS_ATTACHMENT                    5028

#define NOTE_ATTRIBUTE_SHARE_DATE              5029
#define NOTE_ATTRIBUTE_PLACE_NAME              5030
#define NOTE_ATTRIBUTE_CONTENT_CLASS           5031
#define NOTE_ATTRIBUTE_REMINDER_ORDER          5032
#define NOTE_ATTRIBUTE_REMINDER_TIME           5033
#define NOTE_ATTRIBUTE_REMINDER_DONE_TIME      5034

#define NOTE_DELETE_PENDING_GUID               5500
#define NOTE_DELETE_PENDING_NOTEBOOK           5501

#define NOTE_TITLE_COLOR                       5995
#define NOTE_ISPINNED                          5996
#define NOTE_THUMBNAIL_NEEDED                  5997
#define NOTE_EXPUNGED_FROM_TRASH               5998
#define NOTE_INDEX_NEEDED                      5999

using namespace std;

class NoteTable
{

private:
    DatabaseConnection *db;

public:

    // DB Read Functions
    NoteTable(DatabaseConnection *db);                             // Constructor
    qint32 getLid(QString guid);                             // given a guid, return the lid
    qint32 getLid(string guid);                              // Given a guid, return the lid
    QString getGuid(int lid);                                // given a lid, get the guid
    bool get(Note &note, qint32 lid, bool loadResources, bool loadBinary);           // Get a note given a lid
    bool get(Note &note, QString guid, bool loadResources, bool loadBinary);         // get a note given a guid
    bool get(Note &note, string guid,bool loadResources, bool loadBinary);           // get a note given a guid
    bool isDirty(qint32 lid);                                // Check if a note is dirty
    bool isDirty(QString guid);                              // Check if a note is dirty
    bool isDirty(string guid);                               // Check if a note is dirty
    bool exists(qint32 lid);                                 // Does this note exist?
    bool exists(QString guid);                               // Does this note exist?
    bool exists(string guid);                                // Does this note exist?
    bool isPinned(string guid);                              // is the note pinned?
    bool isPinned(QString guid);                             // is the note pinned?
    bool isPinned(qint32 lid);                               // is the note pinned?
    qint32 findNotesByTag(QList<qint32> &values, QString tags);    // Find all notes which have a given tag
    qint32 findNotesByTag(QList<qint32> &values, string tags);     // Find all notes which have a given tag.
    qint32 findNotesByTag(QList<qint32> &values, qint32 tagLid);   // Find all notes which have a given tag
    qint32 findNotesByTitle(QList<qint32> &lids, QString title);   // Find a note by its title
    qint32 getNotesWithTag(QList<qint32> &retval, QString tag);    // Find all notes for a specific tag;
    qint32 getIndexNeeded(QList<qint32> &lids);              // Get a list of all notes needing indexing
    qint32 findNotesByNotebook(QList<qint32> &notes, QString guid);    // Find all notes for a given notebook
    qint32 findNotesByNotebook(QList<qint32> &notes, string guid);     // Find all notes for a given notebook
    qint32 findNotesByNotebook(QList<qint32> &notes, qint32 lid);      // Find all notes for a given notebook
    qint32 getCount();                                       // count of all notes
    qint32 getUnindexedCount();                              // count of unindexed notes
    qint32 getAllDeleted(QList<qint32> &lids);               // Get all deleted notes
    qint32 getAllDirty(QList<qint32> &lids);                 // get all dirty notes
    qint32 getAllDirty(QList<qint32> &lids, qint32 notebookLid);  // Get all dirty for a particular (linked) notebook
    qint32 getNotebookLid(qint32 noteLid);                   // Get the notebook for a note
    bool isDeleted(qint32 lid);                              // Is this note deleted?
    bool hasTag(qint32 noteLid, qint32 tagLid);              // Does this note have the specified tag?
    QString getNoteListTags(qint32 lid);                     // Get the string of tags from the notetable list
    bool isThumbnailNeeded(qint32 lid);                      // see if a thumbnail is needed
    bool isThumbnailNeeded(QString guid);                    // see if a thumbnail is needed
    bool isThumbnailNeeded(string guid);                     // see if a thumbnail is needed
    bool isIndexNeeded(qint32 lid);                          // see if an index is needed
    qint32 getNextThumbnailNeeded();                         // get any note that needs a thumbnail
    void getAllReminders(QList< QPair<qint32, qlonglong>* > *reminders);  // Get all notes with un-completed reminders
    qint32 getThumbnailsNeededCount();                       // Get a count of all notes in need of a thumbnail
    void getAll(QList<qint32> &lids);                        // Get all note lids
    void getAllPinned(QList<QPair<qint32, QString> > &lids); // Get all notes that are pinned
    void getRecentlyUpdated(QList< QPair< qint32, QString > > &lids);    // Get any notes recently updated (used for the icon in the toolbar).


    // DB Write Functions
    void setReminderCompleted(qint32 lid, bool completed);              // Set a note reminder as completed or clear it
    void removeReminder(qint32 lid);                                    // Clear any existing reminder
    qint32 addStub(QString noteGuid);                                   // Add a stub.  Used if a resource appears before the owning note
    void setTitleColor(qint32 lid, QString color);                      // Set the color of the title in the note list
    void reindexAllNotes();                                             // Reindex all notes
    void resetGeography(qint32 lid, bool isDirty);                      // clear geography of note
    void setGeography(qint32 lid, double longitude, double latitude, double altitude, bool isDirty);    // Set the note location
    void setThumbnailNeeded(qint32 lid, bool value);                    // Set if a thumbnail is needed?
    void setThumbnailNeeded(QString guid, bool value);                  // Set if a thumbail is needed
    void setThumbnailNeeded(string guid, bool value);                   // see if a thumbnail is needed
    void setThumbnail(qint32 lid, QString filename);                    // set the file containing the thumbnail
    qint32 duplicateNote(qint32 oldLid, bool keepCreatedDate=false);    // Duplicate an existing note
    void setUpdateSequenceNumber(qint32 lid, qint32 usn);               // set the update sequence number
    void updateNoteContent(qint32 lid, QString content, bool isDirty=true);   // Update the content of a note
    void updateEnmediaHash(qint32 lid, QByteArray oldHash, QByteArray newHash, bool isDirty=true);      // Update the hash value for a resource in a notte
    bool updateNotebookGuid(QString oldGuid, QString newGuid, QString name);       // Update a notebook's name/guid
    bool updateNoteList(qint32 lid, const Note &t, bool isDirty, qint32 account);  // Update the user viewing list
    bool updateNotebookName(qint32 lid, QString name);                   // Update a notebook's name in the user listing
    void updateNotebook(qint32 noteLid, qint32 notebookLid);             // Set the current note's notebook
    void setDirty(qint32 lid, bool dirty, bool setDateUpdated=true);     // Set if a note needs a sync
    void updateNotebook(qint32 noteLid, qint32 notebookLid, bool setAsDirty=false);    // Update the notebook for a note
    void updateUrl(qint32 lid, QString text, bool dirty);                // Update a URL for a note
    void updateTitle(qint32 noteLid, QString title, bool setAsDirty);    // Update a title for a note
    void updateDate(qint32 lid, Timestamp ts, qint32 key, bool isDirty); // Update a date for a note
    void updateAuthor(qint32 lid, QString value, bool isDirty);          // Update a note's author
    void removeTag(qint32 noteLid, qint32 tag, bool isDirty);            // Remove a tag from a note
    void addTag(qint32 lid, qint32 tag, bool isDirty);                   // Add a tag to a note
    void rebuildNoteListTags(qint32 lid);                                // Update the note's tags in the display table
    void deleteNote(qint32 lid, bool isDirty);                           // mark a note for deletion
    void restoreNote(qint32 lid, bool isDirty);                          // unmark a note for deletion
    void expunge(qint32 lid);                                            // expunge a note permanently
    void expunge(QString guid);                                          // expunge a note permanently
    void expunge(string guid);                                           // expunge a note permanently
    void pinNote(string guid, bool value);                               // pin the current note
    void pinNote(QString guid, bool value);                              // pin the current note
    void pinNote(qint32 lid, bool value);                                // pin the current note
    void updateGuid(qint32 lid, Guid &guid);                             // Update a note's guid
    void sync(Note &note, qint32 account=0);                             // Sync a note with a new record
    void sync(qint32 lid, const Note &note, qint32 account=0);           // Sync a note with a new record
    qint32 add(qint32 lid, const Note &t, bool isDirty, qint32 account=0); // Add a new note
    void setIndexNeeded(qint32 lid, bool indexNeeded);                   // flag if a note needs reindexing
    void updateNoteListTags(qint32 noteLid, QString tags);               // Update the tag names in the note list
    void updateNoteListNotebooks(QString guid, QString name);            // Update the notebook name in the note list
    void addToDeleteQueue(qint32 lid, Note n);   // Add to the notes that need to be deleted from Evernote
    void getAllDeleteQueue(QStringList &guids, QString notebookGuid="");   // Get the list of notes we need to let Evernote to delete
    void expungeFromDeleteQueue(qint32 lid);                              // Expunge from the delete pending queue
    void expungeFromDeleteQueue(QString guid);                            // Expunge from the delete pending queue
    qlonglong getSize(qint32 lid);                                          // get the total size of the note
};



#endif // NOTETABLE_H