コード例 #1
0
ファイル: NoteManager.cs プロジェクト: decriptor/tomdroid
        // puts a note in the content provider
        // return uri
        public static Uri putNote(Activity activity, Note note)
        {
            // verify if the note is already in the content provider

            // TODO make the Query prettier (use querybuilder)
            Uri notes = Tomdroid.CONTENT_URI;
            string[] whereArgs = new string[1];
            whereArgs[0] = note.getGuid();

            // The note identifier is the guid
            ContentResolver cr = activity.ContentResolver;
            ICursor managedCursor = cr.Query(notes,
                    LIST_PROJECTION,
                    Note.GUID + "= ?",
                    whereArgs,
                    null);
            activity.StartManagingCursor(managedCursor);

            string title = note.getTitle();
            string xmlContent = note.getXmlContent();
            string plainContent = stringConverter.encode(Html.FromHtml(title + "\n" + xmlContent).ToString());

            // Preparing the values to be either inserted or updated
            // depending on the result of the previous Query
            ContentValues values = new ContentValues();
            values.Put(Note.TITLE, title);
            values.Put(Note.FILE, note.getFileName());
            values.Put(Note.GUID, note.getGuid().ToString());
            // Notice that we store the date in UTC because sqlite doesn't handle RFC3339 timezone information
            values.Put(Note.MODIFIED_DATE, note.getLastChangeDate().Format3339(false));
            values.Put(Note.NOTE_CONTENT, xmlContent);
            values.Put(Note.NOTE_CONTENT_PLAIN, plainContent);
            values.Put(Note.TAGS, note.getTags());

            Uri uri = null;

            if (managedCursor == null || managedCursor.Count == 0) {

                // This note is not in the database yet we need to insert it
                TLog.v(TAG, "A new note has been detected (not yet in db)");

                uri = cr.Insert(Tomdroid.CONTENT_URI, values);

                TLog.v(TAG, "Note inserted in content provider. ID: {0} TITLE:{1} GUID:{2}", uri, note.getTitle(),
                        note.getGuid());
            } else {

                TLog.v(TAG, "A local note has been detected (already in db)");

                cr.Update(Tomdroid.CONTENT_URI, values, Note.GUID+" = ?", whereArgs);

                uri = Uri.Parse(Tomdroid.CONTENT_URI+"/"+getNoteIdByGUID(activity, note.getGuid()));

                TLog.v(TAG, "Note updated in content provider: TITLE:{0} GUID:{1} TAGS:{2}", note.getTitle(), note.getGuid(), note.getTags());
            }
            managedCursor.Close();
            note = getNote(activity, uri);
            return uri;
        }
コード例 #2
0
ファイル: NoteManager.cs プロジェクト: decriptor/tomdroid
        // gets a note from the content provider, based on guid
        public static Note getNoteByGuid(Activity activity, string guid)
        {
            Uri notes = Tomdroid.CONTENT_URI;

            string[] whereArgs = new string[1];
            whereArgs[0] = guid;

            // The note identifier is the guid
            ContentResolver cr = activity.ContentResolver;
            ICursor cursor = cr.Query(notes,
                    FULL_PROJECTION,
                    Note.GUID + "= ?",
                    whereArgs,
                    null);
            activity.StartManagingCursor(cursor);
            if (cursor == null || cursor.Count == 0) {
                cursor.Close();
                return null;
            }
            else {
                cursor.MoveToFirst();
                string noteContent = cursor.GetString(cursor.GetColumnIndexOrThrow(Note.NOTE_CONTENT));
                string noteTitle = cursor.GetString(cursor.GetColumnIndexOrThrow(Note.TITLE));
                string noteChangeDate = cursor.GetString(cursor.GetColumnIndexOrThrow(Note.MODIFIED_DATE));
                string noteTags = cursor.GetString(cursor.GetColumnIndexOrThrow(Note.TAGS));
                string noteGUID = cursor.GetString(cursor.GetColumnIndexOrThrow(Note.GUID));
                int noteDbid = cursor.GetInt(cursor.GetColumnIndexOrThrow(Note.ID));

                Note note = new Note();
                note.setTitle(noteTitle);
                note.setXmlContent(stripTitleFromContent(noteContent, noteTitle));
                note.setLastChangeDate(noteChangeDate);
                note.addTag(noteTags);
                note.setGuid(noteGUID);
                note.setDbId(noteDbid);
                cursor.Close();
                return note;
            }
        }
コード例 #3
0
ファイル: NoteManager.cs プロジェクト: decriptor/tomdroid
        // check in a note Exists in the content provider
        public static bool noteExists(Activity activity, string guid)
        {
            Uri notes = Tomdroid.CONTENT_URI;

            string[] whereArgs = new string[1];
            whereArgs[0] = guid;

            // The note identifier is the guid
            ContentResolver cr = activity.ContentResolver;
            ICursor cursor = cr.Query(notes,
                    ID_PROJECTION,
                    Note.GUID + "= ?",
                    whereArgs,
                    null);
            activity.StartManagingCursor(cursor);
            return (cursor != null && cursor.Count != 0);
        }
コード例 #4
0
ファイル: NoteManager.cs プロジェクト: decriptor/tomdroid
        public static IListAdapter getListAdapter(Activity activity, string querys, int selectedIndex)
        {
            bool includeNotebookTemplates = Preferences.GetBoolean(Preferences.Key.INCLUDE_NOTE_TEMPLATES);
            bool includeDeletedNotes = Preferences.GetBoolean(Preferences.Key.INCLUDE_DELETED_NOTES);

            int optionalQueries = 0;
            if(!includeNotebookTemplates)
                optionalQueries++;
            if(!includeDeletedNotes)
                optionalQueries++;

            string[] qargs = null;
            string where = "";
            int count = 0;

            if (querys != null ) {
                // sql statements to search notes
                string[] Query = querys.Split(" ");
                qargs = new string[Query.Length+optionalQueries];
                foreach (string str in Query) {
                    qargs[count++] = "%"+stringConverter.encode(str)+"%";
                    where = where + (where.Length > 0? " AND ":"")+"("+Note.NOTE_CONTENT_PLAIN+" LIKE ?)";
                }
            }
            else
                qargs = new string[optionalQueries];

            if (!includeDeletedNotes) {
                where += (where.Length > 0? " AND ":"")+"(" + Note.TAGS + " NOT LIKE ?)";
                qargs[count++] = "%system:deleted%";
            }
            if (!includeNotebookTemplates) {
                where += (where.Length > 0? " AND ":"")+"(" + Note.TAGS + " NOT LIKE ?)";
                qargs[count++] = "%system:template%";
            }

            // get a cursor representing all notes from the NoteProvider
            Uri notes = Tomdroid.CONTENT_URI;

            ContentResolver cr = activity.ContentResolver;
            ICursor notesCursor = cr.Query(notes,
                    LIST_PROJECTION,
                    where,
                    qargs,
                    sortOrder);
            activity.StartManagingCursor(notesCursor);

            // set up an adapter binding the TITLE field of the cursor to the list item
            string[] from = new string[] { Note.TITLE };
            int[] to = new int[] { Resource.Id.note_title };
            return new NoteListCursorAdapter(activity, Resource.layout.main_list_item, notesCursor, from, to, selectedIndex);
        }