imageitem.cpp
author insilmaril
Tue, 07 Jul 2009 09:34:24 +0000
changeset 779 1fb50e79661c
parent 778 7b4e73ac247e
child 780 fe839bdfd10c
permissions -rw-r--r--
Hiding of links works again
     1 #include "imageitem.h"
     2 
     3 #include "branchitem.h"
     4 #include "mapobj.h"		// z-values
     5 
     6 #include <QString>
     7 #include <iostream>
     8 using namespace std;
     9 
    10 uint ImageItem::saveCounter=0;		// create instance 
    11 
    12 ImageItem::ImageItem()
    13 {
    14 	init();
    15 }
    16 
    17 ImageItem::ImageItem (const QList<QVariant> &data, TreeItem *parent):MapItem (data,parent)
    18 {
    19 	init();
    20 }
    21 
    22 ImageItem::~ImageItem()
    23 {
    24 	//cout <<"Destr ImageItem\n";
    25 	if (lmo) delete lmo;
    26 }
    27 
    28 void ImageItem::init()
    29 {
    30 	type=Image;
    31 	imageType=Undefined;
    32 	hideLinkUnselected=true;
    33 	originalFilename="no original name available";
    34 	zValue=Z_FLOATIMG;
    35 	posMode=Relative;
    36 }
    37 
    38 ImageItem::ImageType ImageItem::getImageType()
    39 {
    40 	return imageType;
    41 }
    42 
    43 bool ImageItem::load(const QString &fname)
    44 {
    45 	bool ok=pixmap.load (fname);
    46 	if (lmo && ok)
    47 	{
    48 		setOriginalFilename (fname);
    49 		setHeading (originalFilename);
    50 		((FloatImageObj*)lmo)->load (pixmap);
    51 	}	
    52 	return ok;	
    53 }
    54 
    55 FloatImageObj* ImageItem::createMapObj(QGraphicsScene *scene)
    56 {
    57 	FloatImageObj *fio=new FloatImageObj (scene);
    58 	fio->setTreeItem (this);
    59 	lmo=fio;
    60 	fio->setParObj ( ((MapItem*)parentItem)->getLMO());
    61 	if (((BranchItem*)parentItem)->isScrolled() || !((MapItem*)parentItem)->getLMO()->isVisibleObj() )
    62 			fio->setVisibility (false);
    63 	initLMO();
    64 	fio->setZValue(zValue);
    65 	fio->setRelPos (pos);
    66 	return fio;
    67 }
    68 
    69 void ImageItem::setZValue(int z)
    70 {
    71 	zValue=z;
    72 	if (lmo) ((FloatImageObj*)lmo)->setZValue(z);
    73 }
    74 
    75 void ImageItem::setOriginalFilename(const QString & fn)
    76 {
    77 	originalFilename=fn;
    78 
    79 	// Set short name. Search from behind:
    80 	int i=originalFilename.findRev("/");
    81 	if (i>=0) originalFilename=originalFilename.remove (0,i+1);
    82 	setHeading (originalFilename);
    83 }
    84 
    85 QString ImageItem::getOriginalFilename()
    86 {
    87 	return originalFilename;
    88 }
    89 
    90 void ImageItem::resetSaveCounter()
    91 {
    92 	saveCounter=0;
    93 }
    94 
    95 void ImageItem::save(const QString &fn, const QString &format)
    96 {
    97 	pixmap.save (fn,qPrintable (format));
    98 }
    99 
   100 QString ImageItem::saveToDir (const QString &tmpdir,const QString &prefix) 
   101 {
   102 	if (hidden) return "";
   103 
   104 	saveCounter++;
   105 	
   106 	/* FIXME-3 QString useOrientAttr;
   107 	if (useOrientation)
   108 		useOrientAttr=attribut ("useOrientation","true");
   109 	else	
   110 		useOrientAttr=attribut ("useOrientation","false");
   111 		*/
   112 		
   113 	/*FIXME-3 QString saveInMapAttr;
   114 	if (saveInMap)
   115 		saveInMapAttr=attribut ("saveInMap","true");
   116 	else	
   117 		
   118 		saveInMapAttr=attribut ("saveInMap","false");
   119 		*/
   120 
   121 	/* FIXME-3 QString exportAttr;
   122 	if (floatExport)
   123 		exportAttr=attribut ("floatExport","true");
   124 	else	
   125 		exportAttr=attribut ("floatExport","false");
   126 	*/	
   127 
   128 
   129 	QString zAttr=attribut ("zValue",QString().setNum(zValue));
   130 	QString url;
   131 
   132 	url="images/"+prefix+"image-" + QString().number(saveCounter,10) + ".png" ;
   133 
   134 	// And really save the image
   135 	pixmap.save (tmpdir +"/"+ url, "PNG");
   136  
   137 	QString nameAttr=attribut ("originalName",originalFilename);
   138 
   139     return singleElement ("floatimage",  
   140 		getMapAttr() 
   141 		+getGeneralAttr()
   142 //		+useOrientAttr 
   143 //		+saveInMapAttr 
   144 //		+exportAttr  
   145 		+zAttr  
   146 		+attribut ("href",QString ("file:")+url)
   147 		+nameAttr
   148 	);	
   149 }
   150