• Skip to content
  • Skip to link menu
KDE 3.5 API Reference
  • KDE API Reference
  • API Reference
  • Sitemap
  • Contact Us
 

kdeui

kcolordrag.cpp

Go to the documentation of this file.
00001 /* This file is part of the KDE libraries
00002    Copyright (C) 1999 Steffen Hansen (hansen@kde.org)
00003 
00004    This library is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Library General Public
00006    License as published by the Free Software Foundation; either
00007    version 2 of the License, or (at your option) any later version.
00008 
00009    This library is distributed in the hope that it will be useful,
00010    but WITHOUT ANY WARRANTY; without even the implied warranty of
00011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012    Library General Public License for more details.
00013 
00014    You should have received a copy of the GNU Library General Public License
00015    along with this library; see the file COPYING.LIB.  If not, write to
00016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017    Boston, MA 02110-1301, USA.
00018 */
00019 
00020 #include <qpainter.h>
00021 #include "kcolordrag.h"
00022 
00023 static const char * const color_mime_string = "application/x-color";
00024 static const char * const text_mime_string = "text/plain";
00025 
00026 KColorDrag::KColorDrag( const QColor &color, QWidget *dragsource,
00027             const char *name)
00028      : QStoredDrag( color_mime_string, dragsource, name)
00029 {
00030      setColor( color);
00031 }
00032 
00033 KColorDrag::KColorDrag( QWidget *dragsource, const char *name)
00034      : QStoredDrag( color_mime_string, dragsource, name)
00035 {
00036      setColor( white );
00037 }
00038 
00039 void
00040 KColorDrag::setColor( const QColor &color)
00041 {
00042      QColorDrag tmp(color, 0, 0);
00043      setEncodedData(tmp.encodedData(color_mime_string));
00044 
00045      QPixmap colorpix( 25, 20);
00046      colorpix.fill( color);
00047      QPainter p( &colorpix );
00048      p.setPen( black );
00049      p.drawRect(0,0,25,20);
00050      p.end();
00051      setPixmap(colorpix, QPoint(-5,-7));
00052 }
00053 
00054 const char *KColorDrag::format(int i) const
00055 {
00056      if (i==1)
00057         return text_mime_string;
00058      else
00059         return QStoredDrag::format(i);
00060 }
00061 
00062 QByteArray KColorDrag::encodedData ( const char * m ) const
00063 {
00064      if (!qstrcmp(m, text_mime_string) )
00065      {
00066         QColor color;
00067         QColorDrag::decode(const_cast<KColorDrag *>(this), color);
00068         QCString result = color.name().latin1();
00069         ((QByteArray&)result).resize(result.length());
00070         return result;
00071      }
00072      return QStoredDrag::encodedData(m);
00073 }
00074 
00075 bool
00076 KColorDrag::canDecode( QMimeSource *e)
00077 {
00078      if (e->provides(color_mime_string))
00079         return true;
00080      if (e->provides(text_mime_string))
00081      {
00082         QColor dummy;
00083         return decode(e, dummy);
00084      }
00085      return false;
00086 }
00087 
00088 bool
00089 KColorDrag::decode( QMimeSource *e, QColor &color)
00090 {
00091      if (QColorDrag::decode(e, color))
00092         return true;
00093 
00094      QByteArray data = e->encodedData( text_mime_string);
00095      QString colorName = QString::fromLatin1(data.data(), data.size());
00096      if ((colorName.length() < 4) || (colorName[0] != '#'))
00097         return false;
00098      color.setNamedColor(colorName);
00099      return color.isValid();
00100 }
00101 
00102 
00103 KColorDrag*
00104 KColorDrag::makeDrag( const QColor &color,QWidget *dragsource)
00105 {
00106      return new KColorDrag( color, dragsource);
00107 }
00108 
00109 void KColorDrag::virtual_hook( int, void* )
00110 { /*BASE::virtual_hook( id, data );*/ }
00111 
00112 #include "kcolordrag.moc"

kdeui

Skip menu "kdeui"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

API Reference

Skip menu "API Reference"
  • dcop
  • DNSSD
  • interfaces
  • Kate
  • kconf_update
  • KDECore
  • KDED
  • kdefx
  • KDEsu
  • kdeui
  • KDocTools
  • KHTML
  • KImgIO
  • KInit
  • kio
  • kioslave
  • KJS
  • KNewStuff
  • KParts
  • KUtils
Generated for API Reference by doxygen 1.5.9
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal