~ubuntu-branches/ubuntu/intrepid/digikam/intrepid

« back to all changes in this revision

Viewing changes to digikam/digikam/dragobjects.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Mark Purcell
  • Date: 2008-07-17 20:25:39 UTC
  • mfrom: (1.2.15 upstream) (3.1.2 lenny)
  • Revision ID: james.westby@ubuntu.com-20080717202539-6n7dtirbkoo7qvhd
Tags: 2:0.9.4-1
* New upstream release
  - digiKam 0.9.4 Release Plan (KDE3) ~ 13 July 08 (Closes: #490144)
* DEB_CONFIGURE_EXTRA_FLAGS := --without-included-sqlite3
* Debhelper compatibility level V7
* Install pixmaps in debian/*.install
* Add debian/digikam.lintian-overrides

Show diffs side-by-side

added added

removed removed

Lines of Context:
8
8
 * 
9
9
 * Copyright (C) 2004 by Renchi Raju <renchi@pooh.tam.uiuc.edu>
10
10
 * Copyright (C) 2004 by Joern Ahrens <joern.ahrens@kdemail.net>
 
11
 * Copyright (C) 2006-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
11
12
 *
12
13
 * This program is free software; you can redistribute it
13
14
 * and/or modify it under the terms of the GNU General
25
26
// Local includes.
26
27
 
27
28
#include "ddebug.h"
28
 
#include "album.h"
29
 
#include "albummanager.h"
30
29
#include "dragobjects.h"
31
30
 
32
31
namespace Digikam
58
57
    kioURLs.clear();
59
58
    albumIDs.clear();
60
59
    imageIDs.clear();
61
 
    
 
60
 
62
61
    if (KURLDrag::decode(e, urls))
63
62
    {
64
63
        QByteArray albumarray = e->encodedData("digikam/album-ids");
65
64
        QByteArray imagearray = e->encodedData("digikam/image-ids");
66
65
        QByteArray kioarray = e->encodedData("digikam/digikamalbums");
67
 
        
 
66
 
68
67
        if (albumarray.size() && imagearray.size() && kioarray.size())
69
68
        {
70
69
            int id;
71
 
            
 
70
 
72
71
            QDataStream dsAlbums(albumarray, IO_ReadOnly);
73
72
            while (!dsAlbums.atEnd())
74
73
            {
75
74
                dsAlbums >> id;
76
75
                albumIDs.append(id);
77
76
            }
78
 
            
 
77
 
79
78
            QDataStream dsImages(imagearray, IO_ReadOnly);
80
79
            while (!dsImages.atEnd())
81
80
            {
101
100
QByteArray ItemDrag::encodedData(const char* mime) const
102
101
{
103
102
    QCString mimetype(mime);
104
 
    
 
103
 
105
104
    if (mimetype == "digikam/album-ids")
106
105
    {
107
106
        QByteArray byteArray;
112
111
        {
113
112
            ds << (*it);
114
113
        }
115
 
        
 
114
 
116
115
        return byteArray;
117
116
    }
118
117
    else if (mimetype == "digikam/image-ids")
125
124
        {
126
125
            ds << (*it);
127
126
        }
128
 
        
 
127
 
129
128
        return byteArray;
130
129
    }
131
130
    else if (mimetype == "digikam/digikamalbums")
138
137
        {
139
138
            ds << (*it);
140
139
        }
141
 
        
 
140
 
142
141
        return byteArray;
143
142
    }
144
143
    else
158
157
    else if (i == 3)
159
158
        return "digikam/image-ids";
160
159
    else if (i == 4)
161
 
        return "digikam/digikamalbums";    
 
160
        return "digikam/digikamalbums";
162
161
    else
163
162
        return 0;
164
163
}
165
164
 
 
165
// ------------------------------------------------------------------------
 
166
 
166
167
TagDrag::TagDrag( int albumid, QWidget *dragSource, 
167
168
                  const char *name ) :
168
169
    QDragObject( dragSource, name )
191
192
    return ba;
192
193
}
193
194
 
 
195
// ------------------------------------------------------------------------
 
196
 
194
197
AlbumDrag::AlbumDrag(const KURL &url, int albumid, 
195
198
                     QWidget *dragSource, 
196
199
                     const char *name) :
235
238
{
236
239
    urls.clear();
237
240
    albumID = -1;
238
 
    
 
241
 
239
242
    if(KURLDrag::decode(e, urls))
240
243
    {
241
244
        QByteArray ba = e->encodedData("digikam/album-id");
253
256
    return false;
254
257
}
255
258
 
 
259
// ------------------------------------------------------------------------
 
260
 
256
261
TagListDrag::TagListDrag(const QValueList<int>& tagIDs, QWidget *dragSource,
257
262
                         const char *name)
258
 
    : QDragObject( dragSource, name )
 
263
           : QDragObject( dragSource, name )
259
264
{
260
265
    m_tagIDs = tagIDs;
261
266
}
281
286
    return 0;
282
287
}
283
288
 
 
289
// ------------------------------------------------------------------------
 
290
 
284
291
CameraItemListDrag::CameraItemListDrag(const QStringList& cameraItemPaths,
285
292
                                       QWidget *dragSource,
286
293
                                       const char *name)
310
317
    return 0;
311
318
}
312
319
 
 
320
// ------------------------------------------------------------------------
 
321
 
 
322
CameraDragObject::CameraDragObject(const CameraType& ctype, QWidget *dragSource)
 
323
                : QStoredDrag("camera/unknown", dragSource)
 
324
{
 
325
    setCameraType(ctype);
 
326
}
 
327
 
 
328
CameraDragObject::~CameraDragObject()
 
329
{
 
330
}
 
331
 
 
332
void CameraDragObject::setCameraType(const CameraType& ctype)
 
333
{
 
334
    QByteArray byteArray;
 
335
    QDataStream ds(byteArray, IO_WriteOnly);
 
336
 
 
337
    ds << ctype.title();
 
338
    ds << ctype.model();
 
339
    ds << ctype.port();
 
340
    ds << ctype.path();
 
341
    ds << ctype.lastAccess();
 
342
 
 
343
    setEncodedData(byteArray);
 
344
}
 
345
 
 
346
bool CameraDragObject::canDecode(const QMimeSource* e)
 
347
{
 
348
    return e->provides("camera/unknown");
 
349
}
 
350
 
 
351
bool CameraDragObject::decode(const QMimeSource* e, CameraType& ctype)
 
352
{
 
353
    QByteArray payload = e->encodedData("camera/unknown");
 
354
    if (payload.size()) 
 
355
    {
 
356
        QString   title, model, port, path;
 
357
        QDateTime lastAccess;
 
358
 
 
359
        QDataStream ds(payload, IO_ReadOnly);
 
360
        ds >> title;
 
361
        ds >> model;
 
362
        ds >> port;
 
363
        ds >> path;
 
364
        ds >> lastAccess;
 
365
 
 
366
        ctype = CameraType(title, model, port, path, lastAccess);
 
367
 
 
368
        return true;
 
369
    }
 
370
    else
 
371
        return false;
 
372
}
 
373
 
313
374
}  // namespace Digikam