1 /* 2 * Copyright (C) 2009, Martin Robinson 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 */ 18 19 #include "config.h" 20 #include "DataObjectGtk.h" 21 22 #include "markup.h" 23 #include <gtk/gtk.h> 24 25 namespace WebCore { 26 27 String DataObjectGtk::text() 28 { 29 if (m_range) 30 return m_range->text(); 31 return m_text; 32 } 33 34 String DataObjectGtk::markup() 35 { 36 if (m_range) 37 createMarkup(m_range.get(), 0, AnnotateForInterchange); 38 return m_markup; 39 } 40 41 void DataObjectGtk::setText(const String& newText) 42 { 43 m_range = 0; 44 m_text = newText; 45 } 46 47 void DataObjectGtk::setMarkup(const String& newMarkup) 48 { 49 m_range = 0; 50 m_markup = newMarkup; 51 } 52 53 Vector<String> DataObjectGtk::files() 54 { 55 Vector<KURL> uris(uriList()); 56 Vector<String> files; 57 58 for (size_t i = 0; i < uris.size(); i++) { 59 KURL& uri = uris[0]; 60 if (!uri.isValid() || !uri.isLocalFile()) 61 continue; 62 63 files.append(uri.string()); 64 } 65 66 return files; 67 } 68 69 String DataObjectGtk::url() 70 { 71 Vector<KURL> uris(uriList()); 72 for (size_t i = 0; i < uris.size(); i++) { 73 KURL& uri = uris[0]; 74 if (uri.isValid()) 75 return uri; 76 } 77 78 return String(); 79 } 80 81 String DataObjectGtk::urlLabel() 82 { 83 if (hasText()) 84 return text(); 85 86 if (hasURL()) 87 return url(); 88 89 return String(); 90 } 91 92 bool DataObjectGtk::hasURL() 93 { 94 return !url().isEmpty(); 95 } 96 97 void DataObjectGtk::clear() 98 { 99 m_text = ""; 100 m_markup = ""; 101 m_uriList.clear(); 102 m_image = 0; 103 m_range = 0; 104 } 105 106 DataObjectGtk* DataObjectGtk::forClipboard(GtkClipboard* clipboard) 107 { 108 static HashMap<GtkClipboard*, RefPtr<DataObjectGtk> > objectMap; 109 110 if (!objectMap.contains(clipboard)) { 111 RefPtr<DataObjectGtk> dataObject = DataObjectGtk::create(); 112 objectMap.set(clipboard, dataObject); 113 return dataObject.get(); 114 } 115 116 HashMap<GtkClipboard*, RefPtr<DataObjectGtk> >::iterator it = objectMap.find(clipboard); 117 return it->second.get(); 118 } 119 120 } 121