summaryrefslogtreecommitdiffstats
path: root/knotes/KNotesAppIface.h
blob: f97776fdba34f62920e7f72294e323646dd6e04e (plain)
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
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
/*******************************************************************
 KNotesIface.h  --  This file defines the DCOP interface for KNotes.

 Copyright (C) 2004 by Michael Brade <[email protected]>

 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.

 In addition, as a special exception, the copyright holders give
 permission to link the code of this program with any edition of
 the Qt library by Trolltech AS, Norway (or with modified versions
 of Qt that use the same license as Qt), and distribute linked
 combinations including the two.  You must obey the GNU General
 Public License in all respects for all of the code used other than
 Qt.  If you modify this file, you may extend this exception to
 your version of the file, but you are not obligated to do so.  If
 you do not wish to do so, delete this exception statement from
 your version.
*******************************************************************/

#ifndef __KNotesAppIface_h__
#define __KNotesAppIface_h__

#include <qstring.h>
#include <qmap.h>

#include <dcopobject.h>


class KNotesAppIface : virtual public DCOPObject
{
    K_DCOP
k_dcop:
    /**
     * Create a new note.
     * @param name the name (title) of the new note, if it is empty,
     *        KNotes will choose an appropriate name
     * @param text the body of the new note
     * @return the new notes' id
     */
    virtual QString newNote( const QString& name = QString::null,
                             const QString& text = QString::null ) = 0;

    /**
     * Create a new note and inserts the current text in the clipboard
     * as text.
     *
     * @param name the name (title) of the new note, if it is empty,
     *        KNotes will choose an appropriate name
     * @return the new notes' id
     */
    virtual QString newNoteFromClipboard( const QString& name = QString::null ) = 0;

    /**
     * Deletes a note forever.
     * @param noteId the id of the note to kill
     */
    virtual ASYNC killNote( const QString& noteId ) = 0;

    /**
     * Deletes a note forever.
     * @param noteId the id of the note to kill
     * @param force do not request confirmation
     */
    virtual ASYNC killNote( const QString& noteId, bool force ) = 0;

    /**
     * Get all the notes including their ids.
     * @return a QMap that maps the id of a note to its name
     */
    virtual QMap<QString,QString> notes() const = 0;

    /**
     * Changes the title/name of a note.
     * @param noteId the id of the note to be modified
     * @param newName the new title
     */
    virtual ASYNC setName( const QString& noteId, const QString& newName ) = 0;

    /**
     * Sets the text of a note. This will delete the old text!
     * @param noteId the id of the note
     * @param newText the new text for the note
     */
    virtual ASYNC setText( const QString& noteId, const QString& newText ) = 0;

    /**
     * Returns the foreground/text color of a note.
     * @param noteId the id of the note in question
     * @return the foreground/text color as a QString
     */
    virtual QString fgColor( const QString& noteId ) const = 0;

    /**
     * Returns the background color of a note.
     * @param noteId the id of the note in question
     * @return the background color as a QString
     */
    virtual QString bgColor( const QString& noteId ) const = 0;

    /**
     * Sets the color (foreground and background color) of a note.
     * @param noteId the id of the note
     * @param fgColor the new text color for the note
     * @param bgColor the new background color for the note
     */
    virtual ASYNC setColor( const QString& noteId, const QString& fgColor,
                                                   const QString& bgColor ) = 0;

    /**
     * Returns the title/name of a note.
     * @param noteId the id of the note in question
     * @return the name as a QString
     */
    virtual QString name( const QString& noteId ) const = 0;

    /**
     * Returns the text of a note.
     * @param noteId the id of the note in question
     * @return the body as a QString
     */
    virtual QString text( const QString& noteId ) const = 0;


    /******** HERE STARTS THE KNotesAppIface DCOP INTERFACE EXTENSION ********/

    /**
     * Show a note as if it had been selected from the "notes" menu.
     * @param noteId the id of the note to show
     */
    virtual ASYNC showNote( const QString& noteId ) const = 0;

    /**
     * Hide a note.
     * @param noteId the id of the note to hide
     */
    virtual ASYNC hideNote( const QString& noteId ) const = 0;

    /**
     * Show all notes on their respective desktops.
     */
    virtual ASYNC showAllNotes() const = 0;

    /**
     * Hide all notes.
     */
    virtual ASYNC hideAllNotes() const = 0;

    /**
     * Returns the width of a note.
     * @param noteId the id of the note in question
     * @return the width as a uint
     */
    virtual int width( const QString& noteId ) const = 0;

    /**
     * Returns the height of a note.
     * @param noteId the id of the note in question
     * @return the height as a uint
     */
    virtual int height( const QString& noteId ) const = 0;

    /**
     * Repositions a note.
     * @param noteId the id of the note to be moved
     * @param x the new x-coordinate of the note
     * @param y the new y-coordinate of the note
     */
    virtual ASYNC move( const QString& noteId, int x, int y ) const = 0;

    /**
     * Changes the size of a note.
     * @param noteId the id of the note to be resized
     * @param width the new width of the note
     * @param height the new height of the note
     */
    virtual ASYNC resize( const QString& noteId, int width, int height ) const = 0;

    /**
     * This tells KNotes that a specific app has synchronized with all the notes.
     * @param app the app that has synced with KNotes
     */
    virtual ASYNC sync( const QString& app ) = 0;

    /**
     * Test if a note was created new after the last sync.
     * @param app the app that wants to get the status since the last sync
     * @param noteId the id of the note
     * @return true if the note is new, false if not or if the note does
     *         not exist
     */
    virtual bool isNew( const QString& app, const QString& noteId ) const = 0;

    /**
     * Test if a note was modified since the last sync.
     * @param app the app that wants to get the status since the last sync
     * @param noteId the id of the note
     * @return true if modified (note that this will return true if the note is
     *         new as well!) and false if the note is not modified or doesn't exist
     */
    virtual bool isModified( const QString& app, const QString& noteId ) const = 0;
};

#endif