not quite so much needs to be delayed to the init() function
[personal-kdebase.git] / workspace / klipper / historyitem.cpp
blob24d4fce63c87c8de9460c28916f26cc3b50c6015
1 // -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8; -*-
2 /* This file is part of the KDE project
3 Copyright (C) 2004 Esben Mose Hansen <kde@mosehansen.dk>
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; see the file COPYING. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
20 #include <QMap>
22 #include <QPixmap>
24 #include <kdebug.h>
26 #include "historyitem.h"
27 #include "historystringitem.h"
28 #include "historyimageitem.h"
29 #include "historyurlitem.h"
31 HistoryItem::HistoryItem() {
35 HistoryItem::~HistoryItem() {
39 HistoryItem* HistoryItem::create( const QMimeData* data )
41 #if 0
42 int i=0;
43 while ( const char* f = aSource.format( i++ ) ) {
44 kDebug() << "format(" << i <<"): " << f;
46 #endif
47 if (KUrl::List::canDecode(data))
49 KUrl::MetaDataMap metaData;
50 KUrl::List urls = KUrl::List::fromMimeData(data, &metaData);
51 QByteArray a = data->data("application/x-kde-cutselection");
52 bool cut = !a.isEmpty() && (a.at(0) == '1'); // true if 1
53 return new HistoryURLItem(urls, metaData, cut);
55 if (data->hasText())
57 return new HistoryStringItem(data->text());
59 if (data->hasImage())
61 QImage image = qvariant_cast<QImage>(data->imageData());
62 return new HistoryImageItem(QPixmap::fromImage(image));
65 return 0; // Failed.
68 HistoryItem* HistoryItem::create( QDataStream& aSource ) {
69 if ( aSource.atEnd() ) {
70 return 0;
72 QString type;
73 aSource >> type;
74 if ( type == "url" ) {
75 KUrl::List urls;
76 QMap< QString, QString > metaData;
77 int cut;
78 aSource >> urls;
79 aSource >> metaData;
80 aSource >> cut;
81 return new HistoryURLItem( urls, metaData, cut );
83 if ( type == "string" ) {
84 QString text;
85 aSource >> text;
86 return new HistoryStringItem( text );
88 if ( type == "image" ) {
89 QPixmap image;
90 aSource >> image;
91 return new HistoryImageItem( image );
93 kWarning() << "Failed to restore history item: Unknown type \"" << type << "\"" ;
94 return 0;