summaryrefslogtreecommitdiff
authorleseb <leseb>2002-03-29 20:21:17 (UTC)
committer leseb <leseb>2002-03-29 20:21:17 (UTC)
commit1c3f2b3a329eac52d2a735d818cd70101376999f (patch) (unidiff)
tree834cc3c1542d5059abf87c7e890b77f390c13116
parentdee656e9bf63cc44f906375d5b24cd953a945a8f (diff)
downloadopie-1c3f2b3a329eac52d2a735d818cd70101376999f.zip
opie-1c3f2b3a329eac52d2a735d818cd70101376999f.tar.gz
opie-1c3f2b3a329eac52d2a735d818cd70101376999f.tar.bz2
Memory leak, null pointer fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/drawpad/drawpad.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/noncore/graphics/drawpad/drawpad.cpp b/noncore/graphics/drawpad/drawpad.cpp
index 5c7e541..aae9ab0 100644
--- a/noncore/graphics/drawpad/drawpad.cpp
+++ b/noncore/graphics/drawpad/drawpad.cpp
@@ -1,503 +1,508 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * DrawPad - a drawing program for Opie Environment * 3 * DrawPad - a drawing program for Opie Environment *
4 * * 4 * *
5 * (C) 2002 by S. Prud'homme <prudhomme@laposte.net> * 5 * (C) 2002 by S. Prud'homme <prudhomme@laposte.net> *
6 * * 6 * *
7 * This program is free software; you can redistribute it and/or modify * 7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by * 8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or * 9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. * 10 * (at your option) any later version. *
11 * * 11 * *
12 ***************************************************************************/ 12 ***************************************************************************/
13 13
14#include "drawpad.h" 14#include "drawpad.h"
15 15
16#include "colordialog.h" 16#include "colordialog.h"
17#include "colorpanel.h" 17#include "colorpanel.h"
18#include "drawpadcanvas.h" 18#include "drawpadcanvas.h"
19#include "ellipsetool.h" 19#include "ellipsetool.h"
20#include "erasetool.h" 20#include "erasetool.h"
21#include "exportdialog.h" 21#include "exportdialog.h"
22#include "filledellipsetool.h" 22#include "filledellipsetool.h"
23#include "filledrectangletool.h" 23#include "filledrectangletool.h"
24#include "filltool.h" 24#include "filltool.h"
25#include "importdialog.h" 25#include "importdialog.h"
26#include "linetool.h" 26#include "linetool.h"
27#include "pointtool.h" 27#include "pointtool.h"
28#include "rectangletool.h" 28#include "rectangletool.h"
29 29
30#include <qpe/applnk.h> 30#include <qpe/applnk.h>
31#include <qpe/global.h> 31#include <qpe/global.h>
32#include <qpe/qpemenubar.h> 32#include <qpe/qpemenubar.h>
33#include <qpe/qpetoolbar.h> 33#include <qpe/qpetoolbar.h>
34#include <qpe/resource.h> 34#include <qpe/resource.h>
35 35
36#include <qaction.h> 36#include <qaction.h>
37#include <qfile.h> 37#include <qfile.h>
38#include <qpainter.h> 38#include <qpainter.h>
39#include <qspinbox.h> 39#include <qspinbox.h>
40#include <qtoolbutton.h> 40#include <qtoolbutton.h>
41#include <qtooltip.h> 41#include <qtooltip.h>
42 42
43DrawPad::DrawPad(QWidget* parent, const char* name) 43DrawPad::DrawPad(QWidget* parent, const char* name)
44 : QMainWindow(parent, name) 44 : QMainWindow(parent, name)
45{ 45{
46 // init members 46 // init members
47 47
48 m_pDrawPadCanvas = new DrawPadCanvas(this, this); 48 m_pDrawPadCanvas = new DrawPadCanvas(this, this);
49 49
50 connect(m_pDrawPadCanvas, SIGNAL(pagesChanged()), this, SLOT(updateNavigationToolButtons())); 50 connect(m_pDrawPadCanvas, SIGNAL(pagesChanged()), this, SLOT(updateNavigationToolButtons()));
51 connect(m_pDrawPadCanvas, SIGNAL(pagesChanged()), this, SLOT(updateCaption())); 51 connect(m_pDrawPadCanvas, SIGNAL(pagesChanged()), this, SLOT(updateCaption()));
52 connect(m_pDrawPadCanvas, SIGNAL(pageBackupsChanged()), this, SLOT(updateUndoRedoToolButtons())); 52 connect(m_pDrawPadCanvas, SIGNAL(pageBackupsChanged()), this, SLOT(updateUndoRedoToolButtons()));
53 53
54 setCentralWidget(m_pDrawPadCanvas); 54 setCentralWidget(m_pDrawPadCanvas);
55 55
56 // init menu 56 // init menu
57 57
58 setToolBarsMovable(false); 58 setToolBarsMovable(false);
59 59
60 QPEToolBar* menuToolBar = new QPEToolBar(this); 60 QPEToolBar* menuToolBar = new QPEToolBar(this);
61 QPEMenuBar* menuBar = new QPEMenuBar(menuToolBar); 61 QPEMenuBar* menuBar = new QPEMenuBar(menuToolBar);
62 62
63 QPopupMenu *toolsPopupMenu = new QPopupMenu(menuBar); 63 QPopupMenu *toolsPopupMenu = new QPopupMenu(menuBar);
64 64
65 QAction* deleteAllAction = new QAction(tr("Delete All"), QString::null, 0, this); 65 QAction* deleteAllAction = new QAction(tr("Delete All"), QString::null, 0, this);
66 connect(deleteAllAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(deleteAll())); 66 connect(deleteAllAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(deleteAll()));
67 deleteAllAction->addTo(toolsPopupMenu); 67 deleteAllAction->addTo(toolsPopupMenu);
68 68
69 toolsPopupMenu->insertSeparator(); 69 toolsPopupMenu->insertSeparator();
70 70
71 QAction* importPageAction = new QAction(tr("Import"), tr("Import..."), 0, this); 71 QAction* importPageAction = new QAction(tr("Import"), tr("Import..."), 0, this);
72 connect(importPageAction, SIGNAL(activated()), this, SLOT(importPage())); 72 connect(importPageAction, SIGNAL(activated()), this, SLOT(importPage()));
73 importPageAction->addTo(toolsPopupMenu); 73 importPageAction->addTo(toolsPopupMenu);
74 74
75 QAction* exportPageAction = new QAction(tr("Export"), tr("Export..."), 0, this); 75 QAction* exportPageAction = new QAction(tr("Export"), tr("Export..."), 0, this);
76 connect(exportPageAction, SIGNAL(activated()), this, SLOT(exportPage())); 76 connect(exportPageAction, SIGNAL(activated()), this, SLOT(exportPage()));
77 exportPageAction->addTo(toolsPopupMenu); 77 exportPageAction->addTo(toolsPopupMenu);
78 78
79 menuBar->insertItem(tr("Tools"), toolsPopupMenu); 79 menuBar->insertItem(tr("Tools"), toolsPopupMenu);
80 80
81 // init page toolbar 81 // init page toolbar
82 82
83 QPEToolBar* pageToolBar = new QPEToolBar(this); 83 QPEToolBar* pageToolBar = new QPEToolBar(this);
84 84
85 QAction* newPageAction = new QAction(tr("New Page"), Resource::loadIconSet("new"), QString::null, 0, this); 85 QAction* newPageAction = new QAction(tr("New Page"), Resource::loadIconSet("new"), QString::null, 0, this);
86 connect(newPageAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(newPage())); 86 connect(newPageAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(newPage()));
87 newPageAction->addTo(pageToolBar); 87 newPageAction->addTo(pageToolBar);
88 88
89 QAction* clearPageAction = new QAction(tr("Clear Page"), Resource::loadIconSet("drawpad/clear"), QString::null, 0, this); 89 QAction* clearPageAction = new QAction(tr("Clear Page"), Resource::loadIconSet("drawpad/clear"), QString::null, 0, this);
90 connect(clearPageAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(clearPage())); 90 connect(clearPageAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(clearPage()));
91 clearPageAction->addTo(pageToolBar); 91 clearPageAction->addTo(pageToolBar);
92 92
93 QAction* deletePageAction = new QAction(tr("Delete Page"), Resource::loadIconSet("trash"), QString::null, 0, this); 93 QAction* deletePageAction = new QAction(tr("Delete Page"), Resource::loadIconSet("trash"), QString::null, 0, this);
94 connect(deletePageAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(deletePage())); 94 connect(deletePageAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(deletePage()));
95 deletePageAction->addTo(pageToolBar); 95 deletePageAction->addTo(pageToolBar);
96 96
97 QPEToolBar* emptyToolBar = new QPEToolBar(this); 97 QPEToolBar* emptyToolBar = new QPEToolBar(this);
98 emptyToolBar->setHorizontalStretchable(true); 98 emptyToolBar->setHorizontalStretchable(true);
99 99
100 // init navigation toolbar 100 // init navigation toolbar
101 101
102 QPEToolBar* navigationToolBar = new QPEToolBar(this); 102 QPEToolBar* navigationToolBar = new QPEToolBar(this);
103 103
104 m_pUndoAction = new QAction(tr("Undo"), Resource::loadIconSet("drawpad/undo"), QString::null, 0, this); 104 m_pUndoAction = new QAction(tr("Undo"), Resource::loadIconSet("drawpad/undo"), QString::null, 0, this);
105 connect(m_pUndoAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(undo())); 105 connect(m_pUndoAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(undo()));
106 m_pUndoAction->addTo(navigationToolBar); 106 m_pUndoAction->addTo(navigationToolBar);
107 107
108 m_pRedoAction = new QAction(tr("Redo"), Resource::loadIconSet("drawpad/redo"), QString::null, 0, this); 108 m_pRedoAction = new QAction(tr("Redo"), Resource::loadIconSet("drawpad/redo"), QString::null, 0, this);
109 connect(m_pRedoAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(redo())); 109 connect(m_pRedoAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(redo()));
110 m_pRedoAction->addTo(navigationToolBar); 110 m_pRedoAction->addTo(navigationToolBar);
111 111
112 m_pFirstPageAction = new QAction(tr("First Page"), Resource::loadIconSet("fastback"), QString::null, 0, this); 112 m_pFirstPageAction = new QAction(tr("First Page"), Resource::loadIconSet("fastback"), QString::null, 0, this);
113 connect(m_pFirstPageAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(goFirstPage())); 113 connect(m_pFirstPageAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(goFirstPage()));
114 m_pFirstPageAction->addTo(navigationToolBar); 114 m_pFirstPageAction->addTo(navigationToolBar);
115 115
116 m_pPreviousPageAction = new QAction(tr("Previous Page"), Resource::loadIconSet("back"), QString::null, 0, this); 116 m_pPreviousPageAction = new QAction(tr("Previous Page"), Resource::loadIconSet("back"), QString::null, 0, this);
117 connect(m_pPreviousPageAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(goPreviousPage())); 117 connect(m_pPreviousPageAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(goPreviousPage()));
118 m_pPreviousPageAction->addTo(navigationToolBar); 118 m_pPreviousPageAction->addTo(navigationToolBar);
119 119
120 m_pNextPageAction = new QAction(tr("Next Page"), Resource::loadIconSet("forward"), QString::null, 0, this); 120 m_pNextPageAction = new QAction(tr("Next Page"), Resource::loadIconSet("forward"), QString::null, 0, this);
121 connect(m_pNextPageAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(goNextPage())); 121 connect(m_pNextPageAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(goNextPage()));
122 m_pNextPageAction->addTo(navigationToolBar); 122 m_pNextPageAction->addTo(navigationToolBar);
123 123
124 m_pLastPageAction = new QAction(tr("Last Page"), Resource::loadIconSet("fastforward"), QString::null, 0, this); 124 m_pLastPageAction = new QAction(tr("Last Page"), Resource::loadIconSet("fastforward"), QString::null, 0, this);
125 connect(m_pLastPageAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(goLastPage())); 125 connect(m_pLastPageAction, SIGNAL(activated()), m_pDrawPadCanvas, SLOT(goLastPage()));
126 m_pLastPageAction->addTo(navigationToolBar); 126 m_pLastPageAction->addTo(navigationToolBar);
127 127
128 // init draw mode toolbar 128 // init draw mode toolbar
129 129
130 QPEToolBar* drawModeToolBar = new QPEToolBar(this); 130 QPEToolBar* drawModeToolBar = new QPEToolBar(this);
131 131
132 m_pPointToolAction = new QAction(tr("Draw Point"), Resource::loadIconSet("drawpad/point.png"), QString::null, 0, this); 132 m_pPointToolAction = new QAction(tr("Draw Point"), Resource::loadIconSet("drawpad/point.png"), QString::null, 0, this);
133 m_pPointToolAction->setToggleAction(true); 133 m_pPointToolAction->setToggleAction(true);
134 connect(m_pPointToolAction, SIGNAL(activated()), this, SLOT(setPointTool())); 134 connect(m_pPointToolAction, SIGNAL(activated()), this, SLOT(setPointTool()));
135 m_pPointToolAction->addTo(drawModeToolBar); 135 m_pPointToolAction->addTo(drawModeToolBar);
136 136
137 m_pLineToolAction = new QAction(tr("Draw Line"), Resource::loadIconSet("drawpad/line.png"), QString::null, 0, this); 137 m_pLineToolAction = new QAction(tr("Draw Line"), Resource::loadIconSet("drawpad/line.png"), QString::null, 0, this);
138 m_pLineToolAction->setToggleAction(true); 138 m_pLineToolAction->setToggleAction(true);
139 connect(m_pLineToolAction, SIGNAL(activated()), this, SLOT(setLineTool())); 139 connect(m_pLineToolAction, SIGNAL(activated()), this, SLOT(setLineTool()));
140 m_pLineToolAction->addTo(drawModeToolBar); 140 m_pLineToolAction->addTo(drawModeToolBar);
141 141
142 m_pRectangleToolButton = new QToolButton(drawModeToolBar); 142 m_pRectangleToolButton = new QToolButton(drawModeToolBar);
143 m_pRectangleToolButton->setToggleButton(true); 143 m_pRectangleToolButton->setToggleButton(true);
144 144
145 QPopupMenu* rectanglePopupMenu = new QPopupMenu(m_pRectangleToolButton); 145 QPopupMenu* rectanglePopupMenu = new QPopupMenu(m_pRectangleToolButton);
146 146
147 m_pRectangleToolAction = new QAction(tr("Draw Rectangle"), Resource::loadIconSet("drawpad/rectangle.png"), "", 0, this); 147 m_pRectangleToolAction = new QAction(tr("Draw Rectangle"), Resource::loadIconSet("drawpad/rectangle.png"), "", 0, this);
148 connect(m_pRectangleToolAction, SIGNAL(activated()), this, SLOT(setRectangleTool())); 148 connect(m_pRectangleToolAction, SIGNAL(activated()), this, SLOT(setRectangleTool()));
149 m_pRectangleToolAction->addTo(rectanglePopupMenu); 149 m_pRectangleToolAction->addTo(rectanglePopupMenu);
150 150
151 m_pFilledRectangleToolAction = new QAction(tr("Draw Filled Rectangle"), Resource::loadIconSet("drawpad/filledrectangle.png"), "", 0, this); 151 m_pFilledRectangleToolAction = new QAction(tr("Draw Filled Rectangle"), Resource::loadIconSet("drawpad/filledrectangle.png"), "", 0, this);
152 connect(m_pFilledRectangleToolAction, SIGNAL(activated()), this, SLOT(setFilledRectangleTool())); 152 connect(m_pFilledRectangleToolAction, SIGNAL(activated()), this, SLOT(setFilledRectangleTool()));
153 m_pFilledRectangleToolAction->addTo(rectanglePopupMenu); 153 m_pFilledRectangleToolAction->addTo(rectanglePopupMenu);
154 154
155 m_pRectangleToolButton->setPopup(rectanglePopupMenu); 155 m_pRectangleToolButton->setPopup(rectanglePopupMenu);
156 156
157 m_pEllipseToolButton = new QToolButton(drawModeToolBar); 157 m_pEllipseToolButton = new QToolButton(drawModeToolBar);
158 m_pEllipseToolButton->setToggleButton(true); 158 m_pEllipseToolButton->setToggleButton(true);
159 159
160 QPopupMenu* ellipsePopupMenu = new QPopupMenu(m_pEllipseToolButton); 160 QPopupMenu* ellipsePopupMenu = new QPopupMenu(m_pEllipseToolButton);
161 161
162 m_pEllipseToolAction = new QAction(tr("Draw Ellipse"), Resource::loadIconSet("drawpad/ellipse.png"), "", 0, this); 162 m_pEllipseToolAction = new QAction(tr("Draw Ellipse"), Resource::loadIconSet("drawpad/ellipse.png"), "", 0, this);
163 connect(m_pEllipseToolAction, SIGNAL(activated()), this, SLOT(setEllipseTool())); 163 connect(m_pEllipseToolAction, SIGNAL(activated()), this, SLOT(setEllipseTool()));
164 m_pEllipseToolAction->addTo(ellipsePopupMenu); 164 m_pEllipseToolAction->addTo(ellipsePopupMenu);
165 165
166 m_pFilledEllipseToolAction = new QAction(tr("Draw Filled Ellipse"), Resource::loadIconSet("drawpad/filledellipse.png"), "", 0, this); 166 m_pFilledEllipseToolAction = new QAction(tr("Draw Filled Ellipse"), Resource::loadIconSet("drawpad/filledellipse.png"), "", 0, this);
167 connect(m_pFilledEllipseToolAction, SIGNAL(activated()), this, SLOT(setFilledEllipseTool())); 167 connect(m_pFilledEllipseToolAction, SIGNAL(activated()), this, SLOT(setFilledEllipseTool()));
168 m_pFilledEllipseToolAction->addTo(ellipsePopupMenu); 168 m_pFilledEllipseToolAction->addTo(ellipsePopupMenu);
169 169
170 m_pEllipseToolButton->setPopup(ellipsePopupMenu); 170 m_pEllipseToolButton->setPopup(ellipsePopupMenu);
171 171
172 m_pFillToolAction = new QAction(tr("Fill Region"), Resource::loadIconSet("drawpad/fill.png"), QString::null, 0, this); 172 m_pFillToolAction = new QAction(tr("Fill Region"), Resource::loadIconSet("drawpad/fill.png"), QString::null, 0, this);
173 m_pFillToolAction->setToggleAction(true); 173 m_pFillToolAction->setToggleAction(true);
174 connect(m_pFillToolAction, SIGNAL(activated()), this, SLOT(setFillTool())); 174 connect(m_pFillToolAction, SIGNAL(activated()), this, SLOT(setFillTool()));
175 m_pFillToolAction->addTo(drawModeToolBar); 175 m_pFillToolAction->addTo(drawModeToolBar);
176 176
177 m_pEraseToolAction = new QAction(tr("Erase Point"), Resource::loadIconSet("drawpad/erase.png"), QString::null, 0, this); 177 m_pEraseToolAction = new QAction(tr("Erase Point"), Resource::loadIconSet("drawpad/erase.png"), QString::null, 0, this);
178 m_pEraseToolAction->setToggleAction(true); 178 m_pEraseToolAction->setToggleAction(true);
179 connect(m_pEraseToolAction, SIGNAL(activated()), this, SLOT(setEraseTool())); 179 connect(m_pEraseToolAction, SIGNAL(activated()), this, SLOT(setEraseTool()));
180 m_pEraseToolAction->addTo(drawModeToolBar); 180 m_pEraseToolAction->addTo(drawModeToolBar);
181 181
182 m_pTool = 0; 182 m_pTool = 0;
183 setRectangleTool(); 183 setRectangleTool();
184 setEllipseTool(); 184 setEllipseTool();
185 setPointTool(); 185 setPointTool();
186 186
187 emptyToolBar = new QPEToolBar(this); 187 emptyToolBar = new QPEToolBar(this);
188 emptyToolBar->setHorizontalStretchable(true); 188 emptyToolBar->setHorizontalStretchable(true);
189 emptyToolBar->addSeparator(); 189 emptyToolBar->addSeparator();
190 190
191 // init draw parameters toolbar 191 // init draw parameters toolbar
192 192
193 QPEToolBar* drawParametersToolBar = new QPEToolBar(this); 193 QPEToolBar* drawParametersToolBar = new QPEToolBar(this);
194 194
195 QSpinBox* penWidthSpinBox = new QSpinBox(1, 9, 1, drawParametersToolBar); 195 QSpinBox* penWidthSpinBox = new QSpinBox(1, 9, 1, drawParametersToolBar);
196 connect(penWidthSpinBox, SIGNAL(valueChanged(int)), this, SLOT(changePenWidth(int))); 196 connect(penWidthSpinBox, SIGNAL(valueChanged(int)), this, SLOT(changePenWidth(int)));
197 197
198 QToolTip::add(penWidthSpinBox, tr("Pen Width")); 198 QToolTip::add(penWidthSpinBox, tr("Pen Width"));
199 penWidthSpinBox->setValue(1); 199 penWidthSpinBox->setValue(1);
200 penWidthSpinBox->setFocusPolicy(QWidget::NoFocus); 200 penWidthSpinBox->setFocusPolicy(QWidget::NoFocus);
201 201
202 m_pPenColorToolButton = new QToolButton(drawParametersToolBar); 202 m_pPenColorToolButton = new QToolButton(drawParametersToolBar);
203 m_pPenColorToolButton->setPixmap(Resource::loadPixmap("drawpad/pencolor.png")); 203 m_pPenColorToolButton->setPixmap(Resource::loadPixmap("drawpad/pencolor.png"));
204 204
205 QPopupMenu* penColorPopupMenu = new QPopupMenu(m_pPenColorToolButton); 205 QPopupMenu* penColorPopupMenu = new QPopupMenu(m_pPenColorToolButton);
206 206
207 ColorPanel* penColorPanel = new ColorPanel(penColorPopupMenu); 207 ColorPanel* penColorPanel = new ColorPanel(penColorPopupMenu);
208 connect(penColorPanel, SIGNAL(colorSelected(const QColor&)), this, SLOT(changePenColor(const QColor&))); 208 connect(penColorPanel, SIGNAL(colorSelected(const QColor&)), this, SLOT(changePenColor(const QColor&)));
209 209
210 penColorPopupMenu->insertItem(penColorPanel); 210 penColorPopupMenu->insertItem(penColorPanel);
211 penColorPopupMenu->insertSeparator(); 211 penColorPopupMenu->insertSeparator();
212 212
213 QAction* choosePenColorAction = new QAction(tr("More"), tr("More..."), 0, this); 213 QAction* choosePenColorAction = new QAction(tr("More"), tr("More..."), 0, this);
214 connect(choosePenColorAction, SIGNAL(activated()), this, SLOT(choosePenColor())); 214 connect(choosePenColorAction, SIGNAL(activated()), this, SLOT(choosePenColor()));
215 choosePenColorAction->addTo(penColorPopupMenu); 215 choosePenColorAction->addTo(penColorPopupMenu);
216 216
217 QToolTip::add(m_pPenColorToolButton, tr("Pen Color")); 217 QToolTip::add(m_pPenColorToolButton, tr("Pen Color"));
218 m_pPenColorToolButton->setPopup(penColorPopupMenu); 218 m_pPenColorToolButton->setPopup(penColorPopupMenu);
219 m_pPenColorToolButton->setPopupDelay(0); 219 m_pPenColorToolButton->setPopupDelay(0);
220 220
221 penColorPanel->buttonSelected(Qt::black); 221 penColorPanel->buttonSelected(Qt::black);
222 222
223 m_pBrushColorToolButton = new QToolButton(drawParametersToolBar); 223 m_pBrushColorToolButton = new QToolButton(drawParametersToolBar);
224 m_pBrushColorToolButton->setPixmap(Resource::loadPixmap("drawpad/brushcolor.png")); 224 m_pBrushColorToolButton->setPixmap(Resource::loadPixmap("drawpad/brushcolor.png"));
225 225
226 QPopupMenu* brushColorPopupMenu = new QPopupMenu(m_pBrushColorToolButton); 226 QPopupMenu* brushColorPopupMenu = new QPopupMenu(m_pBrushColorToolButton);
227 227
228 ColorPanel* brushColorPanel = new ColorPanel(brushColorPopupMenu); 228 ColorPanel* brushColorPanel = new ColorPanel(brushColorPopupMenu);
229 connect(brushColorPanel, SIGNAL(colorSelected(const QColor&)), this, SLOT(changeBrushColor(const QColor&))); 229 connect(brushColorPanel, SIGNAL(colorSelected(const QColor&)), this, SLOT(changeBrushColor(const QColor&)));
230 230
231 brushColorPopupMenu->insertItem(brushColorPanel); 231 brushColorPopupMenu->insertItem(brushColorPanel);
232 brushColorPopupMenu->insertSeparator(); 232 brushColorPopupMenu->insertSeparator();
233 233
234 QAction* chooseBrushColorAction = new QAction(tr("More"), tr("More..."), 0, this); 234 QAction* chooseBrushColorAction = new QAction(tr("More"), tr("More..."), 0, this);
235 connect(chooseBrushColorAction, SIGNAL(activated()), this, SLOT(chooseBrushColor())); 235 connect(chooseBrushColorAction, SIGNAL(activated()), this, SLOT(chooseBrushColor()));
236 chooseBrushColorAction->addTo(brushColorPopupMenu); 236 chooseBrushColorAction->addTo(brushColorPopupMenu);
237 237
238 QToolTip::add(m_pBrushColorToolButton, tr("Fill Color")); 238 QToolTip::add(m_pBrushColorToolButton, tr("Fill Color"));
239 m_pBrushColorToolButton->setPopup(brushColorPopupMenu); 239 m_pBrushColorToolButton->setPopup(brushColorPopupMenu);
240 m_pBrushColorToolButton->setPopupDelay(0); 240 m_pBrushColorToolButton->setPopupDelay(0);
241 241
242 brushColorPanel->buttonSelected(Qt::white); 242 brushColorPanel->buttonSelected(Qt::white);
243 243
244 // init pages 244 // init pages
245 245
246 QFile file(Global::applicationFileName("drawpad", "drawpad.xml")); 246 QFile file(Global::applicationFileName("drawpad", "drawpad.xml"));
247 247
248 if (file.open(IO_ReadOnly)) { 248 if (file.open(IO_ReadOnly)) {
249 m_pDrawPadCanvas->load(&file); 249 m_pDrawPadCanvas->load(&file);
250 file.close(); 250 file.close();
251 } else { 251 } else {
252 m_pDrawPadCanvas->initialPage(); 252 m_pDrawPadCanvas->initialPage();
253 } 253 }
254} 254}
255 255
256DrawPad::~DrawPad() 256DrawPad::~DrawPad()
257{ 257{
258 QFile file(Global::applicationFileName("drawpad", "drawpad.xml")); 258 QFile file(Global::applicationFileName("drawpad", "drawpad.xml"));
259 259
260 if (file.open(IO_WriteOnly)) { 260 if (file.open(IO_WriteOnly)) {
261 m_pDrawPadCanvas->save(&file); 261 m_pDrawPadCanvas->save(&file);
262 file.close(); 262 file.close();
263 } 263 }
264} 264}
265 265
266void DrawPad::setPointTool() 266void DrawPad::setPointTool()
267{ 267{
268 if (m_pTool) { 268 if (m_pTool) {
269 delete m_pTool; 269 delete m_pTool;
270 } 270 }
271 271
272 m_pTool = new PointTool(this, m_pDrawPadCanvas); 272 m_pTool = new PointTool(this, m_pDrawPadCanvas);
273 273
274 m_pPointToolAction->setOn(true); 274 m_pPointToolAction->setOn(true);
275 m_pLineToolAction->setOn(false); 275 m_pLineToolAction->setOn(false);
276 m_pRectangleToolButton->setOn(false); 276 m_pRectangleToolButton->setOn(false);
277 m_pEllipseToolButton->setOn(false); 277 m_pEllipseToolButton->setOn(false);
278 m_pFillToolAction->setOn(false); 278 m_pFillToolAction->setOn(false);
279 m_pEraseToolAction->setOn(false); 279 m_pEraseToolAction->setOn(false);
280} 280}
281 281
282void DrawPad::setLineTool() 282void DrawPad::setLineTool()
283{ 283{
284 if (m_pTool) { 284 if (m_pTool) {
285 delete m_pTool; 285 delete m_pTool;
286 } 286 }
287 287
288 m_pTool = new LineTool(this, m_pDrawPadCanvas); 288 m_pTool = new LineTool(this, m_pDrawPadCanvas);
289 289
290 m_pPointToolAction->setOn(false); 290 m_pPointToolAction->setOn(false);
291 m_pLineToolAction->setOn(true); 291 m_pLineToolAction->setOn(true);
292 m_pRectangleToolButton->setOn(false); 292 m_pRectangleToolButton->setOn(false);
293 m_pEllipseToolButton->setOn(false); 293 m_pEllipseToolButton->setOn(false);
294 m_pFillToolAction->setOn(false); 294 m_pFillToolAction->setOn(false);
295 m_pEraseToolAction->setOn(false); 295 m_pEraseToolAction->setOn(false);
296} 296}
297 297
298void DrawPad::setRectangleTool() 298void DrawPad::setRectangleTool()
299{ 299{
300 if (m_pTool) { 300 if (m_pTool) {
301 delete m_pTool; 301 delete m_pTool;
302 } 302 }
303 303
304 m_pTool = new RectangleTool(this, m_pDrawPadCanvas); 304 m_pTool = new RectangleTool(this, m_pDrawPadCanvas);
305 305
306 m_pRectangleToolButton->setIconSet(m_pRectangleToolAction->iconSet()); 306 m_pRectangleToolButton->setIconSet(m_pRectangleToolAction->iconSet());
307 QToolTip::add(m_pRectangleToolButton, m_pRectangleToolAction->text()); 307 QToolTip::add(m_pRectangleToolButton, m_pRectangleToolAction->text());
308 308
309 disconnect(m_pRectangleToolButton, SIGNAL(clicked()), 0, 0); 309 disconnect(m_pRectangleToolButton, SIGNAL(clicked()), 0, 0);
310 connect(m_pRectangleToolButton, SIGNAL(clicked()), m_pRectangleToolAction, SIGNAL(activated())); 310 connect(m_pRectangleToolButton, SIGNAL(clicked()), m_pRectangleToolAction, SIGNAL(activated()));
311 311
312 m_pPointToolAction->setOn(false); 312 m_pPointToolAction->setOn(false);
313 m_pLineToolAction->setOn(false); 313 m_pLineToolAction->setOn(false);
314 m_pRectangleToolButton->setOn(true); 314 m_pRectangleToolButton->setOn(true);
315 m_pEllipseToolButton->setOn(false); 315 m_pEllipseToolButton->setOn(false);
316 m_pFillToolAction->setOn(false); 316 m_pFillToolAction->setOn(false);
317 m_pEraseToolAction->setOn(false); 317 m_pEraseToolAction->setOn(false);
318} 318}
319 319
320void DrawPad::setFilledRectangleTool() 320void DrawPad::setFilledRectangleTool()
321{ 321{
322 if (m_pTool) { 322 if (m_pTool) {
323 delete m_pTool; 323 delete m_pTool;
324 } 324 }
325 325
326 m_pTool = new FilledRectangleTool(this, m_pDrawPadCanvas); 326 m_pTool = new FilledRectangleTool(this, m_pDrawPadCanvas);
327 327
328 m_pRectangleToolButton->setIconSet(m_pFilledRectangleToolAction->iconSet()); 328 m_pRectangleToolButton->setIconSet(m_pFilledRectangleToolAction->iconSet());
329 QToolTip::add(m_pRectangleToolButton, m_pFilledRectangleToolAction->text()); 329 QToolTip::add(m_pRectangleToolButton, m_pFilledRectangleToolAction->text());
330 330
331 disconnect(m_pRectangleToolButton, SIGNAL(clicked()), 0, 0); 331 disconnect(m_pRectangleToolButton, SIGNAL(clicked()), 0, 0);
332 connect(m_pRectangleToolButton, SIGNAL(clicked()), m_pFilledRectangleToolAction, SIGNAL(activated())); 332 connect(m_pRectangleToolButton, SIGNAL(clicked()), m_pFilledRectangleToolAction, SIGNAL(activated()));
333 333
334 m_pPointToolAction->setOn(false); 334 m_pPointToolAction->setOn(false);
335 m_pLineToolAction->setOn(false); 335 m_pLineToolAction->setOn(false);
336 m_pRectangleToolButton->setOn(true); 336 m_pRectangleToolButton->setOn(true);
337 m_pEllipseToolButton->setOn(false); 337 m_pEllipseToolButton->setOn(false);
338 m_pFillToolAction->setOn(false); 338 m_pFillToolAction->setOn(false);
339 m_pEraseToolAction->setOn(false); 339 m_pEraseToolAction->setOn(false);
340} 340}
341 341
342void DrawPad::setEllipseTool() 342void DrawPad::setEllipseTool()
343{ 343{
344 if (m_pTool) { 344 if (m_pTool) {
345 delete m_pTool; 345 delete m_pTool;
346 } 346 }
347 347
348 m_pTool = new EllipseTool(this, m_pDrawPadCanvas); 348 m_pTool = new EllipseTool(this, m_pDrawPadCanvas);
349 349
350 m_pEllipseToolButton->setIconSet(m_pEllipseToolAction->iconSet()); 350 m_pEllipseToolButton->setIconSet(m_pEllipseToolAction->iconSet());
351 QToolTip::add(m_pEllipseToolButton, m_pEllipseToolAction->text()); 351 QToolTip::add(m_pEllipseToolButton, m_pEllipseToolAction->text());
352 352
353 disconnect(m_pEllipseToolButton, SIGNAL(clicked()), 0, 0); 353 disconnect(m_pEllipseToolButton, SIGNAL(clicked()), 0, 0);
354 connect(m_pEllipseToolButton, SIGNAL(clicked()), m_pEllipseToolAction, SIGNAL(activated())); 354 connect(m_pEllipseToolButton, SIGNAL(clicked()), m_pEllipseToolAction, SIGNAL(activated()));
355 355
356 m_pPointToolAction->setOn(false); 356 m_pPointToolAction->setOn(false);
357 m_pLineToolAction->setOn(false); 357 m_pLineToolAction->setOn(false);
358 m_pRectangleToolButton->setOn(false); 358 m_pRectangleToolButton->setOn(false);
359 m_pEllipseToolButton->setOn(true); 359 m_pEllipseToolButton->setOn(true);
360 m_pFillToolAction->setOn(false); 360 m_pFillToolAction->setOn(false);
361 m_pEraseToolAction->setOn(false); 361 m_pEraseToolAction->setOn(false);
362} 362}
363 363
364void DrawPad::setFilledEllipseTool() 364void DrawPad::setFilledEllipseTool()
365{ 365{
366 if (m_pTool) { 366 if (m_pTool) {
367 delete m_pTool; 367 delete m_pTool;
368 } 368 }
369 369
370 m_pTool = new FilledEllipseTool(this, m_pDrawPadCanvas); 370 m_pTool = new FilledEllipseTool(this, m_pDrawPadCanvas);
371 371
372 m_pEllipseToolButton->setIconSet(m_pFilledEllipseToolAction->iconSet()); 372 m_pEllipseToolButton->setIconSet(m_pFilledEllipseToolAction->iconSet());
373 QToolTip::add(m_pEllipseToolButton, m_pFilledEllipseToolAction->text()); 373 QToolTip::add(m_pEllipseToolButton, m_pFilledEllipseToolAction->text());
374 374
375 disconnect(m_pEllipseToolButton, SIGNAL(clicked()), 0, 0); 375 disconnect(m_pEllipseToolButton, SIGNAL(clicked()), 0, 0);
376 connect(m_pEllipseToolButton, SIGNAL(clicked()), m_pFilledEllipseToolAction, SIGNAL(activated())); 376 connect(m_pEllipseToolButton, SIGNAL(clicked()), m_pFilledEllipseToolAction, SIGNAL(activated()));
377 377
378 m_pPointToolAction->setOn(false); 378 m_pPointToolAction->setOn(false);
379 m_pLineToolAction->setOn(false); 379 m_pLineToolAction->setOn(false);
380 m_pRectangleToolButton->setOn(false); 380 m_pRectangleToolButton->setOn(false);
381 m_pEllipseToolButton->setOn(true); 381 m_pEllipseToolButton->setOn(true);
382 m_pFillToolAction->setOn(false); 382 m_pFillToolAction->setOn(false);
383 m_pEraseToolAction->setOn(false); 383 m_pEraseToolAction->setOn(false);
384} 384}
385 385
386void DrawPad::setFillTool() 386void DrawPad::setFillTool()
387{ 387{
388 if (m_pTool) { 388 if (m_pTool) {
389 delete m_pTool; 389 delete m_pTool;
390 } 390 }
391 391
392 m_pTool = new FillTool(this, m_pDrawPadCanvas); 392 m_pTool = new FillTool(this, m_pDrawPadCanvas);
393 393
394 m_pPointToolAction->setOn(false); 394 m_pPointToolAction->setOn(false);
395 m_pLineToolAction->setOn(false); 395 m_pLineToolAction->setOn(false);
396 m_pRectangleToolButton->setOn(false); 396 m_pRectangleToolButton->setOn(false);
397 m_pEllipseToolButton->setOn(false); 397 m_pEllipseToolButton->setOn(false);
398 m_pFillToolAction->setOn(true); 398 m_pFillToolAction->setOn(true);
399 m_pEraseToolAction->setOn(false); 399 m_pEraseToolAction->setOn(false);
400} 400}
401 401
402void DrawPad::setEraseTool() 402void DrawPad::setEraseTool()
403{ 403{
404 if (m_pTool) { 404 if (m_pTool) {
405 delete m_pTool; 405 delete m_pTool;
406 } 406 }
407 407
408 m_pTool = new EraseTool(this, m_pDrawPadCanvas); 408 m_pTool = new EraseTool(this, m_pDrawPadCanvas);
409 409
410 m_pPointToolAction->setOn(false); 410 m_pPointToolAction->setOn(false);
411 m_pLineToolAction->setOn(false); 411 m_pLineToolAction->setOn(false);
412 m_pRectangleToolButton->setOn(false); 412 m_pRectangleToolButton->setOn(false);
413 m_pEllipseToolButton->setOn(false); 413 m_pEllipseToolButton->setOn(false);
414 m_pFillToolAction->setOn(false); 414 m_pFillToolAction->setOn(false);
415 m_pEraseToolAction->setOn(true); 415 m_pEraseToolAction->setOn(true);
416} 416}
417 417
418void DrawPad::changePenWidth(int value) 418void DrawPad::changePenWidth(int value)
419{ 419{
420 m_pen.setWidth(value); 420 m_pen.setWidth(value);
421} 421}
422 422
423void DrawPad::changePenColor(const QColor& color) 423void DrawPad::changePenColor(const QColor& color)
424{ 424{
425 m_pen.setColor(color); 425 m_pen.setColor(color);
426 426
427 QPainter painter; 427 QPainter painter;
428 painter.begin(m_pPenColorToolButton->pixmap()); 428 painter.begin(m_pPenColorToolButton->pixmap());
429 painter.fillRect(QRect(0, 12, 14, 2), m_pen.color()); 429 painter.fillRect(QRect(0, 12, 14, 2), m_pen.color());
430 painter.end(); 430 painter.end();
431 431
432 m_pPenColorToolButton->popup()->hide(); 432 m_pPenColorToolButton->popup()->hide();
433} 433}
434 434
435void DrawPad::changeBrushColor(const QColor& color) 435void DrawPad::changeBrushColor(const QColor& color)
436{ 436{
437 m_brush = QBrush(color); 437 m_brush = QBrush(color);
438 438
439 QPainter painter; 439 QPainter painter;
440 painter.begin(m_pBrushColorToolButton->pixmap()); 440 painter.begin(m_pBrushColorToolButton->pixmap());
441 painter.fillRect(QRect(0, 12, 14, 2), m_brush.color()); 441 painter.fillRect(QRect(0, 12, 14, 2), m_brush.color());
442 painter.end(); 442 painter.end();
443 443
444 m_pBrushColorToolButton->popup()->hide(); 444 m_pBrushColorToolButton->popup()->hide();
445} 445}
446 446
447void DrawPad::choosePenColor() 447void DrawPad::choosePenColor()
448{ 448{
449 QColor newPenColor = QColorDialog::getColor(m_pen.color()); 449 QColor newPenColor = QColorDialog::getColor(m_pen.color());
450 changePenColor(newPenColor); 450 changePenColor(newPenColor);
451} 451}
452 452
453void DrawPad::chooseBrushColor() 453void DrawPad::chooseBrushColor()
454{ 454{
455 QColor newBrushColor = QColorDialog::getColor(m_brush.color()); 455 QColor newBrushColor = QColorDialog::getColor(m_brush.color());
456 changeBrushColor(newBrushColor); 456 changeBrushColor(newBrushColor);
457} 457}
458 458
459void DrawPad::updateUndoRedoToolButtons() 459void DrawPad::updateUndoRedoToolButtons()
460{ 460{
461 m_pUndoAction->setEnabled(m_pDrawPadCanvas->undoEnabled()); 461 m_pUndoAction->setEnabled(m_pDrawPadCanvas->undoEnabled());
462 m_pRedoAction->setEnabled(m_pDrawPadCanvas->redoEnabled()); 462 m_pRedoAction->setEnabled(m_pDrawPadCanvas->redoEnabled());
463} 463}
464 464
465void DrawPad::updateNavigationToolButtons() 465void DrawPad::updateNavigationToolButtons()
466{ 466{
467 m_pFirstPageAction->setEnabled(m_pDrawPadCanvas->goPreviousPageEnabled()); 467 m_pFirstPageAction->setEnabled(m_pDrawPadCanvas->goPreviousPageEnabled());
468 m_pPreviousPageAction->setEnabled(m_pDrawPadCanvas->goPreviousPageEnabled()); 468 m_pPreviousPageAction->setEnabled(m_pDrawPadCanvas->goPreviousPageEnabled());
469 m_pNextPageAction->setEnabled(m_pDrawPadCanvas->goNextPageEnabled()); 469 m_pNextPageAction->setEnabled(m_pDrawPadCanvas->goNextPageEnabled());
470 m_pLastPageAction->setEnabled(m_pDrawPadCanvas->goNextPageEnabled()); 470 m_pLastPageAction->setEnabled(m_pDrawPadCanvas->goNextPageEnabled());
471} 471}
472 472
473void DrawPad::updateCaption() 473void DrawPad::updateCaption()
474{ 474{
475 uint pagePosition = m_pDrawPadCanvas->pagePosition(); 475 uint pagePosition = m_pDrawPadCanvas->pagePosition();
476 uint pageCount = m_pDrawPadCanvas->pageCount(); 476 uint pageCount = m_pDrawPadCanvas->pageCount();
477 477
478 setCaption(tr("DrawPad") + " - " + tr("Page") + " " 478 setCaption(tr("DrawPad") + " - " + tr("Page") + " "
479 + QString::number(pagePosition) + "/" + QString::number(pageCount)); 479 + QString::number(pagePosition) + "/" + QString::number(pageCount));
480} 480}
481 481
482void DrawPad::importPage() 482void DrawPad::importPage()
483{ 483{
484 ImportDialog importDialog(this); 484 ImportDialog importDialog(this);
485 485
486 importDialog.showMaximized(); 486 importDialog.showMaximized();
487 487
488 if (importDialog.exec() == QDialog::Accepted) { 488 if (importDialog.exec() == QDialog::Accepted) {
489 m_pDrawPadCanvas->importPage(importDialog.selected()->file()); 489 const DocLnk* docLnk = importDialog.selected();
490
491 if (docLnk) {
492 m_pDrawPadCanvas->importPage(docLnk->file());
493 delete docLnk;
494 }
490 } 495 }
491} 496}
492 497
493void DrawPad::exportPage() 498void DrawPad::exportPage()
494{ 499{
495 ExportDialog exportDialog(m_pDrawPadCanvas->pagePosition(), m_pDrawPadCanvas->pageCount(), this); 500 ExportDialog exportDialog(m_pDrawPadCanvas->pagePosition(), m_pDrawPadCanvas->pageCount(), this);
496 501
497 exportDialog.showMaximized(); 502 exportDialog.showMaximized();
498 503
499 if (exportDialog.exec() == QDialog::Accepted) { 504 if (exportDialog.exec() == QDialog::Accepted) {
500 m_pDrawPadCanvas->exportPage(exportDialog.selectedFromPage(), exportDialog.selectedToPage(), 505 m_pDrawPadCanvas->exportPage(exportDialog.selectedFromPage(), exportDialog.selectedToPage(),
501 exportDialog.selectedName(), exportDialog.selectedFormat()); 506 exportDialog.selectedName(), exportDialog.selectedFormat());
502 } 507 }
503} 508}