OSDN Git Service

Fixed directory issue in HTMLINdex, and removed thumbnailing.
[tjqt4port/tj2qt4.git] / taskjuggler / HTMLIndexReportElement.cpp
1 /*
2  * HTMLIndexReportElement.cpp - TaskJuggler
3  *
4  * Copyright (c) 2001, 2002, 2003, 2004 by Chris Schlaeger <cs@kde.org>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of version 2 of the GNU General Public License as
8  * published by the Free Software Foundation.
9  *
10  * $Id$
11  */
12
13 #include <stdlib.h>
14 #include <qdir.h>
15 #include <qfile.h>
16
17 #include "HTMLIndexReportElement.h"
18 #include "TableLineInfo.h"
19 #include "tjlib-internal.h"
20 #include "Project.h"
21 #include "Account.h"
22
23 HTMLIndexReportElement::HTMLIndexReportElement(Report* r,
24                                                    const QString& df,
25                                                    int dl) :
26     HTMLReportElement(r, df, dl)
27 {
28     columns.append(new TableColumnInfo(0, "Report"));
29     columns.append(new TableColumnInfo(0, "Comment"));
30 }
31
32 bool
33 HTMLIndexReportElement::generateReportLine(Report* report, int level)
34 {
35     // Deduce report file name relatively to index directory.
36     QString absSourceFilePath = QFileInfo(defFileName).dir(true).canonicalPath();
37     QString absReportFilePath = QFileInfo(report->getFullFileName()).dir(true).canonicalPath();
38     QString reportRelPath = "";
39     for (QString sourceFilePath = defFileName; // .left(defFileName.findRev(QDir().separator())-1);
40         sourceFilePath.find('/') >= 0;
41         sourceFilePath = sourceFilePath.left(sourceFilePath.findRev(QDir().separator())))
42     {
43         if (strncmp(sourceFilePath, absReportFilePath, sourceFilePath.length()) == 0)
44         {
45             reportRelPath += absReportFilePath.right(absReportFilePath.length() - sourceFilePath.length() - 1);
46             break;
47         }
48         else
49         {
50             reportRelPath = reportRelPath + ".." + QDir().separator();
51         }
52     }
53
54     QString reportRelFile = reportRelPath + QDir().separator() + QFileInfo(report->getFullFileName()).fileName();
55     // Make thumbnail directory in case it does not exists yet
56
57     // Generate thumbnail
58     QFile reportQFile (report->getFullFileName() );
59     s() << "<TR style=\"background-color:" << colors.getColorName("default") << "; \" ><TD>";
60     s() << "</TD><TD><A HREF='" << reportRelFile << "'>";
61     for (int i = 0 ; i < level; i++)
62         s() << "<ul>";
63
64     s() << "<strong>" << (report->getHeadline() == "" ?  QFileInfo(report->getFullFileName()).fileName() : report->getHeadline()) << "</strong>";
65     for (int i = 0 ; i < level; i++)
66         s() << "</ul>";
67
68     s() << "</TD>";
69
70     s() << "<TD><i> ( " << report->getType() << " ) </i></TD>";
71     ElementHolder *elementHolder = dynamic_cast<ElementHolder*>(this);
72     if (elementHolder && elementHolder->getTable()->getCaption() != "")
73         s() << ": " << elementHolder->getTable()->getCaption();
74     else if (report->getCaption() != "")
75         s() << ": " << report->getCaption();
76
77     s() << "</TR>\n";
78     for (QPtrListIterator<Report> ri(report->getChildrenReportListIterator()); *ri; ++ri)
79     {
80         s() << "\n";
81         generateReportLine(*ri, level + 1);
82     }
83
84     return true;
85 }
86
87 bool
88 HTMLIndexReportElement::generate()
89 {
90     QString previousReportType;
91
92     generateHeader();
93
94     s() << "<table align=\"center\" cellpadding=\"2\" "
95         << "style=\"background-color:" << colors.getColorName("default") << "\"";
96     s() << ">" << endl;
97     s() << " <thead>" << endl
98         << "  <tr valign=\"middle\""
99         << " style=\"background-color:" << colors.getColorName("header") << "; "
100         << "font-size:110%; font-weight:bold; text-align:center\"";
101     s() << ">" << endl;
102     s() << "  </tr>" << endl;
103
104     for (QPtrListIterator<Report> ri(report->getProject()->getReportListIterator()); *ri != 0; ++ri)
105     {
106         // We generate all but Qt*Reports. Those are for the GUI version.
107         if (strncmp((*ri)->getType(), "Qt", 2) != 0
108             && (*ri)->getParentReport() == 0
109             && (*ri) != this->getReport())
110         {
111             generateReportLine(*ri);
112         }
113     }
114     s() << " </thead>\n" << endl;
115     s() << "</table>" << endl;
116
117     return true;
118 }
119