~ubuntu-branches/ubuntu/maverick/datakiosk/maverick

« back to all changes in this revision

Viewing changes to src/src/project.h

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Riddell
  • Date: 2005-06-27 22:48:06 UTC
  • Revision ID: james.westby@ubuntu.com-20050627224806-8farkci1dc2onhbs
Tags: upstream-0.7
ImportĀ upstreamĀ versionĀ 0.7

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************
 
2
 *   Copyright (C) 2005 by Adam Treat                                      *
 
3
 *   treat@kde.org                                                         *
 
4
 *                                                                         *
 
5
 *   Copyright (C) 2004 by Scott Wheeler                                   *
 
6
 *   wheeler@kde.org                                                       *
 
7
 *                                                                         *
 
8
 *   Copyright (C) 2000 Trolltech AS.  All rights reserved.                *
 
9
 *   info@trolltech.com                                                    *
 
10
 *                                                                         *
 
11
 *   This program is free software; you can redistribute it and/or modify  *
 
12
 *   it under the terms of the GNU General Public License as published by  *
 
13
 *   the Free Software Foundation; either version 2 of the License, or     *
 
14
 *   (at your option) any later version.                                   *
 
15
 *                                                                         *
 
16
 ***************************************************************************/
 
17
 
 
18
#ifndef PROJECT_H
 
19
#define PROJECT_H
 
20
 
 
21
#include "datatableinterface.h"
 
22
 
 
23
#include <qmap.h>
 
24
#include <qstring.h>
 
25
#include <qptrlist.h>
 
26
#include <qptrdict.h>
 
27
#include <qfeatures.h>
 
28
#include <qstringlist.h>
 
29
#include <qobjectlist.h>
 
30
 
 
31
#include <kshortcut.h>
 
32
#include <kdirwatch.h>
 
33
#include <kconfig.h>
 
34
#include <klocale.h>
 
35
 
 
36
class QWidgetStack;
 
37
class KAction;
 
38
class DataTable;
 
39
class DataReport;
 
40
class DataTableSearch;
 
41
class DatabaseConnection;
 
42
 
 
43
typedef QValueList<DataTable *> DataTableList;
 
44
typedef QValueList<DataReport *> DataReportList;
 
45
typedef QValueList<DataTableSearch> DataSearchList;
 
46
 
 
47
class Project : public DataTableInterface
 
48
{
 
49
    friend class DataTable;
 
50
    friend class DataTableBox;
 
51
    friend class DatabaseConnection;
 
52
 
 
53
public:
 
54
    Project( QWidgetStack *dataTableStack, const QString &fileName = "" );
 
55
 
 
56
    virtual ~Project();
 
57
 
 
58
    virtual void initialize();
 
59
    //UGLY HACK
 
60
    virtual void uglyInitialize();
 
61
 
 
62
    QString fileName() const;
 
63
 
 
64
    virtual void newProject();
 
65
    void openProject();
 
66
    void saveProject();
 
67
    void saveAsProject();
 
68
    virtual void closeProject();
 
69
    void editProject();
 
70
    virtual void clipboard();
 
71
 
 
72
    void setModified( bool b );
 
73
    QString makeAbsolute( const QString &f );
 
74
    QString makeRelative( const QString &f );
 
75
 
 
76
    bool openDatabase( const QString &connection, bool suppressDialog = true );
 
77
    void closeDatabase( const QString &connection );
 
78
 
 
79
    QPtrList<DataTable> dataTablesByPtr() const;
 
80
    QPtrList<DatabaseConnection> databaseConnections() const;
 
81
    void setDatabaseConnections( const QPtrList<DatabaseConnection> &lst );
 
82
    void addDatabaseConnection( DatabaseConnection *conn );
 
83
    void removeDatabaseConnection( const QString &conn );
 
84
    void removeAllDatabaseConnections();
 
85
    DatabaseConnection *databaseConnection( const QString &name );
 
86
    QStringList databaseConnectionList();
 
87
    QStringList databaseTableList( const QString &connection );
 
88
    QStringList databaseFieldList( const QString &connection, const QString &table );
 
89
 
 
90
    bool loadConnections();
 
91
 
 
92
    void setDataTables( const QPtrList<DataTable> &lst );
 
93
    void addDataTable( DataTable *table );
 
94
    void addDataReport( DataReport *report );
 
95
    void removeDataTable( const QString &table );
 
96
    void removeDataReport( const QString &report );
 
97
    DataTable *dataTable( const QString &name );
 
98
    QStringList dataTableList();
 
99
 
 
100
    bool loadDataTables();
 
101
 
 
102
    //    ******************** DataTableCollection ********************
 
103
    // The following group of functions implement the DataTableInterface API.
 
104
    virtual QString name() const;
 
105
 
 
106
    virtual QStringList dataTables() const;
 
107
    //     virtual void createDataTable( const QString &name );
 
108
 
 
109
    virtual QString dataTable() const;
 
110
    virtual void setDataTable( const QString &dataTable );
 
111
 
 
112
    virtual void configureTable();
 
113
    virtual void addVirtualField();
 
114
    virtual void removeTable();
 
115
    virtual void moveTableUp();
 
116
    virtual void moveTableDown();
 
117
    virtual void sortTables();
 
118
    virtual void configureReport();
 
119
    virtual void removeReport();
 
120
    virtual void refreshReport();
 
121
 
 
122
    virtual void editSearch();
 
123
    virtual void removeSearch();
 
124
    DataSearchList searchList();
 
125
    virtual void invokeSearch( const QString &search );
 
126
    virtual void appendSearch( const DataTableSearch &search );
 
127
    virtual void removeSearch( const DataTableSearch &search );
 
128
 
 
129
    virtual void advancedSearchRequested();
 
130
    virtual void createKugarReport();
 
131
    virtual void createKugarReport( const QString &parentTable );
 
132
 
 
133
    void createDataTable();
 
134
    void createChildDataTable( const QString &name );
 
135
    void createSearchDataTable();
 
136
    void createForeignDataTable();
 
137
    void createDatabaseDataTable();
 
138
 
 
139
    QObject *object() const;
 
140
 
 
141
    class ActionHandler;
 
142
 
 
143
    virtual DataTable *currentDataTable() const;
 
144
    virtual DataReport *currentDataReport() const;
 
145
    virtual DataTable *rootOfCurrentDataTable();
 
146
    virtual DataTableList dataTablesInCurrentTree();
 
147
    virtual DataTableList dataTablesInDataTableTree( DataTable *dataTable );
 
148
    virtual DataTableList childrenOfDataTable( DataTable *dataTable );
 
149
    virtual DataTableList dataTablesInCurrentPeerTree();
 
150
    virtual DataTableList dataTablesInDataTablePeerTree( DataTable *dataTable );
 
151
 
 
152
    virtual void scrollTableUp();
 
153
    virtual void scrollTableDown();
 
154
    void scrollTabLeft();
 
155
    void scrollTabRight();
 
156
    void firstRecord();
 
157
    void previousRecord();
 
158
    void nextRecord();
 
159
    void lastRecord();
 
160
    void commit();
 
161
    void insertRecord();
 
162
    void changeRecord();
 
163
    void deleteRecord();
 
164
 
 
165
    virtual void setSplashMessage( const QString &txt );
 
166
    virtual void setupDataTable( DataTable *dataTable, const QString &iconName );
 
167
    virtual void setupDataTable( DataTable *dataTable, const QString &iconName, DataTable* parentTable );
 
168
    virtual void setIconName( DataTable* dataTable, const QString &iconName );
 
169
    virtual void setupDataReport( DataReport *dataReport, const QString &iconName );
 
170
    virtual void setupDataReport( DataReport *dataReport, const QString &iconName, DataTable *parentTable );
 
171
    virtual void setIconName( DataReport* dataReport, const QString &iconName );
 
172
    QString uniqueDataTableName( const QString &suggest = i18n( "DataTable" ) ) const;
 
173
    virtual QWidgetStack *dataTableStack() const;
 
174
    DataTable *dataTableByName( const QString &name ) const;
 
175
 
 
176
    void addName( const QString &name );
 
177
    void removeName( const QString &name );
 
178
 
 
179
protected:
 
180
    virtual void raise( DataTable *dataTable );
 
181
    virtual void raise( DataReport *datareport );
 
182
 
 
183
    bool containsDataTableFile( const QString &file ) const;
 
184
 
 
185
    QString dataTableNameDialog( const QString &caption = i18n( "Create New DataTable" ),
 
186
                                 const QString &suggest = QString::null,
 
187
                                 bool forceUnique = true ) const;
 
188
 
 
189
    //    ******************** DataTableCollection ********************
 
190
 
 
191
private:
 
192
    bool m_modified;
 
193
    QString m_projectIcon;
 
194
    QString m_fileName;
 
195
    QPtrList<DatabaseConnection> m_dbConnections;
 
196
    QPtrList<DataTable> m_dataTables;
 
197
    QPtrList<DataReport> m_dataReports;
 
198
    DataSearchList m_searchList;
 
199
 
 
200
    //    ******************** DataTableCollection ********************
 
201
 
 
202
    QWidgetStack *m_dataTableStack;
 
203
    ActionHandler *m_actionHandler;
 
204
 
 
205
    QStringList m_dataTableNames;
 
206
    //    ******************** DataTableCollection ********************
 
207
};
 
208
 
 
209
inline QString sanitize( const QString &str )
 
210
{
 
211
    //Replace special xml characters like '&','<' '>',''','"'
 
212
    //with there xml markup equivalent (eg: &amp, &lt, etc)
 
213
    QString value = str;
 
214
    value = value.replace( '&', "&amp;" );
 
215
    value = value.replace( '<', "&lt;" );
 
216
    value = value.replace( '>', "&gt;" );
 
217
    value = value.replace( '\'', "&apos;" );
 
218
    value = value.replace( '"', "&quot;" );
 
219
    return value;
 
220
}
 
221
 
 
222
inline QString deSanitize( const QString &str )
 
223
{
 
224
    //Replace xml markup characters (eg: &amp, &lt, etc)
 
225
    //with there equivalent like '&','<' '>',''','"'
 
226
    QString value = str;
 
227
    value = value.replace( "&amp;", "&" );
 
228
    value = value.replace( "&lt;", "<" );
 
229
    value = value.replace( "&gt;", ">" );
 
230
    value = value.replace( "&apos;", "'" );
 
231
    value = value.replace( "&quot;", "\"" );
 
232
    return value;
 
233
}
 
234
 
 
235
class Project::ActionHandler : public QObject
 
236
{
 
237
    Q_OBJECT
 
238
public:
 
239
    ActionHandler( Project *collection );
 
240
 
 
241
private:
 
242
    KAction *createAction( const QString &text,
 
243
                           const char *slot,
 
244
                           const char *name,
 
245
                           const QString &icon = QString::null,
 
246
                           const KShortcut &shortcut = KShortcut() );
 
247
 
 
248
private slots:
 
249
    void slotConfigureTable()
 
250
    {
 
251
        m_project->configureTable();
 
252
    }
 
253
    void slotAddVirtualField()
 
254
    {
 
255
        m_project->addVirtualField();
 
256
    }
 
257
    void slotConfigureReport()
 
258
    {
 
259
        m_project->configureReport();
 
260
    }
 
261
    void slotRemoveTable()
 
262
    {
 
263
        m_project->removeTable();
 
264
    }
 
265
    void slotMoveTableUp()
 
266
    {
 
267
        m_project->moveTableUp();
 
268
    }
 
269
    void slotMoveTableDown()
 
270
    {
 
271
        m_project->moveTableDown();
 
272
    }
 
273
    void slotRemoveReport()
 
274
    {
 
275
        m_project->removeReport();
 
276
    }
 
277
    void slotRefreshReport()
 
278
    {
 
279
        m_project->refreshReport();
 
280
    }
 
281
    void slotNewProject()
 
282
    {
 
283
        m_project->newProject();
 
284
    }
 
285
    void slotOpenProject()
 
286
    {
 
287
        m_project->openProject();
 
288
    }
 
289
    void slotSaveProject()
 
290
    {
 
291
        m_project->saveProject();
 
292
    }
 
293
    void slotSaveAsProject()
 
294
    {
 
295
        m_project->saveAsProject();
 
296
    }
 
297
    void slotCloseProject()
 
298
    {
 
299
        m_project->closeProject();
 
300
    }
 
301
    void slotEditProject()
 
302
    {
 
303
        m_project->editProject();
 
304
    }
 
305
    void slotClipboard()
 
306
    {
 
307
        m_project->clipboard();
 
308
    }
 
309
    void slotEditSearch()
 
310
    {
 
311
        m_project->editSearch();
 
312
    }
 
313
    void slotRemoveSearch()
 
314
    {
 
315
        m_project->removeSearch();
 
316
    }
 
317
    void slotCreateDataTable()
 
318
    {
 
319
        m_project->createDataTable();
 
320
    }
 
321
    void slotCreateSearchDataTable()
 
322
    {
 
323
        m_project->createSearchDataTable();
 
324
    }
 
325
    void slotCreateDatabaseDataTable()
 
326
    {
 
327
        m_project->createDatabaseDataTable();
 
328
    }
 
329
    void slotCreateForeignDataTable()
 
330
    {
 
331
        m_project->createForeignDataTable();
 
332
    }
 
333
    void slotAdvancedSearchClicked()
 
334
    {
 
335
        m_project->advancedSearchRequested();
 
336
    }
 
337
    void slotCreateKugarReport()
 
338
    {
 
339
        m_project->createKugarReport();
 
340
    }
 
341
    void slotScrollTableUp()
 
342
    {
 
343
        m_project->scrollTableUp();
 
344
    }
 
345
    void slotScrollTableDown()
 
346
    {
 
347
        m_project->scrollTableDown();
 
348
    }
 
349
    void slotScrollTabLeft()
 
350
    {
 
351
        m_project->scrollTabLeft();
 
352
    }
 
353
    void slotScrollTabRight()
 
354
    {
 
355
        m_project->scrollTabRight();
 
356
    }
 
357
    void slotFirstRecord()
 
358
    {
 
359
        m_project->firstRecord();
 
360
    }
 
361
    void slotPreviousRecord()
 
362
    {
 
363
        m_project->previousRecord();
 
364
    }
 
365
    void slotNextRecord()
 
366
    {
 
367
        m_project->nextRecord();
 
368
    }
 
369
    void slotLastRecord()
 
370
    {
 
371
        m_project->lastRecord();
 
372
    }
 
373
    void slotCommit()
 
374
    {
 
375
        m_project->commit();
 
376
    }
 
377
    void slotInsertRecord()
 
378
    {
 
379
        m_project->insertRecord();
 
380
    }
 
381
    void slotChangeRecord()
 
382
    {
 
383
        m_project->changeRecord();
 
384
    }
 
385
    void slotDeleteRecord()
 
386
    {
 
387
        m_project->deleteRecord();
 
388
    }
 
389
signals:
 
390
    void signalSelectedItemsChanged();
 
391
    void signalCountChanged();
 
392
 
 
393
private:
 
394
    Project *m_project;
 
395
    QPtrList<KAction*> *m_parentFieldActions;
 
396
};
 
397
 
 
398
#endif